Newer
Older
CallCenterFront / src / views / caseManage / caseCommon / caseFormProcess.vue
brujie@163.com on 16 Dec 2022 11 KB 事件图片,流程显示调整
<template>
  <div class="app-container">
    <el-form ref="form" :model="caseForm" label-width="auto">
      <el-row :gutter="20">
        <el-col :span="6">
          <el-form-item label="事件编号">
            <el-input :value="caseForm.caseId" size="small" />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="来电时间">
            <el-input :value="caseForm.callTime" size="small" />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="联系人">
            <el-input :value="caseForm.reporterName" size="small" />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="联系电话">
            <el-input :value="caseForm.reporterPhone" size="small" />
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :span="6">
          <el-form-item label="事件来源">
            <el-input :value="caseForm.sourceName" size="small" />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="事件类型">
            <el-input :value="caseForm.eorcName" size="small" />
            <!-- <el-input :value="caseForm.sourceType" size="small" /> -->
          </el-form-item>
        </el-col>
        <el-col :span="6" v-if="caseForm.eorcName == '精细化管理事件'">
          <el-form-item label="精细化平台事件编号">
            <!-- <el-input :value="caseForm.sourceNumber" size="small" /> -->
            <!-- <el-input :value="caseForm.createDept" size="small" /> -->
            <el-input :value="caseForm.caseNumber" size="small" />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="事件分类">
            <el-input :value="caseForm.caseDetailTypeName" size="small" />
            <!--<el-input :value="caseForm.eorcName + '/' + caseForm.caseTypeName" size="small"/>-->
            <!--<el-input :value="caseForm.eorcName + '/' + caseForm.caseTypeName + '/' + caseForm.caseDetailTypeName" size="small"/>-->
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="限办日期">
            <el-input :value="caseForm.limitedTime" size="small" />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="事件地址">
            <!--<el-input :value="caseForm.areaName + '-' + caseForm.streetName + '-' + caseForm.communityName + '-' + caseForm.fieldintro" size="small"/>-->
            <el-input :value="address" size="small" />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <!-- <el-form-item label="紧急程度"> -->
          <el-form-item label="事件状态">
            <el-input :value="caseForm.caseLevelName" size="small" />
          </el-form-item>
        </el-col>
      </el-row>
      <el-collapse v-model="activeName" accordion>
        <el-collapse-item name="1">
          <template slot="title">
            <span class="collapse-title">更多信息</span>
          </template>
          <el-row :gutter="20">
            <el-col :span="6">
              <el-form-item label="事件辖区">
                <el-input :value="caseForm.areaName" size="small" />
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="典型案例">
                <el-input
                  :value="caseForm.isTypical === '1' ? '是' : '否'"
                  size="small"
                />
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="要情">
                <el-input
                  :value="caseForm.isImportant === '1' ? '是' : '否'"
                  size="small"
                />
              </el-form-item>
            </el-col>
            <el-col
              :span="6"
              v-if="
                caseForm.eorcName == '精细化管理事件' &&
                 caseForm.caseStateName == '协同申请' || caseForm.caseStateName == '处理/回访完成' 
              "
            >
              <el-form-item label="统一编码">
                <el-input :value="caseForm.externalEventId" size="small" />
              </el-form-item>
            </el-col>
            <!-- 运维事件有流程的显示统一编码 -->
            <el-col :span="6" v-if="caseForm.eorcName == '运维事件' && process">
              <el-form-item label="统一编码">
                <el-input :value="caseForm.externalEventId" size="small" />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="6">
              <el-form-item label="当前事件状态">
                <el-input :value="caseForm.stateName" size="small" />
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="当前处理方式">
                <el-input :value="caseForm.caseStateName" size="small" />
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="需要回访">
                <el-input
                  :value="caseForm.isReturnVisit === '1' ? '是' : '否'"
                  size="small"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="受理录音">
                <el-input :value="caseForm.sound" size="small" />
              </el-form-item>
            </el-col>
            <el-button type="text" @click="playSound(caseForm.sound)"
              >播放录音</el-button
            >
          </el-row>
          <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="回访录音">
                <el-input :value="caseForm.satisfactionSound" size="small" />
              </el-form-item>
            </el-col>
            <el-button
              type="text"
              @click="playSound(caseForm.satisfactionSound)"
              >播放录音</el-button
            >
            <el-popover
              v-if="caseForm.caseState === 5"
              placement="top"
              width="180"
              v-model="popoverVisible"
            >
              <div style="text-align: center; margin: 0">
                <el-button size="mini" @click="revisit('')">本地号码</el-button>
                <el-button type="primary" size="mini" @click="revisit('0')"
                  >外地号码</el-button
                >
              </div>
              <el-button slot="reference" type="text">回访拨号</el-button>
            </el-popover>
          </el-row>
          <el-row>
            <el-col :span="24">
              <el-form-item label="事件标题">
                <el-input :value="caseForm.title" size="small" />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="24">
              <el-form-item label="事件内容">
                <el-input :value="caseForm.description" size="small" />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row v-show="this.caseImage.length > 0">
            <el-form-item label="事件图片">
              <!-- 图片展示 -->
              <div class="image-container">
                <el-image
                  v-for="img in caseImage"
                  :key="img"
                  :src="img"
                  fit="fill"
                  class="case-image"
                  :preview-src-list="caseImage"
                />
              </div>
            </el-form-item>
          </el-row>
        </el-collapse-item>
      </el-collapse>
      <!--<el-row>-->
      <!--<el-col :span="24">-->
      <!--<el-form-item label="备注信息">-->
      <!--<el-input :value="caseForm.remarks" size="small"/>-->
      <!--</el-form-item>-->
      <!--</el-col>-->
      <!--</el-row>-->
    </el-form>
    <!--播放音频弹窗-->
    <el-dialog
      :visible.sync="soundShow"
      title="播放录音"
      width="600px"
      append-to-body
      custom-class="sound-dialog"
      @close="closeSound"
    >
      <audio-player
        ref="adplayer"
        :the-url="sound.url"
        :the-control-ist="sound.controlList"
      />
    </el-dialog>
  </div>
</template>

<script>
// import { caseDetail } from '@/api/callCase'
import { getSoundName } from "@/api/sound";
import AudioPlayer from "@/components/AudioPlayer/AudioPlayer";

export default {
  name: "CaseFormProcess",
  components: { AudioPlayer },
  props: {
    id: {
      type: String,
      default: "",
    }, // 事件id(主键id)
    caseForm: {
      type: Object,
      default() {
        return {};
      },
    },
    process: {
      type: Boolean,
      default: false,
    },
  },
  data() {
    return {
      activeName: 1,
      sound: {
        url: "",
        controlList: "noDownload noSpeed onlyOnePlaying",
      },
      popoverVisible: false, // 选择本地外地呼叫的弹窗
      soundShow: false, // 显示音频弹窗
    };
  },
  computed: {
    address() {
      const address_ori = [
        this.caseForm.areaName,
        this.caseForm.streetName,
        this.caseForm.communityName,
        this.caseForm.fieldintro,
      ];
      const address = address_ori.filter((item) => item && item.length > 0);
      return address.join("-");
    },
    caseImage() {
      if (this.caseForm.caseImage) {
        const base_url = process.env.BASE_API + "/static/";
        const image_ori = this.caseForm.caseImage.split(";");
        const imageList = image_ori.map((item) => base_url + item);
        return imageList;
      } else {
        return [];
      }
    },
  },
  methods: {
    // 播放录音
    playSound(sound) {
      if (sound) {
        getSoundName(sound).then((res) => {
          const recordName = res.data;
          if (recordName) {
            this.sound.url = recordName;
            this.soundShow = true;
          } else {
            this.$message.warning("无录音");
          }
        });
      } else {
        this.$message.warning("无录音");
      }
    },
    // 关闭播放弹窗
    closeSound() {
      this.$refs.adplayer.pausePlay();
    },
    // 拨打回访电话
    revisit(middleString) {
      // middleString为空或0,分别表示本地或外地
      const tel = "9" + middleString + this.caseForm.reporterPhone;
      this.$store.dispatch("dial", tel);
      this.popoverVisible = false;
    },
  },
};
</script>
<style lang="scss" scoped>
.image-container {
  display: flex;
  justify-content: flex-start;
  .case-image {
    width: 100px;
    height: 100px;
    margin-right: 10px;
  }
}
.collapse-title {
  font-size: 14px;
  color: #606266;
  font-weight: 800;
  position: absolute;
  right: 80px;
  margin-top: -85px;
}
/deep/.el-collapse-item__arrow {
  margin-top: -85px;
}
/deep/.el-collapse {
  border: 0;
}
/deep/.el-collapse-item__header {
  justify-content: end;
  border: 0;
  height: 0;
}
</style>