zhangwencui
2 天以前 f670b79094c95d791fc43c8fc8b5858ebf8426dc
src/pages/oa/_utils/approveListUtils.js
@@ -180,6 +180,35 @@
    .map(([, node]) => node);
}
/** 模板 nodes → 审批任务(与 Web mapFlowNodesToTasks 一致) */
export function mapFlowNodesToTasks(nodes, { instanceId, templateId } = {}) {
  const list = Array.isArray(nodes) ? nodes : [];
  const tasks = [];
  list.forEach((n, i) => {
    const levelNo = n?.levelNo ?? i + 1;
    const approveType =
      String(n?.approveType || "AND").toUpperCase() === "OR" ? "OR" : "AND";
    (n?.approvers || []).forEach((a, idx) => {
      if (a?.approverId == null || a.approverId === "") return;
      const task = {
        levelNo,
        approveType,
        approverId: a.approverId,
        approverName: a.approverName || "",
        sortNo: a.sortNo ?? idx + 1,
      };
      if (a.id != null) task.id = a.id;
      if (a.nodeId != null) task.nodeId = a.nodeId;
      if (a.templateId != null) task.templateId = a.templateId;
      else if (templateId) task.templateId = templateId;
      if (instanceId) task.instanceId = instanceId;
      if (a.status != null) task.status = a.status;
      tasks.push(task);
    });
  });
  return tasks;
}
/** 组装审批提交 DTO(与 Web buildApproveInstanceDto 一致) */
export function buildApproveInstanceDto(id, uiResult, comment) {
  const opinion = (comment || "").trim();
@@ -190,22 +219,9 @@
  };
}
/** 是否本人发起的审批 */
export function isOwnApplication(item, userStore) {
  const uid = userStore?.id;
  if (item?.applicantId != null && uid != null && uid !== "") {
    return String(item.applicantId) === String(uid);
  }
  const loginName = userStore?.nickName || userStore?.name;
  if (loginName && item?.applicantName) {
    return String(item.applicantName).trim() === String(loginName).trim();
  }
  return false;
}
/** 仅进行中且本人发起时可编辑 */
export function canModifyInstance(item, userStore) {
  return item?.status === "PENDING" && isOwnApplication(item, userStore);
/** 仅进行中可编辑(与 Web openEditDialog 判定一致) */
export function canModifyInstance(item) {
  return item?.status === "PENDING";
}
/** 待当前用户审批 */