| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 | 
							- (function () {
 
-     Vue.component('map-chart', {
 
-         template: '<div class="chart_box" >\
 
-                         <div :id="chartid" class="chart_box"></div>\
 
-                     </div>',
 
-         props: ['config'],
 
-         data: function () {
 
-             return {
 
-                 chartid: _.uniqueId("chart_"),
 
-                 chart: null,
 
-                 lastIndex: null
 
-             }
 
-         },
 
-         mounted: function () {
 
-             var that = this;
 
-             this.$nextTick(function () {
 
-                 that.chart = echarts.init(document.getElementById(that.chartid));
 
-                 // that.chart.setOption(that.getOption()); //试着一下
 
-                 this.chart.on('click', function (params) { //点击事件
 
-                     that.$emit('clickMap', params) //传给外面点击事件
 
-                     if (params.componentType === 'series') {
 
-                         if (that.lastIndex !== null) {
 
-                             that.chart.dispatchAction({ //把上一个高亮的取消掉
 
-                                 type: 'downplay',
 
-                                 seriesIndex: 0,
 
-                                 dataIndex: that.lastIndex
 
-                             })
 
-                         }
 
-                         that.$emit('map-click', params)
 
-                         that.lastIndex = params.dataIndex //高亮现在这个
 
-                         that.chart.dispatchAction({
 
-                             type: 'highlight',
 
-                             seriesIndex: 0,
 
-                             dataIndex: params.dataIndex
 
-                         })
 
-                     }
 
-                 })
 
-             })
 
-         },
 
-         methods: {
 
-             getOption: function () {
 
-                 var options=JSON.parse(JSON.stringify(defaults));
 
-                 if(this.config){
 
-                     var maxValue =0;
 
-                     this.config.data.map(function(v){
 
-                           if(v.value){
 
-                             maxValue =  Math.max(maxValue,parseInt(v.value || 0));
 
-                             maxValue = Math.ceil(maxValue/5)*5
 
-                           }             
 
-                         })
 
-                         var piceArr = this.getPiceArr(maxValue)
 
-                         options.visualMap = {
 
-                             text: null,
 
-                             color: ['#0046ac', '#005adc', '#277fff','#62a2ff','#c5ddff'],
 
-                             pieces: piceArr,
 
-                             textStyle: {
 
-                                 color: '#b5e1fc'
 
-                             },
 
-                             left: '50'
 
-                         }
 
-                         options.series[0].zoom = this.config.zoom || 1.2;
 
-                         options.series[0].data = this.config.data;
 
-                 }              
 
-                 return options
 
-             },
 
-             getPiceArr(max, num) {
 
-                 var lastArr = [];
 
-                 if (max == 0) {
 
-                     lastArr = [{
 
-                         max: 0,
 
-                         min: 0,
 
-                         label: '0'
 
-                     }]
 
-                 } else {
 
-                     var divisor = max > 10000 ? 10000 : (max > 1000 ? 1000 : 100); //最小区间跨度值
 
-                     var unitSpan = divisor >= 10000 ? 10000 : 1; //计算单位用
 
-                     var _num = num || (max / divisor > 5) ? 5 : (max / divisor); //区间取值次数
 
-                     var _span = (max / _num); //刚好区间跨度,需调整
 
-                     _span = ((_span + '').match(/0/ig) && (_span + '').match(/0/ig).length) == (((_span + '').split('.'))[0].length - 1) ? _span : (((_span + '').substr(0, 1) | 0) + 1) + Array(((_span + '').split('.'))[0].length).join(0); //区间跨度,可能需要进位 0填充等
 
-                     var company = _span >= 10000 ? '万' : ''; //区间单位
 
-                     _num = num || Math.ceil(max / _span); //重新计算区间次数
 
-                     for (var j = 0; j < _num; j++) {
 
-                         lastArr.push({
 
-                             min: _span * (_num - j - 1),
 
-                             max: _span * (_num - j),
 
-                             label: (_span * (_num - j - 1) / unitSpan) + company + "-" + (_span * (_num - j) / unitSpan) + company
 
-                         })
 
-                     }
 
-                 }
 
-                 return lastArr;
 
-             },
 
-             closeLineHeight(index) {
 
-                 var that = this;
 
-                 if (index) that.lastIndex = index
 
-                 if (that.lastIndex === null) return
 
-                 that.chart.dispatchAction({ //把上一个高亮的取消掉
 
-                     type: 'downplay',
 
-                     seriesIndex: 0,
 
-                     dataIndex: that.lastIndex
 
-                 })
 
-             },
 
-             selectLineHeight(index){   //高亮某个区县   传入城市名  获得对应下标 然后高亮
 
-                 var that  =this;
 
-                 this.closeLineHeight();
 
-                 var isExit = false;
 
-                 this.config.data.map(function(v,i){
 
-                     console.log(v)
 
-                     console.log(index)
 
-                     if(v.name == index) {
 
-                         console.log(i)
 
-                         that.lastIndex =i;
 
-                         isExit=true
 
-                     }
 
-                 })
 
-                 // this.lastIndex = index;
 
-                 if(isExit)
 
-                 this.chart.dispatchAction({
 
-                     type: 'highlight',
 
-                     seriesIndex: 0,
 
-                     dataIndex:  that.lastIndex 
 
-                 })
 
-             }
 
-         },
 
-         watch: {
 
-             config: function (data) {
 
-                 if (data) {
 
-                     this.chart.setOption(this.getOption());
 
-                     if(data.index !== null)this.selectLineHeight(data.index)
 
-                 }
 
-             }
 
-         }
 
-     })
 
-     var defaults = {
 
-         tooltip: {
 
-             trigger: 'item',
 
-             formatter: '{b}<br/>{c} (人次)'
 
-         },      
 
-         series: [{
 
-             type: 'map',
 
-             mapType: '上饶', // 自定义扩展图表类型
 
-             itemStyle: {
 
-                 normal: {
 
-                     label: {
 
-                         show: true,
 
-                         color: '#002f9c'
 
-                     },
 
-                     borderColor: '#fff',
 
-                     shadowColor: '#0355ab',
 
-                     shadowBlur: 10,
 
-                     shadowOffsetX: 10,
 
-                     shadowOffsetY: 10
 
-                 },
 
-                 emphasis: {
 
-                     label: {
 
-                         show: true,
 
-                         color: '#002f9c'
 
-                     },
 
-                     areaColor: '#00e9fa',
 
-                 }
 
-             },
 
-             data: [],
 
-             selectedMode: 'single'
 
-         }],
 
-     }
 
- })()
 
 
  |