从 shccd159 合并 backend-adminend 子项目到 main

Made-with: Cursor
This commit is contained in:
apple
2026-03-16 11:32:11 +08:00
parent d00d5119ec
commit e8563e4fda
733 changed files with 171781 additions and 0 deletions

View File

@@ -0,0 +1,203 @@
// +----------------------------------------------------------------------
// | 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 consignmentRouter from './modules/consignment';
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,
// 商品寄卖服务
consignmentRouter,
// 内容
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: '/order/detail/print',
component: () => import('@/views/order/orderDetailPrint'),
name: 'OrderDetailPrint',
hidden: true,
meta: { title: '订单详情打印' },
},
{
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;

View 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;

View 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 consignmentRouter = {
path: '/consignment',
component: Layout,
redirect: '/consignment/merchandise',
name: 'Consignment',
meta: {
title: '商品寄卖服务',
icon: 'clipboard',
},
children: [
{
path: 'merchandise',
component: () => import('@/views/consignment/merchandise/index'),
name: 'Merchandise',
meta: { title: '寄售商品管理', icon: '' },
},
{
path: 'merchandise/detail',
component: () => import('@/views/consignment/merchandise/detail'),
name: 'MerchandiseDetail',
meta: { title: '寄售商品详情', noCache: true, activeMenu: '/consignment/merchandise' },
hidden: true,
},
{
path: 'withdraw',
component: () => import('@/views/consignment/withdraw/index'),
name: 'Withdraw',
meta: { title: '提现管理', icon: '' },
},
{
path: 'withdraw/detail',
component: () => import('@/views/consignment/withdraw/detail'),
name: 'WithdrawDetail',
meta: { title: '提现详情', noCache: true, activeMenu: '/consignment/withdraw' },
hidden: true,
},
{
path: 'financial-log',
component: () => import('@/views/consignment/financial-log/index'),
name: 'FinancialLog',
meta: { title: '财务日志管理', icon: '' },
},
],
};
export default consignmentRouter;

View 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;

View 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;

View 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;

View 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;

View 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;

View 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;

View 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;

View 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

View 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;

View 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;

View 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;

View 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;