basicDataModule .controller('businessUnitController', ['$scope', '$log', 'SweetAlert', '$translate', 'businessUnitService', 'uiGridConstants', 'Upload', 'apiInterceptor', '$interval', function($scope, $log, SweetAlert, $translate, businessUnitService, uiGridConstants, Upload, apiInterceptor, $interval) { 'use strict'; // 模态框的编辑状态 true 编辑状态,false 创建状态 $scope.isEdit = false; var formValidator = null; //当前编辑对象 $scope.editingObject = { ID: "", Name: "", IsActive: true }; var editModalSelector = ".business-unit #edit-modal"; //显示指定消息编码对应的翻译文本信息 var showError = function(messageCode) { var errMsg = $translate.instant(messageCode); SweetAlert.warning(errMsg); }; //清空当前编辑字段值 $scope.resetEditingObject = function() { $scope.editingObject = { ID: "", Name: "", IsActive: true }; var elms = $(editModalSelector).find("form:first div[data-for]"); elms.html(""); elms.attr("class", "validate-success"); } //创建(添加)新事业部,使用模态框实现编辑入口 $scope.createNewData = function() { $scope.isEdit = false; $scope.resetEditingObject(); $(editModalSelector).modal('show'); }; //编辑焦点行数据 $scope.editFocusedRow = function(data) { $scope.isEdit = true; $scope.editingObject = { ID: data.ID, Name: data.name, IsActive: data.isActive }; $(editModalSelector).modal('show'); }; //保存当前正在编辑数据行,经过界面初步校验后才会进入本功能 $scope.saveEditRow = function() { if ($scope.editingObject == null) { showError("BusinessUnitNoSelected"); return; } if (!($(editModalSelector).find("#edit-form").valid())) { return; } var businessUnitArray = []; businessUnitArray.push($scope.editingObject); var successedFun = function() { $scope.refreshData(); $(editModalSelector).modal('hide'); if ($scope.isEdit) { SweetAlert.success($translate.instant("OrganizationStructureEditSuccess")); } else { SweetAlert.success($translate.instant("OrganizationStructureAddSuccess")); } }; if ($scope.isEdit) { businessUnitService.updateBusinessUnit(businessUnitArray).success(function (data) { if (data.code===0) { successedFun(); }else { SweetAlert.error(data.message); } }); } else { businessUnitService.addBusinessUnit(businessUnitArray).success(function (data) { if (data.code===0) { successedFun(); }else { SweetAlert.error(data.message); } }); } }; //取消保存当前编辑行 $scope.cancelEditBusinessUnit = function() { $(editModalSelector).modal('hide'); }; //停用或启用当前事业部 $scope.activeBusinessUnit = function(data) { data.isActive = !data.isActive; var businessUnitArray = []; businessUnitArray.push(data); businessUnitService.updateBusinessUnit(businessUnitArray).success(function(rst) { $scope.refreshData(); }); }; //获取事业部数据 $scope.refreshData = function() { businessUnitService.getBusinessUnitList().success(function(data) { $scope.gridOptions.data = data; }); }; $scope.getGridHeight = function() { return { height: $(".business-unit-containers .list-container").height() + "px" }; } function intiUiGrid() { var opertionStr = ''; if ($scope.hasEditPermission) { opertionStr = '<div class="business-unit-gridcell-operation">' + '<a ng-click="grid.appScope.editFocusedRow(row.entity)">' + ' <i class="material-icons" style="margin-right: 10px;"></i>' + ' <span>{{"OrganizationStructureEdit"|translate}}</span>' + '</a>' + '<a atms-permission permission-code="{{$root.adminPermission.basicData.businessUnit.editCode}}" ng-click="grid.appScope.activeBusinessUnit(row.entity)" ng-if="row.entity.isActive">' + ' <i class="material-icons" style="color:#3f3f40"></i>' + ' <span>{{"BusinessUnitDisabledNode"|translate}}</span>' + '</a>' + '<a atms-permission permission-code="{{$root.adminPermission.basicData.businessUnit.editCode}}" ng-click="grid.appScope.activeBusinessUnit(row.entity)" ng-if="!row.entity.isActive">' + ' <i class="material-icons" style="color:#e64400"></i>' + ' <span>{{"BusinessUnitEnableNode"|translate}}</span>' + '</a>' + '</div>' } else { opertionStr = '<div class="business-unit-gridcell-operation ' + constant.noPermissionClass + '">' + '<a>' + ' <i class="material-icons" style="margin-right: 10px;"></i>' + ' <span>{{"OrganizationStructureEdit"|translate}}</span>' + '</a>' + '<a ng-if="row.entity.isActive">' + ' <i class="material-icons" style="color:#3f3f40"></i>' + ' <span>{{"BusinessUnitDisabledNode"|translate}}</span>' + '</a>' + '<a ng-if="!row.entity.isActive">' + ' <i class="material-icons" style="color:#e64400"></i>' + ' <span>{{"BusinessUnitEnableNode"|translate}}</span>' + '</a>' + '</div>' } $scope.gridOptions = { rowHeight: constant.UIGrid.rowHeight, selectionRowHeaderWidth: constant.UIGrid.selectionRowHeaderWidth, enableSorting: true, enableColumnMenus: false, enableHorizontalScrollbar: uiGridConstants.scrollbars.NEVER, enableRowSelection: true, enableFullRowSelection: true, enableRowHeaderSelection: false, multiSelect: false, columnDefs: [{ field: 'name', name: $translate.instant('BusinessUnitName'), width: '50%', cellTemplate: '<div class="business-unit-gridcell-name" style="text-align: center"><span>{{row.entity.name}}</span><span ng-hide="true">{{row.entity.id}}</span></div>' }, { field: 'isActive', name: $translate.instant('BusinessUnitStatus'), width: '20%', cellTemplate: '<div class="business-unit-gridcell-isactive">' + '<span ng-if="row.entity.isActive">{{"BusinessUnitActive"|translate}}</span>' + '<span ng-if="!row.entity.isActive">{{"BusinessUnitDisabled"|translate}}</span>' + '</div>' }, { field: 'Operation', name: $translate.instant('Operation'), width: '30%', cellTemplate: opertionStr }], onRegisterApi: function(gridApi) { $scope.gridApi = gridApi; $scope.gridApi.grid.registerRowsProcessor($scope.singleFilter, 200); $interval(function() { $scope.gridApi.core.handleWindowResize(); }, 500, 60 * 60 * 8); } }; $scope.singleFilter = function(renderableRows) { var matcher = new RegExp($scope.searchEASText); renderableRows.forEach(function(row) { try { var match = false; ['code', 'name'].forEach(function(field) { if (row.entity[field].match(matcher)) { match = true; } }); if (!match) { row.visible = false; } } catch (e) { $log.debug('singleFilter-match:' + JSON.stringify(row.entity)); } }); return renderableRows; }; } function intiValidate() { /*后台校验$.validator.addMethod("BURepeated", function(value, element, param) { if ($scope.gridOptions.data && $scope.gridOptions.data.length > 0) { var objects = $.grep($scope.gridOptions.data, function(n, i) { return $scope.editingObject.ID != n.id && $.trim(n.name) == $.trim(value); }); return objects.length < 1; } return true; });*/ formValidator = $(editModalSelector).find("#edit-form").validate({ debug: true, rules: { Name: { required: true, minlength: 2, maxlength: 50 // BURepeated: true }, IsActive: { required: "input[name='IsActive']:checked" } }, messages: { Name: { required: $translate.instant('BusinessUnitEmptyNode'), minlength: $translate.instant('BusinessUnitEmptyNode'), maxlength: $translate.instant('BusinessUnitOutOfLengthNode') // BURepeated: $translate.instant('BusinessUnitDuplicateNode') }, IsActive: $translate.instant('BusinessUnitStatusUnsureness') }, errorPlacement: function(error, element) { var elm = $(element).parents("form:first"); elm = elm.find("div[data-for='" + element.attr("name") + "']"); elm.html(error); elm.attr("class", "validate-fail"); } }); } var havePermission = function() { $scope.$root.checkUserPermission(constant.adminPermission.basicData.businessUnit.editCode).success(function(data) { $scope.hasEditPermission = data; intiUiGrid(); $scope.refreshData(); intiValidate(); }); }; (function initialize() { $log.debug('businessUnitController.ctor()...'); $scope.hasEditPermission = false; havePermission(); })(); } ]);