lex 1 年之前
父节点
当前提交
2c30e537a7
共有 2 个文件被更改,包括 167 次插入31 次删除
  1. 154 18
      src/views/student-register/index.tsx
  2. 13 13
      src/views/student-register/request.ts

+ 154 - 18
src/views/student-register/index.tsx

@@ -35,6 +35,7 @@ import MSticky from '@/components/m-sticky';
 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, getUrlCode, moneyFormat } from '@/helpers/utils';
 import deepClone from '@/helpers/deep-clone';
 import OWxTip from '@/components/m-wx-tip';
@@ -144,6 +145,10 @@ export default defineComponent({
       loading: false,
       dialogStatus: false,
       dialogMessage: '',
+      confirmButtonText: '确定',
+      cancelButtonText: '取消',
+      messageAlign: 'center' as 'left' | 'center' | 'right',
+
       dialogConfirmStatus: false,
       contract_sign: false, // 是否实名认证
       countDownTimePay: 60 * 1000,
@@ -591,34 +596,119 @@ export default defineComponent({
     const paymentOrderUnpaid = async () => {
       let result = false;
       try {
-        const { data } = await request.get('/edu-app/userPaymentOrder/unpaid');
+        const { data } = await request.get(
+          '/edu-app/userPaymentOrder/schoolRegisterOrder?schoolId=' +
+            forms.schoolId
+        );
         // 判断是否有待支付订单
 
-        if (!data.id) return false;
+        if (data && data.length > 0) {
+          let isPadding = false; // 是否有待支付订单
+          let paddingConfig = {} as any;
+          let isFinal = false; // 是否有完成订单
+          let finalConfig = {} as any;
+          data.forEach((element: any) => {
+            // 判断是否待支付
+            if (element.status === 'PAYING' || element.status === 'WAIT_PAY') {
+              isPadding = true;
+              paddingConfig = element.paymentConfig;
+            }
+
+            if (
+              element.status === 'PAID' ||
+              element.status === 'PART_REFUNDED' ||
+              element.status === 'REFUNDED'
+            ) {
+              isFinal = true;
+              finalConfig = element.paymentConfig;
+            }
+          });
+
+          // 判断是否有完成订单 并且选择 自备
+          if (isFinal && forms.joinType === 'tradition') {
+            setTimeout(() => {
+              showToast('您已通过数字化方式报名成功');
+            }, 100);
+            return true;
+          }
+
+          // 提交报名信息时,判断该手机号是否存在待支付订单,若存则判断本次提交的报名方式,若本次提交的是团购则提示【您有待支付的报名订单,是否继续支付   重新下单/继续支付】,点击重新下单时,关闭老订单,创建新订单;若本次提交的是自备,则提示   【您有数字化方式报名的待支付订单,请关闭订单后重新报名   取消/关闭】取消则停留在当前界面,关闭则关闭订单,并停留在当前界面,用户需要再次点击报名按钮提交信息
+          if (isPadding && forms.joinType === 'tradition') {
+            forms.dialogStatus = true;
+            forms.dialogMessage =
+              '您有数字化方式报名的待支付订单,请关闭订单后重新报名';
+            forms.cancelButtonText = '取消';
+            forms.confirmButtonText = '关闭';
+            forms.dialogConfig = paddingConfig;
+            forms.messageAlign = 'left';
+            return true;
+          }
+          if (isPadding && forms.joinType === 'digitalize') {
+            forms.dialogStatus = true;
+            forms.dialogMessage = '您有待支付的报名订单,是否继续支付';
+            forms.cancelButtonText = '重新下单';
+            forms.confirmButtonText = '继续支付';
+            forms.dialogConfig = paddingConfig;
+            forms.messageAlign = 'center';
+            return true;
+          }
 
-        // 判断是否可以取消订单
-        if (data.cancelPayment) {
-          await request.post(
-            '/edu-app/userPaymentOrder/cancelPayment/' + data.orderNo
-          );
           return false;
         } else {
-          forms.countDownTime = data.cancelTimes;
-          countDown.reset(Number(data.cancelTimes));
-          countDown.start();
-          forms.dialogMessage = `有待支付订单,请在${Math.ceil(
-            countDown.current.value.total / 1000
-          )}s后重试`;
-          forms.dialogStatus = true;
-          forms.dialogConfig = data;
-          result = true;
+          return false;
         }
+
+        // if (!data.id) return false;
+
+        // // 判断是否可以取消订单
+        // if (data.cancelPayment) {
+        //   await request.post(
+        //     '/edu-app/userPaymentOrder/cancelPayment/' + data.orderNo
+        //   );
+        //   return false;
+        // } else {
+        //   forms.countDownTime = data.cancelTimes;
+        //   countDown.reset(Number(data.cancelTimes));
+        //   countDown.start();
+        //   forms.dialogMessage = `有待支付订单,请在${Math.ceil(
+        //     countDown.current.value.total / 1000
+        //   )}s后重试`;
+        //   forms.dialogStatus = true;
+        //   forms.dialogConfig = data;
+        //   result = true;
+        // }
+        // return true;
       } catch {
         //
       }
       return result;
     };
 
+    // 重新下单
+    const resetOrderPayment = async () => {
+      try {
+        const orderNo = forms.dialogConfig?.orderNo;
+        if (!orderNo) return;
+        await request.post(
+          '/edu-app/userPaymentOrder/cancelPayment/' + orderNo
+        );
+
+        await onRegisterSubmit();
+      } catch {
+        //
+      }
+    };
+    // 取消订单
+    const cancelPaymentOrder = async () => {
+      try {
+        const orderNo = forms.dialogConfig?.orderNo;
+        if (!orderNo) return;
+        await request.post(
+          '/edu-app/userPaymentOrder/cancelPayment/' + orderNo
+        );
+      } catch {}
+    };
+
     const paymentContinue = async () => {
       try {
         const vipList = studentRegisterStore.getVip;
@@ -853,7 +943,7 @@ export default defineComponent({
       schoolId?: string
     ) => {
       try {
-        const { data } = await request.post(
+        const { data } = await requestStudent.post(
           '/edu-app/open/studentRegisterPointRecord/update',
           {
             data: {
@@ -1468,7 +1558,7 @@ export default defineComponent({
           }}
         />
 
-        <MDialog
+        {/* <MDialog
           title="提示"
           v-model:show={forms.dialogStatus}
           message={forms.dialogMessage}
@@ -1489,6 +1579,52 @@ export default defineComponent({
               applyOver();
             }
           }}
+        /> */}
+
+        <MDialog
+          title="提示"
+          v-model:show={forms.dialogStatus}
+          message={forms.dialogMessage}
+          allowHtml={true}
+          primaryColor="#FF8057"
+          showCancelButton={true}
+          messageAlign={forms.messageAlign}
+          confirmButtonText={forms.confirmButtonText}
+          cancelButtonText={forms.cancelButtonText}
+          onConfirm={async () => {
+            if (forms.joinType === 'tradition') {
+              //
+              await cancelPaymentOrder();
+              //取消支付,判断是否有结束时间,是否已经结束
+              if (forms.registerExpireTime && forms.activeOverStatus) {
+                applyOver();
+              }
+            }
+
+            if (forms.joinType === 'digitalize') {
+              // 继续支付
+              const paymentConfig = forms.dialogConfig;
+              state.config = paymentConfig?.paymentConfig;
+              state.orderNo = paymentConfig?.orderNo;
+              await lastSubmit();
+            }
+          }}
+          onCancel={(val: any) => {
+            // countDown.pause();
+
+            if (forms.joinType === 'tradition') {
+              forms.dialogStatus = false;
+
+              //取消支付,判断是否有结束时间,是否已经结束
+              if (forms.registerExpireTime && forms.activeOverStatus) {
+                applyOver();
+              }
+            }
+            if (forms.joinType === 'digitalize') {
+              // 重新下单 - 先关闭订单
+              resetOrderPayment();
+            }
+          }}
         />
 
         <Popup

+ 13 - 13
src/views/student-register/request.ts

@@ -26,14 +26,14 @@ let toast: ReturnType<typeof setTimeout>;
 
 request.interceptors.request.use(
   (url, options: any) => {
-    if (!options.hideLoading) {
-      clearTimeout(toast);
-      showLoadingToast({
-        message: '加载中...',
-        forbidClick: true,
-        duration: 0
-      });
-    }
+    // if (!options.hideLoading) {
+    //   clearTimeout(toast);
+    //   showLoadingToast({
+    //     message: '加载中...',
+    //     forbidClick: true,
+    //     duration: 0
+    //   });
+    // }
 
     initRequest = options.initRequest || false;
     const Authorization = storage.get(ACCESS_TOKEN) || '';
@@ -68,11 +68,11 @@ request.interceptors.request.use(
 
 request.interceptors.response.use(
   async res => {
-    toast = setTimeout(() => {
-      closeToast();
-    }, 100);
+    // toast = setTimeout(() => {
+    //   closeToast();
+    // }, 100);
     if (res.status > 299 || res.status < 200) {
-      clearTimeout(toast);
+      // clearTimeout(toast);
       const msg = '服务器错误,状态码' + res.status;
       showToast(msg);
       throw new Error(msg);
@@ -82,7 +82,7 @@ request.interceptors.response.use(
     if (data.code !== 200 && data.errCode !== 0 && data.code !== 999) {
       let msg = data.msg || data.message || '处理失败,请重试';
       if (!(data.code === 403 || data.code === 5000)) {
-        clearTimeout(toast);
+        // clearTimeout(toast);
         showToast(msg);
       }
       if (data.code === 5000 || data.code === 403) {