'use strict';
app.controller('incident_reportCtrl', ["$scope", "$rootScope", "$state", "$timeout", "$interval", "$http", "$cookieStore", "SweetAlert", "Restangular", "api_report", "api_statistic", "moment", 'api_user_data', 'api_bpm_data', 'api_report_data', function ($scope, $rootScope, $state, $timeout, $interval, $http, $cookieStore, SweetAlert, Restangular, api_report, api_statistic, moment, api_user_data, api_bpm_data, api_report_data) {
// 选择日期:
$scope.dateSelected = [{
name: '近90天',
id: 0
}, {
name: '近1年',
id: 1
}, {
name: '近3年',
id: 2
}, {
name: '近5年',
id: 3
}]
$scope.tap = 'QSFX';
$scope.tap1 = 'flqs';
$scope.searchkeys = {}; //搜索条件
$scope.area_place = {}; //搜索条件
$scope.dateChoose = {}; //选择日期组件存储值
$scope.BTdata
$scope.nowdata = moment(new Date()).format('YYYY/MM/DD HH:ss:mm');
var weeks = new Date().getDay();
$scope.starttimes = moment(new Date().getTime() - 86400000 * (weeks + 6 - 1)).format('YYYY-MM-DD 00:00:00');
$scope.endtimes = moment(new Date().getTime() - 86400000 * (weeks - 1)).format('YYYY-MM-DD 23:59:59');
$scope.changeForm = function (paramDateFrom) {
$scope.starttimes = moment(paramDateFrom).format('YYYY-MM-DD');
}
$scope.changeTo = function (paramDateTo) {
$scope.endtimes = moment(paramDateTo).format('YYYY-MM-DD');
}
$scope.searchkeys.startTime = $scope.starttimes;
$scope.searchkeys.endTime = $scope.endtimes;
console.log($scope.searchkeys.startTime, $scope.searchkeys.endTime)
// 运维报表搜索条件:
$scope.YWBB_searchKeys = {
'startTime': $scope.searchkeys.startTime,
'endTime': $scope.searchkeys.endTime,
}
// n天前
$scope.GetDateStr = function (AddDayCount) {
var dd = new Date();
dd.setDate(dd.getDate() + AddDayCount); //获取AddDayCount天后的日期
var y = dd.getFullYear();
var m = (dd.getMonth() + 1) < 10 ? "0" + (dd.getMonth() + 1) : (dd.getMonth() + 1); //获取当前月份的日期,不足10补0
var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate(); //获取当前几号,不足10补0
return y + "-" + m + "-" + d;
}
//上周
$scope.week = function () {
$scope.searchstate = "week";
var weeks = new Date().getDay();
$scope.starttimes = moment(new Date().getTime() - 86400000 * (weeks + 6)).format('YYYY-MM-DD');
$scope.endtimes = moment(new Date().getTime() - 86400000 * (weeks)).format('YYYY-MM-DD');
$scope.searchkeys.startTime = $scope.starttimes;
$scope.searchkeys.endTime = $scope.endtimes;
}
//上月
$scope.month = function () {
$scope.searchstate = "month";
$scope.starttimes = moment((new Date(moment().startOf('month'))).setMonth((new Date()).getMonth() - 1)).format('YYYY-MM-DD');
$scope.endtimes = moment((new Date(moment().startOf('month'))).setMonth((new Date()).getMonth()) - 86400000).format('YYYY-MM-DD');
$scope.searchkeys.startTime = $scope.starttimes;
$scope.searchkeys.endTime = $scope.endtimes;
}
//今年(1月1日-至今)
$scope.year = function () {
$scope.searchstate = "year";
$scope.starttimes = moment().startOf('year').format('YYYY-MM-DD 00:00:00');
$scope.endtimes = moment().format('YYYY-MM-DD 23:59:59');
$scope.searchkeys.startTime = $scope.starttimes;
$scope.searchkeys.endTime = $scope.endtimes;
}
// 近n年
$scope.nearYear = function (n) {
$scope.searchkeys.startTime = moment().subtract(n, "years").format("YYYY-MM-DD 00:00:00");
$scope.searchkeys.endTime = $scope.endtimes;
console.log($scope.searchkeys.startTime, $scope.searchkeys.endTime)
}
/**
*日历
*/
$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;
};
//选择类型
$scope.active = function (name) {
console.log($scope.searchkeys)
if($scope.searchkeys.placeId){
delete($scope.searchkeys.placeId)
}
if($scope.searchkeys.areaId){
delete($scope.searchkeys.areaId)
}
$scope.tap = name
$scope.searchkeys.startTime = moment($scope.searchkeys.startTime).format("YYYY-MM-DD 00:00:00");
$scope.searchkeys.endTime = moment($scope.searchkeys.endTime).format('YYYY-MM-DD 23:59:59');
if ($scope.tap == 'QSFX') {
$scope.tap1 = 'flqs'
$scope.area_place = {};
setTimeout(function () {
$scope.SLQS_Data($scope.searchkeys)
$scope.FLQS_Data1($scope.searchkeys)
}, 500);
} else if ($scope.tap == 'YWBB') {
$scope.area_place = {};
setTimeout(function () {
// barechart2();
barechart3();
// barechart6()
// barechart7()
// barechart8()
// barechart9();
$scope.YWXL_Data()
$scope.YWXQ_Data()
$scope.YWMYD_Data()
$scope.YWTop_Data()
}, 500);
} else if ($scope.tap == 'FLBB') {
$scope.area_place = {};
setTimeout(function () {
$scope.FLTJ_Data($scope.searchkeys)
$scope.FLQST_Data($scope.searchkeys)
$scope.QYFL_Data($scope.searchkeys)
}, 500);
} else if ($scope.tap == 'LYBB') {
$scope.area_place = {};
setTimeout(function () {
$scope.LYQS_Data($scope.searchkeys)
$scope.LYTJ_Data($scope.searchkeys)
}, 500);
}
}
//选择类型1
$scope.active1 = function (name) {
$scope.tap1 = name
if ($scope.tap1 == 'flxq') {
setTimeout(function () {
// barechart();
$scope.FLQS_Data($scope.searchkeys)
}, 500);
} else if ($scope.tap1 == 'flqs') {
setTimeout(function () {
// barechart2();
$scope.FLQS_Data1($scope.searchkeys)
}, 500);
}
}
// 请求人
api_user_data.fetchDataList('requester', {
"idx": 0,
"sum": 10
}).then(function (response) {
if (response) {
if (response.status = 200) {
$scope.requester = response.list;
}
}
})
//区域地点过滤
$scope.key = {};
api_user_data.fetchDataList('area', {
"idx": 0,
"sum": 1000
}).then(function (data) {
if (data) {
if (data.status = 200) {
$scope.outarea = data.list;
}
}
})
//地点区域过滤
$scope.onChangearea = function (data) {
// delete $scope.searchkeys.place;
// if ($scope.memoryfilterData.incident) {
// delete $scope.memoryfilterData.incident.place;
// }
console.log(data)
$scope.searchkeys['areaId'] = data.areaId.id
var fildata = {
"idx": 0,
"sum": 1000,
"place": {
area: {
id: data.areaId.id
}
}
};
api_user_data.fetchDataList('place', fildata).then(function (response) {
if (response) {
if (response.status = 200) {
$scope.outplace = response.list;
}
}
});
console.log($scope.searchkeys)
};
// 地点筛选
$scope.onChangeplace = function (key) {
console.log(key)
// $scope.searchkeys['areaId']=key.areaId.id
if ($scope.searchkeys.areaId) {
delete($scope.searchkeys.areaId)
}
$scope.searchkeys['placeId'] = key.placeId.id
console.log($scope.searchkeys)
}
// 选择日期
$scope.onChangeDate = function (s) {
switch (s) {
case 0:
// 最近90天
console.log('最近90天');
$scope.searchkeys.startTime = $scope.GetDateStr(-90);
break;
case 1:
// 最近一年
console.log('最近一年');
$scope.nearYear(1)
break;
case 2:
// 最近三年
console.log('最近三年');
$scope.nearYear(3)
break;
case 3:
// 最近五年
console.log('最近五年');
$scope.nearYear(5)
break;
}
}
//树形控件加载
$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;
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.tree_data = angular.copy($scope.my_data);
if ($scope.my_data.length > 0) {
$scope.doing_async = false;
}
// return $scope.my_tree.expand_all()
} else {
SweetAlert.swal({
title: "系统错误!",
text: "请刷新重试!",
type: "error"
});
}
});
};
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];
//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;
}
function convertParentToChildList(data) {
var treeMap = {};
var list = [];
convertListToTree(data, treeMap);
angular.forEach(treeMap, function (item) {
list.push(item);
});
return list;
}
// $scope.my_tree = tree = {};
$scope.try_async_load1 = function () {
$scope.my_data1 = [];
$scope.select_treedata = [];
$scope.doing_async = true;
api_user_data.fetchDataList('group', {
"idx": 0,
"sum": 1000,
group:{
'selectType':'nouser'
}
}).then(function (data) {
$scope.select_treedata = $scope.my_data1
//
= convertParentToChildList(data['list']);
$scope.doing_async = false;
// tree.expand_all();
//console.log(treelist);
});
};
$scope.try_async_load();
$scope.try_async_load1();
// 一、运维报表:
// 事件类型选择:
$scope.onFilterCategary = function (item) {
$scope.YWBB_searchKeys.categoryId = item.id;
}
$scope.onFilterGroup = function (item) {
$scope.YWBB_searchKeys.groupId = item.id;
}
// 图表1、事件运维效率
$scope.YWXL_Data = function () {
api_report_data.reportsData('incident_operations_efficiency', $scope.YWBB_searchKeys).then(function (data) {
$scope.YWXL_Datas = data;
barechart2(data);
})
}
// 图表2、事件运维详情
$scope.YWXQ_Data = function () {
api_report_data.reportsData('incident_operations_details', $scope.YWBB_searchKeys).then(function (data) {
// $scope.YWXL_Datas = data;
// 响应饼图
barechart6(data.response);
// 解决饼图
barechart7(data.solve);
// 柱状图
barechart8(data.barGraph);
})
}
//事件趋势分析报表
//数量趋势分析 图1
$scope.SLQS_Data = function (data) {
api_report_data.reportsData('incident_trend', data).then(function (data) {
console.log(data)
if (data) {
$scope.SLQS_Datas = data;
// console.log($scope.LYQS_Datas)
setTimeout(function () {
barechart($scope.SLQS_Datas)
}, 1000)
}
})
}
//分类趋势分析 图1
$scope.FLQS_Data1 = function (data) {
api_report_data.reportsData('incident_category_trend_time', data).then(function (data) {
console.log(data)
if (data) {
$scope.FLQS_Datas = data;
// console.log($scope.LYQS_Datas)
setTimeout(function () {
barechart1($scope.FLQS_Datas)
}, 1000)
}
})
}
//分类趋势分析 图2
$scope.FLQS_Data = function (data) {
api_report_data.reportsData('incident_category_month', data).then(function (data) {
console.log(data)
var list1 = []
var list2 = []
if (data) {
// for (var i = 0; i < data.data.length; i++) {
// for (var j = 0; j < data.data[i].length; j++) {
// // console.log(list1[i][j])
// for (var l = 0; l < data.dates.length; l++) {
// data.data[i][j]['time'] = data.dates[l]
// }
// }
// console.log(data.data[i])
// }
$scope.BTdata = data;
// console.log($scope.LYQS_Datas)
setTimeout(function () {
// barechart5($scope.BTdata)
wt($scope.BTdata)
}, 1000)
}
})
}
// 图表3、事件运维满意度
$scope.YWMYD_Data = function () {
api_report_data.reportsData('incident_operations_satisfaction', $scope.YWBB_searchKeys).then(function (data) {
$scope.YWMYD_Datas = data.sum;
barechart9(data.barGraph);
})
}
// 表格1、事件运维解决TOP排名
$scope.YWTop_Data = function (sort) {
console.log(sort)
var postData = $scope.YWBB_searchKeys;
if (sort) {
postData.sortKye = sort;
}
api_report_data.reportsData('incident_operations_top', postData).then(function (data) {
$scope.YWBB_table_data = data.table;
})
}
//事件来源报表数据获取
//来源趋势数据 图1
$scope.LYQS_Data = function (data) {
api_report_data.reportsData('incident_source', data).then(function (data) {
console.log(data)
if (data.stats == 200) {
$scope.LYQS_Datas = data.data;
console.log($scope.LYQS_Datas)
barechart13($scope.LYQS_Datas)
}
})
}
//来源统计数据 图2
$scope.LYTJ_Data = function (data) {
api_report_data.reportsData('incident_source_trend', data).then(function (data) {
console.log(data)
if (data.stats == 200) {
$scope.LYTJ_Datas = data.data;
console.log($scope.LYTJ_Datas)
barechart14($scope.LYTJ_Datas)
}
})
}
//事件分类报表
// 分类统计饼图
$scope.FLTJ_Data = function (list) {
api_report_data.reportsData('incident_category_proportion', list).then(function (data) {
// $scope.YWMYD_Datas = data.sum;
// barechart9(data.barGraph);
console.log(data)
barechart10(data)
})
}
// 分类趋势线图
$scope.FLQST_Data = function (list) {
api_report_data.reportsData('incident_category_trend', list).then(function (data) {
// $scope.YWMYD_Datas = data.sum;
// barechart9(data.barGraph);
console.log(data)
barechart11(data)
})
}
// 区域分类分析柱状图
$scope.QYFL_Data = function (list) {
api_report_data.reportsData('incident_category_area', list).then(function (data) {
// $scope.YWMYD_Datas = data.sum;
// barechart9(data.barGraph);
console.log(data)
barechart12(data)
})
}
//搜索
$scope.report_datas = function () {
console.log($scope.searchkeys)
var s = new Date($scope.searchkeys.startTime);
var st=s.getFullYear() + '-' + (s.getMonth() + 1) + '-' + s.getDate() + ' ' + s.getHours() + ':' + s.getMinutes() + ':' + s.getSeconds();
var e = new Date($scope.searchkeys.endTime);
var en=e.getFullYear() + '-' + (e.getMonth() + 1) + '-' + e.getDate() + ' ' + e.getHours() + ':' + e.getMinutes() + ':' + e.getSeconds();
$scope.searchkeys.startTime=st
$scope.searchkeys.endTime=en
if ($scope.tap == "YWBB") {
$scope.YWBB_searchKeys.startTime = $scope.searchkeys.startTime;
$scope.YWBB_searchKeys.endTime = $scope.searchkeys.endTime;
$scope.YWXL_Data()
$scope.YWXQ_Data()
$scope.YWMYD_Data()
$scope.YWTop_Data()
}
if ($scope.tap == 'LYBB') {
$scope.LYQS_Data($scope.searchkeys)
$scope.LYTJ_Data($scope.searchkeys)
}
if ($scope.tap == 'QSFX') {
$scope.SLQS_Data($scope.searchkeys)
$scope.FLQS_Data($scope.searchkeys)
$scope.FLQS_Data1($scope.searchkeys)
}
if ($scope.tap == 'FLBB') {
$scope.FLTJ_Data($scope.searchkeys)
$scope.FLQST_Data($scope.searchkeys)
$scope.QYFL_Data($scope.searchkeys)
}
}
//重置
$scope.report_Reset = function () {
$scope.select_treedata = [];
$scope.my_data = [];
$scope.dateChoose.dateSelected = {};
if($scope.searchkeys.placeId){
delete($scope.searchkeys.placeId)
}
if($scope.searchkeys.areaId){
delete($scope.searchkeys.areaId)
}
$scope.area_place = {};
$scope.starttimes = moment(new Date().getTime() - 86400000 * (weeks + 6 - 1)).format('YYYY-MM-DD');
$scope.endtimes = moment(new Date().getTime() - 86400000 * (weeks - 1)).format('YYYY-MM-DD');
$scope.searchkeys.startTime = $scope.starttimes
$scope.searchkeys.endTime = $scope.endtimes
console.log($scope)
if ($scope.tap == "YWBB") {
$scope.YWBB_searchKeys.startTime = $scope.searchkeys.startTime;
$scope.YWBB_searchKeys.endTime = $scope.searchkeys.endTime;
$scope.YWXL_Data()
$scope.YWXQ_Data()
$scope.YWMYD_Data()
$scope.YWTop_Data()
}
if ($scope.tap == 'LYBB') {
$scope.LYQS_Data($scope.searchkeys)
$scope.LYTJ_Data($scope.searchkeys)
}
if ($scope.tap == 'QSFX') {
$scope.SLQS_Data($scope.searchkeys)
$scope.FLQS_Data($scope.searchkeys)
$scope.FLQS_Data1($scope.searchkeys)
}
if ($scope.tap == 'FLBB') {
$scope.FLTJ_Data($scope.searchkeys)
$scope.FLQST_Data($scope.searchkeys)
$scope.QYFL_Data($scope.searchkeys)
}
}
//图表 来电转换
function barechart(datas) {
console.log(datas)
console.log(echarts)
if (datas) {
var dom = document.getElementById("ldzh");
console.log(dom)
var myChart = echarts.init(dom);
var option = null;
console.log(myChart)
myChart.showLoading({
text: '数据加载中...',
color: '#c23531',
textColor: '#fff',
maskColor: 'rgba(255,255,255,0)',
zlevel: 0
});
myChart.hideLoading();
option = {
tooltip: {
trigger: 'axis',
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
legend: {
data: ['事件总数', '环比增幅'],
align: 'left',
// itemWidth:10,
// itemHeight:10,
bottom: 0
},
grid: {
top: '8%',
left: '.5%',
right: '0%',
bottom: '15%',
containLabel: true
},
xAxis: [{
type: 'category',
// axisTick: {
// alignWithLabel: true
// },
axisLabel: {
textStyle: {
color: '#7B7B7B',
// fontSize: '14',
}
},
axisLine: {
show: true,
lineStyle: {
color: '#7B7B7B',
// type: 'dotted'
},
},
data: datas.dates
}],
yAxis: [{
type: 'value',
scale: true,
name: '事件数量 (件)',
min: 0,
boundaryGap: [0.2, 0.2],
axisLabel: {
textStyle: {
color: '#7B7B7B',
// fontSize: '14',
}
},
axisLine: {
show: true,
lineStyle: {
color: '#7B7B7B',
// type: 'dotted'
},
},
},
{
type: 'value',
scale: true,
name: '环比增幅 (%)',
min: 0,
max: 100,
boundaryGap: [0.2, 0.2],
axisLabel: {
formatter: '{value} %',
textStyle: {
color: '#7B7B7B',
// fontSize: '14',
}
},
axisLine: {
show: true,
lineStyle: {
color: '#7B7B7B',
// type: 'dotted'
},
},
}
],
series: [{
name: '事件总数',
type: 'bar',
barMaxWidth: 30,
itemStyle: {
normal: {
color: '#005395'
}
},
data: datas.data
},
{
name: '环比增幅',
type: 'line',
itemStyle: {
normal: {
color: '#1CA58F'
}
},
lineStyle: {
normal: {
color: '#1CA58F'
}
},
data: datas.per
}
]
};
if (option && typeof option === "object") {
myChart.setOption(option);
myChart.hideLoading();
}
}
}
//图表 事件分类趋势分析
function barechart1(datas) {
console.log(datas)
if (datas) {
var dom = document.getElementById("sjfx");
// console.log(dom)
var myChart1 = echarts.init(dom);
var option1 = null;
// console.log(myChart1)
myChart1.showLoading({
text: '数据加载中...',
color: '#c23531',
textColor: '#fff',
maskColor: 'rgba(255,255,255,0)',
zlevel: 0
});
myChart1.hideLoading();
var serie = []
for (var i = 0; i < datas.data.length; i++) {
// for (var j = 0; j < datas.title.length; j++) {
// Series.name = datas.title[j]
var Series = {
name: datas.title[i],
type: 'line',
itemStyle: {
normal: {
// color: '#49A9EE'
}
},
lineStyle: {
normal: {
// color: '#49A9EE'
}
},
data: datas.data[i]
}
// }
serie.push(Series)
}
option1 = {
// color: ['#005395', '#1EA58F', '#87C966', '#FFCD61', '#585247', '#49A9EE', '#009D85', "rgba(250,250,250,0.3)"],
tooltip: {
trigger: 'axis',
axisPointer: { // 坐标轴指示器,坐标轴触发有效
// type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
lineStyle: {
color: '#49A9EE',
type: 'dotted'
},
},
formatter: function (params) {
// console.log(params);
// console.log($scope.FLQS_Datas);
var retStr = "";
for (var j = 0; j < $scope.FLQS_Datas.title.length; j++) {
for (var i = 0; i < params.length; i++) {
var dateIndex = $scope.FLQS_Datas.dates.indexOf(params[i].name);
};
// var str = $scope.FLQS_Datas.title[j] + ":" + $scope.FLQS_Datas.data[j][dateIndex] + " " + "环比增幅:" + $scope.FLQS_Datas.per[j][dateIndex] + "%" + "
"
// $scope.FLQS_Datas.per[j][dateIndex]= $scope.FLQS_Datas.per[j][dateIndex].toString()
// if($scope.FLQS_Datas.per[j][dateIndex].indexOf('-')<0){
// $scope.FLQS_Datas.per[j][dateIndex]='+'+$scope.FLQS_Datas.per[j][dateIndex]
// }else{
// }
// console.log('+'+$scope.FLQS_Datas.per[j][dateIndex])
var str = "