门诊医生站-》开立诊断 页面调整
This commit is contained in:
@@ -411,22 +411,12 @@
|
||||
|
||||
<div class="form-item">
|
||||
<span class="form-label">套餐级别</span>
|
||||
<el-select
|
||||
v-model="packageLevel"
|
||||
filterable
|
||||
allow-create
|
||||
default-first-option
|
||||
placeholder="请选择或输入套餐级别"
|
||||
style="width: 100%;"
|
||||
@change="handlePackageLevelChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in packageLevelOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<select class="form-control form-select" id="packageLevel" v-model="packageLevel">
|
||||
<option value="">请选择套餐级别</option>
|
||||
<option value="全院套餐">全院套餐</option>
|
||||
<option value="科室套餐">科室套餐</option>
|
||||
<option value="个人套餐">个人套餐</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-item" id="departmentContainer" v-show="packageLevel === '科室套餐'">
|
||||
<span class="form-label">科室</span>
|
||||
@@ -478,31 +468,47 @@
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span class="form-label">是否停用</span>
|
||||
<el-radio-group v-model="isDisabled" size="medium">
|
||||
<el-radio :label="false">启用</el-radio>
|
||||
<el-radio :label="true">停用</el-radio>
|
||||
</el-radio-group>
|
||||
<div class="radio-group">
|
||||
<label class="radio-item">
|
||||
<input type="radio" v-model="isDisabled" :value="false" checked> 启用
|
||||
</label>
|
||||
<label class="radio-item">
|
||||
<input type="radio" v-model="isDisabled" :value="true"> 停用
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span class="form-label">显示套餐名</span>
|
||||
<el-radio-group v-model="showPackageName" size="medium">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
<div class="radio-group">
|
||||
<label class="radio-item">
|
||||
<input type="radio" v-model="showPackageName" :value="true" checked> 是
|
||||
</label>
|
||||
<label class="radio-item">
|
||||
<input type="radio" v-model="showPackageName" :value="false"> 否
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span class="form-label">生成服务费</span>
|
||||
<el-radio-group v-model="generateServiceFee" size="medium">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
<div class="radio-group">
|
||||
<label class="radio-item">
|
||||
<input type="radio" v-model="generateServiceFee" :value="true" checked> 是
|
||||
</label>
|
||||
<label class="radio-item">
|
||||
<input type="radio" v-model="generateServiceFee" :value="false"> 否
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span class="form-label">套餐价格</span>
|
||||
<el-radio-group v-model="enablePackagePrice" size="medium">
|
||||
<el-radio :label="true">启用</el-radio>
|
||||
<el-radio :label="false">不启用</el-radio>
|
||||
</el-radio-group>
|
||||
<div class="radio-group">
|
||||
<label class="radio-item">
|
||||
<input type="radio" v-model="enablePackagePrice" :value="true" checked> 启用
|
||||
</label>
|
||||
<label class="radio-item">
|
||||
<input type="radio" v-model="enablePackagePrice" :value="false"> 不启用
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-item">
|
||||
@@ -696,12 +702,6 @@ 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,
|
||||
@@ -709,6 +709,7 @@ import {
|
||||
listInspectionPackageDetails,
|
||||
saveInspectionPackageDetails
|
||||
} from '@/api/system/inspectionPackage';
|
||||
import {getDiagnosisTreatmentList} from '@/views/catalog/diagnosistreatment/components/diagnosistreatment';
|
||||
import {getLocationTree} from '@/views/charge/outpatientregistration/components/outpatientregistration';
|
||||
|
||||
// 获取当前登录用户信息
|
||||
@@ -847,14 +848,6 @@ function handleDepartmentChange(selectedNode, item) {
|
||||
}
|
||||
}
|
||||
|
||||
// 处理套餐级别选择变化
|
||||
function handlePackageLevelChange(value) {
|
||||
console.log('选择的套餐级别:', value);
|
||||
if (value !== '科室套餐') {
|
||||
department.value = '';
|
||||
}
|
||||
}
|
||||
|
||||
// 处理套餐科室选择变化
|
||||
function handlePackageDepartmentChange(selectedNode) {
|
||||
console.log('选择的套餐科室节点:', selectedNode);
|
||||
@@ -922,48 +915,24 @@ const testTypes = ref([
|
||||
{ value: '其他检验', label: '其他检验' }
|
||||
]);
|
||||
|
||||
// 检验项目数据 - 从后端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 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 }
|
||||
]);
|
||||
|
||||
// 过滤条件
|
||||
const testTypeFilter = ref('');
|
||||
@@ -1004,11 +973,6 @@ const resetFilters = () => {
|
||||
// 套餐相关数据
|
||||
const packageCategory = ref('检验套餐');
|
||||
const packageLevel = ref('');
|
||||
const packageLevelOptions = ref([
|
||||
{ value: '全院套餐', label: '全院套餐' },
|
||||
{ value: '科室套餐', label: '科室套餐' },
|
||||
{ value: '个人套餐', label: '个人套餐' }
|
||||
]);
|
||||
const packageName = ref('');
|
||||
const department = ref('');
|
||||
const discount = ref('');
|
||||
@@ -1581,7 +1545,7 @@ const updateAmountFromPackage = (item) => {
|
||||
}
|
||||
};
|
||||
|
||||
const saveItem = async (item) => {
|
||||
const saveItem = (item) => {
|
||||
// 验证必填字段
|
||||
if (!item.code || item.code.trim() === '') {
|
||||
ElMessage.error('小类编码不能为空');
|
||||
@@ -1623,67 +1587,24 @@ const saveItem = async (item) => {
|
||||
// 从费用套餐获取金额
|
||||
updateAmountFromPackage(item);
|
||||
|
||||
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('保存失败,请稍后重试');
|
||||
}
|
||||
// 保存成功
|
||||
editingRowId.value = null;
|
||||
ElMessage.success('保存成功');
|
||||
};
|
||||
|
||||
const deleteItem = async (id) => {
|
||||
const deleteItem = (id) => {
|
||||
ElMessageBox.confirm('确定要删除该检验项目吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).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('删除失败,请稍后重试');
|
||||
}).then(() => {
|
||||
const index = inspectionItems.value.findIndex(item => item.id === id);
|
||||
if (index !== -1) {
|
||||
inspectionItems.value.splice(index, 1);
|
||||
ElMessage.success('删除成功');
|
||||
}
|
||||
}).catch(() => {
|
||||
// 取消删除
|
||||
});
|
||||
};
|
||||
|
||||
@@ -2065,8 +1986,6 @@ const refreshPage = () => {
|
||||
onMounted(() => {
|
||||
getInspectionTypeList();
|
||||
getLisGroupList();
|
||||
// 加载检验项目数据
|
||||
loadObservationItems();
|
||||
// 加载检验套餐明细项目
|
||||
loadPackageItemsFromAPI();
|
||||
// 检查URL参数,如果有tab参数则切换到对应导航项
|
||||
@@ -2139,8 +2058,6 @@ watch(packageItems, (newVal) => {
|
||||
flex: 1;
|
||||
padding: 20px;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* 页面标题 */
|
||||
@@ -2490,8 +2407,6 @@ watch(packageItems, (newVal) => {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.03);
|
||||
padding: 16px;
|
||||
margin-bottom: 16px;
|
||||
max-width: 100%;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
@@ -2511,8 +2426,6 @@ watch(packageItems, (newVal) => {
|
||||
.form-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
min-width: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.form-label {
|
||||
@@ -2609,11 +2522,6 @@ watch(packageItems, (newVal) => {
|
||||
border-radius: 4px;
|
||||
padding: 0 8px;
|
||||
font-size: 14px;
|
||||
max-width: 100%;
|
||||
min-width: 0;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.form-control:focus {
|
||||
|
||||
Reference in New Issue
Block a user