diff --git a/package.json b/package.json index ada67fe..31aa157 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aix-win", - "version": "2.1.21", + "version": "2.1.27", "description": "", "main": "./out/main/index.js", "author": "上海交大重庆人工智能研究院", diff --git a/src/main/index.js b/src/main/index.js index f874b6b..c28c144 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -175,6 +175,7 @@ async function createLinkWin(data) { data.fullPath += '?urlSource=smarttalk&t' + Date.now() } linkWin[data.key].loadURL(data.fullPath) + if (import.meta.env.VITE_SHOW_DEV_TOOLS === 'true') linkWin[data.key].webContents.openDevTools() linkWin[data.key].once('ready-to-show', () => { linkWin[data.key].show() diff --git a/src/main/store.js b/src/main/store.js index a34bd90..22e61dd 100644 --- a/src/main/store.js +++ b/src/main/store.js @@ -23,7 +23,9 @@ const defaultData = { curNode: null, // 当前选中的节点 defaultExpandedKeys: [], //展开的节点 subjectTree: [] // "树结构" 章节 - } + }, + env: {}, // 不走同步 Pinia - 变量 + curr: {} // 不走同步 Pinia - 当前信息 }, local: { // 本地(永久localStorage) }, diff --git a/src/renderer/src/components/set-homework/index.vue b/src/renderer/src/components/set-homework/index.vue index b890ff3..a237a80 100644 --- a/src/renderer/src/components/set-homework/index.vue +++ b/src/renderer/src/components/set-homework/index.vue @@ -213,7 +213,7 @@ const delStudent = (index) => { const onSubmit = (formEl) => { if (!formEl) return // 课堂id - const classRoomId = sessionStore.get('curClassRoom.id') + const classRoomId = sessionStore.get('curr.curClassRoom.id') formEl.validate((valid) => { if (valid) { /** diff --git a/src/renderer/src/plugins/shareStore.js b/src/renderer/src/plugins/shareStore.js index 3b3c819..64531b8 100644 --- a/src/renderer/src/plugins/shareStore.js +++ b/src/renderer/src/plugins/shareStore.js @@ -10,7 +10,7 @@ import _ from 'lodash' // import { diff } from 'jsondiffpatch' // const Remote = isNode?require('@electron/remote'):{} // 远程模块 -const exArrs = ['subject'] // 不需要同步key-排除 +const exArrs = ['subject','env','curr'] // 不需要同步key-排除 export function shareStorePlugin({store}) { store.$subscribe((mutation, state) => { // 自动同步 @@ -60,7 +60,7 @@ function stateSyncWatch(storeName, newState) { const diffData = findDifferences(oldState, newState) if(!_.keys(diffData).length) return // 没有变化就终止执行 // 数据处理: 找出差异 - // console.log('state-change-diffData', diffData) + // console.log('state-change-diffData', diffData, newState) try { let pinaValue = {} // store pina状态管理需要的数据格式 // 数据转换处理 @@ -83,7 +83,7 @@ function stateSyncWatch(storeName, newState) { // 没变化也终止执行 if (_.isEqual(oldValAll, newValAll)) return // 更新本地数据-session - sessionStore.set(key, newValAll) + sessionStore.set(key, newValAll || null) // 数据处理: pina-store const jsonStr = JSON.stringify(pinaValue) // 从新组装-json数据 diff --git a/src/renderer/src/store/modules/tool.js b/src/renderer/src/store/modules/tool.js index f2ff2b0..b8a6fa6 100644 --- a/src/renderer/src/store/modules/tool.js +++ b/src/renderer/src/store/modules/tool.js @@ -6,7 +6,7 @@ import { sessionStore } from '@/utils/store' // 默认数据 const defData = sessionStore.store || {} -const exArrs = ['subject'] +const exArrs = ['subject','env','curr'] exArrs.forEach(k => Object.keys(defData).includes(k) && (delete defData[k])) // 延时 diff --git a/src/renderer/src/utils/tool.js b/src/renderer/src/utils/tool.js index 84fc77b..82b52cb 100644 --- a/src/renderer/src/utils/tool.js +++ b/src/renderer/src/utils/tool.js @@ -200,6 +200,25 @@ export const createWindow = async (type, data) => { eventHandles(type, winChild) // 事件监听处理 return winChild } + case 'open-win': { // 创建-新窗口 + const option = data.option||{} + const defOption = { + show: false, + frame: true, // 无边框 + autoHideMenuBar: true, + maximizable: false, + } + data.isConsole = true // 是否开启控制台 + data.option = {...defOption, ...option} + const win = await toolWindow(type, data) + win.type = type // 唯一标识 + win.show() + win.maximize(); + // win.setFullScreen(true) // 设置窗口为全屏 + if (import.meta.env.VITE_SHOW_DEV_TOOLS === 'true') win.webContents.openDevTools() // 打开调试工具 + eventHandles(type, win) // 事件监听处理 + break + } default: break } @@ -360,6 +379,18 @@ const eventHandles = (type, win) => { publicMethods(on) // 加载公共方法 break; } + case 'open-win': { // 打开新窗口 + // 监听窗口关闭事件 + win.on('closed', function () { + win&&win.destroy() + }); + const on = { + onClosed: () => { + } + } + publicMethods(on) // 加载公共方法 + break + } default: break } diff --git a/src/renderer/src/views/fullScreenPdf/index.vue b/src/renderer/src/views/fullScreenPdf/index.vue index cb404c8..2f85aa9 100644 --- a/src/renderer/src/views/fullScreenPdf/index.vue +++ b/src/renderer/src/views/fullScreenPdf/index.vue @@ -18,7 +18,10 @@ const loadPdfAnimation = (path) => { },2000) } onMounted(() => { - const bookpath = localStorage.getItem('PDF-LOCAL-PATH') + const pdfUrl1 = localStorage.getItem('PDF-TOOL-PATH') + const pdfUrl2 = localStorage.getItem('PDF-LOCAL-PATH') + console.log('tool-pdf 地址: ',pdfUrl1, pdfUrl2) + const bookpath = pdfUrl1 || pdfUrl2 // const filepath = import.meta.env.VITE_APP_RES_FILE_PATH + bookpath // const isDev = process.env.NODE_ENV == 'development' // if (isDev) @@ -28,7 +31,7 @@ onMounted(() => { // const newpath = getStaticUrl(bookpath, 'user', 'selfFile', true) loadPdfAnimation(bookpath) // pdfUrl.value = filepath - // console.log('课件路径',newpath); + // console.log('课件路径',bookpath); }) diff --git a/src/renderer/src/views/tool/sphere.vue b/src/renderer/src/views/tool/sphere.vue index 99b935b..cf204d5 100644 --- a/src/renderer/src/views/tool/sphere.vue +++ b/src/renderer/src/views/tool/sphere.vue @@ -103,7 +103,7 @@ onMounted(async() => { const getClassInfo = async () => { const { data } = await classManageApi.getClassInfo(classObj.id) classObj.data = data - sessionStore.set('curClassRoom', classObj) // 课堂信息-缓存 + sessionStore.set('curr.curClassRoom', classObj) // 课堂信息-缓存 // 群id let timGroupId = data?.ex3 || '' console.log('获取群ID:', timGroupId) @@ -207,7 +207,7 @@ const sideMouse = e => { const sideChange = async o => { // console.log(o) switch(o.prop) { - case 'book': + case 'bookOpen': if(isOpenBook.value) { isOpenBook.value = false ElMessage.info('已经打开课本了哦') @@ -217,6 +217,9 @@ const sideChange = async o => { isOpenBook.value = true } break + case 'book': + isMask.value = !isMask.value + break case 'close': // 关闭 maskChange(false) break