فهرست منبع

Merge branch 'iteration-20240401' into iteration-school-info

lex 1 سال پیش
والد
کامیت
e4ed236723
2فایلهای تغییر یافته به همراه196 افزوده شده و 45 حذف شده
  1. 183 32
      src/views/student-register/index.tsx
  2. 13 13
      src/views/student-register/request.ts

+ 183 - 32
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';
@@ -142,8 +143,15 @@ export default defineComponent({
       gradeStatus: false,
       classStatus: false,
       loading: false,
+      // dialogStatusVisible: false,
+      // dialogStatusMessage: '',
+
       dialogStatus: false,
       dialogMessage: '',
+      confirmButtonText: '确定',
+      cancelButtonText: '取消',
+      messageAlign: 'center' as 'left' | 'center' | 'right',
+
       dialogConfirmStatus: false,
       contract_sign: false, // 是否实名认证
       countDownTimePay: 60 * 1000,
@@ -198,18 +206,18 @@ export default defineComponent({
     const pageTimer = useInterval(1000, { controls: true });
     pageTimer.pause();
 
-    const countDown = useCountDown({
-      // 倒计时 60 秒
-      time: forms.countDownTimePay,
-      onChange(current: CurrentTime) {
-        forms.dialogMessage = `有待支付订单,请在${Math.ceil(
-          current.total / 1000
-        )}s后重试`;
-      },
-      onFinish() {
-        forms.dialogStatus = false;
-      }
-    });
+    // const countDown = useCountDown({
+    //   // 倒计时 60 秒
+    //   time: forms.countDownTimePay,
+    //   onChange(current: CurrentTime) {
+    //     forms.dialogStatusMessage = `有待支付订单,请在${Math.ceil(
+    //       current.total / 1000
+    //     )}s后重试`;
+    //   },
+    //   onFinish() {
+    //     forms.dialogStatusVisible = false;
+    //   }
+    // });
 
     const overCountDown = useCountDown({
       time: forms.activeOverTime,
@@ -591,27 +599,99 @@ 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 paddingData = {} 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;
+              paddingData = element;
+            }
+
+            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') {
+            // 会选判断逻辑 -
+            await request.get(
+              '/edu-app/userPaymentOrder/registerStatus/' + forms.schoolId
+            );
+            // const vipList = studentRegisterStore.getVip;
+
+            // if (schoolInfo.data.hasBuyCourse && vipList.length > 0) {
+            //   forms.dialogConfirmStatus = true;
+            //   return true;
+            // }
+            // 最终确认,有待支付订单直接去支付,没有则才会创建订单
+            state.config = paddingConfig?.paymentConfig;
+            state.orderNo = paddingConfig?.orderNo;
+            await lastSubmit();
+            return true;
+            // 判断是否可以取消订单
+            // if (paddingData.cancelPayment) {
+            //   await request.post(
+            //     '/edu-app/userPaymentOrder/cancelPayment/' +
+            //       paddingConfig.orderNo
+            //   );
+            //   return false;
+            // } else {
+            //   // forms.countDownTime = paddingData.cancelTimes;
+            //   // countDown.reset(Number(paddingData.cancelTimes));
+            //   // countDown.start();
+            //   // forms.dialogStatusMessage = `有待支付订单,请在${Math.ceil(
+            //   //   countDown.current.value.total / 1000
+            //   // )}s后重试`;
+            //   // forms.dialogStatusVisible = true;
+            //   // forms.dialogConfig = paddingData;
+            //   // 继续支付
+            //   // const paymentConfig = forms.dialogConfig;
+            //   state.config = paddingConfig?.paymentConfig;
+            //   state.orderNo = paddingConfig?.orderNo;
+            //   await lastSubmit();
+            //   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;
         }
       } catch {
         //
@@ -619,6 +699,31 @@ export default defineComponent({
       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 +958,7 @@ export default defineComponent({
       schoolId?: string
     ) => {
       try {
-        const { data } = await request.post(
+        const { data } = await requestStudent.post(
           '/edu-app/open/studentRegisterPointRecord/update',
           {
             data: {
@@ -1468,10 +1573,10 @@ export default defineComponent({
           }}
         />
 
-        <MDialog
+        {/* <MDialog
           title="提示"
-          v-model:show={forms.dialogStatus}
-          message={forms.dialogMessage}
+          v-model:show={forms.dialogStatusVisible}
+          message={forms.dialogStatusMessage}
           allowHtml={true}
           primaryColor="#FF8057"
           confirmButtonText="继续支付"
@@ -1489,6 +1594,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) {