'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 })
}]);