463 lines
13 KiB
JavaScript
463 lines
13 KiB
JavaScript
import { activityLogsRoute } from 'src/modules/activityLogs'
|
|
|
|
// src/router/routes.js
|
|
|
|
const routes = [
|
|
|
|
/* ==========================================================
|
|
🌍 ROOT
|
|
========================================================== */
|
|
{
|
|
path: '/',
|
|
redirect: '/login'
|
|
},
|
|
|
|
|
|
/* ==========================================================
|
|
🔐 PUBLIC
|
|
========================================================== */
|
|
{
|
|
path: '/login',
|
|
component: () => import('layouts/EmptyLayout.vue'),
|
|
meta: { public: true },
|
|
children: [
|
|
{
|
|
path: '',
|
|
name: 'login',
|
|
component: () => import('pages/MainPage.vue')
|
|
}
|
|
]
|
|
},
|
|
|
|
{
|
|
path: '/first-password-change',
|
|
component: () => import('layouts/EmptyLayout.vue'),
|
|
meta: { public: true },
|
|
children: [
|
|
{
|
|
path: '',
|
|
name: 'first-password-change',
|
|
component: () => import('pages/FirstPasswordChange.vue')
|
|
}
|
|
]
|
|
},
|
|
|
|
{
|
|
path: '/password-reset/:token',
|
|
component: () => import('layouts/EmptyLayout.vue'),
|
|
meta: { public: true },
|
|
children: [
|
|
{
|
|
path: '',
|
|
name: 'password-reset',
|
|
component: () => import('pages/ResetPassword.vue')
|
|
}
|
|
]
|
|
},
|
|
|
|
/* ==========================================================
|
|
🚫 UNAUTHORIZED
|
|
========================================================== */
|
|
{
|
|
path: '/unauthorized',
|
|
component: () => import('layouts/EmptyLayout.vue'),
|
|
children: [
|
|
{
|
|
path: '',
|
|
name: 'unauthorized',
|
|
component: () => import('pages/Unauthorized.vue')
|
|
}
|
|
]
|
|
},
|
|
|
|
|
|
/* ==========================================================
|
|
🏠 MAIN APP
|
|
========================================================== */
|
|
{
|
|
path: '/app',
|
|
component: () => import('layouts/MainLayout.vue'),
|
|
|
|
children: [
|
|
|
|
/* ================= DASHBOARD ================= */
|
|
|
|
{
|
|
path: '',
|
|
name: 'dashboard',
|
|
component: () => import('pages/Dashboard.vue'),
|
|
meta: {}
|
|
},
|
|
|
|
|
|
/* ================= PERMISSIONS ================= */
|
|
|
|
{
|
|
path: 'permissions',
|
|
name: 'permissions',
|
|
component: () => import('pages/PermissionMatrix.vue'),
|
|
meta: { permission: 'system:read' }
|
|
},
|
|
|
|
{
|
|
path: 'role-dept-permissions',
|
|
name: 'role-dept-permissions',
|
|
component: () => import('pages/RoleDepartmentPermissionGateway.vue'),
|
|
meta: { permission: 'system:update' }
|
|
},
|
|
|
|
{
|
|
path: 'role-dept-permissions/list',
|
|
name: 'role-dept-permissions-list',
|
|
component: () => import('pages/RoleDepartmentPermissionList.vue'),
|
|
meta: { permission: 'system:update' }
|
|
},
|
|
|
|
{
|
|
path: 'role-dept-permissions/editor',
|
|
name: 'role-dept-permissions-editor',
|
|
component: () => import('pages/RoleDepartmentPermissionPage.vue'),
|
|
meta: { permission: 'system:update' }
|
|
},
|
|
|
|
{
|
|
path: 'user-permissions',
|
|
name: 'user-permissions',
|
|
component: () => import('pages/UserPermissionPage.vue'),
|
|
meta: { permission: 'system:update' }
|
|
},
|
|
|
|
/* ================= ACTIVITY LOGS ================= */
|
|
|
|
activityLogsRoute,
|
|
|
|
|
|
/* ================= FINANCE ================= */
|
|
|
|
{
|
|
path: 'statementofaccount',
|
|
name: 'statementofaccount',
|
|
component: () => import('pages/statementofaccount.vue'),
|
|
meta: { permission: 'finance:view' }
|
|
},
|
|
|
|
{
|
|
path: 'statementreport',
|
|
name: 'statementreport',
|
|
component: () => import('pages/StatementReport.vue'),
|
|
meta: { permission: 'finance:view' }
|
|
},
|
|
|
|
{
|
|
path: 'statementheaderreport',
|
|
name: 'statementheaderreport',
|
|
component: () => import('pages/StatementHeaderReport.vue'),
|
|
meta: { permission: 'finance:view' }
|
|
},
|
|
|
|
{
|
|
path: 'customer-balance-list',
|
|
name: 'customer-balance-list',
|
|
component: () => import('pages/CustomerBalanceList.vue'),
|
|
meta: { permission: 'finance:view' }
|
|
},
|
|
{
|
|
path: 'account-aging-statement',
|
|
name: 'account-aging-statement',
|
|
component: () => import('pages/AccountAgingStatement.vue'),
|
|
meta: { permission: 'finance:view' }
|
|
},
|
|
{
|
|
path: 'aged-customer-balance-list',
|
|
name: 'aged-customer-balance-list',
|
|
component: () => import('pages/AgingCustomerBalancelist.go.vue'),
|
|
meta: { permission: 'finance:view' }
|
|
},
|
|
|
|
|
|
/* ================= USERS ================= */
|
|
|
|
{
|
|
path: 'users',
|
|
name: 'user-gateway',
|
|
component: () => import('pages/UserGateway.vue'),
|
|
meta: { permission: 'user:view' }
|
|
},
|
|
|
|
{
|
|
path: 'users/list',
|
|
name: 'user-list',
|
|
component: () => import('pages/UserList.vue'),
|
|
meta: { permission: 'user:view' }
|
|
},
|
|
|
|
{
|
|
path: 'users/new',
|
|
name: 'user-new',
|
|
component: () => import('pages/UserDetail.vue'),
|
|
meta: {
|
|
mode: 'new',
|
|
permission: 'user:insert'
|
|
}
|
|
},
|
|
|
|
{
|
|
path: 'users/edit/:id',
|
|
name: 'user-edit',
|
|
component: () => import('pages/UserDetail.vue'),
|
|
props: true,
|
|
meta: {
|
|
mode: 'edit',
|
|
permission: 'user:update'
|
|
}
|
|
},
|
|
|
|
{
|
|
path: 'users/view/:id',
|
|
name: 'user-view',
|
|
component: () => import('pages/UserDetail.vue'),
|
|
props: true,
|
|
meta: {
|
|
mode: 'view',
|
|
permission: 'user:view'
|
|
}
|
|
},
|
|
|
|
|
|
/* ================= TEST MAIL ================= */
|
|
|
|
{
|
|
path: 'test-mail',
|
|
name: 'test-mail',
|
|
component: () => import('pages/TestMail.vue'),
|
|
meta: { permission: 'system:update', onlyUserIds: [5] }
|
|
},
|
|
|
|
{
|
|
path: 'market-mail-mapping',
|
|
name: 'market-mail-mapping',
|
|
component: () => import('../pages/MarketMailMapping.vue'),
|
|
meta: { permission: 'system:update' }
|
|
},
|
|
{
|
|
path: 'costing-mail-mapping',
|
|
name: 'costing-mail-mapping',
|
|
component: () => import('../pages/CostingMailMapping.vue'),
|
|
meta: { permission: 'system:update' }
|
|
},
|
|
{
|
|
path: 'pricing-mail-mapping',
|
|
name: 'pricing-mail-mapping',
|
|
component: () => import('../pages/PricingMailMapping.vue'),
|
|
meta: { permission: 'system:update' }
|
|
},
|
|
{
|
|
path: 'language/translations',
|
|
name: 'translation-table',
|
|
component: () => import('pages/TranslationTable.vue'),
|
|
meta: { permission: 'language:update' }
|
|
},
|
|
|
|
|
|
/* ================= ORDERS ================= */
|
|
|
|
{
|
|
path: 'order-gateway',
|
|
name: 'order-gateway',
|
|
component: () => import('pages/OrderGateway.vue'),
|
|
meta: { permission: 'order:view' }
|
|
},
|
|
|
|
{
|
|
path: 'order-entry/:orderHeaderID',
|
|
name: 'order-entry',
|
|
component: () => import('pages/OrderEntry.vue'),
|
|
props: true,
|
|
meta: {
|
|
mode: 'new',
|
|
permission: 'order:insert'
|
|
}
|
|
},
|
|
|
|
{
|
|
path: 'order-edit/:orderHeaderID',
|
|
name: 'order-edit',
|
|
component: () => import('pages/OrderEntry.vue'),
|
|
props: true,
|
|
meta: {
|
|
mode: 'edit',
|
|
permission: 'order:update'
|
|
}
|
|
},
|
|
|
|
{
|
|
path: 'order-list',
|
|
name: 'order-list',
|
|
component: () => import('pages/OrderList.vue'),
|
|
meta: { permission: 'order:view' }
|
|
},
|
|
|
|
{
|
|
path: 'orderproductionupdate',
|
|
name: 'orderproductionupdate-list',
|
|
component: () => import('pages/OrderProductionUpdateList.vue'),
|
|
meta: { permission: 'order:update' }
|
|
},
|
|
{
|
|
path: 'orderproductionupdate/:orderHeaderID',
|
|
name: 'orderproductionupdate',
|
|
component: () => import('pages/OrderProductionUpdate.vue'),
|
|
props: true,
|
|
meta: { permission: 'order:update' }
|
|
},
|
|
|
|
{
|
|
path: 'order-bulk-close',
|
|
name: 'order-bulk-close',
|
|
component: () => import('pages/OrderBulkClose.vue'),
|
|
meta: { permission: 'order:update' }
|
|
},
|
|
|
|
{
|
|
path: 'order-pdf/:id',
|
|
name: 'order-pdf',
|
|
component: () => import('pages/OrderPdf.vue'),
|
|
props: true,
|
|
meta: { permission: 'order:export' }
|
|
},
|
|
|
|
/* ================= PRODUCTS ================= */
|
|
{
|
|
path: 'product-stock-query',
|
|
name: 'product-stock-query',
|
|
component: () => import('pages/ProductStockQuery.vue'),
|
|
meta: { permission: 'order:view' }
|
|
},
|
|
{
|
|
path: 'product-stock-by-attributes',
|
|
name: 'product-stock-by-attributes',
|
|
component: () => import('pages/ProductStockByAttributes.vue'),
|
|
meta: { permission: 'order:view' }
|
|
},
|
|
|
|
/* ================= PRICING ================= */
|
|
// Backward-compatible redirects (old "pricing/production-product-costing" URLs).
|
|
{
|
|
path: 'pricing/production-product-costing',
|
|
redirect: { name: 'production-product-costing' }
|
|
},
|
|
{
|
|
path: 'pricing/production-product-costing/has-cost',
|
|
redirect: { name: 'production-product-costing-has-cost' }
|
|
},
|
|
{
|
|
path: 'pricing/production-product-costing/has-cost/history',
|
|
redirect: { name: 'production-product-costing-has-cost-history' }
|
|
},
|
|
{
|
|
path: 'pricing/production-product-costing/has-cost/detail',
|
|
redirect: { name: 'production-product-costing-has-cost-detail' }
|
|
},
|
|
{
|
|
path: 'pricing/production-product-costing/no-cost',
|
|
redirect: { name: 'production-product-costing-no-cost' }
|
|
},
|
|
{
|
|
path: 'pricing/production-product-costing/maliyet-parca-eslestirme',
|
|
redirect: { name: 'production-product-costing-maliyet-parca-eslestirme' }
|
|
},
|
|
{
|
|
path: 'pricing/production-product-costing/default-quantities',
|
|
redirect: { name: 'production-product-costing-default-quantities' }
|
|
},
|
|
{
|
|
path: 'pricing/product-pricing',
|
|
name: 'product-pricing',
|
|
component: () => import('pages/ProductPricing.vue'),
|
|
meta: { permission: 'pricing:view' }
|
|
},
|
|
{
|
|
path: 'pricing/brand-classification',
|
|
name: 'brand-classification',
|
|
component: () => import('pages/BrandClassification.vue'),
|
|
meta: { permission: 'pricing:view' }
|
|
},
|
|
{
|
|
path: 'pricing/brandgroupcurrency',
|
|
alias: ['pricing/brandproupcurrency', 'pricing/brand-group-currency'],
|
|
name: 'brandgroupcurrency',
|
|
component: () => import('pages/BrandGroupCurrency.vue'),
|
|
meta: { permission: 'pricing:view' }
|
|
},
|
|
{
|
|
path: 'pricing/pricing-rules',
|
|
name: 'pricing-rules',
|
|
component: () => import('pages/PricingRules.vue'),
|
|
meta: { permission: 'pricing:view' }
|
|
},
|
|
{
|
|
path: 'costing/production-product-costing',
|
|
name: 'production-product-costing',
|
|
component: () => import('pages/ProductionProductCosting.vue'),
|
|
meta: { permission: 'costing:view' }
|
|
},
|
|
{
|
|
path: 'costing/production-product-costing/has-cost',
|
|
name: 'production-product-costing-has-cost',
|
|
component: () => import('pages/ProductionProductCostingHasCost.vue'),
|
|
meta: { permission: 'costing:view' }
|
|
},
|
|
{
|
|
path: 'costing/production-product-costing/has-cost/history',
|
|
name: 'production-product-costing-has-cost-history',
|
|
component: () => import('pages/ProductionProductCostingHasCostHistory.vue'),
|
|
meta: { permission: 'costing:view' }
|
|
},
|
|
{
|
|
path: 'costing/production-product-costing/has-cost/detail',
|
|
name: 'production-product-costing-has-cost-detail',
|
|
component: () => import('pages/ProductionProductCostingHasCostDetail.vue'),
|
|
meta: { permission: 'costing:view' }
|
|
},
|
|
{
|
|
path: 'costing/production-product-costing/no-cost',
|
|
name: 'production-product-costing-no-cost',
|
|
component: () => import('pages/ProductionProductCostingNoCost.vue'),
|
|
meta: { permission: 'costing:view' }
|
|
},
|
|
{
|
|
path: 'costing/production-product-costing/maliyet-parca-eslestirme',
|
|
name: 'production-product-costing-maliyet-parca-eslestirme',
|
|
component: () => import('pages/ProductionProductCostingMTBolumMapping.vue'),
|
|
meta: { permission: 'costing:view' }
|
|
},
|
|
{
|
|
path: 'costing/production-product-costing/default-quantities',
|
|
name: 'production-product-costing-default-quantities',
|
|
component: () => import('pages/ProductionProductCostingDefaultQuantities.vue'),
|
|
meta: { permission: 'costing:view' }
|
|
},
|
|
|
|
|
|
/* ================= PASSWORD ================= */
|
|
|
|
{
|
|
path: 'change-password',
|
|
name: 'change-password',
|
|
component: () => import('pages/ChangePassword.vue')
|
|
}
|
|
]
|
|
},
|
|
|
|
|
|
/* ==========================================================
|
|
❌ 404
|
|
========================================================== */
|
|
{
|
|
path: '/:catchAll(.*)*',
|
|
component: () => import('pages/ErrorNotFound.vue')
|
|
}
|
|
]
|
|
|
|
export default routes
|