feat(admin): add msh_single_admin project and harden ignore rules
Introduce the new Vue admin project into version control while tightening gitignore patterns to keep env files, logs, build artifacts, and test outputs out of commits. Made-with: Cursor
This commit is contained in:
193
msh_single_admin/src/router/index.js
Executable file
193
msh_single_admin/src/router/index.js
Executable file
@@ -0,0 +1,193 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
import Vue from 'vue';
|
||||
import Router from 'vue-router';
|
||||
|
||||
Vue.use(Router);
|
||||
|
||||
/* Layout */
|
||||
import Layout from '@/layout';
|
||||
|
||||
/* Router Modules */
|
||||
// import componentsRouter from './modules/components'
|
||||
import storeRouter from './modules/store';
|
||||
import orderRouter from './modules/order';
|
||||
import userRouter from './modules/user';
|
||||
import distributionRouter from './modules/distribution';
|
||||
import marketingRouter from './modules/marketing';
|
||||
import financialRouter from './modules/financial';
|
||||
import contentRouter from './modules/content';
|
||||
import operationRouter from './modules/operation';
|
||||
import appSettingRouter from './modules/appSetting';
|
||||
import maintainRouter from './modules/maintain';
|
||||
import mobileRouter from './modules/mobile';
|
||||
import statistic from './modules/statistic';
|
||||
import designRouter from './modules/design';
|
||||
|
||||
/**
|
||||
* Note: sub-menu only appear when route children.length >= 1
|
||||
* Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html
|
||||
*
|
||||
* hidden: true if set true, item will not show in the sidebar(default is false)
|
||||
* alwaysShow: true if set true, will always show the root menu
|
||||
* if not set alwaysShow, when item has more than one children route,
|
||||
* it will becomes nested mode, otherwise not show the root menu
|
||||
* redirect: noRedirect if set noRedirect will no redirect in the breadcrumb
|
||||
* name:'router-name' the name is used by <keep-alive> (must set!!!)
|
||||
* meta : {
|
||||
roles: ['admin','editor'] control the page roles (you can set multiple roles)
|
||||
title: 'title' the name show in sidebar and breadcrumb (recommend set)
|
||||
icon: 'svg-name' the icon show in the sidebar
|
||||
noCache: true if set true, the page will no be cached(default is false)
|
||||
affix: true if set true, the tag will affix in the tags-view
|
||||
breadcrumb: false if set false, the item will hidden in breadcrumb(default is true)
|
||||
activeMenu: '/example/list' if set path, the sidebar will highlight the path you set
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* constantRoutes
|
||||
* a base page that does not have permission requirements
|
||||
* all roles can be accessed
|
||||
*
|
||||
*/
|
||||
|
||||
export const constantRoutes = [
|
||||
// 商品
|
||||
storeRouter,
|
||||
// 订单
|
||||
orderRouter,
|
||||
// 会员
|
||||
userRouter,
|
||||
// 分销
|
||||
distributionRouter,
|
||||
// 营销
|
||||
marketingRouter,
|
||||
// 财务
|
||||
financialRouter,
|
||||
// 内容
|
||||
contentRouter,
|
||||
// 设置
|
||||
operationRouter,
|
||||
// 应用
|
||||
appSettingRouter,
|
||||
// 维护
|
||||
maintainRouter,
|
||||
//移动端管理
|
||||
mobileRouter,
|
||||
// 统计管理
|
||||
statistic,
|
||||
//装修
|
||||
designRouter,
|
||||
{
|
||||
path: '/404',
|
||||
component: () => import('@/views/error-page/404'),
|
||||
hidden: true,
|
||||
},
|
||||
{
|
||||
path: '/page/design/creatDevise/:id?/:type?',
|
||||
component: () => import('@/views/design/devise/creatDevise'),
|
||||
hidden: true,
|
||||
},
|
||||
{
|
||||
path: '/redirect',
|
||||
component: Layout,
|
||||
hidden: true,
|
||||
children: [
|
||||
{
|
||||
path: '/redirect/:path(.*)',
|
||||
component: () => import('@/views/redirect/index'),
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: '/auth-send',
|
||||
component: () => import('@/views/mobile/auth-send'),
|
||||
hidden: true,
|
||||
},
|
||||
{
|
||||
path: '/login',
|
||||
component: () => import('@/views/login/index'),
|
||||
hidden: true,
|
||||
},
|
||||
{
|
||||
path: '/auth-redirect',
|
||||
component: () => import('@/views/login/auth-redirect'),
|
||||
hidden: true,
|
||||
},
|
||||
{
|
||||
path: '/401',
|
||||
component: () => import('@/views/error-page/401'),
|
||||
hidden: true,
|
||||
},
|
||||
{
|
||||
path: '/',
|
||||
component: Layout,
|
||||
redirect: '/dashboard',
|
||||
children: [
|
||||
{
|
||||
path: 'dashboard',
|
||||
component: () => import('@/views/dashboard/index'),
|
||||
name: 'Dashboard',
|
||||
meta: { title: '主页', icon: 'dashboard', affix: true },
|
||||
},
|
||||
{
|
||||
path: 'product',
|
||||
name: `product`,
|
||||
meta: { title: '商品统计' },
|
||||
component: () => import('@/views/statistic/product/index'),
|
||||
},
|
||||
{
|
||||
path: 'statuser',
|
||||
name: `statuser`,
|
||||
meta: { title: '用户统计' },
|
||||
component: () => import('@/views/statistic/user/index'),
|
||||
},
|
||||
{
|
||||
path: 'transaction',
|
||||
name: `transaction`,
|
||||
meta: { title: '交易统计' },
|
||||
component: () => import('@/views/statistic/transaction/index'),
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: '/setting/uploadPicture',
|
||||
component: () => import('@/components/uploadPicture/index.vue'),
|
||||
name: 'uploadPicture',
|
||||
},
|
||||
// 404 page must be placed at the end !!!
|
||||
{ path: '*', redirect: '/404', hidden: true },
|
||||
];
|
||||
|
||||
/**
|
||||
* asyncRoutes
|
||||
* the routes that need to be dynamically loaded based on user roles
|
||||
*/
|
||||
export const asyncRoutes = [];
|
||||
|
||||
const createRouter = () =>
|
||||
new Router({
|
||||
// mode: 'history', // require service support
|
||||
mode: 'history',
|
||||
scrollBehavior: () => ({ y: 0 }),
|
||||
routes: constantRoutes,
|
||||
});
|
||||
|
||||
const router = createRouter();
|
||||
|
||||
// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
|
||||
export function resetRouter() {
|
||||
const newRouter = createRouter();
|
||||
router.matcher = newRouter.matcher; // reset router
|
||||
}
|
||||
|
||||
export default router;
|
||||
106
msh_single_admin/src/router/modules/appSetting.js
Executable file
106
msh_single_admin/src/router/modules/appSetting.js
Executable file
@@ -0,0 +1,106 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
import Layout from '@/layout';
|
||||
|
||||
const appSettingRouter = {
|
||||
path: '/appSetting',
|
||||
component: Layout,
|
||||
redirect: '/appSetting/publicAccount/wxMenus',
|
||||
name: 'appSetting',
|
||||
meta: {
|
||||
title: '应用',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'publicAccount',
|
||||
name: 'publicAccount',
|
||||
component: () => import('@/views/appSetting/wxAccount'),
|
||||
meta: {
|
||||
title: '公众号',
|
||||
icon: 'clipboard',
|
||||
roles: ['admin'],
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'wxMenus',
|
||||
component: () => import('@/views/appSetting/wxAccount/wxMenus'),
|
||||
name: 'wxMenus',
|
||||
meta: { title: '微信菜单', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'wxReply',
|
||||
component: () => import('@/views/appSetting/wxAccount/reply/index'),
|
||||
name: 'wxReply',
|
||||
meta: { title: '自动回复', icon: '' },
|
||||
children: [
|
||||
{
|
||||
path: 'follow',
|
||||
component: () => import('@/views/appSetting/wxAccount/reply/follow'),
|
||||
name: 'wxFollow',
|
||||
meta: { title: '微信关注回复', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'keyword',
|
||||
component: () => import('@/views/appSetting/wxAccount/reply/keyword'),
|
||||
name: 'wxKeyword',
|
||||
meta: { title: '关键字回复', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'replyIndex',
|
||||
component: () => import('@/views/appSetting/wxAccount/reply/follow'),
|
||||
name: 'wxReplyIndex',
|
||||
meta: { title: '无效关键词回复', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'keyword/save/:id?',
|
||||
name: 'wechatKeywordAdd',
|
||||
meta: {
|
||||
title: '关键字添加',
|
||||
noCache: true,
|
||||
activeMenu: `/appSetting/publicAccount/wxReply/keyword`,
|
||||
},
|
||||
hidden: true,
|
||||
component: () => import('@/views/appSetting/wxAccount/reply/follow'),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'publicRoutine',
|
||||
name: 'PublicRoutine',
|
||||
component: () => import('@/views/appSetting/routine'),
|
||||
meta: {
|
||||
title: '小程序',
|
||||
icon: 'clipboard',
|
||||
roles: ['admin'],
|
||||
hidden: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'download',
|
||||
component: () => import('@/views/appSetting/routine/download/index.vue'),
|
||||
name: 'download',
|
||||
meta: { title: '小程序下载', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'deliveryManagement',
|
||||
component: () => import('@/views/appSetting/routine/deliveryManagement/index.vue'),
|
||||
name: 'deliveryManagement',
|
||||
meta: { title: '发货管理', icon: '' },
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default appSettingRouter;
|
||||
54
msh_single_admin/src/router/modules/content.js
Executable file
54
msh_single_admin/src/router/modules/content.js
Executable file
@@ -0,0 +1,54 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
import Layout from '@/layout';
|
||||
|
||||
const contentRouter = {
|
||||
path: '/content',
|
||||
component: Layout,
|
||||
redirect: '/content/articleManager',
|
||||
name: 'content',
|
||||
meta: {
|
||||
title: '内容',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'articleManager',
|
||||
name: 'articleManager',
|
||||
component: () => import('@/views/content/article/list'),
|
||||
meta: {
|
||||
title: '文章管理',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'articleCreat/:id?',
|
||||
name: 'articleCreat',
|
||||
component: () => import('@/views/content/article/edit'),
|
||||
meta: {
|
||||
title: '添加文章',
|
||||
noCache: true,
|
||||
activeMenu: `/content/articleManager`,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'classifManager',
|
||||
name: 'classifManager',
|
||||
component: () => import('@/views/content/articleclass/list'),
|
||||
meta: {
|
||||
title: '文章分类',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default contentRouter;
|
||||
50
msh_single_admin/src/router/modules/design.js
Executable file
50
msh_single_admin/src/router/modules/design.js
Executable file
@@ -0,0 +1,50 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
import Layout from '@/layout';
|
||||
|
||||
const designRouter = {
|
||||
path: '/design',
|
||||
component: Layout,
|
||||
redirect: '/design/index',
|
||||
name: 'design',
|
||||
meta: {
|
||||
title: '装修',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'theme',
|
||||
name: 'theme',
|
||||
component: () => import('@/views/design/theme/index'),
|
||||
meta: {
|
||||
title: '一键换色',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'viewDesign',
|
||||
name: 'viewDesign',
|
||||
component: () => import('@/views/design/viewDesign/index'),
|
||||
meta: {
|
||||
title: '页面设计',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'devise',
|
||||
name: 'devise',
|
||||
component: () => import('@/views/design/devise/index'),
|
||||
meta: {
|
||||
title: '首页装修',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default designRouter;
|
||||
38
msh_single_admin/src/router/modules/distribution.js
Executable file
38
msh_single_admin/src/router/modules/distribution.js
Executable file
@@ -0,0 +1,38 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
import Layout from '@/layout';
|
||||
|
||||
const distributionRouter = {
|
||||
path: '/distribution',
|
||||
component: Layout,
|
||||
redirect: '/distribution/index',
|
||||
name: 'Distribution',
|
||||
meta: {
|
||||
title: '分销',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'index',
|
||||
component: () => import('@/views/distribution/index'),
|
||||
name: 'distributionIndex',
|
||||
meta: { title: '分销员管理', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'distributionconfig',
|
||||
component: () => import('@/views/distribution/config/index'),
|
||||
name: 'distributionConfig',
|
||||
meta: { title: '分销配置', icon: '' },
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default distributionRouter;
|
||||
68
msh_single_admin/src/router/modules/financial.js
Executable file
68
msh_single_admin/src/router/modules/financial.js
Executable file
@@ -0,0 +1,68 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
import Layout from '@/layout';
|
||||
|
||||
const financialRouter = {
|
||||
path: '/financial',
|
||||
component: Layout,
|
||||
redirect: '/financial',
|
||||
name: 'Financial',
|
||||
meta: {
|
||||
title: '财务',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'commission',
|
||||
component: () => import('@/views/financial/index'),
|
||||
name: 'Commission',
|
||||
meta: { title: '财务操作', icon: '' },
|
||||
alwaysShow: true,
|
||||
children: [
|
||||
{
|
||||
path: 'template',
|
||||
component: () => import('@/views/financial/commission/withdrawal/index'),
|
||||
name: 'commissionTemplate',
|
||||
meta: { title: '申请提现', icon: '' },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'record',
|
||||
component: () => import('@/views/financial/record/index'),
|
||||
name: 'financialRecord',
|
||||
meta: { title: '财务记录', icon: '' },
|
||||
alwaysShow: true,
|
||||
children: [
|
||||
{
|
||||
path: 'charge',
|
||||
component: () => import('@/views/financial/record/charge/index'),
|
||||
name: 'Charge',
|
||||
meta: { title: '充值记录', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'monitor',
|
||||
component: () => import('@/views/financial/record/monitor/index'),
|
||||
name: 'Monitor',
|
||||
meta: { title: '资金监控', icon: '' },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'brokerage',
|
||||
component: () => import('@/views/financial/brokerage/index'),
|
||||
name: 'Brokerage',
|
||||
meta: { title: '佣金记录', icon: '' },
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default financialRouter;
|
||||
176
msh_single_admin/src/router/modules/maintain.js
Executable file
176
msh_single_admin/src/router/modules/maintain.js
Executable file
@@ -0,0 +1,176 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
/** When your routing table is too long, you can split it into small modules **/
|
||||
|
||||
import Layout from '@/layout';
|
||||
|
||||
const maintainRouter = {
|
||||
path: '/maintain',
|
||||
component: Layout,
|
||||
redirect: '/maintain/devconfiguration/configCategory',
|
||||
name: 'maintain',
|
||||
meta: {
|
||||
title: '维护',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'devconfiguration',
|
||||
name: 'devconfiguration',
|
||||
component: () => import('@/views/maintain'),
|
||||
meta: {
|
||||
title: '开发配置',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'configCategory',
|
||||
name: 'configCategory',
|
||||
component: () => import('@/views/maintain/devconfig/configCategroy'),
|
||||
meta: {
|
||||
title: '配置分类',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'combineddata',
|
||||
name: 'combineddata',
|
||||
component: () => import('@/views/maintain/devconfig/combinedData'),
|
||||
meta: {
|
||||
title: '组合数据',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'formConfig',
|
||||
name: 'formConfig',
|
||||
component: () => import('@/views/maintain/formConfig/index'),
|
||||
meta: {
|
||||
title: '表单配置',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'user',
|
||||
name: 'user',
|
||||
component: () => import('@/views/maintain/user'),
|
||||
meta: {
|
||||
title: '个人中心',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
hidden: true,
|
||||
},
|
||||
{
|
||||
path: 'update',
|
||||
name: 'update',
|
||||
component: () => import('@/views/maintain/user/update'),
|
||||
meta: {
|
||||
title: '修改密码',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
hidden: true,
|
||||
},
|
||||
{
|
||||
path: 'picture',
|
||||
name: 'picture',
|
||||
component: () => import('@/views/maintain/picture'),
|
||||
meta: {
|
||||
title: '素材管理',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
hidden: false,
|
||||
},
|
||||
{
|
||||
path: 'authCRMEB',
|
||||
name: 'authCRMEB',
|
||||
component: () => import('@/views/maintain/authCRMEB'),
|
||||
meta: {
|
||||
title: '授权',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
hidden: false,
|
||||
}, //sensitiveList
|
||||
{
|
||||
path: 'logistics',
|
||||
name: 'Logistics',
|
||||
alwaysShow: true,
|
||||
redirect: '/logistics/cityList',
|
||||
component: () => import('@/views/maintain'),
|
||||
meta: {
|
||||
title: '物流设置',
|
||||
icon: 'clipboard',
|
||||
roles: ['admin'],
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'cityList',
|
||||
component: () => import('@/views/maintain/logistics/cityList'),
|
||||
name: 'cityList',
|
||||
meta: { title: '城市数据', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'companyList',
|
||||
component: () => import('@/views/maintain/logistics/companyList'),
|
||||
name: 'companyList',
|
||||
meta: { title: '物流公司', icon: '' },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'sensitiveLog',
|
||||
name: 'sensitiveLog',
|
||||
component: () => import('@/views/maintain/sensitiveList'),
|
||||
meta: {
|
||||
title: '敏感操作日志',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
hidden: false,
|
||||
},
|
||||
{
|
||||
path: 'clearCache',
|
||||
name: 'clearCache',
|
||||
component: () => import('@/views/maintain/clearCache'),
|
||||
meta: {
|
||||
title: '缓存清除',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
hidden: false,
|
||||
},
|
||||
{
|
||||
path: 'schedule',
|
||||
name: 'schedule',
|
||||
component: () => import('@/views/maintain/schedule'),
|
||||
meta: {
|
||||
title: '定时任务管理',
|
||||
icon: 'clipboard',
|
||||
roles: ['admin'],
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'list',
|
||||
component: () => import('@/views/maintain/schedule/list'),
|
||||
name: 'list',
|
||||
meta: { title: '定时任务', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'logList',
|
||||
component: () => import('@/views/maintain/schedule/logList'),
|
||||
name: 'logList',
|
||||
meta: { title: '定时任务日志', icon: '' },
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default maintainRouter;
|
||||
250
msh_single_admin/src/router/modules/marketing.js
Executable file
250
msh_single_admin/src/router/modules/marketing.js
Executable file
@@ -0,0 +1,250 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
/** When your routing table is too long, you can split it into small modules **/
|
||||
|
||||
import Layout from '@/layout';
|
||||
|
||||
const marketingRouter = {
|
||||
path: '/marketing',
|
||||
component: Layout,
|
||||
redirect: '/coupon/list',
|
||||
name: 'Marketing',
|
||||
meta: {
|
||||
title: '营销',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'coupon',
|
||||
component: () => import('@/views/marketing/coupon/index'),
|
||||
name: 'Coupon',
|
||||
meta: { title: '优惠券', icon: '' },
|
||||
children: [
|
||||
{
|
||||
path: 'template',
|
||||
component: () => import('@/views/marketing/coupon/couponTemplate/index'),
|
||||
name: 'couponTemplate',
|
||||
hidden: true,
|
||||
meta: { title: '优惠券模板', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'list/save/:id?',
|
||||
name: 'couponAdd',
|
||||
meta: {
|
||||
title: '优惠劵添加',
|
||||
noCache: true,
|
||||
activeMenu: `/marketing/coupon/list`,
|
||||
},
|
||||
hidden: true,
|
||||
component: () => import('@/views/marketing/coupon/list/creatCoupon'),
|
||||
},
|
||||
{
|
||||
path: 'list',
|
||||
component: () => import('@/views/marketing/coupon/list/index'),
|
||||
name: 'List',
|
||||
meta: { title: '优惠券列表', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'record',
|
||||
component: () => import('@/views/marketing/coupon/record/index'),
|
||||
name: 'Record',
|
||||
meta: { title: '领取记录', icon: '' },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'bargain',
|
||||
component: () => import('@/views/marketing/bargain/index'),
|
||||
name: 'Bargain',
|
||||
meta: { title: '砍价管理', icon: '' },
|
||||
alwaysShow: true,
|
||||
hidden: true,
|
||||
children: [
|
||||
{
|
||||
path: 'bargainGoods',
|
||||
component: () => import('@/views/marketing/bargain/bargainGoods/index'),
|
||||
name: 'bargainGoods',
|
||||
meta: { title: '砍价商品', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'creatBargain/:id?',
|
||||
component: () => import('@/views/marketing/bargain/bargainGoods/creatBargain'),
|
||||
name: 'creatBargain',
|
||||
meta: { title: '砍价商品', icon: '', noCache: true, activeMenu: `/marketing/bargain/bargainGoods` },
|
||||
},
|
||||
{
|
||||
path: 'bargainList',
|
||||
component: () => import('@/views/marketing/bargain/bargainList/index'),
|
||||
name: 'bargainList',
|
||||
meta: { title: '砍价列表', icon: '' },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'groupBuy',
|
||||
component: () => import('@/views/marketing/groupBuy/index'),
|
||||
name: 'groupBuy',
|
||||
meta: { title: '拼团管理', icon: '' },
|
||||
hidden: true,
|
||||
children: [
|
||||
{
|
||||
path: 'groupGoods',
|
||||
component: () => import('@/views/marketing/groupBuy/groupGoods/index'),
|
||||
name: 'groupGoods',
|
||||
meta: { title: '拼团商品', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'creatGroup/:id?/:type?',
|
||||
component: () => import('@/views/marketing/groupBuy/groupGoods/creatGroup'),
|
||||
name: 'creatGroup',
|
||||
meta: { title: '拼团商品', icon: '', noCache: true, activeMenu: `/marketing/groupBuy/groupGoods` },
|
||||
},
|
||||
{
|
||||
path: 'groupList',
|
||||
component: () => import('@/views/marketing/groupBuy/groupList/index'),
|
||||
name: 'groupList',
|
||||
meta: { title: '拼团列表', icon: '' },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'seckill',
|
||||
component: () => import('@/views/marketing/seckill/index'),
|
||||
name: 'Seckill',
|
||||
meta: { title: '秒杀管理', icon: '' },
|
||||
children: [
|
||||
{
|
||||
path: 'config',
|
||||
component: () => import('@/views/marketing/seckill/seckillConfig/index'),
|
||||
name: 'SeckillConfig',
|
||||
meta: { title: '秒杀配置', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'list/:timeId?',
|
||||
component: () => import('@/views/marketing/seckill/seckillList/index'),
|
||||
name: 'SeckillList',
|
||||
meta: { title: '秒杀商品', icon: '', noCache: true, activeMenu: `/marketing/seckill/list` },
|
||||
},
|
||||
{
|
||||
path: 'creatSeckill/:name?/:timeId?/:id?',
|
||||
component: () => import('@/views/marketing/seckill/seckillList/creatSeckill'),
|
||||
name: 'CreatSeckill',
|
||||
meta: { title: '添加秒杀商品', icon: '', noCache: true, activeMenu: `/marketing/seckill/list` },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'integral',
|
||||
component: () => import('@/views/marketing/integral/index'),
|
||||
name: 'Integral',
|
||||
meta: { title: '积分', icon: '' },
|
||||
children: [
|
||||
{
|
||||
path: 'integralconfig',
|
||||
component: () => import('@/views/marketing/integral/config/index'),
|
||||
name: 'integralConfig',
|
||||
meta: { title: '积分配置', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'integrallog',
|
||||
component: () => import('@/views/marketing/integral/integralLog/index'),
|
||||
name: 'integralLog',
|
||||
meta: { title: '积分日志', icon: '' },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'videoChannel',
|
||||
component: () => import('@/views/marketing/integral/index'),
|
||||
name: 'videoChannel',
|
||||
meta: { title: '视频号管理', icon: '' },
|
||||
children: [
|
||||
{
|
||||
path: 'list',
|
||||
component: () => import('@/views/marketing/videoChannel/videoList/index'),
|
||||
name: 'VideoChannelList',
|
||||
meta: { title: '商品列表', icon: '', noCache: true },
|
||||
},
|
||||
{
|
||||
path: 'creatVideoChannel/:id?',
|
||||
component: () => import('@/views/marketing/videoChannel/draftList/creatVideoChannel'),
|
||||
name: 'CreatVideoChannel',
|
||||
meta: { title: '添加视频号商品', icon: '', noCache: true, activeMenu: `/marketing/videoChannel/draftList` },
|
||||
},
|
||||
{
|
||||
path: 'draftList',
|
||||
component: () => import('@/views/marketing/videoChannel/draftList/index'),
|
||||
name: 'draftList',
|
||||
meta: { title: '草稿列表', icon: '', noCache: true },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'atmosphere',
|
||||
name: 'atmosphere',
|
||||
meta: {
|
||||
title: '活动氛围',
|
||||
noCache: true,
|
||||
},
|
||||
component: () => import('@/views/marketing/atmosphere/index'),
|
||||
children: [
|
||||
{
|
||||
path: 'list',
|
||||
name: `atmosphereList`,
|
||||
meta: {
|
||||
title: '氛围列表',
|
||||
noCache: true,
|
||||
},
|
||||
component: () => import('@/views/marketing/atmosphere/atmosphereList/list'),
|
||||
},
|
||||
{
|
||||
path: 'add/:id?',
|
||||
name: `addAtmosphere`,
|
||||
meta: {
|
||||
title: '添加活动氛围',
|
||||
noCache: true,
|
||||
activeMenu: `/marketing/atmosphere/list`,
|
||||
},
|
||||
component: () => import('@/views/marketing/atmosphere/atmosphereList/addAtmosphere'),
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'border',
|
||||
name: 'border',
|
||||
meta: { title: '活动边框', icon: '' },
|
||||
component: () => import('@/views/marketing/border/index'),
|
||||
children: [
|
||||
{
|
||||
path: 'list',
|
||||
name: `borderList`,
|
||||
meta: {
|
||||
title: '活动边框列表',
|
||||
noCache: true,
|
||||
},
|
||||
component: () => import('@/views/marketing/atmosphere/atmosphereList/list'),
|
||||
},
|
||||
{
|
||||
path: 'add/:id?',
|
||||
name: `addBorder`,
|
||||
meta: {
|
||||
title: '添加活动边框',
|
||||
noCache: true,
|
||||
activeMenu: `/marketing/border/list`,
|
||||
},
|
||||
component: () => import('@/views/marketing/atmosphere/atmosphereList/addAtmosphere'),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default marketingRouter;
|
||||
63
msh_single_admin/src/router/modules/mobile.js
Executable file
63
msh_single_admin/src/router/modules/mobile.js
Executable file
@@ -0,0 +1,63 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
import Layout from '@/layout';
|
||||
|
||||
const mobileRouter = {
|
||||
path: '/javaMobile',
|
||||
component: Layout,
|
||||
redirect: '/javaMobile/index',
|
||||
name: 'Mobile',
|
||||
alwaysShow: true,
|
||||
meta: {
|
||||
title: '移动端',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'orderCancellation',
|
||||
component: () => import('@/views/mobile/orderCancellation/index.vue'),
|
||||
name: 'OrderCancellation',
|
||||
meta: { title: '订单核销', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'orderStatistics',
|
||||
component: () => import('@/views/mobile/orderStatistics/index.vue'),
|
||||
name: 'OrderStatistics',
|
||||
meta: { title: '订单统计' },
|
||||
},
|
||||
{
|
||||
path: 'orderList/:types?',
|
||||
component: () => import('@/views/mobile/orderStatistics/orderList.vue'),
|
||||
name: 'OrderList',
|
||||
meta: { title: '订单列表' },
|
||||
},
|
||||
{
|
||||
path: 'orderDelivery/:oid/:id?',
|
||||
component: () => import('@/views/mobile/orderStatistics/orderDelivery.vue'),
|
||||
name: 'OrderDelivery',
|
||||
meta: { title: '订单发货' },
|
||||
},
|
||||
{
|
||||
path: 'orderDetail/:id?/:goname?',
|
||||
component: () => import('@/views/mobile/orderStatistics/orderDetail.vue'),
|
||||
name: 'OrderDetail',
|
||||
meta: { title: '订单详情' },
|
||||
},
|
||||
{
|
||||
path: 'orderStatisticsDetail/:type/:time?',
|
||||
component: () => import('@/views/mobile/orderStatistics/Statistics.vue'),
|
||||
name: 'OrderStatisticsDetail',
|
||||
meta: { title: '订单数据统计' },
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default mobileRouter;
|
||||
190
msh_single_admin/src/router/modules/operation.js
Executable file
190
msh_single_admin/src/router/modules/operation.js
Executable file
@@ -0,0 +1,190 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
import Layout from '@/layout';
|
||||
|
||||
const operationRouter = {
|
||||
path: '/operation',
|
||||
component: Layout,
|
||||
redirect: '/operation/setting',
|
||||
name: 'Operation',
|
||||
meta: {
|
||||
title: '设置',
|
||||
icon: 'clipboard',
|
||||
roles: ['admin'],
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'setting',
|
||||
name: 'setting',
|
||||
component: () => import('@/views/systemSetting/setting'),
|
||||
meta: {
|
||||
title: '系统设置',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'guide',
|
||||
name: 'guide',
|
||||
component: () => import('@/views/systemSetting/guide'),
|
||||
meta: {
|
||||
title: '配置引导',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'notification',
|
||||
name: 'notification',
|
||||
component: () => import('@/views/systemSetting/notification'),
|
||||
meta: {
|
||||
title: '消息通知',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'onePass',
|
||||
name: 'onePass',
|
||||
component: () => import('@/views/sms/smsConfig/index'),
|
||||
meta: {
|
||||
title: '一号通',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'onePassConfig',
|
||||
name: 'onePassConfig',
|
||||
component: () => import('@/views/sms/smsConfig/config'),
|
||||
meta: {
|
||||
title: '一号通配置',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'roleManager',
|
||||
name: 'RoleManager',
|
||||
component: () => import('@/views/systemSetting/administratorAuthority'),
|
||||
meta: {
|
||||
title: '管理权限',
|
||||
icon: 'clipboard',
|
||||
roles: ['admin'],
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'identityManager',
|
||||
component: () => import('@/views/systemSetting/administratorAuthority/identityManager'),
|
||||
name: 'identityManager',
|
||||
meta: { title: '角色管理', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'adminList',
|
||||
component: () => import('@/views/systemSetting/administratorAuthority/adminList'),
|
||||
name: 'adminList',
|
||||
meta: { title: '管理员列表', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'promiseRules',
|
||||
component: () => import('@/views/systemSetting/administratorAuthority/permissionRules'),
|
||||
name: 'promiseRules',
|
||||
meta: { title: '权限规则', icon: '' },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'systemSms',
|
||||
component: () => import('@/views/sms'),
|
||||
name: 'systemSms',
|
||||
meta: {
|
||||
title: '短信设置',
|
||||
icon: 'clipboard',
|
||||
roles: ['admin'],
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'config',
|
||||
component: () => import('@/views/sms/smsConfig'),
|
||||
name: 'SmsConfig',
|
||||
meta: { title: '短信账户', noCache: true },
|
||||
},
|
||||
{
|
||||
path: 'template',
|
||||
component: () => import('@/views/sms/smsTemplate'),
|
||||
name: 'SmsTemplate',
|
||||
meta: { title: '短信模板', noCache: true, activeMenu: `/operation/onePass` },
|
||||
},
|
||||
{
|
||||
path: 'pay',
|
||||
component: () => import('@/views/sms/smsPay'),
|
||||
name: 'SmsPay',
|
||||
meta: { title: '短信购买', noCache: true, activeMenu: `/operation/onePass` },
|
||||
},
|
||||
{
|
||||
path: 'message',
|
||||
component: () => import('@/views/sms/smsMessage'),
|
||||
name: 'SmsMessage',
|
||||
meta: { title: '短信开关', noCache: true },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'deliverGoods',
|
||||
name: 'deliverGoods',
|
||||
alwaysShow: true,
|
||||
component: () => import('@/views/systemSetting/deliverGoods'),
|
||||
meta: {
|
||||
title: '发货设置',
|
||||
roles: ['admin'],
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'takeGoods',
|
||||
component: () => import('@/views/systemSetting/deliverGoods/takeGoods'),
|
||||
name: 'takeGoods',
|
||||
meta: { title: '提货设置', noCache: true, roles: ['admin'] },
|
||||
children: [
|
||||
{
|
||||
path: 'deliveryAddress',
|
||||
component: () => import('@/views/systemSetting/deliverGoods/takeGoods/deliveryAddress'),
|
||||
name: 'deliveryAddress',
|
||||
meta: { title: '提货点', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'collateOrder',
|
||||
component: () => import('@/views/systemSetting/deliverGoods/takeGoods/collateOrder'),
|
||||
name: 'collateOrder',
|
||||
meta: { title: '核销订单', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'collateUser',
|
||||
component: () => import('@/views/systemSetting/deliverGoods/takeGoods/collateUser'),
|
||||
name: 'collateUser',
|
||||
meta: { title: '核销员', icon: '' },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'freightSet',
|
||||
component: () => import('@/views/systemSetting/deliverGoods/freightSet'),
|
||||
name: 'freightSet',
|
||||
meta: { title: '运费模板', noCache: true },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'agreement',
|
||||
name: 'agreement',
|
||||
component: () => import('@/views/systemSetting/agreement'),
|
||||
meta: {
|
||||
title: '协议管理',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default operationRouter; //collate
|
||||
33
msh_single_admin/src/router/modules/order.js
Executable file
33
msh_single_admin/src/router/modules/order.js
Executable file
@@ -0,0 +1,33 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
import Layout from '@/layout';
|
||||
|
||||
const orderRouter = {
|
||||
path: '/order',
|
||||
component: Layout,
|
||||
redirect: '/order/index',
|
||||
name: 'Order',
|
||||
alwaysShow: true,
|
||||
meta: {
|
||||
title: '订单',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'index',
|
||||
component: () => import('@/views/order/index'),
|
||||
name: 'OrderIndex',
|
||||
meta: { title: '订单' },
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default orderRouter;
|
||||
59
msh_single_admin/src/router/modules/statistic.js
Executable file
59
msh_single_admin/src/router/modules/statistic.js
Executable file
@@ -0,0 +1,59 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
import Layout from '@/layout';
|
||||
|
||||
const orderRouter = {
|
||||
path: '/statistic',
|
||||
component: Layout,
|
||||
redirect: '/statistic/product',
|
||||
name: 'statistic',
|
||||
alwaysShow: true,
|
||||
meta: {
|
||||
title: '统计管理',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'product',
|
||||
name: `product`,
|
||||
meta: { title: '商品统计' },
|
||||
component: () => import('@/views/statistic/product/index'),
|
||||
// children: [
|
||||
// {
|
||||
// path: 'visualization',
|
||||
// component: () => import('@/views/statistic/product/visualization'),
|
||||
// name: 'visualization',
|
||||
// meta: { title: '统计', icon: '' }
|
||||
// },
|
||||
// {
|
||||
// path: 'tableData',
|
||||
// component: () => import('@/views/statistic/product/tableData'),
|
||||
// name: 'tableData',
|
||||
// meta: { title: '商品排行', icon: '' }
|
||||
// },
|
||||
// ]
|
||||
},
|
||||
{
|
||||
path: 'statuser',
|
||||
name: `statuser`,
|
||||
meta: { title: '用户统计' },
|
||||
component: () => import('@/views/statistic/user/index'),
|
||||
},
|
||||
{
|
||||
path: 'transaction',
|
||||
name: `transaction`,
|
||||
meta: { title: '交易统计' },
|
||||
component: () => import('@/views/statistic/transaction/index'),
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default orderRouter;
|
||||
57
msh_single_admin/src/router/modules/store.js
Executable file
57
msh_single_admin/src/router/modules/store.js
Executable file
@@ -0,0 +1,57 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
import Layout from '@/layout';
|
||||
|
||||
const storeRouter = {
|
||||
path: '/store',
|
||||
component: Layout,
|
||||
redirect: '/store/index',
|
||||
name: 'Store',
|
||||
meta: {
|
||||
title: '商品',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'index',
|
||||
component: () => import('@/views/store/index'),
|
||||
name: 'StoreIndex',
|
||||
meta: { title: '商品管理', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'sort',
|
||||
component: () => import('@/views/store/sort/index'),
|
||||
name: 'Sort',
|
||||
meta: { title: '商品分类', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'attr',
|
||||
component: () => import('@/views/store/storeAttr/index'),
|
||||
name: 'SortAttr',
|
||||
meta: { title: '商品规格', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'comment',
|
||||
component: () => import('@/views/store/storeComment/index'),
|
||||
name: 'StoreComment',
|
||||
meta: { title: '商品评论', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'list/creatProduct/:id?/:isDisabled?',
|
||||
component: () => import('@/views/store/creatStore/index'),
|
||||
name: 'SortCreat',
|
||||
meta: { title: '商品添加', noCache: true, activeMenu: `/store/index` },
|
||||
hidden: true,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default storeRouter;
|
||||
50
msh_single_admin/src/router/modules/user.js
Executable file
50
msh_single_admin/src/router/modules/user.js
Executable file
@@ -0,0 +1,50 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
import Layout from '@/layout';
|
||||
|
||||
const userRouter = {
|
||||
path: '/user',
|
||||
component: Layout,
|
||||
redirect: '/user/index',
|
||||
name: 'User',
|
||||
meta: {
|
||||
title: '用户',
|
||||
icon: 'clipboard',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'index',
|
||||
component: () => import('@/views/user/list/index'),
|
||||
name: 'UserIndex',
|
||||
meta: { title: '用户管理', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'grade',
|
||||
component: () => import('@/views/user/grade/index'),
|
||||
name: 'Grade',
|
||||
meta: { title: '用户等级', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'label',
|
||||
component: () => import('@/views/user/group/index'),
|
||||
name: 'Label',
|
||||
meta: { title: '用户标签', icon: '' },
|
||||
},
|
||||
{
|
||||
path: 'group',
|
||||
component: () => import('@/views/user/group/index'),
|
||||
name: 'Group',
|
||||
meta: { title: '用户分组', icon: '' },
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default userRouter;
|
||||
Reference in New Issue
Block a user