167 lines
4.0 KiB
Go
167 lines
4.0 KiB
Go
/**
|
|
* 角色
|
|
* Copyright (c) 2018 phachon@163.com
|
|
*/
|
|
var Role = {
|
|
|
|
isChecked : true,
|
|
|
|
defaults : function(defaults, disableds) {
|
|
console.log(defaults);
|
|
console.log(disableds);
|
|
$('[name="privilege_id"]').each(function() {
|
|
var checked = $.inArray(parseInt(this.value), defaults) > -1 ? true : false;
|
|
this.checked = checked;
|
|
var isDisabled = $.inArray(parseInt(this.value), disableds) > -1 ? true : false;
|
|
if (isDisabled) {
|
|
this.checked = true;
|
|
this.disabled = true;
|
|
}
|
|
});
|
|
},
|
|
|
|
privilege : function(element) {
|
|
|
|
var privilegeId = $(element).val();
|
|
var checked = $(element).is(':checked');
|
|
var type = $(element).attr("data-type");
|
|
//console.log(checked);
|
|
|
|
if(checked == false) {
|
|
Role.isChecked = false;
|
|
}else {
|
|
Role.isChecked = true;
|
|
}
|
|
if(type == 'navigator') {
|
|
Role.navigator(privilegeId);
|
|
}
|
|
if(type == 'menu') {
|
|
Role.menu(privilegeId);
|
|
}
|
|
if(type == 'controller') {
|
|
Role.controller(privilegeId);
|
|
}
|
|
|
|
},
|
|
|
|
navigator : function(privilegeId) {
|
|
|
|
var navigatorIds = [];
|
|
var menuIds = [];
|
|
var controllerIds = [];
|
|
|
|
navigatorIds.push(privilegeId);
|
|
//孩子菜单
|
|
for (var i = 0; i < menus.length; i++) {
|
|
if(menus[i].parentId == privilegeId) {
|
|
menuIds.push(menus[i].privilegeId);
|
|
}
|
|
}
|
|
|
|
for (var i = 0; i < menuIds.length; i++) {
|
|
//孙子控制器
|
|
for (var y = 0; y < controllers.length; y++) {
|
|
if(controllers[y].parentId == menuIds[i]) {
|
|
controllerIds.push(controllers[y].privilegeId);
|
|
}
|
|
}
|
|
}
|
|
|
|
var allIds = [].concat(navigatorIds, menuIds, controllerIds);
|
|
Role.downLevel(allIds);
|
|
},
|
|
|
|
menu : function(privilegeId) {
|
|
var navigatorIds = [];
|
|
var menuIds = [];
|
|
var controllerIds = [];
|
|
|
|
menuIds.push(privilegeId);
|
|
//孩子控制器
|
|
for (var i = 0; i < controllers.length; i++) {
|
|
if(controllers[i].parentId == privilegeId) {
|
|
controllerIds.push(controllers[i].privilegeId);
|
|
}
|
|
}
|
|
|
|
//父亲导航
|
|
for (var i = 0; i < menus.length; i++) {
|
|
if(menus[i].privilegeId == privilegeId) {
|
|
for (var y = 0; y < navigators.length; y++) {
|
|
if(navigators[y].privilegeId == menus[i].parentId) {
|
|
navigatorIds.push(navigators[y].privilegeId);
|
|
continue
|
|
}
|
|
}
|
|
continue
|
|
}
|
|
}
|
|
|
|
var allIds = [].concat(menuIds, controllerIds);
|
|
//下级
|
|
Role.downLevel(allIds);
|
|
//上级
|
|
Role.upLevel(navigatorIds);
|
|
},
|
|
|
|
controller : function(privilegeId) {
|
|
var navigatorIds = [];
|
|
var menuIds = [];
|
|
var controllerIds = [];
|
|
controllerIds.push(privilegeId);
|
|
|
|
//菜单和导航
|
|
for (var i = 0; i < controllers.length; i++) {
|
|
if(controllers[i].privilegeId == privilegeId) {
|
|
for (var y = 0; y < menus.length; y++) {
|
|
if(menus[y].privilegeId == controllers[i].parentId) {
|
|
menuIds.push(menus[y].privilegeId);
|
|
for (var z = 0; z < navigators.length; z++) {
|
|
if(navigators[z].privilegeId == menus[y].parentId) {
|
|
navigatorIds.push(navigators[z].privilegeId);
|
|
continue;
|
|
}
|
|
}
|
|
continue;
|
|
}
|
|
}
|
|
continue;
|
|
}
|
|
}
|
|
|
|
//下级
|
|
Role.downLevel(controllerIds);
|
|
//上级
|
|
var allIds = [].concat(navigatorIds, menuIds);
|
|
Role.upLevel(allIds);
|
|
},
|
|
|
|
/**
|
|
* 所有的下级
|
|
*/
|
|
downLevel : function(privilegeIds) {
|
|
for (var i = 0; i < privilegeIds.length; i++) {
|
|
if(Role.isChecked == true) {
|
|
$('input:checkbox[value="'+ privilegeIds[i] +'"]').prop('checked', true);
|
|
$('input:checkbox[value="'+ privilegeIds[i] +'"]').attr('checked', true);
|
|
} else {
|
|
$('input:checkbox[value="'+ privilegeIds[i] +'"]').attr('checked', false);
|
|
$('input:checkbox[value="'+ privilegeIds[i] +'"]').prop('checked', false);
|
|
$('input:checkbox[value="'+ privilegeIds[i] +'"]').removeAttr('checked');
|
|
}
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 所有的上级
|
|
*/
|
|
upLevel : function(privilegeIds) {
|
|
for (var i = 0; i < privilegeIds.length; i++) {
|
|
if(Role.isChecked == true) {
|
|
$('input:checkbox[value="'+ privilegeIds[i] +'"]').prop('checked', true);
|
|
$('input:checkbox[value="'+ privilegeIds[i] +'"]').attr('checked', true);
|
|
}
|
|
}
|
|
}
|
|
|
|
}; |