fix(doctorstation): 解决诊疗项目执行科室验证及耗材价格显示问题 bug#220

- 修复诊疗项目执行科室非空校验逻辑,使用effectiveOrgId替代positionId
- 添加getEffectiveOrgId方法统一获取执行科室ID的兼容处理
- 修复耗材价格处理逻辑,正确区分price和retailPrice字段避免零值判断错误
- 更新数据库查询映射,优化设备定义表与收费项目定义表关联条件
- 添加调试日志输出便于问题排查
This commit is contained in:
2026-03-23 17:58:27 +08:00
parent 251cf263ff
commit e90e541af3
4 changed files with 70 additions and 35 deletions

View File

@@ -257,35 +257,45 @@ function fetchFromApi(searchKey) {
searchKey: searchKey || '',
statusEnum: 2,
}).then((res) => {
console.log('[Debug] 耗材列表返回数据:', res.data);
if (res.data && res.data.records) {
adviceBaseList.value = res.data.records.map((item) => ({
adviceName: item.name || item.busNo,
adviceType: 4,
unitCode: item.unitCode || '',
unitCode_dictText: item.unitCode_dictText || '',
minUnitCode: item.minUnitCode || item.unitCode || '',
minUnitCode_dictText: item.minUnitCode_dictText || item.unitCode_dictText || '',
volume: item.size || item.totalVolume || '',
partPercent: item.partPercent || 1,
priceList: item.price ? [{ price: item.price }] : (item.retailPrice ? [{ price: item.retailPrice }] : []),
inventoryList: [],
adviceDefinitionId: item.id,
adviceTableName: 'adm_device_definition',
chargeItemDefinitionId: item.id,
positionId: item.locationId,
positionName: item.locationId_dictText || '',
dose: 0,
doseUnitCode: item.minUnitCode || item.unitCode || '',
doseUnitCode_dictText: item.minUnitCode_dictText || item.unitCode_dictText || '',
injectFlag: 0,
injectFlag_enumText: '否',
skinTestFlag: 0,
skinTestFlag_enumText: '否',
categoryCode: item.categoryCode || '',
deviceId: item.id,
deviceName: item.name,
...item,
}));
adviceBaseList.value = res.data.records.map((item) => {
console.log('[Debug] 耗材项:', item.name, 'price:', item.price, 'retailPrice:', item.retailPrice);
return {
adviceName: item.name || item.busNo,
adviceType: 4,
unitCode: item.unitCode || '',
unitCode_dictText: item.unitCode_dictText || '',
minUnitCode: item.minUnitCode || item.unitCode || '',
minUnitCode_dictText: item.minUnitCode_dictText || item.unitCode_dictText || '',
volume: item.size || item.totalVolume || '',
partPercent: item.partPercent || 1,
// 🔧 Bug #220 修复正确处理耗材价格支持price或retailPrice字段
// 零售价可能是0所以不能用简单的布尔判断需要明确检查null/undefined
priceList: (item.price !== undefined && item.price !== null)
? [{ price: item.price }]
: ((item.retailPrice !== undefined && item.retailPrice !== null)
? [{ price: item.retailPrice }]
: []),
inventoryList: [],
adviceDefinitionId: item.id,
adviceTableName: 'adm_device_definition',
chargeItemDefinitionId: item.id,
positionId: item.locationId,
positionName: item.locationId_dictText || '',
dose: 0,
doseUnitCode: item.minUnitCode || item.unitCode || '',
doseUnitCode_dictText: item.minUnitCode_dictText || item.unitCode_dictText || '',
injectFlag: 0,
injectFlag_enumText: '否',
skinTestFlag: 0,
skinTestFlag_enumText: '否',
categoryCode: item.categoryCode || '',
deviceId: item.id,
deviceName: item.name,
...item,
};
});
nextTick(() => {
currentIndex.value = 0;
});