派生自 wuyushui/SewerAndRainNetwork

YANGDL
2021-03-01 dedc31bf2e64bd6c977386a6e336af30ec826a4d
修改专题搜索面板样式
2个文件已添加
6个文件已修改
2 文件已重命名
1448 ■■■■■ 已修改文件
src/assets/css/map/_map-variable.less 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/map/map-elem-ui.less 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/panel/MenuTopic.vue 100 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/panel/RightSearchPanel.vue 941 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/panel/topicSearch/DischargeSearch.vue 补丁 | 查看 | 原始文档 | blame | 历史
src/components/panel/topicSearch/EnvProtectSearch.vue 补丁 | 查看 | 原始文档 | blame | 历史
src/components/panel/topicSearch/SewersSearch.vue 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/conf/LayerSewers.js 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/conf/Topic.js 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/map.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/map/_map-variable.less
@@ -1,3 +1,4 @@
@color:#00fff6;
@color-highlight:#fff700;
@background-color:rgba(0,16,30,.8);
@background-color-light:rgba(40,50,100,.4);
src/assets/css/map/map-elem-ui.less
@@ -4,3 +4,34 @@
    background-color: @background-color;
    border-color: @color;
}
.select-down {
    border: none !important;
    background-color: @background-color !important;
   //.el-scrollbar{
   //
   //     background-color: @background-color !important;
   // }
   //  .el-scrollbar__view .el-select-dropdown__list{
   //     background-color: @background-color !important;
   // }
     .el-select-dropdown__item.hover{
        background-color: @background-color-light;
    }
     .el-select-dropdown__item {
        color: @color;
        //background-color: @background-color;
    }
   //  .el-select-dropdown{
   //     border: none !important;
   //     background-color: @background-color !important;
   // }
   // .el-select-dropdown__empty{
   //     color: @color;
   //     background-color: @background-color;
   // }
    .popper__arrow::after{
        border-bottom-color: @color !important;
    }
}
src/components/panel/MenuTopic.vue
@@ -6,12 +6,12 @@
           style=""
           @click="toggle()">
      <div id="menu-special-context" class="menu-special-context">
          <el-checkbox-button  v-show="isShow" class="menu-special-item" v-model="specialAll.check" :checked="specialAll.checked" @change="checkedSpecialChangeAll(specialAll)">
            <div style="height: 1rem;width: 1rem;display: inline-flex;">     <img :src="specialAll.icon" ></div>
            {{ specialAll.name }}</el-checkbox-button>
          <el-checkbox-button v-show="isShow" class="menu-special-item" v-model="topicSelectAll.check" :checked="topicSelectAll.checked" @change="checkedSpecialChangeAll(topicSelectAll)">
            <div style="height: 1rem;width: 1rem;display: inline-flex;">     <img :src="topicSelectAll.icon" ></div>
            {{ topicSelectAll.name }}</el-checkbox-button>
        <el-checkbox-group :indeterminate="isIndeterminate" v-show="isShow" v-model="checkedList" size="medium"  @change="checkedGroupSpecialChange">
          <el-checkbox-button class="menu-special-item"  v-for="item in specialList" :label="item.name" :key="item.id" :checked="item.checked" @change="checkedSpecialChange(item)">
        <el-checkbox-group :indeterminate="isIndeterminate" v-show="isShow" v-model="topicCheckedList" size="medium" @change="checkedGroupSpecialChange">
          <el-checkbox-button class="menu-special-item" v-for="item in topicList" :label="item.name" :key="item.id" :checked="item.checked" @change="checkedSpecialChange(item)">
            <div style="height: 1rem;width: 1rem;display: inline-flex;">     <img :src="item.icon" ></div>
            {{item.name}}</el-checkbox-button>
        </el-checkbox-group>
@@ -28,70 +28,16 @@
</template>
<script>
import { TopicSelectAll, TopicList } from '../../conf/Topic'
export default {
  name: 'MenuTopic',
  data () {
    return {
      isShow: false,
      isIndeterminate: true,
      checkedList: [],
      specialAll: {
        name: '全选',
        check: false,
        icon: '/assets/images/menu/special.png'
      },
      specialList: [{
        name: '污染源',
        id: 1,
        check: false,
        icon: '/assets/images/menu/special.png'
      }, {
        name: '废水监测',
        id: 2,
        checked: false,
        icon: '/assets/images/menu/special.png'
      }, {
        name: '废气监测',
        id: 3,
        checked: false,
        icon: '/assets/images/menu/special.png'
      }, {
        name: '固废管理',
        id: 4,
        checked: false,
        icon: '/assets/images/menu/special.png'
      }, {
        name: '环境风险',
        id: 5,
        checked: false,
        icon: '/assets/images/menu/special.png'
      }, {
        name: '土壤及地下水',
        id: 6,
        checked: false,
        icon: '/assets/images/menu/special.png'
      }, {
        name: '污雨水管网',
        id: 7,
        checked: false,
        icon: '/assets/images/menu/special.png'
      }, {
        name: '预警报警',
        id: 8,
        checked: false,
        icon: '/assets/images/menu/special.png'
      }, {
        name: '指标统计',
        id: 9,
        checked: false,
        icon: '/assets/images/menu/special.png'
      }, {
        name: '应急地图',
        id: 10,
        checked: false,
        icon: '/assets/images/menu/special.png'
      }]
      topicCheckedList: [],
      topicSelectAll: TopicSelectAll,
      topicList: TopicList
    }
  },
  computed: {
@@ -99,33 +45,21 @@
  methods: {
    toggle () {
      this.isShow = !this.isShow
      // console.log('toggle')
      // const el = document.getElementById('menu-special-context')
      // console.log(el.clientWidth + ':' + el.offsetHeight)
      // if (el.clientWidth > 0) {
      //   el.style.width = '0'
      // } else {
      //   el.style.width = 'auto'
      // }
    },
    checkedGroupSpecialChange (val) {
      const len = val.length
      this.specialAll.check = len === this.specialList.length
      this.isIndeterminate = len > 0 && len < this.specialList.length
      this.topicSelectAll.check = len === this.topicList.length
      this.isIndeterminate = len > 0 && len < this.topicList.length
      this.$store.commit('setTopic', this.topicCheckedList)
    },
    checkedSpecialChangeAll (val) {
      // this.checkedCities = val ? this.cities.map(item => item.id) : []
      // this.isIndeterminate = false
      // let list = []
      // if (val === true) {
      //   list = this.specialList.map(item => item.name)
      // }
      this.checkedList = val.check ? this.specialList.map(item => item.name) : []
      this.topicCheckedList = val.check ? this.topicList.map(item => item.name) : []
      this.isIndeterminate = false
      this.$store.commit('setTopic', this.topicCheckedList)
    },
    checkedSpecialChange (item) {
      console.log(item)
    checkedSpecialChange () {
      console.log(this.topicCheckedList)
      // this.$store.commit('setTopic', this.topicCheckedList)
    }
  }
src/components/panel/RightSearchPanel.vue
@@ -1,252 +1,76 @@
<template>
    <div id="right-panel">
        <div class="panel-tab">
            <div class="tab-gd" @click="handleGd" :class="{'B-TMT-tab-waybill-isActive': isWaybillHover}"></div>
            <div class="tab-hb" @click="handleHb" :class="{'B-TMT-tab-route-isActive': isRouteHover}"></div>
            <div class="tab-pk" @click="handlePk" :class="{'B-TMT-tab-route-isActive': isRouteHover}"></div>
        </div>
      <div class="panel-fold-btn">
        <div class="btn-stretch" @click="toggleMonitorPanel"></div>
      </div>
  <div id="right-panel">
    <div class="panel-tab">
      <div v-for="item in topicMenu" :key="item.id" :title="item.name" class="tab-item" @click="handleGd" :class="{'B-TMT-tab-waybill-isActive': isWaybillHover}">
        <img :src="item.icon" style="width: 24px;height: 24px;"></div>
        <div class="right-control">
            <div class="el-message-box__header panel_header">
                <div class="el-message-box__title panel_title"><!----><span>{{ title }}</span>
                </div>
            </div>
            <div class="el-message-box__content" style="padding:6px;font-size: 13px;">
                <div class="monitor1" v-if="gdVisible">
                    <div>
                        <el-card class="search-panel">
                            <el-form ref="form" :model="form" label-width="90px" class="search-form">
                                <el-form-item label="类型:">
                                    <el-select v-model="form.pipelineType" @change="handlePipelineType">
                                        <el-option
                                                v-for="item in pipelineTypeOptions"
                                                :key="item.value"
                                                :label="item.label"
                                                :value="item.value">
                                        </el-option>
                                    </el-select>
                                </el-form-item>
                                <el-form-item label="数据类型:">
                                    <el-select v-model="form.dataType">
                                        <el-option
                                                v-for="item in dataTypeOptions"
                                                :key="item.value"
                                                :label="item.label"
                                                :value="item.value">
                                        </el-option>
                                    </el-select>
                                </el-form-item>
                                <el-form-item label="模糊搜索:">
                                    <el-input v-model="form.key" size="mini"
                                              placeholder="在此输入关键字"></el-input>
                                </el-form-item>
                                <el-form-item>
                                    <input type="button" class="btn-ok" @click="handleSearch" value="查询">
                                    <input type="button" class="btn-reset" @click="handleSearch" value="重置">
                                </el-form-item>
                            </el-form>
                        </el-card>
                        <el-card class="search-result" style="height:271px;">
                            <div class="B-TMD-table-list" v-for="(item,index) in list" :key="index">
                                <div class="B-TMD-table-list-title">
                                    <div class="B-TMD-table-list-head">
                                        <div class="B-TMD-table-list-title-y"
                                             :class="['B-TMD-table-list-title-y-nam', { 'warning': item.vehicleStatus==='910003' }, { 'offline': item.vehicleStatus==='910001' }]">
                                            <span>运单号:</span>
                                            <span id="waybillNumber" class="B-TMD-table-list-title-y-num"
                                                  :title="item.transNo">
                                                <span class="B-TMD-table-list-title-y-alarm">{{ item.transNo }}</span>
                                            </span>
                                        </div>
                                        <div class="B-TMD-table-list-title-c">
                                            载具号:
                                            <span id="plateNumber_p">
                                                <span id="plateNumber_n"><a href="#">{{ item.vehicleNo }}</a></span>
                                            </span>
                                        </div>
                                    </div>
                                    <div class="B-TMD-table-icons" style="float:right">
                                        <ul>
                                            <li class="B-TMD-table-list-title-y-adress"
                                                @click="handleLocation(item)"></li>
                                            <li :class="[{'B-TMD-table-list-title-y-car': item.vehicleStatus ==='910002', 'B-TMD-table-list-title-y-car-offline': item.vehicleStatus ==='910001','B-TMD-table-list-title-y-car-warning': item.vehicleStatus==='910003' }]"></li>
                                        </ul>
                                    </div>
                                </div>
                                <div class="B-TMD-table-list-content">
                                    <div>
                                        <span>发货企业:</span>
                                        <span id="b_twe_consignment" :title="item.outWarehouseName">{{
                        item.outWarehouseName == null ? "暂无" : item.outWarehouseName
                      }}</span>
                                    </div>
                                    <div>
                                        <span>承&nbsp;&nbsp;运&nbsp;&nbsp;商:</span>
                                        <span id="b_twe_loan" :title="item.carrierName">{{ item.carrierName }}</span>
                                    </div>
                                    <div><span>收货企业:</span> <span
                                            id="b_twe_loan1" :title="item.recvWarehouseName">{{ item.recvWarehouseName }}</span>
                                    </div>
                                </div>
                                <div class="B-TMD-table-list-bottom">
                                    <div class="B-TMD-table-list-bottom-name">
                                        货物名称:<span :title="item.materialName">{{ item.materialName }}</span></div>
                                </div>
                            </div>
                        </el-card>
                        <el-card class="footer-page" v-if="total > 10">
                            <el-pagination
                                    small
                                    @current-change="handlePage"
                                    :page-size=pageSize
                                    layout="prev, pager, next"
                                    :total=total
                                    :current-page=current
                                    class="warnPagination"
                            >
                            </el-pagination>
                        </el-card>
                    </div>
                </div>
                <div class="monitor2" v-if="hbVisible">
                    <env-protect-search></env-protect-search>
                </div>
                <div class="monitor2" v-if="pkVisible">
                    <discharge-search></discharge-search>
                </div>
            </div>
        </div>
<!--      <div class="tab-item" @click="handleHb" :class="{'B-TMT-tab-route-isActive': isRouteHover}"></div>-->
<!--      <div class="tab-item" @click="handlePk" :class="{'B-TMT-tab-route-isActive': isRouteHover}"></div>-->
    </div>
    <div class="panel-fold-btn">
      <div class="btn-stretch" @click="toggleMonitorPanel"></div>
    </div>
    <div class="right-control">
      <component :title="title" :is="gcComp"></component>
    </div>
  </div>
</template>
<script>
import $ from 'jquery'
import EnvProtectSearch from './EnvProtectSearch'
import DischargeSearch from './DischargeSearch'
import EnvProtectSearch from './topicSearch/EnvProtectSearch'
import DischargeSearch from './topicSearch/DischargeSearch'
import { TopicList } from '../../conf/Topic'
import SewersSearch from '@components/panel/topicSearch/SewersSearch'
export default {
  name: 'MonitorPanel',
  components: { EnvProtectSearch, DischargeSearch },
  data () {
    return {
      topicMenu: [],
      topicList: TopicList,
      topicCheckedList: [],
      isPanelVisible: false,
      gcComp: SewersSearch,
      gdVisible: true,
      hbVisible: false,
      pkVisible: false,
      toggleMonitorStyle: 'right:0px',
      list: [],
      total: 0,
      title: '管道信息查询',
      pipelineTypeOptions: [{
        value: '1',
        label: '管线本体'
      }, {
        value: '2',
        label: '附属设施'
      }],
      dataTypeOptions: [],
      attachOptions: [{
        value: '1',
        label: '阀门'
      }, {
        value: '2',
        label: '管廊'
      }, {
        value: '3',
        label: '管架'
      }, {
        value: '4',
        label: '三通'
      }, {
        value: '5',
        label: '四通'
      }, {
        value: '6',
        label: '弯头'
      }],
      pipelineOptions: [{
        value: '1',
        label: '管线'
      }, {
        value: '2',
        label: '雨水管段'
      }, {
        value: '3',
        label: '含盐管段'
      }, {
        value: '4',
        label: '含油管段'
      }, {
        value: '5',
        label: '事故水管段'
      }, {
        value: '6',
        label: '含碱管段'
      }, {
        value: '7',
        label: '循环水管段'
      }, {
        value: '8',
        label: '净化水管段'
      }, {
        value: '9',
        label: '生活污水管段'
      }],
      form: {
        transNo: null,
        carrierName: null,
        transMode: null,
        vehicleNo: null,
        orderState: null,
        size: 10,
        current: 1
      },
      pageSize: 10,
      current: 1,
      isWaybillHover: true,
      isRouteHover: false
      title: '污雨水管网'
    }
  },
  computed: {},
  watch: {},
  watch: {
    '$store.state.map.topic.topicCheckedList': function (newVal, oldVal) {
      console.log(oldVal)
      console.log(newVal)
      this.topicCheckedList = newVal
      this.topicMenu = []
      this.topicList.forEach((item) => {
        this.topicCheckedList.forEach((itm) => {
          if (item.name === itm) {
            // item.checked = tr
            this.topicMenu.push(item)
          }
        })
      })
    }
  },
  methods: {
    handleClose (done) {
      console.log(done)
    },
    handleSearch () {
    },
    handlePipelineType (item) {
      console.log(item)
      if (item === '2') {
        this.dataTypeOptions = this.attachOptions
      } else if (item === '1') {
        this.dataTypeOptions = this.pipelineOptions
      }
    },
    handlePage (page) {
    },
    handleGd () {
      this.gdVisible = true
      this.hbVisible = false
      this.pkVisible = false
      this.title = '管道信息查询'
    },
    handleHb () {
      this.gdVisible = false
      this.hbVisible = true
      this.pkVisible = false
      this.title = '环保设施查询'
    },
    handlePk () {
      this.gdVisible = false
      this.hbVisible = false
      this.pkVisible = true
      this.title = '排口信息查询'
    },
    toggleMonitorPanel () {
      const el = $('.btn-stretch')
@@ -289,379 +113,372 @@
</script>
<style lang="less">
    #right-panel {
        width: 322px;
        //height: 573px;
        height: 100%;
        position: absolute;
        right: 10px;
        top: 10px;
@import '@assets/css/map/_map-variable';
#right-panel {
  width: 322px;
  //height: 573px;
  height: 100%;
  position: absolute;
  right: 10px;
  top: 10px;
        .el-card__body {
            padding: 7px;
        }
  .el-card__body {
    padding: 7px;
  }
        .el-form-item__content {
            color: rgb(52, 224, 255);
        }
  .el-form-item__content {
    color: rgb(52, 224, 255);
  }
        .el-picker-panel {
            background-color: #061e51 !important;
        }
  .el-picker-panel {
    background-color: #061e51 !important;
  }
        .el-input__inner {
            border-radius: 0 !important;
            background-color: #061e51 !important;
            border: solid 1px #0e639e !important;
        }
  .el-input__inner {
    border-radius: 0 !important;
    background-color: #061e51 !important;
    border: solid 1px #0e639e !important;
  }
        .el-form-item__label {
            color: rgb(52, 224, 255);
        }
  .el-form-item__label {
    color: rgb(52, 224, 255);
  }
        .el-input__inner::placeholder {
            color: #9a9494;
        }
  .el-input__inner::placeholder {
    color: #9a9494;
  }
        /* 谷歌 */
  /* 谷歌 */
        .el-input__inner::-webkit-input-placeholder {
            color: #9a9494;
        }
  .el-input__inner::-webkit-input-placeholder {
    color: #9a9494;
  }
        /* 火狐 */
  /* 火狐 */
        .el-input__inner:-moz-placeholder {
            color: #9a9494;
        }
  .el-input__inner:-moz-placeholder {
    color: #9a9494;
  }
        /*ie*/
  /*ie*/
        .el-input__inner:-ms-input-placeholder {
            color: #9a9494;
        }
  .el-input__inner:-ms-input-placeholder {
    color: #9a9494;
  }
        .warning {
            color: #dcc805;
        }
  .warning {
    color: #dcc805;
  }
        #plateNumber_n a {
            color: rgb(52, 224, 255);
        }
  #plateNumber_n a {
    color: rgb(52, 224, 255);
  }
        .offline {
            color: #9a9494;
        }
  .offline {
    color: #9a9494;
  }
        .customInput {
            width: 118px;
        }
  .customInput {
    width: 118px;
  }
        .btn-ok {
            margin-right: 10px;
            width: 4rem;
            background-color: #0B89B5;
            color: white;
            border: 0;
        }
  .btn-ok {
    margin-right: 10px;
    width: 4rem;
    background-color: #0B89B5;
    color: white;
    border: 0;
  }
        .btn-reset {
            margin-right: 10px;
            width: 4rem;
            background-color: orange;
            color: white;
            border: 0;
        }
  .btn-reset {
    margin-right: 10px;
    width: 4rem;
    background-color: orange;
    color: white;
    border: 0;
  }
        .component-fade-enter-active, .component-fade-leave-active {
            transition: opacity .5s ease;
        }
  .component-fade-enter-active, .component-fade-leave-active {
    transition: opacity .5s ease;
  }
        .component-fade-enter, .component-fade-leave-to
            /* .component-fade-leave-active for below version 2.1.8 */ {
            opacity: 0;
        }
  .component-fade-enter, .component-fade-leave-to
    /* .component-fade-leave-active for below version 2.1.8 */ {
    opacity: 0;
  }
        .B-TMD-table-icons ul li {
            float: left;
            margin: 10px;
            list-style: none;
        }
  .B-TMD-table-icons ul li {
    float: left;
    margin: 10px;
    list-style: none;
  }
        .B-TMD-table-list {
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
  .B-TMD-table-list {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
        .B-TMD-table-list-title {
            width: 100%;
            height: 50px;
        }
  .B-TMD-table-list-title {
    width: 100%;
    height: 50px;
  }
        .B-TMD-table-list-head {
            width: 160px;
            float: left;
            padding-left: 5px;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
      .panel-fold-btn{
        position: absolute;
        top:45%;
        //right: 320px;
        right: 290px;
        z-index: 1000;
        background-color: rgba(5,24,66,.8);
        border-radius: 10px 0 0 10px;
        .btn-stretch {
          width: 20px;
          height: 40px;
          background: url('../../assets/images/map-pages/icon/icon.png') no-repeat -408px 5px;
          cursor: pointer;
  .B-TMD-table-list-head {
    width: 160px;
    float: left;
    padding-left: 5px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .panel-fold-btn{
    position: absolute;
    top:45%;
    //right: 320px;
    right: 290px;
    z-index: 1000;
    background-color: rgba(5,24,66,.8);
    border-radius: 10px 0 0 10px;
    .btn-stretch {
      width: 20px;
      height: 40px;
      background: url('../../assets/images/map-pages/icon/icon.png') no-repeat -408px 5px;
      cursor: pointer;
          transform: rotateY(180deg);
          transform-origin: 50% 50%;
          transition: transform 1s linear;
        }
      transform: rotateY(180deg);
      transform-origin: 50% 50%;
      transition: transform 1s linear;
    }
  }
  .tab-item {
    width: 32px;
    height: 30px;
    color: @color;
    font-size: 12px;
    background-color: #0B3B6D;
  }
  .tab-item:hover{
    cursor: pointer;
  }
  .panel-tab {
    position: absolute;
    left: 0;
    //height: 120px;
    top: 0;
    width: 32px;
    z-index: 500;
    background: url('../../assets/images/map-pages/icon/caidan.png') no-repeat;
  }
  .right-control {
    width: 290px;
    //height: 573px;
    height: 100%;
    position: absolute;
    top: 0;
    right: 0;
    z-index: 999;
    background: url('../../assets/images/map-pages/icon/bgc.png') no-repeat;
    background-size: 100% 98%;
  }
  .panel_searchTotal {
    font-size: 12px;
    float: right;
  }
  .panel_header {
    // background-color: #030D2E;
    padding: 7px 15px 3px 20px;
  }
  .panel_title {
    font-size: 12px;
    margin: 0px;
    padding: 0px;
    color: #78c4ff;
    font-weight: bold;
  }
  .el-message-box__content {
    background-color: transparent;
  }
  .search-form .el-form-item {
    margin: 0px;
  }
  .search-form .el-icon-search {
    display: grid;
    line-height: 30px;
    font-size: 18px;
  }
  .search-panel {
    border: #07325B;
    background-color: #07325B !important;
    margin-top: 0px;
    .el-input__inner {
      border-radius: 0px !important;
      background-color: #061e51 !important;
    }
  }
  input::-webkit-input-placeholder {
    color: #569ee1;
  }
  input::-moz-placeholder {
    color: #569ee1;
  }
  input::-ms-input-placeholder {
    color: #569ee1;
  }
  input[type=text]:focus {
    outline: 1px solid #17e4f6;
    // box-shadow:  1px 0px 3px 0px #17e4f6;
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
  }
  .search-result {
    margin: 5px 0px 0px 0px;
    padding: 0px;
    border: #051842;
    height: 290px;
    overflow-y: scroll;
    background-color: transparent !important;
    margin-bottom: -8px !important;
  }
  .offline {
    color: #64778B;
  }
  .B-TMD-table-list {
    margin-top: 10px;
    text-align: left;
    padding-left: 10px;
    //color: #64778B;
    color: #34e0ff;
    width: 100%;
    line-height: 25px;
    background: url('../../assets/images/map-pages/icon/dd.png') no-repeat;
  }
  .B-TMD-inp-button {
    width: 46px;
    height: 52px;
    position: absolute;
    bottom: 8px;
    right: 16px;
    background: url('../../assets/images/map-pages/icon/icon.png') no-repeat -481px 0;
    cursor: pointer;
  }
  .footer-page {
    position: absolute;
    background-color: transparent !important;
    bottom: 10px !important;
    margin-left: 0px;
    border: none;
    .warnPagination {
      .btn-quicknext, .btn-quickprev {
        color: #e4e8f1 !important;
        background-color: transparent;
        // border: 1px solid #25AECD;
        border-left: 1px solid #25AECD;
        border-bottom: 1px solid #25AECD;
        border-top: 1px solid #25AECD;
        color: #e4e8f1;
      }
        .tab-gd {
            width: 32px;
            height: 30px;
            background-color: #0B3B6D;
        }
      .el-pager li {
        color: #e4e8f1;
        background: transparent;
        // border: 1px solid #25AECD;
        border-left: 1px solid #25AECD;
        border-bottom: 1px solid #25AECD;
        border-top: 1px solid #25AECD;
      }
        .tab-hb {
            width: 32px;
            height: 30px;
            background-color: #545454;
        }
      .el-pager li.active {
        border-color: #25AECD;
        background-color: rgba(38, 222, 253, 0.3);
        color: #e4e8f1;
      }
        .tab-pk {
            width: 32px;
            height: 30px;
            background-color: #83a6c4;
        }
      .el-pager li:hover {
        border-color: #25AECD;
        background-color: rgba(38, 222, 253, 0.3);
        color: #34e0ff;
      }
        .panel-tab {
            position: absolute;
            left: 0;
            height: 120px;
            top: 0;
            width: 32px;
            z-index: 500;
            background: url('../../assets/images/map-pages/icon/caidan.png') no-repeat;
        }
      .btn-prev {
        background-color: transparent;
        // border: 1px solid #25AECD;
        border-left: 1px solid #25AECD;
        border-bottom: 1px solid #25AECD;
        border-top: 1px solid #25AECD;
        color: #e4e8f1;
      }
        .right-control {
            width: 290px;
            //height: 573px;
            height: 100%;
            position: absolute;
            top: 0;
            right: 0;
            z-index: 999;
            background: url('../../assets/images/map-pages/icon/bgc.png') no-repeat;
          background-size: 100% 98%;
        }
        .panel_searchTotal {
            font-size: 12px;
            float: right;
        }
        .panel_header {
            // background-color: #030D2E;
            padding: 7px 15px 3px 20px;
        }
        .panel_title {
            font-size: 12px;
            margin: 0px;
            padding: 0px;
            color: #78c4ff;
            font-weight: bold;
        }
        .el-message-box__content {
            background-color: transparent;
        }
        .search-form .el-form-item {
            margin: 0px;
        }
        .search-form .el-icon-search {
            display: grid;
            line-height: 30px;
            font-size: 18px;
        }
        .search-panel {
            border: #07325B;
            background-color: #07325B !important;
            margin-top: 0px;
            .el-input__inner {
                border-radius: 0px !important;
                background-color: #061e51 !important;
            }
        }
        input::-webkit-input-placeholder {
            color: #569ee1;
        }
        input::-moz-placeholder {
            color: #569ee1;
        }
        input::-ms-input-placeholder {
            color: #569ee1;
        }
        input[type=text]:focus {
            outline: 1px solid #17e4f6;
            // box-shadow:  1px 0px 3px 0px #17e4f6;
            box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
        }
        .search-result {
            margin: 5px 0px 0px 0px;
            padding: 0px;
            border: #051842;
            height: 290px;
            overflow-y: scroll;
            background-color: transparent !important;
            margin-bottom: -8px !important;
        }
        .offline {
            color: #64778B;
        }
        .B-TMD-table-list {
            margin-top: 10px;
            text-align: left;
            padding-left: 10px;
            //color: #64778B;
            color: #34e0ff;
            width: 100%;
            line-height: 25px;
            background: url('../../assets/images/map-pages/icon/dd.png') no-repeat;
        }
        .B-TMD-inp-button {
            width: 46px;
            height: 52px;
            position: absolute;
            bottom: 8px;
            right: 16px;
            background: url('../../assets/images/map-pages/icon/icon.png') no-repeat -481px 0;
            cursor: pointer;
        }
        .footer-page {
            position: absolute;
            background-color: transparent !important;
            bottom: 10px !important;
            margin-left: 0px;
            border: none;
            .warnPagination {
                .btn-quicknext, .btn-quickprev {
                    color: #e4e8f1 !important;
                    background-color: transparent;
                    // border: 1px solid #25AECD;
                    border-left: 1px solid #25AECD;
                    border-bottom: 1px solid #25AECD;
                    border-top: 1px solid #25AECD;
                    color: #e4e8f1;
                }
                .el-pager li {
                    color: #e4e8f1;
                    background: transparent;
                    // border: 1px solid #25AECD;
                    border-left: 1px solid #25AECD;
                    border-bottom: 1px solid #25AECD;
                    border-top: 1px solid #25AECD;
                }
                .el-pager li.active {
                    border-color: #25AECD;
                    background-color: rgba(38, 222, 253, 0.3);
                    color: #e4e8f1;
                }
                .el-pager li:hover {
                    border-color: #25AECD;
                    background-color: rgba(38, 222, 253, 0.3);
                    color: #34e0ff;
                }
                .btn-prev {
                    background-color: transparent;
                    // border: 1px solid #25AECD;
                    border-left: 1px solid #25AECD;
                    border-bottom: 1px solid #25AECD;
                    border-top: 1px solid #25AECD;
                    color: #e4e8f1;
                }
                .btn-next {
                    background-color: transparent;
                    border: 1px solid #25AECD;
                    color: #e4e8f1;
                }
            }
        }
        ::-webkit-scrollbar {
            width: 7px;
            height: 5px !important;
        }
        ::-webkit-scrollbar-thumb {
            /*滚动条里面小方块*/
            border-radius: 10px;
            box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
            background: #0661AE;
            border: 1px solid transparent;
        }
        ::-webkit-scrollbar-track {
            /*滚动条里面轨道*/
            // box-shadow   : inset 0 0 5px rgba(0, 0, 0, 0.2);
            border-radius: 0px;
            background: #0E3565;
        }
        .selectFrom {
            color: #061e51;
            border: 1px solid #061e51 !important;
            background: #dcc805 !important;
            .el-select-dropdown__list {
                background: #061e51 !important;
            }
            .el-select-dropdown__item {
                color: #949494;
                background: #061e51 !important;
            }
            .el-select-dropdown__item.hover,
            .el-select-dropdown__item:hover {
                color: #fff;
                background: #061e51 !important;
            }
            .popper__arrow {
                background-color: #061e51 !important;
            }
        }
      .btn-next {
        background-color: transparent;
        border: 1px solid #25AECD;
        color: #e4e8f1;
      }
    }
  }
  ::-webkit-scrollbar {
    width: 7px;
    height: 5px !important;
  }
  ::-webkit-scrollbar-thumb {
    /*滚动条里面小方块*/
    border-radius: 10px;
    box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
    background: #0661AE;
    border: 1px solid transparent;
  }
  ::-webkit-scrollbar-track {
    /*滚动条里面轨道*/
    // box-shadow   : inset 0 0 5px rgba(0, 0, 0, 0.2);
    border-radius: 0px;
    background: #0E3565;
  }
  .selectFrom {
    color: #061e51;
    border: 1px solid #061e51 !important;
    background: #dcc805 !important;
    .el-select-dropdown__list {
      background: #061e51 !important;
    }
    .el-select-dropdown__item {
      color: #949494;
      background: #061e51 !important;
    }
    .el-select-dropdown__item.hover,
    .el-select-dropdown__item:hover {
      color: #fff;
      background: #061e51 !important;
    }
    .popper__arrow {
      background-color: #061e51 !important;
    }
  }
}
</style>
src/components/panel/topicSearch/DischargeSearch.vue
src/components/panel/topicSearch/EnvProtectSearch.vue
src/components/panel/topicSearch/SewersSearch.vue
New file
@@ -0,0 +1,178 @@
<template>
  <div id="sewers-search">
    <div class="el-message-box__header panel_header">
      <div class="el-message-box__title panel_title"><!----><span>{{ title }}</span>
      </div>
    </div>
    <div class="el-message-box__content" style="padding:6px;font-size: 13px;">
      <div class="box__content" v-if="gdVisible">
        <div>
          <el-card class="search-panel">
            <el-form ref="form" :model="form" label-width="90px" class="search-form">
              <el-form-item label="设施类型:" size="mini">
                <el-select v-model="form.pipelineType" @change="handlePipelineType"  popper-class="select-down">
                  <el-option
                      v-for="item in pipelineTypeOptions"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value">
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="数据类型:">
                <el-select v-model="form.dataType" size="mini"  popper-class="select-down">
                  <el-option
                      v-for="item in dataTypeOptions"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value">
                  </el-option>
                </el-select>
              </el-form-item>
<!--              <el-form-item >-->
                <el-input v-model="form.key" size="mini"
                          placeholder="在此输入关键字搜索">
<!--                  <el-button slot="append" icon="el-icon-search" size="mini"></el-button>-->
                  <span><i class="el-icon-edit"></i></span>
                </el-input>
<!--              </el-form-item>-->
<!--              <el-form-item>-->
<!--                <input type="button" class="btn-ok" @click="handleSearch" value="查询">-->
<!--                <input type="button" class="btn-reset" @click="handleSearch" value="重置">-->
<!--              </el-form-item>-->
            </el-form>
          </el-card>
          <el-card class="search-result" style="height:271px;">
            <div class="B-TMD-table-list" v-for="(item,index) in list" :key="index">
              <div class="B-TMD-table-list-title">
                <div class="B-TMD-table-list-head">
                  <div class="B-TMD-table-list-title-y"
                       :class="['B-TMD-table-list-title-y-nam', { 'warning': item.vehicleStatus==='910003' }, { 'offline': item.vehicleStatus==='910001' }]">
                    <span>运单号:</span>
                    <span id="waybillNumber" class="B-TMD-table-list-title-y-num"
                          :title="item.transNo">
                                                <span class="B-TMD-table-list-title-y-alarm">{{ item.transNo }}</span>
                                            </span>
                  </div>
                  <div class="B-TMD-table-list-title-c">
                    载具号:
                    <span id="plateNumber_p">
                                                <span id="plateNumber_n"><a href="#">{{ item.vehicleNo }}</a></span>
                                            </span>
                  </div>
                </div>
                <div class="B-TMD-table-icons" style="float:right">
                  <ul>
                    <li class="B-TMD-table-list-title-y-adress"
                        @click="handleLocation(item)"></li>
                    <li :class="[{'B-TMD-table-list-title-y-car': item.vehicleStatus ==='910002', 'B-TMD-table-list-title-y-car-offline': item.vehicleStatus ==='910001','B-TMD-table-list-title-y-car-warning': item.vehicleStatus==='910003' }]"></li>
                  </ul>
                </div>
              </div>
              <div class="B-TMD-table-list-content">
                <div>
                  <span>发货企业:</span>
                  <span id="b_twe_consignment" :title="item.outWarehouseName">{{
                      item.outWarehouseName == null ? "暂无" : item.outWarehouseName
                    }}</span>
                </div>
                <div>
                  <span>承&nbsp;&nbsp;运&nbsp;&nbsp;商:</span>
                  <span id="b_twe_loan" :title="item.carrierName">{{ item.carrierName }}</span>
                </div>
                <div><span>收货企业:</span> <span
                    id="b_twe_loan1" :title="item.recvWarehouseName">{{ item.recvWarehouseName }}</span>
                </div>
              </div>
              <div class="B-TMD-table-list-bottom">
                <div class="B-TMD-table-list-bottom-name">
                  货物名称:<span :title="item.materialName">{{ item.materialName }}</span></div>
              </div>
            </div>
          </el-card>
          <el-card class="footer-page" v-if="total > 10">
            <el-pagination
                small
                @current-change="handlePage"
                :page-size=pageSize
                layout="prev, pager, next"
                :total=total
                :current-page=current
                class="warnPagination"
            >
            </el-pagination>
          </el-card>
        </div>
      </div>
      <!--        <div class="monitor2" v-if="hbVisible">-->
      <!--          <env-protect-search></env-protect-search>-->
      <!--        </div>-->
      <!--        <div class="monitor2" v-if="pkVisible">-->
      <!--          <discharge-search></discharge-search>-->
      <!--        </div>-->
    </div>
  </div>
</template>
<script>
import { PipelineTypeOptions, OutletOptions, AttachOptions, PipelineOptions, EnvironmentOptions, SurroundingsOptions } from '@/conf/LayerSewers'
export default {
  name: 'SewersSearch',
  data () {
    return {
      gdVisible: true,
      list: [],
      total: 0,
      pipelineTypeOptions: PipelineTypeOptions,
      outletOptions: OutletOptions,
      dataTypeOptions: [],
      attachOptions: AttachOptions,
      pipelineOptions: PipelineOptions,
      environmentOptions: EnvironmentOptions,
      surroundingsOptions: SurroundingsOptions,
      form: {
        transNo: null,
        carrierName: null,
        transMode: null,
        vehicleNo: null,
        orderState: null,
        size: 10,
        current: 1
      },
      pageSize: 10,
      current: 1,
      isWaybillHover: true,
      isRouteHover: false
    }
  },
  props: ['title'],
  methods: {
    handlePipelineType (item) {
      console.log(item)
      if (item === '2') {
        this.dataTypeOptions = this.outletOptions
      } else if (item === '1') {
        this.dataTypeOptions = this.pipelineOptions
      } else if (item === '3') {
        this.dataTypeOptions = this.attachOptions
      } else if (item === '4') {
        this.dataTypeOptions = this.environmentOptions
      } else if (item === '5') {
        this.dataTypeOptions = this.surroundingsOptions
      }
    },
    handleSearch () {
    }
  }
}
</script>
<style lang="less">
@import '@assets/css/map/map-elem-ui';
</style>
src/conf/LayerSewers.js
@@ -375,3 +375,136 @@
    ]
  }
]
export const PipelineTypeOptions = [{
  value: '1',
  label: '管线本体'
}, {
  value: '2',
  label: '排口信息'
}, {
  value: '3',
  label: '附属设施'
}, {
  value: '4',
  label: '环保设施'
}, {
  value: '5',
  label: '周边环境'
}]
export const OutletOptions = [{
  value: '1',
  label: '全部排口'
}, {
  value: '2',
  label: '内排口'
}, {
  value: '3',
  label: '外排口'
}]
export const AttachOptions = [
  {
    value: '1',
    label: '全部设施'
  }, {
    value: '2',
    label: '阀门'
  }, {
    value: '3',
    label: '管廊'
  }, {
    value: '4',
    label: '管架'
  }, {
    value: '5',
    label: '三通'
  }, {
    value: '6',
    label: '四通'
  }, {
    value: '7',
    label: '弯头'
  }]
export const PipelineOptions = [{
  value: '1',
  label: '全部管线'
}, {
  value: '2',
  label: '生活污水管线'
}, {
  value: '3',
  label: '含盐管线'
}, {
  value: '4',
  label: '雨水管线'
}, {
  value: '5',
  label: '含油管线'
}, {
  value: '6',
  label: '事故水管线'
}, {
  value: '7',
  label: '含碱管线'
}, {
  value: '8',
  label: '循环水管线'
}, {
  value: '9',
  label: '净化水管线'
}]
export const EnvironmentOptions = [
  {
    value: '1',
    label: '全部设施'
  }, {
    value: '2',
    label: '雨篦子'
  }, {
    value: '3',
    label: '防火堤'
  }, {
    value: '4',
    label: '集水池'
  }, {
    value: '5',
    label: '收集罐'
  }, {
    value: '6',
    label: '截流闸'
  }, {
    value: '7',
    label: '溢流堰'
  }, {
    value: '8',
    label: '隔油池'
  }, {
    value: '9',
    label: '泵'
  }]
export const SurroundingsOptions = [
  {
    value: '1',
    label: '全部周边环境'
  }, {
    value: '2',
    label: '医院'
  }, {
    value: '3',
    label: '景区'
  }, {
    value: '4',
    label: '自然保护区'
  }, {
    value: '5',
    label: '消防'
  }, {
    value: '6',
    label: '水体'
  }
]
src/conf/Topic.js
New file
@@ -0,0 +1,57 @@
export const TopicSelectAll = {
  name: '全选',
  check: false,
  icon: '/assets/images/menu/special.png'
}
export const TopicList = [{
  name: '污染源',
  id: 1,
  check: false,
  icon: '/assets/images/menu/special.png'
}, {
  name: '废水监测',
  id: 2,
  checked: false,
  icon: '/assets/images/menu/special.png'
}, {
  name: '废气监测',
  id: 3,
  checked: false,
  icon: '/assets/images/menu/special.png'
}, {
  name: '固废管理',
  id: 4,
  checked: false,
  icon: '/assets/images/menu/special.png'
}, {
  name: '环境风险',
  id: 5,
  checked: false,
  icon: '/assets/images/menu/special.png'
}, {
  name: '土壤及地下水',
  id: 6,
  checked: false,
  icon: '/assets/images/menu/special.png'
}, {
  name: '污雨水管网',
  id: 7,
  checked: false,
  icon: '/assets/images/menu/special.png'
}, {
  name: '预警报警',
  id: 8,
  checked: false,
  icon: '/assets/images/menu/special.png'
}, {
  name: '指标统计',
  id: 9,
  checked: false,
  icon: '/assets/images/menu/special.png'
}, {
  name: '应急地图',
  id: 10,
  checked: false,
  icon: '/assets/images/menu/special.png'
}]
src/store/modules/map.js
@@ -18,6 +18,10 @@
  datas: {
    sewers: []
  },
  topic: {
    currentTopic: '',
    topicCheckedList: []
  },
  config: config,
  serviceLayers: config.mapConfig.Layers
}
@@ -49,6 +53,9 @@
  },
  toggleServiceLayerFilter (state) {
    state.showServiceLayerFilter = !state.showServiceLayerFilter
  },
  setTopic (state, obj) {
    state.topic.topicCheckedList = obj
  }
}
const actions = {}