Compare commits

...

3 Commits

Author SHA1 Message Date
lyc 931ed531ab Merge branch 'main' into lyc-dev 2024-09-03 14:12:00 +08:00
zhengdegang 5433e47d0b Merge pull request '修复bug-数据共享' (#168) from zdg into main
Reviewed-on: #168
2024-09-03 13:19:35 +08:00
zdg eb3778dde2 修复bug-数据共享 2024-09-03 13:18:40 +08:00
5 changed files with 45 additions and 21 deletions

View File

@ -3,7 +3,7 @@
*/
const isNode = typeof require !== 'undefined' // 是否支持node函数
const { ipcRenderer } = isNode?require('electron'):{} // app使用
import { sessionStore } from '@/utils/tool'
import { sessionStore } from '@/utils/store'
// const Remote = isNode?require('@electron/remote'):{} // 远程模块
export function shareStorePlugin({store}) {
store.$subscribe((mutation, state) => { // 自动同步
@ -46,7 +46,7 @@ function stateSync(storeName, key, value, state) {
sessionStore.set(keystr, value)
// 通知主线程更新
ipcRenderer?.invoke('pinia-state-change', storeName, jsonStr)
// console.log('======',keystr, data )
// console.log('======',keystr, jsonStr )
} catch (error) {
console.log('state-change-error', error)
}
@ -105,17 +105,19 @@ const filterByKey = (obj, key, value) => {
let res = { data:{}, keystr:'' }
for (let k in obj) {
if (obj.hasOwnProperty(k)) {
const isEqual = JSON.stringify(obj[k]) === JSON.stringify(value) // 值是否相同
const isEqual = JSON.stringify(obj[k]) === JSON.stringify(value) // 值是否相同
if (k === key && isEqual) {
// 如果匹配,则添加到新对象中
res.data[k] = obj[k];
res.keystr = k;
} else {
if (obj[k] !== null && typeof obj[k] === 'object') {
if (obj[k] !== null && typeof obj[k] === 'object') {
// 如果是对象,则递归处理
const {data, keystr} = filterByKey(obj[k], key, value)
res.data[k] = data
res.keystr = keystr ? `${k}.${keystr}`: key
if(!!keystr) {
res.data[k] = data
res.keystr = `${k}.${keystr}`
}
}
}
}

View File

@ -0,0 +1,25 @@
/**
* @description : 存储对象-本地存储 封装工具(渲染器)
* @author : zdg
* @date : 2024-09-03
*/
const isNode = typeof require !== 'undefined' // 是否支持node函数
const Store = isNode?require('electron-store'):null // 持久化存储
// 暴露sessionStore存储对象
export const sessionStore = Store ? new Store({
name: 'session-store', // 存储文件名
fileExtension: 'ini', // 文件后缀名
encryptionKey: 'BvPLmgCC4DSIG0KkTec5' // 数据加密-防止用户直接改配置
}) : {}
// 暴露localStore存储对象
export const localStore = Store ? new Store({
name: 'local-store', // 存储文件名
fileExtension: 'ini', // 文件后缀名
encryptionKey: '6CyoHQmUaPmLzvVsh' // 数据加密-防止用户直接改配置
}) : {}
export default {
sessionStore, localStore
}

View File

@ -12,7 +12,8 @@ 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状态
const Store = isNode?require('electron-store'):null // 持久化存储
// const Store = isNode?require('electron-store'):null // 持久化存储
import store from './store'
// 常用变量
const BaseUrl = isNode?process.env['ELECTRON_RENDERER_URL']+'/#':''
@ -23,18 +24,13 @@ const isDev = isNode?process.env.NODE_ENV !== 'production':''
export const ipcMain = Remote?.ipcMain || {}
// 暴露sessionStore存储对象
export const sessionStore = Store ? new Store({
name: 'session-store', // 存储文件名
fileExtension: 'ini', // 文件后缀名
encryptionKey: 'BvPLmgCC4DSIG0KkTec5' // 数据加密-防止用户直接改配置
}) : {}
export const sessionStore = store.sessionStore
// 暴露localStore存储对象
export const localStore = Store ? new Store({
name: 'local-store', // 存储文件名
fileExtension: 'ini', // 文件后缀名
encryptionKey: '6CyoHQmUaPmLzvVsh' // 数据加密-防止用户直接改配置
}) : {}
export const localStore = store.localStore
// 暴露Store存储对象
export const Store = store
/**
* 获取静态资源开发和生产环境

View File

@ -122,6 +122,7 @@
:book-id="uploadData.textbookId"
@add-success="initReserv"
></reserv>
<!-- <button @click="ipcMsgSend('tool-sphere:close')">测试</button> -->
</template>
<script setup>
import { Check } from '@element-plus/icons-vue'
@ -144,7 +145,7 @@ import { parseCataByNode, creatPPT, asyncLocalFile } from '@/utils/talkFile'
import FileOperBatch from '@/views/prepare/container/file-oper-batch.vue'
import SetHomework from '@/components/set-homework/index.vue'
import outLink from '@/utils/linkConfig'
import { createWindow, sessionStore } from '@/utils/tool'
import { createWindow, ipcMsgSend } from '@/utils/tool'
import { cloneDeep } from 'lodash'
import { delClasswork } from '@/api/teaching/classwork'
import { getSelfReserv, startClass } from '@/api/classManage'

View File

@ -84,10 +84,10 @@ const btnList = [ // 工具栏按钮列表
onMounted(async() => {
if (!electron) return //
// console.log(sessionStore)
// window.test = sessionStore
// window.test1 = toolStore
getClassInfo() // ex3
setTimeout(() => {
resetStatus() // -
}, 200);
resetStatus() // -
})
// ==== ===