"use strict"; /** * controller for User Profile Example */ app.controller("inspectListCtrl", [ "$rootScope", "$scope", "$state", "$timeout", "$interval", "$modal", "SweetAlert", "i18nService", "uiGridConstants", "uiGridGroupingConstants", "Restangular", "api_bpm_schedule", "api_bpm_data", "api_configure_data", "api_bpm", "api_user_data", function ( $rootScope, $scope, $state, $timeout, $interval, $modal, SweetAlert, i18nService, uiGridConstants, uiGridGroupingConstants, Restangular, api_bpm_schedule, api_bpm_data, api_configure_data, api_bpm, api_user_data ) { $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); var loginUser = $rootScope.user; $scope.chuli = false; $scope.assign = false; for (var i = 0; i < loginUser.menu.length; i++) { if (loginUser.menu[i].link == "xunjianliebiao_chuli") { $scope.chuli = true; } if (loginUser.menu[i].link == "xunjianliebiao_assign") { $scope.assign = true; } } var defaultFilterData = { assignee: loginUser.id, // "assignee": "1", idx: 0, sum: 10, status: "", searchType: "todo", }; var inspectListParameter = { assignee: loginUser.id, // "assignee": "1", idx: 0, sum: 10, status: "", }; // $scope.memoryfilterData = { // "idx": 0, // "sum": 10 // } //本地存储 sessionStorage.inspectListParameter = JSON.stringify(inspectListParameter); //ui-grid设置 $scope.gridOptions = {}; $scope.gridOptions.data = "myData"; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = true; $scope.gridOptions.enableGridMenu = true; $scope.gridOptions.enableRowSelection = true; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = true; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = true; // $scope.gridOptions.rowTemplate = '
123
"; $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; //执行中的巡检才能批量派单 $scope.gridOptions.isRowSelectable = function (row,i) { // console.log(row,row.uid,document); if (row.entity.state == 0) { return true; } else { return false; } }; $scope.transferColor = function (item) { var color = "icon iconfont icon-zhengchang greenfont"; if (item && item.colourInfo) { if (item.colourInfo.id == 1) { color = "icon iconfont icon-yiyuqi redfont"; } else if (item.colourInfo.id == 2) { color = "iconfont icon-yuqixinxiu yellofont"; } } else { // color = "white"; } return color; }; $scope.transfertip = function (item) { var tip = "正常"; if (item && item.colourInfo) { if (item.colourInfo.id == 1) { tip = "逾期"; } else if (item.colourInfo.id == 2) { tip = "即将逾期"; } } else { // color = "white"; } return tip; }; $scope.gridOptions.columnDefs = [ { name: "id", displayName: "", width: 40, enableFiltering: false, cellTemplate: "
" + '
', }, { name: "inspection.title", displayName: "计划主题", width: "12%", minWidth: 120, enableFiltering: false, }, { name: "sign", displayName: "单号", width: "12%", minWidth: 120, enableFiltering: false, }, { name: "online", displayName: "巡检分类", width: "23%", minWidth: 200, enableFiltering: false, cellTemplate: "
" + '
{{row.entity.online?"线上巡检-":(row.entity.online===false?"线下巡检-":"")}}{{row.entity.inspectionType.type}}
' + "
", }, // { // name: "inspection.createUser.name", // displayName: "创建人", // width: "8%", // minWidth: 80, // enableFiltering: false, // }, { name: "stateName", displayName: "状态", width: "8%", minWidth: 80, enableFiltering: false, }, { name: "processUser.name", displayName: "处理人/组", width: "8%", minWidth: 80, enableFiltering: false, cellTemplate: '
' + '
{{row.entity.processUser.name}}
' + '
{{row.entity.group.groupName}}
' + '
' }, { name: "startDate", displayName: "开始时间", width: "15%", minWidth: 160, enableFiltering: false, cellTemplate: "
" + '
{{row.entity.startDate?grid.appScope.transferTime(row.entity.startDate):""}}
' + "
", }, { name: "endTime", displayName: "结束时间", width: "15%", width: 160, enableFiltering: false, cellTemplate: "
" + '
{{row.entity.endTime?grid.appScope.transferTime(row.entity.endTime):""}}
' + "
", }, { name: "操作", minWidth: "150", enableFiltering: false, cellTemplate: '
' + '查看' + '处理' + // '' + "
", }, ]; // $scope.addData = function() { // $state.go('app.inspection.inspectList.editor', { // formKey: 'inspectionform', // service: 'api_bpm_data' // }); // } $scope.transferTime = function (time) { return moment(time).format("YYYY-MM-DD HH:mm"); }; $scope.showChuli = function (data) { if(data.inspection.dictionary.value == 1){ // 按巡检人员 if (data.processUser.id == loginUser.id && data.stateName == "执行中") { return true; } else { return false; } }else if(data.inspection.dictionary.value == 3){ // 按工作组 var hasGroup = loginUser.group.some(v=>v.id == data.group.id); if (hasGroup && data.stateName == "执行中") { return true; } else { return false; } }else if(data.inspection.dictionary.value == 4){ // 系统默认 if(data.online){ // 线上人 if (data.processUser.id == loginUser.id && data.stateName == "执行中") { return true; } else { return false; } }else{ // 线下组 var hasGroup = loginUser.group.some(v=>v.id == data.group.id); if (hasGroup && data.stateName == "执行中") { return true; } else { return false; } } } }; $scope.selectRowFunction = function (data) { var filedata = { model: { inspectionProcessActual: data, }, }; $state.go("app.inspection.inspectListEditor", { taskId: data.taskId, dataId: data.id, processInstanceId: data.processInstanceId, pdKey: data.processKey, formUiEdit: data.inspectionType.formUiEdit, // "formUiName": data.inspection.inspectionTypeDTO.formUiName, model: JSON.stringify(filedata), }); }; $scope.lookFunction = function (data) { var filedata = { model: { inspectionProcessActual: data, }, // model:data }; $state.go("app.inspection.inspectListdetail", { formKey: data.inspectionType.formUiName, dataId: data.id, taskId: data.taskId, processInstanceId: data.processInstanceId, pdKey: data.processKey, // "formUiEdit": data.inspection.inspectionTypeDTO.formUiEdit, formUiName: data.inspectionType.formUiName, model: JSON.stringify(filedata), }); }; $scope.model = { assignee: JSON.parse(sessionStorage.inspectListParameter).assignee, idx: 0, sum: 10, searchType: "todo", inspectionProcessActual: { inspection: {}, }, }; // $scope.removeData = function() { // // var rmvList = [$scope.selected.items.id] // var rmvList = []; // angular.forEach($scope.selected.items, function(item) { // rmvList.push(item.id); // }); // if (rmvList.length > 0) { // api_bpm_data.rmvData('inspection', rmvList).then(function(response) { // if (response.status == 200) { // SweetAlert.swal({ // title: "删除成功!", // type: "success", // confirmButtonColor: "#007AFF" // }, function() { // $scope.myData = _.reject($scope.myData, function(o) { return _.includes(rmvList, o.id); }); // $scope.selected = { // items: [] // }; // }); // } else { // SweetAlert.swal({ // title: "操作异常!", // text: "系统异常,请稍后重试,或者联系管理员!", // type: "error" // }); // } // }) // } // } //批量派单 $scope.toAssign = function() { var _$scope = $scope; console.log($scope.selected.items); var sendList = []; angular.forEach($scope.selected.items, function(item) { sendList.push(item.id); }); // -------------------------------------------------------- var modalInstance = $modal.open({ templateUrl: 'assets/views/incident/tpl/toAssign.tpl.html', controller: function ($scope, $modalInstance, api_bpm_domain, modelData, currentUserId, Alert, api_user_data) { console.log(_$scope.selected.items,loginUser); //获取组下面的用户 $scope.getUsers = function(groupId){ $scope.user = []; var postData = {}; if(groupId){ postData = { "idx": 0, "sum": 100, user: { groupdata:{id:groupId}, roledata: { rolecode: "inspectman" }, selectType: "1", selectDetails:1, engineer: 1, } } }else{ postData = { "idx": 0, "sum": 100, user: { roledata: { rolecode: "inspectman" }, selectType: "1", selectDetails:1, engineer: 1, } } } api_user_data.fetchDataList('user', postData).then(function (data) { $scope.user = data.list; }) } $scope.assignUser = null; $scope.user = []; $scope.group = []; $scope.getUsers(); api_user_data.fetchDataList('group', { "idx": 0, "sum": 100, group: {'selectType':'nouser'} }).then(function (data) { $scope.group = data.list; }) $scope.onChangeRotateUser = function(item){ $scope.assignUser = item.id; } $scope.onChangeRotateGroup = function(item){ $scope.assignGroup = item.id; $scope.getUsers(item.id) } $scope.ok = function () { if (!$scope.assignUser){ Alert.swal({ title: "操作失败", text: "请选择转派对象信息!", type: "error" }); return; } api_bpm.assign({ids:sendList.join(),userId:$scope.assignUser}).then(function (response) { console.log(response) if (response.status == 200) { Alert.swal({ title: "操作成功!", confirmButtonColor: "#007AFF", type: "success" }); $modalInstance.close('success'); _$scope.gridApi.selection.clearSelectedRows(); } else { Alert.swal({ title: "操作失败", text: "操作失败, 请稍后再试!", type: "error" }); } }); } $scope.cancel = function () { $modalInstance.dismiss('cancel'); } }, size: 'sm', resolve: { api_bpm: function () { return api_bpm; }, modelData: function () { return _$scope.selected.items; }, currentUserId: function () { return loginUser.id; }, Alert: function () { return SweetAlert; }, api_user_data: function () { return api_user_data; } } }); modalInstance.result.then(function (selectedItem) { if (selectedItem == 'success') { defaultFilterData.assignee = loginUser.id; $scope.refreshData('expand-right', defaultFilterData); } }); return; // -------------------------------------------------------- } $scope.selected = { items: [], }; $scope.editted = { items: [], }; $scope.jry_idx = 0; $scope.jry_sum = 10; //分页控制 $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { console.log("ok"); var filterData = JSON.parse(sessionStorage.inspectListParameter); filterData.idx = newPage - 1; filterData.sum = pageSize; $scope.jry_idx = newPage - 1; $scope.jry_sum = pageSize; $scope.model.idx = newPage - 1; $scope.model.sum = pageSize; $scope.refreshData("expand-right", $scope.model); } ); // 单选 gridApi.selection.on.rowSelectionChanged($scope, function(scope) { console.log(scope) if (scope.isSelected) { scope.grid.appScope.selected.items.push(scope.entity) } else { for (var i = 0; i <= scope.grid.appScope.selected.items.length; i++) { if (scope.grid.appScope.selected.items[i].id == scope.entity.id) { scope.grid.appScope.selected.items.splice(i, 1); break; } } } console.log(scope.grid.appScope.selected.items) }); // 全选/全不选 gridApi.selection.on.rowSelectionChangedBatch($scope, function(rows) { console.log(rows) var selectitem = []; selectitem = angular.copy($scope.selected.items); for (var j = 0; j < rows.length; j++) { if (rows[j].isSelected == true) { selectitem.push(rows[j].entity); } else { delete selectitem[j]; } } $scope.selected.items = []; for (var i = 0; i < selectitem.length; i++) { if (selectitem[i]) { $scope.selected.items.push(selectitem[i]); } } console.log($scope.selected.items) }); }; // var data = JSON.parse(sessionStorage.inspectListParameter); // sessionStorage.inspectListParameter = JSON.stringify(data); $scope.ldloading = {}; $scope.statusData = {}; $scope.tData = { title: "", batchNo: "" }; //搜索事件 $scope.searchinspectlist = function (item) { var filterData = JSON.parse(sessionStorage.inspectListParameter); // console.log(filterData); // if (item.type) { // filterData.inspection = { 'inspectionTypeDTO': { 'id':item.type.id}}; // } // if (item.title) { // filterData.inspection = { 'title': item.title}; // } $scope.model.idx = $scope.jry_idx; $scope.model.sum = $scope.jry_sum; if ($scope.model.inspectionProcessActual.inspectionType) { $scope.model.inspectionProcessActual.inspectionTypeId = $scope.model.inspectionProcessActual.inspectionType.id; delete $scope.model.inspectionProcessActual.inspectionType; } if ($scope.statusData.state) { $scope.model.inspectionProcessActual.state = $scope.statusData.state.state; } if ($scope.tData.title) { if ($scope.model.inspectionProcessActual.inspection) { $scope.model.inspectionProcessActual.inspection.title = $scope.tData.title.title; } else { $scope.model.inspectionProcessActual.inspection = { title: $scope.tData.title.title, }; } } if ($scope.tData.batchNo) { $scope.model.inspectionProcessActual.batchNo = $scope.tData.batchNo.batchNo; } // filterData.status = item; sessionStorage.inspectListParameter = JSON.stringify(filterData); $scope.refreshData("expand-right", $scope.model); }; $scope.clean = function () { $scope.tData = { title: "", batchNo: "" }; delete $scope.model.inspectionProcessActual.batchNo; delete $scope.model.inspectionProcessActual.inspection.title; delete $scope.model.inspectionProcessActual.inspectionType; delete $scope.model.inspectionProcessActual.inspectionTypeId; delete $scope.model.inspectionProcessActual.inspection.executeUser; delete $scope.model.inspectionProcessActual.inspection.createUser; delete $scope.model.inspectionProcessActual.state; $scope.statusData = {}; $scope.try_async_load(); $scope.refreshData("expand-right", $scope.model); }; //树形控件点击事件 $scope.my_tree_handler = function (branch) { var filterData = JSON.parse(sessionStorage.inspectListParameter); filterData.status = branch.id; // if (filterData.inspectionProcessActual) { // filterData.inspectionProcessActual.inspectionTypeId = branch.id; // } else { // filterData = angular.extend(filterData, { // "inspectionProcessActual": { // "inspectionTypeId": branch.id // } // }) // } sessionStorage.inspectListParameter = JSON.stringify(filterData); $scope.refreshData("expand-right", filterData); }; //搜索栏点击事件 $scope.searchstate = "todo"; $scope.onChange = function (searchType) { console.log($scope.gridApi) $scope.gridApi.selection.clearSelectedRows(); $scope.searchstate = searchType; var filterData = JSON.parse(sessionStorage.inspectListParameter); filterData.searchType = searchType; $scope.model.searchType = searchType; sessionStorage.inspectListParameter = JSON.stringify(filterData); $scope.refreshData("expand-right", $scope.model); }; $scope.reload = function () { var filterData = JSON.parse(sessionStorage.inspectListParameter); $scope.refreshData("expand-right", filterData); }; $scope.refreshData = function (style, filterData) { $scope.ldloading[style.replace("-", "_")] = true; if (angular.isUndefined(filterData)) { filterData = defaultFilterData; } if(filterData.searchType === 'todo'){ // 待处理添加筛选条件 console.log(filterData,'2022年5月30日') filterData.candidateGroups = $rootScope.user.group.map(function(v){return v.id}).toString() }else{ delete filterData.candidateGroups; } $scope.myData = []; $scope.memoryfilterData = filterData; api_bpm_data.fetchInspectServiceTasks(filterData.status, filterData).then( function (data) { var myData = Restangular.stripRestangular(data); $scope.gridOptions.totalItems = myData.resultCount; if (angular.isArray(myData.data)) { $scope.myData = myData.data; for (var i = 0; i < $scope.myData.length; i++) { //添加序号 $scope.myData[i]["itemId"] = i + 1 + filterData.idx * filterData.sum; } $scope.ldloading[style.replace("-", "_")] = false; } else { $scope.ldloading[style.replace("-", "_")] = false; SweetAlert.swal({ title: "数据为空", text: myData.data, type: "warning", }); } }, function () { $scope.ldloading[style.replace("-", "_")] = false; } ); }; $scope.refreshData2 = function (style, filterData) { $scope.ldloading[style.replace("-", "_")] = true; if (angular.isUndefined(filterData)) { filterData = defaultFilterData; } if(filterData.searchType === 'todo'){ // 待处理添加筛选条件 console.log(filterData,'2022年5月30日') filterData.candidateGroups = $rootScope.user.group.map(function(v){return v.id}).toString() }else{ delete filterData.candidateGroups; } // $scope.myData = []; $scope.memoryfilterData = filterData; api_bpm_data.fetchInspectServiceTasks(filterData.status, filterData).then( function (data) { var myData = Restangular.stripRestangular(data); $scope.gridOptions.totalItems = myData.resultCount; if (angular.isArray(myData.data)) { $scope.myData = myData.data; for (var i = 0; i < $scope.myData.length; i++) { //添加序号 $scope.myData[i]["itemId"] = i + 1 + filterData.idx * filterData.sum; } $scope.ldloading[style.replace("-", "_")] = false; } else { $scope.ldloading[style.replace("-", "_")] = false; SweetAlert.swal({ title: "数据为空", text: myData.data, type: "warning", }); } }, function () { $scope.ldloading[style.replace("-", "_")] = false; } ); }; $scope.inspecttype = {}; // 获取处理人 $scope.getExecuteUser = function () { api_configure_data .fetchDataList("user", { idx: 0, sum: 1000, user: { roledata: { rolecode: "inspectman", }, simple: true, engineer: 1, }, }) .then(function (res) { $scope.executeUserData = res.list; }); }; $scope.getExecuteUser(); $scope.statusData = [ { name: "执行中", state: 0, }, { name: "已完成", state: 1, }, ]; $scope.titleData = []; //计划主题列表 $scope.batchNoData = []; //批次号列表 // 获取计划主题列表 $scope.getTitleData = function () { var postData = { assignee: $rootScope.user.id, idx: 0, sum: 9999, searchType: "all", inspectionProcessActual: {}, }; api_bpm_data .fetchDataList("inspection", postData) .then(function (result) { if (result.status == 200) { $scope.titleData = result.list; } }); }; $scope.getTitleData(); //修改计划主题 $scope.changeTitle = function(){ $scope.tData.batchNo = ""; $scope.batchNoData = $scope.tData.title.batchNos.map(v=>({id:v,batchNo:v})); } // 获取创建人 $scope.getCreateUser = function () { api_configure_data .fetchDataList("user", { idx: 0, sum: 1000, user: { simple: true, engineer: 1, }, }) .then(function (res) { $scope.createUserData = res.list; }); }; $scope.getCreateUser(); $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.my_tree = {}; $scope.try_async_load = function () { $scope.my_data = []; $scope.doing_async = true; api_bpm_data .fetchDataList("inspectionType", { 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].type; 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.refreshData("expand-right", defaultFilterData); $scope.try_async_load(); $scope.timer = $interval(function () { $scope.refreshData2("expand-right", $scope.model); }, $rootScope.refreshTime); $scope.$on("$destroy", function () { $interval.cancel($scope.timer); }); }, ]);