From a918aa18e9d5daf1474fee8579ba34ae8c5f45d0 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: Tue, 5 Nov 2024 17:28:16 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E6=89=B9=E6=94=B9?= =?UTF-8?q?=E5=88=97=E8=A1=A8=EF=BC=9A=E9=80=BB=E8=BE=91=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/store/modules/classTask.js | 28 - .../src/views/classTask/classTask.vue | 521 ++++++++---------- 2 files changed, 224 insertions(+), 325 deletions(-) delete mode 100644 src/renderer/src/store/modules/classTask.js diff --git a/src/renderer/src/store/modules/classTask.js b/src/renderer/src/store/modules/classTask.js deleted file mode 100644 index f0008cf..0000000 --- a/src/renderer/src/store/modules/classTask.js +++ /dev/null @@ -1,28 +0,0 @@ -import { defineStore } from 'pinia' -import { } from '@/api/classTask/index.js' -import { listClassmain } from '@/api/classManage/index' - -const useClassTaskStore = defineStore('classTask',{ - state: () => ({ - classListIds: [], - }), - actions: { - listClassmain(params) { - // 获取班级列表 - return new Promise((resolve, reject) => { - listClassmain(params) - .then((res) => { - this.classListIds = res.rows&&res.rows.map((item) => item.id) - resolve(res) - }) - .catch((error) => { - reject(error) - }) - }) - }, - }, - persist: true -}) -export default useClassTaskStore - - diff --git a/src/renderer/src/views/classTask/classTask.vue b/src/renderer/src/views/classTask/classTask.vue index 7b28e7c..61107f9 100644 --- a/src/renderer/src/views/classTask/classTask.vue +++ b/src/renderer/src/views/classTask/classTask.vue @@ -61,7 +61,6 @@ import TaskItem from '@/views/classTask/container/classTask/task-item.vue' import { useToolState } from '@/store/modules/tool' import { getCurrentTime, getDateFormatDate, getTheOtherDay, getTheOtheNextDay } from '@/utils/date' import useUserStore from '@/store/modules/user' -import useClassTaskStore from "@/store/modules/classTask"; import {createWindow} from '@/utils/tool' import {sessionStore} from '@/utils/store' import {debounce } from '@/utils/comm' @@ -69,7 +68,6 @@ import {debounce } from '@/utils/comm' const toolState = useToolState(); -const classTaskStore = useClassTaskStore() const userStore = useUserStore().user // const itemDialogRef = ref(null) const tabOptions = ref(['待批改', '已批改']) @@ -96,15 +94,16 @@ const loading = ref(false) const activeDataList = computed(() => { return classWorkList.value }) +const doneDataList = computed(() => { + return classWorkList.value +}) const deleteReserv = (item) => { console.log('删除待开发', item) // dataList.value = dataList.value.filter((is) => { // return is.id !== item.id // }) } -const doneDataList = computed(() => { - return classWorkList.value -}) + // 当日之后的日期禁用 const disabledDate = (time) => { @@ -120,250 +119,202 @@ const changeStartEndDate = (val) => { const getData = async () => { classWorkList.value = [] loading.value = true - // 1、班级列表 - // getClassList() - // 2、班级作业 + // 1、班级作业 await getClassWorkList() - // 3、班级学生作业 包含多个班级 + // 2、班级学生作业 包含多个班级 getStudentClassWorkData() loading.value = false } + /** - * 1、获取班级列表数据 - * TODO 这里暂时取班级id的list,后续需要在修改 - */ -const getClassList = () => { - if(classTaskStore.classListIds.length==0){ - // 获取 班级列表ids 这里暂时取班级id的list,后续需要在修改 - classTaskStore.listClassmain({ classuserid: userStore.userId, pageSize: 100, status: 'open' }) - } -} -/** - * 2、获取班级作业 + * 1、获取班级作业 */ const getClassWorkList = async () => { - //if(classTaskStore.classListIds.length>0){ - { - // 班级作业数据,包含多个班级 homeworklist - const response = await listByDeadDate({ - edituserid: userStore.userId, // 老师的id - edustage: userStore.edustage, // 学段 - edusubject: userStore.edusubject,//学科 - // deaddate: tabActive.value === '待批改'? getTomorrow() : EndDate.value,// 待批改:明天,已批改:选择的日期 弃用 - startdate: tabActive.value === '待批改'? '' : getDateFormatDate(startEndDate.value[0]), - deaddate: tabActive.value === '待批改'? '' : getDateFormatDate(startEndDate.value[1]),// 待批改:明天,已批改:选择的日期 - status: tabActive.value === '待批改'? '1' : '2', // 作业状态:1-已发布 - orderby: 'deaddate DESC', - pageSize: 100, - }) + // 班级作业数据,包含多个班级 homeworklist + const response = await listByDeadDate({ + edituserid: userStore.userId, // 老师的id + edustage: userStore.edustage, // 学段 + edusubject: userStore.edusubject,//学科 + startdate: tabActive.value === '待批改'? '' : getDateFormatDate(startEndDate.value[0]), + deaddate: tabActive.value === '待批改'? '' : getDateFormatDate(startEndDate.value[1]),// 待批改:明天,已批改:选择的日期 + status: tabActive.value === '待批改'? '1' : '2', // 作业状态:1-已发布 + orderby: 'deaddate DESC', + pageSize: 100, + }) - /** 2024-11-02 需求更改;弃用 - * 2024-10-17 由于 后面截止时间加了 时分,特加判断 - * 1、待批改、以前是以明天判断。现改为传当天的日期,并根据当前日期的时分与截止日期进行判断, - * 2、已批改、以前默认是以明天判断。现依然以明天为判断,并根据当前日期时分大于截止日期时分判断。 - */ - // let list = []; - // if(tabActive.value === '待批改'){ - // // 待批改 当前日期时间 小于 截止 日期时间 - // list = response.rows&&response.rows.filter(item => item.deaddate && getCurrentTime('YYYY-MM-DD HH:mm') < item.deaddate); // 待批改 - // }else{ - // list = response.rows&&response.rows.filter(item => item.deaddate && getCurrentTime('YYYY-MM-DD HH:mm') > item.deaddate); // 已批改 - // } + let list = response.rows || []; + for (var i = 0; i < list.length; i++) { + // 初始化部分新增字段值 + list[i].workdatalist = [] // 当前任务中有多少个学生的数据集合 + list[i].workdatalistVisible = false + list[i].feedtimelength = 0 // 已交的学生人中,汇总计算用时 + list[i].rightAnswerCount = 0 + list[i].scoingRate = 0 + '%' // 得分率 + list[i].averagetime = 0 // 平均用时 - let list = response.rows || []; - for (var i = 0; i < list.length; i++) { - // 初始化部分新增字段值 - list[i].workdatalist = [] - list[i].workdatalistVisible = false - list[i].workdatafeedbackcount = 0 // 已交人数 - list[i].feedtimelength = 0 - list[i].rightAnswerCount = 0 - list[i].scoingRate = 0 + '%' // 得分率 - list[i].averagetime = 0 // 平均用时 - - // ---------------------------------------------- - // 处理任务类型的UI - if (list[i].worktype == '学习目标定位') { - list[i].workclass = 'success' - list[i].workcodesList = JSON.parse(list[i].workcodes) - } else if (list[i].worktype == '教材研读') { - list[i].workclass = 'primary' - } else if (list[i].worktype == '框架梳理') { - list[i].workclass = 'warning' - } else if (list[i].worktype == '学科定位') { - list[i].workclass = 'info' - } else if (list[i].worktype == '习题训练') { - list[i].workclass = 'danger' - } else { - list[i].workclass = '' - } - // 如果是习题训练任务,则检查一共有多少道 - if (list[i].entpcourseworklist != '') { - list[i].entpcourseworklistarray = JSON.parse( - '[' + list[i].entpcourseworklist + ']' - ) - } else { - list[i].entpcourseworklistarray = [] - } + // ---------------------------------------------- + // 处理任务类型的UI + if (list[i].worktype == '学习目标定位') { + list[i].workclass = 'success' + list[i].workcodesList = JSON.parse(list[i].workcodes) + } else if (list[i].worktype == '教材研读') { + list[i].workclass = 'primary' + } else if (list[i].worktype == '框架梳理') { + list[i].workclass = 'warning' + } else if (list[i].worktype == '学科定位') { + list[i].workclass = 'info' + } else if (list[i].worktype == '习题训练') { + list[i].workclass = 'danger' + } else { + list[i].workclass = '' } - // 显示分配人数(workdataresultsum)>0 的 - if (list && list.length > 0) { - classWorkList.value = list && list.filter((item) => item.workdataresultsum > 0) - //TODO: 这里没分页,貌似这个 total 不重要,后续看 - total.value = 0 - }else{ - classWorkList.value = [] - total.value = 0 + // 如果是习题训练任务,则检查一共有多少道 + if (list[i].entpcourseworklist != '') { + list[i].entpcourseworklistarray = JSON.parse( + '[' + list[i].entpcourseworklist + ']' + ) + } else { + list[i].entpcourseworklistarray = [] } - loading.value = false } + + // 显示分配人数(workdataresultsum)>0 的 + if (list && list.length > 0) { + classWorkList.value = list && list.filter((item) => item.workdataresultsum > 0) + //TODO: 这里没分页,貌似这个 total 不重要,后续看 + total.value = 0 + }else{ + classWorkList.value = [] + total.value = 0 + } + loading.value = false } /** - * 3、获取多个班级学生作业数据 + * 2、获取多个班级学生作业数据 + * 查询已交的列表 + * @param workList :需要更新的作业list + * @param Refresh :true 不用刷新,false 需要刷新 */ -const getStudentClassWorkData = async() => { - // const { chapterId } = await useGetHomework(props.bookobj.node) - // this.entpcourseid = chapterId - //if(classTaskStore.classListIds.length>0){ - // listClassworkdataByDeadDate({ - // edituserid: userStore.userId, // 老师的id - // classids: classTaskStore.classListIds.join(','), - // edusubject: userStore.edusubject,//学科 - // deaddate: tabActive.value === '待批改'? getTomorrow() : EndDate.value,// 待批改:明天,已批改:选择的日期 - // deaddate: EndDate.value,// 待批改:明天,已批改:选择的日期 - // startdate: tabActive.value === '待批改'? '' : getDateFormatDate(startEndDate.value[0]), - // deaddate:tabActive.value === '待批改'? '' : getDateFormatDate(startEndDate.value[1]), - // //status: tabActive.value === '待批改'? '1' : '2', // 作业状态:1-已发布 - // orderby: "deaddate DESC",// - // pageSize: 1000, - // }) +const getStudentClassWorkData = async(workList = [], Refresh = true) => { + // 获取 已交的 列表数据(workdataresultcount 已交的学生数) + let SubmitClWorkList = []; + if(Refresh){ + SubmitClWorkList = classWorkList.value.filter((item) => item.workdataresultcount > 0) ; + }else{ + SubmitClWorkList = workList; + } - // listClassworkdataNew({ - // classworkids: ids, // 作业id - // edituserid: userStore.userId, // 老师的id - // edusubject: userStore.edusubject,//学科 - // evalStatus: 1, - // pageSize: 1000, - // }) + console.log('有提交的作业', SubmitClWorkList) + const ids = SubmitClWorkList&&SubmitClWorkList.map((item) => item.id).join(','); + if (ids == '') { + return; + } + listClassworkdata({ + classworkids: ids, + pageSize: 1000, + }).then((res) => { + for (var t = 0; t < classWorkList.value.length; t++) { + for (var i = 0; i < res.rows.length; i++) { + // finishtimelength != '0' 已交 + if (res.rows[i].classworkid == classWorkList.value[t].id && res.rows[i].finishtimelength != '0') { + console.log('==================') + // 有几个学生完成/正在完成学习任务 + // 至少resultcount不是0 + //classWorkList.value[t].workdataresultcount++ - - { - const ids = classWorkList.value.map((item) => item.id).join(','); - if (ids == '') { - return; - } - listClassworkdata({ - classworkids: ids, - pageSize: 1000, - }).then((res) => { - for (var t = 0; t < classWorkList.value.length; t++) { - for (var i = 0; i < res.rows.length; i++) { - if (res.rows[i].classworkid == classWorkList.value[t].id && res.rows[i].finishtimelength != '0') { - console.log('==================') - // 有几个学生完成/正在完成学习任务 - // 至少resultcount不是0 - classWorkList.value[t].workdatafeedbackcount++ + // 已交的学生人中,汇总计算用时 + classWorkList.value[t].feedtimelength += parseInt(res.rows[i].finishtimelength) - // 在参与学习任务的人中,汇总计算用时 - classWorkList.value[t].feedtimelength += parseInt(res.rows[i].finishtimelength) + // 计算得分率 + if ( + res.rows[i].classworkevallist != '' && + res.rows[i].classworkevallist != null && + res.rows[i].classworkevallist != 'null' + ) { + let replacedString = res.rows[i].classworkevallist.replace(/""/g, '"') + // 将标签中双引号改为转义, 测试数据: "{\"id\":172907, \"rating\":0, \"teacherRating\":0, \"entpcourseworkid\":358520, \"feedcontent\":\"④①⑤③②\", \"score\":4, \"rightanswer\":\"④①⑤③②\"},{\"id\":172908, \"rating\":0, \"teacherRating\":0, \"entpcourseworkid\":358521, \"feedcontent\":\"气壮山威,鲲鹏展翅楚云飞\", \"score\":4, \"rightanswer\":\"志远天高,春风杨柳麓山青\"},{\"id\":172909, \"rating\":0, \"teacherRating\":0, \"entpcourseworkid\":363096, \"feedcontent\":\"《红烛》化用“蜡矩”这一古典意象,赋予它新的含义,赞美了红烛以“蜡炬成灰”来点亮世界的奉献精神。\", \"score\":4, \"rightanswer\":\"《立在地球边上放号》中,全诗采用间接抒情的方式,描绘了太平洋的浪潮,吟唱了一曲惊心动魄的力的颂歌,意在赞美摧毁旧世界、创造新生活的“五四”精神。\"},{\"id\":172910, \"rating\":0, \"teacherRating\":0, \"entpcourseworkid\":363098, \"feedcontent\":\"毛泽东重游橘子洲,面对如画的秋色和大好的革命形势,回忆过去战斗的岁月,不禁心潮起伏,浮想联翩。\", \"score\":4, \"rightanswer\":\"毛泽东重游橘子洲,面对如画的秋色和大好的革命形势,回忆过去战斗的岁月,不禁心潮起伏,浮想联翩。\"},{\"id\":172911, \"rating\":0, \"teacherRating\":0, \"entpcourseworkid\":363100, \"feedcontent\":\"毛泽东重游橘子洲,面对如画的秋色和大好的革命形势,回忆过去战斗的岁月,不禁心潮起伏,浮想联翩。\", \"score\":4, \"rightanswer\":\"毛泽东重游橘子洲,面对如画的秋色和大好的革命形势,回忆过去战斗的岁月,不禁心潮起伏,浮想联翩。\"}" + replacedString = escapeHtmlQuotes(res.rows[i].classworkevallist).replace( + /"(\[.*\])"/g, + '$1' + ) + replacedString = escapeHtmlQuotes(res.rows[i].classworkevallist) + var evalarray + try { + evalarray = JSON.parse('[' + res.rows[i].classworkevallist + ']') + } catch { + evalarray = JSON.parse('[' + replacedString + ']') + } - // 计算得分率 - if ( - res.rows[i].classworkevallist != '' && - res.rows[i].classworkevallist != null && - res.rows[i].classworkevallist != 'null' - ) { - let replacedString = res.rows[i].classworkevallist.replace(/""/g, '"') - // 将标签中双引号改为转义, 测试数据: "{\"id\":172907, \"rating\":0, \"teacherRating\":0, \"entpcourseworkid\":358520, \"feedcontent\":\"④①⑤③②\", \"score\":4, \"rightanswer\":\"④①⑤③②\"},{\"id\":172908, \"rating\":0, \"teacherRating\":0, \"entpcourseworkid\":358521, \"feedcontent\":\"气壮山威,鲲鹏展翅楚云飞\", \"score\":4, \"rightanswer\":\"志远天高,春风杨柳麓山青\"},{\"id\":172909, \"rating\":0, \"teacherRating\":0, \"entpcourseworkid\":363096, \"feedcontent\":\"《红烛》化用“蜡矩”这一古典意象,赋予它新的含义,赞美了红烛以“蜡炬成灰”来点亮世界的奉献精神。\", \"score\":4, \"rightanswer\":\"《立在地球边上放号》中,全诗采用间接抒情的方式,描绘了太平洋的浪潮,吟唱了一曲惊心动魄的力的颂歌,意在赞美摧毁旧世界、创造新生活的“五四”精神。\"},{\"id\":172910, \"rating\":0, \"teacherRating\":0, \"entpcourseworkid\":363098, \"feedcontent\":\"毛泽东重游橘子洲,面对如画的秋色和大好的革命形势,回忆过去战斗的岁月,不禁心潮起伏,浮想联翩。\", \"score\":4, \"rightanswer\":\"毛泽东重游橘子洲,面对如画的秋色和大好的革命形势,回忆过去战斗的岁月,不禁心潮起伏,浮想联翩。\"},{\"id\":172911, \"rating\":0, \"teacherRating\":0, \"entpcourseworkid\":363100, \"feedcontent\":\"毛泽东重游橘子洲,面对如画的秋色和大好的革命形势,回忆过去战斗的岁月,不禁心潮起伏,浮想联翩。\", \"score\":4, \"rightanswer\":\"毛泽东重游橘子洲,面对如画的秋色和大好的革命形势,回忆过去战斗的岁月,不禁心潮起伏,浮想联翩。\"}" - replacedString = escapeHtmlQuotes(res.rows[i].classworkevallist).replace( - /"(\[.*\])"/g, - '$1' - ) - replacedString = escapeHtmlQuotes(res.rows[i].classworkevallist) - var evalarray - try { - evalarray = JSON.parse('[' + res.rows[i].classworkevallist + ']') - } catch { - evalarray = JSON.parse('[' + replacedString + ']') + for (var e = 0; e < evalarray.length; e++) { + if (res.rows[i].worktype == '常规作业') { + evalarray[e].feedcontent = escapeHtmlQuotes(evalarray[e].feedcontent).replace( + /"(\[.*\])"/g, + '$1' + ) + evalarray[e].feedcontent = escapeHtmlQuotes(evalarray[e].feedcontent) } - - for (var e = 0; e < evalarray.length; e++) { - if (res.rows[i].worktype == '常规作业') { - evalarray[e].feedcontent = escapeHtmlQuotes(evalarray[e].feedcontent).replace( - /"(\[.*\])"/g, - '$1' - ) - evalarray[e].feedcontent = escapeHtmlQuotes(evalarray[e].feedcontent) - } - if (evalarray[e].feedcontent == evalarray[e].rightanswer) { - // 正确,得分 - classWorkList.value[t].rightAnswerCount++ - } + if (evalarray[e].feedcontent == evalarray[e].rightanswer) { + // 正确,得分 + classWorkList.value[t].rightAnswerCount++ } } } - // 当前这个学习任务,共推送给了几个学生,workdataresultsum - if (res.rows[i].classworkid == classWorkList.value[t].id) { - classWorkList.value[t].workdatalist.push(res.rows[i]) - } } - // 计算完成进度 workdataresultsum人数要大于0 - if ( - classWorkList.value[t].workdataresultcount > 0 && - classWorkList.value[t].workdataresultsum > 0 - ) { - classWorkList.value[t].finishpercent = parseInt( - (classWorkList.value[t].workdataresultcount / classWorkList.value[t].workdataresultsum) * 100 - ) - } else { - classWorkList.value[t].finishpercent = 0 + // 当前这个学习任务,共推送给了几个学生,workdataresultsum + if (res.rows[i].classworkid == classWorkList.value[t].id) { + classWorkList.value[t].workdatalist.push(res.rows[i]) } - - /** 计算 已批阅进度 */ - // workdataresultsum 人数 teacherrationgcount 已批阅人数 - // 已批阅百分比: (人数-已批阅数) / 人数 * 100 - if (classWorkList.value[t].workdataresultsum > 0) { - // teacherCorrectionProgress 老师已批阅进度条: - classWorkList.value[t].teacherCorrectionProgress = parseInt( - ((classWorkList.value[t].teacherrationgcount) / classWorkList.value[t].workdataresultsum) * 100 - ) - } else { - classWorkList.value[t].teacherCorrectionProgress = 0 - } - - // 以下四个参数,都要计算 - // 2024-04-12,酉阳,by jackyshen - - // 计算参与学习任务的平均用时 - if (classWorkList.value[t].workdatafeedbackcount > 0) { - classWorkList.value[t].averagetime = Math.ceil(classWorkList.value[t].feedtimelength / classWorkList.value[t].workdatafeedbackcount / 60).toFixed(0) - } else { - classWorkList.value[t].averagetime = 0 - } - - // 计算批阅异常,需要获取每个题目的类型,找出主观题 - // 暂缓 - - // 计算平均得分率: 正确题数/(题目总数*学生人数)*100 - if ( - classWorkList.value[t].entpcourseworklistarray && - classWorkList.value[t].entpcourseworklistarray.length > 0 - ) { - var dd = - (classWorkList.value[t].rightAnswerCount / - (classWorkList.value[t].entpcourseworklistarray.length * - classWorkList.value[t].workdataresultsum)) * - 100 - classWorkList.value[t].scoingRate = dd.toFixed(0) + '%' - } else { - classWorkList.value[t].scoingRate = '0%' - } - // 设定典型作答,需要获取每个题目的类型,找出主观题 - // 暂缓 } - }) - } + + + // 计算完成进度: workdataresultcount 学生提交了的个数; workdataresultsum 人数要大于0; + if (classWorkList.value[t].workdataresultcount > 0 && classWorkList.value[t].workdataresultsum > 0 ) { + classWorkList.value[t].finishpercent = parseInt( + (classWorkList.value[t].workdataresultcount / classWorkList.value[t].workdataresultsum) * 100 + ) + } else { + classWorkList.value[t].finishpercent = 0 + } + + /** 计算 已批阅进度 */ + // workdataresultsum 人数 teacherrationgcount 已批阅人数 + // 已批阅百分比: (人数-已批阅数) / 人数 * 100 + if (classWorkList.value[t].workdataresultsum > 0) { + classWorkList.value[t].teacherCorrectionProgress = parseInt( + ((classWorkList.value[t].teacherrationgcount) / classWorkList.value[t].workdataresultsum) * 100 + ) + } else { + classWorkList.value[t].teacherCorrectionProgress = 0 + } + + // 以下四个参数,都要计算 + // 2024-04-12,酉阳,by jackyshen + + // 计算参与学习任务的平均用时:学生总用时/ 提交学生数 + if (classWorkList.value[t].workdataresultcount > 0) { + classWorkList.value[t].averagetime = Math.ceil(classWorkList.value[t].feedtimelength / classWorkList.value[t].workdataresultcount / 60).toFixed(0) + } else { + classWorkList.value[t].averagetime = 0 + } + + // 计算平均得分率: 正确题数/(题目总数*学生人数)*100 + if ( + classWorkList.value[t].entpcourseworklistarray && + classWorkList.value[t].entpcourseworklistarray.length > 0 + ) { + var dd = + (classWorkList.value[t].rightAnswerCount / + (classWorkList.value[t].entpcourseworklistarray.length * + classWorkList.value[t].workdataresultsum)) * + 100 + classWorkList.value[t].scoingRate = dd.toFixed(0) + '%' + } else { + classWorkList.value[t].scoingRate = '0%' + } + } + }) + } @@ -424,91 +375,56 @@ onUnmounted(() => { // [作业反馈] - 实际查询逻辑 const getStudentVisible = async () => { - if (classTaskStore.classListIds.length <= 0) { - return + if(!classWorkList.value.length>0){ + return; } - // 班级作业数据,多个班级 const response = await listByDeadDate({ - classidarray: classTaskStore.classListIds.join(','), edituserid: userStore.userId, // 老师的id - edustage: userStore.edustage,// 学段 + edustage: userStore.edustage, // 学段 edusubject: userStore.edusubject,//学科 - // deaddate: tabActive.value === '待批改'? getTomorrow() : EndDate.value,// 待批改:明天,已批改:选择的日期 - // deaddate: EndDate.value,// 待批改:明天,已批改:选择的日期 startdate: tabActive.value === '待批改'? '' : getDateFormatDate(startEndDate.value[0]), - deaddate: tabActive.value === '待批改'? '' : getDateFormatDate(startEndDate.value[1]), + deaddate: tabActive.value === '待批改'? '' : getDateFormatDate(startEndDate.value[1]),// 待批改:明天,已批改:选择的日期 status: tabActive.value === '待批改'? '1' : '2', // 作业状态:1-已发布 - // orderby: 'concat(deaddate,uniquekey) DESC', orderby: 'deaddate DESC', - pageSize: 100 + pageSize: 100, }) - /** - * 2024-10-17 由于 后面截止时间加了 时分,特加判断 - * 1、待批改、以前是以明天判断。现改为传当天的日期,并根据当前日期的时分与截止日期进行判断, - * 2、已批改、以前默认是以明天判断。现依然以明天为判断,并根据当前日期时分大于截止日期时分判断。 - */ - let list = []; - if(tabActive.value === '待批改'){ - // 待批改 当前日期时间 小于 截止 日期时间 - list = response.rows&&response.rows.filter(item => item.deaddate && getCurrentTime('YYYY-MM-DD HH:mm') < item.deaddate); // 待批改 - }else{ - list = response.rows&&response.rows.filter(item => item.deaddate && getCurrentTime('YYYY-MM-DD HH:mm') > item.deaddate); // 已批改 - } + let list = response.rows || []; - const curWorkList = list - - /** - * warn: 这里仅更新了finishpercent(进度条), 且当前作业布置推送新任务时, curWorkList中会查到新的任务与当前页面中this.classWorkList长度不一致, - * 故这里需循环this.classWorkList且只更新当前页面中的存在的任务进度 - */ - for (let t = 0; t < classWorkList.value.length; t++) { - // 当前时间超过[作业任务]截止时间的跳过 - // if( getDateTime > classWorkList.value[t].deaddate ){ - // continue; - // } - // 确保当前拿到的任务与页面中存在的任务能一对一(避免因删除其他操作而删除作业任务导致两个数组的index不统一而越界) - let curWork = curWorkList.find((work) => work.id === classWorkList.value[t].id) - // workdataresultcount 完成人数 workdataresultsum人数要大于0 - if (curWork && curWork.workdataresultcount > 0 && classWorkList.value[t].workdataresultsum > 0) { - classWorkList.value[t].workdataresultcount = curWork.workdataresultcount - // 桌面端貌似不需要进度条了? - classWorkList.value[t].finishpercent = parseInt( - (classWorkList.value[t].workdataresultcount / classWorkList.value[t].workdataresultsum) * 100 - ) - // 计算参与学习任务的平均用时 - if (classWorkList.value[t].workdatafeedbackcount > 0) { - classWorkList.value[t].averagetime = Math.ceil(classWorkList.value[t].feedtimelength / classWorkList.value[t].workdatafeedbackcount / 60).toFixed(0) - } else { - classWorkList.value[t].averagetime = 0 - } - - } else { - // 学生未完成,但是老师批改了? - if(curWork && curWork.workdataresultcount == 0){ - // 更新批改数 - classWorkList.value[t].teacherrationgcount = curWork.teacherrationgcount - } - classWorkList.value[t].finishpercent = 0 + let newList = []; + for(let i = 0; i < classWorkList.value.length; i++){ + // 父list的id与子list的id相等,在进行对比;若是不等? 有可能是老师批阅完了这个list数据,变成了已批改状态中,则父list数据需要删除 + const isList = list.filter((item) => item.id === classWorkList.value[i].id); + if(isList.length === 0){ + // 父list的id与子list的id不相等,则删除父list数据 + classWorkList.value.splice(i,1); } - - /** 计算 已批阅进度 */ - // workdataresultsum 人数 teacherrationgcount 已批阅人数 - // 已批阅百分比: (人数-已批阅数) / 人数 * 100 - if (curWork && curWork.workdataresultsum > 0) { - // 更新批阅数 - classWorkList.value[t].teacherrationgcount = curWork.teacherrationgcount - - // teacherCorrectionProgress 老师已批阅进度条: - classWorkList.value[t].teacherCorrectionProgress = parseInt( - ((curWork.teacherrationgcount) / curWork.workdataresultsum) * 100 - ) - } else { - classWorkList.value[t].teacherCorrectionProgress = 0 + for(let j = 0; j < list.length; j++){ + // workdataresultcount 学生提交了的个数; + if(classWorkList.value[i].id === list[j].id && classWorkList.value[i].workdataresultcount != list[j].workdataresultcount){ + // 学生提交数 != 学生提交数? + newList.push(list[j]); + } + // teacherrationgcount 已批阅人数 + if(classWorkList.value[i].id === list[j].id && classWorkList.value[i].teacherrationgcount != list[j].teacherrationgcount){ + // 更新批阅进度条 + if (classWorkList.value[i].workdataresultsum > 0) { + // 更新批阅数、 进度条 + classWorkList.value[i].teacherrationgcount = list[j].teacherrationgcount; + classWorkList.value[i].teacherCorrectionProgress = parseInt( + ((list[j].teacherrationgcount) / list[j].workdataresultsum) * 100 + ) + } else { + classWorkList.value[i].teacherCorrectionProgress = 0 + } + } } } - - return 1 + if(newList.length>0){ + // 更新学生提交后的数据? 作业进度条、平均用时、得分率 + const list = newList&&newList.filter((item) => item.workdataresultcount > 0) ; + getStudentClassWorkData(list,false); + } } @@ -516,16 +432,27 @@ const getStudentVisible = async () => { watch( () => [dataList, toolState.isTaskWin], () => { - console.log('=监听到批改窗口打开了===', toolState.isTaskWin) + console.log('监听--批改窗口是否打开===', toolState.isTaskWin) if(!toolState.isTaskWin){ - - closeDialog();// 开启轮询 + if(tabActive.value === '待批改'){ + closeDialog();// 开启轮询 + } } } ) + watch(tabActive, (newVal,oldVal)=>{ console.log('newVal',newVal); getData() // 加载数据 + if(newVal === '待批改'){ + // 轮询查询 + console.log('监听---开启轮询') + closeDialog(); + }else{ + // 关闭轮询 + console.log('监听---关闭轮询') + clearInterval(pollingST.value); + } }) From 201b10a91e349b4fb60a45edee0f2a051c874913 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: Wed, 6 Nov 2024 09:56:43 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8F=B0=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=EF=BC=9A=E9=80=BB=E8=BE=91=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/desktop/container/work-trend.vue | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/renderer/src/views/desktop/container/work-trend.vue b/src/renderer/src/views/desktop/container/work-trend.vue index 96397f5..38391f5 100644 --- a/src/renderer/src/views/desktop/container/work-trend.vue +++ b/src/renderer/src/views/desktop/container/work-trend.vue @@ -14,9 +14,10 @@
{{ item.uniquekey }} - {{ - getCurrentTime('YYYY-MM-DD HH:mm') > item.deaddate ? '已批改' : '待批改' }} - {{ item.worktype }} + + 待批改 + {{ item.worktype }}
{{ item.classcaption }} | 截止时间:{{ item.deaddate }}
@@ -53,8 +54,9 @@ const getHomework = async () => { try { const { rows } = await homeworklist({ edituserid: user.userId, edustage, edusubject, deaddate: getTomorrow(), status: '1', orderby: 'deaddate DESC', pageSize: 500 }) // 只展示待批改的 - homeworkList.value = rows.filter(item => item.deaddate && item.uniquekey && getCurrentTime('YYYY-MM-DD HH:mm') < item.deaddate) // 当前日期的时分与截止日期进行判断 + //homeworkList.value = rows.filter(item => item.deaddate && item.uniquekey && getCurrentTime('YYYY-MM-DD HH:mm') < item.deaddate) // 当前日期的时分与截止日期进行判断 // homeworkList.value = rows.filter(item => item.deaddate && item.uniquekey && getTomorrow() <= item.deaddate) //大于今天的才算待批改 弃用 + homeworkList.value = rows || []; homeworkList.value.forEach((item) => { // 处理任务类型的UI if (item.worktype == '学习目标定位') { @@ -101,7 +103,8 @@ const onClickItem = (item) => { } const tagType = (time) => { - return getCurrentTime('YYYY-MM-DD HH:mm') > time ? 'info' : 'warning' + return 'warning'; + //return getCurrentTime('YYYY-MM-DD HH:mm') > time ? 'info' : 'warning' }