Ver Fonte

Merge branch 'x_bf_1' into dev

谢杰标 há 2 anos atrás
pai
commit
78b2d262d4

BIN
src/assets/cancelcol.png


BIN
src/assets/col.png


+ 93 - 0
src/components/common/CollectionBox.vue

@@ -0,0 +1,93 @@
+<template>
+  <div class="col-box">
+    <div class="col" :class="showT ? 'tuck' : 'cancel'" @click="collect">
+      <div v-if="showT"><img src="@/assets/col.png" alt="" />收藏</div>
+      <div v-else><img src="@/assets/cancelcol.png" alt="" />取消收藏</div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    showT: {
+      type: Boolean,
+      default: true,
+    },
+    param: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+  },
+  data() {
+    return {};
+  },
+  methods: {
+    collect() {
+      if (this.showT) {
+        let { questionId, goodsId, orderGoodsId, examId } = this.param;
+        this.$request
+          .collectQuestion({
+            examId,
+            questionId,
+            goodsId,
+            orderGoodsId,
+          })
+          .then((res) => {
+            this.$message.success("收藏成功");
+            this.$emit("sumit");
+          });
+      } else {
+        this.$request
+          .deleteCollectQuestion(this.param.collectQuestionId)
+          .then((res) => {
+            this.$message.success("取消收藏成功");
+            this.$emit("sumit");
+          });
+      }
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.col-box {
+  width: 970px;
+  position: absolute;
+  bottom: 0;
+  padding: 12px 0;
+  border-top: 1px solid #eeeeee;
+}
+.col {
+  width: 100%;
+  display: flex;
+  justify-content: center;
+  margin-left: 32px;
+  border-radius: 4px;
+
+  cursor: pointer;
+  div {
+    height: 30px;
+    line-height: 30px;
+    display: flex;
+    align-items: center;
+    font-size: 13px;
+  }
+  img {
+    margin-right: 4px;
+  }
+}
+.tuck {
+  width: 68px;
+  border: 1px solid #3f8dfd;
+  color: #3f8dfd;
+  background: #f2f7ff;
+}
+.cancel {
+  width: 86px;
+  color: #ffffff;
+  background: #f9c03c;
+}
+</style>

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

@@ -113,7 +113,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -202,7 +202,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -278,7 +278,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -652,7 +652,7 @@
                         </el-tabs>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -694,7 +694,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                   </template>

+ 31 - 75
src/pages/bank-exam-continue/index.vue

@@ -119,21 +119,6 @@
                           ></div>
                         </div>
                       </div>
-                      <div class="question__btns">
-                        <div
-                          class="collect"
-                          @click="
-                            collect(collectList[questionIndex], questionIndex)
-                          "
-                        >
-                          <template v-if="!collectList[questionIndex]"
-                            ><i class="el-icon-star-off"></i>收藏本题</template
-                          >
-                          <template v-if="collectList[questionIndex]"
-                            ><i class="el-icon-star-on"></i>已收藏</template
-                          >
-                        </div>
-                      </div>
                     </div>
                     <div
                       class="question"
@@ -227,19 +212,6 @@
                         >
                           确认答案
                         </div>
-                        <div
-                          class="collect"
-                          @click="
-                            collect(collectList[questionIndex], questionIndex)
-                          "
-                        >
-                          <template v-if="!collectList[questionIndex]"
-                            ><i class="el-icon-star-off"></i>收藏本题</template
-                          >
-                          <template v-if="collectList[questionIndex]"
-                            ><i class="el-icon-star-on"></i>已收藏</template
-                          >
-                        </div>
                       </div>
                     </div>
                     <div
@@ -321,21 +293,6 @@
                           ></div>
                         </div>
                       </div>
-                      <div class="question__btns">
-                        <div
-                          class="collect"
-                          @click="
-                            collect(collectList[questionIndex], questionIndex)
-                          "
-                        >
-                          <template v-if="!collectList[questionIndex]"
-                            ><i class="el-icon-star-off"></i>收藏本题</template
-                          >
-                          <template v-if="collectList[questionIndex]"
-                            ><i class="el-icon-star-on"></i>已收藏</template
-                          >
-                        </div>
-                      </div>
                     </div>
                     <div
                       class="question"
@@ -830,21 +787,6 @@
                           </el-tab-pane>
                         </el-tabs>
                       </div>
-                      <div class="question__btns">
-                        <div
-                          class="collect"
-                          @click="
-                            collect(collectList[questionIndex], questionIndex)
-                          "
-                        >
-                          <template v-if="!collectList[questionIndex]"
-                            ><i class="el-icon-star-off"></i>收藏本题</template
-                          >
-                          <template v-if="collectList[questionIndex]"
-                            ><i class="el-icon-star-on"></i>已收藏</template
-                          >
-                        </div>
-                      </div>
                     </div>
                     <div
                       class="question"
@@ -937,23 +879,15 @@
                         >
                           确认答案
                         </div>
-                        <div
-                          class="collect"
-                          @click="
-                            collect(collectList[questionIndex], questionIndex)
-                          "
-                        >
-                          <template v-if="!collectList[questionIndex]"
-                            ><i class="el-icon-star-off"></i>收藏本题</template
-                          >
-                          <template v-if="collectList[questionIndex]"
-                            ><i class="el-icon-star-on"></i>已收藏</template
-                          >
-                        </div>
                       </div>
                     </div>
                   </template>
                 </div>
+                <Collection-box
+                  :param="param"
+                  @sumit="getCollectInfo(current)"
+                  :showT="!collectList[current]"
+                ></Collection-box>
               </div>
               <div class="right-box">
                 <div class="right-box__header">
@@ -1037,6 +971,7 @@
 import Footer from "@/components/footer/index";
 import Header from "@/components/header/index";
 import ToolBar from "@/components/toolbar/index";
+import CollectionBox from "@/components/common/CollectionBox.vue";
 import { mapMutations } from "vuex";
 export default {
   name: "BankExplain",
@@ -1044,6 +979,7 @@ export default {
     Footer,
     Header,
     ToolBar,
+    CollectionBox,
   },
   data() {
     return {
@@ -1202,7 +1138,7 @@ export default {
         let json = JSON.parse(res.data.historyExamJson);
         this.examData = res.data;
         this.questionList = json;
-        this.getCollectInfo(this.current)
+        this.getCollectInfo(this.current);
         //5秒保存一下做题记录
         clearInterval(this.postTimer);
         this.postTimer = setInterval(() => {
@@ -2040,6 +1976,21 @@ export default {
         .then((res) => {});
     },
   },
+  computed: {
+    param() {
+      return {
+        examId: this.examId,
+        questionId: this.questionList[this.current]
+          ? this.questionList[this.current].questionId
+          : undefined,
+        goodsId: this.goodsId,
+        orderGoodsId: this.orderGoodsId,
+        collectQuestionId: this.collectList[this.current]
+          ? this.collectList[this.current].collectQuestionId
+          : undefined,
+      };
+    },
+  },
 };
 </script>
 
@@ -2062,6 +2013,7 @@ export default {
           margin-bottom: 20px;
           border: 1px solid #eee;
           .left-box {
+            position: relative;
             float: left;
             width: 970px;
             min-height: 630px;
@@ -2132,7 +2084,8 @@ export default {
                   }
 
                   .question-list {
-                    padding: 24px 0 0 24px;
+                    padding: 24px 0 24px 24px;
+                    border-bottom: 1px solid #eee;
                     .checkbox,
                     .radio {
                       cursor: pointer;
@@ -2235,9 +2188,9 @@ export default {
 
                   .answer-list {
                     height: 40px;
-                    border-top: 1px solid #eee;
+                    // border-top: 1px solid #eee;
                     border-bottom: 1px solid #eee;
-                    margin-top: 24px;
+                    // margin-top: 24px;
                     display: flex;
                     align-items: center;
                     justify-content: space-between;
@@ -2303,6 +2256,9 @@ export default {
                       }
                     }
                   }
+                  .question {
+                    padding-bottom: 58px;
+                  }
                 }
 
                 &__btns {

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

@@ -113,7 +113,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -202,7 +202,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -278,7 +278,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -652,7 +652,7 @@
                         </el-tabs>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -694,7 +694,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                   </template>

+ 33 - 95
src/pages/bank-exam/index.vue

@@ -137,21 +137,6 @@
                           ></div>
                         </div>
                       </div>
-                      <div class="question__btns">
-                        <div
-                          class="collect"
-                          @click="
-                            collect(collectList[questionIndex], questionIndex)
-                          "
-                        >
-                          <template v-if="!collectList[questionIndex]"
-                            ><i class="el-icon-star-off"></i>收藏本题
-                          </template>
-                          <template v-if="collectList[questionIndex]"
-                            ><i class="el-icon-star-on"></i>已收藏</template
-                          >
-                        </div>
-                      </div>
                     </div>
 
                     <div
@@ -257,19 +242,6 @@
                         >
                           确认答案
                         </div>
-                        <div
-                          class="collect"
-                          @click="
-                            collect(collectList[questionIndex], questionIndex)
-                          "
-                        >
-                          <template v-if="!collectList[questionIndex]"
-                            ><i class="el-icon-star-off"></i>收藏本题</template
-                          >
-                          <template v-if="collectList[questionIndex]"
-                            ><i class="el-icon-star-on"></i>已收藏</template
-                          >
-                        </div>
                       </div>
                     </div>
 
@@ -365,21 +337,6 @@
                           ></div>
                         </div>
                       </div>
-                      <div class="question__btns">
-                        <div
-                          class="collect"
-                          @click="
-                            collect(collectList[questionIndex], questionIndex)
-                          "
-                        >
-                          <template v-if="!collectList[questionIndex]"
-                            ><i class="el-icon-star-off"></i>收藏本题</template
-                          >
-                          <template v-if="collectList[questionIndex]"
-                            ><i class="el-icon-star-on"></i>已收藏</template
-                          >
-                        </div>
-                      </div>
                     </div>
 
                     <div
@@ -939,21 +896,6 @@
                           </el-tab-pane>
                         </el-tabs>
                       </div>
-                      <div class="question__btns">
-                        <div
-                          class="collect"
-                          @click="
-                            collect(collectList[questionIndex], questionIndex)
-                          "
-                        >
-                          <template v-if="!collectList[questionIndex]"
-                            ><i class="el-icon-star-off"></i>收藏本题</template
-                          >
-                          <template v-if="collectList[questionIndex]"
-                            ><i class="el-icon-star-on"></i>已收藏</template
-                          >
-                        </div>
-                      </div>
                     </div>
 
                     <div
@@ -1053,23 +995,15 @@
                         >
                           确认答案
                         </div>
-                        <div
-                          class="collect"
-                          @click="
-                            collect(collectList[questionIndex], questionIndex)
-                          "
-                        >
-                          <template v-if="!collectList[questionIndex]"
-                            ><i class="el-icon-star-off"></i>收藏本题</template
-                          >
-                          <template v-if="collectList[questionIndex]"
-                            ><i class="el-icon-star-on"></i>已收藏</template
-                          >
-                        </div>
                       </div>
                     </div>
                   </template>
                 </div>
+                <Collection-box
+                  :param="param"
+                  @sumit="getCollectInfo(current)"
+                  :showT="!collectList[current]"
+                ></Collection-box>
               </div>
               <div class="right-box">
                 <div class="right-box__header">
@@ -1160,6 +1094,7 @@
 import Footer from "@/components/footer/index";
 import Header from "@/components/header/index";
 import ToolBar from "@/components/toolbar/index";
+import CollectionBox from "@/components/common/CollectionBox.vue";
 import { mapMutations } from "vuex";
 export default {
   name: "BankExplain",
@@ -1167,6 +1102,7 @@ export default {
     Footer,
     Header,
     ToolBar,
+    CollectionBox,
   },
   data() {
     return {
@@ -1568,7 +1504,7 @@ export default {
 
           this.questionList = res.data;
           this.lastCount = this.questionList.length;
-          this.getCollectInfo(this.current)
+          this.getCollectInfo(this.current);
           await this.examRecord();
         });
     },
@@ -1778,7 +1714,7 @@ export default {
       //       chapterExamId: this.chapterId || 0,
       //       questionIds: [this.questionList[questionIndex].questionId],
       //       recordId: this.recordId,
-              // type 1,
+      // type 1,
       //     })
       //     .then((res) => {});
       // }
@@ -2765,6 +2701,21 @@ export default {
         });
     },
   },
+  computed: {
+    param() {
+      return {
+        examId: this.examId,
+        questionId: this.questionList[this.current]
+          ? this.questionList[this.current].questionId
+          : undefined,
+        goodsId: this.goodsId,
+        orderGoodsId: this.orderGoodsId,
+        collectQuestionId: this.collectList[this.current]
+          ? this.collectList[this.current].collectQuestionId
+          : undefined,
+      };
+    },
+  },
 };
 </script>
 
@@ -2787,6 +2738,7 @@ export default {
           margin-bottom: 20px;
           border: 1px solid #eee;
           .left-box {
+            position: relative;
             float: left;
             width: 970px;
             min-height: 630px;
@@ -2820,7 +2772,6 @@ export default {
                 display: flex;
                 flex-direction: column;
                 height: 100%;
-
                 &__title {
                   padding-left: 12px;
                   font-size: 16px;
@@ -2838,7 +2789,7 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
-
+                  text-align: justify;
                   /deep/ img {
                     max-width: 100% !important;
                   }
@@ -2856,7 +2807,8 @@ export default {
                   }
 
                   .question-list {
-                    padding: 24px 0 0 24px;
+                    padding: 24px 0 24px 24px;
+                    border-bottom: 1px solid #eee;
                     .checkbox,
                     .radio {
                       cursor: pointer;
@@ -2960,9 +2912,9 @@ export default {
 
                   .answer-list {
                     height: 40px;
-                    border-top: 1px solid #eee;
+                    // border-top: 1px solid #eee;
                     border-bottom: 1px solid #eee;
-                    margin-top: 24px;
+                    // margin-top: 24px;
                     display: flex;
                     align-items: center;
                     justify-content: space-between;
@@ -3028,6 +2980,9 @@ export default {
                       }
                     }
                   }
+                  .question {
+                    padding-bottom: 58px;
+                  }
                 }
 
                 &__btns {
@@ -3047,23 +3002,6 @@ export default {
                     line-height: 32px;
                     font-size: 16px;
                   }
-
-                  .collect {
-                    width: 100px;
-                    cursor: pointer;
-                    position: absolute;
-                    right: 0;
-                    top: 5px;
-                    font-size: 12px;
-                    font-family: Microsoft YaHei;
-                    font-weight: 400;
-                    color: #3f8dfd;
-                    line-height: 24px;
-
-                    i {
-                      font-size: 20px;
-                    }
-                  }
                 }
               }
             }

+ 0 - 7351
src/pages/course-detail/index copy.vue

@@ -1,7351 +0,0 @@
-<template>
-  <div class="course-detail">
-    <Header></Header>
-    <section class="section">
-      <div class="container">
-        <div class="section__header">
-          <div class="container">
-            <el-breadcrumb separator="/">
-              <el-breadcrumb-item :to="{ path: '/index' }"
-                >首页</el-breadcrumb-item
-              >
-              <el-breadcrumb-item>课程详情</el-breadcrumb-item>
-            </el-breadcrumb>
-          </div>
-        </div>
-        <div class="section__body">
-          <div class="container">
-            <div class="course-info">
-              <div class="course-info__header clearfix">
-                <div
-                  class="left-box"
-                  :style="{
-                    backgroundImage: `url(${$tools.splitImgHost(
-                      goodsData.coverUrl,
-                      false
-                    )})`,
-                  }"
-                >
-                  <div v-show="vid" id="player"></div>
-                  <div v-show="vidzb" id="playerzb"></div>
-                  <div class="recordStyle" v-if="showRecordStatus">
-                    您上次看到{{
-                      $tools.secondToTime(recordObj.videoCurrentTime)
-                    }},正在自动续播<span
-                      style="
-                        display: inline-block;
-                        width: 50px;
-                        text-align: center;
-                      "
-                      >|</span
-                    >
-                    <span class="btn_sty" @click="backLI">从头播放</span>
-                  </div>
-                </div>
-                <div class="right-box">
-                  <div class="right-box__header">
-                    <div class="title">
-                      <el-select
-                        class="select"
-                        v-model="courseId"
-                        @change="courseChange"
-                      >
-                        <el-option
-                          :label="item.courseName"
-                          :value="item.courseId"
-                          v-for="(item, index) in courseList"
-                          :key="index"
-                        ></el-option>
-                      </el-select>
-                    </div>
-                    <div class="tabs">
-                      <el-tabs v-model="courseTabIndex">
-                        <el-tab-pane
-                          :name="tab.name"
-                          v-for="(tab, index) in menuTab"
-                          :key="index"
-                        >
-                          <div slot="label">
-                            <span class="label">{{ tab.label }}</span>
-                          </div>
-                          <template v-if="tab.name == '1'">
-                            <div class="right-box__body">
-                              <div
-                                class="item"
-                                v-for="(menu, index) in menuList"
-                                :key="index"
-                              >
-                                <template v-if="menu.type == 1">
-                                  <div
-                                    class="item__title"
-                                    @click="openModule(menu)"
-                                  >
-                                    <i
-                                      :class="{
-                                        'el-icon-caret-right': !menu.showList,
-                                        'el-icon-caret-bottom': menu.showList,
-                                      }"
-                                    ></i>
-                                    {{ menu.menuName }}
-                                  </div>
-                                  <div class="item__content">
-                                    <div
-                                      class="bank-chapter"
-                                      v-if="menu.showList"
-                                    >
-                                      <div
-                                        class="bank-chapter__item"
-                                        v-for="(
-                                          chapter, chapterIndex
-                                        ) in menu.list"
-                                        :key="chapterIndex"
-                                      >
-                                        <div
-                                          class="bank-chapter__item__text"
-                                          @click="openChapter(chapter)"
-                                        >
-                                          <i
-                                            :class="{
-                                              'el-icon-caret-right':
-                                                !chapter.showList,
-                                              'el-icon-caret-bottom':
-                                                chapter.showList,
-                                            }"
-                                          ></i
-                                          >{{ chapter.name }}
-                                        </div>
-
-                                        <div
-                                          class="bank-section"
-                                          v-if="chapter.showList"
-                                        >
-                                          <div
-                                            class="bank-section__item"
-                                            :class="{
-                                              active: isActive(section),
-                                            }"
-                                            v-for="(
-                                              section, sectionIndex
-                                            ) in chapter.list"
-                                            :key="sectionIndex"
-                                            @click="getResource(section)"
-                                          >
-                                            <template v-if="section.type != 2">
-                                              <template>
-                                                <div
-                                                  class="note note--blue"
-                                                  v-if="
-                                                    section.sectionType == 1
-                                                  "
-                                                >
-                                                  录播
-                                                </div>
-                                                <div
-                                                  class="note"
-                                                  v-if="
-                                                    section.sectionType == 2
-                                                  "
-                                                >
-                                                  直播
-                                                </div>
-                                                <div
-                                                  class="note note--yellow"
-                                                  v-if="
-                                                    section.sectionType == 3
-                                                  "
-                                                >
-                                                  回放
-                                                </div>
-                                                <div
-                                                  class="
-                                                    bank-section__item__text
-                                                  "
-                                                >
-                                                  {{ section.name }}
-                                                  <div
-                                                    style="font-size: 12px"
-                                                    v-if="
-                                                      section.liveStartTime >
-                                                      nowTime
-                                                    "
-                                                  >
-                                                    <span>{{
-                                                      $tools.timestampToTime(
-                                                        section.liveStartTime,
-                                                        (isDay = false)
-                                                      )
-                                                    }}</span
-                                                    >-
-                                                    <span>{{
-                                                      $tools.timestampToTime(
-                                                        section.liveEndTime,
-                                                        (isDay = false)
-                                                      )
-                                                    }}</span>
-                                                  </div>
-                                                </div>
-                                              </template>
-
-                                              <template
-                                                v-if="section.durationTime > 0"
-                                              >
-                                                <div class="during">
-                                                  {{
-                                                    $tools.secondToDate(
-                                                      section.durationTime
-                                                    )
-                                                  }}
-                                                </div>
-                                              </template>
-                                              <template>
-                                                <div
-                                                  class="btn"
-                                                  v-if="section.rebuild > 0"
-                                                >
-                                                  待重修
-                                                </div>
-                                                <template v-else>
-                                                  <div
-                                                    class="btn btn--green"
-                                                    v-if="section.learning == 1"
-                                                  >
-                                                    已看完
-                                                  </div>
-                                                </template>
-                                              </template>
-                                              <template
-                                                v-if="
-                                                  section.liveStartTime &&
-                                                  section.sectionType != 3
-                                                "
-                                              >
-                                                <div
-                                                  class="
-                                                    live-btn live-btn--blue
-                                                  "
-                                                  v-if="
-                                                    section.liveStartTime >
-                                                    nowTime
-                                                  "
-                                                >
-                                                  待开播
-                                                </div>
-                                                <div
-                                                  class="
-                                                    live-btn live-btn--yellow
-                                                  "
-                                                  v-if="
-                                                    section.liveStartTime <=
-                                                      nowTime &&
-                                                    section.liveEndTime >
-                                                      nowTime
-                                                  "
-                                                >
-                                                  直播中
-                                                </div>
-                                                <div
-                                                  class="live-btn"
-                                                  v-if="
-                                                    section.liveEndTime <
-                                                    nowTime
-                                                  "
-                                                >
-                                                  已结束
-                                                </div>
-                                              </template>
-                                            </template>
-
-                                            <template v-if="section.type == 2">
-                                              <template>
-                                                <div
-                                                  class="test-btn"
-                                                  v-if="section.doType == 1"
-                                                >
-                                                  练习
-                                                </div>
-                                                <div
-                                                  class="test-btn"
-                                                  v-if="section.doType != 1"
-                                                >
-                                                  考试
-                                                </div>
-                                              </template>
-                                              <div
-                                                class="bank-section__item__text"
-                                              >
-                                                {{ section.name }}
-                                              </div>
-                                              <template>
-                                                <div
-                                                  class="btn"
-                                                  v-if="section.rebuild > 0"
-                                                >
-                                                  待重修
-                                                </div>
-                                                <template v-else>
-                                                  <div
-                                                    class="btn btn--green"
-                                                    v-if="section.learning == 1"
-                                                  >
-                                                    合格
-                                                  </div>
-                                                  <div
-                                                    class="btn btn--red"
-                                                    v-if="section.learning == 0"
-                                                  >
-                                                    不合格
-                                                  </div>
-                                                  <div
-                                                    class="btn btn--green"
-                                                    v-if="section.rebuild > 0"
-                                                  >
-                                                    待重测
-                                                  </div>
-                                                </template>
-                                              </template>
-                                            </template>
-                                          </div>
-                                        </div>
-                                      </div>
-                                    </div>
-                                  </div>
-                                </template>
-
-                                <template v-if="menu.type == 2">
-                                  <div class="item__content">
-                                    <div class="bank-chapter">
-                                      <div class="bank-chapter__item">
-                                        <div
-                                          class="bank-chapter__item__text"
-                                          @click="openChapter(menu)"
-                                        >
-                                          <i
-                                            :class="{
-                                              'el-icon-caret-right':
-                                                !menu.showList,
-                                              'el-icon-caret-bottom':
-                                                menu.showList,
-                                            }"
-                                          ></i
-                                          >{{ menu.menuName }}
-                                        </div>
-
-                                        <div
-                                          class="bank-section"
-                                          v-if="menu.showList"
-                                        >
-                                          <div
-                                            class="bank-section__item"
-                                            :class="{
-                                              active: isActive(section),
-                                            }"
-                                            v-for="(
-                                              section, sectionIndex
-                                            ) in menu.list"
-                                            :key="sectionIndex"
-                                            @click="getResource(section)"
-                                          >
-                                            <template v-if="section.type != 2">
-                                              <template>
-                                                <div
-                                                  class="note note--blue"
-                                                  v-if="
-                                                    section.sectionType == 1
-                                                  "
-                                                >
-                                                  录播
-                                                </div>
-                                                <div
-                                                  class="note"
-                                                  v-if="
-                                                    section.sectionType == 2
-                                                  "
-                                                >
-                                                  直播
-                                                </div>
-                                                <div
-                                                  class="note note--yellow"
-                                                  v-if="
-                                                    section.sectionType == 3
-                                                  "
-                                                >
-                                                  回放
-                                                </div>
-                                              </template>
-                                              <div
-                                                class="bank-section__item__text"
-                                              >
-                                                {{ section.name }}
-                                                <div
-                                                  style="font-size: 12px"
-                                                  v-if="
-                                                    section.liveStartTime >
-                                                    nowTime
-                                                  "
-                                                >
-                                                  <span>{{
-                                                    $tools.timestampToTime(
-                                                      section.liveStartTime,
-                                                      (isDay = false)
-                                                    )
-                                                  }}</span
-                                                  >-
-                                                  <span>{{
-                                                    $tools.timestampToTime(
-                                                      section.liveEndTime,
-                                                      (isDay = false)
-                                                    )
-                                                  }}</span>
-                                                </div>
-                                              </div>
-
-                                              <template
-                                                v-if="section.durationTime > 0"
-                                              >
-                                                <div class="during">
-                                                  {{
-                                                    $tools.secondToDate(
-                                                      section.durationTime
-                                                    )
-                                                  }}
-                                                </div>
-                                              </template>
-                                              <template>
-                                                <div
-                                                  class="btn"
-                                                  v-if="section.rebuild > 0"
-                                                >
-                                                  待重修
-                                                </div>
-                                                <template v-else>
-                                                  <div
-                                                    class="btn btn--green"
-                                                    v-if="section.learning == 1"
-                                                  >
-                                                    已看完
-                                                  </div>
-                                                </template>
-                                              </template>
-                                              <template
-                                                v-if="
-                                                  section.liveStartTime &&
-                                                  section.sectionType != 3
-                                                "
-                                              >
-                                                <div
-                                                  class="
-                                                    live-btn live-btn--blue
-                                                  "
-                                                  v-if="
-                                                    section.liveStartTime >
-                                                    nowTime
-                                                  "
-                                                >
-                                                  待开播
-                                                </div>
-                                                <div
-                                                  class="
-                                                    live-btn live-btn--yellow
-                                                  "
-                                                  v-if="
-                                                    section.liveStartTime <=
-                                                      nowTime &&
-                                                    section.liveEndTime >
-                                                      nowTime
-                                                  "
-                                                >
-                                                  直播中
-                                                </div>
-                                                <div
-                                                  class="live-btn"
-                                                  v-if="
-                                                    section.liveEndTime <
-                                                    nowTime
-                                                  "
-                                                >
-                                                  已结束
-                                                </div>
-                                              </template>
-                                            </template>
-
-                                            <template v-if="section.type == 2">
-                                              <template>
-                                                <div
-                                                  class="test-btn"
-                                                  v-if="section.doType == 1"
-                                                >
-                                                  练习
-                                                </div>
-                                                <div
-                                                  class="test-btn"
-                                                  v-if="section.doType != 1"
-                                                >
-                                                  考试
-                                                </div>
-                                              </template>
-                                              <div
-                                                class="bank-section__item__text"
-                                              >
-                                                {{ section.name }}
-                                              </div>
-                                              <template>
-                                                <div
-                                                  class="btn"
-                                                  v-if="section.rebuild > 0"
-                                                >
-                                                  待重修
-                                                </div>
-                                                <template v-else>
-                                                  <div
-                                                    class="btn btn--green"
-                                                    v-if="section.learning == 1"
-                                                  >
-                                                    合格
-                                                  </div>
-                                                  <div
-                                                    class="btn btn--red"
-                                                    v-if="section.learning == 0"
-                                                  >
-                                                    不合格
-                                                  </div>
-                                                  <div
-                                                    class="btn btn--green"
-                                                    v-if="section.rebuild > 0"
-                                                  >
-                                                    待重测
-                                                  </div>
-                                                </template>
-                                              </template>
-                                            </template>
-                                          </div>
-                                        </div>
-                                      </div>
-                                    </div>
-                                  </div>
-                                </template>
-
-                                <template v-if="menu.type == 3">
-                                  <div class="item__content">
-                                    <div class="bank-section">
-                                      <div
-                                        class="bank-section__item"
-                                        :class="{
-                                          active: isActive(menu),
-                                        }"
-                                        @click="getResource(menu)"
-                                      >
-                                        <template>
-                                          <div
-                                            class="note note--blue"
-                                            v-if="menu.sectionType == 1"
-                                          >
-                                            录播
-                                          </div>
-                                          <div
-                                            class="note"
-                                            v-if="menu.sectionType == 2"
-                                          >
-                                            直播
-                                          </div>
-                                          <div
-                                            class="note note--yellow"
-                                            v-if="menu.sectionType == 3"
-                                          >
-                                            回放
-                                          </div>
-                                          <div class="bank-section__item__text">
-                                            {{ menu.name }}
-                                            <div
-                                              style="font-size: 12px"
-                                              v-if="
-                                                menu.liveStartTime > nowTime
-                                              "
-                                            >
-                                              <span>{{
-                                                $tools.timestampToTime(
-                                                  menu.liveStartTime,
-                                                  (isDay = false)
-                                                )
-                                              }}</span
-                                              >-
-                                              <span>{{
-                                                $tools.timestampToTime(
-                                                  menu.liveEndTime,
-                                                  (isDay = false)
-                                                )
-                                              }}</span>
-                                            </div>
-                                          </div>
-                                        </template>
-
-                                        <template v-if="menu.durationTime > 0">
-                                          <div class="during">
-                                            {{
-                                              $tools.secondToDate(
-                                                menu.durationTime
-                                              )
-                                            }}
-                                          </div>
-                                        </template>
-                                        <template>
-                                          <div
-                                            class="btn"
-                                            v-if="menu.rebuild > 0"
-                                          >
-                                            待重修
-                                          </div>
-                                          <template v-else>
-                                            <div
-                                              class="btn btn--green"
-                                              v-if="menu.learning == 1"
-                                            >
-                                              已看完
-                                            </div>
-                                          </template>
-                                        </template>
-                                        <template
-                                          v-if="
-                                            menu.liveStartTime &&
-                                            menu.sectionType != 3
-                                          "
-                                        >
-                                          <div
-                                            class="live-btn live-btn--blue"
-                                            v-if="menu.liveStartTime > nowTime"
-                                          >
-                                            待开播
-                                          </div>
-                                          <div
-                                            class="live-btn live-btn--yellow"
-                                            v-if="
-                                              menu.liveStartTime <= nowTime &&
-                                              menu.liveEndTime > nowTime
-                                            "
-                                          >
-                                            直播中
-                                          </div>
-                                          <div
-                                            class="live-btn"
-                                            v-if="menu.liveEndTime < nowTime"
-                                          >
-                                            已结束
-                                          </div>
-                                        </template>
-                                      </div>
-                                    </div>
-                                  </div>
-                                </template>
-                              </div>
-                            </div>
-                          </template>
-                          <template v-if="tab.name == '2'">
-                            <div class="right-box__body">
-                              <div
-                                class="item"
-                                v-for="(menu, index) in reMenuList"
-                                :key="index"
-                              >
-                                <template v-if="menu.type == 1">
-                                  <div
-                                    class="item__title"
-                                    @click="openModule(menu)"
-                                  >
-                                    <i
-                                      :class="{
-                                        'el-icon-caret-right': !menu.showList,
-                                        'el-icon-caret-bottom': menu.showList,
-                                      }"
-                                    ></i>
-                                    {{ menu.menuName }}
-                                  </div>
-                                  <div class="item__content">
-                                    <div
-                                      class="bank-chapter"
-                                      v-if="menu.showList"
-                                    >
-                                      <div
-                                        class="bank-chapter__item"
-                                        v-for="(
-                                          chapter, chapterIndex
-                                        ) in menu.list"
-                                        :key="chapterIndex"
-                                      >
-                                        <div
-                                          class="bank-chapter__item__text"
-                                          @click="openChapter(chapter)"
-                                        >
-                                          <i
-                                            :class="{
-                                              'el-icon-caret-right':
-                                                !chapter.showList,
-                                              'el-icon-caret-bottom':
-                                                chapter.showList,
-                                            }"
-                                          ></i
-                                          >{{ chapter.name }}
-                                        </div>
-
-                                        <div
-                                          class="bank-section"
-                                          v-if="chapter.showList"
-                                        >
-                                          <div
-                                            class="bank-section__item"
-                                            :class="{
-                                              active: isActive(section),
-                                            }"
-                                            v-for="(
-                                              section, sectionIndex
-                                            ) in chapter.list"
-                                            :key="sectionIndex"
-                                            @click="getResource(section)"
-                                          >
-                                            <template v-if="section.type != 2">
-                                              <template>
-                                                <div
-                                                  class="note note--blue"
-                                                  v-if="
-                                                    section.sectionType == 1
-                                                  "
-                                                >
-                                                  录播
-                                                </div>
-                                                <div
-                                                  class="note"
-                                                  v-if="
-                                                    section.sectionType == 2
-                                                  "
-                                                >
-                                                  直播
-                                                </div>
-                                                <div
-                                                  class="note note--yellow"
-                                                  v-if="
-                                                    section.sectionType == 3
-                                                  "
-                                                >
-                                                  回放
-                                                </div>
-                                                <div
-                                                  class="
-                                                    bank-section__item__text
-                                                  "
-                                                >
-                                                  {{ section.name }}
-                                                  <div
-                                                    style="font-size: 12px"
-                                                    v-if="
-                                                      section.liveStartTime >
-                                                      nowTime
-                                                    "
-                                                  >
-                                                    <span>{{
-                                                      $tools.timestampToTime(
-                                                        section.liveStartTime,
-                                                        (isDay = false)
-                                                      )
-                                                    }}</span
-                                                    >-
-                                                    <span>{{
-                                                      $tools.timestampToTime(
-                                                        section.liveEndTime,
-                                                        (isDay = false)
-                                                      )
-                                                    }}</span>
-                                                  </div>
-                                                </div>
-                                              </template>
-
-                                              <template
-                                                v-if="section.durationTime > 0"
-                                              >
-                                                <div class="during">
-                                                  {{
-                                                    $tools.secondToDate(
-                                                      section.durationTime
-                                                    )
-                                                  }}
-                                                </div>
-                                              </template>
-                                              <template>
-                                                <div
-                                                  class="btn"
-                                                  v-if="section.rebuild > 0"
-                                                >
-                                                  待重修
-                                                </div>
-                                                <template v-else>
-                                                  <div
-                                                    class="btn btn--green"
-                                                    v-if="section.learning == 1"
-                                                  >
-                                                    已看完
-                                                  </div>
-                                                </template>
-                                              </template>
-                                              <template
-                                                v-if="
-                                                  section.liveStartTime &&
-                                                  section.sectionType != 3
-                                                "
-                                              >
-                                                <div
-                                                  class="
-                                                    live-btn live-btn--blue
-                                                  "
-                                                  v-if="
-                                                    section.liveStartTime >
-                                                    nowTime
-                                                  "
-                                                >
-                                                  待开播
-                                                </div>
-                                                <div
-                                                  class="
-                                                    live-btn live-btn--yellow
-                                                  "
-                                                  v-if="
-                                                    section.liveStartTime <=
-                                                      nowTime &&
-                                                    section.liveEndTime >
-                                                      nowTime
-                                                  "
-                                                >
-                                                  直播中
-                                                </div>
-                                                <div
-                                                  class="live-btn"
-                                                  v-if="
-                                                    section.liveEndTime <
-                                                    nowTime
-                                                  "
-                                                >
-                                                  已结束
-                                                </div>
-                                              </template>
-                                            </template>
-
-                                            <template v-if="section.type == 2">
-                                              <template>
-                                                <div
-                                                  class="test-btn"
-                                                  v-if="section.doType == 1"
-                                                >
-                                                  练习
-                                                </div>
-                                                <div
-                                                  class="test-btn"
-                                                  v-if="section.doType != 1"
-                                                >
-                                                  考试
-                                                </div>
-                                              </template>
-                                              <div
-                                                class="bank-section__item__text"
-                                              >
-                                                {{ section.name }}
-                                              </div>
-                                              <template>
-                                                <div
-                                                  class="btn"
-                                                  v-if="section.rebuild > 0"
-                                                >
-                                                  待重修
-                                                </div>
-                                                <template v-else>
-                                                  <div
-                                                    class="btn btn--green"
-                                                    v-if="section.learning == 1"
-                                                  >
-                                                    合格
-                                                  </div>
-                                                  <div
-                                                    class="btn btn--red"
-                                                    v-if="section.learning == 0"
-                                                  >
-                                                    不合格
-                                                  </div>
-                                                  <div
-                                                    class="btn btn--green"
-                                                    v-if="section.rebuild > 0"
-                                                  >
-                                                    待重测
-                                                  </div>
-                                                </template>
-                                              </template>
-                                            </template>
-                                          </div>
-                                        </div>
-                                      </div>
-                                    </div>
-                                  </div>
-                                </template>
-
-                                <template v-if="menu.type == 2">
-                                  <div class="item__content">
-                                    <div class="bank-chapter">
-                                      <div class="bank-chapter__item">
-                                        <div
-                                          class="bank-chapter__item__text"
-                                          @click="openChapter(menu)"
-                                        >
-                                          <i
-                                            :class="{
-                                              'el-icon-caret-right':
-                                                !menu.showList,
-                                              'el-icon-caret-bottom':
-                                                menu.showList,
-                                            }"
-                                          ></i
-                                          >{{ menu.menuName }}
-                                        </div>
-
-                                        <div
-                                          class="bank-section"
-                                          v-if="menu.showList"
-                                        >
-                                          <div
-                                            class="bank-section__item"
-                                            :class="{
-                                              active: isActive(section),
-                                            }"
-                                            v-for="(
-                                              section, sectionIndex
-                                            ) in menu.list"
-                                            :key="sectionIndex"
-                                            @click="getResource(section)"
-                                          >
-                                            <template v-if="section.type != 2">
-                                              <template>
-                                                <div
-                                                  class="note note--blue"
-                                                  v-if="
-                                                    section.sectionType == 1
-                                                  "
-                                                >
-                                                  录播
-                                                </div>
-                                                <div
-                                                  class="note"
-                                                  v-if="
-                                                    section.sectionType == 2
-                                                  "
-                                                >
-                                                  直播
-                                                </div>
-                                                <div
-                                                  class="note note--yellow"
-                                                  v-if="
-                                                    section.sectionType == 3
-                                                  "
-                                                >
-                                                  回放
-                                                </div>
-                                              </template>
-                                              <div
-                                                class="bank-section__item__text"
-                                              >
-                                                {{ section.name }}
-                                                <div
-                                                  style="font-size: 12px"
-                                                  v-if="
-                                                    section.liveStartTime >
-                                                    nowTime
-                                                  "
-                                                >
-                                                  <span>{{
-                                                    $tools.timestampToTime(
-                                                      section.liveStartTime,
-                                                      (isDay = false)
-                                                    )
-                                                  }}</span
-                                                  >-
-                                                  <span>{{
-                                                    $tools.timestampToTime(
-                                                      section.liveEndTime,
-                                                      (isDay = false)
-                                                    )
-                                                  }}</span>
-                                                </div>
-                                              </div>
-
-                                              <template
-                                                v-if="section.durationTime > 0"
-                                              >
-                                                <div class="during">
-                                                  {{
-                                                    $tools.secondToDate(
-                                                      section.durationTime
-                                                    )
-                                                  }}
-                                                </div>
-                                              </template>
-                                              <template>
-                                                <div
-                                                  class="btn"
-                                                  v-if="section.rebuild > 0"
-                                                >
-                                                  待重修
-                                                </div>
-                                                <template v-else>
-                                                  <div
-                                                    class="btn btn--green"
-                                                    v-if="section.learning == 1"
-                                                  >
-                                                    已看完
-                                                  </div>
-                                                </template>
-                                              </template>
-                                              <template
-                                                v-if="
-                                                  section.liveStartTime &&
-                                                  section.sectionType != 3
-                                                "
-                                              >
-                                                <div
-                                                  class="
-                                                    live-btn live-btn--blue
-                                                  "
-                                                  v-if="
-                                                    section.liveStartTime >
-                                                    nowTime
-                                                  "
-                                                >
-                                                  待开播
-                                                </div>
-                                                <div
-                                                  class="
-                                                    live-btn live-btn--yellow
-                                                  "
-                                                  v-if="
-                                                    section.liveStartTime <=
-                                                      nowTime &&
-                                                    section.liveEndTime >
-                                                      nowTime
-                                                  "
-                                                >
-                                                  直播中
-                                                </div>
-                                                <div
-                                                  class="live-btn"
-                                                  v-if="
-                                                    section.liveEndTime <
-                                                    nowTime
-                                                  "
-                                                >
-                                                  已结束
-                                                </div>
-                                              </template>
-                                            </template>
-
-                                            <template v-if="section.type == 2">
-                                              <template>
-                                                <div
-                                                  class="test-btn"
-                                                  v-if="section.doType == 1"
-                                                >
-                                                  练习
-                                                </div>
-                                                <div
-                                                  class="test-btn"
-                                                  v-if="section.doType != 1"
-                                                >
-                                                  考试
-                                                </div>
-                                              </template>
-                                              <div
-                                                class="bank-section__item__text"
-                                              >
-                                                {{ section.name }}
-                                              </div>
-                                              <template>
-                                                <div
-                                                  class="btn"
-                                                  v-if="section.rebuild > 0"
-                                                >
-                                                  待重修
-                                                </div>
-                                                <template v-else>
-                                                  <div
-                                                    class="btn btn--green"
-                                                    v-if="section.learning == 1"
-                                                  >
-                                                    合格
-                                                  </div>
-                                                  <div
-                                                    class="btn btn--red"
-                                                    v-if="section.learning == 0"
-                                                  >
-                                                    不合格
-                                                  </div>
-                                                  <div
-                                                    class="btn btn--green"
-                                                    v-if="section.rebuild > 0"
-                                                  >
-                                                    待重测
-                                                  </div>
-                                                </template>
-                                              </template>
-                                            </template>
-                                          </div>
-                                        </div>
-                                      </div>
-                                    </div>
-                                  </div>
-                                </template>
-
-                                <template v-if="menu.type == 3">
-                                  <div class="item__content">
-                                    <div class="bank-section">
-                                      <div
-                                        class="bank-section__item"
-                                        :class="{
-                                          active: isActive(menu),
-                                        }"
-                                        @click="getResource(menu)"
-                                      >
-                                        <template>
-                                          <div
-                                            class="note note--blue"
-                                            v-if="menu.sectionType == 1"
-                                          >
-                                            录播
-                                          </div>
-                                          <div
-                                            class="note"
-                                            v-if="menu.sectionType == 2"
-                                          >
-                                            直播
-                                          </div>
-                                          <div
-                                            class="note note--yellow"
-                                            v-if="menu.sectionType == 3"
-                                          >
-                                            回放
-                                          </div>
-                                          <div class="bank-section__item__text">
-                                            {{ menu.name }}
-                                            <div
-                                              style="font-size: 12px"
-                                              v-if="
-                                                menu.liveStartTime > nowTime
-                                              "
-                                            >
-                                              <span>{{
-                                                $tools.timestampToTime(
-                                                  menu.liveStartTime,
-                                                  (isDay = false)
-                                                )
-                                              }}</span
-                                              >-
-                                              <span>{{
-                                                $tools.timestampToTime(
-                                                  menu.liveEndTime,
-                                                  (isDay = false)
-                                                )
-                                              }}</span>
-                                            </div>
-                                          </div>
-                                        </template>
-
-                                        <template v-if="menu.durationTime > 0">
-                                          <div class="during">
-                                            {{
-                                              $tools.secondToDate(
-                                                menu.durationTime
-                                              )
-                                            }}
-                                          </div>
-                                        </template>
-                                        <template>
-                                          <div
-                                            class="btn"
-                                            v-if="menu.rebuild > 0"
-                                          >
-                                            待重修
-                                          </div>
-                                          <template v-else>
-                                            <div
-                                              class="btn btn--green"
-                                              v-if="menu.learning == 1"
-                                            >
-                                              已看完
-                                            </div>
-                                          </template>
-                                        </template>
-                                        <template
-                                          v-if="
-                                            menu.liveStartTime &&
-                                            menu.sectionType != 3
-                                          "
-                                        >
-                                          <div
-                                            class="live-btn live-btn--blue"
-                                            v-if="menu.liveStartTime > nowTime"
-                                          >
-                                            待开播
-                                          </div>
-                                          <div
-                                            class="live-btn live-btn--yellow"
-                                            v-if="
-                                              menu.liveStartTime <= nowTime &&
-                                              menu.liveEndTime > nowTime
-                                            "
-                                          >
-                                            直播中
-                                          </div>
-                                          <div
-                                            class="live-btn"
-                                            v-if="menu.liveEndTime < nowTime"
-                                          >
-                                            已结束
-                                          </div>
-                                        </template>
-                                      </div>
-                                    </div>
-                                  </div>
-                                </template>
-                              </div>
-                            </div>
-                          </template>
-                        </el-tab-pane>
-                      </el-tabs>
-                    </div>
-                  </div>
-                </div>
-              </div>
-              <div class="course-info__body">
-                <el-tabs v-model="activeName">
-                  <el-tab-pane
-                    v-for="(item, index) in tabList"
-                    :key="index"
-                    :name="item.name"
-                    :label="item.label"
-                  >
-                    <template v-if="item.label == '学员须知'">
-                      <div class="course-menu clearfix">
-                        <div class="left-box">
-                          <div class="left-box__body">
-                            <div
-                              class="buy-note"
-                              v-html="
-                                goodsData.buyNote &&
-                                goodsData.buyNote.replace(/\n|\r\n/g, '<br>')
-                              "
-                            ></div>
-                          </div>
-                        </div>
-                        <div class="right-box">
-                          <div class="title">
-                            推荐课程
-                            <a class="more" @click="go('/course-list')"
-                              >更多></a
-                            >
-                          </div>
-                          <ul class="list">
-                            <li
-                              class="course-item"
-                              v-for="(itemy, index) in compyRecommend(
-                                recommendList.goodsList
-                              )"
-                              :key="index"
-                            >
-                              <GoodsItem :item="itemy"></GoodsItem>
-                              <!-- <div
-                                class="course-item__img"
-                                :style="`background-image:url(${$tools.splitImgHost(
-                                  itemy.coverUrl,
-                                  true
-                                )})`"
-                                @click="toGoodsDetail(itemy)"
-                              >
-                                <div class="note" v-if="itemy.year">
-                                  {{ itemy.year }}
-                                </div>
-                              </div>
-                              <div class="course-item__title">
-                                {{ itemy.goodsName }}
-                              </div>
-                              <div class="course-item__desc">
-                                <div class="price">
-                                  ¥{{ itemy.standPrice }}
-                                </div>
-                                <a
-                                  class="add"
-                                  @click.stop="addCart(true, itemy.goodsId)"
-                                  >加购物车</a
-                                >
-                              </div> -->
-                            </li>
-                          </ul>
-                        </div>
-                      </div>
-                    </template>
-
-                    <template v-if="item.label == '课程答疑'">
-                      <div class="answer-question">
-                        <div class="answer-question__header clearfix">
-                          <div class="textarea-wrap">
-                            <el-input
-                              class="textarea"
-                              v-model="textarea"
-                              rows="3"
-                              type="textarea"
-                              placeholder=""
-                            ></el-input>
-                          </div>
-                          <el-button
-                            type="primary"
-                            class="submit"
-                            @click="addAnswer"
-                            >提出疑问</el-button
-                          >
-                        </div>
-                        <div class="answer-question__body">
-                          <div class="question-list">
-                            <div
-                              v-if="answerList.length == 0"
-                              style="text-align: center"
-                            >
-                              暂无记录
-                            </div>
-                            <div
-                              class="question-list__item"
-                              v-for="(item, index) in answerList"
-                              :key="index"
-                            >
-                              <div class="question-list__item__avatar">
-                                <img
-                                  v-if="item.assignRealname"
-                                  :src="$tools.splitImgHost(item.assignAvatar)"
-                                  alt=""
-                                />
-                                <img
-                                  v-else
-                                  :src="$tools.splitImgHost(item.avatar)"
-                                  alt=""
-                                />
-                              </div>
-                              <div class="question-list__item__content">
-                                <div class="nickname">
-                                  {{ item.realname }}
-                                </div>
-                                <div class="desc">
-                                  {{ item.answerText }}
-                                </div>
-                                <div class="time">
-                                  {{
-                                    $tools.timestampToTime(
-                                      item.createTime,
-                                      false
-                                    )
-                                  }}
-
-                                  <div
-                                    class="del"
-                                    v-if="item.userId !== userInfo.userId"
-                                    @click="answerBack(item)"
-                                  >
-                                    <el-button type="text">回复</el-button>
-                                  </div>
-                                  <div
-                                    class="del"
-                                    @click="del(item)"
-                                    v-if="item.userId === userInfo.userId"
-                                  >
-                                    删除
-                                  </div>
-                                </div>
-                                <div
-                                  class="reply-list"
-                                  v-if="
-                                    item.newArraysAnswerList &&
-                                    item.newArraysAnswerList.length
-                                  "
-                                >
-                                  <div
-                                    class="reply-list__item"
-                                    v-for="(
-                                      items, indexs
-                                    ) in item.newArraysAnswerList"
-                                    :key="indexs"
-                                  >
-                                    <div class="reply-list__item__avatar">
-                                      <img
-                                        :src="$tools.splitImgHost(items.avatar)"
-                                        alt=""
-                                      />
-                                    </div>
-                                    <div class="reply-list__item__content">
-                                      <div class="nickname">
-                                        {{ items.realname }}
-                                      </div>
-                                      <div class="desc">
-                                        回复
-                                        <span
-                                          style="
-                                            margin: 0px 4px;
-                                            color: #409eff;
-                                          "
-                                          >@{{ items.assignRealname }}</span
-                                        >
-                                        {{ items.answerText }}
-                                      </div>
-                                      <div class="time">
-                                        {{
-                                          $tools.timestampToTime(
-                                            items.createTime,
-                                            false
-                                          )
-                                        }}
-                                        <div
-                                          class="del"
-                                          @click="del(items)"
-                                          v-if="
-                                            items.userId === userInfo.userId
-                                          "
-                                        >
-                                          删除
-                                        </div>
-                                        <div
-                                          class="reply"
-                                          v-if="
-                                            items.userId !== userInfo.userId
-                                          "
-                                          @click="answerBack(items)"
-                                        >
-                                          回复
-                                        </div>
-                                      </div>
-                                    </div>
-                                  </div>
-                                </div>
-                              </div>
-                            </div>
-                          </div>
-                        </div>
-                      </div>
-                    </template>
-
-                    <template v-if="item.label == '笔记讲义'">
-                      <div class="lecture-notes">
-                        <div class="lecture-notes__content clearfix">
-                          <div class="left-box">
-                            <div
-                              class="textarea clearfix"
-                              v-if="!(isPlayRebuild > 0) && !vidzb"
-                            >
-                              <el-input
-                                resize="none"
-                                rows="3"
-                                v-model="textareaNote"
-                                type="textarea"
-                                placeholder="觉得重要的就记下来吧~"
-                              ></el-input>
-                              <el-button
-                                type="primary"
-                                class="submit"
-                                @click="noteSubmit"
-                              >
-                                提交笔记
-                              </el-button>
-                            </div>
-
-                            <div class="note-list">
-                              <div
-                                v-if="noteList.length == 0"
-                                style="text-align: center"
-                              >
-                                暂无笔记
-                              </div>
-
-                              <div
-                                class="note-list__content"
-                                v-for="(item, index) in noteList"
-                                :key="index"
-                              >
-                                <div class="note-list__content__title">
-                                  {{ $tools.timestampToTime(item.dateNote) }}
-                                </div>
-                                <div
-                                  class="note-list__item"
-                                  v-for="(note, index) in item.userNotes"
-                                  :key="index"
-                                >
-                                  <i
-                                    class="el-icon-video-play"
-                                    @click="noteClick(note)"
-                                  ></i>
-                                  <div class="note-list__item__content">
-                                    <div class="title" @click="noteClick(note)">
-                                      {{ $tools.secondToDate(note.noteSecond) }}
-                                    </div>
-                                    <div class="desc">
-                                      {{ note.sectionName }}
-                                    </div>
-                                    <div class="time">{{ note.noteText }}</div>
-                                  </div>
-                                </div>
-                              </div>
-                            </div>
-                            <div class="pagination">
-                              <el-pagination
-                                background
-                                layout="prev, pager, next"
-                                :total="noteTotal"
-                                :page-size="noteParams.pageSize"
-                              >
-                              </el-pagination>
-                            </div>
-                          </div>
-                          <div class="right-box" v-if="courseHandoutsData">
-                            <div class="lecture-list">
-                              <div class="lecture-list__header">
-                                讲义
-
-                                <div
-                                  class="slide-btn"
-                                  @click="lectureShow = !lectureShow"
-                                >
-                                  收起
-                                </div>
-                              </div>
-                              <div
-                                class="lecture-list__body"
-                                v-if="lectureShow"
-                              >
-                                <div class="list">
-                                  <div class="list__item">
-                                    <div class="title">
-                                      {{ courseHandoutsData.handoutsName }}
-                                    </div>
-                                    <div class="btns">
-                                      <div
-                                        class="btn"
-                                        @click="
-                                          previvew(
-                                            $tools.splitImgHost(
-                                              courseHandoutsData.handoutsUrl
-                                            )
-                                          )
-                                        "
-                                      >
-                                        预览
-                                      </div>
-                                      <div
-                                        v-if="
-                                          courseHandoutsData.canDownload == 1
-                                            ? true
-                                            : false
-                                        "
-                                        class="btn"
-                                        @click="
-                                          printView(
-                                            $tools.splitImgHost(
-                                              courseHandoutsData.handoutsUrl
-                                            )
-                                          )
-                                        "
-                                      >
-                                        打印
-                                      </div>
-                                      <div
-                                        v-if="
-                                          courseHandoutsData.canDownload == 1
-                                            ? true
-                                            : false
-                                        "
-                                        class="btn"
-                                        @click="
-                                          download(
-                                            $tools.splitImgHost(
-                                              courseHandoutsData.handoutsUrl
-                                            ),
-                                            courseHandoutsData.urlName
-                                          )
-                                        "
-                                      >
-                                        下载
-                                      </div>
-                                    </div>
-                                  </div>
-                                </div>
-                              </div>
-                            </div>
-                            <div class="lecture-list__footer" v-if="showPdf">
-                              <div class="lecture-scan">
-                                <div class="lecture-scan__header">
-                                  {{ courseHandoutsData.urlName }}
-                                </div>
-                                <div class="lecture-scan__body">
-                                  <pdf
-                                    class="iframe"
-                                    :src="
-                                      $tools.splitImgHost(
-                                        courseHandoutsData.handoutsUrl
-                                      )
-                                    "
-                                    v-for="i in numPages"
-                                    :key="i"
-                                    :page="i"
-                                    ref="pdf"
-                                  ></pdf>
-                                  <iframe
-                                    id="printIframe"
-                                    :src="
-                                      $tools.splitImgHost(
-                                        courseHandoutsData.handoutsUrl
-                                      )
-                                    "
-                                    frameborder="0"
-                                    style="display: none"
-                                  ></iframe>
-                                </div>
-                              </div>
-                            </div>
-                          </div>
-                        </div>
-                      </div>
-                    </template>
-                  </el-tab-pane>
-                </el-tabs>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </section>
-
-    <el-dialog
-      width="800px"
-      class="take-photo"
-      :visible.sync="takePhotoModal"
-      :close-on-click-modal="false"
-      :close-on-press-escape="false"
-      :show-close="false"
-    >
-      <div class="take-photo__content">
-        <!-- <div class="take-photo__close" @click="takePhotoModal = false">X</div> -->
-        <div class="take-photo__header">人脸验证</div>
-        <div class="take-photo__body clearfix">
-          <div class="left-box">
-            <div class="title">重要提示:</div>
-            <div class="content">
-              <p>1、请保证摄像头正对自己,避免头像偏左或者偏右。</p>
-              <p>
-                2、请保证拍照环境光线充足(照片太暗或曝光会降低验证通过率)。
-              </p>
-              <p>
-                3、请保证整个头像在人脸识别区域内,脸部无遮挡装饰物(佩戴眼镜会降低通过率)。
-              </p>
-              <p>
-                4、如果下面视频中出现黑屏,摄像头可能被其他进程占用,请关闭其他调用摄像头的程序,重新刷新当前页面重新拍照识别。
-              </p>
-            </div>
-          </div>
-          <div class="right-box">
-            <img v-show="!isTaking" :src="faceUrl" alt="" />
-            <video v-show="isTaking" id="video" :src="stream"></video>
-            <div class="mask"></div>
-          </div>
-        </div>
-        <div class="take-photo__footer">
-          <el-button
-            type="primary"
-            v-if="isTaking"
-            class="take"
-            @click="onPhoto"
-            >拍照</el-button
-          >
-          <el-button
-            type="primary"
-            v-if="!isTaking"
-            class="take"
-            :loading="loading"
-            @click="reTake"
-            >重拍</el-button
-          >
-          <el-button
-            type="primary"
-            v-if="!isTaking"
-            :loading="loading"
-            class="take"
-            @click="takeOk"
-            >确认</el-button
-          >
-        </div>
-      </div>
-    </el-dialog>
-
-    <el-dialog
-      width="996px"
-      height="600px"
-      class="info"
-      :visible.sync="showInfoDetailModal"
-      :close-on-click-modal="false"
-      :close-on-press-escape="false"
-      :show-close="false"
-      title="资料填写"
-    >
-      <div class="info__content">
-        <el-form
-          :model="infoForm"
-          ref="infoForm"
-          :rules="rules"
-          :error-type="errorType"
-        >
-          <template v-for="(item, index) in listData">
-            <el-form-item
-              :key="index"
-              v-if="item.fieldKey == 'name'"
-              :label="item.fieldName"
-              :required="item.required"
-              label-width="120px"
-              :prop="item.required ? item.fieldKey : ''"
-            >
-              <el-input
-                :disabled="true"
-                v-model="infoForm.name"
-                :placeholder="`请输入${item.fieldName}`"
-              />
-            </el-form-item>
-            <el-form-item
-              :key="index"
-              v-if="item.fieldKey == 'idcard'"
-              :label="item.fieldName"
-              :required="item.required"
-              label-width="120px"
-              :prop="item.required ? item.fieldKey : ''"
-            >
-              <el-input
-                :disabled="true"
-                v-model="infoForm.idcard"
-                :placeholder="`请输入${item.fieldName}`"
-              />
-            </el-form-item>
-            <el-form-item
-              :key="index"
-              v-if="item.fieldKey == 'telphone'"
-              :label="item.fieldName"
-              :required="item.required"
-              label-width="120px"
-              :prop="item.required ? item.fieldKey : ''"
-            >
-              <el-input
-                :disabled="true"
-                v-model="infoForm.telphone"
-                :placeholder="`请输入${item.fieldName}`"
-              />
-            </el-form-item>
-            <el-form-item
-              :key="index"
-              v-if="item.fieldKey == 'school'"
-              :label="item.fieldName"
-              :required="item.required"
-              label-width="120px"
-              :prop="item.required ? item.fieldKey : ''"
-            >
-              <el-input
-                v-model="infoForm.school"
-                :placeholder="`请输入${item.fieldName}`"
-              />
-            </el-form-item>
-            <el-form-item
-              :key="index"
-              v-if="item.fieldKey == 'work_unit'"
-              :label="item.fieldName"
-              :required="item.required"
-              label-width="120px"
-              :prop="item.required ? item.fieldKey : ''"
-            >
-              <el-input
-                v-model="infoForm.work_unit"
-                :placeholder="`请输入${item.fieldName}`"
-              />
-            </el-form-item>
-            <el-form-item
-              :key="index"
-              v-if="item.fieldKey == 'unit_contact'"
-              :label="item.fieldName"
-              :required="item.required"
-              label-width="120px"
-              :prop="item.required ? item.fieldKey : ''"
-            >
-              <el-input
-                v-model="infoForm.unit_contact"
-                :placeholder="`请输入${item.fieldName}`"
-              />
-            </el-form-item>
-            <el-form-item
-              :key="index"
-              v-if="item.fieldKey == 'unit_tel'"
-              :label="item.fieldName"
-              :required="item.required"
-              label-width="120px"
-              :prop="item.required ? item.fieldKey : ''"
-            >
-              <el-input
-                v-model="infoForm.unit_tel"
-                :placeholder="`请输入${item.fieldName}`"
-              />
-            </el-form-item>
-            <el-form-item
-              :key="index"
-              v-if="item.fieldKey == 'apply_post'"
-              :label="item.fieldName"
-              :required="item.required"
-              label-width="120px"
-              :prop="item.required ? item.fieldKey : ''"
-            >
-              <el-input
-                :disabled="apply_post_disabled"
-                v-model="infoForm.apply_post"
-                :placeholder="`请输入${item.fieldName}`"
-              />
-            </el-form-item>
-            <el-form-item
-              :key="index"
-              v-if="item.fieldKey == 'major'"
-              :label="item.fieldName"
-              :required="item.required"
-              label-width="120px"
-              :prop="item.required ? item.fieldKey : ''"
-            >
-              <el-input
-                v-model="infoForm.major"
-                :placeholder="`请输入${item.fieldName}`"
-              />
-            </el-form-item>
-            <el-form-item
-              :key="index"
-              v-if="item.inputType == 2"
-              :label="item.fieldName"
-              label-width="120px"
-              :required="item.required"
-              :prop="item.required ? item.fieldKey : ''"
-            >
-              <el-select v-model="infoForm[item.fieldKey]" placeholder="">
-                <el-option
-                  v-for="(option, optionIndex) in getarrays(item.fieldKey)"
-                  :key="optionIndex"
-                  :label="option"
-                  :value="optionIndex + ''"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-            <el-form-item
-              :key="index"
-              v-if="item.inputType == 5"
-              :label="item.fieldName"
-              label-width="120px"
-              :required="item.required"
-              :prop="item.required ? item.fieldKey : ''"
-            >
-              <el-date-picker
-                v-model="infoForm[item.fieldKey]"
-                align="right"
-                type="date"
-                placeholder="选择日期"
-              >
-              </el-date-picker>
-            </el-form-item>
-            <el-form-item
-              :key="index"
-              v-if="
-                item.inputType == 3 &&
-                item.fieldKey !== 'commitment_electr_signature'
-              "
-              :label="item.fieldName"
-              :required="item.required"
-              label-width="120px"
-              label-position="top"
-              :prop="item.required ? item.fieldKey : ''"
-            >
-              <el-upload
-                action=""
-                :max-size="2097152"
-                accept="image/jpeg, image/jpg, image/png"
-                :show-file-list="false"
-                list-type="picture"
-                :auto-upload="false"
-                :ref="
-                  item.fieldKey === 'recent_photos'
-                    ? 'recent_photos'
-                    : item.fieldKey === 'idcard_face_photo'
-                    ? 'idcard_face_photo'
-                    : item.fieldKey === 'idcard_national_photo'
-                    ? 'idcard_national_photo'
-                    : ''
-                "
-                :on-change="
-                  item.fieldKey === 'recent_photos'
-                    ? changePhotoListHeader1
-                    : item.fieldKey === 'idcard_face_photo'
-                    ? changePhotoListHeader2
-                    : item.fieldKey === 'idcard_national_photo'
-                    ? changePhotoListHeader3
-                    : ''
-                "
-                :file-list="
-                  item.fieldKey === 'recent_photos'
-                    ? fileList1
-                    : item.fieldKey === 'idcard_face_photo'
-                    ? fileList2
-                    : item.fieldKey === 'idcard_national_photo'
-                    ? fileList3
-                    : ''
-                "
-              >
-                <div class="upload-box">
-                  <div
-                    :style="
-                      item.fieldKey === 'recent_photos'
-                        ? 'width: 120px; height: 169px;background:url(' +
-                          require('@/assets/info_1.png') +
-                          ') no-repeat center;background-size:cover;position:relative;'
-                        : item.fieldKey === 'idcard_face_photo'
-                        ? 'width: 120px; height: 82px;background:url(' +
-                          require('@/assets/info_2.png') +
-                          ') no-repeat center;background-size:cover;position:relative;'
-                        : item.fieldKey === 'idcard_national_photo'
-                        ? 'width: 120px; height: 82px;background:url(' +
-                          require('@/assets/info_3.png') +
-                          ') no-repeat center;background-size:cover;position:relative;'
-                        : ''
-                    "
-                  >
-                    <i
-                      @click="deleteImg(item)"
-                      class="el-icon-error"
-                      v-if="
-                        item.fieldKey === 'recent_photos'
-                          ? fileList1[0]
-                          : item.fieldKey === 'idcard_face_photo'
-                          ? fileList2[0]
-                          : item.fieldKey === 'idcard_national_photo'
-                          ? fileList3[0]
-                          : ''
-                      "
-                    ></i>
-                    <el-image
-                      style="width: 100%; height: 100%"
-                      :src="
-                        item.fieldKey === 'recent_photos'
-                          ? $tools.splitImgHost(fileList1[0].url)
-                          : item.fieldKey === 'idcard_face_photo'
-                          ? $tools.splitImgHost(fileList2[0].url)
-                          : item.fieldKey === 'idcard_national_photo'
-                          ? $tools.splitImgHost(fileList3[0].url)
-                          : ''
-                      "
-                      v-if="
-                        item.fieldKey === 'recent_photos'
-                          ? fileList1[0]
-                          : item.fieldKey === 'idcard_face_photo'
-                          ? fileList2[0]
-                          : item.fieldKey === 'idcard_national_photo'
-                          ? fileList3[0]
-                          : ''
-                      "
-                      :preview-src-list="
-                        item.fieldKey === 'recent_photos'
-                          ? [$tools.splitImgHost(fileList1[0].url)]
-                          : item.fieldKey === 'idcard_face_photo'
-                          ? [$tools.splitImgHost(fileList2[0].url)]
-                          : item.fieldKey === 'idcard_national_photo'
-                          ? [$tools.splitImgHost(fileList3[0].url)]
-                          : ''
-                      "
-                    >
-                    </el-image>
-                  </div>
-
-                  <div>
-                    <span
-                      v-if="item.fieldKey === 'recent_photos'"
-                      style="color: #999999"
-                      >竖向白底证件照 文件大小≤2M</span
-                    >
-                    <span
-                      v-if="
-                        item.fieldKey === 'idcard_face_photo' ||
-                        item.fieldKey === 'idcard_national_photo'
-                      "
-                      style="color: #999999"
-                    >
-                      文件大小≤2M
-                    </span>
-                  </div>
-                </div>
-
-                <div style="display: inline-block" slot="trigger">
-                  <el-button type="primary" size="small" round
-                    >浏览文件</el-button
-                  >
-                </div>
-              </el-upload>
-            </el-form-item>
-            <div
-              :key="index"
-              v-if="
-                item.inputType == 3 &&
-                item.fieldKey === 'commitment_electr_signature'
-              "
-            >
-              <el-form-item
-                v-if="
-                  item.inputType == 3 &&
-                  item.fieldKey === 'commitment_electr_signature'
-                "
-                label="承诺书"
-                :required="item.required"
-                label-width="120px"
-                label-position="top"
-              >
-                <div style="line-height: 40px; text-indent: 2em">
-                  <span>
-                    本人自愿做出如下承诺:本人己仔细阅读《广东省住房和城乡建设厅关于推进住房和城乡建设领域施工现场专业人员职业培训工作的通知》
-                    全部内容并知晓和理解,本人的学历证书、身份证、工作年限、相片等所有资料完全真实、符合报名条件、资格审查要求和相关规定,本人在报名、审查、培训、测试等有关的事项中会严格道守相关规定和要求,如有虛假或与实际规定不符等情况造成的一切后果由本人承担。
-                  </span>
-                  <div style="line-height: 40px; text-indent: 2em">
-                    <span>特此承诺!</span>
-                  </div>
-                </div>
-              </el-form-item>
-              <el-form-item
-                v-if="
-                  item.inputType == 3 &&
-                  item.fieldKey === 'commitment_electr_signature'
-                "
-                label="签名板"
-                :required="item.required"
-                label-width="120px"
-                label-position="top"
-                :prop="item.required ? item.fieldKey : ''"
-              >
-                <div class="dis_stys">
-                  <span style="color: #999999">请在下方签名区进行签名</span>
-                  <el-button
-                    type="primary"
-                    size="small"
-                    @click="retDraw"
-                    mode=""
-                    >清空</el-button
-                  >
-                </div>
-                <div class="handCenter">
-                  <vue-esign
-                    v-if="!infoForm[item.fieldKey]"
-                    ref="esign"
-                    :width="600"
-                    :height="300"
-                    :isCrop="false"
-                    :lineWidth="5"
-                    :lineColor="'#333'"
-                  />
-                  <div
-                    v-else
-                    style="width: 100%; height: 100%; position: relative"
-                  >
-                    <img
-                      style="width: 100%; height: 100%"
-                      :src="$tools.splitImgHost(infoForm[item.fieldKey])"
-                      mode=""
-                    />
-                  </div>
-                </div>
-              </el-form-item>
-            </div>
-            <el-form-item
-              :key="index"
-              v-if="item.inputType == 4"
-              :label="item.fieldName"
-              :required="item.required"
-              label-width="120px"
-              label-position="top"
-              :prop="item.required ? item.fieldKey : ''"
-            >
-              <el-button
-                type="primary"
-                size="small"
-                round
-                @click="downloadStamp(item)"
-                >下载模板</el-button
-              >
-              <el-upload
-                action=""
-                :max-size="2097152"
-                accept="image/jpeg, image/jpg, image/png"
-                :show-file-list="false"
-                list-type="picture"
-                :auto-upload="false"
-                ref="stamp"
-                :on-change="changePhotoListStamp"
-                :file-list="fileListStamp"
-              >
-                <div style="display: inline-block; vertical-align: top">
-                  <div
-                    :style="
-                      'width: 120px; height: 120px;background:url(' +
-                      require('@/assets/info_4.png') +
-                      ') no-repeat center;background-size:cover;position:relative;'
-                    "
-                  >
-                    <el-image
-                      style="width: 100%; height: 100%"
-                      :src="$tools.splitImgHost(fileListStamp[0].url)"
-                      v-if="fileListStamp[0]"
-                      :preview-src-list="[
-                        $tools.splitImgHost(fileListStamp[0].url),
-                      ]"
-                    >
-                    </el-image>
-                  </div>
-
-                  <div>
-                    <span style="color: #999999">文件大小≤2M</span>
-                  </div>
-                </div>
-
-                <div style="display: inline-block" slot="trigger">
-                  <el-button type="primary" size="small" round
-                    >浏览文件</el-button
-                  >
-                </div>
-              </el-upload>
-            </el-form-item>
-          </template>
-        </el-form>
-      </div>
-
-      <span slot="footer" class="dialog-footer">
-        <el-button
-          @click="
-            showInfoDetailModal = false;
-            $router.back(-1);
-          "
-          >取 消</el-button
-        >
-        <el-button type="primary" :loading="uploading" @click="submit"
-          >确 定</el-button
-        >
-      </span>
-    </el-dialog>
-
-    <el-dialog
-      width="996px"
-      height="600px"
-      class="info"
-      :visible.sync="showStampDetailModail"
-      :close-on-click-modal="false"
-      :close-on-press-escape="false"
-      :show-close="false"
-      title="资料填写"
-    >
-      <div class="info__content">
-        <el-form
-          :model="stampForm"
-          ref="stampForm"
-          :rules="stampRules"
-          :error-type="errorType"
-        >
-          <template v-for="(item, index) in listDataStamp">
-            <el-form-item
-              :key="index"
-              v-if="item.inputType == 4"
-              :label="item.fieldName"
-              :required="item.required"
-              label-width="120px"
-              label-position="top"
-              :prop="item.required ? item.fieldKey : ''"
-            >
-              <el-button
-                type="primary"
-                size="small"
-                round
-                @click="downloadStamp(item)"
-                >下载模板</el-button
-              >
-              <el-upload
-                action=""
-                :max-size="2097152"
-                accept="image/jpeg, image/jpg, image/png"
-                :show-file-list="false"
-                list-type="picture"
-                :auto-upload="false"
-                ref="stamp"
-                :on-change="changePhotoListStamp"
-                :file-list="fileListStamp"
-              >
-                <div style="display: inline-block; vertical-align: top">
-                  <div
-                    :style="
-                      'width: 120px; height: 120px;background:url(' +
-                      require('@/assets/info_4.png') +
-                      ') no-repeat center;background-size:cover;position:relative;'
-                    "
-                  >
-                    <el-image
-                      style="width: 100%; height: 100%"
-                      :src="$tools.splitImgHost(fileListStamp[0].url)"
-                      v-if="fileListStamp[0]"
-                      :preview-src-list="[
-                        $tools.splitImgHost(fileListStamp[0].url),
-                      ]"
-                    >
-                    </el-image>
-                  </div>
-
-                  <div>
-                    <span style="color: #999999">文件大小≤2M</span>
-                  </div>
-                </div>
-
-                <div style="display: inline-block" slot="trigger">
-                  <el-button type="primary" size="small" round
-                    >浏览文件</el-button
-                  >
-                </div>
-              </el-upload>
-            </el-form-item>
-          </template>
-        </el-form>
-      </div>
-
-      <span slot="footer" class="dialog-footer">
-        <el-button
-          @click="
-            showStampDetailModail = false;
-            $router.back(-1);
-          "
-          >取 消</el-button
-        >
-        <el-button type="primary" :loading="uploading" @click="stampSubmit"
-          >确 定</el-button
-        >
-      </span>
-    </el-dialog>
-
-    <el-dialog
-      width="996px"
-      height="600px"
-      class="info"
-      :visible.sync="showAgreementModal"
-      :close-on-click-modal="false"
-      :close-on-press-escape="false"
-      :show-close="false"
-      title="提示"
-    >
-      <div class="">
-        <div>
-          本产品(或服务)提供【{{
-            goodsData.goodsName
-          }}】课程的在线学习功能,为使用这些功能,我们需要使用您设备上的摄像头,并收集以下个人信息:
-          <span v-for="(item, listIndex) in listData" :key="listIndex"
-            >{{ item.fieldName }}、</span
-          >
-          <!-- 姓名、性别、身份证号码、移动电话号码、身份证照片、一寸照、证书名称/岗位、证书编号、有效期、人脸照片(每节课随机拍摄三张)、 -->
-          学习详细记录。
-        </div>
-        <div>
-          我们会将上述信息提供至广东省建设执业注册管理中心等第三方组织使用,用于继续教育备案等。如果您拒绝,将导致这些功能无法实现,但不影响您使用本产品(或服务)的其他业务功能。
-        </div>
-      </div>
-
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="$router.back(-1)">取 消</el-button>
-        <el-button type="primary" @click="showInfoDetailModal = true"
-          >同意并继续</el-button
-        >
-      </span>
-    </el-dialog>
-
-    <div id="printTable"></div>
-    <!-- 修改 -->
-    <!-- <ToolBar></ToolBar> -->
-    <Footer></Footer>
-  </div>
-</template>
-
-<script>
-import Footer from "@/components/footer/index";
-import Header from "@/components/header/index";
-import ToolBar from "@/components/toolbar/index";
-import GoodsItem from "@/components/goodsItem/index";
-
-import { mapGetters, mapMutations, mapActions } from "vuex";
-import * as baseUrls from "@/axios.js";
-import pdf from "vue-pdf";
-import print from "print-js";
-export default {
-  name: "CourseDetail",
-  components: {
-    Footer,
-    Header,
-    ToolBar,
-    pdf,
-    GoodsItem,
-  },
-  data() {
-    return {
-      liveDuration: 0,
-      numPages: 0,
-      showPdf: false,
-      // 总页数
-      pdfPages: 10,
-      // 当前页数
-      pageNum: 1,
-      // 加载进度
-      loadedRatio: 10,
-      // 页面加载完成
-      curPageNum: 0,
-      // 放大系数 默认百分百
-      scale: 100,
-      // 旋转角度 ‘90’的倍数才有效
-      pageRotate: 0,
-      // 单击内部链接时触发 (目前我没有遇到使用场景)
-      page: 0,
-      bgColor: "#ccc",
-      answerTimer: null,
-      recordObj: {},
-      showAgreementModal: false,
-      showInfoDetailModal: false,
-      showStampDetailModail: false,
-      isTaking: true, //是否正在拍照
-      photoConfig: false,
-      stream: null,
-      photoNum: 0,
-      playSectionId: 0,
-      photoIndex: 0, //当前位于拍照的区间下标 从0开始
-      photoHistoryList: [], //已拍照历史的下标点
-      moduleId: 0,
-      chapterId: 0,
-      menuTab: [],
-      lectureShow: true,
-      textarea: "",
-      textareaNote: "",
-      takePhotoModal: false,
-      activeName: "1",
-      courseId: "",
-      courseTabIndex: "1",
-      goodsId: "",
-      gradeId: "",
-      livingTimer: null,
-      sectionItem: {},
-      gradeDetail: {},
-      autoplay: false,
-      isAllowSeek: "on",
-      playbackRate: false,
-      goodsPlayConfig: null,
-      playTime: 0, //页面播放时长,不含暂停
-      param: {
-        pageNum: 1,
-        pageSize: 100,
-        total: 0,
-      },
-      postTimer: null, //提交视频观看记录定时器
-      lockTimer: null,
-      courseList: [],
-      businessData: {},
-      courseHandoutsData: "",
-      menuList: [],
-      goodsData: {},
-      tabList: [],
-      historyChatMsgList: [],
-      vid: "",
-      vidzb: "",
-      player: "",
-      playerzb: "",
-      activeId: "", //当前选中ID
-      vodPlayerJs: "https://player.polyv.net/script/player.js",
-      playerJs:
-        "https://player.polyv.net/resp/live-h5-player/latest/liveplayer.min.js",
-      uidzb: "egsxlptzdq",
-      menuList: [],
-      reMenuList: [],
-      answerList: [{ newArraysAnswerList: [] }],
-      noteList: [],
-      photoList: [],
-      noteTotal: 0,
-      duration: 0,
-      answerTimer: null,
-      noteParams: {
-        pageNum: 1,
-        // pageSize: 4,
-      },
-      ossAvatarUrl: "", //照片地址
-      nowTime: 0,
-      faceUrl: "",
-      loading: null,
-      listData: [],
-      listDataStamp: [],
-      remark: "",
-      remarkStatus: false,
-      remarkStamp: "",
-      remarkStatusStamp: false,
-      errorType: ["message"],
-      stampForm: {
-        commitment_seal: "",
-      },
-      infoForm: {
-        name: "",
-        sex: "",
-        idcard: "",
-        telphone: "",
-        education: "",
-        school: "",
-        graduation_time: "",
-        work_unit: "",
-        unit_contact: "",
-        unit_tel: "",
-        apply_post: "",
-        major: "",
-        working_years: "",
-        recent_photos: "",
-        idcard_face_photo: "",
-        idcard_national_photo: "",
-        commitment_electr_signature: "",
-        commitment_seal: "",
-      },
-      recommendList: [],
-      rules: {
-        name: [
-          {
-            required: true,
-            message: "请输入姓名",
-            trigger: ["change", "blur"],
-          },
-        ],
-        sex: [
-          {
-            required: true,
-            message: "请选择性别",
-            trigger: "change",
-          },
-        ],
-        idcard: [
-          {
-            required: true,
-            message: "请输入身份证号",
-            trigger: ["change", "blur"],
-          },
-          // {
-          //   validator: (rule, value, callback) => {
-          //     let IDRe18 =
-          //       /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
-          //     let IDre15 =
-          //       /^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/;
-
-          //     if (!IDRe18.test(value) && !IDre15.test(value)) {
-          //       return callback(new Error("请输入格式正确的身份证号"));
-          //     } else {
-          //       return callback();
-          //     }
-          //   },
-          //   message: "请输入格式正确的身份证号",
-          //   trigger: ["change", "blur"],
-          // },
-        ],
-        telphone: [
-          {
-            required: true,
-            message: "请输入手机号码",
-            trigger: ["change", "blur"],
-          },
-          // {
-          //   validator: (rule, value, callback) => {
-          //     var reg_tel =
-          //       /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
-          //     if (reg_tel.test(value)) {
-          //       return callback();
-          //     } else {
-          //       return callback(new Error("手机号码不正确"));
-          //     }
-          //   },
-          //   trigger: ["change", "blur"],
-          // },
-        ],
-        education: [
-          {
-            required: true,
-            message: "请选择学历",
-            trigger: "change",
-          },
-        ],
-        school: [
-          {
-            required: true,
-            message: "请输入毕业院校",
-            trigger: ["change", "blur"],
-          },
-        ],
-        graduation_time: [
-          {
-            required: true,
-            message: "请选择毕业时间",
-            trigger: "change",
-          },
-        ],
-        work_unit: [
-          {
-            required: true,
-            message: "请输入工作单位",
-            trigger: ["change", "blur"],
-          },
-        ],
-        unit_contact: [
-          {
-            required: true,
-            message: "请输入单位联系人",
-            trigger: ["change", "blur"],
-          },
-        ],
-        unit_tel: [
-          {
-            required: true,
-            message: "请输入单位联系电话",
-            trigger: ["change", "blur"],
-          },
-          {
-            validator: (rule, value, callback) => {
-              var reg_tel =
-                /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
-              var vartest = /^([0-9]{3,4}-)?[0-9]{7,8}$/;
-              var vartest1 = /^([0-9]{3,4})?[0-9]{7,8}$/;
-              if (
-                reg_tel.test(value) ||
-                vartest.test(value) ||
-                vartest1.test(value)
-              ) {
-                return callback();
-              } else {
-                return callback(new Error("单位联系电话不正确"));
-              }
-            },
-            trigger: ["change", "blur"],
-          },
-        ],
-        apply_post: [
-          {
-            required: true,
-            message: "请输入报名岗位",
-            trigger: ["change", "blur"],
-          },
-        ],
-        major: [
-          {
-            required: true,
-            message: "请输入所学专业",
-            trigger: ["change", "blur"],
-          },
-        ],
-        working_years: [
-          {
-            required: true,
-            message: "请选择工作年限",
-            trigger: "change",
-          },
-        ],
-        recent_photos: [
-          {
-            required: true,
-            message: "请上传证件照",
-            trigger: ["change", "blur"],
-          },
-        ],
-        idcard_face_photo: [
-          {
-            required: true,
-            message: "请上传身份证人像面",
-            trigger: ["change", "blur"],
-          },
-        ],
-        idcard_national_photo: [
-          {
-            required: true,
-            message: "请上传身份证国徽面",
-            trigger: ["change", "blur"],
-          },
-        ],
-        commitment_electr_signature: [
-          {
-            required: true,
-            message: "请签写承诺书电子签",
-            trigger: ["change", "blur"],
-          },
-        ],
-        commitment_seal: [
-          {
-            required: true,
-            message: "请上传承诺书盖章",
-            trigger: ["change", "blur"],
-          },
-        ],
-      },
-
-      stampRules: {
-        commitment_seal: [
-          {
-            required: true,
-            message: "请上传承诺书盖章",
-            trigger: ["change", "blur"],
-          },
-        ],
-      },
-
-      fileList1: [], //证件照
-      fileList2: [], //人像
-      fileList3: [], //国徽
-      fileListStamp: [], //印章
-      dictObj: null,
-      isRequired: false,
-      uploading: false,
-      veryIdCard: "",
-      veryIdName: "",
-      isPlayRebuild: false,
-      showRecordStatus: false,
-      hasStart: false,
-      needOpen: true, //是否需要展开第一章节
-      menuIndex: [],
-      clickLock: false,
-      liveLast: null,
-      apply_post_disabled: false,
-    };
-  },
-  computed: {
-    ...mapGetters(["userInfo"]),
-
-    compyRecommend: function () {
-      return function (array) {
-        let ary = [];
-        if (array) {
-          for (let i = 0; i < array.length; i++) {
-            if (i >= 5) {
-              break;
-            } else {
-              ary.push(array[i]);
-            }
-          }
-        }
-        return ary;
-      };
-    },
-  },
-  async mounted() {
-    this.courseId = +this.$route.query.courseId || "";
-    this.nowTime = Number(new Date().getTime() / 1000).toFixed(0);
-    this.goodsId = this.$route.params.goodsId;
-    this.orderGoodsId = this.$route.query.orderGoodsId;
-    this.gradeId = this.$route.query.gradeId;
-    this.sectionItem = this.$route.query;
-
-    let isOther = this.$route.query.isOther || "";
-
-    if (isOther) {
-      const confirmText = [
-        "您的学习账号已经开通,请按照步骤操作,进行学习。",
-        "1.点击【跳转学习网址】按钮",
-        "2.打开学习网址后,选择【个人用户】进行登录",
-        "(1)账号:您个人的身份证号码",
-        "(2)密码:身份证号码,再加111111",
-      ];
-      const newDatas = [];
-      const h = this.$createElement;
-      for (const i in confirmText) {
-        newDatas.push(h("p", null, confirmText[i]));
-      }
-      this.$confirm(h("div", null, newDatas), "温馨提示", {
-        beforeClose: (type) => {
-          if (type == "confirm") {
-            window.open("http://admin.zhujianpeixun.com/", "_blank");
-          } else if (type == "cancel") {
-            this.$router.back(-1);
-          }
-        },
-        confirmButtonText: "跳转学习网址",
-        cancelButtonText: "关闭",
-        closeOnClickModal: false,
-        closeOnPressEscape: false,
-        distinguishCancelAndClose: false,
-        showClose: false,
-      });
-      return;
-    }
-
-    if (this.$route.query.rebuild) {
-      this.courseTabIndex = "2";
-    }
-
-    await this.getGoodsDetail(); //商品详情
-    this.dictList();
-
-    // this.userConfirmInfoDetail().then((res) => {
-    this.getbaseprofiletplists().then(async (res) => {
-      // let allMenuList = await this.studyRecordMenuAllList();
-      // let nowTime = Number(new Date().getTime() / 1000).toFixed(0);
-      // let liveMenu = allMenuList.filter((item) => {
-      //   //获取直播中的视频
-      //   if (
-      //     item.type == 3 &&
-      //     item.liveStartTime <= nowTime &&
-      //     item.liveEndTime > nowTime
-      //   ) {
-      //     return true;
-      //   } else {
-      //     return false;
-      //   }
-      // });
-      // let earlyTime = 0;
-
-      // if (liveMenu && liveMenu.length) {
-      //   earlyTime = liveMenu[0].liveStartTime;
-      // }
-
-      await this.courseCourseList();
-      if (this.sectionItem.recordingUrl) {
-        let noteSecond = this.$route.query.noteSecond;
-        if (noteSecond > 0) {
-          let item = {
-            sectionId: this.$route.query.sectionId,
-            recordingUrl: this.$route.query.recordingUrl,
-            noteSecond: noteSecond,
-            studyDuration: noteSecond,
-            moduleId: this.$route.query.moduleId,
-            chapterId: this.$route.query.chapterId,
-          };
-
-          this.playSectionId = this.$route.query.sectionId;
-          setTimeout(() => {
-            this.noteClick(item);
-          }, 1000);
-        }
-      } else {
-        this.studyRecordQueryLiveLast();
-      }
-      // let noteSecond = this.$route.query.noteSecond;
-      // if (noteSecond > 0) {
-      //   let item = {
-      //     sectionId: this.$route.query.sectionId,
-      //     recordingUrl: this.$route.query.recordingUrl,
-      //     noteSecond: noteSecond,
-      //     studyDuration: noteSecond,
-      //     moduleId: this.$route.query.moduleId,
-      //     chapterId: this.$route.query.chapterId,
-      //   };
-
-      //   this.sectionItem = item;
-      //   this.playSectionId = this.$route.query.sectionId;
-      //   setTimeout(() => {
-      //     this.noteClick(item);
-      //   }, 1000);
-      // }
-    });
-    // });
-  },
-  beforeDestroy() {
-    try {
-      this.$msgbox.close();
-    } catch (err) {}
-    if (this.playSectionId && this.hasStart) {
-      this.postStudyRecord();
-    }
-    // if (this.lockTimer) {
-    //   clearInterval(this.lockTimer);
-    //   this.$request
-    //     .lockDelLock({
-    //       action: "jxjy",
-    //     })
-    //     .then((res) => {});
-    // }
-    this.clears();
-    clearInterval(this.answerTimer);
-    clearInterval(this.postTimer);
-    clearInterval(this.livingTimer);
-  },
-  methods: {
-    ...mapMutations(["getCartCount"]),
-    ...mapActions(["getUserInfo"]),
-    isLast(item) {
-      if (this.liveLast) {
-        let sectionASame =
-          this.liveLast.sectionId == (item.sectionId || item.menuId);
-        let chapterSame = this.liveLast.chapterId == (item.chapterId || 0);
-        let moduleSame = this.liveLast.moduleId == (item.moduleId || 0);
-
-        return sectionASame && chapterSame && moduleSame;
-      } else {
-        return false;
-      }
-    },
-    /**
-     * 获取上次观看的直播
-     */
-    studyRecordGetLastLive() {
-      this.$request
-        .studyRecordGetLastLive({
-          orderGoodsId: this.orderGoodsId,
-          courseId: this.courseId,
-        })
-        .then((res) => {
-          this.liveLast = res.data;
-        });
-    },
-    /**
-     * 获取观看记录
-     */
-    studyRecordQueryLiveLast() {
-      this.$request
-        .studyRecordQueryLiveLast({
-          orderGoodsId: this.orderGoodsId,
-          courseId: this.courseId,
-        })
-        .then((res) => {
-          console.log(res, "couse");
-          if (res.data) {
-            if (res.data.sectionType == 1) {
-              //录播
-              this.chapterId = res.data.chapterId;
-              this.moduleId = res.data.moduleId;
-              this.playSectionId = res.data.sectionId;
-              this.vid = res.data.recordingUrl;
-              this.sectionItem = res.data;
-              this.playVideo(res.data);
-            } else if (res.data.sectionType == 2) {
-              //直播
-              this.studyRecordGetLastLive();
-            } else if (res.data.sectionType == 3) {
-              //回放
-              this.chapterId = res.data.chapterId;
-              this.moduleId = res.data.moduleId;
-              this.playSectionId = res.data.sectionId;
-              this.vid = res.data.recordingUrl;
-              this.sectionItem = res.data;
-              this.playVideo(res.data);
-            }
-          }
-        });
-    },
-    /**
-     * 
-     获取推荐列表
-     */
-    getRecommend() {
-      this.$request
-        .appCommonActivityRecommendList({
-          businessId: this.goodsData.businessId,
-          type: 1,
-        })
-        .then((res) => {
-          if (res.rows.length) {
-            this.recommendList = res.rows[0];
-          }
-        });
-    },
-    addCart(status, goodsId) {
-      this.$request
-        .addCart({ goodsId: status ? goodsId : this.goodsId })
-        .then((res) => {
-          this.getCartCount();
-          this.$message({
-            message: "加入购物车成功",
-            type: "success",
-          });
-        })
-        .catch((err) => {
-          if (err.code == 500) {
-            this.$message({
-              message: err.msg,
-              type: "warning",
-            });
-          }
-        });
-    },
-    toGoodsDetail(item) {
-      this.$router.push({
-        path: "/course-detail/" + item.goodsId,
-      });
-    },
-    async takeOk() {
-      this.loading = true;
-      let compareFaceData = await this.faceRecognition();
-
-      if (compareFaceData >= 80) {
-        const waitYS = await this.imageInfos();
-        this.postCoursePhotoRecord()
-          .then((res) => {
-            this.photoHistoryList.push(this.photoIndex);
-            this.postStudyRecord(); //提交记录
-            //恢复播放
-
-            this.$message({
-              type: "success",
-              message: "拍照成功",
-            });
-            this.takePhotoModal = false;
-            this.isTaking = false;
-            this.loading = false;
-            var polyvPlayerContext = this.player;
-            if (polyvPlayerContext) {
-              polyvPlayerContext.j2s_resumeVideo();
-            }
-            var polyvPlayerContext = this.playerzb;
-            if (polyvPlayerContext) {
-              polyvPlayerContext.j2s_resumeVideo();
-            }
-          })
-          .catch((err) => {
-            this.loading = false;
-            console.log(err, "err");
-            this.$message({
-              type: "warning",
-              message: "上传接口报错,请重新拍照上传",
-            });
-            this.reTake();
-          });
-      } else {
-        this.$message({
-          type: "warning",
-          message: "人脸匹配不通过,请重新拍照上传",
-        });
-
-        setTimeout(() => {
-          this.loading = false;
-          this.reTake();
-        }, 2000);
-        return;
-      }
-    },
-
-    changePhotoListStamp(params, fileList) {
-      const file = params.raw;
-      const fileType = file.type;
-      const isImage = fileType.indexOf("image") != -1;
-      const isLt2M = file.size / 1024 / 1024 < 2;
-      // 这里常规检验,看项目需求而定
-      if (!isImage) {
-        this.$message.error("只能上传图片格式png、jpg、gif!");
-        return;
-      }
-      if (!isLt2M) {
-        this.$message.error("只能上传图片大小小于2M");
-        return;
-      }
-      if (fileList.length == 1) {
-        fileList.splice(0, 1);
-      }
-      this.$refs.stamp[0].clearFiles();
-      this.$upload
-        .upload(file, 0)
-        .then((res) => {
-          this.$set(this.infoForm, "commitment_seal", res);
-          this.fileListStamp = [
-            {
-              name: res,
-              url: res,
-            },
-          ];
-          this.$refs.stamp[0].clearFiles();
-          console.log(res);
-        })
-        .catch((err) => {
-          this.$refs.stamp[0].clearFiles();
-        });
-    },
-
-    // 页面加载成功  当前页数
-    pageLoaded(e) {
-      this.$emit("current", e);
-      this.curPageNum = e;
-    },
-
-    changePhotoListHeader1(params, fileList) {
-      console.log(params);
-      const file = params.raw;
-      const fileType = file.type;
-      const isImage = fileType.indexOf("image") != -1;
-      const isLt2M = file.size / 1024 / 1024 < 2;
-      // 这里常规检验,看项目需求而定
-      if (!isImage) {
-        this.$message.error("只能上传图片格式png、jpg、gif!");
-        return;
-      }
-      if (!isLt2M) {
-        this.$message.error("只能上传图片大小小于2M");
-        return;
-      }
-      if (fileList.length == 1) {
-        fileList.splice(0, 1);
-      }
-      this.$refs.recent_photos[0].clearFiles();
-      this.$upload
-        .upload(file, 0)
-        .then((res) => {
-          this.$set(this.infoForm, "recent_photos", res);
-          this.fileList1 = [
-            {
-              name: res,
-              url: res,
-            },
-          ];
-          this.$refs.recent_photos[0].clearFiles();
-          console.log(res);
-        })
-        .catch((err) => {
-          this.$refs.recent_photos[0].clearFiles();
-        });
-    },
-
-    async changePhotoListHeader2(params, fileList) {
-      const file = params.raw;
-      const fileType = file.type;
-      const isImage = fileType.indexOf("image") != -1;
-      const isLt2M = file.size / 1024 / 1024 < 2;
-      // 这里常规检验,看项目需求而定
-      if (!isImage) {
-        this.$message.error("只能上传图片格式png、jpg、gif!");
-        return;
-      }
-      if (!isLt2M) {
-        this.$message.error("只能上传图片大小小于2M");
-        return;
-      }
-
-      if (fileList.length == 1) {
-        fileList.splice(0, 1);
-      }
-
-      let res = await this.faceCertificationIDCardOCR(1, file);
-
-      console.log(res.data.IdImgPath, "res.data.IdImgPath");
-
-      if (res.code == 500) {
-        this.$message.warning("请上传正确清晰的身份证人像面照片");
-        return;
-      }
-
-      this.$refs.idcard_face_photo[0].clearFiles();
-      this.$set(this.infoForm, "idcard_face_photo", res.data.IdImgPath);
-      this.fileList2 = [
-        {
-          name: res.data.IdImgPath,
-          url: res.data.IdImgPath,
-        },
-      ];
-      // this.$upload
-      //   .upload(file, 0)
-      //   .then((res) => {
-      //     console.log(res, "res");
-      //     this.$set(this.infoForm, "idcard_face_photo", res);
-      //     this.fileList2 = [
-      //       {
-      //         name: res,
-      //         url: res,
-      //       },
-      //     ];
-      //     this.$refs.idcard_face_photo[0].clearFiles();
-      //     console.log(res);
-      //   })
-      //   .catch((err) => {
-      //     this.$refs.idcard_face_photo[0].clearFiles();
-      //   });
-    },
-
-    async changePhotoListHeader3(params, fileList) {
-      const file = params.raw;
-      const fileType = file.type;
-      const isImage = fileType.indexOf("image") != -1;
-      const isLt2M = file.size / 1024 / 1024 < 2;
-      // 这里常规检验,看项目需求而定
-      if (!isImage) {
-        this.$message.error("只能上传图片格式png、jpg、gif!");
-        return;
-      }
-      if (!isLt2M) {
-        this.$message.error("只能上传图片大小小于2M");
-        return;
-      }
-
-      if (fileList.length == 1) {
-        fileList.splice(0, 1);
-      }
-
-      let res = await this.faceCertificationIDCardOCR(2, file);
-      if (res.code == 500) {
-        this.$message.warning("请上传正确清晰的身份证国徽面照片");
-        return;
-      }
-      this.$refs.idcard_national_photo[0].clearFiles();
-      this.$set(this.infoForm, "idcard_national_photo", res.data.IdImgPath);
-      this.fileList3 = [
-        {
-          name: res.data.IdImgPath,
-          url: res.data.IdImgPath,
-        },
-      ];
-      // this.$upload
-      //   .upload(file, 0)
-      //   .then((res) => {
-      //     this.$set(this.infoForm, "idcard_national_photo", res);
-      //     this.fileList3 = [
-      //       {
-      //         name: res,
-      //         url: res,
-      //       },
-      //     ];
-      //     this.$refs.idcard_national_photo[0].clearFiles();
-      //     console.log(res);
-      //   })
-      //   .catch((err) => {
-      //     this.$refs.idcard_national_photo[0].clearFiles();
-      //   });
-    },
-
-    faceCertificationIDCardOCR(cardSide, file) {
-      return new Promise((resolve) => {
-        var reader = new FileReader();
-        // 将文件加载进入
-        reader.readAsDataURL(file);
-        reader.onload = (e) => {
-          // 转换完成输出该文件base64编码
-          let base64 = e.target.result;
-
-          this.$request
-            .faceCertificationIDCardOCR({
-              cardSide: cardSide, //1人像  2 国徽
-              cardImageBase64: base64,
-              gradeId: this.gradeId,
-            })
-            .then((res) => {
-              resolve(res);
-            })
-            .catch((err) => {
-              resolve(err);
-            });
-        };
-      });
-    },
-
-    async submit() {
-      if (this.uploading) {
-        return;
-      }
-      this.uploading = true;
-
-      var ast = this.listData.some((item) => {
-        return item.fieldKey === "commitment_electr_signature";
-      });
-      if (ast) {
-        await this.subCanvas();
-      }
-
-      this.resultForm();
-    },
-
-    stampSubmit() {
-      if (this.uploading) {
-        return;
-      }
-      this.uploading = true;
-      this.stampResultForm();
-    },
-    backLI() {
-      this.player.j2s_seekVideo(0);
-      this.showRecordStatus = false;
-    },
-    //验证表单
-    stampResultForm() {
-      for (let i = 0; i < this.listDataStamp.length; i++) {
-        if (
-          this.listDataStamp[i].fieldKey === "commitment_seal" &&
-          !this.listDataStamp[i].required
-        ) {
-          this.submitApi();
-          return;
-        }
-      }
-      this.$refs.stampForm.validate((valid) => {
-        if (valid) {
-          this.submitApiStamp();
-        } else {
-          this.uploading = false;
-        }
-      });
-    },
-
-    async submitApiStamp() {
-      var data = JSON.parse(JSON.stringify(this.stampForm));
-      if (data["commitment_seal"]) {
-        data.commitment_seal = await this.$upload.upload(
-          data.commitment_seal,
-          0
-        );
-      }
-      this.optionChanges(data);
-    },
-
-    optionChanges(data) {
-      var self = this;
-      var objs = {};
-      for (let k in data) {
-        objs[k] = {
-          fieldKey: k,
-          value: data[k],
-          fieldName: (function () {
-            for (let i = 0; i < self.listDataStamp.length; i++) {
-              if (self.listDataStamp[i].fieldKey == k) {
-                return self.listDataStamp[i].fieldName;
-              }
-            }
-          })(),
-          status: self.remarkStatusStamp ? 1 : 0,
-        };
-      }
-      var datas = {
-        orderGoodsId: this.orderGoodsId,
-        goodsId: self.goodsId,
-        keyValue: JSON.stringify(objs),
-      };
-      if (self.remarkStatus) {
-        datas.id = self.id;
-        self.$request.editbaseprofileStamp(datas).then((res) => {
-          this.uploading = false;
-          this.getUserInfo();
-          this.showStampDetailModail = false;
-          this.$message.success("提交成功");
-        });
-      } else {
-        self.$request.addbaseprofileStamp(datas).then((res) => {
-          this.uploading = false;
-          this.getUserInfo();
-          this.showStampDetailModail = false;
-          this.$message.success("提交成功");
-        });
-      }
-    },
-
-    resultForm() {
-      console.log(1);
-      if (this.isRequired) {
-        this.submitApi();
-      } else {
-        console.log(1);
-        this.$refs.infoForm.validate((valid) => {
-          console.log(1);
-          if (valid) {
-            this.submitApi();
-          } else {
-            this.uploading = false;
-          }
-        });
-        // if (int === 1) {
-        //   this.errorType = ["toast"];
-        // } else {
-        //   this.errorType = ["message"];
-        // }
-      }
-    },
-
-    async submitApi() {
-      console.log(this.infoForm, "999");
-      var data = JSON.parse(JSON.stringify(this.infoForm));
-      if (data["sex"]) {
-        data.sex = this.dictObj["sys_user_sex"][Number(data.sex)];
-      }
-      if (data["education"]) {
-        data.education = this.dictObj["edu_level"][Number(data.education)];
-      }
-      if (data["working_years"]) {
-        data.working_years =
-          this.dictObj["working_years"][Number(data.working_years)];
-      }
-      if (data["recent_photos"]) {
-        data.recent_photos = await this.$upload.upload(data.recent_photos, 0);
-      }
-      if (data["idcard_face_photo"]) {
-        data.idcard_face_photo = await this.$upload.upload(
-          data.idcard_face_photo,
-          0
-        );
-      }
-      if (data["idcard_national_photo"]) {
-        data.idcard_national_photo = await this.$upload.upload(
-          data.idcard_national_photo,
-          0
-        );
-      }
-      if (data["commitment_electr_signature"]) {
-        data.commitment_electr_signature = await this.$upload.upload(
-          data.commitment_electr_signature,
-          0
-        );
-      }
-
-      this.uploadDatas(data);
-    },
-
-    async downloadStamp(item) {
-      let self = this;
-
-      var ast = this.listData.some((item) => {
-        return item.fieldKey === "commitment_electr_signature";
-      });
-      if (ast) {
-        await this.subCanvas();
-      }
-
-      let data = JSON.parse(JSON.stringify(this.infoForm));
-      if (data["sex"]) {
-        data.sex = this.dictObj["sys_user_sex"][Number(data.sex)];
-      }
-      if (data["education"]) {
-        data.education = this.dictObj["edu_level"][Number(data.education)];
-      }
-      if (data["working_years"]) {
-        data.working_years =
-          this.dictObj["working_years"][Number(data.working_years)];
-      }
-
-      console.log(data, "data");
-
-      if (this.remarkStatus) {
-        var arsty = {};
-        for (let k in data) {
-          for (let j in self.copyData) {
-            if (k === j) {
-              if (self.copyData[j].value === data[k]) {
-                arsty[k] = {
-                  fieldKey: k,
-                  value: data[k],
-                  fieldName: (function () {
-                    for (let i = 0; i < self.listData.length; i++) {
-                      if (self.listData[i].fieldKey == k) {
-                        return self.listData[i].fieldName;
-                      }
-                    }
-                  })(),
-                  status: 0,
-                };
-              } else {
-                arsty[k] = {
-                  fieldKey: k,
-                  value: data[k],
-                  fieldName: (function () {
-                    for (let i = 0; i < self.listData.length; i++) {
-                      if (self.listData[i].fieldKey == k) {
-                        return self.listData[i].fieldName;
-                      }
-                    }
-                  })(),
-                  status: 1,
-                };
-              }
-            }
-          }
-        }
-      } else {
-        var arsty = {};
-        for (let k in data) {
-          arsty[k] = {
-            fieldKey: k,
-            value: data[k],
-            fieldName: (function () {
-              for (let i = 0; i < self.listData.length; i++) {
-                if (self.listData[i].fieldKey == k) {
-                  return self.listData[i].fieldName;
-                }
-              }
-            })(),
-            status: 0,
-          };
-        }
-      }
-
-      console.log(arsty, "arsty");
-
-      this.$request
-        .baseProfileStampV2AddWord({
-          goodsId: this.goodsId,
-          keyValue: JSON.stringify(arsty),
-        })
-        .then((res) => {
-          let url = this.$tools.splitImgHost(res.msg);
-          let name = res.msg.substring(res.msg.lastIndexOf("/") + 1);
-          let image = new Image();
-          // 解决跨域 Canvas 污染问题,
-          image.setAttribute("crossorigin", "anonymous");
-          image.onload = function () {
-            var canvas = document.createElement("canvas");
-            canvas.width = image.width;
-            canvas.height = image.height;
-            var context = canvas.getContext("2d");
-            context.drawImage(image, 0, 0, image.width, image.height);
-            var base64 = canvas.toDataURL("image/jpg"); //将图片格式转为base64
-            var a = document.createElement("a"); // 生成一个a元素
-            var event = new MouseEvent("click"); // 创建一个单击事件
-            a.download = name; // 设置图片名称
-            console.log(base64);
-            a.href = base64; // 将生成的URL设置为a.href属性
-            a.dispatchEvent(event); // 触发a的单击事件
-          };
-          image.src = url + "?time=" + Date.now(); //注意,这里是灵魂,否则依旧会产生跨域问题
-        });
-    },
-
-    convertBase64UrlToBlob(urlData) {
-      var localData = urlData; //dataUrl为base64位
-      let base = atob(localData.substring(localData.indexOf(",") + 1)); // base是将base64编码解码,去掉data:image/png;base64部分
-      let length = base.length;
-      let url = new Uint8Array(length);
-      while (length--) {
-        url[length] = base.charCodeAt(length);
-      }
-      let file = new File([url], "a.jpg", {
-        type: "image/jpg",
-      });
-      //最后将file,通过ajax请求做为参数传给服务器就可以了
-      return file;
-    },
-
-    async uploadDatas(data) {
-      let self = this;
-      if (this.infoForm.recent_photos && this.infoForm.idcard_face_photo) {
-        let base = await this.$tools.imageToBase64(
-          this.$tools.splitImgHost(this.infoForm.idcard_face_photo)
-        );
-        console.log(base);
-        console.log(this.$tools.splitImgHost(this.infoForm.idcard_face_photo));
-
-        let resData = {};
-        try {
-          resData = await this.$request.faceCertificationIDCardOCR({
-            cardSide: 1, //1人像  2 国徽
-            cardImageBase64: base,
-            gradeId: this.gradeId,
-          });
-        } catch (err) {
-          self.$message.warning("身份证人像面照片异常,请重新上传");
-          self.uploading = false;
-          return;
-        }
-
-        if (!resData.data) {
-          this.$message.warning("身份证人像面照片异常,请重新上传");
-          this.uploading = false;
-          return;
-        }
-        this.veryIdCard = resData.data.IdNum;
-        this.veryIdName = resData.data.IdName;
-
-        // if (this.infoForm.idcard) {
-        //   if (this.infoForm.idcard != this.veryIdCard) {
-        //     this.$message.warning(
-        //       "输入的身份证号和身份证人像面照片身份证号不匹配"
-        //     );
-        //     this.uploading = false;
-        //     return;
-        //   }
-        // }
-
-        let base64 = await this.$tools.imageToBase64(
-          this.$tools.splitImgHost(this.infoForm.recent_photos)
-        );
-
-        let newData = {
-          urlA: this.infoForm.idcard_face_photo,
-          oneInchPhotos: base64,
-        };
-
-        this.$request
-          .faceCertificationIdCardCompareFace(newData)
-          .then((res1) => {
-            if (res1.data >= 70) {
-              var self = this;
-              if (self.remarkStatus) {
-                var arsty = {};
-                for (let k in data) {
-                  for (let j in self.copyData) {
-                    if (k === j) {
-                      if (self.copyData[j].value === data[k]) {
-                        arsty[k] = {
-                          fieldKey: k,
-                          value: data[k],
-                          fieldName: (function () {
-                            for (let i = 0; i < self.listData.length; i++) {
-                              if (self.listData[i].fieldKey == k) {
-                                return self.listData[i].fieldName;
-                              }
-                            }
-                          })(),
-                          status: 0,
-                        };
-                      } else {
-                        arsty[k] = {
-                          fieldKey: k,
-                          value: data[k],
-                          fieldName: (function () {
-                            for (let i = 0; i < self.listData.length; i++) {
-                              if (self.listData[i].fieldKey == k) {
-                                return self.listData[i].fieldName;
-                              }
-                            }
-                          })(),
-                          status: 1,
-                        };
-                      }
-                    }
-                  }
-                }
-                var datas = {
-                  id: this.id,
-                  goodsId: this.goodsId,
-                  orderGoodsId: this.orderGoodsId,
-                  keyValue: JSON.stringify(arsty),
-                };
-                this.$request
-                  .editbaseprofiletp(datas)
-                  .then((res) => {
-                    this.uploading = false;
-                    this.courseCourseList();
-                    this.getUserInfo();
-                    this.$message.success("提交成功");
-                    this.showInfoDetailModal = false;
-                  })
-                  .catch((err) => {
-                    this.$message.warning(err.msg);
-                    this.uploading = false;
-                  });
-              } else {
-                var objs = {};
-                for (let k in data) {
-                  objs[k] = {
-                    fieldKey: k,
-                    value: data[k],
-                    fieldName: (function () {
-                      for (let i = 0; i < self.listData.length; i++) {
-                        if (self.listData[i].fieldKey == k) {
-                          return self.listData[i].fieldName;
-                        }
-                      }
-                    })(),
-                    status: 0,
-                  };
-                }
-                var datas = {
-                  goodsId: this.goodsId,
-                  profileTpId: this.goodsId,
-                  orderGoodsId: this.orderGoodsId,
-                  keyValue: JSON.stringify(objs),
-                };
-                this.$request
-                  .addbaseprofiletp(datas)
-                  .then((res) => {
-                    this.uploading = false;
-                    this.courseCourseList();
-                    this.getUserInfo();
-                    this.$message.success("提交成功");
-                    this.showInfoDetailModal = false;
-                  })
-                  .catch((err) => {
-                    this.$message.warning(err.msg);
-                    this.uploading = false;
-                  });
-              }
-            } else {
-              this.uploading = false;
-              this.$message.warning("证件照和身份证人像面照片不匹配");
-            }
-          })
-          .catch((err) => {
-            this.uploading = false;
-            this.$message.warning(err.msg);
-          });
-
-        return;
-      }
-
-      if (self.remarkStatus) {
-        var arsty = {};
-        for (let k in data) {
-          for (let j in self.copyData) {
-            if (k === j) {
-              if (self.copyData[j].value === data[k]) {
-                arsty[k] = {
-                  fieldKey: k,
-                  value: data[k],
-                  fieldName: (function () {
-                    for (let i = 0; i < self.listData.length; i++) {
-                      if (self.listData[i].fieldKey == k) {
-                        return self.listData[i].fieldName;
-                      }
-                    }
-                  })(),
-                  status: 0,
-                };
-              } else {
-                arsty[k] = {
-                  fieldKey: k,
-                  value: data[k],
-                  fieldName: (function () {
-                    for (let i = 0; i < self.listData.length; i++) {
-                      if (self.listData[i].fieldKey == k) {
-                        return self.listData[i].fieldName;
-                      }
-                    }
-                  })(),
-                  status: 1,
-                };
-              }
-            }
-          }
-        }
-        var datas = {
-          id: this.id,
-          goodsId: this.goodsId,
-          orderGoodsId: this.orderGoodsId,
-          keyValue: JSON.stringify(arsty),
-        };
-        this.$request
-          .editbaseprofiletp(datas)
-          .then((res) => {
-            this.uploading = false;
-            this.courseCourseList();
-            this.getUserInfo();
-            this.$message.success("提交成功");
-            this.showInfoDetailModal = false;
-          })
-          .catch((err) => {
-            this.$message.warning(err.msg);
-            this.uploading = false;
-          });
-      } else {
-        var objs = {};
-        for (let k in data) {
-          objs[k] = {
-            fieldKey: k,
-            value: data[k],
-            fieldName: (function () {
-              for (let i = 0; i < self.listData.length; i++) {
-                if (self.listData[i].fieldKey == k) {
-                  return self.listData[i].fieldName;
-                }
-              }
-            })(),
-            status: 0,
-          };
-        }
-        var datas = {
-          goodsId: this.goodsId,
-          profileTpId: this.goodsId,
-          orderGoodsId: this.orderGoodsId,
-          keyValue: JSON.stringify(objs),
-        };
-        this.$request
-          .addbaseprofiletp(datas)
-          .then((res) => {
-            this.uploading = false;
-            this.courseCourseList();
-            this.getUserInfo();
-            this.$message.success("提交成功");
-            this.showInfoDetailModal = false;
-          })
-          .catch((err) => {
-            this.$message.warning(err.msg);
-            this.uploading = false;
-          });
-      }
-    },
-
-    subCanvas() {
-      return new Promise((resolve, reject) => {
-        var self = this;
-        if (self.infoForm.commitment_electr_signature) {
-          resolve();
-          return;
-        }
-        this.$refs.esign[0]
-          .generate() // 使用生成器调用把签字的图片转换成为base64图片格式
-          .then(async (res) => {
-            let url = await this.$upload.upload(
-              this.convertBase64UrlToBlob(res),
-              0
-            );
-            this.$set(this.infoForm, "commitment_electr_signature", url);
-            resolve();
-          })
-          .catch((err) => {
-            console.log(err, "err");
-            // 画布没有签字时会执行这里提示一下
-            // this.uploading = false;
-            // this.$message({
-            //   type: "warning",
-            //   message: "请签名后再生成签字图片",
-            // });
-            resolve();
-          });
-      });
-    },
-
-    imageInfos() {
-      var self = this;
-      return new Promise(async (resolve, reject) => {
-        const waitUpload = await self.uploadFile(self.faceUrl, 0);
-        resolve(waitUpload);
-      });
-    },
-
-    getarrays(key) {
-      if (key === "sex") {
-        return this.dictObj["sys_user_sex"];
-      }
-      if (key === "education") {
-        return this.dictObj["edu_level"];
-      }
-      if (key === "working_years") {
-        return this.dictObj["working_years"];
-      }
-    },
-
-    dictList() {
-      this.$request.dictList().then((res) => {
-        if (res.code === 200) {
-          let newList = {};
-          let list = res.data;
-          for (let i = 0; i < list.length; i++) {
-            let item = list[i];
-            if (newList.hasOwnProperty(item.dictType)) {
-              newList[item.dictType].push(item.dictLabel);
-            } else {
-              newList[item.dictType] = [item.dictLabel];
-            }
-          }
-          this.dictObj = newList;
-        }
-      });
-    },
-
-    getbaseprofiletplists() {
-      return new Promise((resolve) => {
-        let self = this;
-        this.$request
-          .getbaseprofiletplists({
-            goodsId: this.goodsId,
-            orderGoodsId: this.orderGoodsId || "",
-          })
-          .then((res) => {
-            if (res.code === 200 && res.rows.length) {
-              console.log(1);
-              if (res.rows[0].keyValue) {
-                console.log(2);
-                self.$request
-                  .getbaseprofiletpId(self.goodsId)
-                  .then((baseRes) => {
-                    if (baseRes.code === 200) {
-                      console.log(3);
-                      if (baseRes.data) {
-                        console.log(4);
-                        self.$request
-                          .getbaseprofiletpgetInfo({
-                            goodsId: self.goodsId,
-                            orderGoodsId: self.orderGoodsId,
-                          })
-                          .then((result) => {
-                            console.log(result, "result");
-                            if (result.code === 200) {
-                              if (
-                                !result.data ||
-                                (result.data.status === 3 &&
-                                  result.data.changeStatus === 1)
-                              ) {
-                                console.log(5);
-                                if (!result.data) {
-                                  console.log(6);
-                                  self.needProfileModal = true;
-
-                                  this.$confirm(`请填写资料`, "提示", {
-                                    confirmButtonText: "确定",
-                                    cancelButtonText: "返回",
-                                    closeOnClickModal: false,
-                                    closeOnPressEscape: false,
-                                    distinguishCancelAndClose: false,
-                                    showClose: false,
-                                  })
-                                    .then((_) => {
-                                      this.showAgreementModal = true;
-                                      this.getInfo();
-                                    })
-                                    .catch((_) => {
-                                      this.$router.back(-1);
-                                    });
-                                } else {
-                                  this.$confirm(
-                                    `资料审核不通过,请前往重新填写`,
-                                    "提示",
-                                    {
-                                      confirmButtonText: "确定",
-                                      cancelButtonText: "返回",
-                                      closeOnClickModal: false,
-                                      closeOnPressEscape: false,
-                                      distinguishCancelAndClose: false,
-                                      showClose: false,
-                                    }
-                                  )
-                                    .then((_) => {
-                                      this.showInfoDetailModal = true;
-                                      this.getInfo();
-                                    })
-                                    .catch((_) => {
-                                      this.$router.back(-1);
-                                    });
-                                }
-                              } else if (
-                                result.data.status === 1 &&
-                                JSON.parse(res.rows[0].keyValue2)[0]
-                              ) {
-                                console.log(8);
-                                self.$request
-                                  .getbaseprofileStampgetInfo({
-                                    goodsId: self.goodsId,
-                                    orderGoodsId: self.orderGoodsId,
-                                  })
-                                  .then((k) => {
-                                    if (k.code === 200) {
-                                      if (
-                                        !k.data ||
-                                        (k.data.status === 3 &&
-                                          k.data.changeStatus === 1)
-                                      ) {
-                                        if (!k.data) {
-                                          console.log(9);
-                                          this.$confirm(
-                                            `请前往填写盖章资料`,
-                                            "提示",
-                                            {
-                                              confirmButtonText: "确定",
-                                              cancelButtonText: "返回",
-                                              closeOnClickModal: false,
-                                              closeOnPressEscape: false,
-                                              distinguishCancelAndClose: false,
-                                              showClose: false,
-                                            }
-                                          )
-                                            .then((_) => {
-                                              this.showStampDetailModail = true;
-                                              this.getInfoStamp();
-                                            })
-                                            .catch((_) => {
-                                              this.$router.back(-1);
-                                            });
-                                        } else {
-                                          console.log(10);
-                                          self.needProfileModal = true;
-                                          this.$confirm(
-                                            `资料盖章审核不通过,请前往重新填写`,
-                                            "提示",
-                                            {
-                                              confirmButtonText: "确定",
-                                              cancelButtonText: "返回",
-                                              closeOnClickModal: false,
-                                              closeOnPressEscape: false,
-                                              distinguishCancelAndClose: false,
-                                              showClose: false,
-                                            }
-                                          )
-                                            .then((_) => {
-                                              this.showStampDetailModail = true;
-                                              this.getInfoStamp();
-                                            })
-                                            .catch((_) => {
-                                              this.$router.back(-1);
-                                            });
-                                        }
-                                      } else {
-                                        resolve();
-                                      }
-                                    }
-                                  });
-                              } else {
-                                resolve();
-                              }
-                            }
-                          });
-                      } else {
-                        resolve();
-                      }
-                    }
-                  });
-              } else {
-                resolve();
-              }
-            } else {
-              resolve();
-            }
-          });
-        if (this.gradeId > 0) {
-          //提交完资料返回判断是否已开班
-
-          this.getGradeInfo();
-        }
-      });
-    },
-
-    getInfoStamp() {
-      var self = this;
-      this.$request.getbaseprofiletpId(this.goodsId).then((res) => {
-        var ast = JSON.parse(res.data.keyValue2);
-        self.listDataStamp = ast;
-        self.$request
-          .getbaseprofileStampgetInfo({
-            goodsId: self.goodsId,
-            orderGoodsId: self.orderGoodsId,
-          })
-          .then((result) => {
-            if (result.data && result.data.status === 3) {
-              self.remarkStamp = result.data.text;
-              self.remarkStatusStamp = true;
-              self.id = result.data.id;
-            } else if (
-              result.data &&
-              (result.data.status === 1 || result.data.status === 2)
-            ) {
-              // uni.showModal({
-              //   showCancel: false,
-              //   content:
-              //     result.data.status === 1
-              //       ? "该商品审核资料已通过,不可重复提交资料"
-              //       : result.data.status === 2
-              //       ? "该商品审核资料处于待审核状态,不可重复提交资料"
-              //       : "请联系管理员",
-              //   success: function (k) {
-              //     if (k.confirm) {
-              //       uni.navigateBack();
-              //     }
-              //   },
-              // });
-            }
-          })
-          .catch((err) => {});
-      });
-    },
-
-    getGradeInfo() {
-      let self = this;
-      this.$request.goodsGradeInfo(this.gradeId).then((res) => {
-        if (res.code == 200) {
-          self.gradeDetail = res.data;
-          if (self.needProfileModal) {
-            return;
-          }
-          if (self.gradeDetail.learningStatus == 2) {
-            this.$confirm(
-              `当前课程正在申请中,正式开班后方可进行学习,请耐心等候!`,
-              "提示",
-              {
-                confirmButtonText: "确定",
-                closeOnClickModal: false,
-                closeOnPressEscape: false,
-                showCancelButton: false,
-                distinguishCancelAndClose: false,
-                showClose: false,
-              }
-            )
-              .then((_) => {
-                this.$router.back(-1);
-              })
-              .catch((_) => {});
-          }
-          if (
-            self.gradeDetail.learningStatus == 3 &&
-            Number(self.gradeDetail.learningTimeStart) >
-              Number(new Date() / 1000)
-          ) {
-            this.$confirm(
-              `当前课程正在申请中,正式开班后方可进行学习,请耐心等候!`,
-              "提示",
-              {
-                confirmButtonText: "返回",
-                closeOnClickModal: false,
-                closeOnPressEscape: false,
-                showCancelButton: false,
-                distinguishCancelAndClose: false,
-                showClose: false,
-              }
-            )
-              .then((_) => {
-                this.$router.back(-1);
-              })
-              .catch((_) => {});
-          }
-        }
-      });
-      this.$store.state.allowLoading = true;
-    },
-
-    deleteImg(item) {
-      if (item.fieldKey == "recent_photos") {
-        this.fileList1 = [];
-        this.infoForm["recent_photos"] = "";
-      } else if (item.fieldKey == "idcard_face_photo") {
-        this.fileList2 = [];
-        this.infoForm["idcard_face_photo"] = "";
-      } else if (item.fieldKey == "idcard_national_photo") {
-        this.fileList3 = [];
-        this.infoForm["idcard_national_photo"] = "";
-      }
-    },
-
-    /**
-     *  getbaseprofiletpgetInfo接口返回值result.data.data不存在的话说明是第一次填写资料
-     */
-    getInfo() {
-      var self = this;
-      this.$request.getbaseprofiletpId(this.goodsId).then((res) => {
-        console.log(res, "res");
-        var listData = JSON.parse(res.data.keyValue);
-        var ast = JSON.parse(res.data.keyValue2);
-        self.listData = [...listData, ...ast];
-
-        console.log(self.listData, "self.listData");
-
-        self.listData.forEach((item) => {
-          if (item.fieldKey == "idcard") {
-            this.infoForm.idcard = this.userInfo.idCard;
-          }
-          if (item.fieldKey == "telphone") {
-            this.infoForm.telphone = this.userInfo.telphone;
-          }
-
-          if (item.fieldKey == "name") {
-            this.infoForm.name = this.userInfo.realname || "";
-          }
-        });
-        self.isRequired = self.listData.every((ims) => {
-          return ims.required === false;
-        });
-        this.$nextTick(() => {
-          this.agreementModal = true;
-        });
-        self.$request
-          .getbaseprofiletpgetInfo({
-            goodsId: this.goodsId,
-            orderGoodsId: this.orderGoodsId,
-          })
-          .then((result) => {
-            if (result.code === 200) {
-              if (!result.data) {
-                self.$request
-                  .getbaseprofiletplistProfile({
-                    pageNum: 1,
-                    pageSize: 1,
-                  })
-                  .then((kit) => {
-                    if (kit.rows.length) {
-                      var ajson = JSON.parse(kit.rows[0].keyValue);
-                      self.listData.forEach((zyitem, zyindex) => {
-                        for (let k in ajson) {
-                          if (zyitem.fieldKey == k && ajson[k].value) {
-                            if (k === "sex") {
-                              const sexIndex =
-                                self.dictObj["sys_user_sex"].indexOf(
-                                  ajson[k].value
-                                ) + "";
-                              self.$set(self.infoForm, k, sexIndex);
-                            } else if (k === "education") {
-                              const sexIndex =
-                                self.dictObj["edu_level"].indexOf(
-                                  ajson[k].value
-                                ) + "";
-                              self.$set(self.infoForm, k, sexIndex);
-                            } else if (k === "working_years") {
-                              const sexIndex =
-                                self.dictObj["working_years"].indexOf(
-                                  ajson[k].value
-                                ) + "";
-                              self.$set(self.infoForm, k, sexIndex);
-                            } else if (k === "recent_photos") {
-                              self.$set(self.infoForm, k, ajson[k].value);
-                              if (ajson[k].value) {
-                                self.fileList1 = [
-                                  {
-                                    url: ajson[k].value,
-                                  },
-                                ];
-                              }
-                            } else if (k === "idcard_face_photo") {
-                              self.$set(self.infoForm, k, ajson[k].value);
-                              if (ajson[k].value) {
-                                self.fileList2 = [
-                                  {
-                                    url: ajson[k].value,
-                                  },
-                                ];
-                              }
-                            } else if (k === "idcard_national_photo") {
-                              self.$set(self.infoForm, k, ajson[k].value);
-                              if (ajson[k].value) {
-                                self.fileList3 = [
-                                  {
-                                    url: ajson[k].value,
-                                  },
-                                ];
-                              }
-                            } else {
-                              if (k === "name") {
-                                self.$set(
-                                  self.infoForm,
-                                  k,
-                                  this.$store.state.userInfo.realname
-                                );
-                              } else if (k === "idcard") {
-                                self.$set(
-                                  self.infoForm,
-                                  k,
-                                  this.$store.state.userInfo.idCard
-                                );
-                              } else if (k === "telphone") {
-                                self.$set(
-                                  self.infoForm,
-                                  k,
-                                  this.$store.state.userInfo.telphone
-                                );
-                              } else if (k !== "commitment_electr_signature") {
-                                self.$set(self.infoForm, k, ajson[k].value);
-                              }
-                            }
-                          }
-                        }
-                      });
-                    }
-                  });
-              }
-              if (result.data && result.data.status === 3) {
-                self.remark = result.data.text;
-                self.remarkStatus = true;
-                self.id = result.data.id;
-                var arrays = JSON.parse(result.data.keyValue);
-                self.copyData = JSON.parse(JSON.stringify(arrays));
-                for (let k in arrays) {
-                  if (k === "sex") {
-                    if (arrays[k].value) {
-                      const sexIndex =
-                        self.dictObj["sys_user_sex"].indexOf(arrays[k].value) +
-                        "";
-                      self.$set(self.infoForm, k, sexIndex);
-                    }
-                  } else if (k === "education") {
-                    if (arrays[k].value) {
-                      const sexIndex =
-                        self.dictObj["edu_level"].indexOf(arrays[k].value) + "";
-                      self.$set(self.infoForm, k, sexIndex);
-                    }
-                  } else if (k === "working_years") {
-                    if (arrays[k].value) {
-                      const sexIndex =
-                        self.dictObj["working_years"].indexOf(arrays[k].value) +
-                        "";
-                      self.$set(self.infoForm, k, sexIndex);
-                    }
-                  } else if (k === "recent_photos") {
-                    self.$set(self.infoForm, k, arrays[k].value);
-                    if (arrays[k].value) {
-                      self.fileList1 = [{ url: arrays[k].value }];
-                    }
-                  } else if (k === "idcard_face_photo") {
-                    self.$set(self.infoForm, k, arrays[k].value);
-                    if (arrays[k].value) {
-                      self.fileList2 = [{ url: arrays[k].value }];
-                    }
-                  } else if (k === "idcard_national_photo") {
-                    self.$set(self.infoForm, k, arrays[k].value);
-                    if (arrays[k].value) {
-                      self.fileList3 = [{ url: arrays[k].value }];
-                    }
-                  } else if (k === "name") {
-                    self.$set(
-                      self.infoForm,
-                      k,
-                      this.$store.state.userInfo.realname
-                    );
-                  } else if (k === "idcard") {
-                    self.$set(
-                      self.infoForm,
-                      k,
-                      this.$store.state.userInfo.idCard
-                    );
-                  } else if (k === "telphone") {
-                    self.$set(
-                      self.infoForm,
-                      k,
-                      this.$store.state.userInfo.telphone
-                    );
-                  } else {
-                    self.$set(self.infoForm, k, arrays[k].value);
-                  }
-                }
-              } else if (
-                result.data &&
-                (result.data.status === 1 || result.data.status === 2)
-              ) {
-                this.$confirm(
-                  result.data.status === 1
-                    ? "该商品审核资料已通过,不可重复提交资料"
-                    : result.data.status === 2
-                    ? "该商品审核资料处于待审核状态,不可重复提交资料"
-                    : "请联系管理员",
-                  "提示",
-                  {
-                    confirmButtonText: "返回",
-                    closeOnClickModal: false,
-                    closeOnPressEscape: false,
-                    showCancelButton: false,
-                    distinguishCancelAndClose: false,
-                    showClose: false,
-                  }
-                )
-                  .then((_) => {
-                    this.$router.back(-1);
-                  })
-                  .catch((_) => {});
-              }
-            }
-          });
-      });
-    },
-    returnName(key) {
-      if (key === "sex") {
-        if (this.infoForm[key]) {
-          return this.dictObj["sys_user_sex"][Number(this.infoForm[key])];
-        } else {
-          return "请选择性别";
-        }
-      }
-      if (key === "education") {
-        if (this.infoForm[key]) {
-          return this.dictObj["edu_level"][Number(this.infoForm[key])];
-        } else {
-          return "请选择学历";
-        }
-      }
-      if (key === "working_years") {
-        if (this.infoForm[key]) {
-          return this.dictObj["working_years"][Number(this.infoForm[key])];
-        } else {
-          return "请选择工作年限";
-        }
-      }
-    },
-    retDraw() {
-      this.$set(this.infoForm, "commitment_electr_signature", "");
-      this.$nextTick(() => {
-        this.$refs.esign[0].reset();
-      });
-    },
-    uploadFile(options, int) {
-      var self = this;
-      return new Promise((resolve, reject) => {
-        var data = {
-          imageStatus: int,
-          gradeId: this.gradeId,
-          orderGoodsId: this.orderGoodsId,
-        };
-        self.$request
-          .getPolicy(data)
-          .then((res) => {
-            var ossToken = res.data.resultContent;
-            if (ossToken.host == null || ossToken.host == undefined) {
-              this.$message({
-                type: "warning",
-                message: "上传路径报错" + JSON.stringify(res.data),
-              });
-              return;
-            }
-
-            let data = this.$tools.convertBase64UrlToBlob(this.faceUrl);
-
-            this.$upload
-              .upload(data, 0)
-              .then((res) => {
-                this.ossAvatarUrl = res;
-                resolve(res);
-              })
-              .catch((err) => {
-                this.$message({
-                  type: "warning",
-                  message: "上传接口报错,请重新拍照上传",
-                });
-                this.reTake();
-              });
-          })
-          .catch((err) => {
-            this.$message({
-              type: "warning",
-              message: "签名错误" + JSON.stringify(err),
-            });
-            return;
-          });
-      });
-    },
-
-    faceRecognition() {
-      return new Promise((resolve) => {
-        this.$request
-          .faceCertificationCompareFace({
-            imageA: this.faceUrl,
-            orderGoodsId: this.orderGoodsId,
-            gradeId: this.gradeId,
-          })
-          .then((res) => {
-            resolve(res.data);
-          })
-          .catch((err) => {
-            this.loading = false;
-            this.$message({
-              type: "warning",
-              message: err.msg,
-            });
-          });
-      });
-    },
-    /**
-     * 点击重拍
-     */
-    reTake() {
-      this.faceUrl = "";
-      this.isTaking = true;
-      this.getUserMedia({
-        video: {
-          width: 400,
-          height: 400,
-        },
-      });
-    },
-    // 点击拍照按钮
-    onPhoto() {
-      // if (this.isIE) {
-      //   window.webcam.capture();
-      // } else {
-      const canvas = document.createElement("canvas");
-      canvas.width = 400;
-      canvas.height = 400;
-      const context = canvas.getContext("2d");
-      const video = document.getElementById("video");
-      context.drawImage(video, 0, 0, 400, 400);
-      this.faceUrl = canvas.toDataURL("image/png");
-      this.isTaking = false;
-      // }
-    },
-    getUserMedia(constraints, success, error) {
-      if (window.navigator.mediaDevices.getUserMedia) {
-        // 最新的标准API
-        window.navigator.mediaDevices
-          .getUserMedia(constraints)
-          .then(success)
-          .catch(error);
-      } else if (window.navigator.webkitGetUserMedia) {
-        // webkit核心浏览器
-        window.navigator.webkitGetUserMedia(constraints, success, error);
-      } else if (window.navigator.mozGetUserMedia) {
-        // firfox浏览器
-        window.navigator.mozGetUserMedia(constraints, success, error);
-      } else if (window.navigator.getUserMedia) {
-        // 旧版API
-        window.navigator.getUserMedia(constraints, success, error);
-      }
-    },
-
-    photographSuccess(stream) {
-      // 兼容webkit核心浏览器
-
-      this.isTaking = true;
-      this.takePhotoModal = true;
-
-      this.$nextTick(() => {
-        const video = document.getElementById("video");
-        // 将视频流设置为video元素的源
-        console.dir(video);
-        video.srcObject = stream;
-        this.mediaStreamTrack =
-          typeof stream.stop === "function" ? stream : stream.getTracks()[0];
-        video.play();
-      });
-    },
-    photographError(err) {
-      this.$confirm(
-        "课程学习需要开启摄像头进行拍照,经检测您的设备无摄像头可使用,请检测环境是否支持。",
-        "提示",
-        {
-          confirmButtonText: "返回",
-          showConfirmButton: true,
-          closeOnClickModal: false,
-          showCancelButton: false,
-          closeOnPressEscape: false,
-          distinguishCancelAndClose: false,
-          showClose: false,
-        }
-      ).then(() => {
-        this.$router.go(-1);
-      });
-    },
-    /**
-     * 切换科目
-     */
-    courseChange() {
-      return new Promise((resolve) => {
-        this.noteParams = {
-          pageNum: 1,
-          // pageSize: 4,
-        };
-        this.duration = 0;
-        this.playSectionId = 0;
-        this.vid = "";
-        if (this.player) {
-          this.player.destroy();
-        }
-        this.player = "";
-        if (this.playerzb) {
-          this.playerzb.destroy();
-        }
-        this.playerzb = "";
-        this.vidzb = "";
-        this.historyChatMsgList = [];
-        this.nowTime = Number(new Date().getTime() / 1000).toFixed(0);
-        this.courseDetail(); //课程详情
-        this.getAnswerList(); //答疑列表
-        this.answerTimer = setInterval(() => {
-          this.getAnswerList();
-        }, 5000);
-        this.getMenuList(); //学习目录
-        this.getReMenuList(); //获取重修目录
-        this.getNoteList(); //获取节笔记
-
-        resolve();
-      });
-    },
-    polyvLiveHistoryChatMsgList() {
-      this.$request
-        .polyvLiveHistoryChatMsgList({
-          sectionId: this.playSectionId,
-          channelId: this.sectionItem.liveUrl,
-        })
-        .then((res) => {
-          this.historyChatMsgList = res.data;
-        });
-    },
-    courseDetail() {
-      let self = this;
-      this.$request.courseDetail(this.courseId).then((res) => {
-        // if (res.data.educationName == "继续教育") {
-        //   this.$request
-        //     .lockLockAction({
-        //       action: "jxjy",
-        //     })
-        //     .then((res) => {});
-        //   this.lockTimer = setInterval(() => {
-        //     this.$request
-        //       .lockLockAction({
-        //         action: "jxjy",
-        //       })
-        //       .then((res) => {});
-        //   }, 10000);
-        // }
-        self.detail = res.data;
-      });
-    },
-    openModule(menuItem) {
-      //重修目录点击
-      console.log(menuItem.list);
-      menuItem.showList = !menuItem.showList;
-
-      if (!menuItem.list.length) {
-        if (menuItem.isRebuild) {
-          this.getReChapterList(menuItem.id, menuItem.courseId, menuItem);
-        } else {
-          this.getBuyChapterList(menuItem.id, menuItem.courseId, menuItem);
-        }
-      }
-    },
-    getReChapterList(moduleId, courseId, menuItem) {
-      this.$request
-        .reChapterList({
-          moduleId: moduleId,
-          gradeId: this.gradeId,
-          courseId: courseId,
-          rebuild: 1,
-        })
-        .then((res) => {
-          for (let i = 0; i < res.data.length; i++) {
-            let item = res.data[i];
-            item.id = item.chapterId;
-            item.showList = false;
-            item.list = [];
-            item.parent = menuItem;
-            item.isRebuild = 1;
-          }
-          menuItem.list = res.data;
-        });
-    },
-
-    getBuyChapterList(moduleId, courseId, menuItem) {
-      this.$request
-        .reChapterList({
-          moduleId: moduleId,
-          gradeId: this.gradeId,
-          courseId: courseId,
-        })
-        .then((res) => {
-          for (let i = 0; i < res.data.length; i++) {
-            let item = res.data[i];
-            item.id = item.chapterId;
-            item.menuType = 2;
-            item.showList = false;
-            item.list = [];
-            item.parent = menuItem;
-          }
-          menuItem.list = res.data;
-
-          if (this.needOpen) {
-            // this.needOpen = false;
-            this.openChapter(menuItem.list[0]);
-          }
-        });
-    },
-    openChapter(chapter) {
-      console.log(chapter, "chapter");
-      chapter.showList = !chapter.showList;
-      if (!chapter.list.length) {
-        if (chapter.isRebuild) {
-          this.getReSectionList(
-            chapter.id,
-            chapter.courseId,
-            chapter.moduleId || 0,
-            chapter
-          );
-        } else {
-          this.getBuySectionList(
-            chapter.id,
-            chapter.courseId,
-            chapter.moduleId || 0,
-            chapter
-          );
-        }
-      }
-    },
-    getReSectionList(chapterId, courseId, moduleId, chapter) {
-      this.$request
-        .reSectionList({
-          chapterId: chapterId,
-          gradeId: this.gradeId,
-          courseId: courseId,
-          rebuild: 1,
-          moduleId: moduleId,
-        })
-        .then((res) => {
-          let newArr = res.data.filter((item) => {
-            return item.type != 2;
-          });
-          chapter.canLearn = newArr.every((item) => {
-            if (item.learning == 1) {
-              return true;
-            } else {
-              return false;
-            }
-          });
-
-          res.data.forEach((section) => {
-            section.parent = chapter;
-          });
-          chapter.list = res.data;
-        });
-    },
-
-    getBuySectionList(chapterId, courseId, moduleId = 0, chapter) {
-      this.$request
-        .reSectionList({
-          chapterId: chapterId,
-          gradeId: this.gradeId,
-          courseId: courseId,
-          moduleId: moduleId,
-        })
-        .then((res) => {
-          let newArr = res.data.filter((item) => {
-            return item.type != 2;
-          });
-          chapter.canLearn = newArr.every((item) => {
-            if (item.learning == 1) {
-              return true;
-            } else {
-              return false;
-            }
-          });
-
-          res.data.forEach((section) => {
-            section.parent = chapter;
-          });
-          chapter.list = res.data;
-
-          if (this.needOpen) {
-            this.needOpen = false;
-            if (
-              chapter.list &&
-              !this.sectionItem.recordingUrl &&
-              this.sectionItem.sectionType != 2
-            ) {
-              // this.getResource(chapter.list[0]);
-            }
-          }
-        });
-    },
-    getGoodsDetail() {
-      return new Promise((resolve) => {
-        let self = this;
-        this.$request.goodsDetail(this.goodsId).then((res) => {
-          self.goodsData = res.data;
-          self.gradeId = self.goodsData.gradeId;
-          if (this.goodsData.categoryName) {
-            this.infoForm.apply_post = this.goodsData.categoryName;
-            if (this.goodsData.categoryName) {
-              this.apply_post_disabled = true;
-            }
-
-            if (this.userInfo.companyName) {
-              this.infoForm.work_unit = this.userInfo.companyName;
-            }
-          }
-          if (this.goodsData.buyNote) {
-            this.tabList = [
-              { name: "1", label: "学员须知" },
-              { name: "2", label: "课程答疑" },
-              { name: "3", label: "笔记讲义" },
-            ];
-            console.log(res, "res111");
-            this.getRecommend();
-          } else {
-            this.tabList = [
-              { name: "1", label: "课程答疑" },
-              { name: "2", label: "笔记讲义" },
-            ];
-          }
-          this.courseBusiness();
-          this.courseHandouts();
-          if (self.goodsData.goodsPlayConfig) {
-            self.goodsPlayConfig = JSON.parse(self.goodsData.goodsPlayConfig);
-            if (self.goodsPlayConfig.autoPlay > 0) {
-              self.autoplay = true;
-            }
-            if (self.goodsPlayConfig.drag > 0) {
-              self.isAllowSeek = "off";
-            }
-            if (self.goodsPlayConfig.speed > 0) {
-              self.playbackRate = true;
-            }
-          }
-          if (self.goodsData.goodsPhotographConfig) {
-            self.goodsPhotographConfig = JSON.parse(
-              self.goodsData.goodsPhotographConfig
-            );
-            if (self.goodsPhotographConfig.photoNum > 0) {
-              self.photoNum = self.goodsPhotographConfig.photoNum;
-            }
-          }
-        });
-
-        resolve();
-      });
-    },
-    /**
-     * 点击节
-     */
-    async getResource(section) {
-      //逻辑
-
-      if (section.type == 2) {
-        //试卷
-        console.log("试卷");
-        console.log(section);
-        let learnNum = await this.goodsTodayStudySectionNum();
-        let hasLearn = await this.gradeCheckGoodsStudy(section.typeId);
-
-        if (this.goodsData.sectionMaxNum > 0) {
-          if (learnNum >= this.goodsData.sectionMaxNum && !hasLearn) {
-            this.$message({
-              type: "warning",
-              message: `每天最多学习${this.goodsData.sectionMaxNum}节`,
-            });
-            return;
-          }
-        }
-
-        if (this.businessData.goodsLearningOrder == 1) {
-          if (section.parent.canLearn) {
-            let num = await this.bankRecordDoNum(section);
-            //有次数限制
-            if (section.answerNum - num > 0 && section.answerNum > 0) {
-              // this.$set(this.list[index],'doNum',(item.doNum+1))
-              this.$router.push({
-                path: "/course-exam/" + this.goodsId,
-                query: {
-                  courseId: this.courseId,
-                  gradeId: this.gradeId,
-                  moduleId: section.moduleId || 0,
-                  examId: section.typeId,
-                  chapterId: section.chapterId || 0,
-                  orderGoodsId: this.orderGoodsId,
-                },
-              });
-
-              //没有答题次数限制
-            } else if (section.answerNum == 0) {
-              this.$router.push({
-                path: "/course-exam/" + this.goodsId,
-                query: {
-                  courseId: this.courseId,
-                  gradeId: this.gradeId,
-                  moduleId: section.moduleId || 0,
-                  examId: section.typeId,
-                  chapterId: section.chapterId || 0,
-                  orderGoodsId: this.orderGoodsId,
-                },
-              });
-            } else {
-              this.$message({
-                type: "warning",
-                message: "该试卷只能答题" + section.answerNum + "次",
-              });
-
-              return;
-            }
-          } else {
-            this.$message({
-              type: "warning",
-              message: "请按顺序学完视频课程再进行练习和测试",
-            });
-          }
-        } else if (
-          this.businessData.goodsLearningOrder == 2 &&
-          !section.rebuild
-        ) {
-          let rows = await this.studyRecordMenuAllList();
-          let isStop = false;
-          let newRows = [];
-          for (let i = 0; i < rows.length; i++) {
-            let moduleTrue = rows[i].moduleId == section.moduleId;
-            let chapterTrue = rows[i].chapterId == section.chapterId;
-            if (moduleTrue && chapterTrue) {
-              isStop = true;
-              if (rows[i].sectionType != 2) {
-                //忽略直播
-                newRows.push(rows[i]);
-              }
-            } else {
-              if (!isStop) {
-                if (rows[i].sectionType != 2) {
-                  //忽略直播
-                  newRows.push(rows[i]);
-                }
-              } else {
-                break;
-              }
-            }
-          }
-          console.log(newRows);
-          let isAllLearn = newRows.every((item) => {
-            return item.studyStatus == 1;
-          });
-
-          if (isAllLearn) {
-            //之前的都学完了
-
-            // if(canLearn) { //视频的上一节学完
-
-            let num = await this.bankRecordDoNum(section.typeId);
-            //有次数限制
-            if (section.answerNum - num > 0 && section.answerNum > 0) {
-              console.log(this.list[index]);
-              this.$router.push({
-                path: "/course-exam/" + this.goodsId,
-                query: {
-                  courseId: this.courseId,
-                  gradeId: this.gradeId,
-                  moduleId: section.moduleId || 0,
-                  examId: section.typeId,
-                  chapterId: section.chapterId || 0,
-                  orderGoodsId: this.orderGoodsId,
-                },
-              });
-              //没有答题次数限制
-            } else if (section.answerNum == 0) {
-              this.$router.push({
-                path: "/course-exam/" + this.goodsId,
-                query: {
-                  courseId: this.courseId,
-                  gradeId: this.gradeId,
-                  moduleId: section.moduleId || 0,
-                  examId: section.typeId,
-                  chapterId: section.chapterId || 0,
-                  orderGoodsId: this.orderGoodsId,
-                },
-              });
-            } else {
-              this.$message({
-                type: "warning",
-                message: "该试卷只能答题" + section.answerNum + "次",
-              });
-
-              return;
-            }
-          } else {
-            this.$message({
-              type: "warning",
-              message: "请学完视频课程再进行练习和测试",
-            });
-          }
-        } else {
-          let num = await this.bankRecordDoNum(section.typeId);
-          //有次数限制
-          if (section.answerNum - section.doNum > 0 && section.answerNum > 0) {
-            // this.$set(this.list[index],'doNum',(item.doNum+1))
-            this.$router.push({
-              path: "/course-exam/" + this.goodsId,
-              query: {
-                courseId: this.courseId,
-                gradeId: this.gradeId,
-                moduleId: section.moduleId || 0,
-                examId: section.typeId,
-                chapterId: section.chapterId || 0,
-                orderGoodsId: this.orderGoodsId,
-              },
-            });
-
-            //没有答题次数限制
-          } else if (section.answerNum == 0) {
-            this.$router.push({
-              path: "/course-exam/" + this.goodsId,
-              query: {
-                courseId: this.courseId,
-                gradeId: this.gradeId,
-                moduleId: section.moduleId || 0,
-                examId: section.typeId,
-                chapterId: section.chapterId || 0,
-                orderGoodsId: this.orderGoodsId,
-              },
-            });
-          } else {
-            this.$message({
-              type: "warning",
-              message: "该试卷只能答题" + section.answerNum + "次",
-            });
-
-            return;
-          }
-        }
-        return;
-      }
-
-      if (section.type != 2) {
-        if (this.clickLock) {
-          return;
-        }
-        this.clickLock = true;
-        if (
-          this.playSectionId &&
-          (this.playSectionId == section.sectionId ||
-            this.playSectionId == section.menuId) &&
-          this.moduleId == (section.moduleId || 0) &&
-          this.chapterId == (section.chapterId || 0)
-        ) {
-          //切换为同一频道不作为
-          this.clickLock = false;
-          return;
-        }
-
-        if (this.businessData.goodsLearningOrder == 2 && !section.isRebuild) {
-          //要按从头到尾顺序学习, 且不是重修课程
-
-          let rows = await this.studyRecordMenuAllList();
-          if (!this.hasPreItem(rows, section)) {
-            //判断是否有上一节
-            let newRows = [];
-            for (let i = 0; i < rows.length; i++) {
-              let moduleTrue =
-                rows[i].moduleId == section.moduleId || rows[i].moduleId == 0;
-              let chapterTrue =
-                rows[i].chapterId == section.chapterId ||
-                rows[i].chapterId == 0;
-              let sectionTrue =
-                rows[i].sectionId == section.sectionId ||
-                rows[i].sectionId == section.menuId;
-              if (moduleTrue && chapterTrue && sectionTrue) {
-                break;
-              } else {
-                if (rows[i].sectionType != 2) {
-                  newRows.push(rows[i]);
-                }
-              }
-            }
-
-            let isAllLearn = newRows.every((item) => {
-              return item.studyStatus == 1;
-            });
-
-            if (isAllLearn) {
-              this.initVideo(section);
-            } else {
-              this.clickLock = false;
-              this.$message({
-                type: "warning",
-                message: "请按顺序学习视频课程",
-              });
-            }
-          } else {
-            //第一章第一节
-            this.initVideo(section);
-          }
-        } else {
-          this.initVideo(section);
-        }
-      }
-    },
-
-    bankRecordDoNum(section) {
-      return new Promise((resolve) => {
-        this.$request
-          .bankRecordDoNum({
-            goodsId: this.goodsId,
-            gradeId: this.gradeId,
-            chapterId: section.chapterId,
-            courseId: this.courseId,
-            moduleId: 0,
-            examId: section.typeId,
-          })
-          .then((res) => {
-            resolve(res.data);
-          });
-      });
-    },
-    /**
-     * 是否有上一章节
-     */
-    hasPreItem(rows, option) {
-      let moduleId = option.moduleId;
-      let chapterId = option.chapterId;
-      let sectionId = option.sectionId;
-      let index = 0;
-
-      for (let i = 0; i < rows.length; i++) {
-        if (
-          rows[i].moduleId == moduleId &&
-          rows[i].chapterId == chapterId &&
-          rows[i].sectionId == sectionId
-        ) {
-          index = i;
-          break;
-        }
-      }
-
-      if (index == 0) {
-        return false;
-      } else {
-        return true;
-      }
-    },
-    async initVideo(option) {
-      if (option.sectionType == 1 || option.sectionType == 3) {
-        //录播
-
-        let learnNum = await this.goodsTodayStudySectionNum(option);
-        let hasLearn = await this.gradeCheckGoodsStudy(option);
-        console.log(hasLearn, "hasLearn");
-        console.log(learnNum, "learnNum");
-        console.log(
-          this.goodsData.sectionMaxNum,
-          "this.goodsData.sectionMaxNum"
-        );
-        if (this.goodsData.sectionMaxNum > 0) {
-          if (learnNum >= this.goodsData.sectionMaxNum && !hasLearn) {
-            this.clickLock = false;
-            this.$message({
-              type: "warning",
-              message: `每天最多学习${this.goodsData.sectionMaxNum}节`,
-            });
-            return;
-          }
-        }
-        if (!option.recordingUrl) {
-          this.clickLock = false;
-          this.$message({
-            type: "warning",
-            message: `暂无播放地址数据`,
-          });
-          return;
-        }
-
-        if (this.playSectionId > 0) {
-          //切换视频
-          // let oldSectionId = this.playSectionId;
-          // uni.$emit("changeSection", oldSectionId);
-        }
-
-        this.playVideo(option);
-      }
-      if (option.sectionType == 2) {
-        //直播
-
-        let learnNum = await this.goodsTodayStudySectionNum(option);
-        let hasLearn = await this.gradeCheckGoodsStudy(option);
-
-        if (this.goodsData.sectionMaxNum > 0) {
-          if (learnNum >= this.goodsData.sectionMaxNum && !hasLearn) {
-            this.clickLock = false;
-            this.$message({
-              type: "warning",
-              message: `每天最多学习${this.goodsData.sectionMaxNum}节`,
-            });
-            return;
-          }
-        }
-        if (!option.liveUrl) {
-          this.clickLock = false;
-          this.$message({
-            type: "warning",
-            message: `暂无直播地址数据`,
-          });
-        }
-
-        let data = await this.studyRecordGetChannelBasicInfo(option.liveUrl);
-        if (data.watchStatus == "end" || data.watchStatus == "playback") {
-          this.clickLock = false;
-          this.$message({
-            type: "warning",
-            message: `直播已结束`,
-          });
-          return;
-        }
-
-        if (data.watchStatus == "waiting") {
-          this.clickLock = false;
-          this.$message({
-            type: "warning",
-            message: `直播未开始`,
-          });
-          return;
-        }
-
-        this.playVideo(option);
-      }
-
-      return;
-    },
-    studyRecordGetChannelBasicInfo(channelId) {
-      return new Promise((resolve) => {
-        this.$request
-          .studyRecordGetChannelBasicInfo({
-            channelId,
-          })
-          .then((res) => {
-            console.log(res, "channel");
-            resolve(res.data);
-          });
-      });
-    },
-    /**
-     * 判断是否是当前播放的节
-     */
-    isActive(section) {
-      let moduleId = section.moduleId || 0;
-      let chapterId = section.chapterId || 0;
-      let sectionId = section.sectionId || section.menuId;
-      if (
-        moduleId == this.moduleId &&
-        chapterId == this.chapterId &&
-        sectionId == this.playSectionId
-      ) {
-        return true;
-      } else {
-        return false;
-      }
-    },
-
-    async playVideo(option) {
-      if (option.sectionType == 1 || option.sectionType == 3) {
-        //录播
-
-        //设置播放的节ID
-
-        //提交保存观看历史
-        if (this.playSectionId) {
-          this.postStudyRecord(0, this.playSectionId);
-        }
-
-        this.player &&
-          this.player.HTML5.video.removeEventListener(
-            "timeupdate",
-            this.timeEvent
-          );
-        //播放视频
-        this.showRecordStatus = false; //隐藏播放记录提示
-        this.sectionItem = option;
-        console.log(option, "option");
-        this.isPlayRebuild = option.rebuild;
-        this.moduleId = option.moduleId || 0;
-        this.chapterId = option.chapterId || 0;
-        this.playSectionId = option.sectionId || option.menuId;
-        // console.log(this.moduleId, this.chapterId, this.playSectionId);
-        await this.getPhotoLastRecord();
-        this.recordObj = await this.getRecordLast();
-        this.getNoteList();
-        await this.clears();
-
-        this.vid = option.recordingUrl;
-        this.historyChatMsgList = [];
-        if (option.sectionType == 3) {
-          this.polyvLiveHistoryChatMsgList();
-        }
-        this.loadPlayerScript(this.loadPlayer);
-        setTimeout(() => {
-          this.clickLock = false;
-        }, 3000);
-        // uni.$emit("levelId", this.levelId);
-        // uni.$emit("getSection", this.menuItem);
-        // uni.$emit("isRebuild", this.isRebuild);
-      }
-      if (option.sectionType == 2) {
-        //直播
-
-        //提交保存观看历史
-        if (this.playSectionId) {
-          this.postStudyRecord(0, this.playSectionId);
-        }
-
-        this.player &&
-          this.player.HTML5.video.removeEventListener(
-            "timeupdate",
-            this.timeEvent
-          );
-        //播放视频
-        this.showRecordStatus = false; //隐藏播放记录提示
-        this.sectionItem = option;
-        console.log(option, "option");
-        this.isPlayRebuild = option.rebuild;
-        this.moduleId = option.moduleId || 0;
-        this.chapterId = option.chapterId || 0;
-        this.playSectionId = option.sectionId || option.menuId;
-        // console.log(this.moduleId, this.chapterId, this.playSectionId);
-        await this.getPhotoLastRecord();
-        this.recordObj = await this.getRecordLast();
-        this.getNoteList();
-        //设置播放的节ID
-        await this.clears();
-        this.vidzb = option.liveUrl;
-
-        this.$router.push({
-          path: "/living-room/" + option.liveUrl,
-          query: {
-            goodsId: this.goodsId,
-            courseId: this.courseId,
-            gradeId: this.gradeId,
-            orderGoodsId: this.orderGoodsId,
-            sectionId: option.sectionId || option.menuId,
-            chapterId: option.chapterId || 0,
-            moduleId: option.moduleId || 0,
-            sectionType: 2,
-          },
-        });
-        // this.loadPlayerScriptzb(this.loadPlayerzb);
-        // setTimeout(() => {
-        //   this.clickLock = false;
-        // }, 3000);
-      }
-    },
-
-    gradeCheckGoodsStudy(option) {
-      return new Promise((resolve) => {
-        this.$request
-          .gradeCheckGoodsStudy({
-            goodsId: this.goodsId,
-            gradeId: this.gradeId,
-            moduleId: option.moduleId || 0,
-            chapterId: option.chapterId || 0,
-            sectionId: option.sectionId || option.menuId,
-          })
-          .then((res) => {
-            resolve(res.data);
-          });
-      });
-    },
-    goodsTodayStudySectionNum(option) {
-      return new Promise((resolve) => {
-        this.$request
-          .goodsTodayStudySectionNum({
-            goodsId: this.goodsId,
-            gradeId: this.gradeId,
-          })
-          .then((res) => {
-            resolve(res.data);
-          });
-      });
-    },
-
-    studyRecordMenuAllList() {
-      return new Promise((resolve) => {
-        this.$request
-          .studyRecordMenuAllList({
-            courseId: this.courseId,
-            gradeId: this.gradeId,
-            goodsId: this.goodsId,
-          })
-          .then((res) => {
-            resolve(res.data);
-          });
-      });
-    },
-    loadPlayerzb() {
-      var self = this;
-      const polyvLivePlayer = window.polyvLivePlayer;
-      this.playerzb = polyvLivePlayer({
-        wrap: "#playerzb",
-        width: 810,
-        height: 455,
-        showLine: "off",
-        uid: this.uidzb,
-        vid: this.vidzb,
-      });
-
-      this.playerzb.on("s2j_onStartPlay", () => {
-        console.log("s2j_onStartPlay");
-        this.hasStart = true;
-        this.livingTimer = setInterval(self.timeEventLiving, 1000);
-      });
-
-      this.playerzb.on("s2j_onOver", () => {
-        console.log("s2j_onOver");
-        clearInterval(this.livingTimer);
-        this.hasStart = false;
-        this.$message({
-          type: "success",
-          message: "播放完毕",
-        });
-        this.postStudyRecord(1);
-      });
-    },
-    loadPlayer() {
-      var self = this;
-      const polyvPlayer = window.polyvPlayer;
-      console.log(polyvPlayer);
-      self.$request.obtainpolyvvideosign(self.vid).then((res) => {
-        console.log(res, "res2");
-        self.player = polyvPlayer({
-          wrap: "#player",
-          width: 810,
-          showLine: "off",
-          height: 455,
-          ban_history_time: "on",
-          vid: self.vid,
-          autoplay: this.autoplay,
-          ban_seek: this.isAllowSeek,
-          speed: this.playbackRate,
-          teaser_show: 1,
-          tail_show: 1,
-          hideSwitchPlayer: true,
-          watchStartTime: this.recordObj.videoCurrentTime,
-          ts: res.data.ts,
-          sign: res.data.sign,
-          // adMatter: [
-          //   {
-          //     // 广告参数详细配置
-          //     location: 1, //广告位置: 1 片头广告,2 暂停广告,3 片尾广告,4 弹窗广告
-          //     adtype: 2, //广告资源类型: 1 图片广告,2 视频广告,3 swf广告(flash播放器生效)
-          //     matterurl: "https://www.runoob.com/try/demo_source/movie.mp4", //广告资源URL
-          //     timesize: 5, //广告时长,单位:秒
-          //     skipenabled: false, //是否显示跳过按钮
-          //   },
-          //   {
-          //     // 广告参数详细配置
-          //     location: 3, //广告位置: 1 片头广告,2 暂停广告,3 片尾广告,4 弹窗广告
-          //     adtype: 2, //广告资源类型: 1 图片广告,2 视频广告,3 swf广告(flash播放器生效)
-          //     matterurl: "https://www.runoob.com/try/demo_source/movie.mp4", //广告资源URL
-          //     timesize: 5, //广告时长,单位:秒
-          //     skipenabled: false, //是否显示跳过按钮
-          //   },
-          // ],
-          playsafe: function (vid, next) {
-            next();
-          },
-        });
-
-        this.player.HTML5.video.addEventListener("timeupdate", self.timeEvent);
-        this.player.on("s2j_onPlayStart", () => {
-          //开始播放每5秒提交一次观看时间
-          this.hasStart = true;
-          clearInterval(this.postTimer);
-          this.postTimer = setInterval(() => {
-            this.postStudyRecord(0, this.playSectionId, 5);
-          }, 30000);
-          if (this.recordObj.videoCurrentTime) {
-            this.showRecordStatus = true;
-            setTimeout(() => {
-              this.showRecordStatus = false;
-            }, 5000);
-          } else {
-            //新视频直接提交一条观看记录
-            // this.postStudyRecord(0);
-            this.showRecordStatus = false;
-          }
-        });
-
-        this.player.on("s2j_onVideoPause", () => {
-          clearInterval(this.postTimer);
-        });
-
-        this.player.on("s2j_onVideoPlay", () => {
-          if (this.postTimer) {
-            this.postTimer = setInterval(() => {
-              this.postStudyRecord(0, this.playSectionId, 5);
-            }, 30000);
-          }
-        });
-
-        this.player.on("s2j_onPlayOver", () => {
-          this.hasStart = false;
-          clearInterval(this.postTimer);
-          this.$message({
-            type: "success",
-            message: "播放完毕",
-          });
-          this.postStudyRecord(1);
-        });
-      });
-    },
-
-    timeEventLiving() {
-      var polyvPlayerContext = this.playerzb;
-      if (polyvPlayerContext) {
-        this.liveDuration = this.liveDuration + 1; //每隔1秒
-        console.log(this.liveDuration);
-        if (this.liveDuration == 2) {
-          //直播第2秒拍照
-          if (
-            this.goodsPhotographConfig &&
-            this.goodsPhotographConfig.livephotograph == 1 &&
-            this.sectionItem.learning != 1 &&
-            this.photoHistoryList.length == 0
-          ) {
-            //开启直播拍照
-
-            polyvPlayerContext.j2s_pauseVideo();
-            this.openPhoto();
-          } else {
-            this.postStudyRecord();
-          }
-        }
-      }
-    },
-
-    timeEvent() {
-      let self = this;
-      var polyvPlayerContext = this.player;
-      if (polyvPlayerContext) {
-        this.playTime = polyvPlayerContext.j2s_getCurrentTime(); //播放时刻
-        //	console.log(this.playTime,789,this.photoHistoryList)
-        //判断是否需要拍照
-        if (this.photoNum > 0) {
-          this.configPhoto();
-          let photoTime = 0; //获取拍照秒数
-          for (let i = 0; i < this.photoList.length; i++) {
-            photoTime = Number(this.photoList[i]); //获取拍照秒数
-            if (photoTime < this.playTime && photoTime > this.playTime - 8) {
-              //3秒区间内才触发拍照,避免拉动滚动条
-              if (
-                this.photoHistoryList.indexOf(i) < 0 &&
-                this.sectionItem.learning != 1
-              ) {
-                //不存在拍照历史,没有重修过,没有学过,则拍照
-                //启动拍照
-                //暂停
-
-                polyvPlayerContext.j2s_pauseVideo();
-                this.photoIndex = i;
-                this.openPhoto();
-              } else {
-              }
-            }
-          }
-        }
-      }
-    },
-
-    getPhotoLastRecord() {
-      return new Promise((resolve) => {
-        let self = this;
-        let data = {
-          sectionId: parseInt(self.playSectionId),
-          goodsId: parseInt(self.goodsId),
-          courseId: parseInt(self.courseId),
-          gradeId: parseInt(self.gradeId),
-          chapterId: parseInt(self.chapterId),
-          moduleId: parseInt(self.moduleId),
-        };
-        this.$request.getPhotoLastRecord(data).then((res) => {
-          //清空历史数据
-          self.photoHistoryList = [];
-          this.photoIndex = 0;
-          self.photoList = [];
-          for (let i = 0; i < res.data.length; i++) {
-            //-2存储随机拍照数组
-            if (res.data[i].photoIndex == -2) {
-              self.photoList = res.data[i].timeInterval.split(",");
-            } else {
-              self.photoHistoryList.push(res.data[i].photoIndex);
-            }
-          }
-
-          resolve();
-        });
-      });
-    },
-
-    //拍照
-    openPhoto() {
-      var polyvPlayerContext = this.player;
-      if (polyvPlayerContext) {
-        if (this.isFullScreen()) {
-          this.exitFullscreen();
-        }
-      }
-
-      var polyvPlayerContext = this.playerzb;
-      if (polyvPlayerContext) {
-        if (this.isFullScreen()) {
-          this.exitFullscreen();
-        }
-      }
-
-      this.$nextTick(() => {
-        if (
-          (window.navigator.mediaDevices &&
-            window.navigator.mediaDevices.getUserMedia) ||
-          window.navigator.getUserMedia ||
-          window.navigator.webkitGetUserMedia ||
-          window.navigator.mozGetUserMedia
-        ) {
-          // 调用用户媒体设备, 访问摄像头
-          this.getUserMedia(
-            {
-              video: {
-                width: 400,
-                height: 400,
-              },
-            },
-            this.photographSuccess,
-            this.photographError
-          );
-        } else {
-          this.photographError();
-        }
-      });
-    },
-
-    /**
-     * 退出全屏
-     */
-    exitFullscreen() {
-      try {
-        var de = document;
-        console.log(de);
-        if (de.exitFullscreen) {
-          de.exitFullscreen();
-        } else if (de.mozCancelFullScreen) {
-          de.mozCancelFullScreen();
-        } else if (de.webkitCancelFullScreen) {
-          de.webkitCancelFullScreen();
-        }
-      } catch (err) {}
-    },
-
-    fullele() {
-      return (
-        document.fullscreenElement ||
-        document.webkitFullscreenElement ||
-        document.msFullscreenElement ||
-        document.mozFullScreenElement ||
-        null
-      );
-    },
-
-    //判断是否全屏
-    isFullScreen() {
-      return !!(document.webkitIsFullScreen || this.fullele());
-    },
-
-    //配置随机拍照时间
-    configPhoto() {
-      var polyvPlayerContext = this.player;
-      let totalVideoTime = polyvPlayerContext.j2s_getDuration();
-      let duration = polyvPlayerContext.j2s_getCurrentTime();
-      let photoNum = this.photoNum;
-      if (!this.photoConfig) {
-        this.photoConfig = true;
-        //没有历史拍照间隔数据
-        if (this.photoList.length == 0) {
-          if (totalVideoTime >= 900) {
-            //大于15分钟
-            if (photoNum == 1) {
-              //开头拍1张
-              this.photoList.push(1);
-            } else if (photoNum == 3) {
-              //拍3张
-              this.photoList.push(0); //开头拍一张
-              let centerTime = Math.floor(totalVideoTime / 2); //获取中间时间
-              let centerMinTime = centerTime - 300; //前后5分钟
-              let centerMaxTime = centerTime + 300;
-              let centerTakeTime = this.randomNum(centerMinTime, centerMaxTime);
-              this.photoList.push(centerTakeTime); //中间拍一张
-              let endMaxTime = totalVideoTime - 60;
-              let endMinTime = totalVideoTime - 300;
-              let endTakeTime = this.randomNum(endMinTime, endMaxTime);
-              this.photoList.push(endTakeTime); //最后拍一张
-            }
-          } else {
-            //小于15分钟,只拍前后各一张
-            if (photoNum == 1) {
-              //开头拍1张
-              this.photoList.push(1);
-            } else if (photoNum == 3) {
-              //拍2张
-              if (totalVideoTime <= 300) {
-                //小于5分钟
-                this.photoList.push(1); //开头拍一张
-                let endTakeTime = this.randomNum(10, totalVideoTime); //中间随机取一张
-                this.photoList.push(endTakeTime);
-              } else {
-                this.photoList.push(1); //开头拍一张
-                let endMaxTime = totalVideoTime - 60;
-                let endMinTime = totalVideoTime - 300;
-                let endTakeTime = this.randomNum(endMinTime, endMaxTime);
-                this.photoList.push(endTakeTime); //最后1-5分钟拍一张
-              }
-            }
-          }
-          console.log(this.photoList, "随机拍照时间数组11", photoNum);
-          this.postCoursePhotoRecord(true); //提交随机拍照时间数组
-        }
-        console.log(this.photoList, "随机拍照时间数组");
-        //兼容已有观看历史
-        for (let i = 0; i < this.photoList.length - 1; i++) {
-          if (
-            this.photoList[i] < duration &&
-            this.photoList[i + 1] > duration
-          ) {
-            this.photoIndex = i + 1;
-            //				console.log("我的修改了photoIndex")
-            break;
-          }
-          if (duration > this.photoList[this.photoList.length - 1]) {
-            this.photoIndex = this.photoList.length - 1; //取最后一个下标
-            //				console.log("我的修改了photoIndex")
-            break;
-          }
-        }
-      }
-    },
-    randomNum(minNum, maxNum) {
-      switch (arguments.length) {
-        case 1:
-          return parseInt(Math.random() * minNum + 1, 10);
-          break;
-        case 2:
-          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
-          break;
-        default:
-          return 0;
-          break;
-      }
-    },
-    //postTime 只提交随机时间
-    postCoursePhotoRecord(postTime = false) {
-      return new Promise((resolve, reject) => {
-        let currentTime = 0;
-        var polyvPlayerContext = this.player;
-        if (polyvPlayerContext) {
-          currentTime = polyvPlayerContext.j2s_getCurrentTime();
-        }
-        let self = this;
-        let photoIndex = self.photoIndex;
-        let data = {
-          photo: self.ossAvatarUrl,
-          sectionId: parseInt(self.playSectionId),
-          goodsId: parseInt(self.goodsId),
-          courseId: parseInt(self.courseId),
-          photoTime: parseInt(currentTime > 0 ? currentTime : 0),
-          gradeId: parseInt(self.gradeId),
-          photoIndex: postTime ? -2 : parseInt(photoIndex), //从0算起,-2只提交随机时间
-          photoNum: parseInt(self.photoNum),
-          chapterId: parseInt(self.chapterId),
-          moduleId: parseInt(self.moduleId),
-          timeInterval: postTime ? self.photoList.join(",") : "",
-        };
-        console.log("提交接口", data);
-        this.$request
-          .coursePhotoRecord(data)
-          .then((res) => {
-            console.log(res, "res");
-            resolve();
-          })
-          .catch((err) => {
-            console.log(err, "err");
-            reject();
-          });
-      });
-    },
-    /**
-     * @param {String} 直播预览
-     */
-    loadPlayerScriptzb(callback) {
-      if (!window.polyvLivePlayer) {
-        const myScript = document.createElement("script");
-        myScript.setAttribute("src", this.playerJs);
-        myScript.onload = callback;
-        document.body.appendChild(myScript);
-      } else {
-        callback();
-      }
-    },
-    loadPlayerScript(callback) {
-      if (!window.polyvPlayer) {
-        const myScript = document.createElement("script");
-        myScript.setAttribute("src", this.vodPlayerJs);
-        myScript.onload = callback;
-        document.body.appendChild(myScript);
-      } else {
-        callback();
-      }
-    },
-    clears() {
-      return new Promise((resolve, reject) => {
-        this.vid = "";
-        this.vidzb = "";
-        if (this.player) {
-          this.player.destroy();
-        }
-        if (this.playerzb) {
-          this.playerzb.destroy();
-        }
-        resolve();
-      });
-    },
-
-    /**
-     * 提交观看记录
-     */
-    postStudyRecord(status = 0, sectionId = this.playSectionId) {
-      let currentTime = 0;
-      let PlayDuration = 0;
-      var polyvPlayerContext = this.player;
-      if (polyvPlayerContext) {
-        currentTime = polyvPlayerContext.j2s_getCurrentTime(); //当前视频播放时刻
-        PlayDuration = polyvPlayerContext.j2s_realPlayVideoTime(); //本次看的时长
-      }
-      if (this.vidzb) {
-        currentTime = 2; //直播无法获取,无论开始结束都传2秒
-      }
-      let self = this;
-      console.log(this);
-      console.log(PlayDuration, "PlayDuration");
-      let data = {
-        fromPlat: 2, //来源平台 1小程序 2网站
-        photo: self.ossAvatarUrl,
-        sectionId: parseInt(this.playSectionId),
-        goodsId: parseInt(this.goodsId),
-        courseId: parseInt(this.courseId),
-        studyDuration: parseInt(PlayDuration > 0 ? PlayDuration : 0),
-        gradeId: parseInt(this.gradeId),
-        chapterId: parseInt(this.chapterId),
-        moduleId: parseInt(this.moduleId),
-        videoCurrentTime: parseInt(currentTime > 0 ? currentTime : 0),
-        orderGoodsId: parseInt(this.orderGoodsId),
-      };
-
-      console.log(data, "data");
-      if (status > 0) {
-        data.status = status;
-      }
-      this.$request
-        .studyRecord(data)
-        .then((res) => {
-          if (status > 0) {
-            //看完视频刷新父级列表
-            let rebuildObj = this.getSameObj(this.sectionItem);
-            this.refreshParentList(this.sectionItem, rebuildObj);
-          }
-
-          self.ossAvatarUrl = "";
-        })
-        .catch((err) => {
-          console.log(err);
-          this.$message({
-            type: "warning",
-            message: err.msg,
-          });
-        });
-    },
-
-    /**
-     * 获取重修列表中是否有相同对象
-     */
-    getSameObj(metaObj) {
-      let newObj = false;
-      if (this.reMenuList.length) {
-        console.log(this.reMenuList, "this.reMenuList");
-        this.reMenuList.forEach((menu) => {
-          if (menu.type == 3) {
-            let isSame = this.contrast(metaObj, menu);
-            if (isSame) {
-              newObj = isSame;
-            }
-          } else {
-            if (menu.list && menu.list.length) {
-              menu.list.forEach((menuItem) => {
-                if (menuItem.type == 1) {
-                  console.log(menuItem, metaObj);
-                  let isSame = this.contrast(metaObj, menuItem);
-                  if (isSame) {
-                    newObj = isSame;
-                  }
-                } else {
-                  if (menuItem.list && menuItem.list.length) {
-                    menuItem.list.forEach((menuChild) => {
-                      if (menuChild.type == 1) {
-                        let isSame = this.contrast(metaObj, menuChild);
-                        if (isSame) {
-                          newObj = isSame;
-                        }
-                      }
-                    });
-                  }
-                }
-              });
-            }
-          }
-        });
-
-        return newObj;
-      } else {
-        return false;
-      }
-    },
-
-    contrast(obj1, obj2) {
-      let moduleId1 = obj1.moduleId || 0;
-      let chapterId1 = obj1.chapterId || 0;
-      let sectionId1 = obj1.sectionId || obj1.menuId;
-      let moduleId2 = obj2.moduleId || 0;
-      let chapterId2 = obj2.chapterId || 0;
-      let sectionId2 = obj2.sectionId || obj2.menuId;
-      //转字符串后对比是否一致
-      return moduleId1 == moduleId2 &&
-        chapterId1 == chapterId2 &&
-        sectionId1 == sectionId2
-        ? obj2
-        : false;
-    },
-
-    /**
-     * 刷新父级列表
-     */
-    refreshParentList(sectionItem, rebuildObj) {
-      console.log(sectionItem, "sectionItem");
-      console.log(rebuildObj, "rebuildObj");
-      let self = this;
-      if (sectionItem.menuId) {
-        //最外层节有menuid
-        //普通章节目录
-        this.$request
-          .reMenuList({ courseId: this.courseId, gradeId: this.gradeId })
-          .then((res) => {
-            for (let i = 0; i < res.rows.length; i++) {
-              let item = res.rows[i];
-              if (item.type == 3) {
-                self.menuList[i].learning = item.learning;
-                self.menuList[i].rebuild = item.rebuild;
-              }
-            }
-          });
-
-        if (this.menuTab.length > 1) {
-          //有重修目录
-          this.$request
-            .reMenuList({
-              courseId: this.courseId,
-              gradeId: this.gradeId,
-              rebuild: 1,
-            })
-            .then((res) => {
-              if (res.rows.length > 0) {
-                for (let i = 0; i < res.rows.length; i++) {
-                  let item = res.rows[i];
-                  item.id = item.menuId;
-                  item.name = item.menuName;
-                  item.menuType = item.type;
-                  item.showList = false;
-                  item.list = [];
-                  item.isRebuild = 1;
-                }
-                self.reMenuList = self.reMenuList.filter((reMenu) => {
-                  //筛选剩下的选项
-                  return res.rows.find((row) => row.menuId == reMenu.menuId);
-                });
-              } else {
-                this.menuTab = [
-                  {
-                    name: "1",
-                    label: "章节目录",
-                  },
-                ];
-                this.courseTabIndex = "1";
-                self.reMenuList = [];
-              }
-            });
-        }
-      } else if (!sectionItem.moduleId) {
-        //第二层节没有moduleid
-        this.$request
-          .reSectionList({
-            chapterId: sectionItem.chapterId,
-            gradeId: this.gradeId,
-            courseId: this.courseId,
-            moduleId: 0,
-          })
-          .then((res) => {
-            let newArr = res.data.filter((item) => {
-              return item.type != 2;
-            });
-            sectionItem.parent.canLearn = newArr.every((item) => {
-              if (item.learning == 1) {
-                return true;
-              } else {
-                return false;
-              }
-            });
-            res.data.forEach((section) => {
-              section.isRebuild = 1;
-              section.parent = sectionItem.parent;
-            });
-
-            this.menuList.forEach((menu) => {
-              if (menu.menuId == sectionItem.chapterId) {
-                menu.list = res.data;
-              }
-            });
-          });
-
-        if (this.menuTab.length > 1 && rebuildObj) {
-          this.$request
-            .reSectionList({
-              chapterId: rebuildObj.chapterId,
-              gradeId: this.gradeId,
-              courseId: this.courseId,
-              moduleId: 0,
-              rebuild: 1,
-            })
-            .then((res) => {
-              let newArr = res.data.filter((item) => {
-                return item.type != 2;
-              });
-              rebuildObj.parent.canLearn = newArr.every((item) => {
-                if (item.learning == 1) {
-                  return true;
-                } else {
-                  return false;
-                }
-              });
-
-              res.data.forEach((section) => {
-                section.parent = rebuildObj.parent;
-              });
-
-              this.reMenuList.forEach((menu) => {
-                if (menu.menuId == rebuildObj.chapterId) {
-                  menu.list = res.data;
-                }
-              });
-            });
-
-          this.$request
-            .reMenuList({
-              courseId: this.courseId,
-              gradeId: this.gradeId,
-              rebuild: 1,
-            })
-            .then((res) => {
-              if (res.rows.length > 0) {
-                for (let i = 0; i < res.rows.length; i++) {
-                  let item = res.rows[i];
-                  item.id = item.menuId;
-                  item.name = item.menuName;
-                  item.menuType = item.type;
-                  item.showList = false;
-                  item.list = [];
-                  item.isRebuild = 1;
-                }
-                self.reMenuList = self.reMenuList.filter((reMenu) => {
-                  //筛选剩下的选项
-                  return res.rows.find((row) => row.menuId == reMenu.menuId);
-                });
-              } else {
-                this.menuTab = [
-                  {
-                    name: "1",
-                    label: "章节目录",
-                  },
-                ];
-                this.courseTabIndex = "1";
-                self.reMenuList = [];
-              }
-            });
-        }
-      } else {
-        //第三层节有moduleid和chapterid都有
-        this.$request
-          .reSectionList({
-            chapterId: sectionItem.chapterId,
-            gradeId: this.gradeId,
-            courseId: this.courseId,
-            moduleId: sectionItem.moduleId,
-          })
-          .then((res) => {
-            let newArr = res.data.filter((item) => {
-              return item.type != 2;
-            });
-            sectionItem.parent.canLearn = newArr.every((item) => {
-              if (item.learning == 1) {
-                return true;
-              } else {
-                return false;
-              }
-            });
-
-            res.data.forEach((section) => {
-              section.parent = sectionItem.parent;
-            });
-
-            this.menuList.forEach((menu) => {
-              if (menu.list && menu.list.length) {
-                menu.list.forEach((chapter) => {
-                  if (
-                    chapter.moduleId == sectionItem.moduleId &&
-                    chapter.chapterId == sectionItem.chapterId
-                  ) {
-                    console.log(res.data, "res.data");
-                    console.log(chapter.list, "chapter.list");
-                    chapter.list = res.data;
-                  }
-                });
-              }
-            });
-          });
-
-        if (this.menuTab.length > 1 && rebuildObj) {
-          this.$request
-            .reSectionList({
-              chapterId: rebuildObj.chapterId,
-              gradeId: this.gradeId,
-              courseId: this.courseId,
-              moduleId: rebuildObj.moduleId,
-              rebuild: 1,
-            })
-            .then((res) => {
-              let newArr = res.data.filter((item) => {
-                return item.type != 2;
-              });
-              rebuildObj.parent.canLearn = newArr.every((item) => {
-                if (item.learning == 1) {
-                  return true;
-                } else {
-                  return false;
-                }
-              });
-
-              res.data.forEach((section) => {
-                section.parent = rebuildObj.parent;
-              });
-
-              this.reMenuList.forEach((menu) => {
-                if (menu.list && menu.list.length) {
-                  menu.list.forEach((chapter) => {
-                    if (
-                      chapter.moduleId == rebuildObj.moduleId &&
-                      chapter.chapterId == rebuildObj.chapterId
-                    ) {
-                      chapter.list = res.data;
-                    }
-                  });
-                }
-              });
-            });
-
-          this.$request
-            .reMenuList({
-              courseId: this.courseId,
-              gradeId: this.gradeId,
-              rebuild: 1,
-            })
-            .then((res) => {
-              if (res.rows.length > 0) {
-                for (let i = 0; i < res.rows.length; i++) {
-                  let item = res.rows[i];
-                  item.id = item.menuId;
-                  item.name = item.menuName;
-                  item.menuType = item.type;
-                  item.showList = false;
-                  item.list = [];
-                  item.isRebuild = 1;
-                }
-                self.reMenuList = self.reMenuList.filter((reMenu) => {
-                  //筛选剩下的选项
-                  return res.rows.find((row) => row.menuId == reMenu.menuId);
-                });
-              } else {
-                this.menuTab = [
-                  {
-                    name: "1",
-                    label: "章节目录",
-                  },
-                ];
-                this.courseTabIndex = "1";
-                self.reMenuList = [];
-              }
-            });
-        }
-      }
-    },
-
-    getRecordLast() {
-      let self = this;
-      return new Promise((resolve) => {
-        let data = {
-          gradeId: Number(self.gradeId),
-          goodsId: Number(self.goodsId),
-          sectionId: Number(self.playSectionId),
-          courseId: Number(self.courseId),
-          chapterId: parseInt(self.chapterId),
-          moduleId: parseInt(self.moduleId),
-        };
-        self.$request.recordLast(data).then((res) => {
-          resolve(res.data);
-        });
-      });
-    },
-    /**
-     * 获取笔记列表
-     */
-    getNoteList() {
-      let self = this;
-      self.noteList = [];
-      let data = {
-        courseId: this.courseId,
-        gradeId: this.gradeId,
-        goodsId: this.goodsId,
-        pageNum: this.noteParams.pageNum,
-        pageSize: this.noteParams.pageSize,
-      };
-      if (this.playSectionId > 0) {
-        data.sectionId = this.playSectionId;
-      }
-      this.$request.noteList(data).then((res) => {
-        self.noteList = res.rows;
-        self.noteTotal = res.total;
-      });
-    },
-
-    noteClick(note) {
-      if (this.vid) {
-        //切换视频
-        if (this.vid == note.recordingUrl) {
-          var polyvPlayerContext = this.player;
-          if (polyvPlayerContext) {
-            polyvPlayerContext.j2s_seekVideo(note.noteSecond);
-          }
-        } else {
-          var polyvPlayerContext = this.player;
-          if (polyvPlayerContext) {
-            polyvPlayerContext.changeVid(note.recordingUrl);
-          }
-        }
-      } else {
-        var polyvPlayerContext = this.player;
-        console.log(polyvPlayerContext);
-        if (polyvPlayerContext) {
-          polyvPlayerContext.changeVid(note.recordingUrl);
-        } else {
-          this.vid = note.recordingUrl;
-          console.log(note.recordingUrl);
-          this.moduleId = note.moduleId;
-          this.chapterId = note.chapterId;
-          this.playSectionId = note.sectionId;
-          note.sectionType = 3;
-          this.loadPlayerScript(this.loadPlayer);
-        }
-      }
-      this.recordObj = { videoCurrentTime: note.noteSecond };
-    },
-    /**
-     * 展开列表
-     */
-    getMenuList() {
-      let self = this;
-      this.$request
-        .reMenuList({ courseId: this.courseId, gradeId: this.gradeId })
-        .then((res) => {
-          for (let i = 0; i < res.rows.length; i++) {
-            let item = res.rows[i];
-            item.id = item.menuId;
-            item.name = item.menuName;
-            item.menuType = item.type;
-            item.showList = false;
-            item.list = [];
-            item.parent = this.menuList;
-          }
-          self.menuList = res.rows;
-          //展开第一个
-          if (this.needOpen) {
-            for (let i = 0; i < res.rows.length; i++) {
-              if (res.rows[i].type == 1) {
-                this.menuIndex = [i];
-                this.openModule(this.menuList[i]);
-                break;
-              } else if (res.rows[i].type == 2) {
-                this.menuIndex = [i];
-                // this.needOpen = false;
-                this.openChapter(this.menuList[i]);
-                break;
-              }
-            }
-
-            //第一个是节,直接播放
-            if (self.menuList.length) {
-              if (
-                self.menuList[0].type == 3 &&
-                !this.sectionItem.recordingUrl &&
-                self.menuList[0].sectionType != 2
-              ) {
-                // this.getResource(self.menuList[0]);
-              }
-            }
-          }
-        });
-    },
-
-    getReMenuList() {
-      let self = this;
-      this.$request
-        .reMenuList({
-          courseId: this.courseId,
-          rebuild: 1,
-          gradeId: this.gradeId,
-        })
-        .then((res) => {
-          for (let i = 0; i < res.rows.length; i++) {
-            let item = res.rows[i];
-            item.id = item.menuId;
-            item.name = item.menuName;
-            item.menuType = item.type;
-            item.showList = false;
-            item.list = [];
-            item.parent = this.reMenuList;
-            item.isRebuild = 1;
-          }
-          self.reMenuList = res.rows;
-          if (self.reMenuList.length > 0) {
-            this.menuTab = [
-              {
-                name: "1",
-                label: "章节目录",
-              },
-              {
-                name: "2",
-                label: "重修目录",
-              },
-            ];
-
-            if (this.courseTabIndex == "2") {
-              return;
-            }
-            this.courseTabIndex = "1";
-          } else {
-            this.menuTab = [
-              {
-                name: "1",
-                label: "章节目录",
-              },
-            ];
-            this.courseTabIndex = "1";
-          }
-        });
-    },
-
-    /**
-     * 获取讲义权限
-     */
-    courseHandouts() {
-      if (this.goodsData.handoutsId) {
-        this.$request
-          .courseHandouts(this.goodsData.handoutsId)
-          .then((res) => {
-            this.courseHandoutsData = res.data;
-            const loadingTask = pdf.createLoadingTask(
-              this.$tools.splitImgHost(this.courseHandoutsData.handoutsUrl)
-            );
-            loadingTask.promise
-              .then((pdf) => {
-                this.numPages = pdf.numPages;
-              })
-              .catch((err) => {});
-          })
-          .catch((err) => {});
-      }
-    },
-
-    /**
-     * 获取培训项目详情
-     */
-    courseBusiness() {
-      this.$request.courseBusiness(this.goodsData.businessId).then((res) => {
-        this.businessData = res.data;
-      });
-    },
-    /**提出答疑 */
-    addAnswer() {
-      if (!this.textarea) {
-        this.$message.warning("请输入疑问内容");
-        return;
-      }
-      let data = {
-        courseId: this.courseId,
-        goodsId: this.goodsId,
-        orderGoodsId: this.orderGoodsId,
-        answerText: this.textarea,
-      };
-      this.$request.addAnswer(data).then((res) => {
-        this.textarea = "";
-        this.getAnswerList();
-      });
-    },
-    /**回复 */
-    answerBack(row) {
-      this.$prompt(`${row.realname}:${row.answerText}`, "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        inputErrorMessage: "输入不能为空",
-        inputValidator: (value) => {
-          let str = value.replace(/^ +| +$/g, "");
-          // 点击按钮时,对文本框里面的值进行验证
-          if (!str) {
-            return "输入不能为空";
-          }
-        },
-      })
-        .then(({ value }) => {
-          let data = {
-            assignUserId: row.userId,
-            assignAnswerId: row.answerId,
-            courseId: this.courseId,
-            goodsId: this.goodsId,
-            orderGoodsId: this.orderGoodsId,
-            answerText: value,
-            assignAnswerText: row.assignAnswerText,
-          };
-          this.$request.addAnswer(data).then((res) => {
-            this.getAnswerList();
-          });
-        })
-        .catch(() => {});
-    },
-    getAnswerList() {
-      let self = this;
-      this.$request
-        .answerList({ courseId: this.courseId, goodsId: this.goodsId })
-        .then((res) => {
-          let data1 = [];
-          let data2 = [];
-          let copydata2 = [];
-          res.rows.forEach((item) => {
-            if (!item.assignAnswerId) {
-              data1.push(item);
-            } else {
-              data2.push(item);
-              copydata2.push(item);
-            }
-          });
-          data2.forEach((item, index) => {
-            //回复层
-            data1.forEach((items) => {
-              //提问层
-              if (items.answerId === item.assignAnswerId) {
-                if (
-                  items.newArraysAnswerList &&
-                  items.newArraysAnswerList.length
-                ) {
-                  items.newArraysAnswerList.push(item);
-                } else {
-                  items.newArraysAnswerList = [item];
-                }
-                let indexInd = copydata2.findIndex((itemsxs) => {
-                  return itemsxs.answerId === item.answerId;
-                });
-                if (indexInd !== -1) {
-                  copydata2.splice(indexInd, 1);
-                }
-              }
-            });
-          });
-          copydata2.forEach((it) => {
-            for (let i = 0; i < data1.length; i++) {
-              let STATUS = null;
-              if (data1[i].newArraysAnswerList) {
-                STATUS = data1[i].newArraysAnswerList.some((items) => {
-                  return items.answerId === it.assignAnswerId;
-                });
-              }
-              if (STATUS) {
-                data1[i].newArraysAnswerList.push(it);
-                break;
-              }
-            }
-          });
-          self.answerList = data1.reverse();
-        });
-    },
-    courseCourseList() {
-      return new Promise((resolve) => {
-        this.param.goodsId = this.goodsId;
-        this.param.gradeId = this.gradeId;
-        this.$request.courseCourseList(this.param).then(async (res) => {
-          this.courseList.push(...res.rows);
-          if (!this.courseId) {
-            this.courseId = this.courseList[0].courseId;
-          }
-          this.param.total = res.total;
-          await this.courseChange();
-
-          resolve();
-        });
-      });
-    },
-
-    download(url, fileName) {
-      let xhr = new XMLHttpRequest();
-      xhr.open("get", url, true);
-      xhr.setRequestHeader("Content-Type", `application/pdf`);
-      xhr.responseType = "blob";
-      let that = this;
-      xhr.onload = function () {
-        if (this.status == 200) {
-          //接受二进制文件流
-          var blob = this.response;
-          that.downloadExportFile(blob, fileName);
-        }
-      };
-      xhr.send();
-    },
-
-    downloadExportFile(blob, tagFileName) {
-      let downloadElement = document.createElement("a");
-      let href = "";
-      if (typeof blob == "string") {
-        downloadElement.target = "_blank";
-      } else {
-        href = window.URL.createObjectURL(blob); //创建下载的链接
-      }
-      downloadElement.href = href;
-      downloadElement.download = tagFileName;
-      //下载后文件名
-      document.body.appendChild(downloadElement);
-      downloadElement.click(); //点击下载
-      document.body.removeChild(downloadElement); //下载完成移除元素
-      if (typeof blob != "string") {
-        window.URL.revokeObjectURL(href); //释放掉blob对象
-      }
-    },
-
-    print() {
-      document.getElementById("printIframe").contentWindow.print();
-    },
-
-    previvew(url) {
-      this.showPdf = true;
-    },
-    noteSubmit() {
-      let self = this;
-      if (!(this.playSectionId > 0)) {
-        this.$message({
-          message: "目前无播放视频",
-          type: "warning",
-        });
-        return;
-      }
-      if (!this.textareaNote) {
-        this.$message({
-          message: "请输入内容",
-          type: "warning",
-        });
-        return;
-      }
-      if (!this.gradeId) {
-        this.$message({
-          message: "暂无班级数据",
-          type: "warning",
-        });
-        return;
-      }
-      var polyvPlayerContext = this.player;
-      let noteDate = this.$tools.getZeroTime();
-      let noteSecond = polyvPlayerContext.j2s_getCurrentTime();
-      console.log(noteSecond, "noteSecond");
-      if (!noteSecond) {
-        if (noteSecond == 0) {
-          //播放结束
-          noteSecond = polyvPlayerContext.j2s_getCurrentTime();
-        }
-        if (!noteSecond) {
-          this.$message({
-            message: "视频暂未开始",
-            type: "warning",
-          });
-          return;
-        }
-      }
-      let data = {
-        gradeId: this.gradeId,
-        goodsId: this.goodsId,
-        sectionId: this.playSectionId,
-        courseId: this.courseId,
-        noteText: this.textareaNote,
-        noteDate: noteDate,
-        noteSecond: noteSecond,
-        moduleId: this.moduleId,
-        chapterId: this.chapterId,
-      };
-      this.$request.postNote(data).then((res) => {
-        this.$message({
-          message: "发布成功",
-          type: "success",
-        });
-        self.getNoteList();
-        this.textareaNote = "";
-      });
-    },
-
-    del(item) {
-      console.log(item);
-      let data = { answerId: item.answerId, status: -1 };
-      this.$request.delAnswer(data).then((res) => {
-        this.$message({
-          message: "删除成功",
-          type: "success",
-        });
-        this.getAnswerList();
-      });
-    },
-    /**
-     * 打印
-     */
-    printView(url) {
-      console.log("触发打印", url);
-      printJS({
-        printable: url,
-        type: "pdf",
-        header: null,
-        targetStyles: ["*"],
-        style: "@page {margin:0 10mm}",
-      });
-      // this.print(url);
-    },
-    // 打印方法
-    print(filePath) {
-      console.log("执行打印");
-      let iframe = document.createElement("iframe");
-      iframe.style.border = "0px";
-      iframe.style.position = "absolute";
-      iframe.style.width = "0px";
-      iframe.style.height = "0px";
-      iframe.style.right = "0px";
-      iframe.style.top = "0px";
-      iframe.setAttribute("src", filePath);
-      iframe.onload = () => {
-        iframe.contentWindow.print();
-        // setTimeout(() => {
-        //     document.body.removeChild(iframe);
-        // });
-      };
-      document.body.append(iframe);
-    },
-  },
-};
-</script>
-
-<!-- Add "scoped" attribute to limit CSS to this component only -->
-<style scoped lang="scss">
-.course-detail {
-  .section {
-    padding-bottom: 30px;
-    &__header {
-      height: 40px;
-      display: flex;
-      align-items: center;
-      padding: 0 20px;
-    }
-
-    &__body {
-      .course-info {
-        &__header {
-          .left-box {
-            width: 810px;
-            height: 455px;
-            float: left;
-            background-size: cover;
-            background-position: center center;
-            background-repeat: no-repeat;
-            position: relative;
-            .video {
-              width: 100%;
-              height: 100%;
-            }
-          }
-          .recordStyle {
-            position: absolute;
-            bottom: 90px;
-            padding: 6px 12px;
-            left: 8px;
-            background-color: rgba(0, 0, 0, 0.4);
-            color: #fff;
-            border-radius: 24px;
-            user-select: none;
-            .btn_sty {
-              cursor: pointer;
-            }
-          }
-
-          .right-box {
-            width: 462px;
-            height: 455px;
-            background: #060e1a;
-            border-radius: 0px;
-            float: right;
-
-            &__header {
-              .tabs {
-                /deep/.el-tabs__nav-wrap::after {
-                  background-color: #999;
-                }
-
-                /deep/ .el-tabs__header {
-                  margin: 0;
-                }
-
-                .label {
-                  color: #fff;
-                  height: 40px;
-                  line-height: 40px;
-                  padding: 0 20px;
-                }
-
-                .item {
-                  &__title {
-                    padding-left: 12px;
-                    height: 40px;
-                    line-height: 40px;
-                    cursor: pointer;
-                    font-size: 14px;
-                    font-family: Microsoft YaHei;
-                    font-weight: bold;
-                    color: #fff;
-
-                    .el-icon-caret-right,
-                    .el-icon-caret-bottom {
-                      color: #999;
-                    }
-                  }
-
-                  &__content {
-                    .bank-chapter {
-                      &__item {
-                        color: #fff;
-                        font-size: 14px;
-
-                        &__text {
-                          padding: 8px 8px 8px 24px;
-                          cursor: pointer;
-                          flex: 1;
-
-                          .el-icon-caret-right,
-                          .el-icon-caret-bottom {
-                            color: #999;
-                          }
-                        }
-                      }
-                    }
-
-                    .bank-section {
-                      &__item {
-                        color: #fff;
-                        font-size: 14px;
-                        display: flex;
-                        align-items: center;
-
-                        &.active {
-                          background: #132b4d;
-                          font-size: 14px;
-                          font-family: Microsoft YaHei;
-                          font-weight: bold;
-                          color: #3f8dfd;
-                        }
-
-                        &__text {
-                          flex: 1;
-                          padding: 8px 8px 8px 12px;
-                          height: 40px;
-                          display: flex;
-                          flex-direction: column;
-                          justify-content: center;
-                          cursor: pointer;
-
-                          .el-icon-caret-right,
-                          .el-icon-caret-bottom {
-                            color: #999;
-                          }
-                        }
-
-                        .test-btn {
-                          margin-left: 10px;
-                          width: 32px;
-                          height: 20px;
-                          background: #007aff;
-                          border-radius: 4px;
-                          line-height: 18px;
-                          color: #fff;
-                          text-align: center;
-                        }
-
-                        .note {
-                          margin-left: 10px;
-                          width: 32px;
-                          height: 20px;
-                          border: 1px solid #ff3b30;
-                          border-radius: 4px;
-                          line-height: 18px;
-                          color: #ff3b30;
-                          text-align: center;
-
-                          &--yellow {
-                            border-color: #ff9500;
-                            color: #ff9500;
-                          }
-
-                          &--blue {
-                            border-color: #3f8dfd;
-                            color: #3f8dfd;
-                          }
-                        }
-
-                        .during {
-                          color: #999;
-                          margin-right: 10px;
-                        }
-
-                        .btn {
-                          margin-right: 12px;
-                          width: 48px;
-                          height: 20px;
-                          border: 1px solid #ff3b30;
-                          background: #ff3b30;
-                          border-radius: 4px;
-                          line-height: 18px;
-                          color: #fff;
-                          text-align: center;
-
-                          &--green {
-                            border: 1px solid #34c759;
-                            background: #34c759;
-                          }
-                        }
-
-                        .live-btn {
-                          margin-left: 20px;
-                          width: 60px;
-                          height: 20px;
-                          border-radius: 4px;
-                          background: #eeeeee;
-                          line-height: 18px;
-                          color: #666666;
-                          text-align: center;
-
-                          &--yellow {
-                            background: #fff7eb;
-                            color: #ff9500;
-                          }
-
-                          &--blue {
-                            border-color: #ebf4ff;
-                            color: #007aff;
-                          }
-                        }
-                      }
-                    }
-                  }
-                }
-              }
-
-              .title {
-                height: 40px;
-                border-bottom: 1px solid #999;
-                color: #fff;
-
-                .select {
-                  width: 100%;
-                }
-
-                /deep/ .el-input__icon {
-                  width: 20px;
-                  height: 20px;
-                  border: 1px solid #fff;
-                  border-radius: 4px;
-                  margin-top: 10px;
-                  line-height: 20px;
-                }
-
-                /deep/ .el-input__inner {
-                  color: #fff;
-                  font-size: 16px;
-                  background: none;
-                  border: 0;
-                }
-              }
-            }
-
-            &__body {
-              height: 374px;
-              overflow-y: scroll;
-              &::-webkit-scrollbar {
-                width: 6px;
-              }
-              &::-webkit-scrollbar-track {
-                background-color: #060e1a;
-                -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;
-              }
-            }
-          }
-        }
-
-        &__body {
-          /deep/ .el-tabs__item {
-            padding: 0 20px !important;
-            height: 80px;
-            line-height: 80px;
-          }
-
-          .course-img {
-            width: 100%;
-          }
-
-          .course-menu {
-            margin-top: 25px;
-            .left-box {
-              width: 948px;
-              float: left;
-
-              &__header {
-                padding-right: 50px;
-                position: relative;
-                .item {
-                  width: auto;
-                  margin-right: 24px;
-                  font-size: 16px;
-                  font-family: Microsoft YaHei;
-                  font-weight: 400;
-                  color: #333333;
-                  background: #eeeeee;
-                  border-radius: 8px;
-                  padding: 12px;
-                  position: relative;
-
-                  &.canlearn {
-                    background: #3f8dfd;
-                    color: #fff;
-                  }
-                }
-              }
-
-              &__body {
-                .buy-note {
-                  margin-right: 50px;
-                }
-                .item {
-                  margin-top: 24px;
-                  padding: 16px;
-                  background: #eee;
-                  border-radius: 10px;
-
-                  &__title {
-                    font-size: 16px;
-                    font-family: Microsoft YaHei;
-                    font-weight: bold;
-                    color: #333333;
-
-                    .note {
-                      display: inline-block;
-                      margin-left: 20px;
-                      width: 40px;
-                      height: 24px;
-                      border: 1px solid #ff3b30;
-                      border-radius: 8px;
-                      line-height: 22px;
-                      color: #ff3b30;
-                      text-align: center;
-                    }
-                  }
-
-                  &__content {
-                    margin-top: 12px;
-                    background: #f5f7fa;
-                  }
-                }
-              }
-            }
-
-            .right-box {
-              width: 255px;
-              float: right;
-              .title {
-                font-size: 16px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                color: #333333;
-                text-shadow: 0px 6px 6px rgba(85, 158, 255, 0.08);
-                position: relative;
-
-                .more {
-                  font-size: 16px;
-                  font-family: Microsoft YaHei;
-                  font-weight: 400;
-                  color: #999999;
-                  position: absolute;
-                  right: 0;
-                }
-              }
-
-              .list {
-                .course-item {
-                }
-              }
-            }
-          }
-
-          .answer-question {
-            &__header {
-              border-bottom: 1px solid #eee;
-              .textarea-wrap {
-                background: #f9f9f9;
-                border: 1px solid #eeeeee;
-                border-radius: 8px;
-
-                .textarea {
-                  height: 100%;
-                }
-              }
-
-              .submit {
-                padding: 10px 20px;
-                border-radius: 20px;
-                text-align: center;
-                font-size: 16px;
-                margin: 10px 0;
-                float: right;
-              }
-            }
-
-            &__body {
-              .question-list {
-                &__item {
-                  padding: 20px 0;
-                  display: flex;
-
-                  &__avatar {
-                    width: 40px;
-                    height: 40px;
-                    display: table-cell;
-                    border-radius: 50%;
-                    text-align: center;
-
-                    img {
-                      display: inline-block;
-                      vertical-align: middle;
-                      max-width: 100%;
-                      max-height: 100%;
-                    }
-                  }
-
-                  &__content {
-                    flex: 1;
-                    border-bottom: 1px solid #ccc;
-                    margin-left: 10px;
-
-                    .nickname {
-                      font-size: 14px;
-                      font-family: Microsoft YaHei;
-                      font-weight: bold;
-                      color: #333333;
-                      line-height: 24px;
-                    }
-
-                    .desc {
-                      font-size: 14px;
-                      font-family: Microsoft YaHei;
-                      font-weight: 400;
-                      color: #666666;
-                      line-height: 24px;
-                    }
-
-                    .time {
-                      font-size: 14px;
-                      font-family: Microsoft YaHei;
-                      font-weight: 400;
-                      color: #999999;
-                      line-height: 24px;
-
-                      .replay {
-                        float: right;
-                        font-size: 14px;
-                        font-family: Microsoft YaHei;
-                        font-weight: 400;
-                        color: #3f8dfd;
-                        line-height: 24px;
-                        margin-right: 20px;
-                      }
-
-                      .del {
-                        float: right;
-                        cursor: pointer;
-                        font-size: 14px;
-                        font-family: Microsoft YaHei;
-                        font-weight: 400;
-                        color: #ff3b30;
-                        line-height: 24px;
-                        margin-right: 20px;
-                      }
-                    }
-
-                    .reply-list {
-                      margin: 20px 0;
-                      width: 100%;
-                      background: #f9f9f9;
-                      border-radius: 8px;
-                      padding: 0 0 0 20px;
-
-                      &__item {
-                        padding: 20px 0;
-                        display: flex;
-                        border-bottom: 1px solid #ccc;
-
-                        &:nth-last-of-type(1) {
-                          border: 0;
-                        }
-
-                        &__avatar {
-                          width: 40px;
-                          height: 40px;
-                          display: table-cell;
-                          border-radius: 50%;
-                          text-align: center;
-
-                          img {
-                            display: inline-block;
-                            vertical-align: middle;
-                            max-width: 100%;
-                            max-height: 100%;
-                          }
-                        }
-
-                        &__content {
-                          border-radius: 8px;
-                          flex: 1;
-                          margin-left: 10px;
-
-                          .nickname {
-                            font-size: 14px;
-                            font-family: Microsoft YaHei;
-                            font-weight: bold;
-                            color: #333333;
-                            line-height: 24px;
-                          }
-
-                          .desc {
-                            font-size: 14px;
-                            font-family: Microsoft YaHei;
-                            font-weight: 400;
-                            color: #666666;
-                            line-height: 24px;
-                          }
-
-                          .time {
-                            font-size: 14px;
-                            font-family: Microsoft YaHei;
-                            font-weight: 400;
-                            color: #999999;
-                            line-height: 24px;
-
-                            .reply {
-                              float: right;
-                              font-size: 14px;
-                              font-family: Microsoft YaHei;
-                              font-weight: 400;
-                              color: #3f8dfd;
-                              line-height: 24px;
-                              margin-right: 20px;
-                              cursor: pointer;
-                              user-select: none;
-                            }
-
-                            .del {
-                              cursor: pointer;
-                              margin-right: 20px;
-                              float: right;
-                              font-size: 14px;
-                              font-family: Microsoft YaHei;
-                              font-weight: 400;
-                              color: #ff3b30;
-                              line-height: 24px;
-                            }
-                          }
-                        }
-                      }
-                    }
-                  }
-                }
-              }
-            }
-          }
-
-          .lecture-notes {
-            &__content {
-              .left-box {
-                float: left;
-                width: 462px;
-
-                .textarea {
-                  border-bottom: 1px solid #eee;
-                  .submit {
-                    float: right;
-                    width: 138px;
-                    padding: 10px 0;
-                    margin: 10px 0 25px 0;
-                    border-radius: 20px;
-                    text-align: center;
-                    font-size: 16px;
-                  }
-                }
-
-                .note-list {
-                  &__content {
-                    border-bottom: 1px solid #eee;
-                    &__title {
-                      width: 216px;
-                      height: 24px;
-                      background: #ccc;
-                      border-radius: 24px;
-                      font-size: 14px;
-                      color: #666666;
-                      text-align: center;
-                      line-height: 24px;
-                      margin: 20px 0;
-                    }
-                  }
-                  &__item {
-                    display: flex;
-                    padding: 15px;
-                    .el-icon-video-play {
-                      cursor: pointer;
-                      font-size: 20px;
-                      color: #3f8dfd;
-                    }
-
-                    &__content {
-                      flex: 1;
-                      margin-left: 10px;
-
-                      .title {
-                        cursor: pointer;
-                        font-size: 14px;
-                        font-family: Microsoft YaHei;
-                        font-weight: bold;
-                        color: #3f8dfd;
-                        line-height: 24px;
-                      }
-
-                      .desc {
-                        font-size: 14px;
-                        font-family: Microsoft YaHei;
-                        font-weight: 400;
-                        color: #666666;
-                        line-height: 24px;
-                      }
-
-                      .time {
-                        font-size: 14px;
-                        font-family: Microsoft YaHei;
-                        font-weight: 400;
-                        color: #999999;
-                        line-height: 24px;
-                      }
-                    }
-                  }
-                }
-
-                .pagination {
-                  margin-top: 30px;
-                  text-align: center;
-                }
-              }
-
-              .right-box {
-                width: 786px;
-                float: right;
-
-                .lecture-list {
-                  background: #f5f7fa;
-                  border-radius: 8px;
-                  &__header {
-                    padding: 0 16px;
-                    height: 40px;
-                    line-height: 40px;
-                    font-size: 18px;
-                    font-family: Microsoft YaHei;
-                    font-weight: bold;
-                    color: #333333;
-
-                    .slide-btn {
-                      cursor: pointer;
-                      float: right;
-                      font-size: 14px;
-                      font-family: Microsoft YaHei;
-                      font-weight: 400;
-                      color: #999999;
-                    }
-                  }
-
-                  &__body {
-                    .list {
-                      &__item {
-                        border-top: 1px solid #fff;
-                        padding: 0 8px 0 16px;
-                        height: 56px;
-                        line-height: 55px;
-                        display: flex;
-                        align-items: center;
-                        .title {
-                          flex: 1;
-                          font-size: 16px;
-                          font-family: Microsoft YaHei;
-                          font-weight: 400;
-                          color: #333333;
-                        }
-
-                        .btns {
-                          .btn {
-                            cursor: pointer;
-                            display: inline-block;
-                            vertical-align: middle;
-                            width: 80px;
-                            height: 32px;
-                            background: #ffffff;
-                            border: 1px solid #3f8dfd;
-                            border-radius: 16px;
-                            text-align: center;
-                            line-height: 30px;
-                            color: #3f8dfd;
-                            margin: 0 8px;
-                          }
-                        }
-                      }
-                    }
-                  }
-
-                  &__footer {
-                    margin-top: 24px;
-                    .lecture-scan {
-                      background: #f5f7fa;
-                      border-radius: 8px;
-                      overflow: hidden;
-                      &__header {
-                        height: 40px;
-                        line-height: 40px;
-                        padding: 0 16px;
-                        font-size: 16px;
-                        font-family: Microsoft YaHei;
-                        font-weight: bold;
-                        color: #333333;
-                      }
-
-                      &__body {
-                        height: 800px;
-                        text-align: center;
-                        overflow-y: scroll;
-
-                        .iframe {
-                          width: 100%;
-                        }
-                      }
-                    }
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-
-  .take-photo {
-    /deep/ .el-dialog__header {
-      display: none;
-    }
-    /deep/ .el-dialog__body {
-      padding: 0;
-      overflow: unset;
-    }
-
-    &__close {
-      cursor: pointer;
-      position: absolute;
-      right: 0;
-      top: -28px;
-      width: 24px;
-      height: 24px;
-      line-height: 24px;
-      text-align: center;
-      color: #eee;
-      border: 1px solid #eee;
-      border-radius: 50%;
-    }
-
-    &__header {
-      height: 40px;
-      border-bottom: 1px solid #eee;
-      line-height: 40px;
-      font-size: 16px;
-      font-family: Microsoft YaHei;
-      font-weight: bold;
-      color: #333333;
-      padding-left: 24px;
-    }
-
-    &__body {
-      // height: 400px;
-      padding: 40px 24px;
-      .left-box {
-        width: 336px;
-        float: left;
-
-        .title {
-          font-size: 16px;
-          font-family: Microsoft YaHei;
-          font-weight: bold;
-          color: #ff3b30;
-          line-height: 24px;
-        }
-
-        .content {
-          font-size: 14px;
-          font-family: Microsoft YaHei;
-          font-weight: 400;
-          color: #333333;
-          line-height: 28px;
-          margin-top: 32px;
-        }
-      }
-
-      .right-box {
-        float: right;
-        width: 400px;
-        height: 400px;
-        position: relative;
-        overflow: hidden;
-        video {
-          width: 100%;
-          height: 100%;
-        }
-        .mask {
-          width: 55%;
-          height: 200px;
-          position: absolute;
-          top: 0;
-          left: 0;
-          right: 0;
-          bottom: 0;
-          margin: 30px auto 0;
-          box-shadow: 0 0 0 2000px rgba(0, 0, 0, 0.4);
-        }
-      }
-    }
-
-    &__footer {
-      height: 90px;
-      border-top: 1px solid #eee;
-      text-align: center;
-      .take {
-        display: inline-block;
-        width: 200px;
-        height: 40px;
-        padding: 0;
-        border-radius: 20px;
-        text-align: center;
-        line-height: 40px;
-        margin: 24px auto;
-      }
-    }
-  }
-
-  .info {
-    &__content {
-      height: 500px;
-      overflow-y: scroll;
-
-      .handCenter {
-        width: 600px;
-        height: 300px;
-        background: #ccc;
-      }
-
-      .upload-box {
-        display: inline-block;
-        vertical-align: top;
-
-        .el-icon-error {
-          cursor: pointer;
-          z-index: 99;
-          position: absolute;
-          left: 100%;
-          bottom: 100%;
-          font-size: 20px;
-          color: red;
-        }
-      }
-    }
-  }
-
-  .showconfirm {
-    &__content {
-      .text {
-        padding-bottom: 20px;
-        color: red;
-      }
-    }
-  }
-}
-</style>

+ 16 - 21
src/pages/course-detail/index.vue

@@ -2098,7 +2098,7 @@
           <div class="right-box">
             <img v-show="!isTaking" :src="faceUrl" alt="" />
             <video v-show="isTaking" id="video" :src="stream"></video>
-            <div class="mask"></div>
+            <div v-show="isTaking" class="mask"></div>
           </div>
         </div>
         <div class="take-photo__footer">
@@ -3217,7 +3217,6 @@ export default {
 
     await this.getGoodsDetail(); //商品详情
     this.dictList();
-
     // this.userConfirmInfoDetail().then((res) => {
     this.getbaseprofiletplists().then(async (res) => {
       // let allMenuList = await this.studyRecordMenuAllList();
@@ -3353,7 +3352,6 @@ export default {
     },
     //校验节是否有试卷
     checkSection(item) {
-      console.log(this.sectionExam, item, "00000000");
       if (this.sectionExam.length == 0) {
         return false;
       }
@@ -3574,10 +3572,11 @@ export default {
           reject(false);
         }
         if (sizeToM > 2) {
-          imageConversion.compressAccurately(file, {
+          imageConversion
+            .compressAccurately(file, {
               size: 1024 * 2,
-              width:1000,
-              height:1000
+              width: 1000,
+              height: 1000,
             })
             .then((res) => {
               res = new File([res], file.name, { type: res.type });
@@ -4884,6 +4883,11 @@ export default {
             resolve(res.data);
           })
           .catch((err) => {
+            if (err.toString().indexOf("timeout") != -1) {
+              err = {
+                msg: "拍照超时,请重新拍照",
+              };
+            }
             this.loading = false;
             this.$message({
               type: "warning",
@@ -5312,7 +5316,6 @@ export default {
      * 点击节
      */
     async getResource(section, type, flag) {
-      //type:1章卷,2节卷,3模考卷
       if (flag) {
         //节卷
         let data = this.sectionExamList.filter(
@@ -5556,7 +5559,6 @@ export default {
         }
         return;
       }
-
       if (section.type != 2) {
         if (this.clickLock) {
           return;
@@ -5575,12 +5577,11 @@ export default {
           this.clickLock = false;
           return;
         }
-
         if (this.businessData.goodsLearningOrder == 2 && !section.isRebuild) {
           //要按从头到尾顺序学习, 且不是重修课程
 
           let rows = await this.studyRecordMenuAllList();
-          if (!this.hasPreItem(rows, section)) {
+          if (this.hasPreItem(rows, section)) {
             //判断是否有上一节
             let newRows = [];
             for (let i = 0; i < rows.length; i++) {
@@ -5604,7 +5605,6 @@ export default {
             let isAllLearn = newRows.every((item) => {
               return item.studyStatus == 1;
             });
-
             if (isAllLearn) {
               this.initVideo(section);
             } else {
@@ -5661,7 +5661,6 @@ export default {
           break;
         }
       }
-
       if (index == 0) {
         return false;
       } else {
@@ -6097,7 +6096,6 @@ export default {
       var polyvPlayerContext = this.player;
       if (polyvPlayerContext) {
         this.playTime = polyvPlayerContext.j2s_getCurrentTime(); //播放时刻
-        //	console.log(this.playTime,789,this.photoHistoryList)
         //判断是否需要拍照
         if (this.photoNum > 0) {
           this.configPhoto();
@@ -6137,6 +6135,7 @@ export default {
           moduleId: parseInt(self.moduleId),
         };
         this.$request.getPhotoLastRecord(data).then((res) => {
+          console.log(res, 666);
           //清空历史数据
           self.photoHistoryList = [];
           this.photoIndex = 0;
@@ -6434,11 +6433,10 @@ export default {
           self.ossAvatarUrl = "";
         })
         .catch((err) => {
-          console.log(err);
-          this.$message({
-            type: "warning",
-            message: err.msg,
-          });
+          // this.$message({
+          //   type: "warning",
+          //   message: err.msg,
+          // });
         });
     },
 
@@ -7224,7 +7222,6 @@ export default {
             }
           });
           self.answerList = data1.reverse();
-          console.log(self.answerList, "answerList");
         });
     },
     courseCourseList() {
@@ -7232,14 +7229,12 @@ export default {
         this.param.goodsId = this.goodsId;
         this.param.gradeId = this.gradeId;
         this.$request.courseCourseList(this.param).then(async (res) => {
-          console.log(res, "resresresres");
           //获取商品双师资模板
           this.$request
             .courseTeacherList({
               goodsId: this.goodsId,
             })
             .then((res1) => {
-              console.log(res1, "res1");
               if (res1.data && res1.data.length > 0) {
                 //课程老师模板
                 let teacherTel = res1.data;

+ 50 - 98
src/pages/course-exam/index.vue

@@ -137,22 +137,6 @@
                           ></div>
                         </div>
                       </div>
-                      <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
-                        <div
-                          class="collect"
-                          @click="
-                            collect(collectList[questionIndex], questionIndex)
-                          "
-                        >
-                          <template v-if="!collectList[questionIndex]"
-                            ><i class="el-icon-star-off"></i>收藏本题
-                          </template>
-                          <template v-if="collectList[questionIndex]"
-                            ><i class="el-icon-star-on"></i>已收藏</template
-                          >
-                        </div>
-                      </div>
                     </div>
 
                     <div
@@ -260,20 +244,6 @@
                         >
                           确认答案
                         </div>
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
-                        <div
-                          class="collect"
-                          @click="
-                            collect(collectList[questionIndex], questionIndex)
-                          "
-                        >
-                          <template v-if="!collectList[questionIndex]"
-                            ><i class="el-icon-star-off"></i>收藏本题</template
-                          >
-                          <template v-if="collectList[questionIndex]"
-                            ><i class="el-icon-star-on"></i>已收藏</template
-                          >
-                        </div>
                       </div>
                     </div>
 
@@ -363,22 +333,6 @@
                           ></div>
                         </div>
                       </div>
-                      <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
-                        <div
-                          class="collect"
-                          @click="
-                            collect(collectList[questionIndex], questionIndex)
-                          "
-                        >
-                          <template v-if="!collectList[questionIndex]"
-                            ><i class="el-icon-star-off"></i>收藏本题</template
-                          >
-                          <template v-if="collectList[questionIndex]"
-                            ><i class="el-icon-star-on"></i>已收藏</template
-                          >
-                        </div>
-                      </div>
                     </div>
 
                     <div
@@ -931,22 +885,6 @@
                           </el-tab-pane>
                         </el-tabs>
                       </div>
-                      <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div>+ -->
-                        <div
-                          class="collect"
-                          @click="
-                            collect(collectList[questionIndex], questionIndex)
-                          "
-                        >
-                          <template v-if="!collectList[questionIndex]"
-                            ><i class="el-icon-star-off"></i>收藏本题</template
-                          >
-                          <template v-if="collectList[questionIndex]"
-                            ><i class="el-icon-star-on"></i>已收藏</template
-                          >
-                        </div>
-                      </div>
                     </div>
 
                     <div
@@ -1045,24 +983,15 @@
                         >
                           确认答案
                         </div>
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
-                        <div
-                          class="collect"
-                          @click="
-                            collect(collectList[questionIndex], questionIndex)
-                          "
-                        >
-                          <template v-if="!collectList[questionIndex]"
-                            ><i class="el-icon-star-off"></i>收藏本题</template
-                          >
-                          <template v-if="collectList[questionIndex]"
-                            ><i class="el-icon-star-on"></i>已收藏</template
-                          >
-                        </div>
                       </div>
                     </div>
                   </template>
                 </div>
+                <Collection-box
+                  :param="param"
+                  @sumit="getCollectInfo(current)"
+                  :showT="!collectList[current]"
+                ></Collection-box>
               </div>
               <div class="right-box">
                 <div class="right-box__header">
@@ -1171,7 +1100,7 @@
           <div class="right-box">
             <img v-show="!isTaking" :src="faceUrl" alt="" />
             <video v-show="isTaking" id="video" :src="stream"></video>
-            <div class="mask"></div>
+            <div v-show="isTaking" class="mask"></div>
           </div>
         </div>
         <div class="take-photo__footer">
@@ -1208,6 +1137,7 @@
 import Footer from "@/components/footer/index";
 import Header from "@/components/header/index";
 import ToolBar from "@/components/toolbar/index";
+import CollectionBox from "@/components/common/CollectionBox.vue";
 import { mapMutations } from "vuex";
 export default {
   name: "BankExplain",
@@ -1215,6 +1145,7 @@ export default {
     Footer,
     Header,
     ToolBar,
+    CollectionBox,
   },
   data() {
     return {
@@ -1536,7 +1467,17 @@ export default {
       this.loading = true;
       let compareFaceData = await this.faceRecognition();
       this.compareFaceData = compareFaceData;
-      if (compareFaceData == 0) {
+      if (compareFaceData >= 80) {
+        this.$message({
+          type: "success",
+          message: "拍照成功",
+        });
+        const waitYS = await this.imageInfos();
+        this.loading = false;
+        this.takePhotoModal = false;
+        this.isTaking = true;
+        this.postStudyRecord(); //提交记录
+      } else {
         this.$message({
           type: "warning",
           message: "人脸匹配不通过,请重新拍照上传",
@@ -1546,21 +1487,7 @@ export default {
           this.loading = false;
           this.reTake();
         }, 2000);
-        return;
       }
-
-      if (compareFaceData >= 80) {
-        const waitYS = await this.imageInfos();
-        this.postStudyRecord(); //提交记录
-      }
-
-      this.$message({
-        type: "success",
-        message: "拍照成功",
-      });
-      this.loading = false;
-      this.takePhotoModal = false;
-      this.isTaking = true;
     },
 
     postStudyRecord() {
@@ -1675,6 +1602,11 @@ export default {
             resolve(res.data);
           })
           .catch((err) => {
+            if (err.toString().indexOf("timeout") != -1) {
+              err = {
+                msg: "拍照超时,请重新拍照",
+              };
+            }
             this.loading = false;
             this.$message({
               type: "warning",
@@ -1797,8 +1729,8 @@ export default {
           })
           .then((res) => {
             this.recordId = res.data;
-
-            if (self.needPhoto) {
+            //  节不需要拍照
+            if (self.needPhoto && this.type != 2) {
               this.openPhoto();
             } else {
               if (this.lastTime) {
@@ -2597,6 +2529,21 @@ export default {
         .catch((err) => {});
     },
   },
+  computed: {
+    param() {
+      return {
+        examId: this.examId,
+        questionId: this.questionList[this.current]
+          ? this.questionList[this.current].questionId
+          : undefined,
+        goodsId: this.goodsId,
+        orderGoodsId: this.orderGoodsId,
+        collectQuestionId: this.collectList[this.current]
+          ? this.collectList[this.current].collectQuestionId
+          : undefined,
+      };
+    },
+  },
 };
 </script>
 
@@ -2618,6 +2565,7 @@ export default {
         &__body {
           border: 1px solid #eee;
           .left-box {
+            position: relative;
             float: left;
             width: 970px;
             min-height: 630px;
@@ -2672,7 +2620,7 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
-
+                  text-align: justify;
                   /deep/ img {
                     max-width: 100% !important;
                   }
@@ -2691,7 +2639,8 @@ export default {
                   }
 
                   .question-list {
-                    padding: 24px 0 0 24px;
+                    padding: 24px 0 24px 24px;
+                    border-bottom: 1px solid #eee;
                     .checkbox,
                     .radio {
                       cursor: pointer;
@@ -2797,9 +2746,9 @@ export default {
 
                   .answer-list {
                     height: 40px;
-                    border-top: 1px solid #eee;
+                    // border-top: 1px solid #eee;
                     border-bottom: 1px solid #eee;
-                    margin-top: 24px;
+                    // margin-top: 24px;
                     display: flex;
                     align-items: center;
                     justify-content: space-between;
@@ -2865,6 +2814,9 @@ export default {
                       }
                     }
                   }
+                  .question {
+                    padding-bottom: 58px;
+                  }
                 }
 
                 &__btns {

+ 79 - 49
src/pages/goods-detail/bank-detail.vue

@@ -162,7 +162,7 @@
                                         v-for="(
                                           section, sectionIndex
                                         ) in item.list"
-                                        :key="sectionIndex"
+                                        :key="sectionIndedialogx"
                                       >
                                         <div class="bank-section__item__text">
                                           {{ section.examName }}
@@ -324,7 +324,10 @@
               class="progress"
               :text-inside="true"
               :stroke-width="26"
-              :percentage="70"
+              :percentage="
+                toFixed((questionOverNum(true) / questionList.length) * 100) ||
+                0
+              "
             ></el-progress>
             <div class="text">
               已完成<span>{{ questionOverNum(true) }}</span
@@ -391,9 +394,6 @@
                     ></div>
                   </div>
                 </div>
-                <div class="question__btns">
-                  <div class="collect" @click="collect">收藏本题</div>
-                </div>
               </div>
               <div
                 class="question"
@@ -469,7 +469,6 @@
                   >
                     确认答案
                   </div>
-                  <div class="collect" @click="collect">收藏本题</div>
                 </div>
               </div>
               <div
@@ -499,8 +498,12 @@
                     <div
                       class="radio"
                       :class="{
-                        right: index == (question.ques == 1 ? 0 : 1) || index != question.ans,
-                        wrong: index == (question.ques == 1 ? 0 : 1) && question.ques != question.ans
+                        right:
+                          index == (question.ques == 1 ? 0 : 1) ||
+                          index != question.ans,
+                        wrong:
+                          index == (question.ques == 1 ? 0 : 1) &&
+                          question.ques != question.ans,
                       }"
                       v-for="(item, index) in judge"
                       :key="index"
@@ -524,9 +527,6 @@
                     ></div>
                   </div>
                 </div>
-                <div class="question__btns">
-                  <div class="collect" @click="collect">收藏本题</div>
-                </div>
               </div>
               <div
                 class="question"
@@ -755,11 +755,14 @@
                               class="radio"
                               :class="{
                                 right:
-                                  index == (question.ques[jsonIndex] == 1 ? 0 : 1) ||
+                                  index ==
+                                    (question.ques[jsonIndex] == 1 ? 0 : 1) ||
                                   index != question.ans[jsonIndex],
                                 wrong:
-                                  index == (question.ques[jsonIndex] == 1 ? 0 : 1) &&
-                                  question.ques[jsonIndex] != question.ans[jsonIndex],
+                                  index ==
+                                    (question.ques[jsonIndex] == 1 ? 0 : 1) &&
+                                  question.ques[jsonIndex] !=
+                                    question.ans[jsonIndex],
                               }"
                               v-for="(item, index) in judge"
                               :key="index"
@@ -772,10 +775,14 @@
                             v-if="question.ques[jsonIndex]"
                           >
                             <div class="answer-list__left">
-                              正确答案:{{ ast[question.ans[jsonIndex] == 1 ? 0 : 1] }}
+                              正确答案:{{
+                                ast[question.ans[jsonIndex] == 1 ? 0 : 1]
+                              }}
                             </div>
                             <div class="answer-list__left">
-                              我的答案:{{ ast[question.ques[jsonIndex] == 1 ? 0 : 1] }}
+                              我的答案:{{
+                                ast[question.ques[jsonIndex] == 1 ? 0 : 1]
+                              }}
                             </div>
                           </div>
                           <div
@@ -900,9 +907,6 @@
                     </el-tab-pane>
                   </el-tabs>
                 </div>
-                <div class="question__btns">
-                  <div class="collect" @click="collect">收藏本题</div>
-                </div>
               </div>
               <div
                 class="question"
@@ -981,7 +985,6 @@
                   >
                     确认答案
                   </div>
-                  <div class="collect" @click="collect">收藏本题</div>
                 </div>
               </div>
             </template>
@@ -1044,8 +1047,13 @@
     <ToolBar></ToolBar>
     <Footer></Footer>
     <!-- 规格选择 -->
-    <index-sku-dialog :skuModal.sync="skuModal" :specTemplateId="goodsDetail.specTemplateId" :isCarOrBuy="isCarOrBuy"
-      @toShopCart='getAddCar($event)' @togoBuy="togoBuy($event)"></index-sku-dialog>
+    <index-sku-dialog
+      :skuModal.sync="skuModal"
+      :specTemplateId="goodsDetail.specTemplateId"
+      :isCarOrBuy="isCarOrBuy"
+      @toShopCart="getAddCar($event)"
+      @togoBuy="togoBuy($event)"
+    ></index-sku-dialog>
   </div>
 </template>
 
@@ -1054,7 +1062,7 @@ import Footer from "@/components/footer/index";
 import Header from "@/components/header/index";
 import ToolBar from "@/components/toolbar/index";
 import GoodsItem from "@/components/goodsItem/index";
-import IndexSkuDialog from '@/components/goodsItem/IndexSkuDialog.vue'
+import IndexSkuDialog from "@/components/goodsItem/IndexSkuDialog.vue";
 import { mapMutations } from "vuex";
 export default {
   name: "GoodsDetail",
@@ -1139,6 +1147,19 @@ export default {
   },
   methods: {
     ...mapMutations(["setCurrentRouter", "getCartCount"]),
+    toFixed(num) {
+      if (num) {
+        let str = String(num).indexOf(".");
+
+        if (str != -1) {
+          return +num.toFixed(2);
+        } else {
+          return num;
+        }
+      } else {
+        return 0;
+      }
+    },
     toGoodsDetail(item) {
       this.$router.push({
         path: "/bank-detail/" + item.goodsId,
@@ -1241,11 +1262,19 @@ export default {
      */
     judgeSelect(question, questionIndex, index) {
       if (question.ques) return;
-      this.$set(this.questionList[questionIndex], "ques", index == 0 ? '1' : '0');
+      this.$set(
+        this.questionList[questionIndex],
+        "ques",
+        index == 0 ? "1" : "0"
+      );
     },
     judgeSelectChild(questionIndex, jsonIndex, index) {
       if (this.questionList[questionIndex].ques[jsonIndex]) return;
-      this.$set(this.questionList[questionIndex].ques, jsonIndex, index == 0 ? '1' : '0');
+      this.$set(
+        this.questionList[questionIndex].ques,
+        jsonIndex,
+        index == 0 ? "1" : "0"
+      );
     },
 
     /**
@@ -1764,13 +1793,13 @@ export default {
       }
       // 判断有没有规格选择
       if (this.goodsDetail.specTemplateId) {
-        this.isCarOrBuy = 2
+        this.isCarOrBuy = 2;
         // this.skuModal = true
-        this.getSpecDetail()
-        return
+        this.getSpecDetail();
+        return;
       }
 
-      this.toPayment(this.goodsDetail)
+      this.toPayment(this.goodsDetail);
     },
     toPayment(goodsDetail) {
       // let selectGoodsList = JSON.parse(JSON.stringify([this.goodsDetail]));
@@ -1781,7 +1810,7 @@ export default {
       });
     },
     togoBuy(skuItem) {
-      this.toPayment(skuItem)
+      this.toPayment(skuItem);
     },
     addCart() {
       if (!this.$tools.isLogin()) {
@@ -1792,14 +1821,14 @@ export default {
         return;
       }
       // 判断有没有规格选择
-			if (this.goodsDetail.specTemplateId) {
-				this.isCarOrBuy = 1
-				// this.skuModal = true
-        this.getSpecDetail()
-				return
-			}
-
-      this.getAddCar(this.goodsId)
+      if (this.goodsDetail.specTemplateId) {
+        this.isCarOrBuy = 1;
+        // this.skuModal = true
+        this.getSpecDetail();
+        return;
+      }
+
+      this.getAddCar(this.goodsId);
     },
     getAddCar(goodsId) {
       this.$request
@@ -1821,23 +1850,24 @@ export default {
         });
     },
     getSpecDetail() {
-			this.$axios({
-				url: `/app/common/spec/${this.goodsDetail.specTemplateId}`,
-				method: 'get',
-				noToken: true
-			}).then((res) => {
+      this.$axios({
+        url: `/app/common/spec/${this.goodsDetail.specTemplateId}`,
+        method: "get",
+        noToken: true,
+      })
+        .then((res) => {
           if (res.data) {
-            this.skuModal = true
+            this.skuModal = true;
           } else {
             if (this.isCarOrBuy == 1) {
-              this.getAddCar(this.goodsId)
+              this.getAddCar(this.goodsId);
             } else {
-              this.toPayment(this.goodsDetail)
+              this.toPayment(this.goodsDetail);
             }
-
           }
-			}).catch(() => {})
-		},
+        })
+        .catch(() => {});
+    },
     /**
      * 获取商品详情
      */

+ 6 - 1
src/pages/live-detail/index.vue

@@ -1825,7 +1825,7 @@
           <div class="right-box">
             <img v-show="!isTaking" :src="faceUrl" alt="" />
             <video v-show="isTaking" id="video" :src="stream"></video>
-            <div class="mask"></div>
+            <div  v-show="isTaking" class="mask"></div>
           </div>
         </div>
         <div class="take-photo__footer">
@@ -4390,6 +4390,11 @@ export default {
           })
           .catch((err) => {
             this.loading = false;
+            if(err.toString().indexOf('timeout')!=-1){
+              err = {
+                msg:'拍照超时,请重新拍照'
+              }
+            }
             this.$message({
               type: "warning",
               message: err.msg,

+ 5 - 5
src/pages/mock-exam-all-explain/index.vue

@@ -113,7 +113,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -202,7 +202,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -278,7 +278,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -652,7 +652,7 @@
                         </el-tabs>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -694,7 +694,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                   </template>

+ 5 - 5
src/pages/mock-exam-wrong-explain/index.vue

@@ -113,7 +113,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -202,7 +202,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -278,7 +278,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -652,7 +652,7 @@
                         </el-tabs>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -694,7 +694,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                   </template>

+ 37 - 709
src/pages/person-center/my-bank/bank-detailCopy/index.vue

@@ -3,8 +3,13 @@
     <section class="section">
       <div class="section__body">
         <div class="left-box">
-          <el-tabs v-model="activeName" @tab-click="tabChange">
-            <el-tab-pane label="全部" name="0">
+          <el-tabs v-model="activeName" @tab-click="goodsBank">
+            <el-tab-pane
+              v-for="tab in newList"
+              :key="tab.paperId"
+              :label="tab.paperName"
+              :name="tab.paperId + ''"
+            >
               <div class="goods-menu">
                 <div class="goods-menu__body">
                   <div
@@ -330,433 +335,8 @@
                 </div>
               </div>
             </el-tab-pane>
-            <el-tab-pane
-              v-for="(items, indexs) in newList"
-              :key="indexs"
-              :label="items.paperName"
-              :name="items.paperId + ''"
-            >
-              <div
-                v-for="(item, index) in examListNew"
-                :key="index"
-                class="_content"
-              >
-                <div class="bank-section">
-                  <div class="bank-section__item">
-                    <div class="bank-section__item__text">
-                      <span style="margin-right: 8px; color: #a7b0b8">●</span>
-                      {{ item.examName }}
-                      <span v-if="item.newRecordStatus" class="upStudyStyle"
-                        >上次做到</span
-                      >
-                    </div>
-                    <div style="width: auto; padding: 0px 14px" class="btn_div">
-                      <!-- 正确率
-                              <span style="color: rgb(52, 216, 71)"
-                                >{{
-                                  computedNums(
-                                    item.doQuestionNum,
-                                    item.questionNum
-                                  )
-                                }}%</span
-                              > -->
-                      <span style="margin-left: 6px">题目数: </span
-                      ><span style="color: blue">{{
-                        item.doQuestionNum || 0
-                      }}</span>
-                      / {{ item.questionNum || 0 }}
-                    </div>
-                    <el-button
-                      v-if="item.recordStatus == -1"
-                      type="primary"
-                      @click="toDo(item, 0, 0)"
-                      class="btn"
-                      >开始做题</el-button
-                    >
-                    <el-button
-                      v-if="item.recordStatus == 0 && item.doType == 1"
-                      type="primary"
-                      @click="continueDo(item, 0, 0)"
-                      class="btn"
-                      >继续做题</el-button
-                    >
-
-                    <el-button
-                      v-if="
-                        item.recordStatus == 1 ||
-                        (item.recordStatus == 0 && item.doType == 2)
-                      "
-                      :disabled="
-                        item.answerNum > 0 && item.doNum >= item.answerNum
-                      "
-                      type="primary"
-                      @click="doRepeat(item, 0, 0)"
-                      class="btn"
-                      >重新做题</el-button
-                    >
-                  </div>
-                </div>
-              </div>
-            </el-tab-pane>
-            <!-- <el-tab-pane label="收藏题集" name="-1">
-              <div class="goods-collect">
-                <div class="goods-collect__header">
-                  <div class="selects">
-                    <div class="selects__item">
-                      <el-select
-                        placeholder="请选择"
-                        v-model="collectSelect"
-                        @change="getCollectData"
-                        clearable
-                        @clear="getWrongData"
-                      >
-                        <el-option
-                          v-for="(item, index) in selectList"
-                          :key="index"
-                          :label="item.paperName"
-                          :value="item.paperId"
-                        ></el-option>
-                      </el-select>
-                    </div>
-                  </div>
-
-                  <div class="tabs">
-                    <el-tabs v-model="collectName" @tab-click="getCollectData">
-                      <el-tab-pane label="试卷归类" name="1"></el-tab-pane>
-                      <el-tab-pane label="题型归类" name="2"></el-tab-pane>
-                    </el-tabs>
-                  </div>
-                </div>
-
-                <div class="goods-collect__body">
-                  <div class="box">
-                    <div class="title">收藏统计</div>
-                    <div class="circle">
-                      <el-progress
-                        type="circle"
-                        :width="160"
-                        :stroke-width="12"
-                        color="#FFC53D"
-                        :format="() => collectTotal || '0'"
-                        :percentage="25"
-                      ></el-progress>
-                    </div>
-                  </div>
-                  <div class="list" v-if="collectName == '1'">
-                    <div
-                      class="list__item"
-                      v-for="(item, index) in collectExamList"
-                      :key="index"
-                    >
-                      <div class="title">
-                        {{ item.examName }}
-                      </div>
-                      <div class="content clearfix">
-                        <div class="left">
-                          收藏题<span class="red">{{ item.questionNum }}</span>
-                        </div>
-                        <div class="right">
-                          <el-button
-                            type="primary"
-                            @click="
-                              go('/subject/collect-bank/' + item.examId, {
-                                orderGoodsId: orderGoodsId,
-                              })
-                            "
-                            round
-                            plain
-                            class="btn"
-                            >重做</el-button
-                          >
-                          <el-button
-                            type="primary"
-                            @click="
-                              go('/subject/collect-bank/' + item.examId, {
-                                explain: 1,
-                                orderGoodsId: orderGoodsId,
-                              })
-                            "
-                            round
-                            plain
-                            class="btn"
-                            >解析</el-button
-                          >
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-
-                  <div class="list" v-if="collectName == '2'">
-                    <div
-                      class="list__item"
-                      v-for="(item, index) in collectTypeList"
-                      :key="index"
-                    >
-                      <div class="title">
-                        <template v-if="item.type == 1">单选题</template>
-                        <template v-if="item.type == 2">多选题</template>
-                        <template v-if="item.type == 3">判断题</template>
-                        <template v-if="item.type == 4">案例题</template>
-                        <template v-if="item.type == 5">简答题</template>
-                      </div>
-                      <div class="content clearfix">
-                        <div class="left">
-                          收藏题<span class="red">{{ item.num }}</span>
-                        </div>
-                        <div class="right">
-                          <el-button
-                            type="primary"
-                            @click="
-                              go('/subject/collect-type-bank/' + item.type, {
-                                orderGoodsId: orderGoodsId,
-                              })
-                            "
-                            round
-                            plain
-                            class="btn"
-                            >重做</el-button
-                          >
-                          <el-button
-                            type="primary"
-                            @click="
-                              go('/subject/collect-type-bank/' + item.type, {
-                                explain: 1,
-                                orderGoodsId: orderGoodsId,
-                              })
-                            "
-                            round
-                            plain
-                            class="btn"
-                            >解析</el-button
-                          >
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </el-tab-pane>
-            <el-tab-pane label="错题集" name="-2">
-              <div class="goods-collect">
-                <div class="goods-collect__header">
-                  <div class="selects">
-                    <div class="selects__item">
-                      <el-select
-                        placeholder="请选择试卷类型"
-                        v-model="wrongSelect"
-                        clearable
-                        @clear="getWrongData"
-                        @change="getWrongData"
-                      >
-                        <el-option
-                          v-for="(item, index) in selectList"
-                          :key="index"
-                          :label="item.paperName"
-                          :value="item.paperId"
-                        ></el-option>
-                      </el-select>
-                    </div>
-                  </div>
-
-                  <div class="tabs">
-                    <el-tabs v-model="wrongName" @tab-click="getWrongData">
-                      <el-tab-pane label="试卷归类" name="1"></el-tab-pane>
-                      <el-tab-pane label="题型归类" name="2"></el-tab-pane>
-                    </el-tabs>
-                  </div>
-                </div>
-
-                <div class="goods-collect__body">
-                  <div class="box">
-                    <div class="title">错题统计</div>
-                    <div class="circle">
-                      <el-progress
-                        type="circle"
-                        :width="160"
-                        :stroke-width="12"
-                        color="#F5222D"
-                        :format="() => wrongTotal || '0'"
-                        :percentage="25"
-                      ></el-progress>
-                    </div>
-                  </div>
-                  <div class="list" v-if="wrongName == '1'">
-                    <div
-                      class="list__item"
-                      v-for="(item, index) in wrongExamList"
-                      :key="index"
-                    >
-                      <div class="title">
-                        {{ item.examName }}
-                      </div>
-                      <div class="content clearfix">
-                        <div class="left">
-                          错题数<span class="red">{{
-                            item.wrongQuestionNum
-                          }}</span>
-                        </div>
-                        <div class="right">
-                          <el-button
-                            type="primary"
-                            round
-                            plain
-                            class="btn"
-                            @click="
-                              go('/subject/wrong-bank/' + item.examId, {
-                                orderGoodsId: orderGoodsId,
-                              })
-                            "
-                            >重做</el-button
-                          >
-                          <el-button
-                            type="primary"
-                            round
-                            plain
-                            class="btn"
-                            @click="
-                              go('/subject/wrong-bank/' + item.examId, {
-                                explain: 1,
-                                orderGoodsId: orderGoodsId,
-                              })
-                            "
-                            >解析</el-button
-                          >
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-
-                  <div class="list" v-if="wrongName == '2'">
-                    <div
-                      class="list__item"
-                      v-for="(item, index) in wrongTypeList"
-                      :key="index"
-                    >
-                      <div class="title">
-                        <template v-if="item.type == 1">单选题</template>
-                        <template v-if="item.type == 2">多选题</template>
-                        <template v-if="item.type == 3">判断题</template>
-                        <template v-if="item.type == 4">案例题</template>
-                        <template v-if="item.type == 5">简答题</template>
-                      </div>
-                      <div class="content clearfix">
-                        <div class="left">
-                          错题数<span class="red">{{ item.num }}</span>
-                        </div>
-                        <div class="right">
-                          <el-button
-                            type="primary"
-                            round
-                            plain
-                            class="btn"
-                            @click="
-                              go('/subject/wrong-type-bank/' + item.type, {
-                                orderGoodsId: orderGoodsId,
-                              })
-                            "
-                            >重做</el-button
-                          >
-                          <el-button
-                            type="primary"
-                            round
-                            plain
-                            class="btn"
-                            @click="
-                              go('/subject/wrong-type-bank/' + item.type, {
-                                explain: 1,
-                                orderGoodsId: orderGoodsId,
-                              })
-                            "
-                            >解析</el-button
-                          >
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </el-tab-pane> -->
           </el-tabs>
         </div>
-        <div v-if="false" class="right-box">
-          <div class="right-box__header">
-            <div class="title">
-              <div
-                @click="
-                  go('/person-center/my-bank/bank-statistics/' + goodsId, {
-                    orderGoodsId: orderGoodsId,
-                  })
-                "
-              >
-                做题统计>
-              </div>
-            </div>
-            <div class="content">
-              <div class="left">
-                <div class="title">总进度</div>
-                <div class="note">
-                  {{
-                    goodsCount.totalNum > 0
-                      ? (
-                          (goodsCount.doNum / goodsCount.totalNum) *
-                          100
-                        ).toFixed(
-                          (goodsCount.doNum / goodsCount.totalNum) * 100 == 100
-                            ? 0
-                            : 1
-                        )
-                      : 0
-                  }}%
-                </div>
-              </div>
-              <div class="right">
-                <div class="title"><span class="blue">已答题</span>/未答题</div>
-                <div class="note">
-                  <span class="blue">{{ goodsCount.doNum }}</span
-                  >/{{ goodsCount.totalNum - goodsCount.doNum }}
-                </div>
-              </div>
-            </div>
-          </div>
-          <div
-            class="right-box__body"
-            v-if="recommendList.goodsList && recommendList.goodsList.length"
-          >
-            <div class="title">
-              推荐题库
-              <span class="more" @click="go('/bank-list')">更多></span>
-            </div>
-            <ul class="list">
-              <li
-                class="course-item"
-                v-for="(itemy, index) in compyRecommend(
-                  recommendList.goodsList
-                )"
-                :key="index"
-              >
-                <GoodsItem :item="itemy"></GoodsItem>
-                <!-- <div
-                  class="course-item__img"
-                  :style="`background-image:url(${$tools.splitImgHost(
-                    itemy.coverUrl,
-                    true
-                  )})`"
-                >
-                  <div class="note" v-if="itemy.year">{{ itemy.year }}</div>
-                </div>
-                <div class="course-item__title">
-                  {{ itemy.goodsName }}
-                </div>
-                <div class="course-item__desc">
-                  <div class="price">¥{{ itemy.standPrice }}</div>
-                  <a class="add" @click.stop="addCart(true, itemy.goodsId)"
-                    >加购物车</a
-                  >
-                </div> -->
-              </li>
-            </ul>
-          </div>
-        </div>
       </div>
     </section>
   </div>
@@ -779,9 +359,7 @@ export default {
       wrongName: "1",
       goodsId: "",
       goodsDetail: {},
-      goodsCount: {},
       bankList: [],
-      selectList: [],
       collectSelect: "",
       wrongSelect: "",
       hasClickList: [],
@@ -791,7 +369,6 @@ export default {
       wrongExamList: [],
       collectTotal: 0,
       wrongTotal: 0,
-      recommendList: [],
       needOpen: true, //是否需要打开第一章节
       recordItem: null,
     };
@@ -826,22 +403,20 @@ export default {
       this.recordItem = recordItem;
       this.orderGoodsId = data.orderGoodsId;
       this.goodsId = data.goodsId;
+      this.activeName = "0";
       await this.getExamType(data.goodsId);
-      this.goodsBankQuestionNum();
       if (this.recordItem) {
         this.getRecordItem();
       } else {
         await this.goodsBank();
       }
-      this.getDetail();
-      this.examaperList();
-      this.activeName = "0";
     },
     getRecordItem() {
       this.$request
         .goodsBank({
           orderGoodsId: this.recordItem.orderGoodsId,
           goodsId: this.recordItem.goodsId,
+          paperId: this.activeName * 1 || undefined,
         })
         .then(async (res) => {
           res.data.forEach((item) => {
@@ -990,59 +565,14 @@ export default {
     getExamType(id) {
       return new Promise((resolve, reject) => {
         this.$request.exampapergoodsExamPaper(id).then((res) => {
-          this.newList = res.data;
-          if (parseInt(this.activeName) > 0) {
-            this.tabChange({ name: this.activeName });
-          }
+          this.newList = [{ paperId: 0, paperName: "全部" }, ...res.data];
+          // if (parseInt(this.activeName) > 0) {
+          //   this.tabChange({ name: this.activeName });
+          // }
           resolve();
         });
       });
     },
-    /**
-     * 跳转
-     */
-    toGoodsDetail(item) {
-      this.$router.push({
-        path: "/bank-detail/" + item.goodsId,
-        query: {
-          orderGoodsId: item.orderGoodsId,
-        },
-      });
-    },
-    addCart(status, goodsId) {
-      this.$request
-        .addCart({ goodsId: status ? goodsId : this.goodsId })
-        .then((res) => {
-          this.$message({
-            message: "加入购物车成功",
-            type: "success",
-          });
-        })
-        .catch((err) => {
-          if (err.code == 500) {
-            this.$message({
-              message: err.msg,
-              type: "warning",
-            });
-          }
-        });
-    },
-    /**
-     * 
-     获取推荐列表
-     */
-    getRecommend() {
-      this.$request
-        .appCommonActivityRecommendList({
-          businessId: this.goodsDetail.businessId,
-          type: 2,
-        })
-        .then((res) => {
-          if (res.rows.length) {
-            this.recommendList = res.rows[0];
-          }
-        });
-    },
     go(path, query = {}) {
       console.log(path, query);
       this.$router.push({
@@ -1050,27 +580,6 @@ export default {
         query,
       });
     },
-    examaperList() {
-      this.$request.examaperList().then((res) => {
-        this.selectList = res.rows;
-      });
-    },
-
-    /**
-     * 获取用户商品统计数据
-     */
-    goodsBankQuestionNum() {
-      this.$request.goodsBankQuestionNum(this.orderGoodsId).then((res) => {
-        this.goodsCount = res.data;
-      });
-    },
-
-    getDetail() {
-      this.$request.commonGoodsDetail(this.goodsId).then((res) => {
-        this.goodsDetail = res.data;
-        this.getRecommend();
-      });
-    },
 
     /**
      * 获取课程目录
@@ -1081,6 +590,7 @@ export default {
           .goodsBank({
             orderGoodsId: this.orderGoodsId,
             goodsId: this.goodsId,
+            paperId: this.activeName * 1 || undefined,
           })
           .then(async (res) => {
             res.data.forEach((item) => {
@@ -1119,6 +629,7 @@ export default {
             orderGoodsId: this.orderGoodsId,
             moduleExamId: Module.majorId,
             goodsId: this.goodsId,
+            paperId: this.activeName * 1 || undefined,
           })
           .then(async (res) => {
             console.log(res, "resresres");
@@ -1152,6 +663,7 @@ export default {
             moduleExamId: moduleId,
             chapterExamId: chapter.chapterExamId || chapter.majorId,
             goodsId: this.goodsId,
+            paperId: this.activeName * 1 || undefined,
           })
           .then((res) => {
             res.data.sort((a, b) => {
@@ -1164,24 +676,24 @@ export default {
       });
     },
     // 新增用户视频学习日志
-		studyLog(courseId, moduleId, chapterId, examId) {
-			this.$axios({
-				url: '/user/study/log',
-				method: 'post',
-				data: {
-					goodsId: this.goodsId,
-					courseId: courseId,
-					moduleId: moduleId || 0,
-					chapterId: chapterId || 0,
-					sectionId: examId || 0,
-					fromPlat: 2, //来源平台 1小程序 2PC网站
-					goodsType: 2, // 商品类型 1视频2题库 3补考 4前培 5虚拟赠送题库 6直播
-					orderGoodsId: this.orderGoodsId,
-				}
-			}).then((res) => {
-				console.log('题库的用户学习日志:', res)
-			})
-		},
+    studyLog(courseId, moduleId, chapterId, examId) {
+      this.$axios({
+        url: "/user/study/log",
+        method: "post",
+        data: {
+          goodsId: this.goodsId,
+          courseId: courseId,
+          moduleId: moduleId || 0,
+          chapterId: chapterId || 0,
+          sectionId: examId || 0,
+          fromPlat: 2, //来源平台 1小程序 2PC网站
+          goodsType: 2, // 商品类型 1视频2题库 3补考 4前培 5虚拟赠送题库 6直播
+          orderGoodsId: this.orderGoodsId,
+        },
+      }).then((res) => {
+        console.log("题库的用户学习日志:", res);
+      });
+    },
     /**
      * 去做题
      */
@@ -1209,7 +721,7 @@ export default {
           orderGoodsId: this.orderGoodsId,
         },
       });
-      this.studyLog(0, moduleId, chapterId, section.examId)
+      this.studyLog(0, moduleId, chapterId, section.examId);
     },
 
     /**
@@ -1227,7 +739,7 @@ export default {
           orderGoodsId: this.orderGoodsId,
         },
       });
-      this.studyLog(0, moduleId, chapterId, section.examId)
+      this.studyLog(0, moduleId, chapterId, section.examId);
     },
 
     /**
@@ -1282,7 +794,7 @@ export default {
             },
           });
         });
-        this.studyLog(0, moduleId, chapterId, section.examId)
+      this.studyLog(0, moduleId, chapterId, section.examId);
     },
 
     /**
@@ -1422,15 +934,6 @@ export default {
       }
 
       this.hasClickList.push(e.name);
-
-      if (e.name == "-1") {
-        //收藏集
-        this.getCollectData();
-      } else if (e.name == "-2") {
-        console.log(123123123);
-        //错题集
-        this.getWrongData();
-      }
     },
   },
 };
@@ -1682,181 +1185,6 @@ export default {
           }
         }
       }
-
-      .right-box {
-        width: 300px;
-        float: right;
-
-        &__header {
-          height: 98px;
-          border-bottom: 2px solid #e4e7ed;
-
-          .title {
-            cursor: pointer;
-            height: 32px;
-            font-size: 14px;
-            font-family: Microsoft YaHei;
-            font-weight: 400;
-            color: #333333;
-            line-height: 32px;
-          }
-
-          .content {
-            height: 64px;
-            font-size: 0;
-            .left {
-              width: 50%;
-              display: inline-block;
-              border-right: 1px solid #e4e7ed;
-              .title {
-                font-size: 14px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                color: #999999;
-              }
-
-              .note {
-                font-size: 24px;
-                font-family: Microsoft YaHei;
-                font-weight: bold;
-                color: #3f8dfd;
-              }
-            }
-
-            .right {
-              text-align: center;
-              display: inline-block;
-              width: 50%;
-              .title {
-                font-size: 14px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                color: #999999;
-                .blue {
-                  color: #3f8dfd;
-                }
-              }
-
-              .note {
-                font-size: 24px;
-                font-family: Microsoft YaHei;
-                color: #999999;
-                .blue {
-                  font-size: 24px;
-                  color: #3f8dfd;
-                }
-              }
-            }
-          }
-        }
-
-        &__body {
-          .title {
-            margin-top: 15px;
-            font-size: 16px;
-            font-family: Microsoft YaHei;
-            font-weight: 400;
-            color: #333333;
-            text-shadow: 0px 6px 6px rgba(85, 158, 255, 0.08);
-            position: relative;
-
-            .more {
-              cursor: pointer;
-              font-size: 16px;
-              font-family: Microsoft YaHei;
-              font-weight: 400;
-              color: #999999;
-              position: absolute;
-              right: 0;
-            }
-          }
-
-          .list {
-            .course-item {
-              // margin: 110px 0 0;
-              // width: 300px;
-              // height: 178px;
-              // background: #ffffff;
-              // box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
-              // border-radius: 10px;
-              // position: relative;
-              // background: #fff;
-              // padding-top: 100px;
-
-              // &__img {
-              //   width: 280px;
-              //   height: 178px;
-              //   background: #ffffff;
-              //   box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
-              //   border-radius: 10px;
-              //   position: absolute;
-              //   left: 10px;
-              //   top: -78px;
-              //   background: rgba(122, 136, 246, 1);
-              //   overflow: hidden;
-              //   background: no-repeat center center;
-              //   background-size: 280px 178px;
-
-              //   .note {
-              //     width: 80px;
-              //     height: 24px;
-              //     background: #d94404;
-              //     box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
-              //     border-radius: 10px 0px 20px 0px;
-              //     text-align: center;
-              //     line-height: 24px;
-              //     color: #fff;
-              //   }
-              // }
-
-              // &__title {
-              //   margin: 0 8px;
-              //   font-size: 14px;
-              //   font-family: Microsoft YaHei;
-              //   font-weight: 400;
-              //   color: #333333;
-              //   line-height: 24px;
-              // }
-
-              // &__desc {
-              //   height: 32px;
-              //   position: absolute;
-              //   left: 0;
-              //   right: 0;
-              //   bottom: 0;
-              //   margin-left: 8px;
-              //   display: flex;
-              //   justify-content: space-between;
-
-              //   .price {
-              //     font-size: 18px;
-              //     font-family: Microsoft YaHei;
-              //     font-weight: bold;
-              //     color: #ff2d55;
-              //     line-height: 32px;
-              //   }
-
-              //   .add {
-              //     display: block;
-              //     width: 118px;
-              //     height: 32px;
-              //     line-height: 30px;
-              //     background: #f2f4f7;
-              //     border-radius: 10px 0px 10px 0px;
-              //     font-size: 16px;
-              //     color: #3f8dfd;
-              //     text-align: center;
-
-              //     &:hover {
-              //       background: #3f8dfd;
-              //       color: #f2f4f7;
-              //     }
-              //   }
-              // }
-            }
-          }
-        }
-      }
     }
   }
 }

+ 3 - 2
src/pages/person-center/my-bank/index/index.vue

@@ -3,7 +3,8 @@
     <div class="no-data" v-if="!bankData.goodsName">暂无可以学习的题库哦~</div>
     <div v-else>
       <h4 class="headerTitle">
-        <span v-if="bankData.subjectNames" style="font-size:20px;">【{{ bankData.subjectNames }}】</span
+        <span v-if="bankData.subjectNames" style="font-size: 20px"
+          >【{{ bankData.subjectNames }}】</span
         >{{ bankData.goodsName
         }}<el-button
           size="mini"
@@ -123,7 +124,7 @@ export default {
           });
         } else {
           this.$request
-            .listGoodsUserQuestion({ pageNum: 1, pageSize: 1 })
+            .bankquestionlistUserFreeUnionBuyGoodsList()
             .then((res) => {
               if (res.rows.length > 0) {
                 this.bankData = res.rows[0];

+ 76 - 39
src/pages/subject/collect-bank.vue

@@ -120,9 +120,6 @@
                           ></div>
                         </div>
                       </div>
-                      <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
-                      </div>
                     </div>
                     <div
                       class="question"
@@ -216,7 +213,6 @@
                         >
                           确认答案
                         </div>
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
                       </div>
                     </div>
                     <div
@@ -293,9 +289,6 @@
                           ></div>
                         </div>
                       </div>
-                      <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
-                      </div>
                     </div>
                     <div
                       class="question"
@@ -426,7 +419,6 @@
                                   ></div>
                                 </div>
                               </div>
-                              <div class="question__btns"></div>
                             </div>
                             <div
                               class="question"
@@ -800,9 +792,6 @@
                           </el-tab-pane>
                         </el-tabs>
                       </div>
-                      <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
-                      </div>
                     </div>
                     <div
                       class="question"
@@ -897,11 +886,15 @@
                         >
                           确认答案
                         </div>
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
                       </div>
                     </div>
                   </template>
                 </div>
+                <Collection-box
+                  :param="param"
+                  @sumit="getCollectInfo"
+                  :showT="!collectList[current]"
+                ></Collection-box>
               </div>
               <div class="right-box">
                 <div class="right-box__header">
@@ -979,6 +972,7 @@
 import Footer from "@/components/footer/index";
 import Header from "@/components/header/index";
 import ToolBar from "@/components/toolbar/index";
+import CollectionBox from "@/components/common/CollectionBox.vue";
 import { mapMutations } from "vuex";
 export default {
   name: "BankExplain",
@@ -986,6 +980,7 @@ export default {
     Footer,
     Header,
     ToolBar,
+    CollectionBox,
   },
   data() {
     return {
@@ -1025,6 +1020,7 @@ export default {
       current: 0,
       examId: "",
       explain: "",
+      collectList: [],
     };
   },
   async mounted() {
@@ -1047,7 +1043,27 @@ export default {
         return 0;
       }
     },
-
+    /**
+     * @param {Object} current
+     * 获取收藏信息
+     */
+    getCollectInfo() {
+      let { examId, questionId, goodsId, orderGoodsId } =
+        this.questionList[this.current];
+      this.$request
+        .getCollectInfo({
+          examId,
+          questionId,
+          goodsId,
+          orderGoodsId,
+        })
+        .then((res) => {
+          this.$set(this.collectList, this.current, res.data);
+        })
+        .catch((err) => {
+          this.$set(this.collectList, this.current, false);
+        });
+    },
     /**
      * 请求题目列表
      */
@@ -1209,6 +1225,7 @@ export default {
           });
 
           this.questionList = res.rows;
+          this.getCollectInfo();
         });
     },
 
@@ -1490,6 +1507,7 @@ export default {
 
     changeIndex(index) {
       this.current = index;
+      this.getCollectInfo();
     },
     nextQuestion() {
       if (this.current >= this.questionList.length - 1) {
@@ -1500,6 +1518,7 @@ export default {
         return;
       }
       this.current++;
+      this.getCollectInfo();
     },
     prevQuestion() {
       if (this.current == 0) {
@@ -1510,10 +1529,10 @@ export default {
         return;
       } else {
         this.current--;
+        this.getCollectInfo();
       }
     },
     isRight(item, index) {
-      console.log(item);
       //单选
       if (this.questionList[index].ques) {
         if (item.type == 1) {
@@ -1678,10 +1697,30 @@ export default {
     },
 
     collect() {
-      this.$message({
-        message: "试做题目,不支持收藏~",
-        type: "warning",
-      });
+      let _i = this.current;
+      let state = this.collectList[_i];
+      if (!state) {
+        let { questionId, goodsId, orderGoodsId } = this.questionList[_i];
+        this.$request
+          .collectQuestion({
+            examId: this.examId,
+            questionId: questionId,
+            goodsId: goodsId,
+            orderGoodsId: orderGoodsId,
+          })
+          .then((res) => {
+            this.$set(this.collectList, _i, true);
+            this.$message.success("收藏成功");
+            this.getCollectInfo();
+          });
+      } else {
+        this.$request
+          .deleteCollectQuestion(this.collectList[_i].collectQuestionId)
+          .then((res) => {
+            this.$set(this.collectList, _i, false);
+            this.$message.success("取消收藏成功");
+          });
+      }
       return;
     },
     submit() {
@@ -1695,6 +1734,12 @@ export default {
       }, 2000);
     },
   },
+  computed: {
+    param() {
+      if (!this.questionList.length) return {};
+      return this.questionList[this.current];
+    },
+  },
 };
 </script>
 
@@ -1703,6 +1748,7 @@ export default {
 .course-exam {
   .section {
     overflow: hidden;
+    position: relative;
     &__header {
       height: 20px;
       margin-top: 20px;
@@ -1716,12 +1762,13 @@ export default {
         &__body {
           margin-bottom: 20px;
           border: 1px solid #eee;
+          // display: flex;
           .left-box {
+            position: relative;
             float: left;
             width: 970px;
             min-height: 630px;
             border: 1px solid #eee;
-
             &__header {
               height: 40px;
               padding-left: 12px;
@@ -1746,8 +1793,7 @@ export default {
             }
 
             &__body {
-              border-bottom: 1px solid #eee;
-
+              // border-bottom: 1px solid #eee;
               .question {
                 padding: 12px 0 0 12px;
                 display: flex;
@@ -1764,14 +1810,14 @@ export default {
                 }
 
                 &__desc {
-                  padding-left: 12px;
+                  padding: 0 12px;
                   margin-top: 20px;
                   font-size: 16px;
                   font-family: Microsoft YaHei;
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
-
+                  text-align: justify;
                   /deep/ img {
                     max-width: 100% !important;
                   }
@@ -1789,7 +1835,8 @@ export default {
                   }
 
                   .question-list {
-                    padding: 24px 0 0 24px;
+                    padding: 24px 0 24px 24px;
+                    border-bottom: 1px solid #eee;
                     .checkbox,
                     .radio {
                       cursor: pointer;
@@ -1892,9 +1939,9 @@ export default {
 
                   .answer-list {
                     height: 40px;
-                    border-top: 1px solid #eee;
+                    // border-top: 1px solid #eee;
                     border-bottom: 1px solid #eee;
-                    margin-top: 24px;
+                    // margin-top: 24px;
                     display: flex;
                     align-items: center;
                     justify-content: space-between;
@@ -1960,6 +2007,9 @@ export default {
                       }
                     }
                   }
+                  .question {
+                    padding-bottom: 58px;
+                  }
                 }
 
                 &__btns {
@@ -1978,18 +2028,6 @@ export default {
                     color: #fff;
                     font-size: 16px;
                   }
-
-                  .collect {
-                    cursor: pointer;
-                    position: absolute;
-                    right: 0;
-                    top: 5px;
-                    font-size: 12px;
-                    font-family: Microsoft YaHei;
-                    font-weight: 400;
-                    color: #3f8dfd;
-                    line-height: 24px;
-                  }
                 }
               }
             }
@@ -2018,7 +2056,6 @@ export default {
             float: right;
             width: 299px;
             border-right: 1px solid #eee;
-
             &__header {
               height: 40px;
               line-height: 40px;

+ 5 - 5
src/pages/subject/collect-type-bank.vue

@@ -120,7 +120,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -215,7 +215,7 @@
                         >
                           确认答案
                         </div>
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -293,7 +293,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -800,7 +800,7 @@
                         </el-tabs>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -896,7 +896,7 @@
                         >
                           确认答案
                         </div>
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                   </template>

+ 5 - 5
src/pages/subject/wrong-bank.vue

@@ -120,7 +120,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -215,7 +215,7 @@
                         >
                           确认答案
                         </div>
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -293,7 +293,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -800,7 +800,7 @@
                         </el-tabs>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -896,7 +896,7 @@
                         >
                           确认答案
                         </div>
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                   </template>

+ 5 - 5
src/pages/subject/wrong-type-bank.vue

@@ -121,7 +121,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -216,7 +216,7 @@
                         >
                           确认答案
                         </div>
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -294,7 +294,7 @@
                         </div>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -801,7 +801,7 @@
                         </el-tabs>
                       </div>
                       <div class="question__btns">
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                     <div
@@ -897,7 +897,7 @@
                         >
                           确认答案
                         </div>
-                        <!-- <div class="collect" @click="collect">收藏本题</div> -->
+                        <!-- <div class="collect" @click="collect"></div> -->
                       </div>
                     </div>
                   </template>

+ 183 - 175
src/router/index.js

@@ -6,29 +6,29 @@ import { Notification, MessageBox, Message } from 'element-ui'
 import tools from '../common/tools'
 Vue.use(Router)
 
-let bankAdmin = ['/person-center/bank-record','/person-center/my-bank/index','/person-center/free-bank/index','/person-center/my-collect','/person-center/my-wrong','/person-center/my-bank/bank-detail/','/person-center/my-bank/bank-statistics/','/person-center/my-bank/bank-explain-detail/','/person-center/free-bank/bank-detail/','/person-center/free-bank/bank-statistics/','/person-center/free-bank/bank-explain-detail/','/bank-exam-continue/','/bank-exam/','/subject/collect-bank/','/bank-exam-explain/','/bank-report/'];
+let bankAdmin = ['/person-center/bank-record', '/person-center/my-bank/index', '/person-center/free-bank/index', '/person-center/my-collect', '/person-center/my-wrong', '/person-center/my-bank/bank-detail/', '/person-center/my-bank/bank-statistics/', '/person-center/my-bank/bank-explain-detail/', '/person-center/free-bank/bank-detail/', '/person-center/free-bank/bank-statistics/', '/person-center/free-bank/bank-explain-detail/', '/bank-exam-continue/', '/bank-exam/', '/subject/collect-bank/', '/bank-exam-explain/', '/bank-report/'];
 let canToBank = null;
-let courseAdmin = ['/my-course-detail/','/course-exam/']
+let courseAdmin = ['/my-course-detail/', '/course-exam/']
 let canToCourse = null;
 
-const router =  new Router({
-  mode:'history',
+const router = new Router({
+  mode: 'history',
   scrollBehavior: () => ({ y: 0 }),
   routes: [
     {
       path: '*',
       redirect: '/home',
-      component: resolve => require(['@/pages/home/index'],resolve)
+      component: resolve => require(['@/pages/home/index'], resolve)
     },
     {
       path: '/refresh',
       name: '刷新页',
-      component: resolve => require(['@/pages/refresh'],resolve),
+      component: resolve => require(['@/pages/refresh'], resolve),
     },
     {
       path: '/home',
       name: '首页',
-      component: resolve => require(['@/pages/home/index'],resolve),
+      component: resolve => require(['@/pages/home/index'], resolve),
       meta: {
         title: '祥粤云学堂-建造师造价师在线教育培训平台报名报考',
         content: {
@@ -40,7 +40,7 @@ const router =  new Router({
     {
       path: '/login',
       name: '登录',
-      component: resolve => require(['@/pages/login/index'],resolve),
+      component: resolve => require(['@/pages/login/index'], resolve),
       meta: {
         title: '祥粤云学堂-建造师造价师在线教育培训平台报名报考',
         content: {
@@ -52,7 +52,7 @@ const router =  new Router({
     {
       path: '/about',
       name: '走进祥粤',
-      component: resolve => require(['@/pages/about/index'],resolve),
+      component: resolve => require(['@/pages/about/index'], resolve),
       meta: {
         title: '祥粤云学堂-建造师造价师在线教育培训报名报考平台',
         content: {
@@ -64,12 +64,12 @@ const router =  new Router({
     {
       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: {
@@ -81,7 +81,7 @@ const router =  new Router({
     {
       path: '/payment-success',
       name: '支付成功',
-      component: resolve => require(['@/pages/payment-success/index'],resolve),
+      component: resolve => require(['@/pages/payment-success/index'], resolve),
       meta: {
         title: '祥粤云学堂-建造师造价师在线教育培训平台报名报考',
         content: {
@@ -93,7 +93,7 @@ const router =  new Router({
     {
       path: '/course-list',
       name: '课程列表',
-      component: resolve => require(['@/pages/course-list/index'],resolve),
+      component: resolve => require(['@/pages/course-list/index'], resolve),
       meta: {
         title: '祥粤云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
         content: {
@@ -105,7 +105,7 @@ const router =  new Router({
     {
       path: '/bank-list',
       name: '题库列表',
-      component: resolve => require(['@/pages/bank-list/index'],resolve),
+      component: resolve => require(['@/pages/bank-list/index'], resolve),
       meta: {
         title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
         content: {
@@ -114,11 +114,11 @@ const router =  new Router({
         }
       }
     },
-    
+
     {
       path: '/live-list',
       name: '直播列表',
-      component: resolve => require(['@/pages/live-list/index'],resolve),
+      component: resolve => require(['@/pages/live-list/index'], resolve),
       meta: {
         title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
         content: {
@@ -130,7 +130,7 @@ const router =  new Router({
     {
       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: {
@@ -142,7 +142,7 @@ const router =  new Router({
     {
       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: {
@@ -154,7 +154,7 @@ const router =  new Router({
     {
       path: '/live-detail/:goodsId',
       name: '直播详情',
-      component: resolve => require(['@/pages/goods-detail/live-detail'],resolve),
+      component: resolve => require(['@/pages/goods-detail/live-detail'], resolve),
       meta: {
         title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
         content: {
@@ -166,7 +166,7 @@ const router =  new Router({
     {
       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: {
@@ -175,11 +175,11 @@ const router =  new Router({
         }
       }
     },
-    
+
     {
       path: '/my-live-detail/:goodsId',
       name: '直播详情',
-      component: resolve => require(['@/pages/live-detail/index'],resolve),
+      component: resolve => require(['@/pages/live-detail/index'], resolve),
       meta: {
         title: '祥粤云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
         content: {
@@ -192,7 +192,7 @@ const router =  new Router({
       path: '/living-room/:channelId',
       // name: '课程详情',
       name: '直播页面详情1',
-      component: resolve => require(['@/pages/living-room/index'],resolve),
+      component: resolve => require(['@/pages/living-room/index'], resolve),
       meta: {
         title: '祥粤云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
         content: {
@@ -201,11 +201,11 @@ const router =  new Router({
         }
       }
     },
-    
+
     {
       path: '/mock-countdown',
       name: '课程详情',
-      component: resolve => require(['@/pages/mock-countdown/index'],resolve),
+      component: resolve => require(['@/pages/mock-countdown/index'], resolve),
       meta: {
         title: '祥粤云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
         content: {
@@ -214,11 +214,11 @@ const router =  new Router({
         }
       }
     },
-    
+
     {
       path: '/mock-report',
       name: '课程详情',
-      component: resolve => require(['@/pages/mock-report/index'],resolve),
+      component: resolve => require(['@/pages/mock-report/index'], resolve),
       meta: {
         title: '祥粤云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
         content: {
@@ -230,7 +230,7 @@ const router =  new Router({
     {
       path: '/course-report',
       name: '试卷报告',
-      component: resolve => require(['@/pages/course-report/index'],resolve),
+      component: resolve => require(['@/pages/course-report/index'], resolve),
       meta: {
         title: '祥粤云学堂-建造师造价师在线教育培训平台报名报考',
         content: {
@@ -239,11 +239,11 @@ const router =  new Router({
         }
       }
     },
-    
+
     {
       path: '/bank-report/:goodsId',
       name: '试卷报告',
-      component: resolve => require(['@/pages/bank-report/index'],resolve),
+      component: resolve => require(['@/pages/bank-report/index'], resolve),
       meta: {
         title: '祥粤云学堂-建造师造价师在线教育培训平台报名报考',
         content: {
@@ -255,7 +255,7 @@ const router =  new Router({
     {
       path: '/course-exam/:goodsId',
       name: '做题',
-      component: resolve => require(['@/pages/course-exam/index'],resolve),
+      component: resolve => require(['@/pages/course-exam/index'], resolve),
       meta: {
         title: '祥粤云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
         content: {
@@ -267,7 +267,7 @@ const router =  new Router({
     {
       path: '/bank-exam/:goodsId',
       name: '做题',
-      component: resolve => require(['@/pages/bank-exam/index'],resolve),
+      component: resolve => require(['@/pages/bank-exam/index'], resolve),
       meta: {
         title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
         content: {
@@ -279,7 +279,7 @@ const router =  new Router({
     {
       path: '/mock-exam',
       name: '模考',
-      component: resolve => require(['@/pages/mock-exam/index'],resolve),
+      component: resolve => require(['@/pages/mock-exam/index'], resolve),
       meta: {
         title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
         content: {
@@ -288,11 +288,11 @@ const router =  new Router({
         }
       }
     },
-    
+
     {
       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: {
@@ -304,7 +304,7 @@ const router =  new Router({
     {
       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: {
@@ -316,7 +316,7 @@ const router =  new Router({
     {
       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: {
@@ -328,7 +328,7 @@ const router =  new Router({
     {
       path: '/mock-exam-all-explain/:recordId',
       name: '全部解析',
-      component: resolve => require(['@/pages/mock-exam-all-explain/index'],resolve),
+      component: resolve => require(['@/pages/mock-exam-all-explain/index'], resolve),
       meta: {
         title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
         content: {
@@ -340,7 +340,7 @@ const router =  new Router({
     {
       path: '/mock-exam-wrong-explain/:recordId',
       name: '错题解析',
-      component: resolve => require(['@/pages/mock-exam-wrong-explain/index'],resolve),
+      component: resolve => require(['@/pages/mock-exam-wrong-explain/index'], resolve),
       meta: {
         title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
         content: {
@@ -352,7 +352,7 @@ const router =  new Router({
     {
       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: {
@@ -361,11 +361,11 @@ const router =  new Router({
         }
       }
     },
-    
+
     {
       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: {
@@ -377,7 +377,7 @@ const router =  new Router({
     {
       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: {
@@ -389,7 +389,7 @@ const router =  new Router({
     {
       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: {
@@ -401,7 +401,7 @@ const router =  new Router({
     {
       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: {
@@ -413,7 +413,7 @@ const router =  new Router({
     {
       path: '/goodsTopic',
       name: '商品专题',
-      component: resolve => require(['@/pages/goodsTopic/index'],resolve),
+      component: resolve => require(['@/pages/goodsTopic/index'], resolve),
       meta: {
         title: '祥粤云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
         content: {
@@ -425,208 +425,208 @@ const router =  new Router({
     {
       path: '/person-center',
       name: '个人中心',
-      component: resolve => require(['@/pages/person-center/index'],resolve),
-      beforeEnter:(to,from,next) => {
+      component: resolve => require(['@/pages/person-center/index'], resolve),
+      beforeEnter: (to, from, next) => {
         let token = window.localStorage.getItem('token');
 
-        if(token == null || token == '' || token === undefined){
+        if (token == null || token == '' || token === undefined) {
 
           next('/login')
 
-        }else{
+        } else {
 
           next();
 
         }
       },
-      children:[
+      children: [
         {
           path: '/',
           // redirect: 'my-course',
         },
         {
           path: 'my-course',
-          component: resolve => require(['@/pages/person-center/my-course/index'],resolve),
+          component: resolve => require(['@/pages/person-center/my-course/index'], resolve),
           name: '我的课程'
         },
         {
           path: 'my-live',
-          component: resolve => require(['@/pages/person-center/my-live/index'],resolve),
+          component: resolve => require(['@/pages/person-center/my-live/index'], resolve),
           name: '我的直播课'
         },
         {
           path: 'play-record',
-          component: resolve => require(['@/pages/person-center/play-record/index'],resolve),
+          component: resolve => require(['@/pages/person-center/play-record/index'], resolve),
           name: '播放记录'
         },
         {
           path: 'my-bank',
-          component: resolve => require(['@/pages/person-center/my-bank/index'],resolve),
-          name:'自购题卷',
-          children:[
+          component: resolve => require(['@/pages/person-center/my-bank/index'], resolve),
+          name: '自购题卷',
+          children: [
             {
               path: '/',
               redirect: 'index',
             },
             {
               path: 'index',
-              component: resolve => require(['@/pages/person-center/my-bank/index/index'],resolve),
+              component: resolve => require(['@/pages/person-center/my-bank/index/index'], resolve),
               name: '自购题卷',
             },
             {
               path: 'bank-detail/:goodsId',
-              component: resolve => require(['@/pages/person-center/my-bank/bank-detail/index'],resolve),
+              component: resolve => require(['@/pages/person-center/my-bank/bank-detail/index'], resolve),
               name: '题库详情'
             },
             {
               path: 'bank-statistics/:goodsId',
-              component: resolve => require(['@/pages/person-center/my-bank/bank-statistics/index'],resolve),
+              component: resolve => require(['@/pages/person-center/my-bank/bank-statistics/index'], resolve),
               name: '做题统计'
             },
             {
               path: 'bank-explain-detail/:goodsId',
-              component: resolve => require(['@/pages/person-center/my-bank/bank-explain-detail/index'],resolve),
+              component: resolve => require(['@/pages/person-center/my-bank/bank-explain-detail/index'], resolve),
               name: '详情'
             },
           ]
         },
         {
           path: 'free-bank',
-          component: resolve => require(['@/pages/person-center/free-bank/index'],resolve),
-          name:'赠送题卷',
-          children:[
+          component: resolve => require(['@/pages/person-center/free-bank/index'], resolve),
+          name: '赠送题卷',
+          children: [
             {
               path: '/',
               redirect: 'index',
             },
             {
               path: 'index',
-              component: resolve => require(['@/pages/person-center/free-bank/index/index'],resolve),
+              component: resolve => require(['@/pages/person-center/free-bank/index/index'], resolve),
               name: '赠送题卷',
             },
             {
               path: 'bank-detail/:goodsId',
-              component: resolve => require(['@/pages/person-center/free-bank/bank-detail/index'],resolve),
+              component: resolve => require(['@/pages/person-center/free-bank/bank-detail/index'], resolve),
               name: '题库详情'
             },
             {
               path: 'bank-statistics/:goodsId',
-              component: resolve => require(['@/pages/person-center/free-bank/bank-statistics/index'],resolve),
+              component: resolve => require(['@/pages/person-center/free-bank/bank-statistics/index'], resolve),
               name: '做题统计'
             },
             {
               path: 'bank-explain-detail/:goodsId',
-              component: resolve => require(['@/pages/person-center/free-bank/bank-explain-detail/index'],resolve),
+              component: resolve => require(['@/pages/person-center/free-bank/bank-explain-detail/index'], resolve),
               name: '详情'
             },
           ]
         },
         {
           path: 'bank-record',
-          component: resolve => require(['@/pages/person-center/bank-record/index'],resolve),
+          component: resolve => require(['@/pages/person-center/bank-record/index'], resolve),
           name: '做题记录'
         },
         {
           path: 'mock-record',
-          component: resolve => require(['@/pages/person-center/mock-record/index'],resolve),
+          component: resolve => require(['@/pages/person-center/mock-record/index'], resolve),
           name: '模考记录'
         },
         {
           path: 'my-collect',
-          component: resolve => require(['@/pages/person-center/my-collect/index'],resolve),
+          component: resolve => require(['@/pages/person-center/my-collect/index'], resolve),
           name: '收藏集'
         },
-        
+
         {
           path: 'my-wrong',
-          component: resolve => require(['@/pages/person-center/my-wrong/index'],resolve),
+          component: resolve => require(['@/pages/person-center/my-wrong/index'], resolve),
           name: '错题集'
         },
-        
+
         {
           path: 'record-list/:goodsId',
-          component: resolve => require(['@/pages/person-center/bank-record/record-list/index'],resolve),
+          component: resolve => require(['@/pages/person-center/bank-record/record-list/index'], resolve),
           name: '更多记录'
         },
         {
           path: 'mock-record-list/:goodsId',
-          component: resolve => require(['@/pages/person-center/mock-record/record-list/index'],resolve),
+          component: resolve => require(['@/pages/person-center/mock-record/record-list/index'], resolve),
           name: '更多模考记录'
         },
         {
           path: 'my-order',
-          component: resolve => require(['@/pages/person-center/my-order/index'],resolve),
+          component: resolve => require(['@/pages/person-center/my-order/index'], resolve),
           name: '我的订单'
         },
         {
           path: 'my-examination',
-          component: resolve => require(['@/pages/person-center/my-examination/index'],resolve),
+          component: resolve => require(['@/pages/person-center/my-examination/index'], resolve),
           name: '我的考试'
         },
         {
           path: 'my-mock',
-          component: resolve => require(['@/pages/person-center/my-mock/index'],resolve),
+          component: resolve => require(['@/pages/person-center/my-mock/index'], resolve),
           name: '我的模考'
         },
         {
           path: 'my-message',
-          component: resolve => require(['@/pages/person-center/my-message/index'],resolve),
+          component: resolve => require(['@/pages/person-center/my-message/index'], resolve),
           name: '我的消息'
         },
         {
           path: 'my-info',
-          component: resolve => require(['@/pages/person-center/my-info/index'],resolve),
+          component: resolve => require(['@/pages/person-center/my-info/index'], resolve),
           name: '我的资料'
         },
         {
           path: 'my-invoice',
           name: '我的发票',
-          component: resolve => require(['@/pages/person-center/my-invoice/index'],resolve),
-          children:[
-            
+          component: resolve => require(['@/pages/person-center/my-invoice/index'], resolve),
+          children: [
+
             {
               path: '/',
               redirect: 'index',
             },
             {
               path: 'index',
-              component: resolve => require(['@/pages/person-center/my-invoice/index/index'],resolve),
+              component: resolve => require(['@/pages/person-center/my-invoice/index/index'], resolve),
               name: '我的发票',
             },
             {
               path: 'add',
-              component: resolve => require(['@/pages/person-center/my-invoice/add/index'],resolve),
+              component: resolve => require(['@/pages/person-center/my-invoice/add/index'], resolve),
               name: '申请发票',
             },
           ]
         },
         {
           path: 'my-classhour',
-          component: resolve => require(['@/pages/person-center/my-classhour/index'],resolve),
+          component: resolve => require(['@/pages/person-center/my-classhour/index'], resolve),
           name: '我的学时',
-          children:[
+          children: [
             {
               path: '/',
               redirect: 'index',
             },
             {
               path: 'index',
-              component: resolve => require(['@/pages/person-center/my-classhour/index/index'],resolve),
+              component: resolve => require(['@/pages/person-center/my-classhour/index/index'], resolve),
               name: '我的学时',
             },
             {
               path: 'appointment',
-              component: resolve => require(['@/pages/person-center/my-classhour/appointment/index'],resolve),
+              component: resolve => require(['@/pages/person-center/my-classhour/appointment/index'], resolve),
               name: '预约考试',
             },
             {
               path: 'appointment-add',
-              component: resolve => require(['@/pages/person-center/my-classhour/appointment-add/index'],resolve),
+              component: resolve => require(['@/pages/person-center/my-classhour/appointment-add/index'], resolve),
               name: '预约考试',
             },
             {
               path: 'appointment-add-kp',
-              component: resolve => require(['@/pages/person-center/my-classhour/appointment-add-kp/index'],resolve),
+              component: resolve => require(['@/pages/person-center/my-classhour/appointment-add-kp/index'], resolve),
               name: '预约考试',
             }
           ]
@@ -641,32 +641,40 @@ Router.prototype.push = function push(location) {
   return originalPush.call(this, location).catch((err) => err)
 }
 
-router.beforeEach((to,from,next) => {
-  console.log(to,'to')
-  console.log(from,'from')
+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'){
+    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') {
+    if (canToBank) {
+      clearInterval(canToBank)
+      canToBank = null;
+    } 
+    if (canToCourse) {
+      clearInterval(canToCourse)
+      canToCourse = null;
+    }
 
     next();
 
-  }else{
+  } else {
 
     let token = window.localStorage.getItem('token');
 
     //进入页面有token获取用户信息
-    if(token){
+    if (token) {
       store.token = token;
-      if(!store.state.userInfo) {
+      if (!store.state.userInfo) {
         //获取用户信息
         store.dispatch('getUserInfo')
         store.dispatch('getbusinessList')
@@ -676,15 +684,15 @@ router.beforeEach((to,from,next) => {
       let isBankLock = bankAdmin.some(item => {
         return to.path.indexOf(item) != -1
       })
-      console.log(isBankLock,'isBankLock', canToBank)
-      if(isBankLock) {
-        
+      console.log(isBankLock, 'isBankLock', canToBank)
+      if (isBankLock) {
+
         //没有执行定时器,开启锁定
-        if(!canToBank) {
+        if (!canToBank) {
           request
             .lockLockStatus({
               action: "bank",
-              uuid:tools.getUuid()
+              uuid: tools.getUuid()
             })
             .then((res) => {
               //有其他端在操作,不能学习
@@ -692,36 +700,36 @@ router.beforeEach((to,from,next) => {
                 type: "warning",
                 message: res.msg,
               });
-              
-              if(from.path=='/') {
+
+              if (from.path == '/') {
                 next('/')
               }
 
             }).catch(err => {
               //可以学习,开启锁定
-                canToBank = 1;
+              canToBank = 1;
               request.lockLockAction({
-                action:'bank',
-                uuid:tools.getUuid()
+                action: 'bank',
+                uuid: tools.getUuid()
               }).then(res => {
               })
               canToBank = setInterval(() => {
                 request.lockLockAction({
-                  action:'bank',
-                  uuid:tools.getUuid()
+                  action: 'bank',
+                  uuid: tools.getUuid()
                 }).then(res => {
-                  
+
                 })
               }, 10000);
               next()
             })
 
-            return;
+          return;
         } else {
           //正在执行定时器,可以直接进入
           next()
         }
-        
+
         return;
       } else {
         //从题库页面离开删除锁定
@@ -730,78 +738,78 @@ router.beforeEach((to,from,next) => {
           return from.path.indexOf(item) != -1
         })
 
-        if(isLeaveBank) {
-          
+        if (isLeaveBank) {
+
           clearInterval(canToBank)
           canToBank = null;
           request.lockDelLock({
-            action:'bank',
-            uuid:tools.getUuid()
+            action: 'bank',
+            uuid: tools.getUuid()
           }).then(res => {
-            
+
           })
         }
       }
-      
+
       let isCourseLock = courseAdmin.some(item => {
         return to.path.indexOf(item) != -1
       })
 
-      console.log(isCourseLock,'isCourseLock')
-      if(isCourseLock) {
-        
+      console.log(isCourseLock, 'isCourseLock')
+      if (isCourseLock) {
+
         //没有执行定时器,开启锁定
-        if(!canToCourse) {
-          
+        if (!canToCourse) {
+
           request.goodsDetail(to.params.goodsId).then(res => {
             //继续教育锁定
             // if(res.data.educationName == '继续教育') {
-              request
-                .lockLockStatus({
-                  action: "jxjy",
-                  uuid:tools.getUuid()
+            request
+              .lockLockStatus({
+                action: "jxjy",
+                uuid: tools.getUuid()
+              })
+              .then((res) => {
+                //有其他端在操作,不能学习
+                Message({
+                  type: "warning",
+                  message: res.msg,
+                });
+
+                if (from.path == '/') {
+                  next('/')
+                }
+
+              }).catch(err => {
+                //可以学习,开启锁定
+                canToCourse = 1;
+                request.lockLockAction({
+                  action: 'jxjy',
+                  uuid: tools.getUuid()
+                }).then(res => {
                 })
-                .then((res) => {
-                  //有其他端在操作,不能学习
-                  Message({
-                    type: "warning",
-                    message: res.msg,
-                  });
-                  
-                  if(from.path=='/') {
-                    next('/')
-                  }
-
-                }).catch(err => {
-                  //可以学习,开启锁定
-                  canToCourse = 1;
+                canToCourse = setInterval(() => {
                   request.lockLockAction({
-                    action:'jxjy',
-                    uuid:tools.getUuid()
+                    action: 'jxjy',
+                    uuid: tools.getUuid()
                   }).then(res => {
+
                   })
-                  canToCourse = setInterval(() => {
-                    request.lockLockAction({
-                      action:'jxjy',
-                      uuid:tools.getUuid()
-                    }).then(res => {
-                      
-                    })
-                  }, 10000);
-                  next()
-                })
+                }, 10000);
+                next()
+              })
             // } else {
             //   next()
             // }
           })
-          
 
-            return;
+
+          return;
         } else {
           //正在执行定时器,可以直接进入
           next()
         }
-        
+
         return;
       } else {
         //非题库页面删除锁定
@@ -809,22 +817,22 @@ router.beforeEach((to,from,next) => {
           return from.path.indexOf(item) != -1
         })
 
-        if(isLeaveCouese) {
-          
+        if (isLeaveCouese) {
+
           clearInterval(canToCourse)
           canToCourse = null;
           request.lockDelLock({
-            action:'jxjy',
-            uuid:tools.getUuid()
+            action: 'jxjy',
+            uuid: tools.getUuid()
           }).then(res => {
-            
+
           })
         }
       }
-      
+
       next()
     } else {
-      
+
       next()
     }