'use strict'; app.controller('event_formCtrl', ["$scope", "$rootScope", "$state", "$timeout", "$interval", "$http", "$cookieStore", "SweetAlert", "Restangular", "api_report", "api_statistic", "moment", "api_event_form", "api_user_data", "api_bpm", "api_category", "$modal", "i18nService", function ($scope, $rootScope, $state, $timeout, $interval, $http, $cookieStore, SweetAlert, Restangular, api_report, api_statistic, moment, api_event_form, api_user_data, api_bpm, api_category, $modal, i18nService) { //默认显示事件总数 $scope.tap = 'SJZS'; //默认无选中,选择日期 $scope.searchstate = 'none'; //默认按日统计 $scope.dateItem = 'day'; //按日 $scope.dayByClick = function () { $scope.datepickerPopuptime = 'yyyy-MM-dd';//日期格式化 $scope.day(7);//近7天 }; //按月 $scope.monthByClick = function () { $scope.datepickerPopuptime = 'yyyy-MM'; $scope.month(1); }; //按年 $scope.yearByClick = function () { $scope.datepickerPopuptime = 'yyyy'; $scope.year(1); }; //日期显示格式 $scope.datepickerPopuptime = 'yyyy-MM-dd'; //按日/月/年统计 $scope.dateItemClick = function (str) { $scope.dateItem = str; switch (str) { case 'day': $scope.dayByClick(); break; case 'month': $scope.monthByClick(); break; case 'year': $scope.yearByClick(); break; } }; // 事件详情 $scope.toDetail= function(rowData, own, searchCriteria, type){ console.log(rowData, own, searchCriteria, type); var modalInstance = $modal.open({ templateUrl: 'assets/views/incident/tpl/order.tpl.html', controller: function ($scope, scope, $rootScope, $modalInstance, Alert, api_user_data) { console.log(rowData, own, type); $scope.type = type; $scope.detailsTypeList = [ {type: 'default', name: '事件详情', columnName: '事件详情'}, {type: 'handlingPersonnelUser', name: '人员统计', columnName: '人员姓名'}, {type: 'department', name: '科室统计', columnName: '科室名称'}, {type: 'building', name: '楼栋统计', columnName: '楼栋名称'}, {type: 'floor', name: '楼层统计', columnName: '楼栋楼层名称'}, ]; $scope.detailsType = "default"; $scope.own = { handlingPersonnelUser: undefined, department: undefined, area: undefined, place: undefined, } $scope.columnDefs = [ { name: 'acceptDate', displayName: '登记时间', width: 100, cellTemplate: '
' + '
{{grid.appScope.transferTime(row.entity.acceptDate, "YYYY-MM-DD")}}
{{grid.appScope.transferTime(row.entity.acceptDate, "HH:mm")}}
' + '
' }, { name: 'incidentsign', displayName: '单号', width: 110, cellTemplate: '
' + '
{{row.entity.incidentsign}}
' + '
' }, { name: 'department', displayName: '报修科室', width: 130, cellTemplate: '
' + '
{{row.entity.department ? row.entity.department.dept : "无"}}
' + '
' }, { name: 'description', displayName: '故障描述', width: 125, cellTemplate: '
' + '
{{row.entity.description}}
' + '
' }, { name: 'areaPlace', displayName: '楼栋楼层', width: 125, cellTemplate: '
' }, { name: 'groupORHandlerUser', displayName: '处理人', width: 85, }, { name: 'row8', displayName: '响应时长', width: 100, }, { name: 'row9', displayName: '解决时长', width: 100, }, { name: 'degree.name', displayName: '满意度', width: 70, }, ]; $scope.areaplace = function (data) { var str = ''; str += (data.place ? (data.place.area ? data.place.area.area : '') : ''); str += (data.place ? (data.place.place ? data.place.place : '') : ''); return str || '无'; } $scope.gridOptions = {}; $scope.gridOptions.columnDefs = $scope.columnDefs; $scope.gridOptions.rowHeight = 54; $scope.gridOptions.data = 'myData'; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = false; $scope.gridOptions.enableGridMenu = true; $scope.gridOptions.enableSelectAll = true; $scope.gridOptions.enableRowSelection = true; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.enableSorting = true; $scope.gridOptions.useExternalSorting = true; $scope.gridOptions.useExternalFiltering = false; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = true; $scope.gridOptions.onRegisterApi = function (gridApi) { gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) { $scope.getData(newPage - 1, pageSize); }); } // ---------------start $scope.columnDefs1 = [ { name: $scope.detailsType, displayName: $scope.detailsTypeList.find(v => v.type == $scope.detailsType).columnName, width: "20%", cellTemplate: $scope.detailsType === "floor" ? '
' + '
{{row.entity.building}} {{row.entity.floor}}
' + '
' : '
' + '
{{row.entity.'+ $scope.detailsType + '}}
' + '
' }, { name: 'sum', displayName: '事件数量', width: "20%", }, { name: 'responseTime', displayName: '平均响应时长', width: "20%", }, { name: 'resolvedTime', displayName: '平均解决时长', width: "20%", }, { name: 'proportion', displayName: '占比', width: "20%", }, ]; $scope.gridOptions1 = {}; $scope.gridOptions1.columnDefs = $scope.columnDefs1; $scope.gridOptions1.rowHeight = 54; $scope.gridOptions1.data = 'myData1'; $scope.gridOptions1.enableColumnResizing = true; $scope.gridOptions1.enableFiltering = false; $scope.gridOptions1.enableGridMenu = true; $scope.gridOptions1.enableSelectAll = true; $scope.gridOptions1.enableRowSelection = true; $scope.gridOptions1.showGridFooter = true; $scope.gridOptions1.showColumnFooter = false; $scope.gridOptions1.fastWatch = true; $scope.gridOptions1.enableSorting = true; $scope.gridOptions1.useExternalSorting = true; $scope.gridOptions1.useExternalFiltering = false; $scope.gridOptions1.useExternalPagination = true; $scope.gridOptions1.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions1.paginationPageSize = 10; $scope.gridOptions1.multiSelect = true; // ---------------end $scope.transferTime = function (time, type) { if(time){ return moment(time).format(type); }else{ return '无'; } } $scope.toIncidentDetail = function (data) { $scope.cancel(); // $state.go('app.incident.detail', { // formKey: 'incident_back', // pdKey: 'incident', // dataId: data.id, // taskId: data.taskId, // processInstanceId: data.processInstanceId // }); window.open(location.origin+'/#/app/incident/detail/incident_back/incident/'+data.id+'/'+data.taskId+'/'+data.processInstanceId+'//'); } // 切换tab $scope.clickTab = function(item){ $scope.detailsType = item.type; $scope.getData(); // 故障现象 if(type == 2 && $scope.detailsType != "default"){ $scope.columnDefs1.splice(0, 1 , { name: $scope.detailsType, displayName: $scope.detailsTypeList.find(v => v.type == $scope.detailsType).columnName, width: "20%", cellTemplate: $scope.detailsType === "floor" ? '
' + '
{{row.entity.building}} {{row.entity.floor}}
' + '
' : '
' + '
{{row.entity.'+ $scope.detailsType + '}}
' + '
' }) } } //获取列表数据 $scope.langs = i18nService.getAllLangs(); $scope.lang = 'zh-cn'; i18nService.setCurrentLang($scope.lang); $scope.langs1 = i18nService.getAllLangs(); $scope.lang1 = 'zh-cn'; i18nService.setCurrentLang($scope.lang1); $scope.myData1 = []; $scope.myData = []; $scope.getData = function (idx = 0, sum = 10) { // 故障现象 if(type == 2 && $scope.detailsType != "default"){ $rootScope.isMask = true; api_event_form.fetchSjlxDetail({ "dutyId": own.duty ? own.duty.id : undefined, "branchId": own.duty ? undefined: (own.branch ? own.branch.id : undefined), "startTime": moment(searchCriteria.starttimesModel).format('YYYY-MM-DD'), "endTime": moment(searchCriteria.endtimesModel).format('YYYY-MM-DD'), "hierarchy": scope.sjSelectedOne.value.id, "sortData": scope.name, "sortType": scope.type, // "sortData": "sum", // "sortType": "desc", "detailsType": $scope.detailsType, "categoryId": rowData.categoryId, }).then(function (data) { $rootScope.isMask = false; if (data.stats) { $scope.gridOptions1['totalItems'] = data.totalNum; $scope.myData1 = data.typedataList;//表格列表 } else { SweetAlert.swal({ title: "系统错误", text: "请稍后再试!", type: "error" }); } }, function () { $rootScope.isMask = false; }); return; } var filterData = { "idx": idx, "sum": sum, "incident": {} }; switch(type){ case 1: filterData.incident.state = {value: 'close'}; filterData.incident.hasHandlingPersonnelUser = 1; filterData.incident.acceptDate = moment(rowData.accdate).startOf(searchCriteria.dateItem).format('YYYY-MM-DD HH:mm:ss'); filterData.incident.acceptDateEnd = moment(rowData.accdate).endOf(searchCriteria.dateItem).format('YYYY-MM-DD HH:mm:ss'); filterData.incident.duty = own.duty ? own.duty : undefined; filterData.incident.branch = own.duty ? undefined : (own.branch ? own.branch.id : undefined); break; case 2: filterData.incident.state = {value: 'close'}; filterData.incident.hasHandlingPersonnelUser = 1; filterData.incident.acceptDate = moment(searchCriteria.starttimesModel).startOf('day').format('YYYY-MM-DD HH:mm:ss'); filterData.incident.acceptDateEnd = moment(searchCriteria.endtimesModel).endOf('day').format('YYYY-MM-DD HH:mm:ss'); filterData.incident.duty = own.duty ? own.duty : undefined; filterData.incident.branch = own.duty ? undefined : (own.branch ? own.branch.id : undefined); filterData.incident.levelCategory = {id: rowData.categoryId}; break; case 3: filterData.incident.state = {value: 'close'}; filterData.incident.hasHandlingPersonnelUser = 1; filterData.incident.acceptDate = moment(searchCriteria.starttimesModel).startOf('day').format('YYYY-MM-DD HH:mm:ss'); filterData.incident.acceptDateEnd = moment(searchCriteria.endtimesModel).endOf('day').format('YYYY-MM-DD HH:mm:ss'); filterData.incident.duty = own.duty ? own.duty : undefined; filterData.incident.branch = own.duty ? undefined : (own.branch ? own.branch.id : undefined); filterData.incident.handlingPersonnelUser = {id: rowData.handlingPersonnelUserId}; break; case 4: filterData.incident.state = {value: 'close'}; filterData.incident.hasHandlingPersonnelUser = 1; filterData.incident.acceptDate = moment(searchCriteria.starttimesModel).startOf('day').format('YYYY-MM-DD HH:mm:ss'); filterData.incident.acceptDateEnd = moment(searchCriteria.endtimesModel).endOf('day').format('YYYY-MM-DD HH:mm:ss'); filterData.incident.handlingPersonnelUser = {id: rowData.userId}; break; } filterData.incident.handlingPersonnelUser = $scope.own.handlingPersonnelUser; filterData.incident.department = $scope.own.department; filterData.incident.area = $scope.own.area; filterData.incident.place = $scope.own.place; // debugger; $rootScope.isMask = true; api_user_data.fetchDataList('incident', filterData).then(function (data) { $rootScope.isMask = false; if (data.list) { var myData = Restangular.stripRestangular(data); $scope.gridOptions['totalItems'] = myData.totalNum; $scope.myData = myData.list; for (var i = 0; i < $scope.myData.length; i++) { var row8Minutes = moment($scope.myData[i]['responseHandleTime']).diff(moment($scope.myData[i]['acceptDate']), 'minute'); var row9Minutes = moment($scope.myData[i]['handleTime']).diff(moment($scope.myData[i]['responseHandleTime']), 'minute'); $scope.myData[i]['row8'] = (row8Minutes / 60 >= 1 ? parseInt(row8Minutes / 60) + '小时' : '') + row8Minutes % 60 + '分'; $scope.myData[i]['row9'] = (row9Minutes / 60 >= 1 ? parseInt(row9Minutes / 60)+ '小时' : '') + row9Minutes % 60 + '分'; } } else { SweetAlert.swal({ title: "系统错误", text: "请稍后再试!", type: "error" }); } }, function () { $rootScope.isMask = false; }); }; $scope.getData(); // 获取处理人 $scope.getUsers = function(keyWord){ var postData = { "idx": 0, "sum": 10, "user": { "selectDetails": "1", "simple": true, "name": keyWord, "selectType": "pinyin_qs", engineer: 1, } }; if(own.duty){ postData.user.duty = own.duty; }else if(own.branch){ postData.user.branch = own.branch; } api_user_data.fetchDataList("user", postData).then(function (data) { $scope.users = data.list || []; }); } // 获取报修科室 $scope.getDepts = function(keyWord){ var postData = { "idx": 0, "sum": 10, "department": { dept: keyWord, selectType: "pinyin_qs" } }; if(own.branch){ postData.department.branch = own.branch.id; } api_user_data.fetchDataList("department", postData).then(function (data) { $scope.depts = data.list || []; }); } // 获取楼栋 $scope.getAreas = function(keyWord){ var postData = { "idx": 0, "sum": 9999, "area": { area: keyWord, selectType: "pinyin_qs" } }; if(own.branch){ postData.area.branch = own.branch.id; } api_user_data.fetchDataList("area", postData).then(function (data) { $scope.areas = data.list || []; }); } // 选择楼栋 $scope.changeArea = function(){ $scope.own.place = undefined; $scope.places = []; $scope.getPlaces('', $scope.own.area.id) } // 获取楼层 $scope.getPlaces = function(keyWord,areaId){ if(!areaId){ $scope.places = []; return; } var postData = { "idx": 0, "sum": 9999, "place": { areaId: areaId, place: keyWord, selectType: "pinyin_qs" } }; if(own.branch){ postData.place.branch = own.branch.id; } api_user_data.fetchDataList("place", postData).then(function (data) { $scope.places = data.list || []; }); } $scope.reload = function(){ $scope.own = { handlingPersonnelUser: undefined, department: undefined, area: undefined, place: undefined, } $scope.places = []; $scope.getData(); } $scope.cancel = function () { $modalInstance.dismiss('cancel'); } }, size: 'lg', resolve: { Alert: function () { return SweetAlert; }, api_user_data: function () { return api_user_data; }, scope: function () { return $scope; } } }); modalInstance.result.then(function (selectedItem) {}); } // 切换院区 $scope.own = {}; $scope.changeBranch = function(){ console.log($scope.own.branch); $scope.dutys = []; $scope.own.duty = null; $scope.own.branch && $scope.getOwnDuty($scope.own.branch.id); $scope.groupSelected = [{ id: -2, groupName: '按组选择' }, { id: -1, groupName: '按人选择' }]; $scope.groupSelectedOne = { value: $scope.groupSelected[1]//选中 }; $scope.own.duty && $scope.tap == 'CLRZ' && $scope.mdxquery(); } // 切换责任科室 $scope.changeDuty = function(){ console.log($scope.own.duty); $scope.groupSelected = [{ id: -2, groupName: '按组选择' }, { id: -1, groupName: '按人选择' }]; $scope.groupSelectedOne = { value: $scope.groupSelected[1]//选中 }; $scope.own.duty && $scope.tap == 'CLRZ' && $scope.mdxquery(); } // 获取院区 $scope.branchs = []; $scope.getOwnBranch = function(){ api_category .getOwnBranch({}) .then(function (response) { if (response) { if ((response.status = 200)) { $scope.branchs = response.data; if($rootScope.user.duty){ $scope.own.branch = {id: $rootScope.user.duty.branch, hosName: $rootScope.user.duty.branchName}; $scope.getOwnDuty($rootScope.user.duty.branch, true); }else if($rootScope.user.branch){ $scope.own.branch = $rootScope.user.branch; $scope.getOwnDuty($rootScope.user.branch.id, true); $scope.init(); } } } }); } $scope.getOwnBranch(); // 获取责任科室 $scope.dutys = []; $scope.getOwnDuty = function(branchId, isFirst = false, isReload = false){ api_category .getOwnDuty({branchId: branchId}) .then(function (response) { if (response) { if ((response.status = 200)) { $scope.dutys = response.data; if(isFirst && $rootScope.user.duty){ $scope.own.duty = $rootScope.user.duty; // $scope.getGroups($scope.own.duty); $scope.init(); } if(isReload){ if($rootScope.user.duty){ $scope.own.duty = $rootScope.user.duty; } switch ($scope.tap) { case 'SJZS'://事件总数 $scope.sortActive = 'accdatetop'; $scope.name = 'accdate';//表格排序,字段名称 $scope.mdxquery('accdate', 'desc'); break; case 'SJLX'://故障现象 $scope.sortActive = 'sumtop'; $scope.name = 'sum';//表格排序,字段名称 $scope.mdxquery('sum', 'desc'); $scope.sjSelectedOne.value = $scope.sjSelected[0];//故障现象级别 break; case 'CLRZ'://处理人/组 $scope.sortActive = 'sumtop'; $scope.name = 'sum';//表格排序,字段名称 $scope.mdxquery('sum', 'desc'); $scope.groupSelectedOne.value = $scope.groupSelected[1];//选择处理人/组 break; case 'SFGS'://三方公司 $scope.sortActive = 'i_totaltop'; $scope.name = 'i_total';//表格排序,字段名称 $scope.mdxquery('i_total', 'desc'); $scope.companySelectedOne.value = {id:-1,name:''};//选择三方公司 break; case 'QYDD'://区域地点 $scope.sortActive = 'sumtop'; $scope.name = 'sum';//表格排序,字段名称 $scope.mdxquery('sum', 'desc'); $scope.areaSelectedOne.value = $scope.areaSelected[0];//区域/地点 break; case 'KSTJ'://科室统计 $scope.sortActive = 'sumtop'; $scope.name = 'sum';//表格排序,字段名称 $scope.mdxquery('sum', 'desc'); break; case 'SJLY'://事件来源 $scope.sortActive = 'sumtop'; $scope.name = 'sum';//表格排序,字段名称 $scope.mdxquery('sum', 'desc'); break; } } } } }); } //切换开始/结束日期 $scope.timesChange = function (str) { //切换结束日期的时候为年底或月底,方便传参 switch (str) { case 'month': $scope.endtimesModel = moment($scope.endtimesModel).endOf('month').toDate(); break; case 'year': $scope.endtimesModel = moment($scope.endtimesModel).endOf('year').toDate(); break; } $scope.datepickerUpdate(str); }; //配置项更新 $scope.datepickerUpdate = function (str) { //开始的datepickerOptions $scope.datepickerOptionsStart = { maxDate: moment($scope.endtimesModel).format('YYYY/MM/DD'), minMode: str, datepickerMode: str }; //结束的datepickerOptions $scope.datepickerOptionsEnd = { minDate: moment($scope.starttimesModel).format('YYYY/MM/DD'), maxDate: moment().format('YYYY/MM/DD'), minMode: str, datepickerMode: str }; }; //日期选择 //近N周 $scope.week = function (num) { num = num > 1 ? num : 1; $scope.searchstate = "week" + num; var weeks = new Date().getDay(); $scope.starttimesModel = moment(new Date().getTime() - num * 86400000 * (weeks + 6)).toDate(); $scope.endtimesModel = moment(new Date().getTime() - 86400000 * (weeks)).toDate(); $scope.datepickerUpdate('day'); } //近N月 $scope.month = function (num) { num = num > 1 ? num : 1; $scope.searchstate = "month" + num; $scope.starttimesModel = moment().startOf('month').add(-num, 'M').toDate(); $scope.endtimesModel = moment().endOf('month').add(-1, 'M').toDate(); $scope.datepickerUpdate('month'); } //近N年 $scope.year = function (num) { num = num > 1 ? num : 1; $scope.searchstate = "year" + num; $scope.starttimesModel = moment().startOf('year').add(-num, 'y').toDate(); $scope.endtimesModel = moment().endOf('year').add(-1, 'y').toDate(); $scope.datepickerUpdate('year'); } //近N日 $scope.day = function (num) { num = num > 1 ? num : 1; $scope.searchstate = "none"; $scope.starttimesModel = moment().subtract(num, "days").toDate(); $scope.endtimesModel = moment().subtract(1, "days").toDate(); $scope.datepickerUpdate('day'); } //选择上一周,上个月,去年等等快捷方式 $scope.chooseDate = function (date) { switch (date) { case 'week1'://上周 $scope.week(1); break; case 'month1'://上个月 $scope.month(1); break; case 'month3'://近三月 $scope.month(3); break; case 'month6'://近六月 $scope.month(6); break; case 'year1'://去年 $scope.year(1); break; case 'year3'://近三年 $scope.year(3); break; case 'year5'://近五年 $scope.year(5); break; } }; // 故障现象级别 $scope.sjSelected = [{ name: '一级分类', id: 1 }, { name: '二级分类', id: 2 }, { name: '三级分类', id: 3 }]; $scope.sjSelectedOne = { value: $scope.sjSelected[0]//选中 }; // 处理人/组 $scope.groupSelected = [{ id: -2, groupName: '按组选择' }, { id: -1, groupName: '按人选择' }]; $scope.groupSelectedOne = { value: $scope.groupSelected[1]//选中 }; $scope.tableGroupSelectedOne = '';//处理组或人 // 三方公司 $scope.companySelected = []; $scope.companySelectedOne = { value: {id:-1,name:""}//选中 }; // 区域地点 $scope.areaSelected = [{ name: '区域', id: 1 }, { name: '地点', id: 2 }]; $scope.areaSelectedOne = { value: $scope.areaSelected[0]//选中 }; /** *日历 */ //打开开始日期选择框 $scope.startOpen = function ($event) { console.log(1) $event.preventDefault(); $event.stopPropagation(); $scope.endOpened = false; $scope.startOpened = !$scope.startOpened; }; //打开结束日期选择框 $scope.endOpen = function ($event) { $event.preventDefault(); $event.stopPropagation(); $scope.startOpened = false; $scope.endOpened = !$scope.endOpened; }; //重置 $scope.reload = function () { $scope.dateItemClick('day'); $scope.type = 'desc';//表格排序,排序方式desc,asc $scope.direction = 'top';//箭头方向 top,bottom if($rootScope.user.duty){ $scope.own.branch = {id: $rootScope.user.duty.branch, hosName: $rootScope.user.duty.branchName}; $scope.getOwnDuty($rootScope.user.duty.branch, false, true); }else if($rootScope.user.branch){ $scope.own.branch = $rootScope.user.branch; $scope.getOwnDuty($rootScope.user.branch.id, false, true); } }; //选择类型,事件总数,故障现象,处理人/组,区域地点 $scope.active = function (name) { $scope.tap = name; $scope.reload(); }; //事件总数,无限滚动加载 $scope.topEndComplete = function () { console.log('滚动'); }; //表格排序------------------------------------------------ $scope.sortActive = '';//表格排序,箭头高亮选中状态 $scope.type = '';//表格排序,排序方式desc,asc $scope.name = '';//表格排序,字段名称 $scope.direction = '';//箭头方向 top,bottom /** * 表格排序 * * @param {string} name 字段名称 * @param {string} type 排序方式desc,asc * @param {string} direction 箭头方向 top,bottom */ $scope.tableSort = function (name, type, direction) { if ($scope.name == name) { $scope.type = $scope.type == 'desc' ? 'asc' : 'desc'; $scope.direction = $scope.direction == 'top' ? 'bottom' : 'top'; } else { $scope.type = 'desc'; $scope.direction = 'top'; } $scope.name = name; $scope.sortActive = name + $scope.direction; $scope.mdxquery(name, $scope.type); }; //搜索---------------------------------------------------- //loading $scope.isArrays = function (arr) { return Array.isArray(arr); }; //事件总数 $scope.sjzs_list = null;//表格列表 $scope.sjzs_num = 0;//事件总数数量 $scope.sjzs_responseTime = '0分';//平均响应时间 $scope.sjzs_resolvedTime = '0分';//平均解决时间 $scope.sjzs_satisfactionRatio = 0;//满意度 //故障现象 $scope.sjlx_list = null;//表格列表 $scope.sjlx_num = 0;//事件总数数量 //处理人/组 $scope.clrz_list = null;//表格列表 $scope.clrz_num = 0;//事件总数数量 $scope.clrz_responseTime = '0分';//平均响应时间 $scope.clrz_resolvedTime = '0分';//平均解决时间 $scope.clrz_satisfactionRatio = 0;//满意度 //三方公司 $scope.sfgs_list = null;//表格列表 $scope.sfgs_c_total = 0;//公司总数 $scope.sfgs_u_total = 0;//人员总数 $scope.sfgs_p_total = 0;//解决事件总数 $scope.sfgs_p_time = '0分';//平均解决时长 //区域地点 $scope.qydd_list = null;//表格列表 $scope.qydd_num = 0;//事件总数数量 //科室统计 $scope.kstj_list = null;//表格列表 $scope.kstj_num = 0;//事件总数数量 //事件来源 $scope.sjly_list = null;//表格列表 $scope.sjly_num = 0;//事件总数数量 /** * * * @param {string} name 排序字段 * @param {string} type 排序方式 desc,asc */ $scope.mdxquery = function (name, type) { if (!name) { if($scope.tap == 'SJZS'){ name = 'accdate'; }else if($scope.tap == 'SFGS'){ name = 'i_total'; }else{ name = 'sum'; } } type = type || 'desc'; switch ($scope.tap) { case 'SJZS'://事件总数 $scope.sjzs_list = null; // 请求列表 api_event_form.fetchSjzsList({ "dutyId": $scope.own.duty ? $scope.own.duty.id : undefined, "branchId": $scope.own.duty ? undefined: ($scope.own.branch ? $scope.own.branch.id : undefined), "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'), "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'), "type": $scope.dateItem, "sortData": name, "sortType": type }).then(function (res) { if (res.stats == 200) { $scope.sjzs_list = res.dataList;//表格列表 $scope.sjzs_num = res.sum;//事件总数数量 $scope.sjzs_responseTime = res.responseTime;//平均响应时间 $scope.sjzs_resolvedTime = res.resolvedTime;//平均解决时间 $scope.sjzs_satisfactionRatio = res.satisfactionRatio;//满意度 } }) break; case 'SJLX'://故障现象 $scope.sjlx_list = null; // 请求列表 api_event_form.fetchSjlxList({ "dutyId": $scope.own.duty ? $scope.own.duty.id : undefined, "branchId": $scope.own.duty ? undefined: ($scope.own.branch ? $scope.own.branch.id : undefined), "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'), "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'), "hierarchy": $scope.sjSelectedOne.value.id, "sortData": name, "sortType": type }).then(function (res) { if (res.stats == 200) { $scope.sjlx_list = res.typedataList;//表格列表 $scope.sjlx_num = res.data.sum;//事件总数数量 } }) // 请求事件总数数量 // api_event_form.getSjNum({ // "dutyId": $scope.own.duty ? $scope.own.duty.id : undefined, // "branchId": $scope.own.duty ? undefined: ($scope.own.branch ? $scope.own.branch.id : undefined), // "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'), // "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'), // }).then(function (res) { // if (res.stats == 200) { // $scope.sjlx_num = res.data[0].sum;//事件总数数量 // } // }) break; case 'CLRZ'://处理人/组 $scope.clrz_list = null; //获取组 api_user_data.fetchDataList('group', { idx: 0, sum: 1000, group: { duty: $scope.own.duty || undefined, selectType: "nouser" } }).then(res => { if (res.status == 200) { var groupList = [{ id: -2, groupName: '按组选择' }, { id: -1, groupName: '按人选择' }]; groupList.push(...res.list); $scope.groupSelected = groupList;//下拉框数据 // 请求列表 if ($scope.groupSelectedOne.value.id == -2) {//按组 var params = { "dutyId": $scope.own.duty ? $scope.own.duty.id : undefined, "branchId": $scope.own.duty ? undefined: ($scope.own.branch ? $scope.own.branch.id : undefined), "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'), "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'), "type": 1, "sortData": name, "sortType": type }; } else if ($scope.groupSelectedOne.value.id == -1) {//按人 var params = { "dutyId": $scope.own.duty ? $scope.own.duty.id : undefined, "branchId": $scope.own.duty ? undefined: ($scope.own.branch ? $scope.own.branch.id : undefined), "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'), "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'), "type": 2, "sortData": name, "sortType": type }; } else { var params = { "dutyId": $scope.own.duty ? $scope.own.duty.id : undefined, "branchId": $scope.own.duty ? undefined: ($scope.own.branch ? $scope.own.branch.id : undefined), "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'), "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'), "type": 3, "groupid": $scope.groupSelectedOne.value.id, "sortData": name, "sortType": type }; } api_event_form.fetchClrzList(params).then(function (res) { if (res.stats == 200) { $scope.tableGroupSelectedOne = params.type;//处理人或组 $scope.clrz_list = res.listData;//表格列表 $scope.clrz_num = res.sum;//事件总数量 $scope.clrz_responseTime = res.responseTime;//平均响应时间 $scope.clrz_resolvedTime = res.resolvedTime;//平均解决时间 $scope.clrz_satisfactionRatio = res.satisfactionRatio;//满意度 } }) } }) break; case 'SFGS'://三方公司 $scope.sfgs_list = null; //获取三方公司 api_user_data.fetchDataList('company', { idx: 0, sum: 1000, company: {} }).then(res => { if (res.status == 200) { $scope.companySelected = res.list;//下拉框数据 // 请求列表 var postData = { "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'), "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'), "sortData": name, "sortType": type } if($scope.companySelectedOne.value.id > 0){ postData.companyId = $scope.companySelectedOne.value.id; } api_event_form.fetchSfgsList(postData).then(function (res) { if (res.stats == 200) { $scope.sfgs_list = res.dataList;//表格列表 $scope.sfgs_c_total = res.title.c_total;//公司总数 $scope.sfgs_u_total = res.title.u_total;//人员总数 $scope.sfgs_p_total = res.title.p_total;//解决事件总数 $scope.sfgs_p_time = res.title.p_time;//平均解决时长 } }) } }) break; case 'QYDD'://区域地点 $scope.qydd_list = null; // 请求列表 api_event_form.fetchQyddList({ "dutyId": $scope.own.duty ? $scope.own.duty.id : undefined, "branchId": $scope.own.duty ? undefined: ($scope.own.branch ? $scope.own.branch.id : undefined), "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'), "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'), "type": $scope.areaSelectedOne.value.id, "sortData": name, "sortType": type }).then(function (res) { if (res.stats == 200) { $scope.qydd_list = res.listData;//表格列表 $scope.qydd_num = res.data.sum;//事件总数数量 } }) // 请求事件总数数量 // api_event_form.getSjNum({ // "dutyId": $scope.own.duty ? $scope.own.duty.id : undefined, // "branchId": $scope.own.duty ? undefined: ($scope.own.branch ? $scope.own.branch.id : undefined), // "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'), // "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD') // }).then(function (res) { // if (res.stats == 200) { // $scope.qydd_num = res.data[0].sum;//事件总数数量 // } // }) break; case 'KSTJ'://科室统计 $scope.kstj_list = null; // 请求列表 api_event_form.fetchKstjList({ "dutyId": $scope.own.duty ? $scope.own.duty.id : undefined, "branchId": $scope.own.duty ? undefined: ($scope.own.branch ? $scope.own.branch.id : undefined), "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'), "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'), "sortData": name, "sortType": type }).then(function (res) { if (res.stats == 200) { $scope.kstj_list = res.dataList;//表格列表 $scope.kstj_num = res.data.sum;//事件总数数量 } }) break; case 'SJLY'://事件来源 $scope.sjly_list = null; // 请求列表 api_event_form.fetchSjlyList({ "dutyId": $scope.own.duty ? $scope.own.duty.id : undefined, "branchId": $scope.own.duty ? undefined: ($scope.own.branch ? $scope.own.branch.id : undefined), "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'), "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'), "sortData": name, "sortType": type }).then(function (res) { if (res.stats == 200) { $scope.sjly_list = res.listData;//表格列表 $scope.sjly_num = res.data.sum;//事件总数数量 } }) // 请求事件总数数量 // api_event_form.getSjNum({ // "dutyId": $scope.own.duty ? $scope.own.duty.id : undefined, // "branchId": $scope.own.duty ? undefined: ($scope.own.branch ? $scope.own.branch.id : undefined), // "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'), // "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD') // }).then(function (res) { // if (res.stats == 200) { // $scope.sjly_num = res.data[0].sum;//事件总数数量 // } // }) break; } }; // 请求人 // api_user_data.fetchDataList('requester', { // "idx": 0, // "sum": 10 // }).then(function (response) { // if (response) { // if (response.status = 200) { // $scope.requester = response.list; // } // } // }) //导出 $scope.export = function () { var postData = { "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'), "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'), "sortData": $scope.name, "sortType": $scope.type, report: {} } switch ($scope.tap) { case 'SJZS'://事件总数 postData.dutyId = $scope.own.duty ? $scope.own.duty.id : undefined; postData.branchId = $scope.own.duty ? undefined : ($scope.own.branch ? $scope.own.branch.id : undefined); postData.type = $scope.dateItem; postData.key = 'mdv2_incident_repot_sum'; if($scope.own.duty && $scope.own.duty.addSummary == 1){ postData.titles = ['时间', '事件数量', '平均响应时间', '平均解决时间', '耗材费用', '工时费用', '总费用']; }else{ postData.titles = ['时间', '事件数量', '平均响应时间', '平均解决时间']; } break; case 'SJLX'://故障现象 postData.dutyId = $scope.own.duty ? $scope.own.duty.id : undefined; postData.branchId = $scope.own.duty ? undefined : ($scope.own.branch ? $scope.own.branch.id : undefined); postData.hierarchy = $scope.sjSelectedOne.value.id; postData.key = 'mdv2_incident_repot_type'; if($scope.own.duty && $scope.own.duty.addSummary == 1){ postData.titles = ['故障现象', '类型数量', '类型占比', '平均响应时间', '平均解决时间', '耗材费用', '工时费用', '总费用']; }else{ postData.titles = ['故障现象', '类型数量', '类型占比', '平均响应时间', '平均解决时间']; } break; case 'CLRZ'://处理人/组 postData.dutyId = $scope.own.duty ? $scope.own.duty.id : undefined; postData.branchId = $scope.own.duty ? undefined : ($scope.own.branch ? $scope.own.branch.id : undefined); let CLRZ_TYPE = '' if ($scope.groupSelectedOne.value.id == -2) {//按组 postData.type = 1; CLRZ_TYPE = '处理组'; postData.titles = [CLRZ_TYPE, '协同处理数', '事件数量', '事件占比', '按时响应', '超时响应', '平均响应时间', '超时响应占比', '按时解决', '超时解决', '平均解决时间', '超时解决占比', '满意度(%)']; } else if ($scope.groupSelectedOne.value.id == -1) {//按人 postData.type = 2; CLRZ_TYPE = '处理人'; postData.titles = [CLRZ_TYPE, '协同处理数', '事件数量', '事件占比', '按时响应', '超时响应', '平均响应时间', '超时响应占比', '按时解决', '超时解决', '平均解决时间', '超时解决占比', '满意度(%)', '耗材费用', '工时费用', '总费用']; } else { postData.type = 3; CLRZ_TYPE = '处理人'; postData.titles = [CLRZ_TYPE, '协同处理数', '事件数量', '事件占比', '按时响应', '超时响应', '平均响应时间', '超时响应占比', '按时解决', '超时解决', '平均解决时间', '超时解决占比', '满意度(%)', '耗材费用', '工时费用', '总费用']; } postData.key = 'mdv2_incident_repot_handle'; break; case 'SFGS'://三方公司 postData.key = 'mdv2_incident_repot_company'; postData.titles = [($scope.sfgs_list[0]&&$scope.sfgs_list[0].userName)?'人员名称':'公司名称', '人员总数', '事件数量', '平均响应时长', '平均解决时长']; if($scope.sfgs_list[0]&&$scope.sfgs_list[0].userName){ postData.titles.splice(1,1); } break; case 'QYDD'://区域地点 postData.dutyId = $scope.own.duty ? $scope.own.duty.id : undefined; postData.branchId = $scope.own.duty ? undefined : ($scope.own.branch ? $scope.own.branch.id : undefined); postData.type = $scope.areaSelectedOne.value.id; postData.key = 'mdv2_incident_repot_area_place'; postData.titles = ['区域/地点', '事件数量', '事件占比']; break; case 'KSTJ'://科室统计 postData.dutyId = $scope.own.duty ? $scope.own.duty.id : undefined; postData.branchId = $scope.own.duty ? undefined : ($scope.own.branch ? $scope.own.branch.id : undefined); postData.key = 'mdv2_incident_repot_dept'; if($scope.own.duty && $scope.own.duty.addSummary == 1){ postData.titles = ['科室名称', '事件数量', '事件占比', '耗材费用', '工时费用', '总费用']; }else{ postData.titles = ['科室名称', '事件数量', '事件占比']; } break; case 'SJLY'://事件来源 postData.dutyId = $scope.own.duty ? $scope.own.duty.id : undefined; postData.branchId = $scope.own.duty ? undefined : ($scope.own.branch ? $scope.own.branch.id : undefined); postData.key = 'mdv2_incident_repot_source'; postData.titles = ['事件来源', '事件数量', '事件来源占比']; break; } var wt_url = api_bpm.downDataModel('report', 1).getRequestedUrl() $http({ url: wt_url, method: 'POST', data: JSON.stringify(postData), headers: { 'Accept': '*/*' }, responseType: 'arraybuffer' }).success(function (data, status, headers, config) { var fileName = ''; switch ($scope.tap) { case 'SJZS'://事件总数 fileName = '事件总数'; break; case 'SJLX'://故障现象 fileName = '故障现象'; break; case 'CLRZ'://处理人/组 fileName = '处理人/组'; break; case 'SFGS'://三方公司 fileName = '三方公司'; break; case 'QYDD'://区域地点 fileName = '区域地点'; break; case 'KSTJ'://科室统计 fileName = '科室统计'; break; case 'SJLY'://事件来源 fileName = '事件来源'; break; } // var fileName = headers("Content-Disposition").split(";")[1].split("filename=")[1]; var file = new Blob([data], { type: 'application/vnd.ms-excel' }); var fileURL = URL.createObjectURL(file); var a = document.createElement('a'); a.href = fileURL; a.target = '_blank'; a.download = fileName + '.xls'; document.body.appendChild(a); a.click(); }).error(function (data, status, headers, config) { }); }; //初始化 $scope.init = function(){ $scope.dateItemClick('day'); $scope.mdxquery('accdate', 'desc'); $scope.sortActive = 'accdatetop'; $scope.name = 'accdate';//表格排序,字段名称 $scope.type = 'desc';//表格排序,排序方式desc,asc $scope.direction = 'top';//箭头方向 top,bottom } }])