<!--可视化公共模板 林业-->
<template>
  <div class="visual-con">
    <!--头部-->
    <vheader></vheader>
    <!--主体-->
    <div class="visual-body">
      <!-- 左侧 -->
      <div class="leftbar" ref="left">
        <!-- 1 基本情况 -->
        <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">
              <span>基本情况</span>
              <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;"/>
            </div>
            <div class="i-list-con h-14">
              <div class="d-l-con">
                <div class="d-l-l-text w-100p">
                  <h4 class="line-h-1 w-100p">{{ forestInfo }}</h4>
                </div>
              </div>
            </div>
          </dv-border-box-13>
        </div>
        <!-- 2 事件统计-->
        <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="i-list-con h-29-5">
              <div class="d-l-con">
                <div class="event-count">
                  <div class="count-number">{{ totalStr.charAt(0) }}</div>
                  <div class="count-number">{{ totalStr.charAt(1) }}</div>
                  <div class="count-number">{{ totalStr.charAt(2) }}</div>
                  <div class="count-number">{{ totalStr.charAt(3) }}</div>
                  <div class="count-number">{{ totalStr.charAt(4) }}</div>
                  <div class="count-number">{{ totalStr.charAt(5) }}</div>
                  <dv-decoration-5
                    style="width:81%;height:15px;position: absolute; top:4.2rem;z-index: 0; "/>
                </div>
              </div>
              <div class="d-l-con-icon">
                <div class="icon-con w-33 flex-d t-a-center">
                  <dv-decoration-9
                    style="width: 5.5rem;height: 5.5rem; color:#16e29e;font-size: 1rem;font-weight: bolder;">
                    {{ newReport_pre }}%
                  </dv-decoration-9>
                  <div class="e-state"
                       :style="{'background-image':`url(${require('@/assets/images/integrated/state-bg.png')})`}">
                    <span>新上报</span> <span>{{ newReport }}</span>
                  </div>
                </div>
                <div class="icon-con w-33 flex-d t-a-center">
                  <dv-decoration-9
                    style="width: 5.5rem;height: 5.5rem; color:#f18425;font-size: 1rem;font-weight: bolder;">
                    {{ readySure_pre }}%
                  </dv-decoration-9>
                  <div class="e-state"
                       :style="{'background-image':`url(${require('@/assets/images/integrated/state-bg.png')})`}">
                    <span>处理中</span> <span>{{ readySure }}</span>
                  </div>
                </div>
                <div class="icon-con w-33 flex-d t-a-center">
                  <dv-decoration-9
                    style="width: 5.5rem;height: 5.5rem; color:#9179f1;font-size: 1rem;font-weight: bolder;">
                    {{ readyFinish_pre }}%
                  </dv-decoration-9>
                  <div class="e-state"
                       :style="{'background-image':`url(${require('@/assets/images/integrated/state-bg.png')})`}">
                    <span>已完成</span> <span>{{ readyFinish }}</span>
                  </div>
                </div>
              </div>
              <div class="d-l-con">
                <div id="chart-event-ai" style="width: 100%;height:6vh;"></div>
              </div>
            </div>
          </dv-border-box-13>
        </div>
        <!-- 3 组织机构 -->
        <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="i-list-con h-27" style="padding-left: 1rem;">
              <el-collapse accordion>
                <el-collapse-item v-for="(item,index) in forestFarm" :key="index">
                  <!-- deptId -->
                  <template slot="title">
                    <div class="d-l-con sj-collapse" :class="{on:listCurrentIndex1==item.deptId}"
                         v-on:click="selectCameraByDeptId(item.deptId)">
                      <div class="d-l-l-text">
                        <h4 class="collapse-title">{{ item.deptName }}</h4>
                      </div>
                      <div class="d-l-l-count">{{ item.eventCount }}</div>
                    </div>
                  </template>
                </el-collapse-item>
              </el-collapse>
            </div>
          </dv-border-box-13>
        </div>
      </div>
      <!-- 地图 -->
      <supermap ref="supermap" style="width: 100%;height: 100vh;" :mapDiv="'forestMap'" :dynamicPlotting="false"
                :mapSite="{doubleClickZoom:false}" :codes="['9fa5']" :isSideBySide="false"
                @showEventDialog="showEventDialog"/>
      <!-- 右侧 -->
      <div class="rightbar rightbar-index" ref="right">
        <div class="right-item1">
          <!-- 天气 -->
          <div class="forthis">
            <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)">
              <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;"/>
              <div class="i-list-con small-bottom-margin h-13">
                <el-row :gutter="20" v-if="todatWeather">
                  <el-col :span="9">
                    <div class="weather-img">
                      <img src="../assets/images/integrated/weather/yin.png">
                      <span>{{ weatherinformationWeather }}</span>
                    </div>
                  </el-col>
                  <el-col :span="15">
                    <div class="weather-info">
                      <ul>
                        <li>风力：{{ weatherinformationPower }}级</li>
                        <li>低温：{{ weatherinformationLow }}℃</li>
                        <li>风向：{{ weatherinformationDirection }}</li>
                        <li>高温：{{ weatherinformationHigh }}℃</li>
                        <li>火险：{{ weatherinformationLevel }}</li>
                        <li>湿度：{{ weatherinformationTemperature }}</li>
                      </ul>
                    </div>
                  </el-col>
                </el-row>
                <el-row :gutter="20" v-else>
                  <el-col :span="24">
                    <div class="weather-img">
                      暂无天气信息！
                    </div>
                  </el-col>
                </el-row>
                <div class="firestate">
                  <div class="state-block1"></div>
                  <div class="state-block2"></div>
                  <div class="state-block3 state-on"></div>
                  <div class="state-block4"></div>
                  <div class="state-block5"></div>
                </div>
              </div>
            </dv-border-box-13>
          </div>
          <!-- 曝光台 -->
          <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">
                <span>曝光台</span>
                <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;"/>
              </div>
              <div class="i-list-con small-bottom-margin h-18">
                <div class="d-l-con padding-box nowrap" v-for="(item,index) in exposureStageList">
                  <div class="bgt-state">
                    <div class="bgt-state-frequency">{{ item.urgeCount }}</div>
                    <div class="bgt-state-minute">{{item.timeDiff}}分钟</div>
                  </div>
                  <div class="bgt-info">
                    <div class="bgt-info-name">{{ item.eventName }}</div>
                    <div class="bgt-info-place">
                      <ul>
                        <li>{{ item.deptNames }}</li>
                      </ul>
                    </div>
                  </div>
                </div>
              </div>
            </dv-border-box-13>
          </div>
          <!-- 事件列表 -->
          <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">
                <span>事件列表</span>
                <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;"/>
              </div>
              <div class="i-list-con small-bottom-margin h-39">
                <div class="event-list-search">
                  <el-input
                    placeholder="请输入内容"
                    prefix-icon="el-icon-search"
                    v-model="eventSearch" @change="searchEvent(eventSearch)">
                  </el-input>
                </div>
                <div class="d-l-con padding-box nowrap" v-for="(item,index) in eventList" @click="dropLocation(item.latitude,item.longitude)">
                  <div class="bgt-img">
                    <img v-if="item.picturePath!=null&&item.picturePath!=''" :src="item.picturePath" style="width: 93px;height: 64px"/>
                    <img v-else src="../assets/images/integrated/event-img-sub.png" style="width: 93px;height: 64px"/>
                  </div>
                  <div class="bgt-info">
                    <div v-if="item.eventStatusValue=='forest_event_status_1'&&item.urgeCount==0" class="event-state-sb">
                      <i class="el-icon-caret-left"></i>
                      <div class="event-list-state-sb">
                        新上报
                      </div>
                    </div>
                    <div v-if="item.eventStatusValue=='forest_event_status_1'&&item.urgeCount>0" class="event-state-cb">
                      <i class="el-icon-caret-left"></i>
                      <div class="event-list-state-cb">
                        催办
                      </div>
                    </div>
                    <div v-if="item.eventStatusValue=='forest_event_status_2'" class="event-state-qs">
                      <i class="el-icon-caret-left"></i>
                      <div class="event-list-state-qs">
                        签收
                      </div>
                    </div>
                    <div v-if="item.eventStatusValue=='forest_event_status_3'" class="event-state-wb">
                      <i class="el-icon-caret-left"></i>
                      <div class="event-list-state-wb">
                        误报
                      </div>
                    </div>
                    <div v-if="item.eventStatusValue=='forest_event_status_4'" class="event-state-cf">
                      <i class="el-icon-caret-left"></i>
                      <div class="event-list-state-cf">
                        重复
                      </div>
                    </div>
                    <div v-if="item.eventStatusValue=='forest_event_status_5'" class="event-state-bj">
                      <i class="el-icon-caret-left"></i>
                      <div class="event-list-state-bj">
                        办结
                      </div>
                    </div>
                    <div v-if="item.eventStatusValue=='forest_event_status_6'" class="event-state-gd">
                      <i class="el-icon-caret-left"></i>
                      <div class="event-list-state-gd">
                        归档
                      </div>
                    </div>
                    <div class="bgt-info-name">{{ item.reportor }} {{ item.eventName }}</div>
                    <div class="bgt-info-place">
                      <ul>
                        <li>{{ item.reportTime }}</li>
                      </ul>
                    </div>
                  </div>
                </div>
              </div>
            </dv-border-box-13>
          </div>
        </div>
        <div class="right-item2">
          <!-- 日历 -->
          <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="i-list-con small-bottom-margin h-30">
                <dateChoose @selectDay="selectDay"></dateChoose>
              </div>
            </dv-border-box-13>
          </div>
          <!-- 事件分类 -->
          <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">
                <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 :config="eventKind" style="width: 90%;height: 18vh; padding:.5rem 1rem"/>
              </div>
            </dv-border-box-13>
          </div>
          <!-- 上报排行 -->
          <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">
                <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-scroll-ranking-board :config="reportList" style="width: 100%;height: 20vh; padding:.5rem 1rem"/>
              </div>
            </dv-border-box-13>
          </div>

        </div>

      </div>
      <vBottomMenu ref="bottomMenu"></vBottomMenu>
    </div>
    <eventdetailsdialog ref="eventdetailsdialog" :calendarDay="calendarDay" @getEventList="getEventList" @getTodayEvents="getTodayEvents"></eventdetailsdialog>
    <eventLocation ref="eventLocation"></eventLocation>
    <TVWall ref="TVWall"></TVWall>
  </div>
</template>

<script>
import dateChoose from '@/views/date.vue'//日历
/** ----------------------------------weosocket开始------------------------------------- */
import Cookies from 'js-cookie'
/** ----------------------------------weosocket结束------------------------------------- */

import {
  getBaseInfo,
  getTodayEvents,
  getDeptEventCount,
  getWeather,
  getEventList,
  getEventByEventType,
  getEventByReportorOrder,
  getExposureStage
} from '@/api/forest'
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 eventdetailsdialog from '@/views/eventdetailsdialog.vue' //事件详情弹窗

/** ----------------------------------摄像头预览开始------------------------------------- */
import {
  getDahuaVideoServer
} from '@/api/dahua/dahua'
import DHWs from '@/dahua/lib/DHWs'

/** ----------------------------------摄像头预览结束------------------------------------- */

let echarts = require('echarts')
export default {
  components: {
    supermap,
    supermapNotProcessed,
    supermapProcessed,
    vheader,
    vBottomMenu,
    eventLocation,
    TVWall,
    dateChoose,
    eventdetailsdialog
  },
  created() {
    /** ----------------------------------摄像头预览开始------------------------------------- */
    const DHWsInstance = DHWs.getInstance()
    this.ws = DHWsInstance
    /** ----------------------------------摄像头预览结束------------------------------------- */

    /** ----------------------------------底部按钮公用组件开始------------------------------------- */
    window.showDialog = this.showDialog
    window.choseLayerSwitching = this.choseLayerSwitching
    window.choseLayerSwitchingList = this.choseLayerSwitchingList
    /** ----------------------------------底部按钮公用组件结束------------------------------------- */
  },
  mounted() {
    this.getBaseInfo()
    this.getTodayEvents(this.getCurrentDataStr())
    this.getDeptEventCount(this.getCurrentDataStr())
    this.getWeather(this.getCurrentDataStr())
    this.getEventList(this.getCurrentDataStr())
    this.getEventByEventType(this.getCurrentDataStr())
    this.getEventByReportorOrder(this.getCurrentDataStr())
    this.getExposureStage(this.getCurrentDataStr())
    /** ----------------------------------weosocket开始------------------------------------- */
    // this.initWebSocket()
    /** ----------------------------------weosocket结束------------------------------------- */
    this.selectTaskList()//获取任务
  },
  data() {
    return {
      calendarDay:this.getCurrentDataStr(),
      //基本情况
      forestInfo: '', //基本情况
      //左侧获取事件信息统计
      totalStr: '',
      aiTotal: '',
      newReport: '',
      otherTotal: '',
      readyFinish: '',
      readySure: '',
      total: '',
      aiTotal_pre: '',
      newReport_pre: '',
      otherTotal_pre: '',
      readyFinish_pre: '',
      readySure_pre: '',
      //左侧部门事件数量
      forestFarm: [],
      //右侧天气
      todatWeather:false,
      weatherinformationDirection: '',
      weatherinformationHigh: '',
      weatherinformationLevel: '',
      weatherinformationLow: '',
      weatherinformationPower: '',
      weatherinformationTemperature: '',
      weatherinformationTime: '',
      weatherinformationWeather: '',
      //右侧曝光台
      exposureStageList:[],
      //右侧事件列表
      eventList: [],
      eventListnew: [],
      eventListAll: [],
      eventSearch: '',//事件列表搜索
      listCurrentIndex1: '',
      // ----------------------------------事件分类柱状----------------------------------------
      eventKind: {},
      // ----------------------------------上报排行----------------------------------------
      reportList: {
        data: []
      },
      /** ----------------------------------weosocket开始------------------------------------- */
      weosocket: false,
      websock: '',
      setIntervalWesocketPush: null,
      /** ----------------------------------weosocket结束------------------------------------- */
      /** ----------------------------------摄像头预览开始------------------------------------- */
      activePanel: 'key1',
      isLogin: false,
      cameraParams: [],
      ws: null,
      /** ----------------------------------摄像头预览结束------------------------------------- */
      markersList: [], //点位列表
      cameraList: [] //摄像头列表
    }
  },
  /** ----------------------------------weosocket开始------------------------------------- */
  destroyed() { //离开页面关闭Socket连接
    if (this.websock) {
      clearInterval(this.setIntervalWesocketPush)
      this.websock.close()
      this.websock = null
    }
  },
  /** ----------------------------------weosocket结束------------------------------------- */
  methods: {
    searchEvent(eventSearch) {
      let that = this
      //事件列表搜索
      this.eventListnew = [];
      if(eventSearch!=null&&eventSearch!=""){
        for (var i = 0; i < this.eventListAll.length; i++) {
          if (this.eventListAll[i].reportor.indexOf(eventSearch)>-1) {
            this.eventListnew.push(this.eventListAll[i]);
          }
        }
        this.eventList=this.eventListnew
      }else{
        this.eventList=this.eventListAll
      }
      if (this.eventList != null && this.eventList.length > 0) {
        for (let i = 0; i < this.eventList.length; i++) {
          let markersMap = {
            lng: 124.59,
            lat: 43.02,
            icon: 'marker',
            bindPopupHtml: '',
            click: '',
            parameter: '',
            keepBindPopup: false,
            isAggregation: false
          }
          if (this.eventList.length > 50) {
            markersMap.isAggregation = true
          }
          if (this.eventList[i].eventStatusValue == 'forest_event_status_1') {
            markersMap.click = 'showEventDialog'
            markersMap.icon = 'sj-icon-map-wcl'
            markersMap.isAggregation = false
          } else if ( this.eventList[i].eventStatusValue == 'forest_event_status_2' || this.eventList[i].eventStatusValue == 'forest_event_status_3' || this.eventList[i].eventStatusValue == 'forest_event_status_4' || this.eventList[i].eventStatusValue == 'forest_event_status_5') {
            markersMap.click = 'showEventDialog'
            markersMap.icon = 'sj-icon-map-clz'
          } else if (this.eventList[i].eventStatusValue == 'forest_event_status_6') {
            markersMap.click = 'showEventDialog'
            markersMap.icon = 'sj-icon-map-ywc'
          } else {
            markersMap.click = 'showEventDialog'
            markersMap.icon = 'sj-icon-map-clz'
          }
          markersMap.parameter = this.eventList[i].eventCode
          markersMap.lng = this.eventList[i].longitude
          markersMap.lat = this.eventList[i].latitude
          markersMap.bindPopupHtml = '<div class="map-tip">' +
            '<span>' +
            '                  <div class="d-l-con">' +
            '                  <div class="d-l-l-text">' +
            '                  <h4>经纬度：' + this.eventList[i].longitude + ',' + this.eventList[i].latitude + '</h4>' +
            '                </div>' +
            '                </div>' +
            '                </span>' +
            '<span>' +
            '                  <div class="d-l-con">' +
            '                  <div class="d-l-l-text">' +
            '                  <h4>事件名称：' + this.eventList[i].eventName + '</h4>' +
            '                </div>' +
            '                </div>' +
            '                </span>' +
            '<span>' +
            '                  <div class="d-l-con">' +
            '                  <div class="d-l-l-text">' +
            '                  <h4>事件时间：' + this.eventList[i].reportTime + '</h4>' +
            '                </div>' +
            '                </div>' +
            '                </span>' +
            '</div>'
          that.markersList.push(markersMap)
        }
        setTimeout(() => {
          that.$refs.supermap.clearM(false)
          that.$refs.supermap.clearM(true)
          that.$refs.supermap.setMarkers(that.markersList)
        }, 1000)
      } else {
        setTimeout(() => {
          that.$refs.supermap.clearM(false)
          that.$refs.supermap.clearM(true)
        }, 1000)
      }
    },
    dropLocation(lat, lng){
      this.$refs.supermap.dropLocation(lat, lng)
    },
    showEventDialog(eventCode) {
      //事件信息弹出
      this.$refs.eventdetailsdialog.showEventDialog(eventCode)
    },
    getCurrentDataStr() {
      let date = new Date()
      let y = date.getFullYear()
      let m = date.getMonth() + 1
      m = m < 10 ? '0' + m : m
      let d = date.getDate()
      d = d < 10 ? '0' + d : d
      return y + '-' + m + '-' + d
    },
    selectDay(day) {//日历点击
      this.getTodayEvents(day)
      this.getDeptEventCount(day)
      this.getWeather(day)
      this.getEventList(day)
      this.getEventByEventType(day)
      this.getEventByReportorOrder(day)
      this.getExposureStage(day)
      this.calendarDay=day
    },

    //事件数量统计chart 样例地址http://192.144.199.210:8080/editor/index.html?chart_id=jTXf0Rv4A3oiBONB
    eventChartAi(aiTotal_pre, otherTotal_pre) {
      // 基于准备好的dom，初始化echarts实例
      let myChart = echarts.init(document.getElementById('chart-event-ai'))
      myChart.setOption({
        tooltip: {
          trigger: 'none'
        },
        grid: {
          top: '65%',
          left: '5%',
          right: '5%'
        },
        yAxis: {
          data: ['百分比'],
          axisTick: {
            show: false
          },
          axisLine: {
            show: false
          },
          axisLabel: {
            show: false
          }
        },
        xAxis: {
          splitLine: {
            show: false
          },
          axisTick: {
            show: false
          },
          axisLine: {
            show: false
          },
          axisLabel: {
            show: false
          }
        },
        legend: {
          data: ['AI', '其他'],
          bottom: '5%',
          textStyle: {
            color: '#1FC3CE',
            fontSize: 14
          }
        },
        series: [{
          // name: '最上层立体圆',
          type: 'pictorialBar',
          symbolSize: [10, 20],
          symbolOffset: [2, 0],
          z: 12,
          itemStyle: {
            normal: {
              color: '#293CA0'
            }
          },
          data: [{
            value: 100,
            symbolPosition: 'end'
          }]
        }, {
          // name: '中间立体圆',
          type: 'pictorialBar',
          symbolSize: [10, 20],
          symbolOffset: [2, 0],
          z: 12,
          itemStyle: {
            normal: {
              color: '#45ac8d'
            }
          },
          data: [{
            value: aiTotal_pre,
            symbolPosition: 'end'
          }]
        }, {
          // name: '最底部立体圆',
          type: 'pictorialBar',
          symbolSize: [10, 20],
          symbolOffset: [-4, 0],
          z: 12,
          itemStyle: {
            normal: {
              color: '#196d59'
            }
          },
          data: [otherTotal_pre]
        }, {
          name: 'AI',
          //底部立体柱
          stack: '1',
          type: 'bar',
          itemStyle: {
            normal: {
              color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
                offset: 0,
                color: '#29ac8f'
              }, {
                offset: 1,
                color: '#0a3f3f'
              }])
            }
          },
          label: {
            normal: {
              show: true,
              position: 'inside',
              offset: [0, 1],
              formatter: function(obj) {
                return (obj.value).toLocaleString() + '%'
              },
              textStyle: {
                align: 'center',
                baseline: 'middle',
                fontSize: 14,
                fontWeight: '400',
                color: '#fff',
                textShadowColor: '#000',
                textShadowBlur: '0',
                textShadowOffsetX: 1,
                textShadowOffsetY: 1
              }
            }
          },

          silent: true,
          barWidth: 20,
          barGap: '-100%', // Make series be overlap
          data: [aiTotal_pre]
        }, {
          name: '其他',
          //上部立体柱
          stack: '1',
          type: 'bar',
          itemStyle: {
            normal: {
              color: '#14257B',
              opacity: .7
            }
          },
          silent: true,
          barWidth: 20,
          barGap: '-100%', // Make series be overlap
          data: [otherTotal_pre],
          // itemStyle: {
          //     normal: {
          //         color: 'rgba(29,67,243,1)',
          //     }
          // },
          label: {
            normal: {
              show: true,
              position: 'inside',
              offset: [0, 1],
              formatter: function(obj) {
                return (obj.value).toLocaleString() + '%'
              },
              textStyle: {
                align: 'center',
                baseline: 'middle',
                fontSize: 14,
                fontWeight: '400',
                color: '#fff',
                textShadowColor: '#000',
                textShadowBlur: '0',
                textShadowOffsetX: 1,
                textShadowOffsetY: 1
              }
            }
          }
        }]
      })
    },
    selectTaskList(){
      this.$refs.bottomMenu.selectTaskList();
    },
    getBaseInfo() {
      //左侧获取部门信息
      getBaseInfo().then(res => {
        if(res.code==200){
          if(res.msg=="未找到部门信息"){
            this.forestInfo='未找到部门信息!'
          }else{
            this.forestInfo = res.data.baseinfo //基本情况
          }
        }
      })
    },
    getTodayEvents(day) {
      let that = this
      //左侧获取事件信息统计
      getTodayEvents({ day: day }).then(res => {
        this.aiTotal = res.data.aiTotal
        this.aiTotal_pre = res.data.aiTotal_pre
        this.newReport = res.data.newReport
        this.newReport_pre = res.data.newReport_pre
        this.otherTotal = res.data.otherTotal
        this.otherTotal_pre = res.data.otherTotal_pre
        this.readyFinish = res.data.readyFinish
        this.readyFinish_pre = res.data.readyFinish_pre
        this.readySure = res.data.readySure
        this.readySure_pre = res.data.readySure_pre
        this.totalStr = res.data.totalStr
        this.total = res.data.total
        this.eventChartAi(this.aiTotal_pre, this.otherTotal_pre)
      })
    },
    getDeptEventCount(day) {
      let that = this
      //左侧获取事件部门数量
      getDeptEventCount({ day: day }).then(res => {
        this.forestFarm = res.data
      })
    },
    getWeather(day) {
      let that = this
      //右侧获取天气信息
      getWeather({ day: day }).then(res => {
        if(res.code==200){
          if(res.msg=="天气未添加"){
            this.todatWeather=false
          }else{
            this.todatWeather=true
            this.weatherinformationDirection = res.data.weatherinformationDirection
            this.weatherinformationHigh = res.data.weatherinformationHigh
            this.weatherinformationLevel = res.data.weatherinformationLevel
            this.weatherinformationLow = res.data.weatherinformationLow
            this.weatherinformationPower = res.data.weatherinformationPower
            this.weatherinformationTemperature = res.data.weatherinformationTemperature
            this.weatherinformationTime = res.data.weatherinformationTime
            this.weatherinformationWeather = res.data.weatherinformationWeather
          }
        }else{
          this.todatWeather=false
        }
      })
    },
    getEventList(day) {
      let that = this
      this.eventList = []
      this.eventListAll = []
      //右侧获取事件列表
      getEventList({ day: day }).then(res => {
        this.eventList = res.data
        this.eventListAll = res.data
        that.markersList = []
        if (this.eventList != null && this.eventList.length > 0) {
          for (let i = 0; i < this.eventList.length; i++) {
            let markersMap = {
              lng: 124.59,
              lat: 43.02,
              icon: 'marker',
              bindPopupHtml: '',
              click: '',
              parameter: '',
              keepBindPopup: false,
              isAggregation: false
            }
            if (this.eventList.length > 50) {
              markersMap.isAggregation = true
            }
            if (this.eventList[i].eventStatusValue == 'forest_event_status_1') {
              if(this.eventList[i].urgeCount>0){
                markersMap.click = 'showEventDialog'
                markersMap.icon = 'sj-icon-map-wcl'
                markersMap.isAggregation = false
              }else{
                markersMap.click = 'showEventDialog'
                markersMap.icon = 'sj-icon-map-wcl'
                markersMap.isAggregation = false
              }
            } else if ( this.eventList[i].eventStatusValue == 'forest_event_status_2' || this.eventList[i].eventStatusValue == 'forest_event_status_3' || this.eventList[i].eventStatusValue == 'forest_event_status_4' || this.eventList[i].eventStatusValue == 'forest_event_status_5') {
              markersMap.click = 'showEventDialog'
              markersMap.icon = 'sj-icon-map-clz'
            } else if (this.eventList[i].eventStatusValue == 'forest_event_status_6') {
              markersMap.click = 'showEventDialog'
              markersMap.icon = 'sj-icon-map-ywc'
            } else {
              markersMap.click = 'showEventDialog'
              markersMap.icon = 'sj-icon-map-clz'
            }
            markersMap.parameter = this.eventList[i].eventCode
            markersMap.lng = this.eventList[i].longitude
            markersMap.lat = this.eventList[i].latitude
            markersMap.bindPopupHtml = '<div class="map-tip">' +
              '<span>' +
              '                  <div class="d-l-con">' +
              '                  <div class="d-l-l-text">' +
              '                  <h4>经纬度：' + this.eventList[i].longitude + ',' + this.eventList[i].latitude + '</h4>' +
              '                </div>' +
              '                </div>' +
              '                </span>' +
              '<span>' +
              '                  <div class="d-l-con">' +
              '                  <div class="d-l-l-text">' +
              '                  <h4>事件名称：' + this.eventList[i].eventName + '</h4>' +
              '                </div>' +
              '                </div>' +
              '                </span>' +
              '<span>' +
              '                  <div class="d-l-con">' +
              '                  <div class="d-l-l-text">' +
              '                  <h4>事件时间：' + this.eventList[i].reportTime + '</h4>' +
              '                </div>' +
              '                </div>' +
              '                </span>' +
              '</div>'
            that.markersList.push(markersMap)
          }
          setTimeout(() => {
            that.$refs.supermap.clearM(false)
            that.$refs.supermap.clearM(true)
            that.$refs.supermap.setMarkers(that.markersList)
          }, 1000)
        } else {
          setTimeout(() => {
            that.$refs.supermap.clearM(false)
            that.$refs.supermap.clearM(true)
          }, 1000)
        }
      })
    },
    getEventByEventType(day) {
      let that = this
      //右侧获取事件分类
      getEventByEventType({ day: day }).then(res => {
        if (res.data != null && res.data.length > 0) {
          this.eventKind.data = res.data
          this.eventKind.colors = ['#1ce0a9', '#d6333b', '#e68d3f', '#32c5e9', '#2abc65']
          this.eventKind.showValue = true
          this.eventKind = { ...this.eventKind }
        } else {
          this.eventKind={}
          this.eventKind = { ...this.eventKind }
        }
      })
    },
    getEventByReportorOrder(day) {
      let that = this
      //右侧获取上报排名
      getEventByReportorOrder({ day: day }).then(res => {
        if (res.data != null && res.data.length > 0) {
          this.reportList.data = res.data
          this.reportList = { ...this.reportList }
        } else {
          this.reportList.data = []
          this.reportList = { ...this.reportList }
        }
      })
    },
    getExposureStage(day) {
      let that = this
      //右侧获取曝光台
      getExposureStage({ day: day }).then(res => {
          this.exposureStageList = res.data
      })
    },
    /** ----------------------------------weosocket开始------------------------------------- */
    initWebSocket() { //初始化weosocket
      const wsuri = 'wss://www.hmzzxc.com:10012/websocket/forest-' + Cookies.get('username')
      this.websock = new WebSocket(wsuri)
      console.log('建立websocket连接')
      this.websock.onopen = this.websocketonopen
      this.websock.onmessage = this.websocketonmessage
      this.websock.onerror = this.websocketonerror
      this.websock.onclose = this.websocketclose
      this.websock.onclose = this.websocketclose
    },
    websocketonopen() { //连接建立之后执行send方法发送数据
      console.log('websocket连接成功')
      this.weosocket = true
      this.sendPing()
    },
    websocketonerror() { //连接建立失败重连
      this.initWebSocket()
    },
    websocketonmessage(e) { //数据接收
      console.log('接收数据', e.data)
    },
    websocketsend(Data) { //数据发送
      this.websock.send(Data)
    },
    websocketclose(e) { //关闭
      console.log('断开连接', e)
      // clearInterval(this.setIntervalWesocketPush)
      this.weosocket = false
    },
    /**发送心跳
     * @param {number} time 心跳间隔毫秒 默认5000
     * @param {string} ping 心跳名称 默认字符串ping
     */
    sendPing(time = 5000, ping = {
      'fromId': 'forest',
      'fromUserId': Cookies.get('username'),
      'toUserId': Cookies.get('username')
    }) {
      clearInterval(this.setIntervalWesocketPush)
      this.websock.send(JSON.stringify(ping))
      this.setIntervalWesocketPush = setInterval(() => {
        if (this.weosocket) {
          this.websock.send(JSON.stringify(ping))
        } else {
          this.initWebSocket()
        }
      }, time)
    },
    /** ----------------------------------weosocket结束------------------------------------- */

   /** ----------------------------------底部按钮公用组件开始------------------------------------- */
      showDialog(click) {
        if (click == 'eventLocation') {
          this.$refs.eventLocation.showEventLocation()
          this.$refs.supermap.isEditableLayers = false
          this.$refs.bottomMenu.showChild = false
       		this.$refs.bottomMenu.showBanChild = false
   			this.$refs.bottomMenu.showChangChild = false
        } else if (click == 'editableLayers') {
          this.$refs.bottomMenu.showChild = false
       		this.$refs.bottomMenu.showBanChild = false
   			this.$refs.bottomMenu.showChangChild = false
          if (!this.$refs.supermap.isEditableLayers) {
            this.$refs.supermap.isEditableLayers = true
          } else {
            this.$refs.supermap.isEditableLayers = false
          }
        } else if (click == 'layerSwitching') {
          this.$refs.supermap.isEditableLayers = false
       		this.$refs.bottomMenu.showBanChild = false
   			this.$refs.bottomMenu.showChangChild = false
          if (!this.$refs.bottomMenu.showChild) {
            this.$refs.bottomMenu.showChild = true
          } else {
            this.$refs.bottomMenu.showChild = false
          }
        } else if (click == 'TVWall') {
          this.$refs.TVWall.showTVWall()
          this.$refs.supermap.isEditableLayers = false
          this.$refs.bottomMenu.showChild = false
       		this.$refs.bottomMenu.showBanChild = false
   			this.$refs.bottomMenu.showChangChild = false
        }  else if (click == 'forestban') {
       		this.$refs.bottomMenu.showBanChild = true
          this.$refs.supermap.isEditableLayers = false
       		this.$refs.bottomMenu.showChild = false
   			this.$refs.bottomMenu.showChangChild = false
          if (!this.$refs.bottomMenu.showBanChild) {
            this.$refs.bottomMenu.showBanChild = false
          }
        }else if (click == 'forestchang') {
       		this.$refs.bottomMenu.showChangChild = true
          this.$refs.supermap.isEditableLayers = false
   			this.$refs.bottomMenu.showBanChild = false
       		this.$refs.bottomMenu.showChild = false
          if (!this.$refs.bottomMenu.showChangChild) {
            this.$refs.bottomMenu.showChangChild = false
          }
        }

      },
    //选择图层
    choseLayerSwitching(url,isClear) {
      this.$refs.supermap.layerSwitching(url, isClear)
    },
    //选择图层(传递数组)
    choseLayerSwitchingList(urlList) {
      this.$refs.supermap.layerSwitchingList(urlList)
    },
    /** ----------------------------------底部按钮公用组件结束------------------------------------- */

    /** ----------------------------------事件弹窗开始------------------------------------- */



    /** ----------------------------------事件弹窗结束------------------------------------- */
    /** ----------------------------------摄像头预览开始------------------------------------- */
    alertLogin: function() {
      this.$modal.msg('登录中....')
    },
    alertLoginSuccess: function() {
      this.$modal.msgSuccess('登录成功！')
    },
    alertLoginFailed: function() {
      this.$modal.msgError('登陆失败！')
    },
    alertReinstall: function() {
      this.$modal.msgWarning('请重新安装客户端')
    },
    /** 预览按钮操作 */
    preview(channelCode) {
      getDahuaVideoServer().then(newResponse => {
        this.ws.detectConnectQt().then(res => {
          if (res) { // 连接客户端成功
            this.alertLogin()
            this.ws.login({
              loginIp: newResponse.loginIp,
              loginPort: newResponse.loginPort,
              userName: newResponse.userName,
              userPwd: newResponse.userPwd,
              token: '',
              https: 1
            })
            this.ws.on('loginState', (res) => {
              this.isLogin = res
              if (res) {
                this.alertLoginSuccess()
                this.activePanel = 'key2'
                this.realTimeVideoDialog(channelCode)
              } else {
                this.alertLoginFailed()
              }
            })
          } else { // 连接客户端失败
            this.alertReinstall()
          }
        })
      })
    },
    realTimeVideoDialog(cameraParams) { // 调用弹窗实时播放接口
      if (!this.isLogin) {
        this.$Message.info('正在登陆客户端，请稍等......')
        return false
      }
      this.ws.openVideo(cameraParams)
    }
    /** ----------------------------------摄像头预览结束------------------------------------- */
  }
}
</script>

<style rel="stylesheet/scss" lang="scss" scoped>
@import '@/assets/styles/base.scss';
</style>
