diff --git a/electron.vite.config.mjs b/electron.vite.config.mjs index 12cab0b..fe59903 100644 --- a/electron.vite.config.mjs +++ b/electron.vite.config.mjs @@ -22,8 +22,8 @@ export default defineConfig({ server: { proxy: { '/dev-api': { - // target: 'http://27.128.240.72:7865', - target: 'http://192.168.2.52:7863', + target: 'http://27.128.240.72:7865', + // target: 'http://192.168.2.52:7863', changeOrigin: true, rewrite: (p) => p.replace(/^\/dev-api/, '') }, diff --git a/src/renderer/src/assets/iconfont/iconfont.css b/src/renderer/src/assets/iconfont/iconfont.css index be9b576..529bfc4 100644 --- a/src/renderer/src/assets/iconfont/iconfont.css +++ b/src/renderer/src/assets/iconfont/iconfont.css @@ -1,9 +1,9 @@ @font-face { font-family: "iconfont"; /* Project id 2794390 */ - src: url('iconfont.woff2?t=1720953486579') format('woff2'), - url('iconfont.woff?t=1720953486579') format('woff'), - url('iconfont.ttf?t=1720953486579') format('truetype'), - url('iconfont.svg?t=1720953486579#iconfont') format('svg'); + src: url('iconfont.woff2?t=1721179711733') format('woff2'), + url('iconfont.woff?t=1721179711733') format('woff'), + url('iconfont.ttf?t=1721179711733') format('truetype'), + url('iconfont.svg?t=1721179711733#iconfont') format('svg'); } .iconfont { @@ -14,6 +14,10 @@ -moz-osx-font-smoothing: grayscale; } +.icon-yidongdaozu:before { + content: "\e67d"; +} + .icon-shanchu:before { content: "\e852"; } diff --git a/src/renderer/src/assets/iconfont/iconfont.js b/src/renderer/src/assets/iconfont/iconfont.js index 8bc5b23..6058761 100644 --- a/src/renderer/src/assets/iconfont/iconfont.js +++ b/src/renderer/src/assets/iconfont/iconfont.js @@ -1 +1 @@ -window._iconfont_svg_string_2794390='',function(l){var h=(h=document.getElementsByTagName("script"))[h.length-1],v=h.getAttribute("data-injectcss"),h=h.getAttribute("data-disable-injectsvg");if(!h){var c,a,t,z,p,i=function(h,v){v.parentNode.insertBefore(h,v)};if(v&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(h){console&&console.log(h)}}c=function(){var h,v=document.createElement("div");v.innerHTML=l._iconfont_svg_string_2794390,(v=v.getElementsByTagName("svg")[0])&&(v.setAttribute("aria-hidden","true"),v.style.position="absolute",v.style.width=0,v.style.height=0,v.style.overflow="hidden",v=v,(h=document.body).firstChild?i(v,h.firstChild):h.appendChild(v))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(a=function(){document.removeEventListener("DOMContentLoaded",a,!1),c()},document.addEventListener("DOMContentLoaded",a,!1)):document.attachEvent&&(t=c,z=l.document,p=!1,d(),z.onreadystatechange=function(){"complete"==z.readyState&&(z.onreadystatechange=null,M())})}function M(){p||(p=!0,t())}function d(){try{z.documentElement.doScroll("left")}catch(h){return void setTimeout(d,50)}M()}}(window); \ No newline at end of file +window._iconfont_svg_string_2794390='',function(l){var h=(h=document.getElementsByTagName("script"))[h.length-1],v=h.getAttribute("data-injectcss"),h=h.getAttribute("data-disable-injectsvg");if(!h){var c,a,t,z,p,i=function(h,v){v.parentNode.insertBefore(h,v)};if(v&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(h){console&&console.log(h)}}c=function(){var h,v=document.createElement("div");v.innerHTML=l._iconfont_svg_string_2794390,(v=v.getElementsByTagName("svg")[0])&&(v.setAttribute("aria-hidden","true"),v.style.position="absolute",v.style.width=0,v.style.height=0,v.style.overflow="hidden",v=v,(h=document.body).firstChild?i(v,h.firstChild):h.appendChild(v))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(a=function(){document.removeEventListener("DOMContentLoaded",a,!1),c()},document.addEventListener("DOMContentLoaded",a,!1)):document.attachEvent&&(t=c,z=l.document,p=!1,d(),z.onreadystatechange=function(){"complete"==z.readyState&&(z.onreadystatechange=null,M())})}function M(){p||(p=!0,t())}function d(){try{z.documentElement.doScroll("left")}catch(h){return void setTimeout(d,50)}M()}}(window); \ No newline at end of file diff --git a/src/renderer/src/assets/iconfont/iconfont.json b/src/renderer/src/assets/iconfont/iconfont.json index f1a76dc..d630aec 100644 --- a/src/renderer/src/assets/iconfont/iconfont.json +++ b/src/renderer/src/assets/iconfont/iconfont.json @@ -5,6 +5,13 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "1207918", + "name": "移动到组", + "font_class": "yidongdaozu", + "unicode": "e67d", + "unicode_decimal": 59005 + }, { "icon_id": "8288874", "name": "删除", diff --git a/src/renderer/src/assets/iconfont/iconfont.svg b/src/renderer/src/assets/iconfont/iconfont.svg index ede225e..69fe782 100644 --- a/src/renderer/src/assets/iconfont/iconfont.svg +++ b/src/renderer/src/assets/iconfont/iconfont.svg @@ -14,6 +14,8 @@ /> + + diff --git a/src/renderer/src/assets/iconfont/iconfont.ttf b/src/renderer/src/assets/iconfont/iconfont.ttf index 585b7fa..f179db3 100644 Binary files a/src/renderer/src/assets/iconfont/iconfont.ttf and b/src/renderer/src/assets/iconfont/iconfont.ttf differ diff --git a/src/renderer/src/assets/iconfont/iconfont.woff b/src/renderer/src/assets/iconfont/iconfont.woff index f4d0eb5..06b4847 100644 Binary files a/src/renderer/src/assets/iconfont/iconfont.woff and b/src/renderer/src/assets/iconfont/iconfont.woff differ diff --git a/src/renderer/src/assets/iconfont/iconfont.woff2 b/src/renderer/src/assets/iconfont/iconfont.woff2 index f3d2708..280df28 100644 Binary files a/src/renderer/src/assets/iconfont/iconfont.woff2 and b/src/renderer/src/assets/iconfont/iconfont.woff2 differ diff --git a/src/renderer/src/components/choose-textbook/index.vue b/src/renderer/src/components/choose-textbook/index.vue index 82b0483..a9db674 100644 --- a/src/renderer/src/components/choose-textbook/index.vue +++ b/src/renderer/src/components/choose-textbook/index.vue @@ -6,7 +6,6 @@
- @@ -14,7 +13,6 @@ {{ node.label }} -
@@ -87,14 +85,25 @@ const getSubjectContent = async () => { entpcourseedituserid: userId, pageSize: 500 } - const { rows } = await listEvaluation(params) - evaluationList.value = rows + + let data; + if (localStorage.getItem('evaluationList')) { + evaluationList.value = JSON.parse(localStorage.getItem('evaluationList')) + data = evaluationList.value + } + else { + const { rows } = await listEvaluation(params) + localStorage.setItem('evaluationList', JSON.stringify(rows)) + evaluationList.value = rows + data = rows + } + //获取教材版本 await getSubject() //上册 - volumeOne.value = rows.filter(item => item.level == 1 && item.semester == '上册') + volumeOne.value = data.filter(item => item.level == 1 && item.semester == '上册') //下册 - volumeTwo.value = rows.filter(item => item.level == 1 && item.semester == '下册') + volumeTwo.value = data.filter(item => item.level == 1 && item.semester == '下册') getTreeData() } @@ -175,7 +184,7 @@ const findParentByChildId = (treeData, targetNodeId) => { } // 如果当前节点没有匹配的子节点,则递归检查当前节点的子节点 if (node.children) { - let parentNode = findParentNode(node.children, targetNodeId); + let parentNode = findParentByChildId(node.children, targetNodeId); if (parentNode) { return parentNode; } @@ -214,8 +223,15 @@ const transData = (data) => { //获取教材 const getSubject = async () => { - const { rows } = await listEvaluation({ itemkey: "version", pageSize: 500 }) - subjectList.value = rows.filter(item => item.edustage == edustage && item.edusubject == edusubject && isHaveUnit(item.id)) + if (localStorage.getItem('subjectList')) { + subjectList.value = JSON.parse(localStorage.getItem('subjectList')) + } + else { + const { rows } = await listEvaluation({ itemkey: "version", pageSize: 500 }) + subjectList.value = rows.filter(item => item.edustage == edustage && item.edusubject == edusubject && isHaveUnit(item.id)) + localStorage.setItem('subjectList', JSON.stringify(subjectList.value)) + } + // 默认第一个 curBookName.value = subjectList.value[0].itemtitle curBookId.value = subjectList.value[0].id @@ -292,8 +308,7 @@ onMounted(() => { } .book-list { - padding-top: 45px; - padding-left: 10px; + padding: 45px 10px 0 10px; flex: 1; } } @@ -349,12 +364,12 @@ onMounted(() => { :deep(.el-tree-node) { .el-tree-node__content { height: 40px; + border-radius: 10px; &:hover { background-color: #eaf3ff; } } - } .tree-label { @@ -364,7 +379,7 @@ onMounted(() => { } :deep(.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content) { - background-color: #d9e8fe !important; + background-color: #eaf3ff !important; color: #409EFF } \ No newline at end of file diff --git a/src/renderer/src/components/move-file/index.vue b/src/renderer/src/components/move-file/index.vue new file mode 100644 index 0000000..71c7837 --- /dev/null +++ b/src/renderer/src/components/move-file/index.vue @@ -0,0 +1,384 @@ + + + + + \ No newline at end of file diff --git a/src/renderer/src/components/upload-dialog/index.vue b/src/renderer/src/components/upload-dialog/index.vue index ea64fd6..61df734 100644 --- a/src/renderer/src/components/upload-dialog/index.vue +++ b/src/renderer/src/components/upload-dialog/index.vue @@ -90,7 +90,7 @@ const hanleFileChange = (file) => { const fileType = file.raw.type if (!(audioTypes.includes(fileType) || videoTypes.includes(fileType) || wordTypes.includes(fileType) || pptTypes.includes(fileType) || pdfTypes.includes(fileType) || zipTypes.includes(fileType) || imgTypes.includes(fileType) || textTypes.includes(fileType))) { - ElMessage.error('文件格式错误! 请上传图片、音频、视频、word、ppt、pdf、text、zip文件!') + ElMessage.error('文件格式错误! 请上传图片、音频、视频、word、ppt、pdf、txt、zip文件!') return false } // 验证文件大小 @@ -100,7 +100,7 @@ const hanleFileChange = (file) => { return false } if (file.status === 'ready') { - + // 给一个默认的fileData file.fileData = { fileFlag: '课件', @@ -110,7 +110,6 @@ const hanleFileChange = (file) => { } } - // 删除 const delFile = (index) => { fileList.value.splice(index, 1) diff --git a/src/renderer/src/layout/components/Uploader.vue b/src/renderer/src/layout/components/Uploader.vue index a52f2cd..5d554ce 100644 --- a/src/renderer/src/layout/components/Uploader.vue +++ b/src/renderer/src/layout/components/Uploader.vue @@ -179,6 +179,10 @@ export default { } .prepare-body-main-item { position: relative; + display: flex; + align-items: center; + border-bottom: 1px solid rgba(131, 131, 127, 0.17); + padding: 10px 0; .prepare-uploader-progress { height: 100%; position: absolute; @@ -189,10 +193,7 @@ export default { &:hover { background-color: rgba(144, 147, 153, 0.2); } - display: flex; - align-items: center; - border-bottom: 1px solid rgba(131, 131, 127, 0.17); - padding: 10px 0; + .prepare-body-main-item-icon { width: 80px; } diff --git a/src/renderer/src/store/modules/user.js b/src/renderer/src/store/modules/user.js index 8066ded..df770b7 100644 --- a/src/renderer/src/store/modules/user.js +++ b/src/renderer/src/store/modules/user.js @@ -84,6 +84,7 @@ const useUserStore = defineStore( this.token = '' this.roles = [] this.permissions = [] + localStorage.clear() removeToken() resolve() }).catch(error => { diff --git a/src/renderer/src/views/resource/container/resoure-list.vue b/src/renderer/src/views/resource/container/resoure-list.vue index 9f80df6..253b9a7 100644 --- a/src/renderer/src/views/resource/container/resoure-list.vue +++ b/src/renderer/src/views/resource/container/resoure-list.vue @@ -37,6 +37,10 @@ 下载 +
+ + 移动至 +
@@ -54,10 +58,12 @@ :page-sizes="[10, 20, 30, 50]" background layout="total, sizes, prev, pager, next, jumper" :total="sourceStore.result.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> +