hurx há 1 mês atrás
pai
commit
a4e660edb2
2 ficheiros alterados com 56 adições e 12 exclusões
  1. 12 0
      src/api/breg/index.ts
  2. 44 12
      src/views/breg/index.vue

+ 12 - 0
src/api/breg/index.ts

@@ -53,3 +53,15 @@ export const registerSupplier = (params: any) => {
     data: params
   });
 };
+
+/**
+ * 根据手机号查询用户(注册前校验)
+ * @param phonenumber 手机号
+ */
+export const selectByPhone = (phonenumber: string) => {
+  return request({
+    url: '/system/psSysUser/selectByPhone/' + phonenumber,
+    method: 'get',
+    timeout: 20000
+  });
+};

+ 44 - 12
src/views/breg/index.vue

@@ -133,7 +133,7 @@
 </template>
 
 <script setup lang="ts">
-import { smsCode, selectBusinessByCustomerName, registerCustomer } from '@/api/breg/index';
+import { smsCode, selectBusinessByCustomerName, registerCustomer, selectByPhone } from '@/api/breg/index';
 import { onUnmounted } from 'vue';
 import { onPath } from '@/utils/siteConfig';
 const nextNum = ref<any>(1);
@@ -174,25 +174,57 @@ const startCountdown = () => {
 
 // 获取验证码
 const sendSmsCode = () => {
+  // 防止倒计时期间重复点击
   if (countdown.value > 0) return;
 
-  if (validateMobile(form.value.purchasePhone)) {
-    smsCode({ phonenumber: form.value.purchasePhone }).then((res: any) => {
-      if (res.code == 200) {
-        ElMessage({
-          message: '验证码已发送',
-          type: 'success'
-        });
-        startCountdown();
-      }
-    });
-  } else {
+  const phone = form.value.purchasePhone;
+
+  // 1. 基础格式校验
+  if (!validateMobile(phone)) {
     ElMessage({
       message: '请输入正确的手机号码',
       type: 'warning'
     });
     return;
   }
+
+  // 2. 【新增】先调用接口查询用户是否存在
+  selectByPhone(phone)
+    .then((res: any) => {
+      // --- 后端返回 200 ---
+      // 根据你的后端逻辑:返回 200 代表 "用户不存在" (R.ok),允许注册
+      if (res.code === 200) {
+        // 手机号可用,继续执行发送验证码逻辑
+        smsCode({ phonenumber: phone })
+          .then((smsRes: any) => {
+            if (smsRes.code === 200) {
+              ElMessage({
+                message: '验证码已发送',
+                type: 'success'
+              });
+              startCountdown(); // 开始倒计时
+            } else {
+              // 发送短信接口业务失败
+              ElMessage.error(smsRes.msg || '发送验证码失败');
+            }
+          })
+          .catch((err: any) => {
+            // 发送短信接口网络错误或异常
+            ElMessage.error(err.msg || '发送验证码请求异常');
+          });
+      } else {
+      }
+    })
+    .catch((error: any) => {
+      // --- 后端返回非 200 (进入 catch) ---
+      // 根据你的后端逻辑:返回 fail 代表 "用户已存在" (R.fail("该手机号已注册"))
+      const msg = error.msg || '该手机号已注册,请直接登录';
+
+      ElMessage({
+        message: msg,
+        type: 'warning' // 或者使用 'error'
+      });
+    });
 };
 
 // 验证手机号