Tang 1 år sedan
förälder
incheckning
aaf652cc82

+ 1 - 1
build/webpack.dev.conf.js

@@ -56,7 +56,7 @@ const devWebpackConfig = merge(baseWebpackConfig, {
     new HtmlWebpackPlugin({
       filename: 'index.html',
       template: 'index.html',
-      favicon:'./src/assets/favicon.ico',
+      // favicon:'./src/assets/favicon.ico',
       inject: true
     }),
     // copy custom static assets

+ 1 - 1
build/webpack.prod.conf.js

@@ -90,7 +90,7 @@ const webpackConfig = merge(baseWebpackConfig, {
     new HtmlWebpackPlugin({
       filename: config.build.index,
       template: 'index.html',
-      favicon: './src/assets/favicon.ico',
+      // favicon: './src/assets/favicon.ico',
       inject: true,
       minify: {
         removeComments: true,

+ 8 - 0
package-lock.json

@@ -16194,6 +16194,14 @@
       "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.0.tgz",
       "integrity": "sha512-gt58r2ogsNQeVoQ3EhoUAvUsH9xviydl0dWJj7dabBC/2L4uBId7ujtCwDRD0JhkGsV1i0CtfLAeyYKBht9oWg=="
     },
+    "vue-drag-verify2": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/vue-drag-verify2/-/vue-drag-verify2-1.2.0.tgz",
+      "integrity": "sha512-Ie6cxw2K1fpDZDYwFaSxfNhJ9NDKWJyXQppDCPakN/HK92DHukdIFfZqaCS9hTgtSF3ZCuaVYYZ8UOYQHiOS7Q==",
+      "requires": {
+        "vue": "^2.5.11"
+      }
+    },
     "vue-esign": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/vue-esign/-/vue-esign-1.1.0.tgz",

+ 1 - 0
package.json

@@ -36,6 +36,7 @@
     "vue": "^2.5.2",
     "vue-awesome-swiper": "^3.1.3",
     "vue-demi": "^0.14.0",
+    "vue-drag-verify2": "^1.2.0",
     "vue-esign": "^1.1.0",
     "vue-pdf": "^4.3.0",
     "vue-router": "^3.0.1",

+ 1 - 1
src/App.vue

@@ -19,7 +19,7 @@ export default {
     //     res.msg && (window.location.href = res.msg);
     //   });
     // }
-  }
+  },
 };
 </script>
 

BIN
src/assets/new1/ppsl.png


BIN
src/assets/new1/ppssl.png


+ 2 - 2
src/common/uploadFile.js

@@ -3,7 +3,7 @@ import { readImg, compressImg } from "./compress"
 export default {
     // 上传图片标识 0头像 1身份证 2题库 3指南指引图片 4广告图片 5身份证或学信网图片 6文件excel,word,zip等
     //file: 类似this.$refs.file.files[0]
-    upload: function (file, int, data) {
+    upload: function (file, int, data,compressImgStatus = true) {
         return new Promise(async (resolve, reject) => {
             if (typeof file != 'object') {
                 resolve(file)
@@ -14,7 +14,7 @@ export default {
                 ...data
             }
             //图片压缩
-            if (file.type.indexOf("image") !== -1) {
+            if (file.type.indexOf("image") !== -1 && compressImgStatus) {
                 const img = await readImg(file)
                 file = await compressImg(img, file.type, 256, 256)
             }

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

@@ -542,7 +542,7 @@ export default {
             this.$set(this.infoForm, item, res.data.IdImgPath);
           }
         } else {
-          this.$set(this.infoForm, item, await this.$upload.upload(file));
+          this.$set(this.infoForm, item, await this.$upload.upload(file,0,{},false));
         }
         this.$refs["infoForm"].validateField(item);
         e.target.value = "";

+ 9 - 4
src/components/footer2/index.vue

@@ -27,8 +27,12 @@
           </div>
         </div>
       </div>
-      <div class="rg">
-        <div v-if="mobile.smallQrCodeShow">
+      <div class="rg" v-if="mobile.smallQrCodeShow">
+        <div v-if="mobile.h5Image">
+          <p>扫码移动端</p>
+          <img :src="$tools.splitImgHost(mobile.h5Image)" alt="" />
+        </div>
+        <div v-if="mobile.mobileImage">
           <p>扫码小程序</p>
           <img :src="$tools.splitImgHost(mobile.mobileImage)" alt="" />
         </div>
@@ -144,8 +148,9 @@ export default {
       display: flex;
       align-items: center;
       & > div {
-        &:nth-of-type(2) {
-          margin-left: 28px;
+        margin-left: 28px;
+        &:first-child {
+          margin-left: 0px;
         }
         & > p {
           text-align: center;

+ 125 - 49
src/components/login/index.vue

@@ -84,6 +84,25 @@
                       ></el-input
                     >
                   </el-form-item>
+                  <drag-verify
+                    v-if="showHk"
+                    style="margin: 0 auto 10px"
+                    :width="300"
+                    ref="dragVerify"
+                    handlerBg="#8ec6e9"
+                    :isPassing.sync="isPassing"
+                    text="请按住滑块拖动以完成验证"
+                    successText="验证通过"
+                    handlerIcon="el-icon-d-arrow-right"
+                    successIcon="el-icon-circle-check"
+                    @passcallback="passcallback"
+                  >
+                    <i
+                      v-show="!isPassing"
+                      slot="textBefore"
+                      class="el-icon-lock"
+                    ></i>
+                  </drag-verify>
                   <div class="find_res">
                     <span @click="signIn">立即注册</span>
                     <span @click="forget">找回密码</span>
@@ -120,8 +139,7 @@
                   </p>
                 </div>
               </el-tab-pane> -->
-              </el-tabs
-            ></el-form
+            </el-tabs></el-form
           >
           <el-form
             v-show="activeName == 'signIn' || activeName == 'forget'"
@@ -155,7 +173,25 @@
                         }}</span></template
                       ></el-input
                     > </el-form-item
-                  ><el-form-item label="" prop="pwd">
+                  ><drag-verify
+                    v-if="showHk"
+                    style="margin: 0 auto 10px"
+                    :width="300"
+                    ref="dragVerify"
+                    handlerBg="#8ec6e9"
+                    :isPassing.sync="isPassing"
+                    text="请按住滑块拖动以完成验证"
+                    successText="验证通过"
+                    handlerIcon="el-icon-d-arrow-right"
+                    successIcon="el-icon-circle-check"
+                    @passcallback="passcallback"
+                  >
+                    <i
+                      v-show="!isPassing"
+                      slot="textBefore"
+                      class="el-icon-lock"
+                    ></i>
+                  </drag-verify><el-form-item label="" prop="pwd">
                     <el-input
                       clearable
                       class="input_300"
@@ -187,7 +223,11 @@
                       <span @click="activeName = 'generalLogin'">前往登录</span>
                     </div>
                   </el-form-item>
-                  <p class="clickFuncStyle" style="margin-top: 20px;">
+                  <p
+                    class="clickFuncStyle"
+                    style="margin-top: 20px;"
+                    v-if="$store.state.TENANT_NANE == '867735392558919680'"
+                  >
                     <span @click="innerVisibleOpenFunc(1)"
                       >《用户使用协议》</span
                     >及<span @click="innerVisibleOpenFunc(2)"
@@ -228,7 +268,25 @@
                         }}</span></template
                       ></el-input
                     > </el-form-item
-                  ><el-form-item label="" prop="pwd">
+                  ><drag-verify
+                    v-if="showHk"
+                    style="margin: 0 auto 10px"
+                    :width="300"
+                    ref="dragVerify"
+                    handlerBg="#8ec6e9"
+                    :isPassing.sync="isPassing"
+                    text="请按住滑块拖动以完成验证"
+                    successText="验证通过"
+                    handlerIcon="el-icon-d-arrow-right"
+                    successIcon="el-icon-circle-check"
+                    @passcallback="passcallback"
+                  >
+                    <i
+                      v-show="!isPassing"
+                      slot="textBefore"
+                      class="el-icon-lock"
+                    ></i>
+                  </drag-verify><el-form-item label="" prop="pwd">
                     <el-input
                       clearable
                       class="input_300"
@@ -309,6 +367,8 @@ export default {
       }
     };
     return {
+      showHk: false, // 是否展示滑块  点击登录按钮是 设置为true 同时隐藏登录按钮
+      isPassing: false, // 滑块状态
       checked: false,
       islogin: false,
       imgUrl: "",
@@ -365,6 +425,12 @@ export default {
     this.closeFunc();
     console.log("销毁");
   },
+  watch:{
+    "activeName"(){
+      this.showHk = false
+      this.isPassing = false
+    }
+  },
   methods: {
     ...mapMutations(["setUserInfo", "setCurrentRouter"]),
     closeTang() {
@@ -452,7 +518,7 @@ export default {
     register() {
       this.$refs.bindForm.validate(valid => {
         if (valid) {
-          this.registerFunc()
+          this.registerFunc();
         }
       });
     },
@@ -625,11 +691,7 @@ export default {
         this.closeFunc();
       }
     },
-    /**
-     * 获取验证码
-     */
     loginSmsForm() {
-      var self = this;
       this.$refs[
         this.activeName == "quickLogin" ? "ruleForm" : "bindForm"
       ].validateField("tel", valid => {
@@ -638,43 +700,57 @@ export default {
             if (this.getRegisterCodeLock) {
               return;
             }
-            this.getRegisterCodeLock = true;
-            this.$request[
-              this.activeName == "quickLogin"
-                ? "getLoginSms"
-                : this.activeName == "signIn"
-                ? "getRegisterSms"
-                : "getRegisterSmsforget"
-            ]({
-              tel: this[
-                this.activeName == "quickLogin" ? "ruleForm" : "bindForm"
-              ].tel
-            })
-              .then(res => {
-                this.getRegisterCodeLock = false;
-                this.$message({
-                  message: `验证码已发送`,
-                  type: "success"
-                });
-                this.registerCountDown = 60;
-                this.registerCountDownTimer = setInterval(() => {
-                  self.registerCountDown--;
-                  if (self.registerCountDown == 0) {
-                    clearInterval(self.registerCountDownTimer);
-                  }
-                }, 1000);
-              })
-              .catch(err => {
-                this.$message({
-                  message: err.msg,
-                  type: "error"
-                });
-                this.getRegisterCodeLock = false;
-              });
+            this.showHk = true;
           }
         }
       });
     },
+    // 滑块完成函数
+    passcallback() {
+      this.$message.success("校验成功");
+      setTimeout(() => {
+        this.showHk = false;
+        this.isPassing = false;
+        this.loginSmsFormBack();
+      }, 500);
+    },
+    /**
+     * 获取验证码
+     */
+    loginSmsFormBack() {
+      var self = this;
+      this.getRegisterCodeLock = true;
+      this.$request[
+        this.activeName == "quickLogin"
+          ? "getLoginSms"
+          : this.activeName == "signIn"
+          ? "getRegisterSms"
+          : "getRegisterSmsforget"
+      ]({
+        tel: this[this.activeName == "quickLogin" ? "ruleForm" : "bindForm"].tel
+      })
+        .then(res => {
+          this.getRegisterCodeLock = false;
+          this.$message({
+            message: `验证码已发送`,
+            type: "success"
+          });
+          this.registerCountDown = 60;
+          this.registerCountDownTimer = setInterval(() => {
+            self.registerCountDown--;
+            if (self.registerCountDown == 0) {
+              clearInterval(self.registerCountDownTimer);
+            }
+          }, 1000);
+        })
+        .catch(err => {
+          this.$message({
+            message: err.msg,
+            type: "error"
+          });
+          this.getRegisterCodeLock = false;
+        });
+    },
     openBox() {
       this.islogin = false;
       this.activeName = "generalLogin";
@@ -709,7 +785,7 @@ export default {
   margin-bottom: 10px;
   span {
     user-select: none;
-    color: rgb(0,122,255);
+    color: rgb(0, 122, 255);
     cursor: pointer;
   }
 }
@@ -742,9 +818,9 @@ export default {
 }
 .submit {
   width: 300px;
-  background-color: rgb(0,122,255);
-  &:hover{
-    background-color: rgb(51,149,255);
+  background-color: rgb(0, 122, 255);
+  &:hover {
+    background-color: rgb(51, 149, 255);
   }
 }
 /deep/ .el-form-item__content {
@@ -805,7 +881,7 @@ export default {
   height: 50px;
   line-height: 50px;
 }
-/deep/ .el-tabs__item{
-  padding: 0px!important;
+/deep/ .el-tabs__item {
+  padding: 0px !important;
 }
 </style>

+ 32 - 9
src/components/toolbar/index.vue

@@ -1,12 +1,20 @@
 <template>
   <div class="toolBar">
     <div class="item phs" v-if="mobile.smallQrCodeShow">
-      <div
-        class="modu"
-        :style="
-          !mobile.mobileImage || !mobile.gzhImage ? { left: '-124px' } : null
-        "
-      >
+      <div class="modu" :style="computedNums(mobile)">
+        <div v-if="mobile.h5Image">
+          <img
+            style="width: 90px; height: 90px"
+            :src="$tools.splitImgHost(mobile.h5Image)"
+            alt=""
+          />
+          <div
+            style="text-align: center;color: #222;margin-top: 6px;"
+            class="text"
+          >
+            扫码移动端
+          </div>
+        </div>
         <div v-if="mobile.mobileImage">
           <img
             style="width: 90px; height: 90px"
@@ -126,6 +134,21 @@ export default {
           return [];
         }
       };
+    },
+    computedNums: function() {
+      return function(obj) {
+        let ary = ["h5Image", "mobileImage", "gzhImage"];
+        let num = 0;
+        for (let i = 0; i < ary.length; i++) {
+          if (obj[ary[i]]) {
+            num++;
+          }
+        }
+        let left = 126 + 100 * (num - 1);
+        return {
+          left: `-${left}px`
+        };
+      };
     }
   },
   data() {
@@ -240,9 +263,9 @@ export default {
   left: -220px;
   padding: 10px;
   display: flex;
-  & > div {
-    &:nth-child(2) {
-      padding-left: 10px;
+  & > div {padding-left: 10px;
+    &:nth-of-type(1){
+      padding-left: 0px;
     }
   }
 }

+ 2 - 0
src/main.js

@@ -20,6 +20,7 @@ import "./assets/css/quill.core.css";
 import bus from '@/common/eventBus';
 // 通用弹窗
 import BaseDialog from "@/components/BaseDialog";
+import dragVerify from "vue-drag-verify2"
 
 Vue.component("BaseDialog", BaseDialog);
 Vue.config.productionTip = false
@@ -33,6 +34,7 @@ Vue.prototype.$moment = moment
 
 Vue.use(ElementUI);
 Vue.use(vueEsign)
+Vue.use(dragVerify)
 // Vue.mixin(mixin)
 
 Object.keys(filters).forEach(key => {

+ 2 - 2
src/pages/course-detail/components/CourseTree.vue

@@ -865,7 +865,7 @@ export default {
       }
       this.$confirm(
         `确定前往观看${item.sectionType == 2 ? " [直播] " : " [回放] "}${
-          item.name
+          item.sectionName || item.name
         }?`,
         "提示",
         {
@@ -880,7 +880,7 @@ export default {
             goodsId: this.goodsData.goodsId,
             gradeId: this.goodsData.gradeId,
             orderGoodsId: this.goodsData.orderGoodsId,
-            courseId: this.courseId,
+            courseId: item.courseId,
             sectionId: item.sectionId,
             chapterId: item.chapterId,
             moduleId: item.moduleId,

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

@@ -311,7 +311,7 @@
                     <a class="text" @click="loginType = 2">手机验证码登录</a>
                     <a class="text" @click="go('/login?state=2')">注册</a>
                   </div>
-                  <div class="dis_flex" v-if="mobile.smallQrCodeShow">
+                  <div class="dis_flex" v-if="mobile.smallQrCodeShow && false">
                     <div class="dis_flex_wxloginImg">
                       <img src="@/assets/wx.png" alt="" @click="wxLoginFunc" />
                     </div>
@@ -365,7 +365,7 @@
                     <a class="text" @click="loginType = 1">账号密码登录</a>
                     <a class="text" @click="go('/login?state=2')">注册</a>
                   </div>
-                  <div class="dis_flex" v-if="mobile.smallQrCodeShow">
+                  <div class="dis_flex" v-if="mobile.smallQrCodeShow && false">
                     <div class="dis_flex_wxloginImg">
                       <img src="@/assets/wx.png" alt="" @click="wxLoginFunc" />
                     </div>

+ 217 - 192
src/pages/living-room/index.vue

@@ -6,11 +6,7 @@
       <div class="clearfix top-line">
         <div class="title">{{ goodsName }}</div>
         <div class="bottoms">
-          <el-button
-            size="small"
-            round
-            @click="toShare()"
-            >分享</el-button>
+          <el-button size="small" round @click="toShare()">分享</el-button>
           <el-button
             class="float-right"
             type="primary"
@@ -20,7 +16,6 @@
             >返回</el-button
           >
         </div>
-        
       </div>
     </div>
     <!-- pc端 -->
@@ -138,7 +133,7 @@
       :close-on-press-escape="false"
       :show-close="false"
       width="400px"
-      >
+    >
       <div class="popCentent">
         <div class="tips">您还没有开通直播课程,无法观看</div>
         <div class="btns" @click="toAuth()">立即开通</div>
@@ -146,11 +141,7 @@
     </el-dialog>
 
     <!-- 分享弹窗 -->
-    <el-dialog
-      title="提示"
-      :visible.sync="shareShow"
-      width="600px"
-      >
+    <el-dialog title="提示" :visible.sync="shareShow" width="600px">
       <div v-loading="shareLoading" class="popShare">
         <el-form ref="form" :model="formShare" label-width="130px">
           <el-form-item label="观看链接(pc端):">
@@ -179,13 +170,13 @@ import "@/assets/css/chatroom.css";
 import "@/assets/css/pc.css";
 import "@/assets/css/tool.css";
 import "@/assets/css/public.css";
-let Base64 = require('js-base64').Base64
+let Base64 = require("js-base64").Base64;
 
 export default {
   components: {
     Footer,
     Header,
-    ToolBar,
+    ToolBar
   },
   data() {
     return {
@@ -207,7 +198,7 @@ export default {
         liveSdk: null, // 保存直播 JS-SDK 实例
         socket: null, // 保存 WebSocket 实例
         scene: "", // 场景
-        mainPosition: "ppt", // 用于记录当前主屏幕是文档还是播放器
+        mainPosition: "ppt" // 用于记录当前主屏幕是文档还是播放器
       },
       sectionId: 0,
       goodsId: 0,
@@ -223,29 +214,30 @@ export default {
       isFirst: true,
       backNum: -1, //返回页面数
       buyCourse: 1, // 是否购买课程:1是 0否
-      identification: '', // 标识
-      goodsName: '', // 名称
+      identification: "", // 标识
+      goodsName: "", // 名称
       checkStatus: 0, // 0没有权限,1有权限
       goodsStatus: 0, // 0未上架,1上架
-      showAuth: false, 
+      showAuth: false,
       shareShow: false,
-      sectionType: 2, //sectionType: 2, // 节类型 1视频 2直播 3回放	
-      vid: '', // 回放的id
+      sectionType: 2, //sectionType: 2, // 节类型 1视频 2直播 3回放
+      vid: "", // 回放的id
       formShare: {
-        links: '',
-        ercode: '',
+        links: "",
+        ercode: ""
       },
-      shareLoading: false
+      shareLoading: false,
+      tsTime:null,
     };
   },
   computed: {
-    ...mapGetters(["userInfo"]),
+    ...mapGetters(["userInfo"])
   },
   beforeRouteEnter(to, from, next) {
-    next((vm) => {
+    next(vm => {
       if (from.path.includes("my-course-detail")) {
         vm.backNum = -2;
-      } else if (from.path == '/login') {
+      } else if (from.path == "/login") {
         vm.backNum = 0;
       } else {
         vm.backNum = -1;
@@ -253,172 +245,198 @@ export default {
     });
   },
   created() {
-    console.log('是否登录了', this.$route.query)
+    console.log("是否登录了", this.$route.query);
     if (!this.$tools.isLogin()) {
       this.setCurrentRouter(this.$route);
       this.$router.push({
-        path: "/login",
+        path: "/login"
       });
       return;
     }
-    const { a } = this.$route.query
-    console.log('aaaaaaaaa', a, location.search.slice(5))    
-    this.channelId = this.$route.params.channelId
+    const { a } = this.$route.query;
+    console.log("aaaaaaaaa", a, location.search.slice(5));
+    this.channelId = this.$route.params.channelId;
     // 有a字段是标识是复制链接进来
-    if (a ==1) {
-      this.getParam()
-      return
+    if (a == 1) {
+      this.getParam();
+      return;
     }
     // 下面不是复制链接进来的
-    const {sectionId, goodsId, courseId, orderGoodsId, gradeId, chapterId, moduleId, goodsName, sectionType, vid} = this.$route.query
-    this.sectionId = sectionId
-    this.goodsId = goodsId
-    this.courseId = courseId
-    this.orderGoodsId = orderGoodsId
-    this.gradeId = gradeId
-    this.chapterId = chapterId
-    this.moduleId = moduleId
+    const {
+      sectionId,
+      goodsId,
+      courseId,
+      orderGoodsId,
+      gradeId,
+      chapterId,
+      moduleId,
+      goodsName,
+      sectionType,
+      vid
+    } = this.$route.query;
+    this.sectionId = sectionId;
+    this.goodsId = goodsId;
+    this.courseId = courseId;
+    this.orderGoodsId = orderGoodsId;
+    this.gradeId = gradeId;
+    this.chapterId = chapterId;
+    this.moduleId = moduleId;
     // this.channelId = this.$route.params.channelId;
-    this.goodsName = goodsName
-    this.sectionType = sectionType
-    this.vid = vid
-    this.identification = new Date().valueOf() + ""
-    this.buyCourse = 1 // 不是复制链接进来的,说明已经购买课程
+    this.goodsName = goodsName;
+    this.sectionType = sectionType;
+    this.vid = vid;
+    this.identification = new Date().valueOf() + "";
+    this.buyCourse = 1; // 不是复制链接进来的,说明已经购买课程
     this.playVideo();
-    if (this.sectionType !=3 ) {
+    if (this.sectionType != 3) {
       this.studyRecordGetLastLive();
     }
-    
   },
   beforeDestroy() {
-    if (!this.$tools.isLogin()) return
+    if (!this.$tools.isLogin()) return;
     this.plv.liveSdk.destroy();
     clearInterval(this.timer);
   },
   methods: {
     ...mapMutations(["setCurrentRouter", "getCartCount"]),
     returnBack() {
-      console.log('backNum', this.backNum)
+      console.log("backNum", this.backNum);
       if (this.backNum == 0) {
         this.$router.push({
-          path: '/home'
-        })
+          path: "/home"
+        });
       } else {
-        this.$router.go(this.backNum)
+        this.$router.go(this.backNum);
       }
     },
     toShare() {
-      this.shareLoading = true
-      this.shareShow = true
+      this.shareLoading = true;
+      this.shareShow = true;
       this.$axios({
-        url: '/course/watch/per',
-        method: 'get',
+        url: "/course/watch/per",
+        method: "get",
         params: {
-          courseId: this.courseId, //课程ID	
+          courseId: this.courseId, //课程ID
           goodsId: this.goodsId, // 商品id
           moduleId: this.moduleId || null,
           chapterId: this.chapterId || null,
           sectionId: this.sectionId, // 节id
-          sectionType: this.sectionType, //节类型 1视频 2直播 3回放
-        },
-      }).then((res) => {
-        this.shareLoading = false
-        if (res.code == 200) {
-          this.formShare.links = res.data.enCodePC
-          this.formShare.ercode = res.data.enCode
+          sectionType: this.sectionType //节类型 1视频 2直播 3回放
         }
-      }).catch((err) => {
-        this.shareLoading = false
-        this.$message.warning(err.msg)
       })
+        .then(res => {
+          this.shareLoading = false;
+          if (res.code == 200) {
+            this.formShare.links = res.data.enCodePC;
+            this.formShare.ercode = res.data.enCode;
+          }
+        })
+        .catch(err => {
+          this.shareLoading = false;
+          this.$message.warning(err.msg);
+        });
     },
     // 获取直播间跳转参数的接口
     getParam() {
-      let decodeValue = decodeURIComponent(location.search.slice(5))
-      let paramArr = Base64.decode(decodeValue.split('&')[0]).split('&')
-      console.log('paramArr:',paramArr)
-      let paramObj = {}
+      let decodeValue = decodeURIComponent(location.search.slice(5));
+      let paramArr = Base64.decode(decodeValue.split("&")[0]).split("&");
+      console.log("paramArr:", paramArr);
+      let paramObj = {};
       for (let i = 0; i < paramArr.length; i++) {
-          paramObj[paramArr[i].split('=')[0]] = paramArr[i].split('=')[1]
+        paramObj[paramArr[i].split("=")[0]] = paramArr[i].split("=")[1];
       }
-      const { cid, gid, sid} = paramObj
-      console.log('cid, gid, sid',  cid, gid, sid)
+      const { cid, gid, sid } = paramObj;
+      console.log("cid, gid, sid", cid, gid, sid);
       this.$axios({
-        url: '/course/check/watch/per',
-        method: 'get',
+        url: "/course/check/watch/per",
+        method: "get",
         params: {
-          courseId: cid, //课程ID	
+          courseId: cid, //课程ID
           goodsId: gid, // 商品id
-          sectionId: sid, // 节id
-        },
-      }).then((res) => {
-        if (res.code == 200) {
-          let item = res.data
-          const {sectionId, goodsId, courseId, orderGoodsId, gradeId, chapterId, moduleId, buyCourse, sectionType, recordingUrl} = item
-          this.goodsId = goodsId
-          this.sectionId = sectionId
-          this.courseId = courseId
-          this.orderGoodsId = orderGoodsId
-          this.gradeId = gradeId || 0
-          this.chapterId = chapterId
-          this.moduleId = moduleId
-          this.buyCourse = buyCourse
-          this.goodsStatus = item.goodsStatus
-          this.goodsName = item.goodsName
-          this.sectionType = sectionType
-          this.vid = recordingUrl || ''
-          console.log('vid', this.vid, this.sectionType)
-          if (item.checkStatus == 1) { // 有权限
-            this.identification = new Date().valueOf() + ""
-            this.playVideo();
-            if (this.sectionType != 3) {
-              this.studyRecordGetLastLive();
+          sectionId: sid // 节id
+        }
+      })
+        .then(res => {
+          if (res.code == 200) {
+            let item = res.data;
+            const {
+              sectionId,
+              goodsId,
+              courseId,
+              orderGoodsId,
+              gradeId,
+              chapterId,
+              moduleId,
+              buyCourse,
+              sectionType,
+              recordingUrl
+            } = item;
+            this.goodsId = goodsId;
+            this.sectionId = sectionId;
+            this.courseId = courseId;
+            this.orderGoodsId = orderGoodsId;
+            this.gradeId = gradeId || 0;
+            this.chapterId = chapterId;
+            this.moduleId = moduleId;
+            this.buyCourse = buyCourse;
+            this.goodsStatus = item.goodsStatus;
+            this.goodsName = item.goodsName;
+            this.sectionType = sectionType;
+            this.vid = recordingUrl || "";
+            console.log("vid", this.vid, this.sectionType);
+            if (item.checkStatus == 1) {
+              // 有权限
+              this.identification = new Date().valueOf() + "";
+              this.playVideo();
+              if (this.sectionType != 3) {
+                this.studyRecordGetLastLive();
+              }
+            } else {
+              this.showAuth = true;
             }
-          } else {
-            this.showAuth = true
           }
-        }
-      }).catch((err) => {
-        console.log('500:', err)
-        this.$message({
-          message: err.msg,
-          type: "warning",
         })
-        this.$router.push({
-          path: '/home'
-        })
-      })
-
+        .catch(err => {
+          console.log("500:", err);
+          this.$message({
+            message: err.msg,
+            type: "warning"
+          });
+          this.$router.push({
+            path: "/home"
+          });
+        });
     },
     toAuth() {
-      if (this.goodsStatus == 1) { //已上架
+      if (this.goodsStatus == 1) {
+        //已上架
         this.$router.push({
-          path: "/course-detail/" + this.goodsId,
-        })
+          path: "/course-detail/" + this.goodsId
+        });
       } else {
         this.$router.push({
-          path: '/home'
-        })
+          path: "/home"
+        });
       }
     },
     // 新增用户视频学习日志
     studyLog() {
       this.$axios({
-        url: '/user/study/log',
-        method: 'post',
+        url: "/user/study/log",
+        method: "post",
         data: {
           goodsId: this.goodsId,
           courseId: this.courseId,
-					moduleId: this.moduleId || 0,
-					chapterId: this.chapterId || 0,
+          moduleId: this.moduleId || 0,
+          chapterId: this.chapterId || 0,
           sectionId: this.sectionId || 0,
           fromPlat: 2, //来源平台 1小程序 2PC网站
           goodsType: 6, // 商品类型 1视频2题库 3补考 4前培 5虚拟赠送题库 6直播
-          orderGoodsId: this.orderGoodsId,
+          orderGoodsId: this.orderGoodsId
         }
-      }).then((res) => {
-        console.log('直播的用户学习日志:', res)
-      })
+      }).then(res => {
+        console.log("直播的用户学习日志:", res);
+      });
     },
     close() {
       this.signModal = false;
@@ -432,25 +450,26 @@ export default {
       // /polyv/live/sign
       this.$request
         .polyvLivesign({
-          channelId: this.channelId,
+          channelId: this.channelId
         })
-        .then((res) => {
+        .then(res => {
           if (res.code == 200) {
-          this.sign = res.data.sign;
-          this.token = res.data.token;
-          this.mediaChannelKey = res.data.mediaChannelKey;
-          this.timestamp = res.data.timestamp;
-          this.appId = res.data.appId;
-
-          this.loadPlayerzb();
-          // 新增用户视频学习日志
-          this.studyLog()
+            this.sign = res.data.sign;
+            this.token = res.data.token;
+            this.mediaChannelKey = res.data.mediaChannelKey;
+            this.timestamp = res.data.timestamp;
+            this.appId = res.data.appId;
+
+            this.loadPlayerzb();
+            // 新增用户视频学习日志
+            this.studyLog();
           } else {
-            this.$message.warning(res.msg)
+            this.$message.warning(res.msg);
           }
-        }).catch((err) => {
-          this.$message.warning(err.msg)
-        }) 
+        })
+        .catch(err => {
+          this.$message.warning(err.msg);
+        });
     },
 
     async playVideo() {
@@ -470,9 +489,9 @@ export default {
         this.$request
           .studyRecordGetLastLive({
             orderGoodsId: this.orderGoodsId,
-            courseId: this.courseId,
+            courseId: this.courseId
           })
-          .then((res) => {
+          .then(res => {
             if (!res.data) {
               // this.signModal = true;
             }
@@ -481,7 +500,7 @@ export default {
     },
 
     jquery() {
-      return new Promise((resolve) => {
+      return new Promise(resolve => {
         if (!window.polyvLivePlayer) {
           const myScript = document.createElement("script");
           myScript.setAttribute("src", "../../assets/jquery.min.js");
@@ -499,7 +518,7 @@ export default {
         pptEl: "", // 文档容器选择器, 普通直播不需要设置pptEl
         controllerEl: "", // 三分屏控制栏的容器选择器, pc三分屏的场景才需要设置controllerEl,
         chatContainer: "", // 聊天室的容器选择器
-        pptEl: "#tab-ppt",
+        pptEl: "#tab-ppt"
       };
 
       els.chatContainer = "#plv-pc-chat"; // DOM选择器,HTML元素,用于渲染聊天室
@@ -523,7 +542,7 @@ export default {
         height: "100%",
         token: this.token,
         mediaChannelKey: this.mediaChannelKey,
-        roomMessage: (data) => {
+        roomMessage: data => {
           // data为聊天室socket消息,当有聊天室消息时会触发此方法
           console.log(data);
           if (this.plv.liveSdk && this.plv.liveSdk.player) {
@@ -532,7 +551,7 @@ export default {
               this.plv.liveSdk.player.sendBarrage(data.content);
             }
           }
-        },
+        }
       });
 
       this.plv.socket = chatroom.chat.socket;
@@ -549,8 +568,8 @@ export default {
           userName: this.userInfo.realname,
           pic:
             this.$tools.splitImgHost(this.userInfo.avatar, true) ||
-            "http://livestatic.videocc.net/assets/wimages/missing_face.png",
-        },
+            "http://livestatic.videocc.net/assets/wimages/missing_face.png"
+        }
       });
 
       this.plv.liveSdk.on(
@@ -558,9 +577,8 @@ export default {
         (event, status) => {
           if (status == "end") {
             clearInterval(this.timer);
-            let duraing = this.playTime - this.duraing;
+            this.studyRecord(1);
             this.duraing = 0;
-            this.studyRecord(1, duraing);
           }
         }
       ); // 监听流状态变化
@@ -577,18 +595,17 @@ export default {
         pptNavBottom: "80px",
         barrage: true, // 是否开启弹幕
         defaultBarrageStatus: true,
-        autoplay: true,
-      }
+        autoplay: true
+      };
       if (this.sectionType == 3) {
         // 回放模式需要fileId、url、sessionId
         // fileId: undefined, //ppt数据id,回放模式必填
         // url: undefined,  // 回放视频链接,回放模式必填
         // sessionId: undefined, // 回放场次id,回放模式必填
         // vid: undefined,  // 回放id,回放模式下传入该参数,可不传fileId、url、sessionId
-        options.type = 'vod',
-        options.vid = this.vid
+        (options.type = "vod"), (options.vid = this.vid);
       }
-      console.log('options', options)
+      console.log("options", options);
       this.plv.liveSdk.on(
         PolyvLiveSdk.EVENTS.CHANNEL_DATA_INIT,
         (event, data) => {
@@ -616,59 +633,67 @@ export default {
           //   this.studyRecord(1);
           // });
 
-          this.plv.liveSdk.player.on("pause", (state) => {
-            let duraing = this.playTime - this.duraing;
-            this.duraing = 0;
-            this.studyRecord(0, duraing);
+          this.plv.liveSdk.player.on("playing", state => {
+            this.tsTime = new Date().getTime() + 200
+            clearInterval(this.timer);
+            this.timer = setInterval(() => {
+              this.studyRecord(0);
+            }, 15000);
+          });
+          this.plv.liveSdk.player.on("pause", state => {
+            this.studyRecord(0);
             clearInterval(this.timer);
           });
 
-          this.plv.liveSdk.player.on("loadedmetadata", (state) => {
+          this.plv.liveSdk.player.on("loadedmetadata", state => {
             if (this.isFirst) {
+              this.duraing = 0;
               this.studyRecord(0);
               this.isFirst = false;
             }
-
-            clearInterval(this.timer);
-            this.timer = setInterval(() => {
-              this.studyRecord(0, 20);
-              this.duraing += 20;
-            }, 20000);
           });
 
-          this.plv.liveSdk.player.on("timeupdate", (time) => {
+          this.plv.liveSdk.player.on("timeupdate", time => {
             this.playTime = time;
+            //节流
+            let jieliuTime = new Date().getTime()
+            if(this.tsTime > jieliuTime){
+              return
+            }else{
+              this.tsTime = jieliuTime + 1000
+              this.duraing += 1
+            }
           });
         }
       );
     },
 
-    studyRecord(status, duraing) {
+    studyRecord(status) {
       if (!this.sectionId) {
         return;
       }
       let self = this;
-      this.$request.studyRecord({
-        fromPlat: 2, //来源平台 1小程序 2网站	
-        buyCourse: this.buyCourse,
-        identification: this.identification,
-        sectionId: parseInt(this.sectionId),
+      self.$request.studyRecord({
+        fromPlat: 2, //来源平台 1小程序 2网站
+        buyCourse: self.buyCourse,
+        identification: self.identification,
+        sectionId: parseInt(self.sectionId),
         goodsId: parseInt(self.goodsId),
         courseId: parseInt(self.courseId),
-        orderGoodsId: this.orderGoodsId,
-        studyDuration: parseInt(duraing) || 0,
+        orderGoodsId: self.orderGoodsId,
+        studyDuration: parseInt(self.duraing) || 0,
         gradeId: parseInt(self.gradeId),
         chapterId: parseInt(self.chapterId),
         moduleId: parseInt(self.moduleId),
-        videoCurrentTime: 2,
-        status: status,
+        videoCurrentTime: self.playTime || 0,
+        status: status
       });
     },
     /**
      * @param {String} 直播js加载
      */
     loadChatroomScriptzb() {
-      return new Promise((resolve) => {
+      return new Promise(resolve => {
         if (!window.polyvLivePlayer) {
           const myScript = document.createElement("script");
           myScript.setAttribute("src", this.chatroomJs);
@@ -683,7 +708,7 @@ export default {
      * @param {String} 聊天室js加载
      */
     loadPlayerScriptzb() {
-      return new Promise((resolve) => {
+      return new Promise(resolve => {
         if (!window.polyvLivePlayer) {
           const myScript = document.createElement("script");
           myScript.setAttribute("src", this.playerJs);
@@ -709,8 +734,8 @@ export default {
     // 点击到文档tab时调用播放器的resize方法,原因:
     // ppt父容器样式改变会导致ppt显示异常,需要调用resize刷新ppt尺寸,该函数用于移动端三分屏场景
     handlePptTabClick() {
-      $("[data-type=ppt]").click(function () {
-        setTimeout(function () {
+      $("[data-type=ppt]").click(function() {
+        setTimeout(function() {
           this.plv.liveSdk.player.resize();
         }, 0);
       });
@@ -748,7 +773,7 @@ export default {
       this.plv.liveSdk.player.resizeBarrage(); // 刷新弹幕显示区域尺寸
     },
     download() {
-      var url = this.formShare.ercode
+      var url = this.formShare.ercode;
       var a = document.createElement("a");
       var event = new MouseEvent("click");
       a.download = "二维码";
@@ -771,8 +796,8 @@ export default {
       } catch (err) {
         this.$message.error("复制失败,请检查浏览器兼容");
       }
-    },
-  },
+    }
+  }
 };
 </script>
 
@@ -915,15 +940,15 @@ export default {
   }
 
   .popCentent {
-      display: flex;
-      flex-direction: column;
-      align-items: center;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
     .btns {
       width: 300px;
       height: 40px;
       line-height: 40px;
       text-align: center;
-      background-color: #3577E8;
+      background-color: #3577e8;
       color: #fff;
       font-size: 16px;
       border-radius: 20px;

+ 189 - 77
src/pages/login/index.vue

@@ -93,6 +93,25 @@
                         </el-input></el-form-item
                       >
                     </div>
+                    <drag-verify
+                      v-if="showHk"
+                      style="margin: 20px auto 10px"
+                      :width="300"
+                      ref="dragVerify"
+                      handlerBg="#8ec6e9"
+                      :isPassing.sync="isPassing"
+                      text="请按住滑块拖动以完成验证"
+                      successText="验证通过"
+                      handlerIcon="el-icon-d-arrow-right"
+                      successIcon="el-icon-circle-check"
+                      @passcallback="passcallback"
+                    >
+                      <i
+                        v-show="!isPassing"
+                        slot="textBefore"
+                        class="el-icon-lock"
+                      ></i>
+                    </drag-verify>
                     <div class="text">
                       <a @click="state = 2">立即注册</a>
                       <a @click="state = 3">找回密码</a>
@@ -142,6 +161,25 @@
                         </el-input></el-form-item
                       >
                     </div>
+                    <drag-verify
+                      v-if="showHk"
+                      style="margin: 20px auto 10px"
+                      :width="300"
+                      ref="dragVerify"
+                      handlerBg="#8ec6e9"
+                      :isPassing.sync="isPassing"
+                      text="请按住滑块拖动以完成验证"
+                      successText="验证通过"
+                      handlerIcon="el-icon-d-arrow-right"
+                      successIcon="el-icon-circle-check"
+                      @passcallback="passcallback"
+                    >
+                      <i
+                        v-show="!isPassing"
+                        slot="textBefore"
+                        class="el-icon-lock"
+                      ></i>
+                    </drag-verify>
                     <div class="text">
                       <a @click="state = 2">立即注册</a>
                       <a @click="state = 3">找回密码</a>
@@ -201,6 +239,25 @@
                       </el-input>
                     </el-form-item>
                   </div>
+                  <drag-verify
+                    v-if="showHk"
+                    style="margin: 20px auto 10px"
+                    :width="300"
+                    ref="dragVerify"
+                    handlerBg="#8ec6e9"
+                    :isPassing.sync="isPassing"
+                    text="请按住滑块拖动以完成验证"
+                    successText="验证通过"
+                    handlerIcon="el-icon-d-arrow-right"
+                    successIcon="el-icon-circle-check"
+                    @passcallback="passcallback"
+                  >
+                    <i
+                      v-show="!isPassing"
+                      slot="textBefore"
+                      class="el-icon-lock"
+                    ></i>
+                  </drag-verify>
                   <div class="input">
                     <el-form-item prop="pwd"
                       ><el-input
@@ -216,7 +273,9 @@
                           :class="{ btn: registerPwdShow ? true : false }"
                         ></i> </el-input
                     ></el-form-item>
-                    <p style="text-align: center; margin-top: 18px; font-size: 12px;color:rgb(220, 165, 13);">
+                    <p
+                      style="text-align: center; margin-top: 18px; font-size: 12px;color:rgb(220, 165, 13);"
+                    >
                       "密码应由8-16位数字、大小写字母、符号组成"
                     </p>
                   </div>
@@ -241,7 +300,9 @@
                         <!-- <input type="checkbox" v-model="registerForm.read" /> -->
                       </div>
 
-                      <div>
+                      <div
+                        v-if="$store.state.TENANT_NANE == '867735392558919680'"
+                      >
                         <a @click="showAgreementModal = true"
                           >《用户使用协议》及《个人信息保护政策》</a
                         >
@@ -296,6 +357,25 @@
                       </el-input></el-form-item
                     >
                   </div>
+                  <drag-verify
+                    v-if="showHk"
+                    style="margin: 20px auto 10px"
+                    :width="300"
+                    ref="dragVerify"
+                    handlerBg="#8ec6e9"
+                    :isPassing.sync="isPassing"
+                    text="请按住滑块拖动以完成验证"
+                    successText="验证通过"
+                    handlerIcon="el-icon-d-arrow-right"
+                    successIcon="el-icon-circle-check"
+                    @passcallback="passcallback"
+                  >
+                    <i
+                      v-show="!isPassing"
+                      slot="textBefore"
+                      class="el-icon-lock"
+                    ></i>
+                  </drag-verify>
                   <div class="input">
                     <el-form-item prop="pwd">
                       <el-input
@@ -1047,6 +1127,10 @@ export default {
       }
     };
     return {
+      intStatus: 0,
+      funcStr: "",
+      showHk: false,
+      isPassing: false,
       companyName: this.$store.state.header.companyName,
       locationName: location.host,
       state: 1, //1登录 2注册  3找回密码 4绑定学员身份
@@ -1146,6 +1230,12 @@ export default {
   computed: {
     ...mapGetters(["header", "currentRouter", "mobile"])
   },
+  watch: {
+    state() {
+      this.showHk = false;
+      this.isPassing = false;
+    }
+  },
   mounted() {
     this.state = this.$route.query.state || 1;
     //双重校验
@@ -1234,36 +1324,50 @@ export default {
               if (this.getLoginCodeLock) {
                 return;
               }
-              this.getLoginCodeLock = true;
-              this.$request
-                .getLoginSms({
-                  tel:
-                    int === 1 ? this.loginForm.account : this.loginSmsForm.tel
-                })
-                .then(res => {
-                  this.getLoginCodeLock = false;
-                  this.$message({
-                    message: `验证码已发送`,
-                    type: "success"
-                  });
-                  this.countDown = 60;
-                  this.countDownTimer = setInterval(() => {
-                    if (this.countDown == 0) {
-                      clearInterval(this.countDownTimer);
-                    } else {
-                      this.countDown--;
-                    }
-                  }, 1000);
-                })
-                .catch(err => {
-                  this.$message.error(err.msg);
-                  this.getLoginCodeLock = false;
-                });
+              this.showHk = true;
+              this.intStatus = int;
+              this.funcStr = "getLoginSms_s";
             }
           }
         }
       );
     },
+    // 滑块完成函数
+    passcallback() {
+      this.$message.success("校验成功");
+      setTimeout(() => {
+        this.showHk = false;
+        this.isPassing = false;
+        this[this.funcStr]();
+      }, 500);
+    },
+    getLoginSms_s() {
+      let int = this.intStatus;
+      this.getLoginCodeLock = true;
+      this.$request
+        .getLoginSms({
+          tel: int === 1 ? this.loginForm.account : this.loginSmsForm.tel
+        })
+        .then(res => {
+          this.getLoginCodeLock = false;
+          this.$message({
+            message: `验证码已发送`,
+            type: "success"
+          });
+          this.countDown = 60;
+          this.countDownTimer = setInterval(() => {
+            if (this.countDown == 0) {
+              clearInterval(this.countDownTimer);
+            } else {
+              this.countDown--;
+            }
+          }, 1000);
+        })
+        .catch(err => {
+          this.$message.error(err.msg);
+          this.getLoginCodeLock = false;
+        });
+    },
     /**
      * 获取找回密码短信
      */
@@ -1274,35 +1378,39 @@ export default {
             if (this.getForgetCodeLock) {
               return;
             }
-            this.getForgetCodeLock = true;
-            this.$request
-              .getRegisterSmsforget({ tel: this.forgetForm.tel })
-              .then(res => {
-                this.getForgetCodeLock = false;
-                this.$message({
-                  message: `验证码已发送`,
-                  type: "success"
-                });
-                this.forgetCountDown = 60;
-                this.forgetCountDownTimer = setInterval(() => {
-                  if (this.forgetCountDown == 0) {
-                    clearInterval(this.forgetCountDownTimer);
-                  } else {
-                    this.forgetCountDown--;
-                  }
-                }, 1000);
-              })
-              .catch(err => {
-                this.$message({
-                  message: err.msg,
-                  type: "warning"
-                });
-                this.getForgetCodeLock = false;
-              });
+            this.showHk = true;
+            this.funcStr = "getCode_s";
           }
         }
       });
     },
+    getCode_s() {
+      this.getForgetCodeLock = true;
+      this.$request
+        .getRegisterSmsforget({ tel: this.forgetForm.tel })
+        .then(res => {
+          this.getForgetCodeLock = false;
+          this.$message({
+            message: `验证码已发送`,
+            type: "success"
+          });
+          this.forgetCountDown = 60;
+          this.forgetCountDownTimer = setInterval(() => {
+            if (this.forgetCountDown == 0) {
+              clearInterval(this.forgetCountDownTimer);
+            } else {
+              this.forgetCountDown--;
+            }
+          }, 1000);
+        })
+        .catch(err => {
+          this.$message({
+            message: err.msg,
+            type: "warning"
+          });
+          this.getForgetCodeLock = false;
+        });
+    },
     /**
      * 手机号登录
      */
@@ -1384,41 +1492,45 @@ export default {
      * 获取注册验证码
      */
     getRegisterSms() {
-      var self = this;
       this.$refs.registerForm.validateField("tel", valid => {
         if (!valid) {
           if (this.registerCountDown == 0) {
             if (this.getRegisterCodeLock) {
               return;
             }
-            this.getRegisterCodeLock = true;
-            this.$request
-              .getRegisterSms({ tel: this.registerForm.tel })
-              .then(res => {
-                this.getRegisterCodeLock = false;
-                this.$message({
-                  message: `验证码已发送`,
-                  type: "success"
-                });
-                this.registerCountDown = 60;
-                this.registerCountDownTimer = setInterval(() => {
-                  self.registerCountDown--;
-                  if (self.registerCountDown == 0) {
-                    clearInterval(self.registerCountDownTimer);
-                  }
-                }, 1000);
-              })
-              .catch(err => {
-                this.$message({
-                  message: err.msg,
-                  type: "error"
-                });
-                this.getRegisterCodeLock = false;
-              });
+            this.showHk = true;
+            this.funcStr = "getRegisterSms_s";
           }
         }
       });
     },
+    getRegisterSms_s() {
+      var self = this;
+      this.getRegisterCodeLock = true;
+      this.$request
+        .getRegisterSms({ tel: this.registerForm.tel })
+        .then(res => {
+          this.getRegisterCodeLock = false;
+          this.$message({
+            message: `验证码已发送`,
+            type: "success"
+          });
+          this.registerCountDown = 60;
+          this.registerCountDownTimer = setInterval(() => {
+            self.registerCountDown--;
+            if (self.registerCountDown == 0) {
+              clearInterval(self.registerCountDownTimer);
+            }
+          }, 1000);
+        })
+        .catch(err => {
+          this.$message({
+            message: err.msg,
+            type: "error"
+          });
+          this.getRegisterCodeLock = false;
+        });
+    },
     /**
      * 注册后自动登录并跳转绑定身份信息
      */

+ 0 - 1
src/pages/payment/index.vue

@@ -80,7 +80,6 @@
         </p>
         <p v-else>二维码已过期,点击图片重新获取二维码</p>
         <p>过期后请刷新重新获取二维码</p>
-        <p>客服电话:020-87085982</p>
       </div>
     </el-dialog>
     <updateUserInfo ref="updateUserInfo"></updateUserInfo>

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

@@ -1,7 +1,7 @@
 <template>
   <div class="bank-record">
     <div class="bank-record__header">
-      <div class="title">做题记录</div>
+      <div class="title" v-if="false">做题记录</div>
       <div class="content">
         <el-select
           clearable
@@ -403,7 +403,8 @@ export default {
     }
 
     .content {
-      margin: 10px 0;
+      padding-top: 10px;
+      margin: 0px 0px 10px;
     }
 
     border-bottom: 1px solid #eee;

+ 32 - 12
src/pages/person-center/index.vue

@@ -16,16 +16,27 @@
             alt=""
           />
           <div class="text">
-            <div class="title">{{ userInfo && userInfo.realname }}</div>
-            <div class="desc">你好</div>
+            <div class="title">{{ userInfo && userInfo.realname + ',' }}您好!</div>
           </div>
-          <div class="float_right_top" v-if="mobile.smallQrCodeShow">
+          <div
+            class="float_right_top"
+            v-if="
+              mobile.smallQrCodeShow && (mobile.h5Image || mobile.mobileImage)
+            "
+          >
             <!-- <img src="@/assets/xcxqrcode.jpg" alt="" /> -->
             <div class="cla_s">
               <h2>手机刷题学习</h2>
               <h2 class="link_two">随时随地提升分数</h2>
             </div>
-            <img :src="$tools.splitImgHost(mobile.mobileImage)" alt="" />
+            <div class="img_x" v-if="mobile.h5Image">
+              <img :src="$tools.splitImgHost(mobile.h5Image)" alt="" />
+              <p>扫码移动端</p>
+            </div>
+            <div class="img_x" v-if="mobile.mobileImage">
+              <img :src="$tools.splitImgHost(mobile.mobileImage)" alt="" />
+              <p>扫码小程序</p>
+            </div>
           </div>
         </div>
 
@@ -177,7 +188,7 @@ export default {
   },
   data() {
     return {
-      hasOtherBank:false,
+      hasOtherBank: false,
       activeName: "1",
       swiperOptions: {
         freeMode: false,
@@ -200,10 +211,10 @@ export default {
   },
   mounted() {
     this.$request.coursespecialquestioncount().then(res => {
-      if(res.data == 1){
-        this.hasOtherBank = true
+      if (res.data == 1) {
+        this.hasOtherBank = true;
       }
-    })
+    });
   },
   methods: {
     ...mapMutations(["setBusinessItem"]),
@@ -258,13 +269,22 @@ export default {
         }
       }
       .float_right_top {
-        width: 456px;
+        // width: 506px;
         height: 138px;
         display: flex;
         align-items: center;
-        & > img {
-          width: 100px;
-          height: 100px;
+        & > .img_x {
+          margin-right: 14px;
+          & > img {
+            border-radius: 5px;
+            width: 80px;
+            height: 80px;
+          }
+          & > p {
+            text-align: center;
+            font-size: 12px;
+            color: #7f7f7f;
+          }
         }
         & > .cla_s {
           margin: 0px 20px 0px;

+ 1 - 1
src/pages/person-center/mock-record/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="bank-record">
-    <div class="bank-record__header">
+    <div class="bank-record__header" v-if="false">
       <div class="title">模考记录</div>
 
       <!-- <div class="content">

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

@@ -39,7 +39,7 @@
             <el-radio :label="2">女</el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="年龄">
+        <el-form-item label="出生日期">
           <el-date-picker
             v-model="listData.userBirth"
             type="date"
@@ -504,6 +504,8 @@ export default {
         cursor: pointer;
       }
       .slide-btn {
+        user-select: none;
+        display: inline-block;
         cursor: pointer;
         font-size: 14px;
         font-family: Microsoft YaHei;
@@ -539,6 +541,6 @@ export default {
   }
 }
 /deep/ .el-form-item {
-  margin-bottom: 22px;
+  margin-bottom: 22px!important;
 }
 </style>

+ 15 - 7
src/pages/person-center/my-order/index.vue

@@ -52,7 +52,9 @@
                     <div class="title">{{ items.goodsName }}</div>
                     <div class="desc" v-if="item.orderFrom !== 6">
                       应付金额:
-                      <span class="note">¥{{ items.goodsRealPrice | formatPrice }}</span>
+                      <span class="note"
+                        >¥{{ items.goodsRealPrice | formatPrice }}</span
+                      >
                     </div>
                   </div>
                   <div
@@ -83,7 +85,9 @@
               <div class="price-wrap">
                 <div class="btns" v-if="item.orderFrom !== 6">
                   <div class="price-text">实付金额</div>
-                  <div class="price-number">¥{{ item.payPrice | formatPrice }}</div>
+                  <div class="price-number">
+                    ¥{{ item.payPrice | formatPrice }}
+                  </div>
                 </div>
               </div>
               <div
@@ -154,7 +158,9 @@
                   <template v-if="!item.wxpayRefundId"> 退款失败 </template>
                   <template v-else>
                     <div class="price-text">已退款</div>
-                    <div class="price-number">¥{{ item.refundFee | formatPrice }}</div>
+                    <div class="price-number">
+                      ¥{{ item.refundFee | formatPrice }}
+                    </div>
                   </template>
                 </div>
               </div>
@@ -256,6 +262,11 @@ export default {
     this.getOrderList();
   },
   methods: {
+    go(path) {
+      this.$router.push({
+        path: path
+      });
+    },
     getOrderNum() {
       this.$request
         .getorderlists({
@@ -346,7 +357,6 @@ export default {
     },
 
     refund(orderSn, item) {
-
       this.$prompt("确定要退款吗?", "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
@@ -378,9 +388,7 @@ export default {
               });
             });
         })
-        .catch(() => {
-          
-        });
+        .catch(() => {});
     },
 
     delOrder(item) {

+ 1 - 1
src/pages/person-center/play-record/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="play-record">
-    <div class="play-record__header clearfix">
+    <div class="play-record__header clearfix" v-if="false">
       播放记录
       <!-- <a class="clear-btn">清空记录</a> -->
     </div>

+ 5 - 0
src/store/index.js

@@ -139,6 +139,11 @@ export default new Vuex.Store({
         }
         axios.get(process.env.BASE_URL + '/app/common/findTenantId?hostPc=' + urls)
           .then(function (response) {
+              let favicon = document.querySelector('link[rel="icon"]')
+              favicon = document.createElement('link')
+              favicon.rel = 'icon'
+              favicon.href = response.data.data == '867735392558919680'?'/static/favicon.ico':'/static/favicons.ico'
+              document.head.appendChild(favicon)
             commit('setTENANT_NANE', response.data.data)
             resolve()
           })

BIN
static/favicon.ico


BIN
static/favicons.ico