From 98a53588c381bdcdea111cb1deddc06f6c7f1c28 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期四, 09 四月 2026 14:12:09 +0800
Subject: [PATCH] fix(用户管理): 修复编辑用户时部门显示问题并增加员工密码初始化

---
 src/views/system/user/index.vue                                              |   24 ++++++++++++++++++++++++
 src/views/personnelManagement/employeeRecord/components/NewOrEditFormDia.vue |   19 ++++++++++++++++++-
 src/views/personnelManagement/employeeRecord/components/BasicInfoSection.vue |   13 ++++++++++++-
 3 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/src/views/personnelManagement/employeeRecord/components/BasicInfoSection.vue b/src/views/personnelManagement/employeeRecord/components/BasicInfoSection.vue
index 0aa4f06..f41e4be 100644
--- a/src/views/personnelManagement/employeeRecord/components/BasicInfoSection.vue
+++ b/src/views/personnelManagement/employeeRecord/components/BasicInfoSection.vue
@@ -152,6 +152,18 @@
           </el-select>
         </el-form-item>
       </el-col>
+      <el-col v-if="operationType === 'add'" :span="10">
+        <el-form-item label="榛樿鍒濆鍖栧瘑鐮�" prop="defaultPassword">
+          <el-input
+            v-model="form.defaultPassword"
+            type="text"
+            placeholder="璇疯緭鍏�"
+            clearable
+            maxlength="50"
+            show-word-limit
+          />
+        </el-form-item>
+      </el-col>
     </el-row>
   </el-card>
 </template>
@@ -178,4 +190,3 @@
   margin-right: 4px;
 }
 </style>
-
diff --git a/src/views/personnelManagement/employeeRecord/components/NewOrEditFormDia.vue b/src/views/personnelManagement/employeeRecord/components/NewOrEditFormDia.vue
index 2ad06fb..7e495c9 100644
--- a/src/views/personnelManagement/employeeRecord/components/NewOrEditFormDia.vue
+++ b/src/views/personnelManagement/employeeRecord/components/NewOrEditFormDia.vue
@@ -130,6 +130,7 @@
   staffEmergencyContactList: [createEmptyEmergency()],
   // 瑙掕壊锛堝崟閫夛級
   roleId: undefined,
+  defaultPassword: "123456",
 });
 
 const state = reactive({
@@ -152,6 +153,22 @@
       { required: true, message: "璇烽�夋嫨閮ㄩ棬", trigger: "change" },
     ],
     roleId: [{ required: true, message: "璇烽�夋嫨瑙掕壊", trigger: "change" }],
+    defaultPassword: [
+      {
+        validator: (_, value, callback) => {
+          if (operationType.value !== "add") {
+            callback();
+            return;
+          }
+          if (value == null || String(value).trim() === "") {
+            callback(new Error("璇疯緭鍏ラ粯璁ゅ垵濮嬪寲瀵嗙爜"));
+            return;
+          }
+          callback();
+        },
+        trigger: "blur",
+      },
+    ],
   },
   postOptions: [],
   deptOptions: [],
@@ -301,4 +318,4 @@
 .dialog-footer {
   text-align: right;
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 9d16126..cc52725 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -507,6 +507,9 @@
 	const userId = row.userId || ids.value
 	getUser(userId).then(response => {
 		form.value = response.data
+		form.value.deptId = getMatchedDeptId(
+			response.deptId ?? response.data?.deptId ?? response.data?.dept?.id
+		)
 		postOptions.value = response.posts
 		roleOptions.value = response.roles
 		form.value.postIds = response.postIds
@@ -517,6 +520,27 @@
 	})
 }
 
+function getMatchedDeptId(rawDeptId) {
+	if (rawDeptId === undefined || rawDeptId === null || !Array.isArray(enabledDeptOptions.value)) {
+		return rawDeptId
+	}
+	const target = String(rawDeptId)
+	const stack = [...enabledDeptOptions.value]
+	while (stack.length) {
+		const node = stack.shift()
+		if (!node) {
+			continue
+		}
+		if (String(node.id) === target) {
+			return node.id
+		}
+		if (Array.isArray(node.children) && node.children.length) {
+			stack.push(...node.children)
+		}
+	}
+	return rawDeptId
+}
+
 /** 鎻愪氦鎸夐挳 */
 function submitForm() {
 	proxy.$refs["userRef"].validate(valid => {

--
Gitblit v1.9.3