Переглянути джерело

Merge branch 'beta' of https://git.cocorobo.cn/CocoRoboLabs/pbl-teacher-table into beta

lsc 3 тижнів тому
батько
коміт
2b6d5321e2

+ 1 - 1
dist/index.html

@@ -37,7 +37,7 @@
       width: 100%;
       background: #e6eaf0;
       font-family: '黑体';
-    }</style><link href=./static/css/app.7d1ef016223a3c40ef552fe52e66fefb.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.23ea04dc469b57e2b4f8.js></script><script type=text/javascript src=./static/js/vendor.714ff2bfc93f2f096b79.js></script><script type=text/javascript src=./static/js/app.ee911cbf770bdd9769e8.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.1bbd32fda653c17f5129326eebd62bef.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.23ea04dc469b57e2b4f8.js></script><script type=text/javascript src=./static/js/vendor.714ff2bfc93f2f096b79.js></script><script type=text/javascript src=./static/js/app.a1769b4543c324b69287.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/static/css/app.1bbd32fda653c17f5129326eebd62bef.css


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/static/css/app.1bbd32fda653c17f5129326eebd62bef.css.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/static/css/workPage.55d056a84d889305d0062550f70d674d.css


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/static/css/workPage.55d056a84d889305d0062550f70d674d.css.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/static/css/workPage.f7bae04b534943cff3effe3dc1257360.css.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/static/js/app.a1769b4543c324b69287.js


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/static/js/app.a1769b4543c324b69287.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/static/js/manifest.23ea04dc469b57e2b4f8.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/static/js/workPage-manifest.2ece51fa34be51c8610a.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/static/js/workPage.5b3c7fc43389fc32201a.js


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/static/js/workPage.5b3c7fc43389fc32201a.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/static/js/workPage.8a411b5a48dbe367f835.js


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/static/js/workPage.8a411b5a48dbe367f835.js.map


+ 1 - 1
dist/workPage.html

@@ -1,4 +1,4 @@
-<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>工作页面 - CocoFlow</title><link rel=icon href=../static/logo.ico><link href=./static/css/workPage.f7bae04b534943cff3effe3dc1257360.css rel=stylesheet></head><body><noscript><strong>We're sorry but this app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script type=text/javascript src=./static/js/workPage-manifest.2ece51fa34be51c8610a.js></script><script type=text/javascript src=./static/js/workPage-vendor.7b2c55096449c94cc8fd.js></script><script type=text/javascript src=./static/js/workPage.5b3c7fc43389fc32201a.js></script></body></html><script>function stopSafari() {
+<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>工作页面 - CocoFlow</title><link rel=icon href=../static/logo.ico><link href=./static/css/workPage.55d056a84d889305d0062550f70d674d.css rel=stylesheet></head><body><noscript><strong>We're sorry but this app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script type=text/javascript src=./static/js/workPage-manifest.2ece51fa34be51c8610a.js></script><script type=text/javascript src=./static/js/workPage-vendor.7b2c55096449c94cc8fd.js></script><script type=text/javascript src=./static/js/workPage.8a411b5a48dbe367f835.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

+ 250 - 30
src/components/pages/workPage/components/setChoiceQuestion.vue

@@ -2,7 +2,7 @@
   <div class="setChoiceQuestion">
     <div class="testItem" v-for="(item, index) in jsonData.testJson" :key="item.id">
       <div class="ti_header">
-        <span>{{ lang.ssTopic }}{{ index + 1 }}</span>
+        <span>{{ lang.ssTopic }}{{ index + 1 }} <span v-if="item.answer.length==0">{{lang.ssNoSettingAnswer}}</span></span>
         <div class="ti_h_edit">
           <span @click="copyTest(item.id)">
             <svg viewBox="0 0 1024 1024" version="1.1" p-id="4608" width="200" height="200">
@@ -11,7 +11,26 @@
                 p-id="4609"></path>
             </svg>
           </span>
-          <span @click="deleteTest(item.id)">
+
+          <!-- 上 -->
+          <span @click="changeIndex(item, index, 'up')">
+            <svg viewBox="0 0 1024 1024" width="200" height="200" fill="#6B7280">
+              <path
+                d="M959.804421 511.603981l-84.009346 84.023672L576.143391 293.406446l0 665.582911L448.20351 958.989357 448.20351 293.406446 147.619594 595.628676l-84.024695-84.023672L512.213359 63.546292 959.804421 511.603981z">
+              </path>
+            </svg>
+          </span>
+          <!-- 下 -->
+          <span @click="changeIndex(item, index, 'down')">
+            <svg style="transform: rotate(180deg);" viewBox="0 0 1024 1024" width="200" height="200" fill="#6B7280">
+              <path
+                d="M959.804421 511.603981l-84.009346 84.023672L576.143391 293.406446l0 665.582911L448.20351 958.989357 448.20351 293.406446 147.619594 595.628676l-84.024695-84.023672L512.213359 63.546292 959.804421 511.603981z">
+              </path>
+            </svg>
+
+          </span>
+
+          <span @click="deleteTest(item.id)" v-show="jsonData.testJson.length > 1">
             <svg viewBox="0 0 1024 1024" version="1.1" p-id="12415" width="200" height="200">
               <path
                 d="M902.4 282.1H117.7c-13.4 0-23.5-10.1-23.5-23.5v-3.4c0-13.4 10.1-23.5 23.5-23.5h788.1c13.4 0 23.5 10.1 23.5 23.5v3.4c0 13.4-10.1 23.5-26.9 23.5zM634.1 151.3H386c-13.4 0-26.8-10.1-23.5-23.5v-6.7c0-13.4 10.1-23.5 23.5-23.5h248.2c13.4 0 23.5 10.1 23.5 23.5v3.4c3.3 13.3-10.1 26.8-23.6 26.8z m228.1 238.1c0-13.4-10.1-26.8-26.8-26.8-16.8 0-26.8 10.1-26.8 26.8L775 798.5v13.4c0 23.5-10.1 43.6-30.2 53.7-13.4 6.7-30.2 10.1-50.3 10.1H332.3c-33.5 3.4-60.4 0-70.4-33.5-3.4-6.7-6.7-16.8-6.7-26.8l-10.1-104-36.9-322c0-13.4-10.1-23.5-23.5-23.5s-26.8 10.1-26.8 23.5l47 462.8c0 40.2 40.2 73.8 80.5 73.8h459.5c40.2 0 80.5-33.5 80.5-73.8l36.8-462.8c0 3.3 0 0 0 0z m0 0"
@@ -34,16 +53,39 @@
       </div>
       <!-- 图片 -->
       <div class="imageList">
-        <div v-for="(image, imageIndex) in item.timuList" :key="item.id+'_'+imageIndex">
+        <div v-for="(image, imageIndex) in item.timuList" :key="item.id + '_' + imageIndex">
           <el-image style="width: 100px; height: 100px" :src="image.url" :preview-src-list="[image.url]"
             fit="cover"></el-image>
-            <svg @click="delImage(item.id, imageIndex)" t="1774237005199" viewBox="0 0 1024 1024" width="200" height="200"><path d="M512 1024A512 512 0 1 1 512 0a512 512 0 0 1 0 1024zM305.956571 370.395429L447.488 512 305.956571 653.604571a45.568 45.568 0 1 0 64.438858 64.438858L512 576.512l141.604571 141.531429a45.568 45.568 0 0 0 64.438858-64.438858L576.512 512l141.531429-141.604571a45.568 45.568 0 1 0-64.438858-64.438858L512 447.488 370.395429 305.956571a45.568 45.568 0 0 0-64.438858 64.438858z" fill="#FF2525" p-id="4716"></path></svg>
+          <svg @click="delImage(item.id, imageIndex)" t="1774237005199" viewBox="0 0 1024 1024" width="200"
+            height="200">
+            <path
+              d="M512 1024A512 512 0 1 1 512 0a512 512 0 0 1 0 1024zM305.956571 370.395429L447.488 512 305.956571 653.604571a45.568 45.568 0 1 0 64.438858 64.438858L512 576.512l141.604571 141.531429a45.568 45.568 0 0 0 64.438858-64.438858L576.512 512l141.531429-141.604571a45.568 45.568 0 1 0-64.438858-64.438858L512 447.488 370.395429 305.956571a45.568 45.568 0 0 0-64.438858 64.438858z"
+              fill="#FF2525" p-id="4716"></path>
+          </svg>
         </div>
       </div>
 
       <!-- 选择题 -->
       <div class="checkList">
-        <div class="checkItem" v-for="(check, checkIndex) in item.checkList" :key="checkIndex">
+        <div class="checkItem" v-for="(check, checkIndex) in item.checkList" :key="checkIndex"
+            draggable="true"
+            @dragstart="dragStart($event, item, checkIndex)"
+            @dragover.prevent="dragOver($event, item, checkIndex)"
+            @drop="drop($event, item, checkIndex)"
+            @dragend="dragEnd">
+          <div class="drag">
+            <svg viewBox="0 0 1024 1024" width="200" height="200">
+              <path
+                d="M867.995 459.647h-711.99c-27.921 0-52.353 24.434-52.353 52.353s24.434 52.353 52.353 52.353h711.99c27.921 0 52.353-24.434 52.353-52.353s-24.434-52.353-52.353-52.353z"
+                p-id="9455"></path>
+              <path
+                d="M867.995 763.291h-711.99c-27.921 0-52.353 24.434-52.353 52.353s24.434 52.353 52.353 52.353h711.99c27.921 0 52.353-24.434 52.353-52.353s-24.434-52.353-52.353-52.353z"
+                p-id="9456"></path>
+              <path
+                d="M156.005 260.709h711.99c27.921 0 52.353-24.434 52.353-52.353s-24.434-52.353-52.353-52.353h-711.99c-27.921 0-52.353 24.434-52.353 52.353s24.434 52.353 52.353 52.353z">
+              </path>
+            </svg>
+          </div>
           <div class="check" :class="{ 'checked': item.answer.includes(checkIndex) }"
             @click="checkClick(item.id, checkIndex)">
             <svg v-if="item.answer.includes(checkIndex)" t="1773996159000" viewBox="0 0 1024 1024" version="1.1"
@@ -53,13 +95,26 @@
                 p-id="5895"></path>
             </svg>
           </div>
-          <el-input v-model="item.checkList[checkIndex]" :placeholder="lang.ssEnterOption" @blur="setTestJson()"></el-input>
+          <el-input v-model="item.checkList[checkIndex]" :placeholder="lang.ssEnterOption"
+            @blur="setTestJson()"></el-input>
           <div class="btn">
-            <div @click="delCheck(item.id, checkIndex)">
-              <svg viewBox="0 0 1024 1024" version="1.1" p-id="12415" width="200" height="200">
+
+            <div @click="addCheck(item.id, checkIndex)" v-if="item.checkList.length > 2">
+              <svg style="width: .7rem; height: .7rem;" viewBox="0 0 1024 1024" width="200" height="200">
+                <path
+                  d="M47.653 439.326c-24.501 0-44.368 19.881-44.368 44.4v56.548c0 24.492 19.862 44.4 44.368 44.4h928.694c24.501 0 44.368-19.881 44.368-44.4v-56.548c0-24.497-19.862-44.4-44.368-44.4H47.653z"
+                  p-id="11474"></path>
+                <path
+                  d="M586.326 47.653c0-24.501-19.881-44.368-44.4-44.368h-56.548c-24.492 0-44.4 19.862-44.4 44.368v928.694c0 24.501 19.881 44.368 44.4 44.368h56.548c24.497 0 44.4-19.862 44.4-44.368V47.653z">
+                </path>
+              </svg>
+            </div>
+
+            <div @click="delCheck(item.id, checkIndex)" v-if="item.checkList.length > 2">
+              <svg viewBox="0 0 1024 1024" width="200" height="200">
                 <path
-                  d="M902.4 282.1H117.7c-13.4 0-23.5-10.1-23.5-23.5v-3.4c0-13.4 10.1-23.5 23.5-23.5h788.1c13.4 0 23.5 10.1 23.5 23.5v3.4c0 13.4-10.1 23.5-26.9 23.5zM634.1 151.3H386c-13.4 0-26.8-10.1-23.5-23.5v-6.7c0-13.4 10.1-23.5 23.5-23.5h248.2c13.4 0 23.5 10.1 23.5 23.5v3.4c3.3 13.3-10.1 26.8-23.6 26.8z m228.1 238.1c0-13.4-10.1-26.8-26.8-26.8-16.8 0-26.8 10.1-26.8 26.8L775 798.5v13.4c0 23.5-10.1 43.6-30.2 53.7-13.4 6.7-30.2 10.1-50.3 10.1H332.3c-33.5 3.4-60.4 0-70.4-33.5-3.4-6.7-6.7-16.8-6.7-26.8l-10.1-104-36.9-322c0-13.4-10.1-23.5-23.5-23.5s-26.8 10.1-26.8 23.5l47 462.8c0 40.2 40.2 73.8 80.5 73.8h459.5c40.2 0 80.5-33.5 80.5-73.8l36.8-462.8c0 3.3 0 0 0 0z m0 0"
-                  p-id="12416"></path>
+                  d="M632.117978 513.833356l361.805812 361.735298a85.462608 85.462608 0 1 1-121.001515 120.789974L511.116463 634.552816 146.913186 998.756094a86.026718 86.026718 0 0 1-121.706652-121.706652L389.480325 512.775651 27.674513 150.969839A85.392095 85.392095 0 0 1 148.393973 30.250379L510.199785 392.056191l366.671258-366.671258a86.026718 86.026718 0 0 1 121.706652 121.706652z">
+                </path>
               </svg>
             </div>
           </div>
@@ -87,8 +142,8 @@
             <span>{{ lang.ssAIGenerate }}</span>
           </div>
         </div>
-        <el-input type="textarea" rows="3" resize="none" v-model="item.explanation" :placeholder="lang.ssEnterExplanation"
-          @blur="setTestJson()"></el-input>
+        <el-input type="textarea" rows="3" resize="none" v-model="item.explanation"
+          :placeholder="lang.ssEnterExplanation" @blur="setTestJson()"></el-input>
       </div>
     </div>
 
@@ -119,7 +174,8 @@ export default {
   },
   data() {
     return {
-      jsonData: {}
+      jsonData: {},
+      dragItem: null
     }
   },
   watch: {
@@ -127,7 +183,11 @@ export default {
       handler(newVal, oldVal) {
         if (newVal.type == 45) {
           if (JSON.stringify(newVal.json) != JSON.stringify(this.jsonData)) {
+
             this.jsonData = JSON.parse(JSON.stringify(newVal.json));
+            if(this.jsonData.testJson.length == 0){
+              this.addTest();
+            }
           }
         }
       },
@@ -148,7 +208,7 @@ export default {
         id: uuidv4(),
         type: "2",
         teststitle: "",
-        checkList: [''],
+        checkList: ['', '', ''],
         timuList: [],
         answer: [],
         userAnswer: [],
@@ -184,10 +244,15 @@ export default {
       this.setTestJson();
     },
     // 添加选项
-    addCheck(id) {
+    addCheck(id, checkIndex = null) {
       let index = this.jsonData.testJson.findIndex(item => item.id == id);
       let test = this.jsonData.testJson[index];
-      test.checkList.push('');
+      if (!checkIndex) {
+        checkIndex = test.checkList.length;
+      }else{
+        checkIndex = checkIndex + 1;
+      }
+      test.checkList.splice(checkIndex, 0, '');
       this.setTestJson();
     },
     // 删除选项
@@ -236,6 +301,109 @@ export default {
       }
       this.setTestJson();
     },
+    // 移动题目
+    changeIndex(item, index, direction) {
+      let test = this.jsonData.testJson.find(i => i.id == item.id);
+      if (test) {
+        if (direction == 'up') {
+          if (index == 0) {
+            this.$message.info("已到顶部");
+            return;
+          }
+          this.jsonData.testJson.splice(index, 1);
+          this.jsonData.testJson.splice(index - 1, 0, JSON.parse(JSON.stringify(test)));
+        } else if (direction == 'down') {
+          if (index == this.jsonData.testJson.length - 1) {
+            this.$message.info("已到底部");
+            return;
+          }
+          this.jsonData.testJson.splice(index, 1);
+          this.jsonData.testJson.splice(index + 1, 0, JSON.parse(JSON.stringify(test)));
+        }
+        this.setTestJson();
+      }
+    },
+    // 拖拽相关方法
+    dragStart(e, item, checkIndex) {
+      this.dragItem = { item, checkIndex };
+      const checkItem = e.target.closest('.checkItem');
+      if (checkItem) checkItem.classList.add('dragging');
+      e.dataTransfer.effectAllowed = 'move';
+    },
+    dragOver(e, item, checkIndex) {
+      e.preventDefault();
+      e.dataTransfer.dropEffect = 'move';
+
+      document.querySelectorAll('.checkItem').forEach(el => {
+        el.style.borderTop = '';
+        el.style.borderBottom = '';
+      });
+
+      const checkItems = e.target.closest('.checkItem');
+      if (checkItems && this.dragItem && this.dragItem.checkIndex !== checkIndex) {
+        if (this.dragItem.checkIndex < checkIndex) {
+          checkItems.style.borderBottom = '2px solid #ffa502';
+        } else {
+          checkItems.style.borderTop = '2px solid #ffa502';
+        }
+      }
+    },
+    drop(e, targetItem, targetCheckIndex) {
+      e.preventDefault();
+      document.querySelectorAll('.checkItem').forEach(el => {
+        el.style.borderTop = '';
+        el.style.borderBottom = '';
+        el.classList.remove('dragging');
+      });
+      if (!this.dragItem) return;
+
+      const { item: sourceItem, checkIndex: sourceCheckIndex } = this.dragItem;
+
+      if (sourceItem.id !== targetItem.id) return;
+      if (sourceCheckIndex === targetCheckIndex) return;
+
+      const test = this.jsonData.testJson.find(i => i.id === sourceItem.id);
+      if (test) {
+        let newAnswerIndex;
+
+        if (sourceCheckIndex < targetCheckIndex) {
+          newAnswerIndex = targetCheckIndex - 1;
+        } else {
+          newAnswerIndex = targetCheckIndex;
+        }
+
+        const item = test.checkList[sourceCheckIndex];
+        test.checkList.splice(sourceCheckIndex, 1);
+        test.checkList.splice(targetCheckIndex, 0, item);
+
+        if (test.answer.includes(sourceCheckIndex)) {
+          const answerIndex = test.answer.indexOf(sourceCheckIndex);
+          test.answer.splice(answerIndex, 1);
+          test.answer.push(newAnswerIndex);
+          test.answer.sort((a, b) => a - b);
+        } else {
+          test.answer = test.answer.map(idx => {
+            if (sourceCheckIndex < targetCheckIndex) {
+              return idx > sourceCheckIndex && idx <= targetCheckIndex ? idx - 1 : idx;
+            } else {
+              return idx >= targetCheckIndex && idx < sourceCheckIndex ? idx + 1 : idx;
+            }
+          });
+        }
+
+        this.setTestJson();
+      }
+      this.dragItem = null;
+    },
+    dragEnd(e) {
+      const checkItem = e.target.closest('.checkItem');
+      if (checkItem) checkItem.classList.remove('dragging');
+      document.querySelectorAll('.checkItem').forEach(el => {
+        el.style.borderTop = '';
+        el.style.borderBottom = '';
+      });
+      this.dragItem = null;
+    },
   },
 }
 </script>
@@ -292,6 +460,7 @@ export default {
   align-items: center;
   justify-content: space-between;
 
+
 }
 
 .ti_header>span {
@@ -300,6 +469,12 @@ export default {
   color: #ff9300;
 }
 
+.ti_header>span>span {
+  font-size: .8rem;
+  color: rgb(117, 117, 117);
+  margin-left: .5rem;
+}
+
 .ti_h_edit {
   display: flex;
   align-items: center;
@@ -344,6 +519,8 @@ export default {
   background: none;
   font-size: .8rem;
   resize: none;
+  max-height: 10rem;
+  overflow: auto;
   /* padding-right: 2rem; */
 }
 
@@ -372,7 +549,7 @@ export default {
   display: flex;
   flex-direction: column;
   gap: 1rem;
-  padding-left: 4rem;
+  /* padding-left: 4rem; */
 }
 
 .checkItem {
@@ -382,9 +559,46 @@ export default {
   align-items: center;
   justify-content: flex-start;
   gap: .5rem;
+  padding: .3rem .5rem;
+  transition: .2s;
+}
+
+.checkItem:hover {
+  background: #F9FAFB;
+}
+
+.drag {
+  width: 1.1rem;
+  height: 1.1rem;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  cursor: move;
+  margin-right: 1rem;
+  opacity: 0;
+  transition: .2s;
+}
 
+.checkItem:hover > .drag {
+  opacity: 1;
 }
 
+.checkItem[draggable="true"] {
+  cursor: move;
+}
+
+.checkItem.dragging {
+  opacity: 0.5;
+  background: #FEF3C7;
+}
+
+.drag>svg {
+  width: 100%;
+  height: 100%;
+  fill: #D1D5DC;
+}
+
+
 .check {
   width: 1.1rem;
   height: 1.1rem;
@@ -438,24 +652,32 @@ export default {
 .btn {
   display: flex;
   align-items: center;
-  gap: .25em;
+  gap: 1em;
+  opacity: 0;
+  margin-left: 1rem;
+}
+
+.checkItem:hover>.btn {
+  opacity: 1;
 }
 
+
+
 .btn>div {
-  width: 1.5rem;
-  height: 1.5rem;
+  width: 1rem;
+  height: 1rem;
   display: flex;
   justify-content: center;
   align-items: center;
-  background: #F9FAFB;
+  /* background: #F9FAFB; */
   border-radius: .4px;
   cursor: pointer;
 }
 
 .btn>div>svg {
-  width: 1rem;
-  height: 1rem;
-  fill: #6B7280;
+  width: .6rem;
+  height: .6rem;
+  fill: #9DA3AF;
 }
 
 .explanation {
@@ -508,7 +730,8 @@ export default {
   flex-wrap: wrap;
   gap: 1rem;
 }
-.imageList>div{
+
+.imageList>div {
   width: 100px;
   height: 100px;
   display: flex;
@@ -520,11 +743,11 @@ export default {
 
 }
 
-.imageList>div:hover>svg{
+.imageList>div:hover>svg {
   display: flex;
 }
 
-.imageList>div>svg{
+.imageList>div>svg {
   width: 1rem;
   height: 1rem;
   position: absolute;
@@ -538,7 +761,4 @@ export default {
   justify-content: center;
   display: none;
 }
-
-
-
 </style>

+ 2 - 0
src/components/pages/workPage/components/setQuestionsAndAnswers.vue

@@ -267,6 +267,8 @@ export default {
   background: none;
   font-size: .8rem;
   resize: none;
+  max-height:10rem;
+  overflow:auto;
   /* padding-right: 2rem; */
 }
 

+ 2 - 2
src/lang/cn.json

@@ -2043,6 +2043,6 @@
   "ssCourseType":"课程类型",
   "ssSelectCourseType":"请选择课程类型",
   "ssSelectedCourse":"已选择 * 个课程",
-  "ssSelectedApp":"已选择 * 个应用"
-
+  "ssSelectedApp":"已选择 * 个应用",
+  "ssNoSettingAnswer":"未设置正确答案"
 }

+ 2 - 1
src/lang/en.json

@@ -2042,6 +2042,7 @@
   "ssCourseType":"Course Type",
   "ssSelectCourseType":"Please select course type",
   "ssSelectedCourse":"Selected * courses",
-  "ssSelectedApp":"Selected * apps"
+  "ssSelectedApp":"Selected * apps",
+  "ssNoSettingAnswer":"No correct answer set"
 
 }

+ 2 - 1
src/lang/hk.json

@@ -2043,6 +2043,7 @@
   "ssSelectCourseType":"請選擇課程類型",
   "ssSelectedCourse":"已選擇 * 個課程",
   "ssSelectedApp":"已選擇 * 個應用",
-  "ssCocoNoteUpdateTips":"協同建構不支持修改基本信息,只支持加入分組。"
+  "ssCocoNoteUpdateTips":"協同建構不支持修改基本信息,只支持加入分組。",
+  "ssNoSettingAnswer":"未設置正確答案"
 
 }

Деякі файли не було показано, через те що забагато файлів було змінено