diff --git a/electron-builder.yml b/electron-builder.yml index c8b395c..46e484d 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -13,11 +13,6 @@ asarUnpack: win: executableName: AIx icon: resources/logo2.ico - extraFiles: - - from: ./node_modules/im_electron_sdk/lib/ - to: ./resources - filter: - - '**/*' nsis: oneClick: false allowToChangeInstallationDirectory: true @@ -50,3 +45,9 @@ publish: url: https://file.ysaix.com:7868/src/assets/smarttalk/ electronDownload: mirror: https://npmmirror.com/mirrors/electron/ +# 额外依赖打包到输出目录 +extraFiles: + - from: ./node_modules/im_electron_sdk/lib/ + to: ./resources + filter: + - '**/*' diff --git a/package.json b/package.json index 38a9124..b554ef5 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "crypto-js": "^4.2.0", "electron-dl-manager": "^3.0.0", "electron-log": "^5.1.7", + "electron-store": "8.0.0", "electron-updater": "^6.1.7", "element-plus": "^2.7.6", "fabric": "^5.3.0", @@ -63,18 +64,5 @@ "vite-plugin-windicss": "^1.9.3", "vue": "^3.4.30", "windicss": "^3.5.6" - }, - "build": { - "win": { - "extraFiles": [ - { - "from": "./node_modules/im_electron_sdk/lib/", - "to": "./resources", - "filter": [ - "**/*" - ] - } - ] - } } } diff --git a/resources/logo.png b/resources/logo.png new file mode 100644 index 0000000..45f6e65 Binary files /dev/null and b/resources/logo.png differ diff --git a/src/main/index.js b/src/main/index.js index f10b4de..22ea35c 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -3,13 +3,17 @@ import { join } from 'path' import { electronApp, optimizer, is } from '@electron-toolkit/utils' import icon from '../../resources/icon.png?asset' import File from './file' -import chat from './chat' // chat封装 +import chat from './chat' // chat封装 +import Store from './store' // Store封装 +import updateInit from './update' + // 代理 electron/remote // 第一步:引入remote import remote from '@electron/remote/main' // 第二步: 初始化remote remote.initialize() -import updateInit from './update' +// 持久化数据-初始化 +Store.initialize() File({ app, shell, BrowserWindow, ipcMain }) process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true' diff --git a/src/main/store.js b/src/main/store.js new file mode 100644 index 0000000..9bb6fcf --- /dev/null +++ b/src/main/store.js @@ -0,0 +1,32 @@ +/** + * @description 解决 主进程|渲染进程 数据共享 + */ +import Store from 'electron-store' // 持久化存储 + +// 设置ipc与渲染器通信 +Store.initRenderer() + +// 默认共享数据 +const defaultData = { + model: 'select', // 悬浮球-当前模式 + showBoardAll: false, // 全屏画板-是否显示 + isPdfWin: false, // pdf窗口是否打开 + isToolWin: false, // 工具窗口是否打开 + curSubjectNode: { + data: {}, // 当前教材节点 (包含当前教材 单元) + querySearch: {} // 查询资源所需参数 + } +} + +// 初始化 +export function initialize(){ + const store = new Store({ + name: 'cache-store', // 存储文件名 + fileExtension: 'ini', // 文件后缀名 + encryptionKey: 'Eihrjwi7h104h2Kub423' // 数据加密-防止用户直接改配置 + }) + store.clear() // 先清除-所有缓存数据 + store.set(defaultData) // 初始化-默认数据 + return store +} +export default { initialize } \ No newline at end of file diff --git a/src/renderer/src/api/classManage/index.js b/src/renderer/src/api/classManage/index.js index d07edf6..14471ee 100644 --- a/src/renderer/src/api/classManage/index.js +++ b/src/renderer/src/api/classManage/index.js @@ -50,7 +50,7 @@ export function getClassmain(id) { // 获取小组列表 export function listClassgroup(query) { return request({ - url: '/education/classgroup/list', + url: '/education/classgroup/new/list', method: 'get', params: query }) @@ -177,8 +177,8 @@ export function endClass(id) { } /** * @description 获取课堂信息 - * @param {*} id - * @returns + * @param {*} id + * @returns */ export function getClassInfo(id) { return request({ diff --git a/src/renderer/src/components/choose-textbook/third.vue b/src/renderer/src/components/choose-textbook/third.vue index 14d3d45..554a6f5 100644 --- a/src/renderer/src/components/choose-textbook/third.vue +++ b/src/renderer/src/components/choose-textbook/third.vue @@ -163,6 +163,10 @@ const handleNodeClick = (data,node) => { onMounted(() => { titleName.value = `${useStore.user.edustage}-${useStore.user.edusubject}` treeLoading.value = true + //存在查看无课程的情况,两秒后关闭loading框 + setTimeout(() => { + treeLoading.value = false + },2000) }) //监听数据变化 watch(() => useThird,() => { diff --git a/src/renderer/src/components/choose-textbook/third/index.vue b/src/renderer/src/components/choose-textbook/third/index.vue index 68903df..2b7a6a2 100644 --- a/src/renderer/src/components/choose-textbook/third/index.vue +++ b/src/renderer/src/components/choose-textbook/third/index.vue @@ -1,7 +1,7 @@ @@ -41,7 +43,7 @@ import { onMounted, ref, reactive, watchEffect } from 'vue' import { useRoute } from 'vue-router'; import { ElMessageBox, ElMessage, ElLoading } from 'element-plus' import * as classManageApi from '@/api/classManage' -import logo from '@root/resources/icon.png' // logo +import logo from '@root/resources/logo.png' // logo import boardVue from './components/board.vue' // 画板-子组件 import sideVue from './components/side.vue' // 画板-子组件 import upvoteVue from './components/upvote.vue' // 点赞-子组件 @@ -109,6 +111,23 @@ const tabChange = (val) => { const logoHandle = (e,t) => { if (Date.now() - dragtime.value < 200) { isFold.value = !isFold.value + setTimeout(() => { + // 处理: 工具被拖动到右侧时功能被遮挡 + const dom = document.querySelector('.tool-bottom-all') + const { x } = dom.getBoundingClientRect() + const w = window.innerWidth - (470 || 80) + // if (x > w) dom.style.left = `${w}px` + if (x > w) { // 动画 + let left = x + const animatFn = () => { + left-=30 + if (left < w) left == w + dom.style.left = `${left}px` + if (left > w) requestAnimationFrame(animatFn) + } + requestAnimationFrame(animatFn) + } + }, 20); } } // 底部工具栏:移入移出-是否穿透 @@ -262,4 +281,15 @@ watchEffect(() => { } } } +.a-fade-leave-active,.a-fade-enter-active{ + transition: all .3s; +} +.a-fade-enter-from,.a-fade-leave-to{ + width: 0; + opacity: 0; +} +.a-fade-enter-to,.a-fade-leave-from{ + width: 350px; + opacity: 1; +}