menu.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. import { defHttp } from '/@/utils/http/axios';
  2. import { getMenuListResultModel } from './model/menuModel';
  3. import { useUserStore } from '/@/store/modules/user';
  4. import { RoleEnum } from '/@/enums/roleEnum';
  5. import menu from '/@/mock/menu.json'
  6. import menu_get_ids from '/@/mock/menu_get_ids.json'
  7. import tool from '/@/utils/Tool';
  8. import { identity } from 'lodash-es';
  9. import { session } from '/@/utils/Memory';
  10. enum Api {
  11. BaseMenuUrl = '/menu',
  12. SaveStructure = '/user-center/department/editDepartment',
  13. DeleteStructure = "/user-center/department/deleteDepartment",
  14. GetMenuList = '/menu/me/menus',
  15. SysAdminMenuList = '/admin/me/menus',
  16. GetMenuIdsByRoleId = '/menu/get_ids/',
  17. GetChildDepartment = '/user-center/department/getChildDepartment',
  18. // GetMenuTreeData = "/base-center/menu/getMenuTreeData",
  19. GetMenuTreeData = "/base-center/newmenu/getMenuTreeData",
  20. DeleteMenuData = '/base-center/newmenu/deleteMenuData',
  21. DeleteMenuDataList = '/base-center/newmenu/deleteMenuDataList'
  22. }
  23. /**
  24. * 删除机构
  25. * @param ids 删除id数组
  26. */
  27. export const DeleteStructure = (params) => {
  28. return new Promise<void>((resolve, reject) => {
  29. defHttp.post({ url: Api.DeleteStructure, params: tool.objectToFormData(params) }).then((res) => {
  30. resolve(res.datas)
  31. })
  32. })
  33. }
  34. /**
  35. * @description: 新增机构
  36. */
  37. export const saveStructure = (params) => {
  38. return new Promise<void>((resolve, reject) => {
  39. defHttp.post({ url: Api.SaveStructure, params: tool.objectToFormData(params) })
  40. .then((res) => {
  41. resolve(res.datas)
  42. })
  43. })
  44. };
  45. /**
  46. * @description: 获取机构列表
  47. */
  48. export const structureList = () => {
  49. return new Promise<void>((resolve, reject) => {
  50. defHttp.post({ url: Api.GetChildDepartment }).then((res) => {
  51. var a = tool.structureTree([res.datas]);
  52. console.log(a)
  53. resolve(a)
  54. })
  55. })
  56. };
  57. /**
  58. * @description: Get user menu based on id
  59. */
  60. export const getMenuList = (args?: number) => {
  61. // const userStore = useUserStore();
  62. // let url = Api.GetMenuList;
  63. // try {
  64. // if (userStore.getRoleList.find((v) => v == RoleEnum.SYS_ADMIN)) {
  65. // url = Api.SysAdminMenuList;
  66. // }
  67. // return new Promise<void>((resolve, reject) => {
  68. // resolve(menu)
  69. // })
  70. // } catch (e) { }
  71. try {
  72. return new Promise<void>((resolve, reject) => {
  73. return defHttp.post<getMenuListResultModel>({
  74. url: Api.GetMenuTreeData,
  75. }).then(r => {
  76. session.setItem("menu_get_ids", menu_get_ids.concat(r.datas.map(i => i.id)))
  77. var o = buildTree(r.datas)
  78. resolve(o)
  79. });
  80. })
  81. } catch (e) {
  82. };
  83. };
  84. /**
  85. * @description: 获取新菜单列表
  86. */
  87. function buildTree(nodes, parentId = null) {
  88. let tree = [];
  89. for (let node of nodes) {
  90. if (node.parentid === parentId) {
  91. node.meta = JSON.parse(node.meta)
  92. node.children = buildTree(nodes, node.id);
  93. tree.push(node);
  94. }
  95. }
  96. return tree;
  97. }
  98. export const menuList = (args?: number) => {
  99. try {
  100. return new Promise<void>((resolve, reject) => {
  101. return defHttp.post<getMenuListResultModel>({
  102. url: Api.GetMenuTreeData,
  103. }).then(r => {
  104. session.setItem("menu_get_ids", menu_get_ids.concat(r.datas.map(i => i.id)))
  105. var o = buildTree(r.datas)
  106. resolve(o)
  107. });
  108. })
  109. } catch (e) {
  110. };
  111. }
  112. /**
  113. * @description: Get user menu based on id
  114. */
  115. export const getMenuList2 = (args?: number) => {
  116. const userStore = useUserStore();
  117. let url = Api.GetMenuList;
  118. try {
  119. if (userStore.getRoleList.find((v) => v == RoleEnum.SYS_ADMIN)) {
  120. url = Api.SysAdminMenuList;
  121. }
  122. return defHttp.get<getMenuListResultModel>({
  123. url,
  124. params: {
  125. needButton: args == 1 ? false : null,
  126. },
  127. });
  128. } catch (e) { }
  129. };
  130. /**
  131. * @description: 按钮的单个删除和数组删除
  132. */
  133. export const delMenu = (menuIds: string[]) => {
  134. return defHttp.post({ url: Api.DeleteMenuDataList, data: menuIds.map(i => { return { id: i } }) });
  135. };
  136. export const getMenusIdsByRoleId = (roleId: string) => {
  137. const url = Api.GetMenuIdsByRoleId + roleId;
  138. // return defHttp.get<Array<string>>({ url });
  139. return new Promise<void>((resolve, reject) => {
  140. // resolve(menu_get_ids);
  141. resolve(session.getItem("menu_get_ids"))
  142. })
  143. };