zhangwencui
2 天以前 f670b79094c95d791fc43c8fc8b5858ebf8426dc
src/pages/oa/_utils/approvalModuleListSearch.js
@@ -1,3 +1,4 @@
import dayjs from "dayjs";
import {
  APPROVAL_MODULE_KEYS,
  APPROVAL_MODULE_REGISTRY,
@@ -226,16 +227,27 @@
  placeholder: "请输入审批单号",
};
/** 组装 approvalInstanceDto 查询片段(申请人 + 审批单号) */
/** 组装 approvalInstanceDto 查询片段(申请人 + 审批单号 + 状态 + 时间范围,与 Web 一致) */
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;
}
@@ -306,7 +318,12 @@
  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;
}
function matchApplicantKeyword(row, keyword) {
@@ -372,18 +389,35 @@
  });
}
/** 按申请人、审批单号做前端兜底筛选 */
/** 按申请人、审批单号、状态、时间范围做前端兜底筛选 */
export function filterRowsByModuleSearch(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;
  });
}
function prependInstanceNoField(fields, moduleKey) {