派生自 wuyushui/SewerAndRainNetwork

chenyabin
2021-04-01 fd4ebe4cf55ef5ecdbbb2fab9ecc3686907770bb
src/components/panel/topicSearch/EnvRiskSearch.vue
@@ -1,183 +1,284 @@
<template>
  <div>
  <div class="sewers-search" v-if="gdVisible">
    <div class="search-title">
      污雨水
      环境风险
    </div>
    <el-card class="search-panel">
    <div 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-form-item label="区域:" size="mini" class="search-panel-item">
          <el-select style="width: 100%"  v-model="form.areaVal" @change="areaType"  :popper-class="'select-down'">
            <el-option
                v-for="item in pipelineTypeOptions"
                :key="item.value"
                :label="item.label"
                :value="item.value">
                    v-for="item in areaTypeOptions"
                    :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-form-item label="企业名称" size="mini">
          <el-select style="width: 100%"  v-model="form.enterpriseVal"  @change="enterpriseType" :popper-class="'select-down'">
            <el-option
                v-for="item in dataTypeOptions"
                :key="item.value"
                :label="item.label"
                :value="item.value">
                    v-for="item in enterpriseTypeOptions"
                    :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 label="二级单位" size="mini">
          <el-select style="width: 100%"  v-model="form.enterpriseSubunitsVal"  @change="enterpriseSubunitsType" :popper-class="'select-down'">
            <el-option
                    v-for="item in enterpriseSubunitsTypeOptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value">
            </el-option>
          </el-select>
        </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-item label="风险级别" size="mini"></el-form-item>
        <el-radio-group v-model="form.type" class="levelOfRisk">
            <el-radio  v-for="(item,index) in levelOfRisk" :label="item.value" :key="index"><span class="levelOfRisk-type">{{item.name}}<i :style="'background:'+item.color"></i></span></el-radio>
        </el-radio-group>
        <!--              <el-form-item >-->
        <el-input v-model="form.keyword" size="mini"
                  placeholder="在此输入关键字搜索">
          <!--                  <el-button slot="append" icon="el-icon-search" size="mini"></el-button>-->
          <!--                  <i slot="prefix" class="el-input__icon el-icon-search"></i>-->
          <i slot="suffix" class="search-btn el-input__icon el-icon-search" @click="handleSearch"></i>
        </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>
    <el-scrollbar style="height:300px">
      <div class="environmental-risk-list" ><!-- v-for="(item,index) in list" :key="index" -->
        <i class="state"></i>
        <div>
            <h3>###炼化部</h3>
            <p>所属部门:<span>炼化部</span></p>
            <p>风险级别:<span>三级</span></p>
        </div>
      </div>
    </el-card>
      <div class="environmental-risk-list" ><!-- v-for="(item,index) in list" :key="index" -->
        <i class="state"></i>
        <div>
          <h3>###炼化部</h3>
          <p>所属部门:<span>炼化部</span></p>
          <p>风险级别:<span>三级</span></p>
        </div>
      </div>
      <div class="environmental-risk-list" ><!-- v-for="(item,index) in list" :key="index" -->
        <i class="state"></i>
        <div>
          <h3>###炼化部</h3>
          <p>所属部门:<span>炼化部</span></p>
          <p>风险级别:<span>三级</span></p>
        </div>
      </div>
      <div class="environmental-risk-list" ><!-- v-for="(item,index) in list" :key="index" -->
        <i class="state"></i>
        <div>
          <h3>###炼化部</h3>
          <p>所属部门:<span>炼化部</span></p>
          <p>风险级别:<span>三级</span></p>
        </div>
      </div>
      <div class="environmental-risk-list" ><!-- v-for="(item,index) in list" :key="index" -->
        <i class="state"></i>
        <div>
          <h3>###炼化部</h3>
          <p>所属部门:<span>炼化部</span></p>
          <p>风险级别:<span>三级</span></p>
        </div>
      </div>
      <div class="environmental-risk-list" ><!-- v-for="(item,index) in list" :key="index" -->
        <i class="state"></i>
        <div>
          <h3>###炼化部</h3>
          <p>所属部门:<span>炼化部</span></p>
          <p>风险级别:<span>三级</span></p>
        </div>
      </div>
    </el-scrollbar>
    <!--   <span class="location-btn" @click="handleLocation(item)">588</span> -->
    <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"
              small
              @current-change="handlePage"
              :page-size=pageSize
              layout="prev, pager, next"
              :total=total
              :current-page=current
              class="warnPagination"
      >
      </el-pagination>
    </el-card>
  </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>-->
</template>
<script>
import { PipelineTypeOptions } from '@/conf/layers/LayerSewers'
import WfsHelper from '@components/helpers/WfsHelper'
import AjaxUtils from '@utils/AjaxUtils'
export default {
  name: 'MonitorAreaTips',
  components: {},
  name: 'SewersSearch',
  data () {
    return {
      isPanelVisible: false,
      total: 0,
      gdVisible: true,
      list: [],
      labelList: PipelineTypeOptions[0].labelList,
      total: 0,
      inareaTypeOptions: [],
      enterpriseTypeOptions: [],
      enterpriseSubunitsTypeOptions: [],
      form: {
        name: '',
        region: '',
        date1: '',
        date2: '',
        delivery: false,
        type: [],
        resource: '',
        desc: ''
      }
        areaVal: '',
        enterpriseVal: '',
        enterpriseSubunitsVal: '',
        type: ''
      },
      // pageSize: 10,
      // current: 1,
      isWaybillHover: true,
      isRouteHover: false,
      levelOfRisk: [
        { name: '重大风险', value: '1', color: 'red' },
        { name: '一级风险', value: '2', color: 'sandybrown' },
        { name: '二级风险', value: '3', color: 'yellow' },
        { name: '三级风险', value: '4', color: 'green' }
      ]
    }
  },
  props: ['title'],
  methods: {
    handleClose (done) {
      console.log(done)
    },
    handleClick (tab, event) {
      console.log(tab, event)
    },
    handleSearch () {
    // 区域筛选
    areaType (val) {
      this.pipelineTypeOptions.forEach((itm) => {
        if (val === itm.value) {
        }
      })
    },
    // 企业筛选
    enterpriseType (val) {
      this.dataTypeOptions.forEach((itm) => {
        if (val === itm.value) {
        }
      })
    },
    // 二级单位筛选
    enterpriseSubunitsType (val) {
    },
    async handleSearch () {
      const param = {
        pipelineType: this.form.pipelineType,
        dataType: this.form.dataType
      }
      console.log(param)
      var wfsHelper = new WfsHelper()
      wfsHelper.addTypeName(this.form.query.layerName)
      wfsHelper.addLike(this.form.query.key, this.form.keyword)
      // const _this = this
      const res = await AjaxUtils.GetDataAsynByUrl(wfsHelper.getUrl(), {})
      if (res.data instanceof Object && Object.prototype.hasOwnProperty.call(res.data, 'features')) {
        this.list = res.data.features
      }
    },
    handleLocation (val) {
      console.log(val)
      const bound = this.L.geoJSON([val], {}).getBounds()
      var layer = window.serviceLayerHelper.getByLayerId(val.id)
      layer && layer.openPopup()
      this.$store.state.map.map.flyToBounds(bound)
    }
  },
  mounted () {
    this.handleSearch()
  }
}
</script>
<style lang="less">
.monitorHz {
  .el-message-box__content {
    background-color: #030D2E;
<style lang="less" scoped>
  .levelOfRisk-type{
    display: inline-block;
    position: relative;
    padding-right: 5px;
    color:#f5f5f5;
    i{
      display: block;
      width: 15px;
      height: 10px;
      position: absolute;
      top:50%;
      right: -15px;
      margin-top: -5px;
    }
  }
  .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;
  }
  .search-result {
    margin: 5px 0px 0px 0px;
    padding: 0px;
    border: #051842;
    overflow-y: scroll;
    background-color: #051842;
  }
  .B-TMD-table-list {
    margin-top: 10px;
    text-align: left;
    padding-left: 10px;
    color: #328EB5;
    width: 100%;
    line-height: 25px;
    background-color: #0B3B6D;
  }
  .footer-page {
  .el-radio.is-checked .levelOfRisk-type{color:#409EFF}
  .levelOfRisk{padding-left:20px}
  .levelOfRisk .el-radio{padding-bottom:6px}
.environmental-risk-list{
  border:1px solid @color;
  margin-right: 10px;
  margin-bottom: 15px;
  position: relative;
  padding-left:50px;
  padding-top:3px;
  padding-bottom:3px;
  color: #f5f5f5;
  .state{
    width: 30px;
    height: 30px;
    position: absolute;
    bottom: 5px;
    top:50%;
    left:10px;
    margin-top: -15px;
    border-radius: 50%;
    box-shadow: 0 0 3px #000;
    background: #0B3B6D;
  }
}
/******************以下公共部分**********/
  .sewers-search{
    position: relative;
    overflow: hidden;
    .search-panel{
      background-color: transparent;
      border: 1px solid @background-color-split;
      padding: 10px;
      /deep/ input {
        border-radius: 0;
        background-color: @background-color-split ;
        border: solid 1px @color ;
        color: @color-gray;
        font-size: 0.01rem;
        .el-select .el-input.is-focus .el-input__inner{
          border-color: @color;
        }
      }
      /deep/ input:focus{
        border-color: @color;
      }
    }
    .search-btn{
    }
    //location-btn{
    //
    //}
    .location-btn:hover,.el-input__icon:hover{
      color: @color;
      cursor: pointer;
    }
  }
</style>