diff --git a/src/renderer/src/utils/date.js b/src/renderer/src/utils/date.js
index d967f24..5a757a6 100644
--- a/src/renderer/src/utils/date.js
+++ b/src/renderer/src/utils/date.js
@@ -167,3 +167,64 @@ 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;
+ }
+}
+
+
+/**
+ * Wed Oct 02 2024 08:00:00 GMT+0800 (中国标准时间) 转为日期格式: YYYY-MM-DD
+ *
+ * @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');
+
+ return `${year}-${month}-${day}`;
+}
+
diff --git a/src/renderer/src/views/classTask/classTask.vue b/src/renderer/src/views/classTask/classTask.vue
index 055fa37..61107f9 100644
--- a/src/renderer/src/views/classTask/classTask.vue
+++ b/src/renderer/src/views/classTask/classTask.vue
@@ -4,20 +4,16 @@
-
@@ -27,7 +23,7 @@
([
+ getTheOtherDay(3),
+ getTheOtheNextDay(3),
+])
+
// 所有班级作业列表
const classWorkList = ref([])
@@ -91,23 +94,24 @@ 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) => {
return time.getTime() > Date.now()
}
-// 截止日期改变
-const changeEndDate = (val) => {
- console.log('截止日期改变', val)
+
+const changeStartEndDate = (val) => {
+ console.log('起止日期改变', val)
getData() // 加载数据
}
@@ -115,245 +119,202 @@ const changeEndDate = (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,// 进行中:明天,已结束:选择的日期 弃用
- deaddate: EndDate.value,// 进行中:明天,已结束:选择的日期
- status: '1', // 作业状态: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-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 // 平均用时
+
+ // ----------------------------------------------
+ // 处理任务类型的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 = ''
}
-
-
- 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
- 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 = []
- }
- // 根据 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
- }
+ // 如果是习题训练任务,则检查一共有多少道
+ if (list[i].entpcourseworklist != '') {
+ list[i].entpcourseworklistarray = JSON.parse(
+ '[' + list[i].entpcourseworklist + ']'
+ )
+ } else {
+ list[i].entpcourseworklistarray = []
}
- // 显示分配人数(workdatacount)>0 的
- if (list && list.length > 0) {
- classWorkList.value = list && list.filter((item) => item.workdatacount > 0)
- //TODO: 这里没分页,貌似这个 total 不重要,后续看
- total.value = 0
- }else{
- classWorkList.value = []
- total.value = 0
- }
- 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,// 进行中:明天,已结束:选择的日期
- // //status: '1', // 作业状态: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++
}
}
}
- // 当前这个学习任务,共推送给了几个学生,workdatacount
- if (res.rows[i].classworkid == classWorkList.value[t].id) {
- classWorkList.value[t].workdatalist.push(res.rows[i])
- }
}
- // 计算完成进度 workdatacount人数要大于0
- if (
- classWorkList.value[t].workdataresultcount > 0 &&
- classWorkList.value[t].workdatacount > 0
- ) {
- classWorkList.value[t].finishpercent = parseInt(
- (classWorkList.value[t].workdataresultcount / classWorkList.value[t].workdatacount) * 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])
}
-
- // 以下四个参数,都要计算
- // 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].workdatacount)) *
- 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%'
+ }
+ }
+ })
+
}
@@ -379,6 +340,7 @@ const getStudentClassWorkDataPolling = () => {
getStudentVisible()
// 在轮询
pollingST.value = setInterval(() => {
+ console.log('轮询查询学生作业进度')
getStudentVisible()
}, 1000 * 10)
}
@@ -413,75 +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,// 进行中:明天,已结束:选择的日期
- status: '1', // 作业状态:1-已发布
- // orderby: 'concat(deaddate,uniquekey) DESC',
+ 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
+ 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 完成人数 workdatacount人数要大于0
- if (curWork && curWork.workdataresultcount > 0 && classWorkList.value[t].workdatacount > 0) {
- classWorkList.value[t].workdataresultcount = curWork.workdataresultcount
- // 桌面端貌似不需要进度条了?
- classWorkList.value[t].finishpercent = parseInt(
- (classWorkList.value[t].workdataresultcount / classWorkList.value[t].workdatacount) * 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
+ 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);
+ }
+ 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]);
}
- // 更新批阅数
- classWorkList.value[t].teacherrationgcount = curWork.teacherrationgcount
- } else {
- // 学生未完成,但是老师批改了?
- if(curWork && curWork.workdataresultcount == 0){
- // 更新批改数
- classWorkList.value[t].teacherrationgcount = curWork.teacherrationgcount
+ // 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
+ }
}
- classWorkList.value[t].finishpercent = 0
}
}
-
- return 1
+ if(newList.length>0){
+ // 更新学生提交后的数据? 作业进度条、平均用时、得分率
+ const list = newList&&newList.filter((item) => item.workdataresultcount > 0) ;
+ getStudentClassWorkData(list,false);
+ }
}
@@ -489,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);
+ }
})
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..484a703 100644
--- a/src/renderer/src/views/classTask/container/classTask/task-item.vue
+++ b/src/renderer/src/views/classTask/container/classTask/task-item.vue
@@ -14,31 +14,40 @@
| 截止时间:{{ item.deaddate }} | {{ tabactive }}
+
+
+
+
+ 已交(
+
+ {{ item.workdataresultcount }}
+ {{ item.workdataresultcount }}
+ /{{ item.workdataresultsum }}
+
+ )
+
+
+
+
+
+
+ 已批阅({{ item.teacherrationgcount}})
+
+
+
+
+
+ {{ item.workdataresultsum }}
+ 练习次数
+
+
+
+ {{ item.teacherrationgcount?item.workdataresultsum - item.teacherrationgcount:item.workdataresultsum }}
+ 引用次数
+
+
- {{ item.workdataresultcount }}
- {{ item.workdataresultcount }}
- /{{ item.workdatacount }}
- 已交
-
-
-
- {{ item.teacherrationgcount?item.workdatacount - item.teacherrationgcount:item.workdatacount }}
- 待批阅
-
-