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/8] =?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.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
--
2.44.0.windows.1
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/8] =?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.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 {
--
2.44.0.windows.1
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/8] =?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 }}
练习次数
--
2.44.0.windows.1
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/8] =?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、已批改、以前默认是以明天判断。现依然以明天为判断,并根据当前日期时分大于截止日期时分判断。
--
2.44.0.windows.1
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/8] 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() // 加载数据
--
2.44.0.windows.1
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 6/8] =?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);
+ }
})
--
2.44.0.windows.1
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 7/8] =?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'
}
--
2.44.0.windows.1
From 5e948d9b95e875f60df5ec169a06a0e0741f2360 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: Fri, 8 Nov 2024 09:51:17 +0800
Subject: [PATCH 8/8] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E8=AE=BE=E8=AE=A1?=
=?UTF-8?q?=EF=BC=9A=E4=B9=A0=E9=A2=98=E6=9D=A5=E6=BA=90=E5=90=8C=E6=AD=A5?=
=?UTF-8?q?web=E7=AB=AF=E7=9A=84=E8=8F=81=E4=BC=98=E7=BD=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/views/classTask/classTask.vue | 14 +-
.../views/classTask/container/item-dialog.vue | 821 ------------------
.../container/newTask/taskTypeView.vue | 17 +-
3 files changed, 17 insertions(+), 835 deletions(-)
delete mode 100644 src/renderer/src/views/classTask/container/item-dialog.vue
diff --git a/src/renderer/src/views/classTask/classTask.vue b/src/renderer/src/views/classTask/classTask.vue
index 61107f9..46897d7 100644
--- a/src/renderer/src/views/classTask/classTask.vue
+++ b/src/renderer/src/views/classTask/classTask.vue
@@ -48,7 +48,6 @@
>
-
@@ -57,19 +56,16 @@ import { ref, onMounted, onUnmounted, computed, watch } from 'vue'
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, getTheOtherDay, getTheOtheNextDay } from '@/utils/date'
+import { getDateFormatDate, getTheOtherDay, getTheOtheNextDay } from '@/utils/date'
import useUserStore from '@/store/modules/user'
import {createWindow} from '@/utils/tool'
-import {sessionStore} from '@/utils/store'
import {debounce } from '@/utils/comm'
const toolState = useToolState();
-
const userStore = useUserStore().user
-// const itemDialogRef = ref(null)
+
const tabOptions = ref(['待批改', '已批改'])
const tabActive = ref('待批改')
const dataList = ref([])
@@ -104,12 +100,6 @@ const deleteReserv = (item) => {
// })
}
-
-// 当日之后的日期禁用
-const disabledDate = (time) => {
- return time.getTime() > Date.now()
-}
-
const changeStartEndDate = (val) => {
console.log('起止日期改变', val)
getData() // 加载数据
diff --git a/src/renderer/src/views/classTask/container/item-dialog.vue b/src/renderer/src/views/classTask/container/item-dialog.vue
deleted file mode 100644
index 717cb0d..0000000
--- a/src/renderer/src/views/classTask/container/item-dialog.vue
+++ /dev/null
@@ -1,821 +0,0 @@
-
-
-
-
-
- {{ classWorkAnalysis.title }}完成情况
- {{
- classWorkAnalysis.worktype
- }}
-
-
-
-
- 作业批阅
- 逐题讲评
- 训练报告
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 未提交
- {{ scope.row.updatedate }}
-
-
-
-
- {{scope.row.getScore || 0}}
-
-
-
-
-
- 待批阅
-
-
- 完美
- 优秀
- 良好
- 及格
- 不及格
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/renderer/src/views/classTask/container/newTask/taskTypeView.vue b/src/renderer/src/views/classTask/container/newTask/taskTypeView.vue
index 3252c0f..833a403 100644
--- a/src/renderer/src/views/classTask/container/newTask/taskTypeView.vue
+++ b/src/renderer/src/views/classTask/container/newTask/taskTypeView.vue
@@ -238,7 +238,7 @@ import { useRouter } from 'vue-router'
import {listEntpcoursework, listEntpcourseworkNew, getEntpcoursework} from '@/api/education/entpCourseWork'
import { addClassworkReturnId } from '@/api/teaching/classwork'
-import { updateClasswork, listEvaluationclue,readFile, listClassworkeval,delClassworkeval,addClassworkeval,updateClassworkeval } from '@/api/classTask'
+import { updateClasswork, listEvaluationclue, listClassworkeval,delClassworkeval,addClassworkeval,updateClassworkeval } from '@/api/classTask'
import { listEvaluation } from '@/api/subject'
import { listEntpcoursefile } from '@/api/education/entpcoursefile'
import { listKnowledgePoint } from "@/api/knowledge/knowledgePoint";
@@ -250,6 +250,7 @@ import FileUpload from "@/components/FileUpload/index.vue";
import whiteboard from '@/components/whiteboard/whiteboard.vue'
import prevReadMsgDialog from '@/views/classTask/container/newTask/prevReadMsg-Dialog.vue'
import examDetailsDrawer from '@/components/exam-question/examDetailsDrawer.vue'
+import { JYApiListCT, JYApiListOriginYear, JYApiListSO} from "@/utils/examQuestion/jyeoo"
import { useToolState } from '@/store/modules/tool'
import useUserStore from '@/store/modules/user'
@@ -877,7 +878,19 @@ const showExamAnalyseDrawer = (row) => {
-onMounted(() => {
+onMounted(async() => {
+ // 获取当前学科下的试题题型
+ const name = userStore.edustage + userStore.edusubject;
+ const jyCT = await JYApiListCT(proxy, name);
+ if (jyCT.length == 0) {
+ ElMessage.error('获取题型失败!');
+ return;
+ }
+ entpCourseWorkTypeList.value = jyCT;
+ // 获取当前学科下的试题年份
+ entpCourseWorkYearList.value = JYApiListOriginYear();
+ entpCourseWorkGroupList.value = await JYApiListSO(proxy, name);
+
})
watch(() => props.propsformobj.uniquekey, (newVal) => {
--
2.44.0.windows.1