检验项目设置-套餐设置前后端及数据库基本完成
This commit is contained in:
@@ -1,87 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询检验类型列表
|
||||
export function listInspectionType(query) {
|
||||
return request({
|
||||
url: '/system/inspection-type/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询检验类型详细
|
||||
export function getInspectionType(inspectionTypeId) {
|
||||
return request({
|
||||
url: `/system/inspection-type/${inspectionTypeId}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增检验类型
|
||||
export function addInspectionType(data) {
|
||||
return request({
|
||||
url: '/system/inspection-type',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改检验类型
|
||||
export function updateInspectionType(data) {
|
||||
return request({
|
||||
url: '/system/inspection-type',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除检验类型
|
||||
export function delInspectionType(inspectionTypeId) {
|
||||
return request({
|
||||
url: `/system/inspection-type/${inspectionTypeId}`,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
// 查询检验套餐列表
|
||||
export function listInspectionPackage(query) {
|
||||
return request({
|
||||
url: '/system/inspection-package/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询检验套餐详细
|
||||
export function getInspectionPackage(packageId) {
|
||||
return request({
|
||||
url: `/system/inspection-package/${packageId}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增检验套餐
|
||||
export function addInspectionPackage(data) {
|
||||
return request({
|
||||
url: '/system/inspection-package',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改检验套餐
|
||||
export function updateInspectionPackage(data) {
|
||||
return request({
|
||||
url: '/system/inspection-package',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除检验套餐
|
||||
export function delInspectionPackage(packageId) {
|
||||
return request({
|
||||
url: `/system/inspection-package/${packageId}`,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
@@ -517,7 +517,7 @@
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span class="form-label">lis分组</span>
|
||||
<select class="form-control form-select">
|
||||
<select class="form-control form-select" v-model="selectedLisGroup">
|
||||
<option value="">请选择lis分组</option>
|
||||
<option v-for="group in lisGroupList" :key="group.id" :value="group.id">
|
||||
{{ group.groupName || group.lisGroupName }}
|
||||
@@ -701,7 +701,7 @@ import { formatDate } from '@/utils/index';
|
||||
import request from '@/utils/request';
|
||||
import { listInspectionType, getInspectionType, addInspectionType, updateInspectionType, delInspectionType } from '@/api/system/inspectionType';
|
||||
import { listLisGroup } from '@/api/system/checkType';
|
||||
import { addInspectionPackage, saveInspectionPackageDetails, batchSaveInspectionPackageDetails, listInspectionPackage, getInspectionPackage, listInspectionPackageDetails } from '@/api/system/inspectionPackage';
|
||||
import { addInspectionPackage, saveInspectionPackageDetails, getInspectionPackage, listInspectionPackageDetails } from '@/api/system/inspectionPackage';
|
||||
import { getDiagnosisTreatmentList } from '@/views/catalog/diagnosistreatment/components/diagnosistreatment';
|
||||
import { getLocationTree } from '@/views/charge/outpatientregistration/components/outpatientregistration';
|
||||
|
||||
@@ -714,6 +714,8 @@ const route = useRoute();
|
||||
|
||||
// 存储LIS分组数据
|
||||
const lisGroupList = ref([]);
|
||||
// 选中的LIS分组
|
||||
const selectedLisGroup = ref('');
|
||||
|
||||
// 获取就诊科室数据 - 与门诊挂号页面保持一致,在组件初始化时直接调用
|
||||
getLocationInfo();
|
||||
@@ -1694,7 +1696,6 @@ const handleSave = () => {
|
||||
packageLevel: packageLevel.value,
|
||||
packageName: packageName.value.trim(),
|
||||
department: department.value,
|
||||
userId: userStore.nickName, // 制单人
|
||||
discount: discount.value || 0,
|
||||
isDisabled: isDisabled.value,
|
||||
showPackageName: showPackageName.value,
|
||||
@@ -1702,22 +1703,24 @@ const handleSave = () => {
|
||||
enablePackagePrice: enablePackagePrice.value,
|
||||
packageAmount: packageAmount.value,
|
||||
serviceFee: serviceFee.value,
|
||||
lisGroup: '', // 从下拉框获取
|
||||
lisGroup: selectedLisGroup.value, // 从下拉框获取
|
||||
bloodVolume: bloodVolume.value,
|
||||
remarks: remarks.value,
|
||||
orgName: userStore.orgName || '测试机构', // 卫生机构
|
||||
createBy: userStore.nickName, // 制单人
|
||||
createTime: new Date().toISOString(),
|
||||
updateTime: new Date().toISOString()
|
||||
};
|
||||
|
||||
// 如果是科室套餐,添加科室信息
|
||||
// 根据套餐级别设置用户信息
|
||||
if (packageLevel.value === '科室套餐' && department.value) {
|
||||
// 科室套餐:设置科室信息
|
||||
basicInfo.departmentId = department.value;
|
||||
}
|
||||
|
||||
// 如果是个人套餐,添加用户信息
|
||||
if (packageLevel.value === '个人套餐') {
|
||||
} else if (packageLevel.value === '个人套餐') {
|
||||
// 个人套餐:设置用户ID(套餐所有者)
|
||||
basicInfo.userId = userStore.userId || userStore.nickName;
|
||||
}
|
||||
// 全院套餐:不需要额外设置用户信息
|
||||
|
||||
// 准备明细数据
|
||||
const detailData = packageItems.value.map(item => ({
|
||||
@@ -1747,38 +1750,71 @@ const handleSave = () => {
|
||||
|
||||
// 保存套餐数据到数据库
|
||||
const savePackageData = async (basicInfo, detailData) => {
|
||||
// 显示保存进度
|
||||
const loading = ElLoading.service({
|
||||
lock: true,
|
||||
text: '正在保存...',
|
||||
background: 'rgba(0, 0, 0, 0.7)',
|
||||
});
|
||||
|
||||
try {
|
||||
// 显示保存进度
|
||||
const loading = ElLoading.service({
|
||||
lock: true,
|
||||
text: '正在保存...',
|
||||
background: 'rgba(0, 0, 0, 0.7)',
|
||||
});
|
||||
|
||||
// 1. 先保存基本信息
|
||||
console.log('准备发送的基本信息数据:', basicInfo);
|
||||
const basicResponse = await addInspectionPackage(basicInfo);
|
||||
console.log('后端返回的完整响应:', basicResponse);
|
||||
console.log('响应类型:', typeof basicResponse);
|
||||
console.log('响应数据结构:', JSON.stringify(basicResponse, null, 2));
|
||||
|
||||
// 检查响应码
|
||||
if (basicResponse.code !== 200) {
|
||||
loading.close();
|
||||
throw new Error(basicResponse.msg || '保存基本信息失败');
|
||||
}
|
||||
|
||||
const packageId = basicResponse.data.packageId || basicResponse.data.id;
|
||||
|
||||
// 2. 批量保存明细数据,关联套餐ID
|
||||
const detailDataWithPackageId = detailData.map(item => ({
|
||||
...item,
|
||||
packageId: packageId
|
||||
}));
|
||||
|
||||
const detailResponse = await batchSaveInspectionPackageDetails({
|
||||
packageId: packageId,
|
||||
details: detailDataWithPackageId
|
||||
});
|
||||
|
||||
if (detailResponse.code !== 200) {
|
||||
throw new Error(detailResponse.msg || '保存明细数据失败');
|
||||
// 检查响应数据结构 - 兼容多种可能的响应格式
|
||||
let packageId = null;
|
||||
|
||||
if (basicResponse.data) {
|
||||
// 标准格式:{code: 200, data: {packageId: xxx}}
|
||||
packageId = basicResponse.data.packageId || basicResponse.data.id;
|
||||
} else if (basicResponse.packageId) {
|
||||
// 如果data不存在,尝试直接从响应根级别获取
|
||||
packageId = basicResponse.packageId;
|
||||
} else if (basicResponse.id) {
|
||||
// 如果data不存在,尝试直接从响应根级别获取id
|
||||
packageId = basicResponse.id;
|
||||
}
|
||||
|
||||
// 验证套餐ID是否存在
|
||||
if (!packageId) {
|
||||
loading.close();
|
||||
console.error('无法从响应中获取套餐ID,完整响应:', basicResponse);
|
||||
throw new Error('保存成功但未返回套餐ID。请检查后端接口是否正确返回了packageId或id字段');
|
||||
}
|
||||
|
||||
console.log('成功获取到套餐ID:', packageId);
|
||||
|
||||
// 2. 分别保存每个明细数据到明细表
|
||||
for (let i = 0; i < detailData.length; i++) {
|
||||
const detailItem = {
|
||||
...detailData[i],
|
||||
packageId: packageId
|
||||
};
|
||||
|
||||
console.log(`保存第 ${i + 1} 个明细项:`, detailItem);
|
||||
|
||||
const detailResponse = await saveInspectionPackageDetails(detailItem);
|
||||
|
||||
if (detailResponse.code !== 200) {
|
||||
loading.close();
|
||||
throw new Error(`保存第 ${i + 1} 个明细项失败: ${detailResponse.msg || '未知错误'}`);
|
||||
}
|
||||
|
||||
console.log(`第 ${i + 1} 个明细项保存成功:`, detailResponse.data);
|
||||
}
|
||||
|
||||
console.log('所有明细项保存完成');
|
||||
|
||||
// 关闭加载提示
|
||||
loading.close();
|
||||
|
||||
@@ -1788,6 +1824,9 @@ const savePackageData = async (basicInfo, detailData) => {
|
||||
doResetForm();
|
||||
|
||||
} catch (error) {
|
||||
// 确保在错误时也关闭loading
|
||||
loading.close();
|
||||
|
||||
console.error('保存失败:', error);
|
||||
|
||||
// 处理不同类型的错误
|
||||
@@ -1813,7 +1852,7 @@ const savePackageData = async (basicInfo, detailData) => {
|
||||
// 网络错误
|
||||
errorMessage = '网络连接失败,请检查网络设置';
|
||||
} else {
|
||||
// 其他错误
|
||||
// 其他错误(包括我们throw的Error)
|
||||
errorMessage = error.message || '保存失败,请重试';
|
||||
}
|
||||
|
||||
@@ -1848,6 +1887,7 @@ const doResetForm = () => {
|
||||
enablePackagePrice.value = true;
|
||||
packageAmount.value = 0.00;
|
||||
serviceFee.value = 0.00;
|
||||
selectedLisGroup.value = '';
|
||||
bloodVolume.value = '';
|
||||
remarks.value = '';
|
||||
|
||||
@@ -1893,6 +1933,7 @@ const loadInspectionPackage = async (packageId) => {
|
||||
enablePackagePrice.value = basicData.enablePackagePrice !== false;
|
||||
packageAmount.value = basicData.packageAmount || 0.00;
|
||||
serviceFee.value = basicData.serviceFee || 0.00;
|
||||
selectedLisGroup.value = basicData.lisGroup || '';
|
||||
bloodVolume.value = basicData.bloodVolume || '';
|
||||
remarks.value = basicData.remarks || '';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user