WXL (wul)
5 天以前 c70f5e1d471ddf002ef0ebd5f4c6a5ed1c865d0d
src/views/Satisfaction/configurationmyd/components/DetailsAnomaly.vue
@@ -73,12 +73,6 @@
            <span class="value">{{ currentRecord.handleBy || '未处理' }}</span>
          </div>
        </el-col>
        <el-col :span="24" v-if="currentRecord.patdesc">
          <div class="info-item">
            <span class="label">患者信息:</span>
            <span class="value">{{ currentRecord.patdesc }}</span>
          </div>
        </el-col>
        <el-col :span="8" v-if="currentRecord.handleresult">
          <div class="info-item">
            <span class="label">处理结果:</span>
@@ -88,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">
@@ -113,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">
@@ -140,7 +139,7 @@
                  v-if="item.scriptType == 1 && !item.astrict"
                >
                  <div class="dev-text">
                    {{ index + 1 }}、[单选]<span>{{ item.scriptContent }}</span>
                    {{ index + 1 }}. [单选]<span>{{ item.scriptContent }}</span>
                  </div>
                  <div class="dev-xx">
                    <el-radio-group v-model="item.scriptResult" disabled>
@@ -175,7 +174,7 @@
                  v-if="item.scriptType == 2 && !item.astrict"
                >
                  <div class="dev-text">
                    {{ index + 1 }}、[多选]<span>{{ item.scriptContent }}</span>
                    {{ index + 1 }}. [多选]<span>{{ item.scriptContent }}</span>
                  </div>
                  <div class="dev-xx">
                    <el-checkbox-group v-model="item.scriptResult" disabled>
@@ -200,7 +199,7 @@
                  v-if="item.scriptType == 4 && !item.astrict"
                >
                  <div class="dev-text">
                    {{ index + 1 }}、[问答]<span>{{ item.scriptContent }}</span>
                    {{ index + 1 }}. [问答]<span>{{ item.scriptContent }}</span>
                    <span v-if="item.valueType == 3">(只能输入数字)</span>
                  </div>
                  <div class="dev-xx" v-if="item.valueType == 3">
@@ -307,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>
@@ -535,6 +534,8 @@
      // 加载状态
      loading: false,
      // 问卷/语音详情加载状态
      contentLoading: false,
      // 权限控制
      hasQualityPermission: false
@@ -660,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;
    },
    // 播放音频
@@ -743,6 +765,7 @@
    // 加载问卷数据
    async loadQuestionnaireData() {
      this.contentLoading = true;
      try {
        // 这里需要根据实际情况调用接口获取问卷数据
        // 如果recordData中已经包含了问卷数据,可以直接使用
@@ -776,6 +799,8 @@
        }
      } catch (error) {
        console.error('加载问卷数据失败:', error);
      } finally {
        this.contentLoading = false;
      }
    },
@@ -794,6 +819,7 @@
    // 加载语音数据
    async loadVoiceData() {
      this.contentLoading = true;
      try {
        if (this.currentRecord.taskid && this.currentRecord.patid) {
          const params = {
@@ -820,6 +846,8 @@
        }
      } catch (error) {
        console.error('加载语音数据失败:', error);
      } finally {
        this.contentLoading = false;
      }
    },