tuqin
2 天以前 65d74181e28605a099443cfad0f4dc3769d46699
fix(bpm): 修正超级管理员匹配方式(simple-list 不返回 username)

问题:/system/user/simple-list 只返回 {id, nickname, avatar, sex, deptId},
没有 username 字段,原来用 user.username === 'admin' 判断永远匹配不到:
- 流程设计里默认审批人拿不到候选人 → showText 为空 → 节点校验不通过
- 流程管理员也定位不到超级管理员

改动:三处统一改为 user.id === 1 || user.nickname === '超级管理员'
(内置超级管理员 id=1,昵称兜底)
- simple-process-designer.vue:默认审批人指到超级管理员
- index.vue:流程管理员写入超级管理员
- basic-info.vue:流程管理员强制回写超级管理员
已修改3个文件
12 ■■■■■ 文件已修改
src/views/bpm/components/simple-process-design/components/simple-process-designer.vue 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/bpm/model/form/index.vue 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/bpm/model/form/modules/basic-info.vue 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/bpm/components/simple-process-design/components/simple-process-designer.vue
@@ -124,8 +124,10 @@
  if (!processNodeTree.value) {
    // 默认流程结构:发起人 → 审批人 → 结束
    // 审批人默认指定为超级管理员,保证新建/修改后三节点齐全且可直接保存(用户可自行调整审批人)
    // simple-list 接口只返回 id/nickname(不含 username),所以用内置超管 id=1 匹配、昵称兜底
    const adminUser = userOptions.value.find(
      (user: SystemUserApi.User) => user.username === 'admin',
      (user: SystemUserApi.User) =>
        user.id === 1 || user.nickname === '超级管理员',
    );
    const approveNode: SimpleFlowNode = {
      id: `Activity_${Date.now()}_${Math.floor(Math.random() * 10000)}`,
src/views/bpm/model/form/index.vue
@@ -202,8 +202,10 @@
  // 流程管理员固定为超级管理员(客户要求,界面上不给选择)。
  // 同时把「当前操作人」一并写入:后端 updateModel 是「先校验管理员、后写入」,
  // 只写超管的话,换一个账号再修改就会报「你不是该流程的管理员」,且无法自愈。
  // simple-list 接口只返回 id/nickname(不含 username),所以用内置超管 id=1 匹配、昵称兜底
  const adminUser = userList.value.find(
    (user: SystemUserApi.User) => user.username === 'admin',
    (user: SystemUserApi.User) =>
      user.id === 1 || user.nickname === '超级管理员',
  );
  const currentUserId = userStore.userInfo?.id;
  const managerIds: number[] = [];
src/views/bpm/model/form/modules/basic-info.vue
@@ -119,8 +119,10 @@
    // 注意:同时把「当前操作人」一并写入。因为后端 updateModel 是「先校验管理员、后写入」,
    // 一旦模型被保存成只包含超管,用其他账号再次修改就会报
    // 「操作流程失败,原因:你不是该流程(xxx)的管理员」,且无法自愈。
    // simple-list 接口只返回 id/nickname(不含 username),所以用内置超管 id=1 匹配、昵称兜底
    const admin = props.userList.find(
      (user: SystemUserApi.User) => user.username === 'admin',
      (user: SystemUserApi.User) =>
        user.id === 1 || user.nickname === '超级管理员',
    );
    const currentUserId = userStore.userInfo?.id;
    const managerIds: number[] = [];