派生自 wuyushui/SewerAndRainNetwork

seatonwan9
2021-05-31 d4fca49a4b70fe60c730d7e32e2035153a91fcc5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<template>
    <div class="search-panel">
        <el-form ref="form" :model="form" label-width="90px" class="search-form">
            <el-form-item label="企业名称:" size="mini" class="search-panel-item">
                <el-select style="width: 100%" v-model="form.eventName" @change="handlePipelineType"
                           :popper-class="'select-down'">
                    <el-option
                            v-for="item in form.eventNameList"
                            :key="item.code"
                            :label="item.name"
                            :value="item.name">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="资源环境:" size="mini" class="search-panel-item">
                <el-select style="width: 100%" v-model="form.pipelineType" @change="handlePipelineType"
                           :popper-class="'select-down'">
                    <el-option
                            v-for="item in items"
                            :key="item.code"
                            :label="item.name"
                            :value="item.name">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item :label="form.pipelineType+':'" size="mini">
                <el-select style="width: 100%" v-model="form.dataType" value-key="code"
                           :popper-class="'select-down'" @change="handleDataType">
                    <el-option
                            v-for="item in subItems"
                            :key="item.code"
                            :label="item.name"
                            :value="item">
                    </el-option>
                </el-select>
            </el-form-item>
            <div class="page_total">
                <p>共计
                    <span>{{total}}</span>
                    条记录
                </p>
            </div>
            <div class="rightButtonSearch">
                <el-input v-model="form.keyword" size="mini" placeholder="在此输入关键字搜索"></el-input>
                <el-button class="el-icon-search" @click="handleSearch"></el-button>
            </div>
        </el-form>
        <el-scrollbar style="height:286.22px">
            <div class="environmental-risk-list" v-for="(item,index) in list" :key="index"
                 :class="activeNum===index?'hover':''" @click="handleLocation(item,index)">
                <img class="state" :src="getImgSrc(item.properties.type)" style="background: none"/>
                <h3>{{changeAmount}}类型:{{item.properties.type}}</h3>
                <h5>{{changeAmount}}名称:{{item.properties.name}}</h5>
                <p>负责人:<span>{{item.properties.resperson}}</span></p>
                <p>电话:<span>{{item.properties.telephone}}</span></p>
                <p v-if="item.properties.address">地址:<span>{{item.properties.address}}</span></p>
                <p v-else>地址:<span>{{item.properties.adminzonename}}</span></p>
            </div>
        </el-scrollbar>
        <el-card class="footer-page" v-if="total > 10">
            <el-pagination
                    small
                    @current-change="handlePage"
                    :page-size=pageSize
                    layout="prev, pager, next"
                    :total=total
                    class="warnPagination"
            >
            </el-pagination>
        </el-card>
    </div>
</template>
 
<script>
// wfs ajax
import WfsHelper from '@components/helpers/WfsHelper'
import AjaxUtils from '@utils/AjaxUtils'
// 图层控制选择的数据
import { LayerEmergencySource } from '../../../../conf/layers/LayerEmergencySource'
import { LayerSurroundings } from '../../../../conf/layers/LayerSurroundings'
// 引入的方法
import { pulseEffect } from '../../../../utils/utils'
import { loadPointWfs, pointZoom } from '../../../helpers/LocateHelper'
 
export default {
  name: 'ResourcesQuery',
  data () {
    return {
      // form 表单绑定数据
      form: {
        eventName: '',
        pipelineType: LayerEmergencySource.name,
        dataType: '',
        keyword: '',
        eventNameList: [
          { name: '扬子石化' },
          { name: '仪征化纤' }
        ]
      },
      // 搜索到的数据绑定的active的样式
      activeNum: -1,
      // 搜索到的数据进行存储的list
      list: [],
      // 搜索到的数据数量
      total: 0,
      // 分页
      pageSize: 10,
      // form表单绑定的图层数据
      items: [LayerEmergencySource, LayerSurroundings],
      subItems: LayerEmergencySource.layers || LayerSurroundings.layers,
      // wfs
      WfsHelper: null,
      // 应急 || 周边 的区分绑定数据
      changeAmount: '资源'
    }
  },
  mounted () {
    this.wfsHelper = new WfsHelper()
  },
  methods: {
    // 页面切换 分页功能
    handlePage (page) {
      // this.wfsHelper.setPage(page)
      this.handleSearch()
    },
    // 搜索展示图片根据返回值展示
    getImgSrc (type) {
      // console.log(type)
      // const icon = this.form.dataType.icon
      return 'assets/images/map/sewers/' + type + '.png'
    },
    // form 表单选择数据数据选择分配
    handlePipelineType (val) {
      // console.log(val)
      this.list = []
      this.total = 0
      for (let i = 0; i < this.items.length; i++) {
        const item = this.items[i].name
        if (val === item.name) {
          this.subItems = item.layers
          return
        }
      }
      if (this.form.pipelineType === '应急资源') {
        this.subItems = LayerEmergencySource.layers
        this.changeAmount = '资源'
      } else if (this.form.pipelineType === '周边环境') {
        this.subItems = LayerSurroundings.layers
        this.changeAmount = '环境'
      }
    },
    // 二级from表单选择数据清空 已有展示数据
    handleDataType (val) {
      // console.log(val)
      this.list = []
      this.total = 0
    },
    // 点击搜索事件
    async handleSearch () {
      this.list = []
      this.total = 0
      this.wfsHelper.clearFilter()
      this.wfsHelper.setTypeName(['sewer:view_emergency'])
      this.wfsHelper.setMaxFeatures(100)
      // form表单选择搜索
      if (this.form.dataType) {
        this.wfsHelper.addEquals('orgname', '\'' + this.form.eventName + '\'')
        this.wfsHelper.addEquals('type', '\'' + this.form.dataType.name + '\'')
      }
      // 搜索框keyword
      if (this.form.keyword) {
        this.wfsHelper.addLike('name', this.form.keyword)
      }
      const res = await AjaxUtils.GetDataAsynByUrl(this.wfsHelper.getUrl(), {})
      console.log(res)
      if (res instanceof Object && Object.prototype.hasOwnProperty.call(res, 'features')) {
        this.list = res.features
        this.total = res.numberReturned
      }
    },
    // 查询定位功能
    handleLocation (val, index) {
      // console.log(val)
      this.activeNum = index
      const positionArea = [val.properties.y, val.properties.x]
      window.map.setView(positionArea, 17)
      pointZoom(positionArea, this.form.dataType.icon)
      // 图片
      loadPointWfs(positionArea)
      // 弹窗
      pulseEffect(positionArea)
    }
  }
}
</script>
 
<style lang="less" scoped>
 
</style>