| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 | 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        },        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,                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){            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);        });        //弹出筛选框        EventBus.$on('filter-click', function(arg) {            //弹框显示筛选条件            Vuedals.Bus.$emit('new', {                title: '条件筛选',                onClose:function(data){                    console.log(data);                    vm.chooseYear = data.chooseYear;                    vm.endDate = getEndDate(vm.chooseYear);                                        loadData([0, 1, 2], vm);//刷新数据                    EventBus.$emit('update-statistics-year', {selectDate: vm.chooseYear + "年"});//更新年份                    EventBus.$emit('update-statistics-time', {});//更新统计时间                },                component: 'year-filter',                props: {                    selectedYear: vm.chooseYear                }            });        });        $("#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();    if(now.getMonth() >= 6){        vm.chooseYear = now.getFullYear();    }else{        vm.chooseYear = now.getFullYear() - 1;    }    vm.endDate = getEndDate(vm.chooseYear);    EventBus.$emit('update-statistics-year', {selectDate: 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}));    }    vm.isloading=true        if(reqPromise.length > 0){        Promise.all(reqPromise).then(function(ress){        	vm.isloading=false            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];    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, 'noRelyDoubleRate'));    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);    window.onresize = function() {        myChart.resize();    }}
 |