liusheng
3 天以前 bbbc478129f72b26e2ec4a2e981ed8698a96880c
src/views/Satisfaction/configurationmyd/components/DetailsAnomaly.vue
@@ -82,7 +82,7 @@
        <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">
@@ -107,14 +107,19 @@
        <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">
@@ -301,7 +306,7 @@
                  </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>
@@ -529,6 +534,8 @@
      // 加载状态
      loading: false,
      // 问卷/语音详情加载状态
      contentLoading: false,
      // 权限控制
      hasQualityPermission: false
@@ -654,10 +661,31 @@
      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;
    },
    // 播放音频
@@ -737,6 +765,7 @@
    // 加载问卷数据
    async loadQuestionnaireData() {
      this.contentLoading = true;
      try {
        // 这里需要根据实际情况调用接口获取问卷数据
        // 如果recordData中已经包含了问卷数据,可以直接使用
@@ -770,6 +799,8 @@
        }
      } catch (error) {
        console.error('加载问卷数据失败:', error);
      } finally {
        this.contentLoading = false;
      }
    },
@@ -788,6 +819,7 @@
    // 加载语音数据
    async loadVoiceData() {
      this.contentLoading = true;
      try {
        if (this.currentRecord.taskid && this.currentRecord.patid) {
          const params = {
@@ -814,6 +846,8 @@
        }
      } catch (error) {
        console.error('加载语音数据失败:', error);
      } finally {
        this.contentLoading = false;
      }
    },