| | |
| | | <template> |
| | | <div class="organ-allocation-detail"> |
| | | <case-basic-info :case-id="caseId" :show-attachment="true" /> |
| | | <!-- 基本信息部分 --> |
| | | <el-card class="detail-card"> |
| | | <div slot="header" class="clearfix"> |
| | |
| | | |
| | | <el-form :model="form" ref="form" :rules="rules" label-width="120px"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="住院号" prop="donorno"> |
| | | <el-input v-model="form.donorno" readonly /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="案例编号" prop="caseNo"> |
| | | <el-input v-model="form.caseNo" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="捐献者姓名" prop="name"> |
| | | <el-input v-model="form.name" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="性别" prop="sex"> |
| | | <el-select v-model="form.sex" style="width: 100%"> |
| | | <el-option label="男" value="0" /> |
| | | <el-option label="女" value="1" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="年龄" prop="age"> |
| | | <el-input v-model="form.age" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- <el-col :span="8"> |
| | | <el-form-item label="捐献类别" prop="donationcategory"> |
| | | <el-select v-model="form.donationcategory" style="width: 100%"> |
| | | <el-option |
| | | v-for="dict in dict.type.sys_DonationCategory || []" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> --> |
| | | </el-row> |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="血型" prop="bloodtype"> |
| | | <el-select v-model="form.bloodtype" style="width: 100%"> |
| | | <el-option |
| | | v-for="dict in dict.type.sys_BloodType || []" |
| | | :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="idcardno"> |
| | | <el-input v-model="form.idcardno" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="记录状态" prop="recordstate"> |
| | | <el-input v-model="form.recordstate" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="疾病诊断" prop="diagnosisname"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="2" |
| | | v-model="form.diagnosisname" |
| | | placeholder="请输入疾病诊断信息" |
| | | /> |
| | | <el-form-item label="分配状态" prop="allocationStatus"> |
| | | <el-select |
| | | v-model="form.allocationStatus" |
| | | placeholder="请选择分配状态" |
| | | > |
| | | <el-option |
| | | v-for="dict in dict.type.organ_allocation_status || []" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="所在医疗机构" prop="treatmenthospitalname"> |
| | | <el-input |
| | | v-model="form.treatmenthospitalname" |
| | | placeholder="请输入医疗机构名称" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="医疗机构编码" prop="treatmenthospitalno"> |
| | | <el-input |
| | | v-model="form.treatmenthospitalno" |
| | | placeholder="请输入医疗机构编码" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="登记人" prop="registrationName"> |
| | | <el-input v-model="form.registrationName" readonly /> |
| | | <el-input v-model="form.registrationName" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | |
| | | type="datetime" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | style="width: 100%" |
| | | readonly |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </div> |
| | | </el-form> |
| | | |
| | | <div class="dialog-footer" v-if="form.allocationStatus !== '1'"> |
| | | <!-- <div class="dialog-footer" v-if="form.allocationStatus !== '1'"> |
| | | <el-button |
| | | type="primary" |
| | | @click="handleSaveAllocation" |
| | |
| | | > |
| | | 确认完成分配 |
| | | </el-button> |
| | | </div> |
| | | </div> --> |
| | | </el-card> |
| | | |
| | | <!-- 附件管理部分优化 --> |
| | |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | |
| | | |
| | | <!-- 附件预览对话框 --> |
| | | <FilePreviewDialog |
| | | :visible="filePreviewVisible" |
| | |
| | | import { |
| | | allocationList, |
| | | allocationadd, |
| | | allocationedit |
| | | allocationedit, |
| | | donateorganBaseinfoInfo |
| | | } from "@/api/businessApi"; |
| | | import UploadAttachment from "@/components/UploadAttachment"; |
| | | import FilePreviewDialog from "@/components/FilePreviewDialog"; |
| | | import OrgSelecter from "@/views/project/components/orgselect"; |
| | | |
| | | import CaseBasicInfo from "@/components/CaseBasicInfo"; |
| | | import dayjs from "dayjs"; |
| | | |
| | | export default { |
| | |
| | | components: { |
| | | UploadAttachment, |
| | | OrgSelecter, |
| | | FilePreviewDialog |
| | | FilePreviewDialog, |
| | | CaseBasicInfo |
| | | }, |
| | | dicts: [ |
| | | "sys_BloodType", |
| | | "sys_DonationCategory", |
| | | "sys_RecordState", |
| | | "sys_Organ" |
| | | "sys_Organ", |
| | | "organ_allocation_status" |
| | | ], |
| | | data() { |
| | | return { |
| | | caseId: null, |
| | | |
| | | // 表单数据 |
| | | form: { |
| | | id: undefined, |
| | |
| | | } |
| | | }, |
| | | created() { |
| | | this.caseId = this.$route.query.infoid; |
| | | this.initData(); |
| | | }, |
| | | methods: { |
| | |
| | | .substring(0, 19); |
| | | |
| | | if (infoid) { |
| | | this.getDetail(infoid); |
| | | this.getDetail(infoid, id); |
| | | } else { |
| | | this.generateDonorNo(); |
| | | } |
| | |
| | | this.form.donorno = "D" + timestamp.slice(-8); |
| | | this.form.caseNo = "CASE" + timestamp.slice(-6); |
| | | }, |
| | | |
| | | // 解析 filePatch 字段 |
| | | parseFilePatch(filePatch) { |
| | | if (!filePatch) { |
| | | this.form.attachments = []; |
| | | return; |
| | | } |
| | | |
| | | try { |
| | | this.form.attachments = JSON.parse(filePatch); |
| | | } catch (error) { |
| | | console.error("解析 filePatch 字段失败:", error); |
| | | this.form.attachments = []; |
| | | } |
| | | }, |
| | | // 获取详情 |
| | | async getDetail(infoid) { |
| | | async getDetail(infoid, id) { |
| | | this.loading = true; |
| | | donateorganBaseinfoInfo(id); |
| | | try { |
| | | const response = await allocationList({ infoid }); |
| | | if ( |
| | |
| | | |
| | | // 填充表单数据 |
| | | Object.assign(this.form, data); |
| | | // 转换附件为集合 |
| | | this.parseFilePatch(this.form.fileName); |
| | | |
| | | // 初始化附件 |
| | | if (this.form.attachments) { |
| | |
| | | } |
| | | return ""; |
| | | }, |
| | | // 构建 filePatch 字段 |
| | | buildFilePatch() { |
| | | if (!this.attachments || this.attachments.length === 0) { |
| | | return ""; |
| | | } |
| | | return JSON.stringify(this.attachments); |
| | | }, |
| | | // 保存基本信息 |
| | | async handleSave() { |
| | | this.$refs.form.validate(async valid => { |
| | |
| | | try { |
| | | const saveData = { |
| | | ...this.form, |
| | | attachments: this.attachments, |
| | | serviceDonateorganList: |
| | | this.allocationData.serviceDonateorganList || [] |
| | | }; |
| | | saveData.fileName=this.buildFilePatch(); |
| | | saveData.serviceDonateorganList.forEach(item => { |
| | | item.baseid = this.form.id; |
| | | item.infoid = this.form.infoid; |
| | | }); |
| | | console.log(this.form.recordstate); |
| | | this.form.recordstate = 1; |
| | | const apiMethod = this.form.id ? allocationedit : allocationadd; |