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

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

@@ -75,17 +75,19 @@
<el-form :model="form" :rules="rules" ref="formRef">
<el-table ref="diagnosisTableRef" :data="form.diagnosisList" height="650">
<el-table-column label="序号" type="index" width="50" />
<el-table-column label="诊断排序" align="center" prop="diagSrtNo" width="120">
<el-table-column label="分类" align="center" prop="typeName" width="120">
<template #default="scope">
<el-form-item :prop="`diagnosisList.${scope.$index}.diagSrtNo`" :rules="rules.diagSrtNo">
<el-input-number v-model="scope.row.diagSrtNo" controls-position="right" :controls="false"
style="width: 80px" />
</el-form-item>
<el-select v-model="scope.row.typeName" placeholder="请选择">
<el-option label="西医" value="西医" />
<el-option label="中医" value="中医" />
<el-option label="证型" value="证型" />
<el-option label="其他" value="其他" />
</el-select>
</template>
</el-table-column>
<el-table-column label="诊断类" align="center" prop="diagSrtNo" width="180">
<el-table-column label="诊断类" align="center" prop="medTypeCode" width="180">
<template #default="scope">
<el-form-item :prop="`diagnosisList.${scope.$index}.medTypeCode`" :rules="rules.medTypeCode">
<el-form-item :prop="`diagnosisList.${scope.$index}.medTypeCode`" :rules="rules.medTypeCode" style="margin-bottom: 0;">
<el-select v-model="scope.row.medTypeCode" placeholder=" " style="width: 150px">
<el-option
v-for="item in diag_type"
@@ -97,9 +99,9 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="诊断名称" align="center" prop="name">
<el-table-column label="诊断" align="center" prop="name">
<template #default="scope">
<el-form-item :prop="`diagnosisList.${scope.$index}.name`" :rules="rules.name">
<el-form-item :prop="`diagnosisList.${scope.$index}.name`" :rules="rules.name" style="margin-bottom: 0;">
<el-popover
:popper-style="{ padding: '0' }"
placement="bottom-start"
@@ -120,24 +122,26 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="医保码" align="center" prop="ybNo" width="180" />
<el-table-column label="类别" align="center" prop="typeName" width="100" />
<el-table-column label="诊断类型" align="center" prop="maindiseFlag">
<el-table-column label="主诊断" align="center" width="120">
<template #default="scope">
<el-select v-model="scope.row.maindiseFlag" placeholder="是否为主诊断" @change="(value) => handleMaindise(value, scope.$index)">
<el-option label="是" :value="1"/>
<el-option label="否" :value="0"/>
</el-select>
</template>
</el-table-column>
<el-table-column label="诊断备注" align="center" prop="diagnosisDesc" min-width="150">
<template #default="scope">
<el-input v-model="scope.row.diagnosisDesc" placeholder="请输入备注" />
</template>
</el-table-column>
<el-table-column label="ICD编码" align="center" prop="ybNo" width="180" />
<el-table-column label="诊断状态" align="center" prop="maindiseFlag" width="150">
<template #default="scope">
<div style="display:flex;flex-direction:column;align-items:center;gap:5px;">
<el-checkbox
label="主诊断"
:true-value="1"
:false-value="0"
v-model="scope.row.maindiseFlag"
border
size="small"
@change="(value) => handleMaindise(value, scope.$index)"
/>
<el-select
v-model="scope.row.verificationStatusEnum"
placeholder=" "
style="width: 100%; padding-bottom: 5px; padding-left: 10px"
style="width: 100%;"
size="small"
>
<el-option
@@ -147,7 +151,32 @@
:value="item.value"
/>
</el-select>
</div>
</template>
</el-table-column>
<el-table-column label="发病日期" align="center" prop="onsetDate" width="180">
<template #default="scope">
<el-date-picker
v-model="scope.row.onsetDate"
type="date"
placeholder="选择日期"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%"
/>
</template>
</el-table-column>
<el-table-column label="诊断日期" align="center" prop="diagnosisTime" width="180">
<template #default="scope">
{{ scope.row.diagnosisTime ? scope.row.diagnosisTime.split(' ')[0] : '' }}
</template>
</el-table-column>
<el-table-column label="医生" align="center" prop="diagnosisDoctor" width="120" />
<el-table-column label="长效诊断标识" align="center" prop="longTermDiagnosisFlag" width="150">
<template #default="scope">
<el-select v-model="scope.row.longTermDiagnosisFlag" placeholder="请选择" clearable>
<el-option label="长期有效" value="1" />
<el-option label="临时" value="2" />
</el-select>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="130">
@@ -218,7 +247,7 @@ const props = defineProps({
const emits = defineEmits(['diagnosisSave']);
const { proxy } = getCurrentInstance();
const userStore = useUserStore();
const { diag_type } = proxy.useDict('diag_type');
const { diag_type, long_term_diagnosis_flag } = proxy.useDict('diag_type', 'long_term_diagnosis_flag');
const rules = ref({
name: [{ required: true, message: '请选择诊断', trigger: 'change' }],
medTypeCode: [{ required: true, message: '请选择诊断类型', trigger: 'change' }],
@@ -252,8 +281,7 @@ function getList() {
getEncounterDiagnosis(props.patientInfo.encounterId)
.then((res) => {
if (res.code == 200) {
// 过滤掉中医诊断,只保留西医诊断
form.value.diagnosisList = res.data.filter(item => item.typeName !== '中医诊断');
form.value.diagnosisList = res.data;
emits('diagnosisSave', false);
}
maxNo = form.value.diagnosisList.length;
@@ -409,10 +437,13 @@ function getTree() {
function handleAddDiagnosis() {
proxy.$refs.formRef.validate((valid) => {
if (valid) {
const maxSortNo = form.value.diagnosisList.length > 0
? Math.max(...form.value.diagnosisList.map(item => item.diagSrtNo || 0))
// if (!allowAdd.value) {
// proxy.$modal.msgWarning('请先填写病历');
// return;
// }
const maxSortNo = form.value.diagnosisList.length > 0
? Math.max(...form.value.diagnosisList.map(item => item.diagSrtNo || 0))
: 0;
form.value.diagnosisList.push({
showPopover: false,
name: undefined,
@@ -422,7 +453,9 @@ function handleAddDiagnosis() {
iptDiseTypeCode: 2,
diagnosisDesc: '',
diagnosisDoctor: props.patientInfo.practitionerName || props.patientInfo.doctorName || props.patientInfo.physicianName || userStore.name,
diagnosisTime: new Date().toLocaleString('zh-CN')
diagnosisTime: new Date().toLocaleString('zh-CN'),
typeName: '西医',
longTermDiagnosisFlag: ''
});
// 添加后按排序号排序
@@ -491,7 +524,6 @@ function handleSaveDiagnosis() {
return false;
} else if (!form.value.diagnosisList.some((diagnosis) => diagnosis.maindiseFlag === 1)) {
proxy.$modal.msgWarning('至少添加一条主诊断');
return false;
} else {
// 保存前按排序号排序
form.value.diagnosisList.sort((a, b) => (a.diagSrtNo || 0) - (b.diagSrtNo || 0));