diff --git a/openhis-ui-vue3/src/views/maintainSystem/Inspection/index.vue b/openhis-ui-vue3/src/views/maintainSystem/Inspection/index.vue index d7f87497..21b02482 100644 --- a/openhis-ui-vue3/src/views/maintainSystem/Inspection/index.vue +++ b/openhis-ui-vue3/src/views/maintainSystem/Inspection/index.vue @@ -488,7 +488,24 @@
卫生机构 - + + +
套餐金额 @@ -1006,7 +1023,83 @@ const handleFocus = () => { } */ }; +// 获取当前登录用户信息 +// --- 新增:存储租户/机构列表和当前选中的值 --- +const tenantOptions = ref([]); // 存储从后端获取的租户列表 +const selectedTenantId = ref(null); // 存储当前选中的租户ID +// --- 新增:控制租户列表加载状态 --- +const loadingTenant = ref(false); // 控制下拉框的加载状态 +const fetchTenantList = async () => { + + if (loadingTenant.value) return; // 防止重复请求 + loadingTenant.value = true; + + try { + + const response = await request({ + url: '/system/tenant/page', + method: 'get', + params: { + pageNum: 1, + pageSize: 100 + } + }); + + + + if (response.code === 200) { + let tenantData = []; + + // --- 关键修改:优先检查 records 字段 --- + if (response.data && response.data.records && Array.isArray(response.data.records)) { + tenantData = response.data.records; + + } else if (response.data && response.data.rows && Array.isArray(response.data.rows)) { + // 兼容旧的 rows 格式 + tenantData = response.data.rows; + + } else if (response.data && Array.isArray(response.data)) { + // 兼容最简单的数组格式 + tenantData = response.data; + + } else { + + tenantData = []; + } + + // 格式化数据以适应 el-select + tenantOptions.value = tenantData.map(item => ({ + value: item.id, + label: item.tenantName || item.name || item.orgName || String(item.id) || '未知机构' + })); + + // 如果仍未设置默认值且列表不为空,选择第一个 + if (!selectedTenantId.value && tenantOptions.value.length > 0) { + selectedTenantId.value = tenantOptions.value[0].value; + + } + } else { + + ElMessage.error(response.msg || '获取机构列表失败,请联系管理员'); + tenantOptions.value = []; + } + } catch (error) { + + ElMessage.error('网络异常或数据解析错误,请检查控制台日志'); + tenantOptions.value = []; + } finally { + // 确保无论成功还是失败都停止加载状态 + loadingTenant.value = false; + } + +}; +// 展开时若列表为空则加载数据 +const handleTenantVisibleChange = async (visible) => { + if (visible && tenantOptions.value.length === 0) { // 仅在展开且列表为空时加载 + await fetchTenantList(); + } +}; /** * 获取数据方法 * 这里不再接收搜索关键词,而是直接拉取所有启用的套餐 @@ -2416,19 +2509,21 @@ const handlePackageManagement = () => { const refreshPage = () => { getInspectionTypeList(); // 刷新时也重新加载套餐项目 - loadPackageItemsFromAPI(); + // loadPackageItemsFromAPI(); }; // 页面加载时获取数据 onMounted(() => { getInspectionTypeList(); getLisGroupList(); - // 加载检验套餐明细项目 - loadPackageItemsFromAPI(); - // 初始化计算套餐金额和服务费 - calculateAmounts(); + // // 加载检验套餐明细项目 + // loadPackageItemsFromAPI(); + // // 初始化计算套餐金额和服务费 + // calculateAmounts(); + fetchTenantList(); // 页面加载时获取租户列表 }); + // 监听检验分类代码,当字典数据加载完成后加载检验项目数据 watch(activity_category_code, (newVal) => { if (newVal && newVal.length > 0 && inspectionItems.value.length === 0) {