chenxiong před 3 roky
rodič
revize
aa516e1b69
33 změnil soubory, kde provedl 2455 přidání a 1031 odebrání
  1. binární
      dist.rar
  2. 3 1
      index.html
  3. 5 0
      package-lock.json
  4. 1 0
      package.json
  5. 19 1
      src/common/tools.js
  6. 57 12
      src/components/toolbar/index.vue
  7. 1 1
      src/main.js
  8. 66 34
      src/pages/about/index.vue
  9. 171 87
      src/pages/bank-exam-all-explain/index.vue
  10. 184 76
      src/pages/bank-exam-continue/index.vue
  11. 236 128
      src/pages/bank-exam-explain/index.vue
  12. 171 64
      src/pages/bank-exam-wrong-explain/index.vue
  13. 296 185
      src/pages/bank-exam/index.vue
  14. 12 4
      src/pages/bank-list/index.vue
  15. 28 7
      src/pages/bank-report/index.vue
  16. 2 2
      src/pages/course-detail/index.vue
  17. 180 68
      src/pages/course-exam/index.vue
  18. 12 4
      src/pages/course-list/index.vue
  19. 10 0
      src/pages/course-report/index.vue
  20. 26 5
      src/pages/goods-detail/bank-detail.vue
  21. 21 2
      src/pages/goods-detail/course-detail.vue
  22. 5 2
      src/pages/home/index.vue
  23. 4 1
      src/pages/login/index.vue
  24. 3 0
      src/pages/person-center/bank-record/index.vue
  25. 3 0
      src/pages/person-center/bank-record/record-list/index.vue
  26. 10 7
      src/pages/person-center/my-bank/bank-detail/index.vue
  27. 42 48
      src/pages/person-center/my-bank/bank-explain-detail/index.vue
  28. 1 1
      src/pages/person-center/my-collect/index.vue
  29. 175 67
      src/pages/subject/collect-bank.vue
  30. 174 67
      src/pages/subject/collect-type-bank.vue
  31. 174 67
      src/pages/subject/wrong-bank.vue
  32. 175 67
      src/pages/subject/wrong-type-bank.vue
  33. 188 23
      src/router/index.js

binární
dist.rar


+ 3 - 1
index.html

@@ -4,7 +4,9 @@
 <head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width,initial-scale=1.0">
-  <title>祥粤云学堂</title>
+  <meta name="keywords" content="祥粤云学堂-一级建造师,二级建造师,造价工程师,一级消防工程师,BIM,在线教育,职业教育,报考条件,报名时间,建造师注册,建造工程师" />
+  <meta name="description" content="祥粤云学堂-职业教育一站式学习平台,专注一建,二建,造价工程师,一级消防工程师,BIM等工程师技能知识培训服务热线:020-87085982" />
+  <title>祥粤云学堂-建造师造价师在线教育培训平台报名报考</title>
 </head>
 
 <body>

+ 5 - 0
package-lock.json

@@ -5860,6 +5860,11 @@
       "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
       "dev": true
     },
+    "jsencrypt": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/jsencrypt/-/jsencrypt-3.2.1.tgz",
+      "integrity": "sha512-k1sD5QV0KPn+D8uG9AdGzTQuamt82QZ3A3l6f7TRwMU6Oi2Vg0BsL+wZIQBONcraO1pc78ExMdvmBBJ8WhNYUA=="
+    },
     "jsesc": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",

+ 1 - 0
package.json

@@ -12,6 +12,7 @@
   "dependencies": {
     "axios": "^0.26.1",
     "element-ui": "^2.15.6",
+    "jsencrypt": "^3.2.1",
     "moment": "^2.29.2",
     "print-js": "^1.6.0",
     "swiper": "^6.8.4",

+ 19 - 1
src/common/tools.js

@@ -3,6 +3,10 @@ import * as baseUrls from '@/axios.js'
 import store from '@/store/index.js'
 import router from '@/router/index.js'
 
+import { JSEncrypt } from "jsencrypt";
+
+let publicKey = "-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4qkbwIKErstK1sFESPEhOShpRpj4+sOVpJHxl5r/2xLBfA/MrXcAEra5Ro9cXNQSqmLLt8wecoLk/glfa5IdhXV0hRVQplIVs5z3MxcUa9ptKPHUTgh8xMCBvl8sUJKwkmn4vYWeDfHT22EL7Hr1pTMwUhF6WiNlWfQTVoF1rhwIDAQAB-----END PUBLIC KEY-----"
+
 export default {
   getToken() {
     return localStorage.getItem('token')
@@ -200,5 +204,19 @@ export default {
       image.src = url + "?time=" + Date.now();
     })
     
-  }
+  },
+
+  /**
+   * 
+   * @param {*} data 
+   * @returns 
+   * 加密
+   */
+  encryptor(data) {
+    let encryptor = new JSEncrypt(); 
+    encryptor.setPublicKey(publicKey); 
+    let data_encrypted = encryptor.encrypt(data);
+    return data_encrypted;
+  },
+
 }

+ 57 - 12
src/components/toolbar/index.vue

@@ -9,19 +9,62 @@
 
     <div class="item">
       <el-popover placement="left" width="180" trigger="hover">
-        <img
-          style="width: 150px; height: 150px"
-          src="@/assets/xcxqrcode.jpg"
-          alt=""
-        />
-        <img slot="reference" src="@/assets/qr.png" class="img" alt="" />
+        <div>
+          <img
+            style="width: 150px; height: 150px"
+            src="@/assets/xcxqrcode.jpg"
+            alt=""
+          />
+          <div style="text-align: center" class="text">小程序二维码</div>
+        </div>
+        <div slot="reference">
+          <img src="@/assets/qr.png" class="img" alt="" />
+          <div class="text">
+            小程序
+            <div></div>
+            二维码
+          </div>
+        </div>
       </el-popover>
-      <div class="text">小程序二维码</div>
     </div>
 
     <div class="item">
-      <div class="text blue">020<br />87085982</div>
-      <div class="text">报名咨询</div>
+      <el-popover placement="left" width="180" trigger="hover">
+        <div style="height: 100px; text-align: center">
+          <img
+            style="width: 26px; height: 25px; margin-top: 10px"
+            src="@/assets/phone.png"
+            alt=""
+          />
+          <div
+            style="
+              font-size: 16px;
+              font-family: Microsoft YaHei;
+              font-weight: bold;
+              color: #3f8dfd;
+              line-height: 16px;
+            "
+          >
+            020-87085982
+          </div>
+          <div
+            style="
+              font-size: 12px;
+              font-family: Microsoft YaHei;
+              font-weight: 400;
+              color: #999999;
+              line-height: 24px;
+              margin-top: 10px;
+            "
+          >
+            报名电话
+          </div>
+        </div>
+        <div slot="reference">
+          <img src="@/assets/contact.png" class="img" alt="" />
+          <div class="text">报名咨询</div>
+        </div>
+      </el-popover>
     </div>
     <div class="item" @click="scollTop">
       <img src="@/assets/top.png" class="img" alt="" />
@@ -74,7 +117,7 @@ export default {
 <style scoped lang="scss">
 .toolBar {
   border: 1px solid #eeeeee;
-  box-shadow: 0px 0px 7px 1px rgba(7, 82, 208, 0.04);
+  box-shadow: 0px 3px 6px 0px rgba(213, 218, 224, 0.8);
   border-radius: 10px;
   padding: 4px;
   position: fixed;
@@ -83,10 +126,10 @@ export default {
   background: #fff;
   display: flex;
   flex-direction: column;
-  z-index: 12;
+  z-index: 9999;
   .item {
     cursor: pointer;
-    width: 78px;
+    width: 56px;
     height: 80px;
     border-bottom: 1px solid #eeeeee;
     display: flex;
@@ -104,6 +147,8 @@ export default {
       width: 24px;
       font-size: 24px;
       height: 24px;
+      display: block;
+      margin: 0 auto;
     }
 
     .text {

+ 1 - 1
src/main.js

@@ -22,7 +22,7 @@ Vue.prototype.$store = store
 Vue.prototype.$request = request
 Vue.prototype.$tools = tools
 Vue.prototype.$upload = upload
-Vue.prototype.$moment = moment;
+Vue.prototype.$moment = moment
 
 Vue.use(ElementUI);
 Vue.use(vueEsign)

+ 66 - 34
src/pages/about/index.vue

@@ -113,7 +113,7 @@
               data-wow-duration="300ms"
               data-wow-delay="100ms"
             >
-              <div class="about-img">
+              <div class="about-img about-img1">
                 <img
                   src="https://file-dev.xyyxt.net/web/pcImg/about-img01.jpg"
                 />
@@ -140,7 +140,7 @@
                   我校坚持“立足行业,服务社会”的办学理念,在教学模式上加速更新升级,在教研领域里不断推陈出新,在服务体系上坚持优化细化,大力推广新工艺、新模式、新技术、新标准以及新政策,为社会建设安全、企业发展壮大、人才职业规划提供专业务实的服务。
                 </p>
               </div>
-              <div class="about-img">
+              <div class="about-img about-img2">
                 <img
                   src="https://file-dev.xyyxt.net/web/pcImg/about-img02.jpg"
                 />
@@ -206,23 +206,23 @@
         <div class="row">
           <h2 id="about-3"><i></i>学校资质</h2>
           <div class="aboutpage about-3">
-            <div class="zizhi-info">
+            <div class="zizhi-info zizhi-info1">
               <img src="https://file-dev.xyyxt.net/web/pcImg/zizhi-img01.jpg" />
               <p>《中华人民共和国民办学校办学许可证》</p>
             </div>
-            <div class="zizhi-info">
+            <div class="zizhi-info zizhi-info2">
               <img src="https://file-dev.xyyxt.net/web/pcImg/zizhi-img02.jpg" />
               <p>《民办非企业单位登记证书》</p>
             </div>
-            <div class="zizhi-info">
+            <div class="zizhi-info zizhi-info3">
               <img src="https://file-dev.xyyxt.net/web/pcImg/zizhi-img03.jpg" />
               <p>《JKC环境管理体系认证证书》</p>
             </div>
-            <div class="zizhi-info">
+            <div class="zizhi-info zizhi-info4">
               <img src="https://file-dev.xyyxt.net/web/pcImg/zizhi-img04.jpg" />
               <p>《JKC质量管理体系认证证书》</p>
             </div>
-            <div class="zizhi-info">
+            <div class="zizhi-info zizhi-info5">
               <img src="https://file-dev.xyyxt.net/web/pcImg/zizhi-img05.jpg" />
               <p>《JKC职业健康安管管理体系认证证书》</p>
             </div>
@@ -818,33 +818,33 @@ export default {
     background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon09.png);
   }
 
-  // .about-nav-list li.con01 a:hover {
-  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon01-hover.png) !important;
-  // }
-  // .about-nav-list li.con02 a:hover {
-  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon02-hover.png) !important;
-  // }
-  // .about-nav-list li.con03 a:hover {
-  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon03-hover.png) !important;
-  // }
-  // .about-nav-list li.con04 a:hover {
-  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon04-hover.png) !important;
-  // }
-  // .about-nav-list li.con05 a:hover {
-  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon05-hover.png) !important;
-  // }
-  // .about-nav-list li.con06 a:hover {
-  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon06-hover.png) !important;
-  // }
-  // .about-nav-list li.con07 a:hover {
-  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon07-hover.png) !important;
-  // }
-  // .about-nav-list li.con08 a:hover {
-  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon08-hover.png) !important;
-  // }
-  // .about-nav-list li.con09 a:hover {
-  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon09-hover.png) !important;
-  // }
+  .about-nav-list li.con01 a:hover {
+    background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon01-hover.png) !important;
+  }
+  .about-nav-list li.con02 a:hover {
+    background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon02-hover.png) !important;
+  }
+  .about-nav-list li.con03 a:hover {
+    background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon03-hover.png) !important;
+  }
+  .about-nav-list li.con04 a:hover {
+    background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon04-hover.png) !important;
+  }
+  .about-nav-list li.con05 a:hover {
+    background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon05-hover.png) !important;
+  }
+  .about-nav-list li.con06 a:hover {
+    background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon06-hover.png) !important;
+  }
+  .about-nav-list li.con07 a:hover {
+    background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon07-hover.png) !important;
+  }
+  .about-nav-list li.con08 a:hover {
+    background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon08-hover.png) !important;
+  }
+  .about-nav-list li.con09 a:hover {
+    background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon09-hover.png) !important;
+  }
 
   #tbox {
     position: fixed;
@@ -918,6 +918,18 @@ export default {
   .about-info .about-img {
     float: left;
     width: 40%;
+
+    img {
+      max-width: 100%;
+    }
+  }
+
+  .about-info .about-img1 {
+    padding-top: 10%;
+  }
+
+  .about-info .about-img2 {
+    padding-top: 10%;
   }
   .about-info .about-txt {
     float: left;
@@ -956,7 +968,27 @@ export default {
     text-align: center;
     display: inline-block;
     margin-bottom: 40px;
+
+    img {
+      max-width: 100%;
+    }
+  }
+  .zizhi-info1 {
+    width: 489px;
   }
+  .zizhi-info2 {
+    width: 489px;
+  }
+  .zizhi-info3 {
+    width: 326px;
+  }
+  .zizhi-info4 {
+    width: 326px;
+  }
+  .zizhi-info5 {
+    width: 326px;
+  }
+
   .zizhi-info img {
     display: block;
     margin-bottom: 15px;

+ 171 - 87
src/pages/bank-exam-all-explain/index.vue

@@ -15,7 +15,7 @@
         </div>
         <div class="section__body">
           <div class="explain-record">
-            <div class="explain-record__body">
+            <div class="explain-record__body clearfix">
               <div class="left-box">
                 <div class="left-box__header">
                   <el-progress
@@ -33,6 +33,10 @@
                     >/{{ questionList.length }}道题
                   </div>
                 </div>
+                <div class="left-box__footer">
+                  <div class="btn" @click="prevQuestion">上一题</div>
+                  <div class="btn" @click="nextQuestion">下一题</div>
+                </div>
                 <div class="left-box__body">
                   <template v-for="(question, questionIndex) in questionList">
                     <div
@@ -54,7 +58,16 @@
                             v-for="(item, index) in question.jsonStr"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -71,7 +84,16 @@
                             v-for="(item, index) in question.jsonStr"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list">
@@ -116,7 +138,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -136,7 +167,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="answer-list">
@@ -157,7 +197,7 @@
                           <div class="explain-list__header">答案解析:</div>
                           <div
                             class="explain-list__body"
-                            v-if="question.analysisContent"
+                            v-html="question.analysisContent"
                           ></div>
                         </div>
                       </div>
@@ -184,7 +224,16 @@
                             v-for="(item, index) in judge"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -200,7 +249,16 @@
                             v-for="(item, index) in judge"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list">
@@ -263,6 +321,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -289,6 +356,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -343,6 +419,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -376,6 +461,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -431,7 +525,18 @@
                                     v-for="(item, index) in judge"
                                     :key="index"
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -452,7 +557,18 @@
                                     v-for="(item, index) in judge"
                                     :key="index"
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div class="answer-list">
@@ -484,7 +600,7 @@
                               :key="jsonIndex"
                             >
                               <div class="question__title">
-                                {{ jsonIndex }}、简答题
+                                {{ jsonIndex + 1 }}、简答题
                               </div>
                               <div
                                 class="question__desc"
@@ -541,7 +657,7 @@
                       :key="questionIndex"
                     >
                       <div class="question__title">
-                        {{ questionIndex }}、简答题
+                        {{ questionIndex + 1 }}、简答题
                       </div>
                       <div
                         class="question__desc"
@@ -579,11 +695,6 @@
                     </div>
                   </template>
                 </div>
-
-                <div class="left-box__footer">
-                  <div class="btn" @click="prevQuestion">上一题</div>
-                  <div class="btn" @click="nextQuestion">下一题</div>
-                </div>
               </div>
               <div class="right-box">
                 <div class="right-box__header">
@@ -613,6 +724,11 @@
                         <div class="box blue"></div>
                         已做未评改
                       </div>
+
+                      <div class="item">
+                        <div class="box yellow"></div>
+                        少选
+                      </div>
                       <div class="item">
                         <div class="box white"></div>
                         未做
@@ -627,6 +743,7 @@
                           :class="{
                             green: isRight(item, index),
                             red: isWrong(item, index),
+                            yellow: isPart(item, index),
                             blue: isOver(item, index),
                           }"
                           @click="changeIndex(index)"
@@ -637,7 +754,6 @@
                     </div>
                   </div>
                 </div>
-                <div class="right-box__footer"></div>
               </div>
             </div>
           </div>
@@ -844,8 +960,8 @@ export default {
           //多选
         } else if (item.type == 2) {
           //每一项都相等
-          return this.questionList[index].ans.some((item, i) => {
-            return item != this.questionList[index].ques[i];
+          return this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
           });
           //判断
         } else if (item.type == 3) {
@@ -857,6 +973,25 @@ export default {
         return false;
       }
     },
+    isPart(item, index) {
+      if (this.questionList[index].ques) {
+        if (item.type == 2) {
+          let isWrong = this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
+          });
+
+          let isRight = this.questionList[index].ans.every((item, i) => {
+            return item == this.questionList[index].ques[i];
+          });
+
+          if (!isRight && !isWrong) {
+            return true;
+          }
+        }
+      } else {
+        return false;
+      }
+    },
     right(bankIndex, ansIndex, option) {
       if (
         this.questionList[bankIndex].ques[ansIndex] &&
@@ -985,12 +1120,12 @@ export default {
 
         &__body {
           margin-bottom: 20px;
-          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
             width: 970px;
-            border-right: 1px solid #eee;
+            min-height: 630px;
+            border: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -1016,14 +1151,9 @@ export default {
             }
 
             &__body {
-              height: 550px;
               border-bottom: 1px solid #eee;
-
               .question {
                 padding: 12px 0 0 12px;
-                display: flex;
-                flex-direction: column;
-                height: 100%;
 
                 &__title {
                   padding-left: 12px;
@@ -1042,51 +1172,13 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
 
                   /deep/ img {
                     max-width: 100% !important;
-                    max-height: 400px !important;
                   }
                 }
 
                 &__content {
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-
                   /deep/ .el-tabs__item {
                     height: 40px;
                     line-height: 40px;
@@ -1186,7 +1278,7 @@ export default {
                     }
 
                     /deep/ .el-checkbox {
-                      white-space: pre-wrap;
+                      white-space: normal;
                     }
                   }
 
@@ -1316,7 +1408,8 @@ export default {
 
           .right-box {
             float: right;
-            width: 300px;
+            width: 299px;
+            border-right: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -1342,14 +1435,17 @@ export default {
               .card {
                 &__note {
                   display: flex;
-                  height: 40px;
+                  height: 64px;
                   align-items: center;
                   border-bottom: 1px solid #eee;
+                  flex-wrap: wrap;
 
                   .item {
                     display: flex;
                     align-items: center;
                     margin-left: 10px;
+                    width: 84px;
+                    font-size: 12px;
 
                     .box {
                       margin-right: 5px;
@@ -1365,11 +1461,13 @@ export default {
                       &.green {
                         background: #37c65b;
                       }
-
                       &.red {
                         background: #ff3a30;
                       }
 
+                      &.yellow {
+                        background: #ffc53d;
+                      }
                       &.blue {
                         background: #3f8dfd;
                       }
@@ -1378,24 +1476,6 @@ export default {
                 }
 
                 &__content {
-                  height: 470px;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
                   .list {
                     display: flex;
                     flex-wrap: wrap;
@@ -1432,6 +1512,9 @@ export default {
                         color: #fff;
                         background: #3f8dfd;
                       }
+                      &.yellow {
+                        background: #ffc53d;
+                      }
 
                       &.disabled {
                         cursor: not-allowed;
@@ -1447,6 +1530,7 @@ export default {
             }
 
             &__footer {
+              border-bottom: 1px solid #eee;
               height: 40px;
               display: flex;
               align-items: center;

+ 184 - 76
src/pages/bank-exam-continue/index.vue

@@ -33,6 +33,10 @@
                     >/{{ questionList.length }}道题
                   </div>
                 </div>
+                <div class="left-box__footer">
+                  <div class="btn" @click="prevQuestion">上一题</div>
+                  <div class="btn" @click="nextQuestion">下一题</div>
+                </div>
                 <div class="left-box__body">
                   <template v-for="(question, questionIndex) in questionList">
                     <div
@@ -61,7 +65,16 @@
                               )
                             "
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -78,7 +91,16 @@
                             v-for="(item, index) in question.jsonStr"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -134,7 +156,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -154,7 +185,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -175,7 +215,7 @@
                           <div class="explain-list__header">答案解析:</div>
                           <div
                             class="explain-list__body"
-                            v-if="question.analysisContent"
+                            v-html="question.analysisContent"
                           ></div>
                         </div>
                       </div>
@@ -222,7 +262,16 @@
                             :key="index"
                             @click="judgeSelect(question, questionIndex, index)"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -238,7 +287,16 @@
                             v-for="(item, index) in judge"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -320,6 +378,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -346,6 +413,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -405,6 +481,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -438,6 +523,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -519,7 +613,18 @@
                                       )
                                     "
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -540,7 +645,18 @@
                                     v-for="(item, index) in judge"
                                     :key="index"
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -578,7 +694,7 @@
                               :key="jsonIndex"
                             >
                               <div class="question__title">
-                                {{ jsonIndex }}、简答题
+                                {{ jsonIndex + 1 }}、简答题
                               </div>
                               <div
                                 class="question__desc"
@@ -718,7 +834,7 @@
                       :key="questionIndex"
                     >
                       <div class="question__title">
-                        {{ questionIndex }}、简答题
+                        {{ questionIndex + 1 }}、简答题
                       </div>
                       <div
                         class="question__desc"
@@ -820,11 +936,6 @@
                     </div>
                   </template>
                 </div>
-
-                <div class="left-box__footer">
-                  <div class="btn" @click="prevQuestion">上一题</div>
-                  <div class="btn" @click="nextQuestion">下一题</div>
-                </div>
               </div>
               <div class="right-box">
                 <div class="right-box__header">
@@ -838,6 +949,15 @@
                     >返回</el-button
                   >
                 </div>
+                <div class="right-box__footer">
+                  <el-button
+                    type="primary"
+                    :loading="loading"
+                    class="submit"
+                    @click="submit"
+                    >交卷</el-button
+                  >
+                </div>
                 <div class="right-box__header">答题卡</div>
                 <div class="right-box__body">
                   <div class="card">
@@ -854,6 +974,11 @@
                         <div class="box blue"></div>
                         已做未评改
                       </div>
+
+                      <div class="item">
+                        <div class="box yellow"></div>
+                        少选
+                      </div>
                       <div class="item">
                         <div class="box white"></div>
                         未做
@@ -868,6 +993,7 @@
                           :class="{
                             green: isRight(item, index),
                             red: isWrong(item, index),
+                            yellow: isPart(item, index),
                             blue: isOver(item, index),
                           }"
                           @click="changeIndex(index)"
@@ -878,15 +1004,6 @@
                     </div>
                   </div>
                 </div>
-                <div class="right-box__footer">
-                  <el-button
-                    type="primary"
-                    :loading="loading"
-                    class="submit"
-                    @click="submit"
-                    >交卷</el-button
-                  >
-                </div>
               </div>
             </div>
           </div>
@@ -1373,8 +1490,8 @@ export default {
           //多选
         } else if (item.type == 2) {
           //每一项都相等
-          return this.questionList[index].ans.some((item, i) => {
-            return item != this.questionList[index].ques[i];
+          return this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
           });
           //判断
         } else if (item.type == 3) {
@@ -1386,6 +1503,25 @@ export default {
         return false;
       }
     },
+    isPart(item, index) {
+      if (this.questionList[index].ques) {
+        if (item.type == 2) {
+          let isWrong = this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
+          });
+
+          let isRight = this.questionList[index].ans.every((item, i) => {
+            return item == this.questionList[index].ques[i];
+          });
+
+          if (!isRight && !isWrong) {
+            return true;
+          }
+        }
+      } else {
+        return false;
+      }
+    },
     right(bankIndex, ansIndex, option) {
       if (
         this.questionList[bankIndex].ques[ansIndex] &&
@@ -1548,6 +1684,7 @@ export default {
       let doWrongQuestionIds = []; //错题和未做题id(客观题)
       let doQuestionIds = []; //做过的题目id
       let rightQuestionIds = []; //做对的题目id
+      let lessQuestionNum = 0;
       this.questionList.forEach((item, index) => {
         passScore = item.passScore;
         if (item.type == 1) {
@@ -1621,7 +1758,8 @@ export default {
             } else {
               //部分分
               // number++;
-              doWrongQuestionIds.push(item.questionId);
+              lessQuestionNum++;
+              // doWrongQuestionIds.push(item.questionId);
               item.scoreResult = checkboxScore;
               score += checkboxScore;
               // rightQuestionIds.push(item.questionId)
@@ -1685,6 +1823,7 @@ export default {
           reportStatus: reportStatus,
           totalScore: allScore,
           recordId: this.recordId,
+          lessQuestionNum: lessQuestionNum,
           rightQuestionNum: number,
           status: 1,
           moduleExamId: this.moduleId || 0,
@@ -1877,12 +2016,12 @@ export default {
 
         &__body {
           margin-bottom: 20px;
-          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
             width: 970px;
-            border-right: 1px solid #eee;
+            min-height: 630px;
+            border: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -1908,9 +2047,6 @@ export default {
             }
 
             &__body {
-              height: 550px;
-              border-bottom: 1px solid #eee;
-
               .question {
                 padding: 12px 0 0 12px;
                 display: flex;
@@ -1934,51 +2070,13 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
 
                   /deep/ img {
                     max-width: 100% !important;
-                    max-height: 400px !important;
                   }
                 }
 
                 &__content {
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-
                   /deep/ .el-tabs__item {
                     height: 40px;
                     line-height: 40px;
@@ -2078,7 +2176,7 @@ export default {
                     }
 
                     /deep/ .el-checkbox {
-                      white-space: pre-wrap;
+                      white-space: normal;
                     }
                   }
 
@@ -2213,7 +2311,8 @@ export default {
 
           .right-box {
             float: right;
-            width: 300px;
+            width: 299px;
+            border-right: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -2239,14 +2338,17 @@ export default {
               .card {
                 &__note {
                   display: flex;
-                  height: 40px;
+                  height: 64px;
                   align-items: center;
                   border-bottom: 1px solid #eee;
+                  flex-wrap: wrap;
 
                   .item {
                     display: flex;
                     align-items: center;
                     margin-left: 10px;
+                    width: 84px;
+                    font-size: 12px;
 
                     .box {
                       margin-right: 5px;
@@ -2262,11 +2364,13 @@ export default {
                       &.green {
                         background: #37c65b;
                       }
-
                       &.red {
                         background: #ff3a30;
                       }
 
+                      &.yellow {
+                        background: #ffc53d;
+                      }
                       &.blue {
                         background: #3f8dfd;
                       }
@@ -2275,7 +2379,7 @@ export default {
                 }
 
                 &__content {
-                  height: 470px;
+                  height: 446px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {
@@ -2329,6 +2433,9 @@ export default {
                         color: #fff;
                         background: #3f8dfd;
                       }
+                      &.yellow {
+                        background: #ffc53d;
+                      }
 
                       &.disabled {
                         cursor: not-allowed;
@@ -2344,6 +2451,7 @@ export default {
             }
 
             &__footer {
+              border-bottom: 1px solid #eee;
               height: 40px;
               display: flex;
               align-items: center;

+ 236 - 128
src/pages/bank-exam-explain/index.vue

@@ -33,6 +33,10 @@
                     >/{{ questionList.length }}道题
                   </div> -->
                 </div>
+                <div class="left-box__footer">
+                  <div class="btn" @click="prevQuestion">上一题</div>
+                  <div class="btn" @click="nextQuestion">下一题</div>
+                </div>
                 <div class="left-box__body">
                   <template v-for="(question, questionIndex) in questionList">
                     <div
@@ -54,7 +58,16 @@
                             v-for="(item, index) in question.jsonStr"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -71,7 +84,16 @@
                             v-for="(item, index) in question.jsonStr"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list">
@@ -114,7 +136,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -134,7 +165,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="answer-list">
@@ -155,7 +195,7 @@
                           <div class="explain-list__header">答案解析:</div>
                           <div
                             class="explain-list__body"
-                            v-if="question.analysisContent"
+                            v-html="question.analysisContent"
                           ></div>
                         </div>
                       </div>
@@ -180,7 +220,16 @@
                             v-for="(item, index) in judge"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -196,7 +245,16 @@
                             v-for="(item, index) in judge"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list">
@@ -257,6 +315,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -283,6 +350,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -337,6 +413,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -370,6 +455,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -425,7 +519,18 @@
                                     v-for="(item, index) in judge"
                                     :key="index"
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -446,7 +551,18 @@
                                     v-for="(item, index) in judge"
                                     :key="index"
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div class="answer-list">
@@ -478,7 +594,7 @@
                               :key="jsonIndex"
                             >
                               <div class="question__title">
-                                {{ jsonIndex }}、简答题
+                                {{ jsonIndex + 1 }}、简答题
                               </div>
                               <div
                                 class="question__desc"
@@ -533,7 +649,7 @@
                       :key="questionIndex"
                     >
                       <div class="question__title">
-                        {{ questionIndex }}、简答题
+                        {{ questionIndex + 1 }}、简答题
                       </div>
                       <div
                         class="question__desc"
@@ -569,11 +685,6 @@
                     </div>
                   </template>
                 </div>
-
-                <div class="left-box__footer">
-                  <div class="btn" @click="prevQuestion">上一题</div>
-                  <div class="btn" @click="nextQuestion">下一题</div>
-                </div>
               </div>
               <div class="right-box">
                 <div class="right-box__header">
@@ -603,6 +714,11 @@
                         <div class="box blue"></div>
                         已做未评改
                       </div>
+
+                      <div class="item">
+                        <div class="box yellow"></div>
+                        少选
+                      </div>
                       <div class="item">
                         <div class="box white"></div>
                         未做
@@ -617,6 +733,7 @@
                           :class="{
                             green: isRight(item, index),
                             red: isWrong(item, index),
+                            yellow: isPart(item, index),
                             blue: isOver(item, index),
                           }"
                           @click="changeIndex(index)"
@@ -627,7 +744,6 @@
                     </div>
                   </div>
                 </div>
-                <div class="right-box__footer"></div>
               </div>
             </div>
           </div>
@@ -729,73 +845,73 @@ export default {
         })
         .then(async (res) => {
           res.data.forEach((item, index) => {
-            if (typeof item.jsonStr == "string") {
-              item.jsonStr = JSON.parse(item.jsonStr);
-
-              if (item.type == 2) {
-                //多选
-                item.jsonStr.forEach((str) => {
-                  str.optionsId = "" + str.optionsId;
-                });
-                let arr = item.answerQuestion.split(",");
-                arr.forEach((a, i) => {
-                  arr[i] = "" + a;
-                });
-                item.ans = arr;
-                item.ques = item.ans;
-                return;
-              } else if (item.type == 5) {
-                item.ansText = {
-                  text: item.analysisContent,
-                  imageList: [],
-                };
-
-                item.ques = {
-                  text: item.analysisContent,
-                  imageList: [],
-                };
-                return;
-              } else if (item.type == 4) {
-                console.log(item.jsonStr);
-                item.ques = [];
-                item.current = 0;
-                let ansArr = [];
-                item.jsonStr.forEach((json, index) => {
-                  if (json.type == 1) {
-                    ansArr[index] = json.answerQuestion;
-                  } else if (json.type == 2) {
-                    json.optionsList.forEach((str) => {
-                      str.optionsId = "" + str.optionsId;
-                    });
-                    let arr = json.answerQuestion.split(",");
-                    arr.forEach((a, i) => {
-                      arr[i] = "" + a;
-                    });
-                    ansArr[index] = arr;
-                  } else if (json.type == 3) {
-                    ansArr[index] = json.answerQuestion;
-                  } else if (json.type == 5) {
-                    ansArr[index] = {
-                      text: "",
-                      imageList: [],
-                    };
-                    json.ansText = {
-                      text: "",
-                      imageList: [],
-                    };
-                  }
-                });
-
-                item.ans = ansArr;
-                item.ques = item.ans;
-                return;
-              }
-
-              item.ans = item.answerQuestion;
+            // if (typeof item.jsonStr == "string") {
+            item.jsonStr = JSON.parse(item.jsonStr);
+
+            if (item.type == 2) {
+              //多选
+              item.jsonStr.forEach((str) => {
+                str.optionsId = "" + str.optionsId;
+              });
+              let arr = item.answerQuestion.split(",");
+              arr.forEach((a, i) => {
+                arr[i] = "" + a;
+              });
+              item.ans = arr;
               item.ques = item.ans;
-            } else {
+              return;
+            } else if (item.type == 5) {
+              item.ansText = {
+                text: item.analysisContent,
+                imageList: [],
+              };
+
+              item.ques = {
+                text: item.analysisContent,
+                imageList: [],
+              };
+              return;
+            } else if (item.type == 4) {
+              console.log(item.jsonStr);
+              item.ques = [];
+              item.current = 0;
+              let ansArr = [];
+              item.jsonStr.forEach((json, index) => {
+                if (json.type == 1) {
+                  ansArr[index] = json.answerQuestion;
+                } else if (json.type == 2) {
+                  json.optionsList.forEach((str) => {
+                    str.optionsId = "" + str.optionsId;
+                  });
+                  let arr = json.answerQuestion.split(",");
+                  arr.forEach((a, i) => {
+                    arr[i] = "" + a;
+                  });
+                  ansArr[index] = arr;
+                } else if (json.type == 3) {
+                  ansArr[index] = json.answerQuestion;
+                } else if (json.type == 5) {
+                  ansArr[index] = {
+                    text: "",
+                    imageList: [],
+                  };
+                  json.ansText = {
+                    text: "",
+                    imageList: [],
+                  };
+                }
+              });
+
+              item.ans = ansArr;
               item.ques = item.ans;
+              return;
             }
+
+            item.ans = item.answerQuestion;
+            item.ques = item.ans;
+            // } else {
+            //   item.ques = item.ans;
+            // }
           });
 
           this.questionList = res.data;
@@ -903,8 +1019,8 @@ export default {
           //多选
         } else if (item.type == 2) {
           //每一项都相等
-          return this.questionList[index].ans.some((item, i) => {
-            return item != this.questionList[index].ques[i];
+          return this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
           });
           //判断
         } else if (item.type == 3) {
@@ -916,6 +1032,25 @@ export default {
         return false;
       }
     },
+    isPart(item, index) {
+      if (this.questionList[index].ques) {
+        if (item.type == 2) {
+          let isWrong = this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
+          });
+
+          let isRight = this.questionList[index].ans.every((item, i) => {
+            return item == this.questionList[index].ques[i];
+          });
+
+          if (!isRight && !isWrong) {
+            return true;
+          }
+        }
+      } else {
+        return false;
+      }
+    },
     right(bankIndex, ansIndex, option) {
       if (
         this.questionList[bankIndex].ques[ansIndex] &&
@@ -1036,12 +1171,12 @@ export default {
 
         &__body {
           margin-bottom: 20px;
-          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
             width: 970px;
-            border-right: 1px solid #eee;
+            min-height: 630px;
+            border: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -1093,51 +1228,13 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
 
                   /deep/ img {
                     max-width: 100% !important;
-                    max-height: 400px !important;
                   }
                 }
 
                 &__content {
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-
                   /deep/ .el-tabs__item {
                     height: 40px;
                     line-height: 40px;
@@ -1237,7 +1334,7 @@ export default {
                     }
 
                     /deep/ .el-checkbox {
-                      white-space: pre-wrap;
+                      white-space: normal;
                     }
                   }
 
@@ -1346,6 +1443,7 @@ export default {
             }
 
             &__footer {
+              border-bottom: 1px solid #eee;
               height: 40px;
               display: flex;
               justify-content: space-around;
@@ -1367,7 +1465,8 @@ export default {
 
           .right-box {
             float: right;
-            width: 300px;
+            width: 299px;
+            border-right: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -1393,14 +1492,17 @@ export default {
               .card {
                 &__note {
                   display: flex;
-                  height: 40px;
+                  height: 64px;
                   align-items: center;
                   border-bottom: 1px solid #eee;
+                  flex-wrap: wrap;
 
                   .item {
                     display: flex;
                     align-items: center;
                     margin-left: 10px;
+                    width: 84px;
+                    font-size: 12px;
 
                     .box {
                       margin-right: 5px;
@@ -1416,11 +1518,13 @@ export default {
                       &.green {
                         background: #37c65b;
                       }
-
                       &.red {
                         background: #ff3a30;
                       }
 
+                      &.yellow {
+                        background: #ffc53d;
+                      }
                       &.blue {
                         background: #3f8dfd;
                       }
@@ -1429,7 +1533,7 @@ export default {
                 }
 
                 &__content {
-                  height: 470px;
+                  height: 446px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {
@@ -1483,6 +1587,9 @@ export default {
                         color: #fff;
                         background: #3f8dfd;
                       }
+                      &.yellow {
+                        background: #ffc53d;
+                      }
 
                       &.disabled {
                         cursor: not-allowed;
@@ -1498,6 +1605,7 @@ export default {
             }
 
             &__footer {
+              border-bottom: 1px solid #eee;
               height: 40px;
               display: flex;
               align-items: center;

+ 171 - 64
src/pages/bank-exam-wrong-explain/index.vue

@@ -33,6 +33,10 @@
                     >/{{ questionList.length }}道题
                   </div>
                 </div>
+                <div class="left-box__footer">
+                  <div class="btn" @click="prevQuestion">上一题</div>
+                  <div class="btn" @click="nextQuestion">下一题</div>
+                </div>
                 <div class="left-box__body">
                   <template v-for="(question, questionIndex) in questionList">
                     <div
@@ -54,7 +58,16 @@
                             v-for="(item, index) in question.jsonStr"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -71,7 +84,16 @@
                             v-for="(item, index) in question.jsonStr"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list">
@@ -116,7 +138,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -136,7 +167,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="answer-list">
@@ -157,7 +197,7 @@
                           <div class="explain-list__header">答案解析:</div>
                           <div
                             class="explain-list__body"
-                            v-if="question.analysisContent"
+                            v-html="question.analysisContent"
                           ></div>
                         </div>
                       </div>
@@ -184,7 +224,16 @@
                             v-for="(item, index) in judge"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -200,7 +249,16 @@
                             v-for="(item, index) in judge"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list">
@@ -263,6 +321,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -289,6 +356,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -343,6 +419,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -376,6 +461,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -431,7 +525,18 @@
                                     v-for="(item, index) in judge"
                                     :key="index"
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -452,7 +557,18 @@
                                     v-for="(item, index) in judge"
                                     :key="index"
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div class="answer-list">
@@ -484,7 +600,7 @@
                               :key="jsonIndex"
                             >
                               <div class="question__title">
-                                {{ jsonIndex }}、简答题
+                                {{ jsonIndex + 1 }}、简答题
                               </div>
                               <div
                                 class="question__desc"
@@ -541,7 +657,7 @@
                       :key="questionIndex"
                     >
                       <div class="question__title">
-                        {{ questionIndex }}、简答题
+                        {{ questionIndex + 1 }}、简答题
                       </div>
                       <div
                         class="question__desc"
@@ -579,11 +695,6 @@
                     </div>
                   </template>
                 </div>
-
-                <div class="left-box__footer">
-                  <div class="btn" @click="prevQuestion">上一题</div>
-                  <div class="btn" @click="nextQuestion">下一题</div>
-                </div>
               </div>
               <div class="right-box">
                 <div class="right-box__header">
@@ -613,6 +724,11 @@
                         <div class="box blue"></div>
                         已做未评改
                       </div>
+
+                      <div class="item">
+                        <div class="box yellow"></div>
+                        少选
+                      </div>
                       <div class="item">
                         <div class="box white"></div>
                         未做
@@ -627,6 +743,7 @@
                           :class="{
                             green: isRight(item, index),
                             red: isWrong(item, index),
+                            yellow: isPart(item, index),
                             blue: isOver(item, index),
                           }"
                           @click="changeIndex(index)"
@@ -637,7 +754,6 @@
                     </div>
                   </div>
                 </div>
-                <div class="right-box__footer"></div>
               </div>
             </div>
           </div>
@@ -874,8 +990,8 @@ export default {
           //多选
         } else if (item.type == 2) {
           //每一项都相等
-          return this.questionList[index].ans.some((item, i) => {
-            return item != this.questionList[index].ques[i];
+          return this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
           });
           //判断
         } else if (item.type == 3) {
@@ -887,6 +1003,25 @@ export default {
         return false;
       }
     },
+    isPart(item, index) {
+      if (this.questionList[index].ques) {
+        if (item.type == 2) {
+          let isWrong = this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
+          });
+
+          let isRight = this.questionList[index].ans.every((item, i) => {
+            return item == this.questionList[index].ques[i];
+          });
+
+          if (!isRight && !isWrong) {
+            return true;
+          }
+        }
+      } else {
+        return false;
+      }
+    },
     right(bankIndex, ansIndex, option) {
       if (
         this.questionList[bankIndex].ques[ansIndex] &&
@@ -1014,12 +1149,12 @@ export default {
         }
 
         &__body {
-          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
             width: 970px;
-            border-right: 1px solid #eee;
+            min-height: 630px;
+            border: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -1071,51 +1206,13 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
 
                   /deep/ img {
                     max-width: 100% !important;
-                    max-height: 400px !important;
                   }
                 }
 
                 &__content {
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-
                   /deep/ .el-tabs__item {
                     height: 40px;
                     line-height: 40px;
@@ -1215,7 +1312,7 @@ export default {
                     }
 
                     /deep/ .el-checkbox {
-                      white-space: pre-wrap;
+                      white-space: normal;
                     }
                   }
 
@@ -1345,7 +1442,8 @@ export default {
 
           .right-box {
             float: right;
-            width: 300px;
+            width: 299px;
+            border-right: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -1371,14 +1469,17 @@ export default {
               .card {
                 &__note {
                   display: flex;
-                  height: 40px;
+                  height: 64px;
                   align-items: center;
                   border-bottom: 1px solid #eee;
+                  flex-wrap: wrap;
 
                   .item {
                     display: flex;
                     align-items: center;
                     margin-left: 10px;
+                    width: 84px;
+                    font-size: 12px;
 
                     .box {
                       margin-right: 5px;
@@ -1394,11 +1495,13 @@ export default {
                       &.green {
                         background: #37c65b;
                       }
-
                       &.red {
                         background: #ff3a30;
                       }
 
+                      &.yellow {
+                        background: #ffc53d;
+                      }
                       &.blue {
                         background: #3f8dfd;
                       }
@@ -1407,7 +1510,7 @@ export default {
                 }
 
                 &__content {
-                  height: 470px;
+                  height: 446px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {
@@ -1461,6 +1564,9 @@ export default {
                         color: #fff;
                         background: #3f8dfd;
                       }
+                      &.yellow {
+                        background: #ffc53d;
+                      }
 
                       &.disabled {
                         cursor: not-allowed;
@@ -1476,6 +1582,7 @@ export default {
             }
 
             &__footer {
+              border-bottom: 1px solid #eee;
               height: 40px;
               display: flex;
               align-items: center;

+ 296 - 185
src/pages/bank-exam/index.vue

@@ -15,7 +15,7 @@
         </div>
         <div class="section__body">
           <div class="explain-record">
-            <div class="explain-record__body">
+            <div class="explain-record__body clearfix">
               <div class="left-box">
                 <div class="left-box__header">
                   <el-progress
@@ -33,6 +33,11 @@
                     >/{{ questionList.length }}道题
                   </div>
                 </div>
+
+                <div class="left-box__footer">
+                  <div class="btn" @click="prevQuestion">上一题</div>
+                  <div class="btn" @click="nextQuestion">下一题</div>
+                </div>
                 <div class="left-box__body">
                   <template v-for="(question, questionIndex) in questionList">
                     <div
@@ -61,7 +66,16 @@
                               )
                             "
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -78,7 +92,15 @@
                             v-for="(item, index) in question.jsonStr"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -134,7 +156,15 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -154,7 +184,15 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -175,7 +213,7 @@
                           <div class="explain-list__header">答案解析:</div>
                           <div
                             class="explain-list__body"
-                            v-if="question.analysisContent"
+                            v-html="question.analysisContent"
                           ></div>
                         </div>
                       </div>
@@ -222,7 +260,16 @@
                             :key="index"
                             @click="judgeSelect(question, questionIndex, index)"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -238,7 +285,16 @@
                             v-for="(item, index) in judge"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -320,6 +376,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -346,6 +411,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -405,6 +479,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -438,6 +521,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -519,7 +611,18 @@
                                       )
                                     "
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -540,7 +643,18 @@
                                     v-for="(item, index) in judge"
                                     :key="index"
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -578,7 +692,7 @@
                               :key="jsonIndex"
                             >
                               <div class="question__title">
-                                {{ jsonIndex }}、简答题
+                                {{ jsonIndex + 1 }}、简答题
                               </div>
                               <div
                                 class="question__desc"
@@ -718,7 +832,7 @@
                       :key="questionIndex"
                     >
                       <div class="question__title">
-                        {{ questionIndex }}、简答题
+                        {{ questionIndex + 1 }}、简答题
                       </div>
                       <div
                         class="question__desc"
@@ -820,11 +934,6 @@
                     </div>
                   </template>
                 </div>
-
-                <div class="left-box__footer">
-                  <div class="btn" @click="prevQuestion">上一题</div>
-                  <div class="btn" @click="nextQuestion">下一题</div>
-                </div>
               </div>
               <div class="right-box">
                 <div class="right-box__header">
@@ -838,6 +947,16 @@
                     >返回</el-button
                   >
                 </div>
+
+                <div class="right-box__footer">
+                  <el-button
+                    type="primary"
+                    :loading="loading"
+                    class="submit"
+                    @click="submit"
+                    >交卷</el-button
+                  >
+                </div>
                 <div class="right-box__header">
                   <div class="title">答题卡</div>
                   <div class="time" v-if="allTimes">
@@ -859,6 +978,11 @@
                         <div class="box blue"></div>
                         已做未评改
                       </div>
+
+                      <div class="item">
+                        <div class="box yellow"></div>
+                        少选
+                      </div>
                       <div class="item">
                         <div class="box white"></div>
                         未做
@@ -873,6 +997,7 @@
                           :class="{
                             green: isRight(item, index),
                             red: isWrong(item, index),
+                            yellow: isPart(item, index),
                             blue: isOver(item, index),
                           }"
                           @click="changeIndex(index)"
@@ -883,15 +1008,6 @@
                     </div>
                   </div>
                 </div>
-                <div class="right-box__footer">
-                  <el-button
-                    type="primary"
-                    :loading="loading"
-                    class="submit"
-                    @click="submit"
-                    >交卷</el-button
-                  >
-                </div>
               </div>
             </div>
           </div>
@@ -1182,112 +1298,41 @@ export default {
           }
 
           res.data.forEach((item, index) => {
-            if (typeof item.jsonStr == "string") {
-              item.jsonStr = JSON.parse(item.jsonStr);
-
-              if (item.type == 2) {
-                //多选
-                item.jsonStr.forEach((str) => {
-                  str.optionsId = "" + str.optionsId;
-                });
-                let arr = item.answerQuestion.split(",");
-                arr.forEach((a, i) => {
-                  arr[i] = "" + a;
-                });
-                item.ans = arr;
-                item.quesSelect = [];
-                item.analysisContent &&
-                  (item.analysisContent = item.analysisContent.replace(
-                    /<img/gi,
-                    '<img style="max-width:100%;"'
-                  ));
-                item.content &&
-                  (item.content = item.content.replace(
-                    /<img/gi,
-                    '<img style="max-width:100%;"'
-                  ));
-                return;
-              } else if (item.type == 5) {
-                //简答题
-                item.ansText = {
-                  text: "",
-                  imageList: [],
-                };
-                item.ques = {
-                  text: "",
-                  imageList: [],
-                };
-                item.analysisContent &&
-                  (item.analysisContent = item.analysisContent.replace(
-                    /<img/gi,
-                    '<img style="max-width:100%;"'
-                  ));
-                item.content &&
-                  (item.content = item.content.replace(
-                    /<img/gi,
-                    '<img style="max-width:100%;"'
-                  ));
-
-                return;
-              } else if (item.type == 4) {
-                //案例题
-                console.log(item.jsonStr);
-                item.ques = [];
-                item.tabIndex = "0";
-                let ansArr = [];
-                item.jsonStr.forEach((json, index) => {
-                  if (json.type == 1) {
-                    ansArr[index] = json.answerQuestion;
-                    json.content &&
-                      (json.content = json.content.replace(
-                        /<img/gi,
-                        '<img style="max-width:100%;"'
-                      ));
-                  } else if (json.type == 2) {
-                    json.optionsList.forEach((str) => {
-                      str.optionsId = "" + str.optionsId;
-                    });
-                    let arr = json.answerQuestion.split(",");
-                    arr.forEach((a, i) => {
-                      arr[i] = "" + a;
-                    });
-                    ansArr[index] = arr;
-                    json.content &&
-                      (json.content = json.content.replace(
-                        /<img/gi,
-                        '<img style="max-width:100%;"'
-                      ));
-                  } else if (json.type == 3) {
-                    ansArr[index] = json.answerQuestion;
-                    json.content &&
-                      (json.content = json.content.replace(
-                        /<img/gi,
-                        '<img style="max-width:100%;"'
-                      ));
-                  } else if (json.type == 5) {
-                    ansArr[index] = {
-                      text: "",
-                      imageList: [],
-                    };
-                    json.ansText = {
-                      text: "",
-                      imageList: [],
-                    };
-                    json.ques = {
-                      text: "",
-                      imageList: [],
-                    };
-                    json.content &&
-                      (json.content = json.content.replace(
-                        /<img/gi,
-                        '<img style="max-width:100%;"'
-                      ));
-                  }
-                });
+            item.jsonStr = JSON.parse(item.jsonStr);
 
-                item.ans = ansArr;
-                return;
-              }
+            console.log(item.type, "item");
+            if (item.type == 2) {
+              //多选
+              item.jsonStr.forEach((str) => {
+                str.optionsId = "" + str.optionsId;
+              });
+              let arr = item.answerQuestion.split(",");
+              arr.forEach((a, i) => {
+                arr[i] = "" + a;
+              });
+              item.ans = arr;
+              item.quesSelect = [];
+              item.analysisContent &&
+                (item.analysisContent = item.analysisContent.replace(
+                  /<img/gi,
+                  '<img style="max-width:100%;"'
+                ));
+              item.content &&
+                (item.content = item.content.replace(
+                  /<img/gi,
+                  '<img style="max-width:100%;"'
+                ));
+              return;
+            } else if (item.type == 5) {
+              //简答题
+              item.ansText = {
+                text: "",
+                imageList: [],
+              };
+              item.ques = {
+                text: "",
+                imageList: [],
+              };
               item.analysisContent &&
                 (item.analysisContent = item.analysisContent.replace(
                   /<img/gi,
@@ -1298,9 +1343,79 @@ export default {
                   /<img/gi,
                   '<img style="max-width:100%;"'
                 ));
-              item.ques = "";
-              item.ans = item.answerQuestion;
+
+              return;
+            } else if (item.type == 4) {
+              //案例题
+              console.log(item.jsonStr);
+              item.ques = [];
+              item.tabIndex = "0";
+              let ansArr = [];
+              item.jsonStr.forEach((json, index) => {
+                if (json.type == 1) {
+                  ansArr[index] = json.answerQuestion;
+                  json.content &&
+                    (json.content = json.content.replace(
+                      /<img/gi,
+                      '<img style="max-width:100%;"'
+                    ));
+                } else if (json.type == 2) {
+                  json.optionsList.forEach((str) => {
+                    str.optionsId = "" + str.optionsId;
+                  });
+                  let arr = json.answerQuestion.split(",");
+                  arr.forEach((a, i) => {
+                    arr[i] = "" + a;
+                  });
+                  ansArr[index] = arr;
+                  json.content &&
+                    (json.content = json.content.replace(
+                      /<img/gi,
+                      '<img style="max-width:100%;"'
+                    ));
+                } else if (json.type == 3) {
+                  ansArr[index] = json.answerQuestion;
+                  json.content &&
+                    (json.content = json.content.replace(
+                      /<img/gi,
+                      '<img style="max-width:100%;"'
+                    ));
+                } else if (json.type == 5) {
+                  ansArr[index] = {
+                    text: "",
+                    imageList: [],
+                  };
+                  json.ansText = {
+                    text: "",
+                    imageList: [],
+                  };
+                  json.ques = {
+                    text: "",
+                    imageList: [],
+                  };
+                  json.content &&
+                    (json.content = json.content.replace(
+                      /<img/gi,
+                      '<img style="max-width:100%;"'
+                    ));
+                }
+              });
+
+              item.ans = ansArr;
+              return;
             }
+            item.analysisContent &&
+              (item.analysisContent = item.analysisContent.replace(
+                /<img/gi,
+                '<img style="max-width:100%;"'
+              ));
+            item.content &&
+              (item.content = item.content.replace(
+                /<img/gi,
+                '<img style="max-width:100%;"'
+              ));
+            item.ques = "";
+            item.ans = item.answerQuestion;
           });
 
           this.questionList = res.data;
@@ -1360,6 +1475,7 @@ export default {
       let score = 0;
       let doQuestionNum = 0;
       let doQuestionIds = []; //做过的题目id
+      let lessQuestionNum = 0;
       this.questionList.forEach((item, index) => {
         if (item.type == 1) {
           if (item.ques == item.ans) {
@@ -1420,6 +1536,7 @@ export default {
             } else {
               //部分分
               // number++;
+              lessQuestionNum++;
               score += checkboxScore;
             }
           }
@@ -1822,8 +1939,8 @@ export default {
           //多选
         } else if (item.type == 2) {
           //每一项都相等
-          return this.questionList[index].ans.some((item, i) => {
-            return item != this.questionList[index].ques[i];
+          return this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
           });
           //判断
         } else if (item.type == 3) {
@@ -1835,6 +1952,25 @@ export default {
         return false;
       }
     },
+    isPart(item, index) {
+      if (this.questionList[index].ques) {
+        if (item.type == 2) {
+          let isWrong = this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
+          });
+
+          let isRight = this.questionList[index].ans.every((item, i) => {
+            return item == this.questionList[index].ques[i];
+          });
+
+          if (!isRight && !isWrong) {
+            return true;
+          }
+        }
+      } else {
+        return false;
+      }
+    },
     right(bankIndex, ansIndex, option) {
       if (
         this.questionList[bankIndex].ques[ansIndex] &&
@@ -2036,6 +2172,7 @@ export default {
       let doWrongQuestionIds = []; //错题和未做题id(客观题)
       let doQuestionIds = []; //做过的题目id
       let rightQuestionIds = []; //做对的题目id
+      let lessQuestionNum = 0;
       this.questionList.forEach((item, index) => {
         passScore = item.passScore;
         if (item.type == 1) {
@@ -2108,7 +2245,8 @@ export default {
             } else {
               //部分分
               // number++;
-              doWrongQuestionIds.push(item.questionId);
+              lessQuestionNum++;
+              // doWrongQuestionIds.push(item.questionId);
               item.scoreResult = checkboxScore;
               score += checkboxScore;
               // rightQuestionIds.push(item.questionId)
@@ -2178,6 +2316,7 @@ export default {
           orderGoodsId: this.orderGoodsId,
           reportStatus: reportStatus,
           recordId: this.recordId,
+          lessQuestionNum: lessQuestionNum,
           rightQuestionNum: number,
           status: 1,
           moduleExamId: this.moduleId || 0,
@@ -2241,6 +2380,7 @@ export default {
       let doWrongQuestionIds = []; //错题和未做题id(客观题)
       let doQuestionIds = []; //做过的题目id
       let rightQuestionIds = []; //做对的题目id
+      let lessQuestionNum = 0;
       console.log(111);
       this.questionList.forEach((item, index) => {
         passScore = item.passScore;
@@ -2314,7 +2454,8 @@ export default {
             } else {
               //部分分
               // number++;
-              doWrongQuestionIds.push(item.questionId);
+              lessQuestionNum++;
+              // doWrongQuestionIds.push(item.questionId);
               item.scoreResult = checkboxScore;
               score += checkboxScore;
               // rightQuestionIds.push(item.questionId)
@@ -2372,6 +2513,7 @@ export default {
           reportStatus: reportStatus,
           recordId: this.recordId,
           rightQuestionNum: number,
+          lessQuestionNum: lessQuestionNum,
           status: 1,
           moduleExamId: this.moduleId || 0,
           chapterExamId: this.chapterId || 0,
@@ -2422,12 +2564,12 @@ export default {
 
         &__body {
           margin-bottom: 20px;
-          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
             width: 970px;
-            border-right: 1px solid #eee;
+            min-height: 630px;
+            border: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -2453,9 +2595,6 @@ export default {
             }
 
             &__body {
-              height: 550px;
-              border-bottom: 1px solid #eee;
-
               .question {
                 padding: 12px 0 0 12px;
                 display: flex;
@@ -2479,51 +2618,13 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
 
                   /deep/ img {
                     max-width: 100% !important;
-                    max-height: 400px !important;
                   }
                 }
 
                 &__content {
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-
                   /deep/ .el-tabs__item {
                     height: 40px;
                     line-height: 40px;
@@ -2623,7 +2724,7 @@ export default {
                     }
 
                     /deep/ .el-checkbox {
-                      white-space: pre-wrap;
+                      white-space: normal;
                     }
                   }
 
@@ -2759,7 +2860,8 @@ export default {
 
           .right-box {
             float: right;
-            width: 300px;
+            width: 299px;
+            border-right: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -2796,14 +2898,17 @@ export default {
               .card {
                 &__note {
                   display: flex;
-                  height: 40px;
+                  height: 64px;
                   align-items: center;
                   border-bottom: 1px solid #eee;
+                  flex-wrap: wrap;
 
                   .item {
                     display: flex;
                     align-items: center;
                     margin-left: 10px;
+                    width: 84px;
+                    font-size: 12px;
 
                     .box {
                       margin-right: 5px;
@@ -2819,11 +2924,13 @@ export default {
                       &.green {
                         background: #37c65b;
                       }
-
                       &.red {
                         background: #ff3a30;
                       }
 
+                      &.yellow {
+                        background: #ffc53d;
+                      }
                       &.blue {
                         background: #3f8dfd;
                       }
@@ -2832,7 +2939,7 @@ export default {
                 }
 
                 &__content {
-                  height: 470px;
+                  height: 446px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {
@@ -2886,6 +2993,9 @@ export default {
                         color: #fff;
                         background: #3f8dfd;
                       }
+                      &.yellow {
+                        background: #ffc53d;
+                      }
 
                       &.disabled {
                         cursor: not-allowed;
@@ -2901,6 +3011,7 @@ export default {
             }
 
             &__footer {
+              border-bottom: 1px solid #eee;
               height: 40px;
               display: flex;
               align-items: center;

+ 12 - 4
src/pages/bank-list/index.vue

@@ -320,7 +320,7 @@ export default {
     }
 
     &__body {
-      background: #f5f7fa;
+      background: #ebf2fc;
       .course-classify {
         overflow: hidden;
 
@@ -349,6 +349,8 @@ export default {
                 padding: 8px 16px;
                 color: #666666;
                 font-size: 16px;
+                background: #f7f9fc;
+                color: #999;
 
                 &.active {
                   color: #fff;
@@ -373,13 +375,19 @@ export default {
               width: 96px;
               height: 32px;
               border-radius: 16px;
+              background: #ffffff;
+              border: 1px solid #bfbfbf;
+              border-radius: 16px;
               text-align: center;
-              line-height: 32px;
+              line-height: 30px;
+              font-size: 16px;
               margin-right: 20px;
 
               &.active {
-                color: #fff;
-                background: #666666;
+                background: #ebf2fc;
+                border: 1px solid #3f8dfd;
+                border-radius: 16px;
+                color: #3f8dfd;
               }
             }
           }

+ 28 - 7
src/pages/bank-report/index.vue

@@ -82,13 +82,24 @@
                   <span class="note">(客观题)</span>
                 </div>
                 <div class="desc">
-                  {{
-                    ((reportdata.rightQuestionNum /
-                      (reportdata.rightQuestionNum + wrongRecordWrongNum) ||
-                      0) *
-                      100)
-                      | toFixed(0)
-                  }}%
+                  <!-- 练习 -->
+                  <template v-if="examData.doType == 1">
+                    {{
+                      ((reportdata.rightQuestionNum /
+                        reportdata.doQuestionNum || 0) *
+                        100)
+                        | toFixed(0)
+                    }}%
+                  </template>
+                  <!-- 考试 -->
+                  <template v-if="examData.doType == 2">
+                    {{
+                      ((reportdata.rightQuestionNum /
+                        reportdata.totalQuestionNum || 0) *
+                        100)
+                        | toFixed(0)
+                    }}%
+                  </template>
                 </div>
                 <!-- <div class="other">满分{{ reportdata.totalScore }}</div> -->
               </div>
@@ -99,6 +110,12 @@
                   </div>
                   <div class="child__desc">正确题数</div>
                 </div>
+                <div class="child">
+                  <div class="child__title child__title--yellow">
+                    {{ reportdata.lessQuestionNum }}
+                  </div>
+                  <div class="child__desc">少选题数</div>
+                </div>
                 <div class="child child---right">
                   <div class="child__title child__title--warm">
                     {{ wrongRecordWrongNum }}
@@ -560,6 +577,10 @@ export default {
                   &--warm {
                     color: #ff3b30;
                   }
+
+                  &--yellow {
+                    color: #ffc53d;
+                  }
                 }
 
                 &__desc {

+ 2 - 2
src/pages/course-detail/index.vue

@@ -4787,7 +4787,7 @@ export default {
         wrap: "#playerzb",
         width: 810,
         height: 455,
-        showLine: false,
+        showLine: "off",
         uid: this.uidzb,
         vid: this.vidzb,
       });
@@ -4818,7 +4818,7 @@ export default {
         self.player = polyvPlayer({
           wrap: "#player",
           width: 810,
-          showLine: false,
+          showLine: "off",
           height: 455,
           ban_history_time: "on",
           vid: self.vid,

+ 180 - 68
src/pages/course-exam/index.vue

@@ -33,6 +33,10 @@
                     >/{{ questionList.length }}道题
                   </div>
                 </div>
+                <div class="left-box__footer">
+                  <div class="btn" @click="prevQuestion">上一题</div>
+                  <div class="btn" @click="nextQuestion">下一题</div>
+                </div>
                 <div class="left-box__body">
                   <template v-for="(question, questionIndex) in questionList">
                     <div
@@ -61,7 +65,16 @@
                               )
                             "
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -78,7 +91,16 @@
                             v-for="(item, index) in question.jsonStr"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -122,7 +144,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -142,7 +173,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -163,7 +203,7 @@
                           <div class="explain-list__header">答案解析:</div>
                           <div
                             class="explain-list__body"
-                            v-if="question.analysisContent"
+                            v-html="question.analysisContent"
                           ></div>
                         </div>
                       </div>
@@ -198,7 +238,16 @@
                             :key="index"
                             @click="judgeSelect(question, questionIndex, index)"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -214,7 +263,16 @@
                             v-for="(item, index) in judge"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -284,6 +342,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -310,6 +377,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -369,6 +445,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -402,6 +487,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -483,7 +577,18 @@
                                       )
                                     "
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -504,7 +609,18 @@
                                     v-for="(item, index) in judge"
                                     :key="index"
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -542,7 +658,7 @@
                               :key="jsonIndex"
                             >
                               <div class="question__title">
-                                {{ jsonIndex }}、简答题
+                                {{ jsonIndex + 1 }}、简答题
                               </div>
                               <div
                                 class="question__desc"
@@ -670,7 +786,7 @@
                       :key="questionIndex"
                     >
                       <div class="question__title">
-                        {{ questionIndex }}、简答题
+                        {{ questionIndex + 1 }}、简答题
                       </div>
                       <div
                         class="question__desc"
@@ -760,11 +876,6 @@
                     </div>
                   </template>
                 </div>
-
-                <div class="left-box__footer">
-                  <div class="btn" @click="prevQuestion">上一题</div>
-                  <div class="btn" @click="nextQuestion">下一题</div>
-                </div>
               </div>
               <div class="right-box">
                 <div class="right-box__header">
@@ -778,6 +889,10 @@
                     >返回</el-button
                   >
                 </div>
+
+                <div class="right-box__footer">
+                  <div class="submit" @click="submit">交卷</div>
+                </div>
                 <div class="right-box__header">
                   <div class="title">答题卡</div>
                   <div class="time" v-if="allTimes">
@@ -799,6 +914,11 @@
                         <div class="box blue"></div>
                         已做未评改
                       </div>
+
+                      <div class="item">
+                        <div class="box yellow"></div>
+                        少选
+                      </div>
                       <div class="item">
                         <div class="box white"></div>
                         未做
@@ -813,6 +933,7 @@
                           :class="{
                             green: isRight(item, index),
                             red: isWrong(item, index),
+                            yellow: isPart(item, index),
                             blue: isOver(item, index),
                           }"
                           @click="changeIndex(index)"
@@ -823,9 +944,6 @@
                     </div>
                   </div>
                 </div>
-                <div class="right-box__footer">
-                  <div class="submit" @click="submit">交卷</div>
-                </div>
               </div>
             </div>
           </div>
@@ -1771,8 +1889,8 @@ export default {
           //多选
         } else if (item.type == 2) {
           //每一项都相等
-          return this.questionList[index].ans.some((item, i) => {
-            return item != this.questionList[index].ques[i];
+          return this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
           });
           //判断
         } else if (item.type == 3) {
@@ -1784,6 +1902,25 @@ export default {
         return false;
       }
     },
+    isPart(item, index) {
+      if (this.questionList[index].ques) {
+        if (item.type == 2) {
+          let isWrong = this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
+          });
+
+          let isRight = this.questionList[index].ans.every((item, i) => {
+            return item == this.questionList[index].ques[i];
+          });
+
+          if (!isRight && !isWrong) {
+            return true;
+          }
+        }
+      } else {
+        return false;
+      }
+    },
     right(bankIndex, ansIndex, option) {
       if (
         this.questionList[bankIndex].ques[ansIndex] &&
@@ -1974,6 +2111,7 @@ export default {
       let doWrongQuestionIds = []; //错题和未做题id(客观题)
       let doQuestionIds = []; //做过的题目id
       let rightQuestionIds = []; //做对的题目id
+      let lessQuestionNum = 0;
       this.questionList.forEach((item, index) => {
         passScore = item.passScore;
         if (item.type == 1) {
@@ -2042,7 +2180,8 @@ export default {
             if (checkboxScore <= 0) {
               //0分
               item.scoreResult = 0;
-              doWrongQuestionIds.push(item.questionId);
+              lessQuestionNum++;
+              // doWrongQuestionIds.push(item.questionId);
             } else {
               //部分分
               // number++;
@@ -2107,6 +2246,7 @@ export default {
           recordId: this.recordId,
           courseId: this.courseId,
           rightQuestionNum: number,
+          lessQuestionNum: lessQuestionNum,
           status: 1,
           doQuestionIds: doQuestionIds.join(","),
           // rightQuestionIds:rightQuestionIds.join(','),
@@ -2132,6 +2272,7 @@ export default {
               score: score,
               totalScore: allScore,
               reportStatus: reportStatus,
+              lessQuestionNum: lessQuestionNum,
             };
 
             this.setExamResult(result);
@@ -2164,12 +2305,12 @@ export default {
         }
 
         &__body {
-          height: 800px;
           border: 1px solid #eee;
           .left-box {
             float: left;
             width: 970px;
-            border-right: 1px solid #eee;
+            min-height: 630px;
+            border: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -2195,7 +2336,6 @@ export default {
             }
 
             &__body {
-              height: 720px;
               border-bottom: 1px solid #eee;
 
               .question {
@@ -2224,30 +2364,10 @@ export default {
 
                   /deep/ img {
                     max-width: 100% !important;
-                    max-height: 400px !important;
                   }
                 }
 
                 &__content {
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-
                   /deep/ .el-tabs__item {
                     padding: 0 20px !important;
                     height: 40px;
@@ -2348,7 +2468,7 @@ export default {
                     }
 
                     /deep/ .el-checkbox {
-                      white-space: pre-wrap;
+                      white-space: normal;
                     }
                   }
 
@@ -2478,7 +2598,8 @@ export default {
 
           .right-box {
             float: right;
-            width: 300px;
+            width: 299px;
+            border-right: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -2511,20 +2632,23 @@ export default {
             }
 
             &__body {
-              height: 720px;
               border-bottom: 1px solid #eee;
+              height: 510px;
 
               .card {
                 &__note {
                   display: flex;
-                  height: 40px;
+                  height: 64px;
                   align-items: center;
                   border-bottom: 1px solid #eee;
+                  flex-wrap: wrap;
 
                   .item {
                     display: flex;
                     align-items: center;
                     margin-left: 10px;
+                    width: 84px;
+                    font-size: 12px;
 
                     .box {
                       margin-right: 5px;
@@ -2540,11 +2664,13 @@ export default {
                       &.green {
                         background: #37c65b;
                       }
-
                       &.red {
                         background: #ff3a30;
                       }
 
+                      &.yellow {
+                        background: #ffc53d;
+                      }
                       &.blue {
                         background: #3f8dfd;
                       }
@@ -2553,24 +2679,6 @@ export default {
                 }
 
                 &__content {
-                  height: 630px;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
                   .list {
                     display: flex;
                     flex-wrap: wrap;
@@ -2607,6 +2715,9 @@ export default {
                         color: #fff;
                         background: #3f8dfd;
                       }
+                      &.yellow {
+                        background: #ffc53d;
+                      }
 
                       &.disabled {
                         cursor: not-allowed;
@@ -2622,6 +2733,7 @@ export default {
             }
 
             &__footer {
+              border-bottom: 1px solid #eee;
               height: 40px;
               display: flex;
               align-items: center;

+ 12 - 4
src/pages/course-list/index.vue

@@ -338,7 +338,7 @@ export default {
     }
 
     &__body {
-      background: #f5f7fa;
+      background: #ebf2fc;
       .course-classify {
         overflow: hidden;
 
@@ -367,6 +367,8 @@ export default {
                 padding: 8px 16px;
                 color: #666666;
                 font-size: 16px;
+                background: #f7f9fc;
+                color: #999;
 
                 &.active {
                   color: #fff;
@@ -391,13 +393,19 @@ export default {
               width: 96px;
               height: 32px;
               border-radius: 16px;
+              background: #ffffff;
+              border: 1px solid #bfbfbf;
+              border-radius: 16px;
               text-align: center;
-              line-height: 32px;
+              line-height: 30px;
+              font-size: 16px;
               margin-right: 20px;
 
               &.active {
-                color: #fff;
-                background: #666666;
+                background: #ebf2fc;
+                border: 1px solid #3f8dfd;
+                border-radius: 16px;
+                color: #3f8dfd;
               }
             }
           }

+ 10 - 0
src/pages/course-report/index.vue

@@ -66,6 +66,12 @@
                   </div>
                   <div class="child__desc">正确题数</div>
                 </div>
+                <div class="child">
+                  <div class="child__title child__title--yellow">
+                    {{ examResult.lessQuestionNum }}
+                  </div>
+                  <div class="child__desc">少选题数</div>
+                </div>
                 <div class="child child---right">
                   <div class="child__title child__title--warm">
                     {{ examResult.doWrongQuestionNum }}
@@ -333,6 +339,10 @@ export default {
                   &--warm {
                     color: #ff3b30;
                   }
+
+                  &--yellow {
+                    color: #ffc53d;
+                  }
                 }
 
                 &__desc {

+ 26 - 5
src/pages/goods-detail/bank-detail.vue

@@ -454,7 +454,7 @@
                     <div class="explain-list__header">答案解析:</div>
                     <div
                       class="explain-list__body"
-                      v-if="question.analysisContent"
+                      v-html="question.analysisContent"
                     ></div>
                   </div>
                 </div>
@@ -798,7 +798,7 @@
                         :key="jsonIndex"
                       >
                         <div class="question__title">
-                          {{ jsonIndex }}、简答题
+                          {{ jsonIndex + 1 }}、简答题
                         </div>
                         <div class="question__desc" v-html="json.content"></div>
                         <div class="question__content">
@@ -912,7 +912,9 @@
                 "
                 :key="questionIndex"
               >
-                <div class="question__title">{{ questionIndex }}、简答题</div>
+                <div class="question__title">
+                  {{ questionIndex + 1 }}、简答题
+                </div>
                 <div class="question__desc" v-html="question.content"></div>
                 <div class="question__content">
                   <div
@@ -1575,8 +1577,8 @@ export default {
           //多选
         } else if (item.type == 2) {
           //每一项都相等
-          return this.questionList[index].ans.some((item, i) => {
-            return item != this.questionList[index].ques[i];
+          return this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
           });
           //判断
         } else if (item.type == 3) {
@@ -1588,6 +1590,25 @@ export default {
         return false;
       }
     },
+    isPart(item, index) {
+      if (this.questionList[index].ques) {
+        if (item.type == 2) {
+          let isWrong = this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
+          });
+
+          let isRight = this.questionList[index].ans.every((item, i) => {
+            return item == this.questionList[index].ques[i];
+          });
+
+          if (!isRight && !isWrong) {
+            return true;
+          }
+        }
+      } else {
+        return false;
+      }
+    },
     right(bankIndex, ansIndex, option) {
       if (
         this.questionList[bankIndex].ques[ansIndex] &&

+ 21 - 2
src/pages/goods-detail/course-detail.vue

@@ -1016,8 +1016,8 @@ export default {
           //多选
         } else if (item.type == 2) {
           //每一项都相等
-          return this.questionList[index].ans.some((item, i) => {
-            return item != this.questionList[index].ques[i];
+          return this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
           });
           //判断
         } else if (item.type == 3) {
@@ -1029,6 +1029,25 @@ export default {
         return false;
       }
     },
+    isPart(item, index) {
+      if (this.questionList[index].ques) {
+        if (item.type == 2) {
+          let isWrong = this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
+          });
+
+          let isRight = this.questionList[index].ans.every((item, i) => {
+            return item == this.questionList[index].ques[i];
+          });
+
+          if (!isRight && !isWrong) {
+            return true;
+          }
+        }
+      } else {
+        return false;
+      }
+    },
     right(bankIndex, ansIndex, option) {
       if (
         this.questionList[bankIndex].ques[ansIndex] &&

+ 5 - 2
src/pages/home/index.vue

@@ -61,7 +61,7 @@
           <div class="contact" v-if="header.serviceTel.status == 1">
             <div class="contact__phone">{{ header.serviceTel.tel }}</div>
             <div class="contact__time">
-              周一至周日 {{ header.serviceTel.time }}
+              {{ header.serviceTel.time }}
             </div>
           </div>
         </div>
@@ -838,8 +838,11 @@ export default {
       this.$refs.loginForm.validate((valid) => {
         if (valid) {
           this.isLogin = true;
+          let loginForm = JSON.parse(JSON.stringify(this.loginForm));
+          loginForm.pwd = this.$tools.encryptor(loginForm.pwd);
+          console.log(this.loginForm);
           this.$request
-            .login(this.loginForm)
+            .login(loginForm)
             .then((res) => {
               if (res.data.full_info) {
                 localStorage.setItem("user_account", res.data.user_account);

+ 4 - 1
src/pages/login/index.vue

@@ -952,8 +952,10 @@ export default {
       this.$refs.loginForm.validate((valid) => {
         if (valid) {
           this.islogin = true;
+          let loginForm = JSON.parse(JSON.stringify(this.loginForm));
+          loginForm.pwd = this.$tools.encryptor(loginForm.pwd);
           this.$request
-            .login(this.loginForm)
+            .login(loginForm)
             .then((res) => {
               if (res.data.full_info) {
                 localStorage.setItem("user_account", res.data.user_account);
@@ -1178,6 +1180,7 @@ export default {
     autoLogin() {
       let loginForm = JSON.parse(JSON.stringify(this.registerForm));
       loginForm.account = loginForm.tel;
+      loginForm.pwd = this.$tools.encryptor(loginForm.pwd);
       this.$request
         .login(loginForm)
         .then((res) => {

+ 3 - 0
src/pages/person-center/bank-record/index.vue

@@ -65,6 +65,7 @@
                           examId: record.examId,
                           chapterId: record.chapterExamId,
                           moduleId: record.moduleExamId,
+                          orderGoodsId: record.orderGoodsId,
                         })
                       "
                       v-if="record.status == 0 && record.historyExamJson"
@@ -86,6 +87,7 @@
                             examId: record.examId,
                             chapterId: record.chapterExamId,
                             moduleId: record.moduleExamId,
+                            orderGoodsId: record.orderGoodsId,
                           })
                         "
                         v-if="record.status == 1"
@@ -101,6 +103,7 @@
                             moduleId: record.moduleExamId,
                             examId: record.examId,
                             recordId: record.recordId,
+                            orderGoodsId: record.orderGoodsId,
                           })
                         "
                       >

+ 3 - 0
src/pages/person-center/bank-record/record-list/index.vue

@@ -32,6 +32,7 @@
                           examId: record.examId,
                           chapterId: record.chapterExamId,
                           moduleId: record.moduleExamId,
+                          orderGoodsId: record.orderGoodsId,
                         })
                       "
                       v-if="record.status == 0 && record.historyExamJson"
@@ -53,6 +54,7 @@
                             examId: record.examId,
                             chapterId: record.chapterExamId,
                             moduleId: record.moduleExamId,
+                            orderGoodsId: record.orderGoodsId,
                           })
                         "
                         v-if="record.status == 1"
@@ -68,6 +70,7 @@
                             moduleId: record.moduleExamId,
                             examId: record.examId,
                             recordId: record.recordId,
+                            orderGoodsId: record.orderGoodsId,
                           })
                         "
                       >

+ 10 - 7
src/pages/person-center/my-bank/bank-detail/index.vue

@@ -56,7 +56,7 @@
                                   {{ section.examName }}
                                 </div>
                                 <div class="btn_div">
-                                  正确率
+                                  <!-- 正确率
                                   <span style="color: rgb(52, 216, 71)"
                                     >{{
                                       computedNums(
@@ -64,7 +64,8 @@
                                         section.questionNum
                                       )
                                     }}%</span
-                                  ><span style="margin-left: 6px">已完成 </span
+                                  > -->
+                                  <span style="margin-left: 6px">已完成 </span
                                   ><span style="color: blue">{{
                                     section.doQuestionNum || 0
                                   }}</span>
@@ -159,7 +160,7 @@
                                   style="width: auto; padding: 0px 14px"
                                   class="btn_div"
                                 >
-                                  正确率
+                                  <!-- 正确率
                                   <span style="color: rgb(52, 216, 71)"
                                     >{{
                                       computedNums(
@@ -167,7 +168,8 @@
                                         section.questionNum
                                       )
                                     }}%</span
-                                  ><span style="margin-left: 6px">已完成 </span
+                                  > -->
+                                  <span style="margin-left: 6px">已完成 </span
                                   ><span style="color: blue">{{
                                     section.doQuestionNum || 0
                                   }}</span>
@@ -225,7 +227,7 @@
                               style="width: auto; padding: 0px 14px"
                               class="btn_div"
                             >
-                              正确率
+                              <!-- 正确率
                               <span style="color: rgb(52, 216, 71)"
                                 >{{
                                   computedNums(
@@ -233,7 +235,8 @@
                                     item.questionNum
                                   )
                                 }}%</span
-                              ><span style="margin-left: 6px">已完成 </span
+                              > -->
+                              <span style="margin-left: 6px">已完成 </span
                               ><span style="color: blue">{{
                                 item.doQuestionNum || 0
                               }}</span>
@@ -314,7 +317,7 @@
                         type="circle"
                         :width="160"
                         :stroke-width="12"
-                        color="#FADB14"
+                        color="#FFC53D"
                         :format="() => collectTotal || '0'"
                         :percentage="25"
                       ></el-progress>

+ 42 - 48
src/pages/person-center/my-bank/bank-explain-detail/index.vue

@@ -136,7 +136,7 @@
                         <div class="explain-list__header">答案解析:</div>
                         <div
                           class="explain-list__body"
-                          v-if="question.analysisContent"
+                          v-html="question.analysisContent"
                         ></div>
                       </div>
                     </div>
@@ -475,7 +475,7 @@
                             :key="jsonIndex"
                           >
                             <div class="question__title">
-                              {{ jsonIndex }}、简答题
+                              {{ jsonIndex + 1 }}、简答题
                             </div>
                             <div
                               class="question__desc"
@@ -569,7 +569,7 @@
                     :key="questionIndex"
                   >
                     <div class="question__title">
-                      {{ questionIndex }}、简答题
+                      {{ questionIndex + 1 }}、简答题
                     </div>
                     <div class="question__desc" v-html="question.content"></div>
                     <div class="question__content">
@@ -656,6 +656,10 @@
                       <div class="box blue"></div>
                       已做未评改
                     </div>
+                    <div class="item">
+                      <div class="box yellow"></div>
+                      少选
+                    </div>
                     <div class="item">
                       <div class="box white"></div>
                       未做
@@ -670,6 +674,7 @@
                         :class="{
                           green: isRight(item, index),
                           red: isWrong(item, index),
+                          yellow: isPart(item, index),
                           blue: isOver(item, index),
                         }"
                         @click="changeIndex(index)"
@@ -979,8 +984,8 @@ export default {
           //多选
         } else if (item.type == 2) {
           //每一项都相等
-          return this.questionList[index].ans.some((item, i) => {
-            return item != this.questionList[index].ques[i];
+          return this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
           });
           //判断
         } else if (item.type == 3) {
@@ -992,6 +997,25 @@ export default {
         return false;
       }
     },
+    isPart(item, index) {
+      if (this.questionList[index].ques) {
+        if (item.type == 2) {
+          let isWrong = this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
+          });
+
+          let isRight = this.questionList[index].ans.every((item, i) => {
+            return item == this.questionList[index].ques[i];
+          });
+
+          if (!isRight && !isWrong) {
+            return true;
+          }
+        }
+      } else {
+        return false;
+      }
+    },
     right(bankIndex, ansIndex, option) {
       if (
         this.questionList[bankIndex].ques[ansIndex] &&
@@ -1157,51 +1181,13 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
 
                   /deep/ img {
                     max-width: 100% !important;
-                    max-height: 400px !important;
                   }
                 }
 
                 &__content {
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-
                   /deep/ .el-tabs__item {
                     padding: 0 20px !important;
                     height: 40px;
@@ -1302,7 +1288,7 @@ export default {
                     }
 
                     /deep/ .el-checkbox {
-                      white-space: pre-wrap;
+                      white-space: normal;
                     }
                   }
 
@@ -1432,7 +1418,7 @@ export default {
 
           .right-box {
             float: right;
-            width: 300px;
+            width: 299px;
 
             &__header {
               height: 40px;
@@ -1452,14 +1438,17 @@ export default {
               .card {
                 &__note {
                   display: flex;
-                  height: 40px;
+                  height: 64px;
                   align-items: center;
                   border-bottom: 1px solid #eee;
+                  flex-wrap: wrap;
 
                   .item {
                     display: flex;
                     align-items: center;
                     margin-left: 10px;
+                    width: 84px;
+                    font-size: 12px;
 
                     .box {
                       margin-right: 5px;
@@ -1475,11 +1464,13 @@ export default {
                       &.green {
                         background: #37c65b;
                       }
-
                       &.red {
                         background: #ff3a30;
                       }
 
+                      &.yellow {
+                        background: #ffc53d;
+                      }
                       &.blue {
                         background: #3f8dfd;
                       }
@@ -1488,7 +1479,7 @@ export default {
                 }
 
                 &__content {
-                  height: 440px;
+                  height: 386px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {
@@ -1542,6 +1533,9 @@ export default {
                         color: #fff;
                         background: #3f8dfd;
                       }
+                      &.yellow {
+                        background: #ffc53d;
+                      }
 
                       &.disabled {
                         cursor: not-allowed;

+ 1 - 1
src/pages/person-center/my-collect/index.vue

@@ -60,7 +60,7 @@
                     type="circle"
                     :width="160"
                     :stroke-width="12"
-                    color="#FADB14"
+                    color="#FFC53D"
                     :format="() => collectTotal || '0'"
                     :percentage="25"
                   ></el-progress>

+ 175 - 67
src/pages/subject/collect-bank.vue

@@ -33,6 +33,11 @@
                     >/{{ questionList.length }}道题
                   </div>
                 </div>
+
+                <div class="left-box__footer">
+                  <div class="btn" @click="prevQuestion">上一题</div>
+                  <div class="btn" @click="nextQuestion">下一题</div>
+                </div>
                 <div class="left-box__body">
                   <template v-for="(question, questionIndex) in questionList">
                     <div
@@ -61,7 +66,16 @@
                               )
                             "
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -78,7 +92,16 @@
                             v-for="(item, index) in question.jsonStr"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -122,7 +145,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -142,7 +174,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -163,7 +204,7 @@
                           <div class="explain-list__header">答案解析:</div>
                           <div
                             class="explain-list__body"
-                            v-if="question.analysisContent"
+                            v-html="question.analysisContent"
                           ></div>
                         </div>
                       </div>
@@ -198,7 +239,16 @@
                             :key="index"
                             @click="judgeSelect(question, questionIndex, index)"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -214,7 +264,16 @@
                             v-for="(item, index) in judge"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -284,6 +343,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -310,6 +378,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -372,6 +449,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -405,6 +491,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -489,7 +584,18 @@
                                       )
                                     "
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -510,7 +616,18 @@
                                     v-for="(item, index) in judge"
                                     :key="index"
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -551,7 +668,7 @@
                               :key="jsonIndex"
                             >
                               <div class="question__title">
-                                {{ jsonIndex }}、简答题
+                                {{ jsonIndex + 1 }}、简答题
                               </div>
                               <div
                                 class="question__desc"
@@ -680,7 +797,7 @@
                       :key="questionIndex"
                     >
                       <div class="question__title">
-                        {{ questionIndex }}、简答题
+                        {{ questionIndex + 1 }}、简答题
                       </div>
                       <div
                         class="question__desc"
@@ -772,11 +889,6 @@
                     </div>
                   </template>
                 </div>
-
-                <div class="left-box__footer">
-                  <div class="btn" @click="prevQuestion">上一题</div>
-                  <div class="btn" @click="nextQuestion">下一题</div>
-                </div>
               </div>
               <div class="right-box">
                 <div class="right-box__header">
@@ -790,6 +902,9 @@
                     >返回</el-button
                   >
                 </div>
+                <div class="right-box__footer">
+                  <div class="submit" v-if="!explain" @click="submit">交卷</div>
+                </div>
                 <div class="right-box__header">答题卡</div>
                 <div class="right-box__body">
                   <div class="card">
@@ -806,6 +921,11 @@
                         <div class="box blue"></div>
                         已做未评改
                       </div>
+
+                      <div class="item">
+                        <div class="box yellow"></div>
+                        少选
+                      </div>
                       <div class="item">
                         <div class="box white"></div>
                         未做
@@ -820,6 +940,7 @@
                           :class="{
                             green: isRight(item, index),
                             red: isWrong(item, index),
+                            yellow: isPart(item, index),
                             blue: isOver(item, index),
                           }"
                           @click="changeIndex(index)"
@@ -830,9 +951,6 @@
                     </div>
                   </div>
                 </div>
-                <div class="right-box__footer">
-                  <div class="submit" v-if="!explain" @click="submit">交卷</div>
-                </div>
               </div>
             </div>
           </div>
@@ -1407,8 +1525,8 @@ export default {
           //多选
         } else if (item.type == 2) {
           //每一项都相等
-          return this.questionList[index].ans.some((item, i) => {
-            return item != this.questionList[index].ques[i];
+          return this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
           });
           //判断
         } else if (item.type == 3) {
@@ -1420,6 +1538,25 @@ export default {
         return false;
       }
     },
+    isPart(item, index) {
+      if (this.questionList[index].ques) {
+        if (item.type == 2) {
+          let isWrong = this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
+          });
+
+          let isRight = this.questionList[index].ans.every((item, i) => {
+            return item == this.questionList[index].ques[i];
+          });
+
+          if (!isRight && !isWrong) {
+            return true;
+          }
+        }
+      } else {
+        return false;
+      }
+    },
     right(bankIndex, ansIndex, option) {
       if (
         this.questionList[bankIndex].ques[ansIndex] &&
@@ -1557,12 +1694,12 @@ export default {
 
         &__body {
           margin-bottom: 20px;
-          height: 630px;
           border: 1px solid #eee;
           .left-box {
             float: left;
             width: 970px;
-            border-right: 1px solid #eee;
+            min-height: 630px;
+            border: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -1588,7 +1725,6 @@ export default {
             }
 
             &__body {
-              height: 550px;
               border-bottom: 1px solid #eee;
 
               .question {
@@ -1614,51 +1750,13 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
 
                   /deep/ img {
                     max-width: 100% !important;
-                    max-height: 400px !important;
                   }
                 }
 
                 &__content {
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-
                   /deep/ .el-tabs__item {
                     height: 40px;
                     line-height: 40px;
@@ -1758,7 +1856,7 @@ export default {
                     }
 
                     /deep/ .el-checkbox {
-                      white-space: pre-wrap;
+                      white-space: normal;
                     }
                   }
 
@@ -1888,7 +1986,8 @@ export default {
 
           .right-box {
             float: right;
-            width: 300px;
+            width: 299px;
+            border-right: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -1914,14 +2013,17 @@ export default {
               .card {
                 &__note {
                   display: flex;
-                  height: 40px;
+                  height: 64px;
                   align-items: center;
                   border-bottom: 1px solid #eee;
+                  flex-wrap: wrap;
 
                   .item {
                     display: flex;
                     align-items: center;
                     margin-left: 10px;
+                    width: 84px;
+                    font-size: 12px;
 
                     .box {
                       margin-right: 5px;
@@ -1937,11 +2039,13 @@ export default {
                       &.green {
                         background: #37c65b;
                       }
-
                       &.red {
                         background: #ff3a30;
                       }
 
+                      &.yellow {
+                        background: #ffc53d;
+                      }
                       &.blue {
                         background: #3f8dfd;
                       }
@@ -1950,7 +2054,7 @@ export default {
                 }
 
                 &__content {
-                  height: 470px;
+                  height: 446px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {
@@ -2004,6 +2108,9 @@ export default {
                         color: #fff;
                         background: #3f8dfd;
                       }
+                      &.yellow {
+                        background: #ffc53d;
+                      }
 
                       &.disabled {
                         cursor: not-allowed;
@@ -2019,6 +2126,7 @@ export default {
             }
 
             &__footer {
+              border-bottom: 1px solid #eee;
               height: 40px;
               display: flex;
               align-items: center;

+ 174 - 67
src/pages/subject/collect-type-bank.vue

@@ -33,6 +33,10 @@
                     >/{{ questionList.length }}道题
                   </div>
                 </div>
+                <div class="left-box__footer">
+                  <div class="btn" @click="prevQuestion">上一题</div>
+                  <div class="btn" @click="nextQuestion">下一题</div>
+                </div>
                 <div class="left-box__body">
                   <template v-for="(question, questionIndex) in questionList">
                     <div
@@ -61,7 +65,16 @@
                               )
                             "
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -78,7 +91,16 @@
                             v-for="(item, index) in question.jsonStr"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -122,7 +144,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -142,7 +173,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -163,7 +203,7 @@
                           <div class="explain-list__header">答案解析:</div>
                           <div
                             class="explain-list__body"
-                            v-if="question.analysisContent"
+                            v-html="question.analysisContent"
                           ></div>
                         </div>
                       </div>
@@ -198,7 +238,16 @@
                             :key="index"
                             @click="judgeSelect(question, questionIndex, index)"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -214,7 +263,16 @@
                             v-for="(item, index) in judge"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -284,6 +342,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -310,6 +377,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -372,6 +448,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -405,6 +490,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -489,7 +583,18 @@
                                       )
                                     "
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -510,7 +615,18 @@
                                     v-for="(item, index) in judge"
                                     :key="index"
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -551,7 +667,7 @@
                               :key="jsonIndex"
                             >
                               <div class="question__title">
-                                {{ jsonIndex }}、简答题
+                                {{ jsonIndex + 1 }}、简答题
                               </div>
                               <div
                                 class="question__desc"
@@ -680,7 +796,7 @@
                       :key="questionIndex"
                     >
                       <div class="question__title">
-                        {{ questionIndex }}、简答题
+                        {{ questionIndex + 1 }}、简答题
                       </div>
                       <div
                         class="question__desc"
@@ -772,11 +888,6 @@
                     </div>
                   </template>
                 </div>
-
-                <div class="left-box__footer">
-                  <div class="btn" @click="prevQuestion">上一题</div>
-                  <div class="btn" @click="nextQuestion">下一题</div>
-                </div>
               </div>
               <div class="right-box">
                 <div class="right-box__header">
@@ -790,6 +901,9 @@
                     >返回</el-button
                   >
                 </div>
+                <div class="right-box__footer">
+                  <div class="submit" @click="submit" v-if="!explain">交卷</div>
+                </div>
                 <div class="right-box__header">答题卡</div>
                 <div class="right-box__body">
                   <div class="card">
@@ -806,6 +920,11 @@
                         <div class="box blue"></div>
                         已做未评改
                       </div>
+
+                      <div class="item">
+                        <div class="box yellow"></div>
+                        少选
+                      </div>
                       <div class="item">
                         <div class="box white"></div>
                         未做
@@ -820,6 +939,7 @@
                           :class="{
                             green: isRight(item, index),
                             red: isWrong(item, index),
+                            yellow: isPart(item, index),
                             blue: isOver(item, index),
                           }"
                           @click="changeIndex(index)"
@@ -830,9 +950,6 @@
                     </div>
                   </div>
                 </div>
-                <div class="right-box__footer">
-                  <div class="submit" @click="submit" v-if="!explain">交卷</div>
-                </div>
               </div>
             </div>
           </div>
@@ -1404,8 +1521,8 @@ export default {
           //多选
         } else if (item.type == 2) {
           //每一项都相等
-          return this.questionList[index].ans.some((item, i) => {
-            return item != this.questionList[index].ques[i];
+          return this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
           });
           //判断
         } else if (item.type == 3) {
@@ -1417,6 +1534,25 @@ export default {
         return false;
       }
     },
+    isPart(item, index) {
+      if (this.questionList[index].ques) {
+        if (item.type == 2) {
+          let isWrong = this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
+          });
+
+          let isRight = this.questionList[index].ans.every((item, i) => {
+            return item == this.questionList[index].ques[i];
+          });
+
+          if (!isRight && !isWrong) {
+            return true;
+          }
+        }
+      } else {
+        return false;
+      }
+    },
     right(bankIndex, ansIndex, option) {
       if (
         this.questionList[bankIndex].ques[ansIndex] &&
@@ -1554,12 +1690,12 @@ export default {
 
         &__body {
           margin-bottom: 20px;
-          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
             width: 970px;
-            border-right: 1px solid #eee;
+            min-height: 630px;
+            border: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -1585,7 +1721,6 @@ export default {
             }
 
             &__body {
-              height: 550px;
               border-bottom: 1px solid #eee;
 
               .question {
@@ -1611,51 +1746,13 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
 
                   /deep/ img {
                     max-width: 100% !important;
-                    max-height: 400px !important;
                   }
                 }
 
                 &__content {
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-
                   /deep/ .el-tabs__item {
                     height: 40px;
                     line-height: 40px;
@@ -1755,7 +1852,7 @@ export default {
                     }
 
                     /deep/ .el-checkbox {
-                      white-space: pre-wrap;
+                      white-space: normal;
                     }
                   }
 
@@ -1885,7 +1982,8 @@ export default {
 
           .right-box {
             float: right;
-            width: 300px;
+            width: 299px;
+            border-right: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -1911,14 +2009,17 @@ export default {
               .card {
                 &__note {
                   display: flex;
-                  height: 40px;
+                  height: 64px;
                   align-items: center;
                   border-bottom: 1px solid #eee;
+                  flex-wrap: wrap;
 
                   .item {
                     display: flex;
                     align-items: center;
                     margin-left: 10px;
+                    width: 84px;
+                    font-size: 12px;
 
                     .box {
                       margin-right: 5px;
@@ -1934,11 +2035,13 @@ export default {
                       &.green {
                         background: #37c65b;
                       }
-
                       &.red {
                         background: #ff3a30;
                       }
 
+                      &.yellow {
+                        background: #ffc53d;
+                      }
                       &.blue {
                         background: #3f8dfd;
                       }
@@ -1947,7 +2050,7 @@ export default {
                 }
 
                 &__content {
-                  height: 470px;
+                  height: 446px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {
@@ -2001,6 +2104,9 @@ export default {
                         color: #fff;
                         background: #3f8dfd;
                       }
+                      &.yellow {
+                        background: #ffc53d;
+                      }
 
                       &.disabled {
                         cursor: not-allowed;
@@ -2016,6 +2122,7 @@ export default {
             }
 
             &__footer {
+              border-bottom: 1px solid #eee;
               height: 40px;
               display: flex;
               align-items: center;

+ 174 - 67
src/pages/subject/wrong-bank.vue

@@ -33,6 +33,10 @@
                     >/{{ questionList.length }}道题
                   </div>
                 </div>
+                <div class="left-box__footer">
+                  <div class="btn" @click="prevQuestion">上一题</div>
+                  <div class="btn" @click="nextQuestion">下一题</div>
+                </div>
                 <div class="left-box__body">
                   <template v-for="(question, questionIndex) in questionList">
                     <div
@@ -61,7 +65,16 @@
                               )
                             "
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -78,7 +91,16 @@
                             v-for="(item, index) in question.jsonStr"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -122,7 +144,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -142,7 +173,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -163,7 +203,7 @@
                           <div class="explain-list__header">答案解析:</div>
                           <div
                             class="explain-list__body"
-                            v-if="question.analysisContent"
+                            v-html="question.analysisContent"
                           ></div>
                         </div>
                       </div>
@@ -198,7 +238,16 @@
                             :key="index"
                             @click="judgeSelect(question, questionIndex, index)"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -214,7 +263,16 @@
                             v-for="(item, index) in judge"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -284,6 +342,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -310,6 +377,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -372,6 +448,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -405,6 +490,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -489,7 +583,18 @@
                                       )
                                     "
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -510,7 +615,18 @@
                                     v-for="(item, index) in judge"
                                     :key="index"
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -551,7 +667,7 @@
                               :key="jsonIndex"
                             >
                               <div class="question__title">
-                                {{ jsonIndex }}、简答题
+                                {{ jsonIndex + 1 }}、简答题
                               </div>
                               <div
                                 class="question__desc"
@@ -680,7 +796,7 @@
                       :key="questionIndex"
                     >
                       <div class="question__title">
-                        {{ questionIndex }}、简答题
+                        {{ questionIndex + 1 }}、简答题
                       </div>
                       <div
                         class="question__desc"
@@ -772,11 +888,6 @@
                     </div>
                   </template>
                 </div>
-
-                <div class="left-box__footer">
-                  <div class="btn" @click="prevQuestion">上一题</div>
-                  <div class="btn" @click="nextQuestion">下一题</div>
-                </div>
               </div>
               <div class="right-box">
                 <div class="right-box__header">
@@ -790,6 +901,9 @@
                     >返回</el-button
                   >
                 </div>
+                <div class="right-box__footer">
+                  <div class="submit" v-if="!explain" @click="submit">交卷</div>
+                </div>
                 <div class="right-box__header">答题卡</div>
                 <div class="right-box__body">
                   <div class="card">
@@ -806,6 +920,11 @@
                         <div class="box blue"></div>
                         已做未评改
                       </div>
+
+                      <div class="item">
+                        <div class="box yellow"></div>
+                        少选
+                      </div>
                       <div class="item">
                         <div class="box white"></div>
                         未做
@@ -820,6 +939,7 @@
                           :class="{
                             green: isRight(item, index),
                             red: isWrong(item, index),
+                            yellow: isPart(item, index),
                             blue: isOver(item, index),
                           }"
                           @click="changeIndex(index)"
@@ -830,9 +950,6 @@
                     </div>
                   </div>
                 </div>
-                <div class="right-box__footer">
-                  <div class="submit" v-if="!explain" @click="submit">交卷</div>
-                </div>
               </div>
             </div>
           </div>
@@ -1416,8 +1533,8 @@ export default {
           //多选
         } else if (item.type == 2) {
           //每一项都相等
-          return this.questionList[index].ans.some((item, i) => {
-            return item != this.questionList[index].ques[i];
+          return this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
           });
           //判断
         } else if (item.type == 3) {
@@ -1429,6 +1546,25 @@ export default {
         return false;
       }
     },
+    isPart(item, index) {
+      if (this.questionList[index].ques) {
+        if (item.type == 2) {
+          let isWrong = this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
+          });
+
+          let isRight = this.questionList[index].ans.every((item, i) => {
+            return item == this.questionList[index].ques[i];
+          });
+
+          if (!isRight && !isWrong) {
+            return true;
+          }
+        }
+      } else {
+        return false;
+      }
+    },
     right(bankIndex, ansIndex, option) {
       if (
         this.questionList[bankIndex].ques[ansIndex] &&
@@ -1566,12 +1702,12 @@ export default {
 
         &__body {
           margin-bottom: 20px;
-          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
             width: 970px;
-            border-right: 1px solid #eee;
+            min-height: 630px;
+            border: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -1597,7 +1733,6 @@ export default {
             }
 
             &__body {
-              height: 550px;
               border-bottom: 1px solid #eee;
 
               .question {
@@ -1623,51 +1758,13 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
 
                   /deep/ img {
                     max-width: 100% !important;
-                    max-height: 400px !important;
                   }
                 }
 
                 &__content {
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-
                   /deep/ .el-tabs__item {
                     height: 40px;
                     line-height: 40px;
@@ -1767,7 +1864,7 @@ export default {
                     }
 
                     /deep/ .el-checkbox {
-                      white-space: pre-wrap;
+                      white-space: normal;
                     }
                   }
 
@@ -1897,7 +1994,8 @@ export default {
 
           .right-box {
             float: right;
-            width: 300px;
+            width: 299px;
+            border-right: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -1923,14 +2021,17 @@ export default {
               .card {
                 &__note {
                   display: flex;
-                  height: 40px;
+                  height: 64px;
                   align-items: center;
                   border-bottom: 1px solid #eee;
+                  flex-wrap: wrap;
 
                   .item {
                     display: flex;
                     align-items: center;
                     margin-left: 10px;
+                    width: 84px;
+                    font-size: 12px;
 
                     .box {
                       margin-right: 5px;
@@ -1946,11 +2047,13 @@ export default {
                       &.green {
                         background: #37c65b;
                       }
-
                       &.red {
                         background: #ff3a30;
                       }
 
+                      &.yellow {
+                        background: #ffc53d;
+                      }
                       &.blue {
                         background: #3f8dfd;
                       }
@@ -1959,7 +2062,7 @@ export default {
                 }
 
                 &__content {
-                  height: 470px;
+                  height: 446px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {
@@ -2013,6 +2116,9 @@ export default {
                         color: #fff;
                         background: #3f8dfd;
                       }
+                      &.yellow {
+                        background: #ffc53d;
+                      }
 
                       &.disabled {
                         cursor: not-allowed;
@@ -2028,6 +2134,7 @@ export default {
             }
 
             &__footer {
+              border-bottom: 1px solid #eee;
               height: 40px;
               display: flex;
               align-items: center;

+ 175 - 67
src/pages/subject/wrong-type-bank.vue

@@ -33,6 +33,11 @@
                     >/{{ questionList.length }}道题
                   </div>
                 </div>
+
+                <div class="left-box__footer">
+                  <div class="btn" @click="prevQuestion">上一题</div>
+                  <div class="btn" @click="nextQuestion">下一题</div>
+                </div>
                 <div class="left-box__body">
                   <template v-for="(question, questionIndex) in questionList">
                     <div
@@ -61,7 +66,16 @@
                               )
                             "
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -78,7 +92,16 @@
                             v-for="(item, index) in question.jsonStr"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -122,7 +145,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -142,7 +174,16 @@
                             :label="item.optionsId"
                             v-model="item.checked"
                           >
-                            <div>{{ ast[index] }}. {{ item.content }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item.content }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </el-checkbox>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -163,7 +204,7 @@
                           <div class="explain-list__header">答案解析:</div>
                           <div
                             class="explain-list__body"
-                            v-if="question.analysisContent"
+                            v-html="question.analysisContent"
                           ></div>
                         </div>
                       </div>
@@ -198,7 +239,16 @@
                             :key="index"
                             @click="judgeSelect(question, questionIndex, index)"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="question-list" v-if="question.ques">
@@ -214,7 +264,16 @@
                             v-for="(item, index) in judge"
                             :key="index"
                           >
-                            <div>{{ ast[index] }}. {{ item }}</div>
+                            <div>
+                              {{ ast[index] }}. {{ item }}
+                              <div v-if="item.imgUrl">
+                                <img
+                                  style="max-width: 100%"
+                                  :src="$tools.splitImgHost(item.imgUrl)"
+                                  alt=""
+                                />
+                              </div>
+                            </div>
                           </div>
                         </div>
                         <div class="answer-list" v-if="question.ques">
@@ -284,6 +343,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -310,6 +378,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </div>
                                 </div>
@@ -372,6 +449,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -405,6 +491,15 @@
                                   >
                                     <div>
                                       {{ ast[index] }}. {{ item.content }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
                                     </div>
                                   </el-checkbox>
                                 </div>
@@ -489,7 +584,18 @@
                                       )
                                     "
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -510,7 +616,18 @@
                                     v-for="(item, index) in judge"
                                     :key="index"
                                   >
-                                    <div>{{ ast[index] }}. {{ item }}</div>
+                                    <div>
+                                      {{ ast[index] }}. {{ item }}
+                                      <div v-if="item.imgUrl">
+                                        <img
+                                          style="max-width: 100%"
+                                          :src="
+                                            $tools.splitImgHost(item.imgUrl)
+                                          "
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
                                   </div>
                                 </div>
                                 <div
@@ -551,7 +668,7 @@
                               :key="jsonIndex"
                             >
                               <div class="question__title">
-                                {{ jsonIndex }}、简答题
+                                {{ jsonIndex + 1 }}、简答题
                               </div>
                               <div
                                 class="question__desc"
@@ -680,7 +797,7 @@
                       :key="questionIndex"
                     >
                       <div class="question__title">
-                        {{ questionIndex }}、简答题
+                        {{ questionIndex + 1 }}、简答题
                       </div>
                       <div
                         class="question__desc"
@@ -772,11 +889,6 @@
                     </div>
                   </template>
                 </div>
-
-                <div class="left-box__footer">
-                  <div class="btn" @click="prevQuestion">上一题</div>
-                  <div class="btn" @click="nextQuestion">下一题</div>
-                </div>
               </div>
               <div class="right-box">
                 <div class="right-box__header">
@@ -790,6 +902,9 @@
                     >返回</el-button
                   >
                 </div>
+                <div class="right-box__footer">
+                  <div class="submit" @click="submit" v-if="!explain">交卷</div>
+                </div>
                 <div class="right-box__header">答题卡</div>
                 <div class="right-box__body">
                   <div class="card">
@@ -806,6 +921,11 @@
                         <div class="box blue"></div>
                         已做未评改
                       </div>
+
+                      <div class="item">
+                        <div class="box yellow"></div>
+                        少选
+                      </div>
                       <div class="item">
                         <div class="box white"></div>
                         未做
@@ -820,6 +940,7 @@
                           :class="{
                             green: isRight(item, index),
                             red: isWrong(item, index),
+                            yellow: isPart(item, index),
                             blue: isOver(item, index),
                           }"
                           @click="changeIndex(index)"
@@ -830,9 +951,6 @@
                     </div>
                   </div>
                 </div>
-                <div class="right-box__footer">
-                  <div class="submit" @click="submit" v-if="!explain">交卷</div>
-                </div>
               </div>
             </div>
           </div>
@@ -1406,8 +1524,8 @@ export default {
           //多选
         } else if (item.type == 2) {
           //每一项都相等
-          return this.questionList[index].ans.some((item, i) => {
-            return item != this.questionList[index].ques[i];
+          return this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
           });
           //判断
         } else if (item.type == 3) {
@@ -1419,6 +1537,25 @@ export default {
         return false;
       }
     },
+    isPart(item, index) {
+      if (this.questionList[index].ques) {
+        if (item.type == 2) {
+          let isWrong = this.questionList[index].ques.some((item, i) => {
+            return this.questionList[index].ans.indexOf(item) == -1;
+          });
+
+          let isRight = this.questionList[index].ans.every((item, i) => {
+            return item == this.questionList[index].ques[i];
+          });
+
+          if (!isRight && !isWrong) {
+            return true;
+          }
+        }
+      } else {
+        return false;
+      }
+    },
     right(bankIndex, ansIndex, option) {
       if (
         this.questionList[bankIndex].ques[ansIndex] &&
@@ -1556,12 +1693,12 @@ export default {
 
         &__body {
           margin-bottom: 20px;
-          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
             width: 970px;
-            border-right: 1px solid #eee;
+            min-height: 630px;
+            border: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -1587,7 +1724,6 @@ export default {
             }
 
             &__body {
-              height: 550px;
               border-bottom: 1px solid #eee;
 
               .question {
@@ -1613,51 +1749,13 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
 
                   /deep/ img {
                     max-width: 100% !important;
-                    max-height: 400px !important;
                   }
                 }
 
                 &__content {
-                  flex: 1;
-                  overflow-y: scroll;
-
-                  &::-webkit-scrollbar {
-                    width: 6px;
-                  }
-                  &::-webkit-scrollbar-track {
-                    background-color: #fff;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-                  &::-webkit-scrollbar-thumb {
-                    background-color: #eeeeee;
-                    -webkit-border-radius: 2em;
-                    -moz-border-radius: 2em;
-                    border-radius: 2em;
-                  }
-
                   /deep/ .el-tabs__item {
                     height: 40px;
                     line-height: 40px;
@@ -1757,7 +1855,7 @@ export default {
                     }
 
                     /deep/ .el-checkbox {
-                      white-space: pre-wrap;
+                      white-space: normal;
                     }
                   }
 
@@ -1887,7 +1985,8 @@ export default {
 
           .right-box {
             float: right;
-            width: 300px;
+            width: 299px;
+            border-right: 1px solid #eee;
 
             &__header {
               height: 40px;
@@ -1913,14 +2012,17 @@ export default {
               .card {
                 &__note {
                   display: flex;
-                  height: 40px;
+                  height: 64px;
                   align-items: center;
                   border-bottom: 1px solid #eee;
+                  flex-wrap: wrap;
 
                   .item {
                     display: flex;
                     align-items: center;
                     margin-left: 10px;
+                    width: 84px;
+                    font-size: 12px;
 
                     .box {
                       margin-right: 5px;
@@ -1936,11 +2038,13 @@ export default {
                       &.green {
                         background: #37c65b;
                       }
-
                       &.red {
                         background: #ff3a30;
                       }
 
+                      &.yellow {
+                        background: #ffc53d;
+                      }
                       &.blue {
                         background: #3f8dfd;
                       }
@@ -1949,7 +2053,7 @@ export default {
                 }
 
                 &__content {
-                  height: 470px;
+                  height: 446px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {
@@ -2003,6 +2107,9 @@ export default {
                         color: #fff;
                         background: #3f8dfd;
                       }
+                      &.yellow {
+                        background: #ffc53d;
+                      }
 
                       &.disabled {
                         cursor: not-allowed;
@@ -2018,6 +2125,7 @@ export default {
             }
 
             &__footer {
+              border-bottom: 1px solid #eee;
               height: 40px;
               display: flex;
               align-items: center;

+ 188 - 23
src/router/index.js

@@ -23,120 +23,274 @@ const router =  new Router({
     {
       path: '/home',
       name: '首页',
-      component: resolve => require(['@/pages/home/index'],resolve)
+      component: resolve => require(['@/pages/home/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-建造师造价师在线教育培训平台报名报考',
+        content: {
+          keywords: '祥粤云学堂-一级建造师,二级建造师,造价工程师,一级消防工程师,BIM,在线教育,职业教育,报考条件,报名时间,建造师注册,建造工程师',
+          description: '祥粤云学堂-职业教育一站式学习平台,专注一建,二建,造价工程师,一级消防工程师,BIM等工程师技能知识培训服务热线:020-87085982'
+        }
+      }
     },
     {
       path: '/login',
       name: '登录',
-      component: resolve => require(['@/pages/login/index'],resolve)
+      component: resolve => require(['@/pages/login/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-建造师造价师在线教育培训平台报名报考',
+        content: {
+          keywords: '祥粤云学堂-一级建造师,二级建造师,造价工程师,一级消防工程师,BIM,在线教育,职业教育,报考条件,报名时间,建造师注册,建造工程师',
+          description: '祥粤云学堂-职业教育一站式学习平台,专注一建,二建,造价工程师,一级消防工程师,BIM等工程师技能知识培训服务热线:020-87085982'
+        }
+      }
     },
     {
       path: '/about',
       name: '走进祥粤',
-      component: resolve => require(['@/pages/about/index'],resolve)
+      component: resolve => require(['@/pages/about/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-建造师造价师在线教育培训报名报考平台',
+        content: {
+          keywords: '祥粤云学堂-建造师造价师在线教育培训平台报名报考',
+          description: '祥粤云学堂-建造师造价师在线教育培训平台报名报考'
+        }
+      }
     },
     {
       path: '/cart',
       name: '购物车',
-      component: resolve => require(['@/pages/cart/index'],resolve)
+      component: resolve => require(['@/pages/cart/index'],resolve),
     },
     {
       path: '/payment',
       name: '支付',
-      component: resolve => require(['@/pages/payment/index'],resolve)
+      component: resolve => require(['@/pages/payment/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-建造师造价师在线教育培训平台报名报考',
+        content: {
+          keywords: '祥粤云学堂-一级建造师,二级建造师,造价工程师,一级消防工程师,BIM,在线教育,职业教育,报考条件,报名时间,建造师注册,建造工程师',
+          description: '祥粤云学堂-职业教育一站式学习平台,专注一建,二建,造价工程师,一级消防工程师,BIM等工程师技能知识培训服务热线:020-87085982'
+        }
+      }
     },
     {
       path: '/payment-success',
       name: '支付成功',
-      component: resolve => require(['@/pages/payment-success/index'],resolve)
+      component: resolve => require(['@/pages/payment-success/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-建造师造价师在线教育培训平台报名报考',
+        content: {
+          keywords: '祥粤云学堂-一级建造师,二级建造师,造价工程师,一级消防工程师,BIM,在线教育,职业教育,报考条件,报名时间,建造师注册,建造工程师',
+          description: '祥粤云学堂-职业教育一站式学习平台,专注一建,二建,造价工程师,一级消防工程师,BIM等工程师技能知识培训服务热线:020-87085982'
+        }
+      }
     },
     {
       path: '/course-list',
       name: '课程列表',
-      component: resolve => require(['@/pages/course-list/index'],resolve)
+      component: resolve => require(['@/pages/course-list/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
+        content: {
+          keywords: '祥粤云学堂-一级建造师视频课件,二级建造师视频课件,建筑师工程师学习视频课程',
+          description: '祥粤云学堂-提供一二级建造师视频学习、免费直播公开课  ,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料。'
+        }
+      }
     },
     {
       path: '/bank-list',
       name: '题库列表',
-      component: resolve => require(['@/pages/bank-list/index'],resolve)
+      component: resolve => require(['@/pages/bank-list/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
+        content: {
+          keywords: '祥粤云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
+          description: '祥粤云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
+        }
+      }
     },
     {
       path: '/course-detail/:goodsId',
       name: '课程详情',
-      component: resolve => require(['@/pages/goods-detail/course-detail'],resolve)
+      component: resolve => require(['@/pages/goods-detail/course-detail'],resolve),
+      meta: {
+        title: '祥粤云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
+        content: {
+          keywords: '祥粤云学堂-一级建造师视频课件,二级建造师视频课件,建筑师工程师学习视频课程',
+          description: '祥粤云学堂-提供一二级建造师视频学习、免费直播公开课  ,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料。'
+        }
+      }
     },
     {
       path: '/bank-detail/:goodsId',
       name: '题库详情',
-      component: resolve => require(['@/pages/goods-detail/bank-detail'],resolve)
+      component: resolve => require(['@/pages/goods-detail/bank-detail'],resolve),
+      meta: {
+        title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
+        content: {
+          keywords: '祥粤云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
+          description: '祥粤云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
+        }
+      }
     },
     {
       path: '/my-course-detail/:goodsId',
       name: '课程详情',
-      component: resolve => require(['@/pages/course-detail/index'],resolve)
+      component: resolve => require(['@/pages/course-detail/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
+        content: {
+          keywords: '祥粤云学堂-一级建造师视频课件,二级建造师视频课件,建筑师工程师学习视频课程',
+          description: '祥粤云学堂-提供一二级建造师视频学习、免费直播公开课  ,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料。'
+        }
+      }
     },
     {
       path: '/course-report',
       name: '试卷报告',
-      component: resolve => require(['@/pages/course-report/index'],resolve)
+      component: resolve => require(['@/pages/course-report/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-建造师造价师在线教育培训平台报名报考',
+        content: {
+          keywords: '祥粤云学堂-一级建造师,二级建造师,造价工程师,一级消防工程师,BIM,在线教育,职业教育,报考条件,报名时间,建造师注册,建造工程师',
+          description: '祥粤云学堂-职业教育一站式学习平台,专注一建,二建,造价工程师,一级消防工程师,BIM等工程师技能知识培训服务热线:020-87085982'
+        }
+      }
     },
     
     {
       path: '/bank-report/:goodsId',
       name: '试卷报告',
-      component: resolve => require(['@/pages/bank-report/index'],resolve)
+      component: resolve => require(['@/pages/bank-report/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-建造师造价师在线教育培训平台报名报考',
+        content: {
+          keywords: '祥粤云学堂-一级建造师,二级建造师,造价工程师,一级消防工程师,BIM,在线教育,职业教育,报考条件,报名时间,建造师注册,建造工程师',
+          description: '祥粤云学堂-职业教育一站式学习平台,专注一建,二建,造价工程师,一级消防工程师,BIM等工程师技能知识培训服务热线:020-87085982'
+        }
+      }
     },
     {
       path: '/course-exam/:goodsId',
       name: '做题',
-      component: resolve => require(['@/pages/course-exam/index'],resolve)
+      component: resolve => require(['@/pages/course-exam/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
+        content: {
+          keywords: '祥粤云学堂-一级建造师视频课件,二级建造师视频课件,建筑师工程师学习视频课程',
+          description: '祥粤云学堂-提供一二级建造师视频学习、免费直播公开课  ,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料。'
+        }
+      }
     },
     {
       path: '/bank-exam/:goodsId',
       name: '做题',
-      component: resolve => require(['@/pages/bank-exam/index'],resolve)
+      component: resolve => require(['@/pages/bank-exam/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
+        content: {
+          keywords: '祥粤云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
+          description: '祥粤云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
+        }
+      }
     },
     
     {
       path: '/bank-exam-continue/:goodsId',
       name: '继续做题',
-      component: resolve => require(['@/pages/bank-exam-continue/index'],resolve)
+      component: resolve => require(['@/pages/bank-exam-continue/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
+        content: {
+          keywords: '祥粤云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
+          description: '祥粤云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
+        }
+      }
     },
     {
       path: '/bank-exam-all-explain/:recordId',
       name: '全部解析',
-      component: resolve => require(['@/pages/bank-exam-all-explain/index'],resolve)
+      component: resolve => require(['@/pages/bank-exam-all-explain/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
+        content: {
+          keywords: '祥粤云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
+          description: '祥粤云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
+        }
+      }
     },
     {
       path: '/bank-exam-wrong-explain/:recordId',
       name: '错题解析',
-      component: resolve => require(['@/pages/bank-exam-wrong-explain/index'],resolve)
+      component: resolve => require(['@/pages/bank-exam-wrong-explain/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
+        content: {
+          keywords: '祥粤云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
+          description: '祥粤云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
+        }
+      }
     },
     {
       path: '/bank-exam-explain/:goodsId',
       name: '题目解析',
-      component: resolve => require(['@/pages/bank-exam-explain/index'],resolve)
+      component: resolve => require(['@/pages/bank-exam-explain/index'],resolve),
+      meta: {
+        title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
+        content: {
+          keywords: '祥粤云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
+          description: '祥粤云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
+        }
+      }
     },
     
     {
       path: '/subject/wrong-type-bank/:type',
       name: '错题',
-      component: resolve => require(['@/pages/subject/wrong-type-bank'],resolve)
+      component: resolve => require(['@/pages/subject/wrong-type-bank'],resolve),
+      meta: {
+        title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
+        content: {
+          keywords: '祥粤云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
+          description: '祥粤云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
+        }
+      }
     },
     {
       path: '/subject/wrong-bank/:examId',
       name: '错题',
-      component: resolve => require(['@/pages/subject/wrong-bank'],resolve)
+      component: resolve => require(['@/pages/subject/wrong-bank'],resolve),
+      meta: {
+        title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
+        content: {
+          keywords: '祥粤云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
+          description: '祥粤云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
+        }
+      }
     },
     {
       path: '/subject/collect-type-bank/:type',
       name: '收藏',
-      component: resolve => require(['@/pages/subject/collect-type-bank'],resolve)
+      component: resolve => require(['@/pages/subject/collect-type-bank'],resolve),
+      meta: {
+        title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
+        content: {
+          keywords: '祥粤云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
+          description: '祥粤云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
+        }
+      }
     },
     {
       path: '/subject/collect-bank/:examId',
       name: '收藏',
-      component: resolve => require(['@/pages/subject/collect-bank'],resolve)
+      component: resolve => require(['@/pages/subject/collect-bank'],resolve),
+      meta: {
+        title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
+        content: {
+          keywords: '祥粤云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
+          description: '祥粤云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
+        }
+      }
     },
     {
       path: '/person-center',
@@ -310,6 +464,17 @@ Router.prototype.push = function push(location) {
 router.beforeEach((to,from,next) => {
   console.log(to,'to')
   console.log(from,'from')
+  if (to.meta.content) {
+		let head = document.getElementsByTagName('head');
+		let meta = document.createElement('meta');
+		document.querySelector('meta[name="keywords"]').setAttribute('content', to.meta.content.keywords)
+		document.querySelector('meta[name="description"]').setAttribute('content', to.meta.content.description)
+		meta.content = to.meta.content;
+		head[0].appendChild(meta)
+	}
+	if (to.meta.title) {
+		document.title = to.meta.title;
+	}
   if(to.path === '/login'){
 
     next();