CzRger 1 年之前
父節點
當前提交
15311ef4be
共有 2 個文件被更改,包括 79 次插入9 次删除
  1. 44 7
      src/store/modules/gis.ts
  2. 35 2
      src/views/gis/layout/index.vue

+ 44 - 7
src/store/modules/gis.ts

@@ -2,6 +2,9 @@ import * as source from "ol/source";
 import * as layer from "ol/layer";
 import * as style from "ol/style";
 import * as ol from "ol";
+import * as format from "ol/format";
+import SbStyle from "@/views/gis/map-info/style/sb";
+import CommonStyle from "@/views/gis/map-info/style/common";
 
 const state = {
   menuRootName: '9cd5fbf9-35fd-4fb2-8c24-1f871afd67be',
@@ -48,12 +51,44 @@ const mutations = {
     })
     state.map.addOverlay(state.gisParams.default.overlay)
   },
-  SET_GIS_PARAMS_DEFAULT(state, {type, wkt, info}) {
+  SET_GIS_PARAMS_DEFAULT_SB(state, {wkt, info, config}) {
+    const {
+      isAnalysis = false
+    } = config
     if (state.gisParams.default.layer) {
-      state.gisParams.default.source.clear()
-      state.gisParams.default.type = ''
-      state.gisParams.default.info = {}
-      state.gisParams.default.overlay.setPosition(undefined)
+      state.gisParams.default.source?.clear()
+      try {
+        state.gisParams.default.type = 'sb'
+        state.gisParams.default.info = JSON.parse(JSON.stringify(info))
+        const newFeat: any = new format.WKT().readFeature(wkt)
+        let type = ''
+        if (info.type = '公安类') {
+          type = 'galsb'
+        } else if (info.type = '社会类') {
+          type = 'shlsb'
+        } else if (info.type = '民用类') {
+          type = 'mylsb'
+        }
+        newFeat.set('defaultStyle', SbStyle.sbStyle(type))
+        newFeat.set('activeStyle', [...CommonStyle.activeStyle(), ...SbStyle.sbStyle(type)])
+        newFeat.set('analysisStyle', [...CommonStyle.analysisStyle(), ...SbStyle.sbStyle(type)])
+        newFeat.set('analysisActiveStyle', [...CommonStyle.activeStyle(), ...CommonStyle.analysisStyle(), ...SbStyle.sbStyle(type)])
+        newFeat.set('isAnalysis', isAnalysis)
+        newFeat.set('resetStyle', () => {
+          if (newFeat.get('isAnalysis')) {
+            newFeat.setStyle(newFeat.get('analysisStyle'))
+          } else {
+            newFeat.setStyle(newFeat.get('defaultStyle'))
+          }
+        })
+        newFeat.setStyle(newFeat.get('analysisStyle'))
+        newFeat.set('featureType', 'sb')
+        newFeat.set('info', state.gisParams.default.info)
+        newFeat.setId(info.deviceid)
+        state.gisParams.default.overlay.setPosition(newFeat.getGeometry().getCoordinates())
+      } catch (e) {
+        console.log('异常数据:', wkt, info, e)
+      }
     }
   },
   SET_GIS_PARAMS_DEFAULT_RESET(state) {
@@ -75,8 +110,10 @@ const actions = {
       commit('SET_GIS_MAP', {map, defaultDom})
     }
   },
-  LOAD_GIS_PARAMS_DEFAULT({ commit }: any, {type, wkt, info}: any) {
-    commit('SET_GIS_PARAMS_DEFAULT', {type, wkt, info})
+  LOAD_GIS_PARAMS_DEFAULT({ commit }: any, {type, wkt, info, config = {}}: any) {
+    if (type === 'sb') {
+      commit('SET_GIS_PARAMS_DEFAULT_SB', {wkt, info, config})
+    }
   },
   LOAD_GIS_PARAMS_DEFAULT_RESET({ commit }: any) {
     commit('SET_GIS_PARAMS_DEFAULT_RESET')

+ 35 - 2
src/views/gis/layout/index.vue

@@ -52,6 +52,9 @@
       <RouterViewCom/>
     </div>
     <VideoPlayKedaCom v-if="showVideo" v-model:layout="videoLayout" :form="qyParams.sbInfo" @close="showVideo = false"/>
+    <div class="mockButtons">
+      <el-button @click="mockSB1">模拟设备1</el-button>
+    </div>
   </div>
 
   <div ref="ref_qyDom" class="qy-info" :class="`qy--info-${qyParams.qyInfo.tab}`">
@@ -372,7 +375,7 @@ export default defineComponent({
           const features: any = []
           res.datas.forEach(v => {
             try {
-              const feat: rany = new format.WKT().readFeature(`POINT(${v.longitude} ${v.latitude})`)
+              const feat: any = new format.WKT().readFeature(`POINT(${v.longitude} ${v.latitude})`)
               let type = ''
               if (v.qykx === '零关税自用进口生产设备') {
                 type = 'lgszyjkscsb'
@@ -610,6 +613,29 @@ export default defineComponent({
       state.qyParams.qyInfo['5'].radius = 10
       onRadiusSubmit()
     }
+    const mockSB1 = () => {
+      store.dispatch('gis/LOAD_GIS_PARAMS_DEFAULT', {
+        wkt: 'POINT(110.73667031084902 19.011386491828695)',
+        info: {
+          "pn": "2526",
+          "groupid": "89800003866",
+          "monitorid": "18678",
+          "name": "测试通道2526",
+          "online": "0",
+          "savestatus": "1",
+          "ptztype": "3",
+          "deviceid": "46012003001310000011  aaa",
+          "areacode": "4.60E+19",
+          "longitude": "110.455893",
+          "latitude": "19.89477",
+          "faultedflag": "0",
+          "status": "OFF",
+          "isfront": "363658824",
+          "type": "公安类",
+          "civilcode": "46012003"
+        }
+      })
+    }
     onMounted(() => {
       if (!sessionStorage.getItem('auth')) {
         if(navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Chrome") != -1){
@@ -639,7 +665,8 @@ export default defineComponent({
       onRadiusSubmit,
       onRadiusReset,
       ref_sbDom,
-      ref_gisDefault
+      ref_gisDefault,
+      mockSB1
     }
   },
 })
@@ -1145,4 +1172,10 @@ export default defineComponent({
     }
   }
 }
+
+.mockButtons {
+  position: absolute;
+  top: 0;
+  left: 500px;
+}
 </style>