Просмотр исходного кода

修改纳税人识别号校验

hurx 1 день назад
Родитель
Сommit
003ccb4711
2 измененных файлов с 68 добавлено и 23 удалено
  1. 9 5
      src/views/enterprise/invoiceManage/index.vue
  2. 59 18
      src/views/login.vue

+ 9 - 5
src/views/enterprise/invoiceManage/index.vue

@@ -88,7 +88,13 @@ const queryParams = reactive({ pageNum: 1, pageSize: 10, keyword: '', searchType
 const form = reactive({ invoiceTitle: '', taxNo: '', bankName: '', bankAccount: '', address: '', phone: '', bankId: null, bankCode: '' });
 const rules = {
   // invoiceTitle: [{ required: true, message: '请输入发票抬头', trigger: 'blur' }],
-  taxNo: [{ required: true, message: '请输入纳税人识别号', trigger: 'blur' }],
+  taxNo: [
+    {
+      pattern: /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/,
+      message: '请输入正确的纳税人识别号(统一社会信用代码)',
+      trigger: 'blur'
+    }
+  ],
   bankName: [{ required: true, message: '请输入开户银行', trigger: 'blur' }],
   bankAccount: [{ required: true, message: '请输入开户账户', trigger: 'blur' }],
   phone: [
@@ -140,10 +146,6 @@ const loadEnterpriseInfo = async () => {
   }
 };
 
-onMounted(() => {
-  loadInvoiceList();
-  loadBankList();
-});
 const handleQuery = () => {
   loadInvoiceList();
 };
@@ -221,6 +223,8 @@ const handleDelete = (row: any) => {
 };
 onMounted(() => {
   loadEnterpriseInfo();
+  loadInvoiceList();
+  loadBankList();
 });
 </script>
 

+ 59 - 18
src/views/login.vue

@@ -40,7 +40,9 @@
                   <el-icon><Message /></el-icon>
                 </template>
                 <template #suffix>
-                  <span class="code" @click="sendSmsCode">{{ smsCodeText }}</span>
+                  <span @click="sendSmsCode" :class="['code', countdown > 0 ? 'disabled' : '']">
+                    {{ codeText }}
+                  </span>
                 </template>
               </el-input>
             </el-form-item>
@@ -79,6 +81,7 @@
 
 <script setup lang="ts">
 import { useUserStore } from '@/store/modules/user';
+import { smsCode } from '@/api/breg/index';
 import { LoginData } from '@/api/types';
 import { to } from 'await-to-js';
 import { User, Lock, Iphone, Message } from '@element-plus/icons-vue';
@@ -89,11 +92,12 @@ const router = useRouter();
 
 const type = ref<number>(1);
 const loading = ref(false);
-const smsCodeText = ref('发送验证码');
-const smsCountdown = ref(0);
+const timer = ref<any>(null);
+
 const loginRef = ref<ElFormInstance>();
 const redirect = ref('/');
-
+const codeText = ref<string>('发送验证码');
+const countdown = ref<number>(0);
 const loginForm = ref<LoginData>({
   username: import.meta.env.VITE_APP_USERNAME,
   password: import.meta.env.VITE_APP_PASSWORD,
@@ -161,27 +165,64 @@ const handleLogin = () => {
   });
 };
 
+// 启动倒计时
+const startCountdown = () => {
+  countdown.value = 60;
+  codeText.value = `${countdown.value}s 后重新发送`;
+
+  timer.value = setInterval(() => {
+    countdown.value--;
+    if (countdown.value > 0) {
+      codeText.value = `${countdown.value}s 后重新发送`;
+    } else {
+      clearInterval(timer.value);
+      timer.value = null;
+      codeText.value = '发送验证码';
+    }
+  }, 1000);
+};
+
 /**
  * 发送短信验证码
  */
 const sendSmsCode = () => {
-  if (smsCountdown.value > 0) return;
-  if (!loginForm.value.mobile) {
-    ElMessage.warning('请输入手机号');
+  // 防止倒计时期间重复点击
+  if (countdown.value > 0) return;
+
+  const phone = loginForm.value.mobile;
+
+  // 1. 基础格式校验
+  if (!validateMobile(phone)) {
+    ElMessage({
+      message: '请输入正确的手机号码',
+      type: 'warning'
+    });
     return;
   }
   // TODO: 调用发送短信验证码接口
-  ElMessage.success('验证码已发送');
-  smsCountdown.value = 60;
-  const timer = setInterval(() => {
-    smsCountdown.value--;
-    if (smsCountdown.value > 0) {
-      smsCodeText.value = `${smsCountdown.value}s后重发`;
-    } else {
-      smsCodeText.value = '发送验证码';
-      clearInterval(timer);
-    }
-  }, 1000);
+  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 || '发送验证码请求异常');
+    });
+};
+
+// 验证手机号
+const validateMobile = (phone: any) => {
+  const reg = /^1[3-9]\d{9}$/;
+  return reg.test(phone);
 };
 
 /**