yangc 7 лет назад
Родитель
Сommit
0ab96cfdb3

+ 11 - 0
src/main/webapp/resources/js/common/b2bServices.js

@@ -3129,5 +3129,16 @@ define([ 'angular', 'common/services', 'common/utils', 'big'], function(angular,
         	}])
         	}])
         .factory('B2bAccountResource', ['$resource', 'BaseService', function($resource, BaseService) {
         .factory('B2bAccountResource', ['$resource', 'BaseService', function($resource, BaseService) {
             return $resource(BaseService.getB2bUrl() + '/account/resource', {});
             return $resource(BaseService.getB2bUrl() + '/account/resource', {});
+        }]).
+        factory('B2bUser', ['$resource', 'BaseService', function($resource, BaseService) {
+            var b2bUrl = BaseService.getB2bUrl();
+            return $resource(b2bUrl + '/user/findByUserUUList', {}, {
+                getUsersByUU: {
+                    url: b2bUrl + '/user/findByUserUUList',
+                    method: 'GET',
+                    isArray: true
+                }
+            });
         }])
         }])
+
 });
 });

+ 130 - 6
src/main/webapp/resources/js/sso/controllers/staffManagementCtrl.js

@@ -4,7 +4,7 @@
  */
  */
 define(['app/app'], function (app) {
 define(['app/app'], function (app) {
     "use strict";
     "use strict";
-    app.register.controller('staffManagementCtrl', ['$scope', '$rootScope', 'Enterprise', 'User', 'toaster', '$modal', 'BaseService', 'ngTableParams', '$http', 'AuthenticationService', '$stateParams','AccountResource','AccountRole', 'Authority', function ($scope, $rootScope, Enterprise, User, toaster, $modal, BaseService, ngTableParams, $http, AuthenticationService, $stateParams, AccountResource, AccountRole, Authority) {
+    app.register.controller('staffManagementCtrl', ['$scope', '$rootScope', 'Enterprise', 'User', 'toaster', '$modal', 'BaseService', 'ngTableParams', '$http', 'AuthenticationService', '$stateParams','AccountResource','AccountRole', 'Authority', 'B2bUser', 'B2bCurrentRole', function ($scope, $rootScope, Enterprise, User, toaster, $modal, BaseService, ngTableParams, $http, AuthenticationService, $stateParams, AccountResource, AccountRole, Authority, B2bUser, B2bCurrentRole) {
         $rootScope.active = 'sso_management';
         $rootScope.active = 'sso_management';
         document.title = '员工管理-帐户中心';
         document.title = '员工管理-帐户中心';
         $scope.tab = 'auth';
         $scope.tab = 'auth';
@@ -142,6 +142,18 @@ define(['app/app'], function (app) {
                             $defer.resolve(page.content);
                             $defer.resolve(page.content);
                             $scope.users = page.content;
                             $scope.users = page.content;
                             $scope.reloadUserCheck(false);
                             $scope.reloadUserCheck(false);
+                            var arr = [];
+                            angular.forEach($scope.users, function (item) {
+                                arr.push(item.userUU);
+                            })
+                            B2bUser.getUsersByUU({userUUJson: JSON.stringify(arr)}, function (data) {
+                                angular.forEach($scope.users, function (item, index) {
+                                    item.b2bRoles = data[index].roles;
+                                })
+                                console.log($scope.users);
+                            }, function () {
+                                toaster.pop('获取b2b角色信息失败');
+                            })
                         }
                         }
                     },function (error) {
                     },function (error) {
                         toaster.pop('error', '获取企业人员信息失败',error.data);
                         toaster.pop('error', '获取企业人员信息失败',error.data);
@@ -464,6 +476,41 @@ define(['app/app'], function (app) {
             });
             });
         };
         };
 
 
+        // b2b客户分配
+        $scope.addVendor = function (user) {
+            B2bCurrentRole.roles({}, function(data) {
+                var roles = data.count || $scope.userInfo.sys;
+                if (!roles) {
+                    toaster.pop('error', '提示', '你不是管理员或销售经理,无权限分配!请立即联系管理员');
+                } else {
+                    for (var i = 0; i < user.b2bRoles.length; i++) {
+                        if (user.b2bRoles[i].issys == 1 || user.b2bRoles[i].name == 'ROLE_SALEMANAGER') {
+                            toaster.pop('error', '提示', '管理员和销售经理无需分配客户');
+                            return;
+                        }
+                    }
+                    var modalInstance = $modal.open({
+                        animation: true,
+                        templateUrl: 'static/view/sso/b2b/modal/add_vendor.html',
+                        controller: 'AddVendorCtrl',
+                        resolve: {
+                            user: function () {
+                                return user;
+                            }
+                        }
+                    });
+                    // modalInstance.result.then(function (changed, checked) {
+                    //     if (changed) {
+                    //         if (checked)
+                    //             $scope.newUser.roles = checked;
+                    //         else
+                    //             loadUsers();
+                    //     }
+                    // });
+                }
+            });
+        };
+
         $scope.inSelect = false;
         $scope.inSelect = false;
         $scope.setInSelect = function (status) {
         $scope.setInSelect = function (status) {
             $scope.inSelect = status;
             $scope.inSelect = status;
@@ -568,7 +615,10 @@ 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) {
+    app.register.controller('UserRoleEditCtrl', ['$scope', '$modalInstance', '$timeout', 'AccountResource', 'toaster', 'user', 'BaseService', 'AccountRole', 'User', 'B2bAccountRole', 'B2bAccountUser', function ($scope, $modalInstance, $timeout, AccountResource, toaster, user, BaseService, AccountRole, User, B2bAccountRole, B2bAccountUser) {
+
+        // 分b2b和b2c
+        $scope.tab = 'b2c';
 
 
         $scope.pages = [];
         $scope.pages = [];
 
 
@@ -585,16 +635,27 @@ define(['app/app'], function (app) {
             $scope.currentRoles = $scope.rolesData.slice(start, end);
             $scope.currentRoles = $scope.rolesData.slice(start, end);
         };
         };
 
 
+        $scope.queryObj = {};
+        var initQueryObj = function () {
+            $scope.queryObj = $scope.tab == 'b2b' ? {
+                AccountRole: B2bAccountRole,
+                User: B2bAccountUser
+            } : {
+                AccountRole: AccountRole,
+                User: User
+            };
+        }
+        initQueryObj();
         var init = function () {
         var init = function () {
             $scope.user = angular.copy(user);
             $scope.user = angular.copy(user);
-            AccountRole.query({}, function (data) {
+            $scope.queryObj.AccountRole.query({}, function (data) {
                 $scope.rolesData = data;
                 $scope.rolesData = data;
                 loadCurrentRoles();
                 loadCurrentRoles();
                 $scope.params.totalPage = Math.ceil($scope.rolesData.length / 6);
                 $scope.params.totalPage = Math.ceil($scope.rolesData.length / 6);
                 $scope.acculatePages(1, $scope.params.totalPage);
                 $scope.acculatePages(1, $scope.params.totalPage);
                 angular.forEach($scope.rolesData, function (item) {
                 angular.forEach($scope.rolesData, function (item) {
                     item.checked = false;
                     item.checked = false;
-                    angular.forEach($scope.user.roles, function (userItem) {
+                    angular.forEach($scope.user[$scope.tab == 'b2b' ? 'b2bRoles' : 'roles'], function (userItem) {
                         if (item.id === userItem.id) {
                         if (item.id === userItem.id) {
                             item.checked = true;
                             item.checked = true;
                         }
                         }
@@ -604,6 +665,12 @@ define(['app/app'], function (app) {
         }
         }
         init();
         init();
 
 
+        $scope.switchTab = function (tab) {
+            $scope.tab = tab;
+            initQueryObj();
+            init();
+        }
+
         $scope.checked = [];
         $scope.checked = [];
         //勾选角色
         //勾选角色
         $scope.checkRole = function (role) {
         $scope.checkRole = function (role) {
@@ -623,9 +690,9 @@ define(['app/app'], function (app) {
                         }
                         }
                     });
                     });
                     $scope.user.roles = $scope.checked;
                     $scope.user.roles = $scope.checked;
-                    User.update({}, $scope.user, function () {
+                    $scope.queryObj.User[$scope.tab == 'b2b' ? 'updateRole' : 'update']({}, $scope.user, function () {
                         toaster.pop('success', '提示', '保存成功');
                         toaster.pop('success', '提示', '保存成功');
-                        user.roles = $scope.checked
+                        user[$scope.tab == 'b2b' ? 'b2bRoles' : 'roles'] = $scope.checked;
                         $modalInstance.close(true);
                         $modalInstance.close(true);
                     }, function (response) {
                     }, function (response) {
                         toaster.pop('error', '保存失败', response.data);
                         toaster.pop('error', '保存失败', response.data);
@@ -824,4 +891,61 @@ define(['app/app'], function (app) {
             $scope.acculatePages($scope.params.page, $scope.params.totalPage);
             $scope.acculatePages($scope.params.page, $scope.params.totalPage);
         };
         };
     }]);
     }]);
+
+    app.register.controller('AddVendorCtrl', ['$scope', '$modalInstance', 'user', 'B2bAccountUser', 'toaster', function ($scope, $modalInstance, user, AccountUser, toaster) {
+        $scope.checkboxes = {
+            checked: false
+        };
+        $scope.loading = true;
+        AccountUser.findVendor({uu: user.userUU}, function (data) {
+            $scope.enters = data;
+            $scope.loading = false;
+        })
+        // 点击勾选全部的复选框
+        $scope.checkAll = function () {
+            angular.forEach($scope.enters, function (item) {
+                item.distribute = $scope.checkboxes.checked;
+            });
+        };
+        // 点击其中一个明细的复选框
+        $scope.checkOne = function (vendor) {
+            var result = true;
+            angular.forEach($scope.enters, function (item) {
+                if (item.distribute != true) {
+                    result = false;
+                    return;
+                }
+            });
+            $scope.checkboxes.checked = result;
+        };
+        $scope.close = function (save) {
+            var chooseResult = [];
+            if (save) {
+                if (user.userUU) {
+                    angular.forEach($scope.enters, function (item, i) {
+                        chooseResult.push(item);
+                    });
+                    if (chooseResult.length > 0) {
+                        $scope.loading = true;
+                        AccountUser.addVendor({uu: user.userUU}, chooseResult, function (data) {
+                            $scope.loading = false;
+                            toaster.pop('success', '提示', '保存成功');
+                            $modalInstance.close(false);
+                        }, function (response) {
+                            $scope.loading = false;
+                            toaster.pop('error', '保存失败', response.data);
+                            $modalInstance.close(false);
+                        })
+                    } else {
+                        toaster.pop('error', '保存失败', "您未勾选任何记录");
+                    }
+                } else {
+                    $modalInstance.close(true, $scope.checkboxes.checked);
+                }
+            } else {
+                $modalInstance.close(false);
+            }
+        };
+    }]);
+
 });
 });

+ 45 - 0
src/main/webapp/resources/view/sso/b2b/modal/add_vendor.html

@@ -0,0 +1,45 @@
+<style>
+	.modal-content {
+		max-height: 500px;
+		overflow-y: auto;
+	}
+</style>
+<div class="b2b-com-modal b2b-operate-modal">
+	<p class="title">
+		分配企业权限 <i class="fa fa-close" ng-click="close(false)"></i>
+	</p>
+	<table width="100%" class="table b2b-modal-table">
+		<thead>
+		<th width="100px;">客户名称</th>
+		<th width="80px;">客户UU</th>
+		<th width="40px;" style="text-align: center">
+			<label class="com-check-box">
+				<input type="checkbox" id="All" name="checkbox" ng-model="checkboxes.checked" ng-click="checkAll()">
+				<label for="All"></label>
+			</label>
+		</th>
+		</thead>
+		<tbody>
+		<div style="overflow-y:scroll; width:100%;max-height:500px">
+			<tr ng-repeat="vendor in enters track by $index">
+				<td width="100px;">{{vendor.myEnterprise.enName}}</td>
+				<td width="80px;">{{vendor.myEnterprise.uu}}</td>
+				<td width="40px;" style="text-align: center">
+					<label class="com-check-box">
+						<input id="{{$index}}" ng-model="vendor.distribute" name="checkbox" ng-click="checkOne(vendor)" type="checkbox">
+						<label for="{{$index}}"></label>
+					</label>
+				</td>
+			</tr>
+			<div ng-if="enters.length == 0" class="warningLg">
+				此账号客户已全部被分配,请返回!
+			</div>
+		</div>
+		<tbody>
+	</table>
+	<div class="operate text-center">
+		<p class="text-left" style="color: #999;padding-left: 20px"><i class="must">*</i>点击企业选中或取消</p>
+		<button class="b2b-btn b2b-btn-submit" ng-click="close(true)">确认</button>
+		<button class="b2b-btn b2b-btn-cancel" ng-click="close(false)" type="button">取消</button>
+	</div>
+</div>

+ 17 - 6
src/main/webapp/resources/view/sso/staffManagement.html

@@ -350,6 +350,8 @@
     .auth-info-area .role-info tr td.edit-btn-area a, .auth-info-area .role-info tr td.edit-btn-area span{
     .auth-info-area .role-info tr td.edit-btn-area a, .auth-info-area .role-info tr td.edit-btn-area span{
         color: #5078cb;
         color: #5078cb;
         cursor: pointer;
         cursor: pointer;
+        display: block;
+        line-height: 26px;
     }
     }
     .auth-info-header {
     .auth-info-header {
         height: 40px;
         height: 40px;
@@ -963,7 +965,8 @@
                         <th width="67">性别</th>
                         <th width="67">性别</th>
                         <th width="133">手机</th>
                         <th width="133">手机</th>
                         <th width="207">邮箱</th>
                         <th width="207">邮箱</th>
-                        <th width="376">角色</th>
+                        <th width="188">商城角色</th>
+                        <th width="188">b2b角色</th>
                         <th width="107">操作</th>
                         <th width="107">操作</th>
                     </tr>
                     </tr>
                     </thead>
                     </thead>
@@ -1020,16 +1023,24 @@
                             <span ng-repeat="role in user.roles track by $index" ng-if="$index < 6 || user.roles.length == 7" class="role-tag bgcolor-{{role.color || 1}}">{{role.desc.substring(0,1)}}</span>
                             <span ng-repeat="role in user.roles track by $index" ng-if="$index < 6 || user.roles.length == 7" class="role-tag bgcolor-{{role.color || 1}}">{{role.desc.substring(0,1)}}</span>
                             <span class="role-tag bgcolor-6" ng-if="user.roles.length > 7">...</span>
                             <span class="role-tag bgcolor-6" ng-if="user.roles.length > 7">...</span>
                         </td>
                         </td>
+                        <td class="role-tag-area detail-role-tag">
+                            <span ng-repeat="role in user.b2bRoles track by $index" ng-if="$index < 6 || user.roles.length == 7" class="role-tag bgcolor-{{role.color || 1}}">{{role.desc.substring(0,1)}}</span>
+                            <span class="role-tag bgcolor-6" ng-if="user.roles.length > 7">...</span>
+                        </td>
                         <!--<td class="edit-btn-area">
                         <!--<td class="edit-btn-area">
                             <a>编辑 </a><span>|</span><a> 删除</a>
                             <a>编辑 </a><span>|</span><a> 删除</a>
                         </td>-->
                         </td>-->
                         <td class="edit-btn-area">
                         <td class="edit-btn-area">
                             <!--<a class="operator-trigger" href="javascript:void(0);"><i class="fa fa-pencil fa-lg" ng-show="(userInfo.sys && enterprise.enAdminuu != user.userUU) || users.length == 1"></i></a>-->
                             <!--<a class="operator-trigger" href="javascript:void(0);"><i class="fa fa-pencil fa-lg" ng-show="(userInfo.sys && enterprise.enAdminuu != user.userUU) || users.length == 1"></i></a>-->
-                            <div>  <!--&& enterprise.enAdminuu != user.userUU-->
-                                <span ng-click="editUserRole(user)" ng-show="user.userUU != userInfo.userUU" title="角色分配"><i></i>角色分配 | </span>
-                                <span ng-click="setShowDelUserFlag(true, user)" ng-show="user.userUU != userInfo.userUU" title="删除"><i></i>删除</span>
-                                <span ng-show="user.userUU == userInfo.userUU" disabled="false" title="角色分配" style="color: #606168; cursor: not-allowed;"><i></i>角色分配 | </span>
-                                <span ng-show="user.userUU == userInfo.userUU" disabled="false" title="删除" style="color: #606168; cursor: not-allowed;"><i></i>删除</span>
+                            <div ng-if="user.userUU != userInfo.userUU">  <!--&& enterprise.enAdminuu != user.userUU-->
+                                <span ng-click="addVendor(user)" title="客户分配">b2b客户分配</span>
+                                <span ng-click="editUserRole(user)" title="角色分配"><i></i>角色分配</span>
+                                <span ng-click="setShowDelUserFlag(true, user)" title="删除"><i></i>删除</span>
+                            </div>
+                            <div ng-if="user.userUU == userInfo.userUU">
+                                <span disabled="false" title="客户分配" style="color: #606168; cursor: not-allowed;"><i></i>b2b客户分配</span>
+                                <span disabled="false" title="角色分配" style="color: #606168; cursor: not-allowed;"><i></i>角色分配</span>
+                                <span disabled="false" title="删除" style="color: #606168; cursor: not-allowed;"><i></i>删除</span>
                             </div>
                             </div>
                         </td>
                         </td>
                     </tr>
                     </tr>

+ 7 - 1
src/main/webapp/resources/view/vendor/modal/edit_user_role.html

@@ -12,6 +12,11 @@
         font-size: 14px;
         font-size: 14px;
         color: #666;
         color: #666;
         margin-left: 14px;
         margin-left: 14px;
+        cursor: pointer;
+    }
+    .user-role-manage .user-role-header >span.active {
+        color: #5078cb;
+        border-bottom: 2px solid #5078cb;
     }
     }
     .user-role-manage .default-role-area {
     .user-role-manage .default-role-area {
         height: 256px;
         height: 256px;
@@ -173,7 +178,8 @@
 
 
 <div class="user-role-manage">
 <div class="user-role-manage">
     <div class="user-role-header">
     <div class="user-role-header">
-        <span>编辑角色</span>
+        <span ng-class="{active: tab == 'b2c'}" ng-click="switchTab('b2c')">商城角色</span>
+        <span ng-class="{active: tab == 'b2b'}" ng-click="switchTab('b2b')">b2b角色</span>
         <button style=" padding-right:9px; " type="button" class="close" data-dismiss="alert" ng-click="cancelModal()" aria-label="Close">
         <button style=" padding-right:9px; " type="button" class="close" data-dismiss="alert" ng-click="cancelModal()" aria-label="Close">
             <span aria-hidden="true">×</span>
             <span aria-hidden="true">×</span>
         </button>
         </button>