Ver Fonte

test_12

guojy há 1 ano atrás
pai
commit
f9b989f67f

BIN
src/assets/images/courseUser.png


+ 9 - 9
src/router/course.js

@@ -19,56 +19,56 @@
       name: 'courseHome',
       component: () => import('@/view/course/user/team'),
       label: '我的团队',
-      need_login: true,
+      need_login: false,
     },
     {
       path: '/courseDeal/:id',
       name: 'courseDeal',
       component: () => import('@/view/course/user/deal'),
       label: '课程交易',
-      need_login: true,
+      need_login: false,
     },
     {
       path: '/courseDetail/:id',
       name: 'courseDetail',
       component: () => import('@/view/course/user/courseDeal'),
       label: '课程详情',
-      need_login: true,
+      need_login: false,
     },
     {
       path: '/courseAdDetail/:id',
       name: 'courseAdDetail',
       component: () => import('@/view/course/user/courseAdDeal'),
       label: '推广课程详情',
-      need_login: true,
+      need_login: false,
     },
     {
       path: '/course/limitChange',
       name: 'limitChange',
       component: () => import('@/view/course/deal/limitRecord'),
       label: '名额变动明细',
-      need_login: true,
+      need_login: false,
     },
     {
       path: '/course/dealOrder/:id',
       name: 'dealOrder',
       component: () => import('@/view/course/deal/dealOrder'),
       label: '课程名额交易',
-      need_login: true,
+      need_login: false,
     },
     {
       path: '/course/transfer/:id',
       name: 'transfer',
       component: () => import('@/view/course/deal/transfer'),
       label: '课程名额转让',
-      need_login: true,
+      need_login: false,
     },
     {
       path: '/course/video/:id',
       name: 'courseVideo',
       component: () => import('@/view/course/video/video'),
       label: '课程播放',
-      need_login: true,
+      need_login: false,
     },
     {
       path: '/courseLogin',
@@ -82,7 +82,7 @@
       name: 'courseError',
       component: () => import('@/view/course/error'),
       label: '网络错误',
-      need_login: false,
+      need_login: true,
     },
 ]
 export default routes

+ 39 - 22
src/utils/axiosKc.js

@@ -2,8 +2,8 @@ import router from '@/router'
 import axios from 'axios'
 import qs from 'qs'
 import Vue from 'vue'
-import {getWxToken,setWxToken,openError} from '@/utils/auth'
-import {Dialog,Notify} from 'vant'
+import { getWxToken, setWxToken, openError } from '@/utils/auth'
+import { Dialog, Notify ,Toast } from 'vant'
 Vue.use(Dialog).use(Notify)
 let pl = 'a'
 if (window.plus) {
@@ -19,34 +19,30 @@ let url = '';
 const request = axios.create({
   // baseURL: process.env.BASE_API, 
   baseURL: 'https://oa.g107.com',
-  // baseURL:'http://192.168.0.66:8081',
   timeout: 20000,
   headers: {
     'Content-Type': 'application/x-www-form-urlencoded',
     'pl': pl
   },
-  // transformRequest: [function(data) {
-  //   return qs.stringify(data)
-  // }]
 })
-
+var bool = true; //五秒执行一次变量
 request.interceptors.request.use(
-    config => {
-      // url = config.url;
-      // if (getWxToken()) {
-      //   config.headers['A-Token'] = getWxToken()
-      // }
-      return config
-    },
-    error => {
-      Promise.reject(error)
-    }
-  )
+  config => {
+    // url = config.url;
+    // if (getWxToken()) {
+    //   config.headers['A-Token'] = getWxToken()
+    // }
+    return config
+  },
+  error => {
+    Promise.reject(error)
+  }
+)
 
 request.interceptors.response.use(
   response => {
     if (response.data.code === 1) {
-      if (response.data.data&&response.data.data.utoken) {
+      if (response.data.data && response.data.data.utoken) {
         if (response.data.data.utoken != getWxToken()) {
           setWxToken(response.data.data.utoken)
         }
@@ -114,6 +110,27 @@ request.interceptors.response.use(
     if (error.message == 'interrupt') {
       return Promise.reject(error.message)
     }
+    //五秒内只执行一次
+    if (bool) {
+      if (error.message == 'timeout of 10000ms exceeded') {
+        Notify({
+          type: 'warning',
+          message: "网络连接超时,请稍后重试",
+          duration: 3000,
+        });
+      }
+      if (error.message == 'Network Error') {
+        Notify({
+          type: 'danger',
+          message: "网络连接失败,请检查您的网络",
+          duration: 3000,
+        });
+      }
+      bool = false
+      setTimeout(() => {
+        bool = true
+      }, 5000)
+    }
     return Promise.reject(error)
   }
 )
@@ -122,8 +139,8 @@ request.interceptors.response.use(
 var CancelToken = axios.CancelToken;
 Vue.$httpRequestList = [];
 //isToken  是微信的TOKEN  用来绑定
-export default (type, url, data, heaStr, isToken,Content_Type) => {
-  var Accept,ContentType
+export default (type, url, data, heaStr, isToken, Content_Type) => {
+  var Accept, ContentType
   var Token = ''
   switch (heaStr) {
     case undefined:
@@ -148,7 +165,7 @@ export default (type, url, data, heaStr, isToken,Content_Type) => {
   if (Content_Type == '' || Content_Type == undefined) {
     // ContentType = 'application/x-www-form-urlencoded'
     ContentType = 'application/json'
-  }else{
+  } else {
     ContentType = Content_Type
   }
   return new Promise((resolve, reject) => { //封装ajax

+ 2 - 0
src/view/course/home.vue

@@ -150,6 +150,7 @@ import Clipboard from "clipboard";
 import QRCode from "qrcodejs2";
 import courseList from "./components/courseList.vue";
 import {setDocumentTitle} from '../../components/vueHashCalendar/utils/util'
+import {isWeChatMobile,isWeChatPC,isWeChat} from './utils'
 import {
   getWxApiToken,
   getUSerInfo,
@@ -200,6 +201,7 @@ export default {
   },
   created() {
     this.init();
+    console.log(isWeChat()?isWeChatMobile()?'手机微信':isWeChatPC()?'电脑微信':'无法判断':'不是微信')
   },
   watch: {
     $route(to) {

+ 10 - 5
src/view/course/user/courseDeal.vue

@@ -109,7 +109,7 @@ export default {
   methods: {
     // 领取课程提示
     useCode() {
-      if(this.codeDetail.enable){
+      if(this.codeDetail&&this.codeDetail.enable){
         this.$dialog
         .confirm({
           title: "提示",
@@ -135,6 +135,9 @@ export default {
     getCodeDetail() {
       getCourseCodeDetail(this.$route.query.code).then(res => {
         this.codeDetail = res;
+        if(!res){
+          this.$toast.fail("该课程码已失效");
+        }
       });
     },
     // 获取link对应的视频真实地址
@@ -149,7 +152,7 @@ export default {
     },
     // 章节点击观看视频
     toSectionVidio(item, index) {
-      if (this.courseDetail.buy) {
+      if (this.courseDetail.buy&&this.courseDetail.enable) {
         // this.getVideoLink(item.link)
         let data = {
           index: index,
@@ -159,8 +162,10 @@ export default {
         this.$router.push({
           path: `/course/video/${this.$route.params.id}`
         });
-      } else {
+      } else if(!this.courseDetail.buy){
         this.$toast.fail("请先领取课程后再观看");
+      }else{
+        this.$toast.fail("课程已下架");
       }
     },
     // 返回首页
@@ -183,7 +188,7 @@ export default {
         this.canGive = false;
       }
     },
-    // 获取分享码详情
+    // 获取用户此课程的详情
     getDetail() {
       learnerCourseDetail(this.courseId).then(res => {
         this.courseDetail = res;
@@ -196,7 +201,7 @@ export default {
           this.$toast.fail("您已经购买课程,无需再次购买");
         }else if(!res.enable){
           this.canGive2 = false;
-          this.$toast.fail("课程码已失效");
+          this.$toast.fail("课程已下架");
         }
       });
     }

+ 1 - 1
src/view/course/user/wxAuth.vue

@@ -13,7 +13,7 @@
     </template>
     <template v-else>
       <div class="center"  style="width: 80%;position: absolute;top: 10%;left: 50%;transform: translateX(-50%);">
-        <van-loading size="24px" style="margin-bottom: 0.3rem;display: flex;flex-direction: column;justify-content: center;align-items: center;">请在微信端授权后再使用完整服务...</van-loading>
+        <van-loading size="24px" style="margin-bottom: 0.3rem;display: flex;flex-direction: column;justify-content: center;align-items: center;">请在手机微信打开...</van-loading>
       </div>
     </template>
   </div>

+ 39 - 46
src/view/course/utils/index.js

@@ -1,55 +1,48 @@
 import { Toast, Notify } from 'vant'
 import Clipboard from "clipboard";
 import { getWxToken, setWxToken, openError } from "@/utils/auth";
-import { getIsIdentity, supremeAuthority, getIsWx, getTypes, getTypesName, getUserData, getEmployeeMap, getCache, setCache, removeCache, returnDeptName, getEmployeeMapItem, returnFh } from '@/utils/auth'
+import {getCache} from '@/utils/auth'
 //判断环境/登录状态
-export function isWxEnv(type,data) {
+export function isWxEnv(type, data) {
     return new Promise((resolve, reject) => {
-        if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){
-            if (getIsWx()) {
-                if (getWxToken()&&localStorage.getItem('wx_user_info')) {
-                    // Toast("微信环境已授权");
-                    resolve()
-                } else {
-                    // Toast.fail("微信环境未授权");
-                    reject(1)
-                    doWeixinLogin(type,data);
-                }
-            } else {
-                if (getWxToken()&&localStorage.getItem('wx_user_info')) {
-                    resolve()
-                } else {
-                    Toast.fail("当前不在微信环境中,请在微信中打开浏览");
-                    reject(2)
-                }
-            }
-        }else{
-            if (getWxToken()&&localStorage.getItem('wx_user_info')) {
+        if (isWeChatMobile()) {
+            if (getWxToken() && localStorage.getItem('wx_user_info')) {
+                Toast("微信环境已授权");
                 resolve()
             } else {
-                Toast.fail("当前不在微信环境中,请在微信中打开浏览");
-                reject(2)
+                Toast.fail("微信环境未授权");
+                reject(1)
+                doWeixinLogin(type, data);
             }
+        } else {
+            Toast.fail("请在手机微信中打开浏览");
+            reject(2)
+            // if (getWxToken() && localStorage.getItem('wx_user_info')) {
+            //     resolve()
+            // } else {
+            //     Toast.fail("请在手机微信中打开浏览");
+            //     reject(2)
+            // }
         }
     })
 }
-function isWeChat() {  
-    var ua = navigator.userAgent.toLowerCase();  
-    return /micromessenger/.test(ua);  
-}  
-  
-function isWeChatPC() {  
-    var ua = navigator.userAgent.toLowerCase();  
+export function isWeChat() {
+    var ua = navigator.userAgent.toLowerCase();
+    return /micromessenger/.test(ua);
+}
+
+export function isWeChatPC() {
+    var ua = navigator.userAgent.toLowerCase();
     // 你可以根据PC版微信浏览器的特性来添加更多的判断条件  
     // 例如,某些PC版微信浏览器可能包含特定的关键字或版本信息  
-    return /micromessenger/.test(ua) && /windows/.test(ua) && !/mobile/.test(ua);  
-}  
-  
-function isWeChatMobile() {  
-    var ua = navigator.userAgent.toLowerCase();  
-    return /micromessenger/.test(ua) && /mobile/.test(ua);  
-}  
-  
+    return /micromessenger/.test(ua) && /windows/.test(ua) && !/mobile/.test(ua);
+}
+
+export function isWeChatMobile() {
+    var ua = navigator.userAgent.toLowerCase();
+    return /micromessenger/.test(ua) && /mobile/.test(ua);
+}
+
 // if (isWeChat()) {  
 //     if (isWeChatPC()) {  
 //         console.log('这是PC版微信');  
@@ -62,7 +55,7 @@ function isWeChatMobile() {
 //     console.log('这不是微信浏览器');  
 // }
 //请求微信授权
-export function doWeixinLogin(type,data) {
+export function doWeixinLogin(type, data) {
     // let defaultUrl = 'https://3g954g5149.picp.vip/wx/mp/auth/wx65f4dde5ec7c31e7?marketing=1'
     // let dealerUrl = 'https://3g954g5149.picp.vip/wx/mp/auth/wx65f4dde5ec7c31e7?marketing=2&pid='
     // let timinalUrl = 'https://3g954g5149.picp.vip/wx/mp/auth/wx65f4dde5ec7c31e7?marketing=3&expendCode='
@@ -70,19 +63,19 @@ export function doWeixinLogin(type,data) {
     let dealerUrl = `${process.env.BASE_API}/wx/mp/auth/wx65f4dde5ec7c31e7?marketing=2&pid=`
     let timinalUrl = `${process.env.BASE_API}/wx/mp/auth/wx65f4dde5ec7c31e7?marketing=3&expendCode=`
     if (getCache("isAndroid")) {
-        if (type == 'pid'&&data) {
+        if (type == 'pid' && data) {
             window.open(`${dealerUrl}${data}`)
-        } else if(type == 'code'&&data){
+        } else if (type == 'code' && data) {
             window.open(`${timinalUrl}${data}`)
-        }else{
+        } else {
             window.open(`${defaultUrl}`)
         }
     } else {
-        if (type == 'pid'&&data) {
+        if (type == 'pid' && data) {
             window.location.href = `${dealerUrl}${data}`;
-        } else if(type == 'code'&&data){
+        } else if (type == 'code' && data) {
             window.location.href = `${timinalUrl}${data}`;
-        }else{
+        } else {
             window.location.href = `${defaultUrl}`;
         }
     }

+ 6 - 6
src/view/course/video/video.vue

@@ -131,7 +131,6 @@ export default {
     // 获取课程详情
     getDetail(){
       learnerCourseDetail(this.courseId).then(res=>{
-        console.log(res)
         this.title = res.name
         document.title = res.name
         res.sections.forEach((item,index)=>{
@@ -211,13 +210,14 @@ img {
             padding: 0 0.2rem;
             margin-bottom: 0.15rem;
             p {
+              padding: .2rem 0;
               font-size: 0.3rem;
               color: #000;
-              line-height: 3;
-              overflow: hidden;
-              text-overflow: ellipsis;
-              white-space: nowrap;
-              word-break: break-all;
+              line-height: 1.3;
+              // overflow: hidden;
+              // text-overflow: ellipsis;
+              // white-space: nowrap;
+              // word-break: break-all;
             }
             &.active{
               box-shadow: 1px 4px #ddd;