患者档案(现为患者列表)->修改和查看按钮调出窗口与新建患者保持一致

This commit is contained in:
2026-01-05 14:22:57 +08:00
parent 2157806ba5
commit 8d69dc3c00
2 changed files with 91 additions and 283 deletions

View File

@@ -1,6 +1,6 @@
<template>
<div class="app-container">
<!-- 患者添加对话框组件 -->
<!-- 患者添加/修改/查看对话框组件 -->
<patient-add-dialog ref="patientAddRef" @submit="handlePatientAdded" />
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" class="query-form">
<el-form-item label="病人名称" prop="searchKey">
@@ -111,257 +111,7 @@
/>
</div>
<!-- 添加或修改对话框 -->
<el-dialog :title="title" v-model="open" width="1000px" append-to-body>
<el-form ref="patientRef" :model="form" :rules="rules" label-width="90px" size="medium">
<el-row :gutter="10">
<el-col :span="6">
<el-form-item label="姓名" prop="name">
<el-input v-model="form.name" clearable :disabled="isViewMode" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="民族" prop="nationalityCode">
<el-select v-model="form.nationalityCode" filterable clearable :disabled="isViewMode">
<el-option
v-for="item in nationality_code"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="性别" prop="genderEnum">
<el-radio-group v-model="form.genderEnum" :disabled="isViewMode" size="small">
<el-radio
v-for="item in administrativegenderList"
:key="item.value"
:label="item.value"
>
{{ item.info }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="活动标识" prop="activeFlag">
<el-radio-group v-model="form.activeFlag" :disabled="isViewMode">
<el-radio v-for="item in tempFlagList" :key="item.value" :label="item.value">
{{ item.info }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="6">
<el-form-item label="证件类别" prop="typeCode">
<el-select
v-model="form.patientIdInfoList[0].typeCode"
placeholder="证件类别"
clearable
:disabled="isViewMode"
>
<el-option
v-for="dict in sys_idtype"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="证件号码" prop="idCard">
<el-input
v-model="form.idCard"
clearable
:disabled="isViewMode"
placeholder="请输入18位身份证号"
maxlength="18"
show-word-limit
@blur="handleIdCardBlur"
/>
</el-form-item>
<el-form-item label="生日" prop="birthDate" v-show="false">
<el-input v-model="form.birthDate" v-show="false" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="年龄" prop="age">
<el-input
v-model="form.age"
:disabled="isViewMode"
@input="(value) => (form.age = value.replace(/[^0-9]/g, ''))"
/>
</el-form-item>
</el-col>
<!-- <el-col :span="6">
<el-form-item label="国家编码" prop="countryCode">
<el-input v-model="form.countryCode" clearable :disabled="isViewMode" />
</el-form-item>
</el-col> -->
</el-row>
<el-row :gutter="10">
<el-col :span="6">
<el-form-item label="联系方式" prop="phone">
<el-input v-model="form.phone" clearable :disabled="isViewMode" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="职业" prop="prfsEnum">
<el-select
v-model="form.prfsEnum"
placeholder="职业"
clearable
:disabled="isViewMode"
>
<el-option
v-for="item in occupationtypeList"
:key="item.value"
:label="item.info"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="工作单位" prop="workCompany">
<el-input v-model="form.workCompany" clearable :disabled="isViewMode" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="联系人" prop="linkName">
<el-input v-model="form.linkName" clearable :disabled="isViewMode" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="6">
<el-form-item label="联系人关系" prop="linkRelationCode">
<el-select
v-model="form.linkRelationCode"
placeholder="联系人关系"
clearable
:disabled="isViewMode"
>
<el-option
v-for="item in familyrelationshiptypeList"
:key="item.value"
:label="item.info"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="联系人电话" prop="linkRelationCode">
<el-input v-model="form.linkTelcom" clearable :disabled="isViewMode" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="血型ABO" prop="bloodAbo">
<el-select
v-model="form.bloodAbo"
placeholder="血型ABO"
clearable
:disabled="isViewMode"
>
<el-option
v-for="item in bloodtypeaboList"
:key="item.value"
:label="item.info"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="血型RH" prop="bloodRh">
<el-select
v-model="form.bloodRh"
placeholder="血型RH"
clearable
:disabled="isViewMode"
>
<el-option
v-for="item in bloodtypearhList"
:key="item.value"
:label="item.info"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="地址选择" prop="addressSelect">
<el-cascader
:options="options"
:props="{ checkStrictly: true, value: 'code', label: 'name' }"
v-model="selectedOptions"
@change="handleChange"
:disabled="isViewMode"
size="small"
>
<template #default="{ node, data }">
<span>{{ data.name }}</span>
<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
</template>
</el-cascader>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="详细地址" prop="address">
<el-input v-model="form.address" clearable :disabled="isViewMode" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="婚姻状态" prop="maritalStatusEnum">
<el-select
v-model="form.maritalStatusEnum"
placeholder="婚姻状态"
clearable
:disabled="isViewMode"
>
<el-option
v-for="item in maritalstatusList"
:key="item.value"
:label="item.info"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="死亡时间" prop="deceasedDate">
<el-date-picker
v-model="form.deceasedDate"
type="datetime"
placeholder="时间"
format="YYYY-MM-DD HH:mm:ss"
:disabled="isViewMode"
value-format="YYYY-MM-DD HH:mm:ss"
size="small"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
@@ -578,13 +328,11 @@ function handleAdd() {
}
//查看按钮
function handleSee(row) {
reset();
nextTick(() => {
isViewMode.value = true;
form.value = row;
open.value = true;
title.value = '查看患者';
});
// 使用PatientAddDialog组件显示查看模式
patientAddRef.value.show();
// 设置为查看模式并填充数据
patientAddRef.value.setViewMode(true);
patientAddRef.value.setFormData(row);
}
// 查看就诊历史
@@ -607,23 +355,11 @@ const nationalityDict = (code) => {
function handleUpdate(row) {
console.log('nationality_code=======>', JSON.stringify(nationality_code.value));
reset();
nextTick(() => {
form.value = JSON.parse(JSON.stringify(row));
addressCom.value =
row.addressProvince + row.addressCity + row.addressDistrict + row.addressStreet + row.address;
const selectedOptions1 = ref([
row.addressProvince,
row.addressCity,
row.addressDistrict,
row.addressStreet,
]);
const codes = convertAddressToCodes(selectedOptions1.value);
selectedOptions.value = codes.filter((code) => code !== null);
isViewMode.value = false;
open.value = true;
title.value = '修改菜单';
});
// 使用PatientAddDialog组件显示修改模式
patientAddRef.value.show();
// 设置为编辑模式并填充数据
patientAddRef.value.setViewMode(false);
patientAddRef.value.setFormData(row);
}
const convertAddressToCodes = (selectedOptions1) => {
const [provinceName, cityName, areaName, streetName] = selectedOptions1;