From 2a803059365f15f350a9c088d3a4a5c1ac234fde Mon Sep 17 00:00:00 2001
From: YANGDL <114714267@qq.com>
Date: 星期二, 02 三月 2021 16:19:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 /dev/null                                                 |   78 -------------------
 src/conf/Constants.js                                     |    6 +
 src/conf/MapConfig.js                                     |    4 
 src/assets/css/map/map-elem-ui.less                       |    8 ++
 src/components/helpers/ServiceLayerHelper.js              |    2 
 src/components/helpers/WfsHelper.js                       |   77 +++++++++++++++++++
 src/views/popup/Popup.vue                                 |   19 ++--
 src/components/LayerController/modules/LcServiceLayer.vue |   17 ++-
 8 files changed, 114 insertions(+), 97 deletions(-)

diff --git a/src/assets/css/map/map-elem-ui.less b/src/assets/css/map/map-elem-ui.less
index 0c2c609..daf4784 100644
--- a/src/assets/css/map/map-elem-ui.less
+++ b/src/assets/css/map/map-elem-ui.less
@@ -5,6 +5,14 @@
     border-color: @color;
 }
 
+.el-tabs{
+  .el-tabs__item{
+      padding: 0 10px;
+      text-align: center;
+      height: 20px;
+      line-height: 20px;
+  }
+}
 .select-down {
     border: none !important;
     background-color: @background-color !important;
diff --git a/src/components/LayerController/modules/LcServiceLayer.vue b/src/components/LayerController/modules/LcServiceLayer.vue
index 9833b42..de69136 100644
--- a/src/components/LayerController/modules/LcServiceLayer.vue
+++ b/src/components/LayerController/modules/LcServiceLayer.vue
@@ -4,7 +4,8 @@
             <div v-for="item in serviceLayers" :key="item.code" class="layerbox">
                 <div><input type="checkbox" :name="'wmsLayer_'+item.code" :checked="item.checked" :value="item.code"
                             @change="swAllLayers(item)"/>{{ item.name }} <span @click="swFilter(item)"
-                                                                               class="btn-filter">杩囨护</span>
+                                                                               class="btn-filter">杩囨护</span><span @click="loadWfs()"
+                                                                                                                 class="btn-filter">娴嬭瘯</span>
                 </div>
                 <div class="layerbox-item">
                     <div class="basemap-layer-item" v-for="itm in item.layers" :key="itm.code"><input type="checkbox"
@@ -22,9 +23,9 @@
 </template>
 
 <script>
-import WmsHelper from '../../helpers/WmsHelper'
-import AjaxUtils from '@/utils/AjaxUtils'
+import WfsHelper from '../../helpers/WfsHelper'
 import LcServiceLayerFilter from '@components/LayerController/modules/LcServiceLayerFilter'
+import AjaxUtils from '../../../utils/AjaxUtils'
 
 export default {
   name: 'LcServiceLayer',
@@ -53,8 +54,12 @@
       this.updateWms()
     },
     loadWfs () {
-      AjaxUtils.GetDataAsynByUrl('http://xearth.cn:6289/server/ogcserver/PipeLineTest/wfs?version=1.0.0&TYPENAME=pipeline&REQUEST=getfeature&OUTPUTFORMAT=json&maxFeatures=20000', {}, (res) => {
-        window.L.geoJSON(res).addTo(window.map)
+      var wfsHelper = new WfsHelper()
+      wfsHelper.addTypeName('绠$嚎鐐�')
+      wfsHelper.addEquals('pipename', '鐮旂┒闄�01璺痀S000001')
+
+      AjaxUtils.GetDataAsynByUrl(wfsHelper.getUrl(), {}, (res) => {
+        console.log(res)
       })
     },
     swWmsLayer (url, itm) {
@@ -74,7 +79,7 @@
     },
     updateWms () {
       var mapConfig = this.mapConfig
-      var wmsHelper = new WmsHelper()
+      var wmsHelper = new WfsHelper()
       wmsHelper.initMapConfig(mapConfig)
       var wmsLayersMap = wmsHelper.getWmsLayersMap()
       for (var k in wmsLayersMap) {
diff --git a/src/components/helpers/ServiceLayerHelper.js b/src/components/helpers/ServiceLayerHelper.js
index 60325fb..e3a1af7 100644
--- a/src/components/helpers/ServiceLayerHelper.js
+++ b/src/components/helpers/ServiceLayerHelper.js
@@ -118,7 +118,7 @@
           })
       }
     }).bindPopup(function (layer) {
-      that.popupComp.setDatas(layer.feature)
+      that.popupComp.setDatas(layer)
       that.popupComp.setShow()
       return that.popupComp.$el
     }, {
diff --git a/src/components/helpers/WfsHelper.js b/src/components/helpers/WfsHelper.js
new file mode 100644
index 0000000..3208ca8
--- /dev/null
+++ b/src/components/helpers/WfsHelper.js
@@ -0,0 +1,77 @@
+/**
+ * 鍔犺浇WMS,鎷兼帴FILTER,LAYERS鍙傛暟绛�
+ */
+import MapConfig from '../../conf/MapConfig'
+function WfsHelper () {
+  this.filters = []
+  this.typeNames = []
+  this.url = MapConfig.BLUEMAP_HOST + '/server/ogcserver/PipeLine/wfs'
+  this.params = {
+    REQUEST: 'getfeature',
+    OUTPUTFORMAT: 'JSON',
+    maxFeatures: 20000,
+    version: '1.0.0'
+  }
+
+  this.addTypeName = (typeName) => {
+    this.typeNames.push(typeName)
+  }
+
+  this.addEquals = (property, literal) => {
+    var filter = '<PropertyIsEqualTo><PropertyName>' + property + '</PropertyName><Literal>' + literal + '</Literal></PropertyIsEqualTo>'
+    this.filters.push(filter)
+  }
+
+  this.addLike = (property, literal) => {
+    var filter = '<PropertyIsLike><PropertyName>' + property + '</PropertyName><Literal>' + literal + '</Literal></PropertyIsLike>'
+    this.filters.push(filter)
+  }
+
+  /**
+   * 寰楀埌filter鍙傛暟鍊�
+   * @returns {string|null}
+   */
+  this.getFilterParams = () => {
+    var head = '<Filter xmlns="http://www.opengis.net/ogc">'
+    var end = '</Filter>'
+    var filter = ''
+    if (this.filters.length > 0) {
+      for (var i = 0; i < this.filters.length; i++) {
+        filter += this.filters[i]
+      }
+      // 褰撴潯浠舵暟 > 1鏃讹紝闇�瑕佺敤and鏍囩鍖呰9
+      if (this.filters.length > 1) {
+        return ('FILTER=' + head + '<And>' + filter + '</And>' + end)
+      }
+      return ('FILTER=' + head + filter + end)
+    }
+    return null
+  }
+
+  this.getUrlParams = () => {
+    var params = ''
+    for (var p in this.params) {
+      params += (p + '=' + this.params[p] + '&')
+    }
+    // 鎷兼帴typename鍙傛暟
+    params += 'typename=' + this.typeNames.join(',')
+    // 鎷兼帴filter鍙傛暟
+    var filterParam = this.getFilterParams()
+    if (filterParam) {
+      params += '&' + filterParam
+    }
+    return encodeURI(params)
+  }
+
+  this.getUrl = () => {
+    var url = this.url
+    if (url.indexOf('?') > 0) {
+      url += '&'
+    } else {
+      url += '?'
+    }
+    return url + this.getUrlParams()
+  }
+}
+
+export default WfsHelper
diff --git a/src/components/helpers/WmsHelper.js b/src/components/helpers/WmsHelper.js
deleted file mode 100644
index af18c6c..0000000
--- a/src/components/helpers/WmsHelper.js
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * 鍔犺浇WMS,鎷兼帴FILTER,LAYERS鍙傛暟绛�
- */
-function WmsHelper () {
-  this.filters = {}
-  this.wmsLayersMap = {}
-
-  this.initMapConfig = (mapConfig) => {
-    var serviceLayers = mapConfig.ServiceLayers
-    for (var i = 0; i < serviceLayers.length; i++) {
-      var service = serviceLayers[i]
-      var checked = service.checked
-      if (!checked) {
-        break
-      }
-      var filtersGroup = service.filtersGroup
-      if (filtersGroup) {
-        this.initLayer(service.code, filtersGroup)
-      }
-    }
-  }
-  this.initLayer = (wms, layersGroup) => {
-    for (var i = 0; i < layersGroup.length; i++) {
-      var filters = layersGroup[i].filters
-      for (var j = 0; j < filters.length; j++) {
-        var layer = filters[j]
-        var checked = layer.checked
-        // var code = layer.code
-        var code = layer.name
-        if (checked) {
-          this.addLayer(wms, code)
-        }
-      }
-    }
-  }
-  this.initFilter = () => {
-    /* for (var i = 0; i < filters.length; i++) {
-             var filter = filters[i]
-             this.addFilter()
-         } */
-  }
-  this.addLayer = (wms, layer) => {
-    var wmsLayer = this.wmsLayersMap[wms]
-    if (wmsLayer) {
-      wmsLayer[wmsLayer.length] = layer
-    } else {
-      this.wmsLayersMap[wms] = [layer]
-    }
-  }
-  this.addFilter = (condition) => {
-    // var filter = this.filters[layer]
-    // if (filter) {
-    this.filters[this.filters.length] = condition
-    // } else {
-    //    this.filters[layer] = [condition]
-    // }
-  }
-  this.getWmsLayersMap = () => {
-    return this.wmsLayersMap
-  }
-  this.getFilterURL = () => {
-    var filterURL = ''
-    var conditions = ''
-    for (var f in this.filters) {
-      var filters = this.filters[f]
-      for (var i = 0; i < filters.length; i++) {
-        conditions += filters[i]
-        if (i < filters.length) {
-          conditions += ','
-        }
-      }
-      filterURL += f + '.(' + conditions + ');'
-    }
-    return filterURL.substr(0, filterURL.length - 1)
-  }
-}
-
-export default WmsHelper
diff --git a/src/conf/Constants.js b/src/conf/Constants.js
index 9e89a92..72bb8f0 100644
--- a/src/conf/Constants.js
+++ b/src/conf/Constants.js
@@ -27,5 +27,9 @@
   embeddingmode: '鍩嬭鏂瑰紡',
   pipetrenchtype: '绠℃矡绫诲瀷',
   datecollected: '鎺㈡祴鏃堕棿',
-  operationalstatus: '杩愯鐘舵��'
+  operationalstatus: '杩愯鐘舵��',
+  acquisitionpeople: '閲囬泦浜�',
+  acquisitiondate: '閲囬泦鏃ユ湡',
+  fourtype: '鍥涢�氱被鍨�',
+  fourm: '鍥涢�氭潗鏂�'
 }
diff --git a/src/conf/MapConfig.js b/src/conf/MapConfig.js
index fdaa00f..4512d66 100644
--- a/src/conf/MapConfig.js
+++ b/src/conf/MapConfig.js
@@ -7,8 +7,8 @@
 const HOST_URL = curWwwPath.substring(0, pos)
 
 // service涓绘満閰嶇疆
-const APP_GIS_HOST = 'http://xearth.cn:6299'
-// const APP_GIS_HOST_PIPELINE = 'http://xearth.cn:6289'
+// const APP_GIS_HOST = 'http://xearth.cn:6299'
+const APP_GIS_HOST = 'http://xearth.cn:6289'
 
 // 鑷畾涔変富鏈洪厤缃�
 const BLUEMAP_HOST = APP_GIS_HOST // 鍏徃鍙戝竷鐨勫湴鍥炬湇鍔★紝鐢ㄤ簬娴嬭瘯鐨勫湴鍧�
diff --git a/src/views/popup/Popup.vue b/src/views/popup/Popup.vue
index ac5d088..eece635 100644
--- a/src/views/popup/Popup.vue
+++ b/src/views/popup/Popup.vue
@@ -1,6 +1,6 @@
 <template>
   <div id="popup" v-if="isShow" class="s-map-popup-panel">
-    <el-tabs v-model="tabsValue" type="card" @edit="handleTabsEdit">
+    <el-tabs v-model="tabsValue" type="card">
       <el-tab-pane
               :key="item.name"
               v-for="(item) in tabs"
@@ -8,8 +8,8 @@
               :name="item.name"
       >
         <el-row v-for="(v,k) in filter" :key="k">
-          <el-col :span="12">{{k}}</el-col>
-          <el-col :span="12">{{v}}</el-col>
+          <el-col :span="10"><B>{{k}}锛�</B></el-col>
+          <el-col :span="14">{{v}}</el-col>
         </el-row>
       </el-tab-pane>
     </el-tabs>
@@ -25,10 +25,7 @@
   data () {
     return {
       tabsValue: '1',
-      tabs: [{
-        title: '姹¢洦姘�',
-        name: '1'
-      }],
+      tabs: [],
       tabIndex: 2,
       isShow: false,
       properties: {},
@@ -75,8 +72,12 @@
         this.editableTabs = tabs.filter(tab => tab.name !== targetName)
       }
     },
-    setDatas (feature) {
-      this.properties = feature.properties
+    setDatas (layer) {
+      this.tabs = [{
+        title: layer.feature.id,
+        name: '1'
+      }]
+      this.properties = layer.feature.properties
     },
     setShow () {
       // this.style.display='auto'

--
Gitblit v1.8.0