From a32100e31b93bc378b11ab93617a9c40b081ad70 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期三, 15 四月 2026 16:44:03 +0800
Subject: [PATCH] 移除核验部分+登录注册接口对接
---
src/utils/ruleGenerator.js | 166 +++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 148 insertions(+), 18 deletions(-)
diff --git a/src/utils/ruleGenerator.js b/src/utils/ruleGenerator.js
index a7a9c7a..7a7aed7 100644
--- a/src/utils/ruleGenerator.js
+++ b/src/utils/ruleGenerator.js
@@ -3,7 +3,7 @@
export const ruleGenerator = {
// 蹇呭~瀛楁
required(message = '姝ゅ瓧娈典负蹇呭~椤�') {
- return { required: true, message, trigger: 'blur' }
+ return { required: true, message, trigger: ['blur', 'change'] }
},
// 闀垮害闄愬埗
@@ -35,7 +35,7 @@
callback(new Error('璇疯緭鍏ユ纭殑鎵嬫満鍙风爜'))
}
},
- trigger: ['blur', 'change']
+ trigger: ['blur']
}
},
//楠岃瘉鐮侀獙璇�
@@ -65,21 +65,7 @@
trigger: ['blur', 'change']
}
},
-
- // 澶氶�夋楠岃瘉
- checkbox(message) {
- return {
- validator: (rule, value, callback) => {
- if (!value) {
- callback(new Error(message));
- } else {
- callback();
- }
- },
- trigger: 'change'
- }
- },
-
+
// 閭楠岃瘉
email() {
return {
@@ -93,5 +79,149 @@
},
trigger: 'blur'
}
- }
+ },
+
+ // 澶т簬绛変簬0鐨勬鏁存暟楠岃瘉
+ positiveInteger(min = 0) {
+ return {
+ validator: (rule, value, callback) => {
+ if (!value) {
+ callback()
+ } else {
+ // 妫�鏌ユ槸鍚︿负姝f暣鏁颁笖澶т簬绛変簬min
+ const num = Number(value)
+ const isPositiveInteger = Number.isInteger(num) && num >= min && num >= 0
+ if (isPositiveInteger) {
+ callback()
+ } else {
+ callback(new Error(min === 0 ? '璇疯緭鍏ュぇ浜庣瓑浜�0鐨勬鏁存暟' : `璇疯緭鍏ュぇ浜庣瓑浜�${min}鐨勬鏁存暟`))
+ }
+ }
+ },
+ trigger: ['blur', 'change']
+ }
+ },
+
+ // 韬唤璇佸彿楠岃瘉
+ idCard() {
+ return {
+ validator: (rule, value, callback) => {
+ if (!value) {
+ callback()
+ return
+ }
+
+ // 18浣嶈韩浠借瘉姝e垯琛ㄨ揪寮�
+ const reg18 = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/
+ // 15浣嶈韩浠借瘉姝e垯琛ㄨ揪寮忥紙鑰佸紡锛�
+ const reg15 = /^[1-9]\d{5}\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}$/
+
+ if (reg18.test(value)) {
+ // 18浣嶈韩浠借瘉鏍¢獙鐮侀獙璇�
+ const weights = [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(value[i]) * weights[i]
+ }
+ const checkCode = checkCodes[sum % 11]
+ if (checkCode.toUpperCase() === value[17].toUpperCase()) {
+ callback()
+ } else {
+ callback(new Error('璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�'))
+ }
+ } else if (reg15.test(value)) {
+ // 15浣嶈韩浠借瘉鏍¢獙閫氳繃
+ callback()
+ } else {
+ callback(new Error('璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�'))
+ }
+ },
+ trigger: ['blur', 'change']
+ }
+ },
+
+ // 缁熶竴绀句細淇$敤浠g爜楠岃瘉
+ creditCode() {
+ return {
+ validator: (rule, value, callback) => {
+ if (!value) {
+ callback()
+ return
+ }
+
+ // 缁熶竴绀句細淇$敤浠g爜鐢�18浣嶅瓧绗︾粍鎴愶細1浣嶇櫥璁扮鐞嗛儴闂ㄤ唬鐮� + 1浣嶆満鏋勭被鍒唬鐮� + 6浣嶇櫥璁扮鐞嗘満鍏宠鏀垮尯鍒掔爜 + 9浣嶄富浣撹瘑鍒爜锛堢粍缁囨満鏋勪唬鐮侊級 + 1浣嶆牎楠岀爜
+ const reg = /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/
+
+ if (!reg.test(value)) {
+ callback(new Error('璇疯緭鍏ユ纭殑缁熶竴绀句細淇$敤浠g爜'))
+ return
+ }
+
+ // 鏍¢獙鐮佽绠�
+ const weights = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28]
+ const checkCodes = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'T', 'U', 'W', 'X', 'Y']
+
+ let sum = 0
+ for (let i = 0; i < 17; i++) {
+ const char = value[i]
+ // 灏嗗瓧绗﹁浆鎹负瀵瑰簲鐨勬暟鍊�
+ const num = char >= '0' && char <= '9' ? parseInt(char) : char.charCodeAt(0) - 55
+ sum += num * weights[i]
+ }
+
+ const mod = 31
+ const remainder = sum % mod
+ const checkCode = checkCodes[(mod - remainder) % mod]
+
+ if (checkCode === value[17].toUpperCase()) {
+ callback()
+ } else {
+ callback(new Error('璇疯緭鍏ユ纭殑缁熶竴绀句細淇$敤浠g爜'))
+ }
+ },
+ trigger: ['blur', 'change']
+ }
+ },
+
+ // 閲戦楠岃瘉锛堜繚鐣�2浣嶅皬鏁帮級
+ money(min = 0) {
+ return {
+ validator: (rule, value, callback) => {
+ if (!value) {
+ callback()
+ return
+ }
+
+ // 閲戦姝e垯锛氭暣鏁伴儴鍒嗕笉闄愪綅鏁帮紝灏忔暟閮ㄥ垎鏈�澶�2浣�
+ const reg = /^(0|[1-9]\d*)(\.\d{1,2})?$/
+
+ if (!reg.test(value)) {
+ callback(new Error('璇疯緭鍏ユ纭殑閲戦'))
+ return
+ }
+
+ const num = parseFloat(value)
+ if (num < min) {
+ callback(new Error(`閲戦涓嶈兘灏忎簬${min}`))
+ } else {
+ callback()
+ }
+ },
+ trigger: ['blur', 'change']
+ }
+ },
+ // 澶氶�夋楠岃瘉
+ checkbox(message) {
+ return {
+ validator: (rule, value, callback) => {
+ if (!value) {
+ callback(new Error(message));
+ } else {
+ callback();
+ }
+ },
+ trigger: 'change'
+ }
+ },
}
\ No newline at end of file
--
Gitblit v1.8.0