/**
|
入驻小区
|
**/
|
(function (vc) {
|
vc.extends({
|
data: {
|
privilegeTreeInfo: {
|
privileges: [],
|
_currentPgId: ''
|
}
|
},
|
_initMethod: function () {
|
},
|
_initEvent: function () {
|
vc.on('privilegeTree', 'loadPrivilege', function (_pgId) {
|
$that.privilegeTreeInfo._currentPgId = _pgId;
|
$that._loadPrivilege(_pgId);
|
});
|
},
|
methods: {
|
addPrivilegeToPrivilegeGroup: function (_selectPrivileges) {
|
if (_selectPrivileges.length < 1) {
|
vc.toast("请先选择权限");
|
return;
|
}
|
let _pIds = [];
|
for (let selectIndex = 0; selectIndex < _selectPrivileges.length; selectIndex++) {
|
let _pId = {
|
pId: _selectPrivileges[selectIndex]
|
};
|
_pIds.push(_pId);
|
}
|
let _objData = {
|
pgId: vc.component.privilegeTreeInfo._currentPgId,
|
pIds: _pIds
|
};
|
vc.http.apiPost(
|
'/add.privilege.PrivilegeGroup',
|
JSON.stringify(_objData), {
|
emulateJSON: true
|
},
|
function (json, res) {
|
//vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
|
if (res.status == 200) {
|
return;
|
}
|
vc.toast('失败')
|
},
|
function (errInfo, error) {
|
console.log('请求失败处理');
|
vc.toast('失败')
|
});
|
},
|
deletePrivilege: function (_selectPrivileges) {
|
if (_selectPrivileges.length < 1) {
|
vc.toast("请先选择权限");
|
return;
|
}
|
var _pIds = [];
|
for (var selectIndex = 0; selectIndex < _selectPrivileges.length; selectIndex++) {
|
var _pId = {
|
pId: _selectPrivileges[selectIndex]
|
};
|
_pIds.push(_pId);
|
}
|
var _objData = {
|
pgId: vc.component.privilegeTreeInfo._currentPgId,
|
pIds: _pIds
|
};
|
vc.http.apiPost(
|
'/delete.privilege.PrivilegeGroup',
|
JSON.stringify(_objData), {
|
emulateJSON: true
|
},
|
function (json, res) {
|
//vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
|
if (res.status == 200) {
|
//关闭model
|
return;
|
}
|
vc.toast('删除失败');
|
},
|
function (errInfo, error) {
|
vc.toast('删除失败');
|
});
|
},
|
_initJsTreePrivilege: function (_privileges) {
|
let _data = $that._doJsTreeData(_privileges);
|
$.jstree.destroy()
|
$("#jstree_privilege").jstree({
|
"checkbox": {
|
"keep_selected_style": false
|
},
|
"plugins": ["checkbox"],
|
'state': { //一些初始化状态
|
"opened": false,
|
},
|
'core': {
|
'data': _data
|
}
|
});
|
$('#jstree_privilege').on("changed.jstree", function (e, data) {
|
if (data.action == 'model' || data.action == 'ready') {
|
//默认合并
|
$("#jstree_privilege").jstree("close_all");
|
return;
|
}
|
let _selected = data.node.state.selected;
|
let _d = data.node.children_d;
|
if (_d.length < 1) {
|
_d.push(data.node.id);
|
}
|
let _selectPrivileges = [];
|
_d.forEach(_dItem => {
|
if (_dItem.indexOf('p_') > -1) {
|
_selectPrivileges.push(_dItem.substring(2));
|
}
|
});
|
if (_selectPrivileges.length < 1) {
|
return;
|
}
|
if (_selected) {
|
$that.addPrivilegeToPrivilegeGroup(_selectPrivileges);
|
} else {
|
$that.deletePrivilege(_selectPrivileges);
|
}
|
});
|
// 在树加载完成后,为第三级节点添加"权限"按钮
|
$('#jstree_privilege').on("ready.jstree", function (e, data) {
|
$that._addPermissionButtons();
|
});
|
// 当树节点展开时,为展开的第三级节点添加按钮
|
$('#jstree_privilege').on("open_node.jstree", function (e, data) {
|
setTimeout(function () {
|
$that._addPermissionButtons();
|
}, 100);
|
});
|
// 当树刷新时,重新添加按钮
|
$('#jstree_privilege').on("refresh.jstree", function (e, data) {
|
setTimeout(function () {
|
$that._addPermissionButtons();
|
}, 100);
|
});
|
},
|
_addPermissionButtons: function () {
|
// 获取所有第三级节点(id以p_开头)
|
$('#jstree_privilege').find('li[id^="p_"]').each(function () {
|
let $node = $(this);
|
let $anchor = $node.find('> a.jstree-anchor');
|
// 检查是否已经添加过按钮
|
if ($anchor.next('.permission-btn').length === 0) {
|
// 创建权限按钮
|
let $btn = $('<button class="permission-btn" style="margin-left: 10px; padding: 2px 8px; font-size: 12px; border: 1px solid #ccc; border-radius: 3px; background: #fff; cursor: pointer; color: #333;">权限</button>');
|
// 获取权限ID
|
let nodeId = $node.attr('id');
|
let pId = nodeId.substring(2); // 去掉"p_"前缀
|
// 绑定点击事件
|
$btn.on('click', function (e) {
|
e.stopPropagation(); // 阻止事件冒泡,避免触发树节点的选择
|
// 获取当前页面的参数
|
let pgId = vc.component.privilegeTreeInfo._currentPgId;
|
let communityId = vc.getCurrentCommunity().communityId;
|
// 获取权限名称
|
let nodeData = $('#jstree_privilege').jstree('get_node', nodeId);
|
let pName = nodeData ? nodeData.text : '';
|
// 跳转到role-a页面,传递所有参数
|
let params = 'pId=' + pId + '&pgId=' + pgId + '&communityId=' + communityId + '&type=all&pName=' + encodeURIComponent(pName);
|
vc.jumpToPage('/#/pages/frame/role/role-a?' + params);
|
});
|
// 将按钮插入到节点后面
|
$anchor.after($btn);
|
}
|
});
|
},
|
_doJsTreeData: function (_privileges) {
|
let _mGroupTree = [];
|
//构建 第一层菜单组
|
_privileges.forEach(pItem => {
|
let _includeGroup = false;
|
for (let _mgIndex = 0; _mgIndex < _mGroupTree.length; _mgIndex++) {
|
if (pItem.gId == _mGroupTree[_mgIndex].gId) {
|
_includeGroup = true;
|
}
|
}
|
if (!_includeGroup) {
|
let _groupItem = {
|
id: 'g_' + pItem.gId,
|
gId: pItem.gId,
|
text: pItem.gName,
|
state: {
|
opened: false
|
},
|
children: []
|
};
|
$that._doJsTreeMenuData(_groupItem);
|
_mGroupTree.push(_groupItem);
|
}
|
});
|
return _mGroupTree;
|
},
|
_doJsTreeMenuData: function (_groupItem) {
|
let _privileges = $that.privilegeTreeInfo.privileges;
|
//构建菜单
|
let _children = _groupItem.children;
|
for (let _pIndex = 0; _pIndex < _privileges.length; _pIndex++) {
|
if (_groupItem.gId == _privileges[_pIndex].gId) {
|
let _includeMenu = false;
|
for (let _mgIndex = 0; _mgIndex < _children.length; _mgIndex++) {
|
if (_privileges[_pIndex].mId == _children[_mgIndex].mId) {
|
_includeMenu = true;
|
}
|
}
|
if (!_includeMenu) {
|
let _menuItem = {
|
id: 'm_' + _privileges[_pIndex].mId,
|
mId: _privileges[_pIndex].mId,
|
text: _privileges[_pIndex].mName,
|
state: {
|
opened: false
|
},
|
children: []
|
};
|
$that._doJsTreePrivilegeData(_menuItem);
|
_children.push(_menuItem);
|
}
|
}
|
}
|
},
|
_doJsTreePrivilegeData: function (_menuItem) {
|
let _privileges = $that.privilegeTreeInfo.privileges;
|
//构建菜单
|
let _children = _menuItem.children;
|
for (let _pIndex = 0; _pIndex < _privileges.length; _pIndex++) {
|
if (_menuItem.mId == _privileges[_pIndex].mId) {
|
let _includePrivilege = false;
|
for (let _mIndex = 0; _mIndex < _children.length; _mIndex++) {
|
if (_privileges[_pIndex].pId == _children[_mIndex].pId) {
|
_includePrivilege = true;
|
}
|
}
|
if (!_includePrivilege) {
|
let _selected = false;
|
if (_privileges[_pIndex].pgId) {
|
_selected = true;
|
}
|
let _privilegeItem = {
|
id: 'p_' + _privileges[_pIndex].pId,
|
pId: _privileges[_pIndex].pId,
|
text: _privileges[_pIndex].pName,
|
state: {
|
opened: false,
|
selected: _selected
|
}
|
};
|
_children.push(_privilegeItem);
|
}
|
}
|
}
|
},
|
_loadPrivilege: function (_pgId) {
|
vc.component.privilegeTreeInfo.privileges = [];
|
var param = {
|
params: {
|
pgId: _pgId,
|
communityId: vc.getCurrentCommunity().communityId
|
}
|
};
|
//发送get请求
|
vc.http.apiGet('/query.privilegeGroup.noAddPrivilege',
|
param,
|
function (json) {
|
let _privileges = JSON.parse(json);
|
vc.component.privilegeTreeInfo.privileges = _privileges;
|
$that._initJsTreePrivilege(_privileges);
|
},
|
function () {
|
console.log('请求失败处理');
|
}
|
);
|
},
|
}
|
});
|
})(window.vc);
|