Explorar el Código

Merge branch 'tang' of http://120.79.166.78:19005/zhongzheng-edu/saas_pc into dev

Tang hace 2 años
padre
commit
2679ec6c59

+ 461 - 0
src/pages/course-detail/components/AnswerQuestions.vue

@@ -0,0 +1,461 @@
+<!-- 答疑 -->
+<template>
+  <div class="answer-question">
+    <div class="answer-question__header clearfix">
+      <div class="textarea-wrap">
+        <el-input
+          class="textarea"
+          resize="none"
+          v-model="textarea"
+          rows="3"
+          type="textarea"
+          placeholder="请输入"
+          maxlength="1000"
+          show-word-limit
+        ></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; color: #cccccc; margin-top: 14px"
+        >
+          暂无记录
+        </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"
+                style="color: red"
+                @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
+                    >
+                    <span style="color: #ccc">{{ items.answerText }}</span>
+                  </div>
+                  <div class="time">
+                    {{ $tools.timestampToTime(items.createTime, false) }}
+                    <div
+                      class="del"
+                      style="color: red"
+                      @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>
+
+<script>
+import { mapGetters } from "vuex";
+export default {
+  props: ["courseId", "goodsId", "orderGoodsId"],
+  data() {
+    return {
+      textarea: "",
+      answerList: [],
+    };
+  },
+  computed: {
+    ...mapGetters(["userInfo"]),
+  },
+  created() {
+    console.log("子组件");
+  },
+  methods: {
+    /**提出答疑 */
+    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();
+      });
+    },
+
+    /**
+     * 获取答疑列表
+     */
+    getAnswerList() {
+      let self = this;
+      // /app/answer/list 查询答疑列表
+      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();
+        });
+    },
+    /**回复 */
+    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(() => {});
+    },
+    //删除回复
+    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();
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.answer-question {
+  max-height: 416px;
+  overflow-y: auto;
+  padding: 16px;
+  background: rgb(63, 68, 73);
+
+  &::-webkit-scrollbar {
+    display: none;
+  }
+
+  &__header {
+    border-bottom: 1px solid #555;
+
+    .textarea-wrap {
+      // background: #65696D;
+      border: 1px solid #555;
+      border-radius: 8px;
+
+      .textarea {
+        height: 100%;
+
+        &::placeholder {
+          color: red;
+        }
+      }
+    }
+
+    .submit {
+      padding: 10px 20px;
+      border-radius: 2px;
+      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;
+          overflow: hidden;
+
+          img {
+            display: inline-block;
+            vertical-align: middle;
+            max-width: 100%;
+            max-height: 100%;
+          }
+        }
+
+        &__content {
+          flex: 1;
+          border-bottom: 1px solid #555555;
+          margin-left: 10px;
+
+          .nickname {
+            font-size: 14px;
+            font-family: Microsoft YaHei;
+            font-weight: bold;
+            color: #f5f5f5;
+            line-height: 24px;
+          }
+
+          .desc {
+            font-size: 14px;
+            font-family: Microsoft YaHei;
+            font-weight: 400;
+            color: #cccccc;
+            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: #fa8c16;
+              line-height: 24px;
+              margin-right: 20px;
+            }
+          }
+
+          .reply-list {
+            margin: 20px 0;
+            width: 100%;
+            background-color: #2f3236;
+            border-radius: 8px;
+            padding: 0 0 0 20px;
+
+            &__item {
+              padding: 20px 0;
+              display: flex;
+              border-bottom: 1px solid #555555;
+
+              &:nth-last-of-type(1) {
+                border: 0;
+              }
+
+              &__avatar {
+                width: 40px;
+                height: 40px;
+                display: table-cell;
+                border-radius: 50%;
+                text-align: center;
+                border-radius: 50%;
+                overflow: hidden;
+
+                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: #f5f5f5;
+                  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;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+</style>

+ 3 - 3
src/components/courseTree/CourseTree.vue → src/pages/course-detail/components/CourseTree.vue

@@ -115,7 +115,7 @@
                         </template>
 
                         <div class="lear-state" v-if="isActive(section)">
-                          <img src="../../assets/learing.gif" alt="" />
+                          <img src="@/assets/learing.gif" alt="" />
                         </div>
                         <template v-if="section.durationTime > 0">
                           <div class="during">
@@ -330,7 +330,7 @@
                           </div>
                         </div>
                         <div class="lear-state" v-if="isActive(section)">
-                          <img src="../../assets/learing.gif" alt="" />
+                          <img src="@/assets/learing.gif" alt="" />
                         </div>
                         <template v-if="section.durationTime > 0">
                           <div class="during">
@@ -483,7 +483,7 @@
                     </div>
                   </template>
                   <div class="lear-state" v-if="isActive(menu)">
-                    <img src="../../assets/learing.gif" alt="" />
+                    <img src="@/assets/learing.gif" alt="" />
                   </div>
                   <template v-if="menu.durationTime > 0">
                     <div class="during">

+ 209 - 0
src/pages/course-detail/components/HandOut.vue

@@ -0,0 +1,209 @@
+<template>
+  <div class="lecture-notesjy">
+    <div class="listItem">
+      <div class="titles">
+        {{ 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 class="lecture-listFooter" v-if="showPdf">
+      <div style="color: #fff">
+        {{ courseHandoutsData.urlName }}
+      </div>
+      <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>
+</template>
+
+<script>
+import pdf from "vue-pdf";
+import Print from "print-js";
+export default {
+  components: { pdf },
+  props: {
+    goodsData: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+  },
+  data() {
+    return {
+      showPdf: false,
+      courseHandoutsData: {},
+    };
+  },
+  watch: {
+    goodsData: {
+      handler(newVal, oldVal) {
+        if (newVal.handoutsId != oldVal.handoutsId) {
+          this.courseHandouts();
+        }
+      },
+      deep: true,
+    },
+  },
+  methods: {
+    previvew(url) {
+      this.showPdf = true;
+    },
+    /**
+     * 打印
+     */
+    printView(url) {
+      console.log("触发打印", url);
+      Print({
+        printable: url,
+        type: "pdf",
+        header: null,
+        targetStyles: ["*"],
+        style: "@page {margin:0 10mm}",
+      });
+    },
+    //下载
+    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对象
+      }
+    },
+    /**
+     * 获取讲义权限
+     */
+    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) => {});
+      }
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.lecture-notesjy {
+  display: flex;
+  flex-direction: column;
+  max-height: 416px;
+
+  .listItem {
+    padding-bottom: 14px;
+    margin-bottom: 10px;
+    border-bottom: 1px solid #eee;
+
+    .titles {
+      color: #fff;
+      font-weight: bold;
+      text-align: center;
+      padding: 10px;
+    }
+
+    .btns {
+      display: flex;
+      justify-content: space-around;
+      align-items: center;
+
+      .btn {
+        border-radius: 8px;
+        background-color: #fff;
+        padding: 6px 16px;
+        user-select: none;
+        cursor: pointer;
+        transition: all 0.2s;
+
+        &:hover {
+          background-color: #f2f7ff;
+          color: #3f8dfd;
+        }
+      }
+    }
+  }
+
+  .lecture-listFooter {
+    flex: 1;
+    overflow: auto;
+  }
+}
+</style>

+ 374 - 0
src/pages/course-detail/components/Notes.vue

@@ -0,0 +1,374 @@
+<template>
+  <div class="lecture-notes">
+    <div class="lecture-notes__content clearfix">
+      <div class="left-boxs">
+        <div class="textarea clearfix" v-if="!(isPlayRebuild > 0) && !vidzb">
+          <el-input
+            resize="none"
+            rows="3"
+            v-model="textareaNote"
+            type="textarea"
+            maxlength="1000"
+            show-word-limit
+            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; color: #cccccc; margin-top: 14px"
+          >
+            暂无笔记
+          </div>
+
+          <div
+            class="note-list__content"
+            v-for="(item, index) in noteList"
+            :key="index"
+          >
+            <div
+              v-for="(note, index) in item.userNotes"
+              :key="index"
+              class="user_notes"
+            >
+              <p class="p1">
+                <i class="el-icon-video-camera" style="margin-right: 8px"></i
+                >{{ $tools.secondToDate(note.noteSecond) }}
+                <span>{{
+                  $tools.timestampToTime(note.createTime, false, false)
+                }}</span>
+              </p>
+              <p class="p2">{{ note.noteText }}</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: [
+    "courseId",
+    "gradeId",
+    "goodsId",
+    "moduleId",
+    "chapterId",
+    "isPlayRebuild",
+    "vidzb",
+    "playSectionId",
+    "player",
+  ],
+  data() {
+    return {
+      textareaNote: "",
+      noteList:[],
+    };
+  },
+  methods: {
+    /**
+     * 获取笔记列表
+     */
+    getNoteList() {
+      let self = this;
+      self.noteList = [];
+      let data = {
+        courseId: this.courseId,
+        gradeId: this.gradeId,
+        goodsId: this.goodsId,
+      };
+      if (this.playSectionId > 0) {
+        data.sectionId = this.playSectionId;
+      }
+      this.$request.noteList(data).then((res) => {
+        self.noteList = res.rows;
+        self.noteTotal = res.total;
+      });
+    },
+    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();
+      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 = "";
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.lecture-notes {
+  &::-webkit-scrollbar {
+    display: none;
+  }
+
+  max-height: 416px;
+  overflow-y: auto;
+  padding: 16px;
+  background: rgb(63, 68, 73);
+
+  &__content {
+    .left-boxs {
+      // float: left;
+      // width: 462px;
+
+      .textarea {
+        border-bottom: 1px solid #555555;
+
+        .submit {
+          padding: 10px 20px;
+          border-radius: 2px;
+          text-align: center;
+          font-size: 16px;
+          margin: 10px 0;
+          float: right;
+        }
+      }
+
+      .note-list {
+        &__content {
+          border-bottom: 1px solid #555555;
+
+          &__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%;
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+/deep/ textarea {
+  background: #65696d;
+  color: #c7c7c7;
+  border-color: transparent;
+}
+.user_notes {
+  border-bottom: 1px solid #555;
+
+  .p1 {
+    margin: 8px 0px;
+    color: #3f8dfd;
+    font-size: 14px;
+
+    span {
+      float: right;
+      color: #999;
+      font-size: 12px;
+    }
+  }
+
+  .p2 {
+    margin-bottom: 8px;
+    font-size: 14px;
+    color: #ccc;
+  }
+}
+</style>

+ 75 - 391
src/pages/course-detail/index.vue

@@ -93,257 +93,33 @@
                             </Course-tree>
                           </template>
                           <template v-if="tab.name == '3'">
-                            <div class="answer-question">
-                              <div class="answer-question__header clearfix">
-                                <div class="textarea-wrap">
-                                  <el-input
-                                    class="textarea"
-                                    resize="none"
-                                    v-model="textarea"
-                                    rows="3"
-                                    type="textarea"
-                                    placeholder="请输入"
-                                    maxlength="1000"
-                                    show-word-limit
-                                  ></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;
-                                      color: #cccccc;
-                                      margin-top: 14px;
-                                    "
-                                  >
-                                    暂无记录
-                                  </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"
-                                          style="color: red"
-                                          @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
-                                              >
-                                              <span style="color: #ccc">{{
-                                                items.answerText
-                                              }}</span>
-                                            </div>
-                                            <div class="time">
-                                              {{
-                                                $tools.timestampToTime(
-                                                  items.createTime,
-                                                  false
-                                                )
-                                              }}
-                                              <div
-                                                class="del"
-                                                style="color: red"
-                                                @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>
+                            <Answer-questions
+                              ref="answerQuestions"
+                              :goodsId="goodsId"
+                              :courseId="courseId"
+                              :orderGoodsId="orderGoodsId"
+                            ></Answer-questions>
                           </template>
                           <template v-if="tab.name == '4'">
-                            <div class="lecture-notes">
-                              <div class="lecture-notes__content clearfix">
-                                <div class="left-boxs">
-                                  <div
-                                    class="textarea clearfix"
-                                    v-if="!(isPlayRebuild > 0) && !vidzb"
-                                  >
-                                    <el-input
-                                      resize="none"
-                                      rows="3"
-                                      v-model="textareaNote"
-                                      type="textarea"
-                                      maxlength="1000"
-                                      show-word-limit
-                                      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;
-                                        color: #cccccc;
-                                        margin-top: 14px;
-                                      "
-                                    >
-                                      暂无笔记
-                                    </div>
-
-                                    <div
-                                      class="note-list__content"
-                                      v-for="(item, index) in noteList"
-                                      :key="index"
-                                    >
-                                      <div
-                                        v-for="(note, index) in item.userNotes"
-                                        :key="index"
-                                        class="user_notes"
-                                      >
-                                        <p class="p1">
-                                          <i
-                                            class="el-icon-video-camera"
-                                            style="margin-right: 8px"
-                                          ></i
-                                          >{{
-                                            $tools.secondToDate(note.noteSecond)
-                                          }}
-                                          <span>{{
-                                            $tools.timestampToTime(
-                                              note.createTime,
-                                              false,
-                                              false
-                                            )
-                                          }}</span>
-                                        </p>
-                                        <p class="p2">{{ note.noteText }}</p>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <!-- <div class="pagination">
-                                    <el-pagination
-                                      background
-                                      layout="prev, pager, next"
-                                      :total="noteTotal"
-                                      :page-size="noteParams.pageSize"
-                                    >
-                                    </el-pagination>
-                                  </div> -->
-                                </div>
-                              </div>
-                            </div>
+                            <Notes
+                              ref="notes"
+                              :gradeId="gradeId"
+                              :goodsId="goodsId"
+                              :courseId="courseId"
+                              :moduleId="moduleId"
+                              :chapterId="chapterId"
+                              :isPlayRebuild="isPlayRebuild"
+                              :playSectionId="playSectionId"
+                              :vidzb="vidzb"
+                              :player="player"
+                            ></Notes>
                           </template>
                           <template v-if="tab.name == '5'">
-                            <div class="lecture-notesjy">
+                            <Hand-out
+                              ref="handOut"
+                              :goodsData="goodsData"
+                            ></Hand-out>
+                            <div v-if="false" class="lecture-notesjy">
                               <div class="listItem">
                                 <div class="titles">
                                   {{ courseHandoutsData.handoutsName }}
@@ -1493,7 +1269,10 @@ import GoodsItem from "@/components/goodsItem/index";
 import * as imageConversion from "image-conversion";
 import { mapGetters, mapMutations, mapActions } from "vuex";
 import pdf from "vue-pdf";
-import CourseTree from "@/components/courseTree/CourseTree.vue";
+import CourseTree from "./components/CourseTree.vue";
+import AnswerQuestions from "./components/AnswerQuestions.vue";
+import Notes from "./components/Notes.vue";
+import HandOut from "./components/HandOut.vue";
 export default {
   name: "CourseDetail",
   components: {
@@ -1503,6 +1282,9 @@ export default {
     pdf,
     GoodsItem,
     CourseTree,
+    AnswerQuestions,
+    Notes,
+    HandOut,
   },
   data() {
     return {
@@ -1546,6 +1328,7 @@ export default {
       courseId: "",
       courseTabIndex: "1",
       goodsId: "",
+      orderGoodsId: "",
       gradeId: "",
       livingTimer: null,
       sectionItem: {},
@@ -1973,7 +1756,7 @@ export default {
     },
     handleClick(tab) {
       if (tab.name == "3") {
-        this.getAnswerList(); //答疑列表
+        this.$refs.answerQuestions[0].getAnswerList(); //答疑列表
       }
     },
     /**
@@ -3139,6 +2922,43 @@ export default {
           if (self.needProfileModal) {
             return;
           }
+          /**
+           * 补充条件 Start
+           */
+          console.log("补充条件:",res.data.interfaceAccountId,res.data.learnStatus)
+          if (res.data.interfaceAccountId > 0 && res.data.learnStatus > 0) {
+            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, y, done) => {
+                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;
+          }
+          /**
+           * 补充条件   End
+           */
           if (self.gradeDetail.learningStatus == 2) {
             this.$confirm(
               `当前课程正在申请中,正式开班后方可进行学习,请耐心等候!`,
@@ -3648,8 +3468,8 @@ export default {
         this.playerzb = "";
         this.vidzb = "";
         this.nowTime = Number(new Date().getTime() / 1000).toFixed(0);
-        this.getAnswerList(); //答疑列表
-        this.getNoteList(); //获取节笔记
+        this.$refs.answerQuestions[0].getAnswerList(); //答疑列表
+        this.$refs.notes[0].getNoteList(); //获取节笔记
         resolve();
       });
     },
@@ -3774,7 +3594,7 @@ export default {
             ];
           }
           this.courseBusiness();
-          this.courseHandouts();
+          // this.courseHandouts();
           if (self.goodsData.goodsPlayConfig) {
             self.goodsPlayConfig = JSON.parse(self.goodsData.goodsPlayConfig);
             if (self.goodsPlayConfig.autoPlay > 0) {
@@ -3894,7 +3714,7 @@ export default {
         this.playSectionId = option.sectionId || option.menuId;
         await this.getPhotoLastRecord();
         this.recordObj = await this.getRecordLast();
-        this.getNoteList();
+        this.$refs.notes[0].getNoteList();
         await this.clears();
 
         this.vid = option.recordingUrl;
@@ -3929,7 +3749,7 @@ export default {
         // console.log(this.moduleId, this.chapterId, this.playSectionId);
         await this.getPhotoLastRecord();
         this.recordObj = await this.getRecordLast();
-        this.getNoteList();
+        this.$refs.notes[0].getNoteList();
         //设置播放的节ID
         await this.clears();
         this.vidzb = option.liveUrl;
@@ -4828,27 +4648,6 @@ export default {
         });
       });
     },
-    /**
-     * 获取笔记列表
-     */
-    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) {
@@ -4923,109 +4722,6 @@ export default {
         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;
-      // /app/answer/list 查询答疑列表
-      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.$request
@@ -5139,22 +4835,10 @@ export default {
           message: "发布成功",
           type: "success",
         });
-        self.getNoteList();
+        self.$refs.notes[0].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();
-      });
-    },
     /**
      * 打印
      */

+ 568 - 503
src/pages/person-center/my-course/courseData.vue

@@ -1,91 +1,101 @@
 <template>
   <div id="courseData">
     <el-dialog title="切换科目" :visible.sync="dialogVisible" width="1100px">
-        <div class="headerStyle" v-if="Object.keys(activeItem).length">
-            <p class="title">当前科目</p>
+      <div class="headerStyle" v-if="Object.keys(activeItem).length">
+        <p class="title">当前科目</p>
+        <div class="course-items">
+          <div class="course-items__header">
             <div
-              class="course-items"
+              class="time"
+              v-if="activeItem.serviceStartTime && activeItem.serviceEndTime"
             >
-              <div class="course-items__header">
-                <div
-                  class="time"
-                  v-if="activeItem.serviceStartTime && activeItem.serviceEndTime"
-                >
-                  学习服务期:{{
-                    $tools.timestampToTime(activeItem.serviceStartTime, false)
-                  }}
-                  至
-                  {{ $tools.timestampToTime(activeItem.serviceEndTime, false) }}
-                </div>
+              学习服务期:{{
+                $tools.timestampToTime(activeItem.serviceStartTime, false)
+              }}
+              至
+              {{ $tools.timestampToTime(activeItem.serviceEndTime, false) }}
+            </div>
 
-                <div class="state">
+            <div class="state">
+              <template
+                v-if="
+                  activeItem.serviceStartTime &&
+                  (sysTime < activeItem.serviceStartTime ||
+                    sysTime > activeItem.serviceEndTime)
+                "
+              >
+                <div class="red">不在学习服务期,不可以学习了哦</div>
+              </template>
+
+              <template v-else>
+                <template
+                  v-if="
+                    !(
+                      activeItem.classEndTime &&
+                      activeItem.classEndTime < sysTime
+                    ) &&
+                    !(
+                      activeItem.classStartTime &&
+                      activeItem.classStartTime > sysTime
+                    )
+                  "
+                >
                   <template
                     v-if="
-                      activeItem.serviceStartTime &&
-                      (sysTime < activeItem.serviceStartTime ||
-                        sysTime > activeItem.serviceEndTime)
+                      activeItem.periodStatus == -1 ||
+                      activeItem.periodStatus == 2
                     "
                   >
-                    <div class="red">不在学习服务期,不可以学习了哦</div>
-                  </template>
-
-                  <template v-else>
                     <template
                       v-if="
-                        !(activeItem.classEndTime && activeItem.classEndTime < sysTime) &&
-                        !(activeItem.classStartTime && activeItem.classStartTime > sysTime)
+                        activeItem.classStatus == 1 ||
+                        activeItem.classStatus === null
                       "
                     >
                       <template
-                        v-if="activeItem.periodStatus == -1 || activeItem.periodStatus == 2"
+                        v-if="
+                          sysTime >= activeItem.serviceStartTime &&
+                          sysTime <= activeItem.serviceEndTime
+                        "
                       >
-                        <template
+                        学习状态:
+                        <div
+                          class="note"
                           v-if="
-                            activeItem.classStatus == 1 || activeItem.classStatus === null
+                            activeItem.stuAllNum + activeItem.recordNum == 0
                           "
                         >
-                          <template
-                            v-if="
-                              sysTime >= activeItem.serviceStartTime &&
-                              sysTime <= activeItem.serviceEndTime
-                            "
-                          >
-                            学习状态:
-                            <div
-                              class="note"
-                              v-if="activeItem.stuAllNum + activeItem.recordNum == 0"
-                            >
-                              未学习
-                            </div>
-                            <div
-                              class="note note--yellow"
-                              v-else-if="
-                                activeItem.stuAllNum + activeItem.recordNum > 0 &&
-                                activeItem.stuAllNum + activeItem.recordNum <
-                                  activeItem.secAllNum + activeItem.examNum
-                              "
-                            >
-                              学习中
-                            </div>
-                            <div
-                              class="note note--green"
-                              v-else-if="
-                                activeItem.stuAllNum + activeItem.recordNum >=
-                                activeItem.secAllNum + activeItem.examNum
-                              "
-                            >
-                              已学完
-                            </div>
-                          </template>
+                          未学习
+                        </div>
+                        <div
+                          class="note note--yellow"
+                          v-else-if="
+                            activeItem.stuAllNum + activeItem.recordNum > 0 &&
+                            activeItem.stuAllNum + activeItem.recordNum <
+                              activeItem.secAllNum + activeItem.examNum
+                          "
+                        >
+                          学习中
+                        </div>
+                        <div
+                          class="note note--green"
+                          v-else-if="
+                            activeItem.stuAllNum + activeItem.recordNum >=
+                            activeItem.secAllNum + activeItem.examNum
+                          "
+                        >
+                          已学完
+                        </div>
+                      </template>
 
-                          <template v-else>
-                            <span class="red" v-if="activeItem.serviceStartTime">
-                              已过学习服务期,不可以学习了哦!</span
-                            >
-                          </template>
-                        </template>
+                      <template v-else>
+                        <span class="red" v-if="activeItem.serviceStartTime">
+                          已过学习服务期,不可以学习了哦!</span
+                        >
+                      </template>
+                    </template>
 
-                        <!-- <template v-if="activeItem.profileTpStatus == 1">
+                    <!-- <template v-if="activeItem.profileTpStatus == 1">
                       资料审核状态:
                       <div class="note" v-if="activeItem.profileStatus == null">
                         未提交资料
@@ -109,293 +119,310 @@
                         待完善
                       </div>
                     </template> -->
-                      </template>
+                  </template>
 
-                      <!-- 学时审核状态可以审核 -->
-                      <template v-if="activeItem.periodStatus != -1">
-                        <template v-if="activeItem.periodStatus == 0"
-                          >机构审核:
-                          <div class="note">学时审核不通过</div>
-                        </template>
-                        <!-- <template v-else-if="activeItem.periodStatus == 2"
+                  <!-- 学时审核状态可以审核 -->
+                  <template v-if="activeItem.periodStatus != -1">
+                    <template v-if="activeItem.periodStatus == 0"
+                      >机构审核:
+                      <div class="note">学时审核不通过</div>
+                    </template>
+                    <!-- <template v-else-if="activeItem.periodStatus == 2"
                       >机构审核:
                       <div class="note note--yellow">学时待审核</div></template
                     > -->
-                        <template v-else-if="activeItem.periodStatus == 1">
-                          <template v-if="activeItem.periodPlush > 0"
-                            ><div class="note note--green">
-                              学时已上报注册中心
-                            </div></template
-                          >
-                          <template v-else
-                            >机构审核:
-                            <div class="note note--green">
-                              学时审核通过
-                            </div></template
-                          >
-                        </template>
-                        <template
-                          v-if="
-                            activeItem.subscribeId != null && activeItem.periodStatus == 1
-                          "
-                        >
-                          <template v-if="activeItem.subExamStatus === null">
-                            待预约考试
-                          </template>
+                    <template v-else-if="activeItem.periodStatus == 1">
+                      <template v-if="activeItem.periodPlush > 0"
+                        ><div class="note note--green">
+                          学时已上报注册中心
+                        </div></template
+                      >
+                      <template v-else
+                        >机构审核:
+                        <div class="note note--green">
+                          学时审核通过
+                        </div></template
+                      >
+                    </template>
+                    <template
+                      v-if="
+                        activeItem.subscribeId != null &&
+                        activeItem.periodStatus == 1
+                      "
+                    >
+                      <template v-if="activeItem.subExamStatus === null">
+                        待预约考试
+                      </template>
 
-                          <template
-                            v-else-if="
-                              activeItem.subExamStatus === 0 &&
-                              sysTime <
-                                $tools.TimeTotimestamp(
-                                  $tools.timestampToTime(
-                                    activeItem.subApplySiteExamTime,
-                                    true
-                                  ) +
-                                    ' ' +
-                                    activeItem.subApplySiteStartTime
-                                )
-                            "
-                          >
-                            待考试,考试时间:{{
-                              $tools.timestampToTime(
-                                activeItem.subApplySiteExamTime,
-                                true
-                              ) +
-                              " " +
-                              activeItem.subApplySiteStartTime
-                            }}
-                            -
-                            {{
+                      <template
+                        v-else-if="
+                          activeItem.subExamStatus === 0 &&
+                          sysTime <
+                            $tools.TimeTotimestamp(
                               $tools.timestampToTime(
                                 activeItem.subApplySiteExamTime,
                                 true
                               ) +
-                              " " +
-                              activeItem.subApplySiteEndTime
-                            }}
-                          </template>
-                          <template v-else-if="activeItem.subExamStatus === 0"
-                            >待出考试结果</template
-                          >
-                          <template v-else-if="activeItem.subExamStatus === 1">
-                            <span v-if="activeItem.subResult === null"
-                              >待出考试结果</span
-                            >
-                            <span v-if="activeItem.subResult === 0"
-                              >考试结果:不通过,需补考</span
-                            >
-                            <span v-else-if="activeItem.subResult === 1"
-                              >考试结果:通过,考试成绩为{{
-                                activeItem.subPerformance
-                              }}</span
-                            >
-                          </template>
-                          <template v-else-if="activeItem.subExamStatus === 2">
-                            缺考,无成绩,需补考
-                          </template>
-                          <template v-else-if="activeItem.subExamStatus === 3">
-                            作弊,无成绩,需补考
-                          </template>
-                          <template v-else-if="activeItem.subExamStatus === 4">
-                            替考,无成绩,需补考
-                          </template>
-                        </template>
+                                ' ' +
+                                activeItem.subApplySiteStartTime
+                            )
+                        "
+                      >
+                        待考试,考试时间:{{
+                          $tools.timestampToTime(
+                            activeItem.subApplySiteExamTime,
+                            true
+                          ) +
+                          " " +
+                          activeItem.subApplySiteStartTime
+                        }}
+                        -
+                        {{
+                          $tools.timestampToTime(
+                            activeItem.subApplySiteExamTime,
+                            true
+                          ) +
+                          " " +
+                          activeItem.subApplySiteEndTime
+                        }}
+                      </template>
+                      <template v-else-if="activeItem.subExamStatus === 0"
+                        >待出考试结果</template
+                      >
+                      <template v-else-if="activeItem.subExamStatus === 1">
+                        <span v-if="activeItem.subResult === null"
+                          >待出考试结果</span
+                        >
+                        <span v-if="activeItem.subResult === 0"
+                          >考试结果:不通过,需补考</span
+                        >
+                        <span v-else-if="activeItem.subResult === 1"
+                          >考试结果:通过,考试成绩为{{
+                            activeItem.subPerformance
+                          }}</span
+                        >
+                      </template>
+                      <template v-else-if="activeItem.subExamStatus === 2">
+                        缺考,无成绩,需补考
+                      </template>
+                      <template v-else-if="activeItem.subExamStatus === 3">
+                        作弊,无成绩,需补考
+                      </template>
+                      <template v-else-if="activeItem.subExamStatus === 4">
+                        替考,无成绩,需补考
                       </template>
                     </template>
                   </template>
+                </template>
+              </template>
+            </div>
+          </div>
+          <div class="course-items__body clearfix">
+            <div class="img">
+              <img
+                :src="$tools.splitImgHost(activeItem.coverUrl, true)"
+                alt=""
+              />
+            </div>
+            <div class="text">
+              <div class="title">
+                {{ activeItem.goodsName }}
+                <div class="note">
+                  {{ activeItem.courseNum }}课程
+                  {{ activeItem.secAllNum + activeItem.examNum }}节
+                  {{ activeItem.classHours }}学时
                 </div>
               </div>
-              <div class="course-items__body clearfix">
-                <div class="img">
-                  <img :src="$tools.splitImgHost(activeItem.coverUrl, true)" alt="" />
-                </div>
-                <div class="text">
-                  <div class="title">
-                    {{ activeItem.goodsName }}
-                    <div class="note">
-                      {{ activeItem.courseNum }}课程
-                      {{ activeItem.secAllNum + activeItem.examNum }}节
-                      {{ activeItem.classHours }}学时
-                    </div>
-                  </div>
-                  <div class="progress">
-                    学习进度
-                    <el-progress
-                      class="progress-line"
-                      :stroke-width="16"
-                      :format="progressText(activeItem)"
-                      :percentage="
-                        ((activeItem.stuAllNum + activeItem.recordNum) /
-                          (activeItem.secAllNum + activeItem.examNum) || 0) * 100
-                      "
-                    ></el-progress>
-                  </div>
-                </div>
-                <div class="btns-wrap">
-                  <div class="btns">
-                    <el-button
-                      type="primary"
-                      class="btn btn--normal"
-                      :class="{
-                        disabled:
-                          (activeItem.serviceStartTime &&
-                            (sysTime <= activeItem.serviceStartTime ||
-                              sysTime >= activeItem.serviceEndTime)) ||
-                          (activeItem.classStartTime &&
-                            sysTime <= activeItem.classStartTime) ||
-                          (activeItem.classEndTime && sysTime >= activeItem.classEndTime) ||
-                          activeItem.learningStatus == 2 ||
-                          activeItem.classStatus == 0 ||
-                          (activeItem.learningStatus == 3 &&
-                            sysTime < activeItem.learningTimeStart),
-                      }"
-                      @click="goCourseDetail(activeItem)"
-                      >进入学习</el-button
-                    >
-
-                    <el-button
-                      type="primary"
-                      class="btn"
-                      @click="appointment(activeItem)"
-                      v-if="
-                        activeItem.applyStatus === 1 &&
-                        !(
-                          sysTime <= activeItem.serviceStartTime ||
-                          sysTime >= activeItem.serviceEndTime ||
-                          (activeItem.classStartTime &&
-                            sysTime <= activeItem.classStartTime) ||
-                          (activeItem.classEndTime && sysTime >= activeItem.classEndTime) ||
-                          activeItem.learningStatus == 2 ||
-                          activeItem.classStatus == 0 ||
-                          (activeItem.learningStatus == 3 &&
-                            sysTime < activeItem.learningTimeStart) || !activeItem.examApplyGoodsList.length
-                        )
-                      "
-                      >预约考试</el-button
-                    >
-
-                    <el-button
-                      type="danger"
-                      class="btn btn--warm"
-                      @click="selectClass(activeItem)"
-                      v-if="
-                        activeItem.gradeStatus == 1 &&
-                        activeItem.status == 1 &&
-                        activeItem.serviceEndTime > sysTime &&
-                        activeItem.serviceStartTime < sysTime &&
-                        activeItem.classEndTime &&
-                        activeItem.classEndTime < sysTime &&
-                        (activeItem.periodStatus == 0 || activeItem.periodStatus == -1) &&
-                        activeItem.studyCount > 0
-                      "
-                    >
-                      选班重学
-                    </el-button>
-                    <el-button
-                      type="primary"
-                      class="btn"
-                      v-if="
-                        activeItem.beforeStatus === 1 &&
-                        !(
-                          sysTime <= activeItem.serviceStartTime ||
-                          sysTime >= activeItem.serviceEndTime ||
-                          (activeItem.classStartTime &&
-                            sysTime <= activeItem.classStartTime) ||
-                          (activeItem.classEndTime && sysTime >= activeItem.classEndTime) ||
-                          activeItem.learningStatus == 2 ||
-                          activeItem.classStatus == 0 ||
-                          (activeItem.learningStatus == 3 &&
-                            sysTime < activeItem.learningTimeStart)
-                        )
-                      "
-                      @click="appBeforeAddress(activeItem)"
-                      >进入刷题</el-button
-                    >
-                  </div>
-                </div>
+              <div class="progress">
+                学习进度
+                <el-progress
+                  class="progress-line"
+                  :stroke-width="16"
+                  :format="progressText(activeItem)"
+                  :percentage="
+                    ((activeItem.stuAllNum + activeItem.recordNum) /
+                      (activeItem.secAllNum + activeItem.examNum) || 0) * 100
+                  "
+                ></el-progress>
               </div>
-              <template
-                v-if="
-                  !(
-                    sysTime < activeItem.serviceStartTime ||
-                    sysTime > activeItem.serviceEndTime
-                  )
-                "
-              >
-                <div
-                  class="course-items__footer"
-                  v-if="activeItem.classEndTime && activeItem.classEndTime < sysTime"
+            </div>
+            <div class="btns-wrap">
+              <div class="btns">
+                <el-button
+                  type="primary"
+                  class="btn btn--normal"
+                  :class="{
+                    disabled:
+                      (activeItem.serviceStartTime &&
+                        (sysTime <= activeItem.serviceStartTime ||
+                          sysTime >= activeItem.serviceEndTime)) ||
+                      (activeItem.classStartTime &&
+                        sysTime <= activeItem.classStartTime) ||
+                      (activeItem.classEndTime &&
+                        sysTime >= activeItem.classEndTime) ||
+                      activeItem.learningStatus == 2 ||
+                      activeItem.classStatus == 0 ||
+                      (activeItem.learningStatus == 3 &&
+                        sysTime < activeItem.learningTimeStart),
+                  }"
+                  @click="goCourseDetail(activeItem)"
+                  >进入学习</el-button
                 >
-                  <span class="text"
-                    >班级有效期:{{
-                      $tools.timestampToTime(activeItem.classStartTime, true, true)
-                    }}
-                    -
-                    {{
-                      $tools.timestampToTime(activeItem.classEndTime, true, true)
-                    }}</span
-                  >
-                  <span class="text text--red"
-                    >班级状态:已过期,有疑问请联系020-87085982</span
-                  >
-                </div>
 
-                <div
-                  class="course-items__footer"
-                  v-else-if="
-                    activeItem.classStartTime && activeItem.classStartTime > sysTime
+                <el-button
+                  type="primary"
+                  class="btn"
+                  @click="appointment(activeItem)"
+                  v-if="
+                    activeItem.applyStatus === 1 &&
+                    !(
+                      sysTime <= activeItem.serviceStartTime ||
+                      sysTime >= activeItem.serviceEndTime ||
+                      (activeItem.classStartTime &&
+                        sysTime <= activeItem.classStartTime) ||
+                      (activeItem.classEndTime &&
+                        sysTime >= activeItem.classEndTime) ||
+                      activeItem.learningStatus == 2 ||
+                      activeItem.classStatus == 0 ||
+                      (activeItem.learningStatus == 3 &&
+                        sysTime < activeItem.learningTimeStart) ||
+                      !activeItem.examApplyGoodsList.length
+                    )
                   "
+                  >预约考试</el-button
                 >
-                  <span class="text"
-                    >班级有效期:{{
-                      $tools.timestampToTime(activeItem.classStartTime, true, true)
-                    }}
-                    -
-                    {{
-                      $tools.timestampToTime(activeItem.classEndTime, true, true)
-                    }}</span
-                  >
-                  <span class="text"
-                    >班级状态:未到学习时间,有疑问请联系 020-87085982</span
-                  >
-                </div>
 
-                <template v-else>
-                  <div
-                    class="course-items__footer"
-                    v-if="
-                      activeItem.gradeId != 0 &&
-                      activeItem.gradeStatus == 1 &&
-                      activeItem.classStatus != null
-                    "
-                  >
-                    <span class="text"
-                      >班级状态:
-                      {{
-                        activeItem.classStatus == 1
-                          ? "已开班"
-                          : activeItem.classStatus == 0
-                          ? "未开班"
-                          : ""
-                      }}
-                    </span>
-                    <span class="text"
-                      >班级有效期:{{
-                        $tools.timestampToTime(activeItem.classStartTime, true, true)
-                      }}-{{
-                        $tools.timestampToTime(activeItem.classEndTime, true, true)
-                      }}</span
-                    >
-                  </div>
-                  <div class="course-items__footer" v-if="activeItem.classStatus == 0">
-                    <span class="text">教务处正在为您开通班级,请耐心等待</span>
-                  </div>
-                </template>
-              </template>
+                <el-button
+                  type="danger"
+                  class="btn btn--warm"
+                  @click="selectClass(activeItem)"
+                  v-if="
+                    activeItem.gradeStatus == 1 &&
+                    activeItem.status == 1 &&
+                    activeItem.serviceEndTime > sysTime &&
+                    activeItem.serviceStartTime < sysTime &&
+                    activeItem.classEndTime &&
+                    activeItem.classEndTime < sysTime &&
+                    (activeItem.periodStatus == 0 ||
+                      activeItem.periodStatus == -1) &&
+                    activeItem.studyCount > 0
+                  "
+                >
+                  选班重学
+                </el-button>
+                <el-button
+                  type="primary"
+                  class="btn"
+                  v-if="
+                    activeItem.beforeStatus === 1 &&
+                    !(
+                      sysTime <= activeItem.serviceStartTime ||
+                      sysTime >= activeItem.serviceEndTime ||
+                      (activeItem.classStartTime &&
+                        sysTime <= activeItem.classStartTime) ||
+                      (activeItem.classEndTime &&
+                        sysTime >= activeItem.classEndTime) ||
+                      activeItem.learningStatus == 2 ||
+                      activeItem.classStatus == 0 ||
+                      (activeItem.learningStatus == 3 &&
+                        sysTime < activeItem.learningTimeStart)
+                    )
+                  "
+                  @click="appBeforeAddress(activeItem)"
+                  >进入刷题</el-button
+                >
+              </div>
+            </div>
+          </div>
+          <template
+            v-if="
+              !(
+                sysTime < activeItem.serviceStartTime ||
+                sysTime > activeItem.serviceEndTime
+              )
+            "
+          >
+            <div
+              class="course-items__footer"
+              v-if="
+                activeItem.classEndTime && activeItem.classEndTime < sysTime
+              "
+            >
+              <span class="text"
+                >班级有效期:{{
+                  $tools.timestampToTime(activeItem.classStartTime, true, true)
+                }}
+                -
+                {{
+                  $tools.timestampToTime(activeItem.classEndTime, true, true)
+                }}</span
+              >
+              <span class="text text--red"
+                >班级状态:已过期,有疑问请联系020-87085982</span
+              >
             </div>
-          
+
+            <div
+              class="course-items__footer"
+              v-else-if="
+                activeItem.classStartTime && activeItem.classStartTime > sysTime
+              "
+            >
+              <span class="text"
+                >班级有效期:{{
+                  $tools.timestampToTime(activeItem.classStartTime, true, true)
+                }}
+                -
+                {{
+                  $tools.timestampToTime(activeItem.classEndTime, true, true)
+                }}</span
+              >
+              <span class="text"
+                >班级状态:未到学习时间,有疑问请联系 020-87085982</span
+              >
+            </div>
+
+            <template v-else>
+              <div
+                class="course-items__footer"
+                v-if="
+                  activeItem.gradeId != 0 &&
+                  activeItem.gradeStatus == 1 &&
+                  activeItem.classStatus != null
+                "
+              >
+                <span class="text"
+                  >班级状态:
+                  {{
+                    activeItem.classStatus == 1
+                      ? "已开班"
+                      : activeItem.classStatus == 0
+                      ? "未开班"
+                      : ""
+                  }}
+                </span>
+                <span class="text"
+                  >班级有效期:{{
+                    $tools.timestampToTime(
+                      activeItem.classStartTime,
+                      true,
+                      true
+                    )
+                  }}-{{
+                    $tools.timestampToTime(activeItem.classEndTime, true, true)
+                  }}</span
+                >
+              </div>
+              <div
+                class="course-items__footer"
+                v-if="activeItem.classStatus == 0"
+              >
+                <span class="text">教务处正在为您开通班级,请耐心等待</span>
+              </div>
+            </template>
+          </template>
         </div>
+      </div>
       <div class="my-course">
         <div class="my-course__header">
           <el-tabs :value="activeName" @tab-click="tabChange">
@@ -678,7 +705,8 @@
                           item.learningStatus == 2 ||
                           item.classStatus == 0 ||
                           (item.learningStatus == 3 &&
-                            sysTime < item.learningTimeStart)  || !item.examApplyGoodsList.length
+                            sysTime < item.learningTimeStart) ||
+                          !item.examApplyGoodsList.length
                         )
                       "
                       >预约考试</el-button
@@ -832,12 +860,21 @@
       </div>
     </el-dialog>
     <!-- 预约考试弹窗 -->
-    <appoint-test :appointModal.sync="appointModal" :appointItem='appointItem'></appoint-test>
+    <appoint-test
+      :appointModal.sync="appointModal"
+      :appointItem="appointItem"
+    ></appoint-test>
 
     <!-- 选班重学弹窗 -->
-    <SelectClassModal ref="selectClassModal" @selectClassOk="selectClassOk"></SelectClassModal>
+    <SelectClassModal
+      ref="selectClassModal"
+      @selectClassOk="selectClassOk"
+    ></SelectClassModal>
 
-    <RebuildModal ref="rebuildModal" @rebuildSubmit="rebuildSubmit($event)"></RebuildModal>
+    <RebuildModal
+      ref="rebuildModal"
+      @rebuildSubmit="rebuildSubmit($event)"
+    ></RebuildModal>
 
     <ExercisesModal ref="exercisesModal"></ExercisesModal>
     <!-- <el-dialog
@@ -892,9 +929,7 @@
         </el-descriptions>
 
         <div class="">
-          <el-checkbox v-model="confirmChecked"
-            >确认个人信息无误</el-checkbox
-          >
+          <el-checkbox v-model="confirmChecked">确认个人信息无误</el-checkbox>
         </div>
       </div>
       <span slot="footer" class="dialog-footer">
@@ -919,7 +954,7 @@ import { mapGetters, mapActions } from "vuex";
 import SelectClassModal from "@/components/selectClassModal";
 import RebuildModal from "@/components/rebuildModal";
 import ExercisesModal from "@/components/exercisesModal";
-import AppointTest from './components/AppointTest.vue'
+import AppointTest from "./components/AppointTest.vue";
 import * as baseUrls from "@/axios.js";
 export default {
   name: "MyCourse",
@@ -968,7 +1003,7 @@ export default {
     ...mapActions(["getUserInfo"]),
     openBoxs(data) {
       console.log(data);
-      this.activeItem = data
+      this.activeItem = data;
       this.dialogVisible = true;
     },
     activeFunc() {},
@@ -1047,6 +1082,37 @@ export default {
       this.courseGoodsList();
     },
     async goCourseDetail(item) {
+      if (item.interfaceAccountId > 0 && item.learnStatus > 0) {
+        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,y,done) => {
+            if (type == "confirm") {
+              window.open("http://admin.zhujianpeixun.com/", "_blank");
+            } else if (type == "cancel") {
+              // this.$router.back(-1);
+              done()
+            }
+          },
+          confirmButtonText: "跳转学习网址",
+          cancelButtonText: "关闭",
+          closeOnClickModal: false,
+          closeOnPressEscape: false,
+          distinguishCancelAndClose: false,
+          showClose: false,
+        });
+        return;
+      }
       this.$emit("backData", item);
       this.dialogVisible = false;
       return;
@@ -1614,193 +1680,192 @@ export default {
     }
   }
 }
-.headerStyle{
-    .title{
-        padding: 6px 12px;
-        color: #3f8dfd;
-        background-color: #F8F8F9;
-
-    }
+.headerStyle {
+  .title {
+    padding: 6px 12px;
+    color: #3f8dfd;
+    background-color: #f8f8f9;
+  }
 }
 .course-items {
-        margin-top: 10px;
-        background: #fafbfc;
-        border-radius: 8px;
-        overflow: hidden;
-        padding-bottom: 24px;
-        margin-bottom: 24px;
-        border-bottom: 2px solid #eee;
-        &__header {
-          height: 40px;
-          border-bottom: 1px solid #eee;
-          padding: 0 18px;
-
-          .state {
-            margin-top: 8px;
-            float: left;
-            font-size: 14px;
-            font-family: Microsoft YaHei;
-            font-weight: 400;
-            color: #666666;
+  margin-top: 10px;
+  background: #fafbfc;
+  border-radius: 8px;
+  overflow: hidden;
+  padding-bottom: 24px;
+  margin-bottom: 24px;
+  border-bottom: 2px solid #eee;
+  &__header {
+    height: 40px;
+    border-bottom: 1px solid #eee;
+    padding: 0 18px;
+
+    .state {
+      margin-top: 8px;
+      float: left;
+      font-size: 14px;
+      font-family: Microsoft YaHei;
+      font-weight: 400;
+      color: #666666;
+
+      .red {
+        color: #ff3b30;
+      }
 
-            .red {
-              color: #ff3b30;
-            }
+      .note {
+        vertical-align: middle;
+        display: inline-block;
+        padding: 0 10px;
+        height: 24px;
+        background: #ffeceb;
+        border: 1px solid #ff3b30;
+        border-radius: 12px;
+        font-size: 14px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #ff3b30;
+        text-align: center;
+        line-height: 24px;
+        margin-right: 10px;
 
-            .note {
-              vertical-align: middle;
-              display: inline-block;
-              padding: 0 10px;
-              height: 24px;
-              background: #ffeceb;
-              border: 1px solid #ff3b30;
-              border-radius: 12px;
-              font-size: 14px;
-              font-family: Microsoft YaHei;
-              font-weight: 400;
-              color: #ff3b30;
-              text-align: center;
-              line-height: 24px;
-              margin-right: 10px;
+        &--yellow {
+          border-color: #ffb001;
+          color: #ffb001;
+          background: #fff8e8;
+        }
 
-              &--yellow {
-                border-color: #ffb001;
-                color: #ffb001;
-                background: #fff8e8;
-              }
+        &--green {
+          border-color: #56dc68;
+          color: #56dc68;
+          background: #e6feea;
+        }
+      }
+    }
 
-              &--green {
-                border-color: #56dc68;
-                color: #56dc68;
-                background: #e6feea;
-              }
-            }
-          }
+    .time {
+      float: right;
+      line-height: 40px;
+      text-align: right;
+      font-size: 12px;
+      font-family: Microsoft YaHei;
+      font-weight: 400;
+      color: #666666;
+
+      &--red {
+        color: #ff3b30;
+      }
+    }
+  }
 
-          .time {
-            float: right;
-            line-height: 40px;
-            text-align: right;
-            font-size: 12px;
-            font-family: Microsoft YaHei;
-            font-weight: 400;
-            color: #666666;
+  &__body {
+    .img {
+      float: left;
+      width: 160px;
+      height: 90px;
+
+      img {
+        max-width: 100%;
+        max-height: 100%;
+      }
+    }
 
-            &--red {
-              color: #ff3b30;
-            }
-          }
+    .text {
+      float: left;
+      margin-left: 12px;
+      .title {
+        margin-top: 10px;
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: bold;
+        color: #333333;
+        .note {
+          display: inline-block;
+          vertical-align: middle;
+          border: 1px solid #333333;
+          border-radius: 4px;
+          font-size: 12px;
+          font-family: Microsoft YaHei;
+          font-weight: 400;
+          color: #333333;
+          padding: 2px 5px;
+          margin-left: 12px;
         }
+      }
 
-        &__body {
-          .img {
-            float: left;
-            width: 160px;
-            height: 90px;
+      .progress {
+        margin-top: 30px;
 
-            img {
-              max-width: 100%;
-              max-height: 100%;
-            }
-          }
+        font-size: 14px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #333333;
 
-          .text {
-            float: left;
-            margin-left: 12px;
-            .title {
-              margin-top: 10px;
-              font-size: 16px;
-              font-family: Microsoft YaHei;
-              font-weight: bold;
-              color: #333333;
-              .note {
-                display: inline-block;
-                vertical-align: middle;
-                border: 1px solid #333333;
-                border-radius: 4px;
-                font-size: 12px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                color: #333333;
-                padding: 2px 5px;
-                margin-left: 12px;
-              }
-            }
+        &-line {
+          width: 220px;
+          display: inline-block;
+        }
 
-            .progress {
-              margin-top: 30px;
+        /deep/ .el-progress-bar {
+          padding-right: 70px;
+          margin-right: -70px;
+        }
+      }
+    }
 
-              font-size: 14px;
-              font-family: Microsoft YaHei;
-              font-weight: 400;
-              color: #333333;
+    .btns-wrap {
+      display: table;
+      float: right;
+      height: 90px;
+      width: 130px;
 
-              &-line {
-                width: 220px;
-                display: inline-block;
-              }
+      .btns {
+        display: table-cell;
+        vertical-align: middle;
+        text-align: center;
 
-              /deep/ .el-progress-bar {
-                padding-right: 70px;
-                margin-right: -70px;
-              }
+        .btn {
+          cursor: pointer;
+          margin: 2px 0;
+          width: 122px;
+          height: 32px;
+          padding: 0;
+          border-radius: 16px;
+          display: inline-block;
+          text-align: center;
+          line-height: 32px;
+          color: #fff;
+
+          &--normal {
+            &.disabled {
+              background: rgb(101, 164, 253);
+              border-color: rgb(101, 164, 253);
             }
           }
 
-          .btns-wrap {
-            display: table;
-            float: right;
-            height: 90px;
-            width: 130px;
-
-            .btns {
-              display: table-cell;
-              vertical-align: middle;
-              text-align: center;
-
-              .btn {
-                cursor: pointer;
-                margin: 2px 0;
-                width: 122px;
-                height: 32px;
-                padding: 0;
-                border-radius: 16px;
-                display: inline-block;
-                text-align: center;
-                line-height: 32px;
-                color: #fff;
+          &--warm {
+            background: #ff3b30;
 
-                &--normal {
-                  &.disabled {
-                    background: rgb(101, 164, 253);
-                    border-color: rgb(101, 164, 253);
-                  }
-                }
-
-                &--warm {
-                  background: #ff3b30;
-
-                  &:hover {
-                    background: #f56c6c;
-                  }
-                }
-              }
+            &:hover {
+              background: #f56c6c;
             }
           }
         }
+      }
+    }
+  }
 
-        &__footer {
-          padding: 20px 18px;
-          font-size: 14px;
-          color: #333;
+  &__footer {
+    padding: 20px 18px;
+    font-size: 14px;
+    color: #333;
 
-          .text {
-            margin-right: 20px;
+    .text {
+      margin-right: 20px;
 
-            &--red {
-              color: #ff3b30;
-            }
-          }
-        }
+      &--red {
+        color: #ff3b30;
       }
+    }
+  }
+}
 </style>

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

@@ -1317,6 +1317,7 @@ export default {
         learningStatus,
         learningTimeStart,
       } = this.goodsData;
+      console.log(interfaceAccountId,learnStatus,"xzx")
       if (interfaceAccountId > 0) {
         learnStatus == 1
           ? this.rebuildSubmit(this.goodsData, section)