| | |
| | | <template> |
| | | <div class="maintenance-detail"> |
| | | <!-- 基础信息 --> |
| | | <el-card class="detail-card"> |
| | | <div slot="header" class="clearfix"> |
| | | <span class="detail-title">供者基本信息</span> |
| | | </div> |
| | | |
| | | <el-form :model="form" ref="form" label-width="120px"> |
| | | <el-row :gutter="20"> |
| | | <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-col :span="8"> |
| | | <el-form-item label="性别" prop="gender"> |
| | | <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-row> |
| | | |
| | | <el-row :gutter="20"> |
| | | <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="diagnosisname"> |
| | | <el-input v-model="form.diagnosisname" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="首诊医疗机构" prop="treatmenthospitalname"> |
| | | <el-input v-model="form.treatmenthospitalname" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="患者状态" prop="recordstate"> |
| | | <el-select v-model="form.recordstate" style="width: 100%"> |
| | | <el-option |
| | | v-for="dict in dict.type.sys_DonationCategory || []" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item |
| | | label="未完成原因" |
| | | prop="incompleteReason" |
| | | v-if="form.recordstate === '5'" |
| | | > |
| | | <el-input |
| | | v-model="form.incompleteReason" |
| | | placeholder="请输入未完成捐献的原因" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="上报时间" prop="reporttime"> |
| | | <el-date-picker |
| | | v-model="form.reporttime" |
| | | type="datetime" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="死亡时间" prop="deathTime"> |
| | | <el-date-picker |
| | | v-model="form.deathTime" |
| | | type="datetime" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="协调员" prop="coordinatorName"> |
| | | <el-input v-model="form.coordinatorName" /> |
| | | </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-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="Rh(D)" prop="rhYin"> |
| | | <el-radio-group v-model="form.rhYin"> |
| | | <el-radio |
| | | v-for="dict in dict.type.sys_bloodtype_rhd || []" |
| | | :key="dict.value" |
| | | :label="dict.value" |
| | | >{{ dict.label }}</el-radio |
| | | > |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-form-item label="特殊病史" prop="specialMedicalHistory"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="3" |
| | | v-model="form.specialMedicalHistory" |
| | | placeholder="记录特殊病史信息" |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-card> |
| | | |
| | | <el-card class="assessment-card"> |
| | | <div slot="header" class="clearfix"> |
| | | <span class="detail-title">供者评估各项记录</span> |
| | | <el-button |
| | | type="primary" |
| | | size="mini" |
| | | @click="toggleEditMode" |
| | | style="float: right;" |
| | | > |
| | | {{ isEdit ? "完成编辑" : "开始编辑" }} |
| | | </el-button> |
| | | </div> |
| | | |
| | | <el-tabs v-model="activeTab" type="card" @tab-click="handleTabClick"> |
| | | <!-- 培养结果记录 --> |
| | | <el-tab-pane label="培养结果" name="culture"> |
| | | <el-card class="culture-card"> |
| | | <div slot="header" class="clearfix"> |
| | | <span class="detail-title">培养结果记录</span> |
| | | <el-button |
| | | type="primary" |
| | | size="mini" |
| | | icon="el-icon-plus" |
| | | @click="handleAddCulture" |
| | | > |
| | | 新增培养记录 |
| | | </el-button> |
| | | |
| | | </div> |
| | | |
| | | <el-table :data="cultureList" v-loading="cultureLoading"> |
| | |
| | | </el-table> |
| | | </el-card> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="护理核查记录" name="hlihc"> |
| | | <el-card class="record-card"> |
| | | <div slot="header" class="clearfix"> |
| | | <span class="detail-title">护理核查记录</span> |
| | | |
| | | </div> |
| | | |
| | | <el-table :data="recordList" v-loading="recordLoading"> |
| | | <el-table-column |
| | | label="核查时间" |
| | | align="center" |
| | | prop="recordTime" |
| | | width="160" |
| | | /> |
| | | <el-table-column |
| | | label="核查人" |
| | | align="center" |
| | | prop="recorder" |
| | | width="100" |
| | | /> |
| | | <el-table-column |
| | | label="核查记录" |
| | | align="center" |
| | | prop="checkRecord" |
| | | min-width="200" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column label="附件" align="center" width="120"> |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | v-if=" |
| | | scope.row.attachments && scope.row.attachments.length > 0 |
| | | " |
| | | size="mini" |
| | | type="text" |
| | | @click="handleViewRecordAttachments(scope.row)" |
| | | > |
| | | 查看附件({{ scope.row.attachments.length }}) |
| | | </el-button> |
| | | <span v-else>无附件</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="操作" |
| | | align="center" |
| | | width="180" |
| | | class-name="small-padding fixed-width" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-edit" |
| | | @click="handleEditRecord(scope.row)" |
| | | >编辑</el-button |
| | | > |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-delete" |
| | | style="color: #F56C6C;" |
| | | @click="handleDeleteRecord(scope.row)" |
| | | >删除</el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-card> |
| | | </el-tab-pane> |
| | | |
| | | <!-- 肝功能肾功能 --> |
| | | <el-tab-pane label="肝功能肾功能" name="liverKidney"> |
| | |
| | | </el-card> |
| | | |
| | | <!-- 护理核查记录 --> |
| | | <el-card class="record-card"> |
| | | <div slot="header" class="clearfix"> |
| | | <span class="detail-title">护理核查记录</span> |
| | | <el-button |
| | | type="primary" |
| | | size="mini" |
| | | icon="el-icon-plus" |
| | | @click="handleAddRecord" |
| | | > |
| | | 新增核查记录 |
| | | </el-button> |
| | | </div> |
| | | |
| | | <el-table :data="recordList" v-loading="recordLoading"> |
| | | <el-table-column |
| | | label="核查时间" |
| | | align="center" |
| | | prop="recordTime" |
| | | width="160" |
| | | /> |
| | | <el-table-column |
| | | label="核查人" |
| | | align="center" |
| | | prop="recorder" |
| | | width="100" |
| | | /> |
| | | <el-table-column |
| | | label="核查记录" |
| | | align="center" |
| | | prop="checkRecord" |
| | | min-width="200" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column label="附件" align="center" width="120"> |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | v-if="scope.row.attachments && scope.row.attachments.length > 0" |
| | | size="mini" |
| | | type="text" |
| | | @click="handleViewRecordAttachments(scope.row)" |
| | | > |
| | | 查看附件({{ scope.row.attachments.length }}) |
| | | </el-button> |
| | | <span v-else>无附件</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="操作" |
| | | align="center" |
| | | width="180" |
| | | class-name="small-padding fixed-width" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-edit" |
| | | @click="handleEditRecord(scope.row)" |
| | | >编辑</el-button |
| | | > |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-delete" |
| | | style="color: #F56C6C;" |
| | | @click="handleDeleteRecord(scope.row)" |
| | | >删除</el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-card> |
| | | |
| | | <!-- 培养记录编辑对话框 --> |
| | | <el-dialog |
| | |
| | | |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="recordDialogVisible = false">取消</el-button> |
| | | <el-button |
| | | type="primary" |
| | | @click="handleSaveRecord" |
| | | :loading="recordSaveLoading" |
| | | >保存</el-button |
| | | > |
| | | </span> |
| | | </el-dialog> |
| | | |
| | |
| | | import LiverKidneyPanel from "@/components/MaintainComponents/LiverKidneyPanel.vue"; |
| | | import BloodRoutinePanel from "@/components/MaintainComponents/BloodRoutinePanel.vue"; |
| | | import UrineRoutinePanel from "@/components/MaintainComponents/UrineRoutinePanel.vue"; |
| | | import CaseBasicInfo from "@/components/CaseBasicInfo"; |
| | | import store from "@/store"; |
| | | import dayjs from "dayjs"; |
| | | |
| | | export default { |
| | |
| | | FilePreviewDialog, |
| | | LiverKidneyPanel, |
| | | BloodRoutinePanel, |
| | | UrineRoutinePanel |
| | | UrineRoutinePanel, |
| | | CaseBasicInfo |
| | | }, |
| | | dicts: [ |
| | | "sys_donornode", |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | isEdit: false, |
| | | isEdit: true, |
| | | currentMaintenanceId: null, |
| | | isEditMode: false, |
| | | form: { |
| | |
| | | }; |
| | | }, |
| | | created() { |
| | | this.caseId = this.infoid; |
| | | |
| | | this.loadMaintenanceData(); |
| | | }, |
| | | watch: { |
| | |
| | | this.cultureLoading = true; |
| | | this.recordLoading = true; |
| | | |
| | | const id = null; |
| | | const infoid = this.infoid; |
| | | const queryParams = {}; |
| | | console.log(this.infoid, "this.infoid"); |
| | | |
| | | if (this.infoid) { |
| | | queryParams.infoid = this.infoid; |
| | | if (id) { |
| | | queryParams.infoid = infoid; |
| | | this.currentMaintenanceId = id; |
| | | this.isEditMode = true; |
| | | } else if (infoid) { |
| | | queryParams.infoid = infoid; |
| | | this.currentMaintenanceId = null; |
| | | this.isEditMode = false; |
| | | } else { |
| | | this.$message.error("缺少必要的路由参数"); |
| | | return; |
| | | } |
| | | |
| | | queryParams.infoid = infoid; |
| | | const response = await maintainList(queryParams); |
| | | if (response.code === 200) { |
| | | let maintenanceData = response.data[0]; |
| | |
| | | } |
| | | }, |
| | | |
| | | // 保存所有数据 |
| | | async handleSave() { |
| | | try { |
| | | const saveData = { |
| | | ...this.form, |
| | | itemDesc: { |
| | | liverKidney: this.assessmentData.liverKidney, |
| | | bloodRoutine: this.assessmentData.bloodRoutine, |
| | | urineRoutine: this.assessmentData.urineRoutine, |
| | | cultureResults: this.cultureList, |
| | | nursingRecords: this.recordList |
| | | } |
| | | }; |
| | | if (saveData.state == 1 || !saveData.state) { |
| | | saveData.state = 2; |
| | | } |
| | | this.extracontentinfo.specialMedicalHistory = this.form.specialMedicalHistory; |
| | | let response; |
| | | if (this.isEditMode && this.currentMaintenanceId) { |
| | | saveData.id = this.currentMaintenanceId; |
| | | response = await maintainedit(saveData); |
| | | } else { |
| | | response = await maintainAdd(saveData); |
| | | } |
| | | |
| | | if (response.code === 200) { |
| | | this.$message.success("保存成功"); |
| | | this.isEdit = false; |
| | | if (!this.currentMaintenanceId) { |
| | | this.currentMaintenanceId = response.data; |
| | | } |
| | | // this.donatebaseinfoEdit({ |
| | | // id: this.$route.query.infoid, |
| | | // extracontent: JSON.stringify(this.extracontentinfo) |
| | | // }); |
| | | if (!this.isEditMode && response.data && response.data.id) { |
| | | this.currentMaintenanceId = response.data.id; |
| | | this.isEditMode = true; |
| | | } |
| | | } else { |
| | | this.$message.error("保存失败:" + (response.msg || "未知错误")); |
| | | } |
| | | } catch (error) { |
| | | console.error("保存数据失败:", error); |
| | | this.$message.error("保存失败"); |
| | | } |
| | | }, |
| | | |
| | | // 切换编辑模式 |
| | | toggleEditMode() { |
| | | this.isEdit = !this.isEdit; |
| | | if (!this.isEdit) { |
| | | this.handleSave(); |
| | | } |
| | | }, |
| | | accomplish() { |
| | | this.$confirm("是否完成该案例捐献确认步骤?", "提醒", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | this.form.state = 3; |
| | | this.handleSave(); |
| | | }) |
| | | |
| | | .catch(() => {}); |
| | | }, |
| | | // 培养记录相关方法 |
| | | handleAddCulture() { |
| | | this.cultureDialogTitle = "新增培养记录"; |
| | |
| | | .toISOString() |
| | | .replace("T", " ") |
| | | .substring(0, 19), |
| | | recorder: "当前用户", |
| | | recorder: store.getters.name, |
| | | checkRecord: "", |
| | | attachments: [] |
| | | }; |