浏览代码

事件流程

彭宇 2 年之前
父节点
当前提交
6e86251fd8
共有 3 个文件被更改,包括 310 次插入10 次删除
  1. 30 0
      src/api/forest.js
  2. 279 9
      src/views/eventdetailsdialog.vue
  3. 1 1
      src/views/forest.vue

+ 30 - 0
src/api/forest.js

@@ -88,3 +88,33 @@ export function sendEventLog(param) {
     data: param
   })
 }
+// 事件处理流程
+export function updateCentereventTEventcatalogueStatus(param) {
+  return request({
+    url: '/center-event/eventcatalogue/updateCentereventTEventcatalogueStatus',
+    method: 'post',
+    data: param
+  })
+}
+// 事件处理流程-事件类型
+export function listSJfl(param) {
+  return request({
+    url: '/center-event/eventtype/listSJfl',
+    method: 'get',
+    data: param
+  })
+}
+// 事件处理流程-关联预案
+export function listYuAn() {
+  return request({
+    url: 'sooka-sponest-center-data/reserve/listYuAn',
+    method: 'get'
+  })
+}
+// 事件处理流程-签收部门
+export function selectByeventCode(eventCode) {
+  return request({
+    url: '/center-event/eventcatalogue/selectByeventCode/'+eventCode,
+    method: 'get'
+  })
+}

+ 279 - 9
src/views/eventdetailsdialog.vue

@@ -74,7 +74,7 @@
                           <el-timeline>
                             <el-timeline-item color="#2bacf7" :timestamp="item.createTime"
                                               placement="top" v-for="(item,index) in eventLogList">
-                              <el-card>
+                              <el-card style="width: 40vh">
                                 <div class="z-info-list-con">
                                   <div class="user-and-time flex-d">
                                     <span>{{ item.createName }}</span><span><i
@@ -130,7 +130,57 @@
                               <el-input type="textarea" v-model="eventLog"
                                         :autosize="{ minRows: 7, maxRows: 7}" placeholder="请输入反馈信息">
                               </el-input>
-                              <div class="z-info-btm-input-btn">
+                              <div class="z-info-btm-input-btn" v-if="eventStatusValue=='forest_event_status_1'">
+                                <div style="text-align:left">
+                                  <el-button size="small"
+                                             icon="el-icon-s-flag"
+                                             @click="updateCentereventTEventcatalogueStatus('qs',false)">
+                                    签收
+                                  </el-button>
+                                  <el-button size="small"
+                                             icon="el-icon-question"
+                                             @click="updateCentereventTEventcatalogueStatus('wb',false)">
+                                    误报
+                                  </el-button>
+                                  <el-button size="small"
+                                             icon="el-icon-warning"
+                                             @click="updateCentereventTEventcatalogueStatus('cf',false)">
+                                    重复
+                                  </el-button>
+                                </div>
+                                <el-button size="small" icon="el-icon-chat-dot-square" @click="sendEventLog()">发送
+                                </el-button>
+                              </div>
+                              <div class="z-info-btm-input-btn" v-if="eventStatusValue=='forest_event_status_2'">
+                                <el-button size="small"
+                                           icon="el-icon-question"
+                                           @click="updateCentereventTEventcatalogueStatus('wb',false)">
+                                  误报
+                                </el-button>
+                                <el-button size="small"
+                                           icon="el-icon-warning"
+                                           @click="updateCentereventTEventcatalogueStatus('cf',false)">
+                                  重复
+                                </el-button>
+                                <el-button size="small"
+                                           icon="el-icon-phone" style="text-align:left"
+                                           @click="updateCentereventTEventcatalogueStatus('ld',false)">
+                                  联动
+                                </el-button>
+                                <el-button size="small"
+                                           icon="el-icon-success" style="text-align:left"
+                                           @click="updateCentereventTEventcatalogueStatus('bj',false)">
+                                  办结
+                                </el-button>
+                                <el-button size="small" icon="el-icon-chat-dot-square" @click="sendEventLog()">发送
+                                </el-button>
+                              </div>
+                              <div class="z-info-btm-input-btn" v-if="eventStatusValue=='forest_event_status_5'">
+                                <el-button size="small"
+                                           icon="el-icon-success" style="text-align:left"
+                                           @click="updateCentereventTEventcatalogueStatus('gd',false)">
+                                  归档
+                                </el-button>
                                 <el-button size="small" icon="el-icon-chat-dot-square" @click="sendEventLog()">发送
                                 </el-button>
                               </div>
@@ -151,6 +201,55 @@
     </div>
     <vBottomMenu ref="bottomMenu"></vBottomMenu>
     <eventLogUpload ref="eventLogUpload"></eventLogUpload>
+    <el-dialog :title="eventConfirmTitle" :visible.sync="showEventConfirm" v-if="showEventConfirm" width="770px"
+               style="height: 700px;" @close="cancelEventConfirm()">
+      <el-form label-width="80px">
+        <el-form-item label="火灾半径"  v-if="eventStatusButton=='qs'">
+          <el-input type="number" v-model="sendHuoZaiBanJing" placeholder="请输入火灾半径"/>
+        </el-form-item>
+        <el-form-item label="签收部门" v-if="eventStatusButton=='qs'||eventStatusButton=='wb'||eventStatusButton=='cf'">
+          <!--          <treeselect v-model="deptId" :options="deptOptions" multiple :show-count="true"-->
+          <!--                      placeholder="请选择签收部门"/>-->
+          <el-select v-model="sendDeptName" clearable placeholder="请选择部门" class="m-r-1rem" @change="setValue">
+            <el-option
+              v-for="item in deptOptions"
+              :key="item.deptId"
+              :label="item.deptName"
+              :value="{value:item.deptId,label:item.deptName}"><!--:disabled="item.eventStatus=='未处理' ? false:true"-->
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="事件类型" v-if="eventStatusButton=='qs'">
+          <el-select v-model="sendEventType" placeholder="请选择事件类型!" clearable>
+            <el-option
+              v-for="item in eventTypeList"
+              :key="item.id"
+              :label="item.eventTypeName"
+              :value="item.id"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="关联预案" v-if="eventStatusButton=='qs'">
+          <el-select v-model="sendGuanLianYuAn" placeholder="请选择关联预案!" clearable>
+            <el-option
+              v-for="item in guanLianYuAnList"
+              :key="item.id"
+              :label="item.resTitle"
+              :value="item.id"
+            />
+          </el-select>
+        </el-form-item>
+        <el-button size="mini" type="primary" v-if="eventStatusButton=='qs'"
+                   @click="updateCentereventTEventcatalogueStatus('qs',true)">签收
+        </el-button>
+        <el-button size="mini" type="primary" v-if="eventStatusButton=='wb'"
+                   @click="updateCentereventTEventcatalogueStatus('wb',true)">误报
+        </el-button>
+        <el-button size="mini" type="primary" v-if="eventStatusButton=='cf'"
+                   @click="updateCentereventTEventcatalogueStatus('cf',true)">重复
+        </el-button>
+      </el-form>
+    </el-dialog>
   </div>
 </template>
 
@@ -162,7 +261,11 @@ import vBottomMenu from '@/components/vBottomMenu.vue' //一体化公共底部
 import eventLogUpload from '@/views/eventLogUpload.vue' //日志上传文件
 import {
   getEventDetail,
-  sendEventLog
+  sendEventLog,
+  listSJfl,
+  listYuAn,
+  selectByeventCode,
+  updateCentereventTEventcatalogueStatus
 } from '@/api/forest'
 
 export default {
@@ -174,15 +277,32 @@ export default {
   },
   data() {
     return {
+      /** *****************事件流程***************************/
+      sendDeptId: null,
+      sendDeptName: null,
+      sendEventType: null,
+      sendHuoZaiBanJing: null,
+      sendGuanLianYuAn: null,
+      eventTypeList: [],//事件类型列表
+      guanLianYuAnList: [],//关联预案列表
+      deptOptions: [],//签收部门
+      eventStatusButton:null,//流程按钮标识
+      eventConfirmTitle:null,//弹窗标题  ---签收 误报  重复
+      /** *****************事件流程***************************/
+      showEventConfirm: false,//事件签收弹窗
+      eventStatusValue: null,//事件状态
+      eventId: null,//事件ID
+      eventType: null,//事件类型-大类
       eventCode: null,
       eventLog: null,
       eventLogList: [],
       eventDialog: false,
-      resourcesList: [{
-        resourceName: '取水口',
-        count: '1',
-        icon: 'sj-icon-waterintake'
-      },
+      resourcesList: [
+        {
+          resourceName: '取水口',
+          count: '1',
+          icon: 'sj-icon-waterintake'
+        },
         {
           resourceName: '水鹤',
           count: '1',
@@ -225,6 +345,102 @@ export default {
     }
   },
   methods: {
+    setValue(event) {
+      //签收选择部门
+      this.sendDeptName = event.label
+      this.sendDeptId = event.value
+    },
+    cancelEventConfirm() {
+      //关闭事件签收弹窗
+      this.sendDeptId = null
+      this.sendDeptName = null
+      this.sendEventType = null
+      this.sendHuoZaiBanJing = null
+      this.sendGuanLianYuAn = null
+      this.eventTypeList = []//事件类型列表
+      this.guanLianYuAnList = []//关联预案列表
+      this.deptOptions = []//签收部门
+      this.eventStatusButton = null//流程按钮标识
+      this.eventConfirmTitle = null//流程按钮标识
+    },
+    /**
+     * eventStatusValue 事件状态
+     * isSend 是否办理
+     * */
+    async updateCentereventTEventcatalogueStatus(eventStatus, isSend) {
+      this.eventStatusButton=eventStatus
+      if (!isSend) {
+        if (eventStatus == 'qs') {//签收
+          this.eventConfirmTitle='事件签收'
+          let param = { parentId: this.eventType }
+          await listSJfl(param).then(res => {
+            //事件类型
+            if (res.code == 200) {
+              this.eventTypeList = res.data
+            }
+          })
+          await listYuAn().then(res => {
+            //关联预案
+            if (res.code == 200) {
+              this.guanLianYuAnList = res.data
+            }
+          })
+          await selectByeventCode(this.eventCode).then(res => {
+            //签收部门
+            if (res.code == 200) {
+              this.deptOptions = res.data
+            }
+          })
+          this.showEventConfirm = true
+        }else if (eventStatus == 'wb') {//误报
+          this.eventConfirmTitle='事件误报'
+          await selectByeventCode(this.eventCode).then(res => {
+            //签收部门
+            if (res.code == 200) {
+              this.deptOptions = res.data
+            }
+          })
+          this.showEventConfirm = true
+        }else if (eventStatus == 'cf') {//重复
+          this.eventConfirmTitle='事件重复'
+          await selectByeventCode(this.eventCode).then(res => {
+            //签收部门
+            if (res.code == 200) {
+              this.deptOptions = res.data
+            }
+          })
+          this.showEventConfirm = true
+        }else if (eventStatus == 'ld') {//联动
+          this.eventConfirmTitle='事件联动'
+          await selectByeventCode(this.eventCode).then(res => {
+            //签收部门
+            if (res.code == 200) {
+              this.deptOptions = res.data
+            }
+          })
+          this.showEventConfirm = true
+        }
+      } else {
+        //事件处理流程
+        let param = {
+          eventCode: this.eventCode,
+          deptId: this.sendDeptId,
+          deptName: this.sendDeptName,
+          eventStatus: eventStatus,
+          eventType: this.sendEventType,
+          id: this.eventId,
+          czlx: '',
+          fireRadius: this.sendHuoZaiBanJing,
+          reserve: this.sendGuanLianYuAn,
+        }
+        updateCentereventTEventcatalogueStatus(param).then(res => {
+          if (res.code == 200) {
+            this.refreshEvent(this.eventCode)
+            this.showEventConfirm = false
+          }
+        })
+      }
+    },
     sendEventLog() {
       //日志发送
       let param = { eventCode: this.eventCode, conext: this.eventLog }
@@ -251,6 +467,9 @@ export default {
         this.eventDialog = true
         this.eventLogList = res.data.eventlog
         if (res.data.catalogue != null && res.data.catalogue.length > 0) {
+          this.eventStatusValue = res.data.catalogue[0].eventStatusValue
+          this.eventType = res.data.catalogue[0].eventType
+          this.eventId = res.data.catalogue[0].id
           let markersMap = {
             lng: 124.59,
             lat: 43.02,
@@ -288,8 +507,59 @@ export default {
         }
       })
     },
+    refreshEvent(eventCode) {
+      this.eventCode = eventCode
+      let that = this
+      //刷新--事件详情
+      getEventDetail({ eventCode: eventCode }).then(res => {
+        this.eventDialog = true
+        this.eventLogList = res.data.eventlog
+        if (res.data.catalogue != null && res.data.catalogue.length > 0) {
+          this.eventStatusValue = res.data.catalogue[0].eventStatusValue
+          this.eventType = res.data.catalogue[0].eventType
+          this.eventId = res.data.catalogue[0].id
+          let markersMap = {
+            lng: 124.59,
+            lat: 43.02,
+            icon: 'marker',
+            bindPopupHtml: '',
+            click: '',
+            parameter: '',
+            keepBindPopup: false,
+            isAggregation: false,
+            radius: 0
+          }
+          if (res.data.catalogue[0].eventStatusValue == 'forest_event_status_1' || res.data.catalogue[0].eventStatusValue == 'forest_event_status_2' || res.data.catalogue[0].eventStatusValue == 'forest_event_status_3') {
+            markersMap.icon = 'sj-icon-map-clz'
+            markersMap.isAggregation = false
+          } else if (res.data.catalogue[0].eventStatusValue == 'event_event_status_4') {
+            markersMap.icon = 'sj-icon-map-wcl'
+          } else if (res.data.catalogue[0].eventStatusValue == 'event_event_status_5') {
+            markersMap.icon = 'sj-icon-map-wcl'
+          } else if (res.data.catalogue[0].eventStatusValue == 'event_event_status_6') {
+            markersMap.icon = 'sj-icon-map-wcl'
+          } else {
+            markersMap.icon = 'sj-icon-map-ywc'
+          }
+          markersMap.lng = res.data.catalogue[0].longitude
+          markersMap.lat = res.data.catalogue[0].latitude
+          if (res.data.eventdetail != null && res.data.eventdetail.length > 0 && res.data.eventdetail[0].fireRadius != null && res.data.eventdetail[0].fireRadius != '' && res.data.eventdetail[0].fireRadius > 0) {
+            markersMap.radius = res.data.eventdetail[0].fireRadius
+          }
+          setTimeout(() => {
+            that.$refs.supermapDialog.clearM(false)
+            if (res.data.eventdetail != null && res.data.eventdetail.length > 0 && res.data.eventdetail[0].fireRadius != null && res.data.eventdetail[0].fireRadius != '' && res.data.eventdetail[0].fireRadius > 0) {
+              that.$refs.supermapDialog.setMarkersRadius([markersMap])
+            } else {
+              that.$refs.supermapDialog.setMarkers([markersMap])
+            }
+            that.$refs.supermapDialog.dropLocation(res.data.catalogue[0].latitude, res.data.catalogue[0].longitude)
+          }, 1000)
+        }
+      })
+    },
     refreshEventDialog(eventCode) {
-      //获取事件日志
+      //刷新--事件日志
       getEventDetail({ eventCode: eventCode }).then(res => {
         this.eventLogList = res.data.eventlog
       })

+ 1 - 1
src/views/forest.vue

@@ -134,7 +134,7 @@
                     </div>
                   </el-col>
                 </el-row>
-                <el-row :gutter="20" v-if="!todatWeather">
+                <el-row :gutter="20" v-else>
                   <el-col :span="24">
                     <div class="weather-img">
                       暂无天气信息!