var reqList = []; //记录请求的参数和url,用于后退时使用 Vue.use(Vuedals.default); new Vue({ el: "#main", data: { appname: "祝福分析", years: [], isback: true, isrefresh: true, isopen: false, //请求页面所需参数 level: '', area: '', areaTitle: '', index: '3', selectedDateType: 3, //折线图坐标值1-日,2-周,3-月 endDate: '', startDate: '', lowLevel: '', lowCode: '', chooseYear: '', userRole: '', analysisType: "1", // 筛选维度的id, 1-按任务,2-按人口,3-高血压,4-糖尿病,5-65岁以上人群 analysisName: "按任务", signRateData: { signRateText: "", signRate: "", signAmount: "", signRateAll: "", completeRateText: "", completeRate: "", completeAmount: "", completeRateAll: "" }, sendRate:null, noSendRate:null, sendCount:null, noSendCount:null, total:null, yearHtml: "", contentHtml: "", isloading:false, }, components: { vuedals: Vuedals.Component }, methods: { getNewLineData: function (arg) { this.selectedDateType = arg.dateType; loadData([1], this); }, selectChange: function () { var vm=this vm.startDate = getStartDate(vm.chooseYear); vm.endDate = getEndDate(vm.chooseYear); //请求参数重置,页面类型重新开始 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 }); //然后清空请求列表数组 reqList.splice(0, reqList.length); loadData([0, 1, 2], vm); //刷新数据 //存储请求所带的参数 reqList.push({ level: vm.level, area: vm.area, areaTitle: vm.areaTitle, index: vm.index, endDate: vm.endDate, startDate: vm.startDate, lowLevel: vm.lowLevel, lowCode: vm.lowCode, analysisType: vm.analysisType }); EventBus.$emit('update-statistics-year', { selectDate: vm.chooseYear + "年" }); //更新年份 EventBus.$emit('update-statistics-time', {}); //更新统计时间 }, 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, lowCode: this.lowCode, analysisType: this.analysisType, }) }, jumpTip: function (tab) { $('#shadow' + tab).css("visibility", "visible") }, leaveTip: function (tab) { $('#shadow' + tab).css("visibility", "hidden") }, }, mounted: function () { //初始化数据 initData(this); // 初始化年份 initYear(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, lowCode: this.lowCode, analysisType: this.analysisType }); //设置监听器, 监听折线图日期变化 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; vm.lowCode = info.lowCode; loadData([0, 1, 2], vm); EventBus.$emit('update-area-name', { areaName: vm.areaTitle }); } }); //监听页面刷新 EventBus.$on("refresh-click", function (arg) { EventBus.$emit('update-statistics-time', {}); //更新统计时间 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; var now = new Date(); if (now.getMonth() >= 6) { vm.chooseYear = now.getFullYear(); } else { vm.chooseYear = now.getFullYear() - 1; } vm.startDate = getStartDate(vm.chooseYear); vm.endDate = getEndDate(vm.chooseYear); //更新头部信息 EventBus.$emit('update-all-prompt-info', { areaName: vm.areaTitle, selectDate: vm.chooseYear + "年", dimensionVal: vm.analysisName }); } function initReqParams(vm) { vm.index = 13; if (vm.lowCode) { vm.index = 17; } reqParam = [{ url: "/statistics/article_total", reqType: 'get', data: { index:'98,99', level: vm.level, area: vm.area, year: vm.chooseYear, endDate: vm.endDate, startDate: vm.startDate, } }, { url: "/statistics/interval", reqType: 'get', data: { index: '99', level: vm.level, area: vm.area, startDate: vm.startDate, endDate: vm.endDate, interval: vm.selectedDateType, } }, { url: "/statistics/birthday_lowlevel_total", reqType: 'get', data: { sort: 1, endDate: vm.endDate, level: vm.level, area: vm.area, } }]; if (vm.lowLevel) { reqParam[2].data.lowLevel = vm.lowLevel; } return reqParam; } function initYear(vm) { var now = new Date(), year = now.getFullYear(); if (now.getMonth() < 6) { year--; } for (i = year; i > 2018; i--) { vm.years.push(i); } } function getTopTagDatas(data, vm) { // 指标98已发送,99未发送 vm.total=parseFloat(data.index_98+data.index_99) vm.sendCount=data.index_98 vm.noSendCount=data.index_99 vm.sendRate=vm.total!=0?(data.index_98 / vm.total *100).toFixed(2) +'%':'0%' vm.noSendRate=vm.total!=0?(data.index_99 / vm.total *100).toFixed(2) +'%':'0%' window.onresize = function () { window.lineCharts.resize(); //日周月折线图 } } function loadData(loadArr, vm) { //获取其他请求的参数 var reqParams = initReqParams(vm), reqPromise = [], newArr = []; //记录非顶部请求的请求数组 for (i = 0; i < loadArr.length; i++) { var j = loadArr[i]; var param = reqParams[j]; reqPromise.push(httpRequest.get(param.url, { data: param.data })); newArr.push(loadArr[i]); } vm.isloading=true if (reqPromise.length > 0) { Promise.all(reqPromise).then(function (ress) { vm.isloading=false 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 == 2) { res2 = ress[i]; } if (j == 3) { res3 = ress[i]; } } if (res1 && res1.status == 200) { getTopTagDatas(res1.data, vm); } if (res2 && res2.status == 200) { handleSecondPanelData(res2.data, vm); } if (res3) { if (res3.status == 200) { listHandle(res3.data, vm); } else { console.log(res3.msg); } } }) } } function handleSecondPanelData(data, vm) { var xDatas = [], yDatas = [], names = [], colors = ['#12b7f5'], index_names = { 'index_99': '未发送量' }; for (var p in data) { names.push(index_names[p]); var xData = _.map(data[p], function (o) { return o.range; }); var yData = _.map(data[p], function (o) { return o.amount; }); xDatas.push(xData); yDatas.push(yData); } EventBus.$emit("draw-line-chart", { panelName: "未发送量趋势分析", quotaNames: names, xData: xDatas[0], yDatas: yDatas, colors: colors, markLineValue: null, markLineName: "目标量", endDate:vm.endDate, startDate:vm.startDate }); } function listHandle(data, vm) { for (i in data) { var list = data[i]; var topArr = []; topArr = soreRank(getKeyValueArr(list, 'notPushNum')); var arr = _.map(list, function (o, index) { var cols = []; cols.push(topArr[index]) cols.push(o.name) cols.push(o.notPushNum) cols.push(o.amount) cols.push(o.notPushRate) return { rank: topArr[index], code: o.code, name: o.name, cols: cols } }); var headers = ["排名", "各区", "未发送量", "生日居民", "未发送率"]; //analysisType=2 为按人口 if (vm.lowLevel == 2 || vm.level == 3) { //社区 headers = ["排名", "社区", "未发送量", "生日居民", "未发送率"]; } if (vm.lowLevel == 1 || vm.level == 2) { //团队 headers = ["排名", "团队", "未发送量", "生日居民", "未发送率"]; } EventBus.$emit("render-area-data", { level: vm.level, area: vm.area, lowLevel: vm.lowLevel, headers: headers, rows: arr, reqList:reqList }); } } //获取结束时间 function getEndDate(chooseYear) { chooseYear = parseInt(chooseYear); var endDate = new Date((chooseYear + 1) + '-06-29'), now = new Date(); var yesterday = new Date(now.setDate(now.getDate() - 1)) if (yesterday <= endDate) { return yesterday.format("yyyy-MM-dd"); } else { return (chooseYear + 1) + '-06-29'; } }