| | |
| | | element-loading-text="请稍等"
|
| | | element-loading-background="rgba(0, 0, 0, 0.6)"
|
| | | >
|
| | | <div v-if="noneData" class="noneData">当前区域设备没有风场</div>
|
| | | <div v-if="noneData" class="noneData">
|
| | | 当前区域设备没有风场
|
| | | </div>
|
| | | <div class="top">
|
| | | <span
|
| | | v-for="(item, index) in params"
|
| | |
| | | @click="turnState"
|
| | | >
|
| | | <span class="text_Time">{{ dateFormat }}</span>
|
| | | <img class="drop-icon" :src="turnImg" alt="" @click="turnState">
|
| | | <img
|
| | | class="drop-icon"
|
| | | :src="turnImg"
|
| | | alt=""
|
| | | @click="turnState"
|
| | | >
|
| | | </span>
|
| | | </div>
|
| | | <div class="topDate" style="height: 60px">
|
| | |
| | | :value="item.value"
|
| | | />
|
| | | </el-select>
|
| | | <el-button
|
| | | type="primary"
|
| | | @click="alertData(PageSize, currentPage)"
|
| | | >查询</el-button>
|
| | | <el-button type="primary" @click="alertData(PageSize, currentPage)">
|
| | | 查询
|
| | | </el-button>
|
| | | </div>
|
| | | </div>
|
| | | <el-table
|
| | |
| | | @current-change="handleCurrentChange"
|
| | | />
|
| | | <div slot="footer" class="dialog-footer">
|
| | | <el-button
|
| | | size="mini"
|
| | | @click="alarmTableVisible = false"
|
| | | >关 闭</el-button>
|
| | | <el-button size="mini" @click="alarmTableVisible = false">
|
| | | 关 闭
|
| | | </el-button>
|
| | | </div>
|
| | | </el-dialog>
|
| | | </div>
|
| | |
| | | import 'leaflet/dist/leaflet.css'
|
| | | import 'leaflet-velocity/dist/leaflet-velocity.css'
|
| | | import L from 'leaflet'
|
| | | import _ from 'lodash'
|
| | | import 'leaflet-rotatedmarker/leaflet.rotatedMarker.js'
|
| | | import 'leaflet-velocity/dist/leaflet-velocity'
|
| | | import $ from 'jquery'
|
| | | import { WWindUtil } from '@/components/Wind/WRatingArr.js'
|
| | | import RegionalOverview from '@/components/Wind/RegionalOverview' // 实时监控组件
|
| | | import { mapGetters } from 'vuex'
|
| | | import { gcj02towgs84 } from '@/assets/json/transform'
|
| | |
| | | weidu: Number,
|
| | | jingdu: Number,
|
| | | monitorPointId: Number,
|
| | | monitorPointIds: Array
|
| | | monitorPointIds: Array,
|
| | | },
|
| | | data() {
|
| | | return {
|
| | | compassBg: require('@/assets/images/regionalOverview/wind_watch.png'),
|
| | | compassDirection: require('@/assets/images/regionalOverview/wind_point.png'),
|
| | | timerKey: '', // 用于重新渲染子组件
|
| | | map: null,
|
| | | code: [],
|
| | |
| | | factorOptions: [
|
| | | {
|
| | | label: '全部因子',
|
| | | value: 'all'
|
| | | value: 'all',
|
| | | },
|
| | | {
|
| | | label: 'PM10',
|
| | | value: 'PM10'
|
| | | value: 'PM10',
|
| | | },
|
| | | {
|
| | | label: 'PM2.5',
|
| | | value: 'PM2.5'
|
| | | value: 'PM2.5',
|
| | | },
|
| | | {
|
| | | label: 'SO2',
|
| | | value: 'SO2'
|
| | | value: 'SO2',
|
| | | },
|
| | | {
|
| | | label: 'NO2',
|
| | | value: 'NO2'
|
| | | value: 'NO2',
|
| | | },
|
| | | {
|
| | | label: 'CO',
|
| | | value: 'CO'
|
| | | value: 'CO',
|
| | | },
|
| | | {
|
| | | label: 'O3',
|
| | | value: 'O3'
|
| | | }
|
| | | value: 'O3',
|
| | | },
|
| | | ],
|
| | | alertOptions: [
|
| | | {
|
| | | label: '全部报警类型',
|
| | | value: 'all'
|
| | | value: 'all',
|
| | | },
|
| | | {
|
| | | label: '超限',
|
| | | value: 'overrun'
|
| | | value: 'overrun',
|
| | | },
|
| | | {
|
| | | label: '突然高',
|
| | | value: 'sudden'
|
| | | value: 'sudden',
|
| | | },
|
| | | {
|
| | | label: '超过国控站点100%',
|
| | | value: 'state100'
|
| | | value: 'state100',
|
| | | },
|
| | | {
|
| | | label: '超过国控站点150%',
|
| | | value: 'state150'
|
| | | value: 'state150',
|
| | | },
|
| | | {
|
| | | label: '超过国控站点250%',
|
| | | value: 'state250'
|
| | | value: 'state250',
|
| | | },
|
| | | {
|
| | | label: '超过市区均值100%',
|
| | | value: 'city100'
|
| | | value: 'city100',
|
| | | },
|
| | | {
|
| | | label: '超过市区均值150%',
|
| | | value: 'city150'
|
| | | value: 'city150',
|
| | | },
|
| | | {
|
| | | label: '超过市区均值250%',
|
| | | value: 'city250'
|
| | | }
|
| | | value: 'city250',
|
| | | },
|
| | | ],
|
| | | currentDate: '',
|
| | | turnImg: require('@/assets/images/regionalOverview/dropDown.png'),
|
| | |
| | | dateInfo: '', // 选择的日期
|
| | | timeInfo: '', // 选择的时间
|
| | | nyr: '', // 选择的年月日
|
| | | windJsonData: []
|
| | | windJsonData: [],
|
| | | }
|
| | | },
|
| | | computed: {
|
| | | ...mapGetters(['regionCode'])
|
| | | ...mapGetters(['regionCode']),
|
| | | },
|
| | | watch: {
|
| | | dateValue(n, o) {
|
| | |
| | |
|
| | | this.canvasWind(newCode)
|
| | | })
|
| | | }
|
| | | },
|
| | | },
|
| | | mounted() {
|
| | | this.currentHour()
|
| | |
| | | methods: {
|
| | | // 拿到某天的日期和星期
|
| | | getDayXQ(day) {
|
| | | var days = new Date().getDay() // 星期
|
| | | var days = new Date()
|
| | | .getDay() // 星期
|
| | | var rq = '' // 日期
|
| | | if (day === 'today') {
|
| | | rq = this.newData(0)
|
| | |
| | | }
|
| | | // 鼠标移入移出事件
|
| | | for (let i = 0; i < lis.length; i++) {
|
| | | lis[i].onmouseenter = function() {
|
| | | lis[i].onmouseenter = function () {
|
| | | // console.log('mouseenter', i)
|
| | | // mouseDiv.style.left = (1.36986 * (i - 1) + 0.68493) + '%'
|
| | | mouseDiv.style.transform = 'translateX(-50%)'
|
| | |
| | | inText.innerHTML = times + ':00'
|
| | | // console.log(mouseDiv)
|
| | | }
|
| | | lis[i].onmouseleave = function() {
|
| | | lis[i].onmouseleave = function () {
|
| | | mouseDiv.style.display = 'none'
|
| | | // console.log('移出事件', i)
|
| | | }
|
| | | }
|
| | | for (let i = 0; i < timeLis.length; i++) {
|
| | | timeLis[i].onmouseenter = function() {
|
| | | timeLis[i].onmouseenter = function () {
|
| | | // console.log('mouseenter', i)
|
| | | // mouseDiv.style.left = (1.36986 * (i - 2) + 0.68493) + '%'
|
| | | mouseDiv.style.left = 1.36986 * i + '%'
|
| | |
| | | inText.innerHTML = times + ':00'
|
| | | // console.log(mouseDiv)
|
| | | }
|
| | | timeLis[i].onmouseleave = function() {
|
| | | timeLis[i].onmouseleave = function () {
|
| | | mouseDiv.style.display = 'none'
|
| | | // console.log('移出事件', i)
|
| | | }
|
| | |
| | | // 请求设备坐标,当前的
|
| | | deviceMaker() {
|
| | | if (this.map) {
|
| | | this.map.eachLayer(function(layer) {
|
| | | this.map.eachLayer(function (layer) {
|
| | | // 卸载之前的风场图层
|
| | | if (
|
| | | !layer._container &&
|
| | | ('' + $(layer._container).attr('class')).replace(/\s/g, '') !==
|
| | | ('' + $(layer._container)
|
| | | .attr('class')).replace(/\s/g, '') !==
|
| | | 'leaflet-layer'
|
| | | ) {
|
| | | layer.remove()
|
| | |
| | | organizationId: this.$store.state.orgId,
|
| | | regionCode: this.$store.state.regionCode,
|
| | | chooseTime: this.chooseTime,
|
| | | time: this.nyr
|
| | | }
|
| | | }).then((data) => {
|
| | | time: this.nyr,
|
| | | },
|
| | | })
|
| | | .then((data) => {
|
| | | // console.log('五分钟设备数据')
|
| | | console.log(data, 'tata')
|
| | | this.markDeviceSite(data)
|
| | | })
|
| | | },
|
| | |
| | | this.keyData = data.data.devices
|
| | | // 遍历国控站位置
|
| | | // this.stateControlStation()
|
| | | var groupIcon = L.layerGroup().addTo(this.map)
|
| | | var groupText = L.layerGroup().addTo(this.map)
|
| | | var groupIcon = L.layerGroup()
|
| | | .addTo(this.map)
|
| | | var groupText = L.layerGroup()
|
| | | .addTo(this.map)
|
| | | this.keys = []
|
| | | for (let i = 0; i < keyData.length; i++) {
|
| | | if (keyData[i].a34002) {
|
| | |
| | | } else if (keyData[i].a21026) {
|
| | | this.keys.push(Math.floor(JSON.parse(keyData[i].a21026)))
|
| | | } else if (keyData[i].a21004) {
|
| | | this.keys.push(Math.floor(JSON.parse(keyData[i].a21004).toFixed(0)))
|
| | | this.keys.push(Math.floor(JSON.parse(keyData[i].a21004)
|
| | | .toFixed(0)))
|
| | | } else if (keyData[i].a21005) {
|
| | | this.keys.push(JSON.parse(keyData[i].a21005).toFixed(3))
|
| | | this.keys.push(JSON.parse(keyData[i].a21005)
|
| | | .toFixed(3))
|
| | | } else if (keyData[i].a05024) {
|
| | | this.keys.push(Math.floor(JSON.parse(keyData[i].a05024)))
|
| | | } else if (keyData[i].a99054) {
|
| | | this.keys.push(JSON.parse(keyData[i].a99054).toFixed(3))
|
| | | this.keys.push(JSON.parse(keyData[i].a99054)
|
| | | .toFixed(3))
|
| | | } else {
|
| | | // for (let j = 0; j < keyData.length; j++) {
|
| | | this.keys.push(JSON.parse('null'))
|
| | |
| | | }
|
| | | } else if (keyData[i].a21004) {
|
| | | var data = Math.floor(
|
| | | Math.floor(JSON.parse(keyData[i].a21004).toFixed(0))
|
| | | Math.floor(JSON.parse(keyData[i].a21004)
|
| | | .toFixed(0))
|
| | | )
|
| | | switch (true) {
|
| | | case data < 0: {
|
| | |
| | | break
|
| | | }
|
| | | } else if (keyData[i].a21005) {
|
| | | var data = JSON.parse(keyData[i].a21005).toFixed(3)
|
| | | var data = JSON.parse(keyData[i].a21005)
|
| | | .toFixed(3)
|
| | | switch (true) {
|
| | | case data < 0: {
|
| | | colorNum = 7
|
| | |
| | | break
|
| | | }
|
| | | } else if (keyData[i].a99054) {
|
| | | var data = JSON.parse(keyData[i].a99054).toFixed(3)
|
| | | var data = JSON.parse(keyData[i].a99054)
|
| | | .toFixed(3)
|
| | | switch (true) {
|
| | | case data < 0: {
|
| | | colorNum = 7
|
| | |
| | | // iconUrl: require('@/assets/icon/ico2.png'),
|
| | | iconSize: [60, 60],
|
| | | iconAnchor: [30, 48],
|
| | | className: 'my-device'
|
| | | className: 'my-device',
|
| | | })
|
| | |
|
| | | // 添加标记到地图
|
| | | const iconMarker = L.marker([lat, lng], {
|
| | | icon: blueIcon
|
| | | icon: blueIcon,
|
| | | })
|
| | | groupIcon.addLayer(iconMarker)
|
| | | // console.log(JSON.parse(this.keys[i]))
|
| | |
| | | html: this.keys[i],
|
| | | className: 'my-div-icon',
|
| | | iconSize: [60, 60],
|
| | | iconAnchor: [40, 40]
|
| | | iconAnchor: [40, 40],
|
| | | })
|
| | |
|
| | | const TexteMarker = L.marker([lat, lng], { icon: myIcon })
|
| | | TexteMarker.vuecontext = this
|
| | | groupText.addLayer(TexteMarker)
|
| | | const _this = this
|
| | | // 给标记添加鼠标移入事件,mouseover事件会冒泡
|
| | | TexteMarker.on('click', function(e) {
|
| | | TexteMarker.on('click', function (e) {
|
| | | const MarkerTarget = e.target
|
| | | _this.getMarkerInfor(keyData[i], MarkerTarget)
|
| | | // _this.getMarkerInfor(keyData[i], MarkerTarget)
|
| | | this.noneData = false
|
| | | // const _this = e.target.vuecontext
|
| | | _this.handleClick(keyData[i], MarkerTarget)
|
| | | })
|
| | | // 给标记点添加鼠标移出事件
|
| | | // TexteMarker.on('mouseout', function(e) {
|
| | |
| | | // this.bindPopup().closePopup()
|
| | | // })
|
| | | }
|
| | | console.log(' this.keys', this.keys)
|
| | | },
|
| | | styleBgColor(keyName) {
|
| | | console.log('keyName', keyName)
|
| | | let bgColorList = {
|
| | | pm25colorbg: '',
|
| | | pm10colorbg: '',
|
| | | so2colorbg: '', //二氧化硫
|
| | | no210colorbg: '', //二氧化氮
|
| | | cocolorbg: '', //一氧化碳
|
| | | o3colorbg: '', //臭氧
|
| | | tvoccolorbg: '', //TVOC
|
| | | }
|
| | |
|
| | | let data = ''
|
| | | for (let i in keyName) {
|
| | | if (i === 'a34002') {
|
| | | data = Math.floor(JSON.parse(keyName.a34002))
|
| | | switch (true) {
|
| | | case data < 0: {
|
| | | bgColorList.pm10colorbg = '#999999'
|
| | | break
|
| | | }
|
| | | case data === 0: {
|
| | | bgColorList.pm10colorbg = '#688fb1'
|
| | | break
|
| | | }
|
| | | case data <= 50: {
|
| | | bgColorList.pm10colorbg = '#00ff01'
|
| | | break
|
| | | }
|
| | | case data <= 150: {
|
| | | bgColorList.pm10colorbg = '#fdfe00'
|
| | | break
|
| | | }
|
| | | case data <= 250: {
|
| | | bgColorList.pm10colorbg = '#fd8102'
|
| | | break
|
| | | }
|
| | | case data <= 350: {
|
| | | bgColorList.pm10colorbg = '#fc0101'
|
| | | break
|
| | | }
|
| | | case data <= 420: {
|
| | | bgColorList.pm10colorbg = '#c00261'
|
| | | break
|
| | | }
|
| | | case data > 420: {
|
| | | bgColorList.pm10colorbg = '#9f012f'
|
| | | break
|
| | | }
|
| | | default:
|
| | | break
|
| | | }
|
| | | } else if (i === 'a34004') {
|
| | | data = Math.floor(JSON.parse(keyName.a34004))
|
| | | switch (true) {
|
| | | case data < 0: {
|
| | | bgColorList.pm25colorbg = '#999999'
|
| | | break
|
| | | }
|
| | | case data === 0: {
|
| | | bgColorList.pm25colorbg = '#688fb1'
|
| | | break
|
| | | }
|
| | | case data <= 35: {
|
| | | bgColorList.pm25colorbg = '#00ff01'
|
| | | break
|
| | | }
|
| | | case data <= 75: {
|
| | | bgColorList.pm25colorbg = '#fdfe00'
|
| | | break
|
| | | }
|
| | | case data <= 115: {
|
| | | bgColorList.pm25colorbg = '#fd8102'
|
| | | break
|
| | | }
|
| | | case data <= 150: {
|
| | | bgColorList.pm25colorbg = '#fc0101'
|
| | | break
|
| | | }
|
| | | case data <= 250: {
|
| | | bgColorList.pm25colorbg = '#c00261'
|
| | | break
|
| | | }
|
| | | case data > 250: {
|
| | | bgColorList.pm25colorbg = '#9f012f'
|
| | | break
|
| | | }
|
| | | default:
|
| | | break
|
| | | }
|
| | | } else if (i === 'a21026') {
|
| | | data = Math.floor(JSON.parse(keyName.a21026))
|
| | | switch (true) {
|
| | | case data < 0: {
|
| | | bgColorList.so2colorbg = '#999999'
|
| | | break
|
| | | }
|
| | | case data === 0: {
|
| | | bgColorList.so2colorbg = '#688fb1'
|
| | | break
|
| | | }
|
| | | case data <= 50: {
|
| | | bgColorList.so2colorbg = '#00ff01'
|
| | | break
|
| | | }
|
| | | case data <= 150: {
|
| | | bgColorList.so2colorbg = '#fdfe00'
|
| | | break
|
| | | }
|
| | | case data <= 475: {
|
| | | bgColorList.so2colorbg = '#fd8102'
|
| | | break
|
| | | }
|
| | | case data <= 800: {
|
| | | bgColorList.so2colorbg = '#fc0101'
|
| | | break
|
| | | }
|
| | | case data <= 1600: {
|
| | | bgColorList.so2colorbg = '#c00261'
|
| | | break
|
| | | }
|
| | | case data > 1600: {
|
| | | bgColorList.so2colorbg = '#9f012f'
|
| | | break
|
| | | }
|
| | | default:
|
| | | break
|
| | | }
|
| | | } else if (i === 'a21004') {
|
| | | data = Math.floor(Math.floor(JSON.parse(keyName.a21004)
|
| | | .toFixed(0)))
|
| | | switch (true) {
|
| | | case data < 0: {
|
| | | bgColorList.no210colorbg = '#999999'
|
| | | break
|
| | | }
|
| | | case data === 0: {
|
| | | bgColorList.no210colorbg = '#688fb1'
|
| | | break
|
| | | }
|
| | | case data <= 40: {
|
| | | bgColorList.no210colorbg = '#00ff01'
|
| | | break
|
| | | }
|
| | | case data <= 80: {
|
| | | bgColorList.no210colorbg = '#fdfe00'
|
| | | break
|
| | | }
|
| | | case data <= 180: {
|
| | | bgColorList.no210colorbg = '#fd8102'
|
| | | break
|
| | | }
|
| | | case data <= 280: {
|
| | | bgColorList.no210colorbg = '#fc0101'
|
| | | break
|
| | | }
|
| | | case data <= 565: {
|
| | | bgColorList.no210colorbg = '#c00261'
|
| | | break
|
| | | }
|
| | | case data > 565: {
|
| | | bgColorList.no210colorbg = '#9f012f'
|
| | | break
|
| | | }
|
| | | default:
|
| | | break
|
| | | }
|
| | | } else if (i === 'a21005') {
|
| | | data = JSON.parse(keyName.a21005)
|
| | | .toFixed(3)
|
| | | switch (true) {
|
| | | case data < 0: {
|
| | | bgColorList.cocolorbg = '#999999'
|
| | | break
|
| | | }
|
| | | case data === 0: {
|
| | | bgColorList.cocolorbg = '#688fb1'
|
| | | break
|
| | | }
|
| | | case data <= 2: {
|
| | | bgColorList.cocolorbg = '#00ff01'
|
| | | break
|
| | | }
|
| | | case data <= 4: {
|
| | | bgColorList.cocolorbg = '#fdfe00'
|
| | | break
|
| | | }
|
| | | case data <= 14: {
|
| | | bgColorList.cocolorbg = '#fd8102'
|
| | | break
|
| | | }
|
| | | case data <= 24: {
|
| | | bgColorList.cocolorbg = '#fc0101'
|
| | | break
|
| | | }
|
| | | case data <= 36: {
|
| | | bgColorList.cocolorbg = '#c00261'
|
| | | break
|
| | | }
|
| | | case data > 36: {
|
| | | bgColorList.cocolorbg = '#9f012f'
|
| | | break
|
| | | }
|
| | | default:
|
| | | break
|
| | | }
|
| | | } else if (i === 'a05024') {
|
| | | data = Math.floor(JSON.parse(keyName.a05024))
|
| | | switch (true) {
|
| | | case data < 0: {
|
| | | bgColorList.o3colorbg = '#999999'
|
| | | break
|
| | | }
|
| | | case data === 0: {
|
| | | bgColorList.o3colorbg = '#688fb1'
|
| | | break
|
| | | }
|
| | | case data <= 160: {
|
| | | bgColorList.o3colorbg = '#00ff01'
|
| | | break
|
| | | }
|
| | | case data <= 200: {
|
| | | bgColorList.o3colorbg = '#fdfe00'
|
| | | break
|
| | | }
|
| | | case data <= 300: {
|
| | | bgColorList.o3colorbg = '#fd8102'
|
| | | break
|
| | | }
|
| | | case data <= 400: {
|
| | | bgColorList.o3colorbg = '#fc0101'
|
| | | break
|
| | | }
|
| | | case data <= 800: {
|
| | | bgColorList.o3colorbg = '#c00261'
|
| | | break
|
| | | }
|
| | | case data > 800: {
|
| | | bgColorList.o3colorbg = '#9f012f'
|
| | | break
|
| | | }
|
| | | default:
|
| | | break
|
| | | }
|
| | | } else if (i === 'a99054') {
|
| | | data = JSON.parse(keyName.a99054)
|
| | | .toFixed(3)
|
| | | switch (true) {
|
| | | case data < 0: {
|
| | | bgColorList.tvoccolorbg = '#999999'
|
| | | break
|
| | | }
|
| | | case data === 0: {
|
| | | bgColorList.tvoccolorbg = '#688fb1'
|
| | | break
|
| | | }
|
| | | case data <= 0.5: {
|
| | | bgColorList.tvoccolorbg = '#00ff01'
|
| | | break
|
| | | }
|
| | | case data <= 1: {
|
| | | bgColorList.tvoccolorbg = '#fdfe00'
|
| | | break
|
| | | }
|
| | | case data <= 1.5: {
|
| | | bgColorList.tvoccolorbg = '#fd8102'
|
| | | break
|
| | | }
|
| | | case data <= 2: {
|
| | | bgColorList.tvoccolorbg = '#fc0101'
|
| | | break
|
| | | }
|
| | | case data <= 3: {
|
| | | bgColorList.tvoccolorbg = '#c00261'
|
| | | break
|
| | | }
|
| | | case data > 3: {
|
| | | bgColorList.tvoccolorbg = '#9f012f'
|
| | | break
|
| | | }
|
| | | // default:
|
| | | // break
|
| | | }
|
| | | }
|
| | | }
|
| | | return bgColorList
|
| | | },
|
| | | handleClick(data, marker) {
|
| | | this.$request({
|
| | | url: '/historyFiveMinutely/queryFiveDataByMac',
|
| | | method: 'get',
|
| | | params: {
|
| | | mac: data.mac,
|
| | | chooseTime: this.chooseTime,
|
| | | time: this.nyr,
|
| | | },
|
| | | })
|
| | | .then((res) => {
|
| | | console.log('res.data', res)
|
| | | if (res.message === '操作目标不存在') {
|
| | | var datafalse = '暂无五分钟数据'
|
| | | marker.bindPopup(datafalse)
|
| | | .openPopup()
|
| | | return
|
| | | }
|
| | | let colorliststyleBgColor = this.styleBgColor(res.data)
|
| | | console.log('colorliststyleBgColor', colorliststyleBgColor)
|
| | | let deviceDetails = res.data
|
| | | let windDeg = 0
|
| | | let windDir = ''
|
| | | let dushu =
|
| | | !deviceDetails.a01008 === '-'
|
| | | ? JSON.parse(deviceDetails.a01008)
|
| | | .toFixed(0)
|
| | | : '-'
|
| | | let level =
|
| | | !deviceDetails.a01007 === '-'
|
| | | ? WWindUtil.windFormatLevel(deviceDetails.a01007)
|
| | | : '-'
|
| | | console.log('level', level)
|
| | | if (deviceDetails.a01008) {
|
| | | var windDirs = Number(
|
| | | deviceDetails.a01008.substr(0, deviceDetails.a01008.length - 1)
|
| | | )
|
| | | // console.log(windDirs)
|
| | | windDeg = windDirs
|
| | | if (windDirs === 0 || windDirs === '-') {
|
| | | windDir = '北风'
|
| | | } else if (windDirs > 0 && windDirs < 90) {
|
| | | windDir = '东北风'
|
| | | } else if (windDirs === 90) {
|
| | | windDir = '东风'
|
| | | } else if (windDirs > 90 && windDirs < 180) {
|
| | | windDir = '东南风'
|
| | | } else if (windDirs === 180) {
|
| | | windDir = '南风'
|
| | | } else if (windDirs > 180 && windDirs < 270) {
|
| | | windDir = '西南风'
|
| | | } else if (windDirs === 270) {
|
| | | windDir = '西风'
|
| | | } else if (windDirs > 270 && windDirs < 360) {
|
| | | windDir = '西北风'
|
| | | }
|
| | | }
|
| | | // 请求数据更新弹框内容
|
| | | let html = ` <div data-reactroot="" class="marker_maptip">
|
| | | <div class="marker_title_1nQ">
|
| | | <span>设备详情</span>
|
| | | </div>
|
| | | <div class="marker_firstline_2WH">
|
| | | <div class="marker_citypart_keg">
|
| | | <div class="marker_name_small_1VU">${deviceDetails.name}</div>
|
| | | <div class="marker_time_w5m">${deviceDetails.dataTime}</div>
|
| | | </div>
|
| | | <div class="marker_indexpart_2UI">
|
| | | <div
|
| | | class="marker_indexname_3TP"
|
| | | style="color: black;background:${
|
| | | colorliststyleBgColor.tvoccolorbg
|
| | | }"
|
| | | >
|
| | | TVOC
|
| | | </div>
|
| | | <div class="marker_indexvalue_1O7">
|
| | | ${this.handleCutZero(deviceDetails.a99054)}
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | <div class="marker_secondline_2Om">
|
| | | <div class="marker_item_2Kk">
|
| | | <div
|
| | | class="marker_itemname_Wq5"
|
| | | style="color: black;background:${
|
| | | colorliststyleBgColor.pm25colorbg
|
| | | } "
|
| | | >
|
| | | PM2.5
|
| | | </div>
|
| | | <div class="marker_itemvalue_1l1">
|
| | | ${this.handleCutZero(deviceDetails.a34004)}
|
| | | </div>
|
| | | </div>
|
| | | <div class="marker_item_2Kk">
|
| | | <div
|
| | | class="marker_itemname_Wq5"
|
| | | style="color: black;background:${
|
| | | colorliststyleBgColor.pm10colorbg
|
| | | }"
|
| | | >
|
| | | PM10
|
| | | </div>
|
| | | <div class="marker_itemvalue_1l1">
|
| | | ${this.handleCutZero(deviceDetails.a34002)}
|
| | | </div>
|
| | | </div>
|
| | | <div class="marker_item_2Kk">
|
| | | <div
|
| | | class="marker_itemname_Wq5"
|
| | | style="color: black;background:${
|
| | | colorliststyleBgColor.so2colorbg
|
| | | }"
|
| | | >
|
| | | SO2
|
| | | </div>
|
| | | <div class="marker_itemvalue_1l1">
|
| | | ${this.handleCutZero(deviceDetails.a21026)}
|
| | | </div>
|
| | | </div>
|
| | | <div class="marker_item_2Kk">
|
| | | <div
|
| | | class="marker_itemname_Wq5"
|
| | | style="color: black;background:${
|
| | | colorliststyleBgColor.no210colorbg
|
| | | }"
|
| | | >
|
| | | NO2
|
| | | </div>
|
| | | <div class="marker_itemvalue_1l1">
|
| | | ${this.handleCutZero(deviceDetails.a21004)}
|
| | | </div>
|
| | | </div>
|
| | | <div class="marker_item_2Kk">
|
| | | <div
|
| | | class="marker_itemname_Wq5"
|
| | | style="color: black;background:${
|
| | | colorliststyleBgColor.cocolorbg
|
| | | }"
|
| | | >
|
| | | CO
|
| | | </div>
|
| | | <div class="marker_itemvalue_1l1">
|
| | | ${this.handleCutZero(deviceDetails.a21005)}
|
| | | </div>
|
| | | </div>
|
| | | <div class="marker_item_2Kk">
|
| | | <div
|
| | | class="marker_itemname_Wq5"
|
| | | style="color: black; background:${
|
| | | colorliststyleBgColor.o3colorbg
|
| | | }"
|
| | | >
|
| | | O3
|
| | | </div>
|
| | | <div class="marker_itemvalue_1l1">
|
| | | ${this.handleCutZero(deviceDetails.a05024)}
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | <div class='windBox'>
|
| | | <div style="position: relative;width: 50%;text-align: center;color: #999;border-right: 1px dotted #999;" clss='windIcon'>
|
| | | <img style="width:140px; height:140px" src=${this.compassBg}>
|
| | | <img style="width: 40px;height: 40px;position: absolute;left: 53%;top: 47%;transform: translate(-50%, -50%) rotate(${windDeg}deg)"
|
| | | src=${this.compassDirection}
|
| | | >
|
| | | </div>
|
| | | <div class='windInfor'>
|
| | | <div>风向: ${windDir} (${dushu}℃)</div>
|
| | | <div>风速: ${deviceDetails.a01007}m/s</div>
|
| | | <div>等级: ${level}</div>
|
| | | </div>
|
| | | </div>
|
| | | |
| | | </div>`
|
| | | marker.bindPopup(html, { className: 'mypopup' })
|
| | | .openPopup()
|
| | | })
|
| | | .catch((err) => {
|
| | | console.log(err)
|
| | | })
|
| | | },
|
| | | handleCutZero(data) {
|
| | |
|
| | | let num = data.substring(0,data.indexOf(".")+4);
|
| | | //拷贝一份 返回去掉零的新串
|
| | | // let num = Number(data).toFixed(3).toString()
|
| | | let newstr = num
|
| | | //循环变量 小数部分长度
|
| | | let leng = num.length - num.indexOf('.') - 1
|
| | | //判断是否有效数
|
| | | if (num.indexOf('.') > -1) {
|
| | | //循环小数部分
|
| | | for (let i = leng; i > 0; i--) {
|
| | | //如果newstr末尾有0
|
| | | if (
|
| | | newstr.lastIndexOf('0') > -1 &&
|
| | | newstr.substr(newstr.length - 1, 1) === 0
|
| | | ) {
|
| | | let k = newstr.lastIndexOf('0')
|
| | | //如果小数点后只有一个0 去掉小数点
|
| | | if (newstr.charAt(k - 1) === '.') {
|
| | | return newstr.substring(0, k - 1)
|
| | | } else {
|
| | | //否则 去掉一个0
|
| | | newstr = newstr.substring(0, k)
|
| | | }
|
| | | } else {
|
| | | //如果末尾没有0
|
| | | return newstr
|
| | | }
|
| | | }
|
| | | }
|
| | | return num
|
| | | },
|
| | | getMarkerInfor(data, marker) {
|
| | | this.$request({
|
| | |
| | | params: {
|
| | | mac: data.mac,
|
| | | chooseTime: this.chooseTime,
|
| | | time: this.nyr
|
| | | }
|
| | | time: this.nyr,
|
| | | },
|
| | | })
|
| | | .then((res) => {
|
| | | if (res.message === '操作目标不存在') {
|
| | | var datafalse = '暂无五分钟数据'
|
| | | this.bindPopup(datafalse).openPopup()
|
| | | this.bindPopup(datafalse)
|
| | | .openPopup()
|
| | | return
|
| | | }
|
| | | for (const key in res.data) {
|
| | | var tempDecimal = res.data[key]
|
| | | .replace(/[^\d.]/g, '')
|
| | | .split('.')[1]
|
| | | var tempDecimal = res.data[key].replace(/[^\d.]/g, '')
|
| | | .split('.')[1]
|
| | | if (key !== '名称' && key !== '时间') {
|
| | | if (Number(tempDecimal) === 0) {
|
| | | res.data[key] =
|
| | | parseInt(res.data[key]) + res.data[key].split(' ')[1]
|
| | | parseInt(res.data[key]) + res.data[key].split(' ')[1]
|
| | | } else {
|
| | | res.data[key] =
|
| | | Number(res.data[key].split(' ')[0]).toFixed(2) +
|
| | | res.data[key].split(' ')[1]
|
| | | Number(res.data[key].split(' ')[0])
|
| | | .toFixed(2) +
|
| | | res.data[key].split(' ')[1]
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | .replace(/,/g, `<br>`)
|
| | | .replace(/{|}|"/g, '')
|
| | | console.log(data)
|
| | | marker.bindPopup(data).openPopup()
|
| | | marker.bindPopup(data)
|
| | | .openPopup()
|
| | | })
|
| | | .catch((err) => {
|
| | | console.log(err)
|
| | |
| | | // const that = this
|
| | | // 遍历所有图层
|
| | | if (this.map) {
|
| | | this.map.eachLayer(function(layer) {
|
| | | this.map.eachLayer(function (layer) {
|
| | | // 卸载之前的风场图层
|
| | | if (
|
| | | !layer._container &&
|
| | | ('' + $(layer._container).attr('class')).replace(/\s/g, '') !==
|
| | | ('' + $(layer._container)
|
| | | .attr('class')).replace(/\s/g, '') !==
|
| | | 'leaflet-layer'
|
| | | ) {
|
| | | layer.remove()
|
| | |
| | | }
|
| | | }, 1000)
|
| | | },
|
| | | findLayer(layerName) { // 根据图层名称查找图层
|
| | | findLayer(layerName) {
|
| | | // 根据图层名称查找图层
|
| | | if (!this.map) {
|
| | | return null
|
| | | }
|
| | |
| | | renderer: L.canvas(),
|
| | | zoomControl: false, // 缩放组件
|
| | | attributionControl: false, // 去掉右下角logol
|
| | | crs: L.CRS.EPSG3857 // 设置坐标类型,EPSG3857伪墨卡托投影,EPSG3395,墨卡托投影坐标 EPSG4326 WGS84
|
| | | crs: L.CRS.EPSG3857, // 设置坐标类型,EPSG3857伪墨卡托投影,EPSG3395,墨卡托投影坐标 EPSG4326 WGS84
|
| | | })
|
| | | // 定义图层样式
|
| | | L.tileLayer(
|
| | | 'https://wprd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}'
|
| | | ).addTo(map)
|
| | | )
|
| | | .addTo(map)
|
| | | this.map = map // data上需要挂载
|
| | | // const that = this
|
| | | // this.map.on('mousedown', function(ev) {
|
| | |
| | | // 请求风场图接口
|
| | | initData() {
|
| | | if (this.map) {
|
| | | this.map.eachLayer(function(layer) {
|
| | | this.map.eachLayer(function (layer) {
|
| | | // 卸载之前的风场图层
|
| | | if (
|
| | | !layer._container &&
|
| | | ('' + $(layer._container).attr('class')).replace(/\s/g, '') !==
|
| | | ('' + $(layer._container)
|
| | | .attr('class')).replace(/\s/g, '') !==
|
| | | 'leaflet-layer'
|
| | | ) {
|
| | | layer.remove()
|
| | |
| | | params: {
|
| | | monitorPointIds: this.monitorPointIds.toString(),
|
| | | chooseTime: this.chooseTime,
|
| | | time: this.nyr
|
| | | }
|
| | | time: this.nyr,
|
| | | },
|
| | | })
|
| | | .then((res) => {
|
| | | this.windJsonData = res.data[0]
|
| | |
| | | // velocityType: 'Global Wind',
|
| | | velocityType: 'GBR Wind',
|
| | | displayPosition: 'bottomleft',
|
| | | displayEmptyString: 'No wind data'
|
| | | displayEmptyString: 'No wind data',
|
| | | },
|
| | | data: data, // 数据 格式可参照
|
| | | // data: data2,
|
| | |
| | | '#345B1B',
|
| | | '#186303',
|
| | | '#175103',
|
| | | '#053F03'
|
| | | ]
|
| | | '#053F03',
|
| | | ],
|
| | | // colorScale: ['#053F03', '#053F03', '#053F03', '#053F03', '#053F03', '#053F03', '#053F03', '#053F03']
|
| | | })
|
| | | velocityLayer.addTo(this.map) // 添加到图上
|
| | |
| | | startTime: this.dateValue[0],
|
| | | endTime: this.dateValue[1],
|
| | | index: this.factorValue,
|
| | | alarmType: this.alartValue
|
| | | }
|
| | | }).then((res) => {
|
| | | alarmType: this.alartValue,
|
| | | },
|
| | | })
|
| | | .then((res) => {
|
| | | // console.log('分页数据')
|
| | | // console.log(res)
|
| | | var tempData = res.data
|
| | |
| | | method: 'get',
|
| | | params: {
|
| | | regionCode: 130900,
|
| | | sensorCode: 'a34002'
|
| | | }
|
| | | sensorCode: 'a34002',
|
| | | },
|
| | | })
|
| | | .then((res) => {
|
| | | // console.log('国控站信息')
|
| | | // console.log(res)
|
| | | var gkData = res.data
|
| | | var group = L.layerGroup().addTo(this.map)
|
| | | var group = L.layerGroup()
|
| | | .addTo(this.map)
|
| | | for (let i = 0; i < gkData.length; i++) {
|
| | | var glat = gkData[i].latitude
|
| | | var glng = gkData[i].longitude
|
| | |
| | | // iconUrl:require('@/assets/images/tl_PM10.png'),
|
| | | iconSize: [55, 55],
|
| | | iconAnchor: [13, 21],
|
| | | className: 'my-device'
|
| | | className: 'my-device',
|
| | | })
|
| | | // 添加标记到地图
|
| | | L.marker([glat, glng], {
|
| | | icon: gIcon
|
| | | }).addTo(group)
|
| | | icon: gIcon,
|
| | | })
|
| | | .addTo(group)
|
| | | var myIcon = L.divIcon({
|
| | | html: gkData[i].data,
|
| | | className: 'my-div-icon-g',
|
| | | iconSize: 30
|
| | | iconSize: 30,
|
| | | })
|
| | | L.marker([glat, glng], {
|
| | | icon: myIcon
|
| | | }).addTo(group)
|
| | | icon: myIcon,
|
| | | })
|
| | | .addTo(group)
|
| | | }
|
| | | })
|
| | | .catch((err) => {
|
| | |
| | | },
|
| | | closeAlarmTableVisible() {
|
| | | this.$store.state.alarmTableVisible = false
|
| | | }
|
| | | }
|
| | | },
|
| | | },
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style lang="scss">
|
| | | @import './dataModel.css';
|
| | | html,
|
| | | body,
|
| | | #mapContent {
|
| | |
| | | /* padding-left: 10px; */
|
| | | /* padding-top: 30px; */
|
| | | }
|
| | | .leaflet-popup-content {
|
| | | width: 235px !important;
|
| | | font-size: 12px;
|
| | | -webkit-transform-origin-x: 0;
|
| | | z-index: 1000;
|
| | | /* -webkit-transform: scale(0.90); */
|
| | | /* font-family: ui-serif; */
|
| | | }
|
| | |
|
| | | .buttom-left {
|
| | | /* background-image: url("@/assets/images/tl_PM10.png"); */
|
| | | position: absolute;
|