jiuling 11 месяцев назад
Родитель
Сommit
e8f10e92d2
6 измененных файлов с 80 добавлено и 161 удалено
  1. 3 16
      config/api.js
  2. 11 7
      pages/login/index.vue
  3. 10 70
      pages/login/register.vue
  4. 55 0
      utils/Foundation.js
  5. 1 1
      utils/request.js
  6. 0 67
      utils/storage.js

+ 3 - 16
config/api.js

@@ -1,22 +1,12 @@
-/**
- * base    : 基础业务API
- * buyer   : 买家API
- */
 // 开发环境
 const dev = {
-  // im: "https://im-api.pickmall.cn",
   dify: "http://localhost:9203",
-  common: "https://common-api.pickmall.cn",
-  buyer: "http://192.168.0.108:8080",
-  // common: "http://192.168.0.113:8890",
-  // buyer: "http://192.168.0.113:8888",
-  // im: "http://192.168.0.113:8885",
+  serve: "http://localhost:8080",
 };
 // 生产环境
 const prod = {
-  im: "http://121.4.16.100",
-  common: "https://common-api.pickmall.cn",
-  buyer: "http://localhost:8080",
+  dify: "http://localhost:9203",
+  serve: "http://localhost:8080",
 };
 
 //默认生产环境
@@ -32,9 +22,6 @@ if (process.env.NODE_ENV == "development") {
 // api = prod;
 // #endif
 
-// api.buyer += "/buyer";
-api.common += "/common";
-// api.im += "/im";
 export default {
   ...api,
 };

+ 11 - 7
pages/login/index.vue

@@ -17,7 +17,7 @@
 			<!-- #ifdef H5 -->
 			<view class="form-container">
 				<view class="input-group">
-					<input type="text" v-model="phoneNumber" placeholder="请输入手机号" class="input-field" />
+					<input type="text" v-model="phoneNumber" placeholder="请输入手机号" class="input-field" maxlength="11" />
 				</view>
 				<view class="input-group">
 					<input type="password" v-model="password" placeholder="请输入密码" class="input-field" />
@@ -75,6 +75,7 @@
 		mpAutoLogin, phoneLogin
 	} from "@/api/services/connect.js";
 	import storage from "@/utils/storage.js";
+	import Foundation from "@/utils/Foundation.js";
 	export default {
 		data() {
 			return {
@@ -172,12 +173,15 @@
 				}
 
 				// 手机号验证
-				if (!/^1\d{10}$/.test(this.phoneNumber)) {
-					uni.showToast({
-						title: "请输入正确的手机号",
-						icon: 'none'
-					})
-					return
+				const phone = this.phoneNumber; // 获取用户输入的手机号
+      	const result = Foundation.validatePhoneNumber(phone);
+
+				if (!result.valid) {
+						uni.showToast({
+								title: result.message,
+								icon: 'none'
+						});
+						return
 				}
 
 				this.loading = true;

+ 10 - 70
pages/login/register.vue

@@ -115,7 +115,7 @@
 <script>
 import storage from "@/utils/storage.js";
 import { register } from '@/api/services/connect.js';
-
+import Foundation from "@/utils/Foundation.js";
 export default {
   data() {
     return {
@@ -161,62 +161,6 @@ export default {
         url: '/pages/privacy/index'
       })
     },
-    // getVerificationCode() {
-    //   if (this.codeBtnDisabled) return
-      
-    //   if (!this.formData.phone) {
-    //     uni.showToast({
-    //       title: '请输入手机号',
-    //       icon: 'none'
-    //     })
-    //     return
-    //   }
-      
-    //   if (!/^1\d{10}$/.test(this.formData.phone)) {
-    //     uni.showToast({
-    //       title: '请输入正确的手机号',
-    //       icon: 'none'
-    //     })
-    //     return
-    //   }
-      
-    //   // 发送验证码请求
-    //   uni.showLoading({ title: '发送中...' })
-      
-    //   // 调用发送验证码接口
-    //   uni.request({
-    //     url: 'API_URL/user/sendCode', // 替换为实际接口地址
-    //     method: 'POST',
-    //     data: {
-    //       phone: this.formData.phone,
-    //       type: 'register'
-    //     },
-    //     success: (res) => {
-    //       if (res.data.code === 200) {
-    //         uni.showToast({
-    //           title: '验证码已发送',
-    //           icon: 'success'
-    //         });
-    //         this.startCountdown();
-    //       } else {
-    //         uni.showToast({
-    //           title: res.data.msg || '发送失败,请稍后重试',
-    //           icon: 'none'
-    //         });
-    //       }
-    //     },
-    //     fail: (err) => {
-    //       uni.showToast({
-    //         title: '网络异常,请稍后重试',
-    //         icon: 'none'
-    //       });
-    //       console.error(err);
-    //     },
-    //     complete: () => {
-    //       uni.hideLoading();
-    //     }
-    //   });
-    // },
     startCountdown() {
       this.codeBtnDisabled = true
       this.codeBtnText = `${this.countdown}秒`
@@ -242,21 +186,17 @@ export default {
         return false
       }
       
-      if (!/^1\d{10}$/.test(this.formData.phone)) {
-        uni.showToast({
-          title: '请输入正确的手机号',
-          icon: 'none'
-        })
-        return false
+      const phone = this.formData.phone; // 获取用户输入的手机号
+      const result = Foundation.validatePhoneNumber(phone);
+
+      if (!result.valid) {
+          uni.showToast({
+              title: result.message,
+              icon: 'none'
+          });
+          return false;
       }
       
-      // if (!this.formData.code) {
-      //   uni.showToast({
-      //     title: '请输入验证码',
-      //     icon: 'none'
-      //   })
-      //   return false
-      // }
       
       if (!this.formData.password) {
         uni.showToast({

+ 55 - 0
utils/Foundation.js

@@ -7,8 +7,62 @@
  * formatPrice   货币格式化
  * secrecyMobile 手机号隐私保护
  * randomString  随机生成指定长度的字符串
+ * validatePhoneNumber 通用手机号校验方法
  */
 
+/* 
+  通用手机号校验方 
+ */
+export function validatePhoneNumber(phone) {
+    // 定义黑名单
+    const blackList = ['12345678901', '10987654321', '11111111111', '12222222222']; // 示例黑名单
+
+    // 基本格式校验
+    if (!/^1\d{10}$/.test(phone)) {
+        return {
+            valid: false,
+            message: '请输入正确的手机号'
+        };
+    }
+
+    // 检测重复数字
+    if (/^(.)\1+$/.test(phone)) {
+        return {
+            valid: false,
+            message: '手机号格式异常,请重新输入'
+        };
+    }
+
+    // 检测顺序数字
+    if (/^1(0123456789|9876543210)$/.test(phone)) {
+        return {
+            valid: false,
+            message: '手机号格式异常,请重新输入'
+        };
+    }
+
+    // 检测特殊字符(虽然手机号格式已经限制了只能输入数字,但可以额外检查)
+    if (!/^\d+$/.test(phone)) {
+        return {
+            valid: false,
+            message: '手机号中包含非法字符,请重新输入'
+        };
+    }
+
+    // 检测黑名单
+    if (blackList.includes(phone)) {
+        return {
+            valid: false,
+            message: '手机号已被限制,请联系客服'
+        };
+    }
+
+    // 如果通过所有校验
+    return {
+        valid: true,
+        message: '手机号验证通过'
+    };
+}
 /**
  * 验证银行卡号
  */
@@ -256,4 +310,5 @@ export default {
   theNextDayTime,
   whetherNavigate,
   checkBankno,
+  validatePhoneNumber,
 };

+ 1 - 1
utils/request.js

@@ -64,7 +64,7 @@ const createUuid = () => {
 http.setConfig((config) => {
 	createUuid();
 	/* 设置全局配置 */
-	config.baseURL = api.buyer;
+	config.baseURL = api.serve;
 	config.header = {
 		...config.header,
 	};

+ 0 - 67
utils/storage.js

@@ -7,9 +7,6 @@ const HAS_LOGIN = isDev ? "has_login_key_dev" : "has_login_key";
 const ACCESS_TOKEN = isDev ? "access_token_key_dev" : "access_token_key";
 const REFRESH_TOKEN = isDev ? "refresh_token_key_dev" : "refresh_token_key";
 const USER_INFO = isDev ? "user_info_obj_dev" : "user_info_obj";
-const FACE_LOGIN = isDev ? "face_login_dev" : "face_login";
-const FINGER_LOGIN = isDev ? "finger_login_dev" : "finger_login";
-const CART_BACKBTN = isDev ? "cart_backbtn_dev" : "cart_backbtn";
 const AFTERSALE_DATA = isDev ? "aftersale_data_dev" : "aftersale_data";
 export default {
 	setInviter(val) {
@@ -18,49 +15,6 @@ export default {
 	getInviter() {
 		return uni.getStorageSync('inviter');
 	},
-
-	//写入自动发券
-	setAutoCp(val) {
-		uni.setStorageSync('autoCp', val)
-	},
-	//获取自动发券时间
-	getAutoCp() {
-		return uni.getStorageSync('autoCp');
-	},
-	// 写入热门搜索时间戳
-	setHotWords(val) {
-		uni.setStorageSync("hotWords", val);
-	},
-	// 获取热门搜索时间戳
-	getHotWords() {
-		return uni.getStorageSync(`hotWords`);
-	},
-	//写入 展示还是不展示
-	setShow(val) {
-		uni.setStorageSync("show", val);
-	},
-	getShow() {
-		if (uni.getStorageSync(`show`) === "" || uni.getStorageSync(`show`) === undefined) {
-			return true;
-		}
-		return uni.getStorageSync(`show`);
-	},
-	// 获取face id登录
-	getFaceLogin() {
-		return uni.getStorageSync(FACE_LOGIN);
-	},
-	// 写入face id
-	setFaceLogin(val) {
-		uni.setStorageSync(FACE_LOGIN, val);
-	},
-	// 获取指纹登录
-	getFingerLogin() {
-		return uni.getStorageSync(FINGER_LOGIN);
-	},
-	// 写入指纹登录
-	setFingerLogin(val) {
-		uni.setStorageSync(FINGER_LOGIN, val);
-	},
 	// 写入用户信息
 	setUserInfo(val) {
 		uni.setStorageSync(USER_INFO, val);
@@ -75,12 +29,6 @@ export default {
 	getUserInfo() {
 		return uni.getStorageSync(USER_INFO);
 	},
-	setTalkToUser(val) {
-		uni.setStorageSync("TALK_TO_USER", val);
-	},
-	getTalkToUser() {
-		return uni.getStorageSync("TALK_TO_USER");
-	},
 	// 写入uuid
 	setUuid(val) {
 		uni.setStorageSync(UUID, val);
@@ -134,25 +82,10 @@ export default {
 	getPlots() {
 		return uni.getStorageSync(CURRENT_PLOT)
 	},
-
-	setAfterSaleData(val) {
-		uni.setStorageSync(AFTERSALE_DATA, val);
-	},
-
-	getAfterSaleData() {
-		return uni.getStorageSync(AFTERSALE_DATA);
-	},
 	// 删除token
 	removeAfterSaleData() {
 		uni.removeStorageSync(AFTERSALE_DATA);
 	},
-	// 是否发送商品连接记录
-	setImGoodsLink(val) {
-		uni.setStorageSync('imGoodId', val);
-	},
-	getImGoodsLink() {
-		return uni.getStorageSync('imGoodId');
-	},
 	// 是否登录检查
 	isLoggedIn() {
 		return !!this.getHasLogin() && !!this.getAccessToken();