Przeglądaj źródła

:space_invader:feat: 用户注册验证频率限制
style: 按钮颜色加深
docs: 国际化弹窗文字适配

Ritchie 1 rok temu
rodzic
commit
901c220452

+ 3 - 1
src/assets/language/en.json

@@ -1218,7 +1218,9 @@
     "registerButton": "Register",
     "replaysInSeconds": "Replays in seconds",
     "emailRegistration": "Email",
-    "phoneRegistration": "Phone"
+    "phoneRegistration": "Phone",
+    "twoTypedDiff" : "两次输入的密码不一致"
+
   },
   "robotRanking": {
     "machineSalesRanking": "Machine sales ranking",

+ 2 - 1
src/assets/language/zh.json

@@ -1232,7 +1232,8 @@
     "registerButton": "注册",
     "replaysInSeconds": "秒后可重发",
     "emailRegistration": "邮箱注册",
-    "phoneRegistration": "手机注册"
+    "phoneRegistration": "手机注册",
+    "twoTypedDiff" : "两次输入的密码不一致"
   },
   "robotRanking": {
     "machineSalesRanking": "机器销售排行榜",

+ 5 - 0
src/service/register.js

@@ -8,4 +8,9 @@ export function sentRegisterCode(params) {
 // 注册
 export function tAdminSave(params) {
   return axios.post(`/SZWL-SERVER/tAdmin/save`, params);
+}
+
+// 获取最后一次发送验证码的时间
+export function getLastSendTime(params) {
+  return axios.get(`/SZWL-SERVER/tMessageCode/getLastSendTime?phoneOrEmail=${params.phoneOrEmail}`, params);
 }

+ 1 - 1
src/styles/register/index.less

@@ -18,7 +18,7 @@
 				}
 
 				.van-field__button button {
-					background-color: #8096ec;
+					background-color: #4d6add;
 					color: #fff;
 				}
 

+ 48 - 13
src/views/register.vue

@@ -115,15 +115,20 @@
 import md5 from 'js-md5';
 import { ref, onMounted, reactive, toRefs } from 'vue';
 import { Toast } from 'vant';
+// import { sentRegisterCode, tAdminSave, getLastSendTime } from '@/service/register';
 import { sentRegisterCode, tAdminSave } from '@/service/register';
 import sHeader from '@/components/SimpleHeader';
 import logiLogoImgUrl from "@/assets/login/logo.png";
 import { useRouter } from 'vue-router';
 import { getLocal, setLocal, styleUrl } from '@/common/js/utils';
+import { useI18n } from "vue-i18n";
+
 
 
 export default {
   setup() {
+    // 引入语言
+    const { t } = useI18n();
     const active = ref(0);
     const username = ref('');
     const name = ref('');
@@ -138,7 +143,7 @@ export default {
     const verCodeTime = reactive({
       time: 0
     });
-
+    // let lastSendTime = ref('');
     let phoneOrEmailStr = ref('');
 
     const router = useRouter();
@@ -146,7 +151,7 @@ export default {
     // 注册点击
     const registerSubmit = async () => {
       if (password.value !== passwordCheck.value) {
-        Toast.fail('两次密码不一致,请确认密码');
+        Toast.fail(t('register.twoTypedDiff'));
         return false;
       }
       const { data } = await tAdminSave({
@@ -168,6 +173,8 @@ export default {
         Toast.fail(data.message);
       }
     };
+    // const lastSentTimeStr = localStorage.getItem('lastSendTime');
+    // console.log("从本地获取到的lastSendTime>>>", lastSentTimeStr);
 
     // 发送验证码
     const seedVerCode = async () => {
@@ -178,30 +185,57 @@ export default {
       } else {
         phoneOrEmailStr = email.value;
       }
+
+      // 先获取上次发送验证码的时间
+      // const { data } = await getLastSendTime({
+      //   phoneOrEmail: phoneOrEmailStr,
+      // });
+      // if (data.code === '00000') {
+      //   lastSendTime.value = data.data;
+      // }
+      // const currentTime = new Date().getTime();
+      // console.log("是否符合发送验证码的条件:", currentTime - lastSendTime.value > 1000 * 60 * 10 || lastSendTime.value === '');
+      // if (currentTime - lastSendTime.value > 1000 * 60 * 10 || lastSendTime.value === '') {
       const { data } = await sentRegisterCode({
         ifForeign: ifForeign.value,
         phoneOrEmail: phoneOrEmailStr
       });
-      console.log('seedVerCodeSuccess', data);
+      // console.log('seedVerCodeSuccess', data);
       if (data.code === '00000') {
         Toast(data.data);
-        console.log('seedVerCodeSuccess');
-        verCodeTime.time = 3 * 60;
+        // 记录本次发送验证码的时间
+        // setLocal('lastSendTime', currentTime);
+        verCodeTime.time = 1 * 60; // 1分钟定时器,60s后可以更换验证方式
         verCodeTimeInterval();
       } else {
         Toast.fail(data.message);
       }
+      // } else {
+      // Toast('请勿频繁发送验证码,10分钟后再试');
+      // return;
+      // }
     }
-    // 验证码发送成功开始3分钟倒计时
+    // 验证码发送成功开始1分钟倒计时
     const verCodeTimeInterval = () => {
-      verCodeTime.time--;
-      setLocal('registerVerCodeTime', verCodeTime.time)
-      if (verCodeTime.time !== 0) {
-        setTimeout(() => {
-          verCodeTimeInterval();
-        }, 1000);
-      }
+      const intervalId = setInterval(() => {
+        verCodeTime.time--;
+        setLocal('registerVerCodeTime', verCodeTime.time);
+        if (verCodeTime.time === 0) {
+          clearInterval(intervalId); // 清除定时器
+        }
+      }, 1000);
     }
+    // 验证码发送成功开始3分钟倒计时
+    // const verCodeTimeInterval = () => {
+    //   verCodeTime.time--;
+    //   setLocal('registerVerCodeTime', verCodeTime.time)
+    //   if (verCodeTime.time !== 0) {
+    //     setTimeout(() => {
+    //       verCodeTimeInterval();
+    //     }, 1000);
+    //   }
+    // }
+
     // 初始化页面获取验证码倒计时
     onMounted(async () => {
       // 加载样式
@@ -259,6 +293,7 @@ export default {
       signinModel: 'aaabb',
       active,
       logonMode,
+      // lastSendTime,
     }
   },
   components: { sHeader }