|  | @ -0,0 +1,311 @@
 | 
	
		
			
				|  |  | var reqList = [];
 | 
	
		
			
				|  |  | new Vue({
 | 
	
		
			
				|  |  |     el: "#main",
 | 
	
		
			
				|  |  |     data: {
 | 
	
		
			
				|  |  |         appname: "咨询分析",
 | 
	
		
			
				|  |  |         isback: true,
 | 
	
		
			
				|  |  |         isrefresh: true,
 | 
	
		
			
				|  |  |         isfilter: true,
 | 
	
		
			
				|  |  |         isopen: true,
 | 
	
		
			
				|  |  |         //页面请求参数
 | 
	
		
			
				|  |  |         level: '',
 | 
	
		
			
				|  |  |         area: '',
 | 
	
		
			
				|  |  |         areaTitle: '',
 | 
	
		
			
				|  |  |         lowLevel: '',
 | 
	
		
			
				|  |  |         chooseYear: '',
 | 
	
		
			
				|  |  |         endDate: '',
 | 
	
		
			
				|  |  |         topDatas: {
 | 
	
		
			
				|  |  |             total: 0,
 | 
	
		
			
				|  |  |             noRelyCount: 0,
 | 
	
		
			
				|  |  |             noRelyRate: 0,
 | 
	
		
			
				|  |  |             relyRate: 0
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     },
 | 
	
		
			
				|  |  |     components: {
 | 
	
		
			
				|  |  |         vuedals: Vuedals.Component
 | 
	
		
			
				|  |  |     },
 | 
	
		
			
				|  |  |     methods:{
 | 
	
		
			
				|  |  |         getAreaData: function(arg){
 | 
	
		
			
				|  |  |             //如果level改变,则需要重新加载整个页面的数据,否则只需加载底部区域数据
 | 
	
		
			
				|  |  |             if(arg.level == this.level){
 | 
	
		
			
				|  |  |                 this.lowLevel = arg.lowLevel;
 | 
	
		
			
				|  |  |                 loadData([2], this);
 | 
	
		
			
				|  |  |             }else{
 | 
	
		
			
				|  |  |                 this.level = arg.level;
 | 
	
		
			
				|  |  |                 this.lowLevel = arg.lowLevel;
 | 
	
		
			
				|  |  |                 this.area = arg.area;
 | 
	
		
			
				|  |  |                 this.areaTitle = arg.areaTitle;
 | 
	
		
			
				|  |  |                 loadData([0,1,2], this);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             EventBus.$emit('update-area-name', {areaName: this.areaTitle});
 | 
	
		
			
				|  |  |             //存储请求所带的参数
 | 
	
		
			
				|  |  |             reqList.push({
 | 
	
		
			
				|  |  |                 level: this.level,
 | 
	
		
			
				|  |  |                 area: this.area,
 | 
	
		
			
				|  |  |                 areaTitle: this.areaTitle,
 | 
	
		
			
				|  |  |                 lowLevel: this.lowLevel,
 | 
	
		
			
				|  |  |                 endDate: this.endDate
 | 
	
		
			
				|  |  |             })
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     },
 | 
	
		
			
				|  |  |     mounted: function(){
 | 
	
		
			
				|  |  |         //初始化数据
 | 
	
		
			
				|  |  |         initData(this);
 | 
	
		
			
				|  |  |         
 | 
	
		
			
				|  |  |         //获得顶部各tab的值
 | 
	
		
			
				|  |  |         loadData([0,1,2], this); //参数组数表示请求的区域为上中下
 | 
	
		
			
				|  |  |         
 | 
	
		
			
				|  |  |         //存储请求所带的参数
 | 
	
		
			
				|  |  |         reqList.push({
 | 
	
		
			
				|  |  |             level: this.level,
 | 
	
		
			
				|  |  |             area: this.area,
 | 
	
		
			
				|  |  |             areaTitle: this.areaTitle,
 | 
	
		
			
				|  |  |             index: this.index,
 | 
	
		
			
				|  |  |             endDate: this.endDate,
 | 
	
		
			
				|  |  |             startDate: this.startDate,
 | 
	
		
			
				|  |  |             lowLevel: this.lowLevel
 | 
	
		
			
				|  |  |         });
 | 
	
		
			
				|  |  |         
 | 
	
		
			
				|  |  |         //设置监听器, 监听折线图日期变化
 | 
	
		
			
				|  |  |         var vm = this;
 | 
	
		
			
				|  |  |         //监听后退按钮的操作
 | 
	
		
			
				|  |  |         EventBus.$on("back-click", function(arg){
 | 
	
		
			
				|  |  |             if(reqList.length == 1){
 | 
	
		
			
				|  |  |                 history.go(-1);
 | 
	
		
			
				|  |  |             } 
 | 
	
		
			
				|  |  |             else{
 | 
	
		
			
				|  |  |                 var preInfo = reqList.pop();
 | 
	
		
			
				|  |  |                 var info = reqList[reqList.length - 1];
 | 
	
		
			
				|  |  |                 vm.level = info.level;
 | 
	
		
			
				|  |  |                 vm.area = info.area;
 | 
	
		
			
				|  |  |                 vm.areaTitle = info.areaTitle;
 | 
	
		
			
				|  |  |                 vm.lowLevel = info.lowLevel;
 | 
	
		
			
				|  |  |                 vm.index = info.index;
 | 
	
		
			
				|  |  |                 
 | 
	
		
			
				|  |  |                 loadData([0,1,2], vm);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         });
 | 
	
		
			
				|  |  |         //监听页面刷新
 | 
	
		
			
				|  |  |         EventBus.$on("refresh-click", function(arg){
 | 
	
		
			
				|  |  |             loadData([0,1,2], vm);
 | 
	
		
			
				|  |  |         });
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | });
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | function initData(vm){
 | 
	
		
			
				|  |  |     //获得缓存中缓存的角色权限
 | 
	
		
			
				|  |  |     var userRole = window.localStorage.getItem("selectedRole");
 | 
	
		
			
				|  |  |     if(!userRole){
 | 
	
		
			
				|  |  |         return false;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  |     vm.userRole = JSON.parse(userRole);
 | 
	
		
			
				|  |  |     vm.level = vm.userRole.code == '350200' ? 4 : vm.userRole.code.length == 6 ? 3 : 2;
 | 
	
		
			
				|  |  |     vm.area = vm.userRole.code;
 | 
	
		
			
				|  |  |     vm.areaTitle = vm.userRole.name;
 | 
	
		
			
				|  |  |     EventBus.$emit('update-area-name', {areaName: vm.areaTitle});
 | 
	
		
			
				|  |  |     
 | 
	
		
			
				|  |  |     var now = new Date();
 | 
	
		
			
				|  |  |     if(now.getMonth() >= 6){
 | 
	
		
			
				|  |  |         vm.chooseYear = now.getFullYear();
 | 
	
		
			
				|  |  |     }else{
 | 
	
		
			
				|  |  |         vm.chooseYear = now.getFullYear() - 1;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  |     vm.endDate = getEndDate(vm.chooseYear);
 | 
	
		
			
				|  |  | }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | function initReqParams(vm){
 | 
	
		
			
				|  |  |     var param = [{
 | 
	
		
			
				|  |  |         url: "/statistics/Consulting_Title",
 | 
	
		
			
				|  |  |         data: {level: vm.level, area: vm.area, year: vm.chooseYear}
 | 
	
		
			
				|  |  |     },{
 | 
	
		
			
				|  |  |         url: "/statistics/getCoutListByTime",
 | 
	
		
			
				|  |  |         data: {level: vm.level, area: vm.area, year: vm.chooseYear}
 | 
	
		
			
				|  |  |     },{
 | 
	
		
			
				|  |  |         url: "/statistics/Consulting_StatList",
 | 
	
		
			
				|  |  |         data: {level: vm.level, area: vm.area, year: vm.chooseYear, sort: 1, date: vm.endDate, lowlevel: vm.lowLevel}
 | 
	
		
			
				|  |  |     }];
 | 
	
		
			
				|  |  |     
 | 
	
		
			
				|  |  |     return param;
 | 
	
		
			
				|  |  | }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | function loadData(loadArr, vm){
 | 
	
		
			
				|  |  |     //获取其他请求的参数
 | 
	
		
			
				|  |  |     var reqParams = initReqParams(vm),
 | 
	
		
			
				|  |  |         reqPromise = [];
 | 
	
		
			
				|  |  |     
 | 
	
		
			
				|  |  |     for(i=0; i< loadArr.length; i++){
 | 
	
		
			
				|  |  |         var j = loadArr[i];
 | 
	
		
			
				|  |  |         var param = reqParams[j];
 | 
	
		
			
				|  |  |         reqPromise.push(httpRequest.get(param.url, {data: param.data}));
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  |         
 | 
	
		
			
				|  |  |     if(reqPromise.length > 0){
 | 
	
		
			
				|  |  |         Promise.all(reqPromise).then(function(ress){
 | 
	
		
			
				|  |  |             var res1, res2, res2;
 | 
	
		
			
				|  |  |             for(var i=0; i<loadArr.length; i++){
 | 
	
		
			
				|  |  |                 var j = loadArr[i] + 1;
 | 
	
		
			
				|  |  |                 if(j == 1){
 | 
	
		
			
				|  |  |                     res1 = ress[i];
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if(j == 2){
 | 
	
		
			
				|  |  |                     res2 = ress[i];
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if(j == 3){
 | 
	
		
			
				|  |  |                     res3 = ress[i];
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if(res1){
 | 
	
		
			
				|  |  |                 if(res1.status == 200){
 | 
	
		
			
				|  |  |                     handleTopPanelData(res1.data, vm);
 | 
	
		
			
				|  |  |                 }else{
 | 
	
		
			
				|  |  |                     console.log(res1.msg);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if(res2){
 | 
	
		
			
				|  |  |                 if(res2.status == 200){
 | 
	
		
			
				|  |  |                     handleSecondPanelData(res2.data, vm);
 | 
	
		
			
				|  |  |                 }else{
 | 
	
		
			
				|  |  |                    console.log(res2.msg);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if(res3){
 | 
	
		
			
				|  |  |                 if(res3.status == 200){
 | 
	
		
			
				|  |  |                     listHandle(res3.data, vm);
 | 
	
		
			
				|  |  |                 }else{
 | 
	
		
			
				|  |  |                     console.log(res3.msg);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         })
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | function handleTopPanelData(data, vm){
 | 
	
		
			
				|  |  |     var obj = data.result[0];
 | 
	
		
			
				|  |  |     console.log(obj);
 | 
	
		
			
				|  |  |     vm.topDatas = {
 | 
	
		
			
				|  |  |         total: obj.total,
 | 
	
		
			
				|  |  |         noRelyCount: obj.noRelyCount,
 | 
	
		
			
				|  |  |         noRelyRate: obj.noRelyRate,
 | 
	
		
			
				|  |  |         relyRate: obj.relyRate
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | function handleSecondPanelData(data, vm){
 | 
	
		
			
				|  |  |     var list = data.resultList,
 | 
	
		
			
				|  |  |         xData = [],
 | 
	
		
			
				|  |  |         yData = [];
 | 
	
		
			
				|  |  |     for(i=0; i<list.length; i++){
 | 
	
		
			
				|  |  |         var item = list[i];
 | 
	
		
			
				|  |  |         xData.push(item.name + "时");
 | 
	
		
			
				|  |  |         yData.push(item.num);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  |     drawBarChart(xData, yData);
 | 
	
		
			
				|  |  | }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | function listHandle(data, vm){
 | 
	
		
			
				|  |  |     var list = data.resultList;
 | 
	
		
			
				|  |  |     var topArr = soreRank(getKeyValueArr(list, 'relyDoubleRate'));
 | 
	
		
			
				|  |  |     var arr = _.map(list, function(o, index){
 | 
	
		
			
				|  |  |         var cols = [o.name, o.total, o.noRelyCount, o.noRelyRate];
 | 
	
		
			
				|  |  |         return {
 | 
	
		
			
				|  |  |             rank: topArr[index],
 | 
	
		
			
				|  |  |             code: o.code,
 | 
	
		
			
				|  |  |             name: o.name,
 | 
	
		
			
				|  |  |             cols: cols
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     });
 | 
	
		
			
				|  |  |     
 | 
	
		
			
				|  |  |     EventBus.$emit("render-area-data",{
 | 
	
		
			
				|  |  |         level: vm.level,
 | 
	
		
			
				|  |  |         area: vm.area,
 | 
	
		
			
				|  |  |         lowLevel: vm.lowLevel,
 | 
	
		
			
				|  |  |         headers: ["排名", "咨询数", "未回复数", "未回复率"],
 | 
	
		
			
				|  |  |         rows: arr
 | 
	
		
			
				|  |  |     });
 | 
	
		
			
				|  |  | }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | function drawBarChart(xData, yData) {
 | 
	
		
			
				|  |  |     var myChart = echarts.init(document.getElementById('barChart'));
 | 
	
		
			
				|  |  |     var options = {
 | 
	
		
			
				|  |  |         calculable: true,
 | 
	
		
			
				|  |  |         tooltip: {
 | 
	
		
			
				|  |  |             trigger: 'item',
 | 
	
		
			
				|  |  | //          formatter: '{a}<br />{b} : {c}次'
 | 
	
		
			
				|  |  |         },
 | 
	
		
			
				|  |  |         toolbox: {
 | 
	
		
			
				|  |  |             dataZoom: true,
 | 
	
		
			
				|  |  |             show: true,
 | 
	
		
			
				|  |  |             orient: 'vertical',
 | 
	
		
			
				|  |  |             x: 'right',
 | 
	
		
			
				|  |  |             y: 'center'
 | 
	
		
			
				|  |  |         },
 | 
	
		
			
				|  |  |         grid: {
 | 
	
		
			
				|  |  |             left: '20px',
 | 
	
		
			
				|  |  |             right: '20px',
 | 
	
		
			
				|  |  |             bottom: '20px',
 | 
	
		
			
				|  |  |             top: '20px',
 | 
	
		
			
				|  |  |             containLabel: true
 | 
	
		
			
				|  |  |         },
 | 
	
		
			
				|  |  |         xAxis: [{
 | 
	
		
			
				|  |  |             type: 'category',
 | 
	
		
			
				|  |  |             axisLine: {
 | 
	
		
			
				|  |  |                 show: true,
 | 
	
		
			
				|  |  |                 lineStyle: {
 | 
	
		
			
				|  |  |                     color: '#dcdcdc',
 | 
	
		
			
				|  |  |                     width: 1
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             },
 | 
	
		
			
				|  |  |             axisLabel: {
 | 
	
		
			
				|  |  |                 show: true,
 | 
	
		
			
				|  |  |                 color: '#666'
 | 
	
		
			
				|  |  |             },
 | 
	
		
			
				|  |  |             splitLine: {
 | 
	
		
			
				|  |  |                 show: false
 | 
	
		
			
				|  |  |             },
 | 
	
		
			
				|  |  |             data: xData
 | 
	
		
			
				|  |  |         }],
 | 
	
		
			
				|  |  |         yAxis: [{
 | 
	
		
			
				|  |  |             type: 'value',
 | 
	
		
			
				|  |  |             axisLine: {
 | 
	
		
			
				|  |  |                 show: true,
 | 
	
		
			
				|  |  |                 lineStyle: {
 | 
	
		
			
				|  |  |                     color: '#dcdcdc',
 | 
	
		
			
				|  |  |                     width: 1
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             },
 | 
	
		
			
				|  |  |             axisLabel: {
 | 
	
		
			
				|  |  |                 show: true,
 | 
	
		
			
				|  |  |                 color: '#666'
 | 
	
		
			
				|  |  |             },
 | 
	
		
			
				|  |  |             splitLine: {
 | 
	
		
			
				|  |  |                 show: false
 | 
	
		
			
				|  |  |             },
 | 
	
		
			
				|  |  |         }],
 | 
	
		
			
				|  |  |         series: [{
 | 
	
		
			
				|  |  |             name: '回复次数',
 | 
	
		
			
				|  |  |             type: 'bar',
 | 
	
		
			
				|  |  |             barWidth: 40,
 | 
	
		
			
				|  |  |             itemStyle: {
 | 
	
		
			
				|  |  |                 normal: {
 | 
	
		
			
				|  |  |                     color: function(params) {
 | 
	
		
			
				|  |  |                         var colorList = ['#12B7F5', '#FB5DAB', '#CD67FD', '#FFC800', '#61EB41'];
 | 
	
		
			
				|  |  |                         return colorList[params.dataIndex]
 | 
	
		
			
				|  |  |                     },
 | 
	
		
			
				|  |  |                     label: {
 | 
	
		
			
				|  |  |                         show: true,
 | 
	
		
			
				|  |  |                         position: 'top',
 | 
	
		
			
				|  |  |                         formatter: function(params) {
 | 
	
		
			
				|  |  |                             return params.value;
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                     },
 | 
	
		
			
				|  |  |                     barBorderRadius: 0
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             },
 | 
	
		
			
				|  |  |             data: yData
 | 
	
		
			
				|  |  |         }]
 | 
	
		
			
				|  |  |     };
 | 
	
		
			
				|  |  |     myChart.clear();
 | 
	
		
			
				|  |  |     myChart.setOption(options);
 | 
	
		
			
				|  |  | }
 |