From b6504e114fc62dfce2a9060c4fab5727e29b55c1 Mon Sep 17 00:00:00 2001 From: zdg Date: Tue, 3 Sep 2024 16:01:40 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=A1=8C=E9=9D=A2=EF=BC=8C=E5=BA=95?= =?UTF-8?q?=E9=83=A8=E5=AF=BC=E8=88=AA=20=E5=A4=9A=E4=B8=AA=E7=AA=97?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/utils/tool.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/renderer/src/utils/tool.js b/src/renderer/src/utils/tool.js index 21be23c..de9b303 100644 --- a/src/renderer/src/utils/tool.js +++ b/src/renderer/src/utils/tool.js @@ -14,11 +14,11 @@ const API = isNode?window.api:{} // preload-api // import { useToolState } from '@/store/modules/tool' // 获取store状态 // const Store = isNode?require('electron-store'):null // 持久化存储 import store from './store' - // 常用变量 const BaseUrl = isNode?process.env['ELECTRON_RENDERER_URL']+'/#':'' const isDev = isNode?process.env.NODE_ENV !== 'production':'' // const toolState = useToolState() // 获取store状态 +const appPath = isNode?Remote.app.getAppPath():'' // 应用目录 // 暴露Remote中的属性 export const ipcMain = Remote?.ipcMain || {} @@ -110,6 +110,7 @@ export const createWindow = async (type, data) => { resizable: false, // 禁止窗口大小缩放 transparent: true, // 设置透明 alwaysOnTop: true, // 窗口是否总是显示在其他窗口之前 + type: 'toolbar', // 创建的窗口类型为工具栏窗口 // parent: mainWin, // 父窗口 // autoClose: true, // 关闭窗口后自动关闭 } @@ -141,8 +142,8 @@ export const createWindow = async (type, data) => { const option = data.option||{} const defOption = { frame: false, // 要创建无边框窗口 - resizable: true, // 禁止窗口大小缩放 - alwaysOnTop: false, // 窗口是否总是显示在其他窗口之前 + resizable: true, // 禁止窗口大小缩放 + alwaysOnTop: false, // 窗口是否总是显示在其他窗口之前 } data.isConsole = true // 是否开启控制台 data.option = {...defOption, ...option} @@ -179,8 +180,7 @@ export function toolWindow({url, isConsole, isWeb=true, option={}}) { return new Promise((resolve) => { const config = { width, height, - type: 'toolbar', // 创建的窗口类型为工具栏窗口 - // icon: path.join(__dirname, '../../resources/logo2.ico'), + icon: path.join(appPath, '/resources/logo2.ico'), webPreferences: { preload: path.join(API.preloadPath, '/index.js'), sandbox: false, From 7894214859195a046e70d5500169547e32ef8f0d Mon Sep 17 00:00:00 2001 From: zdg Date: Tue, 3 Sep 2024 18:02:46 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug:=20#678=20#652=20#648?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/plugins/shareStore.js | 17 ++++++++++++++ src/renderer/src/utils/tool.js | 10 ++++++-- .../src/views/classManage/classReserv.vue | 19 ++++++++++----- .../src/views/classManage/reserv-item.vue | 23 +++++++++++-------- src/renderer/src/views/prepare/index.vue | 5 ++-- src/renderer/src/views/tool/sphere.vue | 7 +++--- 6 files changed, 58 insertions(+), 23 deletions(-) diff --git a/src/renderer/src/plugins/shareStore.js b/src/renderer/src/plugins/shareStore.js index f8c939f..05e071f 100644 --- a/src/renderer/src/plugins/shareStore.js +++ b/src/renderer/src/plugins/shareStore.js @@ -68,6 +68,18 @@ function stateSyncInit(wid, store) { ipcRenderer.invoke('pinia-state-init', wid, storeName, curJson) } +// 监听session数据变化 +function sessionWatch(store) { + const unsubscribe = sessionStore.onDidAnyChange((newV, oldV) => { + if (newV !== oldV) { + console.log('session-change', newV, oldV) + // 通知主线程更新 + // ipcRenderer?.invoke('pinia-state-change', storeName, jsonStr) + } + }) + // unsubscribe() 取消监听 +} + // 同步数据-接收主线程消息 function stateChange(store) { const storeName = store.$id @@ -124,5 +136,10 @@ const filterByKey = (obj, key, value) => { } return res; } + +// 获取对象值 +const getObjValue = (obj, key) => { + +} // 对象克隆 const objClone = (obj) => JSON.parse(JSON.stringify(obj)) diff --git a/src/renderer/src/utils/tool.js b/src/renderer/src/utils/tool.js index de9b303..c42f2c8 100644 --- a/src/renderer/src/utils/tool.js +++ b/src/renderer/src/utils/tool.js @@ -11,13 +11,13 @@ const path = isNode?require('path'):{} const Remote = isNode?require('@electron/remote'):{} const { ipcRenderer } = isNode?require('electron'):window.electron || {} const API = isNode?window.api:{} // preload-api -// import { useToolState } from '@/store/modules/tool' // 获取store状态 +import { useToolState } from '@/store/modules/tool' // 获取store状态 // const Store = isNode?require('electron-store'):null // 持久化存储 import store from './store' // 常用变量 const BaseUrl = isNode?process.env['ELECTRON_RENDERER_URL']+'/#':'' const isDev = isNode?process.env.NODE_ENV !== 'production':'' -// const toolState = useToolState() // 获取store状态 + const appPath = isNode?Remote.app.getAppPath():'' // 应用目录 // 暴露Remote中的属性 @@ -221,6 +221,7 @@ export function toolWindow({url, isConsole, isWeb=true, option={}}) { * @param {*} win 窗口对象 */ const eventHandles = (type, win) => { + const toolState = useToolState() // 获取store状态 const winAll = Remote.BrowserWindow.getAllWindows() const mainWin = winAll.find(o => o.type == 'main') // 主窗口对象 // 公共方法 @@ -250,6 +251,9 @@ const eventHandles = (type, win) => { Remote.ipcMain.removeHandler('tool-sphere:set:ignore', setIgnore) Remote.ipcMain.removeHandler('tool-sphere:reset') // Remote.ipcMain.removeAllListeners() // 移除所有监听事件 + // 设置状态(再次设置-防止未设置到) + if(toolState.isToolWin) toolState.isToolWin = false + // sessionStore.set('isToolWin', false) } } publicMethods(on) // 加载公共方法 @@ -269,6 +273,8 @@ const eventHandles = (type, win) => { const on = { onClosed: () => { Remote.ipcMain.removeHandler('open-PDF:minimize') + // 设置状态(再次设置-防止未设置到) + if(toolState.isPdfWin) toolState.isPdfWin = false } } publicMethods(on) // 加载公共方法 diff --git a/src/renderer/src/views/classManage/classReserv.vue b/src/renderer/src/views/classManage/classReserv.vue index dbabd76..3414291 100644 --- a/src/renderer/src/views/classManage/classReserv.vue +++ b/src/renderer/src/views/classManage/classReserv.vue @@ -31,6 +31,7 @@ import { getSelfReserv } from '@/api/classManage' import ReservItem from '@/views/classManage/reserv-item.vue' import Reserv from '@/views/prepare/container/reserv.vue' import { useToolState } from '@/store/modules/tool' +import { sessionStore } from '@/utils/tool' const reservDialog = ref(null) const tabOptions = ref(['进行中', '已结束']) const tabActive = ref('进行中') @@ -51,21 +52,27 @@ const doneDataList = computed(() => { return item.status === '已结束' }) }) +// 获取数据 +const getData = () => { + getSelfReserv().then((res) => { + const list = res.data || [] + list.sort((a,b) => { if(a.status=='上课中') return -1; else return 0 }) + dataList.value = list + }) +} const toolStore = useToolState() + watch( () => [dataList,toolStore.isToolWin], () => { + console.log('====',toolStore) setTimeout(()=>{ - getSelfReserv().then((res) => { - dataList.value = [...res.data] - }) + getData() // 加载数据 },300) } ) onMounted(() => { - getSelfReserv().then((res) => { - dataList.value = res.data - }) + getData() // 加载数据 }) diff --git a/src/renderer/src/views/classManage/reserv-item.vue b/src/renderer/src/views/classManage/reserv-item.vue index 76d2726..5032c49 100644 --- a/src/renderer/src/views/classManage/reserv-item.vue +++ b/src/renderer/src/views/classManage/reserv-item.vue @@ -20,14 +20,14 @@
- 上课{{item.status == '上课中'?'上课中':'上课'}} 编辑 - 删除 + 删除
@@ -46,6 +46,7 @@ const props = defineProps({ } }) const basePath = import.meta.env.VITE_APP_BUILD_BASE_PATH +const toolStore = useToolState() // 获取状态管理-tool const openEdit = () => { emit('openEdit', props.item) } @@ -61,18 +62,20 @@ const deleteReserv = () => { }) } const startClassR = (item) => { - startClass(item.id).then((res) => { - if (res.data === true) { - item.status = '上课中' - openLesson() - } - }) + // startClass(item.id).then((res) => { + // if (res.data === true) { + // item.status = '上课中' + // openLesson() + // } + // }) + item.status = '上课中' + openLesson() } // const toolStore = useToolState() let wins = null; // 上课-工具类悬浮 const openLesson = () => { - startClass(props.item.id) + // startClass(props.item.id) listEntpcourse({ evalid: props.item.ex2, edituserid: useUserStore().user.userId, diff --git a/src/renderer/src/views/prepare/index.vue b/src/renderer/src/views/prepare/index.vue index 7b2c3bc..7f49460 100644 --- a/src/renderer/src/views/prepare/index.vue +++ b/src/renderer/src/views/prepare/index.vue @@ -20,11 +20,11 @@ - + @@ -630,6 +630,7 @@ export default { cursor: pointer !important; } & > :deep(span) { + pointer-events: none; flex-direction: column !important; font-size: 12px; } diff --git a/src/renderer/src/views/tool/sphere.vue b/src/renderer/src/views/tool/sphere.vue index 256b4fe..745475c 100644 --- a/src/renderer/src/views/tool/sphere.vue +++ b/src/renderer/src/views/tool/sphere.vue @@ -96,10 +96,11 @@ const getClassInfo = async () => { const { data } = await classManageApi.getClassInfo(classObj.id) classObj.data = data // 群id - let timGroupId = data?.ex3 || '' + let timGroupId = data?.ex3 || '@TGS#36AICW6O6' console.log('获取群ID:', timGroupId) - const chat = await imChatRef.value?.initImChat(timGroupId) // 初始化im-chat - if (!timGroupId) timGroupId = chat?.timGroupId + // const chat = await imChatRef.value?.initImChat(timGroupId) // 初始化im-chat + // if (!timGroupId) timGroupId = chat?.timGroupId + if (!timGroupId) return ElMessage.error('房间创建-失败') classManageApi.startClass(classObj.id, timGroupId) // 开始上课 } // 切换tab-change From 2aaa15230a0fd258942962b5dd6dd860284ca761 Mon Sep 17 00:00:00 2001 From: zdg Date: Tue, 3 Sep 2024 18:03:25 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=81=A2=E5=A4=8D=20im=20=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/views/tool/sphere.vue | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/renderer/src/views/tool/sphere.vue b/src/renderer/src/views/tool/sphere.vue index 745475c..d5c015b 100644 --- a/src/renderer/src/views/tool/sphere.vue +++ b/src/renderer/src/views/tool/sphere.vue @@ -83,9 +83,6 @@ const btnList = [ // 工具栏按钮列表 // === 页面加载完毕 === onMounted(async() => { if (!electron) return // 浏览器端 - // console.log(sessionStore) - // window.test = sessionStore - // window.test1 = toolStore getClassInfo() // 获取课堂详情 ex3 resetStatus() // 开启重置状态-监听 }) @@ -98,8 +95,8 @@ const getClassInfo = async () => { // 群id let timGroupId = data?.ex3 || '@TGS#36AICW6O6' console.log('获取群ID:', timGroupId) - // const chat = await imChatRef.value?.initImChat(timGroupId) // 初始化im-chat - // if (!timGroupId) timGroupId = chat?.timGroupId + const chat = await imChatRef.value?.initImChat(timGroupId) // 初始化im-chat + if (!timGroupId) timGroupId = chat?.timGroupId if (!timGroupId) return ElMessage.error('房间创建-失败') classManageApi.startClass(classObj.id, timGroupId) // 开始上课 }