// '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: 'phone',
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: {
user: {
"id": data.id,
"branch": data.branch,
"account": data.account,
"name": data.name,
"gender": data.gender,
"email": data.email,
"phone": data.phone,
"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,
engineer: undefined,
}
}
};
} else {
var modelData = {
model: {
requester: {
"id": data.id,
"branch": data.branch,
"account": data.account,
"name": data.name,
"gender": data.gender,
"email": data.email,
"phone": data.phone,
"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,
engineer: undefined,
}
}
};
}
$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('user', 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['user'])) {
filtersData['user'] = {};
}
filtersData['user'][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,
"user": {
}
};
// 搜索
$scope.searchData = function () {
$scope.refreshData('expand-right', $scope.fileData);
}
// 清空
$scope.clean = function () {
delete $scope.fileData.user.name;
delete $scope.fileData.user.account;
delete $scope.fileData.user.dept;
$scope.try_async_load();
$scope.refreshData('expand-right', $scope.fileData);
}
$scope.onFilterCallback = function (data) {
// console.log(data);
$scope.fileData.user.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;
// }
filterData.user.engineer = 0;
api_user_data.fetchDataList('user', 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;
// }
filterData.user.engineer = 0;
api_user_data.fetchDataList('user', 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)
});
}]);