menu.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { queryNewFuncmenu } from '@/services/api/common'
  2. import { queryAccountMenu } from '@/services/api/account'
  3. import { createStore } from '../base'
  4. import { sessionData } from '../storage'
  5. export const menuStore = createStore({
  6. state() {
  7. return {
  8. loading: false,
  9. userRoutes: sessionData.getRef('userRoutes'),
  10. }
  11. },
  12. actions: {
  13. /** 获取用户菜单列表 */
  14. getUserMenuList() {
  15. this.state.loading = true
  16. return queryAccountMenu({
  17. success: (res) => {
  18. this.state.userRoutes = res.data
  19. },
  20. complete: () => {
  21. this.state.loading = false
  22. }
  23. })
  24. return queryNewFuncmenu({
  25. data: {
  26. menutype: '5',
  27. },
  28. success: (res) => {
  29. // 扁平列表树形化
  30. const arrayToTree = (list: Ermcp.NewFuncmenuRsp[], code: null | string = null) => {
  31. const getChildren = (parent: null | string) => {
  32. const result: Ermcp.UserRoutes[] = []
  33. list.forEach((e) => {
  34. if (e.parentcode === parent) {
  35. const item = {
  36. id: 0,
  37. authType: e.authtype,
  38. title: e.resourcename,
  39. code: e.resourcecode,
  40. urlType: e.urltype,
  41. url: e.url || '',
  42. component: e.component,
  43. icon: e.iconame,
  44. buttonName: e.buttonname,
  45. buttonType: e.buttontype,
  46. className: '',
  47. sort: e.sort,
  48. hidden: Boolean(e.hidden),
  49. remark: e.remark,
  50. children: getChildren(e.resourcecode),
  51. }
  52. result.push(item)
  53. }
  54. })
  55. return result
  56. }
  57. return getChildren(code)
  58. }
  59. this.state.userRoutes = arrayToTree(res.data)
  60. },
  61. complete: () => {
  62. this.state.loading = false
  63. }
  64. })
  65. },
  66. /** 重置数据 */
  67. reset() {
  68. this.state.userRoutes = []
  69. }
  70. }
  71. })