91 分诊排队管理-》门诊医生站:【完诊】患者队列状态的变化
68 检验项目设置-检验类型 / 检验项目设置-检验项目
This commit is contained in:
@@ -696,6 +696,12 @@ import {
|
||||
listInspectionType,
|
||||
updateInspectionType
|
||||
} from '@/api/system/inspectionType';
|
||||
import {
|
||||
getDiagnosisTreatmentList,
|
||||
addDiagnosisTreatment,
|
||||
editDiagnosisTreatment,
|
||||
stopDiseaseTreatment
|
||||
} from '@/views/catalog/diagnosistreatment/components/diagnosistreatment';
|
||||
import {listLisGroup} from '@/api/system/checkType';
|
||||
import {
|
||||
addInspectionPackage,
|
||||
@@ -703,7 +709,6 @@ import {
|
||||
listInspectionPackageDetails,
|
||||
saveInspectionPackageDetails
|
||||
} from '@/api/system/inspectionPackage';
|
||||
import {getDiagnosisTreatmentList} from '@/views/catalog/diagnosistreatment/components/diagnosistreatment';
|
||||
import {getLocationTree} from '@/views/charge/outpatientregistration/components/outpatientregistration';
|
||||
|
||||
// 获取当前登录用户信息
|
||||
@@ -917,24 +922,48 @@ const testTypes = ref([
|
||||
{ value: '其他检验', label: '其他检验' }
|
||||
]);
|
||||
|
||||
// 检验项目数据
|
||||
const inspectionItems = ref([
|
||||
{ id: 1, code: '0101', name: '血常规五分类', testType: '生化', package: '肝功能12项', sampleType: '血液', amount: 36.00, sortOrder: 1, serviceRange: '全部', sub医技Type: '', remark: '', status: true },
|
||||
{ id: 2, code: '0102', name: '肝功能12项', testType: '生化', package: '肝功能12项', sampleType: '血液', amount: 120.00, sortOrder: 2, serviceRange: '全部', sub医技Type: '', remark: '', status: true },
|
||||
{ id: 3, code: '0201', name: '尿常规', testType: '常规检验', package: '', sampleType: '尿液', amount: 25.00, sortOrder: 3, serviceRange: '全部', sub医技Type: '', remark: '', status: true },
|
||||
{ id: 4, code: '0202', name: '便常规+潜血', testType: '常规检验', package: '', sampleType: '粪便', amount: 30.00, sortOrder: 4, serviceRange: '门诊', sub医技Type: '', remark: '', status: true },
|
||||
{ id: 5, code: '0301', name: '乙肝五项', testType: '免疫学检验', package: '乙肝套餐', sampleType: '血液', amount: 75.00, sortOrder: 5, serviceRange: '全部', sub医技Type: '', remark: '', status: true },
|
||||
{ id: 6, code: '0302', name: '丙肝抗体', testType: '免疫学检验', package: '', sampleType: '血液', amount: 45.00, sortOrder: 6, serviceRange: '住院', sub医技Type: '', remark: '', status: true },
|
||||
{ id: 7, code: '0401', name: '血糖', testType: '生化', package: '糖尿病套餐', sampleType: '血液', amount: 15.00, sortOrder: 7, serviceRange: '全部', sub医技Type: '', remark: '', status: true },
|
||||
{ id: 8, code: '0402', name: '糖化血红蛋白', testType: '生化', package: '糖尿病套餐', sampleType: '血液', amount: 50.00, sortOrder: 8, serviceRange: '全部', sub医技Type: '', remark: '', status: true },
|
||||
{ id: 9, code: '0501', name: '肌酐', testType: '生化', package: '肾功能套餐', sampleType: '血液', amount: 25.00, sortOrder: 9, serviceRange: '住院', sub医技Type: '', remark: '', status: true },
|
||||
{ id: 10, code: '0502', name: '尿素氮', testType: '生化', package: '肾功能套餐', sampleType: '血液', amount: 20.00, sortOrder: 10, serviceRange: '住院', sub医技Type: '', remark: '', status: true },
|
||||
{ id: 11, code: '0601', name: '白带常规', testType: '常规检验', package: '', sampleType: '分泌物', amount: 30.00, sortOrder: 11, serviceRange: '门诊', sub医技Type: '', remark: '', status: true },
|
||||
{ id: 12, code: '0602', name: '前列腺液常规', testType: '常规检验', package: '', sampleType: '分泌物', amount: 35.00, sortOrder: 12, serviceRange: '门诊', sub医技Type: '', remark: '', status: true },
|
||||
{ id: 13, code: '0701', name: '脑脊液常规', testType: '常规检验', package: '', sampleType: '脑脊液', amount: 60.00, sortOrder: 13, serviceRange: '住院', sub医技Type: '', remark: '', status: true },
|
||||
{ id: 14, code: '0801', name: '肿瘤标志物CA125', testType: '免疫学检验', package: '肿瘤筛查套餐', sampleType: '血液', amount: 120.00, sortOrder: 14, serviceRange: '体检', sub医技Type: '', remark: '', status: true },
|
||||
{ id: 15, code: '0802', name: '肿瘤标志物AFP', testType: '免疫学检验', package: '肿瘤筛查套餐', sampleType: '血液', amount: 80.00, sortOrder: 15, serviceRange: '体检', sub医技Type: '', remark: '', status: true }
|
||||
]);
|
||||
// 检验项目数据 - 从后端API获取
|
||||
const inspectionItems = ref([]);
|
||||
|
||||
// 从后端API获取检验项目数据
|
||||
const loadObservationItems = async () => {
|
||||
try {
|
||||
const response = await getDiagnosisTreatmentList({
|
||||
pageNo: 1,
|
||||
pageSize: 100,
|
||||
categoryCode: '检验'
|
||||
});
|
||||
|
||||
if (response.code === 200) {
|
||||
let data = [];
|
||||
if (response.data && response.data.records) {
|
||||
data = response.data.records;
|
||||
} else if (response.data && Array.isArray(response.data)) {
|
||||
data = response.data;
|
||||
}
|
||||
|
||||
inspectionItems.value = data
|
||||
// 过滤掉已停用的项目(状态为3)
|
||||
.filter(item => item.statusEnum !== 3)
|
||||
.map(item => ({
|
||||
id: item.id,
|
||||
code: item.busNo || '',
|
||||
name: item.name || '',
|
||||
testType: '',
|
||||
package: '',
|
||||
sampleType: item.specimenCode_dictText || '',
|
||||
amount: parseFloat(item.retailPrice || 0),
|
||||
sortOrder: item.sortOrder || null,
|
||||
serviceRange: item.serviceRange || '全部',
|
||||
sub医技Type: '',
|
||||
remark: item.descriptionText || '',
|
||||
status: true
|
||||
}));
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取检验项目数据失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
// 过滤条件
|
||||
const testTypeFilter = ref('');
|
||||
@@ -1552,7 +1581,7 @@ const updateAmountFromPackage = (item) => {
|
||||
}
|
||||
};
|
||||
|
||||
const saveItem = (item) => {
|
||||
const saveItem = async (item) => {
|
||||
// 验证必填字段
|
||||
if (!item.code || item.code.trim() === '') {
|
||||
ElMessage.error('小类编码不能为空');
|
||||
@@ -1594,24 +1623,67 @@ const saveItem = (item) => {
|
||||
// 从费用套餐获取金额
|
||||
updateAmountFromPackage(item);
|
||||
|
||||
// 保存成功
|
||||
editingRowId.value = null;
|
||||
ElMessage.success('保存成功');
|
||||
try {
|
||||
// 准备提交给后端的数据
|
||||
const submitData = {
|
||||
busNo: item.code.trim(),
|
||||
name: item.name.trim(),
|
||||
categoryCode: '检验',
|
||||
specimenCode: item.sampleType,
|
||||
retailPrice: item.amount,
|
||||
descriptionText: item.remark,
|
||||
typeEnum: 1,
|
||||
statusEnum: 2,
|
||||
sortOrder: item.sortOrder ? parseInt(item.sortOrder) : null,
|
||||
serviceRange: item.serviceRange || '全部'
|
||||
};
|
||||
|
||||
// 判断是新增还是更新
|
||||
if (typeof item.id === 'number') { // 临时ID(数字类型),新增
|
||||
const response = await addDiagnosisTreatment(submitData);
|
||||
if (response.code === 200) {
|
||||
ElMessage.success('添加成功');
|
||||
await loadObservationItems();
|
||||
} else {
|
||||
ElMessage.error(response.msg || '添加失败');
|
||||
}
|
||||
} else { // 真实ID(字符串类型),更新
|
||||
submitData.id = item.id;
|
||||
const response = await editDiagnosisTreatment(submitData);
|
||||
if (response.code === 200) {
|
||||
ElMessage.success('更新成功');
|
||||
await loadObservationItems();
|
||||
} else {
|
||||
ElMessage.error(response.msg || '更新失败');
|
||||
}
|
||||
}
|
||||
|
||||
editingRowId.value = null;
|
||||
} catch (error) {
|
||||
console.error('保存检验项目失败:', error);
|
||||
ElMessage.error('保存失败,请稍后重试');
|
||||
}
|
||||
};
|
||||
|
||||
const deleteItem = (id) => {
|
||||
const deleteItem = async (id) => {
|
||||
ElMessageBox.confirm('确定要删除该检验项目吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
const index = inspectionItems.value.findIndex(item => item.id === id);
|
||||
if (index !== -1) {
|
||||
inspectionItems.value.splice(index, 1);
|
||||
ElMessage.success('删除成功');
|
||||
}).then(async () => {
|
||||
try {
|
||||
const response = await stopDiseaseTreatment([id]);
|
||||
if (response.code === 200) {
|
||||
ElMessage.success('删除成功');
|
||||
await loadObservationItems();
|
||||
} else {
|
||||
ElMessage.error(response.msg || '删除失败');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('删除检验项目失败:', error);
|
||||
ElMessage.error('删除失败,请稍后重试');
|
||||
}
|
||||
}).catch(() => {
|
||||
// 取消删除
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1993,6 +2065,8 @@ const refreshPage = () => {
|
||||
onMounted(() => {
|
||||
getInspectionTypeList();
|
||||
getLisGroupList();
|
||||
// 加载检验项目数据
|
||||
loadObservationItems();
|
||||
// 加载检验套餐明细项目
|
||||
loadPackageItemsFromAPI();
|
||||
// 检查URL参数,如果有tab参数则切换到对应导航项
|
||||
|
||||
Reference in New Issue
Block a user