lsc před 1 rokem
rodič
revize
d14b319508
28 změnil soubory, kde provedl 370 přidání a 104 odebrání
  1. 1 1
      dist/index.html
  2. 0 0
      dist/static/css/app.18480d37189981f655820af0fd4b57eb.css
  3. 0 0
      dist/static/css/app.18480d37189981f655820af0fd4b57eb.css.map
  4. 0 0
      dist/static/css/app.d9d87c40a4665c9d71600f6fab41430b.css.map
  5. binární
      dist/static/img/add_check_icon_active.de065e2.png
  6. binární
      dist/static/img/add_edit_icon.7184d1d.png
  7. 0 0
      dist/static/js/app.8338eae5fb24e54e17d0.js
  8. 0 0
      dist/static/js/app.8338eae5fb24e54e17d0.js.map
  9. 0 0
      dist/static/js/app.8b6ef6ae46262fcfa90e.js
  10. 0 0
      dist/static/js/manifest.3512a67a6213c2df4180.js.map
  11. 76 0
      src/assets/css/button.css
  12. binární
      src/assets/icon/test/type_group_icon.png
  13. binární
      src/assets/icon/test/type_page_icon.png
  14. 0 0
      src/assets/icon/test/type_text_icon.png
  15. 1 1
      src/components/pages/test/add/components/GapFilling/gap.vue
  16. 2 1
      src/components/pages/test/add/components/GapFilling/index.vue
  17. 49 21
      src/components/pages/test/add/components/checkOrder.vue
  18. 8 1
      src/components/pages/test/add/components/choice/index.vue
  19. 1 1
      src/components/pages/test/add/edit/check/gap.vue
  20. 76 49
      src/components/pages/test/add/edit/edit/index.vue
  21. 92 11
      src/components/pages/test/add/edit/index.vue
  22. 24 4
      src/components/pages/test/add/setInfo/manualCreated.vue
  23. 3 0
      src/components/pages/test/check/check.vue
  24. 13 5
      src/components/pages/test/index.vue
  25. 16 7
      src/components/pages/testStudent/index.vue
  26. 3 0
      src/components/pages/testStudent/view/check.vue
  27. 2 2
      src/components/pages/testStudent/view/component/topic.vue
  28. 3 0
      src/components/pages/testStudent/view/preview.vue

+ 1 - 1
dist/index.html

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

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/static/css/app.18480d37189981f655820af0fd4b57eb.css


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/static/css/app.18480d37189981f655820af0fd4b57eb.css.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/static/css/app.d9d87c40a4665c9d71600f6fab41430b.css.map


binární
dist/static/img/add_check_icon_active.de065e2.png


binární
dist/static/img/add_edit_icon.7184d1d.png


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/static/js/app.8338eae5fb24e54e17d0.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/static/js/app.8338eae5fb24e54e17d0.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/static/js/app.8b6ef6ae46262fcfa90e.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/static/js/manifest.3512a67a6213c2df4180.js.map


+ 76 - 0
src/assets/css/button.css

@@ -243,3 +243,79 @@
   margin-right: 7px;
   background-image: url(../icon/new/upload.png);
 }
+
+
+.pub_test_btn {
+  color: #101010;
+  background-color: rgb(240, 242, 245);
+  padding: 8px 10px;
+  font-size: 14px;
+  min-width: 90px;
+  font-weight: 500;
+  border-radius: 4px;
+  box-sizing: border-box;
+  border: none;
+  cursor: pointer;
+  transition: all 0.2s ease-in-out;
+  display: flex;
+  align-items: center;
+  justify-content: left;
+  line-height: 1;
+}
+
+.pub_test_btn:has(+.pub_test_btn) {
+  margin-right: 10px;
+}
+
+.pub_test_btn_text::before,
+.pub_test_btn_choose::before,
+.pub_test_btn_page::before,
+.pub_test_btn_group::before,
+.pub_test_btn_file::before {
+  content: "";
+  width: 14px;
+  height: 14px;
+  min-width: 14px;
+  min-height: 14px;
+  background-size: 100% 100%;
+  display: block;
+  margin-right: 7px;
+}
+
+
+.pub_test_btn_text::before {
+  background-image: url(../icon/test/type_text_icon.png);
+}
+.pub_test_btn_choose::before {
+  background-image: url(../icon/test/type_check_icon.png);
+}
+.pub_test_btn_file::before {
+  background-image: url(../icon/test/type_file_icon.png);
+}
+.pub_test_btn_page::before {
+  background-image: url(../icon/test/type_page_icon.png);
+}
+.pub_test_btn_group::before {
+  background-image: url(../icon/test/type_group_icon.png);
+}
+
+.test_icon{
+  display: inline-block;
+  width: 18px;
+  height: 18px;
+  background-size: 100% 100%;
+  cursor: pointer;
+  position: relative;
+  top: 3px;
+  margin-right: 5px;
+}
+
+.test_icon_check{
+  background-image: url('../icon/test/type_check_icon.png');
+}
+.test_icon_gap{
+  background-image: url('../icon/test/type_text_icon.png');
+}
+.test_icon_file{
+  background-image: url('../icon/test/type_file_icon.png');
+}

binární
src/assets/icon/test/type_group_icon.png


binární
src/assets/icon/test/type_page_icon.png


+ 0 - 0
src/assets/icon/test/text_icon.png → src/assets/icon/test/type_text_icon.png


+ 1 - 1
src/components/pages/test/add/components/GapFilling/gap.vue

@@ -10,7 +10,7 @@
             </div>
             <div class="choices">
                 <textarea readonly rows="2" class="binfo_input binfo_textarea" cols
-                    placeholder=""></textarea>
+                    placeholder="填写者回答区"></textarea>
             </div>
         </div>
     </div>

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

@@ -74,6 +74,7 @@ export default {
         checkJson: {
             handler(newVal) {
                 this.$emit("setJson", newVal)
+                console.log('gapW', this.cJson);
             },
             deep: true
         }
@@ -110,7 +111,7 @@ export default {
         } else {
             this.checkJson = this.depthCopy(this.cJson);
         }
-
+        console.log('gap', this.cJson);
     },
 }
 </script>

+ 49 - 21
src/components/pages/test/add/components/checkOrder.vue

@@ -2,9 +2,10 @@
     <div class="co_box">
         <div v-for="(item1, index1) in this.checkJson" :key="index1" class="mc_ti_1" :draggable="isdrag == `${index1}`"
             :class="{ active: checkC === `x${index1}` }" @click.stop="checkTitle(`${index1}`, 1, item1)">
-            <div class="title" :style="{fontSize: etype == 'order' && '16px'}">
+            <div class="title" :style="{ fontSize: etype == 'order' && '16px' }">
                 <div class="drag" @mousedown="setDrag(`${index1}`)" @mouseup="isdrag = ''"></div>
-                <span>{{ selectType(item1, index1) }}</span>
+                <span class="content" v-html="selectType(item1, index1)"></span>
+                <!-- {{ selectType(item1, index1) }} -->
                 <div class="btnBox">
                     <!-- <div class="edit" @click.stop="editCheck(`${index1}`,item1)" v-if="item1.ttype == 1 && canEdit.indexOf(item1.type) !== -1 && etype == 'edit'"></div> -->
                     <div class="delete" @click.stop="deleteCheck(`${index1}`)"></div>
@@ -16,9 +17,9 @@
                 <div v-for="(item2, index2) in item1.array" :key="`${index1}-${index2}`" class="mc_ti_2"
                     :draggable="isdrag == `${index1}-${index2}`" :class="{ active: checkC === `x${index1}-${index2}` }"
                     @click.stop="checkTitle(`${index1}-${index2}`, 2, item2)">
-                    <div class="title" :style="{fontSize: etype == 'order' && '16px'}">
+                    <div class="title" :style="{ fontSize: etype == 'order' && '16px' }">
                         <div class="drag" @mousedown="setDrag(`${index1}-${index2}`)" @mouseup="isdrag = ''"></div>
-                        <span>{{ selectType(item2, index2) }}</span>
+                        <span class="content" v-html="selectType(item2, index2)"></span>
                         <div class="btnBox">
                             <!-- <div class="edit" @click.stop="editCheck(`${index1}-${index2}`,item2)" v-if="item2.ttype == 1 && canEdit.indexOf(item2.type) !== -1 && etype == 'edit'"></div> -->
                             <div class="delete" @click.stop="deleteCheck(`${index1}-${index2}`)"></div>
@@ -31,10 +32,10 @@
                             :draggable="isdrag == `${index1}-${index2}-${index3}`"
                             :class="{ active: checkC === `x${index1}-${index2}-${index3}` }"
                             @click.stop="checkTitle(`${index1}-${index2}-${index3}`, 3, item3)">
-                            <div class="title" :style="{fontSize: etype == 'order' && '16px'}">
+                            <div class="title" :style="{ fontSize: etype == 'order' && '16px' }">
                                 <div class="drag" @mousedown="setDrag(`${index1}-${index2}-${index3}`)"
                                     @mouseup="isdrag = ''"></div>
-                                <span>{{ selectType(item3, index3) }}</span>
+                                <span class="content" v-html="selectType(item3, index3)"></span>
                                 <div class="btnBox">
                                     <!-- <div class="edit" @click.stop="editCheck(`${index1}-${index2}-${index3}`,item3)" v-if="item3.ttype == 1 && canEdit.indexOf(item3.type) !== -1 && etype == 'edit'"></div> -->
                                     <div class="delete" @click.stop="deleteCheck(`${index1}-${index2}-${index3}`)"></div>
@@ -133,6 +134,9 @@ export default {
         etype: {
             type: String,
             default: ""
+        },
+        cJson:{
+            type:Object,
         }
     },
     data() {
@@ -141,14 +145,22 @@ export default {
             isdrag: "",
             canEdit: [1, 3, 5],
             ctype: "",
-            cJson: {}
+            // cJson: {}
         }
     },
     computed: {
         selectType() {
             return function (item, index) {
                 if (item.ttype == 1) {
-                    return index + 1 + "、" + this.options2[item.type] + (item.json && this.etype != 'edit' ? `:${item.json.title}` : "");
+                    let className = "test_icon"
+                    if(item.type == 1){
+                        className += " test_icon_check"
+                    }else if(item.type == 3){
+                        className += " test_icon_gap"
+                    }else if(item.type == 5){
+                        className += " test_icon_file"
+                    }
+                    return index + 1 + "、" + (item.json && this.etype != 'edit' ? `<span class='${className}'></span>` : `<span class='${className}'></span>`+this.options2[item.type]) + (item.json && this.etype != 'edit' ? `${item.json.title}` : "");
                 } else if (item.ttype == 2) {
                     return `第${index + 1}组 (共${item.array.length}题)`;
                 } else if (item.ttype == 3) {
@@ -181,25 +193,32 @@ export default {
             this.$emit("changeJson", this.manualJson);
         },
         checkTitle(index, type, item) {
+            let _index = index.split("-");
+            let cJson = {}
+            if (type == 1 && item.ttype == 1) {
+                cJson = this.manualJson[_index[0]].json ? JSON.parse(JSON.stringify(this.manualJson[_index[0]].json)) : '';
+            } else if (type == 2 && item.ttype == 1) {
+                cJson = this.manualJson[_index[0]].array[_index[1]].json ? JSON.parse(JSON.stringify(this.manualJson[_index[0]].array[_index[1]].json)) : '';
+            } else if (type == 3 && item.ttype == 1) {
+                cJson = this.manualJson[_index[0]].array[_index[1]].array[_index[2]].json ? JSON.parse(JSON.stringify(this.manualJson[_index[0]].array[_index[1]].array[_index[2]].json)) : '';
+            }
+            // this.cJson = {type: type, index: _index, item: item}
+            // this.cJson = item.json;
+            this.$forceUpdate();
+            this.ctype = type
             if (this.checkC === "x" + index) {
                 this.$emit("update:checkC", "")
             } else {
                 this.$emit("update:checkC", 'x' + index)
             }
-            let _index = index.split("-");
-
-            this.ctype = type
-            if (this.ctype == 1 && item.ttype == 1) {
-                this.cJson = this.manualJson[_index[0]].json
-            } else if (this.ctype == 2 && item.ttype == 1) {
-                this.cJson = this.manualJson[_index[0]].array[_index[1]].json
-            } else if (this.ctype == 3 && item.ttype == 1) {
-                this.cJson = this.manualJson[_index[0]].array[_index[1]].array[_index[2]].json
-            }
+            this.$forceUpdate();
+            // console.log(this.cJson);
+            this.$emit("update:cJson", cJson)
         },
         setJson(json) {
             let _index = this.checkC.replace("x", "").split("-");
-            this.cJson = json
+            // this.cJson = json
+            this.$emit("update:cJson", json)
             if (this.ctype == 1) {
                 this.manualJson[_index[0]].json = json
             } else if (this.ctype == 2) {
@@ -407,12 +426,21 @@ export default {
 
 .mc_ti_1.active>.title>.drag,
 .mc_ti_2.active>.title>.drag,
-.mc_ti_3.active>.title>.drag{
+.mc_ti_3.active>.title>.drag {
     background-image: url('../../../../../assets/icon/test/drag_icon_active.png');
 }
 
+.mc_ti_1>.title>.content,
+.mc_ti_2>.title>.content,
+.mc_ti_3>.title>.content {
+    word-break: break-all;
+}
+
 .edit_box {
     width: 100%;
     box-sizing: border-box;
     padding: 10px 0 0;
-}</style>
+}
+
+
+</style>

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

@@ -68,6 +68,13 @@ export default {
         checkJson: {
             handler(newVal) {
                 this.$emit("setJson", newVal)
+                console.log('checkW',this.cJson);
+            },
+            deep: true
+        },
+        cJson: {
+            handler(newVal) {
+                console.log(newVal);
             },
             deep: true
         }
@@ -119,7 +126,7 @@ export default {
         } else {
             this.checkJson = this.depthCopy(this.cJson);
         }
-
+        console.log('check',this.cJson);
     },
 }
 </script>

+ 1 - 1
src/components/pages/test/add/edit/check/gap.vue

@@ -9,7 +9,7 @@
                 <!-- </div><div v-html="checkJson.title"></div> -->
             </div>
             <div class="choices">
-                <textarea  :readonly="checktype == 2" rows="2" v-autoHeight="68" class="binfo_input binfo_textarea" cols v-model="checkJson.answer2"
+                <textarea :readonly="checktype == 2" rows="2" v-autoHeight="68" class="binfo_input binfo_textarea" cols v-model="checkJson.answer2"
                     placeholder=""></textarea>
             </div>
         </div>

+ 76 - 49
src/components/pages/test/add/edit/edit/index.vue

@@ -1,14 +1,19 @@
 <template>
     <div class="edit_box">
         <div class="e_add">
-            <div class="title">题目添加</div>
+            <div class="title" style="margin-bottom: 20px;">题目添加</div>
             <div class="e_add_box">
-                <div class="title">添加题型</div>
+                <div class="title">基础题型</div>
                 <div class="e_add_ci">
-                    <div class="title">基础题型</div>
+                    <!-- <div class="title">基础题型</div> -->
                     <div class="box">
-                        <div class="btn" v-for="item in options" :key="item.label" @click="addCheck(item.value)"><el-button type="primary"
-                                size="mini">{{ item.label }}</el-button></div>
+                        <div class="btn" v-for="item in options" :key="item.label" @click="addCheck(item.value)">
+                            <!-- <el-button type="primary"
+                                size="mini">{{ item.label }}</el-button> -->
+                            <button class="pub_test_btn"
+                                :class="{ pub_test_btn_text: item.value == 3, pub_test_btn_choose: item.value == 1, pub_test_btn_file: item.value == 5 }">{{
+                                    item.label }}</button>
+                        </div>
                     </div>
                 </div>
             </div>
@@ -16,22 +21,29 @@
                 <div class="title">添加组件</div>
                 <div class="e_add_ci">
                     <div class="box">
-                        <div class="btn" v-for="item in buttonOptions" :key="item.name" @click="addQtype(item.type)"><el-button type="primary"
-                                size="mini">{{ item.name }}</el-button></div>
+                        <div class="btn" v-for="item in buttonOptions" :key="item.name" @click="addQtype(item.type)">
+                            <!-- <el-button type="primary"
+                                size="mini">{{ item.name }}</el-button> -->
+                            <button class="pub_test_btn"
+                                :class="{ pub_test_btn_group: item.type == 1, pub_test_btn_page: item.type == 2 }">{{ item.name
+                                }}</button>
+                        </div>
                     </div>
                 </div>
             </div>
         </div>
         <div class="e_content">
-            <div class="title">{{title}}</div>
+            <div class="title">{{ title }}</div>
             <div class="e_order_box">
-                <checkOrder :checkC.sync="checkC" :checkJson="manualJson" @changeJson="changeJson" etype="edit"></checkOrder>
+                <checkOrder :checkC.sync="checkC" :checkJson="manualJson" @changeJson="changeJson" etype="edit" :cJson.sync="cJson">
+                </checkOrder>
             </div>
         </div>
         <div class="e_order">
             <div class="title">题目排序 <span style="font-size: 14px;color: #373737;">总分:{{ score }}分</span></div>
             <div class="e_order_box" style="margin-top: 20px;">
-                <checkOrder :checkC.sync="checkC" :checkJson="manualJson" @changeJson="changeJson" etype="order"></checkOrder>
+                <checkOrder :checkC.sync="checkC" :checkJson="manualJson" @changeJson="changeJson" etype="order" :cJson.sync="cJson">
+                </checkOrder>
             </div>
         </div>
     </div>
@@ -49,19 +61,20 @@ export default {
         checkJson: {
             type: Array,
         },
-        title:{
-            type:String
+        title: {
+            type: String
         }
     },
     data() {
         return {
             manualJson: [],
             checkC: "",
+            cJson:{}
         }
     },
     watch: {
-        checkJson:{
-            handler(newVal){
+        checkJson: {
+            handler(newVal) {
                 this.manualJson = this.depthCopy(newVal);
             },
             deep: true
@@ -73,21 +86,21 @@ export default {
             this.manualJson.forEach(el => {
                 if ((el.ttype == 3 || el.ttype == 2) && el.array.length > 0) {
                     el.array.forEach(item => {
-                      if(item.ttype == 2 && item.array.length > 0){
-                          item.array.forEach(item2 => {
-                            if(item2.ttype == 1 && item2.json){
-                                score += item2.json.score ? parseFloat(item2.json.score) : 0
-                            } 
-                          })
-                      } else if(item.ttype == 1 && item.json){
-                        score += item.json.score ? parseFloat(item.json.score) : 0
-                      } 
+                        if (item.ttype == 2 && item.array.length > 0) {
+                            item.array.forEach(item2 => {
+                                if (item2.ttype == 1 && item2.json) {
+                                    score += item2.json.score ? parseFloat(item2.json.score) : 0
+                                }
+                            })
+                        } else if (item.ttype == 1 && item.json) {
+                            score += item.json.score ? parseFloat(item.json.score) : 0
+                        }
                     })
-                } else if(el.ttype == 1 && el.json){ 
+                } else if (el.ttype == 1 && el.json) {
                     score += el.json.score ? parseFloat(el.json.score) : 0
                 }
             })
-            return  score > 0 ? score : '未设置分数'
+            return score > 0 ? score : '未设置分数'
         }
     },
     methods: {
@@ -116,33 +129,33 @@ export default {
                 if (_json.array) {
                     if (type == 3 && _check.length == 2) {
                         if (this.manualJson[_check[0]].array[_check[1]].array) {
-                                this.manualJson[_check[0]].array[_check[1]].array.push(json)
+                            this.manualJson[_check[0]].array[_check[1]].array.push(json)
                         } else {
-                                this.manualJson[_check[0]].array.splice(parseInt(_check[1]) + 1, 0, json)
+                            this.manualJson[_check[0]].array.splice(parseInt(_check[1]) + 1, 0, json)
                         }
 
                     } else if (type == 3 && _check.length == 3) {
-                            this.manualJson[_check[0]].array[_check[1]].array.splice(parseInt(_check[2]) + 1, 0, json)
+                        this.manualJson[_check[0]].array[_check[1]].array.splice(parseInt(_check[2]) + 1, 0, json)
                     } else if (type == 2 && _check.length == 2) {
-                            this.manualJson[_check[0]].array.splice(parseInt(_check[1]) + 1, 0, json)
+                        this.manualJson[_check[0]].array.splice(parseInt(_check[1]) + 1, 0, json)
                     } else if (type == 2 && _check.length == 1) {
-                            this.manualJson[_check[0]].array.push(json)
+                        this.manualJson[_check[0]].array.push(json)
                     } else if (type == 3 && _check.length == 1) {
-                        if(this.manualJson[_check[0]].array[0] && this.manualJson[_check[0]].array[0].array){
-                                this.manualJson[_check[0]].array[0].array.push(json)
-                        }else{
-                                this.manualJson[_check[0]].array.push(json)
+                        if (this.manualJson[_check[0]].array[0] && this.manualJson[_check[0]].array[0].array) {
+                            this.manualJson[_check[0]].array[0].array.push(json)
+                        } else {
+                            this.manualJson[_check[0]].array.push(json)
                         }
                     }
                 } else {
-                        this.manualJson.splice(parseInt(_check[0]) + 1, 0, json);
+                    this.manualJson.splice(parseInt(_check[0]) + 1, 0, json);
                 }
             } else {
                 if (type == 1) {
-                        this.manualJson.push({
-                            ttype: 1,
-                            type: topicType
-                        });
+                    this.manualJson.push({
+                        ttype: 1,
+                        type: topicType
+                    });
                 } else if (type == 3 || type == 2) {
                     this.$message.error("请选中分页或者分组添加题目");
                     return;
@@ -257,7 +270,7 @@ export default {
     overflow: hidden;
     display: flex;
     justify-content: space-between;
-    padding: 10px 0 0;
+    padding: 0 0 0;
     box-sizing: border-box;
 }
 
@@ -268,18 +281,19 @@ export default {
     overflow: auto;
     padding: 20px 10px;
     box-sizing: border-box;
+    border-right: 1px solid #E5E5E5;
 }
 
 .e_content {
     height: 100%;
-    width: calc(100% - 620px);
+    width: calc(100% - 600px);
     background: #fff;
     overflow: auto;
-    padding: 20px 10px;
+    padding: 20px 0;
     box-sizing: border-box;
 }
 
-.e_content > .title{
+.e_content>.title {
     font-size: 24px;
     font-weight: bold;
     text-align: center;
@@ -305,17 +319,30 @@ export default {
 
 .e_add_box {
     width: 100%;
-    border: 1px solid #dcdcdc;
-    margin-top: 20px;
+    /* border: 1px solid #dcdcdc; */
+    margin-top: 10px;
     border-radius: 3px;
-    background: #f4f4f4;
+    /* background: #f4f4f4; */
     box-sizing: border-box;
-    padding: 10px 20px;
+    padding: 0 20px 0;
 }
 
 .e_add_box>.title {
-    text-align: center;
-    font-weight: bold;
+    margin-bottom: 10px;
+    font-size: 15px;
+    font-weight: 700;
+    display: flex;
+    align-items: center;
+}
+
+.e_add_box>.title::before{
+    content: '';
+    width: 10px;
+    height: 10px;
+    border-radius: 50%;
+    background: rgb(54, 129, 252);
+    margin-right: 10px;
+    display: block;
 }
 
 .e_add_box>.e_add_ci {

+ 92 - 11
src/components/pages/test/add/edit/index.vue

@@ -1,9 +1,12 @@
 <template>
   <div class="rightBox">
+    <div class="title">
+      <div class="c_info_title">创建评测内容</div>
+    </div>
     <div class="edit_top">
       <div class="edit_btn">
-        <span :class="{ active: type == 1 }" @click="type = 1">编辑</span>
-        <span :class="{ active: type == 2 }" @click="type = 2">预览</span>
+        <span class="edit" :class="{ active: type == 1 }" @click="type = 1">编辑</span>
+        <span class="check" :class="{ active: type == 2 }" @click="type = 2">预览</span>
         <!-- <span :class="{ active: type == 3 }" @click="type = 3">回答</span>
         <span :class="{ active: type == 4 }" @click="type = 4">统计</span> -->
       </div>
@@ -15,7 +18,7 @@
       </div>
     </div>
     <div class="e_box">
-      <editBox v-if="type == 1" :checkJson="checkJson"  @changeJson="changeJson" :title="title"></editBox>
+      <editBox v-if="type == 1" :checkJson="checkJson" @changeJson="changeJson" :title="title"></editBox>
       <checkBox v-if="type == 2" :cJson="checkJson" :title="title"></checkBox>
     </div>
   </div>
@@ -55,7 +58,7 @@ export default {
   },
   watch: {
     cJson: {
-      handler: function (newVal, oldVal) { 
+      handler: function (newVal, oldVal) {
         this.checkJson = this.depthCopy(newVal);
       },
       deep: true,
@@ -85,9 +88,31 @@ export default {
 </script>
 
 <style scoped>
+.c_info_title {
+  padding: 15px 0 15px 0;
+  font-size: 16px;
+  font-weight: bold;
+  margin: 0 0 0 0;
+  box-sizing: border-box;
+  display: flex;
+  align-items: center;
+  line-height: 20px;
+}
+
+.c_info_title::before {
+  content: '';
+  display: block;
+  width: 3px;
+  height: 20px;
+  background: #0061FF;
+  border-radius: 3px;
+  margin: 0 5px 0 0;
+}
+
 .rightBox {
   width: calc(100%);
-  background: #F0F2F5;
+  /* background: #F0F2F5; */
+  background: #fff;
   overflow: auto;
   height: calc(100%);
   margin: 0 auto;
@@ -95,6 +120,13 @@ export default {
   box-sizing: border-box;
 }
 
+.rightBox>.title {
+  background: #fff;
+  width: 100%;
+  padding: 0 20px 0;
+  box-sizing: border-box;
+}
+
 .edit_top {
   height: 50px;
   background: #fff;
@@ -106,33 +138,82 @@ export default {
 
 .edit_top>.edit_btn {
   display: flex;
-  height: 100%;
+  height: 40px;
   align-items: center;
+  border: 1px solid #E5E5E5;
+  box-sizing: border-box;
+  padding: 4px;
+  border-radius: 4px;
 }
 
 .edit_top>.edit_btn>span {
   cursor: pointer;
   padding-bottom: 5px;
   display: block;
+  width: 90px;
+  padding: 0 15px;
+  height: 100%;
+  font-size: 14px;
+  box-sizing: border-box;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  border-radius: 4px;
 }
 
 .edit_top>.edit_btn>.active {
   color: #3e88f4;
-  border-bottom: 2px solid #2f80f3;
+  /* border-bottom: 2px solid #2f80f3; */
+  background: rgb(224, 234, 251);
 }
 
 .edit_top>.edit_btn>span+span {
-  margin-left: 35px;
+  margin-left: 10px;
+}
+
+
+.edit_top>.edit_btn>span::before {
+  content: '';
+  display: block;
+  background-size: 100% 100%;
+  margin-right: 8px;
 }
 
+.edit_top>.edit_btn>.check::before {
+  width: 15px;
+  height: 15px;
+  background-image: url(../../../../../assets/icon/test/add_check_icon.png);
+}
+
+.edit_top>.edit_btn>.edit::before {
+  width: 15px;
+  height: 16px;
+  background-image: url(../../../../../assets/icon/test/add_edit_icon.png);
+}
+
+.edit_top>.edit_btn>.active.check::before {
+  background-image: url(../../../../../assets/icon/test/add_check_icon_active.png);
+}
+
+.edit_top>.edit_btn>.active.edit::before {
+  background-image: url(../../../../../assets/icon/test/add_edit_icon_active.png);
+}
+
+
 .edit_top>.op_btn {
   position: absolute;
   right: 30px;
 }
 
 .e_box {
-  height: calc(100% - 50px);
-  width: 100%;
+  height: calc(100% - 135px);
+  width: calc(100% - 40px);
   overflow: hidden;
-  background: rgb(196, 226, 241);
+  /* background: rgb(196, 226, 241); */
+  background: #fff;
+  border: 1px solid #E5E5E5;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+  margin: 15px auto 0;
+  border-radius: 5px;
 }</style>

+ 24 - 4
src/components/pages/test/add/setInfo/manualCreated.vue

@@ -14,10 +14,13 @@
                 </div>
             </div>
             <div class="mc_addBox_add">
-                <div class="title">请添加题目类型与数量</div>
+                <div class="title">请添加试卷组件</div>
                 <div class="btnBox">
-                    <el-button type="primary" size="mini" v-for="item in buttonOptions" :key="item.type" class="e-button"
-                        @click="addQtype(item.type)">{{ item.name }}</el-button>
+                    <!-- <el-button type="primary" size="mini" v-for="item in buttonOptions" :key="item.type" class="e-button"
+                        @click="addQtype(item.type)">{{ item.name }}</el-button> -->
+                        <button v-for="item in buttonOptions" :key="item.type" class="pub_test_btn" 
+                        :class="{ pub_test_btn_group: item.type == 1, pub_test_btn_page: item.type == 2 }"
+                        @click="addQtype(item.type)">{{ item.name }}</button>
                 </div>
             </div>
         </div>
@@ -291,6 +294,20 @@ export default {
 
 .mc_addBox_add .title {
     margin-bottom: 10px;
+    font-size: 15px;
+    font-weight: 700;
+    display: flex;
+    align-items: center;
+}
+
+.mc_addBox_add .title::before{
+    content: '';
+    width: 10px;
+    height: 10px;
+    border-radius: 50%;
+    background: rgb(54, 129, 252);
+    margin-right: 10px;
+    display: block;
 }
 
 .mc_addBox_add .select {
@@ -298,7 +315,10 @@ export default {
     align-items: center;
 }
 
-.mc_addBox_add .btnBox {}
+.mc_addBox_add .btnBox {
+    display: flex;
+    flex-wrap: wrap;
+}
 
 .mc_addBox_add .select .e-select {}
 

+ 3 - 0
src/components/pages/test/check/check.vue

@@ -218,5 +218,8 @@ export default {
   padding: 0 30px;
   border-top: 2px solid #eee;
   border-bottom: 2px solid #eee;
+  width: 95%;
+  margin: 0 auto;
+  box-sizing: border-box;
 }
 </style>

+ 13 - 5
src/components/pages/test/index.vue

@@ -100,13 +100,13 @@
                             </div>
                         </div>
                         <div class="test_time">
-                            <span>创建日期:</span><span>{{ item.time }}</span>
+                            <span><span>创建日期</span></span><span>{{ item.time }}</span>
                         </div>
                         <div class="test_time">
-                            <span>修改日期:</span><span>{{ item.utime }}</span>
+                            <span><span>修改日期</span></span><span>{{ item.utime }}</span>
                         </div>
                         <div class="test_time">
-                            <span>分类:</span>
+                            <span><span>分类</span></span>
                             <span v-if="!item.typename">未设置分类</span>
                             <el-tooltip :content="item.typename" placement="top" effect="dark" v-else>
                                 <!-- content to trigger tooltip here -->
@@ -1389,10 +1389,18 @@ export default {
 
 .test_box>.test_time>span:nth-child(1) {
     width: 70px;
-    text-align: right;
-    display: block;
+    display: flex;
+}
+
+
+.test_box>.test_time>span:nth-child(1) > span{
+  width: 100%;
+  text-align-last: justify;
 }
 
+.test_box>.test_time>span:nth-child(1)::after{
+    content: ':';
+}
 .test_box>.test_time>span:nth-child(2) {
     width: calc(100% - 70px);
     overflow: hidden;

+ 16 - 7
src/components/pages/testStudent/index.vue

@@ -91,13 +91,13 @@
               </div>
             </div>
             <div class="test_time">
-              <span>创建日期:</span><span>{{ item.time }}</span>
+              <span><span>创建日期</span></span><span>{{ item.time }}</span>
             </div>
             <div class="test_time">
-              <span>修改日期:</span><span>{{ item.utime }}</span>
+              <span><span>修改日期</span></span><span>{{ item.utime }}</span>
             </div>
             <div class="test_time tset_type">
-              <span>分类:</span>
+              <span><span>分类</span></span>
               <span v-if="!item.typename">未设置分类</span>
               <el-tooltip :content="item.typename" placement="top" effect="dark" v-else>
                 <!-- content to trigger tooltip here -->
@@ -1428,10 +1428,19 @@ export default {
   display: flex;
 }
 
-.test_box>.test_time > span:nth-child(1){
-  width: 70px;
-  text-align: right;
-  display: block;
+.test_box>.test_time>span:nth-child(1) {
+    width: 70px;
+    display: flex;
+}
+
+
+.test_box>.test_time>span:nth-child(1) > span{
+  width: 100%;
+  text-align-last: justify;
+}
+
+.test_box>.test_time>span:nth-child(1)::after{
+    content: ':';
 }
 
 .test_box>.test_time > span:nth-child(2){

+ 3 - 0
src/components/pages/testStudent/view/check.vue

@@ -239,5 +239,8 @@ export default {
   padding: 0 30px;
   border-top: 2px solid #eee;
   border-bottom: 2px solid #eee;
+  width: 95%;
+  margin: 0 auto;
+  box-sizing: border-box;
 }
 </style>

+ 2 - 2
src/components/pages/testStudent/view/component/topic.vue

@@ -242,8 +242,8 @@ export default {
 }
 
 .c_box_brief{
-  width: 50%;
-  text-align: center;
+  width: 90%;
+  text-align: left;
   font-size: 14px;
   word-break: break-all;
   margin: 10px auto;

+ 3 - 0
src/components/pages/testStudent/view/preview.vue

@@ -457,5 +457,8 @@ export default {
   padding: 0 30px;
   border-top: 2px solid #eee;
   border-bottom: 2px solid #eee;
+  width: 95%;
+  margin: 0 auto;
+  box-sizing: border-box;
 }
 </style>

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů