205 检验项目设置-》套餐设置:点开【套餐设置】TAB页面的内容套餐金额、服务费及检验套餐明细带入脏数据,

206 检验项目设置-》套餐设置:卫生机构字段取值当前登录账户的科室名称了
This commit is contained in:
2026-03-20 17:26:02 +08:00
parent 5d73de3072
commit 427d567337

View File

@@ -488,7 +488,24 @@
</div> </div>
<div class="form-item"> <div class="form-item">
<span class="form-label">卫生机构</span> <span class="form-label">卫生机构</span>
<el-input :model-value="userStore.orgName || '测试机构'" readonly /> <el-select
v-model="selectedTenantId"
placeholder="请选择卫生机构"
style="width: 100%;"
@change="handleTenantChange"
clearable
filterable
:loading="loadingTenant"
no-data-text="暂无数据请稍后重试"
@visible-change="handleTenantVisibleChange"
>
<el-option
v-for="item in tenantOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div> </div>
<div class="form-item"> <div class="form-item">
<span class="form-label">套餐金额</span> <span class="form-label">套餐金额</span>
@@ -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 = () => { const refreshPage = () => {
getInspectionTypeList(); getInspectionTypeList();
// 刷新时也重新加载套餐项目 // 刷新时也重新加载套餐项目
loadPackageItemsFromAPI(); // loadPackageItemsFromAPI();
}; };
// 页面加载时获取数据 // 页面加载时获取数据
onMounted(() => { onMounted(() => {
getInspectionTypeList(); getInspectionTypeList();
getLisGroupList(); getLisGroupList();
// 加载检验套餐明细项目 // // 加载检验套餐明细项目
loadPackageItemsFromAPI(); // loadPackageItemsFromAPI();
// 初始化计算套餐金额和服务费 // // 初始化计算套餐金额和服务费
calculateAmounts(); // calculateAmounts();
fetchTenantList(); // 页面加载时获取租户列表
}); });
// 监听检验分类代码,当字典数据加载完成后加载检验项目数据 // 监听检验分类代码,当字典数据加载完成后加载检验项目数据
watch(activity_category_code, (newVal) => { watch(activity_category_code, (newVal) => {
if (newVal && newVal.length > 0 && inspectionItems.value.length === 0) { if (newVal && newVal.length > 0 && inspectionItems.value.length === 0) {