瀏覽代碼

Merge remote-tracking branch 'origin/visu_environment' into visu_environment

wang_xy 2 年之前
父節點
當前提交
76d6d098e9
共有 6 個文件被更改,包括 206 次插入22 次删除
  1. 2 2
      src/api/event.js
  2. 3 3
      src/api/leader.js
  3. 28 10
      src/views/forest.vue
  4. 167 0
      src/views/from/dvCapsuleChart.vue
  5. 5 5
      src/views/leader.vue
  6. 1 2
      vue.config.js

+ 2 - 2
src/api/event.js

@@ -1,9 +1,9 @@
 import request from '@/utils/request'
 
 //获取附近事件
-export function getNearEvent(longitude,latitude,day,loading) {
+export function getNearEvent(longitude, latitude, day, loading, eventTypeIdDl, eventTypeId) {
   return request({
-    url: '/center-environment/VisuForestEventCenterController/getNearEvent?longitude='+longitude+"&latitude="+latitude+"&day="+day,
+    url: '/center-environment/VisuForestEventCenterController/getNearEvent?longitude=' + longitude + "&latitude=" + latitude + "&day=" + day + "&eventTypeIdDl=" + eventTypeIdDl + "&eventTypeId=" + eventTypeId,
     method: 'get',
     headers: {
       loading: loading

+ 3 - 3
src/api/leader.js

@@ -9,9 +9,9 @@ export function getRy() {
 }
 
 // 获取左侧人员列表
-export function getForestLeader() {
+export function getForestLeader(linJob, linType) {
   return request({
-    url: '/center-environment/VisuForestLeaderController/getPersonList?linJob='+linJob+"&linType="+linType,
+    url: '/center-environment/VisuForestLeaderController/getPersonList?environmentJob='+linJob+"&linType="+linType,
     method: 'get',
   })
 }
@@ -21,7 +21,7 @@ export function getPlanList(userId) {
   return request({
     url: '/center-data/task/getPlanList',
     method: 'post',
-    data: {userId:userId,type:'1'}
+    data: {userId:userId,type:'4'}
   })
 }
 

+ 28 - 10
src/views/forest.vue

@@ -388,12 +388,12 @@
           <div class="forthis">
             <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" :color="['#0e7957', '#0da24c']" 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">
-                <dv-capsule-chart v-if="showEventKind" :config="eventKind"
+                <chart v-if="showEventKind" :config="eventKind"  @setEventTypeId="setEventTypeId"
                                   style="width: 90%;height: 18vh; padding:.5rem 1rem"/>
               </div>
             </dv-border-box-13>
@@ -460,12 +460,14 @@
   import eventdetailsdialog from '@/views/eventdetailsdialog.vue' //事件详情弹窗
   import firespread from '@/views/firespread.vue' //事件详情弹窗
   import Firespread from "./firespread";
+  import chart from "./from/dvCapsuleChart.vue";
 
   let echarts = require('echarts')
   export default {
     components: {
       Firespread,
       supermap,
+      chart,
       // supermapNotProcessed,
       // supermapProcessed,
       vheader,
@@ -551,6 +553,8 @@
         eventList: [],
         pageSize: 10,
         pageNum: 1,
+        eventTypeIdDl:[],
+        eventTypeId:[],
 
         eventListnew: [],
         eventListAll: [],
@@ -588,6 +592,20 @@
     },
     /** ----------------------------------weosocket结束------------------------------------- */
     methods: {
+      setEventTypeId(data) {
+        // let data = {eventTypeIdDl: [], eventTypeId: []}
+        // let data = {eventTypeIdDl: that.eventTypeIdDl, eventTypeId: that.eventTypeId}
+        let that = this
+        that.eventTypeIdDl = data.eventTypeIdDl
+        that.eventTypeId = data.eventTypeId
+        that.getSupermap(that.calendarDay, false)
+        that.getTodayEvents(that.calendarDay, false)
+        that.getEventByEventType(that.calendarDay, false)
+        that.getExposureStage(that.calendarDay, false)
+        that.getEventByReportorOrder(that.calendarDay, false)
+        that.getDeptEventCount(that.calendarDay, false)
+        that.getEventList(that.calendarDay, that.pageSize, that.pageNum, '', false)
+      },
       // searchEvent(pageSize,pageNum,eventSearch) {
       //   this.pageSize = pageSize;
       //   this.pageNum = pageNum;
@@ -826,7 +844,7 @@
       getTodayEvents(day, loading) {
         let that = this
         //左侧获取事件信息统计
-        getTodayEvents({day: day}, loading).then(res => {
+        getTodayEvents({eventTypeIdDl: that.eventTypeIdDl,eventTypeId: that.eventTypeId,day: day}, loading).then(res => {
           this.aiTotal = res.data.aiTotal
           this.aiTotal_pre = res.data.aiTotal_pre
           this.newReport = res.data.newReport
@@ -845,7 +863,7 @@
       getDeptEventCount(day, loading) {
         let that = this
         //左侧获取事件部门数量
-        getDeptEventCount({day: day}, loading).then(res => {
+        getDeptEventCount({eventTypeIdDl: that.eventTypeIdDl,eventTypeId: that.eventTypeId,day: day}, loading).then(res => {
           this.forestFarm = res.data
         })
       },
@@ -875,7 +893,7 @@
       },
       getSupermap(day, loading) {
         let that = this
-        getNearEvent('', '', day, loading).then(res => {
+        getNearEvent('', '', day, loading, that.eventTypeIdDl, that.eventTypeId).then(res => {
           that.markersList = [];
           if (res.data != null && res.data.length > 0) {
             for (let i = 0; i < res.data.length; i++) {
@@ -972,9 +990,9 @@
         this.pageSize = pageSize;
         this.pageNum = pageNum;
         let that = this
-        this.eventList = []
         //右侧获取事件列表
-        getEventList({day: day, pageSize: pageSize, pageNum: pageNum, eventName: eventSearch}, loading).then(res => {
+        getEventList({eventTypeIdDl: that.eventTypeIdDl,eventTypeId: that.eventTypeId, day: day, pageSize: pageSize, pageNum: pageNum, eventName: eventSearch}, loading).then(res => {
+          this.eventList = []
           this.eventList = res.data
           if (this.eventList != null && this.eventList.length > 0) {
             if (this.eventList[0].eventStatusValue == 'forest_event_status_1') {
@@ -989,7 +1007,7 @@
       getEventByEventType(day, loading) {
         let that = this
         //右侧获取事件分类
-        getEventByEventType({day: day}, loading).then(res => {
+        getEventByEventType({eventTypeIdDl: that.eventTypeIdDl,eventTypeId: that.eventTypeId, day: day}, loading).then(res => {
           if (res.data != null && res.data.length > 0) {
             this.showEventKind = true
             this.eventKind.data = res.data
@@ -1006,7 +1024,7 @@
       getEventByReportorOrder(day, loading) {
         let that = this
         //右侧获取上报排名
-        getEventByReportorOrder({day: day}, loading).then(res => {
+        getEventByReportorOrder({eventTypeIdDl: that.eventTypeIdDl,eventTypeId: that.eventTypeId,day: day}, loading).then(res => {
           if (res.data != null && res.data.length > 0) {
             this.reportList.data = res.data
             this.reportList = {...this.reportList}
@@ -1105,7 +1123,7 @@
       getExposureStage(day, loading) {
         let that = this
         //右侧获取曝光台
-        getExposureStage({day: day}, loading).then(res => {
+        getExposureStage({eventTypeIdDl: that.eventTypeIdDl,eventTypeId: that.eventTypeId,day: day}, loading).then(res => {
           this.exposureStageList = res.data
         })
       },

+ 167 - 0
src/views/from/dvCapsuleChart.vue

@@ -0,0 +1,167 @@
+<template>
+  <div class="dv-capsule-chart">
+    <template v-if="mergedConfig">
+      <div class="label-column">
+        <div v-for="item in mergedConfig.data" :key="item.name" style="cursor: pointer" @click="getEventList(item)">
+          {{ item.name }} 
+        </div>
+        <div>&nbsp;</div>
+      </div>
+      <div class="capsule-container">
+        <div class="capsule-item" v-for="(capsule, index) in capsuleLength" :key="index">
+          <div
+            @click="getEventList(capsule)"
+            class="capsule-item-column"
+            :style="`cursor: pointer;width: ${capsule * 100}%; background-color: ${mergedConfig.colors[index % mergedConfig.colors.length]};`"
+          >
+            <div
+              style="cursor: pointer" @click="getEventList(capsule)"
+              v-if="mergedConfig.showValue"
+              class="capsule-item-value"
+            >{{ capsuleValue[index] }}
+            </div>
+          </div>
+        </div>
+
+        <div class="unit-label">
+          <div
+            v-for="(label, index) in labelData"
+            :key="label + index"
+          >{{ label }}
+          </div>
+        </div>
+      </div>
+
+      <div class="unit-text" v-if="mergedConfig.unit">{{ mergedConfig.unit }}</div>
+    </template>
+  </div>
+</template>
+
+<script>
+import {deepMerge} from '@jiaminghi/charts/lib/util/index'
+
+import {deepClone} from '@jiaminghi/c-render/lib/plugin/util'
+
+export default {
+  name: 'DvCapsuleChart',
+  props: {
+    config: {
+      type: Object,
+      default: () => ({})
+    }
+  },
+  data() {
+    return {
+      defaultConfig: {
+        /**
+         * @description Capsule chart data
+         * @type {Array<Object>}
+         * @default data = []
+         * @example data = [{ name: 'foo1', value: 100 }, { name: 'foo2', value: 100 }]
+         */
+        data: [],
+        /**
+         * @description Colors (hex|rgb|rgba|color keywords)
+         * @type {Array<String>}
+         * @default color = ['#37a2da', '#32c5e9', '#67e0e3', '#9fe6b8', '#ffdb5c', '#ff9f7f', '#fb7293']
+         * @example color = ['#000', 'rgb(0, 0, 0)', 'rgba(0, 0, 0, 1)', 'red']
+         */
+        colors: [
+          '#37a2da',
+          '#32c5e9',
+          '#67e0e3',
+          '#9fe6b8',
+          '#ffdb5c',
+          '#ff9f7f',
+          '#fb7293'
+        ],
+        /**
+         * @description Chart unit
+         * @type {String}
+         * @default unit = ''
+         */
+        unit: '',
+        /**
+         * @description Show item value
+         * @type {Boolean}
+         * @default showValue = false
+         */
+        showValue: false
+      },
+
+      mergedConfig: null,
+
+      capsuleLength: [],
+      capsuleValue: [],
+      labelData: [],
+      labelDataLength: []
+    }
+  },
+  watch: {
+    config() {
+      const {calcData} = this
+      calcData()
+    }
+  },
+  methods: {
+    getEventList(val) {
+      debugger
+      let args = {eventTypeIdDl: [], eventTypeId: []}
+      if (val.id != '0') {
+        args.eventTypeIdDl.push(-1)
+        args.eventTypeId.push(val.id)
+      } else {
+        args.eventTypeIdDl.push(val.parentId)
+        args.eventTypeId.push(-1)
+      }
+      this.$emit('setEventTypeId', args)
+
+    },
+    calcData() {
+      const {mergeConfig, calcCapsuleLengthAndLabelData} = this
+
+      mergeConfig()
+
+      calcCapsuleLengthAndLabelData()
+    },
+    mergeConfig() {
+      let {config, defaultConfig} = this
+
+      this.mergedConfig = deepMerge(
+        deepClone(defaultConfig, true),
+        config || {}
+      )
+    },
+    calcCapsuleLengthAndLabelData() {
+      const {data} = this.mergedConfig
+
+      if (!data.length) return
+
+      const capsuleValue = data.map(({value}) => value)
+
+      const maxValue = Math.max(...capsuleValue)
+
+      this.capsuleValue = capsuleValue
+
+      this.capsuleLength = capsuleValue.map(v => (maxValue ? v / maxValue : 0))
+
+      const oneFifth = maxValue / 5
+
+      const labelData = Array.from(
+        new Set(new Array(6).fill(0).map((v, i) => Math.ceil(i * oneFifth)))
+      )
+
+      this.labelData = labelData
+
+      this.labelDataLength = Array.from(labelData).map(v =>
+        maxValue ? v / maxValue : 0
+      )
+    }
+  },
+  mounted() {
+    const {calcData} = this
+
+    calcData()
+  }
+}
+</script>

+ 5 - 5
src/views/leader.vue

@@ -18,14 +18,14 @@
 							<div class="d-l-con-icon">
 								<div class="icon-con w-50" :class="{on:iconCurrentIndex1==item.jobValue}"
 									v-for="(item,index) in visuForestCloudRYBO"
-									@click="getTrafficLeader(item.jobValue,item.jobType)">
+									@click="getForestLeader(item.jobValue,item.jobType)">
 									<div class="icon icon-mid el-icon-user"></div>
 									<div class="icon-text">
 										<h5>{{ item.job }}</h5>
 										<h6>{{ item.number }}</h6>
 									</div>
 								</div>
-								<!-- <div class="icon-con w-50  m-btm-no" :class="{on:listCurrentIndex1==item.jobType}" v-for="(item,index) in visuForestCloudRYBO" v-if="index%2!=0" @click="getTrafficLeader(item.jobValue,item.jobType)">
+								<!-- <div class="icon-con w-50  m-btm-no" :class="{on:listCurrentIndex1==item.jobType}" v-for="(item,index) in visuForestCloudRYBO" v-if="index%2!=0" @click="getForestLeader(item.jobValue,item.jobType)">
                 <div class="icon icon-mid el-icon-user"></div>
                 <div class="icon-text">
                   <h5>{{item.job}}</h5>
@@ -137,7 +137,7 @@
 
 <script>
 	import {
-		getTrafficLeader,
+		getForestLeader,
 		getPlanList,
 		getRecordList,
 		getPointList,
@@ -279,12 +279,12 @@
 				})
 			},
 			//获取左侧人员列表
-			getTrafficLeader(linJob, linType) {
+			getForestLeader(linJob, linType) {
 				this.listCurrentIndex1 = ''
 				this.listCurrentIndex2 = ''
 				this.iconCurrentIndex1 = linJob
 				this.peopleList = []
-				getTrafficLeader(linJob, linType).then(res => {
+				getForestLeader(linJob, linType).then(res => {
 					this.peopleList = res.data
 				})
 				this.connectList = []

+ 1 - 2
vue.config.js

@@ -51,9 +51,8 @@ module.exports = {
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
+         target: `http://121.36.228.66:3031`,
         // target: `http://127.0.0.1:3031`,
-        target: `http://117.78.49.164:3031`,
-        // target: `http://192.168.1.119:3031`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''