From 74892ea80f203c0e8d305152c4fad75ceaafe22f Mon Sep 17 00:00:00 2001 From: HuangShun <148689675+huabuweixin@users.noreply.github.com> Date: Thu, 5 Feb 2026 11:24:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DBug138=20=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E7=AE=A1=E7=90=86-=E3=80=8B=E5=9F=BA=E7=A1=80=E6=95=B0?= =?UTF-8?q?=E6=8D=AE-=E3=80=8B=E7=97=85=E5=8C=BA/=E5=BA=8A=E4=BD=8D?= =?UTF-8?q?=E7=AE=A1=E7=90=86=EF=BC=9A=E5=85=B3=E8=81=94=E7=A7=91=E5=AE=A4?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E7=9A=84=E4=B8=8B=E6=8B=89=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/basicmanage/ward/components/api.js | 3 +- .../src/views/basicmanage/ward/index.vue | 33 ++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/openhis-ui-vue3/src/views/basicmanage/ward/components/api.js b/openhis-ui-vue3/src/views/basicmanage/ward/components/api.js index b1060b66..45d9c7fd 100644 --- a/openhis-ui-vue3/src/views/basicmanage/ward/components/api.js +++ b/openhis-ui-vue3/src/views/basicmanage/ward/components/api.js @@ -14,10 +14,11 @@ export function getList(queryParams) { /** * 获取科室下拉列表 */ -export function getOrgList() { +export function getOrgList(queryParams) { return request({ url: '/base-data-manage/organization/organization', method: 'get', + params: queryParams }) } diff --git a/openhis-ui-vue3/src/views/basicmanage/ward/index.vue b/openhis-ui-vue3/src/views/basicmanage/ward/index.vue index 95096b92..71a483f7 100644 --- a/openhis-ui-vue3/src/views/basicmanage/ward/index.vue +++ b/openhis-ui-vue3/src/views/basicmanage/ward/index.vue @@ -385,10 +385,41 @@ const rules = ref({ }, ], }); +// 递归过滤树形数据,只保留classEnum包含住院(2)的科室 +function filterOrgByClassEnum(orgList, targetClassEnum = '2') { + if (!orgList || !Array.isArray(orgList)) return []; + + const result = []; + for (const item of orgList) { + // 深拷贝当前节点,避免修改原始数据 + const newItem = { ...item }; + + // 检查当前节点的classEnum是否包含目标值 + let isMatch = false; + if (newItem.classEnum !== null && newItem.classEnum !== undefined) { + const classEnumStr = String(newItem.classEnum); + const classEnumValues = classEnumStr.split(',').map(v => v.trim()); + isMatch = classEnumValues.includes(targetClassEnum); + } + + // 递归过滤子节点 + if (newItem.children && newItem.children.length > 0) { + newItem.children = filterOrgByClassEnum(newItem.children, targetClassEnum); + } + + // 如果当前节点匹配或者有匹配的子节点,则保留 + if (isMatch || (newItem.children && newItem.children.length > 0)) { + result.push(newItem); + } + } + return result; +} // 获取科室下啦树 function init() { getOrgList().then((res) => { - organization.value = res.data.records; + const records = res.data.records || []; + // 过滤只保留住院科室(classEnum包含2) + organization.value = filterOrgByClassEnum(records, '2'); }); } /**