From 70ba70df45b618913c4cbf903dbc6e124a5f9f69 Mon Sep 17 00:00:00 2001
From: ekooo <80906036@qq.com>
Date: Tue, 17 Sep 2024 19:56:32 +0800
Subject: [PATCH 01/15] =?UTF-8?q?[=E4=BD=9C=E4=B8=9A=E8=AE=BE=E8=AE=A1]=20?=
=?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/components/set-homework/index.vue | 3 +-
src/renderer/src/router/index.js | 6 +
.../src/views/classTaskAssign/index.vue | 242 ++++++++++++++++++
src/renderer/src/views/desktop/index.vue | 5 +-
src/renderer/src/views/examReport/index.vue | 2 +-
5 files changed, 254 insertions(+), 4 deletions(-)
create mode 100644 src/renderer/src/views/classTaskAssign/index.vue
diff --git a/src/renderer/src/components/set-homework/index.vue b/src/renderer/src/components/set-homework/index.vue
index 7518cf2..41be0bb 100644
--- a/src/renderer/src/components/set-homework/index.vue
+++ b/src/renderer/src/components/set-homework/index.vue
@@ -242,7 +242,8 @@ const onSubmit = (formEl) => {
msgcontent: '',
teachername: userInfo.nickName,
unixstamp: new Date().getTime(),
- worktype: props.row.worktype
+ worktype: props.row.worktype,
+ status: '1', //将推送的作业状态改为1
}
ary.push(obj)
}
diff --git a/src/renderer/src/router/index.js b/src/renderer/src/router/index.js
index 6bdcac9..5e0caa1 100644
--- a/src/renderer/src/router/index.js
+++ b/src/renderer/src/router/index.js
@@ -68,6 +68,12 @@ export const constantRoutes = [
name: 'class',
meta: {title: '班级中心'},
},
+ {
+ path: '/classTaskAssign',
+ component: () => import('@/views/classTaskAssign/index.vue'),
+ name: 'classTaskAssign',
+ meta: {title: '作业设计'},
+ },
{
path: '/classTask',
component: () => import('@/views/classTask/classTask.vue'),
diff --git a/src/renderer/src/views/classTaskAssign/index.vue b/src/renderer/src/views/classTaskAssign/index.vue
new file mode 100644
index 0000000..4c28672
--- /dev/null
+++ b/src/renderer/src/views/classTaskAssign/index.vue
@@ -0,0 +1,242 @@
+
+
+
+
+
+
+
+ 作业设计
+ 作业布置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/renderer/src/views/desktop/index.vue b/src/renderer/src/views/desktop/index.vue
index 2d93622..91132bf 100644
--- a/src/renderer/src/views/desktop/index.vue
+++ b/src/renderer/src/views/desktop/index.vue
@@ -104,8 +104,9 @@ const menuList = [{
{
name: '作业设计',
icon: 'icon-jiaoxuefansi',
- isOuter: true,
- path: '/teaching/classtaskassign?titleName=作业布置&&openDialog=newClassTask'
+ path: '/classTaskAssign'
+ //isOuter: true,
+ //path: '/teaching/classtaskassign?titleName=作业布置&&openDialog=newClassTask'
},
{
name: '作业布置',
diff --git a/src/renderer/src/views/examReport/index.vue b/src/renderer/src/views/examReport/index.vue
index 8a67c39..8548fa9 100644
--- a/src/renderer/src/views/examReport/index.vue
+++ b/src/renderer/src/views/examReport/index.vue
@@ -260,7 +260,7 @@ onMounted(() => {
diff --git a/src/renderer/src/views/desktop/index.vue b/src/renderer/src/views/desktop/index.vue
index 2d93622..9f066b1 100644
--- a/src/renderer/src/views/desktop/index.vue
+++ b/src/renderer/src/views/desktop/index.vue
@@ -104,8 +104,9 @@ const menuList = [{
{
name: '作业设计',
icon: 'icon-jiaoxuefansi',
- isOuter: true,
- path: '/teaching/classtaskassign?titleName=作业布置&&openDialog=newClassTask'
+ //isOuter: true,
+ //path: '/teaching/classtaskassign?titleName=作业布置&&openDialog=newClassTask'
+ path: '/newClassTask'
},
{
name: '作业布置',
From 2c6da76cf77367efa86fbb7ecc841b08166973bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E4=BA=86=E4=B8=AA=E7=99=BD?= <543593352@qq.com>
Date: Thu, 19 Sep 2024 10:52:33 +0800
Subject: [PATCH 03/15] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E8=AE=BE=E8=AE=A1?=
=?UTF-8?q?=E8=B7=B3=E8=BD=ACweb=E7=AB=AF=E9=80=BB=E8=BE=91=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/src/hooks/useGetClassWork.js | 201 ++++++++
src/renderer/src/utils/date.js | 3 +
.../container/newTask/taskTypeView.vue | 454 ++++++++++++++++++
.../src/views/classTask/newClassTask.vue | 177 +++----
src/renderer/src/views/desktop/index.vue | 28 +-
5 files changed, 757 insertions(+), 106 deletions(-)
create mode 100644 src/renderer/src/hooks/useGetClassWork.js
create mode 100644 src/renderer/src/views/classTask/container/newTask/taskTypeView.vue
diff --git a/src/renderer/src/hooks/useGetClassWork.js b/src/renderer/src/hooks/useGetClassWork.js
new file mode 100644
index 0000000..7aa313a
--- /dev/null
+++ b/src/renderer/src/hooks/useGetClassWork.js
@@ -0,0 +1,201 @@
+import { nextTick, toRaw } from 'vue'
+import useUserStore from '@/store/modules/user'
+import { listEvaluation } from '@/api/subject'
+
+const userStore = useUserStore()
+const { edustage, edusubject } = userStore.user
+
+let evaluationList = []; // 教材版本list
+let subjectList = []; // 教材list
+//当前教材ID
+let curBookId = -1;
+
+/**
+ * 外部链接初始化获取 跳转web端的 unitId 专用,
+ * 暂时: 初始化作业设计专用,后期可能会取消
+ */
+export const useGetClassWork = async () => {
+
+ const params = {
+ edusubject,
+ edustage,
+ // entpcourseedituserid: userId,
+ itemgroup: 'textbook',
+ orderby: 'orderidx asc',
+ pageSize: 10000
+ }
+
+ if(localStorage.getItem('evaluationList')){
+ evaluationList = JSON.parse(localStorage.getItem('evaluationList'))
+ }else{
+ const { rows } = await listEvaluation(params)
+ localStorage.setItem('evaluationList', JSON.stringify(rows))
+ evaluationList = rows
+ }
+
+ //获取教材版本
+ await getSubject()
+ //上册
+ /**
+ * 不区分上下册
+ * 2024/08/20调整
+ */
+ // volumeOne = data.filter(item => item.level == 1 && item.semester == '上册')
+ // volumeTwo = data.filter(item => item.level == 1 && item.semester == '下册')
+ getTreeData()
+}
+
+//获取教材
+const getSubject = async () => {
+ if(localStorage.getItem('subjectList')){
+ subjectList = JSON.parse(localStorage.getItem('subjectList'))
+ }else{
+ const { rows } = await listEvaluation({ itemkey: "version", edusubject, edustage, pageSize: 10000,orderby: 'orderidx asc', })
+
+ // subjectList = rows.filter(item => item.edustage == edustage && item.edusubject == edusubject)
+ subjectList = rows
+ localStorage.setItem('subjectList', JSON.stringify(subjectList))
+ }
+
+ // 默认第一个
+ if(!subjectList.length) return
+ // curBookName = subjectList[0].itemtitle
+ curBookId = subjectList[0].id
+ // curBookImg = BaseUrl + subjectList[0].avartar
+ // curBookPath = subjectList[0].fileurl
+}
+
+
+const getTreeData = () => {
+ //数据过滤
+ let upData = transData(evaluationList)
+
+ if(upData.length){
+ // treeData = [...upData]
+ }else{
+ // treeData = []
+ return
+ }
+ nextTick(() => {
+ // defaultExpandedKeys = [treeData[0].id]
+ // let currentNodeObj = {...getLastLevelData(upData)[0]}
+ let currentNodeId = getLastLevelData(upData)[0].id
+ let currentNodeName = getLastLevelData(upData)[0].label
+
+ let curNode = {
+ id: currentNodeId,
+ label: currentNodeName,
+ // itemtitle: currentNodeObj.itemtitle,
+ // edudegree: currentNodeObj.edudegree,
+ // edustage: currentNodeObj.edustage,
+ // edusubject: currentNodeObj.edusubject,
+ }
+ let parentNode = findParentByChildId(upData, currentNodeId)
+ curNode.parentNode = toRaw(parentNode)
+
+ let levelFirstId = '';
+ let levelSecondId = '';
+
+ if (curNode.parentNode) {
+ levelFirstId = curNode.parentNode.id
+ } else {
+ levelFirstId = curNode.id
+ levelSecondId = ''
+ }
+ // 头部 教材分析、作业设计:打开外部链接需要当前章节ID
+ localStorage.setItem('unitId', JSON.stringify({ levelFirstId, levelSecondId}))
+
+ // const data = {
+ // textBook: {
+ // curBookId: curBookId,
+ // curBookName: curBookName,
+ // curBookImg: curBookImg,
+ // curBookPath: curBookPath
+ // },
+ // node: curNode
+ // }
+ // emit('changeBook', data)
+ })
+}
+
+const getLastLevelData = (tree) => {
+ let lastLevelData = [];
+ // 递归函数遍历树形结构
+ function traverseTree(nodes) {
+ nodes.forEach((node) => {
+ // 如果当前节点有子节点,继续遍历
+ if (node.children && node.children.length > 0) {
+ traverseTree(node.children);
+ } else {
+ // 如果没有子节点,说明是最后一层的节点
+ lastLevelData.push(node);
+ }
+ });
+ }
+
+ // 调用递归函数开始遍历
+ traverseTree(tree);
+
+ // 返回最后一层的数据
+ return lastLevelData;
+}
+
+// 根据id 拿到父节点数据
+const findParentByChildId = (treeData, targetNodeId) => {
+ // 递归查找函数
+ // 遍历树中的每个节点
+ for (let node of treeData) {
+ // 检查当前节点的子节点是否包含目标子节点 ID
+ if (node.children && node.children.some(child => child.id === targetNodeId)) {
+ // 如果当前节点的某个子节点的 ID 匹配目标子节点 ID,则当前节点即为父节点
+ return node;
+ }
+ // 如果当前节点没有匹配的子节点,则递归检查当前节点的子节点
+ if (node.children) {
+ let parentNode = findParentByChildId(node.children, targetNodeId);
+ if (parentNode) {
+ return parentNode;
+ }
+ }
+ }
+ // 如果未找到匹配的父节点,则返回 null 或者适当的默认值
+ return null;
+}
+
+
+const transData = (data) => {
+ let ary = []
+ data.forEach(item => {
+ let obj = {}
+ // 根据当前教材ID 过滤出对应的单元、章节
+ if (item.rootid == curBookId) {
+ if(item.level == 1){
+ obj.label = item.itemtitle
+ obj.id = item.id
+ obj.itemtitle = item.itemtitle
+ obj.edudegree = item.edudegree
+ obj.edustage = item.edustage
+ obj.edusubject = item.edusubject
+ let ary2 = []
+ evaluationList.forEach(el => {
+ let obj2 = {}
+ if (item.id == el.parentid) {
+ obj2 = {
+ label: el.itemtitle,
+ id: el.id,
+ itemtitle : el.itemtitle,
+ edudegree : el.edudegree,
+ edustage : el.edustage,
+ edusubject : el.edusubject,
+ }
+ ary2.push(obj2)
+ }
+ obj.children = ary2
+ })
+ ary.push(obj)
+ }
+ }
+ })
+ return ary
+}
+
diff --git a/src/renderer/src/utils/date.js b/src/renderer/src/utils/date.js
index 2adf3d5..29b0f44 100644
--- a/src/renderer/src/utils/date.js
+++ b/src/renderer/src/utils/date.js
@@ -97,6 +97,9 @@ export const getCurrentTime = (format)=> {
if(format == 'HH:mm'){
return `${hours}:${minutes}`;
}
+ if(format == 'MMDD'){
+ return `${month}${day}`;
+ }
}
/**
*
diff --git a/src/renderer/src/views/classTask/container/newTask/taskTypeView.vue b/src/renderer/src/views/classTask/container/newTask/taskTypeView.vue
new file mode 100644
index 0000000..e0f3ac9
--- /dev/null
+++ b/src/renderer/src/views/classTask/container/newTask/taskTypeView.vue
@@ -0,0 +1,454 @@
+
+
+
+
+
+
+
+
+
+ {{ item }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查找
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.entpname }} {{ scope.row.editusername }}
+ {{ scope.row.worktag }}
+
+
+
+
+
+
+ 添加
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.worktype }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/src/views/classTask/newClassTask.vue b/src/renderer/src/views/classTask/newClassTask.vue
index 856f3b1..3bf6214 100644
--- a/src/renderer/src/views/classTask/newClassTask.vue
+++ b/src/renderer/src/views/classTask/newClassTask.vue
@@ -4,84 +4,53 @@
default-active="1"
class="el-menu-vertical-demo"
:collapse="isCollapse"
- :style="{ width: isCollapse ? '64px' : '300px'}"
- @open="handleOpen"
- @close="handleClose"
>
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
- 打开
- 折叠
-
-
-
-
-
-
+
+
+
+
+
+
+ 作业范围
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
From db2be260a7fd0829c6790ff609ee13ac4904ab58 Mon Sep 17 00:00:00 2001
From: lyc
Date: Thu, 19 Sep 2024 11:25:01 +0800
Subject: [PATCH 04/15] =?UTF-8?q?=E6=95=99=E6=9D=90edit?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/components/choose-textbook/index.vue | 59 +++++++++++++++----
1 file changed, 49 insertions(+), 10 deletions(-)
diff --git a/src/renderer/src/components/choose-textbook/index.vue b/src/renderer/src/components/choose-textbook/index.vue
index 7f3c178..4e4d3df 100644
--- a/src/renderer/src/components/choose-textbook/index.vue
+++ b/src/renderer/src/components/choose-textbook/index.vue
@@ -6,7 +6,7 @@
-
@@ -134,6 +134,10 @@ const changeBook = ({ id, itemtitle, avartar, fileurl }) => {
curBookName.value = itemtitle
curBookImg.value = BaseUrl + avartar
curBookPath.value = fileurl
+
+ localStorage.removeItem('defaultExpandedKeys')
+ localStorage.removeItem('currentNodeId')
+ localStorage.setItem('curBook', JSON.stringify({id, itemtitle, avartar, fileurl}))
getTreeData()
setTimeout(() => {
dialogVisible.value = false
@@ -144,7 +148,6 @@ const getTreeData = () => {
//数据过滤
let upData = transData(evaluationList.value)
-
if(upData.length){
treeData.value = [...upData]
}
@@ -153,10 +156,22 @@ const getTreeData = () => {
return
}
nextTick(() => {
- defaultExpandedKeys.value = [treeData.value[0].id]
- currentNode.data = getLastLevelData(treeData.value)[0]
- currentNodeId.value = getLastLevelData(treeData.value)[0].id
- currentNodeName.value = getLastLevelData(treeData.value)[0].label
+
+ let defaultCurNodeId = localStorage.getItem('currentNodeId')
+ if(defaultCurNodeId){
+ defaultCurNodeId = JSON.parse(defaultCurNodeId)
+ const data = findNode(defaultCurNodeId)
+ currentNode.data = findNode(defaultCurNodeId)
+ currentNodeId.value = data.id
+ currentNodeName.value = data.label
+ }
+ else{
+ defaultExpandedKeys.value = [treeData.value[0].id]
+ currentNode.data = getLastLevelData(treeData.value)[0]
+ currentNodeId.value = getLastLevelData(treeData.value)[0].id
+ currentNodeName.value = getLastLevelData(treeData.value)[0].label
+ }
+
emitChangeBook()
})
@@ -183,6 +198,9 @@ const emitChangeBook = () => {
},
node: curNode
}
+
+ localStorage.setItem('defaultExpandedKeys', JSON.stringify(defaultExpandedKeys.value))
+ localStorage.setItem('currentNodeId', JSON.stringify(currentNodeId.value))
emit('changeBook', data)
}
@@ -230,6 +248,11 @@ const findParentByChildId = (treeData, targetNodeId) => {
return null;
}
+const findNode = (id) =>{
+ if(!id) return
+ return evaluationList.value.find( item => item.id == id)
+}
+
const transData = (data) => {
let ary = []
data.forEach(item => {
@@ -281,10 +304,21 @@ const getSubject = async () => {
// 默认第一个
if(!subjectList.value.length) return
- curBookName.value = subjectList.value[0].itemtitle
- curBookId.value = subjectList.value[0].id
- curBookImg.value = BaseUrl + subjectList.value[0].avartar
- curBookPath.value = subjectList.value[0].fileurl
+ let curBook = localStorage.getItem('curBook')
+ if(curBook){
+ curBook = JSON.parse(curBook)
+ curBookName.value = curBook.itemtitle
+ curBookId.value = curBook.id
+ curBookImg.value = BaseUrl + curBook.avartar
+ curBookPath.value = curBook.fileurl
+ }
+ else{
+ curBookName.value = subjectList.value[0].itemtitle
+ curBookId.value = subjectList.value[0].id
+ curBookImg.value = BaseUrl + subjectList.value[0].avartar
+ curBookPath.value = subjectList.value[0].fileurl
+ localStorage.setItem('curBookId', curBookId.value)
+ }
}
@@ -321,7 +355,12 @@ const handleNodeClick = (data, node) => {
node: toRaw(nodeData)
}
currentNode.data = curData
+
+ localStorage.setItem('defaultExpandedKeys', nodeData.parentNode ? JSON.stringify([parentNode.id]) : JSON.stringify([data.id]))
+ localStorage.setItem('currentNodeId', JSON.stringify(data.id))
+
emit('nodeClick', curData)
+
}
onMounted(() => {
getSubjectContent()
From 0ef5ef424f90053b99b1cb833ad3ae6dd481f91a Mon Sep 17 00:00:00 2001
From: zdg
Date: Thu, 19 Sep 2024 12:02:31 +0800
Subject: [PATCH 05/15] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D=EF=BC=8C=E4=BB=A5?=
=?UTF-8?q?=E5=8F=8A=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/src/plugins/shareStore.js | 5 +-
.../container/class-start.vue | 84 +++++--------------
.../views/prepare/container/kj-list-item.vue | 34 +++++---
src/renderer/src/views/prepare/index.vue | 23 +++--
src/renderer/src/views/tool/sphere.vue | 2 +-
5 files changed, 64 insertions(+), 84 deletions(-)
rename src/renderer/src/views/{desktop => prepare}/container/class-start.vue (87%)
diff --git a/src/renderer/src/plugins/shareStore.js b/src/renderer/src/plugins/shareStore.js
index 10aec30..caa5e52 100644
--- a/src/renderer/src/plugins/shareStore.js
+++ b/src/renderer/src/plugins/shareStore.js
@@ -66,9 +66,10 @@ function stateSyncWatch(storeName, newState) {
const keyArr = key.split('.') || []
keyArr.reduce((o,c,i)=>{o[c] = i === keyArr.length-1 ? value : {};return o[c]}, newValue)
const jsonStr = JSON.stringify(newValue) // 从新组装-json数据
- // // 更新本地数据-session
+ // 更新本地数据-session
+ // console.log('state-change-update:', key, value)
sessionStore.set(key, value)
- // // 通知主线程更新
+ // 通知主线程更新
ipcRenderer?.invoke('pinia-state-change', storeName, jsonStr)
// console.log('======',key, value, jsonStr )
}
diff --git a/src/renderer/src/views/desktop/container/class-start.vue b/src/renderer/src/views/prepare/container/class-start.vue
similarity index 87%
rename from src/renderer/src/views/desktop/container/class-start.vue
rename to src/renderer/src/views/prepare/container/class-start.vue
index 56a3139..cfb9ec9 100644
--- a/src/renderer/src/views/desktop/container/class-start.vue
+++ b/src/renderer/src/views/prepare/container/class-start.vue
@@ -119,71 +119,22 @@ onMounted(() => {
*/
const open = async (id) => {
visible.value = true
- // 获取apt详情
- if (id) await getAptInfo(id)
- // 模拟数据
- // myClassActive.value = {
- // "createBy": null,
- // "createTime": null,
- // "updateBy": null,
- // "updateTime": null,
- // "remark": null,
- // "id": 14740,
- // "idarray": null,
- // "jsonarray": null,
- // "entpid": 255,
- // "parentid": 14741,
- // "linkids": "",
- // "linklist": "",
- // "entpcourseid": 7300,
- // "entpcourseidarray": null,
- // "evalid": 39952,
- // "evaltitle": " 质点 参考系",
- // "coursetitle": " 质点 参考系",
- // "classid": 0,
- // "ppttype": "file",
- // "title": " 质点 参考系",
- // "fileidx": 0,
- // "fileurl": "",
- // "pathfile": null,
- // "filetype": "ppt",
- // "filesize": null,
- // "datacontent": "",
- // "filekey": "",
- // "filetag": "",
- // "dflag": 0,
- // "status": "",
- // "edituserid": 2781,
- // "editusername": "张雪林",
- // "edituserheadimgurl": "/profile/avatar/2024/08/12/blob_20240812152930A001.jpeg",
- // "edituserentpname": "AIx数字平台内测中心",
- // "editstudentid": null,
- // "editstudentname": null,
- // "timestamp": "2024-09-10 15:07:20",
- // "token": null,
- // "base64Code": null,
- // "orderby": null,
- // "childcount": 4,
- // "commentlikecount": 0,
- // "commenttextcount": 0,
- // "commentusecount": 0,
- // "commentvisitcount": 90,
- // "unixstamp": null,
- // "classworkcount": 0,
- // "classworklist": "",
- // "authjson": "",
- // "defaultslide": null
- // }
- // 获取班级列表
- getClassList()
-
- // 初始化im-chat
- // nextTick(async() => {
- // chat = await imChatRef.value?.initImChat()
- // })
+ if (id) {
+ // 重置数据
+ reset()
+ // 获取apt详情
+ await getAptInfo(id)
+ // 获取班级列表
+ getClassList()
+ // 初始化im-chat
+ nextTick(async() => {
+ chat = await imChatRef.value?.initImChat()
+ })
+ }
}
// 关闭弹窗
const handleClose = async () => {
+ reset() // 重置数据
await chat?.logout()
chat = null
}
@@ -204,6 +155,15 @@ const initData = () => {
{ label: '故障备用', prop: 'backup', show: false },
]
}
+// 重置数据
+const reset = () => {
+ // 初始化-表单数据
+ classForm.form = {}
+ teacherForm.form = { classcourseid: 0 }
+ dt.isCreate = false
+ dt.isHistory = false
+ dt.atCourse = {}
+}
// 获取课件APT
const getAptInfo = async (id) => {
const res = await Http_Entpcoursefile.getEntpcoursefile(id)
diff --git a/src/renderer/src/views/prepare/container/kj-list-item.vue b/src/renderer/src/views/prepare/container/kj-list-item.vue
index 05f068b..2e28989 100644
--- a/src/renderer/src/views/prepare/container/kj-list-item.vue
+++ b/src/renderer/src/views/prepare/container/kj-list-item.vue
@@ -52,7 +52,8 @@
- 上课
+ 上课中
+ 上课
-
-
-
- 标签
-
-
-
-
-
- 删除
-
-
+
+
+
+
+ 标签
+
+
+
+
+
+ 删除
+
+
+
@@ -98,6 +101,7 @@ import { ElMessage, ElMessageBox } from 'element-plus'
import { deleteSmarttalk, updateSmarttalk, getPrepareById } from '@/api/file'
import useUserStore from '@/store/modules/user'
import outLink from '@/utils/linkConfig'
+import { sessionStore } from '@/utils/store'
const { ipcRenderer } = window.electron || {}
export default {
@@ -115,6 +119,10 @@ export default {
default: function () {
return 0
}
+ },
+ activeClassId: { // 当前上课id
+ type: String,
+ default: ''
}
},
emits: { 'on-start-class': null, 'on-delete': null, 'on-set': null, 'on-delhomework': null,'on-filearg': null },
diff --git a/src/renderer/src/views/prepare/index.vue b/src/renderer/src/views/prepare/index.vue
index 859843b..ca2b197 100644
--- a/src/renderer/src/views/prepare/index.vue
+++ b/src/renderer/src/views/prepare/index.vue
@@ -20,6 +20,7 @@
:key="index"
:item="item"
:index="index"
+ :activeClassId="activeClass?.id"
@on-delete="deleteTalk"
@on-start-class="startClass"
>
@@ -192,7 +193,7 @@ import { getClassInfo, getSelfReserv } from '@/api/classManage'
import { useGetHomework } from '@/hooks/useGetHomework'
import { addEntpcoursefileReturnId } from '@/api/education/entpcoursefile'
import ClassReserv from '@/views/classManage/classReserv.vue'
-import classStart from '@/views/desktop/container/class-start.vue' // 预备上课
+import classStart from './container/class-start.vue' // 预备上课
const toolStore = useToolState()
const fs = require('fs')
@@ -246,7 +247,9 @@ export default {
// 布置作业弹窗
setDialog: false,
row: '',
- isOpenHomework: false
+ isOpenHomework: false,
+ // 当前上课课程
+ activeClass: null,
}
},
computed: {
@@ -272,6 +275,9 @@ export default {
})
this.lastAsyncAllTime = localStorage.getItem('lastAsyncAllTime')
// this.initReserv()
+
+ // zdg: 获取缓存中的当前课程
+ this.activeClass = sessionStore.get('activeClass') || null
},
mounted() {
this.$watch(
@@ -298,15 +304,20 @@ export default {
// },
methods: {
startClass(item) {
- console.log(item)
+ // console.log(item, sessionStore)
if(item.fileFlag === '课件') {
+ // 关闭状态,打开上课相关功能(已打开,忽略)
+ const id = sessionStore.has('activeClass.id') ? sessionStore.get('activeClass.id') : null
+ if (id && id == item.id) return ElMessage.warning('当前正在上课,请勿重复操作')
this.openReserv()
}
if(item.fileFlag === 'apt') {
- //TODO 打开apt
- const { fileId: aptId } = item
- this.$refs.calssRef.open(aptId)
+ //TODO 打开apt - fileId: aptId
+ this.$refs.calssRef.open(item.fileId)
}
+ // 当前上课-store
+ sessionStore.set('activeClass', item)
+ this.activeClass = item
},
initReserv(id) {
getClassInfo(id).then((res) => {
diff --git a/src/renderer/src/views/tool/sphere.vue b/src/renderer/src/views/tool/sphere.vue
index a196e7f..09be0e0 100644
--- a/src/renderer/src/views/tool/sphere.vue
+++ b/src/renderer/src/views/tool/sphere.vue
@@ -10,7 +10,7 @@
-
+
diff --git a/src/renderer/src/views/desktop/index.vue b/src/renderer/src/views/desktop/index.vue
index 69913c6..68bb2fe 100644
--- a/src/renderer/src/views/desktop/index.vue
+++ b/src/renderer/src/views/desktop/index.vue
@@ -166,12 +166,14 @@ const clickMenu = ({isOuter, path, disabled}) =>{
if(isOuter){
let configObj = outLink().getBaseData()
let fullPath = configObj.fullPath + path
- if(path == '/teaching/classtaskassign?titleName=作业布置&openDialog=newClassTask'){
+ if(path == '/teaching/classtaskassign?titleName=作业布置&openDialog=newClassTask' || path == '/teaching/classtaskassign?titleName=作业布置'){
// 头部 教材分析打开外部链接需要当前章节ID
const { levelFirstId, levelSecondId } = JSON.parse(localStorage.getItem('unitId'))
let unitId = levelSecondId ? levelSecondId : levelFirstId
fullPath = fullPath + `&unitId=${unitId}`
+
+ console.log(fullPath)
}
fullPath = fullPath.replaceAll('//', '/')
// 通知主进程
From ce8b2e6ab0683875795f7a9dde4668588c0d0df3 Mon Sep 17 00:00:00 2001
From: lyc
Date: Thu, 19 Sep 2024 15:55:19 +0800
Subject: [PATCH 10/15] =?UTF-8?q?=E8=B7=AF=E7=94=B1title?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/src/router/index.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/renderer/src/router/index.js b/src/renderer/src/router/index.js
index 6bdcac9..16c3677 100644
--- a/src/renderer/src/router/index.js
+++ b/src/renderer/src/router/index.js
@@ -36,13 +36,13 @@ export const constantRoutes = [
path: '/resource',
component: () => import('@/views/resource/index.vue'),
name: 'resource',
- meta: {title: '资源'}
+ meta: {title: '资源库'}
},
{
path: '/prepare',
component: () => import('@/views/prepare/index.vue'),
name: 'prepare',
- meta: {title: '备课'}
+ meta: {title: '教学实践'}
},
{
path: '/teach',
From 893be27671e75550f2e29da7931dcd306029a0eb Mon Sep 17 00:00:00 2001
From: lyc
Date: Thu, 19 Sep 2024 16:02:42 +0800
Subject: [PATCH 11/15] =?UTF-8?q?=E5=88=87=E6=8D=A2=E5=AD=A6=E7=A7=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/src/layout/components/Header.vue | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/renderer/src/layout/components/Header.vue b/src/renderer/src/layout/components/Header.vue
index 253fab4..e9b53c6 100644
--- a/src/renderer/src/layout/components/Header.vue
+++ b/src/renderer/src/layout/components/Header.vue
@@ -200,6 +200,8 @@ const changeSubject = async (command) =>{
await updateUserInfo(data)
await userStore.login({username: phonenumber, password: plainpwd})
await userStore.getInfo()
+ localStorage.removeItem('subjectList')
+ localStorage.removeItem('evaluationList')
router.go()
}
From 746cb150c45c3bea5970b10be71b2537bf4d876a Mon Sep 17 00:00:00 2001
From: yangws <1607839436@qq.com>
Date: Thu, 19 Sep 2024 16:02:56 +0800
Subject: [PATCH 12/15] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3=E7=A9=BA?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=9A=84=E5=88=A4=E6=96=AD;?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/src/components/choose-textbook/third.vue | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/renderer/src/components/choose-textbook/third.vue b/src/renderer/src/components/choose-textbook/third.vue
index 554a6f5..ca8f65d 100644
--- a/src/renderer/src/components/choose-textbook/third.vue
+++ b/src/renderer/src/components/choose-textbook/third.vue
@@ -64,6 +64,8 @@ const getVertion = (data) => {
childs: []
}
})
+ //判断是否存在该教材,有则展示第一项
+ if(treeData.value.length === 0) return
nextTick(() => {
defaultExpandedKeys.value = [treeData.value[0].id]
node.currentNode.data = treeData.value[0]
From 02a25db5e2ecb858f242bb2f8577e9e27878dda6 Mon Sep 17 00:00:00 2001
From: zdg
Date: Thu, 19 Sep 2024 16:35:36 +0800
Subject: [PATCH 13/15] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/renderer/src/views/prepare/index.vue | 2 +-
src/renderer/src/views/tool/directive/drag.js | 3 +++
src/renderer/src/views/tool/sphere.vue | 13 +++++++++----
3 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/src/renderer/src/views/prepare/index.vue b/src/renderer/src/views/prepare/index.vue
index ca2b197..9b7592e 100644
--- a/src/renderer/src/views/prepare/index.vue
+++ b/src/renderer/src/views/prepare/index.vue
@@ -308,7 +308,7 @@ export default {
if(item.fileFlag === '课件') {
// 关闭状态,打开上课相关功能(已打开,忽略)
const id = sessionStore.has('activeClass.id') ? sessionStore.get('activeClass.id') : null
- if (id && id == item.id) return ElMessage.warning('当前正在上课,请勿重复操作')
+ // if (id && id == item.id) return ElMessage.warning('当前正在上课,请勿重复操作')
this.openReserv()
}
if(item.fileFlag === 'apt') {
diff --git a/src/renderer/src/views/tool/directive/drag.js b/src/renderer/src/views/tool/directive/drag.js
index 5565441..9751fde 100644
--- a/src/renderer/src/views/tool/directive/drag.js
+++ b/src/renderer/src/views/tool/directive/drag.js
@@ -57,6 +57,8 @@ class Drag {
document.removeEventListener('mouseup', this.up);
document.addEventListener('touchmove', this.move);
document.addEventListener('touchend', this.up);
+ // 手动-触发事件 v-drag-start
+ this.el.dispatchEvent(new CustomEvent('v-drag-end', {detail:{drag: this}}))
}
// 业务逻辑
updatePosition(e) {
@@ -108,6 +110,7 @@ export default {
// const { style } = binding.value
const drag = new Drag(el, binding)
const dragStart = (e) => {
+ // console.log('start', e)
drag.down(e)
document.addEventListener('mousemove', drag.move);
document.addEventListener('mouseup', drag.up);
diff --git a/src/renderer/src/views/tool/sphere.vue b/src/renderer/src/views/tool/sphere.vue
index 09be0e0..a2f69a9 100644
--- a/src/renderer/src/views/tool/sphere.vue
+++ b/src/renderer/src/views/tool/sphere.vue
@@ -13,9 +13,11 @@
-