From d2a2510e09a0151fcc6de6c991cfaba5b90837da Mon Sep 17 00:00:00 2001 From: zdg Date: Thu, 25 Jul 2024 13:24:31 +0800 Subject: [PATCH] =?UTF-8?q?electron=20=E4=BB=A3=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron.vite.config.mjs | 2 + jsconfig.json | 3 +- package.json | 1 + src/main/index.js | 16 ++- src/main/tool.js | 56 +++++++-- src/preload/index.js | 7 +- src/renderer/src/assets/iconfont/iconfont.css | 56 ++++++++- src/renderer/src/assets/iconfont/iconfont.js | 2 +- .../src/assets/iconfont/iconfont.json | 84 ++++++++++++++ src/renderer/src/assets/iconfont/iconfont.svg | 24 ++++ src/renderer/src/assets/iconfont/iconfont.ttf | Bin 14828 -> 17172 bytes .../src/assets/iconfont/iconfont.woff | Bin 7048 -> 8400 bytes .../src/assets/iconfont/iconfont.woff2 | Bin 5916 -> 7052 bytes .../src/plugins/fabric/event/clickEvent.js | 2 - src/renderer/src/store/modules/draw.js | 2 +- src/renderer/src/utils/tool.js | 40 +++++-- src/renderer/src/views/resource/index.vue | 15 +-- src/renderer/src/views/tool/sphere.vue | 107 +++++++++++++++--- src/renderer/src/views/tool/test.vue | 31 +++++ 19 files changed, 385 insertions(+), 63 deletions(-) create mode 100644 src/renderer/src/views/tool/test.vue diff --git a/electron.vite.config.mjs b/electron.vite.config.mjs index fcc5633..3436c6a 100644 --- a/electron.vite.config.mjs +++ b/electron.vite.config.mjs @@ -17,6 +17,8 @@ export default defineConfig({ // '@': resolve('./src/renderer/src'), // '@': path.resolve(__dirname, 'src/renderer/src'), '@': path.join(__dirname, './src/renderer/src'), + '@root': path.join(__dirname, '.'), + } }, server: { diff --git a/jsconfig.json b/jsconfig.json index 63f8c59..f611e59 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -4,7 +4,8 @@ "paths": { "@/*":[ "src/renderer/src/*" - ] + ], + "@root/*":["./*"] } }, "exclude": [ diff --git a/package.json b/package.json index 62c23fe..4f1678f 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ }, "devDependencies": { "@electron-toolkit/eslint-config": "^1.0.2", + "@electron/remote": "^2.1.2", "@rushstack/eslint-patch": "^1.10.3", "@vitejs/plugin-vue": "^5.0.5", "@vue/eslint-config-prettier": "^9.0.0", diff --git a/src/main/index.js b/src/main/index.js index 73d3f5d..f50e06d 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -3,7 +3,10 @@ import { join } from 'path' import { electronApp, optimizer, is } from '@electron-toolkit/utils' import icon from '../../resources/icon.png?asset' import File from './file' -import Tool from './tool' +import * as Tool from './tool' +// 代理 electron/remote +import remote from '@electron/remote/main' // 第一步:引入remote +remote.initialize() // 第二步: 初始化remote File({ app, shell, BrowserWindow, ipcMain }) @@ -50,7 +53,10 @@ function createMainWindow() { webPreferences: { preload: join(__dirname, '../preload/index.js'), sandbox: false, - nodeIntegration: true + // nodeIntegration: true, + nodeIntegration: true, // nodeApi调用 + contextIsolation: false, // 沙箱取消 + // webSecurity: false // 跨域关闭 } }) @@ -68,6 +74,8 @@ function createMainWindow() { } else { mainWindow.loadFile(join(__dirname, '../renderer/index.html')) } + // 第三步: 开启remote服务 + remote.enable(mainWindow.webContents) } // 作业窗口相关-开发中 @@ -152,9 +160,9 @@ app.on('ready', () => { if (!mainWindow) { createMainWindow() } - loginWindow.destroy() loginWindow = null + Tool.setWin({mainWindow}) // 将主窗口传递到工具类中 }) // 打开登录窗口 ipcMain.on('openLoginWindow', () => { @@ -171,7 +179,7 @@ app.on('ready', () => { createWork(data) }) // zdg: 创建工具窗口-如 悬浮球 - Tool() + Tool.init() // 打开-登录窗口 createLoginWindow() app.on('activate', function () { diff --git a/src/main/tool.js b/src/main/tool.js index f2f4312..27bea98 100644 --- a/src/main/tool.js +++ b/src/main/tool.js @@ -1,18 +1,23 @@ /** * @description: electron 封装的工具函数 + * 消息整理 + * tool-sphere:create 创建-悬浮球-窗口 */ import { app, shell, BrowserWindow, ipcMain } from 'electron' import { is } from '@electron-toolkit/utils' // const baseUrl = 'http://localhost:5173/#' // 开发环境使用 const baseUrl = process.env['ELECTRON_RENDERER_URL']+'/#' // 开发环境使用 - -export default function() { +// 所有窗口 +let allWindow = {} +// 其他已有窗口 wins +export function init() { // 创建工具-悬浮球 - ipcMain.on('create-tool-sphere', async(e, data) => { - console.log('测试xxxx', data) + ipcMain.on('tool-sphere:create', async(e, data) => { + console.log('xxx', allWindow) + // console.log('测试xxxx', data) await createTools(data) // 执行逻辑 - e.reply('create-tool-sphere-reply', {code: 200, msg: 'success'}) // 返回结果 + e.reply('tool-sphere:create-reply', {code: 200, msg: 'success'}) // 返回结果 }) } /** @@ -24,18 +29,22 @@ export default function() { * @author: zdg * @date 2021-07-05 14:07:01 */ -function createTools({url, width = 800, height = 600, option={}}) { + export function createTools({url, width = 800, height = 600, option={}}) { + const { mainWindow } = allWindow||{} // 获取主窗口 const devUrl = `${baseUrl}${url}` const buildUrl = `file://${__dirname}/index.html${url}` const urlAll = is.dev ? devUrl : buildUrl return new Promise((resolve) => { let win = new BrowserWindow({ width, height, - type: 'toolbar', //创建的窗口类型为工具栏窗口 - frame: false, //要创建无边框窗口 - resizable: false, //禁止窗口大小缩放 - transparent: true, //设置透明 - alwaysOnTop: true, //窗口是否总是显示在其他窗口之前 + type: 'toolbar', // 创建的窗口类型为工具栏窗口 + frame: false, // 要创建无边框窗口 + resizable: false, // 禁止窗口大小缩放 + transparent: true, // 设置透明 + alwaysOnTop: true, // 窗口是否总是显示在其他窗口之前 + + parent: mainWindow, // 父窗口 + autoClose: true, // 关闭窗口后自动关闭 webPreferences: { nodeIntegration: true, // nodeApi调用 contextIsolation: false, // 沙箱取消 @@ -47,6 +56,8 @@ function createTools({url, width = 800, height = 600, option={}}) { // url = 'https://www.baidu.com' console.log(urlAll) win.loadURL(urlAll) + // win.setFullScreen(true) // 设置窗口为全屏 + win.setIgnoreMouseEvents(true) // 忽略鼠标事件|使窗口不可选中 win.once('ready-to-show', () => { win.show() resolve(win) @@ -55,4 +66,25 @@ function createTools({url, width = 800, height = 600, option={}}) { win = null }) }) -} \ No newline at end of file +} +// 保存窗口 +export function setWin(win = {}) { + if (win && Object.keys(win).length){ + Object.keys(win).forEach(key => { + if (!allWindow[key]) { // 不存在就保存 + allWindow[key] = win[key] + } + }) + } +} + +// 工具窗口-特殊区域恢复鼠标 +function toolMouse(toolWin) { + ipcMain.on('tool-mouse', (e, data) => { + const { id } = data + const win = allWindow[id] + if (win) { + win.setIgnoreMouseEvents(false) + } + }) +} diff --git a/src/preload/index.js b/src/preload/index.js index 75383f9..9da4869 100644 --- a/src/preload/index.js +++ b/src/preload/index.js @@ -1,16 +1,15 @@ -import { contextBridge, ipcRenderer } from 'electron' +import { contextBridge } from 'electron' import { electronAPI } from '@electron-toolkit/preload' // Custom APIs for renderer -const api = {} - +const api = { +} // Use `contextBridge` APIs to expose Electron APIs to // renderer only if context isolation is enabled, otherwise // just add to the DOM global. if (process.contextIsolated) { try { contextBridge.exposeInMainWorld('electron', electronAPI) - contextBridge.exposeInMainWorld('electronAPI') contextBridge.exposeInMainWorld('api', api) } catch (error) { console.error(error) diff --git a/src/renderer/src/assets/iconfont/iconfont.css b/src/renderer/src/assets/iconfont/iconfont.css index 529bfc4..d4e9d4e 100644 --- a/src/renderer/src/assets/iconfont/iconfont.css +++ b/src/renderer/src/assets/iconfont/iconfont.css @@ -1,9 +1,9 @@ @font-face { font-family: "iconfont"; /* Project id 2794390 */ - src: url('iconfont.woff2?t=1721179711733') format('woff2'), - url('iconfont.woff?t=1721179711733') format('woff'), - url('iconfont.ttf?t=1721179711733') format('truetype'), - url('iconfont.svg?t=1721179711733#iconfont') format('svg'); + src: url('iconfont.woff2?t=1721815727687') format('woff2'), + url('iconfont.woff?t=1721815727687') format('woff'), + url('iconfont.ttf?t=1721815727687') format('truetype'), + url('iconfont.svg?t=1721815727687#iconfont') format('svg'); } .iconfont { @@ -14,6 +14,54 @@ -moz-osx-font-smoothing: grayscale; } +.icon-xiazai9:before { + content: "\e60b"; +} + +.icon-hudong:before { + content: "\e60c"; +} + +.icon-xiangpica:before { + content: "\e6be"; +} + +.icon-gengduo:before { + content: "\e62d"; +} + +.icon-jujiao:before { + content: "\e615"; +} + +.icon-huabi:before { + content: "\e795"; +} + +.icon-mouse:before { + content: "\e603"; +} + +.icon-xiayiye:before { + content: "\e68b"; +} + +.icon-shangyiye:before { + content: "\e68e"; +} + +.icon-shuangye:before { + content: "\e64e"; +} + +.icon-danyemoban:before { + content: "\e859"; +} + +.icon-lingdang:before { + content: "\e613"; +} + .icon-yidongdaozu:before { content: "\e67d"; } diff --git a/src/renderer/src/assets/iconfont/iconfont.js b/src/renderer/src/assets/iconfont/iconfont.js index 6058761..79b363e 100644 --- a/src/renderer/src/assets/iconfont/iconfont.js +++ b/src/renderer/src/assets/iconfont/iconfont.js @@ -1 +1 @@ -window._iconfont_svg_string_2794390='',function(l){var h=(h=document.getElementsByTagName("script"))[h.length-1],v=h.getAttribute("data-injectcss"),h=h.getAttribute("data-disable-injectsvg");if(!h){var c,a,t,z,p,i=function(h,v){v.parentNode.insertBefore(h,v)};if(v&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(h){console&&console.log(h)}}c=function(){var h,v=document.createElement("div");v.innerHTML=l._iconfont_svg_string_2794390,(v=v.getElementsByTagName("svg")[0])&&(v.setAttribute("aria-hidden","true"),v.style.position="absolute",v.style.width=0,v.style.height=0,v.style.overflow="hidden",v=v,(h=document.body).firstChild?i(v,h.firstChild):h.appendChild(v))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(a=function(){document.removeEventListener("DOMContentLoaded",a,!1),c()},document.addEventListener("DOMContentLoaded",a,!1)):document.attachEvent&&(t=c,z=l.document,p=!1,d(),z.onreadystatechange=function(){"complete"==z.readyState&&(z.onreadystatechange=null,M())})}function M(){p||(p=!0,t())}function d(){try{z.documentElement.doScroll("left")}catch(h){return void setTimeout(d,50)}M()}}(window); \ No newline at end of file +window._iconfont_svg_string_2794390='',function(v){var h=(h=document.getElementsByTagName("script"))[h.length-1],l=h.getAttribute("data-injectcss"),h=h.getAttribute("data-disable-injectsvg");if(!h){var c,a,t,i,z,p=function(h,l){l.parentNode.insertBefore(h,l)};if(l&&!v.__iconfont__svg__cssinject__){v.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(h){console&&console.log(h)}}c=function(){var h,l=document.createElement("div");l.innerHTML=v._iconfont_svg_string_2794390,(l=l.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",l=l,(h=document.body).firstChild?p(l,h.firstChild):h.appendChild(l))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(a=function(){document.removeEventListener("DOMContentLoaded",a,!1),c()},document.addEventListener("DOMContentLoaded",a,!1)):document.attachEvent&&(t=c,i=v.document,z=!1,d(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,M())})}function M(){z||(z=!0,t())}function d(){try{i.documentElement.doScroll("left")}catch(h){return void setTimeout(d,50)}M()}}(window); \ No newline at end of file diff --git a/src/renderer/src/assets/iconfont/iconfont.json b/src/renderer/src/assets/iconfont/iconfont.json index d630aec..5549155 100644 --- a/src/renderer/src/assets/iconfont/iconfont.json +++ b/src/renderer/src/assets/iconfont/iconfont.json @@ -5,6 +5,90 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "720967", + "name": "更多", + "font_class": "xiazai9", + "unicode": "e60b", + "unicode_decimal": 58891 + }, + { + "icon_id": "3596229", + "name": "互动", + "font_class": "hudong", + "unicode": "e60c", + "unicode_decimal": 58892 + }, + { + "icon_id": "5233263", + "name": "橡皮擦", + "font_class": "xiangpica", + "unicode": "e6be", + "unicode_decimal": 59070 + }, + { + "icon_id": "5905756", + "name": "更多", + "font_class": "gengduo", + "unicode": "e62d", + "unicode_decimal": 58925 + }, + { + "icon_id": "11107711", + "name": "聚焦", + "font_class": "jujiao", + "unicode": "e615", + "unicode_decimal": 58901 + }, + { + "icon_id": "36969022", + "name": "画笔", + "font_class": "huabi", + "unicode": "e795", + "unicode_decimal": 59285 + }, + { + "icon_id": "30792830", + "name": "28D鼠标箭头-copy", + "font_class": "mouse", + "unicode": "e603", + "unicode_decimal": 58883 + }, + { + "icon_id": "694110", + "name": "下一页", + "font_class": "xiayiye", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "694115", + "name": "上一页", + "font_class": "shangyiye", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "930693", + "name": "双页", + "font_class": "shuangye", + "unicode": "e64e", + "unicode_decimal": 58958 + }, + { + "icon_id": "2144697", + "name": "单页模板", + "font_class": "danyemoban", + "unicode": "e859", + "unicode_decimal": 59481 + }, + { + "icon_id": "17990800", + "name": "铃铛", + "font_class": "lingdang", + "unicode": "e613", + "unicode_decimal": 58899 + }, { "icon_id": "1207918", "name": "移动到组", diff --git a/src/renderer/src/assets/iconfont/iconfont.svg b/src/renderer/src/assets/iconfont/iconfont.svg index 69fe782..bdabebc 100644 --- a/src/renderer/src/assets/iconfont/iconfont.svg +++ b/src/renderer/src/assets/iconfont/iconfont.svg @@ -14,6 +14,30 @@ /> + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/renderer/src/assets/iconfont/iconfont.ttf b/src/renderer/src/assets/iconfont/iconfont.ttf index f179db3a05f1fb219ae0f020c56395c928e9e408..409d7e10a53c43a98395d6dd4a50c6f5e394f5cf 100644 GIT binary patch delta 3379 zcma)8du&tJ8UMa}>}xxI$M&^}AMpb_i48H>j-8c|maZ*fh(J5Y#@0d%c~bIVfh}Ql zuKH57Qd%u#t5{XBR$42nO>F&R)4HK9NY%8_tuLyr>a?wt14C$?1lvE<*Za;r8IQKo zcJ1GH&iT%F&iP*FyZ7SEQ;*=2sagjB9t42FofFmRzPCPa2T*8Y8$p0W1F0oE)fp^pFo*!_+B z;cgQ&t~BZl{4<( zZtmj&-ocmiO?)rEk3Yr_@x%NCUpRO8{9Wg_HW~mNxb-@@etyqq%PlH7zn?{FNQW$g z(sjRX82Qu>AP>u-11wO09C%1=1+w4(Gk8hCCTNG1;D%=Kfgb{(K@dW)1X>^r5r{$z zTFH47uAt4ai8~J_#}x zctC;-2QCgIkPCndMF`{!;QbOJl6<2CISBYB333(idnCwdz_&?|`+#qkAV&fpr1SY8 zZR)4CDnZ@_zC(ii41A{qc^vqV1o1Nf)}MFu!|SAb#!d|ZN}1$>tT z)MC`RSAs$ae76L|shyCZumYcypa27(lAurnpO&DY1K%S-;RpUT2}%UuGZK^%!1qc} zasa;%pe6|A3Gl}xC}V&hk^m9Y!xEH4z)wg}Issphpu~c6BqKm62IudRpk#ydTO~x= z8BZ^~i!uDR;!$odEQm&L&VIW1vN3m#WE27_`TGUz&yNaaQYD`svsdPb$qF+rV zl9|<5Di_m2TjIp9m@tIM0Q^5>hH}}p>jn^e$9nIbpC4k~%R2hjZ9!Z;zM956>z4x2 zXh1(hv=+dqex|k5N`H(RExs>j{jr$;hRLp2tV_vmUVD2-c1zDlkMhJ5`j5WYN27sN z#%NjCzu=EVh=gy66=Msn#aOJ^xy(VrU1e@5l~TdcvpNjEYm za@vNLHVj%^sI^kIlyAl$wh<4R3p07_6dYs?{d*gddTX+n426=j$$^1nE`@(j>L23r zlK#%`WBnUq+hT!0EQ!mNW*qNN=~^yU-s)mT zG9fCAkW(^E4biJY8M#rBrLJB&%3^lLxv}!FucgH&NVBhgyV0)^O}A{U+~kxKzK1It zTYSwdOigCVBJXd{WcxPvWexI*(-29^jg%K@^|h7t^)zej*xya9@VNW-jM3lXPRSQhwZQ%`uD3(QG?yu`_({ z98RJ0CC5@ng?BqInY^d%0gE$dQSndbHZ(h4ayYtq#Ub8!jbE`0TO-~U7}Ui6nKou2 zUv_y*JOq;D0eZ3Ni{dwtxYz) zw$g6LH=W^t@(;U9HCa?uKW2~G^%tA`^y;Jf-*}7tnsw6EjM6J3N4KE}6<9@g0*q1` z@cy?rkx5jX$gX0-OZ6))%9uA%&;sUSAQe~yUe{-v>VvH{qedu4japF;YaYz$r#+f- zQS<1hG3U|h+g~vr{Jv~iXRH*fKSYH7$^kL(D+k;D?F3RfBckK&f@i0Fp&rJ%b$l1M4cSyMq za$oj2U%#Wb=T5uL=8s1GHk+W&dfVlR# L@#imgBf@_GmpRok delta 1048 zcmY+CJxr5P6o%jXwUqMP0)>JKbgi8&#rgM&H{NPWK^qOo6|-h0n??>+B%&-duANl(nx zC2Ik555T}sEEJD-xgP-5EZ}$>j@}$S-+8|ua4i5QCL<%E;pT;}x43tcoQyD#`^E8u z^HowGi6tf%t;`PZOLM UltqT*&3r)xp1DEHoK6o%qf7m0SnLLa`C=<7C?l-sNS| zaD03s@n)@H9XK_~O$ivvn90oGvJ;uT%%0O>NB;XYWh0F4ZZypHd)j`Xz?t2!wfb?* zp4cPLPB|TpJ6yV9Wnc4pj!pQERE>FVdQuyvHs!Lssa9*@qLKYPo6wBMIOg++z=>Bp zR{<|0F0mwEJklaTNyxO!%ldXtCIbk>osD-(@4tBJr70gWJbM7u*(ZRm{RgN+4GyCb zN0^}+IXHv{I|Fj5IFGptP>3QF!^6xaC`B23DCb>%RH6z2-g%Ik>ro49`G=#>B+aM& zIvZ_03bR01w+-__=!Fe4Q?Wt~kUWKIAgtSlx*#5f3Lz~DwL-cTs)hu!B*6k8y$VZ# z^eHR~(yy>Q$biB^At8k&Lk1Pwco|Y?17ujCA&?P;)<8xTngj_mzl5pURvc029OQ~Z z4PPHrd&aGX%sC`dwK%OKN= z{lUq+!Zt$I6*d&xJ<8utw*y&Rot1*R$M9?&I#CdGGR<3Z53W7X_P( zc8kAx-g{4bKbLHju9Qvr27PnB6<@l%wESU3eMQ=T)IaFI?O$DP_n21Glsb2&%V61i H)?xkts{HT0 diff --git a/src/renderer/src/assets/iconfont/iconfont.woff b/src/renderer/src/assets/iconfont/iconfont.woff index 06b484780f18b7de29d78d95272195cf756eb3ec..607d8f9812d257406a966f359b3cd19e302437d1 100644 GIT binary patch delta 7974 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 cpdPyhe`F#rGnHYk|kdT3~6VE_Oa zga7~lAOHXWBnRIErD$z*cmMzxqyPW_8~^|SoSXvx`fP7wVE_OazyJUMPyhe`Q2J2^ z0BvD-Z~y={84v&f03QGV03ZQO0QPQSZDjxe8883<0YCr%0%s7TJg{(Yb94Xz8gKvr z0T%!O0d&2;3&N8K0cn2-Vs7}~z`($KhoJ>1%!s0h2>@&p47hll<%K?`H5@j=@bh0jHQHs}Q$<$O;y-;09#rYpI@E`Lgpx106t{ZCE>0 zqN1!fSF5_-MzgNB^Wyh$23_e?Lrt}`u5CT)NzZzH-}(3eq3(aWzNOv&>)))(drdP} zKMQPrJ+RCozgT159p`+$SyoF&y6C3IXX&Mnegi+4W|Xw36`m7XkCG^Dg=dGh z!&5}NQ4*)U@MM3{et5>{cToBt1f~CBlr-unoCS0o@1Tj)Z|FLlJaiMzAi52w5#5DziSEM*MGxVuqQ`J*(NmOvo}R-= zMz7&a^S%=_J^^T>haCU_c$~#r36vbgd9Lc7?w*-GW_o}6n)~RUp59BlJ3BKwl6JM) z)vgpBmJpH=lF@+#mRCq%VgweJfE8fu5L-*IY%sww&v67kAdZjt#fKsslHfeU!}hZu zhaK<{<5=W5d3N&TMAMtUdUjT$-PzRwCh6&^uCA)Cp81dOKdKOg(9}2SC+Sh7p-zNw z&SW`OQ+0oX(T8xM2j}|w%LNhuTC|9d3G(tHrx%90ct`6M-N zUKg^TwX zG#5JY!u=NY6L-igQsc$iZ=y2(mK=3Y1O!1Ags1)9<;S&atzyxl9)_|u5{X75)Wf8F z%6(1GWOSG+lW~8@uq=aBQkq2zpLI2>NNMg$G7vxM-XsJt1G5I){~_gtI{t9c%9zEX znX!M0pNPpBGCm{6(t3xM$!HyVdYtuj_&5#<79rpvLi9`2%V+?-9eCJHnG)tCDos^O zgngaZ?52ir$*2xdeQBJ*RVXD2nt_W0SRbOgG0n;4g2`&K102p^y>BHRf{9oy- zgST!GD?5tJ@?HIzfFuPn?Q7a`+nTm0&5eH@IC5Z&V~qASZ5UcD(rxwcTFw-A{CKCR zNIL^bj=!5#xw}|~4oV{a?dZY5!GojJ@?8ga6lqZv+tysZrh|3onuJ&}-hR)6nT`!7?BEFbd5|1xQP)ngu;!4+g_ly|4 zClJ7Q^O6>APqitcsJO?1`*+|Qg28{bV2XE##31XVx+yU%v$wMhBlsWp4MbMqJEg!a z0VN)UVnx^bE@~;fCIXW#Nz|T(0$%i-6p2XBK_AWr?g_?&`0k*ehgXzJ@QT1G@`@C^ zBUpPXz{>u|{Q|?l8|1JE?4Dc|!5zUPfkY&5Bp6qKXj4;D6Fy8I2fD`4Ajp5wI6(u| zNMl3qs}A96e;KIZ09in`Sf=1ie>jhLX{@Q7)~K){+>N|x}ldq zxcXtT5Sflu4GOua%{j4i&vScro^aZls?=v0%}8mvXhNr@HnYQAmcwDuTxKeKf@ju@ z2A6Fs4qP4W7%g;d=)!voL-~K)a`$D1X4ru5SXf{q+zo?VMB?zo`0S~@>OjsaM5G|c z_;5NbBw*+Wq5-oElt39|AqViZ2bEA2v~ndHMSp-cpv%x!v=`lgZb5(VLwBNkfWm-h zc8=&>1JTL_rX*W*rKE8!z7Blx0(~@jmSek#ln)U-R&lO!0puLRaxBiO8c$`s(?8N#~eUC+HRHG<&*iO`_c%cxd+=N{^|9$Ek+3Yph?6qDA z=RbNS{*P9z)OF{-hu=3ApjGL?kU|H>q%L>s7szBcChV_I=JS)=SFYTC`0ykg1P+x2 zc(T&t#eU$x3G~(y0!b~OSeM#MzZ9kexs~dk-H?|180svP_64V_4 z8qg18fv&1%X{GwNa$y|Q;G?oI%qgWY{IY4yE0bqR3ydpY7>ApF-CSmW_LX;>CWq_C z=g2p^Z{++Gp)HL`cfN_IPlsuPRzte3MMJ93U`!(~he8o6_U9q!P(p^T8>GW$8CE0| zj+n9V{g(oWqleeMm=vs6K`eXDb=o9m!7YEYeOxp$`CD^I}D=Q_&l1nsvaZBlG!Xa=P zXM|xP>}r0*D{<3yB-@o5PXY z_l>ys7UH-c>aTbhA68@0cu@8iR`6-X%ICAmE21A=zh;f`r30znWxdH{acMC*U4zi}k6K)2BCQ>OvJEVGe(7 zD-b2FMwf$UbplPIk1vw4wx+TcvEn67Es?OV)Tef0VtgC0+0r1lV1r|NrnXr3h#hc= zJ!@R@Omfv=9cvnPS*;c2Yu^GGa0yO~YB4aNn!vxiRJNi~GX#hEJ_4exI7$4`=x@ZUHFzd6}XGm6Bh|t`<+S|AmoeEimXPBI4^UBAt9}pHfVp!=if4( z@NbYA^XbeuItKp633UHrxj~!(AbycJ1aO5Adp0*903=Z$I2=x?PF(OrN_8T0))4Nq zEtn8OK$s9}g%E_+8l5Kj2B=jV6{l*l8rQ>9$yE&`LPsBR1a`17^f1K&Ar1>TN>GLcUJlss2 z^PjsUS8lv<@)|fMr&%Hd6~pff3u-(Hj0)+3%xgTjlhM;PImr~cO#GL>3<^{q<~jFO zS&(g0h~z6!$(!)KZ&iBq4aJbRqYt3_(1ZWyF{Eu2JqfU;C4iahTatefEuF>J8CBL^ z23G%su)42UOc=OB1y*AxVvpGQRimC8x#SL~EmlgF-s%Xm!Sl#PPGp1xoG3I$x4KZ- z^XNAL(%lF4=ppne^o7N0*ldNG?aR-Ydz<8^0MVvD0C3f5eB)S7&wzq?*&B`p>|?q5 z$5EGgkFcDC4b>(fNV0!AhQo$1=w!h$$uO9spP=T#koc7*Bz&aV(SH%#gs9saDCUw{+Av}b_h0q=i~Bi$A|p9*)|Y?C$-3j{iW~@WTu#X* zvrdAg7>-Lwk${|(qm+*g4w`M0iT&|NLWu<;40RjFhAE%mW8=F8F72b~$d@RepBGi7 zLlvnOeqRE$pEGMK`GU`M02D2bB&Y$M@< z`HM3y5iHGQT-^Ilo;>NEJAC-?%{PB2eC$~GST;MKW;G>I8XRrp-7a<*H5Gml_GyOb z=LA^@E}wrK5saX)aH53&#ucC2w(WDu*w{UzqxbY)o?N>&Iq)Eo7SyMm5ChK}NxdnJ zYL0u~h<4S!3oiYyiFWmrD^|lZd9aU+(Wl?2wOU+0(wJq`rb#R}?wRRnxH*6GlrEmArG;t-WP5nu3RMl2qSCSvZN?%Xx%IK%09A~lRhblUXkQ6(r!T&hiqcW%<+RL&QV=?UWf z1folF_F^rPuy8_=ZWt`={@FV*eVg8^rNgEoGhEV72L*q4X*Lvb3?(FngLF`2q-q-Q zQ(J$O|F{|a{TtB{@cB=ohv)GeTX==l7HuT&*g_gE0h<@Wug)zrc5V`F)0K?_&(z!j z>hxh?xdANy3>kF7hzWv1(U^;QfGFCAVM~%2vcK8{q@U5_c%ES`*m!j|JKS`>a`7!3 z?qkh-ZjFC4VA;AG&5f5EJS4s(LA!Z#!i0Ypjcbeec`l-rrrTPjbG;<4dlDa-PUgDn z0Lk7X@>=TGzZ)uO|A$~KW*gsYcDpi?C8boghFAiS#Jz&l@}fJ)&{PGIOibx;37RQ`gLSB z=R`pz0(MUEQhDtb-qi*-mDTa%Mke#0i%W8ri4Qi7fp@LJQDbfNyqC(BRWE;)&Dqnb z?93&X4eC?^>oNtp)PhdW!uo6UMv-*L7dy&HW1 zO`-7VoK)@US?j9d1WrbiI1z7; zK`qvfhb~&I{i}Jy%*SS&W;lOe|LQFD)5cVa|v1Auw zW3QoEpzlBbvq&r!p;K}^?p9*?7@T-V%!!+b4if>Z2E3hX2G*%pCHI6>NQiig`-GS%NccSxKBkbyWC0rS7STzNJ2DqD zRhzoaN7Hv96OEuvXbXSZ26OhMu>pTx!dyMQUnM%>SY!jKW`X&ymXtoSqYj2C1`SQ# z!sB#bHy*;qOcV`WHgUnUT!kKQ8|$PCtJ;D`j^v7TS2j@Vh3jgsWnfpTw_M&DU$^Su z*wWqC?_5T&E^c31?n&+%NcJR?JxfVJZG84w_nq{eX7P+r0YP|7GZ_5)HCxxbsjWiVVhqDEY~1uFpC_?fkU)2QTvGAmI+@LR|FAfV^^j6 z($w|PBI9tTUcYQ zDBYKqGi^GZ)jP5g_hlcAF~z#8{S@W@N=Vm3huF6GMlGYS6%9jL=a>1ArssqHLm^EI zoqq|BP!#RwL(zDLEQ?W&r`&&&R8{&uC4|C?%u|2cJWQOL@FCzw45h)Yd6G)lFk`}2 z%t)yQVyaj&k-bWeK2zHtFP!q=`%Jtr0hJeP!_=8?-d2da1?nMs!cM?h8zH9VQ9Dk3 z9E`N{3+iuO2fvW8C#Es;75Wi63zpSt-j55fO=Ax;l)9kLm{U4iJ7ba5ltm4D*A%?s zjAwt%h7)%7Lc8USqr9&A01xZn58s3zBP%hp_jS`(*M|K(@2Ac{iMR9qcE2D%!8e{e zLY)J>Mhf6!00W?_TmYxZUSHD*G*Gh}S5NXe0he%D$Qr!+9bD#dkP@LEJ*RU`%Hv_pG3``(V0FHGIjsO4vc${NkWME)!_}{<~ z!@}_Y@BhCn%nU#g6rc_OptJ^yc${NlU|?Xu!2kbaiqQ)H{|m(bu*m@cn7am)004gg z002k;;sIU)1OlQ1Yy`FikOj&HtOr^ME(r7q#0sJds0>66P!0SJ=hCfk`^Qu>=!B*Vi$fFym*{rU}RumP-l3>Ak6>*OhC*9gbWP-!F&b) zC9VQP0C=2*kv(q0KoEtW!H@)$C`z+69x?%cj>&SuFc3uD$TkiRA^W~>tYK5QgQQX9$!uLLhWpS4O0(=N6by!)w?rb!Utf(a@qD&r`MegUrxU;hA59G>I= diff --git a/src/renderer/src/assets/iconfont/iconfont.woff2 b/src/renderer/src/assets/iconfont/iconfont.woff2 index 280df28e359cfe4c087e803f9d530343661ec442..2acffdf03882e104745d941a82c7039e5808f924 100644 GIT binary patch literal 7052 zcmV;78*}7$Pew8T0RR9102_<|3jhEB07Dc202@010RR9100000000000000000000 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 { diff --git a/src/renderer/src/store/modules/draw.js b/src/renderer/src/store/modules/draw.js index 3f85c56..fc28064 100644 --- a/src/renderer/src/store/modules/draw.js +++ b/src/renderer/src/store/modules/draw.js @@ -156,7 +156,7 @@ export const useDrawStore = defineStore( { state() { return { - drawWidth: 10, + drawWidth: 1, drawColors: ['#000000'], shadowWidth: 0, shadowColor: '#000000', diff --git a/src/renderer/src/utils/tool.js b/src/renderer/src/utils/tool.js index 076c931..4132cf8 100644 --- a/src/renderer/src/utils/tool.js +++ b/src/renderer/src/utils/tool.js @@ -2,23 +2,43 @@ * @description: electron 封装的工具函数 */ const { ipcRenderer } = window.electron || {} - +// const {getCurrentWindow,BrowserWindow, shell, app} = require('@electron/remote'); +import remote from '@electron/remote' +const remote = require('@electron/remote') +console.log('xxxxx ', remote) /** + * @description 消息发送-nodejs 消息发送 * @form src/main/tool.js 来源 - * @description 创建工具 - * @param {*} key 消息头 - * create-tool-sphere 创建-悬浮球 | url:路由地址,width:窗口宽度,height:窗口高度,option:自定义选项 - * @param {*} data 参数 + * @param {*} key 消息key + * tool-sphere:create 创建-悬浮球 + * @param {*} data 参数 + * url:路由地址,width:窗口宽度,height:窗口高度,option:自定义选项 + * @returns */ -export function createTools(key, data) { - const msgKey = `create-tool-${key}` // 消息头 - const msgKeyRes = `${msgKey}-reply` // 消息头-返回结果 +export function ipcMsgSend(key, data) { return new Promise((resolve) => { // 返回结果-监听 - ipcRenderer.once(msgKeyRes, async (e, res) => { + ipcRenderer.once(`${key}-reply`, (e, res) => { resolve(res) }) // 发送消息 - ipcRenderer.send(msgKey, data) + ipcRenderer.send(key, data) }) +} + +export function test() { + // console.log(BrowserWindow) + // const win = new BrowserWindow({ + // width: 400, height: 400 + // }) + // win.loadURL('https://www.baidu.com') + // win.show() + // win.on('close', () => { + // win = null + // }) + // const url = app.getPath('userData')+'/123.pdf' + // console.log(app.getPath('userData')) + // shell.openExternal(url) + const win = getCurrentWindow() + console.log(win) } \ No newline at end of file diff --git a/src/renderer/src/views/resource/index.vue b/src/renderer/src/views/resource/index.vue index 2dd57e8..c46d0a3 100644 --- a/src/renderer/src/views/resource/index.vue +++ b/src/renderer/src/views/resource/index.vue @@ -16,6 +16,7 @@ + \ No newline at end of file diff --git a/src/renderer/src/views/tool/test.vue b/src/renderer/src/views/tool/test.vue new file mode 100644 index 0000000..a0cd220 --- /dev/null +++ b/src/renderer/src/views/tool/test.vue @@ -0,0 +1,31 @@ + + + + + \ No newline at end of file