123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- var reqList = [];
- new Vue({
- el: "#main",
- data: {
- appname: "评价分析",
- //页面请求参数
- index: 28,
- level: '',
- area: '',
- startDate: '',
- endDate: '',
- avg: 0,
- isloading:false,
- },
- 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,
- index: this.index,
- endDate: this.endDate,
- startDate: this.startDate,
- lowLevel: this.lowLevel
- })
- }
- },
- 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){
- EventBus.$emit('update-statistics-time', {}); //更新统计时间
- 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.$emit('update-area-name', {areaName: vm.areaTitle});
- }
- });
- //监听页面刷新
- EventBus.$on("refresh-click", function(arg){
- loadData([0,1,2], vm);
- });
- $("#main").removeClass("c-hide")
- }
- });
- function initData(vm){
- //获得缓存中缓存的角色权限
- var userRole = window.sessionStorage.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();
-
- vm.endDate = now.format("yyyy-M-dd");
- vm.startDate = "2017-01-01"; //评价功能是2017年才上线的
- }
- function initReqParams(vm){
- var param = [{
- url: "/statistics/getAVGSocre",
- data: {level: vm.level, area: vm.area}
- },{
- url: "/statistics/getAVGSocreByMonth",
- data: {level: vm.level, area: vm.area, statDate: vm.startDate, endDate: vm.endDate}
- },{
- url: "/statistics/lowlevel_all",
- data: {level: vm.level, area: vm.area, index: vm.index, sort: 1, date: vm.endDate, lowLevel: vm.lowLevel}
- }];
-
- return param;
- }
- function loadData(loadArr, vm){
- //获取其他请求的参数
- var reqParams = initReqParams(vm),
- reqPromise = [],
- sendPanelReq = [];
-
- for(i=0; i< loadArr.length; i++){
- var j = loadArr[i];
- var param = reqParams[j];
- if(j == 1){
- sendPanelReq.push(param);
- }else{
- reqPromise.push(httpRequest.get(param.url, {data: param.data}));
- }
- }
- vm.isloading=true
- //因为中间区域的请求时间较长,所以另外放出来处理
- if(sendPanelReq.length > 0){
- //删除loadArr里的1
- var index = loadArr.indexOf(1);
- loadArr.splice(index, 1);
- statisticAPI.getAVGSocreByMonth(sendPanelReq[0].data).then(function(res){
- if(res.status == 200){
- handleSecondPanelData(res.data, vm);
- }else{
- console.log(res.msg);
- }
- });
- }
- if(reqPromise.length > 0){
- Promise.all(reqPromise).then(function(ress){
- var res1, res2, res3;
- for(var i=0; i<loadArr.length; i++){
- var j = loadArr[i] + 1;
- if(j == 1){
- res1 = ress[i];
- }
-
- if(j == 3){
- res3 = ress[i];
- }
-
- }
- if(res1){
- if(res1.status == 200){
- vm.avg = res1.data.rs.avgCount;
- }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 handleSecondPanelData(data, vm){
- var xData = [],
- yData = [];
- for(i=0; i<data.length; i++){
- var item = data[i];
- xData.push(item.month);
- yData.push(item.socre);
- }
- drawLine(xData, yData, '平均评分', '#12b7f5');
- vm.isloading=false
- }
- function listHandle(data, vm){
- for(i in data){
- var data2 = JSON.parse(data[i]);
- var list = data2.data;
- var topArr = soreRank(getKeyValueArr(list, 'avgCount'));
- var arr = _.map(list, function(o, index){
- var cols = [o.name, o.avgCount || '暂无评分'];
- 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,
- cityLevelNoShowTeamTab: true,
- districtLevelNoShowTeamTab: true
- });
- }
- }
- function drawLine(xData, yData, name, color){
- var lineCharts = echarts.init(document.getElementById('lineChart'));
-
- //处理数据, 数据按照10条数一屏展示
- var lastIndex = xData.length % 10;
- if(xData.length >10 ){
- dataZoom_end = 100-(9/xData.length)*100;
- }else{
- dataZoom_end = 0;
- }
-
- var options = {
- tooltip: {
- trigger: 'axis'
- },
- legend: {
- top: '0px',
- data: [name],
- borderColor: "#f1f1f1"
- },
- grid: {
- show: false,
- left: '10px',
- right: '30px',
- bottom: '40px',
- top: '20px',
- containLabel: true
- },
- xAxis: {
- type: 'category',
- boundaryGap: false,
- data: xData,
- axisLabel: {
- interval:0,//横轴信息全部显示
- formatter: function (value, index) {
- return value+"月";
- }
- }
- },
- yAxis: {
- type: 'value',
- axisPointer: {
- snap: true
- },
- scale: true,
- minInterval: 1,
- boundaryGap: ['10%', '30%'],
- splitLine: {show:false}
- },
- dataZoom: [{//给x轴设置滚动条
- start: dataZoom_end,
- end: 100,
- type: 'slider',
- zoomLock: true,
- showDetail: false
- },{ //下面这个属性是内容区域配置
- start: dataZoom_end,
- end: 100,
- type: 'inside',
- zoomLock: true,
- }],
- series: [{
- name: name,
- type: 'line',
- smooth: true,
- data: yData,
- // color: color,
- lineStyle:{
- normal:{
- color: color
- }
- },
- itemStyle: {
- normal: {
- color: color
- }
- }
- }]
- };
-
- $("#lineChart").removeAttr('_echarts_instance_')
- lineCharts.setOption(options);
- window.onresize = function(){
- lineCharts.resize();
- }
- }
|