Explorar o código

Merge branch 'iteration-20250225-use-code' into jenkins-test

lex-xin hai 5 meses
pai
achega
9409c41b26

+ 168 - 0
src/hooks/useAuthCode/index.ts

@@ -0,0 +1,168 @@
+import request from '@/helpers/request';
+import { browser, getUrlCode } from '@/helpers/utils';
+import { goWechatAuth } from '@/state';
+import { ref } from 'vue';
+/** 微信Code签名 */
+const WX_CODE_SIGN = 'WXCODESIGN';
+/** 签名有效时间 3分钟 */
+const SIGN_VALID_TIME = 1000 * 60 * 3;
+/** 微信OpenId */
+const WX_OPEN_ID = 'WXOPENID';
+
+/**
+ * 获取微信微信Code码 | 获取微信OPENID - 用于微信授权
+ */
+export default function useAuthCode() {
+  // 微信Code
+  const weChatCode = ref<string>('');
+  // 微信appId
+  const wxAppId = ref<string>('');
+  /**
+   * 获取微信appId
+   */
+  const getAppId = async () => {
+    if (wxAppId.value) return;
+    const { data } = await request.get('/edu-app/open/paramConfig/wechatAppId');
+    // 判断是否有微信appId
+    if (data) {
+      wxAppId.value = data;
+    }
+  };
+
+  /**
+   * 检查签名是否有效
+   */
+  const checkSignValid = () => {
+    const sign = sessionStorage.getItem(WX_CODE_SIGN);
+    if (!sign) {
+      return false;
+    }
+    const now = Date.now();
+    //
+    if (now - Number(sign) > SIGN_VALID_TIME) {
+      return false;
+    }
+    return true;
+  };
+
+  /**
+   * 去微信获取Code
+   * @param url 当前页面的url
+   */
+  const getWeChatAuthCode = async (url?: string) => {
+    const authUrl = url || window.location.href;
+    // 判断是否在微信浏览器中打开
+    if (!browser().weixin) {
+      console.warn('在微信浏览器中打开');
+      return;
+    }
+
+    // 获取链接上的code
+    const code = getUrlCode();
+    // 如果链接上有code 或者 签名无效
+    if (!code || !checkSignValid()) {
+      await getAppId();
+      if (!wxAppId.value) {
+        console.warn('没有获取到微信appId');
+        return;
+      }
+      // 设置签名
+      onWeChatSign('SET', Date.now().toString());
+      goWechatAuth(wxAppId.value, authUrl);
+    } else {
+      weChatCode.value = code;
+      onWeChatSign('REMOVE');
+    }
+  };
+
+  /**
+   * 微信Code操作
+   * @param type 操作类型
+   */
+  const onWeChatCode = (type: 'GET' | 'REMOVE') => {
+    if (type === 'GET') {
+      return weChatCode.value;
+    }
+    weChatCode.value = '';
+  };
+
+  /**
+   * 微信sign操作
+   * @param type 操作类型
+   * @param value 值
+   */
+  const onWeChatSign = (type: 'GET' | 'REMOVE' | 'SET', value?: string) => {
+    if (type === 'GET') {
+      return sessionStorage.getItem(WX_CODE_SIGN);
+    } else if (type === 'REMOVE') {
+      sessionStorage.removeItem(WX_CODE_SIGN);
+    } else if (type === 'SET') {
+      sessionStorage.setItem(WX_CODE_SIGN, value || '');
+    }
+  };
+
+  /**
+   * 获取缓存微信OpenId
+   * @param type 操作类型
+   * @param value 值
+   */
+  const onWeChatCatchOpenId = (
+    type: 'GET' | 'REMOVE' | 'SET',
+    value?: string
+  ) => {
+    if (type === 'GET') {
+      return sessionStorage.getItem(WX_OPEN_ID);
+    } else if (type === 'REMOVE') {
+      sessionStorage.removeItem(WX_OPEN_ID);
+    } else if (type === 'SET') {
+      sessionStorage.setItem(WX_OPEN_ID, value || '');
+    }
+  };
+
+  /**
+   * 获取微信OpenId
+   * @param url 当前页面的url
+   * @param code 微信Code
+   */
+  const getOpenId = async (url?: string, code?: string) => {
+    // 获取缓存OpenId
+    const openId = onWeChatCatchOpenId('GET');
+    if (openId) {
+      return openId;
+    }
+    // debugger
+    // 如果没有code - 去获取code
+    if (!code) {
+      await getWeChatAuthCode(url);
+    }
+
+    if (!code && !weChatCode.value) {
+      console.warn('没有获取到微信Code');
+      return;
+    }
+
+    await getAppId();
+    if (!wxAppId.value) {
+      return;
+    }
+    const { data } = await request.post(
+      '/edu-app/open/paramConfig/wechatOpenId',
+      {
+        data: {
+          code: code || weChatCode.value,
+          appId: wxAppId.value
+        }
+      }
+    );
+    onWeChatCatchOpenId('SET', data);
+    return data;
+  };
+
+  return {
+    getOpenId,
+    getWeChatAuthCode,
+    onWeChatCode,
+    onWeChatSign,
+    onWeChatCatchOpenId
+  };
+}

+ 1 - 1
src/hooks/useWeChatShare/index.ts

@@ -32,7 +32,7 @@ export default function useWeChatShare(
       });
   };
   const setWeChatShare = (data: any) => {
-    console.log(wxChat, 'wxChat');
+    // console.log(wxChat, 'wxChat');
     wxChat.config({
       debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
       appId: data.appId, // 必填,公众号的唯一标识

+ 4 - 4
src/router/router-root.ts

@@ -349,7 +349,7 @@ export default [
     meta: {
       title: '数字化转型问卷统计'
     }
-  },  
+  },
   {
     path: '/statistics-detail',
     name: 'statistics-detail',
@@ -357,7 +357,7 @@ export default [
     meta: {
       title: '数字化转型问卷统计'
     }
-  },    
+  },
   {
     path: '/questionnaire-statistics-new',
     name: 'questionnaire-statistics-new',
@@ -365,7 +365,7 @@ export default [
     meta: {
       title: '数字化转型问卷统计'
     }
-  },  
+  },
   {
     path: '/statistics-detail-new',
     name: 'statistics-detail-new',
@@ -373,7 +373,7 @@ export default [
     meta: {
       title: '数字化转型问卷统计'
     }
-  },   
+  },
   {
     path: '/:pathMatch(.*)*',
     component: () => import('@/views/404'),

+ 1 - 1
src/state.ts

@@ -76,7 +76,7 @@ export const goWechatAuth = (wxAppId: string, urlString?: string) => {
   // 开发环境
   if (import.meta.env.DEV) {
     const replaceUrl =
-      `https://online.lexiaoya.cn/getWxCode?appid=${
+      `https://kt.colexiu.com/getWxCode?appid=${
         wxAppId || 'wx8654c671631cfade'
       }&state=STATE&redirect_uri=` +
       encodeURIComponent(urlString || window.location.href);

+ 1 - 0
src/views/adapay/pay-define/index.tsx

@@ -37,6 +37,7 @@ export default defineComponent({
           merOrderNo: state.orderNo,
           paymentChannel: state.pay_channel, // 支付渠道
           userId: state.userId,
+          wxPubAppId: state.wxAppId,
           code: state.code
         };
         // 判断是否是微信公众号支付

+ 1 - 0
src/views/adapay/pay-result-wechat/index.tsx

@@ -81,6 +81,7 @@ export default defineComponent({
           merOrderNo: state.orderNo,
           paymentChannel: state.pay_channel, // 支付渠道
           userId: state.userId,
+          wxPubAppId: state.wxAppId,
           code: state.code
         };
         //     // 判断是否是微信公众号支付

+ 1 - 0
src/views/adapay/pay-result/index.tsx

@@ -81,6 +81,7 @@ export default defineComponent({
           merOrderNo: state.orderNo,
           paymentChannel: state.pay_channel, // 支付渠道
           userId: state.userId,
+          wxPubAppId: state.wxAppId,
           code: state.code
         };
         //     // 判断是否是微信公众号支付

+ 1 - 0
src/views/adapay/payment/index.tsx

@@ -117,6 +117,7 @@ export default defineComponent({
           merOrderNo: props.paymentConfig.orderNo,
           paymentChannel: payChannel, // 支付渠道
           paymentType: paymentType,
+          wxPubAppId: props.paymentConfig.wxAppId,
           userId: props.paymentConfig.userId
         };
 

+ 5 - 45
src/views/fill-questionnaire/index.tsx

@@ -15,14 +15,11 @@ import {
   Area,
 } from 'vant';
 import { useRoute, useRouter } from 'vue-router';
-import threeMan from './images/update/three-man.png'
+// import threeMan from './images/update/three-man.png'
 import OWxTip from '@/components/m-wx-tip';
-import { browser, getHttpOrigin, getUrlCode, checkPhone } from '@/helpers/utils';
+import { checkPhone } from '@/helpers/utils';
 import qs from 'query-string';
 import request from '@/helpers/request';
-import { goWechatAuth } from '@/state';
-import { useInterval, useIntervalFn } from '@vueuse/core';
-import MMessageTip from '@/components/m-message-tip';
 import MImgCode from '@/components/m-img-code';
 import MSearch from '@/components/m-search';
 import submitBtn from './images/submit_icon.png'
@@ -30,14 +27,15 @@ import signupBtn from './images/signup_icon.png'
 import signSusIcon from './images/sign_icon.png'
 import subSusIcon from './images/subsus_icon.png'
 import doneIcon from './images/done_icon.png'
-import { subscribe } from 'diagnostics_channel';
 import { api_sysAreaQueryAllProvince } from '@/views/school-register/api';
+import useAuthCode from '@/hooks/useAuthCode';
 
 export default defineComponent({
   name: 'fill-questionnaire',
   setup() {
     const router = useRouter();
     const route = useRoute();
+    const authCode = useAuthCode();
 
     const classList: any = [];
     for (let i = 1; i <= 40; i++) {
@@ -208,24 +206,8 @@ export default defineComponent({
       getAreaList();
     });
 
-    const getAppIdAndCode = async (url?: string) => {
-      try {
-        const { data } = await request.get(
-          '/edu-app/open/paramConfig/wechatAppId'
-        );
-        // 判断是否有微信appId
-        if (data) {
-          closeToast();
-          goWechatAuth(data, url);
-        }
-      } catch(e) {
-        //
-        console.log(e)
-      }
-    };
-
     // 如果没有openId,跳转到第一个页面
-    if (!sessionStorage.getItem('active-open-id')) {
+    if (!authCode.onWeChatCatchOpenId("GET")) {
       router.push({
         path: '/intention-questionnaire',
         query: {
@@ -233,28 +215,6 @@ export default defineComponent({
         }
       });
     }
-    if (browser().weixin) {
-      //授权
-      const openId = sessionStorage.getItem('active-open-id');
-      forms.openId = openId;
-      const code = getUrlCode();
-      console.log(code, 'code')
-      if (!code) {
-        const newUrl =
-          getHttpOrigin() +
-          window.location.pathname +
-          '#' +
-          route.path +
-          '?' +
-          qs.stringify({
-            ...route.query
-          });
-        getAppIdAndCode(newUrl);
-        return '';
-      } else {
-        forms.code = code;
-      }
-    }
 
     const onPageShow = () => {
       console.log(forms.isPageHide, 'showInfo');

+ 28 - 97
src/views/intention-questionnaire/index.tsx

@@ -1,51 +1,36 @@
-import {
-  defineComponent,
-  onMounted,
-  onUnmounted,
-  reactive,
-  ref,
-  nextTick
-} from 'vue';
+import { defineComponent, onMounted, onUnmounted, reactive, ref } from 'vue';
 import styles from './index.module.less';
-// import signinTips from './images/signin-tips.png';
-import {
-  Button,
-  CellGroup,
-  Field,
-  Picker,
-  Popup,
-  closeToast,
-  showToast,
-  Loading
-} from 'vant';
+import { closeToast } from 'vant';
 import { useRoute, useRouter } from 'vue-router';
-import threeMan from './images/update/three-man.png';
 import OWxTip from '@/components/m-wx-tip';
-import { browser, getHttpOrigin, getUrlCode } from '@/helpers/utils';
+import { browser, getHttpOrigin } from '@/helpers/utils';
 import qs from 'query-string';
 import request from '@/helpers/request';
-import { goWechatAuth, goWechatAuthTemp } from '@/state';
-import { useInterval, useIntervalFn } from '@vueuse/core';
-import MMessageTip from '@/components/m-message-tip';
-import TCPlayer from 'tcplayer.js';
+import { useInterval } from '@vueuse/core';
 import 'tcplayer.js/dist/tcplayer.css';
 import { _initVideo } from './initVideo';
 import nextBtn from './images/next_btn.png';
 import useWeChatShare from '@/hooks/useWeChatShare';
+import useAuthCode from '@/hooks/useAuthCode';
 
 export default defineComponent({
   name: 'intention-questionnaire',
   setup() {
     const route = useRoute();
-    const shareTitle = route.query.type === 'primarySchoolNo' ? '(小学)关于开展音乐(器乐)课堂数字化转型的调查问卷' :
-    route.query.type === 'juniorSchoolNo' ? '(初中)关于开展音乐(器乐)课堂数字化转型的调查问卷' :
-    '关于开展音乐(器乐)课堂数字化转型的调查问卷'
+    const shareTitle =
+      route.query.type === 'primarySchoolNo'
+        ? '(小学)关于开展音乐(器乐)课堂数字化转型的调查问卷'
+        : route.query.type === 'juniorSchoolNo'
+        ? '(初中)关于开展音乐(器乐)课堂数字化转型的调查问卷'
+        : '关于开展音乐(器乐)课堂数字化转型的调查问卷';
     const weChatShare = useWeChatShare(
       shareTitle,
       '科学的教育改变世界,科技的力量让音乐传播更远,让孩子奏响心中的乐章',
       window.location.origin + '/classroom-app/shareImg/question-share.png'
     );
 
+    const authCode = useAuthCode();
+
     // 页面定时
     const pageTimer = useInterval(1000, { controls: true });
     pageTimer.pause();
@@ -97,29 +82,25 @@ export default defineComponent({
 
     onMounted(async () => {
       forms.meetingType = route.query.type || forms.meetingType;
-      forms.code = route.query.code || forms.code;
-      // nextTick(() => {
-      //   const videoRef: any = document.querySelector('#register-video')
-      //   const videoRef2: any = document.querySelector('#register-video2')
-      //   if(videoRef) {
-      //     const rect = videoRef?.getBoundingClientRect()
-      //     console.log(rect)
-      //     videoRef.style.height = rect.width / 16 * 9 + 'px'
-      //   }
-      //   if(videoRef2) {
-      //     const rect = videoRef2?.getBoundingClientRect()
-      //     console.log(rect)
-      //     videoRef2.style.height = rect.width / 16 * 9 + 'px'
-      //   }
-      // })
       try {
-        // 判断是否获取微信code码
-        if (!forms.code  && browser().weixin) return;
+        const openId = await authCode.getOpenId(
+          getHttpOrigin() +
+            window.location.pathname +
+            '#' +
+            route.path +
+            '?' +
+            qs.stringify({
+              ...route.query
+            })
+        );
+        // 获取微信分享签名
+        weChatShare.getAppSignature();
+        if (!browser().weixin) return;
         const { data } = await request.get(
           '/edu-app/open/meetingQuestionSetting/detail?type=' +
             forms.meetingType +
-            '&weChatCode=' +
-            forms.code
+            '&openId=' +
+            openId
         );
         if (data) {
           forms.contentA = data.contentA || forms.contentA;
@@ -127,8 +108,6 @@ export default defineComponent({
           forms.contentC = data.contentC || forms.contentC;
           forms.contentD = data.contentD || forms.contentD;
           forms.openId = data.openId || forms.openId;
-          sessionStorage.setItem('active-open-id', forms.openId);
-          sessionStorage.removeItem('isWxcode');
         }
         forms.contentShow = true;
       } catch {
@@ -138,53 +117,6 @@ export default defineComponent({
       forms.player1 = _initVideo('one', forms, videoIntervalRef);
       forms.player2 = _initVideo('two', forms, videoIntervalRef2);
     });
-
-    const getAppIdAndCode = async (url?: string) => {
-      try {
-        // const { data } = await request.get(
-        //   '/edu-app/open/paramConfig/wechatAppId'
-        // );
-        // // 判断是否有微信appId
-        // if (data) {
-        //   sessionStorage.setItem('isWxcode', '1');
-        //   closeToast();
-        //   goWechatAuth(data, url);
-        // }
-
-        sessionStorage.setItem('isWxcode', '1');
-        closeToast()
-        goWechatAuthTemp('wx446ef0f1b0ad7338', url)
-      } catch (e) {
-        //
-        console.log(e);
-      }
-    };
-
-    if (browser().weixin) {
-      //授权
-      const openId = sessionStorage.getItem('active-open-id');
-      forms.openId = openId;
-      const code = getUrlCode();
-      const isWxcode = sessionStorage.getItem('isWxcode');
-      if (!code || isWxcode !== '1') {
-        const newUrl =
-          getHttpOrigin() +
-          window.location.pathname +
-          '#' +
-          route.path +
-          '?' +
-          qs.stringify({
-            ...route.query
-          });
-        getAppIdAndCode(newUrl);
-        return '';
-      } else {
-        forms.code = code;
-
-        // 获取微信分享签名
-        weChatShare.getAppSignature()
-      }
-    }
     const nextSkip = () => {
       router.push({
         path: '/fill-questionnaire',
@@ -208,7 +140,6 @@ export default defineComponent({
       forms.isPageHide = true;
     };
     window.addEventListener('pagehide', onPageHide);
-
     onUnmounted(() => {
       window.removeEventListener('pageshow', onPageShow);
       window.removeEventListener('pagehide', onPageHide);

+ 14 - 72
src/views/intention-questionnaire/show.tsx

@@ -1,29 +1,9 @@
 import { defineComponent, onMounted, onUnmounted, reactive, ref, nextTick } from 'vue';
 import styles from './index.module.less';
-// import signinTips from './images/signin-tips.png';
-import {
-  Button,
-  CellGroup,
-  Field,
-  Picker,
-  Popup,
-  closeToast,
-  showToast,
-  Loading
-} from 'vant';
 import { useRoute, useRouter } from 'vue-router';
-import threeMan from './images/update/three-man.png'
-import OWxTip from '@/components/m-wx-tip';
-import { browser, getHttpOrigin, getUrlCode } from '@/helpers/utils';
-import qs from 'query-string';
-import request from '@/helpers/request';
-import { goWechatAuth } from '@/state';
 import { useInterval, useIntervalFn } from '@vueuse/core';
-import MMessageTip from '@/components/m-message-tip';
-import TCPlayer from 'tcplayer.js';
 import 'tcplayer.js/dist/tcplayer.css';
 import { _initVideo } from './initVideo'
-import nextBtn from './images/next_btn.png'
 
 export default defineComponent({
   name: 'intention-questionnaire-show',
@@ -111,53 +91,15 @@ export default defineComponent({
       window.addEventListener('message', getMessage)
     });
 
-    const getAppIdAndCode = async (url?: string) => {
-      try {
-        const { data } = await request.get(
-          '/edu-app/open/paramConfig/wechatAppId'
-        );
-        // 判断是否有微信appId
-        if (data) {
-          closeToast();
-          goWechatAuth(data, url);
-        }
-      } catch(e) {
-        //
-        console.log(e)
-      }
-    };
-
-    if (browser().weixin) {
-      //授权
-      const openId = sessionStorage.getItem('active-open-id');
-      forms.openId = openId;
-      const code = getUrlCode();
-      console.log(code, 'code')
-      if (!code) {
-        const newUrl =
-          getHttpOrigin() +
-          window.location.pathname +
-          '#' +
-          route.path +
-          '?' +
-          qs.stringify({
-            ...route.query
-          });
-        getAppIdAndCode(newUrl);
-        return '';
-      } else {
-        forms.code = code;
-      }
-    }
-    const nextSkip = () => {
-      router.push({
-        path: '/fill-questionnaire',
-        query: {
-          openId: forms.openId, //
-          meetingType: forms.meetingType
-        }
-      });
-    };
+    // const nextSkip = () => {
+    //   router.push({
+    //     path: '/fill-questionnaire',
+    //     query: {
+    //       openId: forms.openId, //
+    //       meetingType: forms.meetingType
+    //     }
+    //   });
+    // };
     const onPageShow = () => {
       console.log(forms.isPageHide, 'showInfo');
       if (forms.isPageHide) {
@@ -194,16 +136,16 @@ export default defineComponent({
                     playsinline={true}
                     poster={forms.coverImg}
                     preload="auto"></video>
-                </div> 
+                </div>
               </div>
             </div>
           </div>
           <div class={styles.contentBody} v-html={forms.contentB}></div>
           <div class={styles.contentBody} v-html={forms.contentC}></div>
           <div class={styles.contentBody}>
-            <div class={styles.cbTitle}>四、什么是器乐数字 Ai<span>(详见视频介绍)</span></div>   
+            <div class={styles.cbTitle}>四、什么是器乐数字 Ai<span>(详见视频介绍)</span></div>
             <div class={styles.videoBoxCon}>
-              <div class={styles.videoBox}>       
+              <div class={styles.videoBox}>
                 <div class={[styles['video-content']]}>
                   <video
                     id="register-video2"
@@ -212,10 +154,10 @@ export default defineComponent({
                     playsinline={true}
                     poster={forms.coverImg2}
                     preload="auto"></video>
-                </div>  
+                </div>
               </div>
             </div>
-          </div>          
+          </div>
           <div class={styles.contentBody} v-html={forms.contentD}></div>
         </div>
 

+ 57 - 46
src/views/pre-register-active/index.tsx

@@ -16,9 +16,9 @@ import OWxTip from '@/components/m-wx-tip';
 import { browser, getHttpOrigin, getUrlCode } from '@/helpers/utils';
 import qs from 'query-string';
 import request from '@/helpers/request';
-import { goWechatAuth } from '@/state';
 import { useInterval, useIntervalFn } from '@vueuse/core';
 import MMessageTip from '@/components/m-message-tip';
+import useAuthCode from '@/hooks/useAuthCode';
 
 const classList: any = [];
 for (let i = 1; i <= 40; i++) {
@@ -73,6 +73,7 @@ export default defineComponent({
     pageTimer.pause();
     const router = useRouter();
     const route = useRoute();
+    const authCode = useAuthCode();
     const forms = reactive({
       loading: true,
       schoolId: route.query.id,
@@ -192,6 +193,16 @@ export default defineComponent({
     };
 
     onMounted(async () => {
+      forms.openId = await authCode.getOpenId(
+        getHttpOrigin() +
+          window.location.pathname +
+          '#' +
+          route.path +
+          '?' +
+          qs.stringify({
+            ...route.query
+          })
+      );
       try {
         if (!forms.schoolId) {
           showToast('信息获取失败,请联系老师');
@@ -261,7 +272,7 @@ export default defineComponent({
           forms.classList = classList;
         }
         // 判断是否获取微信code码
-        if (!forms.code) return;
+        // if (!forms.code) return;
 
         // // 乐团注册
         // if (data.status !== 'PRE_REGISTER') {
@@ -295,7 +306,7 @@ export default defineComponent({
           {
             data: {
               schoolId: forms.schoolId,
-              code: forms.code,
+              // code: forms.code,
               openId: forms.openId
             }
           }
@@ -309,10 +320,10 @@ export default defineComponent({
         forms.videoBrowsePoint = recordObj.videoBrowsePoint;
         forms.id = recordObj.id;
 
-        sessionStorage.setItem('active-open-id', recordObj.openId);
-        sessionStorage.removeItem('isWxcode');
+        // sessionStorage.setItem('active-open-id', recordObj.openId);
+        // sessionStorage.removeItem('isWxcode');
 
-        console.log(forms, 'forms')
+        // console.log(forms, 'forms')
 
         pageTimer.resume();
         // 间隔10秒更新停留时间
@@ -327,46 +338,46 @@ export default defineComponent({
       }
     });
 
-    const getAppIdAndCode = async (url?: string) => {
-      try {
-        const { data } = await request.get(
-          '/edu-app/open/paramConfig/wechatAppId'
-        );
-        // 判断是否有微信appId
-        if (data) {
-          sessionStorage.setItem('isWxcode', '1');
-          closeToast();
-          goWechatAuth(data, url);
-        }
-      } catch(e) {
-        //
-        console.log(e)
-      }
-    };
-
-    if (browser().weixin) {
-      //授权
-      const openId = sessionStorage.getItem('active-open-id');
-      forms.openId = openId;
-      const code = getUrlCode();
-      console.log(code, 'code')
-      const isWxcode = sessionStorage.getItem('isWxcode');
-      if (!code || isWxcode !== '1') {
-        const newUrl =
-          getHttpOrigin() +
-          window.location.pathname +
-          '#' +
-          route.path +
-          '?' +
-          qs.stringify({
-            ...route.query
-          });
-        getAppIdAndCode(newUrl);
-        return '';
-      } else {
-        forms.code = code;
-      }
-    }
+    // const getAppIdAndCode = async (url?: string) => {
+    //   try {
+    //     const { data } = await request.get(
+    //       '/edu-app/open/paramConfig/wechatAppId'
+    //     );
+    //     // 判断是否有微信appId
+    //     if (data) {
+    //       sessionStorage.setItem('isWxcode', '1');
+    //       closeToast();
+    //       goWechatAuth(data, url);
+    //     }
+    //   } catch(e) {
+    //     //
+    //     console.log(e)
+    //   }
+    // };
+
+    // if (browser().weixin) {
+    //   //授权
+    //   const openId = sessionStorage.getItem('active-open-id');
+    //   forms.openId = openId;
+    //   const code = getUrlCode();
+    //   console.log(code, 'code')
+    //   const isWxcode = sessionStorage.getItem('isWxcode');
+    //   if (!code || isWxcode !== '1') {
+    //     const newUrl =
+    //       getHttpOrigin() +
+    //       window.location.pathname +
+    //       '#' +
+    //       route.path +
+    //       '?' +
+    //       qs.stringify({
+    //         ...route.query
+    //       });
+    //     getAppIdAndCode(newUrl);
+    //     return '';
+    //   } else {
+    //     forms.code = code;
+    //   }
+    // }
 
     const onPageShow = () => {
       console.log(forms.isPageHide, 'showInfo');

+ 58 - 45
src/views/student-register/index-apply.tsx

@@ -88,6 +88,7 @@ import giftCard2Icon from './images/gift_card2.png';
 import giftZsIcon from './images/gift_zs_icon.png';
 import selectZsTip from './images/select_zs_tip.png';
 import useWeChatShare from '@/hooks/useWeChatShare';
+import useAuthCode from '@/hooks/useAuthCode';
 
 const classList: any = [];
 for (let i = 1; i <= 40; i++) {
@@ -142,6 +143,7 @@ export default defineComponent({
       '智慧旋律,告别枯燥练习。科技的光芒让音乐跨越山海,点亮每一颗童心',
       window.location.origin + '/classroom-app/shareImg/instrument-share.png'
     );
+    const authCode = useAuthCode();
 
     const route = useRoute();
     const studentRegisterStore = useStudentRegisterStore();
@@ -1297,48 +1299,49 @@ export default defineComponent({
       }
     };
 
-    const getAppIdAndCode = async (url?: string) => {
-      try {
-        // const { data } = await request.get(
-        //   '/edu-app/open/paramConfig/wechatAppId'
-        // );
-        // // 判断是否有微信appId
-        // if (data) {
-        //   closeToast();
-        //   goWechatAuth(data, url);
-        // }
-        sessionStorage.setItem('isWxcode', '1');
-        closeToast();
-        goWechatAuthTemp('wx446ef0f1b0ad7338', url)
-      } catch {
-        //
-      }
-    };
-
-    if (browser().weixin) {
-      //授权
-      const openId = sessionStorage.getItem('active-open-id');
-      forms.openId = openId;
-      const code = getUrlCode();
-      const isWxcode = sessionStorage.getItem('isWxcode');
-      if (!code || isWxcode !== '1') {
-        const newUrl =
-          getHttpOrigin() +
-          window.location.pathname +
-          '#' +
-          route.path +
-          '?' +
-          qs.stringify({
-            ...route.query
-          });
-        getAppIdAndCode(newUrl);
-        return '';
-      } else {
-        forms.code = code;
-      }
-      // 获取微信分享签名
-      weChatShare.getAppSignature();
-    }
+    // const getAppIdAndCode = async (url?: string) => {
+    //   try {
+    //     // const { data } = await request.get(
+    //     //   '/edu-app/open/paramConfig/wechatAppId'
+    //     // );
+    //     // // 判断是否有微信appId
+    //     // if (data) {
+    //     //   closeToast();
+    //     //   goWechatAuth(data, url);
+    //     // }
+    //     sessionStorage.setItem('isWxcode', '1');
+    //     closeToast();
+    //     goWechatAuthTemp('wxccc2efd2678adbe3', url)
+    //   } catch {
+    //     //
+    //   }
+    // };
+
+    // if (browser().weixin) {
+    //   //授权
+    //   const openId = sessionStorage.getItem('active-open-id');
+    //   forms.openId = openId;
+    //   const code = getUrlCode();
+    //   const isWxcode = sessionStorage.getItem('isWxcode');
+    //   if (!code || isWxcode !== '1') {
+    //     const newUrl =
+    //       getHttpOrigin() +
+    //       window.location.pathname +
+    //       '#' +
+    //       route.path +
+    //       '?' +
+    //       qs.stringify({
+    //         ...route.query
+    //       });
+    //     getAppIdAndCode(newUrl);
+    //     return '';
+    //   } else {
+    //     forms.code = code;
+    //     // 获取微信分享签名
+    //     weChatShare.getAppSignature()
+    //   }
+
+    // }
 
     const formatTimerTo = (num: number): string => {
       if (num > 9) {
@@ -1350,13 +1353,12 @@ export default defineComponent({
 
     const pagePointInit = async () => {
       try {
-        // 判断是否获取微信code码
-        if (!forms.code) return;
+        if (!forms.openId) return;
         const { data } = await request.post(
           '/edu-app/open/studentRegisterPointRecord/save',
           {
             data: {
-              code: forms.code,
+              // code: forms.code,
               schoolId: forms.schoolId,
               openId: forms.openId
             }
@@ -1436,6 +1438,17 @@ export default defineComponent({
     };
 
     onMounted(async () => {
+      const openId = await authCode.getOpenId(
+        getHttpOrigin() +
+          window.location.pathname +
+          '#' +
+          route.path +
+          '?' +
+          qs.stringify({
+            ...route.query
+          })
+      );
+      forms.openId = openId;
       try {
         // 获取支付类型
         let expireDay = null;

+ 60 - 42
src/views/student-register/index.tsx

@@ -39,7 +39,13 @@ import { useRoute, useRouter } from 'vue-router';
 import { useStudentRegisterStore } from '@/store/modules/student-register-store';
 import request from '@/helpers/request';
 import requestStudent from './request';
-import { browser, checkPhone, getHttpOrigin, getUrlCode, moneyFormat } from '@/helpers/utils';
+import {
+  browser,
+  checkPhone,
+  getHttpOrigin,
+  getUrlCode,
+  moneyFormat
+} from '@/helpers/utils';
 import deepClone from '@/helpers/deep-clone';
 import OWxTip from '@/components/m-wx-tip';
 import MDialog from '@/components/m-dialog';
@@ -70,6 +76,7 @@ import UserAuth from './component/user-auth';
 import MMessageTip from '@/components/m-message-tip';
 import SelectStudent from './modal/select-student';
 import { Timer } from './timer';
+import useAuthCode from '@/hooks/useAuthCode';
 
 const classList: any = [];
 for (let i = 1; i <= 40; i++) {
@@ -128,6 +135,7 @@ export default defineComponent({
     const route = useRoute();
     const pageVisibility = usePageVisibility();
     const studentRegisterStore = useStudentRegisterStore();
+    const authCode = useAuthCode();
     const router = useRouter();
     // 初始化学校编号
     studentRegisterStore.setShoolId(route.query.sId as any);
@@ -1259,42 +1267,42 @@ export default defineComponent({
       }
     };
 
-    const getAppIdAndCode = async (url?: string) => {
-      try {
-        const { data } = await request.get(
-          '/edu-app/open/paramConfig/wechatAppId'
-        );
-        // 判断是否有微信appId
-        if (data) {
-          closeToast();
-          goWechatAuth(data, url);
-        }
-      } catch {
-        //
-      }
-    };
-
-    if (browser().weixin) {
-      //授权
-      const openId = sessionStorage.getItem('active-open-id');
-      forms.openId = openId;
-      const code = getUrlCode();
-      if (!code) {
-        const newUrl =
-          getHttpOrigin() +
-          window.location.pathname +
-          '#' +
-          route.path +
-          '?' +
-          qs.stringify({
-            ...route.query
-          });
-        getAppIdAndCode(newUrl);
-        return '';
-      } else {
-        forms.code = code;
-      }
-    }
+    // const getAppIdAndCode = async (url?: string) => {
+    //   try {
+    //     const { data } = await request.get(
+    //       '/edu-app/open/paramConfig/wechatAppId'
+    //     );
+    //     // 判断是否有微信appId
+    //     if (data) {
+    //       closeToast();
+    //       goWechatAuth(data, url);
+    //     }
+    //   } catch {
+    //     //
+    //   }
+    // };
+
+    // if (browser().weixin) {
+    //   //授权
+    //   const openId = sessionStorage.getItem('active-open-id');
+    //   forms.openId = openId;
+    //   const code = getUrlCode();
+    //   if (!code) {
+    //     const newUrl =
+    //       getHttpOrigin() +
+    //       window.location.pathname +
+    //       '#' +
+    //       route.path +
+    //       '?' +
+    //       qs.stringify({
+    //         ...route.query
+    //       });
+    //     getAppIdAndCode(newUrl);
+    //     return '';
+    //   } else {
+    //     forms.code = code;
+    //   }
+    // }
 
     const formatTimerTo = (num: number): string => {
       if (num > 9) {
@@ -1521,13 +1529,12 @@ export default defineComponent({
 
     const pagePointInit = async () => {
       try {
-        // 判断是否获取微信code码
-        if (!forms.code) return;
+        if (!forms.openId) return;
         const { data } = await request.post(
           '/edu-app/open/studentRegisterPointRecord/save',
           {
             data: {
-              code: forms.code,
+              // code: forms.code,
               schoolId: forms.schoolId,
               openId: forms.openId
             }
@@ -1544,7 +1551,7 @@ export default defineComponent({
           videoForms.player.currentTime(data.videoBrowsePoint || 0);
         }
 
-        sessionStorage.setItem('active-open-id', data.openId);
+        // sessionStorage.setItem('active-open-id', data.openId);
 
         // 间隔多少时间同步数据
         forms.intervalFnRef = useIntervalFn(async () => {
@@ -1580,6 +1587,17 @@ export default defineComponent({
     };
 
     onMounted(async () => {
+      const openId = await authCode.getOpenId(
+        getHttpOrigin() +
+          window.location.pathname +
+          '#' +
+          route.path +
+          '?' +
+          qs.stringify({
+            ...route.query
+          })
+      );
+      forms.openId = openId;
       try {
         // 获取支付类型
         let expireDay = null;
@@ -1890,7 +1908,7 @@ export default defineComponent({
                   forms.classStatus = true;
                 }}
               />
-              {(forms.giftVipDay > 0 && forms.registerDetails.giftVipFlag) ? (
+              {forms.giftVipDay > 0 && forms.registerDetails.giftVipFlag ? (
                 <div class={styles.memberNumer}>
                   <img src={iconGift} class={styles.iconGift} />