lsc 1 年之前
父节点
当前提交
a3801ffdfd

+ 1 - 1
dist/index.html

@@ -25,7 +25,7 @@
       height: 100%;
       height: 100%;
       width: 100%;
       width: 100%;
       background: #e6eaf0;
       background: #e6eaf0;
-    }</style><link href=./static/css/app.b3af82350d3918113dbf3971ad336703.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.a47c8be119f09bb91676.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.5322e10b79b0e01031aa5611ef44eaba.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.26e5385f7400c084415b.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {
     document.documentElement.addEventListener("touchstart", function (event) {

文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/app.5322e10b79b0e01031aa5611ef44eaba.css


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/app.5322e10b79b0e01031aa5611ef44eaba.css.map


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/app.b3af82350d3918113dbf3971ad336703.css.map


二进制
dist/static/img/bj_icon.444d732.png


二进制
dist/static/img/bj_icon_active.2f19c2c.png


二进制
dist/static/img/bj_icon_b.f767774.png


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/app.26e5385f7400c084415b.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/app.26e5385f7400c084415b.js.map


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/manifest.3512a67a6213c2df4180.js.map


+ 4 - 1
src/assets/css/button.css

@@ -263,7 +263,10 @@
   line-height: 1;
   line-height: 1;
 }
 }
 
 
-.pub_test_btn:has(+.pub_test_btn) {
+/* .pub_test_btn:has(+.pub_test_btn) {
+  margin-right: 10px;
+} */
+.pub_test_btn {
   margin-right: 10px;
   margin-right: 10px;
 }
 }
 
 

二进制
src/assets/icon/test/bj_icon.png


二进制
src/assets/icon/test/bj_icon_active.png


二进制
src/assets/icon/test/bj_icon_b.png


二进制
src/assets/icon/test/delete.png


+ 2 - 1
src/components/pages/test/add/components/choice/index.vue

@@ -199,7 +199,8 @@ export default {
 
 
 .xuan_1 {
 .xuan_1 {
     display: flex;
     display: flex;
-    width: calc(100% - 340px);
+    /* width: calc(100% - 340px); */
+    width: calc(100% - 100px);
     align-items: center;
     align-items: center;
 }
 }
 
 

+ 9 - 1
src/components/pages/test/index.vue

@@ -91,7 +91,7 @@
                             <div class="test_top_img" v-if="!item.typeN"></div>
                             <div class="test_top_img" v-if="!item.typeN"></div>
                             <el-tooltip :content="item.typeN" placement="top" effect="dark" v-else>
                             <el-tooltip :content="item.typeN" placement="top" effect="dark" v-else>
                                 <div class="test_top_img"
                                 <div class="test_top_img"
-                                    :class="{ gr: item.typeid == 'afc3f97f-2429-408d-8dcd-5e63a44d355a', md: item.typeid == '478bcccd-e3a1-472b-aa29-3ed7bc479469', js: item.typeid == '178a377a-b4f1-4a75-b3c3-2787a7c98784', yy: item.typeid == 'dda9728e-5f11-469e-89ee-aca518daf223' }">
+                                    :class="{ gr: item.typeid == 'afc3f97f-2429-408d-8dcd-5e63a44d355a', md: item.typeid == '478bcccd-e3a1-472b-aa29-3ed7bc479469', js: item.typeid == '178a377a-b4f1-4a75-b3c3-2787a7c98784', yy: item.typeid == 'dda9728e-5f11-469e-89ee-aca518daf223', bj: item.typeid == 'afc3f97f-2429-408d-8dcd-5e63a44d355c' }">
                                 </div>
                                 </div>
                             </el-tooltip>
                             </el-tooltip>
                             <div class="test_top_title">
                             <div class="test_top_title">
@@ -1335,6 +1335,10 @@ export default {
     background: rgb(98, 102, 188);
     background: rgb(98, 102, 188);
 }
 }
 
 
+.test_top>.bj {
+    background: rgb(98, 158, 188);
+}
+
 .test_top>.test_top_img:after {
 .test_top>.test_top_img:after {
     content: '';
     content: '';
     display: block;
     display: block;
@@ -1360,6 +1364,10 @@ export default {
     background-image: url('../../../assets/icon/test/yy_icon_b.png');
     background-image: url('../../../assets/icon/test/yy_icon_b.png');
 }
 }
 
 
+.test_top>.bj:after {
+    background-image: url('../../../assets/icon/test/bj_icon_b.png');
+}
+
 .test_top>.test_top_title {
 .test_top>.test_top_title {
     display: flex;
     display: flex;
     flex-direction: column;
     flex-direction: column;

+ 206 - 49
src/components/pages/testPerson/test/index.vue

@@ -3,65 +3,87 @@
     <div class="i_body_title">
     <div class="i_body_title">
       <span>测评项目</span>
       <span>测评项目</span>
       <div>
       <div>
-        <el-button type="primary" class="bgColor" @click="returnA()">返回</el-button>
+        <el-button type="primary" class="bgColor" @click="returnA()">评测中心</el-button>
       </div>
       </div>
     </div>
     </div>
     <div class="i_body_box">
     <div class="i_body_box">
       <div class="check_nav">
       <div class="check_nav">
         <div class="nav all" :class="{ active: type == '' }" @click="checkType('')">所有评测</div>
         <div class="nav all" :class="{ active: type == '' }" @click="checkType('')">所有评测</div>
         <div class="nav"
         <div class="nav"
-          :class="{ active: type == item.id, gr: item.id == 'afc3f97f-2429-408d-8dcd-5e63a44d355a', md: item.id == '478bcccd-e3a1-472b-aa29-3ed7bc479469', jy: item.id == '178a377a-b4f1-4a75-b3c3-2787a7c98784', yy: item.id == 'dda9728e-5f11-469e-89ee-aca518daf223' }"
+          :class="{ active: type == item.id, gr: item.id == 'afc3f97f-2429-408d-8dcd-5e63a44d355a', md: item.id == '478bcccd-e3a1-472b-aa29-3ed7bc479469', jy: item.id == '178a377a-b4f1-4a75-b3c3-2787a7c98784', yy: item.id == 'dda9728e-5f11-469e-89ee-aca518daf223', bj: item.id == 'afc3f97f-2429-408d-8dcd-5e63a44d355c' }"
           @click="checkType(item.id)" v-for="(item, index) in typeArray" :key="index">{{ item.name }}</div>
           @click="checkType(item.id)" v-for="(item, index) in typeArray" :key="index">{{ item.name }}</div>
         <!-- <div class="nav gr" :class="{ active: type == 2 }" @click="checkType(2)">个人写真</div>
         <!-- <div class="nav gr" :class="{ active: type == 2 }" @click="checkType(2)">个人写真</div>
         <div class="nav md" :class="{ active: type == 3 }" @click="checkType(3)">明灯导航</div>
         <div class="nav md" :class="{ active: type == 3 }" @click="checkType(3)">明灯导航</div>
         <div class="nav jy" :class="{ active: type == 4 }" @click="checkType(4)">教研耕耘</div>
         <div class="nav jy" :class="{ active: type == 4 }" @click="checkType(4)">教研耕耘</div>
         <div class="nav yy" :class="{ active: type == 5 }" @click="checkType(5)">煜煜星光</div> -->
         <div class="nav yy" :class="{ active: type == 5 }" @click="checkType(5)">煜煜星光</div> -->
       </div>
       </div>
-      <div class="check_box">
+      <div class="check_box" v-loading="loading">
         <div class="noneData" v-if="!worksArray.length" style="text-align: center;">暂无数据</div>
         <div class="noneData" v-if="!worksArray.length" style="text-align: center;">暂无数据</div>
         <div class="test_panel" v-for="(item, index) in worksArray" :key="index">
         <div class="test_panel" v-for="(item, index) in worksArray" :key="index">
           <div class="test_panel_title">
           <div class="test_panel_title">
             <div class="title">
             <div class="title">
-              <span>已完成</span>
+              <span :class="{ is: item.array.length > 0, no: !item.array.length }">{{ item.array.length > 0 ? "已完成" :
+                "未完成" }}</span>
               <span>{{ item.title }}</span>
               <span>{{ item.title }}</span>
             </div>
             </div>
             <div class="time">
             <div class="time">
-              <span>提交时间: {{ item.time }}</span>
+              <span>创建时间: {{ item.time }}</span>
               <span>修改时间: {{ item.utime }}</span>
               <span>修改时间: {{ item.utime }}</span>
             </div>
             </div>
           </div>
           </div>
           <div class="test_panel_box">
           <div class="test_panel_box">
-            <div class="detail">
-              {{ item.brief ? item.brief : '暂无描述' }}
+            <div class="detail" v-if="item.array.length === 0 || item.brief">
+              <span>{{ item.brief ? item.brief : '暂无描述' }}</span>
+            </div>
+            <div class="test_add_box" style="width: calc(100% - 350px - 20px);border: none;margin-right: 20px;padding: 0;" v-else>
+              <div class="test" v-for="(test) in item.array" :key="test.id">
+                <img
+                  :src="getImg(test.courseJson) ? getImg(test.courseJson) : require('../../../../assets/icon/test/teacher.jpg')" />
+                <div class="time">
+                  <span>提交时间</span>
+                  <span>{{ test.time }}</span>
+                  <span>修改时间</span>
+                  <span>{{ test.utime }}</span>
+                </div>
+                <img @click="deleteTest(test.id)" class="delete" src="../../../../assets/icon/test/delete.png" alt="">
+                <div class="mask">
+                  <div @click="doTest(test.courseid, test.id)"><span></span><span>编辑</span></div>
+                  <div @click="checkTest(test.courseid, test.id)"><span></span><span>查看</span></div>
+                  <div @click="copyTest(test.id)"><span></span><span>复制</span></div>
+                </div>
+              </div>
             </div>
             </div>
             <div class="panel">
             <div class="panel">
               <div class="score">
               <div class="score">
-                <div><span>{{getNum(item.chapters)}}</span><span>题</span></div>
+                <div><span>{{ getNum(item.chapters) }}</span><span>题</span></div>
                 <div>题目总数</div>
                 <div>题目总数</div>
               </div>
               </div>
               <div class="score">
               <div class="score">
-                <div><span>{{getScore(item.array)}}</span><span>分</span></div>
+                <div><span>{{ getScore(item.array) }}</span><span>分</span></div>
                 <div>综合得分</div>
                 <div>综合得分</div>
               </div>
               </div>
               <div class="btn">
               <div class="btn">
-                <div @click="doTest(item.courseid,item.id)"><span></span><span>编辑</span></div>
-                <div @click="checkTest(item.courseid,item.id)"><span></span><span>查看</span></div>
-                <div @click="copyTest(item.id)"><span></span><span>复制</span></div>
+                <!-- <div @click="doTest(item.courseid,item.id)"><span></span><span>编辑</span></div> -->
+                <div @click="doTest2(item.courseid)"><span></span><span>添加</span></div>
+                <!-- <div @click="checkTest(item.courseid,item.id)"><span></span><span>查看</span></div> -->
+                <!-- <div @click="copyTest(item.id)"><span></span><span>复制</span></div> -->
               </div>
               </div>
             </div>
             </div>
           </div>
           </div>
-          <div class="test_add_box" v-if="item.array.length > 1">
+          <div class="test_add_box" v-if="item.array.length > 0 && item.brief">
             <div class="test" v-for="(test) in item.array" :key="test.id">
             <div class="test" v-for="(test) in item.array" :key="test.id">
-              <img src="../../../../assets/icon/test/teacher.jpg" />
+              <img
+                :src="getImg(test.courseJson) ? getImg(test.courseJson) : require('../../../../assets/icon/test/teacher.jpg')" />
               <div class="time">
               <div class="time">
                 <span>提交时间</span>
                 <span>提交时间</span>
                 <span>{{ test.time }}</span>
                 <span>{{ test.time }}</span>
                 <span>修改时间</span>
                 <span>修改时间</span>
                 <span>{{ test.utime }}</span>
                 <span>{{ test.utime }}</span>
               </div>
               </div>
+              <img @click="deleteTest(test.id)" class="delete" src="../../../../assets/icon/test/delete.png" alt="">
               <div class="mask">
               <div class="mask">
-                <div @click="doTest(test.courseid,test.id)"><span></span><span>编辑</span></div>
-                <div @click="checkTest(test.courseid,test.id)"><span></span><span>查看</span></div>
+                <div @click="doTest(test.courseid, test.id)"><span></span><span>编辑</span></div>
+                <div @click="checkTest(test.courseid, test.id)"><span></span><span>查看</span></div>
                 <div @click="copyTest(test.id)"><span></span><span>复制</span></div>
                 <div @click="copyTest(test.id)"><span></span><span>复制</span></div>
               </div>
               </div>
             </div>
             </div>
@@ -90,6 +112,7 @@ export default {
       worksArray: [],
       worksArray: [],
       org: this.$route.query.org,
       org: this.$route.query.org,
       role: this.$route.query.role,
       role: this.$route.query.role,
+      loading: false
     }
     }
   },
   },
   computed: {
   computed: {
@@ -103,7 +126,7 @@ export default {
               if (item.ttype == 2 && item.array.length > 0) {
               if (item.ttype == 2 && item.array.length > 0) {
                 item.array.forEach(item2 => {
                 item.array.forEach(item2 => {
                   if (item2.ttype == 1 && item2.json) {
                   if (item2.ttype == 1 && item2.json) {
-                      num++
+                    num++
                   }
                   }
                 })
                 })
               } else if (item.ttype == 1 && item.json) {
               } else if (item.ttype == 1 && item.json) {
@@ -122,38 +145,83 @@ export default {
         // let _array = JSON.parse(array)
         // let _array = JSON.parse(array)
         let _score = 0;
         let _score = 0;
         let scoreArray = [];
         let scoreArray = [];
-        for(var i = 0;i<array.length;i++){
+        for (var i = 0; i < array.length; i++) {
           let _array = JSON.parse(array[i].courseJson)
           let _array = JSON.parse(array[i].courseJson)
           let score = 0;
           let score = 0;
-          for(var j = 0;j<_array.length;j++){ 
+          for (var j = 0; j < _array.length; j++) {
             let el = _array[j];
             let el = _array[j];
             if ((el.ttype == 3 || el.ttype == 2) && el.array.length > 0) {
             if ((el.ttype == 3 || el.ttype == 2) && el.array.length > 0) {
-              for(var k = 0;k<el.array.length;k++){ 
+              for (var k = 0; k < el.array.length; k++) {
                 let item = el.array[k];
                 let item = el.array[k];
                 if (item.ttype == 2 && item.array.length > 0) {
                 if (item.ttype == 2 && item.array.length > 0) {
-                  for(var z = 0;z<item.array.length;z++){
+                  for (var z = 0; z < item.array.length; z++) {
                     let item2 = item.array[k];
                     let item2 = item.array[k];
                     if (item2.ttype == 1 && item2.json && item2.json.score2) {
                     if (item2.ttype == 1 && item2.json && item2.json.score2) {
-                      score+=parseInt(item2.json.score2)
+                      score += parseInt(item2.json.score2)
                     }
                     }
                   }
                   }
                 } else if (item.ttype == 1 && item.json && item.json.score2) {
                 } else if (item.ttype == 1 && item.json && item.json.score2) {
-                    score+=parseInt(item.json.score2)
+                  score += parseInt(item.json.score2)
                 }
                 }
               }
               }
             } else if (el.ttype == 1 && el.json && el.json.score2) {
             } else if (el.ttype == 1 && el.json && el.json.score2) {
-              score+=parseInt(el.json.score2)
+              score += parseInt(el.json.score2)
             }
             }
           }
           }
           scoreArray.push(score)
           scoreArray.push(score)
         }
         }
         scoreArray.forEach(el => {
         scoreArray.forEach(el => {
-          _score+=el
+          _score += el
         })
         })
         console.log(scoreArray)
         console.log(scoreArray)
         return (_score ? _score / scoreArray.length : 0);
         return (_score ? _score / scoreArray.length : 0);
       };
       };
     },
     },
+    getImg() {
+      return function (array) {
+        let _array = JSON.parse(array)
+        let _img = '';
+        s: for (var j = 0; j < _array.length; j++) {
+          let el = _array[j];
+          if ((el.ttype == 3 || el.ttype == 2) && el.array.length > 0) {
+            for (var k = 0; k < el.array.length; k++) {
+              let item = el.array[k];
+              if (item.ttype == 2 && item.array.length > 0) {
+                for (var z = 0; z < item.array.length; z++) {
+                  let item2 = item.array[k];
+                  if (item2.ttype == 1 && item2.type == 5 && item2.json && item2.json.file && item2.json.file.length > 0) {
+                    for (var k = 0; k < item2.json.file.length; k++) {
+                      let ik = item2.json.file[k];
+                      if (ik.type == 3) {
+                        _img = ik.url
+                        break s;
+                      }
+                    }
+                  }
+                }
+              } else if (item.ttype == 1 && item.type == 5 && item.json && item.json.file && item.json.file.length > 0) {
+                for (var k = 0; k < item.json.file.length; k++) {
+                  let ik = item.json.file[k];
+                  if (ik.type == 3) {
+                    _img = ik.url
+                    break s;
+                  }
+                }
+              }
+            }
+          } else if (el.ttype == 1 && el.type == 5 && el.json && el.json.file && el.json.file.length > 0) {
+            for (var k = 0; k < el.json.file.length; k++) {
+              let ik = el.json.file[k];
+              if (ik.type == 3) {
+                _img = ik.url
+                break s;
+              }
+            }
+          }
+        }
+        return _img;
+      };
+    },
   },
   },
   methods: {
   methods: {
     checkType(type) {
     checkType(type) {
@@ -174,6 +242,7 @@ export default {
         });
         });
     },
     },
     getWorks() {
     getWorks() {
+      this.loading = true;
       let params = {
       let params = {
         uid: this.userid,
         uid: this.userid,
         typeid: this.type,
         typeid: this.type,
@@ -181,32 +250,41 @@ export default {
       this.ajax
       this.ajax
         .get(this.$store.state.api + "getTestWorksPerson", params)
         .get(this.$store.state.api + "getTestWorksPerson", params)
         .then((res) => {
         .then((res) => {
+          this.loading = false;
           let array = res.data[0]
           let array = res.data[0]
+          let array2 = res.data[1]
           // 用于存储归类后的数据的对象
           // 用于存储归类后的数据的对象
-          const worksArray = {};
+          let worksArray = {};
 
 
           // 遍历原始数据,根据 parentId 进行分组
           // 遍历原始数据,根据 parentId 进行分组
-          array.forEach(item => {
-            if (!worksArray[item.courseid]) {
-              // console.log(item.chapters);
-              worksArray[item.courseid] = {
-                id: item.id,
-                courseid: item.courseid,
-                title: item.title,
-                time: item.time,
-                utime: item.utime,
-                chapters: item.chapters,
-                brief: item.brief,
-                array: []
-              };
-            }
-            worksArray[item.courseid].array.push(item);
+          array2.forEach(item => {
+            // console.log(item.chapters);
+            worksArray[item.courseId] = {
+              id: item.id,
+              courseid: item.courseId,
+              title: item.title,
+              time: item.time,
+              utime: item.utime,
+              chapters: item.chapters,
+              brief: item.brief,
+              array: []
+            };
           });
           });
+          worksArray = Object.values(worksArray)
+          worksArray.forEach(el => {
+            array.forEach(el2 => {
+              if (el.courseid == el2.courseid) {
+                el.array.push(el2);
+              }
+            })
+          })
+          // worksArray[item.courseid].array.push(item);
 
 
-          this.worksArray = Object.values(worksArray);
+          this.worksArray = worksArray;
           this.$forceUpdate();
           this.$forceUpdate();
         })
         })
         .catch((err) => {
         .catch((err) => {
+          this.loading = false;
           console.error(err);
           console.error(err);
         });
         });
     },
     },
@@ -239,7 +317,7 @@ export default {
         this.role
         this.role
       );
       );
     },
     },
-    doTest(cid,tid){
+    doTest(cid, tid) {
       this.$router.push(
       this.$router.push(
         "/doTest?cid=" +
         "/doTest?cid=" +
         cid +
         cid +
@@ -256,7 +334,22 @@ export default {
         this.role
         this.role
       );
       );
     },
     },
-    copyTest(tid){
+    doTest2(cid) {
+      this.$router.push(
+        "/doTest?cid=" +
+        cid +
+        "&userid=" +
+        this.userid +
+        "&oid=" +
+        this.oid +
+        "&org=" +
+        this.org +
+        "&type=3" +
+        "&role=" +
+        this.role
+      );
+    },
+    copyTest(tid) {
       let params = [{
       let params = [{
         tid: tid,
         tid: tid,
         uid: this.userid,
         uid: this.userid,
@@ -270,6 +363,33 @@ export default {
         .catch((err) => {
         .catch((err) => {
           console.error(err);
           console.error(err);
         });
         });
+    },
+    deleteTest(tid) {
+      let _this = this
+      _this
+        .$confirm("确定删除此提交的评测么?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        })
+        .then(() => {
+          let params = [{
+            tid: tid,
+          }];
+          _this.ajax
+            .post(_this.$store.state.api + "deleteTestCourseWorks", params)
+            .then((res) => {
+              _this.$message.success("删除成功");
+              _this.getWorks();
+            })
+            .catch((err) => {
+              console.error(err);
+            });
+        })
+        .catch(() => {
+          return;
+        });
+
     }
     }
   },
   },
   mounted() {
   mounted() {
@@ -334,6 +454,7 @@ export default {
 .check_nav>.gr::before,
 .check_nav>.gr::before,
 .check_nav>.md::before,
 .check_nav>.md::before,
 .check_nav>.jy::before,
 .check_nav>.jy::before,
+.check_nav>.bj::before,
 .check_nav>.yy::before {
 .check_nav>.yy::before {
   content: "";
   content: "";
   display: block;
   display: block;
@@ -384,6 +505,15 @@ export default {
   background-image: url('../../../../assets/icon/test/yy_icon_active.png');
   background-image: url('../../../../assets/icon/test/yy_icon_active.png');
 }
 }
 
 
+.check_nav>.bj::before {
+  background-image: url('../../../../assets/icon/test/bj_icon.png');
+}
+
+.check_nav>.active.bj::before {
+  background-image: url('../../../../assets/icon/test/bj_icon_active.png');
+}
+
+
 .check_box {
 .check_box {
   height: calc(100% - 50px);
   height: calc(100% - 50px);
   overflow: auto;
   overflow: auto;
@@ -422,15 +552,24 @@ export default {
 }
 }
 
 
 .test_panel_title>.title>span:nth-child(1) {
 .test_panel_title>.title>span:nth-child(1) {
-  color: rgb(100, 215, 155);
-  background: rgb(241, 255, 248);
   font-size: 12px;
   font-size: 12px;
-  border: 1px solid rgb(100, 215, 155);
   padding: 3px 5px;
   padding: 3px 5px;
   border-radius: 5px;
   border-radius: 5px;
   margin-right: 10px;
   margin-right: 10px;
 }
 }
 
 
+.test_panel_title>.title>.is:nth-child(1) {
+  color: rgb(100, 215, 155);
+  background: rgb(241, 255, 248);
+  border: 1px solid rgb(100, 215, 155);
+}
+
+.test_panel_title>.title>.no:nth-child(1) {
+  color: rgb(240, 66, 66);
+  background: rgb(255, 241, 241);
+  border: 1px solid rgb(240, 66, 66);
+}
+
 .test_panel_title>.title>span:nth-child(2) {
 .test_panel_title>.title>span:nth-child(2) {
   font-size: 18px;
   font-size: 18px;
   font-weight: 600;
   font-weight: 600;
@@ -441,7 +580,7 @@ export default {
   color: #a1a1a1;
   color: #a1a1a1;
 }
 }
 
 
-.test_panel_title>.time  > span + span{
+.test_panel_title>.time>span+span {
   margin-left: 10px;
   margin-left: 10px;
 }
 }
 
 
@@ -560,7 +699,7 @@ export default {
   min-width: 120px;
   min-width: 120px;
   height: 120px;
   height: 120px;
   border-radius: 5px;
   border-radius: 5px;
-  overflow: hidden;
+  /* overflow: hidden; */
   position: relative;
   position: relative;
 }
 }
 
 
@@ -568,10 +707,15 @@ export default {
   display: flex;
   display: flex;
 }
 }
 
 
+.test_add_box>.test:hover .delete {
+  display: block;
+}
+
 .test_add_box>.test>img {
 .test_add_box>.test>img {
   width: 100%;
   width: 100%;
   height: 100%;
   height: 100%;
   object-fit: cover;
   object-fit: cover;
+  border-radius: 5px;
 }
 }
 
 
 .test_add_box>.test+.test {
 .test_add_box>.test+.test {
@@ -592,6 +736,7 @@ export default {
   background: rgba(0, 0, 0, 0.5);
   background: rgba(0, 0, 0, 0.5);
   font-size: 14px;
   font-size: 14px;
   text-align: center;
   text-align: center;
+  border-radius: 5px;
 }
 }
 
 
 .test_add_box>.test>.time>span {
 .test_add_box>.test>.time>span {
@@ -611,6 +756,18 @@ export default {
   left: 0;
   left: 0;
   color: rgb(69, 141, 255);
   color: rgb(69, 141, 255);
   display: none;
   display: none;
+  border-radius: 5px;
+}
+
+.test_add_box>.test>.delete {
+  position: absolute;
+  width: 20px;
+  height: 20px;
+  right: -5px;
+  top: -5px;
+  cursor: pointer;
+  z-index: 2;
+  display: none;
 }
 }
 
 
 .test_add_box>.test>.mask>div {
 .test_add_box>.test>.mask>div {

+ 15 - 6
src/components/pages/testStudent/index.vue

@@ -82,7 +82,7 @@
               <div class="test_top_img" v-if="!item.typeN"></div>
               <div class="test_top_img" v-if="!item.typeN"></div>
               <el-tooltip :content="item.typeN" placement="top" effect="dark" v-else>
               <el-tooltip :content="item.typeN" placement="top" effect="dark" v-else>
                 <div class="test_top_img"
                 <div class="test_top_img"
-                  :class="{ gr: item.typeid == 'afc3f97f-2429-408d-8dcd-5e63a44d355a', md: item.typeid == '478bcccd-e3a1-472b-aa29-3ed7bc479469', js: item.typeid == '178a377a-b4f1-4a75-b3c3-2787a7c98784', yy: item.typeid == 'dda9728e-5f11-469e-89ee-aca518daf223' }">
+                  :class="{ gr: item.typeid == 'afc3f97f-2429-408d-8dcd-5e63a44d355a', md: item.typeid == '478bcccd-e3a1-472b-aa29-3ed7bc479469', js: item.typeid == '178a377a-b4f1-4a75-b3c3-2787a7c98784', yy: item.typeid == 'dda9728e-5f11-469e-89ee-aca518daf223', bj: item.typeid == 'afc3f97f-2429-408d-8dcd-5e63a44d355c' }">
                 </div>
                 </div>
               </el-tooltip>
               </el-tooltip>
               <div class="test_top_title">
               <div class="test_top_title">
@@ -98,17 +98,17 @@
             </div>
             </div>
             <div class="test_time tset_type">
             <div class="test_time tset_type">
               <span><span>类型</span></span>
               <span><span>类型</span></span>
+              <span v-if="!item.typeN">未设置类型</span>
+              <span v-else>{{ item.typeN }}</span>
+            </div>
+            <div class="test_time tset_type">
+              <span><span>分类</span></span>
               <span v-if="!item.typename">未设置分类</span>
               <span v-if="!item.typename">未设置分类</span>
               <el-tooltip :content="item.typename" placement="top" effect="dark" v-else>
               <el-tooltip :content="item.typename" placement="top" effect="dark" v-else>
                 <!-- content to trigger tooltip here -->
                 <!-- content to trigger tooltip here -->
                 <span>{{ item.typename }}</span>
                 <span>{{ item.typename }}</span>
               </el-tooltip>
               </el-tooltip>
             </div>
             </div>
-            <div class="test_time tset_type">
-              <span><span>类型</span></span>
-              <span v-if="!item.typeN">未设置类型</span>
-              <span v-else>{{ item.typeN }}</span>
-            </div>
             <div class="test_btn">
             <div class="test_btn">
               <div class="test_o_btn">
               <div class="test_o_btn">
               </div>
               </div>
@@ -1375,6 +1375,11 @@ export default {
   background: rgb(98, 102, 188);
   background: rgb(98, 102, 188);
 }
 }
 
 
+.test_top>.bj {
+    background: rgb(98, 158, 188);
+}
+
+
 .test_top>.test_top_img:after {
 .test_top>.test_top_img:after {
   content: '';
   content: '';
   display: block;
   display: block;
@@ -1400,6 +1405,10 @@ export default {
   background-image: url('../../../assets/icon/test/yy_icon_b.png');
   background-image: url('../../../assets/icon/test/yy_icon_b.png');
 }
 }
 
 
+.test_top>.bj:after {
+    background-image: url('../../../assets/icon/test/bj_icon_b.png');
+}
+
 .test_top>.test_top_title {
 .test_top>.test_top_title {
   display: flex;
   display: flex;
   flex-direction: column;
   flex-direction: column;

+ 2 - 2
src/components/pages/testStudent/view/preview.vue

@@ -352,14 +352,14 @@ export default {
       console.log(cjson);
       console.log(cjson);
       let params = [
       let params = [
         {
         {
-          uid: this.type == 3 ? this.tid : this.userid,
+          uid: (this.type == 3 && this.tid) ? this.tid : this.userid,
           cid: this.cid,
           cid: this.cid,
           cjson: JSON.stringify(cjson),
           cjson: JSON.stringify(cjson),
           type: '2',
           type: '2',
         },
         },
       ];
       ];
       this.ajax
       this.ajax
-        .post(this.$store.state.api + (this.type == 3 ? "addTestWorks2" : "addTestWorks"), params)
+        .post(this.$store.state.api + ((this.type == 3&& this.tid) ? "addTestWorks2" : "addTestWorks"), params)
         .then((res) => {
         .then((res) => {
           this.$message.success('提交成功')
           this.$message.success('提交成功')
           if(this.type == 3){
           if(this.type == 3){

部分文件因为文件数量过多而无法显示