| | |
| | | <el-col :span="16" v-if="currentRecord.handledesc"> |
| | | <div class="info-item"> |
| | | <span class="label">处理说明:</span> |
| | | <span class="value">{{ currentRecord.handledesc }}</span> |
| | | <span class="value">{{ formatHandledesc(currentRecord.handledesc) }}</span> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="24" v-if="currentRecord.finaloption"> |
| | |
| | | <el-col :span="8" v-if="currentRecord.ccdepts"> |
| | | <div class="info-item"> |
| | | <span class="label">抄送科室:</span> |
| | | <span class="value">{{ currentRecord.ccdepts }}</span> |
| | | <span class="value">{{ getDeptArray(currentRecord.ccdepts).join('、') }}</span> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | |
| | | <!-- 问卷/语音详情 --> |
| | | <div class="content-container" v-if="templateData.length > 0"> |
| | | <div |
| | | class="content-container" |
| | | v-if="currentRecord.templateType" |
| | | v-loading="contentLoading" |
| | | element-loading-text="详情加载中..." |
| | | > |
| | | <el-tabs v-model="activeName" type="border-card"> |
| | | <!-- 问卷随访详情 --> |
| | | <el-tab-pane name="wj" v-if="currentRecord.templateType === 2"> |
| | |
| | | </div> |
| | | <div v-if="record.handledesc" class="process-remark"> |
| | | <span class="label">处理说明:</span> |
| | | <span class="content">{{ record.handledesc }}</span> |
| | | <span class="content">{{ formatHandledesc(record.handledesc) }}</span> |
| | | </div> |
| | | <div v-if="record.finaloption" class="process-remark"> |
| | | <span class="label">最终意见:</span> |
| | |
| | | |
| | | // 加载状态 |
| | | loading: false, |
| | | // 问卷/语音详情加载状态 |
| | | contentLoading: false, |
| | | |
| | | // 权限控制 |
| | | hasQualityPermission: false |
| | |
| | | return map[handleresult] || handleresult; |
| | | }, |
| | | |
| | | // 获取科室数组 |
| | | // 获取科室数组:将逗号分隔的科室 code 映射为「科室名(code)」 |
| | | getDeptArray(ccdepts) { |
| | | if (!ccdepts) return []; |
| | | return ccdepts.split(','); |
| | | return String(ccdepts) |
| | | .split(',') |
| | | .map((code) => { |
| | | const dept = this.deptList.find((item) => item.deptCode === code); |
| | | return dept ? `${dept.label}(${code})` : code; |
| | | }); |
| | | }, |
| | | |
| | | // 解析 handledesc:流转时存的是 JSON,取其中 desc 原文;否则原样返回 |
| | | formatHandledesc(val) { |
| | | if (!val) return ''; |
| | | if (typeof val !== 'string') return val; |
| | | const trimmed = val.trim(); |
| | | if (trimmed.startsWith('{')) { |
| | | try { |
| | | const obj = JSON.parse(trimmed); |
| | | if (obj && obj.desc != null) return obj.desc; |
| | | } catch (e) { |
| | | // 非合法 JSON,按原文本返回 |
| | | } |
| | | } |
| | | return val; |
| | | }, |
| | | |
| | | // 播放音频 |
| | |
| | | |
| | | // 加载问卷数据 |
| | | async loadQuestionnaireData() { |
| | | this.contentLoading = true; |
| | | try { |
| | | // 这里需要根据实际情况调用接口获取问卷数据 |
| | | // 如果recordData中已经包含了问卷数据,可以直接使用 |
| | |
| | | } |
| | | } catch (error) { |
| | | console.error('加载问卷数据失败:', error); |
| | | } finally { |
| | | this.contentLoading = false; |
| | | } |
| | | }, |
| | | |
| | |
| | | |
| | | // 加载语音数据 |
| | | async loadVoiceData() { |
| | | this.contentLoading = true; |
| | | try { |
| | | if (this.currentRecord.taskid && this.currentRecord.patid) { |
| | | const params = { |
| | |
| | | } |
| | | } catch (error) { |
| | | console.error('加载语音数据失败:', error); |
| | | } finally { |
| | | this.contentLoading = false; |
| | | } |
| | | }, |
| | | |