修复组件缺少名字的问题
This commit is contained in:
		@@ -5,249 +5,251 @@
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  import * as echarts from 'echarts'
 | 
			
		||||
  import http from "dui/lib/js/request";
 | 
			
		||||
  export default {
 | 
			
		||||
    name: '',
 | 
			
		||||
import * as echarts from 'echarts'
 | 
			
		||||
import http from "dui/lib/js/request";
 | 
			
		||||
 | 
			
		||||
    data () {
 | 
			
		||||
      return {
 | 
			
		||||
        timer: null,
 | 
			
		||||
        v: `AiDvMap-${new Date().getTime()}`,
 | 
			
		||||
        chart: null
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    directives:{
 | 
			
		||||
      resize: {
 | 
			
		||||
        bind(el, binding) {
 | 
			
		||||
          let width = ''
 | 
			
		||||
          let height = ''
 | 
			
		||||
          function isReize() {
 | 
			
		||||
            const style = document.defaultView.getComputedStyle(el)
 | 
			
		||||
            if (width !== style.width || height !== style.height) {
 | 
			
		||||
              binding.value({
 | 
			
		||||
                width: style.width,
 | 
			
		||||
                height:style.height
 | 
			
		||||
              })
 | 
			
		||||
            }
 | 
			
		||||
            width = style.width
 | 
			
		||||
            height = style.height
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'AiDvMap',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      timer: null,
 | 
			
		||||
      v: `AiDvMap-${new Date().getTime()}`,
 | 
			
		||||
      chart: null
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  directives: {
 | 
			
		||||
    resize: {
 | 
			
		||||
      bind(el, binding) {
 | 
			
		||||
        let width = ''
 | 
			
		||||
        let height = ''
 | 
			
		||||
 | 
			
		||||
        function isReize() {
 | 
			
		||||
          const style = document.defaultView.getComputedStyle(el)
 | 
			
		||||
          if (width !== style.width || height !== style.height) {
 | 
			
		||||
            binding.value({
 | 
			
		||||
              width: style.width,
 | 
			
		||||
              height: style.height
 | 
			
		||||
            })
 | 
			
		||||
          }
 | 
			
		||||
          el.__vueSetInterval__ = setInterval(isReize, 300)
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        unbind(el) {
 | 
			
		||||
          clearInterval(el.__vueSetInterval__)
 | 
			
		||||
          width = style.width
 | 
			
		||||
          height = style.height
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        el.__vueSetInterval__ = setInterval(isReize, 300)
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      unbind(el) {
 | 
			
		||||
        clearInterval(el.__vueSetInterval__)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    mounted () {
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    this.$nextTick(() => {
 | 
			
		||||
      this.initChart()
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  methods: {
 | 
			
		||||
    onDomResize() {
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.initChart()
 | 
			
		||||
        this.chart.resize()
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    methods: {
 | 
			
		||||
      onDomResize () {
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.chart.resize()
 | 
			
		||||
        })
 | 
			
		||||
      },
 | 
			
		||||
    initChart() {
 | 
			
		||||
      this.chart = echarts.init(document.querySelector(`.${this.v}`))
 | 
			
		||||
      this.getData().then(res => {
 | 
			
		||||
        if (res.code === 0) {
 | 
			
		||||
          echarts.registerMap('滨海县', res.data)
 | 
			
		||||
 | 
			
		||||
      initChart () {
 | 
			
		||||
        this.chart = echarts.init(document.querySelector(`.${this.v}`))
 | 
			
		||||
        this.getData().then(res => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            echarts.registerMap('滨海县', res.data)
 | 
			
		||||
 | 
			
		||||
            let option = {
 | 
			
		||||
              geo: [
 | 
			
		||||
                {
 | 
			
		||||
                  map: "滨海县",
 | 
			
		||||
                  aspectScale: 1,
 | 
			
		||||
                  zoom: 0.65,
 | 
			
		||||
                  layoutCenter: ["50%", "50%"],
 | 
			
		||||
                  layoutSize: "180%",
 | 
			
		||||
          let option = {
 | 
			
		||||
            geo: [
 | 
			
		||||
              {
 | 
			
		||||
                map: "滨海县",
 | 
			
		||||
                aspectScale: 1,
 | 
			
		||||
                zoom: 0.65,
 | 
			
		||||
                layoutCenter: ["50%", "50%"],
 | 
			
		||||
                layoutSize: "180%",
 | 
			
		||||
                show: true,
 | 
			
		||||
                roam: false,
 | 
			
		||||
                emphasis: {
 | 
			
		||||
                  show: true,
 | 
			
		||||
                  roam: false,
 | 
			
		||||
                  emphasis: {
 | 
			
		||||
                    show: true,
 | 
			
		||||
                      label: {
 | 
			
		||||
                      textStyle: {
 | 
			
		||||
                        color: "#FFFFFF"
 | 
			
		||||
                      },
 | 
			
		||||
                    },
 | 
			
		||||
                    itemStyle: {
 | 
			
		||||
                      // areaColor: '#fff'
 | 
			
		||||
                    }
 | 
			
		||||
                  },
 | 
			
		||||
                  label: {
 | 
			
		||||
                    normal: {
 | 
			
		||||
                      show: false,
 | 
			
		||||
                      color: '#fff',
 | 
			
		||||
                      fontSize: '20'
 | 
			
		||||
                    }
 | 
			
		||||
                    textStyle: {
 | 
			
		||||
                      color: "#FFFFFF"
 | 
			
		||||
                    },
 | 
			
		||||
                  },
 | 
			
		||||
                  itemStyle: {
 | 
			
		||||
                    normal: {
 | 
			
		||||
                      borderColor: "rgba(2, 198, 220, 1)",
 | 
			
		||||
                      borderWidth: 2,
 | 
			
		||||
                      shadowColor: "rgba(2, 198, 220, 0.1)",
 | 
			
		||||
                      shadowOffsetY: 10,
 | 
			
		||||
                      shadowBlur: 120,
 | 
			
		||||
                      areaColor: "#163c56",
 | 
			
		||||
                    },
 | 
			
		||||
                    // areaColor: '#fff'
 | 
			
		||||
                  }
 | 
			
		||||
                },
 | 
			
		||||
                // 重影
 | 
			
		||||
                {
 | 
			
		||||
                  type: "map",
 | 
			
		||||
                  map: "滨海县",
 | 
			
		||||
                  zlevel: -1,
 | 
			
		||||
                  aspectScale: 1,
 | 
			
		||||
                  zoom: 0.65,
 | 
			
		||||
                  layoutCenter: ["50%", "51%"],
 | 
			
		||||
                  layoutSize: "180%",
 | 
			
		||||
                  roam: false,
 | 
			
		||||
                  silent: true,
 | 
			
		||||
                  itemStyle: {
 | 
			
		||||
                    normal: {
 | 
			
		||||
                      borderWidth: 1,
 | 
			
		||||
                      // borderColor:"rgba(17, 149, 216,0.6)",
 | 
			
		||||
                      borderColor: "rgba(2, 198, 220, 0.6)",
 | 
			
		||||
                      shadowColor: "rgba(2, 198, 220, 0.6)",
 | 
			
		||||
                      shadowOffsetY: 5,
 | 
			
		||||
                      shadowBlur: 15,
 | 
			
		||||
                      areaColor: "rgba(5,21,35,0.1)",
 | 
			
		||||
                    },
 | 
			
		||||
                  },
 | 
			
		||||
                label: {
 | 
			
		||||
                  normal: {
 | 
			
		||||
                    show: false,
 | 
			
		||||
                    color: '#fff',
 | 
			
		||||
                    fontSize: '20'
 | 
			
		||||
                  }
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  type: "map",
 | 
			
		||||
                  map: "滨海县",
 | 
			
		||||
                  zlevel: -2,
 | 
			
		||||
                  aspectScale: 1,
 | 
			
		||||
                  zoom: 0.65,
 | 
			
		||||
                  layoutCenter: ["50%", "52%"],
 | 
			
		||||
                  layoutSize: "180%",
 | 
			
		||||
                  roam: false,
 | 
			
		||||
                  silent: true,
 | 
			
		||||
                  itemStyle: {
 | 
			
		||||
                    normal: {
 | 
			
		||||
                      borderWidth: 1,
 | 
			
		||||
                      // borderColor: "rgba(57, 132, 188,0.4)",
 | 
			
		||||
                      borderColor: "rgba(2, 198, 220, 0.4)",
 | 
			
		||||
                      shadowColor: "rgba(2, 198, 220, 0.4)",
 | 
			
		||||
                      shadowOffsetY: 5,
 | 
			
		||||
                      shadowBlur: 15,
 | 
			
		||||
                      areaColor: "transpercent",
 | 
			
		||||
                    },
 | 
			
		||||
                  },
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  type: "map",
 | 
			
		||||
                  map: "滨海县",
 | 
			
		||||
                  zlevel: -3,
 | 
			
		||||
                  aspectScale: 1,
 | 
			
		||||
                  zoom: 0.65,
 | 
			
		||||
                  layoutCenter: ["50%", "53%"],
 | 
			
		||||
                  layoutSize: "180%",
 | 
			
		||||
                  roam: false,
 | 
			
		||||
                  silent: true,
 | 
			
		||||
                  itemStyle: {
 | 
			
		||||
                    normal: {
 | 
			
		||||
                      borderWidth: 1,
 | 
			
		||||
                      // borderColor: "rgba(11, 43, 97,0.8)",
 | 
			
		||||
                      borderColor: "rgba(2, 198, 220, 0.2)",
 | 
			
		||||
                      shadowColor: "rgba(2, 198, 220, 0.2)",
 | 
			
		||||
                      shadowOffsetY: 15,
 | 
			
		||||
                      shadowBlur: 10,
 | 
			
		||||
                      areaColor: "transpercent",
 | 
			
		||||
                    },
 | 
			
		||||
                itemStyle: {
 | 
			
		||||
                  normal: {
 | 
			
		||||
                    borderColor: "rgba(2, 198, 220, 1)",
 | 
			
		||||
                    borderWidth: 2,
 | 
			
		||||
                    shadowColor: "rgba(2, 198, 220, 0.1)",
 | 
			
		||||
                    shadowOffsetY: 10,
 | 
			
		||||
                    shadowBlur: 120,
 | 
			
		||||
                    areaColor: "#163c56",
 | 
			
		||||
                  },
 | 
			
		||||
                }
 | 
			
		||||
              ],
 | 
			
		||||
              series: [
 | 
			
		||||
                {
 | 
			
		||||
                  type: 'scatter',
 | 
			
		||||
                  coordinateSystem: 'geo',
 | 
			
		||||
                  z: 3,
 | 
			
		||||
                  zlevel: 3,
 | 
			
		||||
                  // symbol: 'none',
 | 
			
		||||
                  symbolSize: 16,
 | 
			
		||||
                  rippleEffect: {
 | 
			
		||||
                    period: 2,
 | 
			
		||||
                    scale: 4,
 | 
			
		||||
                    brushType: 'fill'
 | 
			
		||||
              },
 | 
			
		||||
              // 重影
 | 
			
		||||
              {
 | 
			
		||||
                type: "map",
 | 
			
		||||
                map: "滨海县",
 | 
			
		||||
                zlevel: -1,
 | 
			
		||||
                aspectScale: 1,
 | 
			
		||||
                zoom: 0.65,
 | 
			
		||||
                layoutCenter: ["50%", "51%"],
 | 
			
		||||
                layoutSize: "180%",
 | 
			
		||||
                roam: false,
 | 
			
		||||
                silent: true,
 | 
			
		||||
                itemStyle: {
 | 
			
		||||
                  normal: {
 | 
			
		||||
                    borderWidth: 1,
 | 
			
		||||
                    // borderColor:"rgba(17, 149, 216,0.6)",
 | 
			
		||||
                    borderColor: "rgba(2, 198, 220, 0.6)",
 | 
			
		||||
                    shadowColor: "rgba(2, 198, 220, 0.6)",
 | 
			
		||||
                    shadowOffsetY: 5,
 | 
			
		||||
                    shadowBlur: 15,
 | 
			
		||||
                    areaColor: "rgba(5,21,35,0.1)",
 | 
			
		||||
                  },
 | 
			
		||||
                  label: {
 | 
			
		||||
                    show: true,
 | 
			
		||||
                    formatter: e => {
 | 
			
		||||
                      const name = e.data[3]
 | 
			
		||||
                      const value = e.data[2]
 | 
			
		||||
                      return `{a|${name}}\n{b|${value}}`
 | 
			
		||||
                },
 | 
			
		||||
              },
 | 
			
		||||
              {
 | 
			
		||||
                type: "map",
 | 
			
		||||
                map: "滨海县",
 | 
			
		||||
                zlevel: -2,
 | 
			
		||||
                aspectScale: 1,
 | 
			
		||||
                zoom: 0.65,
 | 
			
		||||
                layoutCenter: ["50%", "52%"],
 | 
			
		||||
                layoutSize: "180%",
 | 
			
		||||
                roam: false,
 | 
			
		||||
                silent: true,
 | 
			
		||||
                itemStyle: {
 | 
			
		||||
                  normal: {
 | 
			
		||||
                    borderWidth: 1,
 | 
			
		||||
                    // borderColor: "rgba(57, 132, 188,0.4)",
 | 
			
		||||
                    borderColor: "rgba(2, 198, 220, 0.4)",
 | 
			
		||||
                    shadowColor: "rgba(2, 198, 220, 0.4)",
 | 
			
		||||
                    shadowOffsetY: 5,
 | 
			
		||||
                    shadowBlur: 15,
 | 
			
		||||
                    areaColor: "transpercent",
 | 
			
		||||
                  },
 | 
			
		||||
                },
 | 
			
		||||
              },
 | 
			
		||||
              {
 | 
			
		||||
                type: "map",
 | 
			
		||||
                map: "滨海县",
 | 
			
		||||
                zlevel: -3,
 | 
			
		||||
                aspectScale: 1,
 | 
			
		||||
                zoom: 0.65,
 | 
			
		||||
                layoutCenter: ["50%", "53%"],
 | 
			
		||||
                layoutSize: "180%",
 | 
			
		||||
                roam: false,
 | 
			
		||||
                silent: true,
 | 
			
		||||
                itemStyle: {
 | 
			
		||||
                  normal: {
 | 
			
		||||
                    borderWidth: 1,
 | 
			
		||||
                    // borderColor: "rgba(11, 43, 97,0.8)",
 | 
			
		||||
                    borderColor: "rgba(2, 198, 220, 0.2)",
 | 
			
		||||
                    shadowColor: "rgba(2, 198, 220, 0.2)",
 | 
			
		||||
                    shadowOffsetY: 15,
 | 
			
		||||
                    shadowBlur: 10,
 | 
			
		||||
                    areaColor: "transpercent",
 | 
			
		||||
                  },
 | 
			
		||||
                },
 | 
			
		||||
              }
 | 
			
		||||
            ],
 | 
			
		||||
            series: [
 | 
			
		||||
              {
 | 
			
		||||
                type: 'scatter',
 | 
			
		||||
                coordinateSystem: 'geo',
 | 
			
		||||
                z: 3,
 | 
			
		||||
                zlevel: 3,
 | 
			
		||||
                // symbol: 'none',
 | 
			
		||||
                symbolSize: 16,
 | 
			
		||||
                rippleEffect: {
 | 
			
		||||
                  period: 2,
 | 
			
		||||
                  scale: 4,
 | 
			
		||||
                  brushType: 'fill'
 | 
			
		||||
                },
 | 
			
		||||
                label: {
 | 
			
		||||
                  show: true,
 | 
			
		||||
                  formatter: e => {
 | 
			
		||||
                    const name = e.data[3]
 | 
			
		||||
                    const value = e.data[2]
 | 
			
		||||
                    return `{a|${name}}\n{b|${value}}`
 | 
			
		||||
                  },
 | 
			
		||||
                  fontSize: 16,
 | 
			
		||||
                  rich: {
 | 
			
		||||
                    a: {
 | 
			
		||||
                      width: '100%',
 | 
			
		||||
                      color: '#fff',
 | 
			
		||||
                      lineHeight: 20,
 | 
			
		||||
                      fontSize: 16
 | 
			
		||||
                    },
 | 
			
		||||
                    fontSize: 16,
 | 
			
		||||
                    rich: {
 | 
			
		||||
                      a: {
 | 
			
		||||
                        width: '100%',
 | 
			
		||||
                        color: '#fff',
 | 
			
		||||
                        lineHeight: 20,
 | 
			
		||||
                        fontSize: 16
 | 
			
		||||
                    b: {
 | 
			
		||||
                      backgroundColor: {
 | 
			
		||||
                        // image: require('@/assets/images/point.png')
 | 
			
		||||
                      },
 | 
			
		||||
                      b: {
 | 
			
		||||
                        backgroundColor: {
 | 
			
		||||
                          // image: require('@/assets/images/point.png')
 | 
			
		||||
                        },
 | 
			
		||||
                        color: '#fff',
 | 
			
		||||
                        height: 56,
 | 
			
		||||
                        align: 'center',
 | 
			
		||||
                        width: 50,
 | 
			
		||||
                        fontSize: 16
 | 
			
		||||
                      }
 | 
			
		||||
                      color: '#fff',
 | 
			
		||||
                      height: 56,
 | 
			
		||||
                      align: 'center',
 | 
			
		||||
                      width: 50,
 | 
			
		||||
                      fontSize: 16
 | 
			
		||||
                    }
 | 
			
		||||
                  },
 | 
			
		||||
                  data: []
 | 
			
		||||
                }
 | 
			
		||||
              ]
 | 
			
		||||
            }
 | 
			
		||||
            this.chart.setOption(option)
 | 
			
		||||
                  }
 | 
			
		||||
                },
 | 
			
		||||
                data: []
 | 
			
		||||
              }
 | 
			
		||||
            ]
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      convertData (data) {
 | 
			
		||||
        return data.map(v => {
 | 
			
		||||
          return [this.qqMapTransBMap(v.point[1], v.point[0]).lng, this.qqMapTransBMap(v.point[1], v.point[0]).lat, v.value, v.name]
 | 
			
		||||
        })
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      qqMapTransBMap (lng, lat) {
 | 
			
		||||
        const x_pi = 3.14159265358979324 * 3000.0 / 180.0
 | 
			
		||||
        var x = lng
 | 
			
		||||
        var y = lat
 | 
			
		||||
        var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi)
 | 
			
		||||
        var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi)
 | 
			
		||||
 | 
			
		||||
        return {
 | 
			
		||||
          lng: z * Math.cos(theta) + 0.0065,
 | 
			
		||||
          lat: z * Math.sin(theta) + 0.006
 | 
			
		||||
          this.chart.setOption(option)
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
      getData () {
 | 
			
		||||
        return http.post(`/app/appdvcpconfig/apiForward?url=${encodeURIComponent(`https://geo.datav.aliyun.com/areas_v3/bound/geojson?code=${this.$store.state.user.info.areaId.substr(0, 6)}`)}`, )
 | 
			
		||||
    convertData(data) {
 | 
			
		||||
      return data.map(v => {
 | 
			
		||||
        return [this.qqMapTransBMap(v.point[1], v.point[0]).lng, this.qqMapTransBMap(v.point[1], v.point[0]).lat, v.value, v.name]
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    qqMapTransBMap(lng, lat) {
 | 
			
		||||
      const x_pi = 3.14159265358979324 * 3000.0 / 180.0
 | 
			
		||||
      var x = lng
 | 
			
		||||
      var y = lat
 | 
			
		||||
      var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi)
 | 
			
		||||
      var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi)
 | 
			
		||||
 | 
			
		||||
      return {
 | 
			
		||||
        lng: z * Math.cos(theta) + 0.0065,
 | 
			
		||||
        lat: z * Math.sin(theta) + 0.006
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    getData() {
 | 
			
		||||
      return http.post(`/app/appdvcpconfig/apiForward?url=${encodeURIComponent(`https://geo.datav.aliyun.com/areas_v3/bound/geojson?code=${this.$store.state.user.info.areaId.substr(0, 6)}`)}`,)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
  .AiDvMap {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    justify-content: center;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 100%;
 | 
			
		||||
  }
 | 
			
		||||
.AiDvMap {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  justify-content: center;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,6 @@ const install = function (Vue) {
 | 
			
		||||
  let contexts = require.context('.', true, /[\\\/]Ai([^\\\/]+)\.vue$/);
 | 
			
		||||
  if (contexts) {
 | 
			
		||||
    contexts.keys().map((e) => {
 | 
			
		||||
      console.log(e)
 | 
			
		||||
      components.push(contexts(e).default);
 | 
			
		||||
      Vue.component(contexts(e).default.name, contexts(e).default);
 | 
			
		||||
    });
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user