import { getConnection } from "typeorm";
|
import BaseService from "../baseService";
|
import { SysMenu } from "../../entity/sys/core/sysMenu";
|
import { SysMenuUser } from "../../entity/sys/core/sysMenuUser";
|
|
/**
|
* 菜单管理
|
*/
|
export default class MenuVueService extends BaseService {
|
/**
|
* 获得Vue菜单权限
|
* @param name - your name
|
*/
|
public async getVueMenu() {
|
let userInfo = await this.userInfo;
|
var sql = `WITH CategoryInfo AS
|
(
|
SELECT menu_Id, MenuName, parentId, VueOrderNo, VueEnable
|
FROM Sys_Menu
|
WHERE parentId = 0 and VueEnable=1 AND VueUrl IS NOT NULL
|
UNION ALL
|
SELECT a.menu_Id, a.MenuName, a.parentId, a.VueOrderNo, a.VueEnable
|
FROM Sys_Menu AS a, CategoryInfo AS b
|
WHERE a.parentId = b.menu_Id And a.VueEnable=1
|
AND a.VueUrl IS NOT NULL
|
)
|
SELECT menu_Id as m,
|
(Select top 1 MenuName From Sys_MenuUser Where Menu_Id=CategoryInfo.menu_Id And UserProduct_Id=${userInfo.userProduct_Id}) as d
|
FROM CategoryInfo
|
Where VueEnable=1
|
`;
|
if (userInfo) {
|
sql += `And (menu_Id IN (SELECT menu_Id FROM Sys_RoleAuth WHERE Role_Id = ${userInfo.role_Id} AND AuthValue LIKE '%1%'))
|
Order By VueOrderNo desc, menu_Id`;
|
// if (!userInfo.isAdministrator) {
|
// sql += `And (menu_Id IN (SELECT menu_Id FROM Sys_RoleAuth WHERE Role_Id = ${userInfo.role_Id} AND AuthValue LIKE '%1%'))
|
// Order By VueOrderNo desc, menu_Id`;
|
// }
|
} else {
|
sql += " And 1!=1";
|
}
|
var authMenuList: Array<any> = await getConnection().query(sql);
|
authMenuList.forEach(item => {
|
if (!item.d) {
|
delete item.d;
|
}
|
});
|
|
return authMenuList;
|
}
|
|
/**
|
* 加载后,获得自定义菜单信息
|
* @param dataInfo 菜单信息
|
*/
|
public async onLoadSaveAfter(dataInfo: SysMenu) {
|
let userInfo = await this.userInfo;
|
let userMenu = await this.dbRead.findOne(SysMenuUser, {
|
menu_Id: dataInfo.menu_Id,
|
userProduct_Id: userInfo.userProduct_Id
|
});
|
if (userMenu) {
|
dataInfo.description = userMenu.menuName;
|
}
|
}
|
|
/**
|
* 保存自定义菜单名称
|
* @param dataInfo 菜单信息
|
*/
|
public async onAddSaveAfter(dataInfo: SysMenu) {
|
let userInfo = await this.userInfo;
|
let userMenu = await this.dbRead.findOne(SysMenuUser, {
|
menu_Id: dataInfo.menu_Id,
|
userProduct_Id: userInfo.userProduct_Id
|
});
|
if (!userMenu) {
|
userMenu = new SysMenuUser();
|
}
|
userMenu.menuName = dataInfo.description;
|
userMenu.menu_Id = dataInfo.menu_Id;
|
await this.setAccountInfo(userMenu);
|
await this.dbWrite.save(userMenu);
|
}
|
}
|