From 044d8f67cc414187c353b620ce8ad014fcfe44f4 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 29 八月 2025 10:20:59 +0800
Subject: [PATCH] 1.密码强校验

---
 src/views/system/user/index.vue            |   32 ++++++++++++++-
 src/views/system/user/profile/resetPwd.vue |   29 +++++++++++++-
 2 files changed, 56 insertions(+), 5 deletions(-)

diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 0fb4722..fbc3581 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -387,9 +387,35 @@
         roleIds: [
           { required: true, message: "璇烽�夋嫨瑙掕壊", trigger: "change" }
         ],
-        // password: [
-        //   { required: true, message: "瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
-        // ],
+        password: [
+          { required: true, message: "瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
+          { min: 8, max: 20, message: "瀵嗙爜闀垮害蹇呴』鍦�8-20涓瓧绗︿箣闂�", trigger: "blur" },
+          {
+            validator: (rule, value, callback) => {
+              if (!value) {
+                callback();
+                return;
+              }
+              // 妫�鏌ユ槸鍚﹀寘鍚ぇ鍐欏瓧姣�
+              const hasUpperCase = /[A-Z]/.test(value);
+              // 妫�鏌ユ槸鍚﹀寘鍚皬鍐欏瓧姣�
+              const hasLowerCase = /[a-z]/.test(value);
+              // 妫�鏌ユ槸鍚﹀寘鍚壒娈婄鍙�
+              const hasSpecialChar = /[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(value);
+              
+              if (!hasUpperCase) {
+                callback(new Error('瀵嗙爜蹇呴』鍖呭惈鑷冲皯涓�涓ぇ鍐欏瓧姣�'));
+              } else if (!hasLowerCase) {
+                callback(new Error('瀵嗙爜蹇呴』鍖呭惈鑷冲皯涓�涓皬鍐欏瓧姣�'));
+              } else if (!hasSpecialChar) {
+                callback(new Error('瀵嗙爜蹇呴』鍖呭惈鑷冲皯涓�涓壒娈婄鍙�'));
+              } else {
+                callback();
+              }
+            },
+            trigger: "blur"
+          }
+        ],
         phonenumber: [
           {
             required: true,
diff --git a/src/views/system/user/profile/resetPwd.vue b/src/views/system/user/profile/resetPwd.vue
index f329e6e..96ccd1f 100644
--- a/src/views/system/user/profile/resetPwd.vue
+++ b/src/views/system/user/profile/resetPwd.vue
@@ -41,8 +41,33 @@
         ],
         newPassword: [
           { required: true, message: "鏂板瘑鐮佷笉鑳戒负绌�", trigger: "blur" },
-          { min: 6, max: 20, message: "闀垮害鍦� 6 鍒� 20 涓瓧绗�", trigger: "blur" },
-          { pattern: /^[^<>"'|\\]+$/, message: "涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > \" ' \\\ |", trigger: "blur" }
+          { min: 8, max: 20, message: "闀垮害鍦� 8 鍒� 20 涓瓧绗�", trigger: "blur" },
+          { pattern: /^[^<>"'|\\]+$/, message: "涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > \" ' \\\\ |", trigger: "blur" },
+          {
+            validator: (rule, value, callback) => {
+              if (!value) {
+                callback();
+                return;
+              }
+              // 妫�鏌ユ槸鍚﹀寘鍚ぇ鍐欏瓧姣�
+              const hasUpperCase = /[A-Z]/.test(value);
+              // 妫�鏌ユ槸鍚﹀寘鍚皬鍐欏瓧姣�
+              const hasLowerCase = /[a-z]/.test(value);
+              // 妫�鏌ユ槸鍚﹀寘鍚壒娈婄鍙�
+              const hasSpecialChar = /[!@#$%^&*()_+\-=\[\]{};':\"\\|,.<>\/?]/.test(value);
+              
+              if (!hasUpperCase) {
+                callback(new Error('鏂板瘑鐮佸繀椤诲寘鍚嚦灏戜竴涓ぇ鍐欏瓧姣�'));
+              } else if (!hasLowerCase) {
+                callback(new Error('鏂板瘑鐮佸繀椤诲寘鍚嚦灏戜竴涓皬鍐欏瓧姣�'));
+              } else if (!hasSpecialChar) {
+                callback(new Error('鏂板瘑鐮佸繀椤诲寘鍚嚦灏戜竴涓壒娈婄鍙�'));
+              } else {
+                callback();
+              }
+            },
+            trigger: "blur"
+          }
         ],
         confirmPassword: [
           { required: true, message: "纭瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },

--
Gitblit v1.9.3