Explorar o código

修改作业管理bug问题

zengyicheng hai 1 ano
pai
achega
a8a10fe160

+ 147 - 108
src/components/pages/components/classStudentComponents/worksDetail3.vue

@@ -113,9 +113,7 @@
                 </div>
               </div>
               <div class="contentBox">
-                <div
-                  class="contentAuto"
-                >
+                <div class="contentAuto">
                   <div
                     class="left_top"
                     v-if="worksDetail[sIndex].img.length > 0"
@@ -635,7 +633,7 @@
                         />
                       </div>
                       <div class="rightWidthCss">
-                        <div style="padding-top: 15px;">
+                        <div style="padding-top: 15px">
                           <div
                             class="select_box2_answer_box"
                             v-for="(item2, checkIndex) in worksDetail[sIndex]
@@ -1501,7 +1499,16 @@ export default {
 
           // 将结果转换为数组形式
           b = Object.values(b);
-          this.sInfo = b;
+          var c = b.sort(function (x, y) {
+            // 首先比较stage字段
+            if (x.stage !== y.stage) {
+              return parseInt(x.stage) - parseInt(y.stage);
+            }
+
+            // 如果stage字段相同,则比较task字段
+            return parseInt(x.task) - parseInt(y.task);
+          });
+          this.sInfo = c;
           var chapters = [],
             eList = [],
             _ooption = [],
@@ -1521,7 +1528,7 @@ export default {
           var cocopiInfo = res.data[11]; //cocopi或源码编辑作业
           var wordInfo = res.data[12]; //文档作业
           var workEvaList = res.data[13];
-          var workJson = [];
+          var workJson = {};
 
           for (var k = 0; k < res.data[0].length; k++) {
             this.allWorks = res.data[0][k];
@@ -1556,37 +1563,40 @@ export default {
             ) {
               continue;
             }
-            workJson.push({
-              img: [],
-              imgIndex: 0,
-              eList: [],
-              rateList: {},
-              askInfo: [],
-              answerInfo: [],
-              wpptInfo: [],
-              chooseInfo: [],
-              pjInfo: [],
-              xztkInfo: [],
-              lccjInfo: [],
-              bgInfo: [],
-              cocopiInfo: [],
-              wordInfo: [],
-              scopeId: res.data[0][k].id,
-              stagetask: "",
-              time: "",
-            });
+
             this.checkJson[k] = {};
 
-            workJson[k].time = res.data[0][k].time;
-            workJson[k].stagetask =
-              res.data[0][k].stage + "-" + res.data[0][k].task;
+            let stagetask = res.data[0][k].stage + "-" + res.data[0][k].task;
+            if (!workJson[stagetask]) {
+              workJson[stagetask] = {
+                img: [],
+                imgIndex: 0,
+                eList: [],
+                rateList: {},
+                askInfo: [],
+                answerInfo: [],
+                wpptInfo: [],
+                chooseInfo: [],
+                pjInfo: [],
+                xztkInfo: [],
+                lccjInfo: [],
+                bgInfo: [],
+                cocopiInfo: [],
+                wordInfo: [],
+                scopeId: res.data[0][k].id,
+                stagetask: stagetask,
+                time: "",
+              };
+            }
 
+            workJson[stagetask].time = res.data[0][k].time;
             for (var i = 0; i < worksDetail.length; i++) {
               if (
                 res.data[0][k].stage == worksDetail[i].stage &&
-                res.data[0][k].task == worksDetail[i].task
+                res.data[0][k].task == worksDetail[i].task &&
+                res.data[0][k].tool == worksDetail[i].tool
               ) {
-                workJson[k].img.push({
+                workJson[stagetask].img.push({
                   src: worksDetail[i].content,
                   id: i,
                   score: worksDetail[i].score
@@ -1598,7 +1608,8 @@ export default {
             for (var i = 0; i < askInfo.length; i++) {
               if (
                 res.data[0][k].stage == askInfo[i].stage &&
-                res.data[0][k].task == askInfo[i].task
+                res.data[0][k].task == askInfo[i].task &&
+                res.data[0][k].tool == askInfo[i].tool
               ) {
                 const element = askInfo[i];
                 let a = JSON.parse(element.content)[0];
@@ -1611,7 +1622,7 @@ export default {
                   }
                 }
                 a.radio = e;
-                workJson[k].askInfo.push({
+                workJson[stagetask].askInfo.push({
                   askInfo: a,
                   score: askInfo[i].score
                     ? JSON.parse(askInfo[i].score).wScore
@@ -1635,7 +1646,7 @@ export default {
                   }
                   if (a.radio[p] instanceof Array) {
                     if (
-                      workJson[k].askInfo[0].askInfo.askJson[p].answer
+                      workJson[stagetask].askInfo[0].askInfo.askJson[p].answer
                         .sort()
                         .join(",") == a.radio[p].sort().join(",")
                     ) {
@@ -1663,8 +1674,8 @@ export default {
                     }
                   } else {
                     if (
-                      workJson[k].askInfo[0].askInfo.askJson[p].answer ==
-                      a.radio[p]
+                      workJson[stagetask].askInfo[0].askInfo.askJson[p]
+                        .answer == a.radio[p]
                     ) {
                       this.checkJson[k][p].right = 100;
                       isCount += this.checkJson[k][p].right;
@@ -1696,7 +1707,8 @@ export default {
             for (var i = 0; i < chooseInfo.length; i++) {
               if (
                 res.data[0][k].stage == chooseInfo[i].stage &&
-                res.data[0][k].task == chooseInfo[i].task
+                res.data[0][k].task == chooseInfo[i].task &&
+                res.data[0][k].tool == chooseInfo[i].tool
               ) {
                 const element1 = chooseInfo[i];
                 let t = JSON.parse(element1.content)[0].testJson;
@@ -1709,7 +1721,7 @@ export default {
                   }
                 }
                 t.radio = e;
-                workJson[k].chooseInfo.push({
+                workJson[stagetask].chooseInfo.push({
                   chooseInfo: t,
                   score: chooseInfo[i].score
                     ? JSON.parse(chooseInfo[i].score).wScore
@@ -1733,9 +1745,8 @@ export default {
                   }
                   if (t.radio[p] instanceof Array) {
                     if (
-                      workJson[k].chooseInfo[0].chooseInfo.testJson[p].answer
-                        .sort()
-                        .join(",") == t.radio[p].sort().join(",")
+                      t.testJson[p].answer.sort().join(",") ==
+                      t.radio[p].sort().join(",")
                     ) {
                       this.checkJson[k][p].right = 100;
                       isCount += this.checkJson[k][p].right;
@@ -1760,10 +1771,7 @@ export default {
                           ] = 1);
                     }
                   } else {
-                    if (
-                      workJson[k].chooseInfo[0].chooseInfo.testJson[p].answer ==
-                      t.radio[p]
-                    ) {
+                    if (t.testJson[p].answer == t.radio[p]) {
                       this.checkJson[k][p].right = 100;
                       isCount += this.checkJson[k][p].right;
                     } else {
@@ -1794,7 +1802,8 @@ export default {
             for (var i = 0; i < pptInfo.length; i++) {
               if (
                 res.data[0][k].stage == pptInfo[i].stage &&
-                res.data[0][k].task == pptInfo[i].task
+                res.data[0][k].task == pptInfo[i].task &&
+                res.data[0][k].tool == pptInfo[i].tool
               ) {
                 var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
                 if (
@@ -1809,7 +1818,7 @@ export default {
                   var a =
                     "https://view.officeapps.live.com/op/view.aspx?src=" +
                     pptInfo[i].content;
-                  workJson[k].wpptInfo.push({
+                  workJson[stagetask].wpptInfo.push({
                     wpptInfo: a,
                     score: pptInfo[i].score
                       ? JSON.parse(pptInfo[i].score).wScore
@@ -1823,7 +1832,7 @@ export default {
                       pptInfo[i].content.split(".").length - 1
                     ].toLocaleUpperCase() == "PDF"
                 ) {
-                  workJson[k].wpptInfo.push({
+                  workJson[stagetask].wpptInfo.push({
                     wpptInfo: pptInfo[i].content,
                     score: pptInfo[i].score
                       ? JSON.parse(pptInfo[i].score).wScore
@@ -1837,10 +1846,11 @@ export default {
             for (var i = 0; i < answerInfo.length; i++) {
               if (
                 res.data[0][k].stage == answerInfo[i].stage &&
-                res.data[0][k].task == answerInfo[i].task
+                res.data[0][k].task == answerInfo[i].task &&
+                res.data[0][k].tool == answerInfo[i].tool
               ) {
                 const element = answerInfo[i];
-                workJson[k].answerInfo.push({
+                workJson[stagetask].answerInfo.push({
                   answerInfo: JSON.parse(element.content)[0],
                   score: answerInfo[i].score
                     ? JSON.parse(answerInfo[i].score).wScore
@@ -1851,7 +1861,8 @@ export default {
             for (var i = 0; i < pjInfo.length; i++) {
               if (
                 res.data[0][k].stage == pjInfo[i].stage &&
-                res.data[0][k].task == pjInfo[i].task
+                res.data[0][k].task == pjInfo[i].task &&
+                res.data[0][k].tool == pjInfo[i].tool
               ) {
                 var pj = pjInfo[i];
                 var a =
@@ -1864,7 +1875,7 @@ export default {
                     rateJson = a[z].rateJson;
                   }
                 }
-                workJson[k].pjInfo.push({
+                workJson[stagetask].pjInfo.push({
                   answer: JSON.parse(pj.content),
                   rateJson: rateJson,
                   score: pjInfo[i].score
@@ -1877,7 +1888,8 @@ export default {
             for (var i = 0; i < xztkInfo.length; i++) {
               if (
                 res.data[0][k].stage == xztkInfo[i].stage &&
-                res.data[0][k].task == xztkInfo[i].task
+                res.data[0][k].task == xztkInfo[i].task &&
+                res.data[0][k].tool == xztkInfo[i].tool
               ) {
                 if (xztkInfo[i].type == 7) {
                   var xztk = xztkInfo[i];
@@ -1891,7 +1903,7 @@ export default {
                       selectJson = a[z].selectJson;
                     }
                   }
-                  workJson[k].xztkInfo.push({
+                  workJson[stagetask].xztkInfo.push({
                     answer: xztk.content.split(",").map(Number),
                     selectJson: selectJson,
                     score: xztkInfo[i].score
@@ -1905,10 +1917,11 @@ export default {
             for (var i = 0; i < lccjInfo.length; i++) {
               if (
                 res.data[0][k].stage == lccjInfo[i].stage &&
-                res.data[0][k].task == lccjInfo[i].task
+                res.data[0][k].task == lccjInfo[i].task &&
+                res.data[0][k].tool == lccjInfo[i].tool
               ) {
                 var lccj = lccjInfo[i];
-                workJson[k].lccjInfo.push({
+                workJson[stagetask].lccjInfo.push({
                   lccjInfo: JSON.parse(lccj.content)[0],
                   score: lccjInfo[i].score
                     ? JSON.parse(lccjInfo[i].score).wScore
@@ -1920,10 +1933,11 @@ export default {
             for (var i = 0; i < bgInfo.length; i++) {
               if (
                 res.data[0][k].stage == bgInfo[i].stage &&
-                res.data[0][k].task == bgInfo[i].task
+                res.data[0][k].task == bgInfo[i].task &&
+                res.data[0][k].tool == bgInfo[i].tool
               ) {
                 var bg = bgInfo[i];
-                workJson[k].bgInfo.push({
+                workJson[stagetask].bgInfo.push({
                   bgInfo: JSON.parse(bg.content),
                   score: bgInfo[i].score
                     ? JSON.parse(bgInfo[i].score).wScore
@@ -1935,7 +1949,8 @@ export default {
             for (var i = 0; i < cocopiInfo.length; i++) {
               if (
                 res.data[0][k].stage == cocopiInfo[i].stage &&
-                res.data[0][k].task == cocopiInfo[i].task
+                res.data[0][k].task == cocopiInfo[i].task &&
+                res.data[0][k].tool == cocopiInfo[i].tool
               ) {
                 var cocopi = cocopiInfo[i];
                 var c = ["DOT", "DOC", "DOCX", "PPT", "PPTX", "XLSX", "XLS"];
@@ -1962,7 +1977,7 @@ export default {
                   ) != -1
                 ) {
                   t = 1;
-                  workJson[k].cocopiInfo.push({
+                  workJson[stagetask].cocopiInfo.push({
                     url: cocopi.content,
                     type: t,
                     score: cocopiInfo[i].score
@@ -1980,7 +1995,7 @@ export default {
                   var a =
                     "https://view.officeapps.live.com/op/view.aspx?src=" +
                     cocopi.content;
-                  workJson[k].cocopiInfo.push({
+                  workJson[stagetask].cocopiInfo.push({
                     url: a,
                     type: t,
                     score: cocopiInfo[i].score
@@ -1995,7 +2010,7 @@ export default {
                     ].toLocaleUpperCase() == "PDF"
                 ) {
                   t = 3;
-                  workJson[k].cocopiInfo.push({
+                  workJson[stagetask].cocopiInfo.push({
                     url: cocopi.content,
                     type: t,
                     score: cocopiInfo[i].score
@@ -2009,10 +2024,11 @@ export default {
             for (var i = 0; i < wordInfo.length; i++) {
               if (
                 res.data[0][k].stage == wordInfo[i].stage &&
-                res.data[0][k].task == wordInfo[i].task
+                res.data[0][k].task == wordInfo[i].task &&
+                res.data[0][k].tool == wordInfo[i].tool
               ) {
                 var word = wordInfo[i];
-                workJson[k].wordInfo.push({
+                workJson[stagetask].wordInfo.push({
                   wordInfo: JSON.parse(word.content),
                   score: wordInfo[i].score
                     ? JSON.parse(wordInfo[i].score).wScore
@@ -2021,12 +2037,16 @@ export default {
               }
             }
           }
-          const result = workJson.filter((item, index, arr) => {
-            return (
-              arr.findIndex((temp) => temp.stagetask === item.stagetask) ===
-              index
-            );
-          });
+          // const result = workJson.filter((item, index, arr) => {
+          //   return (
+          //     arr.findIndex((temp) => temp.stagetask === item.stagetask) ===
+          //     index
+          //   );
+          // });
+          const result = [];
+          for (var wi = 0; wi < Object.keys(workJson).length; wi++) {
+            result.push(workJson[Object.keys(workJson)[wi]]);
+          }
           for (var l = 0; l < b.length; l++) {
             if (workEvaList.length > 0) {
               for (var p = 0; p < workEvaList.length; p++) {
@@ -2127,7 +2147,21 @@ export default {
             }
           }
 
-          this.worksDetail = result;
+          var resultNewArray = result.sort(function (x, y) {
+            // 以stagetask字段为排序依据
+            var x_parts = x.stagetask.split("-");
+            var y_parts = y.stagetask.split("-");
+
+            // 首先比较第一个数字
+            if (x_parts[0] !== y_parts[0]) {
+              return parseInt(x_parts[0]) - parseInt(y_parts[0]);
+            }
+
+            // 如果第一个数字相同,则比较第二个数字
+            return parseInt(x_parts[1]) - parseInt(y_parts[1]);
+          });
+
+          this.worksDetail = resultNewArray;
 
           this.courseDetail = res.data[0][0];
 
@@ -2150,11 +2184,9 @@ export default {
                 });
                 _option.series[0].data[0].value.push(_ooption[i].value);
               }
-              console.log(_option);
               this.setChart(_option, p);
             }
           }, 0);
-
           let _dyList = JSON.parse(JSON.stringify(this.dyList));
           let _dyList2 = [];
           let _dyList3 = [];
@@ -2163,9 +2195,9 @@ export default {
             _dyList2.push(_dyList[c]);
           }
           _dyList = JSON.parse(JSON.stringify(this.dyList));
-          for (var c = 0; c < workJson.length; c++) {
-            let _stage = workJson[c].stagetask.split("-")[0];
-            let _task = workJson[c].stagetask.split("-")[1];
+          for (var c = 0; c < resultNewArray.length; c++) {
+            let _stage = resultNewArray[c].stagetask.split("-")[0];
+            let _task = resultNewArray[c].stagetask.split("-")[1];
             if (_dyList2[_stage].taskList.length > 0) {
               for (var i = 0; i < _dyList2[_stage].taskList.length; i++) {
                 if (
@@ -2351,8 +2383,11 @@ export default {
     },
     updatePj() {
       for (var i = 0; i < this.worksDetail.length; i++) {
+        if (!this.worksDetail[i].eList.length) {
+          continue;
+        }
         this.updateWorks(
-          this.worksDetail[i].scopeId,
+          this.worksDetail[i].stagetask,
           this.worksDetail[i].rateList,
           i
         );
@@ -2393,38 +2428,42 @@ export default {
       this.ajax
         .get(this.$store.state.api + "updateWorks", params)
         .then((res) => {
-          var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
-          // var _option = JSON.parse(JSON.stringify(this.option));
-
-          var _rate = rateList;
-          var _rateList = Object.keys(rateList);
-          for (var i = 0; i < _ooption.length; i++) {
-            if (_rateList.indexOf(_ooption[i].name) != -1) {
-              _ooption[i].value = _rate[_ooption[i].name];
-            }
-          }
-
-          // var _option = JSON.parse(JSON.stringify(this.radarOption));
-          var _option = this.radarOption;
-          _option.radar.indicator = [];
-          _option.series[0].data[0].value = [];
-          for (var i = 0; i < _ooption.length; i++) {
-            _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-            _option.series[0].data[0].value.push(_ooption[i].value);
-          }
-          if (this.chartObj) {
-            // _option.series[0].data = _ooption;
-            this.chartObj[k].setOption(_option);
-          } else {
-            this.setChart(_ooption);
-          }
-          // this.uploadBoolean = false;
-          if (k == this.worksDetail.length - 1) {
-            this.$message({
-              message: "评价成功",
-              type: "success",
-            });
-          }
+          // var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
+          // // var _option = JSON.parse(JSON.stringify(this.option));
+
+          // var _rate = rateList;
+          // var _rateList = Object.keys(rateList);
+          // for (var i = 0; i < _ooption.length; i++) {
+          //   if (_rateList.indexOf(_ooption[i].name) != -1) {
+          //     _ooption[i].value = _rate[_ooption[i].name];
+          //   }
+          // }
+
+          // // var _option = JSON.parse(JSON.stringify(this.radarOption));
+          // var _option = this.radarOption;
+          // _option.radar.indicator = [];
+          // _option.series[0].data[0].value = [];
+          // for (var i = 0; i < _ooption.length; i++) {
+          //   _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
+          //   _option.series[0].data[0].value.push(_ooption[i].value);
+          // }
+          // if (this.chartObj) {
+          //   // _option.series[0].data = _ooption;
+          //   this.chartObj[k].setOption(_option);
+          // } else {
+          //   this.setChart(_ooption);
+          // }
+          // // this.uploadBoolean = false;
+          // if (k == this.worksDetail.length - 1) {
+          //   this.$message({
+          //     message: "评价成功",
+          //     type: "success",
+          //   });
+          // }
+          this.$message({
+            message: "评价成功",
+            type: "success",
+          });
         })
         .catch((err) => {
           this.$message.error("评价失败");

+ 150 - 165
src/components/pages/components/studentWorksDetail.vue

@@ -343,9 +343,7 @@
                       </div>
                     </div>
                     <div class="contentBox">
-                      <div
-                        class="contentAuto"
-                      >
+                      <div class="contentAuto">
                         <div
                           class="left_top"
                           v-if="worksDetail[sIndex].img.length > 0"
@@ -892,7 +890,7 @@
                               />
                             </div>
                             <div class="rightWidthCss">
-                              <div style="padding-top: 15px;">
+                              <div style="padding-top: 15px">
                                 <div
                                   class="select_box2_answer_box"
                                   v-for="(item2, checkIndex) in worksDetail[
@@ -1791,8 +1789,6 @@ export default {
       dyList: [],
       dyList2: [],
       userAarray: [],
-      isPre: false,
-      isNext: false,
       checkJson: [],
     };
   },
@@ -1877,7 +1873,16 @@ export default {
 
           // 将结果转换为数组形式
           b = Object.values(b);
-          this.sInfo = b;
+          var c = b.sort(function (x, y) {
+            // 首先比较stage字段
+            if (x.stage !== y.stage) {
+              return parseInt(x.stage) - parseInt(y.stage);
+            }
+
+            // 如果stage字段相同,则比较task字段
+            return parseInt(x.task) - parseInt(y.task);
+          });
+          this.sInfo = c;
           var chapters = [],
             eList = [],
             _ooption = [],
@@ -1897,7 +1902,7 @@ export default {
           var cocopiInfo = res.data[11]; //cocopi或源码编辑作业
           var wordInfo = res.data[12]; //文档作业
           var workEvaList = res.data[13];
-          var workJson = [];
+          var workJson = {};
 
           for (var k = 0; k < res.data[0].length; k++) {
             this.allWorks = res.data[0][k];
@@ -1932,37 +1937,40 @@ export default {
             ) {
               continue;
             }
-            workJson.push({
-              img: [],
-              imgIndex: 0,
-              eList: [],
-              rateList: {},
-              askInfo: [],
-              answerInfo: [],
-              wpptInfo: [],
-              chooseInfo: [],
-              pjInfo: [],
-              xztkInfo: [],
-              lccjInfo: [],
-              bgInfo: [],
-              cocopiInfo: [],
-              wordInfo: [],
-              scopeId: res.data[0][k].id,
-              stagetask: "",
-              time: "",
-            });
+
             this.checkJson[k] = {};
 
-            workJson[k].time = res.data[0][k].time;
-            workJson[k].stagetask =
-              res.data[0][k].stage + "-" + res.data[0][k].task;
+            let stagetask = res.data[0][k].stage + "-" + res.data[0][k].task;
+            if (!workJson[stagetask]) {
+              workJson[stagetask] = {
+                img: [],
+                imgIndex: 0,
+                eList: [],
+                rateList: {},
+                askInfo: [],
+                answerInfo: [],
+                wpptInfo: [],
+                chooseInfo: [],
+                pjInfo: [],
+                xztkInfo: [],
+                lccjInfo: [],
+                bgInfo: [],
+                cocopiInfo: [],
+                wordInfo: [],
+                scopeId: res.data[0][k].id,
+                stagetask: stagetask,
+                time: "",
+              };
+            }
 
+            workJson[stagetask].time = res.data[0][k].time;
             for (var i = 0; i < worksDetail.length; i++) {
               if (
                 res.data[0][k].stage == worksDetail[i].stage &&
-                res.data[0][k].task == worksDetail[i].task
+                res.data[0][k].task == worksDetail[i].task &&
+                res.data[0][k].tool == worksDetail[i].tool
               ) {
-                workJson[k].img.push({
+                workJson[stagetask].img.push({
                   src: worksDetail[i].content,
                   id: i,
                   score: worksDetail[i].score
@@ -1974,7 +1982,8 @@ export default {
             for (var i = 0; i < askInfo.length; i++) {
               if (
                 res.data[0][k].stage == askInfo[i].stage &&
-                res.data[0][k].task == askInfo[i].task
+                res.data[0][k].task == askInfo[i].task &&
+                res.data[0][k].tool == askInfo[i].tool
               ) {
                 const element = askInfo[i];
                 let a = JSON.parse(element.content)[0];
@@ -1987,7 +1996,7 @@ export default {
                   }
                 }
                 a.radio = e;
-                workJson[k].askInfo.push({
+                workJson[stagetask].askInfo.push({
                   askInfo: a,
                   score: askInfo[i].score
                     ? JSON.parse(askInfo[i].score).wScore
@@ -2011,7 +2020,7 @@ export default {
                   }
                   if (a.radio[p] instanceof Array) {
                     if (
-                      workJson[k].askInfo[0].askInfo.askJson[p].answer
+                      workJson[stagetask].askInfo[0].askInfo.askJson[p].answer
                         .sort()
                         .join(",") == a.radio[p].sort().join(",")
                     ) {
@@ -2039,8 +2048,8 @@ export default {
                     }
                   } else {
                     if (
-                      workJson[k].askInfo[0].askInfo.askJson[p].answer ==
-                      a.radio[p]
+                      workJson[stagetask].askInfo[0].askInfo.askJson[p]
+                        .answer == a.radio[p]
                     ) {
                       this.checkJson[k][p].right = 100;
                       isCount += this.checkJson[k][p].right;
@@ -2072,7 +2081,8 @@ export default {
             for (var i = 0; i < chooseInfo.length; i++) {
               if (
                 res.data[0][k].stage == chooseInfo[i].stage &&
-                res.data[0][k].task == chooseInfo[i].task
+                res.data[0][k].task == chooseInfo[i].task &&
+                res.data[0][k].tool == chooseInfo[i].tool
               ) {
                 const element1 = chooseInfo[i];
                 let t = JSON.parse(element1.content)[0].testJson;
@@ -2085,7 +2095,7 @@ export default {
                   }
                 }
                 t.radio = e;
-                workJson[k].chooseInfo.push({
+                workJson[stagetask].chooseInfo.push({
                   chooseInfo: t,
                   score: chooseInfo[i].score
                     ? JSON.parse(chooseInfo[i].score).wScore
@@ -2109,9 +2119,8 @@ export default {
                   }
                   if (t.radio[p] instanceof Array) {
                     if (
-                      workJson[k].chooseInfo[0].chooseInfo.testJson[p].answer
-                        .sort()
-                        .join(",") == t.radio[p].sort().join(",")
+                      t.testJson[p].answer.sort().join(",") ==
+                      t.radio[p].sort().join(",")
                     ) {
                       this.checkJson[k][p].right = 100;
                       isCount += this.checkJson[k][p].right;
@@ -2136,10 +2145,7 @@ export default {
                           ] = 1);
                     }
                   } else {
-                    if (
-                      workJson[k].chooseInfo[0].chooseInfo.testJson[p].answer ==
-                      t.radio[p]
-                    ) {
+                    if (t.testJson[p].answer == t.radio[p]) {
                       this.checkJson[k][p].right = 100;
                       isCount += this.checkJson[k][p].right;
                     } else {
@@ -2170,7 +2176,8 @@ export default {
             for (var i = 0; i < pptInfo.length; i++) {
               if (
                 res.data[0][k].stage == pptInfo[i].stage &&
-                res.data[0][k].task == pptInfo[i].task
+                res.data[0][k].task == pptInfo[i].task &&
+                res.data[0][k].tool == pptInfo[i].tool
               ) {
                 var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
                 if (
@@ -2185,7 +2192,7 @@ export default {
                   var a =
                     "https://view.officeapps.live.com/op/view.aspx?src=" +
                     pptInfo[i].content;
-                  workJson[k].wpptInfo.push({
+                  workJson[stagetask].wpptInfo.push({
                     wpptInfo: a,
                     score: pptInfo[i].score
                       ? JSON.parse(pptInfo[i].score).wScore
@@ -2199,7 +2206,7 @@ export default {
                       pptInfo[i].content.split(".").length - 1
                     ].toLocaleUpperCase() == "PDF"
                 ) {
-                  workJson[k].wpptInfo.push({
+                  workJson[stagetask].wpptInfo.push({
                     wpptInfo: pptInfo[i].content,
                     score: pptInfo[i].score
                       ? JSON.parse(pptInfo[i].score).wScore
@@ -2213,10 +2220,11 @@ export default {
             for (var i = 0; i < answerInfo.length; i++) {
               if (
                 res.data[0][k].stage == answerInfo[i].stage &&
-                res.data[0][k].task == answerInfo[i].task
+                res.data[0][k].task == answerInfo[i].task &&
+                res.data[0][k].tool == answerInfo[i].tool
               ) {
                 const element = answerInfo[i];
-                workJson[k].answerInfo.push({
+                workJson[stagetask].answerInfo.push({
                   answerInfo: JSON.parse(element.content)[0],
                   score: answerInfo[i].score
                     ? JSON.parse(answerInfo[i].score).wScore
@@ -2227,7 +2235,8 @@ export default {
             for (var i = 0; i < pjInfo.length; i++) {
               if (
                 res.data[0][k].stage == pjInfo[i].stage &&
-                res.data[0][k].task == pjInfo[i].task
+                res.data[0][k].task == pjInfo[i].task &&
+                res.data[0][k].tool == pjInfo[i].tool
               ) {
                 var pj = pjInfo[i];
                 var a =
@@ -2240,7 +2249,7 @@ export default {
                     rateJson = a[z].rateJson;
                   }
                 }
-                workJson[k].pjInfo.push({
+                workJson[stagetask].pjInfo.push({
                   answer: JSON.parse(pj.content),
                   rateJson: rateJson,
                   score: pjInfo[i].score
@@ -2253,7 +2262,8 @@ export default {
             for (var i = 0; i < xztkInfo.length; i++) {
               if (
                 res.data[0][k].stage == xztkInfo[i].stage &&
-                res.data[0][k].task == xztkInfo[i].task
+                res.data[0][k].task == xztkInfo[i].task &&
+                res.data[0][k].tool == xztkInfo[i].tool
               ) {
                 if (xztkInfo[i].type == 7) {
                   var xztk = xztkInfo[i];
@@ -2267,7 +2277,7 @@ export default {
                       selectJson = a[z].selectJson;
                     }
                   }
-                  workJson[k].xztkInfo.push({
+                  workJson[stagetask].xztkInfo.push({
                     answer: xztk.content.split(",").map(Number),
                     selectJson: selectJson,
                     score: xztkInfo[i].score
@@ -2281,10 +2291,11 @@ export default {
             for (var i = 0; i < lccjInfo.length; i++) {
               if (
                 res.data[0][k].stage == lccjInfo[i].stage &&
-                res.data[0][k].task == lccjInfo[i].task
+                res.data[0][k].task == lccjInfo[i].task &&
+                res.data[0][k].tool == lccjInfo[i].tool
               ) {
                 var lccj = lccjInfo[i];
-                workJson[k].lccjInfo.push({
+                workJson[stagetask].lccjInfo.push({
                   lccjInfo: JSON.parse(lccj.content)[0],
                   score: lccjInfo[i].score
                     ? JSON.parse(lccjInfo[i].score).wScore
@@ -2296,10 +2307,11 @@ export default {
             for (var i = 0; i < bgInfo.length; i++) {
               if (
                 res.data[0][k].stage == bgInfo[i].stage &&
-                res.data[0][k].task == bgInfo[i].task
+                res.data[0][k].task == bgInfo[i].task &&
+                res.data[0][k].tool == bgInfo[i].tool
               ) {
                 var bg = bgInfo[i];
-                workJson[k].bgInfo.push({
+                workJson[stagetask].bgInfo.push({
                   bgInfo: JSON.parse(bg.content),
                   score: bgInfo[i].score
                     ? JSON.parse(bgInfo[i].score).wScore
@@ -2311,7 +2323,8 @@ export default {
             for (var i = 0; i < cocopiInfo.length; i++) {
               if (
                 res.data[0][k].stage == cocopiInfo[i].stage &&
-                res.data[0][k].task == cocopiInfo[i].task
+                res.data[0][k].task == cocopiInfo[i].task &&
+                res.data[0][k].tool == cocopiInfo[i].tool
               ) {
                 var cocopi = cocopiInfo[i];
                 var c = ["DOT", "DOC", "DOCX", "PPT", "PPTX", "XLSX", "XLS"];
@@ -2338,7 +2351,7 @@ export default {
                   ) != -1
                 ) {
                   t = 1;
-                  workJson[k].cocopiInfo.push({
+                  workJson[stagetask].cocopiInfo.push({
                     url: cocopi.content,
                     type: t,
                     score: cocopiInfo[i].score
@@ -2356,7 +2369,7 @@ export default {
                   var a =
                     "https://view.officeapps.live.com/op/view.aspx?src=" +
                     cocopi.content;
-                  workJson[k].cocopiInfo.push({
+                  workJson[stagetask].cocopiInfo.push({
                     url: a,
                     type: t,
                     score: cocopiInfo[i].score
@@ -2371,7 +2384,7 @@ export default {
                     ].toLocaleUpperCase() == "PDF"
                 ) {
                   t = 3;
-                  workJson[k].cocopiInfo.push({
+                  workJson[stagetask].cocopiInfo.push({
                     url: cocopi.content,
                     type: t,
                     score: cocopiInfo[i].score
@@ -2385,10 +2398,11 @@ export default {
             for (var i = 0; i < wordInfo.length; i++) {
               if (
                 res.data[0][k].stage == wordInfo[i].stage &&
-                res.data[0][k].task == wordInfo[i].task
+                res.data[0][k].task == wordInfo[i].task &&
+                res.data[0][k].tool == wordInfo[i].tool
               ) {
                 var word = wordInfo[i];
-                workJson[k].wordInfo.push({
+                workJson[stagetask].wordInfo.push({
                   wordInfo: JSON.parse(word.content),
                   score: wordInfo[i].score
                     ? JSON.parse(wordInfo[i].score).wScore
@@ -2397,12 +2411,16 @@ export default {
               }
             }
           }
-          const result = workJson.filter((item, index, arr) => {
-            return (
-              arr.findIndex((temp) => temp.stagetask === item.stagetask) ===
-              index
-            );
-          });
+          // const result = workJson.filter((item, index, arr) => {
+          //   return (
+          //     arr.findIndex((temp) => temp.stagetask === item.stagetask) ===
+          //     index
+          //   );
+          // });
+          const result = [];
+          for (var wi = 0; wi < Object.keys(workJson).length; wi++) {
+            result.push(workJson[Object.keys(workJson)[wi]]);
+          }
           for (var l = 0; l < b.length; l++) {
             if (workEvaList.length > 0) {
               for (var p = 0; p < workEvaList.length; p++) {
@@ -2503,7 +2521,21 @@ export default {
             }
           }
 
-          this.worksDetail = result;
+          var resultNewArray = result.sort(function (x, y) {
+            // 以stagetask字段为排序依据
+            var x_parts = x.stagetask.split("-");
+            var y_parts = y.stagetask.split("-");
+
+            // 首先比较第一个数字
+            if (x_parts[0] !== y_parts[0]) {
+              return parseInt(x_parts[0]) - parseInt(y_parts[0]);
+            }
+
+            // 如果第一个数字相同,则比较第二个数字
+            return parseInt(x_parts[1]) - parseInt(y_parts[1]);
+          });
+
+          this.worksDetail = resultNewArray;
 
           this.courseDetail = res.data[0][0];
 
@@ -2526,11 +2558,9 @@ export default {
                 });
                 _option.series[0].data[0].value.push(_ooption[i].value);
               }
-              console.log(_option);
               this.setChart(_option, p);
             }
           }, 0);
-
           let _dyList = JSON.parse(JSON.stringify(this.dyList));
           let _dyList2 = [];
           let _dyList3 = [];
@@ -2539,9 +2569,9 @@ export default {
             _dyList2.push(_dyList[c]);
           }
           _dyList = JSON.parse(JSON.stringify(this.dyList));
-          for (var c = 0; c < workJson.length; c++) {
-            let _stage = workJson[c].stagetask.split("-")[0];
-            let _task = workJson[c].stagetask.split("-")[1];
+          for (var c = 0; c < resultNewArray.length; c++) {
+            let _stage = resultNewArray[c].stagetask.split("-")[0];
+            let _task = resultNewArray[c].stagetask.split("-")[1];
             if (_dyList2[_stage].taskList.length > 0) {
               for (var i = 0; i < _dyList2[_stage].taskList.length; i++) {
                 if (
@@ -2567,10 +2597,6 @@ export default {
           this.taskCount = this.dyList2[0].taskList[0].id;
           this.navId =
             this.dyList2[0].id + "-" + this.dyList2[0].taskList[0].id;
-          this.isPre = false;
-          this.isNext = false;
-          this.preStep(1);
-          this.nextStep(1);
         })
         .catch((err) => {
           console.error(err);
@@ -2915,45 +2941,49 @@ export default {
       this.ajax
         .get(this.$store.state.api + "updateWorksEva", params)
         .then((res) => {
-          var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
-          // var _option = JSON.parse(JSON.stringify(this.option));
-
-          var _rate = rateList;
-          var _rateList = Object.keys(rateList);
-          for (var i = 0; i < _ooption.length; i++) {
-            if (_rateList.indexOf(_ooption[i].name) != -1) {
-              _ooption[i].value = _rate[_ooption[i].name];
-            }
-          }
-
-          // var _option = JSON.parse(JSON.stringify(this.radarOption));
-          var _option = this.radarOption;
-          _option.radar.indicator = [];
-          _option.series[0].data[0].value = [];
-          for (var i = 0; i < _ooption.length; i++) {
-            _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-            _option.series[0].data[0].value.push(_ooption[i].value);
-          }
-          if (this.chartObj) {
-            // _option.series[0].data = _ooption;
-            this.chartObj[k].setOption(_option);
-          } else {
-            this.setChart(_ooption);
-          }
-          // this.uploadBoolean = false;
-          // this.dialogVisible2 = false;
-          let _k = 0;
-          for (var i = 0; i < this.worksDetail.length; i++) {
-            if (this.worksDetail[i].eList.length) {
-              _k = i;
-            }
-          }
-          if (k == _k) {
-            this.$message({
-              message: "评价成功",
-              type: "success",
-            });
-          }
+          // var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
+          // // var _option = JSON.parse(JSON.stringify(this.option));
+
+          // var _rate = rateList;
+          // var _rateList = Object.keys(rateList);
+          // for (var i = 0; i < _ooption.length; i++) {
+          //   if (_rateList.indexOf(_ooption[i].name) != -1) {
+          //     _ooption[i].value = _rate[_ooption[i].name];
+          //   }
+          // }
+
+          // // var _option = JSON.parse(JSON.stringify(this.radarOption));
+          // var _option = this.radarOption;
+          // _option.radar.indicator = [];
+          // _option.series[0].data[0].value = [];
+          // for (var i = 0; i < _ooption.length; i++) {
+          //   _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
+          //   _option.series[0].data[0].value.push(_ooption[i].value);
+          // }
+          // if (this.chartObj) {
+          //   // _option.series[0].data = _ooption;
+          //   this.chartObj[k].setOption(_option);
+          // } else {
+          //   this.setChart(_ooption);
+          // }
+          // // this.uploadBoolean = false;
+          // // this.dialogVisible2 = false;
+          // let _k = 0;
+          // for (var i = 0; i < this.worksDetail.length; i++) {
+          //   if (this.worksDetail[i].eList.length) {
+          //     _k = i;
+          //   }
+          // }
+          // if (k == _k) {
+          //   this.$message({
+          //     message: "评价成功",
+          //     type: "success",
+          //   });
+          // }
+          this.$message({
+            message: "评价成功",
+            type: "success",
+          });
         })
         .catch((err) => {
           this.$message.error("评价失败");
@@ -3031,50 +3061,6 @@ export default {
       //   "报告.doc"
       // );
     },
-    preStep(t) {
-      var ti = 0;
-      var uid = "";
-      var st = 0;
-      var ta = 0;
-      for (var i = 0; i < this.tableData.length; i++) {
-        if (this.scopeId1 == this.tableData[i].id) {
-          ti = i;
-          if (ti == 0) {
-            this.isPre = true;
-          } else {
-            if (t != 1) {
-              uid = this.tableData[i - 1].userid;
-              st = this.tableData[i - 1].stage;
-              ta = this.tableData[i - 1].task;
-              this.lookWork(this.tableData[i - 1].id, uid, st, ta);
-            }
-          }
-          break;
-        }
-      }
-    },
-    nextStep(t) {
-      var ti = 0;
-      var uid = "";
-      var st = 0;
-      var ta = 0;
-      for (var i = 0; i < this.tableData.length; i++) {
-        if (this.scopeId1 == this.tableData[i].id) {
-          ti = i;
-          if (ti == 9) {
-            this.isNext = true;
-          } else {
-            if (t != 1) {
-              uid = this.tableData[i + 1].userid;
-              st = this.tableData[i + 1].stage;
-              ta = this.tableData[i + 1].task;
-              this.lookWork(this.tableData[i + 1].id, uid, st, ta);
-            }
-          }
-          break;
-        }
-      }
-    },
   },
   created() {
     this.page = 1;
@@ -4695,5 +4681,4 @@ ol {
   padding: 20px;
   box-sizing: border-box;
 }
-
 </style>

+ 105 - 91
src/components/pages/components/worksDetail2.vue

@@ -160,12 +160,7 @@
                 type="primary"
                 size="small"
                 @click="
-                  lookWork(
-                    scope.row.id,
-                    scope.row.userid,
-                    scope.row.stage,
-                    scope.row.task
-                  )
+                  lookWork(scope.row.id, scope.row.userid, 0, scope.$index)
                 "
                 >查看作业</el-button
               >
@@ -220,10 +215,10 @@
 
               <div class="topButton" v-if="tableData.length > 1">
                 <div>学生切换:</div>
-                <el-button @click="preStep(0)" v-if="isPre == false"
+                <el-button @click="preStep" v-if="isPre == false"
                   >上一位</el-button
                 >
-                <el-button @click="nextStep(0)" v-if="isNext == false"
+                <el-button @click="nextStep" v-if="isNext == false"
                   >下一位</el-button
                 >
               </div>
@@ -1860,7 +1855,7 @@ export default {
       this.page = val;
       this.getWorks();
     },
-    lookWork(id, uid, stage, task) {
+    lookWork(id, uid, type, index) {
       this.scopeId1 = id;
       this.studentId = uid;
       let params = {
@@ -1880,7 +1875,16 @@ export default {
 
           // 将结果转换为数组形式
           b = Object.values(b);
-          this.sInfo = b;
+          var c = b.sort(function (x, y) {
+            // 首先比较stage字段
+            if (x.stage !== y.stage) {
+              return parseInt(x.stage) - parseInt(y.stage);
+            }
+
+            // 如果stage字段相同,则比较task字段
+            return parseInt(x.task) - parseInt(y.task);
+          });
+          this.sInfo = c;
           var chapters = [],
             eList = [],
             _ooption = [],
@@ -1956,7 +1960,7 @@ export default {
                 cocopiInfo: [],
                 wordInfo: [],
                 scopeId: res.data[0][k].id,
-                stagetask: "",
+                stagetask: stagetask,
                 time: "",
               };
             }
@@ -2117,11 +2121,8 @@ export default {
                   }
                   if (t.radio[p] instanceof Array) {
                     if (
-                      workJson[stagetask].chooseInfo[0].chooseInfo.testJson[
-                        p
-                      ].answer
-                        .sort()
-                        .join(",") == t.radio[p].sort().join(",")
+                      t.testJson[p].answer.sort().join(",") ==
+                      t.radio[p].sort().join(",")
                     ) {
                       this.checkJson[k][p].right = 100;
                       isCount += this.checkJson[k][p].right;
@@ -2146,10 +2147,7 @@ export default {
                           ] = 1);
                     }
                   } else {
-                    if (
-                      workJson[stagetask].chooseInfo[0].chooseInfo.testJson[p]
-                        .answer == t.radio[p]
-                    ) {
+                    if (t.testJson[p].answer == t.radio[p]) {
                       this.checkJson[k][p].right = 100;
                       isCount += this.checkJson[k][p].right;
                     } else {
@@ -2525,7 +2523,21 @@ export default {
             }
           }
 
-          this.worksDetail = result;
+          var resultNewArray = result.sort(function (x, y) {
+            // 以stagetask字段为排序依据
+            var x_parts = x.stagetask.split("-");
+            var y_parts = y.stagetask.split("-");
+
+            // 首先比较第一个数字
+            if (x_parts[0] !== y_parts[0]) {
+              return parseInt(x_parts[0]) - parseInt(y_parts[0]);
+            }
+
+            // 如果第一个数字相同,则比较第二个数字
+            return parseInt(x_parts[1]) - parseInt(y_parts[1]);
+          });
+
+          this.worksDetail = resultNewArray;
 
           this.courseDetail = res.data[0][0];
 
@@ -2559,9 +2571,9 @@ export default {
             _dyList2.push(_dyList[c]);
           }
           _dyList = JSON.parse(JSON.stringify(this.dyList));
-          for (var c = 0; c < workJson.length; c++) {
-            let _stage = workJson[c].stagetask.split("-")[0];
-            let _task = workJson[c].stagetask.split("-")[1];
+          for (var c = 0; c < resultNewArray.length; c++) {
+            let _stage = resultNewArray[c].stagetask.split("-")[0];
+            let _task = resultNewArray[c].stagetask.split("-")[1];
             if (_dyList2[_stage].taskList.length > 0) {
               for (var i = 0; i < _dyList2[_stage].taskList.length; i++) {
                 if (
@@ -2587,10 +2599,21 @@ export default {
           this.taskCount = this.dyList2[0].taskList[0].id;
           this.navId =
             this.dyList2[0].id + "-" + this.dyList2[0].taskList[0].id;
-          this.isPre = false;
-          this.isNext = false;
-          this.preStep(1);
-          this.nextStep(1);
+          if (type == 0) {
+            if (index == 0) {
+              this.isPre = true;
+            } else {
+              this.isPre = false;
+            }
+            if (index == 9) {
+              this.isNext = true;
+            } else {
+              this.isNext = false;
+            }
+          }
+
+          // this.preStep();
+          // this.nextStep();
         })
         .catch((err) => {
           console.error(err);
@@ -2824,45 +2847,44 @@ export default {
       this.ajax
         .get(this.$store.state.api + "updateWorksEva", params)
         .then((res) => {
-          var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
-          // var _option = JSON.parse(JSON.stringify(this.option));
-
-          var _rate = rateList;
-          var _rateList = Object.keys(rateList);
-          for (var i = 0; i < _ooption.length; i++) {
-            if (_rateList.indexOf(_ooption[i].name) != -1) {
-              _ooption[i].value = _rate[_ooption[i].name];
-            }
-          }
-
-          // var _option = JSON.parse(JSON.stringify(this.radarOption));
-          var _option = this.radarOption;
-          _option.radar.indicator = [];
-          _option.series[0].data[0].value = [];
-          for (var i = 0; i < _ooption.length; i++) {
-            _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-            _option.series[0].data[0].value.push(_ooption[i].value);
-          }
-          if (this.chartObj) {
-            // _option.series[0].data = _ooption;
-            this.chartObj[k].setOption(_option);
-          } else {
-            this.setChart(_ooption);
-          }
-          // this.uploadBoolean = false;
-          // this.dialogVisible2 = false;
-          let _k = 0;
-          for (var i = 0; i < this.worksDetail.length; i++) {
-            if (this.worksDetail[i].eList.length) {
-              _k = i;
-            }
-          }
-          if (k == _k) {
-            this.$message({
-              message: "评价成功",
-              type: "success",
-            });
-          }
+          // var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
+
+          // var _rate = rateList;
+          // var _rateList = Object.keys(rateList);
+          // for (var i = 0; i < _ooption.length; i++) {
+          //   if (_rateList.indexOf(_ooption[i].name) != -1) {
+          //     _ooption[i].value = _rate[_ooption[i].name];
+          //   }
+          // }
+
+          // var _option = this.radarOption;
+          // _option.radar.indicator = [];
+          // _option.series[0].data[0].value = [];
+          // for (var i = 0; i < _ooption.length; i++) {
+          //   _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
+          //   _option.series[0].data[0].value.push(_ooption[i].value);
+          // }
+          // if (this.chartObj) {
+          //   this.chartObj[k].setOption(_option);
+          // } else {
+          //   this.setChart(_ooption);
+          // }
+          // let _k = 0;
+          // for (var i = 0; i < this.worksDetail.length; i++) {
+          //   if (this.worksDetail[i].eList.length) {
+          //     _k = i;
+          //   }
+          // }
+          // if (k == _k) {
+          //   this.$message({
+          //     message: "评价成功",
+          //     type: "success",
+          //   });
+          // }
+          this.$message({
+            message: "评价成功",
+            type: "success",
+          });
         })
         .catch((err) => {
           this.$message.error("评价失败");
@@ -3127,46 +3149,38 @@ export default {
       //   "报告.doc"
       // );
     },
-    preStep(t) {
-      var ti = 0;
+    preStep() {
       var uid = "";
-      var st = 0;
-      var ta = 0;
       for (var i = 0; i < this.tableData.length; i++) {
         if (this.scopeId1 == this.tableData[i].id) {
-          ti = i;
-          if (ti == 0) {
+          if (i - 1 == 0) {
             this.isPre = true;
           } else {
-            if (t != 1) {
-              uid = this.tableData[i - 1].userid;
-              st = this.tableData[i - 1].stage;
-              ta = this.tableData[i - 1].task;
-              this.lookWork(this.tableData[i - 1].id, uid, st, ta);
-            }
+            this.isPre = false;
           }
+          if (i - 1 < 9) {
+            this.isNext = false;
+          }
+          uid = this.tableData[i - 1].userid;
+          this.lookWork(this.tableData[i - 1].id, uid, 1);
           break;
         }
       }
     },
-    nextStep(t) {
-      var ti = 0;
+    nextStep() {
       var uid = "";
-      var st = 0;
-      var ta = 0;
       for (var i = 0; i < this.tableData.length; i++) {
         if (this.scopeId1 == this.tableData[i].id) {
-          ti = i;
-          if (ti == 9) {
+          if (i + 1 == 9) {
             this.isNext = true;
           } else {
-            if (t != 1) {
-              uid = this.tableData[i + 1].userid;
-              st = this.tableData[i + 1].stage;
-              ta = this.tableData[i + 1].task;
-              this.lookWork(this.tableData[i + 1].id, uid, st, ta);
-            }
+            this.isNext = false;
+          }
+          if (i + 1 > 0) {
+            this.isPre = false;
           }
+          uid = this.tableData[i + 1].userid;
+          this.lookWork(this.tableData[i + 1].id, uid, 1);
           break;
         }
       }

+ 148 - 109
src/components/pages/components/worksDetail3.vue

@@ -113,9 +113,7 @@
                 </div>
               </div>
               <div class="contentBox">
-                <div
-                  class="contentAuto"
-                >
+                <div class="contentAuto">
                   <div
                     class="left_top"
                     v-if="worksDetail[sIndex].img.length > 0"
@@ -635,7 +633,7 @@
                         />
                       </div>
                       <div class="rightWidthCss">
-                        <div style="padding-top: 15px;">
+                        <div style="padding-top: 15px">
                           <div
                             class="select_box2_answer_box"
                             v-for="(item2, checkIndex) in worksDetail[sIndex]
@@ -1501,7 +1499,16 @@ export default {
 
           // 将结果转换为数组形式
           b = Object.values(b);
-          this.sInfo = b;
+          var c = b.sort(function (x, y) {
+            // 首先比较stage字段
+            if (x.stage !== y.stage) {
+              return parseInt(x.stage) - parseInt(y.stage);
+            }
+
+            // 如果stage字段相同,则比较task字段
+            return parseInt(x.task) - parseInt(y.task);
+          });
+          this.sInfo = c;
           var chapters = [],
             eList = [],
             _ooption = [],
@@ -1521,7 +1528,7 @@ export default {
           var cocopiInfo = res.data[11]; //cocopi或源码编辑作业
           var wordInfo = res.data[12]; //文档作业
           var workEvaList = res.data[13];
-          var workJson = [];
+          var workJson = {};
 
           for (var k = 0; k < res.data[0].length; k++) {
             this.allWorks = res.data[0][k];
@@ -1556,37 +1563,40 @@ export default {
             ) {
               continue;
             }
-            workJson.push({
-              img: [],
-              imgIndex: 0,
-              eList: [],
-              rateList: {},
-              askInfo: [],
-              answerInfo: [],
-              wpptInfo: [],
-              chooseInfo: [],
-              pjInfo: [],
-              xztkInfo: [],
-              lccjInfo: [],
-              bgInfo: [],
-              cocopiInfo: [],
-              wordInfo: [],
-              scopeId: res.data[0][k].id,
-              stagetask: "",
-              time: "",
-            });
+
             this.checkJson[k] = {};
 
-            workJson[k].time = res.data[0][k].time;
-            workJson[k].stagetask =
-              res.data[0][k].stage + "-" + res.data[0][k].task;
+            let stagetask = res.data[0][k].stage + "-" + res.data[0][k].task;
+            if (!workJson[stagetask]) {
+              workJson[stagetask] = {
+                img: [],
+                imgIndex: 0,
+                eList: [],
+                rateList: {},
+                askInfo: [],
+                answerInfo: [],
+                wpptInfo: [],
+                chooseInfo: [],
+                pjInfo: [],
+                xztkInfo: [],
+                lccjInfo: [],
+                bgInfo: [],
+                cocopiInfo: [],
+                wordInfo: [],
+                scopeId: res.data[0][k].id,
+                stagetask: stagetask,
+                time: "",
+              };
+            }
 
+            workJson[stagetask].time = res.data[0][k].time;
             for (var i = 0; i < worksDetail.length; i++) {
               if (
                 res.data[0][k].stage == worksDetail[i].stage &&
-                res.data[0][k].task == worksDetail[i].task
+                res.data[0][k].task == worksDetail[i].task &&
+                res.data[0][k].tool == worksDetail[i].tool
               ) {
-                workJson[k].img.push({
+                workJson[stagetask].img.push({
                   src: worksDetail[i].content,
                   id: i,
                   score: worksDetail[i].score
@@ -1598,7 +1608,8 @@ export default {
             for (var i = 0; i < askInfo.length; i++) {
               if (
                 res.data[0][k].stage == askInfo[i].stage &&
-                res.data[0][k].task == askInfo[i].task
+                res.data[0][k].task == askInfo[i].task &&
+                res.data[0][k].tool == askInfo[i].tool
               ) {
                 const element = askInfo[i];
                 let a = JSON.parse(element.content)[0];
@@ -1611,7 +1622,7 @@ export default {
                   }
                 }
                 a.radio = e;
-                workJson[k].askInfo.push({
+                workJson[stagetask].askInfo.push({
                   askInfo: a,
                   score: askInfo[i].score
                     ? JSON.parse(askInfo[i].score).wScore
@@ -1635,7 +1646,7 @@ export default {
                   }
                   if (a.radio[p] instanceof Array) {
                     if (
-                      workJson[k].askInfo[0].askInfo.askJson[p].answer
+                      workJson[stagetask].askInfo[0].askInfo.askJson[p].answer
                         .sort()
                         .join(",") == a.radio[p].sort().join(",")
                     ) {
@@ -1663,8 +1674,8 @@ export default {
                     }
                   } else {
                     if (
-                      workJson[k].askInfo[0].askInfo.askJson[p].answer ==
-                      a.radio[p]
+                      workJson[stagetask].askInfo[0].askInfo.askJson[p]
+                        .answer == a.radio[p]
                     ) {
                       this.checkJson[k][p].right = 100;
                       isCount += this.checkJson[k][p].right;
@@ -1696,7 +1707,8 @@ export default {
             for (var i = 0; i < chooseInfo.length; i++) {
               if (
                 res.data[0][k].stage == chooseInfo[i].stage &&
-                res.data[0][k].task == chooseInfo[i].task
+                res.data[0][k].task == chooseInfo[i].task &&
+                res.data[0][k].tool == chooseInfo[i].tool
               ) {
                 const element1 = chooseInfo[i];
                 let t = JSON.parse(element1.content)[0].testJson;
@@ -1709,7 +1721,7 @@ export default {
                   }
                 }
                 t.radio = e;
-                workJson[k].chooseInfo.push({
+                workJson[stagetask].chooseInfo.push({
                   chooseInfo: t,
                   score: chooseInfo[i].score
                     ? JSON.parse(chooseInfo[i].score).wScore
@@ -1733,9 +1745,8 @@ export default {
                   }
                   if (t.radio[p] instanceof Array) {
                     if (
-                      workJson[k].chooseInfo[0].chooseInfo.testJson[p].answer
-                        .sort()
-                        .join(",") == t.radio[p].sort().join(",")
+                      t.testJson[p].answer.sort().join(",") ==
+                      t.radio[p].sort().join(",")
                     ) {
                       this.checkJson[k][p].right = 100;
                       isCount += this.checkJson[k][p].right;
@@ -1760,10 +1771,7 @@ export default {
                           ] = 1);
                     }
                   } else {
-                    if (
-                      workJson[k].chooseInfo[0].chooseInfo.testJson[p].answer ==
-                      t.radio[p]
-                    ) {
+                    if (t.testJson[p].answer == t.radio[p]) {
                       this.checkJson[k][p].right = 100;
                       isCount += this.checkJson[k][p].right;
                     } else {
@@ -1794,7 +1802,8 @@ export default {
             for (var i = 0; i < pptInfo.length; i++) {
               if (
                 res.data[0][k].stage == pptInfo[i].stage &&
-                res.data[0][k].task == pptInfo[i].task
+                res.data[0][k].task == pptInfo[i].task &&
+                res.data[0][k].tool == pptInfo[i].tool
               ) {
                 var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
                 if (
@@ -1809,7 +1818,7 @@ export default {
                   var a =
                     "https://view.officeapps.live.com/op/view.aspx?src=" +
                     pptInfo[i].content;
-                  workJson[k].wpptInfo.push({
+                  workJson[stagetask].wpptInfo.push({
                     wpptInfo: a,
                     score: pptInfo[i].score
                       ? JSON.parse(pptInfo[i].score).wScore
@@ -1823,7 +1832,7 @@ export default {
                       pptInfo[i].content.split(".").length - 1
                     ].toLocaleUpperCase() == "PDF"
                 ) {
-                  workJson[k].wpptInfo.push({
+                  workJson[stagetask].wpptInfo.push({
                     wpptInfo: pptInfo[i].content,
                     score: pptInfo[i].score
                       ? JSON.parse(pptInfo[i].score).wScore
@@ -1837,10 +1846,11 @@ export default {
             for (var i = 0; i < answerInfo.length; i++) {
               if (
                 res.data[0][k].stage == answerInfo[i].stage &&
-                res.data[0][k].task == answerInfo[i].task
+                res.data[0][k].task == answerInfo[i].task &&
+                res.data[0][k].tool == answerInfo[i].tool
               ) {
                 const element = answerInfo[i];
-                workJson[k].answerInfo.push({
+                workJson[stagetask].answerInfo.push({
                   answerInfo: JSON.parse(element.content)[0],
                   score: answerInfo[i].score
                     ? JSON.parse(answerInfo[i].score).wScore
@@ -1851,7 +1861,8 @@ export default {
             for (var i = 0; i < pjInfo.length; i++) {
               if (
                 res.data[0][k].stage == pjInfo[i].stage &&
-                res.data[0][k].task == pjInfo[i].task
+                res.data[0][k].task == pjInfo[i].task &&
+                res.data[0][k].tool == pjInfo[i].tool
               ) {
                 var pj = pjInfo[i];
                 var a =
@@ -1864,7 +1875,7 @@ export default {
                     rateJson = a[z].rateJson;
                   }
                 }
-                workJson[k].pjInfo.push({
+                workJson[stagetask].pjInfo.push({
                   answer: JSON.parse(pj.content),
                   rateJson: rateJson,
                   score: pjInfo[i].score
@@ -1877,7 +1888,8 @@ export default {
             for (var i = 0; i < xztkInfo.length; i++) {
               if (
                 res.data[0][k].stage == xztkInfo[i].stage &&
-                res.data[0][k].task == xztkInfo[i].task
+                res.data[0][k].task == xztkInfo[i].task &&
+                res.data[0][k].tool == xztkInfo[i].tool
               ) {
                 if (xztkInfo[i].type == 7) {
                   var xztk = xztkInfo[i];
@@ -1891,7 +1903,7 @@ export default {
                       selectJson = a[z].selectJson;
                     }
                   }
-                  workJson[k].xztkInfo.push({
+                  workJson[stagetask].xztkInfo.push({
                     answer: xztk.content.split(",").map(Number),
                     selectJson: selectJson,
                     score: xztkInfo[i].score
@@ -1905,10 +1917,11 @@ export default {
             for (var i = 0; i < lccjInfo.length; i++) {
               if (
                 res.data[0][k].stage == lccjInfo[i].stage &&
-                res.data[0][k].task == lccjInfo[i].task
+                res.data[0][k].task == lccjInfo[i].task &&
+                res.data[0][k].tool == lccjInfo[i].tool
               ) {
                 var lccj = lccjInfo[i];
-                workJson[k].lccjInfo.push({
+                workJson[stagetask].lccjInfo.push({
                   lccjInfo: JSON.parse(lccj.content)[0],
                   score: lccjInfo[i].score
                     ? JSON.parse(lccjInfo[i].score).wScore
@@ -1920,10 +1933,11 @@ export default {
             for (var i = 0; i < bgInfo.length; i++) {
               if (
                 res.data[0][k].stage == bgInfo[i].stage &&
-                res.data[0][k].task == bgInfo[i].task
+                res.data[0][k].task == bgInfo[i].task &&
+                res.data[0][k].tool == bgInfo[i].tool
               ) {
                 var bg = bgInfo[i];
-                workJson[k].bgInfo.push({
+                workJson[stagetask].bgInfo.push({
                   bgInfo: JSON.parse(bg.content),
                   score: bgInfo[i].score
                     ? JSON.parse(bgInfo[i].score).wScore
@@ -1935,7 +1949,8 @@ export default {
             for (var i = 0; i < cocopiInfo.length; i++) {
               if (
                 res.data[0][k].stage == cocopiInfo[i].stage &&
-                res.data[0][k].task == cocopiInfo[i].task
+                res.data[0][k].task == cocopiInfo[i].task &&
+                res.data[0][k].tool == cocopiInfo[i].tool
               ) {
                 var cocopi = cocopiInfo[i];
                 var c = ["DOT", "DOC", "DOCX", "PPT", "PPTX", "XLSX", "XLS"];
@@ -1962,7 +1977,7 @@ export default {
                   ) != -1
                 ) {
                   t = 1;
-                  workJson[k].cocopiInfo.push({
+                  workJson[stagetask].cocopiInfo.push({
                     url: cocopi.content,
                     type: t,
                     score: cocopiInfo[i].score
@@ -1980,7 +1995,7 @@ export default {
                   var a =
                     "https://view.officeapps.live.com/op/view.aspx?src=" +
                     cocopi.content;
-                  workJson[k].cocopiInfo.push({
+                  workJson[stagetask].cocopiInfo.push({
                     url: a,
                     type: t,
                     score: cocopiInfo[i].score
@@ -1995,7 +2010,7 @@ export default {
                     ].toLocaleUpperCase() == "PDF"
                 ) {
                   t = 3;
-                  workJson[k].cocopiInfo.push({
+                  workJson[stagetask].cocopiInfo.push({
                     url: cocopi.content,
                     type: t,
                     score: cocopiInfo[i].score
@@ -2009,10 +2024,11 @@ export default {
             for (var i = 0; i < wordInfo.length; i++) {
               if (
                 res.data[0][k].stage == wordInfo[i].stage &&
-                res.data[0][k].task == wordInfo[i].task
+                res.data[0][k].task == wordInfo[i].task &&
+                res.data[0][k].tool == wordInfo[i].tool
               ) {
                 var word = wordInfo[i];
-                workJson[k].wordInfo.push({
+                workJson[stagetask].wordInfo.push({
                   wordInfo: JSON.parse(word.content),
                   score: wordInfo[i].score
                     ? JSON.parse(wordInfo[i].score).wScore
@@ -2021,12 +2037,16 @@ export default {
               }
             }
           }
-          const result = workJson.filter((item, index, arr) => {
-            return (
-              arr.findIndex((temp) => temp.stagetask === item.stagetask) ===
-              index
-            );
-          });
+          // const result = workJson.filter((item, index, arr) => {
+          //   return (
+          //     arr.findIndex((temp) => temp.stagetask === item.stagetask) ===
+          //     index
+          //   );
+          // });
+          const result = [];
+          for (var wi = 0; wi < Object.keys(workJson).length; wi++) {
+            result.push(workJson[Object.keys(workJson)[wi]]);
+          }
           for (var l = 0; l < b.length; l++) {
             if (workEvaList.length > 0) {
               for (var p = 0; p < workEvaList.length; p++) {
@@ -2127,7 +2147,21 @@ export default {
             }
           }
 
-          this.worksDetail = result;
+          var resultNewArray = result.sort(function (x, y) {
+            // 以stagetask字段为排序依据
+            var x_parts = x.stagetask.split("-");
+            var y_parts = y.stagetask.split("-");
+
+            // 首先比较第一个数字
+            if (x_parts[0] !== y_parts[0]) {
+              return parseInt(x_parts[0]) - parseInt(y_parts[0]);
+            }
+
+            // 如果第一个数字相同,则比较第二个数字
+            return parseInt(x_parts[1]) - parseInt(y_parts[1]);
+          });
+
+          this.worksDetail = resultNewArray;
 
           this.courseDetail = res.data[0][0];
 
@@ -2150,11 +2184,9 @@ export default {
                 });
                 _option.series[0].data[0].value.push(_ooption[i].value);
               }
-              console.log(_option);
               this.setChart(_option, p);
             }
           }, 0);
-
           let _dyList = JSON.parse(JSON.stringify(this.dyList));
           let _dyList2 = [];
           let _dyList3 = [];
@@ -2163,9 +2195,9 @@ export default {
             _dyList2.push(_dyList[c]);
           }
           _dyList = JSON.parse(JSON.stringify(this.dyList));
-          for (var c = 0; c < workJson.length; c++) {
-            let _stage = workJson[c].stagetask.split("-")[0];
-            let _task = workJson[c].stagetask.split("-")[1];
+          for (var c = 0; c < resultNewArray.length; c++) {
+            let _stage = resultNewArray[c].stagetask.split("-")[0];
+            let _task = resultNewArray[c].stagetask.split("-")[1];
             if (_dyList2[_stage].taskList.length > 0) {
               for (var i = 0; i < _dyList2[_stage].taskList.length; i++) {
                 if (
@@ -2353,8 +2385,11 @@ export default {
     },
     updatePj() {
       for (var i = 0; i < this.worksDetail.length; i++) {
+        if (!this.worksDetail[i].eList.length) {
+          continue;
+        }
         this.updateWorks(
-          this.worksDetail[i].scopeId,
+          this.worksDetail[i].stagetask,
           this.worksDetail[i].rateList,
           i
         );
@@ -2395,39 +2430,43 @@ export default {
       this.ajax
         .get(this.$store.state.api + "updateWorks", params)
         .then((res) => {
-          var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
-          // var _option = JSON.parse(JSON.stringify(this.option));
-
-          var _rate = rateList;
-          var _rateList = Object.keys(rateList);
-          for (var i = 0; i < _ooption.length; i++) {
-            if (_rateList.indexOf(_ooption[i].name) != -1) {
-              _ooption[i].value = _rate[_ooption[i].name];
-            }
-          }
-
-          // var _option = JSON.parse(JSON.stringify(this.radarOption));
-          var _option = this.radarOption;
-          _option.radar.indicator = [];
-          _option.series[0].data[0].value = [];
-          for (var i = 0; i < _ooption.length; i++) {
-            _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-            _option.series[0].data[0].value.push(_ooption[i].value);
-          }
-          console.log(_option);
-          if (this.chartObj) {
-            // _option.series[0].data = _ooption;
-            this.chartObj[k].setOption(_option);
-          } else {
-            this.setChart(_ooption);
-          }
-          // this.uploadBoolean = false;
-          if (k == this.worksDetail.length - 1) {
-            this.$message({
-              message: "评价成功",
-              type: "success",
-            });
-          }
+          // var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
+          // // var _option = JSON.parse(JSON.stringify(this.option));
+
+          // var _rate = rateList;
+          // var _rateList = Object.keys(rateList);
+          // for (var i = 0; i < _ooption.length; i++) {
+          //   if (_rateList.indexOf(_ooption[i].name) != -1) {
+          //     _ooption[i].value = _rate[_ooption[i].name];
+          //   }
+          // }
+
+          // // var _option = JSON.parse(JSON.stringify(this.radarOption));
+          // var _option = this.radarOption;
+          // _option.radar.indicator = [];
+          // _option.series[0].data[0].value = [];
+          // for (var i = 0; i < _ooption.length; i++) {
+          //   _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
+          //   _option.series[0].data[0].value.push(_ooption[i].value);
+          // }
+          // console.log(_option);
+          // if (this.chartObj) {
+          //   // _option.series[0].data = _ooption;
+          //   this.chartObj[k].setOption(_option);
+          // } else {
+          //   this.setChart(_ooption);
+          // }
+          // // this.uploadBoolean = false;
+          // if (k == this.worksDetail.length - 1) {
+          //   this.$message({
+          //     message: "评价成功",
+          //     type: "success",
+          //   });
+          // }
+          this.$message({
+            message: "评价成功",
+            type: "success",
+          });
         })
         .catch((err) => {
           this.$message.error("评价失败");

+ 147 - 108
src/components/pages/myReport/components/MyLookComponent/worksDetail3.vue

@@ -113,9 +113,7 @@
                 </div>
               </div>
               <div class="contentBox">
-                <div
-                  class="contentAuto"
-                >
+                <div class="contentAuto">
                   <div
                     class="left_top"
                     v-if="worksDetail[sIndex].img.length > 0"
@@ -1500,7 +1498,16 @@ export default {
 
           // 将结果转换为数组形式
           b = Object.values(b);
-          this.sInfo = b;
+          var c = b.sort(function (x, y) {
+            // 首先比较stage字段
+            if (x.stage !== y.stage) {
+              return parseInt(x.stage) - parseInt(y.stage);
+            }
+
+            // 如果stage字段相同,则比较task字段
+            return parseInt(x.task) - parseInt(y.task);
+          });
+          this.sInfo = c;
           var chapters = [],
             eList = [],
             _ooption = [],
@@ -1520,7 +1527,7 @@ export default {
           var cocopiInfo = res.data[11]; //cocopi或源码编辑作业
           var wordInfo = res.data[12]; //文档作业
           var workEvaList = res.data[13];
-          var workJson = [];
+          var workJson = {};
 
           for (var k = 0; k < res.data[0].length; k++) {
             this.allWorks = res.data[0][k];
@@ -1555,37 +1562,40 @@ export default {
             ) {
               continue;
             }
-            workJson.push({
-              img: [],
-              imgIndex: 0,
-              eList: [],
-              rateList: {},
-              askInfo: [],
-              answerInfo: [],
-              wpptInfo: [],
-              chooseInfo: [],
-              pjInfo: [],
-              xztkInfo: [],
-              lccjInfo: [],
-              bgInfo: [],
-              cocopiInfo: [],
-              wordInfo: [],
-              scopeId: res.data[0][k].id,
-              stagetask: "",
-              time: "",
-            });
+
             this.checkJson[k] = {};
 
-            workJson[k].time = res.data[0][k].time;
-            workJson[k].stagetask =
-              res.data[0][k].stage + "-" + res.data[0][k].task;
+            let stagetask = res.data[0][k].stage + "-" + res.data[0][k].task;
+            if (!workJson[stagetask]) {
+              workJson[stagetask] = {
+                img: [],
+                imgIndex: 0,
+                eList: [],
+                rateList: {},
+                askInfo: [],
+                answerInfo: [],
+                wpptInfo: [],
+                chooseInfo: [],
+                pjInfo: [],
+                xztkInfo: [],
+                lccjInfo: [],
+                bgInfo: [],
+                cocopiInfo: [],
+                wordInfo: [],
+                scopeId: res.data[0][k].id,
+                stagetask: stagetask,
+                time: "",
+              };
+            }
 
+            workJson[stagetask].time = res.data[0][k].time;
             for (var i = 0; i < worksDetail.length; i++) {
               if (
                 res.data[0][k].stage == worksDetail[i].stage &&
-                res.data[0][k].task == worksDetail[i].task
+                res.data[0][k].task == worksDetail[i].task &&
+                res.data[0][k].tool == worksDetail[i].tool
               ) {
-                workJson[k].img.push({
+                workJson[stagetask].img.push({
                   src: worksDetail[i].content,
                   id: i,
                   score: worksDetail[i].score
@@ -1597,7 +1607,8 @@ export default {
             for (var i = 0; i < askInfo.length; i++) {
               if (
                 res.data[0][k].stage == askInfo[i].stage &&
-                res.data[0][k].task == askInfo[i].task
+                res.data[0][k].task == askInfo[i].task &&
+                res.data[0][k].tool == askInfo[i].tool
               ) {
                 const element = askInfo[i];
                 let a = JSON.parse(element.content)[0];
@@ -1610,7 +1621,7 @@ export default {
                   }
                 }
                 a.radio = e;
-                workJson[k].askInfo.push({
+                workJson[stagetask].askInfo.push({
                   askInfo: a,
                   score: askInfo[i].score
                     ? JSON.parse(askInfo[i].score).wScore
@@ -1634,7 +1645,7 @@ export default {
                   }
                   if (a.radio[p] instanceof Array) {
                     if (
-                      workJson[k].askInfo[0].askInfo.askJson[p].answer
+                      workJson[stagetask].askInfo[0].askInfo.askJson[p].answer
                         .sort()
                         .join(",") == a.radio[p].sort().join(",")
                     ) {
@@ -1662,8 +1673,8 @@ export default {
                     }
                   } else {
                     if (
-                      workJson[k].askInfo[0].askInfo.askJson[p].answer ==
-                      a.radio[p]
+                      workJson[stagetask].askInfo[0].askInfo.askJson[p]
+                        .answer == a.radio[p]
                     ) {
                       this.checkJson[k][p].right = 100;
                       isCount += this.checkJson[k][p].right;
@@ -1695,7 +1706,8 @@ export default {
             for (var i = 0; i < chooseInfo.length; i++) {
               if (
                 res.data[0][k].stage == chooseInfo[i].stage &&
-                res.data[0][k].task == chooseInfo[i].task
+                res.data[0][k].task == chooseInfo[i].task &&
+                res.data[0][k].tool == chooseInfo[i].tool
               ) {
                 const element1 = chooseInfo[i];
                 let t = JSON.parse(element1.content)[0].testJson;
@@ -1708,7 +1720,7 @@ export default {
                   }
                 }
                 t.radio = e;
-                workJson[k].chooseInfo.push({
+                workJson[stagetask].chooseInfo.push({
                   chooseInfo: t,
                   score: chooseInfo[i].score
                     ? JSON.parse(chooseInfo[i].score).wScore
@@ -1732,9 +1744,8 @@ export default {
                   }
                   if (t.radio[p] instanceof Array) {
                     if (
-                      workJson[k].chooseInfo[0].chooseInfo.testJson[p].answer
-                        .sort()
-                        .join(",") == t.radio[p].sort().join(",")
+                      t.testJson[p].answer.sort().join(",") ==
+                      t.radio[p].sort().join(",")
                     ) {
                       this.checkJson[k][p].right = 100;
                       isCount += this.checkJson[k][p].right;
@@ -1759,10 +1770,7 @@ export default {
                           ] = 1);
                     }
                   } else {
-                    if (
-                      workJson[k].chooseInfo[0].chooseInfo.testJson[p].answer ==
-                      t.radio[p]
-                    ) {
+                    if (t.testJson[p].answer == t.radio[p]) {
                       this.checkJson[k][p].right = 100;
                       isCount += this.checkJson[k][p].right;
                     } else {
@@ -1793,7 +1801,8 @@ export default {
             for (var i = 0; i < pptInfo.length; i++) {
               if (
                 res.data[0][k].stage == pptInfo[i].stage &&
-                res.data[0][k].task == pptInfo[i].task
+                res.data[0][k].task == pptInfo[i].task &&
+                res.data[0][k].tool == pptInfo[i].tool
               ) {
                 var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
                 if (
@@ -1808,7 +1817,7 @@ export default {
                   var a =
                     "https://view.officeapps.live.com/op/view.aspx?src=" +
                     pptInfo[i].content;
-                  workJson[k].wpptInfo.push({
+                  workJson[stagetask].wpptInfo.push({
                     wpptInfo: a,
                     score: pptInfo[i].score
                       ? JSON.parse(pptInfo[i].score).wScore
@@ -1822,7 +1831,7 @@ export default {
                       pptInfo[i].content.split(".").length - 1
                     ].toLocaleUpperCase() == "PDF"
                 ) {
-                  workJson[k].wpptInfo.push({
+                  workJson[stagetask].wpptInfo.push({
                     wpptInfo: pptInfo[i].content,
                     score: pptInfo[i].score
                       ? JSON.parse(pptInfo[i].score).wScore
@@ -1836,10 +1845,11 @@ export default {
             for (var i = 0; i < answerInfo.length; i++) {
               if (
                 res.data[0][k].stage == answerInfo[i].stage &&
-                res.data[0][k].task == answerInfo[i].task
+                res.data[0][k].task == answerInfo[i].task &&
+                res.data[0][k].tool == answerInfo[i].tool
               ) {
                 const element = answerInfo[i];
-                workJson[k].answerInfo.push({
+                workJson[stagetask].answerInfo.push({
                   answerInfo: JSON.parse(element.content)[0],
                   score: answerInfo[i].score
                     ? JSON.parse(answerInfo[i].score).wScore
@@ -1850,7 +1860,8 @@ export default {
             for (var i = 0; i < pjInfo.length; i++) {
               if (
                 res.data[0][k].stage == pjInfo[i].stage &&
-                res.data[0][k].task == pjInfo[i].task
+                res.data[0][k].task == pjInfo[i].task &&
+                res.data[0][k].tool == pjInfo[i].tool
               ) {
                 var pj = pjInfo[i];
                 var a =
@@ -1863,7 +1874,7 @@ export default {
                     rateJson = a[z].rateJson;
                   }
                 }
-                workJson[k].pjInfo.push({
+                workJson[stagetask].pjInfo.push({
                   answer: JSON.parse(pj.content),
                   rateJson: rateJson,
                   score: pjInfo[i].score
@@ -1876,7 +1887,8 @@ export default {
             for (var i = 0; i < xztkInfo.length; i++) {
               if (
                 res.data[0][k].stage == xztkInfo[i].stage &&
-                res.data[0][k].task == xztkInfo[i].task
+                res.data[0][k].task == xztkInfo[i].task &&
+                res.data[0][k].tool == xztkInfo[i].tool
               ) {
                 if (xztkInfo[i].type == 7) {
                   var xztk = xztkInfo[i];
@@ -1890,7 +1902,7 @@ export default {
                       selectJson = a[z].selectJson;
                     }
                   }
-                  workJson[k].xztkInfo.push({
+                  workJson[stagetask].xztkInfo.push({
                     answer: xztk.content.split(",").map(Number),
                     selectJson: selectJson,
                     score: xztkInfo[i].score
@@ -1904,10 +1916,11 @@ export default {
             for (var i = 0; i < lccjInfo.length; i++) {
               if (
                 res.data[0][k].stage == lccjInfo[i].stage &&
-                res.data[0][k].task == lccjInfo[i].task
+                res.data[0][k].task == lccjInfo[i].task &&
+                res.data[0][k].tool == lccjInfo[i].tool
               ) {
                 var lccj = lccjInfo[i];
-                workJson[k].lccjInfo.push({
+                workJson[stagetask].lccjInfo.push({
                   lccjInfo: JSON.parse(lccj.content)[0],
                   score: lccjInfo[i].score
                     ? JSON.parse(lccjInfo[i].score).wScore
@@ -1919,10 +1932,11 @@ export default {
             for (var i = 0; i < bgInfo.length; i++) {
               if (
                 res.data[0][k].stage == bgInfo[i].stage &&
-                res.data[0][k].task == bgInfo[i].task
+                res.data[0][k].task == bgInfo[i].task &&
+                res.data[0][k].tool == bgInfo[i].tool
               ) {
                 var bg = bgInfo[i];
-                workJson[k].bgInfo.push({
+                workJson[stagetask].bgInfo.push({
                   bgInfo: JSON.parse(bg.content),
                   score: bgInfo[i].score
                     ? JSON.parse(bgInfo[i].score).wScore
@@ -1934,7 +1948,8 @@ export default {
             for (var i = 0; i < cocopiInfo.length; i++) {
               if (
                 res.data[0][k].stage == cocopiInfo[i].stage &&
-                res.data[0][k].task == cocopiInfo[i].task
+                res.data[0][k].task == cocopiInfo[i].task &&
+                res.data[0][k].tool == cocopiInfo[i].tool
               ) {
                 var cocopi = cocopiInfo[i];
                 var c = ["DOT", "DOC", "DOCX", "PPT", "PPTX", "XLSX", "XLS"];
@@ -1961,7 +1976,7 @@ export default {
                   ) != -1
                 ) {
                   t = 1;
-                  workJson[k].cocopiInfo.push({
+                  workJson[stagetask].cocopiInfo.push({
                     url: cocopi.content,
                     type: t,
                     score: cocopiInfo[i].score
@@ -1979,7 +1994,7 @@ export default {
                   var a =
                     "https://view.officeapps.live.com/op/view.aspx?src=" +
                     cocopi.content;
-                  workJson[k].cocopiInfo.push({
+                  workJson[stagetask].cocopiInfo.push({
                     url: a,
                     type: t,
                     score: cocopiInfo[i].score
@@ -1994,7 +2009,7 @@ export default {
                     ].toLocaleUpperCase() == "PDF"
                 ) {
                   t = 3;
-                  workJson[k].cocopiInfo.push({
+                  workJson[stagetask].cocopiInfo.push({
                     url: cocopi.content,
                     type: t,
                     score: cocopiInfo[i].score
@@ -2008,10 +2023,11 @@ export default {
             for (var i = 0; i < wordInfo.length; i++) {
               if (
                 res.data[0][k].stage == wordInfo[i].stage &&
-                res.data[0][k].task == wordInfo[i].task
+                res.data[0][k].task == wordInfo[i].task &&
+                res.data[0][k].tool == wordInfo[i].tool
               ) {
                 var word = wordInfo[i];
-                workJson[k].wordInfo.push({
+                workJson[stagetask].wordInfo.push({
                   wordInfo: JSON.parse(word.content),
                   score: wordInfo[i].score
                     ? JSON.parse(wordInfo[i].score).wScore
@@ -2020,12 +2036,16 @@ export default {
               }
             }
           }
-          const result = workJson.filter((item, index, arr) => {
-            return (
-              arr.findIndex((temp) => temp.stagetask === item.stagetask) ===
-              index
-            );
-          });
+          // const result = workJson.filter((item, index, arr) => {
+          //   return (
+          //     arr.findIndex((temp) => temp.stagetask === item.stagetask) ===
+          //     index
+          //   );
+          // });
+          const result = [];
+          for (var wi = 0; wi < Object.keys(workJson).length; wi++) {
+            result.push(workJson[Object.keys(workJson)[wi]]);
+          }
           for (var l = 0; l < b.length; l++) {
             if (workEvaList.length > 0) {
               for (var p = 0; p < workEvaList.length; p++) {
@@ -2126,7 +2146,21 @@ export default {
             }
           }
 
-          this.worksDetail = result;
+          var resultNewArray = result.sort(function (x, y) {
+            // 以stagetask字段为排序依据
+            var x_parts = x.stagetask.split("-");
+            var y_parts = y.stagetask.split("-");
+
+            // 首先比较第一个数字
+            if (x_parts[0] !== y_parts[0]) {
+              return parseInt(x_parts[0]) - parseInt(y_parts[0]);
+            }
+
+            // 如果第一个数字相同,则比较第二个数字
+            return parseInt(x_parts[1]) - parseInt(y_parts[1]);
+          });
+
+          this.worksDetail = resultNewArray;
 
           this.courseDetail = res.data[0][0];
 
@@ -2149,11 +2183,9 @@ export default {
                 });
                 _option.series[0].data[0].value.push(_ooption[i].value);
               }
-              console.log(_option);
               this.setChart(_option, p);
             }
           }, 0);
-
           let _dyList = JSON.parse(JSON.stringify(this.dyList));
           let _dyList2 = [];
           let _dyList3 = [];
@@ -2162,9 +2194,9 @@ export default {
             _dyList2.push(_dyList[c]);
           }
           _dyList = JSON.parse(JSON.stringify(this.dyList));
-          for (var c = 0; c < workJson.length; c++) {
-            let _stage = workJson[c].stagetask.split("-")[0];
-            let _task = workJson[c].stagetask.split("-")[1];
+          for (var c = 0; c < resultNewArray.length; c++) {
+            let _stage = resultNewArray[c].stagetask.split("-")[0];
+            let _task = resultNewArray[c].stagetask.split("-")[1];
             if (_dyList2[_stage].taskList.length > 0) {
               for (var i = 0; i < _dyList2[_stage].taskList.length; i++) {
                 if (
@@ -2352,8 +2384,11 @@ export default {
     },
     updatePj() {
       for (var i = 0; i < this.worksDetail.length; i++) {
+        if (!this.worksDetail[i].eList.length) {
+          continue;
+        }
         this.updateWorks(
-          this.worksDetail[i].scopeId,
+          this.worksDetail[i].stagetask,
           this.worksDetail[i].rateList,
           i
         );
@@ -2394,39 +2429,43 @@ export default {
       this.ajax
         .get(this.$store.state.api + "updateWorks", params)
         .then((res) => {
-          var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
-          // var _option = JSON.parse(JSON.stringify(this.option));
-
-          var _rate = rateList;
-          var _rateList = Object.keys(rateList);
-          for (var i = 0; i < _ooption.length; i++) {
-            if (_rateList.indexOf(_ooption[i].name) != -1) {
-              _ooption[i].value = _rate[_ooption[i].name];
-            }
-          }
-
-          // var _option = JSON.parse(JSON.stringify(this.radarOption));
-          var _option = this.radarOption;
-          _option.radar.indicator = [];
-          _option.series[0].data[0].value = [];
-          for (var i = 0; i < _ooption.length; i++) {
-            _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-            _option.series[0].data[0].value.push(_ooption[i].value);
-          }
-          console.log(_option);
-          if (this.chartObj) {
-            // _option.series[0].data = _ooption;
-            this.chartObj[k].setOption(_option);
-          } else {
-            this.setChart(_ooption);
-          }
-          // this.uploadBoolean = false;
-          if (k == this.worksDetail.length - 1) {
-            this.$message({
-              message: "评价成功",
-              type: "success",
-            });
-          }
+          // var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
+          // // var _option = JSON.parse(JSON.stringify(this.option));
+
+          // var _rate = rateList;
+          // var _rateList = Object.keys(rateList);
+          // for (var i = 0; i < _ooption.length; i++) {
+          //   if (_rateList.indexOf(_ooption[i].name) != -1) {
+          //     _ooption[i].value = _rate[_ooption[i].name];
+          //   }
+          // }
+
+          // // var _option = JSON.parse(JSON.stringify(this.radarOption));
+          // var _option = this.radarOption;
+          // _option.radar.indicator = [];
+          // _option.series[0].data[0].value = [];
+          // for (var i = 0; i < _ooption.length; i++) {
+          //   _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
+          //   _option.series[0].data[0].value.push(_ooption[i].value);
+          // }
+          // console.log(_option);
+          // if (this.chartObj) {
+          //   // _option.series[0].data = _ooption;
+          //   this.chartObj[k].setOption(_option);
+          // } else {
+          //   this.setChart(_ooption);
+          // }
+          // // this.uploadBoolean = false;
+          // if (k == this.worksDetail.length - 1) {
+          //   this.$message({
+          //     message: "评价成功",
+          //     type: "success",
+          //   });
+          // }
+          this.$message({
+            message: "评价成功",
+            type: "success",
+          });
         })
         .catch((err) => {
           this.$message.error("评价失败");