1404/11/04- first

This commit is contained in:
2026-01-24 17:45:54 +03:30
commit edf1824229
554 changed files with 59581 additions and 0 deletions
+90
View File
@@ -0,0 +1,90 @@
//import { routes } from '@/core/router/routes'
//import router from '@/core/router/index'
import { useRouterStore } from '@core/stores/router'
import type { Router, RouteRecordRaw } from 'vue-router'
//const _router = useRouter()
//import { cloneDeep } from 'lodash'
export function setupRoutes(permissionsKeys: string[], router?: Router) {
//console.log('this is permission', permissionsKeys)
//console.log('this is use router', _router)
console.log('salammm')
const routerStore = useRouterStore()
const modules = import.meta.glob<any>('./routes/*.ts', { eager: true })
console.log(modules)
function walkInRoutes(routes: RouteRecordRaw) {
if (!routes.children) return
routes.children = routes?.children?.filter(
(item) =>
!item.meta?.permissionsKey ||
(item.meta?.permissionsKey && permissionsKeys.includes(item.meta?.permissionsKey))
)
for (const route of routes.children) {
/*if (!route.children || (route.children && route.children.length == 0)) {
//path.push(route.name)
//return
continue
}*/
/*if (routes.children) {
}*/
walkInRoutes(route)
/*if (route.children && route.children.length > 0) {
path.push(route.name)
const res = walkInRoutes(route.children)
if (!res) {
path.pop()
} else {
return true
}
}*/
}
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
}
},
]
for (const modulesKey in modules) {
// console.log(modulesKey)
const route: RouteRecordRaw | undefined = modules[modulesKey].default ?? undefined
if (route) {
if (permissionsKeys.length && permissionsKeys[0] == '*') {
routerStore.routes.push(route)
if (router) {
router.addRoute(route)
}
} else {
if (
!route?.meta?.permissionsKey ||
(route.meta.permissionsKey && permissionsKeys.includes(route.meta.permissionsKey))
) {
walkInRoutes(route)
routerStore.routes.push(route)
if (router) {
router.addRoute(route)
}
}
}
}
}
// console.log(router)
//console.log('this is store', routerStore.routes)
/* if (router) {
console.log('this is router routes', router.getRoutes())
}*/
}
+35
View File
@@ -0,0 +1,35 @@
import type { RouteRecordRaw } from 'vue-router'
const Orders: RouteRecordRaw = {
name: 'accounting',
path: '/accounting',
component: () => import('@core/layouts/BasicLayout.vue'),
redirect: { name: 'accountingMain' },
meta: {
icon: 'vuesax-linear:calculator',
permissionsKey: 'accounting',
title: 'حسابداری',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 7
},
children: [
{
name: 'accountingMain',
path: '',
component: () => import('@/pages/menuPages/accounting/index.vue'),
meta: {
permissionsKey: 'project',
icon: 'vuesax-linear:empty-wallet-time',
order: 3,
title: 'حسابداری',
disabled: false,
hideMenu: false
//hideChildren: false
}
}
]
}
export default Orders
+31
View File
@@ -0,0 +1,31 @@
import type { RouteRecordRaw } from 'vue-router'
const balance: RouteRecordRaw = {
name: 'balance',
path: '/balance',
redirect: { name: 'balance' },
meta: {
icon: 'vuesax-linear:cards',
title: 'تراز',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 20
},
children: [
{
name: 'balanceMain',
path: '',
component: () => import('@/pages/balance/index.vue'),
meta: {
icon: 'vuesax-linear:money-send',
order: 30,
title: 'تراز',
disabled: false,
hideMenu: false
}
}
]
}
export default balance
+35
View File
@@ -0,0 +1,35 @@
import type { RouteRecordRaw } from 'vue-router'
const Withdraw: RouteRecordRaw = {
name: 'accounts',
path: '/accounts',
component: () => import('@core/layouts/BasicLayout.vue'),
redirect: { name: 'accountsMain' },
meta: {
icon: 'vuesax-linear:cards',
// permissionsKey: 'orders',
title: 'حساب ها',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 6
},
children: [
{
name: 'accountsMain',
path: '',
component: () => import('@/pages/menuPages/cards/index.vue'),
meta: {
// permissionsKey: 'project',
icon: 'vuesax-linear:money-send',
order: 3,
title: 'حساب ها',
disabled: false,
hideMenu: false
//hideChildren: false
}
}
]
}
export default Withdraw
+115
View File
@@ -0,0 +1,115 @@
import type { RouteRecordRaw } from 'vue-router'
const Customers: RouteRecordRaw = {
name: 'customers',
path: '/customers',
component: () => import('@core/layouts/BasicLayout.vue'),
redirect: { name: 'customerMain_limitedOrder' },
meta: {
icon: 'vuesax-linear:people',
// permissionsKey: 'project',
title: 'مشتریان',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 2
},
children: [
{
name: 'customersMain',
path: '',
component: () => import('@/pages/menuPages/customers/index.vue'),
meta: {
// permissionsKey: 'config',
icon: 'vuesax-linear:people',
title: 'مشتریان',
disabled: false,
hideMenu: true
//hideChildren: false
},
children: [
{
name: 'customerMain_limitedOrder',
path: 'list',
component: () => import('@/pages/menuPages/customers/base/index.vue'),
meta: {
// permissionsKey: 'config.limitedOrder',
icon: 'vuesax-linear:people',
title: 'لیست مشتریان'
}
},
{
name: 'customerMain_archive',
path: 'archive',
component: () => import('@/pages/menuPages/customers/archive/index.vue'),
meta: {
// permissionsKey: 'user',
icon: 'vuesax-linear:save-2',
title: 'بایگانی'
}
}
]
}
]
}
export default Customers
/*
import type {RouteRecordRaw} from 'vue-router'
const Customers: RouteRecordRaw = {
name: 'customers',
path: '/customers',
component: () => import('@core/layouts/BasicLayout.vue'),
redirect: {name: 'customersMain'},
meta: {
icon: 'vuesax-linear:people',
// permissionsKey: 'config',
title: 'مشتریان عمده',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 3,
children: [
{
name: 'settingMain',
path: '',
component: () => import('@/pages/menuPages/setting/index.vue'),
meta: {
permissionsKey: 'config',
icon: 'vuesax-linear:setting',
order: 5,
title: 'پیکربندی',
disabled: false,
hideMenu: true
//hideChildren: false
},
children: [
{
name: 'settingMain_limitedOrder',
path: 'limitedOrder',
component: () => import('@/pages/menuPages/setting/limitedOrder/index.vue'),
meta: {
permissionsKey: 'config.limitedOrder',
icon: 'vuesax-linear:document-text',
title: 'محدودیت سفارش'
}
},
{
name: 'usersMain',
path: 'admins',
component: () => import('@/pages/menuPages/users/index.vue'),
meta: {
permissionsKey: 'user',
icon: 'vuesax-linear:profile',
title: 'لیست مدیران'
}
}
]
}
]
}
export default Customers
*/
+33
View File
@@ -0,0 +1,33 @@
import type { RouteRecordRaw } from 'vue-router'
const Dashboard: RouteRecordRaw = {
name: 'dashboard',
path: '/dashboard',
component: () => import('@core/layouts/BasicLayout.vue'),
redirect: { name: 'dashboardMain' },
meta: {
icon: 'vuesax-linear:home-2',
title: 'میز کار',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 1
},
children: [
{
name: 'dashboardMain',
path: '',
component: () => import('@/pages/dashboard/index.vue'),
meta: {
icon: 'vuesax-linear:home-2',
order: 1,
title: 'میز کار',
disabled: false,
hideMenu: true
//hideChildren: false
}
}
]
}
export default Dashboard
+18
View File
@@ -0,0 +1,18 @@
import type { RouteRecordRaw } from 'vue-router'
const Login: RouteRecordRaw = {
name: 'login',
path: '/login',
component: () => import('@/pages/login/index.vue'),
//redirect: { name: 'projectsMain' },
meta: {
icon: 'vuesax-linear:bill',
//title: 'پروژه ها',
//disabled: false,
hideMenu: true,
hideChildren: true,
order: 3
}
}
export default Login
+15
View File
@@ -0,0 +1,15 @@
import type { RouteRecordRaw } from 'vue-router'
const main: RouteRecordRaw = {
name: 'main',
path: '/',
component: () => import('@/pages/main/index.vue'),
redirect: { name: 'dashboard' },
children: [],
meta: {
order: 2,
hideMenu: true
}
}
export default main
+33
View File
@@ -0,0 +1,33 @@
import type { RouteRecordRaw } from 'vue-router'
const Dashboard: RouteRecordRaw = {
name: 'Mobile',
path: '/mobile',
component: () => import('@/pages/mobileMenu'),
redirect: { name: 'customerMobile' },
meta: {
icon: 'vuesax-linear:home-2',
title: 'میز کار',
disabled: false,
hideMenu: true,
hideChildren: true,
order: 1
},
children: [
{
name: 'customerMobile',
path: '',
component: () => import('@/pages/menuPages/customers/mobile/index.vue'),
meta: {
icon: 'vuesax-linear:home-2',
order: 1,
title: 'مشتریان',
disabled: false,
hideMenu: true
//hideChildren: false
}
}
]
}
export default Dashboard
+35
View File
@@ -0,0 +1,35 @@
import type { RouteRecordRaw } from 'vue-router'
const Orders: RouteRecordRaw = {
name: 'orders',
path: '/orders',
component: () => import('@core/layouts/BasicLayout.vue'),
redirect: { name: 'ordersMain' },
meta: {
icon: 'vuesax-linear:empty-wallet-time',
permissionsKey: 'orders',
title: 'سفارشات',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 7
},
children: [
{
name: 'ordersMain',
path: '',
component: () => import('@/pages/menuPages/orders/index.vue'),
meta: {
permissionsKey: 'project',
icon: 'vuesax-linear:empty-wallet-time',
order: 3,
title: 'سفارشات',
disabled: false,
hideMenu: false
//hideChildren: false
}
}
]
}
export default Orders
+35
View File
@@ -0,0 +1,35 @@
import type { RouteRecordRaw } from 'vue-router'
const Orders: RouteRecordRaw = {
name: 'pricing',
path: '/pricing',
component: () => import('@core/layouts/BasicLayout.vue'),
redirect: { name: 'pricingMain' },
meta: {
icon: 'vuesax-linear:dollar-circle',
permissionsKey: 'pricing',
title: 'قیمت گذاری',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 9
},
children: [
{
name: 'pricingMain',
path: '',
component: () => import('@/pages/menuPages/pricing/index.vue'),
meta: {
permissionsKey: 'pricing',
icon: 'vuesax-linear:setting',
order: 3,
title: 'قیمت گذاری',
disabled: false,
hideMenu: false
//hideChildren: false
}
}
]
}
export default Orders
+57
View File
@@ -0,0 +1,57 @@
import type { RouteRecordRaw } from 'vue-router'
const Products: RouteRecordRaw = {
name: 'products',
path: '/products',
component: () => import('@core/layouts/BasicLayout.vue'),
redirect: { name: 'productsMain_limitedOrder' },
meta: {
icon: 'vuesax-linear:box',
// permissionsKey: 'project',
title: 'محصولات',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 3
},
children: [
{
name: 'productsMain',
path: '',
component: () => import('@/pages/menuPages/products/index.vue'),
meta: {
// permissionsKey: 'config',
icon: 'vuesax-linear:box',
title: 'محصولات',
disabled: false,
hideMenu: true
//hideChildren: false
},
children: [
{
name: 'productsMain_limitedOrder',
path: 'list',
component: () => import('@/pages/menuPages/products/base/index.vue'),
meta: {
// permissionsKey: 'config.limitedOrder',
icon: 'vuesax-linear:box',
title: 'لیست محصولات'
}
},
{
name: 'productsMain_archive',
path: 'archive',
component: () => import('@/pages/menuPages/products/archive/index.vue'),
meta: {
// permissionsKey: 'user',
icon: 'vuesax-linear:save-2',
title: 'بایگانی'
}
}
]
}
]
}
export default Products
+69
View File
@@ -0,0 +1,69 @@
import type { RouteRecordRaw } from 'vue-router'
const Setting: RouteRecordRaw = {
name: 'settings',
path: '/settings',
component: () => import('@core/layouts/BasicLayout.vue'),
redirect: { name: 'settingMain' },
meta: {
icon: 'vuesax-linear:setting',
permissionsKey: 'config',
title: 'پیکربندی',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 10
},
children: [
{
name: 'settingMain',
path: '',
component: () => import('@/pages/menuPages/setting/index.vue'),
meta: {
permissionsKey: 'config',
icon: 'vuesax-linear:setting',
order: 5,
title: 'پیکربندی',
disabled: false,
hideMenu: true
//hideChildren: false
},
children: [
{
name: 'settingMain_limitedOrder',
path: 'limitedOrder',
component: () => import('@/pages/menuPages/setting/limitedOrder/index.vue'),
meta: {
permissionsKey: 'config.limitedOrder',
icon: 'vuesax-linear:document-text',
title: '' +
'' +
'محدودیت سفارش'
}
},
{
name: 'usersMain',
path: 'admins',
component: () => import('@/pages/menuPages/users/index.vue'),
meta: {
permissionsKey: 'user',
icon: 'vuesax-linear:profile',
title: 'لیست مدیران'
}
},
{
name: 'priceTriggers',
path: 'priceTriggers',
component: () => import('@/pages/menuPages/priceTriggers/index.vue'),
meta: {
permissionsKey: 'priceTriggers',
icon: 'vuesax-linear:notification-bing',
title: 'هشدار قیمت'
}
}
]
}
]
}
export default Setting
+117
View File
@@ -0,0 +1,117 @@
/*
import type { RouteRecordRaw } from 'vue-router'
const Customers: RouteRecordRaw = {
name: 'singles',
path: '/singles',
component: () => import('@core/layouts/BasicLayout.vue'),
redirect: { name: 'singleMain_limitedOrder' },
meta: {
icon: 'vuesax-linear:people',
// permissionsKey: 'project',
title: 'مشتریان تک',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 3
},
children: [
{
name: 'singlesMain',
path: '',
component: () => import('@/pages/menuPages/singles/index.vue'),
meta: {
// permissionsKey: 'config',
icon: 'vuesax-linear:people',
title: 'مشتریان تک',
disabled: false,
hideMenu: true
//hideChildren: false
},
children: [
{
name: 'singleMain_limitedOrder',
path: 'list',
component: () => import('@/pages/menuPages/singles/base/index.vue'),
meta: {
// permissionsKey: 'config.limitedOrder',
icon: 'vuesax-linear:people',
title: 'لیست مشتریان'
}
},
{
name: 'singleMain_archive',
path: 'archive',
component: () => import('@/pages/menuPages/singles/archive/index.vue'),
meta: {
// permissionsKey: 'user',
icon: 'vuesax-linear:save-2',
title: 'بایگانی'
}
}
]
}
]
}
export default Customers
/!*
import type {RouteRecordRaw} from 'vue-router'
const Customers: RouteRecordRaw = {
name: 'customers',
path: '/customers',
component: () => import('@core/layouts/BasicLayout.vue'),
redirect: {name: 'customersMain'},
meta: {
icon: 'vuesax-linear:people',
// permissionsKey: 'config',
title: 'مشتریان عمده',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 3,
children: [
{
name: 'settingMain',
path: '',
component: () => import('@/pages/menuPages/setting/index.vue'),
meta: {
permissionsKey: 'config',
icon: 'vuesax-linear:setting',
order: 5,
title: 'پیکربندی',
disabled: false,
hideMenu: true
//hideChildren: false
},
children: [
{
name: 'settingMain_limitedOrder',
path: 'limitedOrder',
component: () => import('@/pages/menuPages/setting/limitedOrder/index.vue'),
meta: {
permissionsKey: 'config.limitedOrder',
icon: 'vuesax-linear:document-text',
title: 'محدودیت سفارش'
}
},
{
name: 'usersMain',
path: 'admins',
component: () => import('@/pages/menuPages/users/index.vue'),
meta: {
permissionsKey: 'user',
icon: 'vuesax-linear:profile',
title: 'لیست مدیران'
}
}
]
}
]
}
export default Customers
*!/
*/
+35
View File
@@ -0,0 +1,35 @@
import type { RouteRecordRaw } from 'vue-router'
const Orders: RouteRecordRaw = {
name: 'sms',
path: '/sms',
component: () => import('@core/layouts/BasicLayout.vue'),
redirect: { name: 'smsMain' },
meta: {
icon: 'vuesax-linear:sms',
permissionsKey: 'sms',
title: 'پیامک ها',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 9
},
children: [
{
name: 'smsMain',
path: '',
component: () => import('@/pages/menuPages/sms/index.vue'),
meta: {
permissionsKey: 'sms',
icon: 'vuesax-linear:setting',
order: 3,
title: 'پیامک ها',
disabled: false,
hideMenu: false
//hideChildren: false
}
}
]
}
export default Orders
+35
View File
@@ -0,0 +1,35 @@
import type { RouteRecordRaw } from 'vue-router'
const Transactions: RouteRecordRaw = {
name: 'transactions',
path: '/transactions',
component: () => import('@core/layouts/BasicLayout.vue'),
redirect: { name: 'transactionsMain' },
meta: {
icon: 'vuesax-linear:empty-wallet-change',
// permissionsKey: 'project',
title: 'گزارشات',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 5
},
children: [
{
name: 'transactionsMain',
path: '',
component: () => import('@/pages/menuPages/transactions/index.vue'),
meta: {
// permissionsKey: 'wallet',
icon: 'vuesax-linear:wallet',
order: 3,
title: 'پروژه ها',
disabled: false,
hideMenu: false
//hideChildren: false
}
}
]
}
export default Transactions
+35
View File
@@ -0,0 +1,35 @@
import type { RouteRecordRaw } from 'vue-router'
const Wallet: RouteRecordRaw = {
name: 'wallet',
path: '/wallet',
component: () => import('@core/layouts/BasicLayout.vue'),
redirect: { name: 'walletMain' },
meta: {
icon: 'vuesax-linear:wallet',
// permissionsKey: 'project',
title: 'کیف پول',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 4
},
children: [
{
name: 'walletMain',
path: '',
component: () => import('@/pages/menuPages/wallet/index.vue'),
meta: {
// permissionsKey: 'wallet',
icon: 'vuesax-linear:wallet',
order: 3,
title: 'پروژه ها',
disabled: false,
hideMenu: false
//hideChildren: false
}
}
]
}
export default Wallet
+35
View File
@@ -0,0 +1,35 @@
import type { RouteRecordRaw } from 'vue-router'
const Withdraw: RouteRecordRaw = {
name: 'withdraw',
path: '/withdraw',
component: () => import('@core/layouts/BasicLayout.vue'),
redirect: { name: 'withdrawMain' },
meta: {
icon: 'vuesax-linear:money-change',
// permissionsKey: 'orders',
title: 'برداشت و واریز',
disabled: false,
hideMenu: false,
hideChildren: true,
order: 8
},
children: [
{
name: 'withdrawMain',
path: '',
component: () => import('@/pages/menuPages/withdraw/index.vue'),
meta: {
// permissionsKey: 'project',
icon: 'vuesax-linear:money-change',
order: 3,
title: 'برداشت و واریز',
disabled: false,
hideMenu: false
//hideChildren: false
}
}
]
}
export default Withdraw