diff --git a/openhis-ui-vue3/src/views/maintainSystem/checkprojectSettings/index.vue b/openhis-ui-vue3/src/views/maintainSystem/checkprojectSettings/index.vue index 0cc15e40..32183f63 100644 --- a/openhis-ui-vue3/src/views/maintainSystem/checkprojectSettings/index.vue +++ b/openhis-ui-vue3/src/views/maintainSystem/checkprojectSettings/index.vue @@ -506,7 +506,7 @@ import { ref, reactive, onMounted } from 'vue'; import { ElMessage, ElMessageBox } from 'element-plus'; import { getDicts } from '@/api/system/dict/data'; -import { listCheckType, listCheckMethod, listCheckPart, listCheckPackage, addCheckType, updateCheckType, delCheckType, addCheckMethod, updateCheckMethod, delCheckMethod } from '@/api/system/checkType'; +import { listCheckType, listCheckMethod, listCheckPart, listCheckPackage, addCheckType, updateCheckType, delCheckType, addCheckMethod, updateCheckMethod, delCheckMethod,addCheckPart, updateCheckPart, delCheckPart } from '@/api/system/checkType'; import PackageSettings from './components/PackageSettings.vue'; import PackageManagement from './components/PackageManagement.vue'; @@ -585,19 +585,28 @@ onMounted(async () => { // 获取检查方法数据 const methodResponse = await listCheckMethod(); if (methodResponse && methodResponse.data) { - checkMethods.value = methodResponse.data; + // 确保data是数组类型 + checkMethods.value = Array.isArray(methodResponse.data) ? methodResponse.data : []; + } else { + checkMethods.value = []; } // 获取检查部位数据 const partResponse = await listCheckPart(); if (partResponse && partResponse.data) { - checkParts.value = partResponse.data; + // 确保data是数组类型 + checkParts.value = Array.isArray(partResponse.data) ? partResponse.data : []; + } else { + checkParts.value = []; } // 获取检查套餐数据 const packageResponse = await listCheckPackage(); if (packageResponse && packageResponse.data) { - checkPackages.value = packageResponse.data; + // 确保data是数组类型 + checkPackages.value = Array.isArray(packageResponse.data) ? packageResponse.data : []; + } else { + checkPackages.value = []; } } catch (error) { @@ -666,10 +675,13 @@ async function loadMenuData(menu) { case '检查类型': const typeResponse = await listCheckType(); if (typeResponse && typeResponse.data) { - // 获取所有不重复的检查类型值 - checkTypes.value = [...new Set(typeResponse.data.map(item => item.type))]; + // 确保data是数组类型 + const typeData = Array.isArray(typeResponse.data) ? typeResponse.data : []; - typeResponse.data.forEach((item, index) => { + // 获取所有不重复的检查类型值 + checkTypes.value = [...new Set(typeData.map(item => item.type))]; + + typeData.forEach((item, index) => { // 直接使用数据库中的department值,不进行转换 tableData.push({ id: item.id, // 保存id字段,用于判断是新增还是修改 @@ -739,25 +751,48 @@ async function loadMenuData(menu) { packageName: searchParams.packageName, visible: searchParams.visible }; - const partResponse = await listCheckPart(partSearchParams); - if (partResponse && partResponse.data) { - partResponse.data.forEach((item, index) => { - tableData.push({ - id: item.id, // 保存id字段,用于判断是新增还是修改 - row: (index + 1).toString(), - code: item.code, - name: item.name, - checkType: item.checkType || '', - exposureNum: item.exposureNum || 0, - packageName: item.packageName || '', - price: item.price || 0, - number: item.number || '999999', - serviceScope: item.serviceScope || '', - subType: item.subType || '', - remark: item.remark || '', - actions: true + try { + const partResponse = await listCheckPart(partSearchParams); + + // 确保data是数组,适配不同的后端返回格式 + let partData = []; + if (partResponse) { + if (Array.isArray(partResponse)) { + // 如果整个响应就是数组 + partData = partResponse; + } else if (partResponse.data && Array.isArray(partResponse.data)) { + // 如果响应对象的data属性是数组 + partData = partResponse.data; + } else if (partResponse.data && partResponse.data.data && Array.isArray(partResponse.data.data)) { + // 如果响应对象的data.data属性是数组(可能是后端包装了两层) + partData = partResponse.data.data; + } + } + + // 处理数组数据 + if (partData.length > 0) { + partData.forEach((item, index) => { + tableData.push({ + id: item.id, // 保存id字段,用于判断是新增还是修改 + row: (index + 1).toString(), + code: item.code, + name: item.name, + checkType: item.checkType || '', + exposureNum: item.exposureNum || 0, + packageName: item.packageName || '', + price: item.price || 0, + number: item.number || '999999', + serviceScope: item.serviceScope || '', + subType: item.subType || '', + remark: item.remark || '', + actions: true + }); }); - }); + } else { + ElMessage.warning('未获取到检查部位数据'); + } + } catch (error) { + ElMessage.error(`加载检查部位数据失败: ${error.message || '未知错误'}`); } break; @@ -787,22 +822,102 @@ async function handleConfirm(index) { if (activeMenu.value === '检查方法') { // 检查方法的保存逻辑 if (item.id) { - // 修改操作 - await updateCheckMethod(item); + // 修改操作:只传递必要字段 + const updateData = { + id: item.id, + code: item.code, + name: item.name, + checkType: item.checkType, + packageName: item.packageName, + exposureNum: item.exposureNum, + orderNum: item.orderNum, + remark: item.remark + }; + await updateCheckMethod(updateData); } else { - // 新增操作 - const newItem = await addCheckMethod(item); + // 新增操作:只传递必要字段 + const addData = { + code: item.code, + name: item.name, + checkType: item.checkType, + packageName: item.packageName, + exposureNum: item.exposureNum, + orderNum: item.orderNum, + remark: item.remark + }; + console.log('准备新增检查方法:', addData); + const newItem = await addCheckMethod(addData); + console.log('新增检查方法返回结果:', newItem); + // 将新增的id赋值给本地数据 + item.id = newItem.id; + } + } else if (activeMenu.value === '检查部位') { + // 检查部位的保存逻辑 + if (item.id) { + // 修改操作:只传递必要字段 + const updateData = { + id: item.id, + code: item.code, + name: item.name, + checkType: item.checkType, + exposureNum: item.exposureNum, + packageName: item.packageName, + price: item.price, + number: item.number, + serviceScope: item.serviceScope, + subType: item.subType, + remark: item.remark + }; + await updateCheckPart(updateData); + } else { + // 新增操作:只传递必要字段 + const addData = { + code: item.code, + name: item.name, + checkType: item.checkType, + exposureNum: item.exposureNum, + packageName: item.packageName, + price: item.price, + number: item.number, + serviceScope: item.serviceScope, + subType: item.subType, + remark: item.remark + }; + console.log('准备新增检查部位:', addData); + const newItem = await addCheckPart(addData); + console.log('新增检查部位返回结果:', newItem); // 将新增的id赋值给本地数据 item.id = newItem.id; } } else { // 检查类型的保存逻辑 if (item.id) { - // 修改操作 - await updateCheckType(item); + // 修改操作:只传递必要字段 + const updateData = { + id: item.id, + code: item.code, + name: item.name, + type: item.type, + selected: item.selected, + department: item.department, + number: item.number, + remark: item.remark + }; + await updateCheckType(updateData); } else { - // 新增操作 - const newItem = await addCheckType(item); + // 新增操作:只传递必要字段 + const addData = { + code: item.code, + name: item.name, + type: item.type, + selected: item.selected, + department: item.department, + number: item.number, + remark: item.remark + }; + console.log('准备新增检查类型:', addData); + const newItem = await addCheckType(addData); + console.log('新增检查类型返回结果:', newItem); // 将新增的id赋值给本地数据 item.id = newItem.id; } @@ -812,6 +927,8 @@ async function handleConfirm(index) { // 显示保存成功提示 ElMessage.success(`第 ${item.row} 行数据已保存`); } catch (error) { + console.error('保存失败,错误信息:', error); + console.error('保存失败,错误详情:', error.response ? error.response.data : error); ElMessage.error('保存失败,请稍后重试'); } } @@ -829,6 +946,8 @@ async function handleDelete(index) { if (item.id) { if (activeMenu.value === '检查方法') { await delCheckMethod(item.id); + } else if (activeMenu.value === '检查部位') { + await delCheckPart(item.id); } else { await delCheckType(item.id); }