From 5e2501496943a7991eb11b1e9bccbf64631719f6 Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期四, 05 十一月 2026 16:18:37 +0800
Subject: [PATCH] fix(bpm): 流程管理员写入时带上当前操作人,避免换账号后无法再改模型

---
 src/views/bpm/model/form/modules/basic-info.vue |   22 +++++++++++++++++++---
 src/views/bpm/model/form/index.vue              |   25 ++++++++++++++++---------
 2 files changed, 35 insertions(+), 12 deletions(-)

diff --git a/src/views/bpm/model/form/index.vue b/src/views/bpm/model/form/index.vue
index 9df7e71..3bd2c3f 100644
--- a/src/views/bpm/model/form/index.vue
+++ b/src/views/bpm/model/form/index.vue
@@ -199,15 +199,22 @@
   // 鑾峰彇閮ㄩ棬鍒楄〃
   deptList.value = await getSimpleDeptList();
 
-  // 鏂板鍦烘櫙锛堟祦绋嬬鐞嗗憳杩樻病鍊兼椂锛夐粯璁ゅ彇瓒呯骇绠$悊鍛橈紙admin锛夛紝鑰屼笉鏄綋鍓嶇櫥褰曠敤鎴�
-  if (!formData.value.managerUserIds?.length) {
-    const adminUser = userList.value.find(
-      (user: SystemUserApi.User) => user.username === 'admin',
-    );
-    const defaultManagerId = adminUser?.id ?? userStore.userInfo?.id;
-    if (defaultManagerId) {
-      formData.value.managerUserIds = [defaultManagerId];
-    }
+  // 娴佺▼绠$悊鍛樺浐瀹氫负瓒呯骇绠$悊鍛橈紙瀹㈡埛瑕佹眰锛岀晫闈笂涓嶇粰閫夋嫨锛夈��
+  // 鍚屾椂鎶娿�屽綋鍓嶆搷浣滀汉銆嶄竴骞跺啓鍏ワ細鍚庣 updateModel 鏄�屽厛鏍¢獙绠$悊鍛樸�佸悗鍐欏叆銆嶏紝
+  // 鍙啓瓒呯鐨勮瘽锛屾崲涓�涓处鍙峰啀淇敼灏变細鎶ャ�屼綘涓嶆槸璇ユ祦绋嬬殑绠$悊鍛樸�嶏紝涓旀棤娉曡嚜鎰堛��
+  const adminUser = userList.value.find(
+    (user: SystemUserApi.User) => user.username === 'admin',
+  );
+  const currentUserId = userStore.userInfo?.id;
+  const managerIds: number[] = [];
+  if (adminUser?.id) {
+    managerIds.push(adminUser.id);
+  }
+  if (currentUserId && !managerIds.includes(currentUserId)) {
+    managerIds.push(currentUserId);
+  }
+  if (managerIds.length > 0) {
+    formData.value.managerUserIds = managerIds;
   }
 
   // 鏈�缁堬紝璁剧疆 currentStep 鍒囨崲鍒扮涓�姝�
diff --git a/src/views/bpm/model/form/modules/basic-info.vue b/src/views/bpm/model/form/modules/basic-info.vue
index 97a23a7..3810aad 100644
--- a/src/views/bpm/model/form/modules/basic-info.vue
+++ b/src/views/bpm/model/form/modules/basic-info.vue
@@ -14,6 +14,7 @@
 import { DICT_TYPE } from '@vben/constants';
 import { getDictOptions } from '@vben/hooks';
 import { IconifyIcon } from '@vben/icons';
+import { useUserStore } from '@vben/stores';
 
 import {
   Avatar,
@@ -56,6 +57,7 @@
 
 const formRef = ref(); // 琛ㄥ崟寮曠敤
 const modelData = defineModel<any>(); // 鍒涘缓鏈湴鏁版嵁鍓湰
+const userStore = useUserStore(); // 褰撳墠鐧诲綍鐢ㄦ埛锛堝啓鍏ユ祦绋嬬鐞嗗憳锛岄伩鍏嶆崲璐﹀彿鍚庢棤娉曞啀淇敼妯″瀷锛�
 
 const selectedStartUsers = ref<SystemUserApi.User[]>([]); // 閫変腑鐨勫彂璧蜂汉
 const selectedStartDepts = ref<SystemDeptApi.Dept[]>([]); // 閫変腑鐨勫彂璧烽儴闂�
@@ -113,13 +115,27 @@
           newVal.managerUserIds.includes(user.id),
         ) as SystemUserApi.User[])
       : [];
-    // 娴佺▼绠$悊鍛樺浐瀹氫负瓒呯骇绠$悊鍛橈細杩涘叆椤甸潰鍗冲己鍒跺洖鍐欙紝淇敼鍦烘櫙鍚屾牱鐢熸晥
+    // 娴佺▼绠$悊鍛樺浐瀹氫负瓒呯骇绠$悊鍛橈細杩涘叆椤甸潰鍗冲己鍒跺洖鍐欙紝淇敼鍦烘櫙鍚屾牱鐢熸晥銆�
+    // 娉ㄦ剰锛氬悓鏃舵妸銆屽綋鍓嶆搷浣滀汉銆嶄竴骞跺啓鍏ャ�傚洜涓哄悗绔� updateModel 鏄�屽厛鏍¢獙绠$悊鍛樸�佸悗鍐欏叆銆嶏紝
+    // 涓�鏃︽ā鍨嬭淇濆瓨鎴愬彧鍖呭惈瓒呯锛岀敤鍏朵粬璐﹀彿鍐嶆淇敼灏变細鎶�
+    // 銆屾搷浣滄祦绋嬪け璐ワ紝鍘熷洜锛氫綘涓嶆槸璇ユ祦绋�(xxx)鐨勭鐞嗗憳銆嶏紝涓旀棤娉曡嚜鎰堛��
     const admin = props.userList.find(
       (user: SystemUserApi.User) => user.username === 'admin',
     );
+    const currentUserId = userStore.userInfo?.id;
+    const managerIds: number[] = [];
     if (admin) {
-      newVal.managerUserIds = [admin.id];
-      selectedManagerUsers.value = [admin as SystemUserApi.User];
+      managerIds.push(admin.id);
+    }
+    if (currentUserId && !managerIds.includes(currentUserId)) {
+      managerIds.push(currentUserId);
+    }
+    if (managerIds.length > 0) {
+      newVal.managerUserIds = managerIds;
+      // 鐣岄潰涓婁粛鐒跺彧灞曠ず銆岃秴绾х鐞嗗憳銆�
+      const displayUser =
+        admin ?? props.userList.find((user) => user.id === managerIds[0]);
+      selectedManagerUsers.value = displayUser ? [displayUser] : [];
     }
   },
   {

--
Gitblit v1.9.3