1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- import { defineStore } from 'pinia'
- import { ref, defineAsyncComponent } from 'vue'
- import { getPermissionInfo } from '@/api/recruit/enterprise/system/role'
- import { cloneDeep } from 'lodash'
- export const useEnterpriseStore = defineStore('enterpriseStore',
- () => {
- const enterpriseMenu = ref([])
-
- const saveEnterpriseMenu = (menu) => {
- enterpriseMenu.value = menu
- }
- const getEnterpriseMenu = () => {
- return new Promise((resolve, reject) => {
- getPermissionInfo().then(data => {
- resolve(data)
- }).catch(reject)
- })
- }
- const clearEnterpriseMenu = () => {
- enterpriseMenu.value = []
- }
- const MENU_TYPE = {
- CATALOGUE: 1,
- MENU: 2,
- BUTTON: 3
- }
- // 动态加载路由函数
- const assignEnterpriseMenu = (menuTree) => {
- const modules = import.meta.glob('../views/recruit/enterprise/**/*.{vue,tsx}')
- const modulesRoutesKeys = Object.keys(modules)
- const formatRoutes = (menu) => {
- return menu.map(item => {
- const data = JSON.parse(JSON.stringify(item))
- Object.assign(data, {
- meta: {
- title: item.name,
- icon: item.icon,
- loginType: 'enterprise'
- }
- })
-
- if (item.type === MENU_TYPE.CATALOGUE) {
- data.component = () => import('@/layout/enterprise.vue')
- }
-
- if (item.type === MENU_TYPE.MENU) {
- const index = modulesRoutesKeys.findIndex((ev) => ev.includes(data.component))
- if (index > -1) {
- data.component = modules[modulesRoutesKeys[index]]
- data.path = `/${item.path}`
- }
- }
- // 如果有子菜单,递归调用
- if (item.children && Array.isArray(item.children) && item.children.length) {
- data.children = formatRoutes(item.children)
- }
- return data
- })
- }
- return formatRoutes(menuTree)
- }
- return {
- enterpriseMenu,
- assignEnterpriseMenu,
- clearEnterpriseMenu,
- saveEnterpriseMenu,
- getEnterpriseMenu
- }
- },
- {
- persist: true
- })
|