Merge remote-tracking branch 'origin/develop' into develop

# Conflicts:
#	openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosis.vue
This commit is contained in:
2026-03-04 15:34:12 +08:00
2 changed files with 58 additions and 80 deletions

View File

@@ -36,23 +36,26 @@
</el-icon>
</el-button>
</template>
<template v-if="node.level === 2 && node.parent.data.name != '常用' && node.parent.data.name != '历史'">
<el-popconfirm width="200" :hide-after="10" title="确认删除此常用诊断吗" placement="top-start"
@confirm="deleteChild(data)">
<template #reference>
<el-button
style="color: #000000"
type="text"
size="small"
@click.stop=""
>
<el-icon>
<Minus />
</el-icon>
</el-button>
</template>
</el-popconfirm>
</template>
<el-popconfirm width="200" :hide-after="10" title="确认删除此常用诊断吗" placement="top-start"
@confirm="deleteChild(data)">
<template #reference>
<el-button
style="color: #000000"
v-if="
node.level === 2 &&
node.parent.data.name != '常用' &&
node.parent.data.name != '历史'
"
type="text"
size="small"
@click.stop=""
>
<el-icon>
<Minus />
</el-icon>
</el-button>
</template>
</el-popconfirm>
</span>
</div>
</template>
@@ -95,15 +98,14 @@
<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-select v-model="scope.row.medTypeCode" placeholder="请选择" style="width: 150px" v-if="diag_type && diag_type.length > 0">
<el-select v-model="scope.row.medTypeCode" placeholder=" " style="width: 150px">
<el-option
v-for="item in diag_type"
v-for="item in med_type"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<span v-else style="color: #909399;">加载中...</span>
</el-form-item>
</template>
</el-table-column>
@@ -290,7 +292,7 @@ const props = defineProps({
const emits = defineEmits(['diagnosisSave']);
const { proxy } = getCurrentInstance();
const userStore = useUserStore();
const { diag_type } = proxy.useDict('diag_type');
const { med_type } = proxy.useDict('med_type');
const { diagnosis_classification } = proxy.useDict('diagnosis_classification');
const { long_term_flag } = proxy.useDict('long_term_flag');
@@ -505,7 +507,7 @@ function handleAddDiagnosis() {
showPopover: false,
name: undefined,
verificationStatusEnum: 4,
medTypeCode: undefined, // 新增时不设默认值,让用户选择
medTypeCode: '11',
diagSrtNo: maxSortNo + 1,
iptDiseTypeCode: 2,
diagnosisDesc: '',
@@ -576,13 +578,6 @@ function handleMaindise(value, index) {
function handleSaveDiagnosis() {
proxy.$refs.formRef.validate((valid) => {
if (valid) {
// 验证诊断类型是否已选择
const emptyMedType = form.value.diagnosisList.find(d => !d.medTypeCode);
if (emptyMedType) {
proxy.$modal.msgWarning('请选择诊断类型');
return false;
}
if (form.value.diagnosisList.length == 0) {
proxy.$modal.msgWarning('诊断不能为空');
return false;
@@ -723,7 +718,7 @@ form.value.diagnosisList.push({
ybNo: data.ybNo,
name: data.name,
verificationStatusEnum: 4,
medTypeCode: undefined, // 新增时不设默认值,让用户选择
medTypeCode: '11',
diagSrtNo: maxSortNo + 1,
definitionId: data.definitionId,
classification: '西医', // 默认为西医

View File

@@ -73,56 +73,39 @@
</div>
</div>
<div class="disabled-wrapper" style="width: 85%; border: 1px solid #eee; position: relative">
<div style="padding: 10px; border: 1px solid #eee; height: 50px; border-left: 0">
<el-descriptions :column="5" class="patient-info-descriptions">
<el-descriptions-item label="患者信息:" width="420">
{{
Object.keys(patientInfo).length !== 0
? patientInfo.patientName +
' / ' +
patientInfo.age +
' / ' +
patientInfo.genderEnum_enumText +
' / ' +
(patientInfo?.contractName ? patientInfo.contractName : '') +
'/' +
patientInfo.phone +
'/' +
patientInfo.busNo
: '-'
}}
</el-descriptions-item>
<el-descriptions-item label="挂号时间:" width="300">
{{ Object.keys(patientInfo).length !== 0 ? formatDate(patientInfo.registerTime) : '-' }}
</el-descriptions-item>
<el-descriptions-item label="医生:" width="250">
{{ userStore.nickName }}
</el-descriptions-item>
<el-descriptions-item label="" width="300">
<el-radio-group v-model="firstEnum">
<el-radio :label="1"></el-radio>
<el-radio :label="2">复诊</el-radio>
</el-radio-group>
<el-button type="primary" plain @click.stop="handleFinish(patientInfo.encounterId)">
完诊
</el-button>
<el-button type="primary" plain @click.stop="handleLeave(patientInfo.encounterId)">
暂离
</el-button>
<el-button type="primary" plain :disabled="isRefundButtonDisabled"
@click.stop="handleRefund(patientInfo.encounterId)">
退费
</el-button>
<el-button type="primary" plain class="top-layer-btn"
@click.stop="getEnPrescription(patientInfo.encounterId)">
处方单
</el-button>
<el-button type="primary" plain class="top-layer-btn" :disabled="isHospitalizationButtonDisabled"
@click.stop="handleHospitalizationClick()"
@mouseenter="console.log('办理住院按钮状态:', { patientInfo: patientInfo?.value, hasEncounterId: patientInfo?.value?.encounterId, isDisabled: isHospitalizationButtonDisabled })">
办理住院 </el-button>
</el-descriptions-item>
</el-descriptions>
<div style="padding: 10px; border: 1px solid #eee; min-height: 50px; border-left: 0; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px;">
<div style="display: flex; align-items: flex-start; gap: 20px; flex: 1; flex-wrap: wrap;">
<div style="display: flex; align-items: flex-start;">
<span style="color: #606266; font-size: 14px; margin-right: 8px; flex-shrink: 0; line-height: 1.5;">患者信息:</span>
<span style="font-size: 14px; line-height: 1.5; word-break: break-all;">
{{
Object.keys(patientInfo).length !== 0
? patientInfo.patientName + ' / ' + patientInfo.age + ' / ' + patientInfo.genderEnum_enumText + ' / ' + (patientInfo?.contractName ? patientInfo.contractName : '') + '/' + patientInfo.phone + '/' + patientInfo.busNo
: '-'
}}
</span>
</div>
<div style="display: flex; align-items: center; flex-shrink: 0; line-height: 1.5;">
<span style="color: #606266; font-size: 14px; margin-right: 8px;">挂号时间:</span>
<span style="font-size: 14px;">{{ Object.keys(patientInfo).length !== 0 ? formatDate(patientInfo.registerTime) : '-' }}</span>
</div>
<div style="display: flex; align-items: center; flex-shrink: 0; line-height: 1.5;">
<span style="color: #606266; font-size: 14px; margin-right: 8px;">医生:</span>
<span style="font-size: 14px;">{{ userStore.nickName }}</span>
</div>
</div>
<div style="display: flex; align-items: center; gap: 8px; flex-shrink: 0;">
<el-radio-group v-model="firstEnum" style="margin-right: 5px;">
<el-radio :label="1">初诊</el-radio>
<el-radio :label="2">复诊</el-radio>
</el-radio-group>
<el-button type="primary" plain @click.stop="handleFinish(patientInfo.encounterId)" size="small"></el-button>
<el-button type="primary" plain @click.stop="handleLeave(patientInfo.encounterId)" size="small">暂离</el-button>
<el-button type="primary" plain :disabled="isRefundButtonDisabled" @click.stop="handleRefund(patientInfo.encounterId)" size="small">退费</el-button>
<el-button type="primary" plain class="top-layer-btn" @click.stop="getEnPrescription(patientInfo.encounterId)" size="small">处方单</el-button>
<el-button type="primary" plain class="top-layer-btn" :disabled="isHospitalizationButtonDisabled" @click.stop="handleHospitalizationClick()" size="small">办理住院</el-button>
</div>
</div>
<div style="padding: 10px; position: relative">
<el-tabs type="card" style="width: 100%; height: 100%" v-loading="loading" v-model="activeTab"