From a0535e42ebe01366d3bb83e00eb0180b34682a63 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 04 六月 2026 14:04:19 +0800
Subject: [PATCH] 马铃薯app 1.客户往来、供应商往来查询展示修改 2.环境检测页面展示修改
---
src/pages/oa/_utils/approveListUtils.js | 129 ++++++++++++++++++++++++++----------------
1 files changed, 80 insertions(+), 49 deletions(-)
diff --git a/src/pages/oa/_utils/approveListUtils.js b/src/pages/oa/_utils/approveListUtils.js
index 965b3dd..538fec9 100644
--- a/src/pages/oa/_utils/approveListUtils.js
+++ b/src/pages/oa/_utils/approveListUtils.js
@@ -5,6 +5,13 @@
isSelectField,
mergeFormConfigForEdit,
} from "./approvalFormField.js";
+import {
+ appendDotNotationQuery,
+ buildApprovalInstanceSearchDto,
+ formatKnownSelectLabel,
+ resolveInstanceFormPayload,
+ resolveListFieldRawValue,
+} from "./approvalModuleListSearch.js";
export const DETAIL_STORAGE_KEY = "oa_approve_instance_detail_row";
@@ -57,9 +64,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 +84,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 */
@@ -228,8 +274,7 @@
}
/**
- * 涓� Web buildApprovalInstanceListParams 涓�鑷达細鎵佸钩 query锛坈urrent/size/businessType/...锛�
- * 瀹℃壒鍒楄〃涓嶄紶 businessType 鍗虫煡鍏ㄩ儴
+ * 涓� Web buildApprovalInstanceListParams 涓�鑷�
*/
export function buildInstanceListParams({
page,
@@ -237,37 +282,20 @@
extraDto = {},
searchForm,
}) {
- const extra = { ...(extraDto && typeof extraDto === "object" ? extraDto : {}) };
- if (extra.createTime != null && extra.createTimeStart == null) {
- extra.createTimeStart = extra.createTime;
+ const dto = buildApprovalInstanceSearchDto(searchForm, extraDto);
+ const bizType = businessType ?? searchForm?.businessType;
+ if (bizType != null && bizType !== "") {
+ dto.businessType = bizType;
}
- delete extra.createTime;
const params = {
current: page.current,
size: page.size,
- ...extra,
+ "page.current": page.current,
+ "page.size": page.size,
+ ...dto,
};
-
- const bizType = businessType ?? searchForm?.businessType;
- if (bizType != null && bizType !== "") {
- params.businessType = bizType;
- }
- if (searchForm?.status) {
- params.status = searchForm.status;
- }
-
- const range =
- searchForm?.createTimeRange ??
- searchForm?.applyDateRange ??
- searchForm?.transferDateRange;
- if (Array.isArray(range) && range[0] && params.createTimeStart == null) {
- params.createTimeStart = range[0];
- }
- if (Array.isArray(range) && range[1] && params.createTimeEnd == null) {
- params.createTimeEnd = range[1];
- }
-
+ appendDotNotationQuery(params, "approvalInstanceDto", dto);
return params;
}
@@ -279,18 +307,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 +336,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 +352,7 @@
createTime: formatDateTime(row.applyTime || row.createTime),
displayRows,
formPayload,
+ formFieldDefs: fields,
...extra,
};
}
--
Gitblit v1.9.3