From a1df9699594b0a0e46d26a0394eafb1eb030c68b Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期三, 20 五月 2026 17:42:09 +0800
Subject: [PATCH] 企业新闻
---
src/views/officeProcessAutomation/ApproveManage/approve-list/approveListConstants.js | 122 ++++++++++++++++++++++++++++++++++++----
1 files changed, 108 insertions(+), 14 deletions(-)
diff --git a/src/views/officeProcessAutomation/ApproveManage/approve-list/approveListConstants.js b/src/views/officeProcessAutomation/ApproveManage/approve-list/approveListConstants.js
index c16dcd8..4aa3c61 100644
--- a/src/views/officeProcessAutomation/ApproveManage/approve-list/approveListConstants.js
+++ b/src/views/officeProcessAutomation/ApproveManage/approve-list/approveListConstants.js
@@ -33,6 +33,7 @@
/** 鍒楄〃鏌ヨ锛氬鎵圭姸鎬侊紙涓庡悗绔� status 鏋氫妇涓�鑷达級 */
export const APPROVAL_STATUS_SEARCH_OPTIONS = [
+ { value: "DRAFT", label: "鑽夌" },
{ value: "PENDING", label: "寰呭鎵�" },
{ value: "APPROVED", label: "宸查�氳繃" },
{ value: "REJECTED", label: "宸查┏鍥�" },
@@ -40,34 +41,105 @@
/**
* 瀹℃壒鐘舵�佸睍绀猴紙涓庡悗绔� status 鏋氫妇涓�鑷达級
- * PENDING 鈫� 寰呭鎵�/杩涜涓� APPROVED 鈫� 宸查�氳繃/宸插畬鎴� REJECTED 鈫� 宸查┏鍥�
+ * DRAFT鈫掕崏绋� PENDING鈫掑緟瀹℃壒/杩涜涓� APPROVED鈫掑凡閫氳繃/宸插畬鎴� REJECTED鈫掑凡椹冲洖
*/
export const APPROVAL_STATUS_OPTIONS = [
+ { value: "draft", api: "DRAFT", label: "鑽夌" },
{ value: "pending", api: "PENDING", label: "寰呭鎵�" },
{ value: "approved", api: "APPROVED", label: "宸查�氳繃" },
{ value: "rejected", api: "REJECTED", label: "宸查┏鍥�" },
{ value: "cancelled", api: "CANCELLED", label: "宸叉挙閿�" },
];
+/** 鏁板瓧鐘舵�佺爜锛堥儴鍒嗗悗绔敤 0/1/2锛� */
+const STATUS_NUMERIC_MAP = {
+ 0: "pending",
+ 1: "approved",
+ 2: "rejected",
+ 3: "cancelled",
+ 4: "cancelled",
+};
+
/** 鍚庣 status / 椤甸潰 approvalStatus 鈫� 缁熶竴椤甸潰 key锛坧ending | approved | rejected | cancelled锛� */
export function normalizeApprovalStatusKey(v) {
- const s = String(v ?? "").trim();
+ if (v == null || v === "") return "pending";
+ if (typeof v === "number" || (typeof v === "string" && /^\d+$/.test(v.trim()))) {
+ const numKey = STATUS_NUMERIC_MAP[Number(v)];
+ if (numKey) return numKey;
+ }
+ 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 === "DRAFT") return "draft";
+ if (upper === "PUBLISHED") return "approved";
+ if (upper === "OFFLINE") return "cancelled";
+ if (upper === "APPROVED" || upper === "APPROVE" || upper === "PASS" || upper === "AGREE") {
+ return "approved";
+ }
+ if (
+ upper === "REJECTED" ||
+ upper === "REJECT" ||
+ upper === "REFUSE" ||
+ upper === "REFUSED" ||
+ upper === "DENIED"
+ ) {
+ return "rejected";
+ }
+ if (upper === "CANCELLED" || upper === "CANCEL" || upper === "REVOKED") return "cancelled";
if (
upper === "PENDING" ||
upper === "IN_PROGRESS" ||
upper === "PROCESSING" ||
- upper === "RUNNING"
+ upper === "RUNNING" ||
+ upper === "WAIT" ||
+ upper === "WAITING"
) {
return "pending";
}
+ if (s.includes("鑽夌")) return "draft";
+ if (s.includes("椹冲洖") || s.includes("鎷掔粷")) return "rejected";
+ if (s.includes("涓嬬嚎")) return "cancelled";
+ if (s.includes("鎾ら攢")) return "cancelled";
+ if (s.includes("鍙戝竷") || s.includes("閫氳繃") || s.includes("瀹屾垚")) return "approved";
+ if (s.includes("寰呭") || s.includes("杩涜涓�") || s.includes("瀹℃壒涓�")) return "pending";
const lower = s.toLowerCase();
- if (["pending", "approved", "rejected", "cancelled"].includes(lower)) return lower;
+ if (["draft", "pending", "approved", "rejected", "cancelled"].includes(lower)) return lower;
return "pending";
+}
+
+/** 浠庡垪琛�/璇︽儏琛岃В鏋愬悗绔師濮嬬姸鎬侊紙鍏煎澶氬瓧娈靛懡鍚嶏級 */
+export function resolveInstanceStatusRaw(row) {
+ if (!row || typeof row !== "object") return "";
+ const candidates = [
+ row.status,
+ row.statusRaw,
+ row.approvalStatus,
+ row.statusName,
+ row.statusLabel,
+ row.approvalStatusName,
+ row.statusDesc,
+ row.instanceStatus,
+ row.approvalInstanceStatus,
+ row.approveStatus,
+ row.auditStatus,
+ row.approvalInstance?.status,
+ row.approvalInstanceVo?.status,
+ ];
+ for (const c of candidates) {
+ if (c != null && c !== "") return c;
+ }
+ const tasks = row.tasks;
+ if (Array.isArray(tasks) && tasks.length) {
+ const rejected = tasks.some((t) =>
+ normalizeApprovalStatusKey(t?.status ?? t?.taskStatus) === "rejected"
+ );
+ if (rejected) return "REJECTED";
+ const allApproved = tasks.every((t) =>
+ normalizeApprovalStatusKey(t?.status ?? t?.taskStatus) === "approved"
+ );
+ if (allApproved) return "APPROVED";
+ }
+ return "";
}
/** 鎻愪氦寮圭獥锛氭ā鏉垮崱鐗囷紙鏉ヨ嚜鍚庣鍒楄〃锛� */
@@ -322,12 +394,15 @@
dto.id = existingRow?.id ?? submitForm?.instanceId;
dto.instanceNo = existingRow?.instanceNo ?? submitForm?.instanceNo ?? "";
dto.status =
- existingRow?.statusRaw || mapInstanceStatusToApi(existingRow?.approvalStatus) || "PENDING";
+ submitForm?.saveStatusApi ||
+ existingRow?.statusRaw ||
+ mapInstanceStatusToApi(existingRow?.approvalStatus) ||
+ "PENDING";
dto.currentLevel = existingRow?.currentLevel ?? submitForm?.currentLevel ?? 1;
dto.applicantId = existingRow?.applicantId ?? existingRow?.applicantNo;
dto.applicantName = existingRow?.applicantName || "";
} else {
- dto.status = "PENDING";
+ dto.status = submitForm?.saveStatusApi || "PENDING";
dto.currentLevel = 1;
dto.applicantId = userStore?.id;
dto.applicantName = userStore?.nickName || userStore?.name || "";
@@ -352,6 +427,12 @@
return normalizeApprovalStatusKey(status);
}
+/** 鍒楄〃/璇︽儏琛� 鈫� 椤甸潰 approvalStatus key */
+export function mapInstanceApprovalStatusFromRow(row) {
+ const raw = resolveInstanceStatusRaw(row);
+ return normalizeApprovalStatusKey(raw);
+}
+
/** 椤甸潰 approvalStatus 鈫� 鍚庣 status */
export function mapInstanceStatusToApi(approvalStatus) {
const key = normalizeApprovalStatusKey(approvalStatus);
@@ -370,7 +451,8 @@
/** 鍒嗛〉鍒楄〃椤� 鈫� 琛ㄦ牸琛� */
export function mapInstanceFromApi(row) {
if (!row) return {};
- const approvalStatus = mapInstanceStatusFromApi(row.status);
+ const statusRaw = resolveInstanceStatusRaw(row);
+ const approvalStatus = normalizeApprovalStatusKey(statusRaw);
const createTime = formatDisplayTime(row.createTime ?? row.applyTime ?? "");
const applyTime = formatDisplayTime(row.applyTime ?? "");
const finishTime = formatDisplayTime(row.finishTime ?? "");
@@ -397,7 +479,7 @@
unread: Boolean(row.isApprove) && approvalStatus === "pending",
isApprove: Boolean(row.isApprove),
approvalStatus,
- statusRaw: row.status,
+ statusRaw: statusRaw || row.status,
createTime,
applyTime: applyTime === "鈥�" ? "" : applyTime,
finishTime: finishTime === "鈥�" ? "" : finishTime,
@@ -439,10 +521,16 @@
}
export function buildApprovalInstanceListParams({ page, searchForm, businessType, extraParams }) {
+ const extra = { ...(extraParams && typeof extraParams === "object" ? extraParams : {}) };
+ if (extra.createTime != null && extra.createTimeStart == null) {
+ extra.createTimeStart = extra.createTime;
+ }
+ delete extra.createTime;
+
const params = {
current: page.current,
size: page.size,
- ...(extraParams && typeof extraParams === "object" ? extraParams : {}),
+ ...extra,
};
const bizType = businessType ?? searchForm?.businessType;
if (bizType != null && bizType !== "") {
@@ -451,9 +539,12 @@
if (searchForm?.status) {
params.status = searchForm.status;
}
- const range = searchForm?.createTimeRange;
+ const range =
+ searchForm?.createTimeRange ??
+ searchForm?.applyDateRange ??
+ searchForm?.transferDateRange;
if (Array.isArray(range) && range[0]) {
- params.createTime = range[0];
+ params.createTimeStart = range[0];
}
if (Array.isArray(range) && range[1]) {
params.createTimeEnd = range[1];
@@ -483,6 +574,7 @@
/** 涓氬姟鐢宠椤电姸鎬佹枃妗堬細PENDING鈫掕繘琛屼腑 APPROVED鈫掑凡瀹屾垚 REJECTED鈫掑凡椹冲洖 */
export function businessApprovalStatusLabel(v) {
const key = normalizeApprovalStatusKey(v);
+ if (key === "draft") return "鑽夌";
if (key === "pending") return "杩涜涓�";
if (key === "approved") return "宸插畬鎴�";
if (key === "rejected") return "宸查┏鍥�";
@@ -503,6 +595,7 @@
export function businessApprovalStatusTagType(v) {
const key = normalizeApprovalStatusKey(v);
+ if (key === "draft") return "info";
if (key === "approved") return "success";
if (key === "rejected") return "danger";
if (key === "cancelled") return "info";
@@ -511,6 +604,7 @@
export function approvalStatusTagType(v) {
const key = normalizeApprovalStatusKey(v);
+ if (key === "draft") return "info";
if (key === "approved") return "success";
if (key === "rejected") return "danger";
if (key === "cancelled") return "info";
--
Gitblit v1.9.3