From 856f10107b7681f91114dc48991ebd121a3a8c3f Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期四, 21 五月 2026 15:20:30 +0800
Subject: [PATCH] 查询条件分类查询区分
---
src/pages/oa/_utils/approveListUtils.js | 91 ++++++++++++++++++++++++++++++++++-----------
1 files changed, 69 insertions(+), 22 deletions(-)
diff --git a/src/pages/oa/_utils/approveListUtils.js b/src/pages/oa/_utils/approveListUtils.js
index 965b3dd..f7ddc00 100644
--- a/src/pages/oa/_utils/approveListUtils.js
+++ b/src/pages/oa/_utils/approveListUtils.js
@@ -5,6 +5,11 @@
isSelectField,
mergeFormConfigForEdit,
} from "./approvalFormField.js";
+import {
+ formatKnownSelectLabel,
+ resolveInstanceFormPayload,
+ resolveListFieldRawValue,
+} from "./approvalModuleListSearch.js";
export const DETAIL_STORAGE_KEY = "oa_approve_instance_detail_row";
@@ -57,9 +62,19 @@
return parseTime(val, "{y}-{m}-{d} {h}:{i}:{s}") || String(val);
}
-/** 瑙f瀽瀹炰緥 formConfig 涓哄彧璇诲睍绀哄瓧娈� */
-export function resolveInstanceDisplayFields(formConfig) {
- const merged = mergeFormConfigForEdit("", formConfig);
+/** 瑙f瀽瀹炰緥涓哄彧璇诲睍绀哄瓧娈碉紙鍚堝苟 formPayload锛屾敮鎸佷紶鏁磋鎴栦粎 formConfig锛� */
+export function resolveInstanceDisplayFields(formConfigOrRow) {
+ const row =
+ formConfigOrRow &&
+ typeof formConfigOrRow === "object" &&
+ (formConfigOrRow.formConfig != null ||
+ formConfigOrRow.formPayload != null ||
+ formConfigOrRow.formFieldDefs != null)
+ ? formConfigOrRow
+ : { formConfig: formConfigOrRow };
+ const { fields } = resolveInstanceFormPayload(row);
+ if (fields.length) return fields.filter(f => f?.key);
+ const merged = mergeFormConfigForEdit("", row.formConfig);
return (merged.fields || []).filter(f => f?.key);
}
@@ -67,10 +82,39 @@
const val = field.value ?? field.defaultValue;
if (val === undefined || val === null || val === "") return "-";
if (isSelectField(field)) {
- return getFieldOptionLabel(field, val) || String(val);
+ const fromOptions = getFieldOptionLabel(field, val);
+ if (fromOptions && fromOptions !== "-") return fromOptions;
+ const known = formatKnownSelectLabel(field.key, val);
+ if (known) return known;
+ return String(val);
}
+ const known = formatKnownSelectLabel(field?.key, val);
+ if (known) return known;
const shown = formatFieldDisplayValue(field, val);
return shown || String(val);
+}
+
+const DATETIME_LIST_PROPS = new Set([
+ "startTime",
+ "endTime",
+ "overtimeDate",
+ "applyTime",
+]);
+
+function formatListFieldDisplay(prop, val, field) {
+ if (val === undefined || val === null || val === "") return "-";
+ if (DATETIME_LIST_PROPS.has(prop)) {
+ const shown = formatDateTime(val);
+ if (shown && shown !== "-") return shown;
+ }
+ if (field?.type === "datetimerange") {
+ const shown = formatFieldDisplayValue(field, val);
+ if (shown) return shown;
+ }
+ if (field) return displayFieldValue({ ...field, value: val });
+ const known = formatKnownSelectLabel(prop, val);
+ if (known) return known;
+ return String(val);
}
/** 瀹℃壒璁板綍 result锛歛pproved | rejected | pending */
@@ -279,18 +323,23 @@
};
}
-/** 浠� formConfig 鎻愬彇鍒楄〃灞曠ず瀛楁锛坙abel + value锛� */
-export function buildFormDisplayRows(formConfig, listFields = []) {
- const fields = resolveInstanceDisplayFields(formConfig);
+/** 浠庡疄渚嬭鎻愬彇鍒楄〃灞曠ず瀛楁锛坙abel + value锛屽惈 formPayload锛� */
+export function buildFormDisplayRows(row, listFields = []) {
+ const { fields, formPayload } = resolveInstanceFormPayload(row);
+ const fieldByKey = new Map((fields || []).map(f => [f.key, f]));
const rows = [];
- const propKeys = (listFields || []).map(f => f.prop).filter(Boolean);
+ const defs = listFields || [];
- if (propKeys.length) {
- propKeys.forEach(prop => {
- const hit = fields.find(f => f.key === prop);
- if (hit) {
- rows.push({ label: hit.label, value: displayFieldValue(hit) });
- }
+ if (defs.length) {
+ defs.forEach(def => {
+ if (!def?.prop) return;
+ const prop = def.prop;
+ const hit = fieldByKey.get(prop);
+ const raw = resolveListFieldRawValue(prop, row, fields, formPayload);
+ rows.push({
+ label: def.label || hit?.label || prop,
+ value: formatListFieldDisplay(prop, raw, hit),
+ });
});
} else {
fields.slice(0, 3).forEach(f => {
@@ -303,17 +352,14 @@
/** 鍒楄〃琛屽寮猴紙淇濈暀鍘熷瀛楁渚涜鎯�/缂栬緫锛� */
export function mapInstanceListRow(row, listFields = []) {
if (!row) return {};
- const displayRows = buildFormDisplayRows(row.formConfig, listFields);
+ const displayRows = buildFormDisplayRows(row, listFields);
const extra = {};
- const formFields = resolveInstanceDisplayFields(row.formConfig);
+ const { fields, formPayload } = resolveInstanceFormPayload(row);
(listFields || []).forEach(def => {
if (!def?.prop) return;
- const hit = formFields.find(f => f.key === def.prop);
- extra[def.prop] = hit ? displayFieldValue(hit) : "-";
- });
- const formPayload = {};
- formFields.forEach(f => {
- if (f?.key) formPayload[f.key] = f.value ?? f.defaultValue ?? "";
+ const hit = fields.find(f => f.key === def.prop);
+ const raw = resolveListFieldRawValue(def.prop, row, fields, formPayload);
+ extra[def.prop] = formatListFieldDisplay(def.prop, raw, hit);
});
return {
...row,
@@ -322,6 +368,7 @@
createTime: formatDateTime(row.applyTime || row.createTime),
displayRows,
formPayload,
+ formFieldDefs: fields,
...extra,
};
}
--
Gitblit v1.9.3