Kaynağa Gözat

修改WebSocket接收事件列表事件

JX.LI 2 yıl önce
ebeveyn
işleme
10ae7f7dfe
4 değiştirilmiş dosya ile 135 ekleme ve 92 silme
  1. 18 0
      src/api/forest.js
  2. 1 0
      src/store/getters.js
  3. 12 7
      src/store/modules/user.js
  4. 104 85
      src/views/forest.vue

+ 18 - 0
src/api/forest.js

@@ -1,5 +1,14 @@
 import request from '@/utils/request'
 
+
+// 获取绑定的事件类型
+export function getMenuEventType() {
+  return request({
+    url: '/center-fire/VisuForestCloudMapController/getMenuEventType',
+    method: 'get',
+  })
+}
+
 // 左侧获取部门信息
 export function getBaseInfo() {
   return request({
@@ -69,6 +78,14 @@ export function getEventDetail(param) {
     data: param
   })
 }
+// 获取事件详情
+export function getEventPush(param) {
+  return request({
+    url: '/center-fire/VisuForestCloudMapController/getEventPush',
+    method: 'post',
+    data: param
+  })
+}
 // 获取日历颜色状态
 export function getEventByCalendar(param) {
   return request({
@@ -273,3 +290,4 @@ export function selectMessageById(messageId) {
     method: 'get'
   })
 }
+

+ 1 - 0
src/store/getters.js

@@ -6,6 +6,7 @@ const getters = {
   cachedViews: state => state.tagsView.cachedViews,
   token: state => state.user.token,
   avatar: state => state.user.avatar,
+  userId: state => state.user.id,
   name: state => state.user.name,
   introduction: state => state.user.introduction,
   roles: state => state.user.roles,

+ 12 - 7
src/store/modules/user.js

@@ -1,11 +1,12 @@
-import { login, logout, getInfo, refreshToken } from '@/api/login'
-import { getToken, setToken, setExpiresIn, removeToken } from '@/utils/auth'
+import {login, logout, getInfo, refreshToken} from '@/api/login'
+import {getToken, setToken, setExpiresIn, removeToken} from '@/utils/auth'
 
 const user = {
   state: {
     token: getToken(),
     name: '',
     avatar: '',
+    userId: '',
     roles: [],
     permissions: []
   },
@@ -28,12 +29,15 @@ const user = {
     },
     SET_PERMISSIONS: (state, permissions) => {
       state.permissions = permissions
+    },
+    SET_USERID: (state, userId) => {
+      state.userId = userId
     }
   },
 
   actions: {
     // 登录
-    Login({ commit }, userInfo) {
+    Login({commit}, userInfo) {
       const username = userInfo.username.trim()
       const password = userInfo.password
       const code = userInfo.code
@@ -53,7 +57,7 @@ const user = {
     },
 
     // 获取用户信息
-    GetInfo({ commit, state }) {
+    GetInfo({commit, state}) {
       return new Promise((resolve, reject) => {
         getInfo().then(res => {
           const user = res.user
@@ -65,6 +69,7 @@ const user = {
             commit('SET_ROLES', ['ROLE_DEFAULT'])
           }
           commit('SET_NAME', user.userName)
+          commit('SET_USERID', user.id)
           commit('SET_AVATAR', avatar)
           resolve(res)
         }).catch(error => {
@@ -85,9 +90,9 @@ const user = {
         })
       })
     },
-    
+
     // 退出系统
-    LogOut({ commit, state }) {
+    LogOut({commit, state}) {
       return new Promise((resolve, reject) => {
         logout(state.token).then(() => {
           commit('SET_TOKEN', '')
@@ -102,7 +107,7 @@ const user = {
     },
 
     // 前端 登出
-    FedLogOut({ commit }) {
+    FedLogOut({commit}) {
       return new Promise(resolve => {
         commit('SET_TOKEN', '')
         removeToken()

+ 104 - 85
src/views/forest.vue

@@ -106,7 +106,7 @@
       <supermap ref="supermap" style="width: 100%;height: 100vh;" class="indexSupermapClass" :mapDiv="'forestMap'"
                 :dynamicPlotting="false"
                 :mapSite="{doubleClickZoom:false}" :codes="['9fa5']" :isSideBySide="false"
-                @showEventDialog="showEventDialog" ></supermap>
+                @showEventDialog="showEventDialog"></supermap>
       <!-- 右侧 -->
       <div class="rightbar rightbar-index" ref="right">
         <div class="right-item1">
@@ -388,14 +388,14 @@
           <div class="forthis">
             <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
               <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
-              <div class="this-title"
+              <div class="this-title" style="cursor: pointer"
                    @click="setEventTypeId({eventTypeIdDl: [], eventTypeId: []})">
                 <span>事件分类</span>
                 <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;"/>
               </div>
               <div class="i-list-con small-bottom-margin h-19">
                 <chart v-if="showEventKind" :config="eventKind" @setEventTypeId="setEventTypeId"
-                       style="width: 90%;height: 18vh; padding:.5rem 1rem"></chart>
+                       style="width: 90%;height: 18vh; padding:.5rem 1rem"/>
               </div>
             </dv-border-box-13>
           </div>
@@ -440,94 +440,98 @@
   import Cookies from 'js-cookie'
   /** ----------------------------------weosocket结束------------------------------------- */
 
-  import {
-    getBaseInfo,
-    getTodayEvents,
-    getDeptEventCount,
-    getWeather,
-    getEventList,
-    getEventByEventType,
-    getEventByReportorOrder,
-    getExposureStage
-  } from '@/api/forest'
-  import {
-    getNearEvent
-  } from '@/api/event'
-  import supermap from '@/components/supermap' //超图
-  // import supermapNotProcessed from '@/components/supermap' //超图
-  // import supermapProcessed from '@/components/supermap' //超图
-  import vheader from '@/components/v-header.vue' //一体化共用头部
-  import vBottomMenu from '@/components/vBottomMenu.vue' //一体化公共底部菜单
-  import eventLocation from '@/components/eventLocation.vue' //事件定位弹窗
-  import TVWall from '@/components/TVWall.vue' //电视墙弹窗
-  import wrj from '@/components/wrj.vue' //无人机
-  import eventdetailsdialog from '@/views/eventdetailsdialog.vue' //事件详情弹窗
-  import firespread from '@/views/firespread.vue' //事件详情弹窗
+import {
+  getMenuEventType,
+  getBaseInfo,
+  getTodayEvents,
+  getEventPush,
+  getDeptEventCount,
+  getWeather,
+  getEventList,
+  getEventByEventType,
+  getEventByReportorOrder,
+  getExposureStage
+} from '@/api/forest'
+import {
+  getNearEvent
+} from '@/api/event'
+import supermap from '@/components/supermap' //超图
+// import supermapNotProcessed from '@/components/supermap' //超图
+// import supermapProcessed from '@/components/supermap' //超图
+import vheader from '@/components/v-header.vue' //一体化共用头部
+import vBottomMenu from '@/components/vBottomMenu.vue' //一体化公共底部菜单
+import eventLocation from '@/components/eventLocation.vue' //事件定位弹窗
+import TVWall from '@/components/TVWall.vue' //电视墙弹窗
+import wrj from '@/components/wrj.vue' //无人机
+import eventdetailsdialog from '@/views/eventdetailsdialog.vue' //事件详情弹窗
+import firespread from '@/views/firespread.vue' //事件详情弹窗
+import chart from './from/dvCapsuleChart.vue'
 
   /** ----------------------------------摄像头预览开始------------------------------------- */
   import { getDahuaVideoServer } from '@/api/dahua/dahua'
   import DHWs from '@/dahua/lib/DHWs'
   import Firespread from "./firespread";
 
-  /** ----------------------------------摄像头预览结束------------------------------------- */
-  import chart from "./from/dvCapsuleChart.vue";
-  let echarts = require('echarts')
-  export default {
-    components: {
-      Firespread,
-      supermap,
-      // supermapNotProcessed,
-      // supermapProcessed,
-      vheader,
-      vBottomMenu,
-      eventLocation,
-      chart,
-      TVWall,
-      wrj,
-      dateChoose,
-      eventdetailsdialog,
-      firespread
-    },
-    created() {
-      /** ----------------------------------底部按钮公用组件开始------------------------------------- */
-      window.showDialog = this.showDialog
-      window.choseLayerSwitching = this.choseLayerSwitching
-      window.choseLayerSwitchingList = this.choseLayerSwitchingList
-      window.choseLayerSwitchingList_Data = this.choseLayerSwitchingList_Data
-      /** ----------------------------------底部按钮公用组件结束------------------------------------- */
-      const DHWsInstance = DHWs.getInstance();
-      this.ws = DHWsInstance;
-    },
-    mounted() {
-      this.getBaseInfo()
-      this.getTodayEvents(this.getCurrentDataStr())
-      this.getDeptEventCount(this.getCurrentDataStr())
-      this.getWeather(this.getCurrentDataStr())
-      this.getEventList(this.getCurrentDataStr(), this.pageSize, this.pageNum)
-      this.getEventByEventType(this.getCurrentDataStr())
-      this.getEventByReportorOrder(this.getCurrentDataStr())
-      this.getExposureStage(this.getCurrentDataStr())
-      this.getSupermap(this.getCurrentDataStr())
-      /** ----------------------------------weosocket开始------------------------------------- */
-      // this.initWebSocket()
-      /** ----------------------------------weosocket结束------------------------------------- */
-      setInterval(() => {
-        if (this.calendarDay == this.getCurrentDataStr()) {
-          this.getTodayEvents(this.getCurrentDataStr(), true);
-          this.getDeptEventCount(this.getCurrentDataStr(), true);
-          this.getEventList(this.getCurrentDataStr(), this.pageSize, this.pageNum, '', true);
-          this.getEventByEventType(this.getCurrentDataStr(), true);
-          this.getEventByReportorOrder(this.getCurrentDataStr(), true);
-          this.getExposureStage(this.getCurrentDataStr(), true);
-          this.getSupermap(this.getCurrentDataStr(), true);
-        }
-      }, 4000)
-      this.bottomMenuList() //获取底部公共组件消息和任务
-    },
-    data() {
-      return {
-        //警报MP3文件
-        audioSrc: require('@/assets/jingbao.mp3'),
+/** ----------------------------------摄像头预览结束------------------------------------- */
+
+let echarts = require('echarts')
+export default {
+  components: {
+    Firespread,
+    chart,
+    supermap,
+    // supermapNotProcessed,
+    // supermapProcessed,
+    vheader,
+    vBottomMenu,
+    eventLocation,
+    TVWall,
+    wrj,
+    dateChoose,
+    eventdetailsdialog,
+    firespread
+  },
+  created() {
+    /** ----------------------------------底部按钮公用组件开始------------------------------------- */
+    window.showDialog = this.showDialog
+    window.choseLayerSwitching = this.choseLayerSwitching
+    window.choseLayerSwitchingList = this.choseLayerSwitchingList
+    window.choseLayerSwitchingList_Data = this.choseLayerSwitchingList_Data
+    /** ----------------------------------底部按钮公用组件结束------------------------------------- */
+    const DHWsInstance = DHWs.getInstance();
+    this.ws = DHWsInstance;
+  },
+  mounted() {
+    this.getBaseInfo()
+    this.getTodayEvents(this.getCurrentDataStr())
+    this.getDeptEventCount(this.getCurrentDataStr())
+    this.getWeather(this.getCurrentDataStr())
+    this.getEventList(this.getCurrentDataStr(), this.pageSize, this.pageNum)
+    this.getEventByEventType(this.getCurrentDataStr())
+    this.getEventByReportorOrder(this.getCurrentDataStr())
+    this.getExposureStage(this.getCurrentDataStr())
+    this.getSupermap(this.getCurrentDataStr())
+    this.getMenuEventType()
+    /** ----------------------------------weosocket开始------------------------------------- */
+    // this.initWebSocket()
+    /** ----------------------------------weosocket结束------------------------------------- */
+    setInterval(() => {
+      if (this.calendarDay == this.getCurrentDataStr()) {
+        this.getTodayEvents(this.getCurrentDataStr(), true);
+        this.getDeptEventCount(this.getCurrentDataStr(), true);
+        // this.getEventList(this.getCurrentDataStr(), this.pageSize, this.pageNum, '', true);
+        this.getEventByEventType(this.getCurrentDataStr(), true);
+        this.getEventByReportorOrder(this.getCurrentDataStr(), true);
+        this.getExposureStage(this.getCurrentDataStr(), true);
+        // this.getSupermap(this.getCurrentDataStr(), true);
+      }
+    }, 30000)
+    this.bottomMenuList() //获取底部公共组件消息和任务
+  },
+  data() {
+    return {
+      //警报MP3文件
+      audioSrc: require('@/assets/jingbao.mp3'),
 
       calendarDay: this.getCurrentDataStr(),
       //基本情况
@@ -581,6 +585,11 @@
       weosocket: false,
       websock: '',
       setIntervalWesocketPush: null,
+      websockSid: {
+        userId: '',
+        eventTypeDl: '',
+        eventType: '',
+      },
       /** ----------------------------------weosocket结束------------------------------------- */
       /** ----------------------------------摄像头预览开始------------------------------------- */
       activePanel: 'key1',
@@ -602,6 +611,16 @@
   },
   /** ----------------------------------weosocket结束------------------------------------- */
   methods: {
+    getMenuEventType() {
+      let that = this
+      getMenuEventType().then(res => {
+        that.websockSid.userId = Cookies.get('userId')
+        that.websockSid.eventTypeDl = res.data.eventTypeDl
+        that.websockSid.eventType = res.data.eventType
+        that.initWebSocket(that.websockSid.userId, that.websockSid.eventTypeDl, that.websockSid.eventType)
+        console.log(that.websockSid)
+      })
+    },
     setEventTypeId(data) {
       // let data = {eventTypeIdDl: [], eventTypeId: []}
       // let data = {eventTypeIdDl: that.eventTypeIdDl, eventTypeId: that.eventTypeId}