From ec4a3428d39e2c977cec6edc592887329c4ec8a1 Mon Sep 17 00:00:00 2001 From: ForeverSmiYng Date: Sat, 12 Oct 2024 17:29:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=98=8E=E7=BB=86=E8=A1=8C=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 明细行筛选.js | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 明细行筛选.js diff --git a/明细行筛选.js b/明细行筛选.js new file mode 100644 index 0000000..4888401 --- /dev/null +++ b/明细行筛选.js @@ -0,0 +1,62 @@ +//浏览框或选择框字段的筛选功能函数 +function exactlyFilterForBrowserOrSelector(mainFieldIds, detFieldIds, det_id, rows = undefined) { + let all_rows_str = WfForm.getDetailAllRowIndexStr("detail_" + det_id); + if (all_rows_str.length == 0) { + //如果明细为空,函数结束 + return; + } + let all_rows = all_rows_str.split(","); + let det_rowIndexs; + if (rows == undefined) { + det_rowIndexs = all_rows; + } else { + det_rowIndexs = rows; + } + let mainFieldValues = []; + let new_detFieldIds = []; + mainFieldIds.forEach((mfi, i) => { + let mfi_value = WfForm.getFieldValue(mfi); + if (mfi_value.length > 0) { + mainFieldValues.push(mfi_value.split(",")); + new_detFieldIds.push(detFieldIds[i]); + } + }); + //如果所有主表筛选字段均为空值,即无筛选,显示所有明细行,函数结束 + if (mainFieldValues.length == 0) { + WfForm.controlDetailRowDisplay("detail_" + det_id, "all", false); + return; + } + //逐行明细判断 + det_rowIndexs.forEach(rowIndex => { + if (all_rows.includes(rowIndex)) { + //逐个筛选字段判断 + let check_res1 = false; + let i = 0; + for (const dfi of new_detFieldIds) { + let dfi_values = WfForm.getFieldValue(dfi + "_" + rowIndex); + if (dfi_values.length == 0) { + //如果明细行对应字段为空,匹配失败,中止循环 + check_res1 = true; + break; + } else { + //如果明细行对应字段为非空,逐个判断是否在筛选范围内 + let check_res2 = false; + for (const dfi_value of dfi_values.split(",")) { + if (mainFieldValues[i].includes(dfi_value)) { + //如果明细行对应字段值在筛选范围,中止最近循环 + check_res2 = true; + break; + } + } + if (check_res2 == false) { + //匹配失败,中止循环 + check_res1 = true; + break; + } + } + i++; + } + WfForm.controlDetailRowDisplay("detail_" + det_id, rowIndex + "", check_res1); + } + }); +} \ No newline at end of file