// 'use strict'; /** * controller for User Profile Example */ app.controller('adminUserListCtrl_requ', ["$rootScope", "$scope", "$http", "$state", "FileUploader", "$timeout", "$interval", "$modal", "SweetAlert", "i18nService", "uiGridConstants", "uiGridGroupingConstants", "Restangular", "api_user_data", function ($rootScope, $scope, $http, $state, FileUploader, $timeout, $interval, $modal, SweetAlert, i18nService, uiGridConstants, uiGridGroupingConstants, Restangular, api_user_data) { $scope.langs = i18nService.getAllLangs(); $scope.lang = 'zh-cn'; i18nService.setCurrentLang($scope.lang); var loginUser = $rootScope.user; //$scope.allright=false; //$scope.allrightnot=true; $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 = false; $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 = false; //$scope.gridOptions.rowTemplate= "
"; $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; $scope.transferRole = function (roles) { var tempValue = ""; angular.forEach(roles, function (item) { if (tempValue != "") { tempValue = tempValue + "/"; } tempValue = tempValue + item.role; }) return tempValue; } //remote data $scope.gridOptions.columnDefs = [{ name: 'item', displayName: '序号', width: 50, enableFiltering: false, cellTemplate: '
' + '
{{row.entity.item}}
' + '
' }, { name: 'name', displayName: '姓名', width: '10%', enableFiltering: false }, // { name: 'studentNo', displayName: '学工号', width: 120 }, { name: 'account', displayName: '工号', width: '10%', enableFiltering: false }, { name: 'weixin', displayName: '微信', width: '10%', minWidth: '120', enableFiltering: false }, { name: 'dept.dept', displayName: '科室', width: '12%', enableFiltering: false }, { name: 'requesterType.name', displayName: '职务', width: '10%', enableFiltering: false }, { name: 'mphone', displayName: '电话', width: '12%', minWidth: '125', enableFiltering: false }, { name: 'place.area.area', displayName: '区域', width: '10%', enableFiltering: false }, { name: 'place.place', displayName: '地点', width: '12%', enableFiltering: false }, { name: '操作', cellTemplate: '
' + // '' + // ''+ '编辑' + '
', enableFiltering: false } ]; //导入 $scope.importopen = function () { //导入触发事件 var modalInstance = $modal.open({ templateUrl: 'assets/views/import.html', controller: function ($scope, $modalInstance, FileUploader) { var importUploader = $scope.importUploader = new FileUploader({ url: api_user_data.jry_importData().getRequestedUrl(), }); // importUploader.filters.push({ // name: 'customFilter', // fn: function(item /*{File|FileLikeObject}*/ , options) { // var type = item.name.slice(item.name.lastIndexOf('.') + 1); // //var type = '|' + item.type.slice(item.type.lastIndexOf('/') + 1) + '|'; // return (type == 'xlsx'); // } // }); importUploader.filters.push({ name: 'customFilter', fn: function (item /*{File|FileLikeObject}*/ , options) { this.queue = []; return this.queue.length < 2; } }); importUploader.onWhenAddingFileFailed = function (item /*{File|FileLikeObject}*/ , filter, options) { console.info('onWhenAddingFileFailed', item, filter, options); }; importUploader.onAfterAddingFile = function (fileItem) { console.info('onAfterAddingFile', fileItem); }; importUploader.onAfterAddingAll = function (addedFileItems) { console.info('onAfterAddingAll', addedFileItems); }; importUploader.onProgressItem = function (fileItem, progress) { console.info('onProgressItem', fileItem, progress); }; importUploader.onProgressAll = function (progress) { console.info('onProgressAll', progress); }; importUploader.onSuccessItem = function (fileItem, response, status, headers) { if (response.status == 200) { SweetAlert.swal({ title: "导入成功!", confirmButtonColor: "#007AFF", type: "success" }, function () { // $scope.ldloading.contract_overlay = false; $rootScope.isMask = false; $scope.refreshData('expand-right', $scope.fileData); }); } else { // $scope.ldloading.contract_overlay = false; $rootScope.isMask = false; SweetAlert.swal({ title: "导入失败!", text: response.error, type: "error" }) } console.info('onSuccessItem', fileItem, response, status, headers); }; importUploader.onErrorItem = function (fileItem, response, status, headers) { console.info('onErrorItem', fileItem, response, status, headers); SweetAlert.swal({ title: "系统错误!", text: "系统错误,请稍候重试!", type: "error" }); }; importUploader.onCancelItem = function (fileItem, response, status, headers) { console.info('onCancelItem', fileItem, response, status, headers); }; importUploader.onCompleteItem = function (fileItem, response, status, headers) { console.info('onCompleteItem', fileItem, response, status, headers); }; importUploader.onCompleteAll = function () { console.info('onCompleteAll'); }; $scope.ldloading = {}; $rootScope.isMask = false; $scope.import = function (style) { // $scope.ldloading[style.replace('-', '_')] = true; $modalInstance.dismiss('cancel'); $rootScope.isMask = true; importUploader.onBeforeUploadItem = function (item) { angular.extend(item.headers, $rootScope.getSession()); // item.formData[0]['filename'] = item.file.name; // item.formData[0]['type'] = "requester"; item.formData.push({ 'fileName': item.file.name }); item.formData.push({ 'type': "requester" }); console.info('onBeforeUploadItem', item); }; importUploader.uploadAll(); } $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; }, size: 'sm', resolve: { importUploader: function () { return $scope.importUploader; } } }); modalInstance.result.then(function (selectedItem) { if (selectedItem) {} }) } //导出 $scope.openmodel = function () { var modalInstance = $modal.open({ templateUrl: 'assets/views/system/tpl/getdown.html', controller: function ($scope, $modalInstance) { $scope.key = {}; $scope.title = '报修人导入模版下载'; $scope.lable = '下载模版版本'; $scope.onChange = function (key) { $scope.key = key; } $scope.downmodel = [{ id: 1, name: "EXCEL2003版(xls)" }, { id: 2, name: "EXCEL2007及以上版(xlsx)" }] $scope.ok = function () { $modalInstance.close($scope.key); }; $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; }, size: 'sm', }); modalInstance.result.then(function (selectedItem) { if (selectedItem) { var selectedItemId = ""; if (selectedItem.id == 2) { selectedItemId = ".xlsx"; } var type = "requester"; var month = 0; $http({ url: api_user_data.downDataModel(type, month).getRequestedUrl(), method: 'GET', headers: { 'Accept': '*/*' }, responseType: 'arraybuffer' }).success(function (data, status, headers, config) { var file = new Blob([data], { // type : 'application/octet-stream' type: 'application/vnd.ms-excel' }); //trick to download store a file having its URL var fileURL = URL.createObjectURL(file); var a = document.createElement('a'); a.href = fileURL; a.target = '_blank'; a.download = "报修人" + selectedItemId; document.body.appendChild(a); a.click(); }).error(function (data, status, headers, config) { console.log(data); }); } }); } //修改 $scope.saveData = function (data) { if (data.place) { var modelData = { model: { requester: { "id": data.id, "account": data.account, "name": data.name, "gender": data.gender, "email": data.email, "mphone": data.mphone, "deptName": data.deptName, "telephone": data.telephone, "dept": data.dept, "area": data.place.area, "place": data.place, "studentNo": data.studentNo, "houseNumber": data.houseNumber, "requesterType": data.requesterType, "weixin": data.weixin } } }; } else { var modelData = { model: { requester: { "id": data.id, "account": data.account, "name": data.name, "gender": data.gender, "email": data.email, "mphone": data.mphone, "deptName": data.deptName, "telephone": data.telephone, "dept": data.dept, // "area": data.place.area, "place": data.place, "studentNo": data.studentNo, "houseNumber": data.houseNumber, "requesterTypeDTO": data.requesterTypeDTO, "weixin": data.weixin } } }; } $state.go('app.system.user.requester', { formKey: 'system_edit_requester', service: 'api_user_data', model: JSON.stringify(modelData) }); }; // 下拉树 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 //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? // console.log("datum="+JSON.stringify(datum)) 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; } function convertParentToChildList(data) { var treeMap = {}; var list = []; convertListToTree(data, treeMap); angular.forEach(treeMap, function (item) { list.push(item); }); return list; } $scope.parentdata = {}; $scope.try_async_load = function () { $scope.my_data = []; $scope.doing_async = true; var data = { "idx": 0, "sum": 1000 }; api_user_data.fetchDataList('department', data).then(function (response) { var data = response.list; var objects = []; $scope.parentdata = data; for (var i = 0; i < data.length; i++) { var object = {}; object.id = data[i].id; if (angular.isDefined(data[i].parent)) { object.parent = data[i].parent; } if (angular.isDefined(data[i].hasArea)) { object.hasArea = data[i].hasArea; } if (angular.isDefined(data[i].hasSimple)) { object.hasSimple = data[i].hasSimple; } if (angular.isDefined(data[i].group)) { object.group = data[i].group; } if (angular.isDefined(data[i].priority)) { object.priority = data[i].priority; } object.label = data[i].dept; // object.actions = data[i][3]; //权限部分 // object.group = "1"; // object.user = "2"; object.state = { "opened": true }; object.typeName = "type"; // if() // if (object.actions.indexOf("2") >= 0) { //知识库类型 具有增加权限--系统管理员 $scope.showAddSolutionType = true; // } // if (object.actions.indexOf("5") >= 0) { //知识库类型 具有授权权限--系统管理员 $scope.showReviewKnowledgeType = true; // } 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; // } }); }; $scope.try_async_load(); //新增 $scope.addData = function () { $state.go('app.system.user.requester', { formKey: 'system_edit_requester', service: 'api_user_data' }) } $scope.removeData = function () { var modalInstance = $modal.open({ templateUrl: 'assets/views/delete.html', controller: function ($scope, scope, $modalInstance, api_bpm_data) { var rmvList = []; $scope.title = '报修人删除'; $scope.connect = '确定要删除此报修人?'; rmvList.push(scope.selected.items[0].id); $scope.ok = function () { $modalInstance.close(rmvList); }; $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; }, size: 'sm', resolve: { scope: function () { return $scope; } } }); modalInstance.result.then(function (selectedItem) { if (selectedItem) { if (selectedItem.length > 0) { api_user_data.rmvData('requester', selectedItem).then(function (response) { if (response.data) { SweetAlert.swal({ title: "删除成功!", type: "success", confirmButtonColor: "#007AFF" }, function () { $scope.myData = _.reject($scope.myData, function (o) { return _.includes(selectedItem, o.id) }); $scope.selected = { items: [] }; $scope.gridOptions.totalItems = $scope.gridOptions.totalItems - selectedItem.length $scope.gridApi.grid.selection.selectedCount = 0; }); } else { SweetAlert.swal({ title: "操作异常!", text: "系统异常,请稍后重试,或者联系管理员!", type: "error" }); } }) } } }) } $scope.selected = { items: [] } $scope.editted = { items: [] } $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; // gridApi.edit.on.afterCellEdit($scope,function(rowEntity, colDef, newValue, oldValue){ // console.log(rowEntity); // }); gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) { var filtersData = $scope.memoryfilterData; filtersData.idx = newPage - 1; filtersData.sum = pageSize; defaultFilterData = filtersData; $scope.fileData.idx = newPage - 1; $scope.fileData.sum = pageSize; $scope.refreshData('expand-right', $scope.fileData); }); // gridApi.selection.on.rowSelectionChanged($scope, function(data) { // data.grid.appScope.selected.items = data.entity // }); gridApi.selection.on.rowSelectionChanged($scope, function (data) { if (data.isSelected) { data.grid.appScope.selected.items[0] = data.entity; } else { if (data.grid.appScope.selected.items[0].id == data.entity.id) { data.grid.appScope.selected.items = []; } } }); gridApi.core.on.filterChanged($scope, function () { var grid = this.grid; var filtersData = { idx: 0, sum: 10 }; angular.forEach(grid.columns, function (item) { if (item.enableFiltering) { if (angular.isDefined(item.filters[0].term) && item.filters[0].term != '') { if (angular.isUndefined(filtersData['requester'])) { filtersData['requester'] = {}; } filtersData['requester'][item.field] = item.filters[0].term; } } }); $scope.memoryfilterData = filtersData; $scope.refreshData('expand-right', $scope.fileData); }); }; var defaultFilterData = { "idx": 0, "sum": 10 }; $scope.memoryfilterData = { "idx": 0, "sum": 10 } $scope.ldloading = {}; $scope.refresh = function (style, filterData) { $scope.selected = { items: [] }; if ($scope.gridApi) { // $scope.gridApi.grid.options.paginationCurrentPage = 0; $scope.gridApi.grid.selection.selectedCount = 0; } $scope.refreshData('expand-right', $scope.fileData); } $scope.fileData = { "idx": 0, "sum": 10, "requester": { } }; // 搜索 $scope.searchData = function () { $scope.refreshData('expand-right', $scope.fileData); } // 清空 $scope.clean = function () { delete $scope.fileData.requester.name; delete $scope.fileData.requester.account; delete $scope.fileData.requester.dept; $scope.try_async_load(); $scope.refreshData('expand-right', $scope.fileData); } $scope.onFilterCallback = function (data) { // console.log(data); $scope.fileData.requester.dept = data; } $scope.refreshData = function (style, filterData) { $scope.ldloading[style.replace('-', '_')] = true; if (angular.isUndefined(filterData)) { filterData = defaultFilterData; } if (angular.isDefined($scope.searchTypes)) { filterData['searchType'] = $scope.searchTypes; } $scope.myData = []; // if ($scope.gridApi) { // $scope.gridApi.grid.options.paginationCurrentPage = 0; // $scope.gridApi.grid.selection.selectedCount = 0; // } api_user_data.fetchDataList('requester', filterData).then(function (data) { var myData = Restangular.stripRestangular(data); $scope.gridOptions.totalItems = myData.totalNum; $scope.myData = myData.list; for (var i = 0; i < $scope.myData.length; i++) { $scope.myData[i]['item'] = i + 1 + filterData.idx * filterData.sum } $scope.ldloading[style.replace('-', '_')] = false; }, function () { $scope.ldloading[style.replace('-', '_')] = false; }); }; $scope.refreshData2 = function (style, filterData) { $scope.ldloading[style.replace('-', '_')] = true; if (angular.isUndefined(filterData)) { filterData = defaultFilterData; } if (angular.isDefined($scope.searchTypes)) { filterData['searchType'] = $scope.searchTypes; } // $scope.myData = []; // if ($scope.gridApi) { // $scope.gridApi.grid.options.paginationCurrentPage = 0; // $scope.gridApi.grid.selection.selectedCount = 0; // } api_user_data.fetchDataList('requester', filterData).then(function (data) { var myData = Restangular.stripRestangular(data); $scope.gridOptions.totalItems = myData.totalNum; $scope.myData = myData.list; for (var i = 0; i < $scope.myData.length; i++) { $scope.myData[i]['item'] = i + 1 + filterData.idx * filterData.sum } $scope.ldloading[style.replace('-', '_')] = false; }, function () { $scope.ldloading[style.replace('-', '_')] = false; }); }; $scope.refreshData('expand-right', $scope.fileData); $scope.timer = $interval(function () { $scope.refreshData2('expand-right', $scope.fileData); }, $rootScope.refreshTime); $scope.$on('$destroy', function () { $interval.cancel($scope.timer) }); }]);