package main import ( "changeme/initFunc" "context" "embed" "strings" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/util/gconv" "github.com/wailsapp/wails/v2" "github.com/wailsapp/wails/v2/pkg/menu" "github.com/wailsapp/wails/v2/pkg/menu/keys" "github.com/wailsapp/wails/v2/pkg/options" "github.com/wailsapp/wails/v2/pkg/options/assetserver" "github.com/wailsapp/wails/v2/pkg/runtime" ) //go:embed all:frontend/dist var assets embed.FS //go:embed wails.json var wailsjson embed.FS var wailsConfig map[string]interface{} func init() { wailsConfig = make(map[string]interface{}) } type App struct { ctx context.Context } func main() { // Create an instance of the app structure app := NewApp() //开启视频监控的exe go initFunc.RunPiServerExe() go initFunc.SetupCert() wilsJon, _ := wailsjson.ReadFile("wails.json") wailsConfig = gconv.Map(wilsJon) //读取wails.json配置文件 wailsConfigOem := initFunc.RequestOemSettingInfo(gconv.Map(wilsJon)) //将 wailsConfig 保存起来 if wailsConfigOem == nil { wailsConfigOem = g.Map{ "brand_name": "Error-config", "website_url": "https://www.baidu.com", } } //增加菜单 AppMenu := menu.NewMenu() SubMenu := AppMenu.AddSubmenu("工具") SubMenu.AddText("刷新", keys.CmdOrCtrl("F5"), func(_ *menu.CallbackData) { runtime.WindowReloadApp(app.ctx) }) SubMenu.AddText("检查", keys.CmdOrCtrl("F12"), func(_ *menu.CallbackData) { runtime.WindowExecJS(app.ctx, ` (function(){ // 检查 vConsole 是否已经初始化 function isVConsoleInitialized() { return typeof window.VConsole !== 'undefined'; } window.vConsole = null; function loadVConsole() { console.log('loadVConsole'); // 创建一个新的 script 元素 var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'https://3dview.suwa3d.com/libs/vConsole/3.15.1/vconsole.min.js'; // 请替换为 vConsole 的实际路径 // 将 script 元素添加到文档头部 document.head.appendChild(script); script.onload = function() { window.vConsole = new VConsole(); } } // 初始化 vConsole function initVConsole() { console.log('isVConsoleInitialized()', isVConsoleInitialized()); if (!isVConsoleInitialized()) { // 如果 vConsole 未初始化,加载 vConsole loadVConsole(); } else { // 如果 vConsole 已经初始化,直接打开 window.vConsole.show(); } } try { initVConsole(); } catch(e) { console.log('e', e); } })() `) }) // Create application with options err := wails.Run(&options.App{ Title: wailsConfigOem["brand_name"].(string), Width: 1024, Height: 768, AssetServer: &assetserver.Options{ Assets: assets, }, BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, OnStartup: app.startup, Menu: AppMenu, Bind: []interface{}{ app, }, }) if err != nil { println("Error:", err.Error()) } } // NewApp creates a new App application struct func NewApp() *App { return &App{} } // startup is called when the app starts. The context is saved // so we can call the runtime methods func (a *App) startup(ctx context.Context) { a.ctx = ctx } // oem的门店管理地址 func (a *App) ShopUrl() string { wailsConfigOem := initFunc.RequestOemSettingInfo(wailsConfig) if wailsConfigOem == nil { return "https://www.baidu.com" } domain := wailsConfigOem["domain"].(string) if !strings.Contains(domain, "http") { domain = "https://" + domain } return domain + "?oem_id=" + gconv.String(wailsConfigOem["id"]) }