'use strict'; app.controller('reportefficiencyCtrl', ["$scope", "$rootScope", "$state", "$timeout", "$interval", "$http", "$cookieStore", "moment", "SweetAlert", "Restangular", "api_hkreport", "api_bpm_data", function($scope, $rootScope, $state, $timeout, $interval, $http, $cookieStore, moment, SweetAlert, Restangular, api_hkreport, api_bpm_data) { var ROWS = "ROWS"; var COLUMNS = "COLUMNS"; $scope.treeshow = true; $scope.searchstate = ""; $scope.headers = "请选择事件树形列表!"; var workspace = {}; $scope.parameters = {}; $scope.starttimes = {}; $scope.endtimes = {}; $scope.category = {}; $scope.reportName = "报表"; $scope.allheight = 100; $scope.isMaskground = false; $scope.group = []; //表格 $scope.rRows = []; $scope.quikly = [{ name: '自定义', value: 0 }, { name: '近7天', value: 1 }, { name: '近30天', value: 2 }, { name: '近90天', value: 3 }, { name: '近半年', value: 4 }, { name: '近一年', value: 5 }]; // var starttime, endtime // $scope.starttimes = moment().startOf('month').format('YYYYMMDD'); // $scope.endtimes = moment().format('YYYYMMDD'); function startdata() { $scope.searchkeys = { 'group': {}, 'quikly': { name: '近7天', value: 1 } }; $scope.starttimes = moment(new Date().getTime() - 86400000 * 7).format('YYYYMMDD'); $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYYMMDD'); $scope.parameters.paramDateFrom = moment($scope.starttimes, "YYYYMMDD").format("YYYY-MM-DD"); $scope.parameters.paramDateTo = moment($scope.endtimes, "YYYYMMDD").format("YYYY-MM-DD"); } startdata(); $scope.changeForm = function(paramDateFrom) { $scope.searchkeys.quikly = { name: '自定义', value: 0 }; $scope.starttimes = moment(paramDateFrom).format('YYYYMMDD'); } $scope.changeTo = function(paramDateTo) { $scope.searchkeys.quikly = { name: '自定义', value: 0 }; $scope.endtimes = moment(paramDateTo).format('YYYYMMDD'); } $scope.open = function($event) { $event.preventDefault(); $event.stopPropagation(); $scope.opened = !$scope.opened; }; $scope.endOpen = function($event) { $event.preventDefault(); $event.stopPropagation(); $scope.startOpened = false; $scope.endOpened = !$scope.endOpened; }; $scope.startOpen = function($event) { $event.preventDefault(); $event.stopPropagation(); $scope.endOpened = false; $scope.startOpened = !$scope.startOpened; }; //处理组 // api_user_data.fetchDataList('group', { "idx": 0, "sum": 1000, "group": { "selectType": "nouser" } }).then(function(data) { // if (data.status == 200) { // $scope.group = data.list; // } // }) function ConvertDateParameter(parameters) { var result = undefined; if (angular.isArray(parameters)) { // } else { result = {}; for (var k in parameters) { if (k.indexOf("Date") > 0) { if (angular.isDate(parameters[k])) { result[k] = moment(parameters[k]).format("YYYY-MM-DD"); } else if (angular.isString(parameters[k])) { result[k] = parameters[k]; } } } } return result; } $scope.restData = function() { $scope.try_async_load(); startdata(); $scope.mdxquery(); } $scope.mdxquery = function(key) { var changedate = ConvertDateParameter($scope.parameters) var fildata = { "start": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "end": moment(changedate.paramDateTo).format("YYYY-MM-DD") } if (key && key.category && key.category.id) { fildata = { "start": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "end": moment(changedate.paramDateTo).format("YYYY-MM-DD"), "categoryId": key.category.id } } else { fildata = { "start": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "end": moment(changedate.paramDateTo).format("YYYY-MM-DD") } } getdata(fildata); getdatatwo(fildata); getdatathree(fildata); // getdatatop3(fildata); // getdatatop5(fildata); // getdataareaplace(fildata); // getlistdata(fildata); // getlistdata({ "start": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "end": moment(changedate.paramDateTo).format("YYYY-MM-DD") }) // getpiedata({ "start": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "end": moment(changedate.paramDateTo).format("YYYY-MM-DD") }) // getpiedata({ "end": $scope.parameters.paramDateFrom, "start": $scope.parameters.paramDateTo }) } $scope.onChangetime = function(key) { if (key.value == 1) { $scope.starttimes = moment(new Date().getTime() - 86400000 * 7).format('YYYY-MM-DD'); $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD'); $scope.parameters.paramDateFrom = moment($scope.starttimes, "YYYY-MM-DD").format("YYYY-MM-DD"); $scope.parameters.paramDateTo = moment($scope.endtimes, "YYYY-MM-DD").format("YYYY-MM-DD"); } else if (key.value == 2) { $scope.starttimes = moment(new Date().getTime() - 86400000 * 30).format('YYYY-MM-DD'); $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD'); $scope.parameters.paramDateFrom = $scope.starttimes; $scope.parameters.paramDateTo = $scope.endtimes; } else if (key.value == 3) { $scope.starttimes = moment(new Date().getTime() - 86400000 * 90).format('YYYY-MM-DD'); $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD'); $scope.parameters.paramDateFrom = $scope.starttimes; $scope.parameters.paramDateTo = $scope.endtimes; } else if (key.value == 4) { $scope.searchstate = "month"; $scope.starttimes = moment((new Date()).setMonth((new Date()).getMonth() - 6)).format('YYYY-MM-DD'); $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD'); $scope.parameters.paramDateFrom = $scope.starttimes; $scope.parameters.paramDateTo = $scope.endtimes; } else if (key.value == 5) { $scope.searchstate = "month"; $scope.starttimes = moment((new Date()).setMonth((new Date()).getMonth() - 12)).format('YYYY-MM-DD'); $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD'); $scope.parameters.paramDateFrom = $scope.starttimes; $scope.parameters.paramDateTo = $scope.endtimes; } // $scope.starttimes = moment(new Date().getTime() - 86400000 * 7).format('YYYYMMDD'); // $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYYMMDD'); // $scope.parameters.paramDateFrom = moment($scope.starttimes, "YYYYMMDD").format("YYYY-MM-DD"); // $scope.parameters.paramDateTo = moment($scope.endtimes, "YYYYMMDD").format("YYYY-MM-DD"); // $scope.mdxquery(); } // $scope.onChangegroup = function(key) { // } $scope.execute = function() { api_report.list($scope.token).then(function(response) { $scope.select_treedata = $scope.my_data = response; }); } $scope.searchOptions = function() { if (angular.isDefined(workspace.query)) { var queryParameters = workspace.query.parameters; for (var parm in queryParameters) { if (parm == 'Week') { } else { } } } } //树形图 // $scope.inspecttype = {}; $scope.my_tree = {}; $scope.try_async_load = function() { $scope.my_data = []; $scope.doing_async = true; api_bpm_data.fetchDataList('incidentcategory', { "idx": 0, "sum": 1000 }).then(function(response) { if (response.status == 200) { var data = response.list; var objects = []; for (var i = 0; i < data.length; i++) { var object = {}; object.id = data[i].id; object.parent = data[i].parent; // if (data[i].parent && data[i].parent.id != 0) { // object.parent = data[i].parent.id; // } object.label = data[i].category; objects.push(object); } $scope.my_data = convertParentToChildList(objects); $scope.select_treedata = angular.copy($scope.my_data); if ($scope.my_data.length > 0) { $scope.doing_async = false; } } else { SweetAlert.swal({ title: "系统错误!", text: "请刷新重试!", type: "error" }); } }); }; $scope.my_data = []; function convertListToTree(data, treeMap) { var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup var root = null; //Initially set our loop to null var parentNode = null; //loop over data for (var i = 0; i < data.length; i++) { var datum = data[i]; //each node will have children, so let's give it a "children" poperty datum.children = []; //add an entry for this node to the map so that any future children can //lookup the parent idToNodeMap[datum.id] = datum; //Does this node have a parent? if (typeof datum.parent === "undefined" || datum.parent == null) { //Doesn't look like it, so this node is the root of the tree root = datum; treeMap[datum.id] = root; } else { //This node has a parent, so let's look it up using the id parentNode = idToNodeMap[datum.parent.id]; //We don't need this property, so let's delete it. delete datum.parent; //Let's add the current node as a child of the parent node. parentNode.children.push(datum); } } return root; console.log(root) } function convertParentToChildList(data) { var treeMap = {}; var list = []; convertListToTree(data, treeMap); angular.forEach(treeMap, function(item) { list.push(item); }); return list; } $scope.try_async_load(); // $scope.select_treedata = []; $scope.propTypeOptions = []; $scope.deselectItem = function(item) { console.log(item) console.log($scope) } // 故障现象 $scope.onFilterCallback = function(item) { if (item.children && item.children.length != 0) { $scope.searchkeys.category = item; } else if (item.item && item.item.id) { $scope.searchkeys.category = {}; } } //折线图 var axilist = []; var serieslist = []; // var headerlist = []; $scope.responsehead = []; $scope.responselist = []; var colorlist = ['#005395', '#49a9ee', '#ffcd62', '#87c966', '#1ea58f']; var domlleff = document.getElementById("liuliangeff"); var myChartlleff = echarts.init(domlleff); myChartlleff.showLoading({   text: '数据加载中...', color: '#c23531', textColor: '#fff', maskColor: 'rgba(255,255,255,0)', zlevel: 0 }); var optionlleff = null; optionlleff = { color: ['#D53A35'], tooltip: { trigger: 'axis', //formatter: "{b}
合格率: {c}%" }, grid: { top: '10%', bottom: '15%', left: '3%', right: '8%', containLabel: true }, xAxis: { type: 'category', name: '', boundaryGap: false, axisLine: { show: false, lineStyle: { color: '#525252' } }, axisTick: { show: false }, axisLabel: { color: '#525252' }, data: axilist }, yAxis: { type: 'value', name: '', minInterval: 1, axisLine: { show: false, }, axisTick: { show: false }, axisLabel: { color: '#525252' }, splitLine: { lineStyle: { type: 'dotted', color: '#F3F3F3' //F3F3F3 } } }, "legend": { "data": ['事件解决时长'], }, series: { // name: '事件解决时长', type: 'line', symbol: 'none', itemStyle: { normal: { color: '#4facef' } }, lineStyle: { normal: { width: 2 } }, data: serieslist } }; function getdata(time) { api_hkreport.incidentreport(time, 'incident_ops_efficiency_response').then(function(data) { $scope.responsehead = data.averagelist; $scope.responselist = data.list; axilist = []; angular.forEach(data.graphlist, function(item, index) { axilist.push(item.accdate); serieslist.push(item.responsetime); }) optionlleff.xAxis.data = axilist; myChartlleff.setOption(optionlleff, true); myChartlleff.hideLoading(); }) } getdata({ "end": $scope.parameters.paramDateTo, "start": $scope.parameters.paramDateFrom }) //第二个图 //折线图 var axilisttwo = []; var serieslisttwo = []; // var headerlist = []; $scope.responsetwohead = []; $scope.responsetwolist = []; var colorlist = ['#005395', '#49a9ee', '#ffcd62', '#87c966', '#1ea58f']; var domtwoll = document.getElementById("liuliangtwo"); var myCharttwoll = echarts.init(domtwoll); myCharttwoll.showLoading({   text: '数据加载中...', color: '#c23531', textColor: '#fff', maskColor: 'rgba(255,255,255,0)', zlevel: 0 }); var optiontwoll = null; optiontwoll = { color: ['#D53A35'], tooltip: { trigger: 'axis', //formatter: "{b}
合格率: {c}%" }, grid: { top: '10%', bottom: '15%', left: '3%', right: '8%', containLabel: true }, xAxis: { type: 'category', name: '', boundaryGap: false, axisLine: { show: false, lineStyle: { color: '#525252' } }, axisTick: { show: false }, axisLabel: { color: '#525252' }, data: axilisttwo }, yAxis: { type: 'value', name: '', minInterval: 1, axisLine: { show: false, }, axisTick: { show: false }, axisLabel: { color: '#525252' }, splitLine: { lineStyle: { type: 'dotted', color: '#F3F3F3' //F3F3F3 } } }, "legend": { "data": ['事件解决时长'], }, series: { // name: '事件解决时长', type: 'line', symbol: 'none', itemStyle: { normal: { color: '#4facef' } }, lineStyle: { normal: { width: 2 } }, data: serieslisttwo } }; function getdatatwo(time) { api_hkreport.incidentreport(time, 'incident_ops_efficiency_solve').then(function(data) { $scope.responsetwohead = data.averagelist; $scope.responsetwolist = data.list; axilisttwo = []; angular.forEach(data.graphlist, function(item, index) { axilisttwo.push(item.accdate); serieslisttwo.push(item.responsetime); }) optiontwoll.xAxis.data = axilisttwo; myCharttwoll.setOption(optiontwoll, true); myCharttwoll.hideLoading(); }) } getdatatwo({ "end": $scope.parameters.paramDateTo, "start": $scope.parameters.paramDateFrom }) //第二个图,逾期事件 //折线图 var axilistthree = []; var serieslistthree = []; // var headerlist = []; $scope.responsethreehead = []; $scope.responsethreelist = []; var colorlist = ['#005395', '#49a9ee', '#ffcd62', '#87c966', '#1ea58f']; var domthreell = document.getElementById("liuliangthree"); var myChartthreell = echarts.init(domthreell); myChartthreell.showLoading({   text: '数据加载中...', color: '#c23531', textColor: '#fff', maskColor: 'rgba(255,255,255,0)', zlevel: 0 }); var optionthreell = null; optionthreell = { color: ['#D53A35'], tooltip: { trigger: 'axis', //formatter: "{b}
合格率: {c}%" }, grid: { top: '10%', bottom: '15%', left: '3%', right: '8%', containLabel: true }, xAxis: { type: 'category', name: '', boundaryGap: false, axisLine: { show: false, lineStyle: { color: '#525252' } }, axisTick: { show: false }, axisLabel: { color: '#525252' }, data: axilisttwo }, yAxis: { type: 'value', name: '', minInterval: 1, axisLine: { show: false, }, axisTick: { show: false }, axisLabel: { color: '#525252' }, splitLine: { lineStyle: { type: 'dotted', color: '#F3F3F3' //F3F3F3 } } }, "legend": { "data": ['事件解决时长'], }, series: { // name: '事件解决时长', type: 'line', symbol: 'none', itemStyle: { normal: { color: '#4facef' } }, lineStyle: { normal: { width: 2 } }, data: serieslisttwo } }; function getdatathree(time) { api_hkreport.incidentreport(time, 'incident_ops_efficiency_overdue').then(function(data) { $scope.responsethreehead = data.averagelist; $scope.responsethreelist = data.list; axilistthree = []; angular.forEach(data.graphlist, function(item, index) { axilistthree.push(item.accdate); serieslisttwo.push(item.responsetime); }) optionthreell.xAxis.data = axilistthree; myChartthreell.setOption(optionthreell, true); myChartthreell.hideLoading(); }) } getdatathree({ "end": $scope.parameters.paramDateTo, "start": $scope.parameters.paramDateFrom }) }]);