Browse Source

Merge branch 'hotfix-wangcz-sso' into dev

wangcz 7 years ago
parent
commit
fbc758b1ed
1 changed files with 257 additions and 0 deletions
  1. 257 0
      src/main/webapp/resources/js/sso/controllers/staffManagementCtrl.js

+ 257 - 0
src/main/webapp/resources/js/sso/controllers/staffManagementCtrl.js

@@ -562,4 +562,261 @@ define(['app/app'], function (app) {
                     };
                 }]);
     }]);
+
+    app.register.controller('UserRoleEditCtrl', ['$scope', '$modalInstance', '$timeout', 'AccountResource', 'toaster', 'user', 'BaseService', 'AccountRole', 'User', function ($scope, $modalInstance, $timeout, AccountResource, toaster, user, BaseService, AccountRole, User) {
+
+        $scope.pages = [];
+
+        $scope.params = {
+            page: 1,
+            count: 6,
+            totalPage: 1,
+            currentPage: 1
+        };
+
+        var loadCurrentRoles = function () {
+            var start = ($scope.params.page - 1) * $scope.params.count;
+            var end = $scope.params.page * $scope.params.count;
+            $scope.currentRoles = $scope.rolesData.slice(start, end);
+        };
+
+        var init = function () {
+            $scope.user = angular.copy(user);
+            AccountRole.query({}, function (data) {
+                $scope.rolesData = data;
+                loadCurrentRoles();
+                $scope.params.totalPage = Math.ceil($scope.rolesData.length / 6);
+                $scope.acculatePages(1, $scope.params.totalPage);
+                angular.forEach($scope.rolesData, function (item) {
+                    item.checked = false;
+                    angular.forEach($scope.user.roles, function (userItem) {
+                        if (item.id === userItem.id) {
+                            item.checked = true;
+                        }
+                    });
+                });
+            });
+        }
+        init();
+
+        $scope.checked = [];
+        //勾选角色
+        $scope.checkRole = function (role) {
+            role.checked = !role.checked;
+        }
+
+        //关闭模态框
+        $scope.cancelModal = function () {
+            $modalInstance.close();
+        }
+        $scope.close = function (save) {
+            if (save) {
+                if (user.userUU) {
+                    angular.forEach($scope.rolesData, function (item) {
+                        if (item.checked) {
+                            $scope.checked.push(item);
+                        }
+                    });
+                    $scope.user.roles = $scope.checked;
+                    User.update({}, $scope.user, function () {
+                        toaster.pop('success', '提示', '保存成功');
+                        user.roles = $scope.checked
+                        $modalInstance.close(true);
+                    }, function (response) {
+                        toaster.pop('error', '保存失败', response.data);
+                    });
+                } else {
+                    $modalInstance.close(true, $scope.checked);
+                }
+            } else {
+                $modalInstance.close(false);
+            }
+        };
+
+        // //初始化分页数据
+        // var initPages = function () {
+        // 	$scope.totalPages = Math.ceil = ($scope.rolesData.length/6);
+        // }
+        //初始化页数信息
+        $scope.initPages = function (totalElementPages) {
+            var pageNum = [];
+            if (totalElementPages == 1) {
+                return;
+            } else if (totalElementPages < 10) {
+                for (var i = 0; i < totalElementPages + 2; i++) {
+                    pageNum.push(i);
+                }
+            } else {
+                pageNum = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+            }
+            angular.forEach(pageNum, function (number) {
+                var page = {active: true, type: 'page', number: number};
+                if (number == 0) {
+                    page.type = 'prev';
+                } else if (number == 1) {
+                    page.type = 'first';
+                } else if (number == pageNum.length - 2) {
+                    page.type = 'last';
+                    page.number = totalElementPages;
+                } else if (number == pageNum.length - 1) {
+                    page.type = 'next';
+                }
+                $scope.pages.push(page);
+            });
+        };
+
+        //当前页在后端计算方式
+        $scope.endSegment = function (currentPage, totalElementPages) {
+            if (totalElementPages > 8) {
+                angular.forEach($scope.pages, function (page) {
+                    switch (page.number) {
+                        case 2:
+                            page.active = false;
+                            page.type = 'more';
+                            break;
+                        case 10:
+                            if (currentPage == totalElementPages) {
+                                page.active = false;
+                            }
+                            break;
+                        case 0:
+                        case 1:
+                            break;
+                        default:
+                            if (page.number != totalElementPages) {
+                                page.number = totalElementPages - 9 + page.number;
+                            }
+                            page.current = (currentPage == page.number);
+                            break;
+                    }
+                });
+            }
+        };
+
+        //当前页在中间计算方式
+        $scope.middleSegment = function (currentPage) {
+            angular.forEach($scope.pages, function (page) {
+                switch (page.number) {
+                    case 2:
+                    case 8:
+                        page.type = 'more';
+                        page.active = false;
+                        break;
+                    case 3:
+                        page.number = currentPage - 2;
+                        break;
+                    case 4:
+                        page.number = currentPage - 1;
+                        break;
+                    case 5:
+                        page.number = currentPage;
+                        page.current = true;
+                        break;
+                    case 6:
+                        page.number = currentPage + 1;
+                        break;
+                    case 7:
+                        page.number = currentPage + 2;
+                        break;
+                }
+            });
+        };
+
+        //当前页在前段的计算方式
+        $scope.frontSegment = function (currentPage, totalElementPages) {
+            if (totalElementPages > 8) {
+                angular.forEach($scope.pages, function (page) {
+                    switch (page.number) {
+                        case 8:
+                            page.type = 'more';
+                            page.active = false;
+                            break;
+                        case 0:
+                            if (currentPage == 1) {
+                                page.active = false;
+                            }
+                        default : {
+                            page.current = (currentPage == page.number);
+                        }
+                    }
+                });
+            }
+        };
+
+        //输入框监听Enter事件
+        $scope.listenEnter = function () {
+            if (event.keyCode == 13) {
+                $scope.setPage("page", $scope.params.currentPage);
+            }
+        };
+        $scope.setPage = function (type, number) {
+            if (type != 'prev' && type != 'page' && type != 'next' && type != 'last' && type != 'first') {
+                return;
+            }
+            ;
+            var page = -1;
+            switch (type) {
+                case "page":
+                    if (number < 1) {
+                        page = 1;
+                    } else if (number > $scope.params.totalPage) {
+                        page = $scope.params.totalPage;
+                    } else {
+                        page = number;
+                    }
+                    ;
+                    break;
+                case "prev":
+                    if ($scope.params.page <= 1) {
+                        page = 1;
+                    } else {
+                        page = $scope.params.page - 1;
+                    }
+                    ;
+                    break;
+                case "next":
+                    if ($scope.params.page >= $scope.params.totalPage) {
+                        page = $scope.params.totalPage;
+                    } else {
+                        page = $scope.params.page + 1;
+                    }
+                    break;
+                case "first":
+                    page = 1;
+                    break;
+                case "last":
+                    page = $scope.params.totalPage;
+                    break;
+            }
+            if (page == $scope.params.page || page < 1 || page > $scope.params.totalPage) {
+                $scope.params.currentPage = $scope.params.page;
+                return;
+            }
+            $scope.params.page = page;
+            $scope.params.currentPage = page;
+            loadData();
+        };
+
+        //计算页数的方式。
+        $scope.acculatePages = function (currentPage, totalElementPages) {
+            $scope.pages = [];
+            if (totalElementPages < 1) {
+                return;
+            }
+            //初始化页面数据
+            $scope.initPages(totalElementPages);
+            if (currentPage < 6) {//当期页小于6
+                $scope.frontSegment(currentPage, totalElementPages);
+            } else if (currentPage > totalElementPages - 5) { //当期页在后面
+                $scope.endSegment(currentPage, totalElementPages);
+            } else { //当期页在中间
+                $scope.middleSegment(currentPage);
+            }
+        };
+
+        var loadData = function () {
+            loadCurrentRoles();
+            $scope.acculatePages($scope.params.page, $scope.params.totalPage);
+        };
+    }]);
 });