lsc 1 anno fa
parent
commit
1d24d4b753

+ 1 - 1
dist/index.html

@@ -25,7 +25,7 @@
       height: 100%;
       width: 100%;
       background: #e6eaf0;
-    }</style><link href=./static/css/app.c2a55430a86f24592e02087bdde57130.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.1b8e037bd3fbbd358d74.js></script><script type=text/javascript src=./static/js/app.e59ab3c1c3b41f20e57c.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.5313d09f1a13adbe83f39d9f36e7fb96.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.1b8e037bd3fbbd358d74.js></script><script type=text/javascript src=./static/js/app.69c867418a13eb0913aa.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.5313d09f1a13adbe83f39d9f36e7fb96.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.5313d09f1a13adbe83f39d9f36e7fb96.css.map


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.c2a55430a86f24592e02087bdde57130.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.c2a55430a86f24592e02087bdde57130.css.map


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.69c867418a13eb0913aa.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.69c867418a13eb0913aa.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.e59ab3c1c3b41f20e57c.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/manifest.3512a67a6213c2df4180.js.map


+ 71 - 17
src/components/pages/addCourse.vue

@@ -1500,7 +1500,7 @@
                                   <div class="tool">
                                     <div class="whiteBIcon" @click="openTools(itemTaskIndex, 41, toolIndex)">
                                       <img src="../../assets/icon/thirdToolList/select.png" alt />
-                                      <div style="margin: 5px 0">选择填空</div>
+                                      <div style="margin: 5px 0">选择匹配</div>
                                     </div>
                                     <div class="check" @click="addTools(41, itemTaskIndex, toolIndex)">
                                       <img src="../../assets/icon/checkNo.png" alt
@@ -1513,7 +1513,7 @@
                                   <div class="tool">
                                     <div class="whiteBIcon" @click="openTools(itemTaskIndex, 47, toolIndex)">
                                       <img src="../../assets/icon/fourthToolList/conSentences.png" alt />
-                                      <div style="margin: 5px 0">连词成句</div>
+                                      <div style="margin: 5px 0">排序</div>
                                     </div>
                                     <div class="check" @click="addTools(47, itemTaskIndex, toolIndex)">
                                       <img src="../../assets/icon/checkNo.png" alt
@@ -2046,7 +2046,7 @@
                                   <div class="tool">
                                     <div class="whiteBIcon" @click="openTools(itemTaskIndex, 41, toolIndex)">
                                       <img src="../../assets/icon/thirdToolList/select.png" alt />
-                                      <div style="margin: 5px 0">选择填空</div>
+                                      <div style="margin: 5px 0">选择匹配</div>
                                     </div>
                                     <div class="check" @click="addTools(41, itemTaskIndex, toolIndex)">
                                       <img src="../../assets/icon/checkNo.png" alt
@@ -2059,7 +2059,7 @@
                                   <div class="tool">
                                     <div class="whiteBIcon" @click="openTools(itemTaskIndex, 47, toolIndex)">
                                       <img src="../../assets/icon/fourthToolList/conSentences.png" alt />
-                                      <div style="margin: 5px 0">连词成句</div>
+                                      <div style="margin: 5px 0">排序</div>
                                     </div>
                                     <div class="check" @click="addTools(47, itemTaskIndex, toolIndex)">
                                       <img src="../../assets/icon/checkNo.png" alt
@@ -3026,13 +3026,13 @@
         <el-button type="primary">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="选择填空" :visible.sync="dialogVisibleSelect" :append-to-body="true" width="800px"
+    <el-dialog title="选择匹配" :visible.sync="dialogVisibleSelect" :append-to-body="true" width="800px"
       :before-close="handleClose" class="dialog_diy dialog_diy3">
       <div v-if="selectJson">
         <div class="select_box1" v-if="selectSteps == 1">
           <div class="select_box1_img">
             <div class="select_box1_title">
-              <span>上传题目图片</span><span>提示:请将题目以图片的方式上传</span>
+              <span>上传题目图片</span><span>提示:请将所有题目上传为一张图片。</span>
             </div>
             <div class="select_box1_add_img">
               <div class="uploadFm" @click="addImg($event)" v-if="!selectJson.url">
@@ -3040,7 +3040,7 @@
                 <img src="../../assets/icon/addPoster.png" alt="" />
               </div>
               <div class="isSysPic" v-else>
-                <img :src="selectJson.url" alt="" />
+                <img :src="selectJson.url" alt=""  @click="previewImg(selectJson.url)"/>
                 <div class="deletePic" @click="deleteSelectPic">
                   <img src="../../assets/icon/delete.png" alt="" />
                 </div>
@@ -3049,7 +3049,7 @@
           </div>
           <div class="select_box1_select">
             <div class="select_box1_title">
-              <span>添加选项</span><span>提示:请输入题目选项</span>
+              <span>添加选项</span><span>提示:请输入以上题目的选项内容,此选项为所有题目共享。</span>
             </div>
             <div class="select_box1_select_box">
               <el-input v-for="(item2, checkIndex) in selectJson.select" :key="checkIndex"
@@ -3066,10 +3066,10 @@
         </div>
         <div v-if="selectSteps == 2">
           <div class="select_box2">
-            <div class="select_box2_title">设置答案</div>
+            <div class="select_box2_title">设置每道题目的正确选项</div>
             <div class="select_box2_box">
               <div class="select_box2_img">
-                <img :src="selectJson.url" alt="" />
+                <img :src="selectJson.url" alt=""  @click="previewImg(selectJson.url)"/>
               </div>
               <div class="select_box2_answer">
                 <div class="select_answer_title">根据题目选择对应答案</div>
@@ -3129,9 +3129,9 @@
       <div>
         <div class="sentenBox">
           <div class="addSen" @click="addSt">添加题目</div>
-          <div v-for="(st, stIndex) in sentenceList" :key="stIndex" style="padding-bottom: 20px">
+          <div v-for="(st, stIndex) in sentenceList" :key="stIndex" class="sentenContent">
             <div class="sentenTopBox">
-              <div class="sentenTop">
+              <div class="sentenTop" :index="stIndex+1">
                 <div>题目设置</div>
                 <div>
                   <el-input placeholder="请输入卡片内容" v-model="st.sentenceTitle"></el-input>
@@ -3318,7 +3318,7 @@
             <span class="groupn">第{{ index + 1 }}组名称:</span>
             <el-input v-model="item.name" placeholder="请输入名称..." style="width: 250px"></el-input>
             <div class="groupBtn">
-              <el-button type="primary" size="small" @click="addGroup(index)">
+              <el-button type="primary" size="small" @click="addGroup(index)" v-if="groupJson.group.length - 1 == index">
                 添加</el-button>
               <el-button type="primary" size="small" @click="deleteGroup(index)"
                 v-if="groupJson.group && groupJson.group.length > 1">删除</el-button>
@@ -4272,7 +4272,6 @@ export default {
     },
     deleteSentence(i) {
       var _this = this;
-      if (_this.time()) {
         _this
           .$confirm("确定删除此题目吗?", "提示", {
             confirmButtonText: "确定",
@@ -4286,7 +4285,6 @@ export default {
           .catch(() => {
             return;
           });
-      }
     },
     deleteS(s, i, j) {
       this.sentenceList[i].addSentence.splice(j, 1);
@@ -6949,9 +6947,9 @@ export default {
             }
             if (
               (aj[i].type == "2" && !aj[i].answer.length) ||
-              (aj[i].type == "1" && aj[i].answer !== 0 && !aj[i].answer)
+              (aj[i].type == "1" && ((typeof aj[i].answer == 'object' && !aj[i].answer.length) || (aj[i].answer !== 0 && !aj[i].answer)))
             ) {
-              this.$message.error("有题目未选择答案请选择答案");
+              this.$message.error(`题目${i+1},未设置正确选项,请设置。`);
               return;
             }
           }
@@ -7282,6 +7280,17 @@ export default {
       if (!this.selectJson.select.length) {
         this.$message.error("请添加选项");
         return;
+      }else{
+        for (var z = 0; z < this.selectJson.select.length; z++) {  
+          let checkC = this.selectJson.select[z];
+          for (var z2 = z+1; z2 < this.selectJson.select.length; z2++) {  
+            let checkC2 = this.selectJson.select[z2];
+              if (checkC == checkC2) {  
+                this.$message.error(`选项${z+1}和选项${z2+1}重复了,请修改!`);
+                return;
+              }  
+            } 
+          } 
       }
       var a = 1;
       for (var i = 0; i < this.selectJson.select.length; i++) {
@@ -8038,6 +8047,14 @@ export default {
       });
     },
     addSen(i) {
+      if(!this.sentenceList[i].sentenceTitle){
+        this.$message.error("请填写卡片内容!");
+        return;
+      }
+      if(this.sentenceList[i].addSentence.indexOf(this.sentenceList[i].sentenceTitle) !== -1){
+        this.$message.error("不能添加重复的卡片内容!");
+        return;
+      }
       this.sentenceList[i].addSentence.push(this.sentenceList[i].sentenceTitle);
       // this.isPushTitleList.push(this.sentenceTitle);
       this.sentenceList[i].sentenceTitle = "";
@@ -11375,6 +11392,17 @@ ol {
   background-size: 60%;
 }
 
+.sentenBox > .sentenContent{
+  padding-bottom: 10px;
+  width: 97%;
+  margin: 0 auto;
+}
+
+.sentenBox > .sentenContent + .sentenContent{
+  border-top: 1px solid #cbcbcb;
+}
+
+
 .addSen {
   background: #409efe;
   width: 90px;
@@ -11395,6 +11423,20 @@ ol {
   align-items: center;
 }
 
+.sentenTop::before{
+  content:attr(index);
+  background: #3681fc;
+  border-radius: 50%;
+  color: #fff;
+  width: 25px;
+  height: 25px;
+  min-width: 25px;
+  min-height: 25px;
+  text-align: center;
+  line-height: 25px;
+  margin-right: 5px;
+}
+
 .sentenTop>div:nth-child(2) {
   width: 300px;
   margin: 0 15px;
@@ -11858,4 +11900,16 @@ ol {
   flex-direction: column;
   width: fit-content;
   margin: 0 10px 0 10px;
+}
+
+.moveBtn2 .chapter_upload_down,
+.moveBtn2 .chapter_upload_up{
+  width: 16px;
+  height: 16px;
+}
+
+.moveBtn2 .chapter_upload_up::after, 
+.moveBtn2 .chapter_upload_down::after{
+  width: 10px;
+  height: 10px;
 }</style>

+ 2 - 2
src/components/pages/addCourseGM.vue

@@ -1071,7 +1071,7 @@
                                   src="../../assets/icon/thirdToolList/select.png"
                                   alt
                                 />
-                                <div style="margin: 5px 0">选择填空</div>
+                                <div style="margin: 5px 0">选择匹配</div>
                               </div>
                               <div
                                 class="check"
@@ -1945,7 +1945,7 @@
         <el-button type="primary" class="confirm_button">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="选择填空" :visible.sync="dialogVisibleSelect" :append-to-body="true" width="800px"
+    <el-dialog title="选择匹配" :visible.sync="dialogVisibleSelect" :append-to-body="true" width="800px"
       :before-close="handleClose" class="dialog_diy dialog_diy3">
       <div v-if="selectJson">
         <div class="select_box1" v-if="selectSteps == 1">

+ 4 - 4
src/components/pages/components/classStudentComponents/worksDetail3.vue

@@ -624,7 +624,7 @@
                         flex-wrap: wrap;
                       "
                     >
-                      <div style="font-size: 16px">选择填空工具</div>
+                      <div style="font-size: 16px">选择匹配工具</div>
                     </div>
                     <div class="select_box2_box">
                       <div class="select_box2_img">
@@ -737,7 +737,7 @@
                           flex-wrap: wrap;
                         "
                       >
-                        <div style="font-size: 16px">连词成句工具</div>
+                        <div style="font-size: 16px">排序工具</div>
                       </div>
                       <div
                         v-for="(st, stIndex) in worksDetail[sIndex].lccjInfo"
@@ -1528,8 +1528,8 @@ export default {
           var pptInfo = res.data[5];
           var chooseInfo = res.data[6];
           var pjInfo = res.data[7]; //个人评价作业
-          var xztkInfo = res.data[8]; //选择填空作业
-          var lccjInfo = res.data[9]; //连词成句作业
+          var xztkInfo = res.data[8]; //选择匹配作业
+          var lccjInfo = res.data[9]; //排序作业
           var bgInfo = res.data[10]; //表格作业
           var cocopiInfo = res.data[11]; //cocopi或源码编辑作业
           var wordInfo = res.data[12]; //文档作业

+ 2 - 2
src/components/pages/components/report.vue

@@ -120,8 +120,8 @@ export default {
           this.wordList = res.data[5];
           this.chooseInfo = res.data[6];
           this.pjInfo = res.data[7]; //个人评价作业
-          this.xztkInfo = res.data[8]; //选择填空作业
-          this.lccjInfo = res.data[9]; //连词成句作业
+          this.xztkInfo = res.data[8]; //选择匹配作业
+          this.lccjInfo = res.data[9]; //排序作业
           this.bgInfo = res.data[10]; //表格作业
           this.cocopiInfo = res.data[11]; //cocopi或源码编辑作业
           this.wordInfo = res.data[12]; //文档作业

+ 7 - 7
src/components/pages/components/studentWorksDetail.vue

@@ -878,7 +878,7 @@
                               flex-wrap: wrap;
                             "
                           >
-                            <div style="font-size: 16px">选择填空工具</div>
+                            <div style="font-size: 16px">选择匹配工具</div>
                           </div>
                           <div class="select_box2_box">
                             <div class="select_box2_img">
@@ -995,7 +995,7 @@
                                 flex-wrap: wrap;
                               "
                             >
-                              <div style="font-size: 16px">连词成句工具</div>
+                              <div style="font-size: 16px">排序工具</div>
                             </div>
                             <div
                               v-for="(st, stIndex) in worksDetail[sIndex]
@@ -1902,8 +1902,8 @@ export default {
           var pptInfo = res.data[5];
           var chooseInfo = res.data[6];
           var pjInfo = res.data[7]; //个人评价作业
-          var xztkInfo = res.data[8]; //选择填空作业
-          var lccjInfo = res.data[9]; //连词成句作业
+          var xztkInfo = res.data[8]; //选择匹配作业
+          var lccjInfo = res.data[9]; //排序作业
           var bgInfo = res.data[10]; //表格作业
           var cocopiInfo = res.data[11]; //cocopi或源码编辑作业
           var wordInfo = res.data[12]; //文档作业
@@ -2592,8 +2592,8 @@ export default {
           var linkInfo = res.data[5];
           var chooseInfo = res.data[6];
           var pjInfo = res.data[7]; //个人评价作业
-          var xztkInfo = res.data[8]; //选择填空作业
-          var lccjInfo = res.data[9]; //连词成句作业
+          var xztkInfo = res.data[8]; //选择匹配作业
+          var lccjInfo = res.data[9]; //排序作业
           var bgInfo = res.data[10]; //表格作业
           var cocopiInfo = res.data[11]; //cocopi或源码编辑作业
           var wordInfo = res.data[12]; //文档作业
@@ -3081,7 +3081,7 @@ export default {
 
           var _lccjInfo = "";
           if (workJson.lccjInfo.length > 0) {
-            var _lccjInfo = "<h3>连词成句<h3>";
+            var _lccjInfo = "<h3>排序<h3>";
             for (var i = 0; i < workJson.lccjInfo.length; i++) {
               var _div = document.createElement("div");
               _div.innerHTML = `<h4>第一题${workJson.lccjInfo[i].lccjInfo.sentenceTitle}</h4> `;

+ 7 - 7
src/components/pages/components/worksDetail2.vue

@@ -881,7 +881,7 @@
                               flex-wrap: wrap;
                             "
                           >
-                            <div style="font-size: 16px">选择填空工具</div>
+                            <div style="font-size: 16px">选择匹配工具</div>
                           </div>
                           <div class="select_box2_box">
                             <div class="select_box2_img">
@@ -998,7 +998,7 @@
                                 flex-wrap: wrap;
                               "
                             >
-                              <div style="font-size: 16px">连词成句工具</div>
+                              <div style="font-size: 16px">排序工具</div>
                             </div>
                             <div
                               v-for="(st, stIndex) in worksDetail[sIndex]
@@ -1906,8 +1906,8 @@ export default {
           var pptInfo = res.data[5];
           var chooseInfo = res.data[6];
           var pjInfo = res.data[7]; //个人评价作业
-          var xztkInfo = res.data[8]; //选择填空作业
-          var lccjInfo = res.data[9]; //连词成句作业
+          var xztkInfo = res.data[8]; //选择匹配作业
+          var lccjInfo = res.data[9]; //排序作业
           var bgInfo = res.data[10]; //表格作业
           var cocopiInfo = res.data[11]; //cocopi或源码编辑作业
           var wordInfo = res.data[12]; //文档作业
@@ -2891,8 +2891,8 @@ export default {
           var linkInfo = res.data[5];
           var chooseInfo = res.data[6];
           var pjInfo = res.data[7]; //个人评价作业
-          var xztkInfo = res.data[8]; //选择填空作业
-          var lccjInfo = res.data[9]; //连词成句作业
+          var xztkInfo = res.data[8]; //选择匹配作业
+          var lccjInfo = res.data[9]; //排序作业
           var bgInfo = res.data[10]; //表格作业
           var cocopiInfo = res.data[11]; //cocopi或源码编辑作业
           var wordInfo = res.data[12]; //文档作业
@@ -3380,7 +3380,7 @@ export default {
 
           var _lccjInfo = "";
           if (workJson.lccjInfo.length > 0) {
-            var _lccjInfo = "<h3>连词成句<h3>";
+            var _lccjInfo = "<h3>排序<h3>";
             for (var i = 0; i < workJson.lccjInfo.length; i++) {
               var _div = document.createElement("div");
               _div.innerHTML = `<h4>第一题${workJson.lccjInfo[i].lccjInfo.sentenceTitle}</h4> `;

+ 4 - 4
src/components/pages/components/worksDetail3.vue

@@ -624,7 +624,7 @@
                         flex-wrap: wrap;
                       "
                     >
-                      <div style="font-size: 16px">选择填空工具</div>
+                      <div style="font-size: 16px">选择匹配工具</div>
                     </div>
                     <div class="select_box2_box">
                       <div class="select_box2_img">
@@ -737,7 +737,7 @@
                           flex-wrap: wrap;
                         "
                       >
-                        <div style="font-size: 16px">连词成句工具</div>
+                        <div style="font-size: 16px">排序工具</div>
                       </div>
                       <div
                         v-for="(st, stIndex) in worksDetail[sIndex].lccjInfo"
@@ -1528,8 +1528,8 @@ export default {
           var pptInfo = res.data[5];
           var chooseInfo = res.data[6];
           var pjInfo = res.data[7]; //个人评价作业
-          var xztkInfo = res.data[8]; //选择填空作业
-          var lccjInfo = res.data[9]; //连词成句作业
+          var xztkInfo = res.data[8]; //选择匹配作业
+          var lccjInfo = res.data[9]; //排序作业
           var bgInfo = res.data[10]; //表格作业
           var cocopiInfo = res.data[11]; //cocopi或源码编辑作业
           var wordInfo = res.data[12]; //文档作业

+ 45 - 7
src/components/pages/course.vue

@@ -29,7 +29,7 @@
       </div>
       <div class="reBox">
         <div class="reTop">
-          <div>分类筛选</div>
+          <!-- <div>分类筛选</div> -->
           <div class="reTopCh">
             <el-select v-model="groupA" @change="search" v-if="role == '1'">
               <el-option value="4" label="全部"></el-option>
@@ -52,7 +52,7 @@
           </div>
         </div>
         <div class="pType_box all_choose" v-if="oid == '69893dca-1d47-11ed-8c78-005056b86db5'">
-          <span>类型</span>
+          <span><span>类型</span></span>
           <el-radio-group v-model="pTypeCheckName" style="display: flex; align-items: center">
             <div class="all_choose" style="width: 100px" v-for="(item, index) in CourseType2" :key="index">
               <el-radio :label="item.name" @click.native.prevent="CourseType2Click(item.name)">{{ item.name }}</el-radio>
@@ -66,7 +66,7 @@
               (oid == '69893dca-1d47-11ed-8c78-005056b86db5'
                 ? pTypeCheck.indexOf(item.id) != -1
                 : true)
-              ">{{ item.name }}:</span>
+              "><span>{{ item.name }}</span></span>
             <div class="typeCss" v-if="CourseTypeJson[item.id].length &&
               (oid == '69893dca-1d47-11ed-8c78-005056b86db5'
                 ? pTypeCheck.indexOf(item.id) != -1
@@ -87,6 +87,37 @@
               </div>
             </div>
           </div>
+          <div class="all_choose"  v-if="role == '1'">
+            <span><span>所有者</span></span>
+            <div class="typeCss">
+              <div class="cName" :class="groupA == '4' ? 'isCType' : ''" @click="groupA = '4';search();">
+                全部
+              </div>
+              <div class="cName" :class="groupA == '2' ? 'isCType' : ''" @click="groupA = '2';search();">
+                我的课程
+              </div>
+              <div class="cName" :class="groupA == '3' ? 'isCType' : ''" @click="groupA = '3';search();">
+                协同课程
+              </div>
+              <div class="cName" :class="groupA == '1' ? 'isCType' : ''" @click="groupA = '1';search();">
+                他人课程
+              </div>
+            </div>
+          </div>
+          <div class="all_choose" v-else>
+            <span><span>所有者</span></span>
+            <div class="typeCss">
+              <div class="cName" :class="groupA == '0' ? 'isCType' : ''" @click="groupA = '0';search();">
+                全部
+              </div>
+              <div class="cName" :class="groupA == '2' ? 'isCType' : ''" @click="groupA = '2';search();">
+                我的课程
+              </div>
+              <div class="cName" :class="groupA == '3' ? 'isCType' : ''" @click="groupA = '3';search();">
+                协同课程
+              </div>
+            </div>
+          </div>
         </div>
       </div>
     </div>
@@ -1769,11 +1800,18 @@ export default {
   margin: 2px 0;
   width: 100%;
 }
-
-.all_choose>span {
-  min-width: 80px;
+.all_choose>span{
+  display: flex;
+  margin-right: 5px;
+}
+.all_choose>span>span {
+  min-width: 65px;
+  max-width: 65px;
   display: block;
-  letter-spacing: 14px;
+  text-align-last: justify;
+}
+.all_choose>span::after{
+  content: ':';
 }
 
 .all_choose>span:nth-child(1) {

+ 72 - 21
src/components/pages/easy/addCourse.vue

@@ -931,7 +931,7 @@
                                     openTools(itemTaskIndex, 41, toolIndex)
                                     ">
                                     <img src="../../../assets/icon/thirdToolList/select.png" alt />
-                                    <div style="margin: 5px 0">选择填空</div>
+                                    <div style="margin: 5px 0">选择匹配</div>
                                   </div>
                                   <div class="check" @click="
                                     addTools(41, itemTaskIndex, toolIndex)
@@ -948,7 +948,7 @@
                                     openTools(itemTaskIndex, 47, toolIndex)
                                     ">
                                     <img src="../../../assets/icon/fourthToolList/conSentences.png" alt />
-                                    <div style="margin: 5px 0">连词成句</div>
+                                    <div style="margin: 5px 0">排序</div>
                                   </div>
                                   <div class="check" @click="
                                     addTools(47, itemTaskIndex, toolIndex)
@@ -2595,7 +2595,7 @@
                             <div class="tool">
                               <div class="whiteBIcon" @click="openTools(itemTaskIndex, 41, toolIndex)">
                                 <img src="../../../assets/icon/thirdToolList/select.png" alt />
-                                <div style="margin: 5px 0">选择填空</div>
+                                <div style="margin: 5px 0">选择匹配</div>
                               </div>
                               <div class="check" @click="addTools(41, itemTaskIndex, toolIndex)">
                                 <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(41) == -1" />
@@ -2607,7 +2607,7 @@
                             <div class="tool">
                               <div class="whiteBIcon" @click="openTools(itemTaskIndex, 47, toolIndex)">
                                 <img src="../../../assets/icon/fourthToolList/conSentences.png" alt />
-                                <div style="margin: 5px 0">连词成句</div>
+                                <div style="margin: 5px 0">排序</div>
                               </div>
                               <div class="check" @click="addTools(47, itemTaskIndex, toolIndex)">
                                 <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(47) == -1" />
@@ -3039,7 +3039,7 @@
                             <div class="tool">
                               <div class="whiteBIcon" @click="openTools(itemTaskIndex, 41, toolIndex)">
                                 <img src="../../../assets/icon/thirdToolList/select.png" alt />
-                                <div style="margin: 5px 0">选择填空</div>
+                                <div style="margin: 5px 0">选择匹配</div>
                               </div>
                               <div class="check" @click="addTools(41, itemTaskIndex, toolIndex)">
                                 <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(41) == -1" />
@@ -3051,7 +3051,7 @@
                             <div class="tool">
                               <div class="whiteBIcon" @click="openTools(itemTaskIndex, 47, toolIndex)">
                                 <img src="../../../assets/icon/fourthToolList/conSentences.png" alt />
-                                <div style="margin: 5px 0">连词成句</div>
+                                <div style="margin: 5px 0">排序</div>
                               </div>
                               <div class="check" @click="addTools(47, itemTaskIndex, toolIndex)">
                                 <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(47) == -1" />
@@ -3964,13 +3964,13 @@
         <el-button type="primary">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="选择填空" :visible.sync="dialogVisibleSelect" :append-to-body="true" width="800px"
+    <el-dialog title="选择匹配" :visible.sync="dialogVisibleSelect" :append-to-body="true" width="800px"
       :before-close="handleClose" class="dialog_diy dialog_diy3">
       <div v-if="selectJson">
         <div class="select_box1" v-if="selectSteps == 1">
           <div class="select_box1_img">
             <div class="select_box1_title">
-              <span>上传题目图片</span><span>提示:请将题目以图片的方式上传</span>
+              <span>上传题目图片</span><span>提示:请将所有题目上传为一张图片。</span>
             </div>
             <div class="select_box1_add_img">
               <div class="uploadFm" @click="addImg($event)" v-if="!selectJson.url">
@@ -3978,7 +3978,7 @@
                 <img src="../../../assets/icon/addPoster.png" alt="" />
               </div>
               <div class="isSysPic" v-else>
-                <img :src="selectJson.url" alt="" />
+                <img :src="selectJson.url" alt="" @click="previewImg(selectJson.url)"/>
                 <div class="deletePic" @click="deleteSelectPic">
                   <img src="../../../assets/icon/delete.png" alt="" />
                 </div>
@@ -3987,7 +3987,7 @@
           </div>
           <div class="select_box1_select">
             <div class="select_box1_title">
-              <span>添加选项</span><span>提示:请输入题目选项</span>
+              <span>添加选项</span><span>提示:请输入以上题目的选项内容,此选项为所有题目共享。</span>
             </div>
             <div class="select_box1_select_box">
               <el-input v-for="(item2, checkIndex) in selectJson.select" :key="checkIndex"
@@ -4004,10 +4004,10 @@
         </div>
         <div v-if="selectSteps == 2">
           <div class="select_box2">
-            <div class="select_box2_title">设置答案</div>
+            <div class="select_box2_title">设置每道题目的正确选项</div>
             <div class="select_box2_box">
               <div class="select_box2_img">
-                <img :src="selectJson.url" alt="" />
+                <img :src="selectJson.url" alt=""  @click="previewImg(selectJson.url)"/>
               </div>
               <div class="select_box2_answer">
                 <div class="select_answer_title">根据题目选择对应答案</div>
@@ -4067,9 +4067,9 @@
       <div>
         <div class="sentenBox">
           <div class="addSen" @click="addSt">添加题目</div>
-          <div v-for="(st, stIndex) in sentenceList" :key="stIndex" style="padding-bottom: 20px">
+          <div v-for="(st, stIndex) in sentenceList" :key="stIndex" class="sentenContent">
             <div class="sentenTopBox">
-              <div class="sentenTop">
+              <div class="sentenTop" :index="stIndex+1">
                 <div>题目设置</div>
                 <div>
                   <el-input placeholder="请输入卡片内容" v-model="st.sentenceTitle"></el-input>
@@ -4256,7 +4256,7 @@
             <span class="groupn">第{{ index + 1 }}组名称:</span>
             <el-input v-model="item.name" placeholder="请输入名称..." style="width: 250px"></el-input>
             <div class="groupBtn">
-              <el-button type="primary" size="small" @click="addGroup(index)">
+              <el-button type="primary" size="small" @click="addGroup(index)" v-if="groupJson.group.length - 1 == index">
                 添加</el-button>
               <el-button type="primary" size="small" @click="deleteGroup(index)"
                 v-if="groupJson.group && groupJson.group.length > 1">删除</el-button>
@@ -4988,7 +4988,6 @@ export default {
     },
     deleteSentence(i) {
       var _this = this;
-      if (_this.time()) {
         _this
           .$confirm("确定删除此题目吗?", "提示", {
             confirmButtonText: "确定",
@@ -5002,7 +5001,6 @@ export default {
           .catch(() => {
             return;
           });
-      }
     },
     deleteS(s, i, j) {
       this.sentenceList[i].addSentence.splice(j, 1);
@@ -7684,9 +7682,9 @@ export default {
             }
             if (
               (aj[i].type == "2" && !aj[i].answer.length) ||
-              (aj[i].type == "1" && aj[i].answer !== 0 && !aj[i].answer)
+              (aj[i].type == "1" && ((typeof aj[i].answer == 'object' && !aj[i].answer.length) || (aj[i].answer !== 0 && !aj[i].answer)))
             ) {
-              this.$message.error("有题目未选择答案请选择答案");
+              this.$message.error(`题目${i+1},未设置正确选项,请设置。`);
               return;
             }
           }
@@ -7994,6 +7992,17 @@ export default {
       if (!this.selectJson.select.length) {
         this.$message.error("请添加选项");
         return;
+      }else{
+        for (var z = 0; z < this.selectJson.select.length; z++) {  
+          let checkC = this.selectJson.select[z];
+          for (var z2 = z+1; z2 < this.selectJson.select.length; z2++) {  
+            let checkC2 = this.selectJson.select[z2];
+              if (checkC == checkC2) {  
+                this.$message.error(`选项${z+1}和选项${z2+1}重复了,请修改!`);
+                return;
+              }  
+            } 
+          } 
       }
       var a = 1;
       for (var i = 0; i < this.selectJson.select.length; i++) {
@@ -8750,6 +8759,14 @@ export default {
       });
     },
     addSen(i) {
+      if(!this.sentenceList[i].sentenceTitle){
+        this.$message.error("请填写卡片内容!");
+        return;
+      }
+      if(this.sentenceList[i].addSentence.indexOf(this.sentenceList[i].sentenceTitle) !== -1){
+        this.$message.error("不能添加重复的卡片内容!");
+        return;
+      }
       this.sentenceList[i].addSentence.push(this.sentenceList[i].sentenceTitle);
       // this.isPushTitleList.push(this.sentenceTitle);
       this.sentenceList[i].sentenceTitle = "";
@@ -11971,6 +11988,16 @@ ol {
   background-size: 60%;
 }
 
+.sentenBox > .sentenContent{
+  padding-bottom: 10px;
+  width: 97%;
+  margin: 0 auto;
+}
+
+.sentenBox > .sentenContent + .sentenContent{
+  border-top: 1px solid #cbcbcb;
+}
+
 .addSen {
   background: #409efe;
   width: 90px;
@@ -11990,7 +12017,19 @@ ol {
   flex-wrap: nowrap;
   align-items: center;
 }
-
+.sentenTop::before{
+  content:attr(index);
+  background: #3681fc;
+  border-radius: 50%;
+  color: #fff;
+  width: 25px;
+  height: 25px;
+  min-width: 25px;
+  min-height: 25px;
+  text-align: center;
+  line-height: 25px;
+  margin-right: 5px;
+}
 .sentenTop>div:nth-child(2) {
   width: 300px;
   margin: 0 15px;
@@ -12008,7 +12047,7 @@ ol {
 }
 
 .cardList {
-  padding: 30px 0 20px 0;
+  padding: 20px 0 20px 0;
   display: flex;
   flex-direction: row;
   flex-wrap: wrap;
@@ -12430,4 +12469,16 @@ ol {
   width: fit-content;
   margin: 0 10px 0 10px;
 }
+
+.moveBtn2 .chapter_upload_down,
+.moveBtn2 .chapter_upload_up{
+  width: 16px;
+  height: 16px;
+}
+
+.moveBtn2 .chapter_upload_up::after, 
+.moveBtn2 .chapter_upload_down::after{
+  width: 10px;
+  height: 10px;
+}
 </style>

+ 4 - 4
src/components/pages/myReport/components/MyLookComponent/worksDetail3.vue

@@ -624,7 +624,7 @@
                         flex-wrap: wrap;
                       "
                     >
-                      <div style="font-size: 16px">选择填空工具</div>
+                      <div style="font-size: 16px">选择匹配工具</div>
                     </div>
                     <div class="select_box2_box">
                       <div class="select_box2_img">
@@ -737,7 +737,7 @@
                           flex-wrap: wrap;
                         "
                       >
-                        <div style="font-size: 16px">连词成句工具</div>
+                        <div style="font-size: 16px">排序工具</div>
                       </div>
                       <div
                         v-for="(st, stIndex) in worksDetail[sIndex].lccjInfo"
@@ -1527,8 +1527,8 @@ export default {
           var pptInfo = res.data[5];
           var chooseInfo = res.data[6];
           var pjInfo = res.data[7]; //个人评价作业
-          var xztkInfo = res.data[8]; //选择填空作业
-          var lccjInfo = res.data[9]; //连词成句作业
+          var xztkInfo = res.data[8]; //选择匹配作业
+          var lccjInfo = res.data[9]; //排序作业
           var bgInfo = res.data[10]; //表格作业
           var cocopiInfo = res.data[11]; //cocopi或源码编辑作业
           var wordInfo = res.data[12]; //文档作业

+ 2 - 2
src/components/pages/student/addCourse.vue

@@ -1769,7 +1769,7 @@
         <el-button type="primary">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="选择填空" :visible.sync="dialogVisibleSelect" :append-to-body="true" width="800px"
+    <el-dialog title="选择匹配" :visible.sync="dialogVisibleSelect" :append-to-body="true" width="800px"
       :before-close="handleClose" class="dialog_diy dialog_diy3">
       <div v-if="selectJson">
         <div class="select_box1" v-if="selectSteps == 1">
@@ -1869,7 +1869,7 @@
         <el-button type="primary" @click="addRateAnswer">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="连词成句设置" :visible.sync="dialogVisibleSentence" :append-to-body="true" width="1000px"
+    <el-dialog title="排序设置" :visible.sync="dialogVisibleSentence" :append-to-body="true" width="1000px"
       :before-close="handleClose" class="dialog_diy dialog_diy3">
       <div>
         <div class="sentenBox">

+ 2 - 2
src/components/pages/studio/addCourse.vue

@@ -2716,7 +2716,7 @@
       </span>
     </el-dialog>
     <el-dialog
-      title="选择填空"
+      title="选择匹配"
       :visible.sync="dialogVisibleSelect"
       :append-to-body="true"
       width="800px"
@@ -2899,7 +2899,7 @@
       </span>
     </el-dialog>
     <el-dialog
-      title="连词成句设置"
+      title="排序设置"
       :visible.sync="dialogVisibleSentence"
       :append-to-body="true"
       width="1000px"

+ 72 - 19
src/components/pages/task/addCourse.vue

@@ -1318,7 +1318,7 @@
                                       src="../../../assets/icon/thirdToolList/select.png"
                                       alt
                                     />
-                                    <div style="margin: 5px 0">选择填空</div>
+                                    <div style="margin: 5px 0">选择匹配</div>
                                   </div>
                                   <div
                                     class="check"
@@ -1350,7 +1350,7 @@
                                       src="../../../assets/icon/fourthToolList/conSentences.png"
                                       alt
                                     />
-                                    <div style="margin: 5px 0">连词成句</div>
+                                    <div style="margin: 5px 0">排序</div>
                                   </div>
                                   <div
                                     class="check"
@@ -3894,7 +3894,7 @@
                                   src="../../../assets/icon/thirdToolList/select.png"
                                   alt
                                 />
-                                <div style="margin: 5px 0">选择填空</div>
+                                <div style="margin: 5px 0">选择匹配</div>
                               </div>
                               <div
                                 class="check"
@@ -3922,7 +3922,7 @@
                                   src="../../../assets/icon/fourthToolList/conSentences.png"
                                   alt
                                 />
-                                <div style="margin: 5px 0">连词成句</div>
+                                <div style="margin: 5px 0">排序</div>
                               </div>
                               <div
                                 class="check"
@@ -4842,7 +4842,7 @@
                                   src="../../../assets/icon/thirdToolList/select.png"
                                   alt
                                 />
-                                <div style="margin: 5px 0">选择填空</div>
+                                <div style="margin: 5px 0">选择匹配</div>
                               </div>
                               <div
                                 class="check"
@@ -4870,7 +4870,7 @@
                                   src="../../../assets/icon/fourthToolList/conSentences.png"
                                   alt
                                 />
-                                <div style="margin: 5px 0">连词成句</div>
+                                <div style="margin: 5px 0">排序</div>
                               </div>
                               <div
                                 class="check"
@@ -6321,7 +6321,7 @@
       </span>
     </el-dialog>
     <el-dialog
-      title="选择填空"
+      title="选择匹配"
       :visible.sync="dialogVisibleSelect"
       :append-to-body="true"
       width="800px"
@@ -6333,7 +6333,7 @@
           <div class="select_box1_img">
             <div class="select_box1_title">
               <span>上传题目图片</span
-              ><span>提示:请将题目以图片的方式上传</span>
+              ><span>提示:请将所有题目上传为一张图片。</span>
             </div>
             <div class="select_box1_add_img">
               <div
@@ -6350,7 +6350,7 @@
                 <img src="../../../assets/icon/addPoster.png" alt="" />
               </div>
               <div class="isSysPic" v-else>
-                <img :src="selectJson.url" alt="" />
+                <img :src="selectJson.url" alt=""  @click="previewImg(selectJson.url)"/>
                 <div class="deletePic" @click="deleteSelectPic">
                   <img src="../../../assets/icon/delete.png" alt="" />
                 </div>
@@ -6359,7 +6359,7 @@
           </div>
           <div class="select_box1_select">
             <div class="select_box1_title">
-              <span>添加选项</span><span>提示:请输入题目选项</span>
+              <span>添加选项</span><span>提示:请输入以上题目的选项内容,此选项为所有题目共享。</span>
             </div>
             <div class="select_box1_select_box">
               <el-input
@@ -6392,10 +6392,10 @@
         </div>
         <div v-if="selectSteps == 2">
           <div class="select_box2">
-            <div class="select_box2_title">设置答案</div>
+            <div class="select_box2_title">设置每道题目的正确选项</div>
             <div class="select_box2_box">
               <div class="select_box2_img">
-                <img :src="selectJson.url" alt="" />
+                <img :src="selectJson.url" alt=""  @click="previewImg(selectJson.url)"/>
               </div>
               <div class="select_box2_answer">
                 <div class="select_answer_title">根据题目选择对应答案</div>
@@ -6515,10 +6515,10 @@
           <div
             v-for="(st, stIndex) in sentenceList"
             :key="stIndex"
-            style="padding-bottom: 20px"
+            class="sentenContent"
           >
             <div class="sentenTopBox">
-              <div class="sentenTop">
+              <div class="sentenTop" :index="stIndex+1">
                 <div>题目设置</div>
                 <div>
                   <el-input
@@ -6808,7 +6808,7 @@
             <span class="groupn">第{{ index + 1 }}组名称:</span>
             <el-input v-model="item.name" placeholder="请输入名称..." style="width: 250px"></el-input>
             <div class="groupBtn">
-              <el-button type="primary" size="small" @click="addGroup(index)">
+              <el-button type="primary" size="small" @click="addGroup(index)" v-if="groupJson.group.length - 1 == index">
                 添加</el-button>
               <el-button type="primary" size="small" @click="deleteGroup(index)"
                 v-if="groupJson.group && groupJson.group.length > 1">删除</el-button>
@@ -7544,7 +7544,6 @@ export default {
     },
     deleteSentence(i) {
       var _this = this;
-      if (_this.time()) {
         _this
           .$confirm("确定删除此题目吗?", "提示", {
             confirmButtonText: "确定",
@@ -7558,7 +7557,6 @@ export default {
           .catch(() => {
             return;
           });
-      }
     },
     deleteS(s, i, j) {
       this.sentenceList[i].addSentence.splice(j, 1);
@@ -10223,9 +10221,9 @@ export default {
             }
             if (
               (aj[i].type == "2" && !aj[i].answer.length) ||
-              (aj[i].type == "1" && aj[i].answer !== 0 && !aj[i].answer)
+              (aj[i].type == "1" && ((typeof aj[i].answer == 'object' && !aj[i].answer.length) || (aj[i].answer !== 0 && !aj[i].answer)))
             ) {
-              this.$message.error("有题目未选择答案请选择答案");
+              this.$message.error(`题目${i+1},未设置正确选项,请设置。`);
               return;
             }
           }
@@ -10533,6 +10531,17 @@ export default {
       if (!this.selectJson.select.length) {
         this.$message.error("请添加选项");
         return;
+      }else{
+        for (var z = 0; z < this.selectJson.select.length; z++) {  
+          let checkC = this.selectJson.select[z];
+          for (var z2 = z+1; z2 < this.selectJson.select.length; z2++) {  
+            let checkC2 = this.selectJson.select[z2];
+              if (checkC == checkC2) {  
+                this.$message.error(`选项${z+1}和选项${z2+1}重复了,请修改!`);
+                return;
+              }  
+            } 
+          } 
       }
       var a = 1;
       for (var i = 0; i < this.selectJson.select.length; i++) {
@@ -11289,6 +11298,14 @@ export default {
       });
     },
     addSen(i) {
+      if(!this.sentenceList[i].sentenceTitle){
+        this.$message.error("请填写卡片内容!");
+        return;
+      }
+      if(this.sentenceList[i].addSentence.indexOf(this.sentenceList[i].sentenceTitle) !== -1){
+        this.$message.error("不能添加重复的卡片内容!");
+        return;
+      }
       this.sentenceList[i].addSentence.push(this.sentenceList[i].sentenceTitle);
       // this.isPushTitleList.push(this.sentenceTitle);
       this.sentenceList[i].sentenceTitle = "";
@@ -14487,6 +14504,16 @@ ol {
   background-size: 60%;
 }
 
+.sentenBox > .sentenContent{
+  padding-bottom: 10px;
+  width: 97%;
+  margin: 0 auto;
+}
+
+.sentenBox > .sentenContent + .sentenContent{
+  border-top: 1px solid #cbcbcb;
+}
+
 .addSen {
   background: #409efe;
   width: 90px;
@@ -14507,6 +14534,20 @@ ol {
   align-items: center;
 }
 
+.sentenTop::before{
+  content:attr(index);
+  background: #3681fc;
+  border-radius: 50%;
+  color: #fff;
+  width: 25px;
+  height: 25px;
+  min-width: 25px;
+  min-height: 25px;
+  text-align: center;
+  line-height: 25px;
+  margin-right: 5px;
+}
+
 .sentenTop > div:nth-child(2) {
   width: 300px;
   margin: 0 15px;
@@ -14947,4 +14988,16 @@ ol {
   width: fit-content;
   margin: 0 10px 0 10px;
 }
+
+.moveBtn2 .chapter_upload_down,
+.moveBtn2 .chapter_upload_up{
+  width: 16px;
+  height: 16px;
+}
+
+.moveBtn2 .chapter_upload_up::after, 
+.moveBtn2 .chapter_upload_down::after{
+  width: 10px;
+  height: 10px;
+}
 </style>

Some files were not shown because too many files changed in this diff