From 29fc6f5b1981775be5d2f0f9f8e61fec2f550252 Mon Sep 17 00:00:00 2001
From: lrj <owen.stl@gmail.com>
Date: 星期一, 29 九月 2025 19:29:11 +0800
Subject: [PATCH] 删除所有test开头的测试文件
---
web/src/views/employee/EmployeeForm.vue | 76 ++++++++++++++++++++++++++++++-------
1 files changed, 61 insertions(+), 15 deletions(-)
diff --git a/web/src/views/employee/EmployeeForm.vue b/web/src/views/employee/EmployeeForm.vue
index d5151f8..3ab65c9 100644
--- a/web/src/views/employee/EmployeeForm.vue
+++ b/web/src/views/employee/EmployeeForm.vue
@@ -39,14 +39,27 @@
/>
</el-form-item>
- <el-form-item label="閲嶇疆瀵嗙爜" prop="password" v-if="isEdit">
- <el-input
- v-model="form.password"
- type="password"
- placeholder="鐣欑┖鍒欎笉淇敼瀵嗙爜"
- maxlength="20"
- show-password
- />
+ <el-form-item label="瀵嗙爜" prop="password" v-if="isEdit">
+ <div style="display: flex; align-items: center; gap: 10px;">
+ <el-input
+ v-model="form.password"
+ type="password"
+ :placeholder="isPasswordModified ? '璇疯緭鍏ユ柊瀵嗙爜锛�6-20浣嶏紝鍖呭惈瀛楁瘝鍜屾暟瀛楋級' : '鐐瑰嚮閲嶇疆瀵嗙爜鎸夐挳鏉ヤ慨鏀瑰瘑鐮�'"
+ maxlength="20"
+ show-password
+ :disabled="!isPasswordModified"
+ @focus="handlePasswordFocus"
+ @input="handlePasswordInput"
+ style="flex: 1;"
+ />
+ <el-button
+ type="primary"
+ size="small"
+ @click="handleResetPassword"
+ >
+ 閲嶇疆瀵嗙爜
+ </el-button>
+ </div>
</el-form-item>
<el-form-item label="鍛樺伐瑙掕壊" prop="roleId">
@@ -115,6 +128,9 @@
const roles = ref<Role[]>([])
const rolesLoading = ref(false)
+// 璺熻釜瀵嗙爜鏄惁琚慨鏀�
+const isPasswordModified = ref(false)
+
// 璁$畻鏄惁涓虹紪杈戞ā寮�
const isEdit = computed(() => !!props.employee?.id)
@@ -159,13 +175,16 @@
password: [
{
validator: (rule, value, callback) => {
- if (isEdit.value && !value) {
- // 缂栬緫妯″紡涓嬪瘑鐮佸彲浠ヤ负绌猴紙涓嶄慨鏀癸級
+ // 缂栬緫妯″紡涓嬶紝濡傛灉鏄崰浣嶇瀵嗙爜涓旀湭淇敼锛屽垯璺宠繃楠岃瘉
+ if (isEdit.value && value === '鈥⑩�⑩�⑩�⑩�⑩�⑩�⑩��' && !isPasswordModified.value) {
callback()
- } else if (!value) {
+ return
+ }
+
+ if (!value || value.trim() === '') {
callback(new Error('璇疯緭鍏ョ櫥褰曞瘑鐮�'))
- } else if (value.length < 6 || value.length > 20) {
- callback(new Error('瀵嗙爜闀垮害搴斿湪6-20涓瓧绗︿箣闂�'))
+ } else if (!/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*?&]{6,}$/.test(value)) {
+ callback(new Error('瀵嗙爜鑷冲皯6涓瓧绗︼紝蹇呴』鍖呭惈瀛楁瘝鍜屾暟瀛�'))
} else {
callback()
}
@@ -192,6 +211,7 @@
form.password = ''
form.roleId = ''
form.description = ''
+ isPasswordModified.value = false
formRef.value?.clearValidate()
}
@@ -202,7 +222,8 @@
form.id = employee.id
form.name = employee.name
form.phone = employee.phone
- form.password = '' // 瀵嗙爜涓嶅洖鏄�
+ form.password = '鈥⑩�⑩�⑩�⑩�⑩�⑩�⑩��' // 缂栬緫鏃舵樉绀哄崰浣嶇瀵嗙爜
+ isPasswordModified.value = false // 閲嶇疆瀵嗙爜淇敼鐘舵��
form.roleId = employee.roleId
form.description = employee.description || ''
} else {
@@ -215,6 +236,27 @@
const handleClose = () => {
visible.value = false
resetForm()
+}
+
+// 澶勭悊瀵嗙爜瀛楁鐒︾偣浜嬩欢
+const handlePasswordFocus = () => {
+ if (isEdit.value && form.password === '鈥⑩�⑩�⑩�⑩�⑩�⑩�⑩��') {
+ form.password = ''
+ }
+}
+
+// 澶勭悊瀵嗙爜杈撳叆浜嬩欢
+const handlePasswordInput = (value: string) => {
+ if (isEdit.value) {
+ isPasswordModified.value = value !== '' && value !== '鈥⑩�⑩�⑩�⑩�⑩�⑩�⑩��'
+ }
+}
+
+// 澶勭悊閲嶇疆瀵嗙爜
+const handleResetPassword = () => {
+ form.password = ''
+ isPasswordModified.value = true
+ ElMessage.success('瀵嗙爜宸叉竻绌猴紝璇疯緭鍏ユ柊瀵嗙爜')
}
// 鎻愪氦琛ㄥ崟
@@ -232,11 +274,15 @@
id: form.id,
name: form.name.trim(),
phone: form.phone.trim(),
- password: form.password || undefined, // 绌哄瘑鐮佷紶 undefined
roleId: form.roleId,
description: form.description?.trim() || undefined
}
+ // 鍙湁鍦ㄦ柊寤烘垨瀵嗙爜琚慨鏀规椂鎵嶅寘鍚瘑鐮佸瓧娈�
+ if (!isEdit.value || isPasswordModified.value) {
+ submitData.password = form.password
+ }
+
await employeeApi.saveEmployee(submitData)
ElMessage.success(isEdit.value ? '鍛樺伐淇℃伅鏇存柊鎴愬姛' : '鍛樺伐鍒涘缓鎴愬姛')
--
Gitblit v1.8.0