You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

129 lines
3.1 KiB
TypeScript

const data = [
{
id: '0',
label: '根权限',
children: [
{
id: '111',
label: '账号管理',
children: [
{
id: '111-111',
label: '代理账号',
children: [
{
id: '111-111-111',
label: '添加'
},
{
id: '111-111-222',
label: '删除'
},
{
id: '111-111-333',
label: '编辑'
}
]
},
{
id: '111-222',
label: '站点账号',
children: [
{
id: '111-222-111',
label: '添加'
},
{
id: '111-222-222',
label: '删除'
},
{
id: '111-222-333',
label: '编辑'
}
]
}
]
},
{
id: '222',
label: '平台设置',
children: [
{
id: '222-111',
label: '游戏设置',
children: [
{
id: '222-111-111',
label: '添加'
},
{
id: '222-111-222',
label: '删除'
},
{
id: '222-111-333',
label: '编辑'
}
]
},
{
id: '222-222',
label: '公告设置',
children: [
{
id: '222-222-111',
label: '添加'
},
{
id: '222-222-222',
label: '删除'
},
{
id: '222-222-333',
label: '编辑'
}
]
}
]
}
]
}
];
function generatePerms(type: string, pId: string) {
let _firstId = '',
_secondId = '';
if (data[0] && data[0].children) {
for (let i = 0; i < data[0].children.length; i++) {
const item = data[0].children[i];
_firstId = item.id;
if (item.children && item.children.length) {
// 二级菜单
for (let j = 0; j < item.children.length; j++) {
const _item = item.children[j];
_secondId = _item.id;
if (_item.id === pId) {
return `${_firstId}:${_secondId}:${type}`;
}
}
}
}
}
return type;
}
describe('generatePerms', () => {
it('ADD 222-222', () => {
expect(generatePerms('ADD', '222-222')).toEqual('222:222-222:ADD');
});
it('ADD 222-111', () => {
expect(generatePerms('ADD', '222-111')).toEqual('222:222-111:ADD');
});
it('ADD 111-111', () => {
expect(generatePerms('ADD', '111-111')).toEqual('111:111-111:ADD');
});
it('ADD 111-222-', () => {
expect(generatePerms('ADD', '111-222-')).toEqual('ADD');
});
});