lsc hai 1 ano
pai
achega
08b88567d2

+ 1 - 1
dist/index.html

@@ -25,7 +25,7 @@
       height: 100%;
       width: 100%;
       background: #e6eaf0;
-    }</style><link href=./static/css/app.cf2c478c19aaf3bbd43bd8337f572a91.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3512a67a6213c2df4180.js></script><script type=text/javascript src=./static/js/vendor.b01159b52abeac4e6216.js></script><script type=text/javascript src=./static/js/app.aef0ce3edc11b4438708.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.c61bfa02a9277cf468b5ea2fe86cb405.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3512a67a6213c2df4180.js></script><script type=text/javascript src=./static/js/vendor.b01159b52abeac4e6216.js></script><script type=text/javascript src=./static/js/app.dfa7e51f1b3c6071283a.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/css/app.c61bfa02a9277cf468b5ea2fe86cb405.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/css/app.c61bfa02a9277cf468b5ea2fe86cb405.css.map


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/css/app.cf2c478c19aaf3bbd43bd8337f572a91.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/css/app.cf2c478c19aaf3bbd43bd8337f572a91.css.map


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/app.dfa7e51f1b3c6071283a.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/app.dfa7e51f1b3c6071283a.js.map


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/manifest.3512a67a6213c2df4180.js.map


+ 198 - 82
src/components/pages/addCourse.vue

@@ -505,6 +505,7 @@
                           isClickColor > 0 && isClickColor == tIndex + 1,
                         isNavOpen: t.toolOpen
                       }">
+                          <div @click.stop="taskOpen(tIndex)" class="chapter_upload_open"></div>
                         <div
                         style="left: 8px;"
                           class="chapter_upload_drag"
@@ -559,6 +560,7 @@
                               </el-tooltip>
                             </div>
                           </div>
+                          <div @click.stop="unitOpen(stageIndex)" class="chapter_unit_open"></div>
                       </div>
                       <div v-for="(t, tIndex) in unitJson[stageIndex].chapterInfo[0]
                         .taskJson" :key="`${stageIndex}-${tIndex}`" :class="{
@@ -571,6 +573,7 @@
                             isClickColor > 0 && isClickColor == tIndex + 1 && stageIndex == unitIndex,
                           isNavOpen: t.toolOpen
                         }">
+                          <div @click.stop="taskOpen(tIndex)" class="chapter_upload_open"></div>
                           <div
                           style="left: 20px;"
                             class="chapter_upload_drag"
@@ -4978,18 +4981,27 @@ export default {
         }
         return cPan;
     },
-    unitSet2(i) {
-      if(this.panUnitJson() == 2){
-        return;
-      }
+    unitOpen(i){
       if(this.unitJson[i].toolOpen){
         this.unitJson[i].toolOpen = false
-        this.updateWork()
-        this.$forceUpdate()
-        return
       }else {
         this.unitJson[i].toolOpen = true
       }
+      this.updateWork()
+      this.$forceUpdate()
+    },
+    unitSet2(i) {
+      if(this.panUnitJson() == 2){
+        return;
+      }
+      // if(this.unitJson[i].toolOpen){
+      //   this.unitJson[i].toolOpen = false
+      //   this.updateWork()
+      //   this.$forceUpdate()
+      //   return
+      // }else {
+      this.unitJson[i].toolOpen = true
+      // }
       this.$forceUpdate()
       if(this.unitIndex == i){
         return;
@@ -6383,59 +6395,82 @@ export default {
       this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic] = a;
       this.$forceUpdate();
     },
-    upTool(e, i, j, tooli){
+    async upTool(e, i, j, tooli){
       e.stopPropagation();
       if (tooli == 0) {
         return;
       }
-      this.$confirm(
-        "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
-        "提示",
-        {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }
-      )
-        .then(() => {
-          var a =
-          JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1]));
-          this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1] =
-            JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]));
-          this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
-          this.$forceUpdate()
-        })
-        .catch(() => {
-          return;
-        });
+      let count1 = await this.getWorksCount(3, i, j, tooli - 1)
+      let count2 = await this.getWorksCount(3, i, j, tooli)
+      if(count1 > 0 || count2 > 0){
+        this.$confirm(
+          "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
+          "提示",
+          {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          }
+        )
+          .then(() => {
+            var a =
+            JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1] =
+              JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
+            this.$forceUpdate()
+          })
+          .catch(() => {
+            return;
+          });
+      }else{
+        var a =
+            JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1] =
+              JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
+            this.$forceUpdate()
+      }
+      
     },
-    downTool(e, i, j, tooli){
+    async downTool(e, i, j, tooli){
       e.stopPropagation();
       if ( tooli ==
         this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length -
         1) {
         return;
       }
-      this.$confirm(
-        "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
-        "提示",
-        {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }
-      )
-        .then(() => {
+      let count1 = await this.getWorksCount(3, i, j, tooli + 1)
+      let count2 = await this.getWorksCount(3, i, j, tooli)
+      if(count1 > 0 || count2 > 0){
+        this.$confirm(
+          "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
+          "提示",
+          {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          }
+        )
+          .then(() => {
+            var a =
+            JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1] =
+              JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
+            this.$forceUpdate()
+          })
+          .catch(() => {
+            return;
+          });
+        }else{
           var a =
-          JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1]));
-          this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1] =
-            JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]));
-          this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
-          this.$forceUpdate()
-        })
-        .catch(() => {
-          return;
-        });
+            JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1] =
+              JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
+            this.$forceUpdate()
+        }
     },
     addWork() {
       let cPan = 1;
@@ -6947,7 +6982,7 @@ export default {
         this.updateCourseState(parseInt(res.state))
       }
       _this
-        .$confirm("确定选择此模板吗?修改课程时无法重置课程模板。", "提示", {
+        .$confirm("确定选择课程模板吗?此操作将删除所有已编辑课程内容。", "提示", {
           confirmButtonText: "确定",
           cancelButtonText: "取消",
           type: "warning",
@@ -6971,7 +7006,7 @@ export default {
     checkTemplate(res) {
       let _this = this;
       _this
-        .$confirm("确定选择此模板吗?修改课程时无法重置课程模板。", "提示", {
+        .$confirm("确定选择课程模板吗?此操作将删除所有已编辑课程内容。", "提示", {
           confirmButtonText: "确定",
           cancelButtonText: "取消",
           type: "warning",
@@ -8206,10 +8241,13 @@ export default {
           return element != "";
         });
         return (
-          (el.teststitle != "" || el.timuList.length > 0) && elc.length != 0
+          el.teststitle != "" || el.timuList.length > 0 || elc.length != 0
         );
       });
       isTestJson.testCount = isTestJson.testJson.length;
+      if(!isTestJson.testCount){
+        return;
+      }
       this.testJson = isTestJson;
       this.$forceUpdate();
     },
@@ -9361,33 +9399,41 @@ export default {
     goToTask(i) {
       this.toolIndexType = ''
       if (this.isClickColor == (i + 1)) {
-        if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
-        } else {
+        // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
+        //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
+        // } else {
           this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = true
-        }
+        // }
         this.$forceUpdate();
         return;
       }
 
-      if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
-      } else {
+      // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
+      //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
+      // } else {
         document.querySelectorAll(".basic_box")[0].scrollTop =
           document.querySelectorAll(".taskBorder")[i].offsetTop - 100;
         this.isClickColor = i + 1;
         this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = true
+      // }
+      this.$forceUpdate();
+    },
+    taskOpen(i){
+      if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
+        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
+      } else {
+        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = true
       }
       this.$forceUpdate();
     },
     goToTask2(i, stage) {
       this.toolIndexType = ''
       if (this.isClickColor == (i + 1) && this.unitIndex == stage) {
-        if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
-        } else {
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = true
-        }
+        // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
+        //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
+        // } else {
+        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = true
+        // }
         this.$forceUpdate();
         return;
       }
@@ -9397,14 +9443,14 @@ export default {
         }
         this.unitSet(stage)
       }
-      if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
-      } else {
+      // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
+      //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
+      // } else {
         document.querySelectorAll(".basic_box")[0].scrollTop =
           document.querySelectorAll(".taskBorder")[i].offsetTop - 100;
         this.isClickColor = i + 1;
         this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = true
-      }
+      // }
       this.$forceUpdate();
     },
     taskMove(type, index) {
@@ -9923,7 +9969,7 @@ export default {
       this.newIndex = i;
       this.checkUnitIndex = j;
     },
-    dragTaskEnd() {
+    async dragTaskEnd() {
       if(this.dragType != 'task'){
         this.newIndex = "";
         this.dragType = "";
@@ -9938,7 +9984,10 @@ export default {
         this.checkUnitIndex = "";
         return;
       }
-      this.$confirm(
+      let count1 = await this.getWorksCount(2, this.checkUnitIndex, this.newIndex, 0)
+      let count2 = await this.getWorksCount(2, this.oldUnitIndex, this.oldIndex, 0)
+      if(count1 > 0 || count2 > 0){
+        this.$confirm(
         "切换任务顺序将删除所有工具的提交成果,是否继续此操作?",
         "提示",
         {
@@ -9979,6 +10028,31 @@ export default {
           this.checkUnitIndex = "";
           return;
         });
+      }else{
+        if(this.oldUnitIndex != this.checkUnitIndex){
+            let newItems = [...this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson];
+            // 删除老的节点
+            newItems.splice(this.oldIndex, 1);
+            // 在列表中目标位置增加新的节点
+            let newItems2 = [...this.unitJson[this.checkUnitIndex].chapterInfo[0].taskJson];
+            newItems2.splice(this.newIndex, 0, this.oldData);
+            this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson = [...newItems];
+            this.unitJson[this.checkUnitIndex].chapterInfo[0].taskJson = [...newItems2];
+          }else{
+            let newItems = [...this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson];
+            // 删除老的节点
+            newItems.splice(this.oldIndex, 1);
+            // 在列表中目标位置增加新的节点
+            newItems.splice(this.newIndex, 0, this.oldData);
+            this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson = [...newItems];
+          }
+          this.typeIndex = "";
+          this.newIndex = "";
+          this.dragType = "";
+          this.checkUnitIndex = "";
+          this.updateWork();
+          this.$forceUpdate()
+      }
     },
     dragUnitStart(val, i) {
       this.dragType = 'Unit'
@@ -9995,7 +10069,7 @@ export default {
         this.$forceUpdate()
       }
     },
-    dragUnitEnd() {
+    async dragUnitEnd() {
       if(this.dragType != 'Unit'){
         this.newIndex = "";
         this.dragType = "";
@@ -10008,7 +10082,11 @@ export default {
         this.typeIndex = "";
         return;
       }
-      this.$confirm(
+      let count1 = await this.getWorksCount(1, this.newIndex, 0, 0)
+      let count2 = await this.getWorksCount(1, this.oldIndex, 0, 0)
+      console.log(count1, count2)
+      if(count1 > 0 || count2 > 0){
+        this.$confirm(
         "切换阶段顺序将删除所有工具的提交成果,是否继续此操作?",
         "提示",
         {
@@ -10036,7 +10114,45 @@ export default {
           this.typeIndex = "";
           return;
         });
+      }else{
+        let newItems = [...this.unitJson];
+            // 删除老的节点
+          newItems.splice(this.oldIndex, 1);
+          // 在列表中目标位置增加新的节点
+          newItems.splice(this.newIndex, 0, this.oldData);
+          this.unitJson = [...newItems];
+          this.typeIndex = "";
+          this.newIndex = "";
+          this.dragType = "";
+          this.updateWork();
+          this.$forceUpdate()
+      }
     },
+    getWorksCount(type, stage, task, tool){
+      return new Promise((resolve, reject) => {
+        let params = [
+          {
+            cid: this.cid,
+            stage: stage,
+            task: task,
+            tool: tool,
+            type: type
+          },
+        ];
+        this.ajax
+          .post(this.$store.state.api + "getCourseWorkCount", params)
+          .then((res) => {
+            let count = res.data[0][0].count
+            resolve(count)
+          })
+          .catch((err) => {
+            resolve(0)
+            this.$message.error("网络不佳");
+            console.error(err);
+          });
+      });
+      
+    }
   },
   beforeDestroy() {
     clearTimeout(this.timer);
@@ -11370,7 +11486,7 @@ export default {
 .chapter_upload_up2::before,
 .chapter_upload_down2::before {
   content: '';
-  background-image: url('../../assets/icon/new/c_up.png');
+  background-image: url('../../assets/icon/new/c_down.png');
   width: 14px;
   height: 14px;
   background-size: 100% 100%;
@@ -11379,7 +11495,7 @@ export default {
 }
 
 .chapter_upload_up2::before {
-  background-image: url('../../assets/icon/new/c_down.png') !important;
+  background-image: url('../../assets/icon/new/c_up.png') !important;
 }
 
 
@@ -12378,7 +12494,7 @@ ol {
   color: currentColor;
   width: 100%;
   /* max-width: calc(100% - 385px); */
-  max-width: calc(100% - 70px);
+  max-width: calc(100% - 150px);
   padding: 8px 14px;
   display: block;
   min-width: 0;
@@ -13393,7 +13509,7 @@ ol {
   margin-left: 25px;
 }
 
-.navStage::after {
+.navStage .chapter_unit_open {
   content: '';
   display: block;
   width: 16px;
@@ -13405,7 +13521,7 @@ ol {
   transition: all .5s;
 }
 
-.isNavStageOpen::after {
+.isNavStageOpen .chapter_unit_open {
   transform: rotate(0deg);
 }
 
@@ -13417,7 +13533,7 @@ ol {
   background-image: url(../../assets/icon/new/icon_stage_a.png);
 }
 
-.isNavStage::after{
+.isNavStage .chapter_unit_open{
   background-image: url(../../assets/icon/new/downC.png);
 }
 
@@ -13475,7 +13591,7 @@ ol {
   position: relative;
 }
 
-.navTask::before {
+.navTask .chapter_upload_open {
   content: '';
   display: block;
   width: 16px;
@@ -13485,22 +13601,22 @@ ol {
   margin-left: 23px;
 }
 
-.noImage::before {
+.noImage .chapter_upload_open {
   display: none;
   background-image: unset !important;
 }
 
-.isNavOpen::before {
+.isNavOpen .chapter_upload_open {
   /* background-image: url(../../assets/icon/new/icon_arrow_a.png) !important; */
   transform: rotate(90deg);
 }
 
-.isNavTask::before {
+.isNavTask .chapter_upload_open {
   background-image: url(../../assets/icon/new/icon_arrow_a.png) !important;
   transform: rotate(-90deg);
 }
 
-.isNavTask.isNavOpen::before{
+.isNavTask.isNavOpen .chapter_upload_open{
   transform: rotate(0deg);
 }
 

+ 180 - 91
src/components/pages/easy/addCourse.vue

@@ -178,6 +178,7 @@
                               isClickColor > 0 && isClickColor == tIndex + 1,
                             isNavOpen: t.toolOpen,
                           }">
+                          <div @click.stop="taskOpen(tIndex)" class="chapter_upload_open"></div>
                           <div style="left: 8px;" class="chapter_upload_drag"></div>
                           <div class="nt_taskBox">
                             <div class="nt_taskTitle">任务{{ tIndex + 1 }}:</div>
@@ -6703,59 +6704,81 @@ export default {
       this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic] = a;
       this.$forceUpdate();
     },
-    upTool(e, i, j, tooli){
+    async upTool(e, i, j, tooli){
       e.stopPropagation();
       if (tooli == 0) {
         return;
       }
-      this.$confirm(
-        "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
-        "提示",
-        {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }
-      )
-        .then(() => {
+      let count1 = await this.getWorksCount(3, i, j, tooli - 1)
+      let count2 = await this.getWorksCount(3, i, j, tooli)
+      if(count1 > 0 || count2 > 0){
+        this.$confirm(
+          "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
+          "提示",
+          {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          }
+        )
+          .then(() => {
+            var a =
+            JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1] =
+              JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
+            this.$forceUpdate()
+          })
+          .catch(() => {
+            return;
+          });
+        }else{
           var a =
-          JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1]));
-          this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1] =
-            JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]));
-          this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
-          this.$forceUpdate()
-        })
-        .catch(() => {
-          return;
-        });
+            JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1] =
+              JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
+            this.$forceUpdate()
+        }
     },
-    downTool(e, i, j, tooli){
+    async downTool(e, i, j, tooli){
       e.stopPropagation();
       if ( tooli ==
         this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length -
         1) {
         return;
       }
-      this.$confirm(
-        "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
-        "提示",
-        {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }
-      )
-        .then(() => {
+      let count1 = await this.getWorksCount(3, i, j, tooli + 1)
+      let count2 = await this.getWorksCount(3, i, j, tooli)
+      if(count1 > 0 || count2 > 0){
+        this.$confirm(
+          "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
+          "提示",
+          {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          }
+        )
+          .then(() => {
+            var a =
+            JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1] =
+              JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
+            this.$forceUpdate()
+          })
+          .catch(() => {
+            return;
+          });
+        }else{
           var a =
-          JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1]));
-          this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1] =
-            JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]));
-          this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
-          this.$forceUpdate()
-        })
-        .catch(() => {
-          return;
-        });
+            JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1] =
+              JSON.parse(JSON.stringify(this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]));
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
+            this.$forceUpdate()
+        }
     },
     addWork() {
       let cPan = 1;
@@ -8369,10 +8392,13 @@ export default {
           return element != "";
         });
         return (
-          (el.teststitle != "" || el.timuList.length > 0) && elc.length != 0
+          el.teststitle != "" || el.timuList.length > 0 || elc.length != 0
         );
       });
       isTestJson.testCount = isTestJson.testJson.length;
+      if(!isTestJson.testCount){
+        return;
+      }
       this.testJson = isTestJson;
       this.$forceUpdate();
     },
@@ -9488,23 +9514,31 @@ export default {
     goToTask(i) {
       this.toolIndexType = ''
       if (this.isClickColor == (i + 1)) {
-        if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
-        } else {
+        // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
+        //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
+        // } else {
           this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = true
-        }
+        // }
         this.$forceUpdate();
         return;
       }
 
-      if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
-      } else {
+      // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
+      //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
+      // } else {
         document.querySelectorAll(".rightBox")[0].scrollTop =
           document.querySelectorAll(".taskBorder")[i + 1].offsetTop +
           document.querySelectorAll(".taskBorder")[i + 1].parentElement.parentElement.offsetTop;
         this.isClickColor = i + 1;
         this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = true
+      // }
+      this.$forceUpdate();
+    },
+    taskOpen(i){
+      if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
+        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
+      } else {
+        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = true
       }
       this.$forceUpdate();
     },
@@ -9909,49 +9943,99 @@ export default {
       this.typeIndex = "task-" + i
       this.newIndex = i;
     },
-    dragTaskEnd() {
+    async dragTaskEnd() {
       if (this.newIndex == this.oldIndex) {
         this.typeIndex = "";
           this.newIndex = "";
         return;
       }
-      this.$confirm(
-        "切换任务顺序将删除所有工具的提交成果,是否继续此操作?",
-        "提示",
-        {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }
-      )
-        .then(() => {
-          let newItems = [...this.unitJson[this.unitIndex].chapterInfo[0].taskJson];
-          let chapterData = []
-          if (this.oldIndex == 0) {
-            chapterData = newItems[this.oldIndex].chapterData
-            newItems[this.oldIndex].chapterData = []
-          }else if(this.newIndex == 0){
-            chapterData = newItems[this.newIndex].chapterData
-            newItems[this.oldIndex].chapterData = []
-          }
-          // 删除老的节点
-          newItems.splice(this.oldIndex, 1);
-          // 在列表中目标位置增加新的节点
-          newItems.splice(this.newIndex, 0, this.oldData);
-          if (this.oldIndex == 0 || this.newIndex == 0) {
-            newItems[0].chapterData = chapterData
+      let count1 = await this.getWorksCount(2, 0, this.newIndex, 0)
+      let count2 = await this.getWorksCount(2, 0, this.oldIndex, 0)
+      if(count1 > 0 || count2 > 0){
+        this.$confirm(
+          "切换任务顺序将删除所有工具的提交成果,是否继续此操作?",
+          "提示",
+          {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
           }
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson = [...newItems];
-          this.typeIndex = "";
-          this.newIndex = "";
-          this.$forceUpdate()
-        })
-        .catch(() => {
-          this.typeIndex = "";
-          this.newIndex = "";
-          return;
-        });
+        )
+          .then(() => {
+            let newItems = [...this.unitJson[this.unitIndex].chapterInfo[0].taskJson];
+            let chapterData = []
+            if (this.oldIndex == 0) {
+              chapterData = newItems[this.oldIndex].chapterData
+              newItems[this.oldIndex].chapterData = []
+            }else if(this.newIndex == 0){
+              chapterData = newItems[this.newIndex].chapterData
+              newItems[this.oldIndex].chapterData = []
+            }
+            // 删除老的节点
+            newItems.splice(this.oldIndex, 1);
+            // 在列表中目标位置增加新的节点
+            newItems.splice(this.newIndex, 0, this.oldData);
+            if (this.oldIndex == 0 || this.newIndex == 0) {
+              newItems[0].chapterData = chapterData
+            }
+            this.unitJson[this.unitIndex].chapterInfo[0].taskJson = [...newItems];
+            this.typeIndex = "";
+            this.newIndex = "";
+            this.$forceUpdate()
+          })
+          .catch(() => {
+            this.typeIndex = "";
+            this.newIndex = "";
+            return;
+          });
+        }else{
+          let newItems = [...this.unitJson[this.unitIndex].chapterInfo[0].taskJson];
+            let chapterData = []
+            if (this.oldIndex == 0) {
+              chapterData = newItems[this.oldIndex].chapterData
+              newItems[this.oldIndex].chapterData = []
+            }else if(this.newIndex == 0){
+              chapterData = newItems[this.newIndex].chapterData
+              newItems[this.oldIndex].chapterData = []
+            }
+            // 删除老的节点
+            newItems.splice(this.oldIndex, 1);
+            // 在列表中目标位置增加新的节点
+            newItems.splice(this.newIndex, 0, this.oldData);
+            if (this.oldIndex == 0 || this.newIndex == 0) {
+              newItems[0].chapterData = chapterData
+            }
+            this.unitJson[this.unitIndex].chapterInfo[0].taskJson = [...newItems];
+            this.typeIndex = "";
+            this.newIndex = "";
+            this.$forceUpdate()
+        }
     },
+    getWorksCount(type, stage, task, tool){
+      return new Promise((resolve, reject) => {
+        let params = [
+          {
+            cid: this.cid,
+            stage: stage,
+            task: task,
+            tool: tool,
+            type: type
+          },
+        ];
+        this.ajax
+          .post(this.$store.state.api + "getCourseWorkCount", params)
+          .then((res) => {
+            let count = res.data[0][0].count
+            resolve(count)
+          })
+          .catch((err) => {
+            resolve(0)
+            this.$message.error("网络不佳");
+            console.error(err);
+          });
+      });
+      
+    }
   },
   beforeDestroy() {
     clearTimeout(this.timer);
@@ -11240,7 +11324,7 @@ export default {
 .chapter_upload_up2::before,
 .chapter_upload_down2::before {
   content: '';
-  background-image: url('../../../assets/icon/new/c_up.png');
+  background-image: url('../../../assets/icon/new/c_down.png');
   width: 14px;
   height: 14px;
   background-size: 100% 100%;
@@ -11249,7 +11333,7 @@ export default {
 }
 
 .chapter_upload_up2::before {
-  background-image: url('../../../assets/icon/new/c_down.png') !important;
+  background-image: url('../../../assets/icon/new/c_up.png') !important;
 }
 
 
@@ -13177,14 +13261,14 @@ ol {
   cursor: pointer;
   background: #ffffff;
   width: 95%;
-  margin: 10px auto 0;
+  margin: 5px auto 5px;
   box-sizing: border-box;
   border-radius: 5px;
   flex-wrap: wrap;
   position: relative;
 }
 
-.navTask::before {
+.navTask .chapter_upload_open {
   content: '';
   display: block;
   width: 16px;
@@ -13194,17 +13278,22 @@ ol {
   margin-left: 23px;
 }
 
-.isNavOpen::before {
+.noImage .chapter_upload_open {
+  display: none;
+  background-image: unset !important;
+}
+
+.isNavOpen .chapter_upload_open {
   /* background-image: url(../../assets/icon/new/icon_arrow_a.png) !important; */
   transform: rotate(90deg);
 }
 
-.isNavTask::before {
+.isNavTask .chapter_upload_open {
   background-image: url(../../../assets/icon/new/icon_arrow_a.png) !important;
   transform: rotate(-90deg);
 }
 
-.isNavTask.isNavOpen::before{
+.isNavTask.isNavOpen .chapter_upload_open{
   transform: rotate(0deg);
 }
 

+ 190 - 95
src/components/pages/task/addCourse.vue

@@ -301,6 +301,7 @@
                             isNavOpen: t.toolOpen,
                           }"
                         >
+                          <div @click.stop="taskOpen(tIndex)" class="chapter_upload_open"></div>
                           <div
                             style="left: 8px"
                             class="chapter_upload_drag"
@@ -10335,40 +10336,58 @@ export default {
       this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic] = a;
       this.$forceUpdate();
     },
-    upTool(e, i, j, tooli) {
+    async upTool(e, i, j, tooli) {
       e.stopPropagation();
       if (tooli == 0) {
         return;
       }
-      this.$confirm(
-        "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
-        "提示",
-        {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }
-      )
-        .then(() => {
+      let count1 = await this.getWorksCount(3, i, j, tooli - 1)
+      let count2 = await this.getWorksCount(3, i, j, tooli)
+      if(count1 > 0 || count2 > 0){
+        this.$confirm(
+          "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
+          "提示",
+          {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          }
+        )
+          .then(() => {
+            var a = JSON.parse(
+              JSON.stringify(
+                this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1]
+              )
+            );
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1] =
+              JSON.parse(
+                JSON.stringify(
+                  this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]
+                )
+              );
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
+            this.$forceUpdate();
+          })
+          .catch(() => {
+            return;
+          });
+        }else{
           var a = JSON.parse(
-            JSON.stringify(
-              this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1]
-            )
-          );
-          this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1] =
-            JSON.parse(
               JSON.stringify(
-                this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]
+                this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1]
               )
             );
-          this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
-          this.$forceUpdate();
-        })
-        .catch(() => {
-          return;
-        });
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1] =
+              JSON.parse(
+                JSON.stringify(
+                  this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]
+                )
+              );
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
+            this.$forceUpdate();
+        }
     },
-    downTool(e, i, j, tooli) {
+    async downTool(e, i, j, tooli) {
       e.stopPropagation();
       if (
         tooli ==
@@ -10376,33 +10395,51 @@ export default {
       ) {
         return;
       }
-      this.$confirm(
-        "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
-        "提示",
-        {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }
-      )
-        .then(() => {
+      let count1 = await this.getWorksCount(3, i, j, tooli + 1)
+      let count2 = await this.getWorksCount(3, i, j, tooli)
+      if(count1 > 0 || count2 > 0){
+        this.$confirm(
+          "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
+          "提示",
+          {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          }
+        )
+          .then(() => {
+            var a = JSON.parse(
+              JSON.stringify(
+                this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1]
+              )
+            );
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1] =
+              JSON.parse(
+                JSON.stringify(
+                  this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]
+                )
+              );
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
+            this.$forceUpdate();
+          })
+          .catch(() => {
+            return;
+          });
+        }else{
           var a = JSON.parse(
-            JSON.stringify(
-              this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1]
-            )
-          );
-          this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1] =
-            JSON.parse(
               JSON.stringify(
-                this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]
+                this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1]
               )
             );
-          this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
-          this.$forceUpdate();
-        })
-        .catch(() => {
-          return;
-        });
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1] =
+              JSON.parse(
+                JSON.stringify(
+                  this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]
+                )
+              );
+            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
+            this.$forceUpdate();
+        }
     },
     addWork() {
       let cPan = 1;
@@ -12043,10 +12080,13 @@ export default {
           return element != "";
         });
         return (
-          (el.teststitle != "" || el.timuList.length > 0) && elc.length != 0
+          el.teststitle != "" || el.timuList.length > 0 || elc.length != 0
         );
       });
       isTestJson.testCount = isTestJson.testJson.length;
+      if(!isTestJson.testCount){
+        return;
+      }
       this.testJson = isTestJson;
       this.$forceUpdate();
     },
@@ -13182,24 +13222,24 @@ export default {
     goToTask(i) {
       this.toolIndexType = "";
       if (this.isClickColor == i + 1) {
-        if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-            i
-          ].toolOpen = false;
-        } else {
+        // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
+        //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
+        //     i
+        //   ].toolOpen = false;
+        // } else {
           this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
             i
           ].toolOpen = true;
-        }
+        // }
         this.$forceUpdate();
         return;
       }
 
-      if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          i
-        ].toolOpen = false;
-      } else {
+      // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
+      //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
+      //     i
+      //   ].toolOpen = false;
+      // } else {
         document.querySelectorAll(".rightBox")[0].scrollTop =
           document.querySelectorAll(".taskBorder")[i].offsetTop +
           document.querySelectorAll(".taskBorder")[i].parentElement
@@ -13208,6 +13248,14 @@ export default {
         this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
           i
         ].toolOpen = true;
+      // }
+      this.$forceUpdate();
+    },
+    taskOpen(i){
+      if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
+        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
+      } else {
+        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = true
       }
       this.$forceUpdate();
     },
@@ -13599,40 +13647,81 @@ export default {
       this.typeIndex = "task-" + i;
       this.newIndex = i;
     },
-    dragTaskEnd() {
+    async dragTaskEnd() {
       if (this.newIndex == this.oldIndex) {
         this.newIndex = "";
         this.typeIndex = "";
         return;
       }
-      this.$confirm(
-        "切换任务顺序将删除所有工具的提交成果,是否继续此操作?",
-        "提示",
-        {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }
-      )
-        .then(() => {
+      let count1 = await this.getWorksCount(2, 0, this.newIndex, 0)
+      let count2 = await this.getWorksCount(2, 0, this.oldIndex, 0)
+      if(count1 > 0 || count2 > 0){
+        this.$confirm(
+          "切换任务顺序将删除所有工具的提交成果,是否继续此操作?",
+          "提示",
+          {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          }
+        )
+          .then(() => {
+            let newItems = [
+              ...this.unitJson[this.unitIndex].chapterInfo[0].taskJson,
+            ];
+            // 删除老的节点
+            newItems.splice(this.oldIndex, 1);
+            // 在列表中目标位置增加新的节点
+            newItems.splice(this.newIndex, 0, this.oldData);
+            this.unitJson[this.unitIndex].chapterInfo[0].taskJson = [...newItems];
+            this.typeIndex = "";
+            this.newIndex = "";
+            this.$forceUpdate();
+          })
+          .catch(() => {
+            this.typeIndex = "";
+            this.newIndex = "";
+            return;
+          });
+        }else{
           let newItems = [
-            ...this.unitJson[this.unitIndex].chapterInfo[0].taskJson,
-          ];
-          // 删除老的节点
-          newItems.splice(this.oldIndex, 1);
-          // 在列表中目标位置增加新的节点
-          newItems.splice(this.newIndex, 0, this.oldData);
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson = [...newItems];
-          this.typeIndex = "";
-          this.newIndex = "";
-          this.$forceUpdate();
-        })
-        .catch(() => {
-          this.typeIndex = "";
-          this.newIndex = "";
-          return;
-        });
+              ...this.unitJson[this.unitIndex].chapterInfo[0].taskJson,
+            ];
+            // 删除老的节点
+            newItems.splice(this.oldIndex, 1);
+            // 在列表中目标位置增加新的节点
+            newItems.splice(this.newIndex, 0, this.oldData);
+            this.unitJson[this.unitIndex].chapterInfo[0].taskJson = [...newItems];
+            this.typeIndex = "";
+            this.newIndex = "";
+            this.$forceUpdate();
+        }
     },
+    getWorksCount(type, stage, task, tool){
+      return new Promise((resolve, reject) => {
+        let params = [
+          {
+            cid: this.cid,
+            stage: stage,
+            task: task,
+            tool: tool,
+            type: type
+          },
+        ];
+        this.ajax
+          .post(this.$store.state.api + "getCourseWorkCount", params)
+          .then((res) => {
+            let count = res.data[0][0].count
+            resolve(count)
+          })
+          .catch((err) => {
+            resolve(0)
+            this.$message.error("网络不佳");
+            console.error(err);
+          });
+      });
+      
+    }
   },
   beforeDestroy() {
     clearTimeout(this.timer);
@@ -14914,7 +15003,7 @@ export default {
 .chapter_upload_up2::before,
 .chapter_upload_down2::before {
   content: "";
-  background-image: url("../../../assets/icon/new/c_up.png");
+  background-image: url("../../../assets/icon/new/c_down.png");
   width: 14px;
   height: 14px;
   background-size: 100% 100%;
@@ -14923,7 +15012,7 @@ export default {
 }
 
 .chapter_upload_up2::before {
-  background-image: url("../../../assets/icon/new/c_down.png") !important;
+  background-image: url("../../../assets/icon/new/c_up.png") !important;
 }
 
 .addWordStyle {
@@ -16847,15 +16936,15 @@ ol {
   cursor: pointer;
   background: #ffffff;
   width: 95%;
-  margin: 10px auto 0;
+  margin: 5px auto 5px;
   box-sizing: border-box;
   border-radius: 5px;
   flex-wrap: wrap;
   position: relative;
 }
 
-.navTask::before {
-  content: "";
+.navTask .chapter_upload_open {
+  content: '';
   display: block;
   width: 16px;
   height: 16px;
@@ -16864,19 +16953,25 @@ ol {
   margin-left: 23px;
 }
 
-.isNavOpen::before {
+.noImage .chapter_upload_open {
+  display: none;
+  background-image: unset !important;
+}
+
+.isNavOpen .chapter_upload_open {
   /* background-image: url(../../assets/icon/new/icon_arrow_a.png) !important; */
   transform: rotate(90deg);
 }
 
-.isNavTask::before {
+.isNavTask .chapter_upload_open {
   background-image: url(../../../assets/icon/new/icon_arrow_a.png) !important;
   transform: rotate(-90deg);
 }
 
-.isNavTask.isNavOpen::before{
+.isNavTask.isNavOpen .chapter_upload_open{
   transform: rotate(0deg);
 }
+
 .dragOverTop {
   border-top: 2px solid #0061ff !important;
   border-radius: 0 !important;

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio