From 01d423865ae5eddf91f35c8526f5683c3b430870 Mon Sep 17 00:00:00 2001
From: Crunchy <3114200645@qq.com>
Date: 星期一, 13 一月 2025 09:30:06 +0800
Subject: [PATCH] 密码强校验添加

---
 src/const/crud/admin/user.js |  320 ++++++++++++++++++++++++++++++-----------------------
 1 files changed, 181 insertions(+), 139 deletions(-)

diff --git a/src/const/crud/admin/user.js b/src/const/crud/admin/user.js
index 63011da..fbc3db5 100644
--- a/src/const/crud/admin/user.js
+++ b/src/const/crud/admin/user.js
@@ -14,148 +14,190 @@
  * this software without specific prior written permission.
  * Author: ztt
  */
-import {getDetails} from '@/api/admin/user'
-
+import { getDetails } from '@/api/admin/user'
 
 var validateUsername = (rule, value, callback) => {
-  getDetails(value).then(response => {
-    if (window.boxType === 'edit') callback()
-    const result = response.data.data
-    if (result !== null) {
-      callback(new Error('鐢ㄦ埛鍚嶅凡缁忓瓨鍦�'))
-    } else {
-      callback()
-    }
-  })
+    getDetails(value).then((response) => {
+        if (window.boxType === 'edit') callback()
+        const result = response.data.data
+        if (result !== null) {
+            callback(new Error('鐢ㄦ埛鍚嶅凡缁忓瓨鍦�'))
+        } else {
+            callback()
+        }
+    })
 }
 export const tableOption = {
-  border: true,
-  index: true,
-  indexLabel: '搴忓彿',
-  stripe: true,
-  menuAlign: 'center',
-  searchMenuSpan:6,
-  editBtn: false,
-  delBtn: false,
-  align: 'center',
-  addBtn: false,
-  column: [{
-    fixed: true,
-    label: 'id',
-    prop: 'userId',
-    span: 24,
-    hide: true,
-    editDisabled: true,
-    addDisplay: false
-  }, {
-    fixed: true,
-    label: '鐢ㄦ埛鍚�',
-    prop: 'username',
-    editDisabled: true,
-    slot: true,
-    search: true,
-    span: 24,
-    rules: [{
-      required: true,
-      message: '璇疯緭鍏ョ敤鎴峰悕'
-    },
-      {
-        min: 3,
-        max: 20,
-        message: '闀垮害鍦� 3 鍒� 20 涓瓧绗�',
-        trigger: 'blur'
-      },
-      {validator: validateUsername, trigger: 'blur'}
+    border: true,
+    index: true,
+    indexLabel: '搴忓彿',
+    stripe: true,
+    menuAlign: 'center',
+    searchMenuSpan: 6,
+    editBtn: false,
+    delBtn: false,
+    align: 'center',
+    addBtn: false,
+    column: [
+        {
+            fixed: true,
+            label: 'id',
+            prop: 'userId',
+            span: 24,
+            hide: true,
+            editDisabled: true,
+            addDisplay: false
+        },
+        {
+            fixed: true,
+            label: '鐢ㄦ埛鍚�',
+            prop: 'username',
+            editDisabled: true,
+            slot: true,
+            search: true,
+            span: 24,
+            rules: [
+                {
+                    required: true,
+                    message: '璇疯緭鍏ョ敤鎴峰悕'
+                },
+                {
+                    min: 3,
+                    max: 20,
+                    message: '闀垮害鍦� 3 鍒� 20 涓瓧绗�',
+                    trigger: 'blur'
+                },
+                { validator: validateUsername, trigger: 'blur' }
+            ]
+        },
+        {
+            label: '瀵嗙爜',
+            prop: 'password',
+            type: 'password',
+            hide: true,
+            slot: true,
+            formslot: true,
+            span: 24,
+            rules: [
+                {
+                    required: true,
+                    message: '璇疯緭鍏ュ瘑鐮�',
+                    trigger: 'blur'
+                },
+                {
+                    validator: (rule, value, callback) => {
+                        let strength = 0
+
+                        if (value.length >= 8) strength++
+                        if (/\d/.test(value)) strength++
+                        if (/[a-z]/.test(value)) strength++
+                        if (/[A-Z]/.test(value)) strength++
+                        if (/[!@#$%^&*]/.test(value)) strength++
+
+                        if (strength < 4) {
+                            callback(new Error('瀵嗙爜寮哄害涓嶅锛岃纭繚瀵嗙爜鍖呭惈锛氬ぇ灏忓啓瀛楁瘝銆佹暟瀛楀拰鐗规畩瀛楃锛屼笖闀垮害涓嶅皯浜�8浣�'))
+                        } else {
+                            callback()
+                        }
+                    },
+                    trigger: 'blur'
+                }
+            ]
+        },
+        {
+            label: '鎵�灞炲垎缁�',
+            prop: 'deptId',
+            formslot: true,
+            slot: true,
+            span: 24,
+            hide: true,
+            dataType: 'number',
+            rules: [
+                {
+                    required: true,
+                    message: '璇烽�夋嫨閮ㄩ棬',
+                    trigger: 'change'
+                }
+            ]
+        },
+        {
+            label: '鍛樺伐',
+            prop: 'staffInfo',
+            formslot: true,
+            span: 24,
+            rules: [
+                {
+                    required: true,
+                    message: '璇烽�夋嫨鍛樺伐',
+                    trigger: 'change'
+                }
+            ]
+        },
+        {
+            label: '鎵嬫満鍙�',
+            prop: 'phone',
+            type: 'tel',
+            value: '',
+            span: 24,
+            rules: [
+                {
+                    min: 11,
+                    max: 11,
+                    message: '闀垮害鍦� 11 涓瓧绗�',
+                    trigger: 'blur'
+                }
+            ]
+        },
+        {
+            label: '瑙掕壊',
+            prop: 'role',
+            formslot: true,
+            slot: true,
+            overHidden: true,
+            span: 24,
+            rules: [
+                {
+                    required: true,
+                    message: '璇烽�夋嫨瑙掕壊',
+                    trigger: 'blur'
+                }
+            ]
+        },
+        {
+            label: '鐘舵��',
+            prop: 'lockFlag',
+            type: 'radio',
+            slot: true,
+            border: true,
+            span: 24,
+            rules: [
+                {
+                    required: true,
+                    message: '璇烽�夋嫨鐘舵��',
+                    trigger: 'blur'
+                }
+            ],
+            dicData: [
+                {
+                    label: '鏈夋晥',
+                    value: '0'
+                },
+                {
+                    label: '閿佸畾',
+                    value: '9'
+                }
+            ]
+        },
+        {
+            width: 180,
+            label: '鍒涘缓鏃堕棿',
+            prop: 'createTime',
+            type: 'datetime',
+            format: 'yyyy-MM-dd HH:mm',
+            valueFormat: 'yyyy-MM-dd HH:mm:ss',
+            editDisabled: true,
+            addDisplay: false,
+            span: 24
+        }
     ]
-  }, {
-    label: '瀵嗙爜',
-    prop: 'password',
-    type: 'password',
-    value: '',
-    hide: true,
-    span: 24,
-    rules: [{
-      min: 6,
-      max: 20,
-      required: true,
-      message: '闀垮害鍦� 6 鍒� 20 涓瓧绗�',
-      trigger: 'blur'
-    }]
-  }, {
-    label: '鎵�灞炲垎缁�',
-    prop: 'deptId',
-    formslot: true,
-    slot: true,
-    span: 24,
-    hide: true,
-    dataType:"number",
-    rules: [{
-      required: true,
-      message: '璇烽�夋嫨閮ㄩ棬',
-      trigger: 'change'
-    }]
-  }, {
-    label: '鍛樺伐',
-    prop: 'staffInfo',
-    formslot: true,
-    span: 24,
-    rules: [{
-      required: true,
-      message: '璇烽�夋嫨鍛樺伐',
-      trigger: 'change'
-    }]
-  }, {
-    label: '鎵嬫満鍙�',
-    prop: 'phone',
-    type: 'tel',
-    value: '',
-    span: 24,
-    rules: [{
-      min: 11,
-      max: 11,
-      message: '闀垮害鍦� 11 涓瓧绗�',
-      trigger: 'blur'
-    }]
-  }, {
-    label: '瑙掕壊',
-    prop: 'role',
-    formslot: true,
-    slot: true,
-    overHidden: true,
-    span: 24,
-    rules: [{
-      required: true,
-      message: '璇烽�夋嫨瑙掕壊',
-      trigger: 'change'
-    }]
-  }, {
-    label: '鐘舵��',
-    prop: 'lockFlag',
-    type: 'radio',
-    slot: true,
-    border:true,
-    span: 24,
-    rules: [{
-      required: true,
-      message: '璇烽�夋嫨鐘舵��',
-      trigger: 'change'
-    }],
-    dicData: [{
-      label: '鏈夋晥',
-      value: '0'
-    }, {
-      label: '閿佸畾',
-      value: '9'
-    }]
-  }, {
-    width: 180,
-    label: '鍒涘缓鏃堕棿',
-    prop: 'createTime',
-    type: 'datetime',
-    format: 'yyyy-MM-dd HH:mm',
-    valueFormat: 'yyyy-MM-dd HH:mm:ss',
-    editDisabled: true,
-    addDisplay: false,
-    span: 24
-  }]
 }

--
Gitblit v1.9.3