/** 入驻小区 **/ (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 = $(''); // 获取权限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);