chenxiong 3 жил өмнө
parent
commit
da94821d97
40 өөрчлөгдсөн 2285 нэмэгдсэн , 2163 устгасан
  1. 8 0
      src/apis/course.js
  2. 4 4
      src/axios.js
  3. 263 0
      src/components/buyCourseModal/index.vue
  4. 72 0
      src/components/exercisesModal/index.vue
  5. 238 0
      src/components/goodsItem/index.vue
  6. 6 2
      src/components/header/index.vue
  7. 320 0
      src/components/rebuildModal/index.vue
  8. 156 0
      src/components/selectClassModal/index.vue
  9. 1 1
      src/components/toolbar/index.vue
  10. 21 20
      src/pages/about/index.vue
  11. 28 5
      src/pages/bank-exam-all-explain/index.vue
  12. 31 11
      src/pages/bank-exam-continue/index.vue
  13. 23 5
      src/pages/bank-exam-explain/index.vue
  14. 29 5
      src/pages/bank-exam-wrong-explain/index.vue
  15. 35 14
      src/pages/bank-exam/index.vue
  16. 5 103
      src/pages/bank-list/index.vue
  17. 4 1
      src/pages/bank-report/index.vue
  18. 2 2
      src/pages/cart/index.vue
  19. 236 244
      src/pages/course-detail/index.vue
  20. 4 3
      src/pages/course-exam/index.vue
  21. 5 110
      src/pages/course-list/index.vue
  22. 214 184
      src/pages/goods-detail/bank-detail.vue
  23. 194 197
      src/pages/goods-detail/course-detail.vue
  24. 51 213
      src/pages/home/index.vue
  25. 4 99
      src/pages/payment-success/index.vue
  26. 7 9
      src/pages/payment/index.vue
  27. 1 0
      src/pages/person-center/index.vue
  28. 88 85
      src/pages/person-center/my-bank/bank-detail/index.vue
  29. 18 0
      src/pages/person-center/my-bank/bank-explain-detail/index.vue
  30. 10 4
      src/pages/person-center/my-classhour/appointment/index.vue
  31. 17 278
      src/pages/person-center/my-classhour/index/index.vue
  32. 31 418
      src/pages/person-center/my-course/index.vue
  33. 2 2
      src/pages/person-center/my-info/index.vue
  34. 64 117
      src/pages/person-center/my-message/index.vue
  35. 1 2
      src/pages/person-center/my-order/index.vue
  36. 23 5
      src/pages/subject/collect-bank.vue
  37. 23 5
      src/pages/subject/collect-type-bank.vue
  38. 23 5
      src/pages/subject/wrong-bank.vue
  39. 23 5
      src/pages/subject/wrong-type-bank.vue
  40. 0 5
      src/store/index.js

+ 8 - 0
src/apis/course.js

@@ -230,6 +230,14 @@ export default {
 		})
 	},
 
+  faceCertificationIdCardCompareFace(data) {
+		return request({
+			url: '/face/certification/idCardCompareFace',
+			method: 'post',
+			data:data
+		})
+	},
+
 
   appBeforeAddress(data) {
 		return request({

+ 4 - 4
src/axios.js

@@ -1,13 +1,13 @@
 import axios from 'axios'
 import store from './store'
-export const BASE_URL = 'https://api.xyyxt.net'   //release
-// export const BASE_URL = 'http://42.192.164.187:19005'    //test
+// export const BASE_URL = 'https://api.xyyxt.net'   //release
+export const BASE_URL = 'http://42.192.164.187:19005'    //test
 export const tenantId = '867735392558919680'
 
 
 //图片上传api
-export const BASE_IMG_URL = 'https://file.xyyxt.net/'     //release
-// export const BASE_IMG_URL = 'https://file-dev.xyyxt.net/'  //test
+// export const BASE_IMG_URL = 'https://file.xyyxt.net/'     //release
+export const BASE_IMG_URL = 'https://file-dev.xyyxt.net/'  //test
 
 import tools from './common/tools'
 import router from './router'

+ 263 - 0
src/components/buyCourseModal/index.vue

@@ -0,0 +1,263 @@
+<template>
+  <div id="buy-course-modal">
+    <el-dialog
+      width="800px"
+      class="select-class"
+      :visible.sync="selectClassModal"
+    >
+      <div class="select-class__content">
+        <div
+          class="selection"
+          v-if="
+            goodsDetail.templateType == 'class' && goodsDetail.goodsType == 1
+          "
+        >
+          <el-select
+            class="select"
+            v-model="gradeId"
+            placeholder="请选择班级"
+            size="small"
+            @click.native="selectClick(goodsDetail, 'class')"
+          >
+            <el-option
+              v-for="item in gradeList"
+              :key="item.gradeId"
+              :disabled="
+                item.studentNum > 0 && item.studentNum == item.studentUpper
+              "
+              :label="
+                item.classEndTime
+                  ? `${item.className} 有效期至:${$tools.timestampToTime(
+                      item.classEndTime
+                    )},本班还剩${$tools.GetRTime(
+                      item.classEndTime
+                    )}天将结束学习`
+                  : `${item.className}`
+              "
+              :value="item.gradeId"
+            >
+            </el-option>
+          </el-select>
+        </div>
+
+        <div
+          class="selection"
+          v-if="
+            goodsDetail.templateType == 'apply' && goodsDetail.goodsType == 1
+          "
+        >
+          <el-select
+            v-model="educationId"
+            placeholder="请选择考期"
+            size="small"
+            @click.native="selectClick(goodsDetail, 'exam')"
+          >
+            <el-option
+              v-for="item in examineList"
+              :key="item.educationId"
+              :label="item.examineName"
+              :value="item.educationId"
+            >
+            </el-option>
+          </el-select>
+          <el-cascader
+            size="small"
+            :props="props"
+            ref="cascader"
+            :options="provinceList"
+            v-model="examArea"
+            @change="areaChange(goodsDetail)"
+            clearable
+            placeholder="请选择报考地区"
+          ></el-cascader>
+        </div>
+      </div>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="pay">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from "vuex";
+export default {
+  name: "BuyCourseModal",
+  computed: {
+    ...mapGetters(["userInfo"]),
+  },
+  data() {
+    return {
+      selectClassModal: false,
+      goodsDetail: {},
+      provinceList: [],
+      gradeList: [],
+      gradeId: "",
+      examineList: [],
+      examArea: [],
+      educationId: "",
+      props: {
+        lazy: true,
+        lazyLoad: this.lazyLoad,
+      },
+    };
+  },
+  mounted() {},
+  methods: {
+    showModal(item) {
+      this.selectClassModal = true;
+      this.goodsDetail = item;
+    },
+    selectClick(goodsDetail, type) {
+      if (type == "class") {
+        //选择班级
+        if (!this.gradeList.length) {
+          this.$request
+            .goodsGradeList({ goodsId: goodsDetail.goodsId })
+            .then((res) => {
+              this.gradeList = res.rows;
+              if (this.gradeList.length == 0) {
+                let item = {
+                  className: "系统分班",
+                  gradeId: 0,
+                };
+                this.gradeList.push(item);
+              } else {
+                let isGradeFull = this.gradeList.every(
+                  (item) =>
+                    item.studentNum > 0 && item.studentNum == item.studentUpper
+                );
+                //所有班级都满了
+                if (isGradeFull) {
+                  let item = {
+                    className: "系统分班",
+                    gradeId: 0,
+                  };
+                  this.gradeList.unshift(item);
+                }
+              }
+            });
+        }
+      } else if (type == "apply") {
+        //选择考试地点
+      } else if (type == "exam") {
+        //选择考期
+        this.$request
+          .getExamineList({ projectId: goodsDetail.projectId })
+          .then((res) => {
+            this.examineList = res.rows;
+          });
+      }
+    },
+    pay() {
+      if (
+        this.goodsDetail.templateType == "class" &&
+        this.goodsDetail.goodsType == 1
+      ) {
+        if (!this.gradeId && this.gradeId !== 0) {
+          this.$message({
+            message: "请选择班级",
+            type: "warning",
+          });
+          return;
+        }
+      }
+
+      if (
+        this.goodsDetail.templateType == "apply" &&
+        this.goodsDetail.goodsType == 1
+      ) {
+        // if (!item.applyAreas.areaName) {
+        // 	uni.showModal({
+        // 		title: '提示',
+        // 		content: '请选择报考地区',
+        // 		showCancel: false
+        // 	});
+        // 	return false;
+        // }
+        if (!this.educationId) {
+          this.$message({
+            message: "请选择考期",
+            type: "warning",
+          });
+          return false;
+        }
+      }
+
+      let selectGoodsList = JSON.parse(JSON.stringify([this.goodsDetail]));
+      selectGoodsList.forEach((item) => {
+        if (item.goodsType == 1) {
+          if (item.templateType == "class") {
+            let goodsInputData = {
+              type: "class",
+              gradeId: this.gradeId,
+              gradeJson: JSON.stringify(
+                this.gradeList.find((grade) => grade.gradeId == this.gradeId)
+              ),
+            };
+            item.goodsInputData = goodsInputData;
+          }
+          if (item.templateType == "apply") {
+            let goodsInputData = {
+              type: "apply",
+              applyAreasJson: JSON.stringify(this.applyAreas),
+              examDateJson: JSON.stringify(
+                this.examineList.find(
+                  (exam) => exam.educationId == this.educationId
+                )
+              ),
+            };
+            item.goodsInputData = goodsInputData;
+          }
+        }
+      });
+
+      localStorage.setItem("checkGoodsList", JSON.stringify(selectGoodsList));
+
+      this.$router.push({
+        path: "/payment",
+      });
+    },
+    /**
+     * 获取所有省份
+     */
+    getProvinceList() {
+      this.$request.getProvinceList().then((res) => {
+        this.provinceList = res.rows.map((item) => ({
+          value: item.areaId,
+          label: `${item.areaName}`,
+          leaf: false,
+        }));
+      });
+    },
+    areaChange() {
+      let node = this.$refs["cascader"].getCheckedNodes()[0]; //选中的根节点
+      console.log(node);
+      this.applyAreas = {
+        areaName: node.parent.label,
+        areaId: node.parent.value,
+        cityId: node.value,
+        cityName: node.label,
+      };
+    },
+  },
+};
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped lang="scss">
+.exercises-modal {
+  &__content {
+    > div {
+      font-size: 16px;
+      line-height: 30px;
+      text-align: center;
+
+      img {
+        display: inline;
+      }
+    }
+  }
+}
+</style>

+ 72 - 0
src/components/exercisesModal/index.vue

@@ -0,0 +1,72 @@
+<template>
+  <div id="select-modal">
+    <el-dialog
+      title="提示"
+      class="exercises-modal"
+      :visible.sync="showExercisesModal"
+      width="800px"
+    >
+      <div class="exercises-modal__content">
+        <div>1.不支持网页端刷题</div>
+        <div>2.请使用手机扫码,进入【祥粤云学堂】小程序环境,进行刷题</div>
+        <div>
+          <img src="@/assets/xcxqrcode.jpg" alt="" />
+        </div>
+      </div>
+
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="showExercisesModal = false"
+          >确 定</el-button
+        >
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from "vuex";
+export default {
+  name: "selectClassModal",
+  computed: {
+    ...mapGetters(["userInfo"]),
+  },
+  data() {
+    return {
+      showExercisesModal: false,
+    };
+  },
+  mounted() {},
+  methods: {
+    showModal(item) {
+      this.$request
+        .appBeforeAddress({
+          // goodsId,
+          orderGoodsId: item.orderGoodsId,
+        })
+        .then((res) => {
+          this.showExercisesModal = true;
+        })
+        .catch((err) => {
+          this.$message.warning(err.msg);
+        });
+    },
+  },
+};
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped lang="scss">
+.exercises-modal {
+  &__content {
+    > div {
+      font-size: 16px;
+      line-height: 30px;
+      text-align: center;
+
+      img {
+        display: inline;
+      }
+    }
+  }
+}
+</style>

+ 238 - 0
src/components/goodsItem/index.vue

@@ -0,0 +1,238 @@
+<template>
+  <div>
+    <div class="course-item" @click="goodsDetail(item)">
+      <div class="course-item__img">
+        <div class="note" v-if="item.year">{{ item.year }}</div>
+        <img
+          v-if="item.coverUrl"
+          :src="$tools.splitImgHost(item.coverUrl)"
+          alt=""
+        />
+      </div>
+      <div class="course-item__title">
+        {{ item.goodsName }}
+      </div>
+      <div class="course-item__desc">
+        <div class="price">¥{{ item.standPrice }}</div>
+      </div>
+      <div class="course-item__btns">
+        <a class="add" @click.stop="addCart(item)">加购物车</a>
+        <a class="buynow" @click.stop="buyNow(item)">立即购买</a>
+      </div>
+    </div>
+
+    <BuyCourseModal ref="selectClassModal"></BuyCourseModal>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from "vuex";
+import BuyCourseModal from "@/components/buyCourseModal/index";
+export default {
+  name: "courseItem",
+  components: {
+    BuyCourseModal,
+  },
+  computed: {
+    ...mapGetters(["userInfo"]),
+  },
+  props: ["item"],
+  data() {
+    return {
+      selectClassModal: false,
+    };
+  },
+  mounted() {},
+  methods: {
+    /**
+     * 查看商品详情
+     */
+    goodsDetail(item) {
+      this.getGoodsDetail(item.goodsId).then((res) => {
+        console.log(res);
+        if (res.goodsType === 1) {
+          this.$router.push({
+            path: "/course-detail/" + res.goodsId,
+          });
+        }
+        if (res.goodsType === 2) {
+          this.$router.push({
+            path: "/bank-detail/" + res.goodsId,
+          });
+        }
+      });
+    },
+
+    buyNow(item) {
+      console.log(item);
+      if (!this.$tools.isLogin()) {
+        this.setCurrentRouter(this.$route);
+        this.$router.push({
+          path: "/login",
+        });
+        return;
+      }
+
+      this.getGoodsDetail(item.goodsId).then((res) => {
+        if (res.goodsType === 1) {
+          this.$refs.selectClassModal.showModal(res);
+        }
+        if (res.goodsType === 2) {
+          let selectGoodsList = JSON.parse(JSON.stringify([res]));
+          localStorage.setItem(
+            "checkGoodsList",
+            JSON.stringify(selectGoodsList)
+          );
+          this.$router.push({
+            path: "/payment",
+          });
+        }
+      });
+
+      if (item.type === 1) {
+      }
+      if (item.type === 2) {
+      }
+    },
+
+    /**
+     * 加入购物车
+     */
+    addCart(item) {
+      this.$request
+        .addCart({ goodsId: item.goodsId })
+        .then((res) => {
+          if (res) {
+            this.getCartCount();
+            this.$message({
+              message: "加入购物车成功",
+              type: "success",
+            });
+          }
+        })
+        .catch((err) => {
+          if (err.code == 500) {
+            this.$message({
+              message: err.msg,
+              type: "warning",
+            });
+          }
+        });
+    },
+
+    getGoodsDetail(goodsId) {
+      return new Promise((resolve) => {
+        this.$request.commonGoodsDetail(goodsId).then((res) => {
+          resolve(res.data);
+        });
+      });
+    },
+  },
+};
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped lang="scss">
+.course-item {
+  cursor: pointer;
+  margin: 94px 7px 0;
+  width: 240px;
+  height: 193px;
+  background: #ffffff;
+  box-shadow: 0px 3px 6px 0px rgba(213, 218, 224, 0.8);
+  border-radius: 10px;
+  position: relative;
+  background: #fff;
+  padding-top: 70px;
+
+  &__img {
+    width: 224px;
+    height: 125px;
+    background: #3f8dfd;
+    border-radius: 10px 8px 8px 8px;
+    background: #ffffff;
+    position: absolute;
+    left: 8px;
+    top: -62px;
+    background: rgba(122, 136, 246, 1);
+    overflow: hidden;
+    .note {
+      position: absolute;
+      top: 0px;
+      left: 0px;
+      z-index: 2;
+      width: 80px;
+      height: 24px;
+      background: #d94404;
+      box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
+      border-radius: 10px 0px 20px 0px;
+      text-align: center;
+      line-height: 24px;
+      color: #fff;
+    }
+    img {
+      width: 100%;
+      height: 100%;
+    }
+  }
+
+  &__title {
+    margin: 0 8px;
+    font-size: 14px;
+    font-family: Microsoft YaHei;
+    font-weight: 400;
+    color: #333333;
+    line-height: 24px;
+    height: 48px;
+    overflow: hidden;
+  }
+
+  &__desc {
+    height: 32px;
+    margin-left: 8px;
+
+    .price {
+      font-size: 18px;
+      font-family: Microsoft YaHei;
+      font-weight: bold;
+      color: #ff2d55;
+      line-height: 32px;
+    }
+  }
+
+  &__btns {
+    margin: 0 8px;
+    display: flex;
+    justify-content: space-between;
+    .add {
+      display: block;
+      width: 108px;
+      height: 32px;
+      line-height: 30px;
+      border: 1px solid #bfbfbf;
+      background: #fff;
+      border-radius: 8px;
+      font-size: 16px;
+      color: #333333;
+      text-align: center;
+    }
+
+    .buynow {
+      display: block;
+      width: 108px;
+      height: 32px;
+      line-height: 30px;
+      background: #3f8dfd;
+      border-radius: 8px;
+      font-size: 16px;
+      color: #fff;
+      text-align: center;
+      transition: all 0.3s;
+
+      &:hover {
+        background: #2b6dd6;
+      }
+    }
+  }
+}
+</style>

+ 6 - 2
src/components/header/index.vue

@@ -30,7 +30,7 @@
           <span
             class="el-dropdown-link"
             @click="go('/person-center/my-course')"
-            style="margin-left:10px;cursor:pointer;"
+            style="margin-left: 10px; cursor: pointer"
           >
             <img
               style="width: 24px; vertical-align: middle"
@@ -48,7 +48,8 @@
           <el-dropdown-menu slot="dropdown">
             <el-dropdown-item command="1">我的课程</el-dropdown-item>
             <el-dropdown-item command="2">我的题库</el-dropdown-item>
-            <el-dropdown-item command="3">退出登录</el-dropdown-item>
+            <el-dropdown-item command="3">个人中心</el-dropdown-item>
+            <el-dropdown-item command="4">退出登录</el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
       </div>
@@ -125,6 +126,9 @@ export default {
           this.go("/person-center/my-bank");
           break;
         case "3":
+          this.go("/person-center/my-info");
+          break;
+        case "4":
           this.$tools.exit();
           break;
 

+ 320 - 0
src/components/rebuildModal/index.vue

@@ -0,0 +1,320 @@
+<template>
+  <div id="rebuild-modal">
+    <el-dialog
+      width="800px"
+      class="rebuild"
+      :visible.sync="showRebuildDetailModal"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      :show-close="false"
+    >
+      <div class="rebuild__content">
+        <div class="rebuild__close" @click="showRebuildDetailModal = false">
+          X
+        </div>
+        <div class="rebuild__header">审核详情</div>
+        <div class="rebuild__body">
+          <div class="content">
+            <div class="content__header">
+              <div class="title">重要提示:</div>
+              <div class="desc">
+                您的学时审核不通过,不通过原因如下,请查阅,并重学不通过的课程内容。
+              </div>
+            </div>
+
+            <div class="content__body">
+              <div class="list">
+                <div
+                  class="list__item"
+                  v-for="(item, index) in rebuildItems"
+                  :key="index"
+                >
+                  <div class="title">
+                    <span class="note" v-if="item.type == 0"> 测试 </span>
+                    <span class="note note--yellow" v-if="item.type == 1"
+                      >录播</span
+                    >
+                    <span class="note note--yellow" v-if="item.type == 2"
+                      >直播</span
+                    >
+                    <span class="note note--yellow" v-if="item.type == 3"
+                      >回放</span
+                    >
+                    {{ index + 1 }}、{{ item.name }}
+                  </div>
+                  <div class="desc">
+                    <!-- <div class="imgs">
+                      <div
+                        class="img"
+                        v-for="(items, indexs) in item.userStudyRecordPhoto"
+                        :key="indexs"
+                      >
+                        <img :src="$tools.splitImgHost(items.photo)" />
+                        <div class="note">
+                          {{ $tools.timestampToTime(items.createTime, false) }}
+                        </div>
+                      </div>
+                    </div> -->
+                  </div>
+                  <div class="desc">
+                    原因:
+                    <span class="note">{{ item.auditReason }}</span>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="rebuild__footer" v-if="rebuildShow">
+          <el-button class="confirm" @click="rebuildSubmit" type="primary"
+            >确认已阅读</el-button
+          >
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from "vuex";
+export default {
+  name: "showRebuildDetailModal",
+  computed: {
+    ...mapGetters(["userInfo"]),
+  },
+  data() {
+    return {
+      showRebuildDetailModal: false,
+      rebuildItem: {},
+      rebuildItems: {},
+      rebuildShow: false,
+    };
+  },
+  mounted() {},
+  methods: {
+    showModal(item) {
+      this.rebuildShow = false;
+      this.rebuildItem = item;
+      this.$request
+        .getcourseperiodcheat({
+          goodsId: item.goodsId,
+          gradeId: item.gradeId,
+        })
+        .then((res) => {
+          this.rebuildItems = res.rows;
+          this.showRebuildDetailModal = true;
+
+          let sysTime = this.$tools.timest();
+          //学习服务期没过
+          if (item.serviceEndTime && item.serviceEndTime > +sysTime) {
+            console.log(1);
+            this.rebuildShow = true;
+          } else {
+            //已过学习服务期
+            console.log(2);
+            this.rebuildShow = false;
+            this.showRebuildDetailModal = true;
+            return;
+          }
+          console.log(item.classEndTime, "item.classEndTime");
+          console.log(sysTime, "sysTime");
+          //有班级有效期
+          if (item.classEndTime) {
+            //班级有效期没过
+            if (item.classEndTime > +sysTime) {
+              console.log(3);
+              this.rebuildShow = true;
+            } else {
+              //已过班级有效期
+              this.rebuildShow = false;
+              console.log(4);
+              this.showRebuildDetailModal = true;
+              return;
+            }
+          } else {
+          }
+
+          this.rebuildShow = true;
+          this.showRebuildDetailModal = true;
+        });
+    },
+    rebuildSubmit() {
+      this.$confirm(
+        "如对审核结果有异议,请勿点击确认重学。致电020-87085982咨询",
+        "注意",
+        {
+          confirmButtonText: "确认重学",
+          cancelButtonText: "取消",
+          closeOnClickModal: false,
+          closeOnPressEscape: false,
+          distinguishCancelAndClose: false,
+          showClose: false,
+        }
+      )
+        .then((_) => {
+          this.$request
+            .courseperiodrebuild({
+              goodsId: this.rebuildItem.goodsId,
+              gradeId: this.rebuildItem.gradeId,
+            })
+            .then((res) => {
+              this.showRebuildDetailModal = false;
+              this.$emit("rebuildSubmit", this.rebuildItem);
+              // this.$router.push({
+              //   path: `/my-course-detail/${this.rebuildItem.goodsId}`,
+              //   query: {
+              //     gradeId: this.rebuildItem.gradeId,
+              //     orderGoodsId: this.rebuildItem.orderGoodsId,
+              //   },
+              // });
+            });
+        })
+        .catch((_) => {});
+    },
+  },
+};
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped lang="scss">
+.rebuild {
+  /deep/ .el-dialog__header {
+    display: none;
+  }
+  /deep/ .el-dialog__body {
+    padding: 0;
+    overflow: unset;
+  }
+
+  &__close {
+    cursor: pointer;
+    position: absolute;
+    right: 0;
+    top: -28px;
+    width: 24px;
+    height: 24px;
+    line-height: 24px;
+    text-align: center;
+    color: #eee;
+    border: 1px solid #eee;
+    border-radius: 50%;
+  }
+
+  &__header {
+    height: 40px;
+    border-bottom: 1px solid #eee;
+    line-height: 40px;
+    font-size: 16px;
+    font-family: Microsoft YaHei;
+    font-weight: bold;
+    color: #333333;
+    padding-left: 24px;
+  }
+
+  &__body {
+    height: 400px;
+    padding: 0 24px;
+
+    .content {
+      height: 100%;
+      overflow-y: auto;
+
+      &__header {
+        padding: 16px 0;
+        border-bottom: 1px solid #eee;
+
+        .title {
+          font-size: 16px;
+          font-family: Microsoft YaHei;
+          font-weight: bold;
+          color: #ff3b30;
+          line-height: 24px;
+        }
+
+        .desc {
+          margin-top: 10px;
+          font-size: 16px;
+          font-family: Microsoft YaHei;
+          font-weight: 400;
+          color: #ff3b30;
+          line-height: 24px;
+        }
+      }
+
+      &__body {
+        .list {
+          &__item {
+            padding: 16px 0;
+            border-bottom: 1px solid #eee;
+
+            .title {
+              font-size: 14px;
+              font-family: Microsoft YaHei;
+              font-weight: 400;
+              color: #333333;
+
+              .note {
+                display: inline-block;
+                text-align: center;
+                line-height: 18px;
+                width: 32px;
+                height: 20px;
+                border: 1px solid #3f8dfd;
+                border-radius: 4px;
+                color: #3f8dfd;
+                font-size: 12px;
+
+                &--yellow {
+                  border: 1px solid #ff9500;
+                  color: #ff9500;
+                }
+              }
+            }
+
+            .desc {
+              margin-top: 10px;
+              font-size: 14px;
+              font-family: Microsoft YaHei;
+              font-weight: 400;
+              color: #333333;
+
+              .note {
+                color: #ff3b30;
+                line-height: 20px;
+              }
+
+              .img {
+                width: 100px;
+                height: 100px;
+                display: inline-block;
+                text-align: center;
+
+                img {
+                  max-width: 100%;
+                  max-height: 100%;
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+
+  &__footer {
+    height: 90px;
+    border-top: 1px solid #eee;
+    text-align: center;
+    .confirm {
+      width: 200px;
+      height: 40px;
+      padding: 0;
+      border-radius: 20px;
+      text-align: center;
+      line-height: 40px;
+      color: #fff;
+      margin: 24px auto;
+    }
+  }
+}
+</style>

+ 156 - 0
src/components/selectClassModal/index.vue

@@ -0,0 +1,156 @@
+<template>
+  <div id="select-modal">
+    <el-dialog
+      title="选班重学"
+      class="select-modal"
+      :visible.sync="selectClassModal"
+      width="800px"
+    >
+      <div>
+        <el-radio
+          v-for="(item, index) in gradeList"
+          :key="index"
+          class="radio"
+          v-model="gradeValue"
+          :disabled="
+            item.studentNum > 0 && item.studentNum == item.studentUpper
+          "
+        >
+          <div>
+            {{ item.className }}
+            <span v-if="item.classEndTime">
+              有效期至:{{
+                $tools.timestampToTime(item.classEndTime, true, true)
+              }}</span
+            >
+            <span v-if="item.classEndTime"
+              >本班还剩{{
+                $tools.GetRTime(item.classEndTime)
+              }}天将结束学习</span
+            >
+          </div>
+          <div></div
+        ></el-radio>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="selectClassOk">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from "vuex";
+export default {
+  name: "selectClassModal",
+  computed: {
+    ...mapGetters(["userInfo"]),
+  },
+  data() {
+    return {
+      selectClassModal: false,
+      gradeList: [],
+      gradeValue: -1,
+      selectItem: {},
+    };
+  },
+  mounted() {},
+  methods: {
+    showModal(item) {
+      this.gradeValue = -1;
+      this.selectItem = item;
+      this.goodsGradeList(item.goodsId);
+      this.selectClassModal = true;
+    },
+    selectClassOk() {
+      if (this.gradeValue == -1) {
+        this.$message({
+          type: "success",
+          message: "请选择班级",
+        });
+        return;
+      }
+      this.$request
+        .changeGrade({
+          goodsId: this.selectItem.goodsId,
+          gradeId: this.gradeValue,
+          oldGradeId: this.selectItem.gradeId,
+          orderGoodsId: this.selectItem.orderGoodsId,
+          userId: this.selectItem.userId,
+        })
+        .then((res) => {
+          this.selectClassModal = false;
+          this.$message({
+            type: "success",
+            message: "选班成功",
+          });
+
+          this.$emit("selectClassOk");
+        })
+        .catch((err) => {
+          this.$message({
+            type: "warning",
+            message: err.msg,
+          });
+        });
+    },
+    goodsGradeList(id) {
+      let self = this;
+      this.$request
+        .goodsGradeList({
+          goodsId: id,
+        })
+        .then((res) => {
+          self.gradeList = res.rows;
+          if (self.gradeList.length == 0) {
+            let item = {
+              className: "系统分班",
+              gradeId: 0,
+            };
+            self.gradeList.push(item);
+          } else {
+            let isGradeFull = self.gradeList.every(
+              (item) =>
+                item.studentNum > 0 && item.studentNum == item.studentUpper
+            );
+            //所有班级都满了
+            if (isGradeFull) {
+              let item = {
+                className: "系统分班",
+                gradeId: 0,
+              };
+              self.gradeList.unshift(item);
+            }
+          }
+        });
+    },
+  },
+};
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped lang="scss">
+.select-modal {
+  .radio {
+    cursor: pointer;
+    margin-right: 24px;
+    padding: 0 24px;
+    display: flex;
+    align-items: center;
+    margin-top: 2px;
+    min-height: 40px;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    background: #f5f9ff;
+    border-radius: 8px;
+    box-sizing: border-box;
+
+    &.right {
+      background: #37c65b;
+    }
+    &.wrong {
+      background: #ff3a30;
+    }
+  }
+}
+</style>

+ 1 - 1
src/components/toolbar/index.vue

@@ -16,7 +16,7 @@
         />
         <img slot="reference" src="@/assets/qr.png" class="img" alt="" />
       </el-popover>
-      <div class="text">二维码</div>
+      <div class="text">小程序二维码</div>
     </div>
 
     <div class="item">

+ 21 - 20
src/pages/about/index.vue

@@ -120,7 +120,7 @@
               </div>
               <div class="about-txt">
                 <p>
-                  广东省祥粤建设职业培训学校经广东省人力资源与社会保障局批准成立,是广东省住房和城乡建设厅核准,广东省建设执业资格注册中心、广东省建设教育协会、广州市住房和城乡建设局、广州市建设教育协会、广州市建筑业管理服务中心等认可的建设类教育培训机构,学校于2017年经广东建科认证有限责任公司评估,通过了ISO管理体系认证,2020年入选广东省建设领域施工现场专业人员职业培训考核首批试点单位
+                  广东省祥粤建设职业培训学校(以下简称祥粤学校)2015年7月成立,批准文号:粤人社函(2015)1755号;办学许可证号:人社民4400003150014号。自成立以来在广东省人力资源和社会保障厅、广东省住房和城乡建设厅、广州市人力资源和社会保障局、广州市住房与城乡建设局、广东省建设执业资格注册中心、广东省建设教育协会、广东省建设工程质量安全检测和鉴定协会、广东省市政工程协会、广州市建筑业管理服务中心等行业主管部门与行业协会的指导下,开展建设工程类专业课培训和继续教育。已开展的项目有:广东省二级建造师考前培训和继续教育、广东省建设工程施工企业安全管理人员考前培训和继续教育、广东省建筑工程施工现场专业人员岗位资格考试培训和继续教育、建筑信息模型(BIM)技能等级培训、建筑产业工人上岗培训、安全体验培训等,并积极为建设主管部门、行业协会、建筑业企业等组织工程新规范、新技术、新材料的宣贯培训和安全内训
                 </p>
               </div>
               <div style="clear: both"></div>
@@ -132,11 +132,12 @@
             >
               <div class="about-txt">
                 <p>
-                  学校教学、办公及实训场地总面积近3000平方米,师资力量雄厚,拥有50余位中高级职称的教师队伍,其中博士学位客座教授10人、高级工程师职称专职教师10人。
+                  祥粤学校位于广州市天河区燕岭路123号,拥有教学及办公场地近2300平方米,设立了可容纳450人的多媒体教室和150人的计算机教学和考核机房,现代化的教学设备和线上教学平台。拥有多媒体教学系统5套,教学视频拍摄制作系统2套,触摸互动电视教学系统1套,以及各类教学办公仪器设备150多台(套),能满足各类培训业务需要。
+                  学校有一支相对稳定的、具备实际任课能力和教学经验的专职及兼职师资队伍。培训师资既有来自大专院校的教授,也有来自企事业单位具有较丰富工程实践经验的中高级工程师,对培训教学工作起到了保障作用。
                 </p>
                 <br />
                 <p>
-                  设立了可容纳约650人的多媒体教学场地,配备了安全实训功能的VR/实体体验培训场地和BIM培训功能的计算机实训场地
+                  我校坚持“立足行业,服务社会”的办学理念,在教学模式上加速更新升级,在教研领域里不断推陈出新,在服务体系上坚持优化细化,大力推广新工艺、新模式、新技术、新标准以及新政策,为社会建设安全、企业发展壮大、人才职业规划提供专业务实的服务
                 </p>
               </div>
               <div class="about-img">
@@ -658,15 +659,15 @@
               <div class="about-txt">
                 <h3>新考/继教培训</h3>
                 <p>
-                  · 2018年 建筑信息模型(BIM)考前培训<br />
-                  · 2018年 一级建造师执业资格考前培训<br />
-                  · 2018年 二级建造师执业资格考前培训<br />
-                  · 2017年 二级建造师执业资格继续教育培训<br />
-                  · 2017年 建筑施工企业安管人员【ABC三类人员】考前培训<br />
-                  · 2016年 建筑施工企业安管人员【ABC三类人员】继续教育培训<br />
-                  · 2016年 建设行业施工管理人员(岗位)【九大员】继续教育培训<br />
-                  · 2016年 建设行业施工管理人员(岗位)【九大员】考前培训<br />
                   · 2016年 建设行业工人职业技能(工种)【八大工】培训<br />
+                  · 2016年 建设行业施工管理人员(岗位)【九大员】考前培训<br />
+                  · 2016年 建设行业施工管理人员(岗位)【九大员】继续教育培训<br />
+                  · 2016年 建筑施工企业安管人员【ABC三类人员】继续教育培训<br />
+                  · 2017年 建筑施工企业安管人员【ABC三类人员】考前培训<br />
+                  · 2017年 二级建造师执业资格继续教育培训<br />
+                  · 2018年 二级建造师执业资格考前培训<br />
+                  · 2018年 一级建造师执业资格考前培训<br />
+                  · 2018年 建筑信息模型(BIM)考前培训<br />
                 </p>
               </div>
               <div class="about-img">
@@ -818,31 +819,31 @@ export default {
   }
 
   // .about-nav-list li.con01 a:hover {
-  //   background-image: url(../img/about/about-icon01-hover.png) !important;
+  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon01-hover.png) !important;
   // }
   // .about-nav-list li.con02 a:hover {
-  //   background-image: url(../img/about/about-icon02-hover.png) !important;
+  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon02-hover.png) !important;
   // }
   // .about-nav-list li.con03 a:hover {
-  //   background-image: url(../img/about/about-icon03-hover.png) !important;
+  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon03-hover.png) !important;
   // }
   // .about-nav-list li.con04 a:hover {
-  //   background-image: url(../img/about/about-icon04-hover.png) !important;
+  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon04-hover.png) !important;
   // }
   // .about-nav-list li.con05 a:hover {
-  //   background-image: url(../img/about/about-icon05-hover.png) !important;
+  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon05-hover.png) !important;
   // }
   // .about-nav-list li.con06 a:hover {
-  //   background-image: url(../img/about/about-icon06-hover.png) !important;
+  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon06-hover.png) !important;
   // }
   // .about-nav-list li.con07 a:hover {
-  //   background-image: url(../img/about/about-icon07-hover.png) !important;
+  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon07-hover.png) !important;
   // }
   // .about-nav-list li.con08 a:hover {
-  //   background-image: url(../img/about/about-icon08-hover.png) !important;
+  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon08-hover.png) !important;
   // }
   // .about-nav-list li.con09 a:hover {
-  //   background-image: url(../img/about/about-icon09-hover.png) !important;
+  //   background-image: url(https://file-dev.xyyxt.net/web/pcImg/about-icon09-hover.png) !important;
   // }
 
   #tbox {

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

@@ -984,7 +984,8 @@ export default {
         }
 
         &__body {
-          height: 800px;
+          margin-bottom: 20px;
+          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
@@ -1015,7 +1016,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 550px;
               border-bottom: 1px solid #eee;
 
               .question {
@@ -1041,6 +1042,24 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
+                  flex: 1;
+                  overflow-y: scroll;
+
+                  &::-webkit-scrollbar {
+                    width: 6px;
+                  }
+                  &::-webkit-scrollbar-track {
+                    background-color: #fff;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
+                  &::-webkit-scrollbar-thumb {
+                    background-color: #eeeeee;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
 
                   /deep/ img {
                     max-width: 100% !important;
@@ -1069,7 +1088,6 @@ export default {
                   }
 
                   /deep/ .el-tabs__item {
-                    padding: 0 20px !important;
                     height: 40px;
                     line-height: 40px;
                   }
@@ -1318,7 +1336,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 510px;
               border-bottom: 1px solid #eee;
 
               .card {
@@ -1360,7 +1378,7 @@ export default {
                 }
 
                 &__content {
-                  height: 630px;
+                  height: 470px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {
@@ -1451,6 +1469,11 @@ export default {
         }
       }
     }
+
+    &__footer {
+      height: 20px;
+      margin-top: 20px;
+    }
   }
 
   .take-photo {

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

@@ -1601,11 +1601,12 @@ export default {
 
             //没选错
             if (checkboxScore) {
+              checkboxScore = 0;
               item.ans.forEach((ans, quesIndex) => {
-                //漏选扣一部分
+                //漏选扣一部分,对n题给n X partScore 分
                 if (item.ques) {
-                  if (item.ques.indexOf(item.ans[quesIndex]) == -1) {
-                    checkboxScore = item.partScore;
+                  if (item.ques.indexOf(item.ans[quesIndex]) != -1) {
+                    checkboxScore += item.partScore;
                   }
                 } else {
                   checkboxScore = 0;
@@ -1791,11 +1792,12 @@ export default {
 
             //没选错
             if (checkboxScore) {
+              checkboxScore = 0;
               item.ans.forEach((ans, quesIndex) => {
-                //漏选扣一部分
+                //漏选扣一部分,对n题给n X partScore 分
                 if (item.ques) {
-                  if (item.ques.indexOf(item.ans[quesIndex]) == -1) {
-                    checkboxScore = item.partScore;
+                  if (item.ques.indexOf(item.ans[quesIndex]) != -1) {
+                    checkboxScore += item.partScore;
                   }
                 } else {
                   checkboxScore = 0;
@@ -1874,7 +1876,8 @@ export default {
         }
 
         &__body {
-          height: 800px;
+          margin-bottom: 20px;
+          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
@@ -1905,7 +1908,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 550px;
               border-bottom: 1px solid #eee;
 
               .question {
@@ -1931,6 +1934,24 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
+                  flex: 1;
+                  overflow-y: scroll;
+
+                  &::-webkit-scrollbar {
+                    width: 6px;
+                  }
+                  &::-webkit-scrollbar-track {
+                    background-color: #fff;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
+                  &::-webkit-scrollbar-thumb {
+                    background-color: #eeeeee;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
 
                   /deep/ img {
                     max-width: 100% !important;
@@ -1959,7 +1980,6 @@ export default {
                   }
 
                   /deep/ .el-tabs__item {
-                    padding: 0 20px !important;
                     height: 40px;
                     line-height: 40px;
                   }
@@ -2213,7 +2233,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 510px;
               border-bottom: 1px solid #eee;
 
               .card {
@@ -2255,7 +2275,7 @@ export default {
                 }
 
                 &__content {
-                  height: 630px;
+                  height: 470px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {

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

@@ -1035,7 +1035,8 @@ export default {
         }
 
         &__body {
-          height: 800px;
+          margin-bottom: 20px;
+          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
@@ -1066,7 +1067,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 550px;
               border-bottom: 1px solid #eee;
 
               .question {
@@ -1092,6 +1093,24 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
+                  flex: 1;
+                  overflow-y: scroll;
+
+                  &::-webkit-scrollbar {
+                    width: 6px;
+                  }
+                  &::-webkit-scrollbar-track {
+                    background-color: #fff;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
+                  &::-webkit-scrollbar-thumb {
+                    background-color: #eeeeee;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
 
                   /deep/ img {
                     max-width: 100% !important;
@@ -1120,7 +1139,6 @@ export default {
                   }
 
                   /deep/ .el-tabs__item {
-                    padding: 0 20px !important;
                     height: 40px;
                     line-height: 40px;
                   }
@@ -1369,7 +1387,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 510px;
               border-bottom: 1px solid #eee;
 
               .card {
@@ -1411,7 +1429,7 @@ export default {
                 }
 
                 &__content {
-                  height: 630px;
+                  height: 470px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {

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

@@ -704,6 +704,7 @@ export default {
       moduleId: 0,
       chapterId: 0,
       current: 0,
+      orderGoodsId: 0,
     };
   },
   async mounted() {
@@ -712,6 +713,7 @@ export default {
     this.moduleId = this.$route.query.moduleId;
     this.chapterId = this.$route.query.chapterId;
     this.goodsId = this.$route.query.goodsId;
+    this.orderGoodsId = this.$route.query.orderGoodsId;
     this.goodsQuestionList();
   },
   methods: {
@@ -752,6 +754,9 @@ export default {
             //判断是否全对
             let isRight = json.ans.every((quesItem, quesIndex) => {
               if (json.ques) {
+                console.log(json.ques[quesIndex], "json.ques[quesIndex]");
+                console.log(json.ans[quesIndex], "json.ans[quesIndex]");
+
                 return json.ques[quesIndex] == json.ans[quesIndex];
               } else {
                 return false;
@@ -763,6 +768,8 @@ export default {
             }
           }
         });
+
+        console.log(this.questionList);
       });
     },
 
@@ -1007,7 +1014,7 @@ export default {
         }
 
         &__body {
-          height: 800px;
+          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
@@ -1038,7 +1045,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 550px;
               border-bottom: 1px solid #eee;
 
               .question {
@@ -1064,6 +1071,24 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
+                  flex: 1;
+                  overflow-y: scroll;
+
+                  &::-webkit-scrollbar {
+                    width: 6px;
+                  }
+                  &::-webkit-scrollbar-track {
+                    background-color: #fff;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
+                  &::-webkit-scrollbar-thumb {
+                    background-color: #eeeeee;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
 
                   /deep/ img {
                     max-width: 100% !important;
@@ -1092,7 +1117,6 @@ export default {
                   }
 
                   /deep/ .el-tabs__item {
-                    padding: 0 20px !important;
                     height: 40px;
                     line-height: 40px;
                   }
@@ -1341,7 +1365,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 510px;
               border-bottom: 1px solid #eee;
 
               .card {
@@ -1383,7 +1407,7 @@ export default {
                 }
 
                 &__content {
-                  height: 630px;
+                  height: 470px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {

+ 35 - 14
src/pages/bank-exam/index.vue

@@ -1402,11 +1402,12 @@ export default {
 
             //没选错
             if (checkboxScore) {
+              checkboxScore = 0;
               item.ans.forEach((ans, quesIndex) => {
-                //漏选扣一部分
+                //漏选扣一部分,对n题给n X partScore 分
                 if (item.ques) {
-                  if (item.ques.indexOf(item.ans[quesIndex]) == -1) {
-                    checkboxScore = item.partScore;
+                  if (item.ques.indexOf(item.ans[quesIndex]) != -1) {
+                    checkboxScore += item.partScore;
                   }
                 } else {
                   checkboxScore = 0;
@@ -2087,11 +2088,12 @@ export default {
 
             //没选错
             if (checkboxScore) {
+              checkboxScore = 0;
               item.ans.forEach((ans, quesIndex) => {
-                //漏选扣一部分
+                //漏选扣一部分,对n题给n X partScore 分
                 if (item.ques) {
-                  if (item.ques.indexOf(item.ans[quesIndex]) == -1) {
-                    checkboxScore = item.partScore;
+                  if (item.ques.indexOf(item.ans[quesIndex]) != -1) {
+                    checkboxScore += item.partScore;
                   }
                 } else {
                   checkboxScore = 0;
@@ -2292,11 +2294,12 @@ export default {
 
             //没选错
             if (checkboxScore) {
+              checkboxScore = 0;
               item.ans.forEach((ans, quesIndex) => {
-                //漏选扣一部分
+                //漏选扣一部分,对n题给n X partScore 分
                 if (item.ques) {
-                  if (item.ques.indexOf(item.ans[quesIndex]) == -1) {
-                    checkboxScore = item.partScore;
+                  if (item.ques.indexOf(item.ans[quesIndex]) != -1) {
+                    checkboxScore += item.partScore;
                   }
                 } else {
                   checkboxScore = 0;
@@ -2418,7 +2421,8 @@ export default {
         }
 
         &__body {
-          height: 800px;
+          margin-bottom: 20px;
+          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
@@ -2449,7 +2453,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 550px;
               border-bottom: 1px solid #eee;
 
               .question {
@@ -2475,6 +2479,24 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
+                  flex: 1;
+                  overflow-y: scroll;
+
+                  &::-webkit-scrollbar {
+                    width: 6px;
+                  }
+                  &::-webkit-scrollbar-track {
+                    background-color: #fff;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
+                  &::-webkit-scrollbar-thumb {
+                    background-color: #eeeeee;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
 
                   /deep/ img {
                     max-width: 100% !important;
@@ -2503,7 +2525,6 @@ export default {
                   }
 
                   /deep/ .el-tabs__item {
-                    padding: 0 20px !important;
                     height: 40px;
                     line-height: 40px;
                   }
@@ -2769,7 +2790,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 510px;
               border-bottom: 1px solid #eee;
 
               .card {
@@ -2811,7 +2832,7 @@ export default {
                 }
 
                 &__content {
-                  height: 630px;
+                  height: 470px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {

+ 5 - 103
src/pages/bank-list/index.vue

@@ -39,7 +39,7 @@
               </div>
             </div>
             <div class="course-classify__list" v-if="businessList.length > 0">
-              <div class="left-item">业务层次:</div>
+              <div class="left-item">培训项目:</div>
               <div class="right-item">
                 <div class="list">
                   <!-- <div class="item active">全部</div> -->
@@ -109,22 +109,8 @@
                   class="course-item"
                   v-for="(item, index) in goodsList"
                   :key="index"
-                  @click="goodsDetail(item)"
                 >
-                  <div class="course-item__img">
-                    <img
-                      :src="$tools.splitImgHost(item.coverUrl, true, 280)"
-                      alt=""
-                    />
-                    <div class="note" v-if="item.year">{{ item.year }}</div>
-                  </div>
-                  <div class="course-item__title">
-                    {{ item.goodsName }}
-                  </div>
-                  <div class="course-item__desc">
-                    <div class="price">¥{{ item.standPrice | toFixed }}</div>
-                    <a class="add" @click.stop="addCart(item)">加购物车</a>
-                  </div>
+                  <GoodsItem :item="item"></GoodsItem>
                 </li>
               </ul>
             </div>
@@ -154,6 +140,7 @@
 import Footer from "@/components/footer/index";
 import Header from "@/components/header/index";
 import ToolBar from "@/components/toolbar/index";
+import GoodsItem from "@/components/goodsItem/index";
 import { mapMutations } from "vuex";
 export default {
   name: "PaymentSuccess",
@@ -161,6 +148,7 @@ export default {
     Footer,
     Header,
     ToolBar,
+    GoodsItem,
   },
   data() {
     return {
@@ -175,7 +163,7 @@ export default {
         businessId: "",
         subjectId: "",
         pageNum: 1,
-        pageSize: 12,
+        pageSize: 15,
         goodsStatus: 1,
         goodsType: 2,
         sortType: 1,
@@ -403,92 +391,6 @@ export default {
 
             .course-item {
               float: left;
-              margin: 110px 9px 0;
-              width: 300px;
-              height: 178px;
-              background: #ffffff;
-              box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
-              border-radius: 10px;
-              position: relative;
-              background: #fff;
-              padding-top: 100px;
-              cursor: pointer;
-
-              &__img {
-                width: 280px;
-                height: 178px;
-                background: #ffffff;
-                box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
-                border-radius: 10px;
-                position: absolute;
-                left: 10px;
-                top: -78px;
-                overflow: hidden;
-
-                .note {
-                  position: absolute;
-                  left: 0;
-                  top: 0;
-                  width: 80px;
-                  height: 24px;
-                  background: #d94404;
-                  box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
-                  border-radius: 10px 0px 20px 0px;
-                  text-align: center;
-                  line-height: 24px;
-                  color: #fff;
-                }
-              }
-
-              &__title {
-                margin: 0 8px;
-                font-size: 14px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                color: #333333;
-                line-height: 24px;
-                overflow: hidden;
-                text-overflow: ellipsis;
-                display: -webkit-box;
-                -webkit-line-clamp: 2;
-                -webkit-box-orient: vertical;
-              }
-
-              &__desc {
-                height: 32px;
-                position: absolute;
-                left: 0;
-                right: 0;
-                bottom: 0;
-                margin-left: 8px;
-                display: flex;
-                justify-content: space-between;
-
-                .price {
-                  font-size: 18px;
-                  font-family: Microsoft YaHei;
-                  font-weight: bold;
-                  color: #ff2d55;
-                  line-height: 32px;
-                }
-
-                .add {
-                  display: block;
-                  width: 118px;
-                  height: 32px;
-                  line-height: 30px;
-                  background: #f2f4f7;
-                  border-radius: 10px 0px 10px 0px;
-                  font-size: 16px;
-                  color: #3f8dfd;
-                  text-align: center;
-
-                  &:hover {
-                    background: #3f8dfd;
-                    color: #f2f4f7;
-                  }
-                }
-              }
             }
           }
         }

+ 4 - 1
src/pages/bank-report/index.vue

@@ -59,7 +59,9 @@
                   试卷得分
                   <span class="note">(客观题)</span>
                 </div>
-                <div class="desc" style="margin-top:70px;">{{ reportdata.performance }}</div>
+                <div class="desc" style="margin-top: 70px">
+                  {{ reportdata.performance }}
+                </div>
                 <div class="other">满分{{ reportdata.totalScore }}</div>
               </div>
               <!-- <div class="left-box__in left-box__in--bottom">
@@ -323,6 +325,7 @@ export default {
           moduleId: reportdata.moduleId || 0,
           chapterId: reportdata.chapterId || 0,
           goodsId: this.goodsId,
+          orderGoodsId: this.orderGoodsId,
         },
       });
     },

+ 2 - 2
src/pages/cart/index.vue

@@ -218,7 +218,7 @@ export default {
     this.cartList();
   },
   methods: {
-    ...mapMutations(["setCheckGoodsList", "getCartCount"]),
+    ...mapMutations(["getCartCount"]),
     areaChange(row, index) {
       console.log(row);
       let node = this.$refs["cascader" + index].getCheckedNodes()[0]; //选中的根节点
@@ -426,7 +426,7 @@ export default {
         }
       });
 
-      this.setCheckGoodsList(selectGoodsList);
+      localStorage.setItem("checkGoodsList", JSON.stringify(selectGoodsList));
 
       this.$router.push({
         name: "支付",

+ 236 - 244
src/pages/course-detail/index.vue

@@ -1227,6 +1227,7 @@
                         <div class="left-box">
                           <div class="left-box__body">
                             <div
+                              class="buy-note"
                               v-html="
                                 goodsData.buyNote &&
                                 goodsData.buyNote.replace(/\n|\r\n/g, '<br>')
@@ -1249,7 +1250,8 @@
                               )"
                               :key="index"
                             >
-                              <div
+                              <GoodsItem :item="itemy"></GoodsItem>
+                              <!-- <div
                                 class="course-item__img"
                                 :style="`background-image:url(${$tools.splitImgHost(
                                   itemy.coverUrl,
@@ -1273,7 +1275,7 @@
                                   @click.stop="addCart(true, itemy.goodsId)"
                                   >加购物车</a
                                 >
-                              </div>
+                              </div> -->
                             </li>
                           </ul>
                         </div>
@@ -2161,7 +2163,7 @@
       </span>
     </el-dialog>
     <div id="printTable"></div>
-    <ToolBar></ToolBar>
+    <!-- <ToolBar></ToolBar> -->
     <Footer></Footer>
   </div>
 </template>
@@ -2170,6 +2172,8 @@
 import Footer from "@/components/footer/index";
 import Header from "@/components/header/index";
 import ToolBar from "@/components/toolbar/index";
+import GoodsItem from "@/components/goodsItem/index";
+
 import { mapGetters, mapMutations } from "vuex";
 import * as baseUrls from "@/axios.js";
 import pdf from "vue-pdf";
@@ -2181,6 +2185,7 @@ export default {
     Header,
     ToolBar,
     pdf,
+    GoodsItem,
   },
   data() {
     return {
@@ -2504,7 +2509,7 @@ export default {
         let ary = [];
         if (array) {
           for (let i = 0; i < array.length; i++) {
-            if (i >= 4) {
+            if (i >= 5) {
               break;
             } else {
               ary.push(array[i]);
@@ -2527,46 +2532,65 @@ export default {
       this.courseTabIndex = "2";
     }
 
-    if (this.sectionItem.recordingUrl) {
-      let noteSecond = this.$route.query.noteSecond;
-      if (noteSecond > 0) {
-        let item = {
-          sectionId: this.$route.query.sectionId,
-          recordingUrl: this.$route.query.recordingUrl,
-          noteSecond: noteSecond,
-          studyDuration: noteSecond,
-          moduleId: this.$route.query.moduleId,
-          chapterId: this.$route.query.chapterId,
-        };
-
-        this.playSectionId = this.$route.query.sectionId;
-        setTimeout(() => {
-          this.noteClick(item);
-        }, 1000);
-      }
-    }
-
-    this.courseCourseList();
     this.dictList();
 
-    this.getbaseprofiletplists().then((res) => {
-      let noteSecond = this.$route.query.noteSecond;
-      if (noteSecond > 0) {
-        let item = {
-          sectionId: this.$route.query.sectionId,
-          recordingUrl: this.$route.query.recordingUrl,
-          noteSecond: noteSecond,
-          studyDuration: noteSecond,
-          moduleId: this.$route.query.moduleId,
-          chapterId: this.$route.query.chapterId,
-        };
+    this.getbaseprofiletplists().then(async (res) => {
+      // let allMenuList = await this.studyRecordMenuAllList();
+      // let nowTime = Number(new Date().getTime() / 1000).toFixed(0);
+      // let liveMenu = allMenuList.filter((item) => {
+      //   //获取直播中的视频
+      //   if (
+      //     item.type == 3 &&
+      //     item.liveStartTime <= nowTime &&
+      //     item.liveEndTime > nowTime
+      //   ) {
+      //     return true;
+      //   } else {
+      //     return false;
+      //   }
+      // });
+      // let earlyTime = 0;
+
+      // if (liveMenu && liveMenu.length) {
+      //   earlyTime = liveMenu[0].liveStartTime;
+      // }
 
-        this.sectionItem = item;
-        this.playSectionId = this.$route.query.sectionId;
-        setTimeout(() => {
-          this.noteClick(item);
-        }, 1000);
+      this.courseCourseList();
+      if (this.sectionItem.recordingUrl) {
+        let noteSecond = this.$route.query.noteSecond;
+        if (noteSecond > 0) {
+          let item = {
+            sectionId: this.$route.query.sectionId,
+            recordingUrl: this.$route.query.recordingUrl,
+            noteSecond: noteSecond,
+            studyDuration: noteSecond,
+            moduleId: this.$route.query.moduleId,
+            chapterId: this.$route.query.chapterId,
+          };
+
+          this.playSectionId = this.$route.query.sectionId;
+          setTimeout(() => {
+            this.noteClick(item);
+          }, 1000);
+        }
       }
+      // let noteSecond = this.$route.query.noteSecond;
+      // if (noteSecond > 0) {
+      //   let item = {
+      //     sectionId: this.$route.query.sectionId,
+      //     recordingUrl: this.$route.query.recordingUrl,
+      //     noteSecond: noteSecond,
+      //     studyDuration: noteSecond,
+      //     moduleId: this.$route.query.moduleId,
+      //     chapterId: this.$route.query.chapterId,
+      //   };
+
+      //   this.sectionItem = item;
+      //   this.playSectionId = this.$route.query.sectionId;
+      //   setTimeout(() => {
+      //     this.noteClick(item);
+      //   }, 1000);
+      // }
     });
   },
   beforeDestroy() {
@@ -2782,28 +2806,38 @@ export default {
 
       let res = await this.faceCertificationIDCardOCR(1, file);
 
+      console.log(res.data.IdImgPath, "res.data.IdImgPath");
+
       if (res.code == 500) {
         this.$message.warning("请上传正确清晰的身份证人像面照片");
         return;
       }
 
       this.$refs.idcard_face_photo[0].clearFiles();
-      this.$upload
-        .upload(file, 0)
-        .then((res) => {
-          this.$set(this.infoForm, "idcard_face_photo", res);
-          this.fileList2 = [
-            {
-              name: res,
-              url: res,
-            },
-          ];
-          this.$refs.idcard_face_photo[0].clearFiles();
-          console.log(res);
-        })
-        .catch((err) => {
-          this.$refs.idcard_face_photo[0].clearFiles();
-        });
+      this.$set(this.infoForm, "idcard_face_photo", res.data.IdImgPath);
+      this.fileList2 = [
+        {
+          name: res.data.IdImgPath,
+          url: res.data.IdImgPath,
+        },
+      ];
+      // this.$upload
+      //   .upload(file, 0)
+      //   .then((res) => {
+      //     console.log(res, "res");
+      //     this.$set(this.infoForm, "idcard_face_photo", res);
+      //     this.fileList2 = [
+      //       {
+      //         name: res,
+      //         url: res,
+      //       },
+      //     ];
+      //     this.$refs.idcard_face_photo[0].clearFiles();
+      //     console.log(res);
+      //   })
+      //   .catch((err) => {
+      //     this.$refs.idcard_face_photo[0].clearFiles();
+      //   });
     },
 
     async changePhotoListHeader3(params, fileList) {
@@ -2831,22 +2865,29 @@ export default {
         return;
       }
       this.$refs.idcard_national_photo[0].clearFiles();
-      this.$upload
-        .upload(file, 0)
-        .then((res) => {
-          this.$set(this.infoForm, "idcard_national_photo", res);
-          this.fileList3 = [
-            {
-              name: res,
-              url: res,
-            },
-          ];
-          this.$refs.idcard_national_photo[0].clearFiles();
-          console.log(res);
-        })
-        .catch((err) => {
-          this.$refs.idcard_national_photo[0].clearFiles();
-        });
+      this.$set(this.infoForm, "idcard_national_photo", res.data.IdImgPath);
+      this.fileList3 = [
+        {
+          name: res.data.IdImgPath,
+          url: res.data.IdImgPath,
+        },
+      ];
+      // this.$upload
+      //   .upload(file, 0)
+      //   .then((res) => {
+      //     this.$set(this.infoForm, "idcard_national_photo", res);
+      //     this.fileList3 = [
+      //       {
+      //         name: res,
+      //         url: res,
+      //       },
+      //     ];
+      //     this.$refs.idcard_national_photo[0].clearFiles();
+      //     console.log(res);
+      //   })
+      //   .catch((err) => {
+      //     this.$refs.idcard_national_photo[0].clearFiles();
+      //   });
     },
 
     faceCertificationIDCardOCR(cardSide, file) {
@@ -3108,105 +3149,112 @@ export default {
         );
 
         let newData = {
-          idNum: this.veryIdCard,
-          idName: this.veryIdName,
+          urlA: this.infoForm.idcard_face_photo,
           oneInchPhotos: base64,
         };
 
-        this.$request.facCertificationImageRecognition(newData).then((res1) => {
-          if (res1.data.sim >= 70) {
-            var self = this;
-            if (self.remarkStatus) {
-              var arsty = {};
-              for (let k in data) {
-                for (let j in self.copyData) {
-                  if (k === j) {
-                    if (self.copyData[j].value === data[k]) {
-                      arsty[k] = {
-                        fieldKey: k,
-                        value: data[k],
-                        fieldName: (function () {
-                          for (let i = 0; i < self.listData.length; i++) {
-                            if (self.listData[i].fieldKey == k) {
-                              return self.listData[i].fieldName;
+        this.$request
+          .faceCertificationIdCardCompareFace(newData)
+          .then((res1) => {
+            if (res1.data >= 70) {
+              var self = this;
+              if (self.remarkStatus) {
+                var arsty = {};
+                for (let k in data) {
+                  for (let j in self.copyData) {
+                    if (k === j) {
+                      if (self.copyData[j].value === data[k]) {
+                        arsty[k] = {
+                          fieldKey: k,
+                          value: data[k],
+                          fieldName: (function () {
+                            for (let i = 0; i < self.listData.length; i++) {
+                              if (self.listData[i].fieldKey == k) {
+                                return self.listData[i].fieldName;
+                              }
                             }
-                          }
-                        })(),
-                        status: 0,
-                      };
-                    } else {
-                      arsty[k] = {
-                        fieldKey: k,
-                        value: data[k],
-                        fieldName: (function () {
-                          for (let i = 0; i < self.listData.length; i++) {
-                            if (self.listData[i].fieldKey == k) {
-                              return self.listData[i].fieldName;
+                          })(),
+                          status: 0,
+                        };
+                      } else {
+                        arsty[k] = {
+                          fieldKey: k,
+                          value: data[k],
+                          fieldName: (function () {
+                            for (let i = 0; i < self.listData.length; i++) {
+                              if (self.listData[i].fieldKey == k) {
+                                return self.listData[i].fieldName;
+                              }
                             }
-                          }
-                        })(),
-                        status: 1,
-                      };
+                          })(),
+                          status: 1,
+                        };
+                      }
                     }
                   }
                 }
-              }
-              var datas = {
-                id: this.id,
-                goodsId: this.goodsId,
-                orderGoodsId: this.orderGoodsId,
-                keyValue: JSON.stringify(arsty),
-              };
-              this.$request
-                .editbaseprofiletp(datas)
-                .then((res) => {
-                  this.uploading = false;
-                  this.$message.success("提交成功");
-                  this.showInfoDetailModal = false;
-                })
-                .catch((err) => {
-                  this.$message.warning(err.msg);
-                  this.uploading = false;
-                });
-            } else {
-              var objs = {};
-              for (let k in data) {
-                objs[k] = {
-                  fieldKey: k,
-                  value: data[k],
-                  fieldName: (function () {
-                    for (let i = 0; i < self.listData.length; i++) {
-                      if (self.listData[i].fieldKey == k) {
-                        return self.listData[i].fieldName;
+                var datas = {
+                  id: this.id,
+                  goodsId: this.goodsId,
+                  orderGoodsId: this.orderGoodsId,
+                  keyValue: JSON.stringify(arsty),
+                };
+                this.$request
+                  .editbaseprofiletp(datas)
+                  .then((res) => {
+                    this.uploading = false;
+                    this.courseCourseList();
+                    this.$message.success("提交成功");
+                    this.showInfoDetailModal = false;
+                  })
+                  .catch((err) => {
+                    this.$message.warning(err.msg);
+                    this.uploading = false;
+                  });
+              } else {
+                var objs = {};
+                for (let k in data) {
+                  objs[k] = {
+                    fieldKey: k,
+                    value: data[k],
+                    fieldName: (function () {
+                      for (let i = 0; i < self.listData.length; i++) {
+                        if (self.listData[i].fieldKey == k) {
+                          return self.listData[i].fieldName;
+                        }
                       }
-                    }
-                  })(),
-                  status: 0,
+                    })(),
+                    status: 0,
+                  };
+                }
+                var datas = {
+                  goodsId: this.goodsId,
+                  profileTpId: this.goodsId,
+                  orderGoodsId: this.orderGoodsId,
+                  keyValue: JSON.stringify(objs),
                 };
+                this.$request
+                  .addbaseprofiletp(datas)
+                  .then((res) => {
+                    this.uploading = false;
+                    this.courseCourseList();
+                    this.$message.success("提交成功");
+                    this.showInfoDetailModal = false;
+                  })
+                  .catch((err) => {
+                    this.$message.warning(err.msg);
+                    this.uploading = false;
+                  });
               }
-              var datas = {
-                goodsId: this.goodsId,
-                profileTpId: this.goodsId,
-                orderGoodsId: this.orderGoodsId,
-                keyValue: JSON.stringify(objs),
-              };
-              this.$request
-                .addbaseprofiletp(datas)
-                .then((res) => {
-                  this.uploading = false;
-                  this.$message.success("提交成功");
-                  this.showInfoDetailModal = false;
-                })
-                .catch((err) => {
-                  this.$message.warning(err.msg);
-                  this.uploading = false;
-                });
+            } else {
+              this.uploading = false;
+              this.$message.warning("个人近照和身份证人像面照片不匹配");
             }
-          } else {
+          })
+          .catch((err) => {
             this.uploading = false;
-            this.$message.warning("个人近照和身份证人像面照片不匹配");
-          }
-        });
+            this.$message.warning(err.msg);
+          });
 
         return;
       }
@@ -3257,6 +3305,7 @@ export default {
           .editbaseprofiletp(datas)
           .then((res) => {
             this.uploading = false;
+            this.courseCourseList();
             this.$message.success("提交成功");
             this.showInfoDetailModal = false;
           })
@@ -3290,6 +3339,7 @@ export default {
           .addbaseprofiletp(datas)
           .then((res) => {
             this.uploading = false;
+            this.courseCourseList();
             this.$message.success("提交成功");
             this.showInfoDetailModal = false;
           })
@@ -3377,7 +3427,6 @@ export default {
             orderGoodsId: this.orderGoodsId || "",
           })
           .then((res) => {
-            console.log(res, "res");
             if (res.code === 200 && res.rows.length) {
               if (res.rows[0].keyValue) {
                 self.$request
@@ -3511,6 +3560,8 @@ export default {
               } else {
                 resolve();
               }
+            } else {
+              resolve();
             }
           });
         if (this.gradeId > 0) {
@@ -4098,7 +4149,7 @@ export default {
           menuItem.list = res.data;
 
           if (this.needOpen) {
-            this.needOpen = false;
+            // this.needOpen = false;
             this.openChapter(menuItem.list[0]);
           }
         });
@@ -4176,6 +4227,13 @@ export default {
             section.parent = chapter;
           });
           chapter.list = res.data;
+
+          if (this.needOpen) {
+            this.needOpen = false;
+            if (chapter.list && !this.sectionItem.recordingUrl) {
+              this.getResource(chapter.list[0]);
+            }
+          }
         });
     },
     getGoodsDetail() {
@@ -4729,6 +4787,7 @@ export default {
         wrap: "#playerzb",
         width: 810,
         height: 455,
+        showLine: false,
         uid: this.uidzb,
         vid: this.vidzb,
       });
@@ -4759,6 +4818,7 @@ export default {
         self.player = polyvPlayer({
           wrap: "#player",
           width: 810,
+          showLine: false,
           height: 455,
           ban_history_time: "on",
           vid: self.vid,
@@ -4854,7 +4914,6 @@ export default {
       let self = this;
       var polyvPlayerContext = this.player;
       if (polyvPlayerContext) {
-        console.log(polyvPlayerContext, "polyvPlayerContext");
         this.playTime = polyvPlayerContext.j2s_getCurrentTime(); //播放时刻
         //	console.log(this.playTime,789,this.photoHistoryList)
         //判断是否需要拍照
@@ -5611,7 +5670,7 @@ export default {
             item.parent = this.menuList;
           }
           self.menuList = res.rows;
-
+          //展开第一个
           if (this.needOpen) {
             for (let i = 0; i < res.rows.length; i++) {
               if (res.rows[i].type == 1) {
@@ -5620,11 +5679,21 @@ export default {
                 break;
               } else if (res.rows[i].type == 2) {
                 this.menuIndex = [i];
-                this.needOpen = false;
+                // this.needOpen = false;
                 this.openChapter(this.menuList[i]);
                 break;
               }
             }
+
+            //第一个是节,直接播放
+            if (self.menuList.length) {
+              if (
+                self.menuList[0].type == 3 &&
+                !this.sectionItem.recordingUrl
+              ) {
+                this.getResource(self.menuList[0]);
+              }
+            }
           }
         });
     },
@@ -6274,6 +6343,9 @@ export default {
               }
 
               &__body {
+                .buy-note {
+                  margin-right: 50px;
+                }
                 .item {
                   margin-top: 24px;
                   padding: 16px;
@@ -6308,7 +6380,7 @@ export default {
             }
 
             .right-box {
-              width: 323px;
+              width: 255px;
               float: right;
               .title {
                 font-size: 16px;
@@ -6325,91 +6397,11 @@ export default {
                   color: #999999;
                   position: absolute;
                   right: 0;
-                  top: 10px;
                 }
               }
 
               .list {
                 .course-item {
-                  margin: 110px 9px 0;
-                  width: 300px;
-                  height: 178px;
-                  background: #ffffff;
-                  box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
-                  border-radius: 10px;
-                  position: relative;
-                  background: #fff;
-                  padding-top: 100px;
-
-                  &__img {
-                    width: 280px;
-                    height: 178px;
-                    background: #ffffff;
-                    box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
-                    border-radius: 10px;
-                    position: absolute;
-                    left: 10px;
-                    top: -78px;
-                    background: rgba(122, 136, 246, 1);
-                    overflow: hidden;
-                    background: no-repeat center center;
-                    background-size: 280px 178px;
-                    .note {
-                      width: 80px;
-                      height: 24px;
-                      background: #d94404;
-                      box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
-                      border-radius: 10px 0px 20px 0px;
-                      text-align: center;
-                      line-height: 24px;
-                      color: #fff;
-                    }
-                  }
-
-                  &__title {
-                    margin: 0 8px;
-                    font-size: 14px;
-                    font-family: Microsoft YaHei;
-                    font-weight: 400;
-                    color: #333333;
-                    line-height: 24px;
-                  }
-
-                  &__desc {
-                    height: 32px;
-                    position: absolute;
-                    left: 0;
-                    right: 0;
-                    bottom: 0;
-                    margin-left: 8px;
-                    display: flex;
-                    justify-content: space-between;
-
-                    .price {
-                      font-size: 18px;
-                      font-family: Microsoft YaHei;
-                      font-weight: bold;
-                      color: #ff2d55;
-                      line-height: 32px;
-                    }
-
-                    .add {
-                      display: block;
-                      width: 118px;
-                      height: 32px;
-                      line-height: 30px;
-                      background: #f2f4f7;
-                      border-radius: 10px 0px 10px 0px;
-                      font-size: 16px;
-                      color: #3f8dfd;
-                      text-align: center;
-
-                      &:hover {
-                        background: #3f8dfd;
-                        color: #f2f4f7;
-                      }
-                    }
-                  }
                 }
               }
             }

+ 4 - 3
src/pages/course-exam/index.vue

@@ -2026,11 +2026,12 @@ export default {
 
             //没选错
             if (checkboxScore) {
+              checkboxScore = 0;
               item.ans.forEach((ans, quesIndex) => {
-                //漏选扣一部分
+                //漏选扣一部分,对n题给n X partScore 分
                 if (item.ques) {
-                  if (item.ques.indexOf(item.ans[quesIndex]) == -1) {
-                    checkboxScore = item.partScore;
+                  if (item.ques.indexOf(item.ans[quesIndex]) != -1) {
+                    checkboxScore += item.partScore;
                   }
                 } else {
                   checkboxScore = 0;

+ 5 - 110
src/pages/course-list/index.vue

@@ -39,7 +39,7 @@
               </div>
             </div>
             <div class="course-classify__list" v-if="businessList.length > 0">
-              <div class="left-item">业务层次:</div>
+              <div class="left-item">培训项目:</div>
               <div class="right-item">
                 <div class="list">
                   <!-- <div class="item active">全部</div> -->
@@ -109,22 +109,8 @@
                   class="course-item"
                   v-for="(item, index) in goodsList"
                   :key="index"
-                  @click="toGoodsDetail(item)"
                 >
-                  <div class="course-item__img">
-                    <img
-                      :src="$tools.splitImgHost(item.coverUrl, true)"
-                      alt=""
-                    />
-                    <div class="note" v-if="item.year">{{ item.year }}</div>
-                  </div>
-                  <div class="course-item__title">
-                    {{ item.goodsName }}
-                  </div>
-                  <div class="course-item__desc">
-                    <div class="price">¥{{ item.standPrice | toFixed }}</div>
-                    <a class="add" @click.stop="addCart(item)">加购物车</a>
-                  </div>
+                  <GoodsItem :item="item"></GoodsItem>
                 </li>
               </ul>
             </div>
@@ -154,6 +140,7 @@
 import Footer from "@/components/footer/index";
 import Header from "@/components/header/index";
 import ToolBar from "@/components/toolbar/index";
+import GoodsItem from "@/components/goodsItem/index";
 import { mapMutations } from "vuex";
 export default {
   name: "PaymentSuccess",
@@ -161,6 +148,7 @@ export default {
     Footer,
     Header,
     ToolBar,
+    GoodsItem,
   },
   data() {
     return {
@@ -175,7 +163,7 @@ export default {
         businessId: "",
         subjectId: "",
         pageNum: 1,
-        pageSize: 12,
+        pageSize: 15,
         goodsStatus: 1,
         goodsType: 1,
         sortType: 1,
@@ -421,99 +409,6 @@ export default {
 
             .course-item {
               float: left;
-              margin: 110px 9px 0;
-              width: 300px;
-              height: 178px;
-              background: #ffffff;
-              box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
-              border-radius: 10px;
-              position: relative;
-              background: #fff;
-              padding-top: 100px;
-              cursor: pointer;
-
-              &__img {
-                width: 280px;
-                height: 178px;
-                background: #ffffff;
-                box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
-                border-radius: 10px;
-                position: absolute;
-                left: 10px;
-                top: -78px;
-                overflow: hidden;
-
-                img {
-                  max-width: 100%;
-                  max-width: 100%;
-                  width: 100%;
-                  height: auto;
-                }
-
-                .note {
-                  position: absolute;
-                  left: 0;
-                  top: 0;
-                  width: 80px;
-                  height: 24px;
-                  background: #d94404;
-                  box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
-                  border-radius: 10px 0px 20px 0px;
-                  text-align: center;
-                  line-height: 24px;
-                  color: #fff;
-                }
-              }
-
-              &__title {
-                margin: 0 8px;
-                font-size: 14px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                color: #333333;
-                line-height: 24px;
-                overflow: hidden;
-                text-overflow: ellipsis;
-                display: -webkit-box;
-                -webkit-line-clamp: 2;
-                -webkit-box-orient: vertical;
-              }
-
-              &__desc {
-                height: 32px;
-                position: absolute;
-                left: 0;
-                right: 0;
-                bottom: 0;
-                margin-left: 8px;
-                display: flex;
-                justify-content: space-between;
-
-                .price {
-                  font-size: 18px;
-                  font-family: Microsoft YaHei;
-                  font-weight: bold;
-                  color: #ff2d55;
-                  line-height: 32px;
-                }
-
-                .add {
-                  display: block;
-                  width: 118px;
-                  height: 32px;
-                  line-height: 30px;
-                  background: #f2f4f7;
-                  border-radius: 10px 0px 10px 0px;
-                  font-size: 16px;
-                  color: #3f8dfd;
-                  text-align: center;
-
-                  &:hover {
-                    background: #3f8dfd;
-                    color: #f2f4f7;
-                  }
-                }
-              }
             }
           }
         }

+ 214 - 184
src/pages/goods-detail/bank-detail.vue

@@ -31,8 +31,21 @@
                     ¥{{ goodsDetail.standPrice | toFixed }}
                   </div>
                   <div class="btns">
-                    <div class="buynow" @click="buyNow">立即购买</div>
-                    <div class="add" @click="addCart()">加入购物车</div>
+                    <el-button
+                      type="primary"
+                      round
+                      class="buynow"
+                      @click="buyNow"
+                      >立即购买</el-button
+                    >
+                    <el-button
+                      type="primary"
+                      round
+                      plain
+                      class="add"
+                      @click="addCart()"
+                      >加入购物车</el-button
+                    >
                   </div>
                 </div>
               </div>
@@ -42,6 +55,13 @@
                     <div class="detail" v-html="goodsDetail.pcDetailHtml"></div>
                   </el-tab-pane>
                   <el-tab-pane label="章节目录" name="2">
+                    <div slot="label" style="position: relative">
+                      <span class="label">章节目录</span>
+                      <span v-if="goodsExamConfig.length" class="view-note"
+                        >试做</span
+                      >
+                    </div>
+
                     <div class="goods-menu clearfix">
                       <div class="left-box">
                         <div class="left-box__body">
@@ -192,7 +212,8 @@
                             )"
                             :key="index"
                           >
-                            <div
+                            <GoodsItem :item="itemy"></GoodsItem>
+                            <!-- <div
                               class="course-item__img"
                               :style="`background-image:url(${$tools.splitImgHost(
                                 itemy.coverUrl,
@@ -214,7 +235,7 @@
                                 @click="addCart(true, itemy.goodsId)"
                                 >加购物车</a
                               >
-                            </div>
+                            </div> -->
                           </li>
                         </ul>
                       </div>
@@ -250,7 +271,8 @@
                   )"
                   :key="index"
                 >
-                  <div
+                  <GoodsItem :item="itemy"></GoodsItem>
+                  <!-- <div
                     class="recommend-item__img"
                     :style="`background-image:url(${$tools.splitImgHost(
                       itemy.coverUrl,
@@ -268,7 +290,7 @@
                     <a class="add" @click="addCart(true, itemy.goodsId)"
                       >加购物车</a
                     >
-                  </div>
+                  </div> -->
                 </li>
               </ul>
             </div>
@@ -1026,6 +1048,7 @@
 import Footer from "@/components/footer/index";
 import Header from "@/components/header/index";
 import ToolBar from "@/components/toolbar/index";
+import GoodsItem from "@/components/goodsItem/index";
 import { mapMutations } from "vuex";
 export default {
   name: "GoodsDetail",
@@ -1033,6 +1056,7 @@ export default {
     Footer,
     Header,
     ToolBar,
+    GoodsItem,
   },
   data() {
     return {
@@ -1088,7 +1112,7 @@ export default {
         let ary = [];
         if (array) {
           for (let i = 0; i < array.length; i++) {
-            if (i >= 4) {
+            if (i >= 5) {
               break;
             } else {
               ary.push(array[i]);
@@ -1105,7 +1129,7 @@ export default {
     this.getGoodsBankList();
   },
   methods: {
-    ...mapMutations(["setCheckGoodsList", "setCurrentRouter", "getCartCount"]),
+    ...mapMutations(["setCurrentRouter", "getCartCount"]),
     toGoodsDetail(item) {
       this.$router.push({
         path: "/bank-detail/" + item.goodsId,
@@ -1211,7 +1235,6 @@ export default {
       this.$set(this.questionList[questionIndex], "ques", index + "");
     },
     judgeSelectChild(questionIndex, jsonIndex, index) {
-      console.log(this.questionList[questionIndex].ques[jsonIndex]);
       if (this.questionList[questionIndex].ques[jsonIndex]) return;
       this.$set(this.questionList[questionIndex].ques, jsonIndex, index + "");
     },
@@ -1361,7 +1384,6 @@ export default {
           examId: item.majorId || item.examId,
         })
         .then((res) => {
-          console.log();
           this.questionModalData.num = this.isTest(
             item.majorId || item.examId
           ).num;
@@ -1649,14 +1671,12 @@ export default {
 
             if (isOver) {
               count++;
-              console.log(item, 444);
             }
           }
         } else if (item.type == 5) {
           //简答题
           if (hasSpecail) {
             if (item.ques && (item.ques.text || item.ques.imageList.length)) {
-              console.log(5, item);
               count++;
             }
           }
@@ -1706,7 +1726,6 @@ export default {
         });
     },
     buyNow() {
-      console.log(this.$route);
       if (!this.$tools.isLogin()) {
         this.setCurrentRouter(this.$route);
         this.$router.push({
@@ -1715,9 +1734,7 @@ export default {
         return;
       }
       let selectGoodsList = JSON.parse(JSON.stringify([this.goodsDetail]));
-
-      this.setCheckGoodsList(selectGoodsList);
-      this.set;
+      localStorage.setItem("checkGoodsList", JSON.stringify(selectGoodsList));
       this.$router.push({
         path: "/payment",
       });
@@ -1892,27 +1909,22 @@ export default {
               display: flex;
 
               .buynow {
-                cursor: pointer;
                 margin-right: 16px;
                 width: 160px;
                 height: 40px;
-                background: #3f8dfd;
+                padding: 0;
                 border-radius: 20px;
                 text-align: center;
                 line-height: 40px;
-                color: #fff;
               }
 
               .add {
-                cursor: pointer;
+                padding: 0;
                 width: 128px;
                 height: 40px;
-                background: #ffffff;
-                border: 1px solid #3f8dfd;
                 border-radius: 20px;
                 text-align: center;
                 line-height: 40px;
-                color: #3f8dfd;
               }
             }
           }
@@ -1932,6 +1944,24 @@ export default {
             }
           }
 
+          .label {
+            font-size: 18px;
+          }
+
+          .view-note {
+            width: 40px;
+            height: 24px;
+            background: #ff3b30;
+            border-radius: 4px 4px 0px 4px;
+            border: 1px solid #ff3b30;
+            text-align: center;
+            line-height: 22px;
+            color: #fff;
+            position: absolute;
+            right: -10px;
+            top: 5px;
+          }
+
           .goods-img {
             width: 100%;
           }
@@ -2022,7 +2052,7 @@ export default {
             }
 
             .right-box {
-              width: 323px;
+              width: 255px;
               float: right;
               .title {
                 margin-left: 10px;
@@ -2046,86 +2076,86 @@ export default {
 
               .list {
                 .course-item {
-                  margin: 110px 9px 0;
-                  width: 300px;
-                  height: 178px;
-                  background: #ffffff;
-                  box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
-                  border-radius: 10px;
-                  position: relative;
-                  background: #fff;
-                  padding-top: 100px;
-
-                  &__img {
-                    width: 280px;
-                    height: 178px;
-                    background: #ffffff;
-                    box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
-                    border-radius: 10px;
-                    position: absolute;
-                    left: 10px;
-                    top: -78px;
-                    background: rgba(122, 136, 246, 1);
-                    overflow: hidden;
-
-                    background: no-repeat center center;
-                    background-size: 280px 178px;
-                    .note {
-                      width: 80px;
-                      height: 24px;
-                      background: #d94404;
-                      box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
-                      border-radius: 10px 0px 20px 0px;
-                      text-align: center;
-                      line-height: 24px;
-                      color: #fff;
-                    }
-                  }
-
-                  &__title {
-                    margin: 0 8px;
-                    font-size: 14px;
-                    font-family: Microsoft YaHei;
-                    font-weight: 400;
-                    color: #333333;
-                    line-height: 24px;
-                  }
-
-                  &__desc {
-                    height: 32px;
-                    position: absolute;
-                    left: 0;
-                    right: 0;
-                    bottom: 0;
-                    margin-left: 8px;
-                    display: flex;
-                    justify-content: space-between;
-
-                    .price {
-                      font-size: 18px;
-                      font-family: Microsoft YaHei;
-                      font-weight: bold;
-                      color: #ff2d55;
-                      line-height: 32px;
-                    }
-
-                    .add {
-                      display: block;
-                      width: 118px;
-                      height: 32px;
-                      line-height: 30px;
-                      background: #f2f4f7;
-                      border-radius: 10px 0px 10px 0px;
-                      font-size: 16px;
-                      color: #3f8dfd;
-                      text-align: center;
-
-                      &:hover {
-                        background: #3f8dfd;
-                        color: #f2f4f7;
-                      }
-                    }
-                  }
+                  // margin: 110px 9px 0;
+                  // width: 300px;
+                  // height: 178px;
+                  // background: #ffffff;
+                  // box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
+                  // border-radius: 10px;
+                  // position: relative;
+                  // background: #fff;
+                  // padding-top: 100px;
+
+                  // &__img {
+                  //   width: 280px;
+                  //   height: 178px;
+                  //   background: #ffffff;
+                  //   box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
+                  //   border-radius: 10px;
+                  //   position: absolute;
+                  //   left: 10px;
+                  //   top: -78px;
+                  //   background: rgba(122, 136, 246, 1);
+                  //   overflow: hidden;
+
+                  //   background: no-repeat center center;
+                  //   background-size: 280px 178px;
+                  //   .note {
+                  //     width: 80px;
+                  //     height: 24px;
+                  //     background: #d94404;
+                  //     box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
+                  //     border-radius: 10px 0px 20px 0px;
+                  //     text-align: center;
+                  //     line-height: 24px;
+                  //     color: #fff;
+                  //   }
+                  // }
+
+                  // &__title {
+                  //   margin: 0 8px;
+                  //   font-size: 14px;
+                  //   font-family: Microsoft YaHei;
+                  //   font-weight: 400;
+                  //   color: #333333;
+                  //   line-height: 24px;
+                  // }
+
+                  // &__desc {
+                  //   height: 32px;
+                  //   position: absolute;
+                  //   left: 0;
+                  //   right: 0;
+                  //   bottom: 0;
+                  //   margin-left: 8px;
+                  //   display: flex;
+                  //   justify-content: space-between;
+
+                  //   .price {
+                  //     font-size: 18px;
+                  //     font-family: Microsoft YaHei;
+                  //     font-weight: bold;
+                  //     color: #ff2d55;
+                  //     line-height: 32px;
+                  //   }
+
+                  //   .add {
+                  //     display: block;
+                  //     width: 118px;
+                  //     height: 32px;
+                  //     line-height: 30px;
+                  //     background: #f2f4f7;
+                  //     border-radius: 10px 0px 10px 0px;
+                  //     font-size: 16px;
+                  //     color: #3f8dfd;
+                  //     text-align: center;
+
+                  //     &:hover {
+                  //       background: #3f8dfd;
+                  //       color: #f2f4f7;
+                  //     }
+                  //   }
+                  // }
                 }
               }
             }
@@ -2157,86 +2187,86 @@ export default {
 
             .recommend-item {
               float: left;
-              margin: 100px 9px 0;
-              width: 300px;
-              height: 178px;
-              background: #ffffff;
-              box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
-              border-radius: 10px;
-              position: relative;
-              background: #fff;
-              padding-top: 100px;
-
-              &__img {
-                width: 280px;
-                height: 178px;
-                background: #ffffff;
-                box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
-                border-radius: 10px;
-                position: absolute;
-                left: 10px;
-                top: -78px;
-                background: rgba(122, 136, 246, 1);
-                overflow: hidden;
-                background: no-repeat center center;
-                background-size: 280px 178px;
-
-                .note {
-                  width: 80px;
-                  height: 24px;
-                  background: #d94404;
-                  box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
-                  border-radius: 10px 0px 20px 0px;
-                  text-align: center;
-                  line-height: 24px;
-                  color: #fff;
-                }
-              }
-
-              &__title {
-                margin: 0 8px;
-                font-size: 14px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                color: #333333;
-                line-height: 24px;
-              }
-
-              &__desc {
-                height: 32px;
-                position: absolute;
-                left: 0;
-                right: 0;
-                bottom: 0;
-                margin-left: 8px;
-                display: flex;
-                justify-content: space-between;
-
-                .price {
-                  font-size: 18px;
-                  font-family: Microsoft YaHei;
-                  font-weight: bold;
-                  color: #ff2d55;
-                  line-height: 32px;
-                }
-
-                .add {
-                  display: block;
-                  width: 118px;
-                  height: 32px;
-                  line-height: 30px;
-                  background: #f2f4f7;
-                  border-radius: 10px 0px 10px 0px;
-                  font-size: 16px;
-                  color: #3f8dfd;
-                  text-align: center;
-
-                  &:hover {
-                    background: #3f8dfd;
-                    color: #f2f4f7;
-                  }
-                }
-              }
+              // margin: 100px 9px 0;
+              // width: 300px;
+              // height: 178px;
+              // background: #ffffff;
+              // box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
+              // border-radius: 10px;
+              // position: relative;
+              // background: #fff;
+              // padding-top: 100px;
+
+              // &__img {
+              //   width: 280px;
+              //   height: 178px;
+              //   background: #ffffff;
+              //   box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
+              //   border-radius: 10px;
+              //   position: absolute;
+              //   left: 10px;
+              //   top: -78px;
+              //   background: rgba(122, 136, 246, 1);
+              //   overflow: hidden;
+              //   background: no-repeat center center;
+              //   background-size: 280px 178px;
+
+              //   .note {
+              //     width: 80px;
+              //     height: 24px;
+              //     background: #d94404;
+              //     box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
+              //     border-radius: 10px 0px 20px 0px;
+              //     text-align: center;
+              //     line-height: 24px;
+              //     color: #fff;
+              //   }
+              // }
+
+              // &__title {
+              //   margin: 0 8px;
+              //   font-size: 14px;
+              //   font-family: Microsoft YaHei;
+              //   font-weight: 400;
+              //   color: #333333;
+              //   line-height: 24px;
+              // }
+
+              // &__desc {
+              //   height: 32px;
+              //   position: absolute;
+              //   left: 0;
+              //   right: 0;
+              //   bottom: 0;
+              //   margin-left: 8px;
+              //   display: flex;
+              //   justify-content: space-between;
+
+              //   .price {
+              //     font-size: 18px;
+              //     font-family: Microsoft YaHei;
+              //     font-weight: bold;
+              //     color: #ff2d55;
+              //     line-height: 32px;
+              //   }
+
+              //   .add {
+              //     display: block;
+              //     width: 118px;
+              //     height: 32px;
+              //     line-height: 30px;
+              //     background: #f2f4f7;
+              //     border-radius: 10px 0px 10px 0px;
+              //     font-size: 16px;
+              //     color: #3f8dfd;
+              //     text-align: center;
+
+              //     &:hover {
+              //       background: #3f8dfd;
+              //       color: #f2f4f7;
+              //     }
+              //   }
+              // }
             }
           }
         }

+ 194 - 197
src/pages/goods-detail/course-detail.vue

@@ -35,8 +35,21 @@
                     ¥{{ goodsDetail.standPrice | toFixed }}
                   </div>
                   <div class="btns">
-                    <div class="buynow" @click="buyNow()">立即购买</div>
-                    <div class="add" @click="addCart()">加入购物车</div>
+                    <el-button
+                      type="primary"
+                      round
+                      class="buynow"
+                      @click="buyNow()"
+                      >立即购买</el-button
+                    >
+                    <el-button
+                      type="primary"
+                      round
+                      plain
+                      class="add"
+                      @click="addCart()"
+                      >加入购物车</el-button
+                    >
                   </div>
                 </div>
               </div>
@@ -225,11 +238,11 @@
                         </div>
                       </div>
                       <div class="right-box">
-                        <div class="title">
+                        <div class="title" v-if="recommendList.goodsList">
                           推荐课程
-                          <span class="more" @click="comeMoreList">更多></span>
+                          <a class="more" @click="comeMoreList">更多></a>
                         </div>
-                        <ul class="list">
+                        <ul class="list" v-if="recommendList.goodsList">
                           <li
                             class="course-item"
                             v-for="(itemy, index) in compyRecommend(
@@ -237,7 +250,8 @@
                             )"
                             :key="index"
                           >
-                            <div
+                            <GoodsItem :item="itemy"></GoodsItem>
+                            <!-- <div
                               class="course-item__img"
                               :style="`background-image:url(${$tools.splitImgHost(
                                 itemy.coverUrl,
@@ -259,7 +273,7 @@
                                 @click="addCart(true, itemy.goodsId)"
                                 >加购物车</a
                               >
-                            </div>
+                            </div> -->
                           </li>
                         </ul>
                       </div>
@@ -284,7 +298,7 @@
           v-if="
             recommendList.goodsList &&
             recommendList.goodsList.length &&
-            activeName == 1
+            (activeName == 1 || activeName == 3)
           "
         >
           <div class="recommend">
@@ -300,25 +314,7 @@
                   )"
                   :key="index"
                 >
-                  <div
-                    class="recommend-item__img"
-                    :style="`background-image:url(${$tools.splitImgHost(
-                      itemy.coverUrl,
-                      true
-                    )})`"
-                    @click="toGoodsDetail(itemy)"
-                  >
-                    <div class="note" v-if="itemy.year">{{ itemy.year }}</div>
-                  </div>
-                  <div class="recommend-item__title">
-                    {{ itemy.goodsName }}
-                  </div>
-                  <div class="recommend-item__desc">
-                    <div class="price">¥{{ itemy.standPrice }}</div>
-                    <a class="add" @click="addCart(true, itemy.goodsId)"
-                      >加购物车</a
-                    >
-                  </div>
+                  <GoodsItem :item="itemy"></GoodsItem>
                 </li>
               </ul>
             </div>
@@ -442,6 +438,7 @@
 import Footer from "@/components/footer/index";
 import Header from "@/components/header/index";
 import ToolBar from "@/components/toolbar/index";
+import GoodsItem from "@/components/goodsItem/index";
 import { mapMutations } from "vuex";
 export default {
   name: "GoodsDetail",
@@ -449,6 +446,7 @@ export default {
     Footer,
     Header,
     ToolBar,
+    GoodsItem,
   },
   data() {
     return {
@@ -541,7 +539,7 @@ export default {
         let ary = [];
         if (array) {
           for (let i = 0; i < array.length; i++) {
-            if (i >= 4) {
+            if (i >= 5) {
               break;
             } else {
               ary.push(array[i]);
@@ -553,7 +551,7 @@ export default {
     },
   },
   methods: {
-    ...mapMutations(["setCheckGoodsList", "setCurrentRouter", "getCartCount"]),
+    ...mapMutations(["setCurrentRouter", "getCartCount"]),
     toGoodsDetail(item) {
       this.$router.push({
         path: "/course-detail/" + item.goodsId,
@@ -1296,7 +1294,10 @@ export default {
             }
           });
 
-          this.setCheckGoodsList(selectGoodsList);
+          localStorage.setItem(
+            "checkGoodsList",
+            JSON.stringify(selectGoodsList)
+          );
 
           this.$router.push({
             path: "/payment",
@@ -1307,6 +1308,7 @@ export default {
         this.$router.push({
           path: "/login",
         });
+        return;
       }
     },
     pay() {
@@ -1372,7 +1374,7 @@ export default {
         }
       });
 
-      this.setCheckGoodsList(selectGoodsList);
+      localStorage.setItem("checkGoodsList", JSON.stringify(selectGoodsList));
 
       this.$router.push({
         path: "/payment",
@@ -1579,27 +1581,22 @@ export default {
               display: flex;
 
               .buynow {
-                cursor: pointer;
                 margin-right: 16px;
                 width: 160px;
                 height: 40px;
-                background: #3f8dfd;
+                padding: 0;
                 border-radius: 20px;
                 text-align: center;
                 line-height: 40px;
-                color: #fff;
               }
 
               .add {
-                cursor: pointer;
+                padding: 0;
                 width: 128px;
                 height: 40px;
-                background: #ffffff;
-                border: 1px solid #3f8dfd;
                 border-radius: 20px;
                 text-align: center;
                 line-height: 40px;
-                color: #3f8dfd;
               }
             }
           }
@@ -1738,7 +1735,7 @@ export default {
             }
 
             .right-box {
-              width: 323px;
+              width: 255px;
               float: right;
               .title {
                 margin-left: 10px;
@@ -1762,85 +1759,85 @@ export default {
 
               .list {
                 .course-item {
-                  margin: 110px 9px 0;
-                  width: 300px;
-                  height: 178px;
-                  background: #ffffff;
-                  box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
-                  border-radius: 10px;
-                  position: relative;
-                  background: #fff;
-                  padding-top: 100px;
-
-                  &__img {
-                    width: 280px;
-                    height: 178px;
-                    background: #ffffff;
-                    box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
-                    border-radius: 10px;
-                    position: absolute;
-                    left: 10px;
-                    top: -78px;
-                    background: rgba(122, 136, 246, 1);
-                    overflow: hidden;
-                    background: no-repeat center center;
-                    background-size: 280px 178px;
-                    .note {
-                      width: 80px;
-                      height: 24px;
-                      background: #d94404;
-                      box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
-                      border-radius: 10px 0px 20px 0px;
-                      text-align: center;
-                      line-height: 24px;
-                      color: #fff;
-                    }
-                  }
-
-                  &__title {
-                    margin: 0 8px;
-                    font-size: 14px;
-                    font-family: Microsoft YaHei;
-                    font-weight: 400;
-                    color: #333333;
-                    line-height: 24px;
-                  }
-
-                  &__desc {
-                    height: 32px;
-                    position: absolute;
-                    left: 0;
-                    right: 0;
-                    bottom: 0;
-                    margin-left: 8px;
-                    display: flex;
-                    justify-content: space-between;
-
-                    .price {
-                      font-size: 18px;
-                      font-family: Microsoft YaHei;
-                      font-weight: bold;
-                      color: #ff2d55;
-                      line-height: 32px;
-                    }
-
-                    .add {
-                      display: block;
-                      width: 118px;
-                      height: 32px;
-                      line-height: 30px;
-                      background: #f2f4f7;
-                      border-radius: 10px 0px 10px 0px;
-                      font-size: 16px;
-                      color: #3f8dfd;
-                      text-align: center;
-
-                      &:hover {
-                        background: #3f8dfd;
-                        color: #f2f4f7;
-                      }
-                    }
-                  }
+                  // margin: 110px 9px 0;
+                  // width: 300px;
+                  // height: 178px;
+                  // background: #ffffff;
+                  // box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
+                  // border-radius: 10px;
+                  // position: relative;
+                  // background: #fff;
+                  // padding-top: 100px;
+
+                  // &__img {
+                  //   width: 280px;
+                  //   height: 178px;
+                  //   background: #ffffff;
+                  //   box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
+                  //   border-radius: 10px;
+                  //   position: absolute;
+                  //   left: 10px;
+                  //   top: -78px;
+                  //   background: rgba(122, 136, 246, 1);
+                  //   overflow: hidden;
+                  //   background: no-repeat center center;
+                  //   background-size: 280px 178px;
+                  //   .note {
+                  //     width: 80px;
+                  //     height: 24px;
+                  //     background: #d94404;
+                  //     box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
+                  //     border-radius: 10px 0px 20px 0px;
+                  //     text-align: center;
+                  //     line-height: 24px;
+                  //     color: #fff;
+                  //   }
+                  // }
+
+                  // &__title {
+                  //   margin: 0 8px;
+                  //   font-size: 14px;
+                  //   font-family: Microsoft YaHei;
+                  //   font-weight: 400;
+                  //   color: #333333;
+                  //   line-height: 24px;
+                  // }
+
+                  // &__desc {
+                  //   height: 32px;
+                  //   position: absolute;
+                  //   left: 0;
+                  //   right: 0;
+                  //   bottom: 0;
+                  //   margin-left: 8px;
+                  //   display: flex;
+                  //   justify-content: space-between;
+
+                  //   .price {
+                  //     font-size: 18px;
+                  //     font-family: Microsoft YaHei;
+                  //     font-weight: bold;
+                  //     color: #ff2d55;
+                  //     line-height: 32px;
+                  //   }
+
+                  //   .add {
+                  //     display: block;
+                  //     width: 118px;
+                  //     height: 32px;
+                  //     line-height: 30px;
+                  //     background: #f2f4f7;
+                  //     border-radius: 10px 0px 10px 0px;
+                  //     font-size: 16px;
+                  //     color: #3f8dfd;
+                  //     text-align: center;
+
+                  //     &:hover {
+                  //       background: #3f8dfd;
+                  //       color: #f2f4f7;
+                  //     }
+                  //   }
+                  // }
                 }
               }
             }
@@ -1872,85 +1869,85 @@ export default {
 
             .recommend-item {
               float: left;
-              margin: 100px 9px 0;
-              width: 300px;
-              height: 178px;
-              background: #ffffff;
-              box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
-              border-radius: 10px;
-              position: relative;
-              background: #fff;
-              padding-top: 100px;
-
-              &__img {
-                width: 280px;
-                height: 178px;
-                background: #ffffff;
-                box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
-                border-radius: 10px;
-                position: absolute;
-                left: 10px;
-                top: -78px;
-                background: rgba(122, 136, 246, 1);
-                overflow: hidden;
-                background: no-repeat center center;
-                background-size: 280px 178px;
-                .note {
-                  width: 80px;
-                  height: 24px;
-                  background: #d94404;
-                  box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
-                  border-radius: 10px 0px 20px 0px;
-                  text-align: center;
-                  line-height: 24px;
-                  color: #fff;
-                }
-              }
-
-              &__title {
-                margin: 0 8px;
-                font-size: 14px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                color: #333333;
-                line-height: 24px;
-              }
-
-              &__desc {
-                height: 32px;
-                position: absolute;
-                left: 0;
-                right: 0;
-                bottom: 0;
-                margin-left: 8px;
-                display: flex;
-                justify-content: space-between;
-
-                .price {
-                  font-size: 18px;
-                  font-family: Microsoft YaHei;
-                  font-weight: bold;
-                  color: #ff2d55;
-                  line-height: 32px;
-                }
-
-                .add {
-                  display: block;
-                  width: 118px;
-                  height: 32px;
-                  line-height: 30px;
-                  background: #f2f4f7;
-                  border-radius: 10px 0px 10px 0px;
-                  font-size: 16px;
-                  color: #3f8dfd;
-                  text-align: center;
-
-                  &:hover {
-                    background: #3f8dfd;
-                    color: #f2f4f7;
-                  }
-                }
-              }
+              // margin: 100px 9px 0;
+              // width: 300px;
+              // height: 178px;
+              // background: #ffffff;
+              // box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
+              // border-radius: 10px;
+              // position: relative;
+              // background: #fff;
+              // padding-top: 100px;
+
+              // &__img {
+              //   width: 280px;
+              //   height: 178px;
+              //   background: #ffffff;
+              //   box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
+              //   border-radius: 10px;
+              //   position: absolute;
+              //   left: 10px;
+              //   top: -78px;
+              //   background: rgba(122, 136, 246, 1);
+              //   overflow: hidden;
+              //   background: no-repeat center center;
+              //   background-size: 280px 178px;
+              //   .note {
+              //     width: 80px;
+              //     height: 24px;
+              //     background: #d94404;
+              //     box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
+              //     border-radius: 10px 0px 20px 0px;
+              //     text-align: center;
+              //     line-height: 24px;
+              //     color: #fff;
+              //   }
+              // }
+
+              // &__title {
+              //   margin: 0 8px;
+              //   font-size: 14px;
+              //   font-family: Microsoft YaHei;
+              //   font-weight: 400;
+              //   color: #333333;
+              //   line-height: 24px;
+              // }
+
+              // &__desc {
+              //   height: 32px;
+              //   position: absolute;
+              //   left: 0;
+              //   right: 0;
+              //   bottom: 0;
+              //   margin-left: 8px;
+              //   display: flex;
+              //   justify-content: space-between;
+
+              //   .price {
+              //     font-size: 18px;
+              //     font-family: Microsoft YaHei;
+              //     font-weight: bold;
+              //     color: #ff2d55;
+              //     line-height: 32px;
+              //   }
+
+              //   .add {
+              //     display: block;
+              //     width: 118px;
+              //     height: 32px;
+              //     line-height: 30px;
+              //     background: #f2f4f7;
+              //     border-radius: 10px 0px 10px 0px;
+              //     font-size: 16px;
+              //     color: #3f8dfd;
+              //     text-align: center;
+
+              //     &:hover {
+              //       background: #3f8dfd;
+              //       color: #f2f4f7;
+              //     }
+              //   }
+              // }
             }
           }
         }

+ 51 - 213
src/pages/home/index.vue

@@ -23,7 +23,8 @@
               <el-dropdown-menu slot="dropdown">
                 <el-dropdown-item command="1">我的课程</el-dropdown-item>
                 <el-dropdown-item command="2">我的题库</el-dropdown-item>
-                <el-dropdown-item command="3">退出登录</el-dropdown-item>
+                <el-dropdown-item command="3">个人中心</el-dropdown-item>
+                <el-dropdown-item command="4">退出登录</el-dropdown-item>
               </el-dropdown-menu>
             </el-dropdown>
           </div>
@@ -158,6 +159,7 @@
               <swiper-slide
                 v-for="(item, index) in bannerList"
                 v-bind:key="index"
+                @click.native="swiperJump(item)"
               >
                 <img
                   :src="$tools.splitImgHost(item.adverUrl, true, 1272)"
@@ -348,27 +350,8 @@
           </p>
           <ul v-else class="list clearfix">
             <template v-for="(item, index) in goodsList1[active1].goodsList">
-              <li
-                class="course-item"
-                v-if="index < 12"
-                :key="index"
-                @click="goodsDetail(item, 1)"
-              >
-                <div class="course-item__img">
-                  <div class="note" v-if="item.year">{{ item.year }}</div>
-                  <img
-                    v-if="item.coverUrl"
-                    :src="$tools.splitImgHost(item.coverUrl)"
-                    alt=""
-                  />
-                </div>
-                <div class="course-item__title">
-                  {{ item.goodsName }}
-                </div>
-                <div class="course-item__desc">
-                  <div class="price">¥{{ item.standPrice }}</div>
-                  <a class="add" @click.stop="addCart(item)">加购物车</a>
-                </div>
+              <li class="course-item" :key="index" v-if="index < 15">
+                <GoodsItem :item="item"></GoodsItem>
               </li>
             </template>
           </ul>
@@ -411,11 +394,12 @@
             <template v-for="(item, index) in goodsList2[active2].goodsList">
               <li
                 class="bank-item"
-                v-if="index < 12"
+                v-if="index < 15"
                 :key="index"
                 @click="goodsDetail(item, 2)"
               >
-                <div class="bank-item__img">
+                <GoodsItem :item="item"></GoodsItem>
+                <!-- <div class="bank-item__img">
                   <div class="note" v-if="item.year">{{ item.year }}</div>
                   <img
                     v-if="item.coverUrl"
@@ -429,7 +413,7 @@
                 <div class="bank-item__desc">
                   <div class="price">¥{{ item.standPrice }}</div>
                   <a class="add" @click.stop="addCart(item)">加购物车</a>
-                </div>
+                </div> -->
               </li>
             </template>
           </ul>
@@ -487,6 +471,7 @@
 <script>
 import Footer from "@/components/footer/index";
 import ToolBar from "@/components/toolbar/index";
+import GoodsItem from "@/components/goodsItem/index";
 import { swiper, swiperSlide } from "vue-awesome-swiper";
 import { mapGetters, mapMutations } from "vuex";
 import "swiper/swiper-bundle.css";
@@ -496,6 +481,7 @@ export default {
     swiper,
     swiperSlide,
     Footer,
+    GoodsItem,
     ToolBar,
   },
   computed: {
@@ -601,6 +587,20 @@ export default {
     },
   },
   methods: {
+    swiperJump(swiper) {
+      if (swiper.jumpType == 1) {
+        //无跳转
+        return;
+      } else if (swiper.jumpType == 2) {
+        //url
+        window.open(swiper.jumpUrl, "_blank");
+      } else if (swiper.jumpType == 3) {
+        //内部接口
+        this.$router.push({
+          path: swiper.jumpUrl,
+        });
+      }
+    },
     handleCommand(command) {
       switch (command) {
         case "1":
@@ -609,7 +609,11 @@ export default {
         case "2":
           this.go("/person-center/my-bank");
           break;
+
         case "3":
+          this.go("/person-center/my-info");
+          break;
+        case "4":
           this.$tools.exit();
           break;
 
@@ -705,23 +709,30 @@ export default {
     },
 
     businessList(educationId, index) {
-      this.$request.businessList({ educationId }).then((res) => {
-        this.$set(this.slideList, index, res.rows);
-        if (res.rows.length >= 2) {
-          let newRows = res.rows.slice(0, 2);
-          let length = 0;
-          newRows.forEach((row) => {
-            let str = row.projectName + "-" + row.businessName;
-            length = length + str.length;
-          });
+      this.$request
+        .businessList({ educationId })
+        .then((res) => {
+          this.$set(this.slideList, index, res.rows);
+          if (res.rows.length >= 2) {
+            let newRows = res.rows.slice(0, 2);
+            let length = 0;
+            newRows.forEach((row) => {
+              let str = row.projectName + "-" + row.businessName;
+              length = length + str.length;
+            });
 
-          if (length >= 17) {
-            this.$set(this.typeList[index], "list", res.rows.slice(0, 1));
+            if (length >= 17) {
+              this.$set(this.typeList[index], "list", res.rows.slice(0, 1));
+            } else {
+              this.$set(this.typeList[index], "list", res.rows.slice(0, 2));
+            }
           } else {
-            this.$set(this.typeList[index], "list", res.rows.slice(0, 2));
+            this.$set(this.typeList[index], "list", res.rows);
           }
-        }
-      });
+        })
+        .catch((err) => {
+          console.log(err, "err");
+        });
     },
 
     /**
@@ -1306,6 +1317,7 @@ export default {
 
         .swiper {
           .swiper-slide {
+            cursor: pointer;
             height: 400px;
 
             img {
@@ -1542,93 +1554,7 @@ export default {
         width: 100%;
 
         .course-item {
-          cursor: pointer;
           float: left;
-          margin: 100px 9px 0;
-          width: 300px;
-          height: 178px;
-          background: #ffffff;
-          box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
-          border-radius: 10px;
-          position: relative;
-          background: #fff;
-          padding-top: 100px;
-
-          &__img {
-            width: 280px;
-            height: 178px;
-            background: #ffffff;
-            box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
-            border-radius: 10px;
-            position: absolute;
-            left: 10px;
-            top: -78px;
-            background: rgba(122, 136, 246, 1);
-            overflow: hidden;
-            .note {
-              position: absolute;
-              top: 0px;
-              left: 0px;
-              z-index: 2;
-              width: 80px;
-              height: 24px;
-              background: #d94404;
-              box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
-              border-radius: 10px 0px 20px 0px;
-              text-align: center;
-              line-height: 24px;
-              color: #fff;
-            }
-            img {
-              width: 100%;
-              height: 100%;
-            }
-          }
-
-          &__title {
-            margin: 0 8px;
-            font-size: 14px;
-            font-family: Microsoft YaHei;
-            font-weight: 400;
-            color: #333333;
-            line-height: 24px;
-          }
-
-          &__desc {
-            height: 32px;
-            position: absolute;
-            left: 0;
-            right: 0;
-            bottom: 0;
-            margin-left: 8px;
-            display: flex;
-            justify-content: space-between;
-
-            .price {
-              font-size: 18px;
-              font-family: Microsoft YaHei;
-              font-weight: bold;
-              color: #ff2d55;
-              line-height: 32px;
-            }
-
-            .add {
-              display: block;
-              width: 118px;
-              height: 32px;
-              line-height: 30px;
-              background: #f2f4f7;
-              border-radius: 10px 0px 10px 0px;
-              font-size: 16px;
-              color: #3f8dfd;
-              text-align: center;
-              transition: all 0.2s;
-              &:hover {
-                background: #3f8dfd;
-                color: #f2f4f7;
-              }
-            }
-          }
         }
       }
     }
@@ -1705,95 +1631,7 @@ export default {
         width: 100%;
 
         .bank-item {
-          cursor: pointer;
           float: left;
-          margin: 100px 9px 0;
-          width: 300px;
-          height: 178px;
-          background: #ffffff;
-          box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
-          border-radius: 10px;
-          position: relative;
-          background: #fff;
-          padding-top: 100px;
-
-          &__img {
-            width: 280px;
-            height: 178px;
-            background: #ffffff;
-            box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
-            border-radius: 10px;
-            position: absolute;
-            left: 10px;
-            top: -78px;
-            background: rgba(122, 136, 246, 1);
-            overflow: hidden;
-
-            .note {
-              position: absolute;
-              top: 0px;
-              left: 0px;
-              z-index: 2;
-              width: 80px;
-              height: 24px;
-              background: #437cff;
-              box-shadow: 0px 1px 1px 0px rgba(56, 104, 217, 0.4);
-              border-radius: 10px 0px 20px 0px;
-              text-align: center;
-              line-height: 24px;
-              color: #fff;
-            }
-            img {
-              width: 100%;
-              height: 100%;
-            }
-          }
-
-          &__title {
-            margin: 0 8px;
-            font-size: 14px;
-            font-family: Microsoft YaHei;
-            font-weight: 400;
-            color: #333333;
-            line-height: 24px;
-          }
-
-          &__desc {
-            height: 32px;
-            position: absolute;
-            left: 0;
-            right: 0;
-            bottom: 0;
-            margin-left: 8px;
-            display: flex;
-            justify-content: space-between;
-
-            .price {
-              font-size: 18px;
-              font-family: Microsoft YaHei;
-              font-weight: bold;
-              color: #ff2d55;
-              line-height: 32px;
-            }
-
-            .add {
-              display: block;
-              width: 118px;
-              height: 32px;
-              line-height: 30px;
-              background: #f2f4f7;
-              border-radius: 10px 0px 10px 0px;
-              font-size: 16px;
-              color: #3f8dfd;
-              text-align: center;
-              transition: all 0.2s;
-
-              &:hover {
-                background: #3f8dfd;
-                color: #f2f4f7;
-              }
-            }
-          }
         }
       }
     }

+ 4 - 99
src/pages/payment-success/index.vue

@@ -58,25 +58,7 @@
                   )"
                   :key="index"
                 >
-                  <div
-                    class="recommend-item__img"
-                    :style="`background-image:url(${$tools.splitImgHost(
-                      itemy.coverUrl,
-                      true
-                    )})`"
-                    @click="toGoodsDetail(itemy)"
-                  >
-                    <div class="note" v-if="itemy.year">{{ itemy.year }}</div>
-                  </div>
-                  <div class="recommend-item__title">
-                    {{ itemy.goodsName }}
-                  </div>
-                  <div class="recommend-item__desc">
-                    <div class="price">¥{{ itemy.standPrice }}</div>
-                    <a class="add" @click="addCart(true, itemy.goodsId)"
-                      >加购物车</a
-                    >
-                  </div>
+                  <GoodsItem :item="itemy"></GoodsItem>
                 </li>
               </ul>
             </div>
@@ -98,12 +80,14 @@
 import Footer from "@/components/footer/index";
 import Header from "@/components/header/index";
 import ToolBar from "@/components/toolbar/index";
+import GoodsItem from "@/components/goodsItem/index";
 export default {
   name: "PaymentSuccess",
   components: {
     Footer,
     Header,
     ToolBar,
+    GoodsItem,
   },
   data() {
     return {
@@ -123,7 +107,7 @@ export default {
         let ary = [];
         if (array) {
           for (let i = 0; i < array.length; i++) {
-            if (i >= 4) {
+            if (i >= 5) {
               break;
             } else {
               ary.push(array[i]);
@@ -300,85 +284,6 @@ export default {
 
             .recommend-item {
               float: left;
-              margin: 100px 9px 0;
-              width: 300px;
-              height: 178px;
-              background: #ffffff;
-              box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
-              border-radius: 10px;
-              position: relative;
-              background: #fff;
-              padding-top: 100px;
-
-              &__img {
-                width: 280px;
-                height: 178px;
-                background: #ffffff;
-                box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
-                border-radius: 10px;
-                position: absolute;
-                left: 10px;
-                top: -78px;
-                background: rgba(122, 136, 246, 1);
-                overflow: hidden;
-                background: no-repeat center center;
-                background-size: 280px 178px;
-                .note {
-                  width: 80px;
-                  height: 24px;
-                  background: #d94404;
-                  box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
-                  border-radius: 10px 0px 20px 0px;
-                  text-align: center;
-                  line-height: 24px;
-                  color: #fff;
-                }
-              }
-
-              &__title {
-                margin: 0 8px;
-                font-size: 14px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                color: #333333;
-                line-height: 24px;
-              }
-
-              &__desc {
-                height: 32px;
-                position: absolute;
-                left: 0;
-                right: 0;
-                bottom: 0;
-                margin-left: 8px;
-                display: flex;
-                justify-content: space-between;
-
-                .price {
-                  font-size: 18px;
-                  font-family: Microsoft YaHei;
-                  font-weight: bold;
-                  color: #ff2d55;
-                  line-height: 32px;
-                }
-
-                .add {
-                  display: block;
-                  width: 118px;
-                  height: 32px;
-                  line-height: 30px;
-                  background: #f2f4f7;
-                  border-radius: 10px 0px 10px 0px;
-                  font-size: 16px;
-                  color: #3f8dfd;
-                  text-align: center;
-
-                  &:hover {
-                    background: #3f8dfd;
-                    color: #f2f4f7;
-                  }
-                }
-              }
             }
           }
         }

+ 7 - 9
src/pages/payment/index.vue

@@ -111,34 +111,33 @@ export default {
       checkOrderTimer: null,
       loading: null,
       countTimer: null,
+      checkGoodsList: [],
       isBK: "",
     };
   },
-  computed: {
-    ...mapGetters(["checkGoodsList"]),
-  },
+  computed: {},
   beforeDestroy() {
     clearInterval(this.countTimer);
     clearInterval(this.checkOrderTimer);
   },
   mounted() {
     console.log(this.$route, "this.$route.params");
-    console.log(this.checkGoodsList);
     this.isBK = this.$route.query.isBK;
-    if (this.checkGoodsList.length <= 0 && !this.$route.params.orderSn) {
+    let checkGoodsList = localStorage.getItem("checkGoodsList");
+    if (!checkGoodsList && !this.$route.params.orderSn) {
       this.$router.push({ path: "/" });
       return;
     } else {
       if (this.$route.params.orderSn) {
         this.orderSn = this.$route.params.orderSn;
         this.total = this.$route.params.total;
-      } else if (this.checkGoodsList.length > 0) {
+      } else if (checkGoodsList) {
+        this.checkGoodsList = JSON.parse(checkGoodsList);
         this.caculate();
       }
     }
   },
   methods: {
-    ...mapMutations(["setCheckGoodsList"]),
     refreshCode() {
       if (this.lastTime > 0) {
         return;
@@ -215,6 +214,7 @@ export default {
         .orderPlacePcOrder({ goodsList: this.checkGoodsList })
         .then((res) => {
           this.loading.close();
+          localStorage.removeItem("checkGoodsList");
           console.log(res);
           this.urlBase64 = res.data.urlBase64;
           this.orderSn = res.data.orderSn;
@@ -321,8 +321,6 @@ export default {
             }
 
             console.log(this.checkGoodsList);
-
-            this.setCheckGoodsList([]);
           }
         })
         .catch((err) => {});

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

@@ -151,6 +151,7 @@ export default {
     }
 
     &__body {
+      margin-bottom: 20px;
       .nav {
         float: left;
         width: 138px;

+ 88 - 85
src/pages/person-center/my-bank/bank-detail/index.vue

@@ -611,9 +611,9 @@
                   recommendList.goodsList
                 )"
                 :key="index"
-                @click="toGoodsDetail(itemy)"
               >
-                <div
+                <GoodsItem :item="itemy"></GoodsItem>
+                <!-- <div
                   class="course-item__img"
                   :style="`background-image:url(${$tools.splitImgHost(
                     itemy.coverUrl,
@@ -630,7 +630,7 @@
                   <a class="add" @click.stop="addCart(true, itemy.goodsId)"
                     >加购物车</a
                   >
-                </div>
+                </div> -->
               </li>
             </ul>
           </div>
@@ -641,9 +641,12 @@
 </template>
 
 <script>
+import GoodsItem from "@/components/goodsItem/index";
 export default {
   name: "BankDetail",
-  components: {},
+  components: {
+    GoodsItem,
+  },
   data() {
     return {
       orderGoodsId: "",
@@ -682,7 +685,7 @@ export default {
         let ary = [];
         if (array) {
           for (let i = 0; i < array.length; i++) {
-            if (i >= 4) {
+            if (i >= 5) {
               break;
             } else {
               ary.push(array[i]);
@@ -1425,86 +1428,86 @@ export default {
 
           .list {
             .course-item {
-              margin: 110px 0 0;
-              width: 300px;
-              height: 178px;
-              background: #ffffff;
-              box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
-              border-radius: 10px;
-              position: relative;
-              background: #fff;
-              padding-top: 100px;
-
-              &__img {
-                width: 280px;
-                height: 178px;
-                background: #ffffff;
-                box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
-                border-radius: 10px;
-                position: absolute;
-                left: 10px;
-                top: -78px;
-                background: rgba(122, 136, 246, 1);
-                overflow: hidden;
-                background: no-repeat center center;
-                background-size: 280px 178px;
-
-                .note {
-                  width: 80px;
-                  height: 24px;
-                  background: #d94404;
-                  box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
-                  border-radius: 10px 0px 20px 0px;
-                  text-align: center;
-                  line-height: 24px;
-                  color: #fff;
-                }
-              }
-
-              &__title {
-                margin: 0 8px;
-                font-size: 14px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                color: #333333;
-                line-height: 24px;
-              }
-
-              &__desc {
-                height: 32px;
-                position: absolute;
-                left: 0;
-                right: 0;
-                bottom: 0;
-                margin-left: 8px;
-                display: flex;
-                justify-content: space-between;
-
-                .price {
-                  font-size: 18px;
-                  font-family: Microsoft YaHei;
-                  font-weight: bold;
-                  color: #ff2d55;
-                  line-height: 32px;
-                }
-
-                .add {
-                  display: block;
-                  width: 118px;
-                  height: 32px;
-                  line-height: 30px;
-                  background: #f2f4f7;
-                  border-radius: 10px 0px 10px 0px;
-                  font-size: 16px;
-                  color: #3f8dfd;
-                  text-align: center;
-
-                  &:hover {
-                    background: #3f8dfd;
-                    color: #f2f4f7;
-                  }
-                }
-              }
+              // margin: 110px 0 0;
+              // width: 300px;
+              // height: 178px;
+              // background: #ffffff;
+              // box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
+              // border-radius: 10px;
+              // position: relative;
+              // background: #fff;
+              // padding-top: 100px;
+
+              // &__img {
+              //   width: 280px;
+              //   height: 178px;
+              //   background: #ffffff;
+              //   box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
+              //   border-radius: 10px;
+              //   position: absolute;
+              //   left: 10px;
+              //   top: -78px;
+              //   background: rgba(122, 136, 246, 1);
+              //   overflow: hidden;
+              //   background: no-repeat center center;
+              //   background-size: 280px 178px;
+
+              //   .note {
+              //     width: 80px;
+              //     height: 24px;
+              //     background: #d94404;
+              //     box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
+              //     border-radius: 10px 0px 20px 0px;
+              //     text-align: center;
+              //     line-height: 24px;
+              //     color: #fff;
+              //   }
+              // }
+
+              // &__title {
+              //   margin: 0 8px;
+              //   font-size: 14px;
+              //   font-family: Microsoft YaHei;
+              //   font-weight: 400;
+              //   color: #333333;
+              //   line-height: 24px;
+              // }
+
+              // &__desc {
+              //   height: 32px;
+              //   position: absolute;
+              //   left: 0;
+              //   right: 0;
+              //   bottom: 0;
+              //   margin-left: 8px;
+              //   display: flex;
+              //   justify-content: space-between;
+
+              //   .price {
+              //     font-size: 18px;
+              //     font-family: Microsoft YaHei;
+              //     font-weight: bold;
+              //     color: #ff2d55;
+              //     line-height: 32px;
+              //   }
+
+              //   .add {
+              //     display: block;
+              //     width: 118px;
+              //     height: 32px;
+              //     line-height: 30px;
+              //     background: #f2f4f7;
+              //     border-radius: 10px 0px 10px 0px;
+              //     font-size: 16px;
+              //     color: #3f8dfd;
+              //     text-align: center;
+
+              //     &:hover {
+              //       background: #3f8dfd;
+              //       color: #f2f4f7;
+              //     }
+              //   }
+              // }
             }
           }
         }

+ 18 - 0
src/pages/person-center/my-bank/bank-explain-detail/index.vue

@@ -1157,6 +1157,24 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
+                  flex: 1;
+                  overflow-y: scroll;
+
+                  &::-webkit-scrollbar {
+                    width: 6px;
+                  }
+                  &::-webkit-scrollbar-track {
+                    background-color: #fff;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
+                  &::-webkit-scrollbar-thumb {
+                    background-color: #eeeeee;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
 
                   /deep/ img {
                     max-width: 100% !important;

+ 10 - 4
src/pages/person-center/my-classhour/appointment/index.vue

@@ -80,7 +80,6 @@ export default {
     this.getApplysubscribe();
   },
   methods: {
-    ...mapMutations(["setCheckGoodsList"]),
     getApplysubscribe() {
       var data = {
         goodsId: this.goodsId,
@@ -141,8 +140,12 @@ export default {
 
                 this.$confirm(
                   "您所报考的" +
-                    this.listData.major +
-                    "专业,考试次数已经用完。需要预约考试的补考学员,请先购买补考机会。",
+                    (this.listData.major || "") +
+                    "专业,考试次数已经用完。需要预约考试的" +
+                    (this.radio == 1 ? "考试" : "补考") +
+                    "学员,请先购买" +
+                    (this.radio == 1 ? "考试" : "补考") +
+                    "机会。",
                   "提示",
                   {
                     confirmButtonText: "缴费",
@@ -165,7 +168,10 @@ export default {
                             JSON.stringify([detail])
                           );
 
-                          this.setCheckGoodsList(selectGoodsList);
+                          localStorage.setItem(
+                            "checkGoodsList",
+                            JSON.stringify(selectGoodsList)
+                          );
                           this.$router.push({
                             path: "/payment",
                             query: {

+ 17 - 278
src/pages/person-center/my-classhour/index/index.vue

@@ -169,76 +169,10 @@
       </template>
     </div>
 
-    <el-dialog
-      width="800px"
-      class="rebuild"
-      :visible.sync="showDetailModal"
-      :close-on-click-modal="false"
-      :close-on-press-escape="false"
-      :show-close="false"
-    >
-      <div class="rebuild__content">
-        <div class="rebuild__close" @click="showDetailModal = false">X</div>
-        <div class="rebuild__header">审核详情</div>
-        <div class="rebuild__body">
-          <div class="content">
-            <div class="content__header">
-              <div class="title">重要提示:</div>
-              <div class="desc">
-                如对审核结果有异议,请勿点击确认重学。致电020-87085982咨询
-              </div>
-            </div>
-
-            <div class="content__body">
-              <div class="list">
-                <div
-                  class="list__item"
-                  v-for="(item, index) in rebuildItems"
-                  :key="index"
-                >
-                  <div class="title">
-                    <span class="note" v-if="item.type == 0"> 测试 </span>
-                    <span class="note note--yellow" v-if="item.type == 1"
-                      >录播</span
-                    >
-                    <span class="note note--yellow" v-if="item.type == 2"
-                      >直播</span
-                    >
-                    <span class="note note--yellow" v-if="item.type == 3"
-                      >回放</span
-                    >
-                    {{ index + 1 }}、{{ item.name }}
-                  </div>
-                  <!-- <div class="desc">
-                    <div class="imgs">
-                      <div
-                        class="img"
-                        v-for="(items, indexs) in item.userStudyRecordPhoto"
-                        :key="indexs"
-                      >
-                        <img :src="$tools.splitImgHost(items.photo)" />
-                        <div class="note">
-                          {{ $tools.timestampToTime(items.createTime, false) }}
-                        </div>
-                      </div>
-                    </div>
-                  </div> -->
-                  <div class="desc">
-                    原因:
-                    <span class="note">{{ item.auditReason }}</span>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="rebuild__footer" v-if="rebuildShow">
-          <el-button class="confirm" @click="rebuildSubmit" type="primary"
-            >确认已阅读</el-button
-          >
-        </div>
-      </div>
-    </el-dialog>
+    <RebuildModal
+      ref="rebuildModal"
+      @rebuildSubmit="rebuildSubmit($event)"
+    ></RebuildModal>
 
     <el-image-viewer
       v-if="showViewer"
@@ -250,8 +184,13 @@
 
 <script>
 import ElImageViewer from "element-ui/packages/image/src/image-viewer";
+import RebuildModal from "@/components/rebuildModal";
 export default {
   name: "MyClasshour",
+  components: {
+    RebuildModal,
+    ElImageViewer,
+  },
   data() {
     return {
       copyUrl: "http://gdzczx.gdcic.net/",
@@ -272,9 +211,6 @@ export default {
       sysTime: 0,
     };
   },
-  components: {
-    ElImageViewer,
-  },
   mounted() {
     this.sysTime = +this.$tools.timest();
     this.getcourseperiodlistGoods();
@@ -342,37 +278,13 @@ export default {
     },
 
     rebuildSubmit() {
-      this.$confirm(
-        "如对审核结果有异议,请勿点击确认重学。致电020-87085982咨询",
-        "注意",
-        {
-          confirmButtonText: "确认重学",
-          cancelButtonText: "取消",
-          closeOnClickModal: false,
-          closeOnPressEscape: false,
-          distinguishCancelAndClose: false,
-          showClose: false,
-        }
-      )
-        .then((_) => {
-          this.$request
-            .courseperiodrebuild({
-              goodsId: this.rebuildItem.goodsId,
-              gradeId: this.rebuildItem.gradeId,
-            })
-            .then((res) => {
-              this.showRebuildDetailModal = false;
-              this.$router.push({
-                path: `/my-course-detail/${this.rebuildItem.goodsId}`,
-                query: {
-                  rebuild: "1",
-                  gradeId: this.rebuildItem.gradeId,
-                  orderGoodsId: this.rebuildItem.orderGoodsId,
-                },
-              });
-            });
-        })
-        .catch((_) => {});
+      this.$router.push({
+        path: `/my-course-detail/${item.goodsId}`,
+        query: {
+          gradeId: item.gradeId,
+          orderGoodsId: item.orderGoodsId,
+        },
+      });
     },
     getcourseperiodlistGoods() {
       this.$request
@@ -395,42 +307,7 @@ export default {
     },
 
     getcourseperiodcheat(item) {
-      this.rebuildShow = false;
-      this.rebuildItem = item;
-      this.$request
-        .getcourseperiodcheat({
-          goodsId: item.goodsId,
-          gradeId: item.gradeId,
-        })
-        .then((res) => {
-          this.rebuildItems = res.rows;
-        });
-
-      let sysTime = this.$tools.timest();
-      if (item.serviceEndTime && item.serviceEndTime > +sysTime) {
-        console.log(1);
-        this.rebuildShow = true;
-      } else {
-        console.log(2);
-        this.rebuildShow = false;
-        this.showDetailModal = true;
-        return;
-      }
-
-      if (item.classEndTime) {
-        if (item.classEndTime < +sysTime) {
-          console.log(3);
-          this.rebuildShow = true;
-        } else {
-          this.rebuildShow = false;
-          console.log(4);
-          this.showDetailModal = true;
-          return;
-        }
-      } else {
-      }
-
-      this.showDetailModal = true;
+      this.$refs.rebuildModal.showModal(item);
     },
 
     preview(item) {
@@ -716,143 +593,5 @@ export default {
       text-align: center;
     }
   }
-
-  .rebuild {
-    /deep/ .el-dialog__header {
-      display: none;
-    }
-    /deep/ .el-dialog__body {
-      padding: 0;
-      overflow: unset;
-    }
-
-    &__close {
-      cursor: pointer;
-      position: absolute;
-      right: 0;
-      top: -28px;
-      width: 24px;
-      height: 24px;
-      line-height: 24px;
-      text-align: center;
-      color: #eee;
-      border: 1px solid #eee;
-      border-radius: 50%;
-    }
-
-    &__header {
-      height: 40px;
-      border-bottom: 1px solid #eee;
-      line-height: 40px;
-      font-size: 16px;
-      font-family: Microsoft YaHei;
-      font-weight: bold;
-      color: #333333;
-      padding-left: 24px;
-    }
-
-    &__body {
-      height: 400px;
-      padding: 0 24px;
-
-      .content {
-        height: 100%;
-        overflow-y: auto;
-
-        &__header {
-          padding: 16px 0;
-          border-bottom: 1px solid #eee;
-
-          .title {
-            font-size: 16px;
-            font-family: Microsoft YaHei;
-            font-weight: bold;
-            color: #ff3b30;
-            line-height: 24px;
-          }
-
-          .desc {
-            margin-top: 10px;
-            font-size: 16px;
-            font-family: Microsoft YaHei;
-            font-weight: 400;
-            color: #ff3b30;
-            line-height: 24px;
-          }
-        }
-
-        &__body {
-          .list {
-            &__item {
-              padding: 16px 0;
-              border-bottom: 1px solid #eee;
-
-              .title {
-                font-size: 14px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                color: #333333;
-
-                .note {
-                  width: 32px;
-                  height: 20px;
-                  border: 1px solid #3f8dfd;
-                  border-radius: 4px;
-                  color: #3f8dfd;
-                  font-size: 12px;
-
-                  &--yellow {
-                    border: 1px solid #ff9500;
-                    color: #ff9500;
-                  }
-                }
-              }
-
-              .desc {
-                margin-top: 10px;
-                font-size: 14px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                color: #333333;
-
-                .note {
-                  color: #ff3b30;
-                  line-height: 20px;
-                }
-
-                .img {
-                  width: 100px;
-                  height: 100px;
-                  display: inline-block;
-                  text-align: center;
-
-                  img {
-                    max-width: 100%;
-                    max-height: 100%;
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-
-    &__footer {
-      height: 90px;
-      border-top: 1px solid #eee;
-      text-align: center;
-      .confirm {
-        width: 200px;
-        height: 40px;
-        padding: 0;
-        border-radius: 20px;
-        text-align: center;
-        line-height: 40px;
-        color: #fff;
-        margin: 24px auto;
-      }
-    }
-  }
 }
 </style>

+ 31 - 418
src/pages/person-center/my-course/index.vue

@@ -85,7 +85,7 @@
                       </template>
                     </template>
 
-                    <template v-if="item.profileTpStatus == 1">
+                    <!-- <template v-if="item.profileTpStatus == 1">
                       资料审核状态:
                       <div class="note" v-if="item.profileStatus == null">
                         未提交资料
@@ -108,7 +108,7 @@
                       >
                         待完善
                       </div>
-                    </template>
+                    </template> -->
                   </template>
 
                   <!-- 学时审核状态可以审核 -->
@@ -400,150 +400,36 @@
       </div>
     </div>
 
-    <el-dialog
-      title="选班重学"
-      class="select-modal"
-      :visible.sync="selectClassModal"
-      width="800px"
-    >
-      <div>
-        <el-radio
-          v-for="(item, index) in gradeList"
-          :key="index"
-          class="radio"
-          v-model="gradeValue"
-          :disabled="
-            item.studentNum > 0 && item.studentNum == item.studentUpper
-          "
-        >
-          <div>
-            {{ item.className }}
-            <span v-if="item.classEndTime">
-              有效期至:{{
-                $tools.timestampToTime(item.classEndTime, true, true)
-              }}</span
-            >
-            <span v-if="item.classEndTime"
-              >本班还剩{{
-                $tools.GetRTime(item.classEndTime)
-              }}天将结束学习</span
-            >
-          </div>
-          <div></div
-        ></el-radio>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="selectClassOk">确 定</el-button>
-      </span>
-    </el-dialog>
-
-    <el-dialog
-      width="800px"
-      class="rebuild"
-      :visible.sync="showRebuildDetailModal"
-      :close-on-click-modal="false"
-      :close-on-press-escape="false"
-      :show-close="false"
-    >
-      <div class="rebuild__content">
-        <div class="rebuild__close" @click="showRebuildDetailModal = false">
-          X
-        </div>
-        <div class="rebuild__header">审核详情</div>
-        <div class="rebuild__body">
-          <div class="content">
-            <div class="content__header">
-              <div class="title">重要提示:</div>
-              <div class="desc">
-                您的学时审核不通过,不通过原因如下,请查阅,并重学不通过的课程内容。
-              </div>
-            </div>
+    <SelectClassModal
+      ref="selectClassModal"
+      @selectClassOk="selectClassOk"
+    ></SelectClassModal>
 
-            <div class="content__body">
-              <div class="list">
-                <div
-                  class="list__item"
-                  v-for="(item, index) in rebuildItems"
-                  :key="index"
-                >
-                  <div class="title">
-                    <span class="note" v-if="item.type == 0"> 测试 </span>
-                    <span class="note note--yellow" v-if="item.type == 1"
-                      >录播</span
-                    >
-                    <span class="note note--yellow" v-if="item.type == 2"
-                      >直播</span
-                    >
-                    <span class="note note--yellow" v-if="item.type == 3"
-                      >回放</span
-                    >
-                    {{ index + 1 }}、{{ item.name }}
-                  </div>
-                  <div class="desc">
-                    <!-- <div class="imgs">
-                      <div
-                        class="img"
-                        v-for="(items, indexs) in item.userStudyRecordPhoto"
-                        :key="indexs"
-                      >
-                        <img :src="$tools.splitImgHost(items.photo)" />
-                        <div class="note">
-                          {{ $tools.timestampToTime(items.createTime, false) }}
-                        </div>
-                      </div>
-                    </div> -->
-                  </div>
-                  <div class="desc">
-                    原因:
-                    <span class="note">{{ item.auditReason }}</span>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="rebuild__footer">
-          <el-button class="confirm" @click="rebuildSubmit" type="primary"
-            >确认已阅读</el-button
-          >
-        </div>
-      </div>
-    </el-dialog>
-
-    <el-dialog
-      title="提示"
-      class="exercises-modal"
-      :visible.sync="showExercisesModal"
-      width="800px"
-    >
-      <div class="exercises-modal__content">
-        <div>1.不支持网页端刷题</div>
-        <div>2.请使用手机扫码,进入【祥粤云学堂】小程序环境,进行刷题</div>
-        <div>
-          <img src="@/assets/xcxqrcode.jpg" alt="" />
-        </div>
-      </div>
+    <RebuildModal
+      ref="rebuildModal"
+      @rebuildSubmit="rebuildSubmit($event)"
+    ></RebuildModal>
 
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="showExercisesModal = false"
-          >确 定</el-button
-        >
-      </span>
-    </el-dialog>
+    <ExercisesModal ref="exercisesModal"></ExercisesModal>
   </div>
 </template>
 
 <script>
 import { mapGetters } from "vuex";
+import SelectClassModal from "@/components/selectClassModal";
+import RebuildModal from "@/components/rebuildModal";
+import ExercisesModal from "@/components/exercisesModal";
 import * as baseUrls from "@/axios.js";
 export default {
   name: "MyCourse",
+  components: {
+    SelectClassModal,
+    RebuildModal,
+    ExercisesModal,
+  },
   data() {
     return {
-      showRebuildDetailModal: false,
-      gradeList: [],
       tabList: [],
-      gradeValue: -1,
       sysTime: 0,
       activeName: "-1",
       param: {
@@ -551,12 +437,8 @@ export default {
         pageSize: 10,
       },
 
-      rebuildItems: [],
-      rebuildItem: {},
-      selectClassModal: false,
       total: 0,
       courseList: [],
-      selectItem: {},
       loading: null,
       showExercisesModal: false,
     };
@@ -575,7 +457,6 @@ export default {
         return;
       }
 
-      console.log(e.name);
       this.activeName = e.name;
       this.courseGoodsList();
     },
@@ -708,16 +589,7 @@ export default {
       );
 
       if (rebuildStatus == 0) {
-        this.rebuildItem = item;
-        this.$request
-          .getcourseperiodcheat({
-            goodsId: item.goodsId,
-            gradeId: item.gradeId,
-          })
-          .then((res) => {
-            this.rebuildItems = res.rows;
-          });
-        this.showRebuildDetailModal = true;
+        this.$refs.rebuildModal.showModal(item);
         return;
       }
 
@@ -790,118 +662,24 @@ export default {
     },
 
     appBeforeAddress(item) {
-      this.$request
-        .appBeforeAddress({
-          // goodsId,
-          orderGoodsId: item.orderGoodsId,
-        })
-        .then((res) => {
-          this.showExercisesModal = true;
-        })
-        .catch((err) => {
-          this.$message.warning(err.msg);
-        });
+      this.$refs.exercisesModal.showModal(item);
     },
 
-    rebuildSubmit() {
-      this.$confirm(
-        "如对审核结果有异议,请勿点击确认重学。致电020-87085982咨询",
-        "注意",
-        {
-          confirmButtonText: "确认重学",
-          cancelButtonText: "取消",
-          closeOnClickModal: false,
-          closeOnPressEscape: false,
-          distinguishCancelAndClose: false,
-          showClose: false,
-        }
-      )
-        .then((_) => {
-          this.$request
-            .courseperiodrebuild({
-              goodsId: this.rebuildItem.goodsId,
-              gradeId: this.rebuildItem.gradeId,
-            })
-            .then((res) => {
-              this.showRebuildDetailModal = false;
-              this.$router.push({
-                path: `/my-course-detail/${this.rebuildItem.goodsId}`,
-                query: {
-                  gradeId: this.rebuildItem.gradeId,
-                  orderGoodsId: this.rebuildItem.orderGoodsId,
-                },
-              });
-            });
-        })
-        .catch((_) => {});
+    rebuildSubmit(item) {
+      this.$router.push({
+        path: `/my-course-detail/${item.goodsId}`,
+        query: {
+          gradeId: item.gradeId,
+          orderGoodsId: item.orderGoodsId,
+        },
+      });
     },
     selectClass(item) {
-      this.selectClassModal = true;
-      this.selectItem = item;
-      this.gradeValue = -1;
-      this.goodsGradeList(item.goodsId);
+      this.$refs.selectClassModal.showModal(item);
     },
 
-    goodsGradeList(id) {
-      let self = this;
-      this.$request
-        .goodsGradeList({
-          goodsId: id,
-        })
-        .then((res) => {
-          self.gradeList = res.rows;
-          if (self.gradeList.length == 0) {
-            let item = {
-              className: "系统分班",
-              gradeId: 0,
-            };
-            self.gradeList.push(item);
-          } else {
-            let isGradeFull = self.gradeList.every(
-              (item) =>
-                item.studentNum > 0 && item.studentNum == item.studentUpper
-            );
-            //所有班级都满了
-            if (isGradeFull) {
-              let item = {
-                className: "系统分班",
-                gradeId: 0,
-              };
-              self.gradeList.unshift(item);
-            }
-          }
-        });
-    },
     selectClassOk() {
-      if (this.gradeValue == -1) {
-        this.$message({
-          type: "success",
-          message: "请选择班级",
-        });
-        return;
-      }
-      this.$request
-        .changeGrade({
-          goodsId: this.selectItem.goodsId,
-          gradeId: this.gradeValue,
-          oldGradeId: this.selectItem.gradeId,
-          orderGoodsId: this.selectItem.orderGoodsId,
-          userId: this.selectItem.userId,
-        })
-        .then((res) => {
-          this.courseGoodsList();
-          this.selectClassModal = false;
-          this.$message({
-            type: "success",
-            message: "选班成功",
-          });
-        })
-        .catch((err) => {
-          this.$message({
-            type: "warning",
-            message: err.msg,
-          });
-        });
+      this.courseGoodsList();
     },
     /**
      * @param {Object} goodsId 商品id
@@ -1169,171 +947,6 @@ export default {
     }
   }
 
-  .select-modal {
-    .radio {
-      cursor: pointer;
-      margin-right: 24px;
-      padding: 0 24px;
-      display: flex;
-      align-items: center;
-      margin-top: 2px;
-      min-height: 40px;
-      padding-top: 10px;
-      padding-bottom: 10px;
-      background: #f5f9ff;
-      border-radius: 8px;
-      box-sizing: border-box;
-
-      &.right {
-        background: #37c65b;
-      }
-      &.wrong {
-        background: #ff3a30;
-      }
-    }
-  }
-
-  .rebuild {
-    /deep/ .el-dialog__header {
-      display: none;
-    }
-    /deep/ .el-dialog__body {
-      padding: 0;
-      overflow: unset;
-    }
-
-    &__close {
-      cursor: pointer;
-      position: absolute;
-      right: 0;
-      top: -28px;
-      width: 24px;
-      height: 24px;
-      line-height: 24px;
-      text-align: center;
-      color: #eee;
-      border: 1px solid #eee;
-      border-radius: 50%;
-    }
-
-    &__header {
-      height: 40px;
-      border-bottom: 1px solid #eee;
-      line-height: 40px;
-      font-size: 16px;
-      font-family: Microsoft YaHei;
-      font-weight: bold;
-      color: #333333;
-      padding-left: 24px;
-    }
-
-    &__body {
-      height: 400px;
-      padding: 0 24px;
-
-      .content {
-        height: 100%;
-        overflow-y: auto;
-
-        &__header {
-          padding: 16px 0;
-          border-bottom: 1px solid #eee;
-
-          .title {
-            font-size: 16px;
-            font-family: Microsoft YaHei;
-            font-weight: bold;
-            color: #ff3b30;
-            line-height: 24px;
-          }
-
-          .desc {
-            margin-top: 10px;
-            font-size: 16px;
-            font-family: Microsoft YaHei;
-            font-weight: 400;
-            color: #ff3b30;
-            line-height: 24px;
-          }
-        }
-
-        &__body {
-          .list {
-            &__item {
-              padding: 16px 0;
-              border-bottom: 1px solid #eee;
-
-              .title {
-                font-size: 14px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                color: #333333;
-
-                .note {
-                  display: inline-block;
-                  text-align: center;
-                  line-height: 18px;
-                  width: 32px;
-                  height: 20px;
-                  border: 1px solid #3f8dfd;
-                  border-radius: 4px;
-                  color: #3f8dfd;
-                  font-size: 12px;
-
-                  &--yellow {
-                    border: 1px solid #ff9500;
-                    color: #ff9500;
-                  }
-                }
-              }
-
-              .desc {
-                margin-top: 10px;
-                font-size: 14px;
-                font-family: Microsoft YaHei;
-                font-weight: 400;
-                color: #333333;
-
-                .note {
-                  color: #ff3b30;
-                  line-height: 20px;
-                }
-
-                .img {
-                  width: 100px;
-                  height: 100px;
-                  display: inline-block;
-                  text-align: center;
-
-                  img {
-                    max-width: 100%;
-                    max-height: 100%;
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-
-    &__footer {
-      height: 90px;
-      border-top: 1px solid #eee;
-      text-align: center;
-      .confirm {
-        width: 200px;
-        height: 40px;
-        padding: 0;
-        border-radius: 20px;
-        text-align: center;
-        line-height: 40px;
-        color: #fff;
-        margin: 24px auto;
-      }
-    }
-  }
-
   .exercises-modal {
     &__content {
       > div {

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

@@ -268,11 +268,11 @@ export default {
         this.$message.error("请输入旧密码");
         return;
       }
-      if (!this.form.newPwd && !this.form.reUsePwd) {
+      if (!this.form.userPwd && !this.form.reUsePwd) {
         this.$message.error("请输入新密码");
         return;
       }
-      if (this.form.newPwd !== this.form.reUsePwd) {
+      if (this.form.userPwd !== this.form.reUsePwd) {
         this.$message.error("密码不一致");
         return;
       }

+ 64 - 117
src/pages/person-center/my-message/index.vue

@@ -61,7 +61,10 @@
                   <div class="desc">
                     {{ $tools.timestampToTime(item.sendTime, false) }}
                   </div>
-                  <div class="title">
+                  <div
+                    class="title"
+                    :style="item.receiptStatus == 1 ? 'color:#999' : ''"
+                  >
                     {{
                       item.systemStatus === 2
                         ? item.informVo.informName
@@ -202,88 +205,23 @@
       </div>
     </el-dialog>
 
-    <el-dialog
-      width="800px"
-      class="rebuild"
-      :visible.sync="showRebuildDetailModal"
-      :close-on-click-modal="false"
-      :close-on-press-escape="false"
-      :show-close="false"
-    >
-      <div class="rebuild__content">
-        <div class="rebuild__close" @click="showRebuildDetailModal = false">
-          X
-        </div>
-        <div class="rebuild__header">审核详情</div>
-        <div class="rebuild__body">
-          <div class="content">
-            <div class="content__header">
-              <div class="title">重要提示:</div>
-              <div class="desc">
-                如对审核结果有异议,请勿点击确认重学。致电020-87085982咨询
-              </div>
-            </div>
-
-            <div class="content__body">
-              <div class="list">
-                <div
-                  class="list__item"
-                  v-for="(item, index) in rebuildItems"
-                  :key="index"
-                >
-                  <div class="title">
-                    <span class="note" v-if="item.type == 0"> 测试 </span>
-                    <span class="note note--yellow" v-if="item.type == 1"
-                      >录播</span
-                    >
-                    <span class="note note--yellow" v-if="item.type == 2"
-                      >直播</span
-                    >
-                    <span class="note note--yellow" v-if="item.type == 3"
-                      >回放</span
-                    >
-                    {{ index + 1 }}、{{ item.name }}
-                  </div>
-                  <!-- <div class="desc">
-                    <div class="imgs">
-                      <div
-                        class="img"
-                        v-for="(items, indexs) in item.userStudyRecordPhoto"
-                        :key="indexs"
-                      >
-                        <img :src="$tools.splitImgHost(items.photo)" />
-                        <div class="note">
-                          {{ $tools.timestampToTime(items.createTime, false) }}
-                        </div>
-                      </div>
-                    </div>
-                  </div> -->
-                  <div class="desc">
-                    原因:
-                    <span class="note">{{ item.auditReason }}</span>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="rebuild__footer">
-          <el-button class="confirm" @click="rebuildSubmit" type="primary"
-            >确认已阅读</el-button
-          >
-        </div>
-      </div>
-    </el-dialog>
+    <RebuildModal
+      ref="rebuildModal"
+      @rebuildSubmit="rebuildSubmit($event)"
+    ></RebuildModal>
   </div>
 </template>
 
 <script>
 import { mapMutations } from "vuex";
+import RebuildModal from "@/components/rebuildModal";
 export default {
   name: "MyMessage",
+  components: {
+    RebuildModal,
+  },
   data() {
     return {
-      showRebuildDetailModal: false,
       showDetailModal: false,
       tabList: [
         {
@@ -556,38 +494,15 @@ export default {
       });
     },
 
-    rebuildSubmit() {
-      this.$confirm(
-        "如对审核结果有异议,请勿点击确认重学。致电020-87085982咨询",
-        "注意",
-        {
-          confirmButtonText: "确认重学",
-          cancelButtonText: "取消",
-          closeOnClickModal: false,
-          closeOnPressEscape: false,
-          distinguishCancelAndClose: false,
-          showClose: false,
-        }
-      )
-        .then((_) => {
-          this.$request
-            .courseperiodrebuild({
-              goodsId: this.rebuildItem.goodsId,
-              gradeId: this.rebuildItem.gradeId,
-            })
-            .then((res) => {
-              this.showRebuildDetailModal = false;
-              this.$router.push({
-                path: `/my-course-detail/${this.rebuildItem.goodsId}`,
-                query: {
-                  gradeId: this.rebuildItem.gradeId,
-                  orderGoodsId: this.rebuildItem.orderGoodsId,
-                  rebuild: 1,
-                },
-              });
-            });
-        })
-        .catch((_) => {});
+    rebuildSubmit(item) {
+      this.$router.push({
+        path: `/my-course-detail/${item.goodsId}`,
+        query: {
+          gradeId: item.gradeId,
+          orderGoodsId: item.orderGoodsId,
+          rebuild: 1,
+        },
+      });
     },
 
     showDetail(item) {
@@ -692,7 +607,7 @@ export default {
       return new Promise((resolve) => {
         this.$request
           .orderInfo({
-            orderGoodsId: this.orderGoodsId,
+            orderGoodsId: item.orderGoodsId,
           })
           .then(async (res) => {
             let items = res.data;
@@ -705,6 +620,47 @@ export default {
               currentTime < items.serviceStartTime ||
                 currentTime > items.serviceEndTime
             );
+            if (items.interfaceAccountId > 0) {
+              //学习账号已开通
+
+              if (items.learnStatus == 1) {
+                //跳转第三方h5
+
+                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), "温馨提示", {
+                  confirmButtonText: "跳转学习网址",
+                  cancelButtonText: "关闭",
+                  closeOnClickModal: false,
+                  closeOnPressEscape: false,
+                  distinguishCancelAndClose: false,
+                  showClose: false,
+                })
+                  .then((_) => {
+                    window.open("http://admin.zhujianpeixun.com/", "_blank");
+                  })
+                  .catch((_) => {});
+
+                return;
+              } else {
+                this.$message({
+                  type: "warning",
+                  message:
+                    "您的学习账号未开通,请稍后再尝试,有疑问,请联系020-87085982!",
+                });
+                return;
+              }
+            }
             //内部系统
             if (items.interfacePushId > 0 && items.officialStatus != 1) {
               this.$message({
@@ -768,16 +724,7 @@ export default {
             );
 
             if (rebuildStatus == 0) {
-              this.rebuildItem = items;
-              this.$request
-                .getcourseperiodcheat({
-                  goodsId: items.goodsId,
-                  gradeId: items.gradeId,
-                })
-                .then((res) => {
-                  this.rebuildItems = res.rows;
-                });
-              this.showRebuildDetailModal = true;
+              this.$refs.rebuildModal.showModal(items);
               return;
             }
 

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

@@ -215,7 +215,6 @@ export default {
     this.getOrderList();
   },
   methods: {
-    ...mapMutations(["setCheckGoodsList"]),
     getOrderNum() {
       this.$request
         .getorderlists({
@@ -294,7 +293,7 @@ export default {
       }
     },
     pay(item) {
-      this.setCheckGoodsList([]);
+      localStorage.removeItem("checkGoodsList");
       this.$router.push({
         path: "/payment",
         name: "支付",

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

@@ -1556,7 +1556,8 @@ export default {
         }
 
         &__body {
-          height: 800px;
+          margin-bottom: 20px;
+          height: 630px;
           border: 1px solid #eee;
           .left-box {
             float: left;
@@ -1587,7 +1588,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 550px;
               border-bottom: 1px solid #eee;
 
               .question {
@@ -1613,6 +1614,24 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
+                  flex: 1;
+                  overflow-y: scroll;
+
+                  &::-webkit-scrollbar {
+                    width: 6px;
+                  }
+                  &::-webkit-scrollbar-track {
+                    background-color: #fff;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
+                  &::-webkit-scrollbar-thumb {
+                    background-color: #eeeeee;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
 
                   /deep/ img {
                     max-width: 100% !important;
@@ -1641,7 +1660,6 @@ export default {
                   }
 
                   /deep/ .el-tabs__item {
-                    padding: 0 20px !important;
                     height: 40px;
                     line-height: 40px;
                   }
@@ -1890,7 +1908,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 510px;
               border-bottom: 1px solid #eee;
 
               .card {
@@ -1932,7 +1950,7 @@ export default {
                 }
 
                 &__content {
-                  height: 630px;
+                  height: 470px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {

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

@@ -1553,7 +1553,8 @@ export default {
         }
 
         &__body {
-          height: 800px;
+          margin-bottom: 20px;
+          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
@@ -1584,7 +1585,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 550px;
               border-bottom: 1px solid #eee;
 
               .question {
@@ -1610,6 +1611,24 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
+                  flex: 1;
+                  overflow-y: scroll;
+
+                  &::-webkit-scrollbar {
+                    width: 6px;
+                  }
+                  &::-webkit-scrollbar-track {
+                    background-color: #fff;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
+                  &::-webkit-scrollbar-thumb {
+                    background-color: #eeeeee;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
 
                   /deep/ img {
                     max-width: 100% !important;
@@ -1638,7 +1657,6 @@ export default {
                   }
 
                   /deep/ .el-tabs__item {
-                    padding: 0 20px !important;
                     height: 40px;
                     line-height: 40px;
                   }
@@ -1887,7 +1905,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 510px;
               border-bottom: 1px solid #eee;
 
               .card {
@@ -1929,7 +1947,7 @@ export default {
                 }
 
                 &__content {
-                  height: 630px;
+                  height: 470px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {

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

@@ -1565,7 +1565,8 @@ export default {
         }
 
         &__body {
-          height: 800px;
+          margin-bottom: 20px;
+          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
@@ -1596,7 +1597,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 550px;
               border-bottom: 1px solid #eee;
 
               .question {
@@ -1622,6 +1623,24 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
+                  flex: 1;
+                  overflow-y: scroll;
+
+                  &::-webkit-scrollbar {
+                    width: 6px;
+                  }
+                  &::-webkit-scrollbar-track {
+                    background-color: #fff;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
+                  &::-webkit-scrollbar-thumb {
+                    background-color: #eeeeee;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
 
                   /deep/ img {
                     max-width: 100% !important;
@@ -1650,7 +1669,6 @@ export default {
                   }
 
                   /deep/ .el-tabs__item {
-                    padding: 0 20px !important;
                     height: 40px;
                     line-height: 40px;
                   }
@@ -1899,7 +1917,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 510px;
               border-bottom: 1px solid #eee;
 
               .card {
@@ -1941,7 +1959,7 @@ export default {
                 }
 
                 &__content {
-                  height: 630px;
+                  height: 470px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {

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

@@ -1555,7 +1555,8 @@ export default {
         }
 
         &__body {
-          height: 800px;
+          margin-bottom: 20px;
+          height: 632px;
           border: 1px solid #eee;
           .left-box {
             float: left;
@@ -1586,7 +1587,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 550px;
               border-bottom: 1px solid #eee;
 
               .question {
@@ -1612,6 +1613,24 @@ export default {
                   font-weight: 400;
                   color: #666666;
                   line-height: 24px;
+                  flex: 1;
+                  overflow-y: scroll;
+
+                  &::-webkit-scrollbar {
+                    width: 6px;
+                  }
+                  &::-webkit-scrollbar-track {
+                    background-color: #fff;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
+                  &::-webkit-scrollbar-thumb {
+                    background-color: #eeeeee;
+                    -webkit-border-radius: 2em;
+                    -moz-border-radius: 2em;
+                    border-radius: 2em;
+                  }
 
                   /deep/ img {
                     max-width: 100% !important;
@@ -1640,7 +1659,6 @@ export default {
                   }
 
                   /deep/ .el-tabs__item {
-                    padding: 0 20px !important;
                     height: 40px;
                     line-height: 40px;
                   }
@@ -1889,7 +1907,7 @@ export default {
             }
 
             &__body {
-              height: 720px;
+              height: 510px;
               border-bottom: 1px solid #eee;
 
               .card {
@@ -1931,7 +1949,7 @@ export default {
                 }
 
                 &__content {
-                  height: 630px;
+                  height: 470px;
                   overflow-y: scroll;
 
                   &::-webkit-scrollbar {

+ 0 - 5
src/store/index.js

@@ -17,7 +17,6 @@ export default new Vuex.Store({
     token: '',
     user_account: '',
     userInfo: null,
-    checkGoodsList: [],
     examResult:{},
     header: {
       serviceTel: {}
@@ -29,7 +28,6 @@ export default new Vuex.Store({
   getters: {
     userInfo: state => state.userInfo,
     token: state => state.token,
-    checkGoodsList: state => state.checkGoodsList,
     header: state => state.header,
     footer: state => state.footer,
     links: state => state.links,
@@ -54,9 +52,6 @@ export default new Vuex.Store({
     setUserInfo(state, data) {
       state.userInfo = data;
     },
-    setCheckGoodsList(state, data) {
-      state.checkGoodsList = data;
-    },
     setHomeSetList(state, data) {
       data.forEach(item => {
         if (item.configKey === 'home.header') {