enterprise.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import { defineStore } from 'pinia'
  2. import { ref, defineAsyncComponent } from 'vue'
  3. import { getPermissionInfo } from '@/api/recruit/enterprise/system/role'
  4. import { cloneDeep } from 'lodash'
  5. export const useEnterpriseStore = defineStore('enterpriseStore',
  6. () => {
  7. const enterpriseMenu = ref([])
  8. const saveEnterpriseMenu = (menu) => {
  9. enterpriseMenu.value = menu
  10. }
  11. const getEnterpriseMenu = () => {
  12. return new Promise((resolve, reject) => {
  13. getPermissionInfo().then(data => {
  14. resolve(data)
  15. }).catch(reject)
  16. })
  17. }
  18. const clearEnterpriseMenu = () => {
  19. enterpriseMenu.value = []
  20. }
  21. const MENU_TYPE = {
  22. CATALOGUE: 1,
  23. MENU: 2,
  24. BUTTON: 3
  25. }
  26. // 动态加载路由函数
  27. const assignEnterpriseMenu = (menuTree) => {
  28. const modules = import.meta.glob('../views/recruit/enterprise/**/*.{vue,tsx}')
  29. const modulesRoutesKeys = Object.keys(modules)
  30. const formatRoutes = (menu) => {
  31. return menu.map(item => {
  32. const data = JSON.parse(JSON.stringify(item))
  33. Object.assign(data, {
  34. meta: {
  35. title: item.name,
  36. icon: item.icon,
  37. loginType: 'enterprise'
  38. }
  39. })
  40. if (item.type === MENU_TYPE.CATALOGUE) {
  41. data.component = () => import('@/layout/enterprise.vue')
  42. }
  43. if (item.type === MENU_TYPE.MENU) {
  44. const index = modulesRoutesKeys.findIndex((ev) => ev.includes(data.component))
  45. if (index > -1) {
  46. data.component = modules[modulesRoutesKeys[index]]
  47. data.path = `/${item.path}`
  48. }
  49. }
  50. // 如果有子菜单,递归调用
  51. if (item.children && Array.isArray(item.children) && item.children.length) {
  52. data.children = formatRoutes(item.children)
  53. }
  54. return data
  55. })
  56. }
  57. return formatRoutes(menuTree)
  58. }
  59. return {
  60. enterpriseMenu,
  61. assignEnterpriseMenu,
  62. clearEnterpriseMenu,
  63. saveEnterpriseMenu,
  64. getEnterpriseMenu
  65. }
  66. },
  67. {
  68. persist: true
  69. })