Fix Bug #426: 门诊医生站-检查开立:已选择列表应支持树形展开,显示套餐明细(项目/数量/单价)
根因:CheckPart 实体只有 packageName 字段,没有 packageId 字段。 前端 loadCategoryList 中 packageId 永远为 null,导致 loadPackageDetailsForItem 的 guard 条件 (!item.packageId) 永远提前返回,套餐明细无法加载。 修复策略: 1. handleItemSelect 中添加 packageName 到 selectedItems 数据对象 2. loadPackageDetailsForItem 改为优先使用 packageId,若无则通过 packageName 调用 listCheckPackage API 查找 packageId(复用 loadMethodPackageDetails 已有的模式)
This commit is contained in:
@@ -482,14 +482,28 @@ async function loadPackageDetails(row, treeNode, resolve) {
|
||||
}
|
||||
}
|
||||
|
||||
// #428: 为已选择项目加载套餐明细
|
||||
// #428修复: 为已选择项目加载套餐明细(通过packageId或packageName查询)
|
||||
async function loadPackageDetailsForItem(item) {
|
||||
if (!item.isPackage || !item.packageId) {
|
||||
if (!item.isPackage || (!item.packageId && !item.packageName)) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
let packageId = item.packageId;
|
||||
if (!packageId && item.packageName) {
|
||||
// CheckPart 没有 packageId 字段,需要通过 packageName 查询获取
|
||||
const pkgRes = await listCheckPackage({ packageName: item.packageName });
|
||||
let packages = pkgRes?.data || [];
|
||||
if (!Array.isArray(packages)) {
|
||||
packages = packages.records || packages.data || [];
|
||||
}
|
||||
if (packages.length === 0) {
|
||||
item.packageDetails = [];
|
||||
return;
|
||||
}
|
||||
packageId = packages[0].id;
|
||||
}
|
||||
const res = await request({
|
||||
url: `/system/package/${item.packageId}/details`,
|
||||
url: `/system/package/${packageId}/details`,
|
||||
method: 'get'
|
||||
});
|
||||
if (res.code === 200 && res.data) {
|
||||
@@ -497,7 +511,7 @@ async function loadPackageDetailsForItem(item) {
|
||||
...detail,
|
||||
name: detail.name || detail.itemName,
|
||||
unit: detail.unit || '次',
|
||||
price: detail.price || detail.itemPrice || 0,
|
||||
price: detail.price || detail.unitPrice || 0,
|
||||
quantity: detail.quantity || 1
|
||||
}));
|
||||
} else {
|
||||
@@ -1241,6 +1255,7 @@ async function handleItemSelect(checked, item, cat) {
|
||||
selectedMethod: null,
|
||||
expanded: false, // Bug #384修复: 新增展开状态,默认不展开
|
||||
isPackage: !!item.packageName, // Bug #428修复: 标记是否为套餐
|
||||
packageName: item.packageName || null, // Bug #426修复: 套餐名称,用于查找packageId
|
||||
packageId: item.packageId || null // Bug #428修复: 套餐ID
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user