diff --git a/.gitignore b/.gitignore index f39ffbc..df48b7d 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,7 @@ build/extraResources/goapp.exe go/go.sum build/extraResources/java-app.jar build/extraResources/jre1.8.0_201/ +python/.venv/ +python/*.spec +python/build/ +python/dist/ diff --git a/electron/addon/autoUpdater/index.js b/electron/addon/autoUpdater/index.js index 2ab4cf3..63baf58 100644 --- a/electron/addon/autoUpdater/index.js +++ b/electron/addon/autoUpdater/index.js @@ -4,6 +4,7 @@ const is = require('ee-core/utils/is'); const Log = require('ee-core/log'); const Conf = require('ee-core/config'); const CoreWindow = require('ee-core/electron/window'); +const Electron = require('ee-core/electron'); /** * 自动升级插件 @@ -102,6 +103,10 @@ class AutoUpdaterAddon { info.status = status.downloaded; info.desc = '下载完成'; this.sendStatusToWindow(info); + + // 托盘插件默认会阻止窗口关闭,这里设置允许关闭窗口 + Electron.extra.closeWindow = true; + autoUpdater.quitAndInstall(); // const mainWindow = CoreWindow.getMainWindow(); // if (mainWindow) { diff --git a/electron/addon/javaServer/index.js b/electron/addon/javaServer/index.js deleted file mode 100644 index 14be9dd..0000000 --- a/electron/addon/javaServer/index.js +++ /dev/null @@ -1,93 +0,0 @@ -const server = require("./server"); -const { app: electronApp } = require('electron'); -const Log = require('ee-core/log'); -const Conf = require('ee-core/config'); -const GetPort = require('ee-core/utils/get-port'); - -/** - * java server插件 - * @class - */ -class JavaServerAddon { - - constructor() { - this.cfg; - this.javaServer; - } - - /** - * 创建java服务 - * - * @function - * @since 1.0.0 - */ - async createServer () { - - this.cfg = Conf.getValue('addons.javaServer'); - await this.createJavaPorts(); - - this.javaServer = new server(); - await this.javaServer.create(this.cfg); - - // kill - electronApp.on("before-quit", async () => { - Log.info("[addon:javaServer] before-quit: kill-----------"); - await this.javaServer.kill(); - }); - - return; - } - - /** - * todo 检查服务是否启动 - * - * @function - * @since 1.0.0 - */ - async check () { - Log.info("进入-----检查服务是否启动------"+this.javaServer); - if(this.javaServer == undefined){ - Log.info("[addon:javaServer:check] status-----------"+false); - return false; - } - - const flag = await this.javaServer.isRun(Conf.getValue('addons.javaServer')); - Log.info("[addon:javaServer:check] status-----------"+flag); - - return flag; - } - - /** - * 创建服务端口 - * - * @function - * @since 1.0.0 - */ - async createJavaPorts() { - if (!this.cfg.enable) { - return; - } - const javaPort = await GetPort({ port: this.cfg.port }); - process.env.EE_JAVA_PORT = javaPort; - this.cfg.port = javaPort; - - // 更新config配置 - Conf.setValue('addons.javaServer', this.cfg); - } - - /** - * 杀掉进程 - * - * @function - * @since 1.0.0 - */ - async kill() { - if (!this.cfg.enable) { - return; - } - await this.javaServer.kill(); - } -} - -JavaServerAddon.toString = () => '[class JavaServerAddon]'; -module.exports = JavaServerAddon; \ No newline at end of file diff --git a/electron/addon/javaServer/ps.js b/electron/addon/javaServer/ps.js deleted file mode 100644 index 9005463..0000000 --- a/electron/addon/javaServer/ps.js +++ /dev/null @@ -1,257 +0,0 @@ -var ChildProcess = require("child_process"); -var IS_WIN = process.platform === "win32"; -var TableParser = require("table-parser"); -/** - * End of line. - * Basically, the EOL should be: - * - windows: \r\n - * - *nix: \n - * But i'm trying to get every possibilities covered. - */ -var EOL = /(\r\n)|(\n\r)|\n|\r/; -var SystemEOL = require("os").EOL; - -/** - * Execute child process - * @type {Function} - * @param {String[]} args - * @param {String} where - * @param {Function} callback - * @param {Object=null} callback.err - * @param {Object[]} callback.stdout - */ -var Exec = function (args, where) { - var spawnSync = ChildProcess.spawnSync; - var execSync = ChildProcess.execSync; - - // on windows, if use ChildProcess.exec(`wmic process get`), the stdout will gives you nothing - // that's why I use `cmd` instead - if (IS_WIN) { - const cmd = `wmic process where ${where} get ProcessId,ParentProcessId,CommandLine \n`; - const result = execSync(cmd); - if (!result) { - throw new Error(result); - } - - var stdout = result.toString(); - - var beginRow; - stdout = stdout.split(EOL); - - // Find the line index for the titles - stdout.forEach(function (out, index) { - if ( - out && - typeof beginRow == "undefined" && - out.indexOf("CommandLine") === 0 - ) { - beginRow = index; - } - }); - - // get rid of the start (copyright) and the end (current pwd) - stdout.splice(stdout.length - 1, 1); - stdout.splice(0, beginRow); - - return stdout.join(SystemEOL) || false; - } else { - if (typeof args === "string") { - args = args.split(/\s+/); - } - const result = spawnSync("ps", args); - if (result.stderr && !!result.stderr.toString()) { - throw new Error(result.stderr); - } else { - return result.stdout.toString(); - } - } -}; - -/** - * Query Process: Focus on pid & cmd - * @param query - * @param {String|String[]} query.pid - * @param {String} query.command RegExp String - * @param {String} query.arguments RegExp String - * @param {String|array} query.psargs - * @param {String|array} query.where where 条件 - * @param {Function} callback - * @param {Object=null} callback.err - * @param {Object[]} callback.processList - * @return {Object} - */ - -exports.lookup = function (query) { - /** - * add 'lx' as default ps arguments, since the default ps output in linux like "ubuntu", wont include command arguments - */ - var exeArgs = query.psargs || ["lx"]; - var where = query.where || 'name="javaw.exe"'; - var filter = {}; - var idList; - - // Lookup by PID - if (query.pid) { - if (Array.isArray(query.pid)) { - idList = query.pid; - } else { - idList = [query.pid]; - } - - // Cast all PIDs as Strings - idList = idList.map(function (v) { - return String(v); - }); - } - - if (query.command) { - filter["command"] = new RegExp(query.command, "i"); - } - - if (query.arguments) { - filter["arguments"] = new RegExp(query.arguments, "i"); - } - - if (query.ppid) { - filter["ppid"] = new RegExp(query.ppid); - } - - const result = Exec(exeArgs, where); - - var processList = parseGrid(result); - var resultList = []; - - processList.forEach(function (p) { - var flt; - var type; - var result = true; - - if (idList && idList.indexOf(String(p.pid)) < 0) { - return; - } - - for (type in filter) { - flt = filter[type]; - result = flt.test(p[type]) ? result : false; - } - - if (result) { - resultList.push(p); - } - }); - - return resultList; -}; - -/** - * Kill process - * @param pid - * @param {Object|String} signal - * @param {String} signal.signal - * @param {number} signal.timeout - * @param next - */ - -exports.kill = function (pid, signal, next) { - //opts are optional - if (arguments.length == 2 && typeof signal == "function") { - next = signal; - signal = undefined; - } - - var checkTimeoutSeconds = (signal && signal.timeout) || 30; - - if (typeof signal === "object") { - signal = signal.signal; - } - - try { - process.kill(pid, signal); - } catch (e) { - return next && next(e); - } - - var checkConfident = 0; - var checkTimeoutTimer = null; - var checkIsTimeout = false; - - function checkKilled(finishCallback) { - exports.lookup({ pid: pid }, function (err, list) { - if (checkIsTimeout) return; - - if (err) { - clearTimeout(checkTimeoutTimer); - finishCallback && finishCallback(err); - } else if (list.length > 0) { - checkConfident = checkConfident - 1 || 0; - checkKilled(finishCallback); - } else { - checkConfident++; - if (checkConfident === 5) { - clearTimeout(checkTimeoutTimer); - finishCallback && finishCallback(); - } else { - checkKilled(finishCallback); - } - } - }); - } - - next && checkKilled(next); - - checkTimeoutTimer = - next && - setTimeout(function () { - checkIsTimeout = true; - next(new Error("Kill process timeout")); - }, checkTimeoutSeconds * 1000); -}; - -/** - * Parse the stdout into readable object. - * @param {String} output - */ - -function parseGrid(output) { - if (!output) { - return []; - } - return formatOutput(TableParser.parse(output)); -} - -/** - * format the structure, extract pid, command, arguments, ppid - * @param data - * @return {Array} - */ - -function formatOutput(data) { - var formatedData = []; - data.forEach(function (d) { - var pid = - (d.PID && d.PID[0]) || (d.ProcessId && d.ProcessId[0]) || undefined; - var cmd = d.CMD || d.CommandLine || d.COMMAND || undefined; - var ppid = - (d.PPID && d.PPID[0]) || - (d.ParentProcessId && d.ParentProcessId[0]) || - undefined; - - if (pid && cmd) { - var command = cmd[0]; - var args = ""; - - if (cmd.length > 1) { - args = cmd.slice(1); - } - - formatedData.push({ - pid: pid, - command: command, - arguments: args, - ppid: ppid, - }); - } - }); - - return formatedData; -} diff --git a/electron/addon/javaServer/server.js b/electron/addon/javaServer/server.js deleted file mode 100644 index 8e162e2..0000000 --- a/electron/addon/javaServer/server.js +++ /dev/null @@ -1,126 +0,0 @@ -const _ = require("lodash"); -const assert = require("assert"); -const fs = require("fs"); -const path = require("path"); -const { exec, execSync } = require("child_process"); -const ps = require("./ps"); -const Log = require('ee-core/log'); -const is = require('ee-core/utils/is'); -const UtilsPs = require('ee-core/ps'); - -/** - * java server - */ -class JavaServer { - constructor () { - this.options; - } - - /** - * 创建服务 - */ - async create (cfg) { - this.options = cfg; - if (this.options.enable == false) { - return; - } - - let port = process.env.EE_JAVA_PORT ? parseInt(process.env.EE_JAVA_PORT) : parseInt(this.options.port); - assert(typeof port === "number", "java port required, and must be a number"); - - try { - const jarName = this.options.name; - let softwarePath = path.join(UtilsPs.getExtraResourcesDir(), jarName); - let javaOptStr = this.options.opt; - let jrePath = path.join(UtilsPs.getExtraResourcesDir(), this.options.jreVersion); - let cmdStr = ''; - - Log.info("[addon:javaServer] jar file path:", softwarePath); - if (!fs.existsSync(softwarePath)) throw new Error('java program does not exist'); - - // 替换opt参数 - javaOptStr = _.replace(javaOptStr, "${port}", port); - javaOptStr = _.replace(javaOptStr, "${path}", UtilsPs.getLogDir()); - - if (is.windows()) { - jrePath = path.join(jrePath, "bin", "javaw.exe"); - cmdStr = `start ${jrePath} -jar ${javaOptStr} ${softwarePath}`; - } else if (is.macOS()) { - // 如果提示:不受信任,请执行: sudo spctl --master-disable - jrePath = path.join(jrePath, "Contents", "Home", "bin", "java"); - //cmdStr = `nohup ${jrePath} -jar ${javaOptStr} ${softwarePath} >/dev/null 2>&1 &`; - cmdStr = `${jrePath} -jar ${javaOptStr} ${softwarePath}`; - } else { - // todo linux - } - - Log.info("[addon:javaServer] cmdStr:", cmdStr); - exec(cmdStr); - - } catch (err) { - Log.error('[addon:javaServer] throw error:', err); - } - } - - /** - * 关闭服务 - */ - async kill () { - const jarName = this.options.name; - if (is.windows()) { - const resultList = ps.lookup({ - command: "java", - where: 'caption="javaw.exe"', - arguments: jarName, - }); - - //Log.info("[addon:javaServer] resultList:", resultList); - resultList.forEach((item) => { - ps.kill(item.pid, "SIGKILL", (err) => { - if (err) { - throw new Error(err); - } - Log.info("[addon:javaServer] java程序退出 pid: ", item.pid); - }); - }); - - // const cmd = `for /f "tokens=1-5" %i in ('netstat -ano ^| findstr ":${port}"') do taskkill /F /T /PID %m`; - // const a = await execSync(cmd, {encoding: 'utf-8'}); - // Log.info("[javaServer] kill:", a); - } else if (is.macOS()) { - const cmd = `ps -ef | grep java | grep ${jarName} | grep -v grep | awk '{print $2}' | xargs kill -9`; - const result = await execSync(cmd); - Log.info("[addon:javaServer] kill:", result != null ? result.toString(): ''); - } else { - // todo linux - } - } - - /** - * 服务是否运行中 - */ - async isRun(cfg){ - const jarName = cfg.name; - if (is.windows()) { - const resultList = ps.lookup({ - command: "java", - where: 'caption="javaw.exe"', - arguments: jarName, - }); - - Log.info("[addon:javaServer] resultList:", resultList); - return resultList.length>0; - } else if (is.macOS()) { - const cmd = `ps -ef | grep java | grep ${jarName} | grep -v grep | awk '{print $2}' `; - Log.info("[addon:javaServer:isRun] cmdStr:", cmd); - const result = execSync(cmd); - Log.info('[addon:javaServer:isRun] result:', result.toString()); - //不等于空说明正在运行 - return result.toString()!=="" - } else { - // todo linux - } - } -} - -module.exports = JavaServer; \ No newline at end of file diff --git a/electron/addon/tray/index.js b/electron/addon/tray/index.js index 57dbdf8..44bd208 100644 --- a/electron/addon/tray/index.js +++ b/electron/addon/tray/index.js @@ -62,6 +62,10 @@ class TrayAddon { this.tray.setToolTip(cfg.title); const contextMenu = Menu.buildFromTemplate(trayMenuTemplate); this.tray.setContextMenu(contextMenu); + // 左键双击的时候能够显示主窗口 + this.tray.on('double-click', () => { + mainWindow.show() + }) } } diff --git a/electron/config/bin.js b/electron/config/bin.js index 4842216..74b2d5e 100644 --- a/electron/config/bin.js +++ b/electron/config/bin.js @@ -15,7 +15,7 @@ module.exports = { protocol: 'http://', hostname: 'localhost', port: 8080, - indexPath: 'index.html' + indexPath: 'index.html', }, electron: { directory: './', @@ -35,21 +35,31 @@ module.exports = { cmd: 'npm', args: ['run', 'build'], }, - go_build_w: { + go_w: { directory: './go', cmd: 'go', args: ['build', '-o=../build/extraResources/goapp.exe'], }, - go_build_m: { + go_m: { directory: './go', cmd: 'go', args: ['build', '-o=../build/extraResources/goapp'], }, - go_build_l: { + go_l: { directory: './go', cmd: 'go', args: ['build', '-o=../build/extraResources/goapp'], - } + }, + python_w: { + directory: './python', + cmd: 'pyinstaller', + args: ['-n=pyapp', '-F', './main.py'], + }, + python_m: { + directory: './python', + cmd: 'pyinstaller', + args: ['-n=pyapp', '-F', './main.py'], + }, }, /** @@ -76,7 +86,11 @@ module.exports = { go_images: { dist: './public/images', target: './go/public/images' - } + }, + python_dist: { + dist: './python/dist', + target: './build/extraResources/py' + }, }, /** @@ -125,5 +139,11 @@ module.exports = { cmd: 'npm', args: ['-v'], }, + python: { + directory: './python', + cmd: 'python', + args: ['./main.py', '--port=7074'], + stdio: "inherit", // ignore + }, }, }; \ No newline at end of file diff --git a/electron/config/config.default.js b/electron/config/config.default.js index c038bcf..744a262 100644 --- a/electron/config/config.default.js +++ b/electron/config/config.default.js @@ -119,7 +119,7 @@ module.exports = (appInfo) => { /** * Cross-language service * 跨语言服务 - * 例如:执行go的二进制程序 + * 例如:执行go的二进制程序,默认目录为 ./extraResources/ */ config.cross = { go: { @@ -128,6 +128,14 @@ module.exports = (appInfo) => { args: ['--port=7073'], appExit: true, }, + python: { + enable: false, + name: 'pyapp', + cmd: './py/pyapp', + directory: './py', + args: ['--port=7074'], + appExit: true, + }, }; /** diff --git a/electron/config/config.local.js b/electron/config/config.local.js index 49fe802..4de28b9 100644 --- a/electron/config/config.local.js +++ b/electron/config/config.local.js @@ -41,7 +41,16 @@ module.exports = (appInfo) => { directory: './go', args: ['run', './main.go', '--env=dev','--basedir=../', '--port=7073'], appExit: true, - } + }, + python: { + enable: false, + name: 'pyapp', + cmd: 'python', + directory: './python', + args: ['./main.py', '--port=7074'], + stdio: "inherit", + appExit: true, + }, }; return { diff --git a/electron/controller/cross.js b/electron/controller/cross.js index 8b40b9e..b67f85a 100644 --- a/electron/controller/cross.js +++ b/electron/controller/cross.js @@ -67,6 +67,8 @@ class CrossController extends Controller { Services.get('cross').createGoServer(); } else if (program == 'java') { Services.get('cross').createJavaServer(); + } else if (program == 'python') { + Services.get('cross').createPythonServer(); } return; diff --git a/electron/preload/index.js b/electron/preload/index.js index e9e2bf9..85d732a 100644 --- a/electron/preload/index.js +++ b/electron/preload/index.js @@ -2,6 +2,7 @@ ** preload为预加载模块,该文件将会在程序启动时加载 ** *************************************************/ const Addon = require('ee-core/addon'); +const Services = require('ee-core/services'); /** * 预加载模块入口 @@ -13,4 +14,6 @@ module.exports = async () => { Addon.get('security').create(); Addon.get('awaken').create(); Addon.get('autoUpdater').create(); + + //Services.get('cross').createGoServer(); } \ No newline at end of file diff --git a/electron/service/cross.js b/electron/service/cross.js index 1a5e4c0..733fcb4 100644 --- a/electron/service/cross.js +++ b/electron/service/cross.js @@ -30,12 +30,15 @@ class CrossService extends Service { const serviceName = "go"; const opt = { name: 'goapp', - appExit: false, + cmd: path.join(Ps.getExtraResourcesDir(), 'goapp'), + directory: Ps.getExtraResourcesDir(), + args: ['--port=7073'], + appExit: true, } const entity = await Cross.run(serviceName, opt); Log.info('server name:', entity.name); Log.info('server config:', entity.config); - Log.info('server url:', Cross.getUrl(entity.name)); + Log.info('server url:', entity.getUrl()); return; } @@ -68,6 +71,33 @@ class CrossService extends Service { return; } + + /** + * create python service + * In the default configuration, services can be started with applications. + * Developers can turn off the configuration and create it manually. + */ + async createPythonServer() { + // method 1: Use the default Settings + //const entity = await Cross.run(serviceName); + + // method 2: Use custom configuration + const serviceName = "python"; + const opt = { + name: 'pyapp', + cmd: path.join(Ps.getExtraResourcesDir(), 'py', 'pyapp'), + directory: path.join(Ps.getExtraResourcesDir(), 'py'), + args: ['--port=7074'], + windowsExtname: true, + appExit: true, + } + const entity = await Cross.run(serviceName, opt); + Log.info('server name:', entity.name); + Log.info('server config:', entity.config); + Log.info('server url:', entity.getUrl()); + + return; + } } CrossService.toString = () => '[class CrossService]'; diff --git a/frontend/src/router/routerMap.js b/frontend/src/router/routerMap.js index 9506a92..2c4d39a 100644 --- a/frontend/src/router/routerMap.js +++ b/frontend/src/router/routerMap.js @@ -171,7 +171,12 @@ const constantRouterMap = [ path: '/cross/java/index', name: 'CrossJavaIndex', component: () => import('@/views/cross/java/Index.vue') - } + }, + { + path: '/cross/python/index', + name: 'CrossPythonIndex', + component: () => import('@/views/cross/python/Index.vue') + }, ] }, ] diff --git a/frontend/src/router/subMenu.js b/frontend/src/router/subMenu.js index 562967e..3201e7e 100644 --- a/frontend/src/router/subMenu.js +++ b/frontend/src/router/subMenu.js @@ -142,6 +142,12 @@ export default { title: 'java服务', pageName: 'CrossJavaIndex', params: {} - }, + }, + 'menu_120' : { + icon: 'profile', + title: 'python服务', + pageName: 'CrossPythonIndex', + params: {} + }, }, } diff --git a/frontend/src/views/cross/go/Index.vue b/frontend/src/views/cross/go/Index.vue index cf9c015..7dde041 100644 --- a/frontend/src/views/cross/go/Index.vue +++ b/frontend/src/views/cross/go/Index.vue @@ -81,7 +81,7 @@ const cfg = { method: 'get', url: testApi, - params: { id: '1111111'}, + params: { id: '111'}, timeout: 1000, } axios(cfg).then(res => { diff --git a/frontend/src/views/cross/java/Index.vue b/frontend/src/views/cross/java/Index.vue index 2380d53..777ae1e 100644 --- a/frontend/src/views/cross/java/Index.vue +++ b/frontend/src/views/cross/java/Index.vue @@ -31,7 +31,7 @@
- 再启动一个 + 启动 kill所有
diff --git a/frontend/src/views/cross/python/Index.vue b/frontend/src/views/cross/python/Index.vue new file mode 100644 index 0000000..cd56a23 --- /dev/null +++ b/frontend/src/views/cross/python/Index.vue @@ -0,0 +1,117 @@ + + + + \ No newline at end of file diff --git a/package.json b/package.json index 7621876..6e1dbb7 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,20 @@ { "name": "ee", - "version": "3.10.0", + "version": "3.11.0", "description": "A fast, desktop software development framework", "main": "main.js", "scripts": { "dev": "ee-bin dev", "dev-frontend": "ee-bin dev --serve=frontend", "dev-electron": "ee-bin dev --serve=electron", + "dev-go": "ee-bin dev --serve=go", + "dev-python": "ee-bin exec --cmds=python", "build-frontend": "ee-bin build --cmds=frontend && ee-bin move --flag=frontend_dist", - "build-go-w": "ee-bin move --flag=go_static,go_config,go_package,go_images && ee-bin build --cmds=go_build_w", - "build-go-m": "ee-bin move --flag=go_static,go_config,go_package,go_images && ee-bin build --cmds=go_build_m", - "build-go-l": "ee-bin move --flag=go_static,go_config,go_package,go_images && ee-bin build --cmds=go_build_l", + "build-go-w": "ee-bin build --cmds=go_w", + "build-go-m": "ee-bin build --cmds=go_m", + "build-go-l": "ee-bin build --cmds=go_l", + "build-python-w": "ee-bin build --cmds=python_w && ee-bin move --flag=python_dist", + "build-python-m": "ee-bin build --cmds=python_m && ee-bin move --flag=python_dist", "start": "ee-bin start", "move": "ee-bin move --flag=go_static,go_config,go_package,go_images", "rd": "ee-bin move --flag=frontend_dist", @@ -24,6 +28,7 @@ "build-w-32": "electron-builder --config=./electron/config/builder.json -w=nsis --ia32", "build-w-64": "electron-builder --config=./electron/config/builder.json -w=nsis --x64", "build-w-arm64": "electron-builder --config=./electron/config/builder.json -w=nsis --arm64", + "build-we": "electron-builder --config=./electron/config/builder.json -w=portable --x64", "build-wz": "electron-builder --config=./electron/config/builder.json -w=7z --x64", "build-wz-32": "electron-builder --config=./electron/config/builder.json -w=7z --ia32", "build-wz-64": "electron-builder --config=./electron/config/builder.json -w=7z --x64", diff --git a/public/dist/assets/AppSider-871239d4.js.gz b/public/dist/assets/AppSider-871239d4.js.gz new file mode 100644 index 0000000..91c7629 Binary files /dev/null and b/public/dist/assets/AppSider-871239d4.js.gz differ diff --git a/public/dist/assets/AppSider-c97621a5.js b/public/dist/assets/AppSider-c97621a5.js deleted file mode 100644 index 0e609af..0000000 --- a/public/dist/assets/AppSider-c97621a5.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,r as a,o as n,c as t,w as o,a as s,b as l,d as i,F as u,e as c,t as r,p as m,f as d,g as p}from"./index-f283ba7d.js";const g=""+new URL("logo-abcaf0c2.png",import.meta.url).href,f={name:"AppSider",data:()=>({collapsed:!0,current:"menu_1",menu:{menu_1:{icon:"icon-fengche",title:"框架",pageName:"Framework",params:{}},menu_2:{icon:"icon-niudan",title:"系统",pageName:"Os",params:{}},menu_3:{icon:"icon-xiangji",title:"硬件",pageName:"Hardware",params:{}},menu_4:{icon:"icon-liuxing",title:"特效",pageName:"Effect",params:{}},menu_5:{icon:"icon-gouwu",title:"cross",pageName:"Cross",params:{}}}}),created(){},mounted(){this.menuHandle()},methods:{menuHandle(e){console.log("sider menu e:",e),this.current=e?e.key:this.current,console.log("sider menu current:",this.current);const a=this.menu[this.current];console.log("[home] load linkInfo:",a),this.$router.push({name:a.pageName,params:a.params})},changeMenu(e){console.log("sider menu e:",e)}}},h=(e=>(m("data-v-a1fe120d"),e=e(),d(),e))((()=>p("div",{class:"logo"},[p("img",{class:"pic-logo",src:g})],-1)));const _=e(f,[["render",function(e,m,d,p,g,f){const _=a("icon-font"),y=a("a-menu-item"),w=a("a-menu"),k=a("a-layout-sider"),N=a("router-view"),v=a("a-layout-content"),x=a("a-layout");return n(),t(x,{id:"app-layout-sider"},{default:o((()=>[s(k,{modelValue:g.collapsed,"onUpdate:modelValue":m[0]||(m[0]=e=>g.collapsed=e),theme:"light",class:"layout-sider",width:"100"},{default:o((()=>[h,s(w,{class:"menu-item",theme:"light",mode:"inline",selectedKeys:[g.current],onClick:f.menuHandle},{default:o((()=>[(n(!0),l(u,null,i(g.menu,((e,a)=>(n(),t(y,{key:a},{default:o((()=>[s(_,{type:e.icon},null,8,["type"]),c(" "+r(e.title),1)])),_:2},1024)))),128))])),_:1},8,["selectedKeys","onClick"])])),_:1},8,["modelValue"]),s(x,null,{default:o((()=>[s(v,{class:"layout-content"},{default:o((()=>[s(N)])),_:1})])),_:1})])),_:1})}],["__scopeId","data-v-a1fe120d"]]);export{_ as default}; diff --git a/public/dist/assets/HttpServer-8bfec31d.js b/public/dist/assets/HttpServer-8bfec31d.js deleted file mode 100644 index 0a13d2b..0000000 --- a/public/dist/assets/HttpServer-8bfec31d.js +++ /dev/null @@ -1 +0,0 @@ -import{i as t}from"./main-3bb0017c.js";import{i as e}from"./ipcRenderer-5e19eaee.js";import{a as s}from"./index-0d31d5fa.js";import{s as o}from"./store2-c97601fe.js";import{_ as r,r as n,o as a,b as i,g as l,t as c,e as u,a as d,w as p,p as h,f as m}from"./index-f283ba7d.js";const v={data:()=>({currentStatus:"关闭",servicAddress:"无"}),mounted(){this.init()},methods:{init(){e.invoke(t.checkHttpServer,{}).then((t=>{t.enable&&(this.currentStatus="开启",this.servicAddress=t.server,o.set("httpServiceConfig",t))}))},sendRequest(e){"关闭"!=this.currentStatus?this.requestHttp(t.doHttpRequest,{id:e}).then((t=>{})):this.$message.error("http服务未开启")},requestHttp(t,e){const r=o.get("httpServiceConfig").server||"http://localhost:7071";let n=t.split(".").join("/");return n=r+"/"+n,console.log("url:",n),s({url:n,method:"post",data:e,timeout:6e4})},backendRequest(){console.log("GO_URL:","http://www.test.com");s({baseURL:"http://www.test.com",method:"get",url:"/hello",timeout:6e4}).then((t=>{console.log("res:",t);const e=t.data||null;this.$message.info(`go服务返回: ${e}`)}))}}},f=t=>(h("data-v-3508e997"),t=t(),m(),t),b={id:"app-base-httpserver"},g=f((()=>l("div",{class:"one-block-1"},[l("span",null," 1. 使用http与主进程通信 ")],-1))),k={class:"one-block-2"},w=f((()=>l("div",{class:"one-block-1"},[l("span",null," 2. 使用http与服务端通信 ")],-1))),R={class:"one-block-2"};const q=r(v,[["render",function(t,e,s,o,r,h){const m=n("a-button");return a(),i("div",b,[g,l("div",k,[l("p",null,"* 状态:"+c(r.currentStatus),1),l("p",null,"* 地址:"+c(r.servicAddress),1),l("p",null,[u("* 发送请求: "),d(m,{onClick:e[0]||(e[0]=t=>h.sendRequest("pictures"))},{default:p((()=>[u(" 打开【我的图片】 ")])),_:1})])]),w,l("div",R,[l("p",null,[d(m,{onClick:e[1]||(e[1]=t=>h.backendRequest())},{default:p((()=>[u(" 发送请求 ")])),_:1}),u(" (请自行创建服务) ")])])])}],["__scopeId","data-v-3508e997"]]);export{q as default}; diff --git a/public/dist/assets/HttpServer-d7066a37.js.gz b/public/dist/assets/HttpServer-d7066a37.js.gz new file mode 100644 index 0000000..3dfe35f Binary files /dev/null and b/public/dist/assets/HttpServer-d7066a37.js.gz differ diff --git a/public/dist/assets/Index-08001b4c.js.gz b/public/dist/assets/Index-08001b4c.js.gz new file mode 100644 index 0000000..6676ad0 Binary files /dev/null and b/public/dist/assets/Index-08001b4c.js.gz differ diff --git a/public/dist/assets/Index-096d4d09.css b/public/dist/assets/Index-096d4d09.css new file mode 100644 index 0000000..de71a17 --- /dev/null +++ b/public/dist/assets/Index-096d4d09.css @@ -0,0 +1 @@ +#app-cross-java[data-v-5d226b2a]{padding:0 10px;text-align:left;width:100%}#app-cross-java .one-block-1[data-v-5d226b2a]{font-size:16px;padding-top:10px}#app-cross-java .one-block-2[data-v-5d226b2a]{padding-top:10px} diff --git a/public/dist/assets/Index-101996e4.js b/public/dist/assets/Index-101996e4.js deleted file mode 100644 index 964cd94..0000000 --- a/public/dist/assets/Index-101996e4.js +++ /dev/null @@ -1 +0,0 @@ -import{i as t}from"./main-3bb0017c.js";import{i}from"./ipcRenderer-5e19eaee.js";import{_ as e,h as s,r as n,o,b as a,g as l,a as d,w as c,e as f,p as r,f as p}from"./index-f283ba7d.js";const u={data:()=>({views:[{type:"main",title:"通知标题",subtitle:"副标题",body:"这是通知内容-默认",silent:!0},{type:"main",title:"提示音",subtitle:"副标题-提示音",body:"这是通知内容-提示音",silent:!1},{type:"main",title:"点击通知事件",subtitle:"副标题-点击通知事件",body:"这是通知内容-点击通知事件",clickEvent:!0},{type:"main",title:"关闭通知事件",subtitle:"副标题-关闭通知事件",body:"这是通知内容-点击通知事件",closeEvent:!0}]}),mounted(){this.init()},methods:{init(){i.removeAllListeners(t.sendNotification),i.on(t.sendNotification,((t,i)=>{"[object Object]"==Object.prototype.toString.call(i)&&this.$message.info(i.msg)}))},sendNotification(e){i.send(t.sendNotification,s(this.views[e]))}}},b={id:"app-base-notification"},m=(t=>(r("data-v-6555f14e"),t=t(),p(),t))((()=>l("div",{class:"one-block-1"},[l("span",null," 1. 弹出桌面通知 ")],-1))),v={class:"one-block-2"};const y=e(u,[["render",function(t,i,e,s,r,p){const u=n("a-button"),y=n("a-space");return o(),a("div",b,[m,l("div",v,[d(y,null,{default:c((()=>[d(u,{onClick:i[0]||(i[0]=t=>p.sendNotification(0))},{default:c((()=>[f("默认")])),_:1}),d(u,{onClick:i[1]||(i[1]=t=>p.sendNotification(1))},{default:c((()=>[f("发出提示音")])),_:1}),d(u,{onClick:i[2]||(i[2]=t=>p.sendNotification(2))},{default:c((()=>[f("点击通知触发事件")])),_:1}),d(u,{onClick:i[3]||(i[3]=t=>p.sendNotification(3))},{default:c((()=>[f("关闭通知触发事件")])),_:1})])),_:1})])])}],["__scopeId","data-v-6555f14e"]]);export{y as default}; diff --git a/public/dist/assets/Index-16a4dd02.js.gz b/public/dist/assets/Index-16a4dd02.js.gz new file mode 100644 index 0000000..4195480 Binary files /dev/null and b/public/dist/assets/Index-16a4dd02.js.gz differ diff --git a/public/dist/assets/Index-18d35d1c.js.gz b/public/dist/assets/Index-18d35d1c.js.gz new file mode 100644 index 0000000..d15a32d Binary files /dev/null and b/public/dist/assets/Index-18d35d1c.js.gz differ diff --git a/public/dist/assets/Index-29283367.js.gz b/public/dist/assets/Index-29283367.js.gz new file mode 100644 index 0000000..f297ec1 Binary files /dev/null and b/public/dist/assets/Index-29283367.js.gz differ diff --git a/public/dist/assets/Index-354876ed.js b/public/dist/assets/Index-354876ed.js deleted file mode 100644 index 83686f9..0000000 --- a/public/dist/assets/Index-354876ed.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e}from"./main-3bb0017c.js";import{i as a}from"./ipcRenderer-5e19eaee.js";import{_ as l,r as t,o as s,b as n,g as d,a as o,w as i,e as u,t as p,p as r,f as _}from"./index-f283ba7d.js";const c={data:()=>({name:"李四",age:20,userList:["空"],search_age:20,update_name:"李四",update_age:31,delete_name:"李四",all_list:["空"],data_dir:""}),mounted(){this.init()},methods:{init(){a.invoke(e.sqlitedbOperation,{action:"getDataDir"}).then((e=>{-1!=e.code?(this.data_dir=e.result,this.getAllTestData()):this.$message.error("请检查sqlite是否正确安装",5)}))},getAllTestData(){a.invoke(e.sqlitedbOperation,{action:"all"}).then((e=>{if(0==e.all_list.length)return!1;this.all_list=e.all_list}))},selectDir(){a.invoke(e.selectFolder,"").then((e=>{this.data_dir=e,this.modifyDataDir(e)}))},openDir(){console.log("dd:",this.data_dir),a.invoke(e.openDirectory,{id:this.data_dir}).then((e=>{}))},modifyDataDir(l){const t={action:"setDataDir",data_dir:l};a.invoke(e.sqlitedbOperation,t).then((e=>{this.all_list=e.all_list}))},sqlitedbOperation(l){const t={action:l,info:{name:this.name,age:parseInt(this.age)},search_age:parseInt(this.search_age),update_name:this.update_name,update_age:parseInt(this.update_age),delete_name:this.delete_name};"add"==l&&0==this.name.length&&this.$message.error("请填写数据"),a.invoke(e.sqlitedbOperation,t).then((e=>{if(console.log("res:",e),"get"==l){if(0==e.result.length)return void this.$message.error("没有数据");this.userList=e.result}0!=e.all_list.length?(this.all_list=e.all_list,this.$message.success("success")):this.all_list=["空"]}))}}},m=e=>(r("data-v-62864663"),e=e(),_(),e),f={id:"app-base-db"},h=m((()=>d("div",{class:"one-block-1"},[d("span",null," 1. sqlite本地数据库 ")],-1))),v={class:"one-block-2"},b=m((()=>d("div",{class:"one-block-1"},[d("span",null," 2. 数据目录 ")],-1))),g={class:"one-block-2"},k=m((()=>d("div",{class:"one-block-1"},[d("span",null," 3. 测试数据 ")],-1))),V={class:"one-block-2"},D=m((()=>d("div",{class:"one-block-1"},[d("span",null," 4. 添加数据 ")],-1))),q={class:"one-block-2"},O=m((()=>d("div",{class:"one-block-1"},[d("span",null," 4. 获取数据 ")],-1))),C={class:"one-block-2"},U=m((()=>d("div",{class:"one-block-1"},[d("span",null," 5. 修改数据 ")],-1))),y={class:"one-block-2"},I=m((()=>d("div",{class:"one-block-1"},[d("span",null," 6. 删除数据 ")],-1))),$={class:"one-block-2"};const j=l(c,[["render",function(e,a,l,r,_,c){const m=t("a-col"),j=t("a-row"),L=t("a-input"),w=t("a-button");return s(),n("div",f,[h,d("div",v,[o(j,null,{default:i((()=>[o(m,{span:8},{default:i((()=>[u(" • 大数据量: 0-1024GB(单库) ")])),_:1}),o(m,{span:8},{default:i((()=>[u(" • 高性能 ")])),_:1}),o(m,{span:8},{default:i((()=>[u(" • 类mysql语法 ")])),_:1})])),_:1})]),b,d("div",g,[o(j,null,{default:i((()=>[o(m,{span:12},{default:i((()=>[o(L,{modelValue:_.data_dir,"onUpdate:modelValue":a[0]||(a[0]=e=>_.data_dir=e),value:_.data_dir,"addon-before":"数据目录"},null,8,["modelValue","value"])])),_:1}),o(m,{span:2}),o(m,{span:5},{default:i((()=>[o(w,{onClick:c.selectDir},{default:i((()=>[u(" 修改目录 ")])),_:1},8,["onClick"])])),_:1}),o(m,{span:5},{default:i((()=>[o(w,{onClick:c.openDir},{default:i((()=>[u(" 打开目录 ")])),_:1},8,["onClick"])])),_:1})])),_:1})]),k,d("div",V,[o(j,null,{default:i((()=>[o(m,{span:24},{default:i((()=>[u(p(_.all_list),1)])),_:1})])),_:1})]),D,d("div",q,[o(j,null,{default:i((()=>[o(m,{span:6},{default:i((()=>[o(L,{modelValue:_.name,"onUpdate:modelValue":a[1]||(a[1]=e=>_.name=e),value:_.name,"addon-before":"姓名"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6},{default:i((()=>[o(L,{modelValue:_.age,"onUpdate:modelValue":a[2]||(a[2]=e=>_.age=e),value:_.age,"addon-before":"年龄"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6},{default:i((()=>[o(w,{onClick:a[3]||(a[3]=e=>c.sqlitedbOperation("add"))},{default:i((()=>[u(" 添加 ")])),_:1})])),_:1})])),_:1})]),O,d("div",C,[o(j,null,{default:i((()=>[o(m,{span:6},{default:i((()=>[o(L,{modelValue:_.search_age,"onUpdate:modelValue":a[4]||(a[4]=e=>_.search_age=e),value:_.search_age,"addon-before":"年龄"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6}),o(m,{span:3}),o(m,{span:6},{default:i((()=>[o(w,{onClick:a[5]||(a[5]=e=>c.sqlitedbOperation("get"))},{default:i((()=>[u(" 查找 ")])),_:1})])),_:1})])),_:1}),o(j,null,{default:i((()=>[o(m,{span:24},{default:i((()=>[u(p(_.userList),1)])),_:1})])),_:1})]),U,d("div",y,[o(j,null,{default:i((()=>[o(m,{span:6},{default:i((()=>[o(L,{modelValue:_.update_name,"onUpdate:modelValue":a[6]||(a[6]=e=>_.update_name=e),value:_.update_name,"addon-before":"姓名(条件)"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6},{default:i((()=>[o(L,{modelValue:_.update_age,"onUpdate:modelValue":a[7]||(a[7]=e=>_.update_age=e),value:_.update_age,"addon-before":"年龄"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6},{default:i((()=>[o(w,{onClick:a[8]||(a[8]=e=>c.sqlitedbOperation("update"))},{default:i((()=>[u(" 更新 ")])),_:1})])),_:1})])),_:1})]),I,d("div",$,[o(j,null,{default:i((()=>[o(m,{span:6},{default:i((()=>[o(L,{modelValue:_.delete_name,"onUpdate:modelValue":a[9]||(a[9]=e=>_.delete_name=e),value:_.delete_name,"addon-before":"姓名"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6}),o(m,{span:3}),o(m,{span:6},{default:i((()=>[o(w,{onClick:a[10]||(a[10]=e=>c.sqlitedbOperation("del"))},{default:i((()=>[u(" 删除 ")])),_:1})])),_:1})])),_:1})])])}],["__scopeId","data-v-62864663"]]);export{j as default}; diff --git a/public/dist/assets/Index-36bbde3b.css b/public/dist/assets/Index-36bbde3b.css new file mode 100644 index 0000000..6654c80 --- /dev/null +++ b/public/dist/assets/Index-36bbde3b.css @@ -0,0 +1 @@ +#app-cross-go[data-v-e1875343]{padding:0 10px;text-align:left;width:100%}#app-cross-go .one-block-1[data-v-e1875343]{font-size:16px;padding-top:10px}#app-cross-go .one-block-2[data-v-e1875343]{padding-top:10px} diff --git a/public/dist/assets/Index-39077248.js b/public/dist/assets/Index-39077248.js deleted file mode 100644 index f3855d7..0000000 --- a/public/dist/assets/Index-39077248.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e}from"./main-3bb0017c.js";import{i as a}from"./ipcRenderer-5e19eaee.js";import{_ as l,r as n,o as t,b as s,g as d,a as o,w as u,e as i,t as p,p as _,f as r}from"./index-f283ba7d.js";const c={data:()=>({name:"张三",age:10,userList:["空"],search_age:10,update_name:"张三",update_age:21,delete_name:"张三",all_list:["空"],data_dir:""}),mounted(){this.init()},methods:{init(){a.invoke(e.jsondbOperation,{action:"getDataDir"}).then((e=>{this.data_dir=e.result,this.getAllTestData()}))},getAllTestData(){a.invoke(e.jsondbOperation,{action:"all"}).then((e=>{if(console.log("res:",e),0==e.all_list.length)return!1;this.all_list=e.all_list}))},selectDir(){a.invoke(e.selectFolder,"").then((e=>{this.data_dir=e,this.modifyDataDir(e)}))},openDir(){a.invoke(e.openDirectory,{id:this.data_dir}).then((e=>{}))},modifyDataDir(l){const n={action:"setDataDir",data_dir:l};a.invoke(e.jsondbOperation,n).then((e=>{this.all_list=e.all_list}))},dbOperation(l){const n={action:l,info:{name:this.name,age:parseInt(this.age)},search_age:parseInt(this.search_age),update_name:this.update_name,update_age:parseInt(this.update_age),delete_name:this.delete_name};"add"==l&&0==this.name.length&&this.$message.error("请填写数据"),a.invoke(e.jsondbOperation,n).then((e=>{if(console.log("res:",e),"get"==l){if(0==e.result.length)return void this.$message.error("没有数据");this.userList=e.result}0!=e.all_list.length?(this.all_list=e.all_list,this.$message.success("success")):this.all_list=["空"]}))}}},m=e=>(_("data-v-364fc463"),e=e(),r(),e),f={id:"app-base-db"},h=m((()=>d("div",{class:"one-block-1"},[d("span",null," 1. jsondb本地数据库 ")],-1))),v={class:"one-block-2"},b=m((()=>d("div",{class:"one-block-1"},[d("span",null," 2. 数据目录 ")],-1))),g={class:"one-block-2"},k=m((()=>d("div",{class:"one-block-1"},[d("span",null," 3. 测试数据 ")],-1))),V={class:"one-block-2"},D=m((()=>d("div",{class:"one-block-1"},[d("span",null," 4. 添加数据 ")],-1))),j={class:"one-block-2"},O=m((()=>d("div",{class:"one-block-1"},[d("span",null," 5. 获取数据 ")],-1))),C={class:"one-block-2"},U=m((()=>d("div",{class:"one-block-1"},[d("span",null," 6. 修改数据 ")],-1))),I={class:"one-block-2"},y=m((()=>d("div",{class:"one-block-1"},[d("span",null," 7. 删除数据 ")],-1))),L={class:"one-block-2"};const $=l(c,[["render",function(e,a,l,_,r,c){const m=n("a-col"),$=n("a-row"),w=n("a-input"),x=n("a-button");return t(),s("div",f,[h,d("div",v,[o($,null,{default:u((()=>[o(m,{span:8},{default:u((()=>[i(" • 小数据量: 0~100M(单库) ")])),_:1}),o(m,{span:8},{default:u((()=>[i(" • json数据库 ")])),_:1}),o(m,{span:8},{default:u((()=>[i(" • 兼容lodash语法 ")])),_:1})])),_:1})]),b,d("div",g,[o($,null,{default:u((()=>[o(m,{span:12},{default:u((()=>[o(w,{modelValue:r.data_dir,"onUpdate:modelValue":a[0]||(a[0]=e=>r.data_dir=e),value:r.data_dir,"addon-before":"数据目录"},null,8,["modelValue","value"])])),_:1}),o(m,{span:2}),o(m,{span:5},{default:u((()=>[o(x,{onClick:c.selectDir},{default:u((()=>[i(" 修改目录 ")])),_:1},8,["onClick"])])),_:1}),o(m,{span:5},{default:u((()=>[o(x,{onClick:c.openDir},{default:u((()=>[i(" 打开目录 ")])),_:1},8,["onClick"])])),_:1})])),_:1})]),k,d("div",V,[o($,null,{default:u((()=>[o(m,{span:24},{default:u((()=>[i(p(r.all_list),1)])),_:1})])),_:1})]),D,d("div",j,[o($,null,{default:u((()=>[o(m,{span:6},{default:u((()=>[o(w,{modelValue:r.name,"onUpdate:modelValue":a[1]||(a[1]=e=>r.name=e),value:r.name,"addon-before":"姓名"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6},{default:u((()=>[o(w,{modelValue:r.age,"onUpdate:modelValue":a[2]||(a[2]=e=>r.age=e),value:r.age,"addon-before":"年龄"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6},{default:u((()=>[o(x,{onClick:a[3]||(a[3]=e=>c.dbOperation("add"))},{default:u((()=>[i(" 添加 ")])),_:1})])),_:1})])),_:1})]),O,d("div",C,[o($,null,{default:u((()=>[o(m,{span:6},{default:u((()=>[o(w,{modelValue:r.search_age,"onUpdate:modelValue":a[4]||(a[4]=e=>r.search_age=e),value:r.search_age,"addon-before":"年龄"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6}),o(m,{span:3}),o(m,{span:6},{default:u((()=>[o(x,{onClick:a[5]||(a[5]=e=>c.dbOperation("get"))},{default:u((()=>[i(" 查找 ")])),_:1})])),_:1})])),_:1}),o($,null,{default:u((()=>[o(m,{span:24},{default:u((()=>[i(p(r.userList),1)])),_:1})])),_:1})]),U,d("div",I,[o($,null,{default:u((()=>[o(m,{span:6},{default:u((()=>[o(w,{modelValue:r.update_name,"onUpdate:modelValue":a[6]||(a[6]=e=>r.update_name=e),value:r.update_name,"addon-before":"姓名"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6},{default:u((()=>[o(w,{modelValue:r.update_age,"onUpdate:modelValue":a[7]||(a[7]=e=>r.update_age=e),value:r.update_age,"addon-before":"年龄"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6},{default:u((()=>[o(x,{onClick:a[8]||(a[8]=e=>c.dbOperation("update"))},{default:u((()=>[i(" 更新 ")])),_:1})])),_:1})])),_:1})]),y,d("div",L,[o($,null,{default:u((()=>[o(m,{span:6},{default:u((()=>[o(w,{modelValue:r.delete_name,"onUpdate:modelValue":a[9]||(a[9]=e=>r.delete_name=e),value:r.delete_name,"addon-before":"姓名"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6}),o(m,{span:3}),o(m,{span:6},{default:u((()=>[o(x,{onClick:a[10]||(a[10]=e=>c.dbOperation("del"))},{default:u((()=>[i(" 删除 ")])),_:1})])),_:1})])),_:1})])])}],["__scopeId","data-v-364fc463"]]);export{$ as default}; diff --git a/public/dist/assets/Index-3b3f7743.js.gz b/public/dist/assets/Index-3b3f7743.js.gz new file mode 100644 index 0000000..8abe033 Binary files /dev/null and b/public/dist/assets/Index-3b3f7743.js.gz differ diff --git a/public/dist/assets/Index-413b80ae.js.gz b/public/dist/assets/Index-413b80ae.js.gz new file mode 100644 index 0000000..e501b3d Binary files /dev/null and b/public/dist/assets/Index-413b80ae.js.gz differ diff --git a/public/dist/assets/Index-46bae197.js.gz b/public/dist/assets/Index-46bae197.js.gz new file mode 100644 index 0000000..467b1e2 Binary files /dev/null and b/public/dist/assets/Index-46bae197.js.gz differ diff --git a/public/dist/assets/Index-55188015.js b/public/dist/assets/Index-55188015.js deleted file mode 100644 index 3daf353..0000000 --- a/public/dist/assets/Index-55188015.js +++ /dev/null @@ -1 +0,0 @@ -import{i as a}from"./main-3bb0017c.js";import{i as e}from"./ipcRenderer-5e19eaee.js";import{_ as s,r as t,o as n,b as c,g as l,a as o,w as d,e as i,F as r,d as u,p as f,f as p,c as b,t as k}from"./index-f283ba7d.js";const m={data:()=>({data:[]}),methods:{getScreen(s){e.invoke(a.getScreen,s).then((a=>{this.data=a}))}}},v=a=>(f("data-v-5c2facb0"),a=a(),p(),a),_={id:"app-base-screen"},g=v((()=>l("div",{class:"one-block-1"},[l("span",null," 1. 屏幕信息 ")],-1))),S={class:"one-block-2"},h=v((()=>l("div",{class:"one-block-1"},[l("span",null," 结果: ")],-1))),j={class:"one-block-2"};const C=s(m,[["render",function(a,e,s,f,p,m){const v=t("a-button"),C=t("a-space"),x=t("a-descriptions-item"),w=t("a-descriptions");return n(),c("div",_,[g,l("div",S,[o(C,null,{default:d((()=>[o(v,{onClick:e[0]||(e[0]=a=>m.getScreen(0))},{default:d((()=>[i("获取当前鼠标位置")])),_:1}),o(v,{onClick:e[1]||(e[1]=a=>m.getScreen(1))},{default:d((()=>[i("获取主屏幕")])),_:1}),o(v,{onClick:e[2]||(e[2]=a=>m.getScreen(2))},{default:d((()=>[i("获取所有屏幕")])),_:1})])),_:1})]),h,l("div",j,[o(w,{title:""},{default:d((()=>[(n(!0),c(r,null,u(p.data,((a,e)=>(n(),b(x,{key:e,label:a.title},{default:d((()=>[i(k(a.desc),1)])),_:2},1032,["label"])))),128))])),_:1})])])}],["__scopeId","data-v-5c2facb0"]]);export{C as default}; diff --git a/public/dist/assets/Index-5e3fc052.js.gz b/public/dist/assets/Index-5e3fc052.js.gz new file mode 100644 index 0000000..e84cf6a Binary files /dev/null and b/public/dist/assets/Index-5e3fc052.js.gz differ diff --git a/public/dist/assets/Index-5e799834.js.gz b/public/dist/assets/Index-5e799834.js.gz new file mode 100644 index 0000000..2027ed6 Binary files /dev/null and b/public/dist/assets/Index-5e799834.js.gz differ diff --git a/public/dist/assets/Index-6c47115f.js b/public/dist/assets/Index-6c47115f.js deleted file mode 100644 index 8861f31..0000000 --- a/public/dist/assets/Index-6c47115f.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e}from"./main-3bb0017c.js";import{i as s}from"./ipcRenderer-5e19eaee.js";import{s as a}from"./store2-c97601fe.js";import{_ as o,r as t,o as l,b as i,g as n,a as d,w as c,e as r,p as u,f as p}from"./index-f283ba7d.js";const f=[{content:"【下载】目录",id:"downloads"},{content:"【图片】目录",id:"pictures"},{content:"【文档】目录",id:"documents"},{content:"【音乐】目录",id:"music"}],h={data:()=>({file_list:f,action_url:"",image_info:[],num:0,servicAddress:"",dir_path:"D:\\www\\ee"}),mounted(){this.getHost()},methods:{getHost(){s.invoke(e.checkHttpServer,{}).then((s=>{if(s.enable){this.servicAddress=s.server,a.set("httpServiceConfig",s);const o=s.server||"http://localhost:7071";let t=e.uploadFile.split(".").join("/");this.action_url=o+"/"+t}}))},openDirectry(a){s.invoke(e.openDirectory,{id:a}).then((e=>{}))},selectDir(){s.invoke(e.selectFolder,"").then((e=>{this.dir_path=e,this.$message.info(e)}))},messageShow(){s.invoke(e.messageShow,"").then((e=>{this.$message.info(e)}))},messageShowConfirm(){s.invoke(e.messageShowConfirm,"").then((e=>{this.$message.info(e)}))},handleFileChange(e){if(console.log("handleFileChange-----"),""==this.action_url)return void this.$message.error("http服务未开启");const s=e.file.status;if("uploading"!==s&&console.log(e.file),"done"===s){const s=e.file.response;if(console.log("uploadRes:",s),"success"!==s.code)return this.$message.error(`file upload failed ${s.code} .`),!1;this.num++;const a=s.data;a.id=this.num,a.imageUrlText="image url",this.image_info.push(a),this.$message.success(`${e.file.name} file uploaded successfully.`)}else"error"===s&&this.$message.error(`${e.file.name} file upload failed.`)}}},m=e=>(u("data-v-d30dccef"),e=e(),p(),e),g={id:"app-base-file"},_=m((()=>n("div",{class:"one-block-1"},[n("span",null," 1. 系统原生对话框 ")],-1))),v={class:"one-block-2"},k=m((()=>n("div",{class:"one-block-1"},[n("span",null," 2. 选择保存目录 ")],-1))),C={class:"one-block-2"},b=m((()=>n("div",{class:"one-block-1"},[n("span",null," 3. 打开文件夹 ")],-1))),w={class:"one-block-2"},$=m((()=>n("div",{class:"one-block-1"},[n("span",null," 4. 上传文件到图床 ")],-1))),S={class:"one-block-2"},D=m((()=>n("p",{class:"ant-upload-drag-icon"},null,-1))),j=m((()=>n("p",{class:"ant-upload-text"}," 点击 或 拖拽文件到这里 ",-1))),x=m((()=>n("p",{class:"ant-upload-hint"}," 注意:请使用您自己的图床token ",-1))),y=m((()=>n("div",{class:"footer"},null,-1)));const F=o(h,[["render",function(e,s,a,o,u,p){const f=t("a-button"),h=t("a-space"),m=t("a-input"),F=t("a-col"),H=t("a-row"),V=t("a-card"),A=t("a-list-item"),I=t("a-list"),R=t("a-upload-dragger");return l(),i("div",g,[_,n("div",v,[d(h,null,{default:c((()=>[d(f,{onClick:s[0]||(s[0]=e=>p.messageShow())},{default:c((()=>[r("消息提示(ipc)")])),_:1}),d(f,{onClick:s[1]||(s[1]=e=>p.messageShowConfirm())},{default:c((()=>[r("消息提示与确认(ipc)")])),_:1})])),_:1})]),k,n("div",C,[d(H,null,{default:c((()=>[d(F,{span:12},{default:c((()=>[d(m,{modelValue:u.dir_path,"onUpdate:modelValue":s[2]||(s[2]=e=>u.dir_path=e),value:u.dir_path,"addon-before":"保存目录"},null,8,["modelValue","value"])])),_:1}),d(F,{span:12},{default:c((()=>[d(f,{onClick:p.selectDir},{default:c((()=>[r(" 修改目录 ")])),_:1},8,["onClick"])])),_:1})])),_:1})]),b,n("div",w,[d(I,{grid:{gutter:16,column:4},"data-source":u.file_list},{renderItem:c((({item:e})=>[d(A,{onClick:s=>p.openDirectry(e.id)},{default:c((()=>[d(V,{title:e.content},{default:c((()=>[d(f,{type:"link"},{default:c((()=>[r(" 打开 ")])),_:1})])),_:2},1032,["title"])])),_:2},1032,["onClick"])])),_:1},8,["data-source"])]),$,n("div",S,[d(R,{name:"file",multiple:!0,action:u.action_url,onChange:p.handleFileChange},{default:c((()=>[D,j,x])),_:1},8,["action","onChange"])]),y])}],["__scopeId","data-v-d30dccef"]]);export{F as default}; diff --git a/public/dist/assets/Index-7570f463.js b/public/dist/assets/Index-7570f463.js new file mode 100644 index 0000000..c636db7 --- /dev/null +++ b/public/dist/assets/Index-7570f463.js @@ -0,0 +1 @@ +import{i as e}from"./main-ce25b28f.js";import{i as l}from"./ipcRenderer-5e19eaee.js";import{a as s}from"./index-3bb9c4c1.js";import{_ as o,r as a,o as t,b as n,g as i,a as r,w as c,e as p,p as d,f as u}from"./index-c01cca1d.js";const f={data:()=>({type:1,serverUrl:""}),methods:{info(){l.invoke(e.crossInfo,{}).then((e=>{console.log("res:",e)}))},getUrl(){l.invoke(e.getCrossUrl,{name:"pyapp"}).then((e=>{this.serverUrl=e,this.$message.info(`服务地址: ${e}`)}))},kill(){l.invoke(e.killCrossServer,{type:"one",name:"pyapp"})},killAll(){l.invoke(e.killCrossServer,{type:"all",name:"pyapp"})},create(){l.invoke(e.createCrossServer,{program:"python"})},request(o){if(1!=o||""!=this.serverUrl)if(1==o){const e=this.serverUrl+"/api/hello";s({method:"get",url:e,params:{id:"111"},timeout:1e3}).then((e=>{console.log("res:",e);const l=e.data||null;this.$message.info(`服务返回: ${JSON.stringify(l)}`)}))}else l.invoke(e.requestApi,{name:"pyapp",urlPath:"/api/hello"}).then((e=>{console.log("res:",e);const l=e||null;this.$message.info(`服务返回: ${JSON.stringify(l)}`)}));else this.$message.info("请先获取服务地址")}}},k=e=>(d("data-v-89c3cb98"),e=e(),u(),e),v={id:"app-cross-python"},m=k((()=>i("div",{class:"one-block-1"},[i("span",null," 1. 基础控制 ")],-1))),h={class:"one-block-2"},g=k((()=>i("div",{class:"one-block-1"},[i("span",null," 2. 发送http请求 ")],-1))),_={class:"one-block-2"},C=k((()=>i("div",{class:"one-block-1"},[i("span",null," 3. 多个服务 ")],-1))),y={class:"one-block-2"};const b=o(f,[["render",function(e,l,s,o,d,u){const f=a("a-button"),k=a("a-space");return t(),n("div",v,[m,i("div",h,[r(k,null,{default:c((()=>[r(f,{onClick:l[0]||(l[0]=e=>u.create())},{default:c((()=>[p(" 启动 ")])),_:1}),r(f,{onClick:l[1]||(l[1]=e=>u.getUrl())},{default:c((()=>[p(" 获取地址 ")])),_:1}),r(f,{onClick:l[2]||(l[2]=e=>u.kill())},{default:c((()=>[p(" kill ")])),_:1}),r(f,{onClick:l[3]||(l[3]=e=>u.info())},{default:c((()=>[p(" test ")])),_:1})])),_:1})]),g,i("div",_,[r(k,null,{default:c((()=>[r(f,{onClick:l[4]||(l[4]=e=>u.request(1))},{default:c((()=>[p(" 前端发送 ")])),_:1}),r(f,{onClick:l[5]||(l[5]=e=>u.request(2))},{default:c((()=>[p(" 主进程发送 ")])),_:1})])),_:1})]),C,i("div",y,[r(k,null,{default:c((()=>[r(f,{onClick:l[6]||(l[6]=e=>u.create())},{default:c((()=>[p(" 启动 ")])),_:1}),r(f,{onClick:l[7]||(l[7]=e=>u.killAll())},{default:c((()=>[p(" kill all ")])),_:1})])),_:1})])])}],["__scopeId","data-v-89c3cb98"]]);export{b as default}; diff --git a/public/dist/assets/Index-7570f463.js.gz b/public/dist/assets/Index-7570f463.js.gz new file mode 100644 index 0000000..6c0f23e Binary files /dev/null and b/public/dist/assets/Index-7570f463.js.gz differ diff --git a/public/dist/assets/Index-7f01e8aa.js.gz b/public/dist/assets/Index-7f01e8aa.js.gz new file mode 100644 index 0000000..e461c03 Binary files /dev/null and b/public/dist/assets/Index-7f01e8aa.js.gz differ diff --git a/public/dist/assets/Index-8ca1895c.js.gz b/public/dist/assets/Index-8ca1895c.js.gz new file mode 100644 index 0000000..29772cb Binary files /dev/null and b/public/dist/assets/Index-8ca1895c.js.gz differ diff --git a/public/dist/assets/Index-9563719d.js.gz b/public/dist/assets/Index-9563719d.js.gz new file mode 100644 index 0000000..bed5ef0 Binary files /dev/null and b/public/dist/assets/Index-9563719d.js.gz differ diff --git a/public/dist/assets/Index-9ae1ed3b.js b/public/dist/assets/Index-9ae1ed3b.js new file mode 100644 index 0000000..5294049 --- /dev/null +++ b/public/dist/assets/Index-9ae1ed3b.js @@ -0,0 +1 @@ +import{i as e}from"./main-ce25b28f.js";import{i as s}from"./ipcRenderer-5e19eaee.js";import{a}from"./index-3bb9c4c1.js";import{s as r}from"./store2-127baa44.js";import{_ as t,r as o,o as i,b as n,g as v,a as c,w as d,e as m,p as l,f}from"./index-c01cca1d.js";const u={data:()=>({server:""}),methods:{startServer(){s.invoke(e.startJavaServer,{}).then((e=>{0!=e.code?this.$message.error(e.msg):(this.$message.info("异步启动"),r.set("javaService",e.server))}))},closeServer(){s.invoke(e.closeJavaServer,{}).then((e=>{0!=e.code&&this.$message.error(e.msg),this.$message.info("异步关闭"),r.remove("javaService")}))},sendRequest(){const e=r.get("javaService")||"";if(""==e)return void this.$message.error("服务未开启 或 正在启动中");a({method:"get",url:e+"/test1/get",params:{id:"1111111"},timeout:6e4}).then((e=>{const s=e.data||null;this.$message.info(`java服务返回: ${s}`)}))}}},p={id:"app-other"},g=(e=>(l("data-v-c3213243"),e=e(),f(),e))((()=>v("div",{class:"one-block-1"},[v("span",null," 请求java服务接口(废弃,请使用跨语言服务) ")],-1))),h={class:"one-block-2"};const j=t(u,[["render",function(e,s,a,r,t,l){const f=o("a-button"),u=o("a-space");return i(),n("div",p,[g,v("div",h,[c(u,null,{default:d((()=>[c(f,{onClick:s[0]||(s[0]=e=>l.startServer())},{default:d((()=>[m(" 启动java项目 ")])),_:1}),c(f,{onClick:s[1]||(s[1]=e=>l.sendRequest())},{default:d((()=>[m(" 测试接口 ")])),_:1}),c(f,{onClick:s[2]||(s[2]=e=>l.closeServer())},{default:d((()=>[m(" 关闭java项目 ")])),_:1})])),_:1})])])}],["__scopeId","data-v-c3213243"]]);export{j as default}; diff --git a/public/dist/assets/Index-9ae1ed3b.js.gz b/public/dist/assets/Index-9ae1ed3b.js.gz new file mode 100644 index 0000000..3db70ca Binary files /dev/null and b/public/dist/assets/Index-9ae1ed3b.js.gz differ diff --git a/public/dist/assets/Index-9e9d1c9b.js b/public/dist/assets/Index-9e9d1c9b.js deleted file mode 100644 index 7f5f986..0000000 --- a/public/dist/assets/Index-9e9d1c9b.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e}from"./main-3bb0017c.js";import{i as t}from"./ipcRenderer-5e19eaee.js";import{_ as i,h as s,r as a,o as n,b as l,g as o,a as r,w as d,e as c,t as u,p as m,f as v}from"./index-f283ba7d.js";const p={data:()=>({defaultDeviceName:"",printerList:[],views:[{type:"html",content:"/public/html/view_example.html"}]}),mounted(){this.init()},methods:{init(){t.removeAllListeners(e.printStatus),t.on(e.printStatus,((e,t)=>{console.log("result",t),this.$message.info("打印中...")}))},getPrinter(){t.invoke(e.getPrinterList,{}).then((e=>{this.printerList=e}))},doPrint(i){console.log("defaultDeviceName:",this.defaultDeviceName);const a={view:s(this.views[i]),deviceName:this.defaultDeviceName};t.send(e.print,a)},defaultDevice(e){let t="";return e.isDefault&&(t="- 默认",this.defaultDeviceName=e.name),t}}},f=e=>(m("data-v-b732860b"),e=e(),v(),e),h={id:"app-hw-bluetooth"},b=f((()=>o("div",{class:"one-block-1"},[o("span",null," 1. 打印机设备 ")],-1))),k={class:"one-block-2"},D={class:"one-block-2"},_=f((()=>o("div",null,"设备列表",-1))),g=f((()=>o("div",{class:"one-block-1"},[o("span",null," 2. 打印内容 ")],-1))),N={class:"one-block-2"};const w=i(p,[["render",function(e,t,i,s,m,v){const p=a("a-button"),f=a("a-list-item"),w=a("a-list");return n(),l("div",h,[b,o("div",k,[r(p,{onClick:t[0]||(t[0]=e=>v.getPrinter())},{default:d((()=>[c(" 获取打印机列表 ")])),_:1})]),o("div",D,[r(w,{size:"small",bordered:"","data-source":m.printerList},{renderItem:d((({item:e})=>[r(f,null,{default:d((()=>[c(u(e.displayName)+" "+u(v.defaultDevice(e)),1)])),_:2},1024)])),header:d((()=>[_])),_:1},8,["data-source"])]),g,o("div",N,[r(p,{onClick:t[1]||(t[1]=e=>v.doPrint(0))},{default:d((()=>[c(" 打印一个页面 ")])),_:1})])])}],["__scopeId","data-v-b732860b"]]);export{w as default}; diff --git a/public/dist/assets/Index-ad85ce78.js b/public/dist/assets/Index-ad85ce78.js new file mode 100644 index 0000000..21deb80 --- /dev/null +++ b/public/dist/assets/Index-ad85ce78.js @@ -0,0 +1 @@ +import{i as e}from"./main-ce25b28f.js";import{i as l}from"./ipcRenderer-5e19eaee.js";import{a as s}from"./index-3bb9c4c1.js";import{_ as o,r as a,o as t,b as n,g as i,a as r,w as c,e as d,p,f as u}from"./index-c01cca1d.js";const k={data:()=>({type:1,serverUrl:""}),methods:{info(){l.invoke(e.crossInfo,{}).then((e=>{console.log("res:",e)}))},getUrl(){l.invoke(e.getCrossUrl,{name:"goapp"}).then((e=>{this.serverUrl=e,this.$message.info(`服务地址: ${e}`)}))},kill(){l.invoke(e.killCrossServer,{type:"one",name:"goapp"})},killAll(){l.invoke(e.killCrossServer,{type:"all",name:"goapp"})},create(){l.invoke(e.createCrossServer,{program:"go"})},request(o){if(1!=o||""!=this.serverUrl)if(1==o){const e=this.serverUrl+"/api/hello";s({method:"get",url:e,params:{id:"111"},timeout:1e3}).then((e=>{console.log("res:",e);const l=e.data.data||null;this.$message.info(`服务返回: ${l}`)}))}else l.invoke(e.requestApi,{name:"goapp",urlPath:"/api/hello"}).then((e=>{console.log("res:",e);const l=e.data||null;this.$message.info(`服务返回: ${l}`)}));else this.$message.info("请先获取服务地址")}}},f=e=>(p("data-v-e1875343"),e=e(),u(),e),v={id:"app-cross-go"},m=f((()=>i("div",{class:"one-block-1"},[i("span",null," 1. 基础控制 ")],-1))),g={class:"one-block-2"},h=f((()=>i("div",{class:"one-block-1"},[i("span",null," 2. 发送http请求 ")],-1))),_={class:"one-block-2"},C=f((()=>i("div",{class:"one-block-1"},[i("span",null," 3. 多个服务 ")],-1))),b={class:"one-block-2"};const U=o(k,[["render",function(e,l,s,o,p,u){const k=a("a-button"),f=a("a-space");return t(),n("div",v,[m,i("div",g,[r(f,null,{default:c((()=>[r(k,{onClick:l[0]||(l[0]=e=>u.create())},{default:c((()=>[d(" 启动 ")])),_:1}),r(k,{onClick:l[1]||(l[1]=e=>u.getUrl())},{default:c((()=>[d(" 获取地址 ")])),_:1}),r(k,{onClick:l[2]||(l[2]=e=>u.kill())},{default:c((()=>[d(" kill ")])),_:1}),r(k,{onClick:l[3]||(l[3]=e=>u.info())},{default:c((()=>[d(" test ")])),_:1})])),_:1})]),h,i("div",_,[r(f,null,{default:c((()=>[r(k,{onClick:l[4]||(l[4]=e=>u.request(1))},{default:c((()=>[d(" 前端发送 ")])),_:1}),r(k,{onClick:l[5]||(l[5]=e=>u.request(2))},{default:c((()=>[d(" 主进程发送 ")])),_:1})])),_:1})]),C,i("div",b,[r(f,null,{default:c((()=>[r(k,{onClick:l[6]||(l[6]=e=>u.create())},{default:c((()=>[d(" 启动 ")])),_:1}),r(k,{onClick:l[7]||(l[7]=e=>u.killAll())},{default:c((()=>[d(" kill所有 ")])),_:1})])),_:1})])])}],["__scopeId","data-v-e1875343"]]);export{U as default}; diff --git a/public/dist/assets/Index-ad85ce78.js.gz b/public/dist/assets/Index-ad85ce78.js.gz new file mode 100644 index 0000000..1a20b36 Binary files /dev/null and b/public/dist/assets/Index-ad85ce78.js.gz differ diff --git a/public/dist/assets/Index-af0c3b59.css b/public/dist/assets/Index-af0c3b59.css new file mode 100644 index 0000000..a5e3582 --- /dev/null +++ b/public/dist/assets/Index-af0c3b59.css @@ -0,0 +1 @@ +#app-cross-python[data-v-89c3cb98]{padding:0 10px;text-align:left;width:100%}#app-cross-python .one-block-1[data-v-89c3cb98]{font-size:16px;padding-top:10px}#app-cross-python .one-block-2[data-v-89c3cb98]{padding-top:10px} diff --git a/public/dist/assets/Index-c2f0b408.js b/public/dist/assets/Index-c2f0b408.js deleted file mode 100644 index e6415a1..0000000 --- a/public/dist/assets/Index-c2f0b408.js +++ /dev/null @@ -1 +0,0 @@ -import{i as t}from"./main-3bb0017c.js";import{i as s}from"./ipcRenderer-5e19eaee.js";import{_ as n,r as o,o as e,b as a,g as i,a as r,w as l,t as c,p,f as u}from"./index-f283ba7d.js";const d={data:()=>({currentStatus:"无"}),mounted(){this.init()},methods:{init(){s.removeAllListeners(t.initPowerMonitor),s.on(t.initPowerMonitor,((t,s)=>{"[object Object]"==Object.prototype.toString.call(s)&&(this.currentStatus=s.msg,this.$message.info(s.msg))})),s.send(t.initPowerMonitor,"")}}},m=t=>(p("data-v-564cbe99"),t=t(),u(),t),b={id:"app-base-powermonitor"},f=m((()=>i("div",{class:"one-block-1"},[i("span",null," 1. 监控电源状态 ")],-1))),v={class:"one-block-2"},j=m((()=>i("p",null,"* 拔掉电源,使用电池供电",-1))),g=m((()=>i("p",null,"* 接入电源",-1))),w=m((()=>i("p",null,"* 锁屏",-1))),h=m((()=>i("p",null,"* 解锁",-1)));const S=n(d,[["render",function(t,s,n,p,u,d){const m=o("a-space");return e(),a("div",b,[f,i("div",v,[r(m,null,{default:l((()=>[i("p",null,"* 当前状态:"+c(u.currentStatus),1)])),_:1}),j,g,w,h])])}],["__scopeId","data-v-564cbe99"]]);export{S as default}; diff --git a/public/dist/assets/Index-c4fe10d4.js b/public/dist/assets/Index-c4fe10d4.js new file mode 100644 index 0000000..2f44116 --- /dev/null +++ b/public/dist/assets/Index-c4fe10d4.js @@ -0,0 +1 @@ +import{i as a}from"./main-ce25b28f.js";import{i as e}from"./ipcRenderer-5e19eaee.js";import{_ as s,r as t,o as n,b as c,g as l,a as o,w as d,e as i,F as r,d as f,p,f as u,c as b,t as k}from"./index-c01cca1d.js";const m={data:()=>({data:[]}),methods:{getScreen(s){e.invoke(a.getScreen,s).then((a=>{this.data=a}))}}},v=a=>(p("data-v-5c2facb0"),a=a(),u(),a),_={id:"app-base-screen"},g=v((()=>l("div",{class:"one-block-1"},[l("span",null," 1. 屏幕信息 ")],-1))),S={class:"one-block-2"},h=v((()=>l("div",{class:"one-block-1"},[l("span",null," 结果: ")],-1))),j={class:"one-block-2"};const C=s(m,[["render",function(a,e,s,p,u,m){const v=t("a-button"),C=t("a-space"),w=t("a-descriptions-item"),x=t("a-descriptions");return n(),c("div",_,[g,l("div",S,[o(C,null,{default:d((()=>[o(v,{onClick:e[0]||(e[0]=a=>m.getScreen(0))},{default:d((()=>[i("获取当前鼠标位置")])),_:1}),o(v,{onClick:e[1]||(e[1]=a=>m.getScreen(1))},{default:d((()=>[i("获取主屏幕")])),_:1}),o(v,{onClick:e[2]||(e[2]=a=>m.getScreen(2))},{default:d((()=>[i("获取所有屏幕")])),_:1})])),_:1})]),h,l("div",j,[o(x,{title:""},{default:d((()=>[(n(!0),c(r,null,f(u.data,((a,e)=>(n(),b(w,{key:e,label:a.title},{default:d((()=>[i(k(a.desc),1)])),_:2},1032,["label"])))),128))])),_:1})])])}],["__scopeId","data-v-5c2facb0"]]);export{C as default}; diff --git a/public/dist/assets/Index-c4fe10d4.js.gz b/public/dist/assets/Index-c4fe10d4.js.gz new file mode 100644 index 0000000..c941641 Binary files /dev/null and b/public/dist/assets/Index-c4fe10d4.js.gz differ diff --git a/public/dist/assets/Index-c521a9f5.js b/public/dist/assets/Index-c521a9f5.js deleted file mode 100644 index b3ba40a..0000000 --- a/public/dist/assets/Index-c521a9f5.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e}from"./main-3bb0017c.js";import{i as a}from"./ipcRenderer-5e19eaee.js";import{_ as s,r as t,o,b as n,g as r,a as d,w as i,e as l,t as c,p,f as u}from"./index-f283ba7d.js";const f={data:()=>({data:[{content:"powershell.exe",id:"powershell.exe"}]}),methods:{openSoft(s){a.invoke(e.openSoftware,s).then((e=>{e||this.$message.error("程序不存在")}))}}},m={id:"app-base-software-open"},b=(e=>(p("data-v-90e4d11c"),e=e(),u(),e))((()=>r("div",{class:"one-block-1"},[r("span",null," 1. 调用其它软件(exe、bash等可执行程序) "),r("p"),r("span",{class:"sub-content"}," 注:请先将【powershell.exe】复制到【electron-egg/build/extraResources】目录中 ")],-1))),h={class:"one-block-2"};const v=s(f,[["render",function(e,a,s,p,u,f){const v=t("a-button"),x=t("a-list-item"),k=t("a-list");return o(),n("div",m,[b,r("div",h,[d(k,{bordered:"","data-source":u.data},{renderItem:i((({item:e})=>[d(x,{onClick:a=>f.openSoft(e.id)},{default:i((()=>[l(c(e.content)+" ",1),d(v,{type:"link"},{default:i((()=>[l(" 执行 ")])),_:1})])),_:2},1032,["onClick"])])),_:1},8,["data-source"])])])}],["__scopeId","data-v-90e4d11c"]]);export{v as default}; diff --git a/public/dist/assets/Index-ce621282.js b/public/dist/assets/Index-ce621282.js deleted file mode 100644 index d9888f5..0000000 --- a/public/dist/assets/Index-ce621282.js +++ /dev/null @@ -1 +0,0 @@ -import{i as a}from"./main-3bb0017c.js";import{i as e}from"./ipcRenderer-5e19eaee.js";import{_ as t,r as n,o,b as s,g as u,a as c,w as i,p as l,f as h}from"./index-f283ba7d.js";const d={data:()=>({autoLaunchChecked:!1}),mounted(){this.init()},methods:{init(){e.invoke(a.autoLaunch,"check").then((a=>{console.log("[ipcRenderer] [autoLaunch] result:",a),this.autoLaunchChecked=a.status}))},autoLaunchChange(a){console.log("[ipcRenderer] [autoLaunch] self.autoLaunchChecked:",this.autoLaunchChecked)}}},r=a=>(l("data-v-1b008e01"),a=a(),h(),a),m={id:"app-base-system-launch"},p={class:"one-block-2"},C=r((()=>u("a",null,"启动",-1))),L=r((()=>u("span",null," 开机自动启动 ",-1)));const k=t(d,[["render",function(a,e,t,l,h,d){const r=n("a-list-item-meta"),k=n("a-switch"),f=n("a-list-item"),g=n("a-list");return o(),s("div",m,[u("div",p,[c(g,{class:"set-auto",itemLayout:"horizontal"},{default:i((()=>[c(f,{style:{"text-align":"left"}},{actions:i((()=>[c(k,{modelValue:h.autoLaunchChecked,"onUpdate:modelValue":e[0]||(e[0]=a=>h.autoLaunchChecked=a),checkedChildren:"开",unCheckedChildren:"关",onChange:e[1]||(e[1]=a=>d.autoLaunchChange())},null,8,["modelValue"])])),default:i((()=>[c(r,null,{title:i((()=>[C])),description:i((()=>[L])),_:1})])),_:1})])),_:1})])])}],["__scopeId","data-v-1b008e01"]]);export{k as default}; diff --git a/public/dist/assets/Index-dc93a782.js.gz b/public/dist/assets/Index-dc93a782.js.gz new file mode 100644 index 0000000..5d7ba47 Binary files /dev/null and b/public/dist/assets/Index-dc93a782.js.gz differ diff --git a/public/dist/assets/Index-e0cd22d1.js b/public/dist/assets/Index-e0cd22d1.js deleted file mode 100644 index 42c8f87..0000000 --- a/public/dist/assets/Index-e0cd22d1.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e}from"./main-3bb0017c.js";import{i}from"./ipcRenderer-5e19eaee.js";import{_ as n,h as o,r as a,o as l,b as t,g as s,a as d,w,e as c,p as u,f as m}from"./index-f283ba7d.js";const p={data:()=>({views:[{type:"web",content:"https://www.bilibili.com/",windowName:"window-web",windowTitle:"bilibili"},{type:"html",content:"/public/html/view_example.html",windowName:"window-html",windowTitle:"html window"},{type:"vue",content:"#/special/subwindow",windowName:"window-vue",windowTitle:"vue window"}]}),methods:{createWindow(n){i.invoke(e.createWindow,o(this.views[n])).then((e=>{console.log(e)}))}}},r=e=>(u("data-v-f82edd5f"),e=e(),m(),e),b={id:"app-base-window"},v=r((()=>s("div",{class:"one-block-1"},[s("span",null," 1. 新窗口中加载web内容 ")],-1))),f={class:"one-block-2"},h=r((()=>s("div",{class:"one-block-1"},[s("span",null," 2. 新窗口中加载html内容 ")],-1))),k={class:"one-block-2"},_=r((()=>s("div",{class:"one-block-1"},[s("span",null," 3. 新窗口中加载当前项目页面 ")],-1))),W={class:"one-block-2"};const j=n(p,[["render",function(e,i,n,o,u,m){const p=a("a-button"),r=a("a-space");return l(),t("div",b,[v,s("div",f,[d(r,null,{default:w((()=>[d(p,{onClick:i[0]||(i[0]=e=>m.createWindow(0))},{default:w((()=>[c("打开哔哩哔哩")])),_:1})])),_:1})]),h,s("div",k,[d(r,null,{default:w((()=>[d(p,{onClick:i[1]||(i[1]=e=>m.createWindow(1))},{default:w((()=>[c("打开html页面")])),_:1})])),_:1})]),_,s("div",W,[d(r,null,{default:w((()=>[d(p,{onClick:i[2]||(i[2]=e=>m.createWindow(2))},{default:w((()=>[c("打开vue页面")])),_:1})])),_:1})])])}],["__scopeId","data-v-f82edd5f"]]);export{j as default}; diff --git a/public/dist/assets/Index-e239b54e.js b/public/dist/assets/Index-e239b54e.js deleted file mode 100644 index a3d7712..0000000 --- a/public/dist/assets/Index-e239b54e.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e}from"./main-3bb0017c.js";import{i as t}from"./ipcRenderer-5e19eaee.js";import{_ as a,r as s,o,b as n,g as l,a as r,w as d,t as u,e as m,p as h,f as i}from"./index-f283ba7d.js";const c={data:()=>({currentThemeMode:"",themeList:["system","light","dark"]}),mounted(){},methods:{setTheme(a){this.currentThemeMode=a.target.value,console.log("setTheme currentThemeMode:",this.currentThemeMode),t.invoke(e.setTheme,this.currentThemeMode).then((e=>{console.log("result:",e),this.currentThemeMode=e}))},getTheme(){t.invoke(e.getTheme).then((e=>{console.log("result:",e),this.currentThemeMode=e}))}}},v=e=>(h("data-v-5a0f8a17"),e=e(),i(),e),T={id:"app-base-screen"},f=v((()=>l("div",{class:"one-block-1"},[l("span",null," 1. 系统主题模式 ")],-1))),p={class:"one-block-2"},g=v((()=>l("div",{class:"one-block-1"}," 2. 设置主题模式(请自行实现前端UI效果) ",-1))),M={class:"one-block-2"};const _=a(c,[["render",function(e,t,a,h,i,c){const v=s("a-button"),_=s("a-space"),k=s("a-radio"),b=s("a-radio-group");return o(),n("div",T,[f,l("div",p,[r(_,null,{default:d((()=>[r(v,{onClick:t[0]||(t[0]=e=>c.getTheme())},{default:d((()=>[m("获取模式")])),_:1})])),_:1}),l("span",null," 结果:"+u(i.currentThemeMode),1)]),g,l("div",M,[r(b,{modelValue:i.currentThemeMode,"onUpdate:modelValue":t[1]||(t[1]=e=>i.currentThemeMode=e),onChange:c.setTheme},{default:d((()=>[r(k,{value:i.themeList[0]},{default:d((()=>[m(u(i.themeList[0]),1)])),_:1},8,["value"]),r(k,{value:i.themeList[1]},{default:d((()=>[m(u(i.themeList[1]),1)])),_:1},8,["value"]),r(k,{value:i.themeList[2]},{default:d((()=>[m(u(i.themeList[2]),1)])),_:1},8,["value"])])),_:1},8,["modelValue","onChange"])])])}],["__scopeId","data-v-5a0f8a17"]]);export{_ as default}; diff --git a/public/dist/assets/Index-e4243358.js b/public/dist/assets/Index-e4243358.js new file mode 100644 index 0000000..3119dab --- /dev/null +++ b/public/dist/assets/Index-e4243358.js @@ -0,0 +1 @@ +import{i as e}from"./main-ce25b28f.js";import{i as s}from"./ipcRenderer-5e19eaee.js";import{a}from"./index-3bb9c4c1.js";import{_ as l,r as o,o as t,b as n,g as i,a as r,w as c,e as d,p,f as u}from"./index-c01cca1d.js";const v={data:()=>({type:1,serverUrl:""}),methods:{info(){s.invoke(e.crossInfo,{}).then((e=>{console.log("res:",e)}))},getUrl(){s.invoke(e.getCrossUrl,{name:"javaapp"}).then((e=>{this.serverUrl=e,this.$message.info(`服务地址: ${e}`)}))},kill(){s.invoke(e.killCrossServer,{type:"one",name:"javaapp"})},killAll(){s.invoke(e.killCrossServer,{type:"all",name:"javaapp"})},create(){s.invoke(e.createCrossServer,{program:"java"})},request(l){if(1!=l||""!=this.serverUrl)if(1==l){const e=this.serverUrl+"/test1/get";a({method:"get",url:e,params:{id:"1111111"},timeout:1e3}).then((e=>{console.log("res:",e);const s=e.data||null;this.$message.info(`服务返回: ${s}`)}))}else s.invoke(e.requestApi,{name:"javaapp",urlPath:"/test1/get",params:{id:"1111111"}}).then((e=>{console.log("res:",e);const s=e||null;this.$message.info(`服务返回: ${s}`)}));else this.$message.info("请先获取服务地址")}}},k=e=>(p("data-v-5d226b2a"),e=e(),u(),e),f={id:"app-cross-java"},m=k((()=>i("div",{class:"one-block-1"},[i("span",null," 1. 基础控制 ")],-1))),g={class:"one-block-2"},h=k((()=>i("div",{class:"one-block-1"},[i("span",null," 2. 发送http请求 ")],-1))),_={class:"one-block-2"},C=k((()=>i("div",{class:"one-block-1"},[i("span",null," 3. 多个服务 ")],-1))),b={class:"one-block-2"};const j=l(v,[["render",function(e,s,a,l,p,u){const v=o("a-button"),k=o("a-space");return t(),n("div",f,[m,i("div",g,[r(k,null,{default:c((()=>[r(v,{onClick:s[0]||(s[0]=e=>u.create())},{default:c((()=>[d(" 启动 ")])),_:1}),r(v,{onClick:s[1]||(s[1]=e=>u.getUrl())},{default:c((()=>[d(" 获取地址 ")])),_:1}),r(v,{onClick:s[2]||(s[2]=e=>u.kill())},{default:c((()=>[d(" kill ")])),_:1}),r(v,{onClick:s[3]||(s[3]=e=>u.info())},{default:c((()=>[d(" 查看 ")])),_:1})])),_:1})]),h,i("div",_,[r(k,null,{default:c((()=>[r(v,{onClick:s[4]||(s[4]=e=>u.request(1))},{default:c((()=>[d(" 前端发送 ")])),_:1}),r(v,{onClick:s[5]||(s[5]=e=>u.request(2))},{default:c((()=>[d(" 主进程发送 ")])),_:1})])),_:1})]),C,i("div",b,[r(k,null,{default:c((()=>[r(v,{onClick:s[6]||(s[6]=e=>u.create())},{default:c((()=>[d(" 启动 ")])),_:1}),r(v,{onClick:s[7]||(s[7]=e=>u.killAll())},{default:c((()=>[d(" kill所有 ")])),_:1})])),_:1})])])}],["__scopeId","data-v-5d226b2a"]]);export{j as default}; diff --git a/public/dist/assets/Index-e4243358.js.gz b/public/dist/assets/Index-e4243358.js.gz new file mode 100644 index 0000000..b9a1490 Binary files /dev/null and b/public/dist/assets/Index-e4243358.js.gz differ diff --git a/public/dist/assets/Index-e9c7b9bd.js b/public/dist/assets/Index-e9c7b9bd.js new file mode 100644 index 0000000..759450d --- /dev/null +++ b/public/dist/assets/Index-e9c7b9bd.js @@ -0,0 +1 @@ +import{i as e}from"./main-ce25b28f.js";import{i as a}from"./ipcRenderer-5e19eaee.js";import{_ as s,r as t,o,b as n,g as r,a as d,w as i,e as l,t as c,p,f}from"./index-c01cca1d.js";const m={data:()=>({data:[{content:"powershell.exe",id:"powershell.exe"}]}),methods:{openSoft(s){a.invoke(e.openSoftware,s).then((e=>{e||this.$message.error("程序不存在")}))}}},u={id:"app-base-software-open"},b=(e=>(p("data-v-90e4d11c"),e=e(),f(),e))((()=>r("div",{class:"one-block-1"},[r("span",null," 1. 调用其它软件(exe、bash等可执行程序) "),r("p"),r("span",{class:"sub-content"}," 注:请先将【powershell.exe】复制到【electron-egg/build/extraResources】目录中 ")],-1))),h={class:"one-block-2"};const v=s(m,[["render",function(e,a,s,p,f,m){const v=t("a-button"),w=t("a-list-item"),x=t("a-list");return o(),n("div",u,[b,r("div",h,[d(x,{bordered:"","data-source":f.data},{renderItem:i((({item:e})=>[d(w,{onClick:a=>m.openSoft(e.id)},{default:i((()=>[l(c(e.content)+" ",1),d(v,{type:"link"},{default:i((()=>[l(" 执行 ")])),_:1})])),_:2},1032,["onClick"])])),_:1},8,["data-source"])])])}],["__scopeId","data-v-90e4d11c"]]);export{v as default}; diff --git a/public/dist/assets/Index-e9c7b9bd.js.gz b/public/dist/assets/Index-e9c7b9bd.js.gz new file mode 100644 index 0000000..cfd50e0 Binary files /dev/null and b/public/dist/assets/Index-e9c7b9bd.js.gz differ diff --git a/public/dist/assets/Index-ea03b463.js.gz b/public/dist/assets/Index-ea03b463.js.gz new file mode 100644 index 0000000..2475511 Binary files /dev/null and b/public/dist/assets/Index-ea03b463.js.gz differ diff --git a/public/dist/assets/Index-ea299cba.js b/public/dist/assets/Index-ea299cba.js deleted file mode 100644 index 4be696b..0000000 --- a/public/dist/assets/Index-ea299cba.js +++ /dev/null @@ -1 +0,0 @@ -import{s,i as e}from"./main-3bb0017c.js";import{i as a}from"./ipcRenderer-5e19eaee.js";import{_ as t,r as o,o as n,b as r,g as c,a as d,w as i,e as l,t as p,p as u,f as m}from"./index-f283ba7d.js";const f={data:()=>({status:0,progress:"",percentNumber:0}),mounted(){this.init()},methods:{init(){a.removeAllListeners(s.appUpdater),a.on(s.appUpdater,((s,e)=>{e=JSON.parse(e),this.status=e.status,3==e.status?(this.progress=e.desc,this.percentNumber=e.percentNumber):this.$message.info(e.desc)}))},checkForUpdater(){a.invoke(e.checkForUpdater).then((s=>{console.log(s)}))},download(){1===this.status?a.invoke(e.downloadApp).then((s=>{console.log(s)})):this.$message.info("没有可用版本")}}},h=s=>(u("data-v-88c3fe69"),s=s(),m(),s),v={id:"app-demo-window"},k=h((()=>c("div",{class:"one-block-1"},[c("span",null," 1. 自动更新 ")],-1))),b={class:"one-block-2"},g=h((()=>c("div",{class:"one-block-1"},[c("span",null," 2. 下载进度 ")],-1))),_={class:"one-block-2"};const w=t(f,[["render",function(s,e,a,t,u,m){const f=o("a-button"),h=o("a-space"),w=o("a-progress");return n(),r("div",v,[k,c("div",b,[d(h,null,{default:i((()=>[d(f,{onClick:e[0]||(e[0]=s=>m.checkForUpdater())},{default:i((()=>[l("检查更新")])),_:1}),d(f,{onClick:e[1]||(e[1]=s=>m.download())},{default:i((()=>[l("下载并安装")])),_:1})])),_:1})]),g,c("div",_,[d(w,{percent:u.percentNumber,status:"active"},null,8,["percent"]),d(h,null,{default:i((()=>[l(p(u.progress),1)])),_:1})])])}],["__scopeId","data-v-88c3fe69"]]);export{w as default}; diff --git a/public/dist/assets/Index-f2c2d585.js b/public/dist/assets/Index-f2c2d585.js deleted file mode 100644 index 58048ae..0000000 --- a/public/dist/assets/Index-f2c2d585.js +++ /dev/null @@ -1 +0,0 @@ -import{i as s}from"./main-3bb0017c.js";import{i as r}from"./ipcRenderer-5e19eaee.js";import{_ as e,r as o,o as i,b as p,g as l,a as d,w as t,e as a,t as n,p as u,f as c}from"./index-f283ba7d.js";const g={data:()=>({processPids:"",progress1:0,progress2:0,progress3:0,progress4:0,progress5:0,progress6:0,progress1_pid:0,progress2_pid:0,progress3_pid:0,progress4_pid:0,progress5_pid:0,progress6_pid:0}),mounted(){this.init()},methods:{init(){r.removeAllListeners(s.timerJobProgress),r.removeAllListeners(s.createPoolNotice),r.on(s.timerJobProgress,((s,r)=>{switch(r.jobId){case 1:this.progress1=r.number,this.progress1_pid=0==r.pid?r.pid:this.progress1_pid;break;case 2:this.progress2=r.number,this.progress2_pid=0==r.pid?r.pid:this.progress2_pid;break;case 3:this.progress3=r.number,this.progress3_pid=0==r.pid?r.pid:this.progress3_pid;break;case 4:this.progress4=r.number,this.progress4_pid=0==r.pid?r.pid:this.progress4_pid;break;case 5:this.progress5=r.number,this.progress5_pid=0==r.pid?r.pid:this.progress5_pid;break;case 6:this.progress6=r.number,this.progress6_pid=0==r.pid?r.pid:this.progress6_pid}})),r.on(s.createPoolNotice,((s,r)=>{let e=JSON.stringify(r);this.processPids=e}))},runJob(e,o){let i={id:e,type:"timer",action:o};r.invoke(s.someJob,i).then((s=>{if("close"!=o)switch(s.jobId){case 1:this.progress1_pid=s.result.pid;break;case 2:this.progress2_pid=s.result.pid}}))},createPool(){r.send(s.createPool,{number:3})},runJobByPool(e,o){let i={id:e,type:"timer",action:o};r.invoke(s.someJobByPool,i).then((s=>{switch(s.jobId){case 3:this.progress3_pid=s.result.pid;break;case 4:this.progress4_pid=s.result.pid;break;case 5:this.progress5_pid=s.result.pid;break;case 6:this.progress6_pid=s.result.pid}}))}}},_=s=>(u("data-v-71705fa7"),s=s(),c(),s),b={id:"app-base-jobs"},h=_((()=>l("div",{class:"one-block-1"},[l("span",null," 1. 任务 / 并发任务 ")],-1))),f={class:"one-block-2"},k=_((()=>l("p",null,null,-1))),m=_((()=>l("div",{class:"one-block-1"},[l("span",null," 2. 任务池 / 并发任务 ")],-1))),P={class:"one-block-2"},J=_((()=>l("p",null,null,-1))),v=_((()=>l("p",null,null,-1))),y=_((()=>l("p",null,null,-1))),C=_((()=>l("p",null,null,-1)));const j=e(g,[["render",function(s,r,e,u,c,g){const _=o("a-button"),j=o("a-space");return i(),p("div",b,[h,l("div",f,[d(j,null,{default:t((()=>[d(_,{onClick:r[0]||(r[0]=s=>g.runJob(1,"create"))},{default:t((()=>[a("执行任务1")])),_:1}),a(" 进度:"+n(c.progress1)+" , 进程pid:"+n(c.progress1_pid)+" ",1),d(_,{onClick:r[1]||(r[1]=s=>g.runJob(1,"close"))},{default:t((()=>[a("关闭")])),_:1})])),_:1}),k,d(j,null,{default:t((()=>[d(_,{onClick:r[2]||(r[2]=s=>g.runJob(2,"create"))},{default:t((()=>[a("执行任务2")])),_:1}),a(" 进度:"+n(c.progress2)+" , 进程pid:"+n(c.progress2_pid)+" ",1),d(_,{onClick:r[3]||(r[3]=s=>g.runJob(2,"close"))},{default:t((()=>[a("关闭")])),_:1})])),_:1})]),m,l("div",P,[d(j,null,{default:t((()=>[d(_,{onClick:r[4]||(r[4]=s=>g.createPool())},{default:t((()=>[a("创建进程池")])),_:1}),a(" 进程pids:"+n(c.processPids),1)])),_:1}),J,d(j,null,{default:t((()=>[d(_,{onClick:r[5]||(r[5]=s=>g.runJobByPool(3,"run"))},{default:t((()=>[a("执行任务3")])),_:1}),a(" 进度:"+n(c.progress3)+" ,进程pid:"+n(c.progress3_pid),1)])),_:1}),v,d(j,null,{default:t((()=>[d(_,{onClick:r[6]||(r[6]=s=>g.runJobByPool(4,"run"))},{default:t((()=>[a("执行任务4")])),_:1}),a(" 进度:"+n(c.progress4)+" ,进程pid:"+n(c.progress4_pid),1)])),_:1}),y,d(j,null,{default:t((()=>[d(_,{onClick:r[7]||(r[7]=s=>g.runJobByPool(5,"run"))},{default:t((()=>[a("执行任务5")])),_:1}),a(" 进度:"+n(c.progress5)+" ,进程pid:"+n(c.progress5_pid),1)])),_:1}),C,d(j,null,{default:t((()=>[d(_,{onClick:r[8]||(r[8]=s=>g.runJobByPool(6,"run"))},{default:t((()=>[a("执行任务6")])),_:1}),a(" 进度:"+n(c.progress6)+" ,进程pid:"+n(c.progress6_pid),1)])),_:1})])])}],["__scopeId","data-v-71705fa7"]]);export{j as default}; diff --git a/public/dist/assets/Index-f4d16407.js b/public/dist/assets/Index-f4d16407.js deleted file mode 100644 index fb23aa7..0000000 --- a/public/dist/assets/Index-f4d16407.js +++ /dev/null @@ -1 +0,0 @@ -import{i as a}from"./main-3bb0017c.js";import{i as o}from"./ipcRenderer-5e19eaee.js";import{_ as n,r as s,o as i,b as e,g as t,a as d,w as l,e as r,p as c,f as p}from"./index-f283ba7d.js";const u={data:()=>({}),methods:{loginWindow(){this.$router.push({name:"SpecialLoginWindow",params:{}}),o.invoke(a.loginWindow,{width:400,height:300}).then((a=>{}))}}},f={id:"effect-login-index"},m=(a=>(c("data-v-3b73b158"),a=a(),p(),a))((()=>t("div",{class:"one-block-1"},[t("span",null," 1. 登录 ")],-1))),b={class:"one-block-2"};const g=n(u,[["render",function(a,o,n,c,p,u){const g=s("a-button"),h=s("a-space");return i(),e("div",f,[m,t("div",b,[d(h,null,{default:l((()=>[d(g,{onClick:o[0]||(o[0]=a=>u.loginWindow())},{default:l((()=>[r("切换为登录窗口")])),_:1})])),_:1})])])}],["__scopeId","data-v-3b73b158"]]);export{g as default}; diff --git a/public/dist/assets/Index-f5517914.js b/public/dist/assets/Index-f5517914.js deleted file mode 100644 index 7a49eb9..0000000 --- a/public/dist/assets/Index-f5517914.js +++ /dev/null @@ -1 +0,0 @@ -import{i as n}from"./main-3bb0017c.js";import{i as e}from"./ipcRenderer-5e19eaee.js";import{_ as a,r as o,o as i,b as t,g as c,a as p,w as s,e as m,p as y,f as l}from"./index-f283ba7d.js";const d=[{name:"对话框",type:"icon-duihuakuang"},{name:"闹钟",type:"icon-naozhong"},{name:"笑脸",type:"icon-xiaolian"},{name:"ok",type:"icon-ok"},{name:"风车",type:"icon-fengche"},{name:"汗颜",type:"icon-hanyan"},{name:"相机",type:"icon-xiangji"},{name:"礼物",type:"icon-liwu"},{name:"礼花",type:"icon-lihua"},{name:"扭蛋",type:"icon-niudan"},{name:"流星",type:"icon-liuxing"},{name:"风筝",type:"icon-fengzheng"},{name:"蛋糕",type:"icon-dangao"},{name:"泡泡",type:"icon-paopao"},{name:"购物",type:"icon-gouwu"},{name:"饮料",type:"icon-yinliao"},{name:"云彩",type:"icon-yuncai"},{name:"彩铅",type:"icon-caiqian"},{name:"纸飞机",type:"icon-zhifeiji"},{name:"点赞",type:"icon-dianzan"},{name:"煎蛋",type:"icon-jiandan"},{name:"小熊",type:"icon-xiaoxiong"},{name:"花",type:"icon-hua"},{name:"眼睛",type:"icon-yanjing"}],u={data:()=>({type:1,iconData:d}),methods:{exec(a){console.log("process:",process);const o={id:a};e.invoke(n.test,o).then((n=>{console.log("res:",n)}))},exec2(n){}}},r={id:"app-base-test-api"},g=(n=>(y("data-v-e3ea38b6"),n=n(),l(),n))((()=>c("div",{class:"one-block-1"},[c("span",null," 1. 测试一些操作系统api ")],-1))),f={class:"one-block-2"};const x=a(u,[["render",function(n,e,a,y,l,d){const u=o("a-button"),x=o("a-space");return i(),t("div",r,[g,c("div",f,[p(x,null,{default:s((()=>[p(u,{onClick:e[0]||(e[0]=n=>d.exec(1))},{default:s((()=>[m(" 点击 ")])),_:1}),p(u,{onClick:e[1]||(e[1]=n=>d.exec2(1))},{default:s((()=>[m(" 点击2 ")])),_:1})])),_:1})])])}],["__scopeId","data-v-e3ea38b6"]]);export{x as default}; diff --git a/public/dist/assets/Ipc-9b727d04.js.gz b/public/dist/assets/Ipc-9b727d04.js.gz new file mode 100644 index 0000000..55f21f7 Binary files /dev/null and b/public/dist/assets/Ipc-9b727d04.js.gz differ diff --git a/public/dist/assets/Ipc-d007eef7.js b/public/dist/assets/Ipc-d007eef7.js deleted file mode 100644 index 0784490..0000000 --- a/public/dist/assets/Ipc-d007eef7.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,s as n}from"./main-3bb0017c.js";import{i as s}from"./ipcRenderer-5e19eaee.js";import{_ as o,r as a,o as l,b as i,g as d,a as t,w as c,e as g,t as u,p as r,f as k}from"./index-f283ba7d.js";const m={data:()=>({messageString:"",message1:"",message2:"",message3:"",mainWCid:0}),mounted(){this.init()},methods:{init(){s.removeAllListeners(e.ipcSendMsg),s.on(e.ipcSendMsg,((n,s)=>{console.log("[ipcRenderer] [socketMsgStart] result:",s),this.messageString=s,n.sender.send(e.hello,"electron-egg")})),s.removeAllListeners(n.window1ToWindow2),s.on(n.window1ToWindow2,((e,n)=>{this.$message.info(n)}))},sendMsgStart(){s.send(e.ipcSendMsg,{type:"start",content:"开始"})},sendMsgStop(){s.send(e.ipcSendMsg,{type:"end",content:""})},handleInvoke(){s.invoke(e.ipcInvokeMsg,"异步-回调").then((e=>{console.log("r:",e),this.message1=e}))},async handleInvoke2(){const n=await s.invoke(e.ipcInvokeMsg,"异步");console.log("msg:",n),this.message2=n},handleSendSync(){const n=s.sendSync(e.ipcSendSyncMsg,"同步");this.message3=n},sendTosubWindow(){s.invoke(e.getWCid,"main").then((e=>{this.mainWCid=e,s.sendTo(this.mainWCid,n.window2ToWindow1,"窗口2 通过 sendTo 给主窗口发送消息")}))}}},p=e=>(r("data-v-54ef5770"),e=e(),k(),e),v={id:"app-base-subwindow-ipc"},f=p((()=>d("div",{class:"one-block-1"},[d("span",null," 1. 发送异步消息 ")],-1))),S={class:"one-block-2"},h=p((()=>d("p",null,null,-1))),w=p((()=>d("div",{class:"one-block-1"},[d("span",null," 2. 同步消息(不推荐,阻塞执行) ")],-1))),C={class:"one-block-2"},b=p((()=>d("div",{class:"one-block-1"},[d("span",null," 3. 长消息: 服务端持续向前端页面发消息 ")],-1))),_={class:"one-block-2"},M=p((()=>d("div",{class:"one-block-1"},[d("span",null," 4. 多窗口通信:窗口之间互相通信 ")],-1))),W={class:"one-block-2"};const y=o(m,[["render",function(e,n,s,o,r,k){const m=a("a-button"),p=a("a-space");return l(),i("div",v,[f,d("div",S,[t(p,null,{default:c((()=>[t(m,{onClick:k.handleInvoke},{default:c((()=>[g("发送 - 回调")])),_:1},8,["onClick"]),g(" 结果:"+u(r.message1),1)])),_:1}),h,t(p,null,{default:c((()=>[t(m,{onClick:k.handleInvoke2},{default:c((()=>[g("发送 - async/await")])),_:1},8,["onClick"]),g(" 结果:"+u(r.message2),1)])),_:1})]),w,d("div",C,[t(p,null,{default:c((()=>[t(m,{onClick:k.handleSendSync},{default:c((()=>[g("同步消息")])),_:1},8,["onClick"]),g(" 结果:"+u(r.message3),1)])),_:1})]),b,d("div",_,[t(p,null,{default:c((()=>[t(m,{onClick:k.sendMsgStart},{default:c((()=>[g("开始")])),_:1},8,["onClick"]),t(m,{onClick:k.sendMsgStop},{default:c((()=>[g("结束")])),_:1},8,["onClick"]),g(" 结果:"+u(r.messageString),1)])),_:1})]),M,d("div",W,[t(p,null,{default:c((()=>[t(m,{onClick:n[0]||(n[0]=e=>k.sendTosubWindow())},{default:c((()=>[g("向主窗口发消息")])),_:1})])),_:1})])])}],["__scopeId","data-v-54ef5770"]]);export{y as default}; diff --git a/public/dist/assets/Ipc-dea63cd8.js b/public/dist/assets/Ipc-dea63cd8.js new file mode 100644 index 0000000..dfb0b9c --- /dev/null +++ b/public/dist/assets/Ipc-dea63cd8.js @@ -0,0 +1 @@ +import{i as e,s as n}from"./main-ce25b28f.js";import{i as s}from"./ipcRenderer-5e19eaee.js";import{_ as o,h as i,r as a,o as d,b as l,g as t,a as c,w,e as g,t as r,p,f as u}from"./index-c01cca1d.js";const k={data:()=>({messageString:"",message1:"",message2:"",message3:"",windowName:"window-ipc",newWcId:0,views:[{type:"vue",content:"#/special/subwindow",windowName:"window-ipc",windowTitle:"ipc window"}]}),mounted(){this.init()},methods:{init(){s.removeAllListeners(e.ipcSendMsg),s.on(e.ipcSendMsg,((n,s)=>{console.log("[ipcRenderer] [socketMsgStart] result:",s),this.messageString=s,n.sender.send(e.hello,"electron-egg")})),s.removeAllListeners(n.window2ToWindow1),s.on(n.window2ToWindow1,((e,n)=>{this.$message.info(n)}))},sendMsgStart(){s.send(e.ipcSendMsg,{type:"start",content:"开始"})},sendMsgStop(){s.send(e.ipcSendMsg,{type:"end",content:""})},handleInvoke(){s.invoke(e.ipcInvokeMsg,"异步-回调").then((e=>{console.log("r:",e),this.message1=e}))},async handleInvoke2(){const n=await s.invoke(e.ipcInvokeMsg,"异步");console.log("msg:",n),this.message2=n},handleSendSync(){const n=s.sendSync(e.ipcSendSyncMsg,"同步");this.message3=n},createWindow(n){s.invoke(e.createWindow,i(this.views[n])).then((e=>{console.log("[createWindow] id:",e)}))},async sendTosubWindow(){this.newWcId=await s.invoke(e.getWCid,this.windowName),s.sendTo(this.newWcId,n.window1ToWindow2,"窗口1通过 sendTo 给窗口2发送消息")}}},m=e=>(p("data-v-227d95f1"),e=e(),u(),e),v={id:"app-base-socket-ipc"},f=m((()=>t("div",{class:"one-block-1"},[t("span",null," 1. 发送异步消息 ")],-1))),h={class:"one-block-2"},S=m((()=>t("p",null,null,-1))),_=m((()=>t("div",{class:"one-block-1"},[t("span",null," 2. 同步消息(不推荐,阻塞执行) ")],-1))),b={class:"one-block-2"},C=m((()=>t("div",{class:"one-block-1"},[t("span",null," 3. 长消息: 服务端持续向前端页面发消息 ")],-1))),W={class:"one-block-2"},M=m((()=>t("div",{class:"one-block-1"},[t("span",null," 4. 多窗口通信:子窗口与主进程通信,子窗口互相通信 ")],-1))),y={class:"one-block-2"};const I=o(k,[["render",function(e,n,s,o,i,p){const u=a("a-button"),k=a("a-space");return d(),l("div",v,[f,t("div",h,[c(k,null,{default:w((()=>[c(u,{onClick:p.handleInvoke},{default:w((()=>[g("发送 - 回调")])),_:1},8,["onClick"]),g(" 结果:"+r(i.message1),1)])),_:1}),S,c(k,null,{default:w((()=>[c(u,{onClick:p.handleInvoke2},{default:w((()=>[g("发送 - async/await")])),_:1},8,["onClick"]),g(" 结果:"+r(i.message2),1)])),_:1})]),_,t("div",b,[c(k,null,{default:w((()=>[c(u,{onClick:p.handleSendSync},{default:w((()=>[g("同步消息")])),_:1},8,["onClick"]),g(" 结果:"+r(i.message3),1)])),_:1})]),C,t("div",W,[c(k,null,{default:w((()=>[c(u,{onClick:p.sendMsgStart},{default:w((()=>[g("开始")])),_:1},8,["onClick"]),c(u,{onClick:p.sendMsgStop},{default:w((()=>[g("结束")])),_:1},8,["onClick"]),g(" 结果:"+r(i.messageString),1)])),_:1})]),M,t("div",y,[c(k,null,{default:w((()=>[c(u,{onClick:n[0]||(n[0]=e=>p.createWindow(0))},{default:w((()=>[g("打开新窗口2")])),_:1}),c(u,{onClick:n[1]||(n[1]=e=>p.sendTosubWindow())},{default:w((()=>[g("向新窗口2发消息")])),_:1})])),_:1})])])}],["__scopeId","data-v-227d95f1"]]);export{I as default}; diff --git a/public/dist/assets/Ipc-dea63cd8.js.gz b/public/dist/assets/Ipc-dea63cd8.js.gz new file mode 100644 index 0000000..d5b399a Binary files /dev/null and b/public/dist/assets/Ipc-dea63cd8.js.gz differ diff --git a/public/dist/assets/Ipc-f792091f.js b/public/dist/assets/Ipc-f792091f.js deleted file mode 100644 index cf97135..0000000 --- a/public/dist/assets/Ipc-f792091f.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,s as n}from"./main-3bb0017c.js";import{i as s}from"./ipcRenderer-5e19eaee.js";import{_ as o,h as i,r as a,o as d,b as l,g as t,a as c,w,e as g,t as r,p as u,f as p}from"./index-f283ba7d.js";const k={data:()=>({messageString:"",message1:"",message2:"",message3:"",windowName:"window-ipc",newWcId:0,views:[{type:"vue",content:"#/special/subwindow",windowName:"window-ipc",windowTitle:"ipc window"}]}),mounted(){this.init()},methods:{init(){s.removeAllListeners(e.ipcSendMsg),s.on(e.ipcSendMsg,((n,s)=>{console.log("[ipcRenderer] [socketMsgStart] result:",s),this.messageString=s,n.sender.send(e.hello,"electron-egg")})),s.removeAllListeners(n.window2ToWindow1),s.on(n.window2ToWindow1,((e,n)=>{this.$message.info(n)}))},sendMsgStart(){s.send(e.ipcSendMsg,{type:"start",content:"开始"})},sendMsgStop(){s.send(e.ipcSendMsg,{type:"end",content:""})},handleInvoke(){s.invoke(e.ipcInvokeMsg,"异步-回调").then((e=>{console.log("r:",e),this.message1=e}))},async handleInvoke2(){const n=await s.invoke(e.ipcInvokeMsg,"异步");console.log("msg:",n),this.message2=n},handleSendSync(){const n=s.sendSync(e.ipcSendSyncMsg,"同步");this.message3=n},createWindow(n){s.invoke(e.createWindow,i(this.views[n])).then((e=>{console.log("[createWindow] id:",e)}))},async sendTosubWindow(){this.newWcId=await s.invoke(e.getWCid,this.windowName),s.sendTo(this.newWcId,n.window1ToWindow2,"窗口1通过 sendTo 给窗口2发送消息")}}},m=e=>(u("data-v-227d95f1"),e=e(),p(),e),v={id:"app-base-socket-ipc"},f=m((()=>t("div",{class:"one-block-1"},[t("span",null," 1. 发送异步消息 ")],-1))),h={class:"one-block-2"},S=m((()=>t("p",null,null,-1))),_=m((()=>t("div",{class:"one-block-1"},[t("span",null," 2. 同步消息(不推荐,阻塞执行) ")],-1))),b={class:"one-block-2"},C=m((()=>t("div",{class:"one-block-1"},[t("span",null," 3. 长消息: 服务端持续向前端页面发消息 ")],-1))),W={class:"one-block-2"},M=m((()=>t("div",{class:"one-block-1"},[t("span",null," 4. 多窗口通信:子窗口与主进程通信,子窗口互相通信 ")],-1))),y={class:"one-block-2"};const I=o(k,[["render",function(e,n,s,o,i,u){const p=a("a-button"),k=a("a-space");return d(),l("div",v,[f,t("div",h,[c(k,null,{default:w((()=>[c(p,{onClick:u.handleInvoke},{default:w((()=>[g("发送 - 回调")])),_:1},8,["onClick"]),g(" 结果:"+r(i.message1),1)])),_:1}),S,c(k,null,{default:w((()=>[c(p,{onClick:u.handleInvoke2},{default:w((()=>[g("发送 - async/await")])),_:1},8,["onClick"]),g(" 结果:"+r(i.message2),1)])),_:1})]),_,t("div",b,[c(k,null,{default:w((()=>[c(p,{onClick:u.handleSendSync},{default:w((()=>[g("同步消息")])),_:1},8,["onClick"]),g(" 结果:"+r(i.message3),1)])),_:1})]),C,t("div",W,[c(k,null,{default:w((()=>[c(p,{onClick:u.sendMsgStart},{default:w((()=>[g("开始")])),_:1},8,["onClick"]),c(p,{onClick:u.sendMsgStop},{default:w((()=>[g("结束")])),_:1},8,["onClick"]),g(" 结果:"+r(i.messageString),1)])),_:1})]),M,t("div",y,[c(k,null,{default:w((()=>[c(p,{onClick:n[0]||(n[0]=e=>u.createWindow(0))},{default:w((()=>[g("打开新窗口2")])),_:1}),c(p,{onClick:n[1]||(n[1]=e=>u.sendTosubWindow())},{default:w((()=>[g("向新窗口2发消息")])),_:1})])),_:1})])])}],["__scopeId","data-v-227d95f1"]]);export{I as default}; diff --git a/public/dist/assets/Menu-451835af.js b/public/dist/assets/Menu-451835af.js new file mode 100644 index 0000000..a19d1da --- /dev/null +++ b/public/dist/assets/Menu-451835af.js @@ -0,0 +1 @@ +import{_ as e,r as a,o as n,c as t,w as i,a as o,b as r,d as m,F as s,g as p,t as l}from"./index-c01cca1d.js";const u={framework:{menu_100:{icon:"profile",title:"通信",pageName:"FrameworkSocketIpc",params:{}},menu_101:{icon:"profile",title:"http服务",pageName:"FrameworkSocketHttpServer",params:{}},menu_102:{icon:"profile",title:"socket服务",pageName:"FrameworkSocketSocketServer",params:{}},menu_103:{icon:"profile",title:"json数据库",pageName:"FrameworkJsonDBIndex",params:{}},menu_104:{icon:"profile",title:"sqlite数据库",pageName:"FrameworkSqliteDBIndex",params:{}},menu_105:{icon:"profile",title:"任务",pageName:"FrameworkJobsIndex",params:{}},menu_106:{icon:"profile",title:"自动更新",pageName:"FrameworkUpdaterIndex",params:{}},menu_107:{icon:"profile",title:"软件调用",pageName:"FrameworkSoftwareIndex",params:{}},menu_109:{icon:"profile",title:"测试",pageName:"FrameworkTestApiIndex",params:{}}},os:{menu_100:{icon:"profile",title:"文件",pageName:"OsFileIndex",params:{}},menu_101:{icon:"profile",title:"视图",pageName:"OsWindowViewIndex",params:{}},menu_102:{icon:"profile",title:"窗口",pageName:"OsWindowIndex",params:{}},menu_103:{icon:"profile",title:"桌面通知",pageName:"OsNotificationIndex",params:{}},menu_104:{icon:"profile",title:"电源监控",pageName:"OsPowerMonitorIndex",params:{}},menu_105:{icon:"profile",title:"屏幕信息",pageName:"OsScreenIndex",params:{}},menu_106:{icon:"profile",title:"系统主题",pageName:"OsThemeIndex",params:{}},menu_110:{icon:"profile",title:"图片",pageName:"OsFilePic",params:{}}},hardware:{menu_100:{icon:"profile",title:"打印机",pageName:"HardwarePrinterIndex",params:{}}},effect:{menu_100:{icon:"profile",title:"视频播放器",pageName:"EffectVideoIndex",params:{}},menu_110:{icon:"profile",title:"登录",pageName:"EffectLoginIndex",params:{}}},cross:{menu_100:{icon:"profile",title:"go服务",pageName:"CrossGoIndex",params:{}},menu_110:{icon:"profile",title:"java服务",pageName:"CrossJavaIndex",params:{}},menu_120:{icon:"profile",title:"python服务",pageName:"CrossPythonIndex",params:{}}}};const c=e({props:{id:{type:String,default:""}},data:()=>({menu:{},current:"menu_100",keys:[]}),watch:{id:function(){console.log("watch id ----- ",this.id),this.current="menu_100",this.menuHandle()}},created(){},mounted(){this.menuHandle()},methods:{menuHandle(){console.log("menu ------ id:",this.id),this.menu=u[this.id];const e=this.menu[this.current];this.$router.push({name:e.pageName,params:e.params})},changeMenu(e){console.log("changeMenu e:",e),this.current=e.key}}},[["render",function(e,u,c,d,f,g){const _=a("router-link"),h=a("a-menu-item"),N=a("a-menu"),k=a("a-layout-sider"),w=a("router-view"),x=a("a-layout-content"),I=a("a-layout");return n(),t(I,{id:"app-menu"},{default:i((()=>[o(k,{theme:"light",class:"layout-sider"},{default:i((()=>[o(N,{theme:"light",mode:"inline",selectedKeys:[f.current],onClick:g.changeMenu},{default:i((()=>[(n(!0),r(s,null,m(f.menu,((e,a)=>(n(),t(h,{key:a},{default:i((()=>[o(_,{to:{name:e.pageName,params:e.params}},{default:i((()=>[p("span",null,l(e.title),1)])),_:2},1032,["to"])])),_:2},1024)))),128))])),_:1},8,["selectedKeys","onClick"])])),_:1}),o(I,null,{default:i((()=>[o(x,null,{default:i((()=>[o(w)])),_:1})])),_:1})])),_:1})}],["__scopeId","data-v-cb2fcd1f"]]);export{c as default}; diff --git a/public/dist/assets/Menu-451835af.js.gz b/public/dist/assets/Menu-451835af.js.gz new file mode 100644 index 0000000..d2b2e59 Binary files /dev/null and b/public/dist/assets/Menu-451835af.js.gz differ diff --git a/public/dist/assets/Pic-38ac96b3.js b/public/dist/assets/Pic-38ac96b3.js new file mode 100644 index 0000000..29f95f1 --- /dev/null +++ b/public/dist/assets/Pic-38ac96b3.js @@ -0,0 +1 @@ +import{i as s}from"./main-ce25b28f.js";import{i as a}from"./ipcRenderer-5e19eaee.js";import{_ as e,r as t,o as i,b as c,g as o,a as l,w as n,e as p,p as d,f as r}from"./index-c01cca1d.js";const f={data:()=>({picPath:"https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png"}),methods:{selectPic(){a.invoke(s.selectPic,{}).then((s=>{this.picPath=s}))}}},u=s=>(d("data-v-d083fee8"),s=s(),r(),s),m={id:"os-file-pic"},h=u((()=>o("div",{class:"one-block-1"},[o("span",null," 1. 加载本机图片 ")],-1))),v={class:"one-block-2"},P=u((()=>o("p",null,null,-1)));const j=e(f,[["render",function(s,a,e,d,r,f){const u=t("a-button"),j=t("a-space"),k=t("a-image");return i(),c("div",m,[h,o("div",v,[l(j,null,{default:n((()=>[l(u,{onClick:a[0]||(a[0]=s=>f.selectPic(0))},{default:n((()=>[p("选择图片")])),_:1})])),_:1}),P,l(k,{width:500,src:r.picPath},null,8,["src"])])])}],["__scopeId","data-v-d083fee8"]]);export{j as default}; diff --git a/public/dist/assets/SocketServer-14a819df.js.gz b/public/dist/assets/SocketServer-14a819df.js.gz new file mode 100644 index 0000000..76b8c4d Binary files /dev/null and b/public/dist/assets/SocketServer-14a819df.js.gz differ diff --git a/public/dist/assets/Window-73e498f2.js b/public/dist/assets/Window-73e498f2.js deleted file mode 100644 index 6eca499..0000000 --- a/public/dist/assets/Window-73e498f2.js +++ /dev/null @@ -1 +0,0 @@ -import{i as o}from"./main-3bb0017c.js";import{i as a}from"./ipcRenderer-5e19eaee.js";import{_ as e,r as i,o as t,b as s,g as n,a as r,w as d,t as l,e as m}from"./index-f283ba7d.js";const g={id:"effect-login-window"},p={class:"block-1"},c={key:1};const u=e({data:()=>({loading:!1,loginText:"正在登陆......"}),methods:{login(){this.loading=!0,setTimeout((()=>{this.$router.push({name:"Framework",params:{}}),a.invoke(o.restoreWindow,{width:980,height:650}).then((o=>{}))}),2e3)}}},[["render",function(o,a,e,u,f,h){const k=i("a-button");return t(),s("div",g,[n("div",p,[f.loading?(t(),s("span",c,l(f.loginText),1)):(t(),s("a",{key:0,onClick:a[0]||(a[0]=(...o)=>h.login&&h.login(...o))},[r(k,{type:"primary"},{default:d((()=>[m(" 登录 ")])),_:1})]))])])}],["__scopeId","data-v-be47062b"]]);export{u as default}; diff --git a/public/dist/assets/Window-9bd34d76.js b/public/dist/assets/Window-9bd34d76.js new file mode 100644 index 0000000..090b924 --- /dev/null +++ b/public/dist/assets/Window-9bd34d76.js @@ -0,0 +1 @@ +import{i as o}from"./main-ce25b28f.js";import{i as a}from"./ipcRenderer-5e19eaee.js";import{_ as e,r as i,o as t,b as s,g as n,a as r,w as d,t as l,e as m}from"./index-c01cca1d.js";const g={id:"effect-login-window"},p={class:"block-1"},c={key:1};const f=e({data:()=>({loading:!1,loginText:"正在登陆......"}),methods:{login(){this.loading=!0,setTimeout((()=>{this.$router.push({name:"Framework",params:{}}),a.invoke(o.restoreWindow,{width:980,height:650}).then((o=>{}))}),2e3)}}},[["render",function(o,a,e,f,h,u){const w=i("a-button");return t(),s("div",g,[n("div",p,[h.loading?(t(),s("span",c,l(h.loginText),1)):(t(),s("a",{key:0,onClick:a[0]||(a[0]=(...o)=>u.login&&u.login(...o))},[r(w,{type:"primary"},{default:d((()=>[m(" 登录 ")])),_:1})]))])])}],["__scopeId","data-v-be47062b"]]);export{f as default}; diff --git a/public/dist/assets/index-0d31d5fa.js b/public/dist/assets/index-0d31d5fa.js deleted file mode 100644 index ef52689..0000000 --- a/public/dist/assets/index-0d31d5fa.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./index-f283ba7d.js";var t={exports:{}},r=function(e,t){return function(){for(var r=new Array(arguments.length),n=0;n=0)return;a[n]="set-cookie"===n?(a[n]?a[n]:[]).concat([o]):a[n]?a[n]+", "+o:o}})),a):a}}(),a=function(){if(P)return T;P=1;var e=l;return T=e.isStandardBrowserEnv()?function(){var t,r=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(e){var t=e;return r&&(n.setAttribute("href",t),t=n.href),n.setAttribute("href",t),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=o(window.location.href),function(r){var n=e.isString(r)?o(r):r;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0}}(),s=F();return U=function(u){return new Promise((function(c,f){var l=u.data,p=u.headers,d=u.responseType;e.isFormData(l)&&delete p["Content-Type"];var h=new XMLHttpRequest;if(u.auth){var m=u.auth.username||"",g=u.auth.password?unescape(encodeURIComponent(u.auth.password)):"";p.Authorization="Basic "+btoa(m+":"+g)}var v=o(u.baseURL,u.url);function y(){if(h){var e="getAllResponseHeaders"in h?i(h.getAllResponseHeaders()):null,r={data:d&&"text"!==d&&"json"!==d?h.response:h.responseText,status:h.status,statusText:h.statusText,headers:e,config:u,request:h};t(c,f,r),h=null}}if(h.open(u.method.toUpperCase(),n(v,u.params,u.paramsSerializer),!0),h.timeout=u.timeout,"onloadend"in h?h.onloadend=y:h.onreadystatechange=function(){h&&4===h.readyState&&(0!==h.status||h.responseURL&&0===h.responseURL.indexOf("file:"))&&setTimeout(y)},h.onabort=function(){h&&(f(s("Request aborted",u,"ECONNABORTED",h)),h=null)},h.onerror=function(){f(s("Network Error",u,null,h)),h=null},h.ontimeout=function(){var e="timeout of "+u.timeout+"ms exceeded";u.timeoutErrorMessage&&(e=u.timeoutErrorMessage),f(s(e,u,u.transitional&&u.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",h)),h=null},e.isStandardBrowserEnv()){var b=(u.withCredentials||a(v))&&u.xsrfCookieName?r.read(u.xsrfCookieName):void 0;b&&(p[u.xsrfHeaderName]=b)}"setRequestHeader"in h&&e.forEach(p,(function(e,t){void 0===l&&"content-type"===t.toLowerCase()?delete p[t]:h.setRequestHeader(t,e)})),e.isUndefined(u.withCredentials)||(h.withCredentials=!!u.withCredentials),d&&"json"!==d&&(h.responseType=u.responseType),"function"==typeof u.onDownloadProgress&&h.addEventListener("progress",u.onDownloadProgress),"function"==typeof u.onUploadProgress&&h.upload&&h.upload.addEventListener("progress",u.onUploadProgress),u.cancelToken&&u.cancelToken.promise.then((function(e){h&&(h.abort(),f(e),h=null)})),l||(l=null),h.send(l)}))}}var H=l,M=function(e,t){q.forEach(e,(function(r,n){n!==t&&n.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[n])}))},z=D,I={"Content-Type":"application/x-www-form-urlencoded"};function V(e,t){!H.isUndefined(e)&&H.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var X,W={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(X=_()),X),transformRequest:[function(e,t){return M(t,"Accept"),M(t,"Content-Type"),H.isFormData(e)||H.isArrayBuffer(e)||H.isBuffer(e)||H.isStream(e)||H.isFile(e)||H.isBlob(e)?e:H.isArrayBufferView(e)?e.buffer:H.isURLSearchParams(e)?(V(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):H.isObject(e)||t&&"application/json"===t["Content-Type"]?(V(t,"application/json"),function(e,t,r){if(H.isString(e))try{return(t||JSON.parse)(e),H.trim(e)}catch(n){if("SyntaxError"!==n.name)throw n}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,r=t&&t.silentJSONParsing,n=t&&t.forcedJSONParsing,o=!r&&"json"===this.responseType;if(o||n&&H.isString(e)&&e.length)try{return JSON.parse(e)}catch(i){if(o){if("SyntaxError"===i.name)throw z(i,this,"E_JSON_PARSE");throw i}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};W.headers={common:{Accept:"application/json, text/plain, */*"}},H.forEach(["delete","get","head"],(function(e){W.headers[e]={}})),H.forEach(["post","put","patch"],(function(e){W.headers[e]=H.merge(I)}));var $,G,K=W,Z=l,Q=K;function Y(){return G?$:(G=1,$=function(e){return!(!e||!e.__CANCEL__)})}var ee=l,te=function(e,t,r){var n=this||Q;return Z.forEach(r,(function(r){e=r.call(n,e,t)})),e},re=Y(),ne=K;function oe(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var ie=l,ae=function(e,t){t=t||{};var r={},n=["url","method","data"],o=["headers","auth","proxy","params"],i=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],a=["validateStatus"];function s(e,t){return ie.isPlainObject(e)&&ie.isPlainObject(t)?ie.merge(e,t):ie.isPlainObject(t)?ie.merge({},t):ie.isArray(t)?t.slice():t}function u(n){ie.isUndefined(t[n])?ie.isUndefined(e[n])||(r[n]=s(void 0,e[n])):r[n]=s(e[n],t[n])}ie.forEach(n,(function(e){ie.isUndefined(t[e])||(r[e]=s(void 0,t[e]))})),ie.forEach(o,u),ie.forEach(i,(function(n){ie.isUndefined(t[n])?ie.isUndefined(e[n])||(r[n]=s(void 0,e[n])):r[n]=s(void 0,t[n])})),ie.forEach(a,(function(n){n in t?r[n]=s(e[n],t[n]):n in e&&(r[n]=s(void 0,e[n]))}));var c=n.concat(o).concat(i).concat(a),f=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===c.indexOf(e)}));return ie.forEach(f,u),r};var se={name:"axios",version:"0.21.4",description:"Promise based HTTP client for the browser and node.js",main:"index.js",scripts:{test:"grunt test",start:"node ./sandbox/server.js",build:"NODE_ENV=production grunt build",preversion:"npm test",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json",postversion:"git push && git push --tags",examples:"node ./examples/server.js",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",fix:"eslint --fix lib/**/*.js"},repository:{type:"git",url:"https://github.com/axios/axios.git"},keywords:["xhr","http","ajax","promise","node"],author:"Matt Zabriskie",license:"MIT",bugs:{url:"https://github.com/axios/axios/issues"},homepage:"https://axios-http.com",devDependencies:{coveralls:"^3.0.0","es6-promise":"^4.2.4",grunt:"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0",mocha:"^8.2.1",sinon:"^4.5.0","terser-webpack-plugin":"^4.2.3",typescript:"^4.0.5","url-search-params":"^0.10.0",webpack:"^4.44.2","webpack-dev-server":"^3.11.0"},browser:{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},jsdelivr:"dist/axios.min.js",unpkg:"dist/axios.min.js",typings:"./index.d.ts",dependencies:{"follow-redirects":"^1.14.0"},bundlesize:[{path:"./dist/axios.min.js",threshold:"5kB"}]},ue={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){ue[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var ce={},fe=se.version.split(".");function le(e,t){for(var r=t?t.split("."):fe,n=e.split("."),o=0;o<3;o++){if(r[o]>n[o])return!0;if(r[o]0;){var i=n[o],a=t[i];if(a){var s=e[i],u=void 0===s||a(s,i,e);if(!0!==u)throw new TypeError("option "+i+" must be "+u)}else if(!0!==r)throw Error("Unknown option "+i)}},validators:ue},ke=Oe.validators;function Ne(e){this.defaults=e,this.interceptors={request:new je,response:new je}}function Ce(){if(de)return pe;function e(e){this.message=e}return de=1,e.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},e.prototype.__CANCEL__=!0,pe=e}Ne.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=Se(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&Oe.assertOptions(t,{silentJSONParsing:ke.transitional(ke.boolean,"1.0.0"),forcedJSONParsing:ke.transitional(ke.boolean,"1.0.0"),clarifyTimeoutError:ke.transitional(ke.boolean,"1.0.0")},!1);var r=[],n=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(n=n&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var o,i=[];if(this.interceptors.response.forEach((function(e){i.push(e.fulfilled,e.rejected)})),!n){var a=[Ee,void 0];for(Array.prototype.unshift.apply(a,r),a=a.concat(i),o=Promise.resolve(e);a.length;)o=o.then(a.shift(),a.shift());return o}for(var s=e;r.length;){var u=r.shift(),c=r.shift();try{s=u(s)}catch(f){c(f);break}}try{o=Ee(s)}catch(f){return Promise.reject(f)}for(;i.length;)o=o.then(i.shift(),i.shift());return o},Ne.prototype.getUri=function(e){return e=Se(this.defaults,e),xe(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},we.forEach(["delete","get","head","options"],(function(e){Ne.prototype[e]=function(t,r){return this.request(Se(r||{},{method:e,url:t,data:(r||{}).data}))}})),we.forEach(["post","put","patch"],(function(e){Ne.prototype[e]=function(t,r,n){return this.request(Se(n||{},{method:e,url:t,data:r}))}}));var Ae=l,Re=r,Te=Ne,Pe=ae;function Ue(e){var t=new Te(e),r=Re(Te.prototype.request,t);return Ae.extend(r,Te.prototype,t),Ae.extend(r,t),r}var Be=Ue(K);Be.Axios=Te,Be.create=function(e){return Ue(Pe(Be.defaults,e))},Be.Cancel=Ce(),Be.CancelToken=function(){if(me)return he;me=1;var e=Ce();function t(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var r;this.promise=new Promise((function(e){r=e}));var n=this;t((function(t){n.reason||(n.reason=new e(t),r(n.reason))}))}return t.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},t.source=function(){var e;return{token:new t((function(t){e=t})),cancel:e}},he=t}(),Be.isCancel=Y(),Be.all=function(e){return Promise.all(e)},Be.spread=ve?ge:(ve=1,ge=function(e){return function(t){return e.apply(null,t)}}),Be.isAxiosError=be?ye:(be=1,ye=function(e){return"object"==typeof e&&!0===e.isAxiosError}),t.exports=Be,t.exports.default=Be;const Le=e(t.exports);export{Le as a}; diff --git a/public/dist/assets/index-3bb9c4c1.js.gz b/public/dist/assets/index-3bb9c4c1.js.gz new file mode 100644 index 0000000..ed6be44 Binary files /dev/null and b/public/dist/assets/index-3bb9c4c1.js.gz differ diff --git a/public/dist/assets/store2-127baa44.js.gz b/public/dist/assets/store2-127baa44.js.gz new file mode 100644 index 0000000..7190889 Binary files /dev/null and b/public/dist/assets/store2-127baa44.js.gz differ diff --git a/public/dist/assets/store2-c97601fe.js b/public/dist/assets/store2-c97601fe.js deleted file mode 100644 index 8442873..0000000 --- a/public/dist/assets/store2-c97601fe.js +++ /dev/null @@ -1,3 +0,0 @@ -import{i as t,j as e}from"./index-f283ba7d.js";var r,n,i,s,a,o={exports:{}}; -/*! store2 - v2.14.2 - 2022-07-18 -* Copyright (c) 2022 Nathan Bubna; Licensed (MIT OR GPL-3.0) */r=o,n=t,i=t&&t.define,(a=(s={version:"2.14.2",areas:{},apis:{},nsdelim:".",inherit:function(t,e){for(var r in t)e.hasOwnProperty(r)||Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));return e},stringify:function(t,e){return void 0===t||"function"==typeof t?t+"":JSON.stringify(t,e||s.replace)},parse:function(t,e){try{return JSON.parse(t,e||s.revive)}catch(r){return t}},fn:function(t,e){for(var r in s.storeAPI[t]=e,s.apis)s.apis[r][t]=e},get:function(t,e){return t.getItem(e)},set:function(t,e,r){t.setItem(e,r)},remove:function(t,e){t.removeItem(e)},key:function(t,e){return t.key(e)},length:function(t){return t.length},clear:function(t){t.clear()},Store:function(t,e,r){var n=s.inherit(s.storeAPI,(function(t,e,r){return 0===arguments.length?n.getAll():"function"==typeof e?n.transact(t,e,r):void 0!==e?n.set(t,e,r):"string"==typeof t||"number"==typeof t?n.get(t):"function"==typeof t?n.each(t):t?n.setAll(t,e):n.clear()}));n._id=t;try{var i="__store2_test";e.setItem(i,"ok"),n._area=e,e.removeItem(i)}catch(a){n._area=s.storage("fake")}return n._ns=r||"",s.areas[t]||(s.areas[t]=n._area),s.apis[n._ns+n._id]||(s.apis[n._ns+n._id]=n),n},storeAPI:{area:function(t,e){var r=this[t];return r&&r.area||(r=s.Store(t,e,this._ns),this[t]||(this[t]=r)),r},namespace:function(t,e,r){if(r=r||this._delim||s.nsdelim,!t)return this._ns?this._ns.substring(0,this._ns.length-r.length):"";var n=t,i=this[n];if(!(i&&i.namespace||((i=s.Store(this._id,this._area,this._ns+n+r))._delim=r,this[n]||(this[n]=i),e)))for(var a in s.areas)i.area(a,s.areas[a]);return i},isFake:function(t){return t?(this._real=this._area,this._area=s.storage("fake")):!1===t&&(this._area=this._real||this._area),"fake"===this._area.name},toString:function(){return"store"+(this._ns?"."+this.namespace():"")+"["+this._id+"]"},has:function(t){return this._area.has?this._area.has(this._in(t)):!!(this._in(t)in this._area)},size:function(){return this.keys().length},each:function(t,e){for(var r=0,n=s.length(this._area);rs.length(this._area)&&(n--,r--)}return e||this},keys:function(t){return this.each((function(t,e,r){r.push(t)}),t||[])},get:function(t,e){var r,n=s.get(this._area,this._in(t));return"function"==typeof e&&(r=e,e=null),null!==n?s.parse(n,r):null!=e?e:n},getAll:function(t){return this.each((function(t,e,r){r[t]=e}),t||{})},transact:function(t,e,r){var n=this.get(t,r),i=e(n);return this.set(t,void 0===i?n:i),this},set:function(t,e,r){var n,i=this.get(t);return null!=i&&!1===r?e:("function"==typeof r&&(n=r,r=void 0),s.set(this._area,this._in(t),s.stringify(e,n),r)||i)},setAll:function(t,e){var r,n;for(var i in t)n=t[i],this.set(i,n,e)!==n&&(r=!0);return r},add:function(t,e,r){var n=this.get(t);if(n instanceof Array)e=n.concat(e);else if(null!==n){var i=typeof n;if(i===typeof e&&"object"===i){for(var a in e)n[a]=e[a];e=n}else e=n+e}return s.set(this._area,this._in(t),s.stringify(e,r)),e},remove:function(t,e){var r=this.get(t,e);return s.remove(this._area,this._in(t)),r},clear:function(){return this._ns?this.each((function(t){s.remove(this._area,this._in(t))}),1):s.clear(this._area),this},clearAll:function(){var t=this._area;for(var e in s.areas)s.areas.hasOwnProperty(e)&&(this._area=s.areas[e],this.clear());return this._area=t,this},_in:function(t){return"string"!=typeof t&&(t=s.stringify(t)),this._ns?this._ns+t:t},_out:function(t){return this._ns?t&&0===t.indexOf(this._ns)?t.substring(this._ns.length):void 0:t}},storage:function(t){return s.inherit(s.storageAPI,{items:{},name:t})},storageAPI:{length:0,has:function(t){return this.items.hasOwnProperty(t)},key:function(t){var e=0;for(var r in this.items)if(this.has(r)&&t===e++)return r},setItem:function(t,e){this.has(t)||this.length++,this.items[t]=e},removeItem:function(t){this.has(t)&&(delete this.items[t],this.length--)},getItem:function(t){return this.has(t)?this.items[t]:null},clear:function(){for(var t in this.items)this.removeItem(t)}}}).Store("local",function(){try{return localStorage}catch(t){}}())).local=a,a._=s,a.area("session",function(){try{return sessionStorage}catch(t){}}()),a.area("page",s.storage("page")),"function"==typeof i&&void 0!==i.amd?i("store2",[],(function(){return a})):r.exports?r.exports=a:(n.store&&(s.conflict=n.store),n.store=a);const h=e(o.exports);export{h as s}; diff --git a/public/dist/index.html b/public/dist/index.html deleted file mode 100644 index e31e478..0000000 --- a/public/dist/index.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - diff --git a/public/dist/index.html.gz b/public/dist/index.html.gz deleted file mode 100644 index 7e49fb0..0000000 Binary files a/public/dist/index.html.gz and /dev/null differ diff --git a/python/fastapi-demo.py b/python/fastapi-demo.py new file mode 100644 index 0000000..586df9e --- /dev/null +++ b/python/fastapi-demo.py @@ -0,0 +1,28 @@ +import argparse +import uvicorn +from fastapi import FastAPI + +app = FastAPI() + +# argparse +parser = argparse.ArgumentParser(description='Process some integers.') +parser.add_argument('--port', type=int, default=7074, help='The port number.') +args = parser.parse_args() + +@app.get("/") +async def index(): + return {"message": "Hello World"} + +@app.get("/api/hello") +async def hello(): + return { + "app_name": "FastAPI框架学习", + "app_version": "v0.0.1" + } + +if __name__ == "__main__": + # uvicorn会多创建一个进程,并且stdio独立于控制台,如果(开发时)出现进程没有关闭,可尝试关闭终端 + uvicorn.run(app, host="127.0.0.1", port=args.port) + +# 控制台默认关闭输出信息,如果想要查看控制台输出,请单独启动服务 npm run dev-python +print("python server is running at port:", args.port) \ No newline at end of file diff --git a/python/main.py b/python/main.py new file mode 100644 index 0000000..14e1e84 --- /dev/null +++ b/python/main.py @@ -0,0 +1,57 @@ +from flask import Flask, request, jsonify +from flask_cors import CORS +import argparse +import signal +import sys + +# flask-demo + +# argparse +parser = argparse.ArgumentParser(description='Process some integers.') +parser.add_argument('--port', type=int, default=7074, help='The port number.') +args = parser.parse_args() + +app = Flask(__name__) + +# 配置 CORS,允许所有来源 +CORS(app) + +# 定义路由和处理器 +@app.route('/', methods=['GET']) +def index(): + name = request.args.get('name', 'World') + return jsonify({'message': f'Hello, {name}!'}), 200 + + +@app.route('/api/hello', methods=['GET']) +def hello(): + name = request.args.get('name', 'World') + return jsonify({'message': f'Hello, {name}!'}), 200 + +# 通过信号来退出服务,否则会出现终端显示退出后,实际进程仍在运行 +# 定义信号处理函数 +def signal_handler(sig, frame): + print("[python] [flask] Received signal to terminate the server:", sig) + sys.exit(0) + + # 关闭 Flask 应用 + # func = request.environ.get('werkzeug.server.shutdown') + # if func is None: + # func = lambda: None + # func() + + # 退出主线程 + # threading.main_thread().exit() + +# 注册信号处理函数 +signal.signal(signal.SIGTERM, signal_handler) +signal.signal(signal.SIGINT, signal_handler) + +if __name__ == '__main__': + # 以api方式启动服务会出现警告,请忽略 + app.run(port=args.port) + +# 或许flask内置的stdio与node.js stdio有冲突,导致控制台无法显示信息。 +# 如果想要查看控制台输出,请单独启动服务 npm run dev-python +print("python server is running at port:", args.port) + diff --git a/python/requirements.txt b/python/requirements.txt new file mode 100644 index 0000000..4c606c6 --- /dev/null +++ b/python/requirements.txt @@ -0,0 +1,2 @@ +Flask==3.0.2 +Flask_Cors==4.0.0 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b5765c4 Binary files /dev/null and b/requirements.txt differ