From 7894214859195a046e70d5500169547e32ef8f0d Mon Sep 17 00:00:00 2001 From: zdg Date: Tue, 3 Sep 2024 18:02:46 +0800 Subject: [PATCH] =?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