| | |
| | | <template> |
| | | <div class="organ-utilization-detail"> |
| | | <case-basic-info :case-id="caseId" :show-attachment="true" /> |
| | | |
| | | <!-- 基本信息 --> |
| | | <el-card class="detail-card"> |
| | | <div slot="header" class="clearfix"> |
| | | <span class="detail-title">器官利用基本信息</span> |
| | | <div style="float: right;"> |
| | | <el-button type="primary" @click="handleSave" :loading="saveLoading"> |
| | | 保存 |
| | | </el-button> |
| | | <el-button |
| | | type="success" |
| | | @click="handleComplete" |
| | | :loading="confirmLoading" |
| | | > |
| | | 完成利用 |
| | | </el-button> |
| | | </div> |
| | | </div> |
| | | |
| | | <el-form :model="form" ref="form" :rules="rules" label-width="120px"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="6"> |
| | | <el-form-item align="left" label="遗体捐献" prop="isbodydonation"> |
| | | <el-radio-group v-model="form.isbodydonation"> |
| | | <el-radio |
| | | v-for="dict in dict.type.sys_0_1 || []" |
| | | :key="dict.value" |
| | | :label="dict.value" |
| | | >{{ dict.label }}</el-radio |
| | | > |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="18"> |
| | | <el-form-item |
| | | align="left" |
| | | label="接收单位" |
| | | prop="receivingunitname" |
| | | <el-form :model="form" ref="form" :rules="rules" label-width="120px"> |
| | | <!-- 基本信息 --> |
| | | <el-card class="detail-card"> |
| | | <div slot="header" class="clearfix"> |
| | | <span class="detail-title">器官利用基本信息</span> |
| | | <div style="float: right;"> |
| | | <el-button |
| | | type="primary" |
| | | @click="handleSave" |
| | | :loading="saveLoading" |
| | | > |
| | | <el-input |
| | | v-model="form.receivingunitname" |
| | | placeholder="请输入接收单位" |
| | | :disabled="form.isbodydonation !== '1'" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | 保存 |
| | | </el-button> |
| | | <el-button |
| | | type="success" |
| | | @click="handleComplete" |
| | | :loading="confirmLoading" |
| | | > |
| | | 完成利用 |
| | | </el-button> |
| | | </div> |
| | | </div> |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="6"> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </el-card> |
| | | </el-card> |
| | | <el-card class="detail-card"> |
| | | <div slot="header" class="clearfix"> |
| | | <span class="detail-title">遗体捐献信息</span> |
| | | |
| | | </div> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="6"> |
| | | <el-form-item align="left" label="遗体捐献" prop="isbodydonation"> |
| | | <el-radio-group v-model="form.isbodydonation"> |
| | | <el-radio |
| | | v-for="dict in dict.type.sys_0_1 || []" |
| | | :key="dict.value" |
| | | :label="dict.value" |
| | | >{{ dict.label }}</el-radio |
| | | > |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="18" v-if="form.isbodydonation==1"> |
| | | <el-form-item |
| | | align="left" |
| | | label="接收单位" |
| | | prop="receivingunitname" |
| | | > |
| | | <el-input |
| | | v-model="form.receivingunitname" |
| | | placeholder="请输入接收单位" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8" v-else> |
| | | <el-form-item |
| | | align="left" |
| | | label="接收家属" |
| | | prop="relationname" |
| | | > |
| | | <el-input |
| | | v-model="form.relationname" |
| | | placeholder="请输入接收家属" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-card> |
| | | </el-form> |
| | | <!-- 器官利用记录部分 - 整合受者详情 --> |
| | | <el-card class="utilization-card"> |
| | | <div slot="header" class="clearfix"> |
| | | <span class="detail-title">器官利用记录</span> |
| | | <div style="float: right;"> |
| | | <dict-tag |
| | | <dict-tag |
| | | :options="dict.type.utilize_statue" |
| | | :value="form.completeState" |
| | | /> |
| | |
| | | <el-input v-model="scope.row.name" placeholder="受者姓名" /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="操作" |
| | | align="center" |
| | | class-name="small-padding fixed-width" |
| | | v-if="form.completeState !== '3'" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-edit" |
| | | @click="handleEditUtilization(scope.row)" |
| | | > |
| | | 编辑 |
| | | </el-button> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-delete" |
| | | style="color: #F56C6C;" |
| | | @click="handleRemoveOrgan(scope.$index)" |
| | | v-if="!scope.row.id" |
| | | > |
| | | 删除 |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </div> |
| | | </el-card> |
| | | |
| | | <!-- 编辑利用记录对话框 --> |
| | | <el-dialog |
| | | title="编辑器官利用记录" |
| | | :visible.sync="editDialogVisible" |
| | | width="600px" |
| | | > |
| | | <el-form :model="currentRecord" label-width="120px"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="器官名称"> |
| | | <el-input v-model="currentRecord.organname" readonly /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="移植状态"> |
| | | <el-select |
| | | v-model="currentRecord.transplantstate" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="dict in transplantStatusList" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form-item |
| | | label="未移植原因" |
| | | v-if="currentRecord.transplantstate === '0'" |
| | | > |
| | | <el-input |
| | | type="textarea" |
| | | :rows="3" |
| | | v-model="currentRecord.abandonreason" |
| | | placeholder="请输入未移植原因" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item |
| | | label="移植医院" |
| | | v-if="currentRecord.transplantstate === '1'" |
| | | > |
| | | <el-select |
| | | v-model="currentRecord.hospitalno" |
| | | placeholder="请选择移植医院" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="hospital in hospitalList" |
| | | :key="hospital.hospitalNo" |
| | | :label="hospital.hospitalName" |
| | | :value="hospital.hospitalNo" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item |
| | | label="受者姓名" |
| | | v-if="currentRecord.transplantstate === '1'" |
| | | > |
| | | <el-input v-model="currentRecord.name" placeholder="请输入受者姓名" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer"> |
| | | <el-button @click="editDialogVisible = false">取消</el-button> |
| | | <el-button type="primary" @click="handleEditConfirm">确认</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | <!-- 文件预览对话框 --> |
| | | <FilePreviewDialog |
| | | :visible="filePreviewVisible" |
| | |
| | | FilePreviewDialog, |
| | | CaseBasicInfo |
| | | }, |
| | | dicts: ["sys_BloodType", "sys_Organ", "sys_0_1",'utilize_statue'], |
| | | dicts: ["sys_BloodType", "sys_Organ", "sys_0_1", "utilize_statue"], |
| | | data() { |
| | | return { |
| | | caseId: null, |
| | |
| | | // 行展开事件 |
| | | handleExpandChange(row, expandedRows) { |
| | | this.expandedRows = expandedRows.map(item => item.organno); |
| | | }, |
| | | |
| | | // 编辑利用记录 |
| | | handleEditUtilization(row) { |
| | | const index = this.utilizationData.serviceDonatecomporganList.findIndex( |
| | | item => item.organno === row.organno |
| | | ); |
| | | if (index !== -1) { |
| | | this.currentRecord = { ...row }; |
| | | this.currentEditIndex = index; |
| | | this.editDialogVisible = true; |
| | | } |
| | | }, |
| | | |
| | | // 确认编辑 |
| | | handleEditConfirm() { |
| | | if (this.currentEditIndex !== -1) { |
| | | this.utilizationData.serviceDonatecomporganList[ |
| | | this.currentEditIndex |
| | | ] = { |
| | | ...this.currentRecord |
| | | }; |
| | | this.$message.success("利用记录更新成功"); |
| | | this.editDialogVisible = false; |
| | | } |
| | | }, |
| | | |
| | | // 删除器官记录 |
| | |
| | | .recipient-form { |
| | | padding: 15px; |
| | | } |
| | | |
| | | .attachment-header { |
| | | flex-wrap: wrap; |
| | | } |
| | |
| | | margin-top: 8px; |
| | | margin-left: 0; |
| | | } |
| | | |
| | | .form-section { |
| | | margin-bottom: 20px; |
| | | padding-bottom: 15px; |