wangxy 1 mēnesi atpakaļ
vecāks
revīzija
c2e70527c8
2 mainītis faili ar 53 papildinājumiem un 10 dzēšanām
  1. 15 9
      pages/zsjyYubaoming/zsjyYubaoming.vue
  2. 38 1
      utils/common.js

+ 15 - 9
pages/zsjyYubaoming/zsjyYubaoming.vue

@@ -19,12 +19,12 @@
 						</view>
 						<view class="dljt-input-row require-row">
 							<view class="input-title">身份证号</view>
-							<input class="form-input" name="input" v-model="formData.name" placeholder="请输入身份证号" />
+							<input class="form-input" name="input" v-model="formData.idcard" placeholder="请输入身份证号" />
 						</view>
 						<view class="dljt-input-row require-row">
 							<view class="input-title">预报专业</view>
 							<uni-data-select class="form-select" v-model="formData.zhuanye" :localdata="range"
-								@change="change" placeholder="请选择预报专业"></uni-data-select>
+								placeholder="请选择预报专业"></uni-data-select>
 						</view>
 						<view class="dljt-input-row require-row">
 							<view class="input-title">联系电话</view>
@@ -71,7 +71,9 @@
 	import MtaScrollViewVue from "@/components/MtaScrollView/MtaScrollView.vue";
 	import {
 		formatDateToYearMonthDay,
-		getStringByHtml3
+		getStringByHtml3,
+		validateIdCard,
+		validatePhone
 	} from "@/utils/common.js"
 	import MtaFooter from "@/components/MtaFooter.vue"
 	import default1 from '@/static/images/common/news-bj1.jpg'
@@ -93,27 +95,31 @@
 		
 		if (!formData.name) {
 			uni.showToast({
-				title: '请输入姓名'
+				title: '请输入姓名',
+				icon: 'error'
 			})
 			return;
 		}
 		
-		if (!formData.idcard) {
+		if (!validateIdCard(formData.idcard)) {
 			uni.showToast({
-				title: '请输入身份证号'
+				title: '请输入有效身份证号',
+				icon: 'error'
 			})
 			return;
 		}
 		if (!formData.zhuanye) {
 			uni.showToast({
-				title: '请选择预报专业'
+				title: '请选择预报专业',
+				icon: 'error'
 			})
 			return;
 		}
 		
-		if (!formData.dianhua) {
+		if (!validatePhone(formData.dianhua)) {
 			uni.showToast({
-				title: '请输入联系电话'
+				title: '请输入有效联系电话',
+				icon: 'error'
 			})
 			return;
 		}

+ 38 - 1
utils/common.js

@@ -106,4 +106,41 @@ export function addClassToWebViewIframe() {
 
       // 设置超时停止监听(防止内存泄漏)
       setTimeout(() => observer.disconnect(), 5000);
-    }
+    }
+	
+	
+	/**
+	 * 验证中国大陆身份证号码
+	 * @param {string} idCard - 身份证号码
+	 * @returns {boolean} - 是否有效
+	 */
+	export function validateIdCard(idCard) {
+	    // 基本格式验证
+	    if (!/^\d{17}[\dXx]$/.test(idCard)) {
+	        return false;
+	    }
+	    
+	    // 校验码计算
+	    const factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
+	    const checkCodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
+	    
+	    let sum = 0;
+	    for (let i = 0; i < 17; i++) {
+	        sum += parseInt(idCard[i]) * factors[i];
+	    }
+	    
+	    const mod = sum % 11;
+	    const checkCode = checkCodes[mod];
+	    
+	    return idCard[17].toUpperCase() === checkCode;
+	}
+	
+	/**
+	 * 验证中国大陆手机号码
+	 * @param {string} phone - 手机号码
+	 * @returns {boolean} - 是否有效
+	 */
+	export function validatePhone(phone) {
+	    // 正则表达式验证
+	    return /^1[3-9]\d{9}$/.test(phone);
+	}