fix chart

This commit is contained in:
2026-06-21 20:27:13 +03:30
parent bbca1c8991
commit 5586985d1e
21 changed files with 1727 additions and 1147 deletions
+79 -50
View File
@@ -3,6 +3,7 @@
import { useRouterStore } from '@core/stores/router'
import type { Router, RouteRecordRaw } from 'vue-router'
import { getConfigApp, isStoreApp } from '@/utils/config'
import { isDeployAdmin } from '@/utils/deployAdmin'
import { cloneDeep } from 'lodash'
//const _router = useRouter()
//import { cloneDeep } from 'lodash'
@@ -45,38 +46,84 @@ function filterRoutesByApp(routes: RouteRecordRaw, appName: string | null) {
routes.children.forEach((child) => filterRoutesByApp(child, appName))
}
/** بعد از تغییر is_store — منو را از روت‌های تازه (clone) دوباره می‌سازد */
export function refreshAppModeMenu() {
const routerStore = useRouterStore()
/** زیرمنوی تنظیمات پیشرفته — فقط برای ادمین دیپلoyi */
function filterDeployAdminRoutes(route: RouteRecordRaw, mobile?: string | number | null) {
if (!route.children?.length) return
route.children = route.children.filter((child) => {
if (!child.meta?.deployAdminOnly) return true
return isDeployAdmin(mobile)
})
route.children.forEach((child) => filterDeployAdminRoutes(child, mobile))
}
const notFoundRoute: RouteRecordRaw = {
path: '/:pathMatch(.*)*',
name: 'notFound',
component: () => import('@/core/pages/404.vue'),
meta: {
hideMenu: true
}
}
function basePreservedRoutes(): RouteRecordRaw[] {
return [
{
name: 'factor',
path: '/withdraw/factor/:id',
component: () => import('@/pages/menuPages/withdraw/factor/index.vue'),
meta: {
permissionsKey: 'factor',
hideMenu: true
}
}
]
}
/** notFound باید آخر لیست باشد وگرنه /dashboard و بقیه مسیرها 404 می‌شوند */
function composeRoutes(dynamicRoutes: RouteRecordRaw[]): RouteRecordRaw[] {
return [...basePreservedRoutes(), ...dynamicRoutes, notFoundRoute]
}
function prepareRoute(route: RouteRecordRaw, appName: string | null, mobile?: string | number | null) {
applyAppModeMeta(route, appName)
filterRoutesByApp(route, appName)
filterDeployAdminRoutes(route, mobile)
}
function loadDynamicRoutes(appName: string | null, mobile?: string | number | null): RouteRecordRaw[] {
const modules = import.meta.glob<any>('./routes/*.ts', { eager: true })
const appName = getConfigApp('name')
const preserved = routerStore.routes.filter(
(route) => route.name === 'notFound' || route.name === 'factor'
)
const dynamicRoutes: RouteRecordRaw[] = []
for (const modulesKey in modules) {
const sourceRoute: RouteRecordRaw | undefined = modules[modulesKey].default ?? undefined
if (!sourceRoute) continue
if (sourceRoute.meta?.deployAdminOnly) continue
const route = cloneDeep(sourceRoute)
applyAppModeMeta(route, appName)
filterRoutesByApp(route, appName)
prepareRoute(route, appName, mobile)
dynamicRoutes.push(route)
}
routerStore.routes = [...preserved, ...dynamicRoutes]
return dynamicRoutes
}
export function setupRoutes(permissionsKeys: string[], router?: Router) {
//console.log('this is permission', permissionsKeys)
//console.log('this is use router', _router)
console.log('salammm')
/** بعد از تغییر is_store — منو را از روت‌های تازه (clone) دوباره می‌سازد */
export function refreshAppModeMenu(mobile?: string | number | null) {
const routerStore = useRouterStore()
const modules = import.meta.glob<any>('./routes/*.ts', { eager: true })
console.log(modules)
const appName = getConfigApp('name')
routerStore.routes = composeRoutes(loadDynamicRoutes(appName, mobile))
}
export function setupRoutes(
permissionsKeys: string[],
router?: Router,
userMobile?: string | number | null
) {
const routerStore = useRouterStore()
const appName = getConfigApp('name')
const modules = import.meta.glob<any>('./routes/*.ts', { eager: true })
function walkInRoutes(routes: RouteRecordRaw) {
if (!routes.children) return
@@ -88,54 +135,36 @@ export function setupRoutes(permissionsKeys: string[], router?: Router) {
for (const route of routes.children) {
walkInRoutes(route)
}
return
}
routerStore.routes = [
{
path: '/:pathMatch(.*)*',
name: 'notFound',
component: () => import('@/core/pages/404.vue'),
meta: {
hideMenu: true
}
},
{
name: 'factor',
path: '/withdraw/factor/:id',
component: () => import('@/pages/menuPages/withdraw/factor/index.vue'),
meta: {
permissionsKey: 'factor',
hideMenu: true
}
},
]
const dynamicRoutes: RouteRecordRaw[] = []
for (const modulesKey in modules) {
const sourceRoute: RouteRecordRaw | undefined = modules[modulesKey].default ?? undefined
if (!sourceRoute) continue
if (sourceRoute.meta?.deployAdminOnly) continue
const route = cloneDeep(sourceRoute)
if (permissionsKeys.length && permissionsKeys[0] == '*') {
applyAppModeMeta(route, appName)
filterRoutesByApp(route, appName)
routerStore.routes.push(route)
if (router) {
router.addRoute(route)
}
prepareRoute(route, appName, userMobile)
dynamicRoutes.push(route)
} else {
if (
!route?.meta?.permissionsKey ||
(route.meta.permissionsKey && permissionsKeys.includes(route.meta.permissionsKey))
) {
walkInRoutes(route)
applyAppModeMeta(route, appName)
filterRoutesByApp(route, appName)
routerStore.routes.push(route)
if (router) {
router.addRoute(route)
}
prepareRoute(route, appName, userMobile)
dynamicRoutes.push(route)
}
}
}
routerStore.routes = composeRoutes(dynamicRoutes)
if (router) {
for (const route of dynamicRoutes) {
router.addRoute(route)
}
router.addRoute(notFoundRoute)
}
}