From e1c8ab42d925b10d554226f6354f3286d56407b2 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: Mon, 4 Nov 2024 11:25:58 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E6=89=B9=E6=94=B9?= =?UTF-8?q?=EF=BC=9A=E9=9C=80=E6=B1=82=E5=8F=98=E6=9B=B4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/classTask/classTask.vue | 66 ++++++++++++------- .../container/classTask/task-item.vue | 31 +++++---- .../src/views/classTask/teachClassTask.vue | 4 +- .../views/desktop/container/work-trend.vue | 6 +- src/renderer/src/views/tool/createHomework.js | 13 +++- 5 files changed, 75 insertions(+), 45 deletions(-) diff --git a/src/renderer/src/views/classTask/classTask.vue b/src/renderer/src/views/classTask/classTask.vue index 055fa37..b05159b 100644 --- a/src/renderer/src/views/classTask/classTask.vue +++ b/src/renderer/src/views/classTask/classTask.vue @@ -4,7 +4,7 @@
-
+
{ edituserid: userStore.userId, // 老师的id edustage: userStore.edustage, // 学段 edusubject: userStore.edusubject,//学科 - // deaddate: tabActive.value === '进行中'? getTomorrow() : EndDate.value,// 进行中:明天,已结束:选择的日期 弃用 - deaddate: EndDate.value,// 进行中:明天,已结束:选择的日期 + // deaddate: tabActive.value === '待批改'? getTomorrow() : EndDate.value,// 待批改:明天,已批改:选择的日期 弃用 + deaddate: EndDate.value,// 待批改:明天,已批改:选择的日期 status: '1', // 作业状态:1-已发布 orderby: 'deaddate DESC', pageSize: 100, @@ -153,15 +153,15 @@ const getClassWorkList = async () => { /** * 2024-10-17 由于 后面截止时间加了 时分,特加判断 - * 1、进行中、以前是以明天判断。现改为传当天的日期,并根据当前日期的时分与截止日期进行判断, - * 2、已结束、以前默认是以明天判断。现依然以明天为判断,并根据当前日期时分大于截止日期时分判断。 + * 1、待批改、以前是以明天判断。现改为传当天的日期,并根据当前日期的时分与截止日期进行判断, + * 2、已批改、以前默认是以明天判断。现依然以明天为判断,并根据当前日期时分大于截止日期时分判断。 */ let list = []; - if(tabActive.value === '进行中'){ - // 进行中 当前日期时间 小于 截止 日期时间 - list = response.rows&&response.rows.filter(item => item.deaddate && getCurrentTime('YYYY-MM-DD HH:mm') < item.deaddate); // 进行中 + 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); // 已结束 + list = response.rows&&response.rows.filter(item => item.deaddate && getCurrentTime('YYYY-MM-DD HH:mm') > item.deaddate); // 已批改 } @@ -234,8 +234,8 @@ const getStudentClassWorkData = async() => { // edituserid: userStore.userId, // 老师的id // classids: classTaskStore.classListIds.join(','), // edusubject: userStore.edusubject,//学科 - // deaddate: tabActive.value === '进行中'? getTomorrow() : EndDate.value,// 进行中:明天,已结束:选择的日期 - // deaddate: EndDate.value,// 进行中:明天,已结束:选择的日期 + // deaddate: tabActive.value === '待批改'? getTomorrow() : EndDate.value,// 待批改:明天,已批改:选择的日期 + // deaddate: EndDate.value,// 待批改:明天,已批改:选择的日期 // //status: '1', // 作业状态:1-已发布 // orderby: "deaddate DESC",// // pageSize: 1000, @@ -318,8 +318,17 @@ const getStudentClassWorkData = async() => { classWorkList.value[t].finishpercent = parseInt( (classWorkList.value[t].workdataresultcount / classWorkList.value[t].workdatacount) * 100 ) + // 计算-已完成批阅数 : 人数-已批阅数 + // teacherCorrectionProgress 老师已批阅进度条: + // workdataresultcount 完成人数 + // teacherrationgcount 已批阅人数 + // 已批阅百分比: (人数-已批阅数) / 人数 * 100 + classWorkList.value[t].teacherCorrectionProgress = parseInt( + ((classWorkList.value[t].teacherrationgcount) / classWorkList.value[t].workdataresultcount) * 100 + ) } else { classWorkList.value[t].finishpercent = 0 + classWorkList.value[t].teacherCorrectionProgress = 0 } // 以下四个参数,都要计算 @@ -379,6 +388,7 @@ const getStudentClassWorkDataPolling = () => { getStudentVisible() // 在轮询 pollingST.value = setInterval(() => { + console.log('轮询查询学生作业进度') getStudentVisible() }, 1000 * 10) } @@ -422,8 +432,8 @@ const getStudentVisible = async () => { edituserid: userStore.userId, // 老师的id edustage: userStore.edustage,// 学段 edusubject: userStore.edusubject,//学科 - // deaddate: tabActive.value === '进行中'? getTomorrow() : EndDate.value,// 进行中:明天,已结束:选择的日期 - deaddate: EndDate.value,// 进行中:明天,已结束:选择的日期 + // deaddate: tabActive.value === '待批改'? getTomorrow() : EndDate.value,// 待批改:明天,已批改:选择的日期 + deaddate: EndDate.value,// 待批改:明天,已批改:选择的日期 status: '1', // 作业状态:1-已发布 // orderby: 'concat(deaddate,uniquekey) DESC', orderby: 'deaddate DESC', @@ -432,15 +442,15 @@ const getStudentVisible = async () => { /** * 2024-10-17 由于 后面截止时间加了 时分,特加判断 - * 1、进行中、以前是以明天判断。现改为传当天的日期,并根据当前日期的时分与截止日期进行判断, - * 2、已结束、以前默认是以明天判断。现依然以明天为判断,并根据当前日期时分大于截止日期时分判断。 + * 1、待批改、以前是以明天判断。现改为传当天的日期,并根据当前日期的时分与截止日期进行判断, + * 2、已批改、以前默认是以明天判断。现依然以明天为判断,并根据当前日期时分大于截止日期时分判断。 */ let list = []; - if(tabActive.value === '进行中'){ - // 进行中 当前日期时间 小于 截止 日期时间 - list = response.rows&&response.rows.filter(item => item.deaddate && getCurrentTime('YYYY-MM-DD HH:mm') < item.deaddate); // 进行中 + 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); // 已结束 + list = response.rows&&response.rows.filter(item => item.deaddate && getCurrentTime('YYYY-MM-DD HH:mm') > item.deaddate); // 已批改 } const curWorkList = list @@ -471,6 +481,15 @@ const getStudentVisible = async () => { } // 更新批阅数 classWorkList.value[t].teacherrationgcount = curWork.teacherrationgcount + + // 计算-已完成批阅数 : 已批阅数 + // teacherCorrectionProgress 老师已批阅进度条: + // workdataresultcount 完成人数 + // teacherrationgcount 已批阅人数 + // 已批阅百分比: (已批阅数) / 人数 * 100 + classWorkList.value[t].teacherCorrectionProgress = parseInt( + ((curWork.teacherrationgcount) / curWork.workdataresultcount) * 100 + ) } else { // 学生未完成,但是老师批改了? if(curWork && curWork.workdataresultcount == 0){ @@ -478,6 +497,7 @@ const getStudentVisible = async () => { classWorkList.value[t].teacherrationgcount = curWork.teacherrationgcount } classWorkList.value[t].finishpercent = 0 + classWorkList.value[t].teacherCorrectionProgress = 0 } } diff --git a/src/renderer/src/views/classTask/container/classTask/task-item.vue b/src/renderer/src/views/classTask/container/classTask/task-item.vue index 50fbf48..965e394 100644 --- a/src/renderer/src/views/classTask/container/classTask/task-item.vue +++ b/src/renderer/src/views/classTask/container/classTask/task-item.vue @@ -14,7 +14,18 @@  |  截止时间:{{ item.deaddate }}  | {{ tabactive }}
-
+ +
+ + 已交 +
+ +
+ + 已批阅 +
+ + {{ item.teacherrationgcount?item.workdatacount - item.teacherrationgcount:item.workdatacount }} 待批阅 -
+
-->
- - {{ item.averagetime }}分钟 平均用时 @@ -97,6 +96,10 @@ const props = defineProps({ } } } + .class-reserv-item-progress { + width: 200px; + font-size: 14px; + } .class-reserv-item-tool { margin-left: 10px; display: flex; diff --git a/src/renderer/src/views/classTask/teachClassTask.vue b/src/renderer/src/views/classTask/teachClassTask.vue index 2ae3647..fb69948 100644 --- a/src/renderer/src/views/classTask/teachClassTask.vue +++ b/src/renderer/src/views/classTask/teachClassTask.vue @@ -677,9 +677,7 @@ const handleClassOverviewOpen = (type) =>{ } } }) - const allTeacherRating = allTopic.reduce((acc, cur) => { - return acc + cur.teacherRating; - },0) + const allTeacherRating = allTopic.reduce((acc, cur) => acc + cur.teacherRating, 0) rightAnswer > 0?item.scoingRate = (score/allTeacherRating * 100).toFixed(0):item.scoingRate = '' item.getScore = score diff --git a/src/renderer/src/views/desktop/container/work-trend.vue b/src/renderer/src/views/desktop/container/work-trend.vue index d723e5a..26ca4c8 100644 --- a/src/renderer/src/views/desktop/container/work-trend.vue +++ b/src/renderer/src/views/desktop/container/work-trend.vue @@ -15,7 +15,7 @@
{{ item.uniquekey }} {{ - getCurrentTime('YYYY-MM-DD HH:mm') > item.deaddate ? '已结束' : '进行中' }} + getCurrentTime('YYYY-MM-DD HH:mm') > item.deaddate ? '已批改' : '待批改' }} {{ item.worktype }}
{{ item.classcaption }} | 截止时间:{{ item.deaddate }}
@@ -52,9 +52,9 @@ const getHomework = async () => { const { edustage, edusubject } = user 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 && getTomorrow() <= item.deaddate) //大于今天的才算进行中 弃用 + // homeworkList.value = rows.filter(item => item.deaddate && item.uniquekey && getTomorrow() <= item.deaddate) //大于今天的才算待批改 弃用 homeworkList.value.forEach((item) => { // 处理任务类型的UI if (item.worktype == '学习目标定位') { diff --git a/src/renderer/src/views/tool/createHomework.js b/src/renderer/src/views/tool/createHomework.js index dc1a8cf..f51751c 100644 --- a/src/renderer/src/views/tool/createHomework.js +++ b/src/renderer/src/views/tool/createHomework.js @@ -43,6 +43,15 @@ export const createHomework = ({ uniquekey, evalid, data, entpcourseid }) => { let classWorkList = [] +// 将标签中的双引号增加转义 +let escapeHtmlQuotes = (str) => { + // 后端已replace双引号, 故前端不用在处理 + const regex1 = /\\+/g; // 匹配多个反斜杠 + let result = str.replace(regex1, '\\'); + result = str.replace(/(?'); //替换\n而不替换\\n 为 \\n + return result; +} + /** * 获取班级作业 */ @@ -52,8 +61,8 @@ export const getClassWorkList = async (id) => { /** * 2024-10-17 由于 后面截止时间加了 时分,特加判断 - * 1、进行中、以前是以明天判断。现改为传当天的日期,并根据当前日期的时分与截止日期进行判断, - * 2、已结束、以前默认是以明天判断。现依然以明天为判断,并根据当前日期时分大于截止日期时分判断。 + * 1、待批改、以前是以明天判断。现改为传当天的日期,并根据当前日期的时分与截止日期进行判断, + * 2、已批改、以前默认是以明天判断。现依然以明天为判断,并根据当前日期时分大于截止日期时分判断。 */ let list = response.rows From b07a4e07b9dd4932a7ce6dddbf426bed76616949 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: Mon, 4 Nov 2024 15:36:00 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E6=89=B9=E6=94=B9?= =?UTF-8?q?=EF=BC=9A=E9=9C=80=E6=B1=82=E6=9B=B4=E6=96=B0=EF=BC=8C=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/classTask/classTask.vue | 73 +++++++++---------- .../container/classTask/task-item.vue | 49 ++++++++----- .../views/desktop/container/work-trend.vue | 3 +- src/renderer/src/views/tool/createHomework.js | 24 ++---- 4 files changed, 73 insertions(+), 76 deletions(-) diff --git a/src/renderer/src/views/classTask/classTask.vue b/src/renderer/src/views/classTask/classTask.vue index b05159b..e034d45 100644 --- a/src/renderer/src/views/classTask/classTask.vue +++ b/src/renderer/src/views/classTask/classTask.vue @@ -168,7 +168,6 @@ const getClassWorkList = async () => { for (var i = 0; i < list.length; i++) { // 初始化部分新增字段值 list[i].workdatalist = [] - list[i].workdatacount = 0 // 人数 list[i].workdatalistVisible = false list[i].workdatafeedbackcount = 0 // 已交人数 list[i].feedtimelength = 0 @@ -200,19 +199,10 @@ const getClassWorkList = async () => { } else { list[i].entpcourseworklistarray = [] } - // 根据 classworkdatastudentids 初始化判断分配的人数 - if ( - list[i].classworkdatastudentids != '' && - list[i].classworkdatastudentids != null && - list[i].classworkdatastudentids != 'null' - ) { - const stuList = JSON.parse('[' + list[i].classworkdatastudentids + ']') - list[i].workdatacount = stuList.length - } } - // 显示分配人数(workdatacount)>0 的 + // 显示分配人数(workdataresultsum)>0 的 if (list && list.length > 0) { - classWorkList.value = list && list.filter((item) => item.workdatacount > 0) + classWorkList.value = list && list.filter((item) => item.workdataresultsum > 0) //TODO: 这里没分页,貌似这个 total 不重要,后续看 total.value = 0 }else{ @@ -305,29 +295,32 @@ const getStudentClassWorkData = async() => { } } } - // 当前这个学习任务,共推送给了几个学生,workdatacount + // 当前这个学习任务,共推送给了几个学生,workdataresultsum if (res.rows[i].classworkid == classWorkList.value[t].id) { classWorkList.value[t].workdatalist.push(res.rows[i]) } } - // 计算完成进度 workdatacount人数要大于0 + // 计算完成进度 workdataresultsum人数要大于0 if ( classWorkList.value[t].workdataresultcount > 0 && - classWorkList.value[t].workdatacount > 0 + classWorkList.value[t].workdataresultsum > 0 ) { classWorkList.value[t].finishpercent = parseInt( - (classWorkList.value[t].workdataresultcount / classWorkList.value[t].workdatacount) * 100 - ) - // 计算-已完成批阅数 : 人数-已批阅数 - // teacherCorrectionProgress 老师已批阅进度条: - // workdataresultcount 完成人数 - // teacherrationgcount 已批阅人数 - // 已批阅百分比: (人数-已批阅数) / 人数 * 100 - classWorkList.value[t].teacherCorrectionProgress = parseInt( - ((classWorkList.value[t].teacherrationgcount) / classWorkList.value[t].workdataresultcount) * 100 + (classWorkList.value[t].workdataresultcount / classWorkList.value[t].workdataresultsum) * 100 ) } else { classWorkList.value[t].finishpercent = 0 + } + + /** 计算 已批阅进度 */ + // 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 } @@ -352,7 +345,7 @@ const getStudentClassWorkData = async() => { var dd = (classWorkList.value[t].rightAnswerCount / (classWorkList.value[t].entpcourseworklistarray.length * - classWorkList.value[t].workdatacount)) * + classWorkList.value[t].workdataresultsum)) * 100 classWorkList.value[t].scoingRate = dd.toFixed(0) + '%' } else { @@ -466,12 +459,12 @@ const getStudentVisible = async () => { // } // 确保当前拿到的任务与页面中存在的任务能一对一(避免因删除其他操作而删除作业任务导致两个数组的index不统一而越界) let curWork = curWorkList.find((work) => work.id === classWorkList.value[t].id) - // workdataresultcount 完成人数 workdatacount人数要大于0 - if (curWork && curWork.workdataresultcount > 0 && classWorkList.value[t].workdatacount > 0) { + // 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].workdatacount) * 100 + (classWorkList.value[t].workdataresultcount / classWorkList.value[t].workdataresultsum) * 100 ) // 计算参与学习任务的平均用时 if (classWorkList.value[t].workdatafeedbackcount > 0) { @@ -479,17 +472,7 @@ const getStudentVisible = async () => { } else { classWorkList.value[t].averagetime = 0 } - // 更新批阅数 - classWorkList.value[t].teacherrationgcount = curWork.teacherrationgcount - // 计算-已完成批阅数 : 已批阅数 - // teacherCorrectionProgress 老师已批阅进度条: - // workdataresultcount 完成人数 - // teacherrationgcount 已批阅人数 - // 已批阅百分比: (已批阅数) / 人数 * 100 - classWorkList.value[t].teacherCorrectionProgress = parseInt( - ((curWork.teacherrationgcount) / curWork.workdataresultcount) * 100 - ) } else { // 学生未完成,但是老师批改了? if(curWork && curWork.workdataresultcount == 0){ @@ -497,6 +480,20 @@ const getStudentVisible = async () => { classWorkList.value[t].teacherrationgcount = curWork.teacherrationgcount } classWorkList.value[t].finishpercent = 0 + } + + /** 计算 已批阅进度 */ + // 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 } } diff --git a/src/renderer/src/views/classTask/container/classTask/task-item.vue b/src/renderer/src/views/classTask/container/classTask/task-item.vue index 965e394..f5625f6 100644 --- a/src/renderer/src/views/classTask/container/classTask/task-item.vue +++ b/src/renderer/src/views/classTask/container/classTask/task-item.vue @@ -15,27 +15,37 @@
-
- - 已交 -
- -
- - 已批阅 -
- - + +
+ + + 已批阅({{ item.teacherrationgcount}}) + +
+ + +
+ {{ item.workdataresultsum }} + 练习次数 +
+ +
+ {{ item.teacherrationgcount?item.workdataresultsum - item.teacherrationgcount:item.workdataresultsum }} + 引用次数 +
+
{{ item.averagetime }}分钟 @@ -98,6 +108,7 @@ const props = defineProps({ } .class-reserv-item-progress { width: 200px; + padding: 0 10px; font-size: 14px; } .class-reserv-item-tool { diff --git a/src/renderer/src/views/desktop/container/work-trend.vue b/src/renderer/src/views/desktop/container/work-trend.vue index 26ca4c8..96397f5 100644 --- a/src/renderer/src/views/desktop/container/work-trend.vue +++ b/src/renderer/src/views/desktop/container/work-trend.vue @@ -21,7 +21,7 @@
{{ item.classcaption }} | 截止时间:{{ item.deaddate }}
-
{{ item.workdataresultcount }} / {{ item.workdatacount }}
+
{{ item.workdataresultcount }} / {{ item.workdataresultsum }}
已交
@@ -72,7 +72,6 @@ const getHomework = async () => { item.workclass = '' } - item.workdatacount = JSON.parse('[' + item.classworkdatastudentids + ']').length // 如果是习题训练任务,则检查一共有多少道 if (item.entpcourseworklist != '') { item.entpcourseworklistarray = JSON.parse( diff --git a/src/renderer/src/views/tool/createHomework.js b/src/renderer/src/views/tool/createHomework.js index f51751c..bb633d8 100644 --- a/src/renderer/src/views/tool/createHomework.js +++ b/src/renderer/src/views/tool/createHomework.js @@ -70,7 +70,6 @@ export const getClassWorkList = async (id) => { for (var i = 0; i < list.length; i++) { // 初始化部分新增字段值 list[i].workdatalist = [] - list[i].workdatacount = 0 // 人数 list[i].workdatalistVisible = false list[i].workdatafeedbackcount = 0 // 已交人数 list[i].feedtimelength = 0 @@ -100,19 +99,10 @@ export const getClassWorkList = async (id) => { } else { list[i].entpcourseworklistarray = [] } - // 根据 classworkdatastudentids 初始化判断分配的人数 - if ( - list[i].classworkdatastudentids != '' && - list[i].classworkdatastudentids != null && - list[i].classworkdatastudentids != 'null' - ) { - const stuList = JSON.parse('[' + list[i].classworkdatastudentids + ']') - list[i].workdatacount = stuList.length - } } - // 显示分配人数(workdatacount)>0 的 + // 显示分配人数(workdataresultsum)>0 的 if (list && list.length > 0) { - classWorkList = list && list.filter((item) => item.workdatacount > 0) + classWorkList = list && list.filter((item) => item.workdataresultsum > 0) //TODO: 这里没分页,貌似这个 total 不重要,后续看 } else { classWorkList = [] @@ -180,18 +170,18 @@ export const getStudentClassWorkData = async () => { } } } - // 当前这个学习任务,共推送给了几个学生,workdatacount + // 当前这个学习任务,共推送给了几个学生,workdataresultsum if (res.rows[i].classworkid == classWorkList[t].id) { classWorkList[t].workdatalist.push(res.rows[i]) } } - // 计算完成进度 workdatacount人数要大于0 + // 计算完成进度 workdataresultsum 人数要大于0 if ( classWorkList[t].workdataresultcount > 0 && - classWorkList[t].workdatacount > 0 + classWorkList[t].workdataresultsum > 0 ) { classWorkList[t].finishpercent = parseInt( - (classWorkList[t].workdataresultcount / classWorkList[t].workdatacount) * 100 + (classWorkList[t].workdataresultcount / classWorkList[t].workdataresultsum) * 100 ) } else { classWorkList[t].finishpercent = 0 @@ -220,7 +210,7 @@ export const getStudentClassWorkData = async () => { var dd = (classWorkList[t].rightAnswerCount / (classWorkList[t].entpcourseworklistarray.length * - classWorkList[t].workdatacount)) * + classWorkList[t].workdataresultsum)) * 100 classWorkList[t].scoingRate = dd.toFixed(0) + '%' } else { From 033c0a3b19d0a75719e75a06014ef4412456d2e5 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: Mon, 4 Nov 2024 17:31:30 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E6=89=B9=E9=98=85?= =?UTF-8?q?=EF=BC=9A=E5=BE=85=E7=BB=A7=E7=BB=AD=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/api/classTask/index.js | 77 ++++++++++--------- src/renderer/src/utils/date.js | 16 ++++ .../src/views/classTask/classTask.vue | 61 +++++++++++---- .../container/classTask/item-dialog-score.vue | 11 ++- .../container/classTask/task-item.vue | 2 +- 5 files changed, 115 insertions(+), 52 deletions(-) diff --git a/src/renderer/src/api/classTask/index.js b/src/renderer/src/api/classTask/index.js index a01867e..8a95531 100644 --- a/src/renderer/src/api/classTask/index.js +++ b/src/renderer/src/api/classTask/index.js @@ -89,6 +89,13 @@ export function updateClassworkdata(data) { data: data }) } +export function updateClassWorkDataAutoFinish(data) { + return request({ + url: '/education/classworkdata/updAutoFinish', + method: 'put', + data: data + }) +} // 修改classwork export function updateClasswork(data) { @@ -118,90 +125,90 @@ export function addClassworkeval(data) { // 查询evaluationclue列表 export function listEvaluationclue(query) { return request({ - url: '/education/evaluationclue/list', - method: 'get', - params: query + url: '/education/evaluationclue/list', + method: 'get', + params: query }) } // 查询evaluationclue详细 export function getEvaluationclue(id) { return request({ - url: '/education/evaluationclue/' + id, - method: 'get' + url: '/education/evaluationclue/' + id, + method: 'get' }) } // 新增evaluationclue export function addEvaluationclueReturnId(data) { return request({ - url: '/education/evaluationclue/addReturnId', - method: 'post', - data: data + url: '/education/evaluationclue/addReturnId', + method: 'post', + data: data }) } // 新增evaluationclue export function addEvaluationclue(data) { return request({ - url: '/education/evaluationclue', - method: 'post', - data: data + url: '/education/evaluationclue', + method: 'post', + data: data }) } // 修改evaluationclue export function updateEvaluationclue(data) { return request({ - url: '/education/evaluationclue', - method: 'put', - data: data + url: '/education/evaluationclue', + method: 'put', + data: data }) } // 删除evaluationclue export function delEvaluationclue(id) { return request({ - url: '/education/evaluationclue/' + id, - method: 'delete' + url: '/education/evaluationclue/' + id, + method: 'delete' }) } // 新增evaluationclue,保存base64图片 export function saveBase64File(data) { return request({ - url: '/education/evaluationclue/saveBase64File', - method: 'post', - data: data + url: '/education/evaluationclue/saveBase64File', + method: 'post', + data: data }) } // 新增evaluationclue,上传 export function saveEvaluationClueUploadFile(data) { return request({ - url: '/education/evaluationclue/saveUploadFile', - method: 'post', - data: data + url: '/education/evaluationclue/saveUploadFile', + method: 'post', + data: data }) } // 读取文件内容 export function readFile(data) { return fetch(import.meta.env.VITE_APP_RES_FILE_PATH + data.cluelink, { - method: "get", - headers: { - 'Content-Type': 'text/plain', // 请求头设置为纯文本 - 'Accept': 'text/plain' // 接受头设置为纯文本 - }, + method: "get", + headers: { + 'Content-Type': 'text/plain', // 请求头设置为纯文本 + 'Accept': 'text/plain' // 接受头设置为纯文本 + }, }) - .then(response => response.text()) - .then(text => { - return Promise.resolve(text); - }) - .catch(error => { - console.error('读取文件出错:', error); - return Promise.reject(); - }); + .then(response => response.text()) + .then(text => { + return Promise.resolve(text); + }) + .catch(error => { + console.error('读取文件出错:', error); + return Promise.reject(); + }); /*return request({ url: '/education/evaluationclue/readFile', method: 'post', diff --git a/src/renderer/src/utils/date.js b/src/renderer/src/utils/date.js index d967f24..b66f892 100644 --- a/src/renderer/src/utils/date.js +++ b/src/renderer/src/utils/date.js @@ -167,3 +167,19 @@ export function getTomorrow() { return tomorrow; } + +/** + * date() z转为日期格式 + * @param {*} format + * @returns + */ +export const getDateFormatDate = (newDate)=> { + const now = newDate; // new Date(); + const year = now.getFullYear(); + const month = (now.getMonth() + 1).toString().padStart(2, '0'); + const day = now.getDate().toString().padStart(2, '0'); + // const hours = now.getHours().toString().padStart(2, '0'); + // const minutes = now.getMinutes().toString().padStart(2, '0'); + + return `${year}-${month}-${day}`; +} diff --git a/src/renderer/src/views/classTask/classTask.vue b/src/renderer/src/views/classTask/classTask.vue index e034d45..736450b 100644 --- a/src/renderer/src/views/classTask/classTask.vue +++ b/src/renderer/src/views/classTask/classTask.vue @@ -19,6 +19,16 @@ /> +
+ +
@@ -63,7 +73,7 @@ import { listByDeadDate, listClassworkdata } from '@/api/classTask' import TaskItem from '@/views/classTask/container/classTask/task-item.vue' // import ItemDialog from '@/views/classTask/container/item-dialog.vue' import { useToolState } from '@/store/modules/tool' -import { getCurrentTime } from '@/utils/date' +import { getCurrentTime, getDateFormatDate } from '@/utils/date' import useUserStore from '@/store/modules/user' import useClassTaskStore from "@/store/modules/classTask"; import {createWindow} from '@/utils/tool' @@ -81,6 +91,16 @@ const tabActive = ref('待批改') const dataList = ref([]) const EndDate = ref(getCurrentTime('YYYY-MM-DD')) +const startEndDate = ref([ + new Date(2024, 9, 1, 0, 0, 0), + new Date(2024, 11, 1, 23, 59, 59), +]) +const defaultTime = ref<[Date, Date]>([ + new Date(2024, 9, 1, 0, 0, 0), + new Date(2024, 11, 1, 23, 59, 59), +]) +console.log(new Date(2000, 1, 1, 0, 0, 0),'-------------------' ) + // 所有班级作业列表 const classWorkList = ref([]) const total = ref(0) @@ -110,6 +130,14 @@ const changeEndDate = (val) => { console.log('截止日期改变', val) getData() // 加载数据 } +const changeStartEndDate = (val) => { + console.log('启止日期改变', val) + console.log('startEndDate', startEndDate.value) + console.log('startEndDate-0', getDateFormatDate(startEndDate.value[0])) + console.log('startEndDate-1', getDateFormatDate(startEndDate.value[1])) + + getData() // 加载数据 +} // 获取数据 const getData = async () => { @@ -145,8 +173,9 @@ const getClassWorkList = async () => { edustage: userStore.edustage, // 学段 edusubject: userStore.edusubject,//学科 // deaddate: tabActive.value === '待批改'? getTomorrow() : EndDate.value,// 待批改:明天,已批改:选择的日期 弃用 - deaddate: EndDate.value,// 待批改:明天,已批改:选择的日期 - status: '1', // 作业状态:1-已发布 + 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, }) @@ -156,15 +185,15 @@ const getClassWorkList = async () => { * 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 = []; + // 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 = [] @@ -226,7 +255,9 @@ const getStudentClassWorkData = async() => { // edusubject: userStore.edusubject,//学科 // deaddate: tabActive.value === '待批改'? getTomorrow() : EndDate.value,// 待批改:明天,已批改:选择的日期 // deaddate: EndDate.value,// 待批改:明天,已批改:选择的日期 - // //status: '1', // 作业状态:1-已发布 + // 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, // }) @@ -426,8 +457,10 @@ const getStudentVisible = async () => { edustage: userStore.edustage,// 学段 edusubject: userStore.edusubject,//学科 // deaddate: tabActive.value === '待批改'? getTomorrow() : EndDate.value,// 待批改:明天,已批改:选择的日期 - deaddate: EndDate.value,// 待批改:明天,已批改:选择的日期 - status: '1', // 作业状态:1-已发布 + // deaddate: EndDate.value,// 待批改:明天,已批改:选择的日期 + startdate: tabActive.value === '待批改'? '' : getDateFormatDate(startEndDate.value[0]), + deaddate: tabActive.value === '待批改'? '' : getDateFormatDate(startEndDate.value[1]), + status: tabActive.value === '待批改'? '1' : '2', // 作业状态:1-已发布 // orderby: 'concat(deaddate,uniquekey) DESC', orderby: 'deaddate DESC', pageSize: 100 diff --git a/src/renderer/src/views/classTask/container/classTask/item-dialog-score.vue b/src/renderer/src/views/classTask/container/classTask/item-dialog-score.vue index e00d892..66b2890 100644 --- a/src/renderer/src/views/classTask/container/classTask/item-dialog-score.vue +++ b/src/renderer/src/views/classTask/container/classTask/item-dialog-score.vue @@ -427,7 +427,7 @@ import useUserStore from '@/store/modules/user' import { ref, reactive } from 'vue' // import { Plus } from '@element-plus/icons-vue' import { ElMessageBox, ElMessage } from 'element-plus' -import { updateClassworkeval, updateClassworkdata, getClassworkdata, updateClassworkevalList } from '@/api/classTask' +import { updateClassworkeval,updateClasswork, updateClassWorkDataAutoFinish, getClassworkdata, updateClassworkevalList } from '@/api/classTask' import { getTimeDate } from '@/utils/date' import ReFilePreview from '@/components/refile-preview/index.vue' import { quizStrToList } from '@/utils/comm'; @@ -871,6 +871,13 @@ const onSubmit = () => { }) return } + /** 1、 更新当前作业是否已经批阅完成 */ + // TODO updateClasswork + + + + + /** 2、 更新每个学生的批阅 */ var formd = { id: dialogProps.value.studentObj.id, // this.activeClassWork.id; @@ -878,7 +885,7 @@ const onSubmit = () => { updatedate: getTimeDate(),// = year+'-'+month+'-'+day+' '+hh+':'+mm; }; // 更新作业批改状态 - updateClassworkdata(formd).then(res => { + updateClassWorkDataAutoFinish(formd).then(res => { }) // 更新题目批改 diff --git a/src/renderer/src/views/classTask/container/classTask/task-item.vue b/src/renderer/src/views/classTask/container/classTask/task-item.vue index f5625f6..484a703 100644 --- a/src/renderer/src/views/classTask/container/classTask/task-item.vue +++ b/src/renderer/src/views/classTask/container/classTask/task-item.vue @@ -35,7 +35,7 @@
- +
{{ item.workdataresultsum }} 练习次数 From 2407e66e6693731dfc79e54cdb9139045aa430dd 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 11:12:14 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E6=89=B9=E6=94=B9?= =?UTF-8?q?=EF=BC=9A=E5=B7=B2=E6=89=B9=E6=94=B9=E6=97=A5=E6=9C=9F=E6=9B=B4?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/utils/date.js | 48 +++++++++++++++++-- .../src/views/classTask/classTask.vue | 22 ++++----- 2 files changed, 54 insertions(+), 16 deletions(-) diff --git a/src/renderer/src/utils/date.js b/src/renderer/src/utils/date.js index b66f892..b411c49 100644 --- a/src/renderer/src/utils/date.js +++ b/src/renderer/src/utils/date.js @@ -167,9 +167,53 @@ export function getTomorrow() { return tomorrow; } +/** + * 当前日期的 前几天 + * @param {*} index 天数 + * @param {*} format true 返回中国标准时间:Wed Oct 02 2024 08:00:00 GMT+0800 (中国标准时间) 格式; false 返回标准时间格式 YYYY-MM-DD + * @returns + */ +export function getTheOtherDay(index, format=true) { + let date = new Date(); + var year = date.getFullYear() + var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1 + var day = date.getDate()- index < 10 ? '0' + (date.getDate()- index) : date.getDate()- index + + // 前 index 天的时间 + if(format){ + let tomorrow = `${year}-${month}-${day}`; + return new Date(tomorrow); + }else{ + let tomorrow = `${year}-${month}-${day}`; + return tomorrow; + } +} +/** + * 当前日期的 后几天 + * @param {*} index 天数 + * @param {*} format true 返回中国标准时间:Wed Oct 02 2024 08:00:00 GMT+0800 (中国标准时间) 格式; false 返回标准时间格式 YYYY-MM-DD + * @returns + */ +export function getTheOtheNextDay(index, format=true) { + const date = new Date(); + var year = date.getFullYear() + var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1 + var day = date.getDate()+ index < 10 ? '0' + (date.getDate()+ index) : date.getDate()+ index + + // 前 index 天的时间 + if(format){ + const tomorrow = `${year}-${month}-${day}`; + return new Date(tomorrow); + }else{ + const tomorrow = `${year}-${month}-${day}`; + return tomorrow; + } +} + /** - * date() z转为日期格式 + * Wed Oct 02 2024 08:00:00 GMT+0800 (中国标准时间) 转为日期格式: YYYY-MM-DD + * * @param {*} format * @returns */ @@ -178,8 +222,6 @@ export const getDateFormatDate = (newDate)=> { const year = now.getFullYear(); const month = (now.getMonth() + 1).toString().padStart(2, '0'); const day = now.getDate().toString().padStart(2, '0'); - // const hours = now.getHours().toString().padStart(2, '0'); - // const minutes = now.getMinutes().toString().padStart(2, '0'); return `${year}-${month}-${day}`; } diff --git a/src/renderer/src/views/classTask/classTask.vue b/src/renderer/src/views/classTask/classTask.vue index 736450b..50a7f39 100644 --- a/src/renderer/src/views/classTask/classTask.vue +++ b/src/renderer/src/views/classTask/classTask.vue @@ -73,7 +73,7 @@ import { listByDeadDate, listClassworkdata } from '@/api/classTask' import TaskItem from '@/views/classTask/container/classTask/task-item.vue' // import ItemDialog from '@/views/classTask/container/item-dialog.vue' import { useToolState } from '@/store/modules/tool' -import { getCurrentTime, getDateFormatDate } from '@/utils/date' +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' @@ -90,16 +90,16 @@ const tabOptions = ref(['待批改', '已批改']) const tabActive = ref('待批改') const dataList = ref([]) const EndDate = ref(getCurrentTime('YYYY-MM-DD')) - +// 默认起止时间:当前日期前2天后3天;默认查询一周的数据 const startEndDate = ref([ - new Date(2024, 9, 1, 0, 0, 0), - new Date(2024, 11, 1, 23, 59, 59), + getTheOtherDay(3), + getTheOtheNextDay(3), ]) const defaultTime = ref<[Date, Date]>([ - new Date(2024, 9, 1, 0, 0, 0), - new Date(2024, 11, 1, 23, 59, 59), + getTheOtherDay(3), + getTheOtheNextDay(3), ]) -console.log(new Date(2000, 1, 1, 0, 0, 0),'-------------------' ) + // 所有班级作业列表 const classWorkList = ref([]) @@ -131,11 +131,7 @@ const changeEndDate = (val) => { getData() // 加载数据 } const changeStartEndDate = (val) => { - console.log('启止日期改变', val) - console.log('startEndDate', startEndDate.value) - console.log('startEndDate-0', getDateFormatDate(startEndDate.value[0])) - console.log('startEndDate-1', getDateFormatDate(startEndDate.value[1])) - + console.log('起止日期改变', val) getData() // 加载数据 } @@ -180,7 +176,7 @@ const getClassWorkList = async () => { pageSize: 100, }) - /** + /** 2024-11-02 需求更改;弃用 * 2024-10-17 由于 后面截止时间加了 时分,特加判断 * 1、待批改、以前是以明天判断。现改为传当天的日期,并根据当前日期的时分与截止日期进行判断, * 2、已批改、以前默认是以明天判断。现依然以明天为判断,并根据当前日期时分大于截止日期时分判断。 From 1cc0bf965e8d7cd2fde8e2609aa6f3372ced1eff 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 11:15:06 +0800 Subject: [PATCH 5/5] 1 --- .../src/views/classTask/classTask.vue | 21 +------------------ 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/src/renderer/src/views/classTask/classTask.vue b/src/renderer/src/views/classTask/classTask.vue index 50a7f39..7b28e7c 100644 --- a/src/renderer/src/views/classTask/classTask.vue +++ b/src/renderer/src/views/classTask/classTask.vue @@ -5,20 +5,6 @@
-
-
- -
-
{ const disabledDate = (time) => { return time.getTime() > Date.now() } -// 截止日期改变 -const changeEndDate = (val) => { - console.log('截止日期改变', val) - getData() // 加载数据 -} + const changeStartEndDate = (val) => { console.log('起止日期改变', val) getData() // 加载数据