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] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E6=89=B9=E6=94=B9=E5=88=97?=
=?UTF-8?q?=E8=A1=A8=EF=BC=9A=E9=80=BB=E8=BE=91=E4=BB=A3=E7=A0=81=E4=BC=98?=
=?UTF-8?q?=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);
+ }
})