派生自 wuyushui/SewerAndRainNetwork

徐旺旺
2021-05-10 cb85033879c74f34925a303402c1ad3e4a8646f2
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
/**
 * 废水
 */
// import WasteWater from "../../table/components/WasteWater";
 
const AnimalService = require('../service/AnimalService').default
const mapApi = require('../../../api/mapApi').default
// 弹窗数据引进
const WasteWaterIndex = require('@components/BaseNav/WasteWater/WasteWaterIndex').default
// const publicBounced = require('../../BaseNav/PublicBounced/PublicBounced').default
 
const NormalImg = '/assets/images/map/wastewater/fs_bright_green.png' // 正常
const OffImg = '/assets/images/map/wastewater/fs_gray.png' // 停运
const AbnormalImg = '/assets/images/map/wastewater/fs_blue.png' // 异常
const MissImg = '/assets/images/map/wastewater/fs_bright_green.png' // 缺失
const AlarmImg = '/assets/images/map/wastewater/fs_red.png' // 报警闪烁
const WarnImg = '/assets/images/map/wastewater/fs_orange.png' // 预警闪烁
 
module.exports = function () {
  /**
   * 返回marker对象数组
   * @param L leaflet对象
   */
  this.init = async (layer, L) => {
    this.animalService = new AnimalService({
      L: L,
      layer: layer
    })
    const res = await mapApi.getWasteWater()
    const data = res.Result.DataInfo || {}
    for (let i = 0; i < data.length; i++) {
      // 经纬度 位置
      const positionX = data[i].Latitude
      const positionY = data[i].Longitude
 
      // 定义类型 用来区分数据的不同
      const testValue = data[i].ContrLevel
      const iconUrl = this.differentTypes(testValue)
      const marker = L.marker([positionX, positionY], {
        totransferData: data[i],
        icon: L.icon({
          iconUrl: iconUrl,
          iconSize: [35, 35],
          iconAnchor: [15, 15]
        })
      })
      layer.addLayer(marker)
    }
  }
 
  // 分割线-------------------------------------------------------------------------------
  this.bindTooltip = (layer) => {
    return layer.options.totransferData.Name
  }
 
  this.clickListener = (e) => {
    // 点击marker的pulse()光波
    this.animalService.pulseEffect(e.latlng)
    // 弹框标题
    const title = e.layer.options.totransferData.Name
    const res = e.layer.options.totransferData
    window.$layer.open({
      content: {
        content: WasteWaterIndex, // 组件
        parent: this, // 父组件
        data: { // 传递的参数
          // info: this.info
          storagePlaceId: res
        }
      },
      title: title // 标题
    })
    this.setPanTo(e.latlng, 150)
  }
  this.requestWasteWaterData = async (e) => {
    // 基本信息 和 详细信息 展示数据所需参数
    // const dataValue = {
    //   StoragePlaceId: e.layer.options.test.StoragePlaceId
    // }
    // 弹框标题
    // const title = e.layer.options.totransferData.Name
    // console.log(e.layer.options)
    // 基本信息 tabs
    // const resultBasic = await mapApi.getWasteWater(dataValue)
    // 图表信息展示 echarts
    // 实时数据
    // const resultReal = await mapApi.getDataItems(Value)
    // 小时数据 及 明细表数据
    // const result = await mapApi.getQueryOnlineMonData(dataValue)
    // 日数据 及 明细表数据
    // const result = await mapApi.getQueryOnlineMonData(dataValue)
    // 人工数据
    // const resultEchart = await mapApi.getQueryLabMonData(dataValue)
 
    // // 绑定弹框实例
    // const PublicBounced = window.Vue.extend(publicBounced)
    // const instance = new PublicBounced().$mount()
    // document.body.appendChild(instance.$el)
    // // document.body.removeChild(instance.$el)
    // // 通过方法 向绑定弹框传递数据
    // instance.setData(title, resultBasic.Result.DataInfo, resultDetailed.Result.DataInfo, 'gufei')
    /* flyTo()弹出框平移事件 */
  }
 
  // 根据返回值的不同标记不同图片
  this.differentTypes = (testValue) => {
    let testChange
    switch (testValue) {
      case 1:
        testChange = NormalImg
        break
      case 2:
        testChange = OffImg
        break
      case 3:
        testChange = AbnormalImg
        break
      case 4:
        testChange = MissImg
        break
      case 5:
        testChange = NormalImg
        break
      case 6:
        testChange = AlarmImg
        break
      case 7:
        testChange = AbnormalImg
        break
      case 8:
        testChange = WarnImg
        break
    }
    return testChange
  }
  // flayTo() 弹框的可滑动事件
  this.setPanTo = (pos, value) => {
    var position = pos
    position = window.map.latLngToLayerPoint(position)
    position.y += value
    position = window.map.layerPointToLatLng(position)
    window.map.flyTo(position)
  }
}