Parcourir la source

bugfix 跳到播放记录

谢杰标 il y a 2 ans
Parent
commit
86b23acd39

+ 10 - 1
src/apis/common.js

@@ -225,7 +225,16 @@ export default {
       noToken: true
     })
   },
-
+  // 随机练习解析
+  goodsQuestionTempList(data) {
+    return request({
+      url: '/app/common/bank/question/temp/list',
+      method: 'get',
+      params: data,
+      noToken: true
+    })
+  },
+  
   /**
    * 
    * @param {*} data 

+ 83 - 1
src/pages/bank-exam-explain/index.vue

@@ -804,7 +804,10 @@ export default {
     this.moduleId = this.$route.query.moduleId;
     this.chapterId = this.$route.query.chapterId;
     this.goodsId = this.$route.query.goodsId;
-    this.goodsQuestionList();
+    this.examType = this.$route.query.examType;
+    this.$route.query.examType == 2
+      ? this.goodsQuestionTempList()
+      : this.goodsQuestionList();
   },
   methods: {
     ...mapMutations(["setExamResult"]),
@@ -908,7 +911,86 @@ export default {
           this.questionList = res.data;
         });
     },
+    // 随机练习试卷
+    goodsQuestionTempList() {
+      this.$request
+        .goodsQuestionTempList({
+          examId: this.examId,
+        })
+        .then(async (res) => {
+          res.data.forEach((item, index) => {
+            // if (typeof item.jsonStr == "string") {
+            item.jsonStr = JSON.parse(item.jsonStr);
+
+            if (item.type == 2) {
+              //多选
+              item.jsonStr.forEach((str) => {
+                str.optionsId = "" + str.optionsId;
+              });
+              let arr = item.answerQuestion.split(",");
+              arr.forEach((a, i) => {
+                arr[i] = "" + a;
+              });
+              item.ans = arr;
+              item.ques = item.ans;
+              return;
+            } else if (item.type == 5) {
+              item.ansText = {
+                text: item.analysisContent,
+                imageList: [],
+              };
+
+              item.ques = {
+                text: item.analysisContent,
+                imageList: [],
+              };
+              return;
+            } else if (item.type == 4) {
+              console.log(item.jsonStr);
+              item.ques = [];
+              item.current = 0;
+              let ansArr = [];
+              item.jsonStr.forEach((json, index) => {
+                if (json.type == 1) {
+                  ansArr[index] = json.answerQuestion;
+                } else if (json.type == 2) {
+                  json.optionsList.forEach((str) => {
+                    str.optionsId = "" + str.optionsId;
+                  });
+                  let arr = json.answerQuestion.split(",");
+                  arr.forEach((a, i) => {
+                    arr[i] = "" + a;
+                  });
+                  ansArr[index] = arr;
+                } else if (json.type == 3) {
+                  ansArr[index] = json.answerQuestion;
+                } else if (json.type == 5) {
+                  ansArr[index] = {
+                    text: "",
+                    imageList: [],
+                  };
+                  json.ansText = {
+                    text: "",
+                    imageList: [],
+                  };
+                }
+              });
+
+              item.ans = ansArr;
+              item.ques = item.ans;
+              return;
+            }
 
+            item.ans = item.answerQuestion;
+            item.ques = item.ans;
+            // } else {
+            //   item.ques = item.ans;
+            // }
+          });
+
+          this.questionList = res.data;
+        });
+    },
     nextQuestion() {
       if (this.current >= this.questionList.length - 1) {
         this.$message({

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

@@ -1,7353 +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) {
-            self.$request.obtainpolyvvideopcsign(vid).then((res) => {
-              next(res.data);
-            });
-          },
-        });
-
-        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>

+ 5 - 10
src/pages/course-detail/index.vue

@@ -5721,11 +5721,6 @@ export default {
         }
       }
       if (option.sectionType == 1) {
-        console.log("lubo点击点击点击点击");
-        //视频
-
-        //设置播放的节ID
-
         //提交保存观看历史
         if (this.playSectionId) {
           this.postStudyRecord(0, this.playSectionId);
@@ -5739,12 +5734,10 @@ export default {
         //播放视频
         this.showRecordStatus = false; //隐藏播放记录提示
         this.sectionItem = option;
-        console.log(option, "option=======>sectionItem");
         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();
@@ -5887,7 +5880,7 @@ export default {
     loadPlayer() {
       var self = this;
       const polyvPlayer = window.polyvPlayer;
-      console.log(polyvPlayer);
+      console.log(polyvPlayer, this.recordObj.videoCurrentTime, 666);
       self.$request.obtainpolyvvideosign(self.vid).then((res) => {
         console.log(res, "res2");
         self.player = polyvPlayer({
@@ -6305,9 +6298,10 @@ export default {
       if (this.vidzb) {
         currentTime = 2; //直播无法获取,无论开始结束都传2秒
       }
+      if (currentTime == 0) {
+        return;
+      }
       let self = this;
-      console.log(this);
-      console.log(PlayDuration, "PlayDuration");
       let data = {
         fromPlat: 2, //来源平台 1小程序 2网站
         photo: self.ossAvatarUrl,
@@ -6733,6 +6727,7 @@ export default {
           moduleId: parseInt(self.moduleId),
         };
         self.$request.recordLast(data).then((res) => {
+          console.log(res.data, "res.datares.datares.datares.datares.data");
           resolve(res.data);
         });
       });

+ 105 - 52
src/pages/person-center/bank-record/index.vue

@@ -3,12 +3,32 @@
     <div class="bank-record__header">
       <div class="title">做题记录</div>
       <div class="content">
-        <el-select clearable @change="reGetExamRecordList" v-model="param.goodsId" placeholder="请选择">
-          <el-option clearable v-for="item in list" :key="item.goodsId" :label="item.goodsName" :value="item.goodsId">
+        <el-select
+          clearable
+          @change="reGetExamRecordList"
+          v-model="param.goodsId"
+          placeholder="请选择"
+        >
+          <el-option
+            clearable
+            v-for="item in list"
+            :key="item.goodsId"
+            :label="item.goodsName"
+            :value="item.goodsId"
+          >
           </el-option>
         </el-select>
-        <el-select @change="reGetExamRecordList" v-model="param.paperId" placeholder="请选择">
-          <el-option v-for="item in list1" :key="item.paperId" :label="item.paperName" :value="item.paperId">
+        <el-select
+          @change="reGetExamRecordList"
+          v-model="param.paperId"
+          placeholder="请选择"
+        >
+          <el-option
+            v-for="item in list1"
+            :key="item.paperId"
+            :label="item.paperName"
+            :value="item.paperId"
+          >
           </el-option>
         </el-select>
       </div>
@@ -26,40 +46,69 @@
               <div class="exam-item__body">
                 <div class="text">
                   <span class="title">{{
-                      $tools.timestampToTime(record.updateTime, false)
+                    $tools.timestampToTime(record.updateTime, false)
                   }}</span>
-                  <span class="desc">总{{ record.totalQuestionNum }}题/对{{
+                  <span class="desc"
+                    >总{{ record.totalQuestionNum }}题/对{{
                       record.rightQuestionNum
-                  }}题</span>
+                    }}题</span
+                  >
                 </div>
                 <div class="btns-wrap">
                   <div class="btns">
-                    <el-button type="primary" class="btn" @click="
-                      go('/bank-exam-continue/' + record.goodsId, {
-                        recordId: record.recordId,
-                        examId: record.examId,
-                        chapterId: record.chapterExamId,
-                        moduleId: record.moduleExamId,
-                        orderGoodsId: record.orderGoodsId,
-                      })
-                    " v-if="record.status == 0 && record.historyExamJson">继续答题</el-button>
+                    <el-button
+                      type="primary"
+                      class="btn"
+                      @click="
+                        go('/bank-exam-continue/' + record.goodsId, {
+                          recordId: record.recordId,
+                          examId: record.examId,
+                          chapterId: record.chapterExamId,
+                          moduleId: record.moduleExamId,
+                          orderGoodsId: record.orderGoodsId,
+                        })
+                      "
+                      v-if="record.status == 0 && record.historyExamJson"
+                      >继续答题</el-button
+                    >
 
                     <div class="btn-line">
-                      <div class="btn-line__in" @click="doRepeat(record)"
-                        v-if="record.status == 1 && record.paperName != '随机练习'">
+                      <div
+                        class="btn-line__in"
+                        @click="doRepeat(record)"
+                        v-if="
+                          record.status == 1 && record.paperName != '随机练习'
+                        "
+                      >
                         <div>重新做题</div>
                       </div>
-                      <div class="btn-line__in" @click="
-                        go('/bank-exam-explain/' + record.goodsId, {
-                          examId: record.examId,
-                          chapterId: record.courseType == 2 ? record.chapterId : record.chapterExamId,
-                          moduleId: record.courseType == 2 ? record.moduleId : record.moduleExamId,
-                          orderGoodsId: record.orderGoodsId,
-                        })
-                      " v-if="record.status == 1">
+                      <div
+                        class="btn-line__in"
+                        @click="
+                          go('/bank-exam-explain/' + record.goodsId, {
+                            examId: record.examId,
+                            chapterId:
+                              record.courseType == 2
+                                ? record.chapterId
+                                : record.chapterExamId,
+                            moduleId:
+                              record.courseType == 2
+                                ? record.moduleId
+                                : record.moduleExamId,
+                            orderGoodsId: record.orderGoodsId,
+                            examType:
+                              record.paperName == '随机练习' ? 2 : undefined,
+                          })
+                        "
+                        v-if="record.status == 1"
+                      >
                         <div>解析</div>
                       </div>
-                      <div class="btn-line__in" v-if="record.status == 1" @click="doReport(record)">
+                      <div
+                        class="btn-line__in"
+                        v-if="record.status == 1"
+                        @click="doReport(record)"
+                      >
                         <div>做题报告</div>
                       </div>
                       <div class="btn-line__in" @click="moreRecords(record)">
@@ -77,8 +126,14 @@
 
     <div class="bank-record__footer">
       <div class="pagination">
-        <el-pagination @current-change="currentChange" background layout="prev, pager, next" :total="total"
-          :pager-count="5" :page-size="param.pageSize">
+        <el-pagination
+          @current-change="currentChange"
+          background
+          layout="prev, pager, next"
+          :total="total"
+          :pager-count="5"
+          :page-size="param.pageSize"
+        >
         </el-pagination>
       </div>
     </div>
@@ -138,7 +193,7 @@ export default {
       });
     },
     moreRecords(record) {
-      let queryData = {}
+      let queryData = {};
       if (record.courseType == 2) {
         queryData = {
           examId: record.examId,
@@ -148,12 +203,11 @@ export default {
           courseId: record.courseId,
           sectionId: record.sectionId,
           courseType: record.courseType,
-        }
+        };
         this.$router.push({
-          path: '/person-center/record-list/' + record.goodsId,
-          query: queryData
-        })
-
+          path: "/person-center/record-list/" + record.goodsId,
+          query: queryData,
+        });
       } else {
         queryData = {
           examId: record.examId,
@@ -161,11 +215,11 @@ export default {
           moduleId: record.moduleExamId,
           recordId: record.recordId,
           courseType: record.courseType,
-        }
+        };
         this.$router.push({
-          path: '/person-center/record-list/' + record.goodsId,
-          query: queryData
-        })
+          path: "/person-center/record-list/" + record.goodsId,
+          query: queryData,
+        });
       }
     },
     currentChange(e) {
@@ -180,14 +234,14 @@ export default {
     },
 
     async doRepeat(section) {
-      console.log('section:', section)
-      let count = 0
+      console.log("section:", section);
+      let count = 0;
       if (section.courseType == 2) {
-        count = await this.bankRecordDoNum(section)
+        count = await this.bankRecordDoNum(section);
       } else {
-        count = await this.examRecordCount(section.examId)
+        count = await this.examRecordCount(section.examId);
       }
-      console.log('已做的次数', count)
+      console.log("已做的次数", count);
       let answerNum = await this.getExamDetail(section.examId);
       //超过答题次数
       if (answerNum > 0 && count >= answerNum) {
@@ -220,7 +274,7 @@ export default {
                 chapterId: section.chapterId || 0,
                 orderGoodsId: section.orderGoodsId,
               },
-            })
+            });
           } else {
             this.$router.push({
               path: "/bank-exam/" + section.goodsId,
@@ -232,7 +286,6 @@ export default {
               },
             });
           }
-
         })
         .catch((_) => {
           this.$router.push({
@@ -294,7 +347,6 @@ export default {
       });
     },
     doReport(record) {
-      console.log('做题报告', record, record.courseType)
       if (record.courseType == 2) {
         this.$router.push({
           path: "/course-report",
@@ -303,18 +355,19 @@ export default {
             recordId: record.recordId,
             type: record.type, //type:1章卷,2节卷,3模块卷
           },
-        })
+        });
       } else {
         this.$router.push({
-          path: '/bank-report/' + record.goodsId,
+          path: "/bank-report/" + record.goodsId,
           query: {
             chapterId: record.chapterExamId,
             moduleId: record.moduleExamId,
             examId: record.examId,
             recordId: record.recordId,
             orderGoodsId: record.orderGoodsId,
+            examType: record.paperName == "随机练习" ? 2 : undefined,
           },
-        })
+        });
       }
       // go('/bank-report/' + record.goodsId, {
       //   chapterId: record.chapterExamId,
@@ -440,7 +493,7 @@ export default {
                       padding: 7px 0;
                       color: #3f8dfd;
 
-                      >div {
+                      > div {
                         text-align: center;
                         font-size: 16px;
                         line-height: 16px;
@@ -450,7 +503,7 @@ export default {
                       }
 
                       &:nth-last-of-type(1) {
-                        >div {
+                        > div {
                           border: 0;
                         }
                       }