我们发布啦
This commit is contained in:
255
admin/src/router/index.js
Normal file
255
admin/src/router/index.js
Normal file
@@ -0,0 +1,255 @@
|
||||
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'
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 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,
|
||||
// 数据
|
||||
{
|
||||
path: '/datas',
|
||||
component: Layout,
|
||||
redirect: '/datas',
|
||||
name: 'Datas',
|
||||
meta: {
|
||||
title: '数据',
|
||||
icon: 'clipboard'
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'transaction',
|
||||
component: () => import('@/views/datas/transaction/index'),
|
||||
name: 'Transaction',
|
||||
meta: { title: '交易数据', icon: '' },
|
||||
children: [
|
||||
{
|
||||
path: 'transactionorder',
|
||||
component: () => import('@/views/datas/transaction/order/index'),
|
||||
name: 'transactionOrder',
|
||||
meta: { title: '订单统计', icon: '' }
|
||||
},
|
||||
{
|
||||
path: 'transactiongoods',
|
||||
component: () => import('@/views/datas/transaction/goods/index'),
|
||||
name: 'transactionGoods',
|
||||
meta: { title: '商品统计', icon: '' }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'bargain',
|
||||
component: () => import('@/views/marketing/bargain/index'),
|
||||
name: 'datasBargain',
|
||||
meta: { title: '砍价管理', icon: '' },
|
||||
alwaysShow: true,
|
||||
children: [
|
||||
{
|
||||
path: 'bargainGoods',
|
||||
component: () => import('@/views/marketing/bargain/index'),
|
||||
name: 'datasBargainGoods',
|
||||
meta: { title: '砍价商品', icon: '' }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'groupBuy',
|
||||
component: () => import('@/views/marketing/groupBuy/index'),
|
||||
name: 'datasGroupBuy',
|
||||
meta: { title: '拼团管理', icon: '' },
|
||||
children: [
|
||||
{
|
||||
path: 'groupGoods',
|
||||
component: () => import('@/views/marketing/groupBuy/goods/index'),
|
||||
name: 'DatasGroupGoods',
|
||||
meta: { title: '拼团商品', icon: '' }
|
||||
},
|
||||
{
|
||||
path: 'groupList',
|
||||
component: () => import('@/views/marketing/groupBuy/list/list'),
|
||||
name: 'DatasGroupList',
|
||||
meta: { title: '拼团列表', icon: '' }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'spike',
|
||||
component: () => import('@/views/marketing/spike/index'),
|
||||
name: 'DatasSpike',
|
||||
meta: { title: '秒杀管理', icon: '' },
|
||||
children: [
|
||||
{
|
||||
path: 'spikeconfig',
|
||||
component: () => import('@/views/marketing/spike/config/index'),
|
||||
name: 'DatasSpikeConfig',
|
||||
meta: { title: '秒杀配置', icon: '' }
|
||||
},
|
||||
{
|
||||
path: 'bargainList',
|
||||
component: () => import('@/views/marketing/spike/googs/index'),
|
||||
name: 'DatasBargainList',
|
||||
meta: { title: '秒杀商品', icon: '' }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'integral',
|
||||
component: () => import('@/views/marketing/integral/index'),
|
||||
name: 'DatasIntegral',
|
||||
meta: { title: '积分', icon: '' },
|
||||
children: [
|
||||
{
|
||||
path: 'integralconfig',
|
||||
component: () => import('@/views/marketing/integral/config/index'),
|
||||
name: 'DatasIntegralConfig',
|
||||
meta: { title: '积分配置', icon: '' }
|
||||
},
|
||||
{
|
||||
path: 'integrallog',
|
||||
component: () => import('@/views/marketing/integral/log/index'),
|
||||
name: 'DatasIntegralLog',
|
||||
meta: { title: '积分日志', icon: '' }
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/404',
|
||||
component: () => import('@/views/error-page/404'),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: '/redirect',
|
||||
component: Layout,
|
||||
hidden: true,
|
||||
children: [
|
||||
{
|
||||
path: '/redirect/:path(.*)',
|
||||
component: () => import('@/views/redirect/index')
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
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: '/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
|
||||
96
admin/src/router/modules/appSetting.js
Normal file
96
admin/src/router/modules/appSetting.js
Normal file
@@ -0,0 +1,96 @@
|
||||
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: 'template',
|
||||
component: () => import('@/views/appSetting/wxAccount/wxTemplate'),
|
||||
name: 'wxTemplate',
|
||||
meta: { title: '微信模板消息', icon: '' }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'publicRoutine',
|
||||
name: 'PublicRoutine',
|
||||
component: () => import('@/views/appSetting/routine'),
|
||||
meta: {
|
||||
title: '小程序',
|
||||
icon: 'clipboard',
|
||||
roles: ['admin'],
|
||||
hidden: true
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'routineTemplate',
|
||||
component: () => import('@/views/appSetting/wxAccount/wxTemplate'),
|
||||
name: 'RoutineTemplate',
|
||||
meta: { title: '小程序订阅消息', icon: '' }
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
export default appSettingRouter
|
||||
36
admin/src/router/modules/charts.js
Normal file
36
admin/src/router/modules/charts.js
Normal file
@@ -0,0 +1,36 @@
|
||||
/** When your routing table is too long, you can split it into small modules**/
|
||||
|
||||
import Layout from '@/layout'
|
||||
|
||||
const chartsRouter = {
|
||||
path: '/charts',
|
||||
component: Layout,
|
||||
redirect: 'noRedirect',
|
||||
name: 'Charts',
|
||||
meta: {
|
||||
title: 'Charts',
|
||||
icon: 'chart'
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'keyboard',
|
||||
component: () => import('@/views/charts/keyboard'),
|
||||
name: 'KeyboardChart',
|
||||
meta: { title: 'Keyboard Chart', noCache: true }
|
||||
},
|
||||
{
|
||||
path: 'line',
|
||||
component: () => import('@/views/charts/line'),
|
||||
name: 'LineChart',
|
||||
meta: { title: 'Line Chart', noCache: true }
|
||||
},
|
||||
{
|
||||
path: 'mix-chart',
|
||||
component: () => import('@/views/charts/mix-chart'),
|
||||
name: 'MixChart',
|
||||
meta: { title: 'Mix Chart', noCache: true }
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
export default chartsRouter
|
||||
34
admin/src/router/modules/content.js
Normal file
34
admin/src/router/modules/content.js
Normal file
@@ -0,0 +1,34 @@
|
||||
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: 'classifManager',
|
||||
name: 'classifManager',
|
||||
component: () => import('@/views/content/articleclass/list'),
|
||||
meta: {
|
||||
title: '文章分类',
|
||||
icon: 'clipboard'
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
export default contentRouter
|
||||
28
admin/src/router/modules/distribution.js
Normal file
28
admin/src/router/modules/distribution.js
Normal file
@@ -0,0 +1,28 @@
|
||||
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
|
||||
58
admin/src/router/modules/financial.js
Normal file
58
admin/src/router/modules/financial.js
Normal file
@@ -0,0 +1,58 @@
|
||||
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
|
||||
66
admin/src/router/modules/maintain.js
Normal file
66
admin/src/router/modules/maintain.js
Normal file
@@ -0,0 +1,66 @@
|
||||
/** 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
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
export default maintainRouter
|
||||
134
admin/src/router/modules/marketing.js
Normal file
134
admin/src/router/modules/marketing.js
Normal file
@@ -0,0 +1,134 @@
|
||||
/** 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: '/marketing/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/index'),
|
||||
name: 'bargainGoods',
|
||||
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/goods/index'),
|
||||
name: 'groupGoods',
|
||||
meta: { title: '拼团商品', icon: '' }
|
||||
},
|
||||
{
|
||||
path: 'groupList',
|
||||
component: () => import('@/views/marketing/groupBuy/list/list'),
|
||||
name: 'groupList',
|
||||
meta: { title: '拼团列表', icon: '' }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'spike',
|
||||
component: () => import('@/views/marketing/spike/index'),
|
||||
name: 'Spike',
|
||||
meta: { title: '秒杀管理', icon: '' },
|
||||
hidden: true,
|
||||
children: [
|
||||
{
|
||||
path: 'spikeconfig',
|
||||
component: () => import('@/views/marketing/spike/config/index'),
|
||||
name: 'spikeConfig',
|
||||
meta: { title: '秒杀配置', icon: '' }
|
||||
},
|
||||
{
|
||||
path: 'bargainList',
|
||||
component: () => import('@/views/marketing/spike/googs/index'),
|
||||
name: 'bargainList',
|
||||
meta: { title: '秒杀商品', icon: '' }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
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/log/index'),
|
||||
name: 'integralLog',
|
||||
meta: { title: '积分日志', icon: '' }
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
export default marketingRouter
|
||||
162
admin/src/router/modules/operation.js
Normal file
162
admin/src/router/modules/operation.js
Normal file
@@ -0,0 +1,162 @@
|
||||
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: '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: 'logistics',
|
||||
name: 'Logistics',
|
||||
alwaysShow: true,
|
||||
redirect: '/logistics/cityList',
|
||||
component: () => import('@/views/systemSetting/administratorAuthority'),
|
||||
meta: {
|
||||
title: '物流设置',
|
||||
icon: 'clipboard',
|
||||
roles: ['admin']
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'cityList',
|
||||
component: () => import('@/views/systemSetting/logistics/cityList'),
|
||||
name: 'cityList',
|
||||
meta: { title: '城市数据', icon: '' }
|
||||
},
|
||||
{
|
||||
path: 'companyList',
|
||||
component: () => import('@/views/systemSetting/logistics/companyList'),
|
||||
name: 'companyList',
|
||||
meta: { title: '物流公司', icon: '' }
|
||||
},
|
||||
{
|
||||
path: 'shippingTemplates',
|
||||
component: () => import('@/views/systemSetting/logistics/shippingTemplates'),
|
||||
name: 'shippingTemplates',
|
||||
meta: { title: '运费模板', icon: '' }
|
||||
},
|
||||
{
|
||||
path: 'logisticsConfig',
|
||||
component: () => import('@/views/systemSetting/logistics/config'),
|
||||
name: 'logisticsConfig',
|
||||
meta: { title: '物流配置', icon: '' }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'systemStore',
|
||||
name: 'SystemStore',
|
||||
alwaysShow: true,
|
||||
redirect: '/systemStore/point',
|
||||
component: () => import('@/views/systemSetting/systemStore'),
|
||||
meta: {
|
||||
title: '提货点设置',
|
||||
icon: 'clipboard',
|
||||
roles: ['admin']
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'point',
|
||||
component: () => import('@/views/systemSetting/systemStore/point'),
|
||||
name: 'point',
|
||||
meta: { title: '提货点', icon: '' }
|
||||
},
|
||||
{
|
||||
path: 'clerkList',
|
||||
component: () => import('@/views/systemSetting/systemStore/clerkList'),
|
||||
name: 'clerkList',
|
||||
meta: { title: '核销员', icon: '' }
|
||||
},
|
||||
{
|
||||
path: 'order',
|
||||
component: () => import('@/views/systemSetting/systemStore/order'),
|
||||
name: 'order',
|
||||
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 }
|
||||
},
|
||||
{
|
||||
path: 'pay',
|
||||
component: () => import('@/views/sms/smsPay'),
|
||||
name: 'SmsPay',
|
||||
meta: { title: '短信购买', noCache: true }
|
||||
},
|
||||
{
|
||||
path: 'message',
|
||||
component: () => import('@/views/sms/smsMessage'),
|
||||
name: 'SmsMessage',
|
||||
meta: { title: '短信开关', noCache: true }
|
||||
}
|
||||
]
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
export default operationRouter
|
||||
23
admin/src/router/modules/order.js
Normal file
23
admin/src/router/modules/order.js
Normal file
@@ -0,0 +1,23 @@
|
||||
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
|
||||
47
admin/src/router/modules/store.js
Normal file
47
admin/src/router/modules/store.js
Normal file
@@ -0,0 +1,47 @@
|
||||
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?',
|
||||
component: () => import('@/views/store/creatStore/index'),
|
||||
name: 'SortCreat',
|
||||
meta: { title: '商品添加', noCache: true, activeMenu: `/store/index` },
|
||||
hidden: true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
export default storeRouter
|
||||
40
admin/src/router/modules/user.js
Normal file
40
admin/src/router/modules/user.js
Normal file
@@ -0,0 +1,40 @@
|
||||
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