From 31acf8d8830c5b8b33e0599018544aa4d68e351b Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期一, 25 五月 2026 14:12:24 +0800
Subject: [PATCH] Merge branch 'dev_NEW_pro' of http://114.132.189.42:9002/r/product-inventory-management into dev_NEW_pro

---
 src/views/officeProcessAutomation/ApproveManage/approve-shared/approvalInstanceListSearch.js |   82 ++++++++++++++++++++++++++---------------
 1 files changed, 52 insertions(+), 30 deletions(-)

diff --git a/src/views/officeProcessAutomation/ApproveManage/approve-shared/approvalInstanceListSearch.js b/src/views/officeProcessAutomation/ApproveManage/approve-shared/approvalInstanceListSearch.js
index 3042d0c..80dda5c 100644
--- a/src/views/officeProcessAutomation/ApproveManage/approve-shared/approvalInstanceListSearch.js
+++ b/src/views/officeProcessAutomation/ApproveManage/approve-shared/approvalInstanceListSearch.js
@@ -1,3 +1,4 @@
+import dayjs from "dayjs";
 import { APPROVAL_MODULE_KEYS } from "./approvalModuleRegistry.js";
 
 /** 鏀寔瀹℃壒鍗曞彿鏌ヨ/涓昏〃灞曠ず鐨勫鎵圭敵璇锋ā鍧� */
@@ -48,16 +49,29 @@
   return no ? { instanceNo: no } : {};
 }
 
-/** 缁勮 approvalInstanceDto 鏌ヨ鐗囨锛堢敵璇蜂汉 + 瀹℃壒鍗曞彿锛� */
+/** 缁勮 approvalInstanceDto 鏌ヨ鐗囨锛堢敵璇蜂汉 + 瀹℃壒鍗曞彿 + 鐘舵�� + 鏃堕棿鑼冨洿锛� */
 export function buildApprovalInstanceSearchDto(searchForm = {}, extraParams = {}) {
   const dto = {
     ...(extraParams && typeof extraParams === "object" ? extraParams : {}),
   };
   Object.assign(dto, pickApplicantFromSearchForm(searchForm));
   Object.assign(dto, pickInstanceNoFromSearchForm(searchForm));
+
+  // 瀹℃壒鐘舵��
+  if (searchForm?.status) {
+    dto.status = searchForm.status;
+  }
+
+  // 鍒涘缓鏃堕棿鑼冨洿
+  const range = searchForm?.createTimeRange;
+  if (Array.isArray(range) && range[0]) {
+    dto.createTimeStart = range[0] + (range[0].includes(":") ? "" : " 00:00:00");
+  }
+  if (Array.isArray(range) && range[1]) {
+    dto.createTimeEnd = range[1] + (range[1].includes(":") ? "" : " 23:59:59");
+  }
+
   delete dto.createTime;
-  delete dto.createTimeStart;
-  delete dto.createTimeEnd;
   return dto;
 }
 
@@ -74,26 +88,17 @@
 function matchApplicantKeyword(row, keyword) {
   const kw = (keyword || "").trim().toLowerCase();
   if (!kw) return true;
-  const parts = [
-    row?.applicantName,
-    row?.applicantNo,
-    row?.applicantId,
-    getRowPayloadValue(row, ["applicant", "applicantName", "applicantId"]),
-  ]
-    .filter((v) => v != null && v !== "")
-    .map((v) => String(v).toLowerCase());
-  return parts.some((p) => p.includes(kw));
+  const parts = [row?.applicantName, row?.applicantNo, row?.applicantId, getRowPayloadValue(row, ["applicant", "applicantName", "applicantId"])]
+    .filter(v => v != null && v !== "")
+    .map(v => String(v).toLowerCase());
+  return parts.some(p => p.includes(kw));
 }
 
 function matchApplicantId(row, applicantId) {
   if (applicantId == null || applicantId === "") return true;
   const id = String(applicantId);
   if (row?.applicantId != null && String(row.applicantId) === id) return true;
-  const payloadApplicant = getRowPayloadValue(row, [
-    "applicant",
-    "applicantId",
-    "applicantUserId",
-  ]);
+  const payloadApplicant = getRowPayloadValue(row, ["applicant", "applicantId", "applicantUserId"]);
   return String(payloadApplicant) === id;
 }
 
@@ -106,31 +111,48 @@
 function matchInstanceNo(row, instanceNo) {
   const kw = (instanceNo || "").trim().toLowerCase();
   if (!kw) return true;
-  const parts = [row?.instanceNo, row?.bizId]
-    .filter((v) => v != null && v !== "")
-    .map((v) => String(v).toLowerCase());
-  return parts.some((p) => p.includes(kw));
+  const parts = [row?.instanceNo, row?.bizId].filter(v => v != null && v !== "").map(v => String(v).toLowerCase());
+  return parts.some(p => p.includes(kw));
 }
 
-/** 鏄惁瀛樺湪鍒楄〃绛涢�夋潯浠讹紙鐢宠浜� / 瀹℃壒鍗曞彿锛� */
+/** 鏄惁瀛樺湪鍒楄〃绛涢�夋潯浠讹紙鐢宠浜� / 瀹℃壒鍗曞彿 / 鐘舵�� / 鏃堕棿鑼冨洿锛� */
 export function hasActiveModuleSearch(moduleKey, searchForm = {}) {
   const sf = searchForm || {};
   if ((sf.instanceNo || "").trim()) return true;
   if ((sf.applicantKeyword || "").trim()) return true;
   if ((sf.applicantName || "").trim()) return true;
-  return sf.applicantId != null && sf.applicantId !== "";
+  if (sf.applicantId != null && sf.applicantId !== "") return true;
+  if (sf.status) return true;
+  if (Array.isArray(sf.createTimeRange) && sf.createTimeRange.length === 2) return true;
+  return false;
 }
 
-/** 鎸夌敵璇蜂汉銆佸鎵瑰崟鍙峰仛鍓嶇鍏滃簳绛涢�� */
+/** 鎸夌敵璇蜂汉銆佸鎵瑰崟鍙枫�佺姸鎬併�佹椂闂磋寖鍥村仛鍓嶇鍏滃簳绛涢�� */
 export function filterInstanceRowsByModuleSearch(moduleKey, rows, searchForm = {}) {
   const sf = searchForm || {};
   const list = Array.isArray(rows) ? rows : [];
   if (!hasActiveModuleSearch(moduleKey, sf)) return list;
 
-  return list.filter(
-    (row) =>
-      matchInstanceNo(row, sf.instanceNo) &&
-      matchApplicantId(row, sf.applicantId) &&
-      matchApplicantKeyword(row, sf.applicantKeyword || sf.applicantName)
-  );
+  return list.filter(row => {
+    // 瀹℃壒鍗曞彿
+    if (!matchInstanceNo(row, sf.instanceNo)) return false;
+    // 鐢宠浜�
+    if (!matchApplicantId(row, sf.applicantId)) return false;
+    if (!matchApplicantKeyword(row, sf.applicantKeyword || sf.applicantName)) return false;
+    // 鐘舵��
+    if (sf.status && String(row.statusRaw || row.status).toUpperCase() !== String(sf.status).toUpperCase()) {
+      return false;
+    }
+    // 鏃堕棿鑼冨洿
+    if (Array.isArray(sf.createTimeRange) && sf.createTimeRange.length === 2) {
+      const rowTime = row.createTime || row.applyTime;
+      if (rowTime) {
+        const t = dayjs(rowTime);
+        const start = dayjs(sf.createTimeRange[0] + " 00:00:00");
+        const end = dayjs(sf.createTimeRange[1] + " 23:59:59");
+        if (t.isBefore(start) || t.isAfter(end)) return false;
+      }
+    }
+    return true;
+  });
 }

--
Gitblit v1.9.3