| | |
| | | </div> |
| | | |
| | | <el-descriptions :column="2" border> |
| | | <el-descriptions-item label="案例编号">{{ |
| | | <el-descriptions-item label="住院号">{{ |
| | | assessmentData.caseNo |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="潜在捐献者姓名">{{ |
| | |
| | | </el-table> |
| | | |
| | | <!-- 器官评估详情 --> |
| | | <el-collapse |
| | | v-model="activeOrgans" |
| | | accordion |
| | | class="organ-detail-collapse" |
| | | > |
| | | <el-collapse v-model="activeOrgans" accordion class="organ-detail-collapse"> |
| | | <el-collapse-item |
| | | v-for="organ in organAssessmentList" |
| | | :key="organ.organType" |
| | | :name="organ.organType" |
| | | :title="getOrganTitle(organ)" |
| | | > |
| | | <div class="organ-detail-header"> |
| | | <span class="organ-name">{{ getOrganName(organ.organType) }}评估详情</span> |
| | | <span class="attachment-count" v-if="organ.attachments && organ.attachments.length > 0"> |
| | | 附件数量: {{ organ.attachments.length }} |
| | | </span> |
| | | </div> |
| | | <organ-assessment-form |
| | | :organ-data="organ" |
| | | :readonly="!canAssessOrgan(organ)" |
| | |
| | | created() { |
| | | this.assessmentId = this.$route.query.id; |
| | | this.getAssessmentDetail(); |
| | | |
| | | }, |
| | | methods: { |
| | | // 获取评估详情 - 使用Mock数据 |
| | |
| | | if (response.code === 200) { |
| | | this.assessmentData = response.data.caseInfo; |
| | | this.organAssessmentList = response.data.organAssessments || []; |
| | | this.attachmentList = response.data.attachments || []; |
| | | } else { |
| | | this.$message.error("获取评估详情失败"); |
| | | |
| | | // 确保每个器官评估数据都有attachments数组 |
| | | this.organAssessmentList.forEach(organ => { |
| | | if (!organ.attachments) { |
| | | organ.attachments = []; |
| | | } |
| | | }); |
| | | } |
| | | this.assessmentLoading = false; |
| | | }) |
| | | .catch(error => { |
| | | console.error("获取评估详情失败:", error); |
| | | this.assessmentLoading = false; |
| | | this.$message.error("获取评估详情失败"); |
| | | }); |
| | | }, |
| | | |
| | | // 新增方法:获取器官名称 |
| | | getOrganName(organType) { |
| | | const organ = this.organTypeOptions.find(opt => opt.value === organType); |
| | | return organ ? organ.label : organType; |
| | | }, |
| | | // 状态过滤器 |
| | | statusFilter(status) { |
| | |
| | | getRowClassName({ row }) { |
| | | return this.canAssessOrgan(row) ? "assessable-row" : "non-assessable-row"; |
| | | }, |
| | | // 获取器官标题 |
| | | // 修改方法:更新器官标题显示 |
| | | getOrganTitle(organ) { |
| | | const organName = |
| | | this.organTypeOptions.find(opt => opt.value === organ.organType) |
| | | ?.label || organ.organType; |
| | | return `${organName}评估详情(${organ.department})`; |
| | | const organName = this.getOrganName(organ.organType); |
| | | const attachmentCount = organ.attachments ? organ.attachments.length : 0; |
| | | return `${organName}评估详情(${organ.department})${attachmentCount > 0 ? ` · ${attachmentCount}个附件` : ''}`; |
| | | }, |
| | | // 器官评估 |
| | | handleOrganAssess(organ) { |
| | |
| | | .organ-detail-collapse { |
| | | margin-top: 20px; |
| | | } |
| | | .organ-detail-header { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | margin-bottom: 15px; |
| | | padding-bottom: 10px; |
| | | border-bottom: 1px solid #ebeef5; |
| | | } |
| | | |
| | | .organ-name { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | color: #303133; |
| | | } |
| | | |
| | | .attachment-count { |
| | | font-size: 14px; |
| | | color: #409EFF; |
| | | background-color: #ecf5ff; |
| | | padding: 4px 8px; |
| | | border-radius: 4px; |
| | | } |
| | | ::v-deep .assessable-row { |
| | | background-color: #f0f9ff; |
| | | } |