门诊医生站-》开立诊断 页面调整

This commit is contained in:
itcast
2026-01-16 15:46:43 +08:00
parent 2b3add4808
commit be0514bc08
86 changed files with 2224 additions and 3929 deletions

View File

@@ -79,7 +79,6 @@
clearable
filterable
:disabled="form.isEditInfoDisable === 1"
no-data-text=""
>
<el-option
v-for="category in activity_category_code"
@@ -92,7 +91,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="业务类型" prop="typeEnum">
<el-select v-model="form.typeEnum" placeholder="" clearable filterable no-data-text="">
<el-select v-model="form.typeEnum" placeholder="" clearable filterable>
<el-option
v-for="item in typeEnumOptions"
:key="item.value"
@@ -116,11 +115,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="医保编码" prop="conditionCode">
<el-input
v-model="form.ybNo"
placeholder=""
clearable
/>
<el-input v-model="form.ybNo" placeholder="" />
</el-form-item>
</el-col>
</el-row>
@@ -135,7 +130,6 @@
filterable
style="width: 240px"
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
no-data-text=""
>
<el-option
v-for="dict in med_chrgitm_type"
@@ -167,7 +161,7 @@
<el-col :span="8">
<el-form-item label="所需标本" prop="specimenCode">
<el-select v-model="form.specimenCode" clearable filterable no-data-text="">
<el-select v-model="form.specimenCode" clearable filterable>
<el-option
v-for="category in specimen_code"
:key="category.value"
@@ -187,7 +181,6 @@
clearable
filterable
:disabled="form.isEditInfoDisable === 1"
no-data-text=""
>
<el-option
v-for="item in chrgitm_lv"
@@ -201,14 +194,9 @@
<el-col :span="8">
<el-form-item label="使用单位" prop="permittedUnitCode">
<el-select
v-model="form.permittedUnitCode"
clearable
filterable
:filter-method="filterUnitCode"
>
<el-select v-model="form.permittedUnitCode" clearable filterable>
<el-option
v-for="category in isFilteringUnitCode ? filteredUnitCode : unit_code"
v-for="category in unit_code"
:key="category.value"
:label="category.label"
:value="category.value"
@@ -218,7 +206,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="财务类型" prop="itemTypeCode">
<el-select v-model="form.itemTypeCode" clearable filterable no-data-text="">
<el-select v-model="form.itemTypeCode" clearable filterable>
<!-- :disabled="form.isEditInfoDisable === 1" -->
<el-option
@@ -367,7 +355,6 @@ import {
deptTreeSelect,
editDiagnosisTreatment,
getDiagnosisTreatmentList,
getDiseaseTreatmentByYbNo,
locationTreeSelect,
} from './diagnosistreatment';
import PopoverList from '@/components/OpenHis/popoverList/index.vue';
@@ -397,10 +384,6 @@ const statusFlagOptions = ref(undefined);
const exeOrganizations = ref(undefined);
const typeEnumOptions = ref(undefined);
const diagnosisTreatmentList = ref([]);
// 使用单位过滤后的选项
const filteredUnitCode = ref([]);
// 标记是否正在进行过滤查询
const isFilteringUnitCode = ref(false);
const data = reactive({
form: {},
@@ -459,7 +442,6 @@ const treatmentItems = ref([
const medicineSearchKey = ref('');
const isFirstOpen = ref(true); // 标记是否首次打开弹窗
const totalPrice = ref('0.00'); // 总价
const isValidatingYbNo = ref(false); // 标记是否正在校验医保编码
// 计算总价
function calculateTotalPrice() {
@@ -507,9 +489,6 @@ function show() {
getBodyTree();
getDeptTree();
getItemList();
// 重置使用单位过滤
filteredUnitCode.value = [];
isFilteringUnitCode.value = false;
title.value = '';
title.value = props.title;
@@ -538,9 +517,6 @@ function edit() {
getBodyTree();
getDeptTree();
getItemList();
// 重置使用单位过滤
filteredUnitCode.value = [];
isFilteringUnitCode.value = false;
title.value = '';
title.value = props.title;
form.value = props.item;
@@ -603,31 +579,8 @@ function reset() {
proxy.resetForm('diagnosisTreatmentRef');
}
async function validateYbNoUnique(ybNo, currentId = null) {
if (!ybNo || ybNo.trim() === '') {
return true; // 空值不进行校验
}
try {
const response = await getDiseaseTreatmentByYbNo(ybNo);
const data = response.data;
if (data && data.length > 0) {
// 检查是否存在相同的医保编码,排除当前编辑的记录
const existingRecord = data.find(item => item.id !== currentId);
if (existingRecord) {
return false; // 医保编码已存在
}
}
return true; // 医保编码唯一
} catch (error) {
console.error('医保编码校验失败:', error);
return true; // 校验失败时允许提交,由后端处理
}
}
/** 提交按钮 */
async function submitForm() {
function submitForm() {
form.value.ybFlag ? (form.value.ybFlag = 1) : (form.value.ybFlag = 0);
form.value.ybMatchFlag ? (form.value.ybMatchFlag = 1) : (form.value.ybMatchFlag = 0);
form.value.ruleId ? (form.value.ruleId = 1) : (form.value.ruleId = 0);
@@ -635,26 +588,8 @@ async function submitForm() {
treatmentItems.value.length > 0 && treatmentItems.value[0].adviceDefinitionId != ''
? JSON.stringify(treatmentItems.value)
: undefined;
proxy.$refs['diagnosisTreatmentRef'].validate(async (valid) => {
proxy.$refs['diagnosisTreatmentRef'].validate((valid) => {
if (valid) {
// 医保编码唯一性校验
if (form.value.ybNo) {
try {
isValidatingYbNo.value = true;
const isUnique = await validateYbNoUnique(form.value.ybNo, form.value.id);
if (!isUnique) {
proxy.$modal.msgWarning('医保编码已存在,请输入其他医保编码');
return;
}
} catch (error) {
console.error('医保编码校验失败:', error);
proxy.$modal.msgError('医保编码校验失败,请稍后重试');
return;
} finally {
isValidatingYbNo.value = false;
}
}
if (form.value.id != undefined) {
editDiagnosisTreatment(form.value).then((response) => {
// 触发自定义事件,并传递数据给父组件
@@ -747,23 +682,6 @@ function updatePrices(value) {
form.value.maximumRetailPrice = form.value.retailPrice;
}
// 使用单位过滤函数
function filterUnitCode(query) {
if (!query || query.trim() === '') {
// 查询为空时,重置过滤状态,显示所有选项
isFilteringUnitCode.value = false;
filteredUnitCode.value = [];
return;
}
// 有查询内容时,进行过滤
isFilteringUnitCode.value = true;
const queryLower = query.toLowerCase().trim();
filteredUnitCode.value = unit_code.value.filter((item) => {
const label = item.label || '';
return label.toLowerCase().includes(queryLower);
});
}
// 监听treatmentItems变化实时更新总价
watch(
() => treatmentItems.value,

View File

@@ -104,13 +104,3 @@ export function getYbDiagnosisTreatmentList (queryParams) {
params: queryParams,
});
}
// 根据医保编码查询诊疗目录(用于医保编码唯一性校验)
export function getDiseaseTreatmentByYbNo (ybNo) {
return request ({
url: '/data-dictionary/diagnosis-treatment/information/' + ybNo,
method: 'get',
});
}