派生自 wuyushui/SewerAndRainNetwork

wangqi
2021-04-12 0eb2de2d7631496fb6d9db215852c43b49793f6a
Merge branch 'develop' of http://xearth.cn:6600/r/wuyushui/SewerAndRainNetwork into develop

 Conflicts:
 src/components/BaseNav/PublicBounced/GasComponents/EChartsDate.vue
 src/components/BaseNav/PublicBounced/GasComponents/EChartsHour.vue
2个文件已添加
11个文件已修改
890 ■■■■■ 已修改文件
src/assets/css/map/map-panel-style.less 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/BaseNav/PublicBounced/GasComponents/EChartsDate.vue 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/BaseNav/PublicBounced/GasComponents/EChartsHour.vue 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/BaseNav/PublicBounced/GasComponents/Echarts.vue 359 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/BaseNav/PublicBounced/GasComponents/PublicChart.vue 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/BaseNav/PublicBounced/GasComponents/PublicTabs.vue 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/BaseNav/PublicBounced/PublicBounced.vue 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/BaseNav/SolidWaste/directive/dir.js 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/LayerController/LayerController.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/panel/ToolBoxPanel.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/table/summarySheets.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/eventBus.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/dragBoxes.js 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/map/map-panel-style.less
@@ -239,6 +239,7 @@
.el-button{
}
.hover-bottom:hover,
.active-button{
  border: 0.00521rem solid #fff700 !important;
  box-shadow: 0 0 0.03rem #fff700 !important;
@@ -440,3 +441,61 @@
}
.el-picker-panel{
  background: @background-color;
  border-color:@color;
  color:@color;
  .el-picker-panel__body-wrapper{
    background: @background-color;
  }
  .el-input__inner{
    background:@background-color;
    border-color:@color;
  }
  .el-date-table td.today span{
    color:@color-highlight;
  }
  .el-picker-panel__footer{
    background: @background-color;
    border-top-color:@color;
  }
  .el-date-table th{
    border-bottom-color:@color;
  }
  .el-button{
    background: @background-color;
    color:@color;
    border-color:@color;
  }
  .el-button--text{
    padding: 7px 15px;
  }
  .el-button:hover{
    background: @background-color;
    color:@color-highlight;
    border-color:@color-highlight;
  }
  .el-input__inner{
    color:#fff;
    text-align: center;
  }
  .el-date-picker__time-header{
    border-bottom-color:@background-color-split;
  }
  .el-date-picker__header-label{color:#fff}
}
.el-select-dropdown{
  background: @background-color;
  border-color:@color;
  color:@color;
  .el-select-dropdown__item{
    color:#fff;
  }
  .el-select-dropdown__item.hover{
    background: @background-color;
    box-shadow:  0 0 5px @color-highlight inset;
  }
  .el-select-dropdown__item.selected{
    color:@color-highlight;
  }
  }
src/components/BaseNav/PublicBounced/GasComponents/EChartsDate.vue
@@ -15,31 +15,25 @@
          <div class="pickerData">
            <span> 开始时间:</span>
            <span class="pickerTable">
                          <el-date-picker  type="datetime"   v-model="value1">
                      </el-date-picker>
              <el-date-picker  type="datetime"   v-model="value1"></el-date-picker>
                      </span>
          </div>
          <div class="pickerData">
            <span >结束时间:</span>
            <span class="pickerTable">
                        <el-date-picker
                            type="datetime"
                            v-model="value2"
                        >
                      </el-date-picker>
              <el-date-picker type="datetime"  v-model="value2"></el-date-picker>
                      </span>
          </div>
        </div>
        <div>
          采样点数:
          <input list="source" id="ipt" class="echatsInput" @change="datalistBtn">
          <datalist id="source" @click="datalistBtn">
            <option value="0" />
            <option value="25" />
            <option value="50" />
            <option value="75" />
            <option value="100" />
          </datalist>
          <el-select v-model="formInline.region" placeholder="50">
            <el-option label="0" value="0"></el-option>
            <el-option label="25" value="25"></el-option>
            <el-option label="50" value="50"></el-option>
            <el-option label="75" value="75"></el-option>
            <el-option label="100" value="100"></el-option>
          </el-select>
        </div>
        <div class="detailbtn"  @click="onSubmit">查询</div>
        <div class="detailbtn" @click="dialogVisible = true" >明细表</div>
@@ -88,7 +82,6 @@
  },
  methods: {
    onSubmit () {
      console.log(this.value1)
      console.log('submit!')
    },
    drawChart: function () {
@@ -309,11 +302,12 @@
//  }
//}
  .grid-content {
    font-size: 8px !important;
    font-size: 8px;
    background-color: #2e4967;
    text-align: center;
    margin: 0 2px 4px 2px;
    border-radius: 2px;
    margin-right: 10px;
    padding:0 10px
    >i{
      font-style: normal;
      color: #eef309;
@@ -322,8 +316,8 @@
.animation {
  //width: 600px;
  //height: 0.06rem;
  .Infomation {
    margin-left: 10px;
  .infomation {
    padding: 5px 10px;
  }
}
    .form-echrts {
@@ -344,17 +338,7 @@
                    display: flex;
                      >span{line-height: 22px}
                    .pickerTable{
                        margin-left: 6px;
                      /deep/.el-input{
                        font-size: 0px;
                        .el-input__prefix{
                          width: 100%;
                        }
                      }
                        /deep/.el-input__icon {
                          width: 100%;
                            font-size: 0;
                        }
                      margin-left: 3px;
                    }
                }
            }
@@ -363,15 +347,24 @@
            }
            /deep/.el-input__inner{
                position: relative;
                width: 0.9rem!important;
                height: 0.125rem!important;
                width:140px;
                background-color: #2e4967;
                color: #ffffff;
                color: #fff;
                font-size: 12px;
                height: 24px;
                padding: 0;
                border-color:#00fff6;
              text-align: center;
                //padding-left:20px ;
                //padding: 0!important;
            }
          /deep/.el-input__icon{
            display: block;
            width: 140px;
            height: 22px;
            line-height: 22px;
            cursor: pointer;
            font-size: 0;
            }
            .echatsInput{
              color: #00ffff;
@@ -380,6 +373,7 @@
              border-radius: 6px;
              width: 80px;
              height: 22px;
              text-align: center;
            }
          input::-webkit-calendar-picker-indicator {
            opacity: 100;
@@ -388,9 +382,14 @@
                background-color:#2e4967;
                text-align: center;
                padding: 0 7px;
                line-height: 20px;
                line-height: 24px;
                border-radius: 4px;
                margin-right: 6px;
            }
          .detailbtn:hover{
            box-shadow: 0 0 0.03rem #fff700 !important;
            color:#fff700 !important;
            cursor: pointer;
            }
        }
        .el-dialog-div {
@@ -402,9 +401,6 @@
        #echarts {
            margin: 0;
            padding: 0;
            //height: 3rem;
            //border: 1px solid #396d83;
            //margin: 10px 10px 10px 10px;
        }
    }
</style>
src/components/BaseNav/PublicBounced/GasComponents/EChartsHour.vue
@@ -32,14 +32,13 @@
                </div>
                <div>
                    采样点数:
                    <input list="source" id="ipt" class="echatsInput" v-model="value">
                    <datalist id="source" >
                        <option value="0" />
                        <option value="25" />
                        <option value="50" />
                        <option value="75" />
                        <option value="100" />
                    </datalist>
                    <el-select v-model="formInline.region" placeholder="50">
                        <el-option label="0" value="0"></el-option>
                        <el-option label="25" value="25"></el-option>
                        <el-option label="50" value="50"></el-option>
                        <el-option label="75" value="75"></el-option>
                        <el-option label="100" value="100"></el-option>
                    </el-select>
                </div>
                <div class="detailbtn"  @click="onSubmit">查询</div>
                <div class="detailbtn" @click="dialogVisible = true" >明细表</div>
@@ -64,7 +63,6 @@
<script>
import PublicDetailedList from '@components/BaseNav/PublicBounced/GasComponents/PublicDetailedList'
// import
export default {
  name: 'ECharts',
@@ -73,12 +71,12 @@
  },
  data () {
    return {
      value: '50',
      value1: '',
      value2: '',
      watchData: [],
      dialogVisible: false,
      myChar: null,
      value: '',
      formInline: {
        user: '',
        region: ''
@@ -327,18 +325,15 @@
<style scoped lang="less">
.grid-content{
  font-size: 8px!important;
    font-size: 8px;
  background-color:#2e4967;
  text-align: center;
  margin: 0 2px 4px 2px;
  border-radius: 2px;
  >i{
    font-style: normal;
    color: #eef309;
    margin-right: 10px;
    padding:0 10px
  }
}
.Infomation {
  margin-left: 10px;
.infomation {
  padding: 5px 10px;
}
.form-echrts {
@@ -359,17 +354,7 @@
        display: flex;
          >span{line-height: 22px}
        .pickerTable{
          margin-left: 6px;
            /deep/.el-input{
              font-size: 0px;
              .el-input__prefix{
                width: 100%;
              }
            }
          /deep/.el-input__icon {
             //font-size: 0;
              width: 100%;
          }
                    margin-left: 3px;
        }
      }
    }
@@ -378,15 +363,24 @@
    }
    /deep/.el-input__inner{
      position: relative;
      width: 0.9rem!important;
      height: 0.125rem!important;
            width:140px;
      background-color: #2e4967;
      color: #ffffff;
      font-size: 12px;
        height: 24px;
      padding: 0;
            border-color:#00fff6;
            text-align: center;
      //padding-left:20px ;
      //padding: 0!important;
        }
        /deep/.el-input__icon{
            display: block;
            width: 140px;
            height: 22px;
            line-height: 22px;
            cursor: pointer;
            font-size: 0;
    }
    .echatsInput{
      color: #00ffff;
@@ -395,6 +389,7 @@
      border-radius: 6px;
      width: 80px;
        height: 22px;
            text-align: center;
    }
    input::-webkit-calendar-picker-indicator {
      opacity: 100;
@@ -403,8 +398,14 @@
      background-color:#2e4967;
      text-align: center;
      padding: 0 7px;
      line-height: 20px;
            line-height: 24px;
      border-radius: 4px;
            margin-right: 6px;
        }
        .detailbtn:hover{
            box-shadow: 0 0 0.03rem #fff700 !important;
            color:#fff700 !important;
            cursor: pointer;
    }
  }
  .el-dialog-div {
@@ -416,9 +417,6 @@
  #echarts {
    margin: 0;
    padding: 0;
    //height: 3rem;
    //border: 1px solid #396d83;
    //margin: 10px 10px 10px 10px;
  }
}
</style>
src/components/BaseNav/PublicBounced/GasComponents/Echarts.vue
@@ -1,5 +1,5 @@
<template>
  <div style="width:100%;height:2rem;margin-top: 0.3rem" ref="echarts"></div>
  <div style="width:5rem;height:2rem;margin-top: 0.3rem" ref="echarts"></div>
</template>
<script>
@@ -12,202 +12,247 @@
  name: 'ECharts',
  data () {
    return {
      myChart: [],
      result: [],
      days: dayjs(new Date()).format('YYYYMMDDHHmmss'),
      value: '',
      myChart: [],
      // x轴数据
      xAxis: [],
      seriesData: [],
      aseries: ''
      seriesName: []
    }
  },
  mounted () {
    this.$nextTick(() => {
      this.initEchartsData()
      this.upDateEchartsData()
    })
  },
  methods: {
    drawChart () {
      this.myChart = this.$echarts.init(this.$refs.echarts)
      const option = {
        tooltip: {
          trigger: 'axis'
    // 初始化数据
    async initEchartsData () {
      const endTime = dayjs().add(1, 's')
      const data = {
        $tagCodeList: 'TJIP45.yyqAI90305,TJIP45.yyqAI90303,TJIP45.yyqFI_90310N,TJIP45.yyqAI90304,TJIP45.yyqAIR001',
        $startTime: this.dayjs,
        $endTime: endTime,
        $step: 15
      }
      const result = (await mapApi.DataItems(data)).data
      for (var i = 0; i < result.length; i++) {
        // console.log(result[i])
        this.xAxis.push(result[i].ReadTime)
        this.seriesData.push(result[i].TagValue)
        this.seriesName = result[i].UnionTagCode
      }
      this.upDateEchartsinit()
        },
        legend: {
          data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎']
    // 实时数据刷新
    upDateEchartsData () {
      // const interValHander =
      setInterval(async () => {
        const endTime = dayjs().add(1, 's')
        const data = {
          $tagCodeList: 'TJIP45.yyqAI90305,TJIP45.yyqAI90303,TJIP45.yyqFI_90310N,TJIP45.yyqAI90304,TJIP45.yyqAIR001',
          $startTime: this.dayjs,
          $endTime: endTime,
          $step: 15
        }
        const result = (await mapApi.DataItems(data)).data
        for (var i = 0; i < result.length; i++) {
          // console.log(result[i])
          // this.xAxis.shift()
          this.xAxis.push(result[i].ReadTime)
          this.seriesData.push(result[i].TagValue)
          this.seriesName = result[i].UnionTagCode
        }
        this.upDateEchartsinit()
      }, 1500)
    },
    // 初始化echarts
    upDateEchartsinit () {
      this.myChart = this.$echarts.init(this.$refs.echarts)
      // 图表的配置项数据
      const xAxisData = this.xAxis
      const legendData = [this.seriesName, 'TJIP45.lscl2tb552AISA11201B', 'TJIP45.lscl2tb552AISA11202A', 'TJIP45.lscl2tbAIA-10505-1', 'TJIP45.lscl2tbAIA-10505-2']
      const seriesData = [
        {
          name: this.seriesName,
          type: 'line',
          stack: '总量',
          data: this.seriesData
        },
        {
          name: 'TJIP45.lscl2tb552AISA11201B',
          type: 'line',
          stack: '总量',
          data: [2.20, 1.82, 1.91, 2.34, 2.90, 3.30, 3.10]
        }
      ]
      const option = {
        title: {
          // text: '实时数据',
          target: 'blank',
          left: '5%',
          textStyle: {
            color: '#fff',
            fontSize: 15,
            bottom: 20
          }
        },
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'cross',
            label: {
              color: '#1a4245'
            }
          }
          // formatter: function (params) {
          //   // console.log(params)
          //   var UnionTagCode = params[0].seriesName + '<br />'
          //   for (var i = 0; i < params.length; i++) {
          //     var seriesName = params[i].seriesName
          //     // 值
          //     var value = params[i].value[1]
          //
          //     // var valueFliter = formatter(value)
          //     var valueFliter = value
          //
          //     var maker = params[i].marker
          //     var colo = ''
          //     switch (seriesName) {
          //       case 'TJIP45.lscl2tb552AI10710':
          //         colo = '#fff21c'
          //         break
          //       default:
          //         colo = 'red'
          //         break
          //     }
          //     maker = '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:' + colo + ';"></span>'
          //     UnionTagCode += maker + seriesName + ':' + valueFliter + '<br />'
          //   }
          //   return UnionTagCode
          // }
        },
        grid: {
          containLabel: false
          top: '20%'
        },
        toolbox: {
          show: false,
          feature: {
            saveAsImage: {
              show: false
            saveAsImage: {}
            }
        },
        dataZoom: [{
          type: 'inside',
          start: 0,
          end: 100
        }, {
          start: 0,
          end: 100,
          show: false,
          handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
          handleSize: '80%',
          handleStyle: {
            color: '#fff',
            shadowBlur: 3,
            shadowColor: 'rgba(0, 0, 0, 0.6)',
            shadowOffsetX: 2,
            shadowOffsetY: 2
          }
        }],
        legend: {
          data: legendData,
          textStyle: {
            color: '#ffffff',
            fontSize: 12
          }
        },
        xAxis: {
          type: 'category',
          // type: 'time',
          boundaryGap: false,
          axisLabel: {
            margin: 6,
            interval: 0,
            textStyle: {
              color: '#fff'
            }
          },
          splitLine: {
            show: true,
            lineStyle: {
              type: 'dashed'
            }
          },
          axisTick: {
            show: false
          },
          // data: this.seriesData,
          data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
          axisLine: {
            lineStyle: {
              color: '#FFFFFF',
              // width: 1
              show: false
            }
              width: 1
          }
        },
        yAxis: {
          data: xAxisData
        },
        yAxis: [{
          type: 'value',
          boundaryGap: [0, '100%'],
          name: 'yname',
          // max: function (value) {
          //   var max_val_list = []; //所有显示折线的标准值
          //   if (bzzList && bzzList.length > 0) {
          //     $.each(bzzList, function (index, item) {
          //       max_val_list.push(item.bzhui);
          //     });
          //   }
          //   max_val_list = max_val_list.sort(function (a, b) {
          //     return a - b
          //   }); //排序
          //   var ma = value.max > max_val_list[max_val_list.length - 1] ? value.max + 5 : max_val_list[max_val_list.length - 1];
          //   return parseInt(ma);
          // },
          axisLabel: {
            formatter: '{value}',
            textStyle: {
              color: '#fff'
            }
          },
          splitLine: {
            show: false
          }, // y轴 网格线不显示,
          axisLine: {
            lineStyle: {
              color: '#FFFFFF',
              width: 1
            }
          }
        },
        series: [
          {
            name: '模拟数据',
            type: 'line',
            // showSymbol: false,
            // hoverAnimation: false,
            data: this.seriesData
          },
          {
            name: '联盟广告',
            type: 'line',
            stack: '总量',
            data: [220, 182, 191, 234, 290, 330, 310]
          },
          {
            name: '视频广告',
            type: 'line',
            stack: '总量',
            data: [150, 232, 201, 154, 190, 330, 410]
          },
          {
            name: '直接访问',
            type: 'line',
            stack: '总量',
            data: [320, 332, 301, 334, 390, 330, 320]
          },
          {
            name: '搜索引擎',
            type: 'line',
            stack: '总量',
            data: [820, 932, 901, 934, 1290, 1330, 1320]
        }, {
          type: 'value',
          name: 'dataUnit',
          axisLabel: {
            formatter: '{value}',
            textStyle: {
              color: '#fff'
          }
        ]
          },
          splitLine: {
            show: false
          },
          axisLine: {
            lineStyle: {
              color: '#FFFFFF',
              width: 1
            }
          }
        }],
        series: seriesData
      }
      this.myChart.setOption(option)
    },
    async echartsData () {
      const addDays = dayjs().add(300, 'day')
      const data = {
        $tagCodeList: 'TJIP45.yyqAI90305,TJIP45.yyqAI90303,TJIP45.yyqFI_90310N,TJIP45.yyqAI90304,TJIP45.yyqAIR001',
        $startTime: this.dayjs,
        $endTime: addDays,
        $step: 15
      }
      const result = await mapApi.DataItems(data)
      this.result = result.data
      for (let i = 0; i < result.length; i++) {
        //   // console.log(result[i])
        // const seriesData = []
        const aseries = []
        // let nameData = ''
        this.seriesData.push(result[i].ReadTime)
        aseries.push(result[i].TagValue)
        // nameData = result[i].UnionTagCode
        this.aseries = result[i].UnionTagCode
      }
      this.myChart.setOption({
        series: [{
          data: this.seriesData
        }]
      })
    },
    // 数据的请求
    requestEcharts () {
      setInterval(async () => {
        const addDays = dayjs().add(300, 'day')
        const data = {
          $tagCodeList: 'TJIP45.yyqAI90305,TJIP45.yyqAI90303,TJIP45.yyqFI_90310N,TJIP45.yyqAI90304,TJIP45.yyqAIR001',
          $startTime: this.dayjs,
          $endTime: addDays,
          $step: 15
        }
        const result = await mapApi.DataItems(data)
        this.result = result.data
        for (let i = 0; i < result.length; i++) {
          //   // console.log(result[i])
          // const seriesData = []
          const aseries = []
          // let nameData = ''
          this.seriesData.push(result[i].ReadTime)
          aseries.push(result[i].TagValue)
          // nameData = result[i].UnionTagCode
          this.aseries = result[i].UnionTagCode
        }
        this.myChart.setOption({
          series: [{
            data: this.seriesData
          }]
        })
      }, 3000)
    }
  },
  mounted () {
    this.$nextTick(() => {
      this.requestEcharts()
      this.drawChart()
      this.echartsData()
    })
  }
}
</script>
<style scoped lang="less">
.Infomation {
  margin-left: 10px;
  height: 0.2rem;
}
.el-tag {
  height: 25px;
  width: 140px;
  line-height: 25px;
  margin-right: 10px;
  font-size: 10px;
  background-color: rgba(0, 255, 246, 0.14);
  color: #00d0f9;
  border: none;
  padding: 0 15px;
}
.form-echrts {
  width: 100%;
  height: 1rem;
  border-top: 1px solid #396d83;
  //margin: 10px 10px 10px 10px;
  .el-dialog-div {
    //height: 50vh!important;
    overflow: auto;
    //overflow: hidden;
  }
  #echarts {
    margin: 0;
    padding: 0;
    //height: 3rem;
    //border: 1px solid #396d83;
    //margin: 10px 10px 10px 10px;
  }
}
</style>
src/components/BaseNav/PublicBounced/GasComponents/PublicChart.vue
@@ -5,20 +5,19 @@
        <div class="border_corner border_corner_left_bottom"></div>
        <div class="border_corner border_corner_right_bottom"></div>
        <ul class="tab">
            <li @click='tabTaggle("ECharts")'>实时数据</li>
            <li @click='tabTaggle("Echarts")'>实时数据</li>
            <li @click='tabTaggle("EChartsHour")'>小时数据</li>
            <li @click='tabTaggle("EChartsDate")'>日数据</li>
            <li @click='tabTaggle("ECharts")'>人工数据</li>
            <div id="title" >
                <span><strong> &nbsp; </strong></span>
                <span >正常</span>
                <span ></span>
                <span >预警</span>
                <span ></span>
                <span >超标</span>
                <span ></span>
            </div>
        </ul>
        <div class="legend" >
            <span >正常</span>
            <i style=" background: #4ec99c;"></i>
            <span >预警</span>
            <i style=" background: red;"></i>
            <span >超标</span>
            <i style=" background: orange;"></i>
        </div>
        <component :is="currentTab" v-bind="$attrs"></component>
    </div>
</template>
@@ -48,17 +47,11 @@
</script>
<style scoped>
* {
  margin: 0;
  padding: 0;
  list-style: none;
}
<style scoped lang="less">
.win {
  position: relative;
  /*margin-bottom: 13px;*/
  background-color: rgba(33, 41, 69, 0.9);
  background:@background-color;
  border: 0.8px solid #396d83;
  /*height: 1.5rem;*/
}
@@ -103,66 +96,39 @@
.tab {
  display: flex;
  border-bottom: 1px solid #396d83;
  margin-bottom: 10px;
    padding:5px 10px
}
li {
.tab li {
  background-color: #243a55;
  margin: 10px 10px 2px 10px;
  /*padding: 5px 10px;*/
  width: 90px;
  height: 25px;
  line-height: 25px;
  text-align: center;
  border-radius: 5px;
    margin-right: 10px;
    padding:0 15px
}
ul li:hover {
.tab li:hover {
  background-color: #0e639e;
  color: #682000;
  cursor: pointer;
}
#title{
    height: 30px;
    /* margin-top: 30px; */
    color: #ffffff;
    margin-top: 5px;
.legend{
    position: absolute;
    top:10px;
    right: 0;
    display: flex;
    justify-items: center;
}
.legend i {
    display: block;
    width: 35px;
    height: 15px;
    margin:0 10px 0 3px;
    border-radius: 3px;
}
.legend span{
    line-height: 15px;
}
#title span:nth-child(1){
    /*margin-left: 478px*/
}
#title span:nth-child(2){
    /*margin-left: 177px*/
}
#title span:nth-child(3){
    display: inline-block;
    background-color: #4ec99c;
    height: 15px;
    width: 35px;
    margin-left: 10px;
    border-radius: 5px;
}
#title span:nth-child(6){
    /*margin-left: 21px*/
}
#title span:nth-child(7){
    display: inline-block;
    background-color: red;
    height: 15px;
    width: 35px;
    margin-left: 7px;
    border-radius: 5px;
}
#title span:nth-child(4){
    margin-left: 17px;
}
#title span:nth-child(5){
    display: inline-block;
    background-color: orange;
    height: 15px;
    width: 35px;
    margin-left: 9px;
    border-radius: 5px;
}
</style>
src/components/BaseNav/PublicBounced/GasComponents/PublicTabs.vue
@@ -9,16 +9,14 @@
    <div class="main">
      <div class="main-matter">
        <div v-if="value === 'feiqi'">
          <el-row type="flex" class="row-bg row-item-one" justify="space-around">
            <el-col :span="8">监测点名称:{{ setWasteGasdata.Name }}</el-col>
            <el-col :span="8">生产单位:{{ setWasteGasdata.porltName }}</el-col>
            <el-col :span="8">排放类型名称:{{ setWasteGasdata.MonTypeName }}</el-col>
          </el-row>
          <el-row type="flex" class="row-bg row-item-two" justify="space-around">
            <el-col :span="8">排放去向:{{ setWasteGasdata.EmissDirecti }}</el-col>
            <el-col :span="18">控制级别名称:{{ setWasteGasdata.ContrLevelShowName }}</el-col>
            <el-col :span="18">内/外排口:{{ setWasteGasdata.OrOutPortName }}</el-col>
          </el-row>
          <ul>
            <li>监测点名称:{{ setWasteGasdata.Name }}</li>
            <li>生产单位:{{ setWasteGasdata.porltName }}</li>
            <li>排放类型名称:{{ setWasteGasdata.MonTypeName }}</li>
            <li>排放去向:{{ setWasteGasdata.EmissDirecti }}</li>
            <li>控制级别名称:{{ setWasteGasdata.ContrLevelShowName }}</li>
            <li>内/外排口:{{ setWasteGasdata.OrOutPortName }}</li>
          </ul>
        </div>
        <div v-else-if="value === 'gufei'">
          <ul>
@@ -31,16 +29,14 @@
          </ul>
        </div>
        <div v-else-if="value === 'feishui'">
          <el-row type="flex" class="row-bg row-item-one" justify="space-around">
            <el-col :span="8">监测点名称:{{ setWasteWaterdata.Name }}</el-col>
            <el-col :span="8">生产单位:{{ setWasteWaterdata.porltName }}</el-col>
            <el-col :span="8">排放类型名称:{{ setWasteWaterdata.MonTypeName }}</el-col>
          </el-row>
          <el-row type="flex" class="row-bg row-item-two" justify="space-around">
            <el-col :span="8">排放去向:{{ setWasteWaterdata.EmissDirecti }}</el-col>
            <el-col :span="8">控制级别名称:{{ setWasteWaterdata.ContrLevelShowName }}</el-col>
            <el-col :span="8">内/外排口:{{ setWasteWaterdata.OrOutPortName }}</el-col>
          </el-row>
          <ul>
            <li>监测点名称:{{ setWasteWaterdata.Name }}</li>
            <li>生产单位:{{ setWasteWaterdata.porltName }}</li>
            <li>排放类型名称:{{ setWasteWaterdata.MonTypeName }}</li>
            <li>排放去向:{{ setWasteWaterdata.EmissDirecti }}</li>
            <li>控制级别名称:{{ setWasteWaterdata.ContrLevelShowName }}</li>
            <li>内/外排口:{{ setWasteWaterdata.OrOutPortName }}</li>
          </ul>
        </div>
      </div>
    </div>
@@ -75,7 +71,7 @@
.win {
  position: relative;
  margin-bottom: 10px;
  background-color: rgba(33, 41, 69, 0.9);
  background-color: @background-color;
  //width: 6rem;
  //height: 0.5rem;
}
@@ -87,40 +83,8 @@
  .main-matter {
    font-size: 13px;
    font-weight: normal;
    padding: 0 6px;
    padding: 6px;
    border: 1px solid #396d83;
    .row-item-one {
      //flex-wrap: nowrap;
      overflow: hidden;
      margin-top: 6px;
      margin-bottom: 7px;
      //margin-left: 10px;
    }
    .row-item-two{
      margin-bottom: 6px;
    }
    .el-row {
      width: 100%;
      color: #00d0f9;
      display: flex;
      font-size: 12px !important;
      text-align: center;
      .el-col {
        text-align: center;
        flex: 1;
        width: 100%;
        background-color: #243a55;
        margin-left: 6px;
        border-radius: 4px;
        &:nth-child(1) {
          margin-left: 0;
        }
      }
    }
    ul {
      //width: 100%;
      //height: 100%;
@@ -128,16 +92,14 @@
      align-items: center;
      justify-content: space-around;
      flex-wrap: wrap;
      line-height: 30px;
      margin-bottom: -6px;
      li {
        margin-bottom: 6px;
        text-align: center;
        width: 32%;
        height: 30px;
        margin: 5px auto;
        min-width: 32%;
        background-color: #243a55;
        color: #00d0f9;
        border-radius: 4px;
        border-radius: 3px;
        font-size: 0.08rem;
      }
src/components/BaseNav/PublicBounced/PublicBounced.vue
@@ -1,7 +1,6 @@
<template>
  <div class="public-bounced" v-drag v-if="flag">
    <!--    <Echarts></Echarts>-->
    <div class="public-bounced-title">
  <div class="public-bounced map-background" v-drag v-if="flag">
    <div class="public-bounced-title panel-title" ref="publicBounced">
      <span>{{ displayContentTitle }}</span>
      <i class="el-icon-circle-close" @click="closePopup"></i>
    </div>
@@ -29,9 +28,7 @@
<script>
// import Echarts from '@components/BaseNav/PublicBounced/GasComponents/Echarts'
import '@/components/BaseNav/SolidWaste/directive/dir'
import '@/utils/dragBoxes'
import PublicTabs from '@components/BaseNav/PublicBounced/GasComponents/PublicTabs'
import PublicTable from '@components/BaseNav/PublicBounced/GasComponents/PublicTable'
import PublicVideo from '@components/BaseNav/PublicBounced/GasComponents/PublicVideo'
@@ -60,6 +57,11 @@
      getQueryOnlineMonData: []
      // getGasQueryOnlineMonData: []
    }
  },
  mounted () {
    this.$nextTick(() => {
      console.log(this.$refs.publicBounced)
    })
  },
  methods: {
    closePopup () {
@@ -101,16 +103,14 @@
<style lang="less" scoped>
.public-bounced {
  z-index: 999;
  z-index: 2000;
  position: absolute;
  top: 15%;
  left: 20%;
  background-color: #002432;
  border: 1px #9fc5c8 solid;
  .public-bounced-title {
    cursor: move;
    height: 0.1rem;
    border: 1px #a4c0d8 solid;
    padding: 10px 0;
    display: flex;
    align-items: center;
@@ -123,11 +123,15 @@
    }
    i {
      color: white;
      color: #C0C4CC;
      margin: 0 15px;
      font-size: 22px;
      cursor: pointer;
    }
    i:hover {
      color: #00fff6;
    }
  }
  .public-bounced-content {
src/components/BaseNav/SolidWaste/directive/dir.js
@@ -1,45 +1,31 @@
import Vue from 'vue'
// 使用Vue.directive()定义一个全局指令
// 1.参数一:指令的名称,定义时指令前面不需要写v-
// 2.参数二:是一个对象,该对象中有相关的操作函数
// 3.在调用的时候必须写v-
const drag = Vue.directive('drag', {
  // 1.指令绑定到元素上回立刻执行bind函数,只执行一次
  // 2.每个函数中第一个参数永远是el,表示绑定指令的元素,el参数是原生js对象
  // 3.通过el.focus()是无法获取焦点的,因为只有插入DOM后才生效
  bind: function (el) {
    el.style.cursor = 'move' // 鼠标样式变move样式
  },
  // inserted表示一个元素,插入到DOM中会执行inserted函数,只触发一次
  inserted: function (el) {
    el.onmousedown = function (e) {
  bind (el, binding, vnode, oldVnode) {
    const dialogHeaderEl = el.querySelector('.public-bounced-title')
    dialogHeaderEl.onmousedown = function (e) {
      var distX = e.pageX - el.offsetLeft
      var distY = e.pageY - el.offsetTop
      // console.log('元素本身的高:' + el.clientHeight + ',元素本身的宽:' + el.clientWidth)
      if (e.preventDefault) {
        e.preventDefault()
      } else {
        e.returnValue = false
      }
      // 解决快速拖动滞后问题
      document.onmousemove = function (e) {
        // 用鼠标的位置减去鼠标相对元素的位置,得到元素的位置
        let left = e.clientX - distX
        let top = e.clientY - distY
        if (left <= 0) {
          left = 5 // 设置成5是为了不离边缘太近
        } else if (left > document.documentElement.clientWidth - el.clientWidth) {
          // document.documentElement.clientWidth 屏幕的可视宽度
          left = document.documentElement.clientWidth - el.clientWidth - 5
          left = 5
        } else if (left > document.documentElement.clientWidth - dialogHeaderEl.clientWidth) {
          left = document.documentElement.clientWidth - dialogHeaderEl.clientWidth - 5
        }
        if (top <= 0) {
          top = 5
        } else if (top > document.documentElement.clientHeight - el.clientHeight) {
          top = document.documentElement.clientHeight - el.clientHeight - 5
        } else if (top > document.documentElement.clientHeight - dialogHeaderEl.clientHeight) {
          top = document.documentElement.clientHeight - dialogHeaderEl.clientHeight - 5
        }
        el.style.left = left + 'px'
        el.style.top = top + 'px'
      }
@@ -47,9 +33,6 @@
        document.onmousemove = document.onmouseup = null
      }
    }
  },
  // 当VNode更新的时候会执行updated,可以触发多次
  updated: function (el) {
  }
})
export default drag
src/components/LayerController/LayerController.vue
@@ -21,7 +21,7 @@
import iconSetting from '@/assets/images/map-pages/icon/setting.png'
import LcServiceLayer from './modules/LcServiceLayer'
import bus from '@/eventBus'
export default {
  name: 'LayerController',
  components: { LcServiceLayer },
@@ -55,9 +55,22 @@
      }
    }
  },
  mounted () {
    const that = this
    bus.$on('changeState', function (state) {
      if (state.num !== 3 && state.type) {
        that.layerControllerVisible = false
      }
    })
  },
  methods: {
    showPanel () {
      this.layerControllerVisible = !this.layerControllerVisible
      const state = {
        type: this.layerControllerVisible,
        num: 3
      }
      bus.$emit('changeState', state)
    },
    switchPanel () {
      this.panelSwitch.main = !this.panelSwitch.main
src/components/panel/ToolBoxPanel.vue
@@ -96,6 +96,9 @@
// 测量的方法
import Measure from '@/components/plugin/MeaSure'
//
import bus from '@/eventBus'
export default {
  name: 'ToolBoxPanel',
  components: {
@@ -263,7 +266,19 @@
      ]
    }
  },
  mounted () {
    /* import bus from '@/eventBus' */
    const that = this
    bus.$on('changeState', function (state) {
      if (state.num !== 1 && state.type) {
        that.selectGroup = false
        that.isShow = []
        that.active = -1
      }
    })
  },
  methods: {
    init (map) {
      this.map = map
      this.toolBoxPanelVisible = true
@@ -391,6 +406,11 @@
        this.isShow = !this.isShow
        this.active = -1
      }
      const state = {
        type: this.selectGroup,
        num: 1
      }
      bus.$emit('changeState', state)
    }
  }
}
src/components/table/summarySheets.vue
@@ -47,7 +47,7 @@
import IndexStatistics from './components/IndexStatistics'
import '@/components/BaseNav/SolidWaste/directive/dir'
import bus from '@/eventBus'
export default {
  name: 'summary-sheet.vue',
  components: {
@@ -68,6 +68,7 @@
    }
  },
  methods: {
    closeBtn () {
      this.$refs.summarySheets.show()
      this.summaryVisible = true
@@ -82,10 +83,20 @@
    },
    subtopicBtn () {
      this.subtopic = !this.subtopic
      const state = {
        type: this.subtopic,
        num: 2
      }
      bus.$emit('changeState', state)
    }
  },
  mounted () {
    const that = this
    bus.$on('changeState', function (state) {
      if (state.num !== 2 && state.type) {
        that.subtopic = false
      }
    })
    this.$nextTick(() => {
      this.$refs.summarySheets.$on('closeDialog', () => {
        that.summaryVisible = false
src/eventBus.js
New file
@@ -0,0 +1,2 @@
import Vue from 'vue'
export default new Vue()
src/utils/dragBoxes.js
New file
@@ -0,0 +1,39 @@
/* eslint */
import Vue from 'vue'
const drag = Vue.directive('drag', {
  bind (el, binding, vnode, oldVnode) {
    const dialogHeaderEl = el.querySelector('.public-bounced-title')
    dialogHeaderEl.onmousedown = function (e) {
      var distX = e.pageX - el.offsetLeft
      var distY = e.pageY - el.offsetTop
      if (e.preventDefault) {
        e.preventDefault()
      } else {
        e.returnValue = false
      }
      document.onmousemove = function (e) {
        let left = e.clientX - distX
        let top = e.clientY - distY
        if (left <= 0) {
          left = 5
        } else if (left > document.documentElement.clientWidth - dialogHeaderEl.clientWidth) {
          left = document.documentElement.clientWidth - dialogHeaderEl.clientWidth - 5
        }
        if (top <= 0) {
          top = 5
        } else if (top > document.documentElement.clientHeight - dialogHeaderEl.clientHeight) {
          top = document.documentElement.clientHeight - dialogHeaderEl.clientHeight - 5
        }
        el.style.left = left + 'px'
        el.style.top = top + 'px'
      }
      document.onmouseup = function () {
        document.onmousemove = document.onmouseup = null
      }
    }
  }
})
export default drag