From 97081b89ee45da49b8dbb4173ab45df031fe3c0d Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期三, 20 五月 2026 16:58:40 +0800
Subject: [PATCH] 删除冗余和无效代码
---
src/views/officeProcessAutomation/ApproveManage/approve-list/approveListConstants.js | 189 +++++++++++++++++++++++++++++++++--------------
1 files changed, 132 insertions(+), 57 deletions(-)
diff --git a/src/views/officeProcessAutomation/ApproveManage/approve-list/approveListConstants.js b/src/views/officeProcessAutomation/ApproveManage/approve-list/approveListConstants.js
index 6d8d1a5..c16dcd8 100644
--- a/src/views/officeProcessAutomation/ApproveManage/approve-list/approveListConstants.js
+++ b/src/views/officeProcessAutomation/ApproveManage/approve-list/approveListConstants.js
@@ -8,6 +8,10 @@
nodeSignModeLabel,
} from "../approve-template/approveTemplateConstants.js";
import { buildFormPayloadFromFields, parseFormConfigToData } from "../approve-template/formConfigUtils.js";
+import {
+ isDynamicOptionSource,
+ resolveSelectDisplayLabel,
+} from "../approve-template/selectOptionSource.js";
/** 瀹℃壒绫诲瀷锛堜笌鍚庣瀛楁 approvalType 瀵归綈锛屽悗鏈熷彲鍚屾锛� */
export const APPROVAL_TYPE_OPTIONS = [
@@ -24,24 +28,46 @@
{ value: "procurement", label: "閲囪喘瀹℃壒", cellBg: "#f4f4f5", cellColor: "#909399" },
{ value: "quotation", label: "鎶ヤ环瀹℃壒", cellBg: "#f4ecfc", cellColor: "#9b59b6" },
{ value: "shipment", label: "鍙戣揣瀹℃壒", cellBg: "#e8faf6", cellColor: "#1abc9c" },
+ { value: "enterprise_news", label: "浼佷笟鏂伴椈", cellBg: "#ecf5ff", cellColor: "#409eff" },
];
-/** 瀹℃壒鐘舵�� approvalStatus */
+/** 鍒楄〃鏌ヨ锛氬鎵圭姸鎬侊紙涓庡悗绔� status 鏋氫妇涓�鑷达級 */
+export const APPROVAL_STATUS_SEARCH_OPTIONS = [
+ { value: "PENDING", label: "寰呭鎵�" },
+ { value: "APPROVED", label: "宸查�氳繃" },
+ { value: "REJECTED", label: "宸查┏鍥�" },
+];
+
+/**
+ * 瀹℃壒鐘舵�佸睍绀猴紙涓庡悗绔� status 鏋氫妇涓�鑷达級
+ * PENDING 鈫� 寰呭鎵�/杩涜涓� APPROVED 鈫� 宸查�氳繃/宸插畬鎴� REJECTED 鈫� 宸查┏鍥�
+ */
export const APPROVAL_STATUS_OPTIONS = [
- { value: "pending", label: "瀹℃牳涓�" },
- { value: "approved", label: "宸查�氳繃" },
- { value: "rejected", label: "宸查┏鍥�" },
- { value: "cancelled", label: "宸叉挙閿�" },
+ { value: "pending", api: "PENDING", label: "寰呭鎵�" },
+ { value: "approved", api: "APPROVED", label: "宸查�氳繃" },
+ { value: "rejected", api: "REJECTED", label: "宸查┏鍥�" },
+ { value: "cancelled", api: "CANCELLED", label: "宸叉挙閿�" },
];
-export const LEGACY_APPROVE_LIST_STORAGE_KEY = "oa_unified_approve_list_v1";
-
-export function clearLegacyApproveListStorage() {
- try {
- localStorage.removeItem(LEGACY_APPROVE_LIST_STORAGE_KEY);
- } catch {
- /* ignore */
+/** 鍚庣 status / 椤甸潰 approvalStatus 鈫� 缁熶竴椤甸潰 key锛坧ending | approved | rejected | cancelled锛� */
+export function normalizeApprovalStatusKey(v) {
+ const s = String(v ?? "").trim();
+ if (!s) return "pending";
+ const upper = s.toUpperCase();
+ if (upper === "APPROVED" || upper === "APPROVE" || upper === "PASS") return "approved";
+ if (upper === "REJECTED" || upper === "REJECT" || upper === "REFUSE") return "rejected";
+ if (upper === "CANCELLED" || upper === "CANCEL") return "cancelled";
+ if (
+ upper === "PENDING" ||
+ upper === "IN_PROGRESS" ||
+ upper === "PROCESSING" ||
+ upper === "RUNNING"
+ ) {
+ return "pending";
}
+ const lower = s.toLowerCase();
+ if (["pending", "approved", "rejected", "cancelled"].includes(lower)) return lower;
+ return "pending";
}
/** 鎻愪氦寮圭獥锛氭ā鏉垮崱鐗囷紙鏉ヨ嚜鍚庣鍒楄〃锛� */
@@ -50,10 +76,16 @@
return {
id: row?.id,
key: String(row?.id ?? ""),
+ businessType: row?.businessType ?? cfg.approvalType ?? row?.approvalType ?? "",
approvalType: cfg.approvalType || row?.approvalType || "",
label: row?.templateName || "鈥�",
summaryPlaceholder: (row?.description || "").trim() || cfg.summaryPlaceholder || "鐐瑰嚮濉啓骞舵彁浜�",
};
+}
+
+export function matchBusinessTypeValue(a, b) {
+ if (a == null || a === "" || b == null || b === "") return false;
+ return a === b || a === Number(b) || Number(a) === b || String(a) === String(b);
}
/** 瀹℃壒璁板綍 approveAction 鈫� 椤甸潰 result */
@@ -78,20 +110,11 @@
}
export function mapTaskStatusLabel(status) {
- const s = String(status || "").toUpperCase();
- if (s === "APPROVED") return "宸查�氳繃";
- if (s === "REJECTED") return "宸查┏鍥�";
- if (s === "PENDING") return "寰呭鎵�";
- if (s === "CANCELLED") return "宸叉挙閿�";
- return status || "鈥�";
+ return approvalStatusLabel(status);
}
export function mapTaskStatusTagType(status) {
- const s = String(status || "").toUpperCase();
- if (s === "APPROVED") return "success";
- if (s === "REJECTED") return "danger";
- if (s === "CANCELLED") return "info";
- return "warning";
+ return approvalStatusTagType(status);
}
/** 鍚庣 tasks 鈫� 椤甸潰 flowNodes锛堟寜 levelNo 鍒嗙粍锛屼緵娴佺▼缂栬緫/灞曠ず锛� */
@@ -167,9 +190,17 @@
return "text";
}
-/** 鍗曞瓧娈靛睍绀哄�硷紙璇︽儏鍙锛� */
-export function formatFieldDisplayValue(field, val) {
+/**
+ * 鍗曞瓧娈靛睍绀哄�硷紙璇︽儏鍙銆佸垪琛ㄤ富琛級
+ * @param {object} [caches] 浜哄憳/閮ㄩ棬涓嬫媺缂撳瓨锛岀敤浜庤В鏋愩�屼汉鍛樺垪琛ㄣ�嶇被瀛楁涓哄鍚�
+ */
+export function formatFieldDisplayValue(field, val, caches) {
if (val == null || val === "" || (Array.isArray(val) && !val.length)) return "鈥�";
+ if (field?.type === "select" && isDynamicOptionSource(field.optionSource)) {
+ const label = resolveSelectDisplayLabel(field, val, caches || {});
+ if (label && label !== "鈥�") return label;
+ return String(val);
+ }
if (field?.type === "select" && field.options?.length) {
const hit = field.options.find((o) => String(o.value) === String(val));
return hit?.label || String(val);
@@ -275,10 +306,17 @@
const dto = {
templateId,
templateName: submitForm?.templateName || tpl.label || "",
+ businessType: tpl.businessType ?? submitForm?.businessType ?? "",
title,
formConfig: buildInstanceFormConfigJson({ ...tpl, fields: tpl.fields || submitForm?.formFieldDefs }, payload),
tasks: taskList,
};
+
+ const attachments =
+ (Array.isArray(submitForm?.storageBlobDTOs) && submitForm.storageBlobDTOs.length
+ ? submitForm.storageBlobDTOs
+ : null) || tpl.storageBlobDTOs;
+ if (attachments?.length) dto.storageBlobDTOs = attachments;
if (isUpdate) {
dto.id = existingRow?.id ?? submitForm?.instanceId;
@@ -297,11 +335,6 @@
return dto;
}
-/** @deprecated 浣跨敤 buildInstanceDto */
-export function buildSaveInstanceDto(params) {
- return buildInstanceDto(params);
-}
-
/** 鏍¢獙鎻愪氦瀹℃壒娴佺▼锛堜笌妯℃澘椤佃鍒欎竴鑷达級 */
export function validateSubmitFlowNodes(flowNodes) {
const nodes = normalizeFlowNodes(flowNodes);
@@ -316,20 +349,14 @@
/** 鍚庣 status 鈫� 椤甸潰 approvalStatus */
export function mapInstanceStatusFromApi(status) {
- const s = String(status || "").toUpperCase();
- if (s === "APPROVED") return "approved";
- if (s === "REJECTED") return "rejected";
- if (s === "CANCELLED") return "cancelled";
- return "pending";
+ return normalizeApprovalStatusKey(status);
}
/** 椤甸潰 approvalStatus 鈫� 鍚庣 status */
export function mapInstanceStatusToApi(approvalStatus) {
- const s = String(approvalStatus || "").toLowerCase();
- if (s === "approved") return "APPROVED";
- if (s === "rejected") return "REJECTED";
- if (s === "cancelled") return "CANCELLED";
- return "PENDING";
+ const key = normalizeApprovalStatusKey(approvalStatus);
+ const hit = APPROVAL_STATUS_OPTIONS.find((x) => x.value === key);
+ return hit?.api || "PENDING";
}
export function unwrapInstancePage(res) {
@@ -362,6 +389,7 @@
templateName: row.templateName || "",
businessId: row.businessId,
businessType: row.businessType,
+ businessName: row.businessName || "",
applicantId: row.applicantId,
applicantNo: row.applicantId != null ? String(row.applicantId) : "",
applicantName: row.applicantName || "",
@@ -410,19 +438,26 @@
};
}
-export function buildApprovalInstanceListParams({ page, searchForm }) {
+export function buildApprovalInstanceListParams({ page, searchForm, businessType, extraParams }) {
const params = {
current: page.current,
size: page.size,
+ ...(extraParams && typeof extraParams === "object" ? extraParams : {}),
};
- const dto = {};
- const kw = (searchForm?.applicantKeyword || "").trim();
- if (kw) dto.applicantName = kw;
- if (searchForm?.approvalType) {
- const opt = APPROVAL_TYPE_OPTIONS.find((x) => x.value === searchForm.approvalType);
- if (opt?.label) dto.templateName = opt.label;
+ const bizType = businessType ?? searchForm?.businessType;
+ if (bizType != null && bizType !== "") {
+ params.businessType = bizType;
}
- if (Object.keys(dto).length) params.approvalInstanceDto = dto;
+ if (searchForm?.status) {
+ params.status = searchForm.status;
+ }
+ const range = searchForm?.createTimeRange;
+ if (Array.isArray(range) && range[0]) {
+ params.createTime = range[0];
+ }
+ if (Array.isArray(range) && range[1]) {
+ params.createTimeEnd = range[1];
+ }
return params;
}
@@ -441,18 +476,45 @@
}
export function approvalStatusLabel(v) {
- return APPROVAL_STATUS_OPTIONS.find((x) => x.value === v)?.label || "鈥�";
+ const key = normalizeApprovalStatusKey(v);
+ return APPROVAL_STATUS_OPTIONS.find((x) => x.value === key)?.label || "鈥�";
+}
+
+/** 涓氬姟鐢宠椤电姸鎬佹枃妗堬細PENDING鈫掕繘琛屼腑 APPROVED鈫掑凡瀹屾垚 REJECTED鈫掑凡椹冲洖 */
+export function businessApprovalStatusLabel(v) {
+ const key = normalizeApprovalStatusKey(v);
+ if (key === "pending") return "杩涜涓�";
+ if (key === "approved") return "宸插畬鎴�";
+ if (key === "rejected") return "宸查┏鍥�";
+ if (key === "cancelled") return "宸叉挙閿�";
+ return "鈥�";
+}
+
+/**
+ * 涓氬姟鐢宠椤垫槸鍚﹀厑璁镐慨鏀癸紙浜斾釜鐢宠椤碉級
+ * 杩涜涓�(PENDING)銆佸凡瀹屾垚(APPROVED) 涓嶅彲淇敼锛涘凡椹冲洖銆佸凡鎾ら攢绛夊彲淇敼
+ */
+export function canEditBusinessInstanceRow(row) {
+ const key = normalizeApprovalStatusKey(
+ row?.approvalStatus ?? row?.statusRaw ?? row?.status
+ );
+ return key !== "pending" && key !== "approved";
+}
+
+export function businessApprovalStatusTagType(v) {
+ const key = normalizeApprovalStatusKey(v);
+ if (key === "approved") return "success";
+ if (key === "rejected") return "danger";
+ if (key === "cancelled") return "info";
+ return "warning";
}
export function approvalStatusTagType(v) {
- if (v === "approved") return "success";
- if (v === "rejected") return "danger";
- if (v === "cancelled") return "info";
- return "primary";
-}
-
-export function unreadLabel(v) {
- return v ? "鏄�" : "鍚�";
+ const key = normalizeApprovalStatusKey(v);
+ if (key === "approved") return "success";
+ if (key === "rejected") return "danger";
+ if (key === "cancelled") return "info";
+ return "warning";
}
/** 鍒楄〃琛� 鈫� 缂栬緫琛ㄥ崟锛堜粎鐢ㄨ鏁版嵁鍥炴樉锛� */
@@ -479,6 +541,10 @@
formFieldDefs: fields,
formPayload,
flowNodes,
+ templateAttachments: initTemplateAttachmentsFromSnapshot(templateSnapshot),
+ storageBlobDTOs: row?.storageBlobDTOs?.length
+ ? JSON.parse(JSON.stringify(row.storageBlobDTOs))
+ : [],
};
}
@@ -503,5 +569,14 @@
formFieldDefs: tpl?.fields || [],
formPayload: payload,
flowNodes,
+ templateAttachments: tpl?.storageBlobDTOs
+ ? JSON.parse(JSON.stringify(tpl.storageBlobDTOs))
+ : [],
+ storageBlobDTOs: [],
};
}
+
+export function initTemplateAttachmentsFromSnapshot(templateSnapshot) {
+ const list = templateSnapshot?.storageBlobDTOs;
+ return list?.length ? JSON.parse(JSON.stringify(list)) : [];
+}
--
Gitblit v1.9.3