From e4debe98827b39f521b8461ac184ee793a026fdd Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 28 九月 2026 23:30:57 +0800
Subject: [PATCH] feat(utils): 添加日期格式化工具函数并统一应用到各个组件
---
src/views/officeProcessAutomation/ReimburseManage/shared/finReimbursementMappers.js | 94 ++++++++++++++++++++++++++++++++++------------
1 files changed, 69 insertions(+), 25 deletions(-)
diff --git a/src/views/officeProcessAutomation/ReimburseManage/shared/finReimbursementMappers.js b/src/views/officeProcessAutomation/ReimburseManage/shared/finReimbursementMappers.js
index 2525f70..c3bf0fc 100644
--- a/src/views/officeProcessAutomation/ReimburseManage/shared/finReimbursementMappers.js
+++ b/src/views/officeProcessAutomation/ReimburseManage/shared/finReimbursementMappers.js
@@ -173,29 +173,61 @@
return out;
}
-/** 鏄惁瀛樺湪鍒楄〃绛涢�夋潯浠讹紙浠呯敵璇蜂汉锛� */
-export function hasActiveReimbursementSearch(searchForm = {}) {
- return Boolean((searchForm?.applicantKeyword || "").trim());
+
+export function expenseTypeToCategory(typeLabel) {
+ const hit = EXPENSE_CATEGORY_OPTIONS.find((x) => x.label === typeLabel || x.value === typeLabel);
+ return hit?.value || typeLabel || "";
}
-/** 鏈嶅姟绔湭鐢熸晥鏃讹紝鎸夌敵璇蜂汉鍋氬墠绔厹搴曠瓫閫� */
+/** 鏄惁瀛樺湪鍒楄〃绛涢�夋潯浠� */
+export function hasActiveReimbursementSearch(searchForm = {}) {
+ return Boolean(
+ (searchForm?.applicantKeyword || "").trim() ||
+ searchForm?.deptId ||
+ searchForm?.expenseCategory ||
+ (searchForm?.applyTimeRange && searchForm.applyTimeRange.length === 2)
+ );
+}
+
+/** 鏈嶅姟绔湭鐢熸晥鏃讹紝鎸夋潯浠跺仛鍓嶇鍏滃簳绛涢�� */
export function filterReimbursementRowsBySearch(rows, searchForm = {}) {
const list = Array.isArray(rows) ? rows : [];
- const kw = (searchForm?.applicantKeyword || "").trim().toLowerCase();
- if (!kw) return list;
+ let result = list;
- return list.filter((row) => {
- const parts = [
- row.applicantName,
- row.employeeName,
- row.applicantNo,
- row.applicantCode,
- row.employeeNo,
- ]
- .filter((v) => v != null && v !== "")
- .map((v) => String(v).toLowerCase());
- return parts.some((p) => p.includes(kw));
- });
+ const kw = (searchForm?.applicantKeyword || "").trim().toLowerCase();
+ if (kw) {
+ result = result.filter((row) => {
+ const parts = [
+ row.applicantName,
+ row.employeeName,
+ row.applicantNo,
+ row.applicantCode,
+ row.employeeNo,
+ ]
+ .filter((v) => v != null && v !== "")
+ .map((v) => String(v).toLowerCase());
+ return parts.some((p) => p.includes(kw));
+ });
+ }
+
+ if (searchForm?.deptId) {
+ result = result.filter(row => String(row.deptId) === String(searchForm.deptId));
+ }
+
+ if (searchForm?.expenseCategory) {
+ result = result.filter(row => row.expenseCategory === searchForm.expenseCategory);
+ }
+
+ if (searchForm?.applyTimeRange && searchForm.applyTimeRange.length === 2) {
+ const start = searchForm.applyTimeRange[0];
+ const end = searchForm.applyTimeRange[1];
+ result = result.filter(row => {
+ const t = (row.applyTime || row.createTime || "").substring(0, 10);
+ return t >= start && t <= end;
+ });
+ }
+
+ return result;
}
/** 鎵佸钩鍖栦负 Spring GET 鍙粦瀹氱殑 query锛坒inReimbursementDto.xxx锛屽嬁鐢ㄦ柟鎷彿锛� */
@@ -216,6 +248,10 @@
}) {
const dto = {
reimbursementType,
+ deptId: searchForm.deptId || undefined,
+ expenseType: searchForm.expenseCategory ? expenseCategoryToType(searchForm.expenseCategory) : undefined,
+ createTimeStart: searchForm.applyTimeRange?.[0] || undefined,
+ createTimeEnd: searchForm.applyTimeRange?.[1] || undefined,
...pickApplicantQuery(searchForm),
...(extraDto && typeof extraDto === "object" ? extraDto : {}),
};
@@ -227,6 +263,12 @@
"page.size": page.size,
...dto,
};
+
+ if (searchForm.applyTimeRange && searchForm.applyTimeRange.length === 2) {
+ params["params[beginTime]"] = searchForm.applyTimeRange[0] + " 00:00:00";
+ params["params[endTime]"] = searchForm.applyTimeRange[1] + " 23:59:59";
+ }
+
appendDotNotationQuery(params, "finReimbursementDto", dto);
return params;
}
@@ -292,14 +334,12 @@
};
}
-/** 鍒楄〃/璇︽儏鏃堕棿灞曠ず锛圛SO 鈫� YYYY-MM-DD HH:mm:ss锛� */
+/** 鍒楄〃/璇︽儏鏃堕棿灞曠ず锛圛SO 鈫� YYYY-MM-DD锛� */
export function formatReimbursementDateTime(val) {
if (val == null || val === "") return "";
const d = dayjs(val);
if (!d.isValid()) return String(val);
- const raw = String(val);
- const hasTime = raw.includes("T") || /:\d{2}/.test(raw);
- return hasTime ? d.format("YYYY-MM-DD HH:mm:ss") : d.format("YYYY-MM-DD");
+ return d.format("YYYY-MM-DD");
}
/** 鎺ュ彛琛� 鈫� 宸梾鎶ラ攢鍒楄〃琛岋紙鍏煎 useTravelReimburse 瀛楁锛� */
@@ -319,7 +359,8 @@
applicantName: row.applicantName || "",
employeeNo: row.applicantCode || "",
employeeName: row.applicantName || "",
- applicantDeptName: row.applicantDeptName || "",
+ applicantDeptName: row.deptName || "",
+ deptId: row.deptId,
reimburseReason: row.reason || "",
travelStartTime: formatReimbursementDateTime(travel.startTime),
travelEndTime: formatReimbursementDateTime(travel.endTime),
@@ -375,12 +416,14 @@
applicantName: row.applicantName || "",
employeeNo: row.applicantCode || "",
employeeName: row.applicantName || "",
- applicantDeptName: row.applicantDeptName || "",
+ applicantDeptName: row.deptName || "",
+ deptId: row.deptId,
reimburseReason: row.reason || "",
- expenseCategory: row.expenseType || "",
+ expenseCategory: expenseTypeToCategory(row.expenseType) || "",
applyAmount: row.applyAmount,
applyTime: formatReimbursementDateTime(row.createTime),
payee: row.payeeName || "",
+ payer: row.payer || "",
payeeAccount: row.payeeAccount || "",
bankBranch: row.payeeBank || "",
billStatus: row.billStatus,
@@ -846,6 +889,7 @@
applyAmount,
detailTotalAmount: detailTotal,
payeeName: form.payee || "",
+ payer: form.payer || "",
payeeAccount: form.payeeAccount || "",
payeeBank: form.bankBranch || form.payeeBank || "",
billStatus: "IN_APPROVAL",
--
Gitblit v1.9.3