Browse Source

报名二维码

lex 1 year ago
parent
commit
fb9114cf79

+ 12 - 1
src/components/m-wx-tip/index.module.less

@@ -22,6 +22,8 @@
   background-size: cover;
   border-radius: 20px;
   overflow: hidden;
+  padding-bottom: 16px;
+  text-align: center;
 
   .title1 {
     padding-top: 57px;
@@ -33,10 +35,19 @@
 
   .popupTips {
     padding-top: 16px;
-    padding-bottom: 32px;
+    padding-bottom: 16px;
     text-align: center;
     font-size: 15px;
     color: #777777;
     line-height: 21px;
   }
+
+  .button {
+    padding: 0 32px;
+    height: 30px;
+    font-size: 16px;
+    font-size: 14px;
+    color: #777;
+    border-color: #E7E7E7;
+  }
 }

+ 20 - 2
src/components/m-wx-tip/index.tsx

@@ -1,4 +1,4 @@
-import { Popup } from 'vant';
+import { Button, Popup } from 'vant';
 import { defineComponent, onMounted, ref, watch } from 'vue';
 import styles from './index.module.less';
 import { browser } from '@/helpers/utils';
@@ -18,9 +18,18 @@ export default defineComponent({
     message: {
       type: String,
       default: '请使用微信打开'
+    },
+    showButton: {
+      type: Boolean,
+      default: false
+    },
+    buttonText: {
+      type: String,
+      default: '确定'
     }
   },
-  setup(props) {
+  emits: ['confirm'],
+  setup(props, { emit }) {
     const showPopup = ref(false);
     onMounted(() => {
       if (!browser().weixin || props.show) {
@@ -48,6 +57,15 @@ export default defineComponent({
           <div class={styles.popupContainer}>
             <p class={styles.title1}>{props.title}</p>
             <p class={styles.popupTips}>{props.message}</p>
+
+            {props.showButton && (
+              <Button
+                round
+                class={styles.button}
+                onClick={() => emit('confirm')}>
+                {props.buttonText}
+              </Button>
+            )}
           </div>
         </Popup>
       </>

+ 6 - 1
src/helpers/request.ts

@@ -83,7 +83,12 @@ request.interceptors.response.use(
     }
     const data = await res.clone().json();
     // 999 为特殊code码
-    if (data.code !== 200 && data.errCode !== 0 && data.code !== 999) {
+    const otherCode = [999, 5435, 5436];
+    if (
+      data.code !== 200 &&
+      data.errCode !== 0 &&
+      !otherCode.includes(data.code)
+    ) {
       let msg = data.msg || data.message || '处理失败,请重试';
       if (initRequest) {
         if (data.code === 403 || data.code === 5000) {

+ 50 - 14
src/views/student-register/index.tsx

@@ -46,6 +46,7 @@ export default defineComponent({
       schoolType: '', // 学校类型
       gradeYear: '', // 学制
       bugGoods: false, // 是否购买AI
+      registerType: '', // 报名类型
       submitLoading: false,
       dialogStatus: false,
       dialogMessage: '',
@@ -53,6 +54,7 @@ export default defineComponent({
       dialogConfig: {} as any,
       showMore: true,
       showTips: false,
+      showButton: false,
       showMessage: '请使用微信打开'
     });
 
@@ -116,10 +118,12 @@ export default defineComponent({
         forms.bugGoods = data.bugGoods;
         forms.schoolType = data.schoolType;
         forms.gradeYear = data.gradeYear;
+        forms.registerType = data.registerType;
         if (browser().weixin) {
           if (data.registerType !== 'BUG_GOODS') {
             forms.showTips = true;
             forms.showMessage = '二维码已经失效,详情请咨询乐团老师';
+            forms.showButton = false;
           }
         }
       } catch {}
@@ -194,6 +198,7 @@ export default defineComponent({
         const params: any[] = [];
         vipList.forEach((vip: any) => {
           params.push({
+            giftVipDay: vip.membershipDays,
             goodsId: vip.goodsId,
             goodsNum: 1,
             goodsType: vip.goodsType,
@@ -212,13 +217,13 @@ export default defineComponent({
             goodsSkuId: goods.productSkuId
           });
         });
-
         // 创建订单
-        const { data } = await request.post(
+        const result = await request.post(
           '/edu-app/userPaymentOrder/executeOrder',
           {
             hideLoading: false,
             data: {
+              registerType: forms.registerType,
               paymentType: forms.paymentType,
               bizId: forms.schoolId, // 乐团编号
               orderType: 'SCHOOL_REGISTER',
@@ -231,17 +236,29 @@ export default defineComponent({
           }
         );
 
-        router.push({
-          path: '/order-detail',
-          query: {
-            pm: 1, // h5乐团报名
-            config: JSON.stringify({
-              ...data.paymentConfig,
-              paymentType: data.paymentType
-            }),
-            orderNo: data.orderNo
-          }
-        });
+        if (result.code === 5436) {
+          forms.showTips = true;
+          forms.showMessage = '二维码已经失效,详情请咨询乐团老师';
+          forms.showButton = false;
+          forms.popupRegister = false;
+        } else if (result.code === 5436) {
+          forms.showTips = true;
+          forms.showMessage = result.message;
+          forms.showButton = true;
+          forms.popupRegister = false;
+        } else {
+          router.push({
+            path: '/order-detail',
+            query: {
+              pm: 1, // h5乐团报名
+              config: JSON.stringify({
+                ...result.data.paymentConfig,
+                paymentType: result.data.paymentType
+              }),
+              orderNo: result.data.orderNo
+            }
+          });
+        }
       } finally {
         forms.submitLoading = false;
       }
@@ -542,6 +559,19 @@ export default defineComponent({
             gradeYear={forms.gradeYear}
             onClose={() => (forms.popupRegister = false)}
             onSubmit={onRegisterSubmit}
+            onError={(val: any) => {
+              if (val.code === 5436) {
+                forms.showTips = true;
+                forms.showMessage = '二维码已经失效,详情请咨询乐团老师';
+                forms.showButton = false;
+                forms.popupRegister = false;
+              } else if (val.code === 5436) {
+                forms.showTips = true;
+                forms.showMessage = val.message;
+                forms.showButton = true;
+                forms.popupRegister = false;
+              }
+            }}
           />
         </Popup>
 
@@ -569,7 +599,13 @@ export default defineComponent({
         />
 
         {/* 是否在微信中打开 */}
-        <OWxTip show={forms.showTips} message={forms.showMessage} />
+        <OWxTip
+          show={forms.showTips}
+          message={forms.showMessage}
+          showButton={forms.showButton}
+          buttonText="刷新"
+          onConfirm={() => window.location.reload()}
+        />
       </div>
     );
   }

+ 29 - 8
src/views/student-register/register-member/index.tsx

@@ -88,6 +88,7 @@ export default defineComponent({
       schoolType: null,
       giftVipDay: null,
       showTips: false,
+      showButton: false,
       showMessage: '请使用微信打开'
     });
     const studentInfo = reactive({
@@ -98,7 +99,9 @@ export default defineComponent({
         nickname: '',
         currentGradeNum: '',
         currentClass: '',
-        gender: 1
+        gender: 1,
+        registerType: '', // 报名类型
+        giftVipDay: 0 // 赠送会员天数
       },
       grant_type: 'password',
       loginType: 'SMS',
@@ -141,7 +144,7 @@ export default defineComponent({
           }
         });
         const { extra, ...res } = studentInfo;
-        const { data } = await request.post('/edu-app/userlogin', {
+        const result = await request.post('/edu-app/userlogin', {
           hideLoading: false,
           requestType: 'form',
           data: {
@@ -152,11 +155,20 @@ export default defineComponent({
             })
           }
         });
-
-        setTimeout(() => {
-          showToast('报名成功');
-          router.push('/download');
-        }, 100);
+        if (result.code === 5436) {
+          forms.showTips = true;
+          forms.showMessage = '二维码已经失效,详情请咨询乐团老师';
+          forms.showButton = false;
+        } else if (result.code === 5435) {
+          forms.showTips = true;
+          forms.showMessage = result.message;
+          forms.showButton = true;
+        } else {
+          setTimeout(() => {
+            showToast('报名成功');
+            router.push('/download');
+          }, 100);
+        }
       } catch {
       } finally {
         forms.loading = false;
@@ -195,10 +207,13 @@ export default defineComponent({
         forms.giftVipDay = data.giftVipDay;
         forms.schoolType = data.schoolType;
         forms.gradeYear = data.gradeYear;
+        studentInfo.extra.giftVipDay = data.giftVipDay;
+        studentInfo.extra.registerType = data.registerType;
         if (browser().weixin) {
           if (data.registerType !== 'GIFT_VIP_DAY') {
             forms.showTips = true;
             forms.showMessage = '二维码已经失效,详情请咨询乐团老师';
+            forms.showButton = false;
           }
         }
       } catch {}
@@ -413,7 +428,13 @@ export default defineComponent({
           />
         </Popup>
         {/* 是否在微信中打开 */}
-        <OWxTip show={forms.showTips} message={forms.showMessage} />
+        <OWxTip
+          show={forms.showTips}
+          message={forms.showMessage}
+          showButton={forms.showButton}
+          buttonText="刷新"
+          onConfirm={() => window.location.reload()}
+        />
       </div>
     );
   }

+ 16 - 9
src/views/student-register/register-modal/index.tsx

@@ -41,7 +41,7 @@ export default defineComponent({
       default: ''
     }
   },
-  emits: ['close', 'submit'],
+  emits: ['close', 'submit', 'error'],
   setup(props, { emit }) {
     const countDownRef = ref();
     const gradeList = computed(() => {
@@ -128,7 +128,7 @@ export default defineComponent({
         if (checkForm()) return;
         forms.loading = true;
         const { extra, ...res } = studentInfo;
-        const { data } = await request.post('/edu-app/userlogin', {
+        const result = await request.post('/edu-app/userlogin', {
           hideLoading: false,
           requestType: 'form',
           data: {
@@ -139,14 +139,21 @@ export default defineComponent({
             })
           }
         });
+        if (result.code !== 200) {
+          emit('close');
+          emit('error', {
+            code: result.code,
+            message: result.message
+          });
+        } else {
+          studentRegisterStore.setToken(
+            result.data.token_type + ' ' + result.data.access_token
+          );
+          setLoginInit();
 
-        studentRegisterStore.setToken(
-          data.token_type + ' ' + data.access_token
-        );
-        setLoginInit();
-
-        emit('close');
-        emit('submit');
+          emit('close');
+          emit('submit');
+        }
       } catch {
       } finally {
         forms.loading = false;