6 changed files with 522 additions and 109 deletions
			
			
		@ -0,0 +1,388 @@ | 
				
			|||
<template> | 
				
			|||
  <div class="m-pop"> | 
				
			|||
    <div class="wrap"> | 
				
			|||
      <cpt-card> | 
				
			|||
        <div class="title"> | 
				
			|||
          <img src="@/assets/img/shuju/title-tip.png" /> | 
				
			|||
          <span>详情</span> | 
				
			|||
        </div> | 
				
			|||
 | 
				
			|||
        <div class="btn-close" | 
				
			|||
             @click="handleClose"> | 
				
			|||
          <img src="@/assets/img/shuju/people/close.png" /> | 
				
			|||
        </div> | 
				
			|||
        <div class="m-top"> | 
				
			|||
          <div class="m-info"> | 
				
			|||
            <div class="info-prop"> | 
				
			|||
              <span>所属网格:</span> | 
				
			|||
              <span>{{ eventInfo.gridName }}</span> | 
				
			|||
            </div> | 
				
			|||
            <div class="info-prop"> | 
				
			|||
              <span>上报时间:</span> | 
				
			|||
              <span>{{ eventInfo.reportTime }}</span> | 
				
			|||
            </div> | 
				
			|||
 | 
				
			|||
            <div class="info-prop"> | 
				
			|||
              <span>事件内容:</span> | 
				
			|||
              <span>{{ eventInfo.eventContent || "--" }}</span> | 
				
			|||
            </div> | 
				
			|||
            <div class="info-prop"> | 
				
			|||
              <span>音频:</span> | 
				
			|||
              <!-- <span>{{ eventInfo.departmentNameList.join("、") }}</span> --> | 
				
			|||
            </div> | 
				
			|||
            <div class="info-prop"> | 
				
			|||
              <span>反映渠道:</span> | 
				
			|||
              <span>{{ eventInfo.sourceTypeName || "--" }}</span> | 
				
			|||
            </div> | 
				
			|||
            <div class="info-prop"> | 
				
			|||
              <span>地址:</span> | 
				
			|||
              <span>{{ eventInfo.address || "--" }}</span> | 
				
			|||
            </div> | 
				
			|||
            <div class="info-prop"> | 
				
			|||
              <span>报事人:</span> | 
				
			|||
              <span>{{ eventInfo.reporterName || "--" }}</span> | 
				
			|||
            </div> | 
				
			|||
            <div class="info-prop"> | 
				
			|||
              <span>手机号:</span> | 
				
			|||
              <span>{{ eventInfo.reporterMobile || "--" }}</span> | 
				
			|||
            </div> | 
				
			|||
            <div class="info-prop"> | 
				
			|||
              <span>身份证号:</span> | 
				
			|||
              <span>{{ eventInfo.reporterIdCard || "--" }}</span> | 
				
			|||
            </div> | 
				
			|||
 | 
				
			|||
          </div> | 
				
			|||
 | 
				
			|||
          <div class="m-process" | 
				
			|||
               v-if="eventProcess.length > 0"> | 
				
			|||
            <div class="process-title">处理进展</div> | 
				
			|||
            <div class="list"> | 
				
			|||
              <div class="item" | 
				
			|||
                   :class="index === 0 ? 'z-on' : ''" | 
				
			|||
                   :key="item.processId" | 
				
			|||
                   v-for="(item, index) in eventProcess"> | 
				
			|||
                <div class="item-row"> | 
				
			|||
                  <div class="name">{{ item.serviceShowName }}</div> | 
				
			|||
                  <div class="date"> | 
				
			|||
                    {{ item.processTime }} | 
				
			|||
                  </div> | 
				
			|||
                </div> | 
				
			|||
 | 
				
			|||
                <div class="detail"> | 
				
			|||
                  <div class="detail-field">处理部门:</div> | 
				
			|||
                  <div class="detail-value">{{ item.wantServiceTime }}</div> | 
				
			|||
                </div> | 
				
			|||
 | 
				
			|||
                <!-- <div class="detail" | 
				
			|||
                     v-if="item.processName != '转项目' && item.wantServiceTime"> | 
				
			|||
                  <div class="detail-field">说 明:</div> | 
				
			|||
                  <div class="detail-value"> | 
				
			|||
                    <fold-text :row="3">{{ item.wantServiceTime }}</fold-text> | 
				
			|||
                  </div> | 
				
			|||
                </div> --> | 
				
			|||
 | 
				
			|||
                <div class="detail" | 
				
			|||
                     v-if="item.processName != '转项目' && item.internalRemark"> | 
				
			|||
                  <div class="detail-field">内部备注:</div> | 
				
			|||
                  <div class="detail-value"> | 
				
			|||
                    <fold-text :row="3">{{ item.internalRemark }}</fold-text> | 
				
			|||
                  </div> | 
				
			|||
                </div> | 
				
			|||
                <div class="detail"> | 
				
			|||
                  <div class="attachement-list"> | 
				
			|||
                    <a :href="att.url" | 
				
			|||
                       target="_blank" | 
				
			|||
                       :key="att.url" | 
				
			|||
                       v-for="att in item.internalFile"> | 
				
			|||
                      <i class="el-icon-folder-opened"></i> | 
				
			|||
                      {{ att.name }} | 
				
			|||
                    </a> | 
				
			|||
                  </div> | 
				
			|||
                </div> | 
				
			|||
              </div> | 
				
			|||
            </div> | 
				
			|||
          </div> | 
				
			|||
        </div> | 
				
			|||
        <div class="tabs"> | 
				
			|||
 | 
				
			|||
          <div class="tab" | 
				
			|||
               :class="groupIndex % groupList.length == index ? 'z-on' : ''" | 
				
			|||
               :key="'tab' + index" | 
				
			|||
               @click="groupIndex = index" | 
				
			|||
               v-for="(item, index) in groupList"> | 
				
			|||
            {{ item.label }} | 
				
			|||
          </div> | 
				
			|||
 | 
				
			|||
        </div> | 
				
			|||
 | 
				
			|||
        <div class="m-case"> | 
				
			|||
          <div class="m-yanpan"> | 
				
			|||
            <div v-if="eventId || true"> | 
				
			|||
              <screen-loading v-if="!yanPan.loading">加载中</screen-loading> | 
				
			|||
              <analyse v-else-if="yanPan.singleTitle" | 
				
			|||
                       :singleTitle="yanPan.singleTitle" | 
				
			|||
                       :userList="yanPan.dependents" | 
				
			|||
                       :userName="yanPan.reportorName" | 
				
			|||
                       :userTag="'(报事人)'" | 
				
			|||
                       :singleList="yanPan.singleList" | 
				
			|||
                       :hasEvent="yanPan.hasEvent" | 
				
			|||
                       @user="toUserInfo" /> | 
				
			|||
              <div v-else | 
				
			|||
                   class="m-hint"> | 
				
			|||
                <img src="@/assets/img/modules/visual/noData.png" | 
				
			|||
                     class="no-data-img" /> | 
				
			|||
              </div> | 
				
			|||
            </div> | 
				
			|||
          </div> | 
				
			|||
 | 
				
			|||
        </div> | 
				
			|||
      </cpt-card> | 
				
			|||
    </div> | 
				
			|||
  </div> | 
				
			|||
</template> | 
				
			|||
 | 
				
			|||
<script> | 
				
			|||
import cptCard from "@/views/modules/visual/cpts/card"; | 
				
			|||
import screenLoading from "@/views/modules/visual/cpts/loading"; | 
				
			|||
import { requestPost } from "@/js/dai/request"; | 
				
			|||
import cptTb from "@/views/modules/visual/cpts/tb"; | 
				
			|||
import lineChart from "@/views/modules/visual/cpts/line-chart"; | 
				
			|||
import analyse from "@/views/modules/visual/cpts/analyse"; | 
				
			|||
import foldText from "@/views/components/foldText"; | 
				
			|||
import dateFormat from "dai-js/tools/dateFormat"; | 
				
			|||
 | 
				
			|||
function iniData () { | 
				
			|||
  return { | 
				
			|||
 | 
				
			|||
    groupList: [{ label: "研判分析" }], | 
				
			|||
    groupIndex: 0, | 
				
			|||
    startGroupIndex: 0, | 
				
			|||
 | 
				
			|||
    eventProcess: [], | 
				
			|||
 | 
				
			|||
    eventInfo: { | 
				
			|||
      gridId: "", | 
				
			|||
      gridName: '', | 
				
			|||
      reportTime: [], | 
				
			|||
      eventContent: "", | 
				
			|||
      imageUrls: [], | 
				
			|||
      voiceUrls: [], | 
				
			|||
      sourceType: '', | 
				
			|||
      address: '', | 
				
			|||
      reportUserId: "", | 
				
			|||
      reporterName: "", | 
				
			|||
      reporterMobile: "", | 
				
			|||
      reporterIdCard: "", | 
				
			|||
 | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    yanPan: { | 
				
			|||
      loading: false, | 
				
			|||
      reportorName: "", | 
				
			|||
 | 
				
			|||
      dependents: [], | 
				
			|||
      categoryId: '', | 
				
			|||
      projectData: [ | 
				
			|||
        // { | 
				
			|||
        //   firstCategoryCode: '', | 
				
			|||
        //   firstCategoryName: '', | 
				
			|||
        //   projectList: [], | 
				
			|||
        // } | 
				
			|||
      ], | 
				
			|||
      hasEvent: false, | 
				
			|||
      singleTitle: "", | 
				
			|||
 | 
				
			|||
      singleList: [], //楼院小组 | 
				
			|||
 | 
				
			|||
    }, | 
				
			|||
  }; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
export default { | 
				
			|||
  name: "demandInfo", | 
				
			|||
  props: { | 
				
			|||
    eventId: { | 
				
			|||
      type: String, | 
				
			|||
      default: "", | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
 | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  components: { | 
				
			|||
    cptCard, | 
				
			|||
    cptTb, | 
				
			|||
    analyse, | 
				
			|||
    screenLoading, | 
				
			|||
    lineChart, | 
				
			|||
    foldText, | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  data: iniData, | 
				
			|||
 | 
				
			|||
  computed: {}, | 
				
			|||
 | 
				
			|||
  watch: { | 
				
			|||
    eventId () { | 
				
			|||
      let data = iniData(); | 
				
			|||
      Object.keys(data).forEach((k) => { | 
				
			|||
        this[k] = data[k]; | 
				
			|||
      }); | 
				
			|||
      this.getApiData(); | 
				
			|||
    }, | 
				
			|||
    // eventId () { | 
				
			|||
 | 
				
			|||
    // }, | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  mounted () { | 
				
			|||
    console.log(this.eventId); | 
				
			|||
    this.getApiData(); | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  methods: { | 
				
			|||
    watchImg (src) { | 
				
			|||
      window.open(src); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
 | 
				
			|||
    handleClose () { | 
				
			|||
      this.$emit("close"); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    async getApiData () { | 
				
			|||
      await this.getEventInfo(); | 
				
			|||
 | 
				
			|||
      this.getEventProcess(); | 
				
			|||
      await this.getYanPan(); | 
				
			|||
      await this.getYanPanList(); | 
				
			|||
      this.yanPan.loading = true; | 
				
			|||
 | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    //加载组织数据 | 
				
			|||
    async getEventInfo () { | 
				
			|||
      // const url = "/gov/project/icEvent/processAnalysis/eventDetail/"+ this.eventId; | 
				
			|||
      const url = "http://yapi.elinkservice.cn/mock/245/api/gov/project/icEvent/processAnalysis/eventDetail/" + this.eventId; | 
				
			|||
 | 
				
			|||
      const { data, code, msg } = await requestPost(url, { | 
				
			|||
        eventId: this.eventId, | 
				
			|||
      }); | 
				
			|||
 | 
				
			|||
      if (code === 0) { | 
				
			|||
        this.eventInfo = data; | 
				
			|||
      } else { | 
				
			|||
        this.$message.error(msg); | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    //加载组织数据 | 
				
			|||
    async getEventProcess () { | 
				
			|||
      // const url = "/gov/project/icEvent/processAnalysis/processes/" + this.eventId; | 
				
			|||
      const url = "http://yapi.elinkservice.cn/mock/245/api/gov/project/icEvent/processAnalysis/processes/" + this.eventId; | 
				
			|||
 | 
				
			|||
      const { data, code, msg } = await requestPost(url, { | 
				
			|||
        eventId: this.eventId, | 
				
			|||
      }); | 
				
			|||
 | 
				
			|||
      if (code === 0) { | 
				
			|||
        this.eventProcess = data.map((item) => { | 
				
			|||
          item.operateTime = dateFormat( | 
				
			|||
            new Date(item.operateTime * 1000), | 
				
			|||
            "yyyy-MM-dd hh:mm" | 
				
			|||
          ); | 
				
			|||
          return item; | 
				
			|||
        }); | 
				
			|||
      } else { | 
				
			|||
        this.$message.error(msg); | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    //加载组织数据 | 
				
			|||
    async getYanPan () { | 
				
			|||
      // const url = "/gov/project/icEvent/processAnalysis/analysis/" + this.eventId; | 
				
			|||
      const url = "http://yapi.elinkservice.cn/mock/245/api/gov/project/icEvent/processAnalysis/analysis/" + this.eventId; | 
				
			|||
 | 
				
			|||
      let param = {} | 
				
			|||
      const { data, code, msg } = await requestPost(url, param); | 
				
			|||
 | 
				
			|||
      if (code === 0) { | 
				
			|||
 | 
				
			|||
        data.dependents.forEach((item) => { | 
				
			|||
          item.icResiUserId = item.id; | 
				
			|||
          item.icUserName = item.name; | 
				
			|||
        }); | 
				
			|||
 | 
				
			|||
 | 
				
			|||
        //楼院小组、居民上报都存在是,研判分析显示两个分支 | 
				
			|||
        this.yanPan.singleTitle = "楼院小组"; | 
				
			|||
        this.yanPan.hasEvent = false; | 
				
			|||
 | 
				
			|||
 | 
				
			|||
        this.yanPan = { ...this.yanPan, ...data }; | 
				
			|||
        console.log(this.yanPan); | 
				
			|||
 | 
				
			|||
      } else { | 
				
			|||
        this.$message.error(msg); | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
    //加载组织数据 | 
				
			|||
    async getYanPanList () { | 
				
			|||
      // const url = "/gov/project/icEvent/processAnalysis/categoryEventList" ; | 
				
			|||
      const url = "http://yapi.elinkservice.cn/mock/245/api/gov/project/icEvent/processAnalysis/categoryEventList"; | 
				
			|||
 | 
				
			|||
      let param = { | 
				
			|||
 | 
				
			|||
        categoryId: this.yanPan.categoryId, | 
				
			|||
        pageNo: 0, | 
				
			|||
        pageSize: 50 | 
				
			|||
      } | 
				
			|||
      const { data, code, msg } = await requestPost(url, param); | 
				
			|||
 | 
				
			|||
      this.yanPan.loading = true; | 
				
			|||
      if (code === 0) { | 
				
			|||
        let oneData = { | 
				
			|||
          categoryCode: 111, | 
				
			|||
          categoryName: 111, | 
				
			|||
          showItem: true, | 
				
			|||
          addressList: data.list.map((subItem) => { | 
				
			|||
            return { | 
				
			|||
 | 
				
			|||
              address: subItem.address, | 
				
			|||
 | 
				
			|||
            }; | 
				
			|||
          }), | 
				
			|||
          projectList: [] | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        let aaa = { | 
				
			|||
          singleList: [oneData] | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
 | 
				
			|||
 | 
				
			|||
        this.yanPan = { ...this.yanPan, ...aaa }; | 
				
			|||
        console.log(this.yanPan); | 
				
			|||
 | 
				
			|||
      } else { | 
				
			|||
        this.$message.error(msg); | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    toUserInfo (item) { | 
				
			|||
      console.log(item) | 
				
			|||
      this.$router.push({ | 
				
			|||
        path: `/main-shuju/visual-basicinfo-people/${item.icResiUserId}`, | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
 | 
				
			|||
  }, | 
				
			|||
}; | 
				
			|||
</script> | 
				
			|||
 | 
				
			|||
<style | 
				
			|||
  lang="scss" | 
				
			|||
  src="@/assets/scss/modules/visual/incident-info.scss" | 
				
			|||
  scoped | 
				
			|||
></style> | 
				
			|||
					Loading…
					
					
				
		Reference in new issue