2025-03-28 18:28:06 +08:00
|
|
|
import Vue from 'vue'
|
|
|
|
|
import VueRouter from 'vue-router'
|
|
|
|
|
import Layout from '@/layouts'
|
|
|
|
|
import EmptyLayout from '@/layouts/EmptyLayout'
|
|
|
|
|
import { publicPath, routerMode } from '@/config'
|
|
|
|
|
|
|
|
|
|
Vue.use(VueRouter)
|
|
|
|
|
export const constantRoutes = [
|
|
|
|
|
{
|
|
|
|
|
path: '/login',
|
|
|
|
|
component: () => import('@/views/login/index'),
|
|
|
|
|
hidden: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/register',
|
|
|
|
|
component: () => import('@/views/register/index'),
|
|
|
|
|
hidden: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/401',
|
|
|
|
|
name: '401',
|
|
|
|
|
component: () => import('@/views/401'),
|
|
|
|
|
hidden: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/404',
|
|
|
|
|
name: '404',
|
|
|
|
|
component: () => import('@/views/404'),
|
|
|
|
|
hidden: true,
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
export const asyncRoutes = [
|
|
|
|
|
{
|
|
|
|
|
path: '/',
|
|
|
|
|
component: Layout,
|
|
|
|
|
redirect: '/index',
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: 'index',
|
|
|
|
|
name: 'Index',
|
|
|
|
|
component: () => import('@/views/index/index'),
|
|
|
|
|
meta: {
|
|
|
|
|
title: '首页',
|
|
|
|
|
icon: 'home',
|
|
|
|
|
affix: true,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
2026-06-01 06:35:41 +08:00
|
|
|
{
|
|
|
|
|
path: '/rating',
|
|
|
|
|
component: Layout,
|
|
|
|
|
redirect: 'noRedirect',
|
|
|
|
|
name: 'RatingMini',
|
|
|
|
|
meta: { title: '夯拉评分', icon: 'gift', permissions: ['admin'] },
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: 'topic',
|
|
|
|
|
name: 'RatingTopicIndex',
|
|
|
|
|
component: () => import('@/views/rating/topic/index'),
|
|
|
|
|
meta: { title: '评分话题' },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'topic-item',
|
|
|
|
|
name: 'RatingTopicItemIndex',
|
|
|
|
|
component: () => import('@/views/rating/topicItem/index'),
|
|
|
|
|
meta: { title: '评分项' },
|
|
|
|
|
},
|
2026-06-01 18:25:23 +08:00
|
|
|
{
|
|
|
|
|
path: 'topic-record',
|
|
|
|
|
name: 'RatingTopicRecordIndex',
|
|
|
|
|
component: () => import('@/views/rating/topicScoreRecord/index'),
|
|
|
|
|
meta: { title: '用户评分记录' },
|
|
|
|
|
},
|
2026-06-01 19:00:17 +08:00
|
|
|
{
|
|
|
|
|
path: 'topic-comment',
|
|
|
|
|
name: 'RatingTopicCommentIndex',
|
|
|
|
|
component: () => import('@/views/rating/topicCommentRecord/index'),
|
|
|
|
|
meta: { title: '用户评论记录' },
|
|
|
|
|
},
|
2026-06-09 07:52:09 +08:00
|
|
|
{
|
|
|
|
|
path: 'topic-category',
|
|
|
|
|
name: 'RatingTopicCategoryIndex',
|
|
|
|
|
component: () => import('@/views/rating/topicCategory/index'),
|
|
|
|
|
meta: { title: '评分话题分类' },
|
|
|
|
|
},
|
2026-06-10 01:38:55 +08:00
|
|
|
{
|
|
|
|
|
path: 'pk',
|
|
|
|
|
component: EmptyLayout,
|
|
|
|
|
alwaysShow: true,
|
|
|
|
|
redirect: 'noRedirect',
|
|
|
|
|
name: 'PkIndex',
|
|
|
|
|
meta: {
|
|
|
|
|
title: 'PK赛',
|
|
|
|
|
icon: 'clover',
|
|
|
|
|
permissions: ['admin'],
|
|
|
|
|
},
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: 'list',
|
|
|
|
|
name: 'List',
|
|
|
|
|
component: () => import('@/views/rating/pk/list/index'),
|
|
|
|
|
meta: { title: 'PK赛列表', icon: 'setting' },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'pkRecord',
|
|
|
|
|
name: 'PkRecord',
|
|
|
|
|
component: () => import('@/views/rating/pk/record/index'),
|
|
|
|
|
meta: { title: 'PK赛记录', icon: 'setting' },
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
2026-06-09 10:05:24 +08:00
|
|
|
{
|
|
|
|
|
path: 'topic-review',
|
|
|
|
|
name: 'RatingTopicReviewIndex',
|
|
|
|
|
component: () => import('@/views/rating/topicReview/index'),
|
|
|
|
|
meta: { title: '话题审核' },
|
|
|
|
|
},
|
2026-06-01 06:35:41 +08:00
|
|
|
],
|
|
|
|
|
},
|
2026-01-19 18:05:36 +08:00
|
|
|
{
|
|
|
|
|
path: '/spring',
|
|
|
|
|
component: Layout,
|
|
|
|
|
redirect: 'noRedirect',
|
|
|
|
|
name: 'SpringMini',
|
|
|
|
|
meta: { title: '新春祝福', icon: 'gift', permissions: ['admin'] },
|
|
|
|
|
children: [
|
2026-03-02 12:52:38 +08:00
|
|
|
{
|
|
|
|
|
path: 'daily-index',
|
|
|
|
|
component: EmptyLayout,
|
|
|
|
|
alwaysShow: true,
|
|
|
|
|
redirect: 'noRedirect',
|
|
|
|
|
name: 'DailyIndex',
|
|
|
|
|
meta: {
|
|
|
|
|
title: '每日问候',
|
|
|
|
|
icon: 'clover',
|
|
|
|
|
permissions: ['admin'],
|
|
|
|
|
},
|
|
|
|
|
children: [
|
|
|
|
|
{
|
2026-03-04 12:36:15 +08:00
|
|
|
path: 'scene',
|
|
|
|
|
name: 'Scene',
|
|
|
|
|
component: () => import('@/views/spring/daily/scene/index'),
|
|
|
|
|
meta: { title: '场景配置', icon: 'setting' },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'greeting',
|
|
|
|
|
name: 'Greeting',
|
|
|
|
|
component: () => import('@/views/spring/daily/greeting/index'),
|
|
|
|
|
meta: { title: '问候语配置', icon: 'setting' },
|
2026-03-02 12:52:38 +08:00
|
|
|
},
|
2026-03-13 05:27:24 +08:00
|
|
|
{
|
|
|
|
|
path: 'greetingStreak',
|
|
|
|
|
name: 'GreetingStreak',
|
|
|
|
|
component: () => import('@/views/spring/daily/greetingStreak/index'),
|
|
|
|
|
meta: { title: '问候记录', icon: 'list' },
|
|
|
|
|
},
|
2026-03-02 12:52:38 +08:00
|
|
|
],
|
|
|
|
|
},
|
2026-02-05 19:46:32 +08:00
|
|
|
{
|
|
|
|
|
path: 'index',
|
|
|
|
|
component: EmptyLayout,
|
|
|
|
|
alwaysShow: true,
|
|
|
|
|
redirect: 'noRedirect',
|
|
|
|
|
name: 'Index',
|
|
|
|
|
meta: {
|
|
|
|
|
title: '首页',
|
|
|
|
|
icon: 'clover',
|
|
|
|
|
permissions: ['admin'],
|
|
|
|
|
},
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: 'recommend',
|
|
|
|
|
name: 'Recommend',
|
|
|
|
|
component: () => import('@/views/spring/index/recommend/index'),
|
|
|
|
|
meta: { title: '推介列表', icon: 'list' },
|
|
|
|
|
},
|
2026-02-27 23:30:39 +08:00
|
|
|
{
|
|
|
|
|
path: 'topic',
|
|
|
|
|
name: 'Topic',
|
|
|
|
|
component: () => import('@/views/spring/index/topic/index'),
|
|
|
|
|
meta: { title: '贺卡专题', icon: 'list' },
|
|
|
|
|
},
|
2026-02-09 02:56:53 +08:00
|
|
|
{
|
|
|
|
|
path: 'tips',
|
|
|
|
|
name: 'tips',
|
|
|
|
|
component: () => import('@/views/spring/index/tips/index'),
|
|
|
|
|
meta: { title: '首页跳转', icon: 'list' },
|
|
|
|
|
},
|
2026-02-05 19:46:32 +08:00
|
|
|
],
|
|
|
|
|
},
|
2026-01-19 21:45:01 +08:00
|
|
|
{
|
|
|
|
|
path: 'blessing',
|
|
|
|
|
component: EmptyLayout,
|
|
|
|
|
alwaysShow: true,
|
|
|
|
|
redirect: 'noRedirect',
|
|
|
|
|
name: 'Blessing',
|
|
|
|
|
meta: {
|
|
|
|
|
title: '祝福卡片',
|
|
|
|
|
icon: 'clover',
|
|
|
|
|
permissions: ['admin'],
|
|
|
|
|
},
|
|
|
|
|
children: [
|
2026-03-13 03:42:44 +08:00
|
|
|
{
|
|
|
|
|
path: 'scene',
|
|
|
|
|
name: 'Scene',
|
|
|
|
|
component: () => import('@/views/spring/blessing/scene/index'),
|
|
|
|
|
meta: { title: '祝福卡场景' },
|
|
|
|
|
},
|
2026-01-19 21:45:01 +08:00
|
|
|
{
|
|
|
|
|
path: 'template',
|
|
|
|
|
name: 'template',
|
|
|
|
|
component: () => import('@/views/spring/blessing/template/index'),
|
|
|
|
|
meta: { title: '祝福卡模版' },
|
|
|
|
|
},
|
2026-02-05 18:59:48 +08:00
|
|
|
{
|
|
|
|
|
path: 'titleTemplate',
|
|
|
|
|
name: 'titleTemplate',
|
|
|
|
|
component: () => import('@/views/spring/blessing/titleTemplate/index'),
|
|
|
|
|
meta: { title: '图片标题模版' },
|
|
|
|
|
},
|
2026-03-19 16:44:33 +08:00
|
|
|
{
|
|
|
|
|
path: 'music',
|
|
|
|
|
name: 'Music',
|
|
|
|
|
component: () => import('@/views/spring/blessing/music/index'),
|
|
|
|
|
meta: { title: '背景音乐' },
|
|
|
|
|
},
|
2026-01-20 10:14:08 +08:00
|
|
|
{
|
|
|
|
|
path: 'contentTemplate',
|
|
|
|
|
name: 'contentTemplate',
|
|
|
|
|
component: () => import('@/views/spring/blessing/contentTemplate/index'),
|
|
|
|
|
meta: { title: '内容模版' },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'generateRecord',
|
|
|
|
|
name: 'GenerateRecord',
|
|
|
|
|
component: () => import('@/views/spring/blessing/generateRecord/index'),
|
|
|
|
|
meta: { title: '生成记录' },
|
|
|
|
|
},
|
2026-01-19 21:45:01 +08:00
|
|
|
],
|
|
|
|
|
},
|
2026-01-25 00:29:35 +08:00
|
|
|
{
|
|
|
|
|
path: 'wallpaper',
|
|
|
|
|
component: EmptyLayout,
|
|
|
|
|
alwaysShow: true,
|
|
|
|
|
redirect: 'noRedirect',
|
|
|
|
|
name: 'Wallpaper',
|
|
|
|
|
meta: {
|
|
|
|
|
title: '壁纸',
|
|
|
|
|
icon: 'clover',
|
|
|
|
|
permissions: ['admin'],
|
|
|
|
|
},
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: 'systemWallpaper',
|
|
|
|
|
name: 'SystemWallpaper',
|
|
|
|
|
component: () => import('@/views/spring/wallpaper/system/index'),
|
|
|
|
|
meta: { title: '系统壁纸' },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'wallpaperType',
|
|
|
|
|
name: 'WallpaperType',
|
|
|
|
|
component: () => import('@/views/spring/wallpaper/type/index'),
|
|
|
|
|
meta: { title: '壁纸类型' },
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
2026-01-23 23:51:56 +08:00
|
|
|
{
|
|
|
|
|
path: 'avatar',
|
|
|
|
|
component: EmptyLayout,
|
|
|
|
|
alwaysShow: true,
|
|
|
|
|
redirect: 'noRedirect',
|
|
|
|
|
name: 'Avatar',
|
|
|
|
|
meta: {
|
|
|
|
|
title: '头像',
|
|
|
|
|
icon: 'user',
|
|
|
|
|
permissions: ['admin'],
|
|
|
|
|
},
|
|
|
|
|
children: [
|
2026-03-17 10:17:16 +08:00
|
|
|
{
|
|
|
|
|
path: 'avatarCategory',
|
|
|
|
|
name: 'AvatarCategory',
|
|
|
|
|
component: () => import('@/views/spring/avatar/category/index'),
|
|
|
|
|
meta: { title: '头像类型' },
|
|
|
|
|
},
|
2026-03-19 16:44:33 +08:00
|
|
|
{
|
|
|
|
|
path: 'systemAvatar',
|
|
|
|
|
name: 'SystemAvatar',
|
|
|
|
|
component: () => import('@/views/spring/avatar/systemAvatar/index'),
|
|
|
|
|
meta: { title: '系统头像' },
|
|
|
|
|
},
|
2026-01-24 09:45:18 +08:00
|
|
|
{
|
|
|
|
|
path: 'avatarFrame',
|
|
|
|
|
name: 'AvatarFrame',
|
|
|
|
|
component: () => import('@/views/spring/avatar/avatarFrame/index'),
|
|
|
|
|
meta: { title: '头像框' },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'avatarDecor',
|
|
|
|
|
name: 'AvatarDecor',
|
|
|
|
|
component: () => import('@/views/spring/avatar/avatarDecor/index'),
|
|
|
|
|
meta: { title: '头像挂饰' },
|
|
|
|
|
},
|
2026-02-09 01:43:01 +08:00
|
|
|
{
|
|
|
|
|
path: 'record',
|
|
|
|
|
name: 'AvatarRecord',
|
|
|
|
|
component: () => import('@/views/spring/avatar/record/index'),
|
|
|
|
|
meta: { title: '头像记录' },
|
|
|
|
|
},
|
2026-01-23 23:51:56 +08:00
|
|
|
],
|
|
|
|
|
},
|
2026-01-19 18:05:36 +08:00
|
|
|
{
|
|
|
|
|
path: 'fortune',
|
|
|
|
|
component: EmptyLayout,
|
|
|
|
|
alwaysShow: true,
|
|
|
|
|
redirect: 'noRedirect',
|
|
|
|
|
name: 'Fortune',
|
|
|
|
|
meta: {
|
|
|
|
|
title: '抽签',
|
|
|
|
|
icon: 'clover',
|
|
|
|
|
permissions: ['admin'],
|
|
|
|
|
},
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: 'card',
|
|
|
|
|
name: 'card',
|
|
|
|
|
component: () => import('@/views/spring/fortune/card/index'),
|
|
|
|
|
meta: { title: '抽签卡片' },
|
|
|
|
|
},
|
2026-02-09 01:43:01 +08:00
|
|
|
{
|
|
|
|
|
path: 'drawRecord',
|
|
|
|
|
name: 'DrawRecord',
|
|
|
|
|
component: () => import('@/views/spring/fortune/drawRecord/index'),
|
|
|
|
|
meta: { title: '抽签记录' },
|
|
|
|
|
},
|
2026-01-19 18:05:36 +08:00
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'user',
|
|
|
|
|
component: EmptyLayout,
|
|
|
|
|
alwaysShow: true,
|
|
|
|
|
redirect: 'noRedirect',
|
|
|
|
|
name: 'User',
|
|
|
|
|
meta: {
|
|
|
|
|
title: '用户',
|
|
|
|
|
icon: 'user',
|
|
|
|
|
permissions: ['admin'],
|
|
|
|
|
},
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: 'user',
|
|
|
|
|
name: 'User',
|
|
|
|
|
component: () => import('@/views/spring/user/user/index'),
|
|
|
|
|
meta: { title: '用户' },
|
|
|
|
|
},
|
2026-02-21 00:38:19 +08:00
|
|
|
{
|
|
|
|
|
path: 'vipUser',
|
|
|
|
|
name: 'VipUser',
|
|
|
|
|
component: () => import('@/views/spring/user/vipUser/index'),
|
|
|
|
|
meta: { title: '会员用户' },
|
|
|
|
|
},
|
2026-02-21 01:00:40 +08:00
|
|
|
{
|
|
|
|
|
path: 'userOrder',
|
|
|
|
|
name: 'UserOrder',
|
|
|
|
|
component: () => import('@/views/spring/user/order/index'),
|
|
|
|
|
meta: { title: '订单' },
|
|
|
|
|
},
|
2026-03-13 04:55:20 +08:00
|
|
|
{
|
|
|
|
|
path: 'adWatchRecord',
|
|
|
|
|
name: 'AdWatchRecord',
|
|
|
|
|
component: () => import('@/views/spring/user/adWatch/index'),
|
|
|
|
|
meta: { title: '广告观看记录' },
|
|
|
|
|
},
|
2026-03-13 05:21:57 +08:00
|
|
|
{
|
|
|
|
|
path: 'userSignLog',
|
|
|
|
|
name: 'UserSignLog',
|
|
|
|
|
component: () => import('@/views/spring/user/signLog/index'),
|
|
|
|
|
meta: { title: '用户签到记录' },
|
|
|
|
|
},
|
2026-01-19 18:05:36 +08:00
|
|
|
{
|
2026-04-21 22:46:53 +08:00
|
|
|
path: 'userDevice',
|
|
|
|
|
name: 'UserDevice',
|
2026-01-19 18:05:36 +08:00
|
|
|
component: () => import('@/views/spring/user/device/index'),
|
|
|
|
|
meta: { title: '设备' },
|
|
|
|
|
},
|
2026-01-30 18:50:12 +08:00
|
|
|
{
|
|
|
|
|
path: 'feedback',
|
|
|
|
|
name: 'Feedback',
|
|
|
|
|
component: () => import('@/views/spring/user/feedback/index'),
|
|
|
|
|
meta: { title: '用户反馈' },
|
|
|
|
|
},
|
2026-01-20 10:14:08 +08:00
|
|
|
{
|
|
|
|
|
path: 'shareRecord',
|
|
|
|
|
name: 'ShareRecord',
|
2026-01-25 13:33:08 +08:00
|
|
|
component: () => import('@/views/spring/user/shareRecord/index'),
|
2026-01-20 10:14:08 +08:00
|
|
|
meta: { title: '分享记录' },
|
|
|
|
|
},
|
2026-01-25 13:54:32 +08:00
|
|
|
{
|
|
|
|
|
path: 'saveRecord',
|
|
|
|
|
name: 'SaveRecord',
|
|
|
|
|
component: () => import('@/views/spring/user/saveRecord/index'),
|
|
|
|
|
meta: { title: '保存记录' },
|
|
|
|
|
},
|
2026-01-20 10:14:08 +08:00
|
|
|
{
|
|
|
|
|
path: 'viewRecord',
|
|
|
|
|
name: 'ViewRecord',
|
2026-01-25 13:33:08 +08:00
|
|
|
component: () => import('@/views/spring/user/viewRecord/index'),
|
2026-01-20 10:14:08 +08:00
|
|
|
meta: { title: '查看记录' },
|
|
|
|
|
},
|
2026-01-19 18:05:36 +08:00
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
2026-03-17 10:02:17 +08:00
|
|
|
{
|
|
|
|
|
path: '/systemManagement',
|
|
|
|
|
component: Layout,
|
|
|
|
|
redirect: 'noRedirect',
|
|
|
|
|
name: 'SystemManagement',
|
|
|
|
|
meta: { title: '系统', icon: 'users-cog', permissions: ['admin'] },
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: 'deviceManagement',
|
|
|
|
|
name: 'DeviceManagement',
|
|
|
|
|
component: () => import('@/views/systemManagement/device/index'),
|
|
|
|
|
meta: { title: '设备管理' },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'rewardManagement',
|
|
|
|
|
name: 'RewardManagement',
|
|
|
|
|
component: () => import('@/views/systemManagement/reward/index'),
|
|
|
|
|
meta: { title: '奖励管理' },
|
|
|
|
|
},
|
2026-05-27 23:35:27 +08:00
|
|
|
{
|
|
|
|
|
path: 'robotManagement',
|
|
|
|
|
name: 'RobotManagement',
|
|
|
|
|
component: () => import('@/views/systemManagement/robot/index'),
|
|
|
|
|
meta: { title: '机器人' },
|
|
|
|
|
},
|
2026-03-17 10:02:17 +08:00
|
|
|
{
|
|
|
|
|
path: 'abilityManagement',
|
|
|
|
|
name: 'AbilityManagement',
|
|
|
|
|
component: () => import('@/views/systemManagement/ability/index'),
|
|
|
|
|
meta: { title: '用户能力管理' },
|
|
|
|
|
},
|
2026-05-27 22:28:15 +08:00
|
|
|
{
|
|
|
|
|
path: 'userSignStat',
|
|
|
|
|
name: 'UserSignStat',
|
|
|
|
|
component: () => import('@/views/systemManagement/userSignStat/index'),
|
|
|
|
|
meta: { title: '用户签到信息' },
|
|
|
|
|
},
|
2026-03-17 10:02:17 +08:00
|
|
|
{
|
|
|
|
|
path: 'accessLogManagement',
|
|
|
|
|
name: 'AccessLogManagement',
|
|
|
|
|
component: () => import('@/views/personnelManagement/accessLogManagement/index'),
|
|
|
|
|
meta: { title: '访问日志' },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'suspiciousRequest',
|
|
|
|
|
name: 'SuspiciousRequest',
|
|
|
|
|
component: () => import('@/views/personnelManagement/suspiciousRequest/index'),
|
|
|
|
|
meta: { title: '异常请求' },
|
|
|
|
|
},
|
2026-04-22 21:51:49 +08:00
|
|
|
{
|
|
|
|
|
path: 'ipBlacklist',
|
|
|
|
|
name: 'IPBlacklist',
|
|
|
|
|
component: () => import('@/views/systemManagement/ipBlack/index'),
|
|
|
|
|
meta: { title: 'IP 黑名单' },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'userBlacklist',
|
|
|
|
|
name: 'UserBlacklist',
|
|
|
|
|
component: () => import('@/views/systemManagement/userBlack/index'),
|
|
|
|
|
meta: { title: '用户 黑名单' },
|
|
|
|
|
},
|
2026-03-17 10:02:17 +08:00
|
|
|
{
|
|
|
|
|
path: 'uploadedFileManagement',
|
|
|
|
|
name: 'UploadedFileManagement',
|
|
|
|
|
component: () => import('@/views/personnelManagement/uploadedFileManagement/index'),
|
|
|
|
|
meta: { title: '已上传文件' },
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
2026-02-06 14:21:14 +08:00
|
|
|
// {
|
|
|
|
|
// path: '/maomaotou',
|
|
|
|
|
// component: Layout,
|
|
|
|
|
// redirect: 'noRedirect',
|
|
|
|
|
// name: 'CxshMini',
|
|
|
|
|
// meta: { title: '猫猫头', icon: 'cat', permissions: ['admin'] },
|
|
|
|
|
// children: [
|
|
|
|
|
// {
|
|
|
|
|
// path: 'cat',
|
|
|
|
|
// component: EmptyLayout,
|
|
|
|
|
// alwaysShow: true,
|
|
|
|
|
// redirect: 'noRedirect',
|
|
|
|
|
// name: 'cat',
|
|
|
|
|
// meta: {
|
|
|
|
|
// title: '猫猫',
|
|
|
|
|
// icon: 'cat',
|
|
|
|
|
// permissions: ['admin'],
|
|
|
|
|
// },
|
|
|
|
|
// children: [
|
|
|
|
|
// {
|
|
|
|
|
// path: 'cat',
|
|
|
|
|
// name: 'Cat',
|
|
|
|
|
// component: () => import('@/views/maomao/cat/cat/index'),
|
|
|
|
|
// meta: { title: '猫猫' },
|
|
|
|
|
// },
|
|
|
|
|
// ],
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// path: 'post',
|
|
|
|
|
// component: EmptyLayout,
|
|
|
|
|
// alwaysShow: true,
|
|
|
|
|
// redirect: 'noRedirect',
|
|
|
|
|
// name: 'Post',
|
|
|
|
|
// meta: {
|
|
|
|
|
// title: '帖子',
|
|
|
|
|
// icon: 'post',
|
|
|
|
|
// permissions: ['admin'],
|
|
|
|
|
// },
|
|
|
|
|
// children: [
|
|
|
|
|
// {
|
|
|
|
|
// path: 'post',
|
|
|
|
|
// name: 'Post',
|
|
|
|
|
// component: () => import('@/views/maomao/post/post/index'),
|
|
|
|
|
// meta: { title: '帖子' },
|
|
|
|
|
// },
|
|
|
|
|
// ],
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// path: 'user',
|
|
|
|
|
// component: EmptyLayout,
|
|
|
|
|
// alwaysShow: true,
|
|
|
|
|
// redirect: 'noRedirect',
|
|
|
|
|
// name: 'User',
|
|
|
|
|
// meta: {
|
|
|
|
|
// title: '用户',
|
|
|
|
|
// icon: 'user',
|
|
|
|
|
// permissions: ['admin'],
|
|
|
|
|
// },
|
|
|
|
|
// children: [
|
|
|
|
|
// {
|
|
|
|
|
// path: 'user',
|
|
|
|
|
// name: 'User',
|
|
|
|
|
// component: () => import('@/views/maomao/user/user/index'),
|
|
|
|
|
// meta: { title: '用户' },
|
|
|
|
|
// },
|
|
|
|
|
// {
|
2026-04-21 22:46:53 +08:00
|
|
|
// path: 'userDevice',
|
|
|
|
|
// name: 'userDevice',
|
2026-02-06 14:21:14 +08:00
|
|
|
// component: () => import('@/views/maomao/user/chat/index'),
|
|
|
|
|
// meta: { title: '聊天' },
|
|
|
|
|
// },
|
|
|
|
|
// ],
|
|
|
|
|
// },
|
|
|
|
|
// ],
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// path: '/cxshMini',
|
|
|
|
|
// component: Layout,
|
|
|
|
|
// redirect: 'noRedirect',
|
|
|
|
|
// name: 'CxshMini',
|
|
|
|
|
// meta: { title: '小程序', icon: 'comment', permissions: ['admin', 'csxh_admin', 'csxh_user'] },
|
|
|
|
|
// children: [
|
|
|
|
|
// {
|
|
|
|
|
// path: 'home',
|
|
|
|
|
// component: EmptyLayout,
|
|
|
|
|
// alwaysShow: true,
|
|
|
|
|
// redirect: 'noRedirect',
|
|
|
|
|
// name: 'Home',
|
|
|
|
|
// meta: {
|
|
|
|
|
// title: '首页',
|
|
|
|
|
// icon: 'home',
|
|
|
|
|
// permissions: ['admin', 'csxh_admin', 'csxh_user'],
|
|
|
|
|
// },
|
|
|
|
|
// children: [
|
|
|
|
|
// {
|
|
|
|
|
// path: 'banner',
|
|
|
|
|
// name: 'Banner',
|
|
|
|
|
// component: () => import('@/views/cxshMini/home/banner/index'),
|
|
|
|
|
// meta: { title: '轮播图' },
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// path: 'news',
|
|
|
|
|
// name: 'News',
|
|
|
|
|
// component: () => import('@/views/cxshMini/home/news/index'),
|
|
|
|
|
// meta: { title: '花絮动态' },
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// path: 'createNews',
|
|
|
|
|
// name: 'CreateNews',
|
|
|
|
|
// component: () => import('@/views/cxshMini/home/createNews/index'),
|
|
|
|
|
// meta: { title: '新建花絮' },
|
|
|
|
|
// },
|
|
|
|
|
// ],
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// path: 'anli',
|
|
|
|
|
// component: EmptyLayout,
|
|
|
|
|
// alwaysShow: true,
|
|
|
|
|
// redirect: 'noRedirect',
|
|
|
|
|
// name: 'Anli',
|
|
|
|
|
// meta: {
|
|
|
|
|
// title: '精彩案例',
|
|
|
|
|
// icon: 'handshake',
|
|
|
|
|
// permissions: ['admin', 'csxh_admin', 'csxh_user'],
|
|
|
|
|
// },
|
|
|
|
|
// children: [
|
|
|
|
|
// {
|
|
|
|
|
// path: 'article',
|
|
|
|
|
// name: 'Article',
|
|
|
|
|
// component: () => import('@/views/cxshMini/anli/article/index'),
|
|
|
|
|
// meta: { title: '新建案例' },
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// path: 'list',
|
|
|
|
|
// name: 'List',
|
|
|
|
|
// component: () => import('@/views/cxshMini/anli/list/index'),
|
|
|
|
|
// meta: { title: '案例列表' },
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// path: 'category',
|
|
|
|
|
// name: 'Category',
|
|
|
|
|
// component: () => import('@/views/cxshMini/anli/category/index'),
|
|
|
|
|
// meta: { title: '案例分类' },
|
|
|
|
|
// },
|
|
|
|
|
// ],
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// path: 'lianxi',
|
|
|
|
|
// component: EmptyLayout,
|
|
|
|
|
// alwaysShow: true,
|
|
|
|
|
// redirect: 'noRedirect',
|
|
|
|
|
// name: 'Lianxi',
|
|
|
|
|
// meta: {
|
|
|
|
|
// title: '联系我们',
|
|
|
|
|
// icon: 'user-friends',
|
|
|
|
|
// permissions: ['admin', 'csxh_admin', 'csxh_user'],
|
|
|
|
|
// },
|
|
|
|
|
// children: [
|
|
|
|
|
// {
|
|
|
|
|
// path: 'member',
|
|
|
|
|
// name: 'Member',
|
|
|
|
|
// component: () => import('@/views/cxshMini/lianxi/member/index'),
|
|
|
|
|
// meta: { title: '成员' },
|
|
|
|
|
// },
|
|
|
|
|
// ],
|
|
|
|
|
// },
|
|
|
|
|
// ],
|
|
|
|
|
// },
|
2025-03-28 18:28:06 +08:00
|
|
|
/* {
|
|
|
|
|
path: "/test",
|
|
|
|
|
component: Layout,
|
|
|
|
|
redirect: "noRedirect",
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: "test",
|
|
|
|
|
name: "Test",
|
|
|
|
|
component: () => import("@/views/test/index"),
|
|
|
|
|
meta: {
|
|
|
|
|
title: "test",
|
|
|
|
|
icon: "marker",
|
|
|
|
|
permissions: ["admin"],
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
}, */
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
path: '/vab',
|
|
|
|
|
component: Layout,
|
|
|
|
|
redirect: 'noRedirect',
|
|
|
|
|
name: 'Vab',
|
|
|
|
|
alwaysShow: true,
|
2025-04-30 23:34:59 +08:00
|
|
|
meta: { title: '组件', icon: 'box-open', permissions: ['admin'] },
|
2025-03-28 18:28:06 +08:00
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: 'permissions',
|
|
|
|
|
name: 'Permission',
|
|
|
|
|
component: () => import('@/views/vab/permissions/index'),
|
|
|
|
|
meta: {
|
|
|
|
|
title: '角色权限',
|
|
|
|
|
permissions: ['admin', 'editor'],
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'icon',
|
|
|
|
|
component: EmptyLayout,
|
|
|
|
|
redirect: 'noRedirect',
|
|
|
|
|
name: 'Icon',
|
|
|
|
|
meta: {
|
|
|
|
|
title: '图标',
|
|
|
|
|
permissions: ['admin'],
|
|
|
|
|
},
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: 'awesomeIcon',
|
|
|
|
|
name: 'AwesomeIcon',
|
|
|
|
|
component: () => import('@/views/vab/icon/index'),
|
|
|
|
|
meta: { title: '常规图标' },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'colorfulIcon',
|
|
|
|
|
name: 'ColorfulIcon',
|
|
|
|
|
component: () => import('@/views/vab/icon/colorfulIcon'),
|
|
|
|
|
meta: { title: '多彩图标' },
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'table',
|
|
|
|
|
component: () => import('@/views/vab/table/index'),
|
|
|
|
|
name: 'Table',
|
|
|
|
|
meta: {
|
|
|
|
|
title: '表格',
|
|
|
|
|
permissions: ['admin'],
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
path: 'webSocket',
|
|
|
|
|
name: 'WebSocket',
|
|
|
|
|
component: () => import('@/views/vab/webSocket/index'),
|
|
|
|
|
meta: { title: 'webSocket', permissions: ['admin'] },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'form',
|
|
|
|
|
name: 'Form',
|
|
|
|
|
component: () => import('@/views/vab/form/index'),
|
|
|
|
|
meta: { title: '表单', permissions: ['admin'] },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'element',
|
|
|
|
|
name: 'Element',
|
|
|
|
|
component: () => import('@/views/vab/element/index'),
|
|
|
|
|
meta: { title: '常用组件', permissions: ['admin'] },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'tree',
|
|
|
|
|
name: 'Tree',
|
|
|
|
|
component: () => import('@/views/vab/tree/index'),
|
|
|
|
|
meta: { title: '树', permissions: ['admin'] },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'menu1',
|
|
|
|
|
component: () => import('@/views/vab/nested/menu1/index'),
|
|
|
|
|
name: 'Menu1',
|
|
|
|
|
alwaysShow: true,
|
|
|
|
|
meta: {
|
|
|
|
|
title: '嵌套路由 1',
|
|
|
|
|
permissions: ['admin'],
|
|
|
|
|
},
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: 'menu1-1',
|
|
|
|
|
name: 'Menu1-1',
|
|
|
|
|
alwaysShow: true,
|
|
|
|
|
meta: { title: '嵌套路由 1-1' },
|
|
|
|
|
component: () => import('@/views/vab/nested/menu1/menu1-1/index'),
|
|
|
|
|
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: 'menu1-1-1',
|
|
|
|
|
name: 'Menu1-1-1',
|
|
|
|
|
meta: { title: '嵌套路由 1-1-1' },
|
|
|
|
|
component: () => import('@/views/vab/nested/menu1/menu1-1/menu1-1-1/index'),
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'loading',
|
|
|
|
|
name: 'Loading',
|
|
|
|
|
component: () => import('@/views/vab/loading/index'),
|
|
|
|
|
meta: { title: 'loading', permissions: ['admin'] },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'backToTop',
|
|
|
|
|
name: 'BackToTop',
|
|
|
|
|
component: () => import('@/views/vab/backToTop/index'),
|
|
|
|
|
meta: { title: '返回顶部', permissions: ['admin'] },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'lodash',
|
|
|
|
|
name: 'Lodash',
|
|
|
|
|
component: () => import('@/views/vab/lodash/index'),
|
|
|
|
|
meta: { title: 'lodash', permissions: ['admin'] },
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
path: 'upload',
|
|
|
|
|
name: 'Upload',
|
|
|
|
|
component: () => import('@/views/vab/upload/index'),
|
|
|
|
|
meta: { title: '上传', permissions: ['admin'] },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'log',
|
|
|
|
|
name: 'Log',
|
|
|
|
|
component: () => import('@/views/vab/errorLog/index'),
|
|
|
|
|
meta: { title: '错误日志模拟', permissions: ['admin'] },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'https://github.com/zxwk1998/vue-admin-better/',
|
|
|
|
|
name: 'ExternalLink',
|
|
|
|
|
meta: {
|
|
|
|
|
title: '外链',
|
|
|
|
|
target: '_blank',
|
|
|
|
|
permissions: ['admin', 'editor'],
|
|
|
|
|
badge: 'New',
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'more',
|
|
|
|
|
name: 'More',
|
|
|
|
|
component: () => import('@/views/vab/more/index'),
|
|
|
|
|
meta: { title: '关于', permissions: ['admin'] },
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/personnelManagement',
|
|
|
|
|
component: Layout,
|
|
|
|
|
redirect: 'noRedirect',
|
|
|
|
|
name: 'PersonnelManagement',
|
|
|
|
|
meta: { title: '配置', icon: 'users-cog', permissions: ['admin'] },
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: 'userManagement',
|
|
|
|
|
name: 'UserManagement',
|
|
|
|
|
component: () => import('@/views/personnelManagement/userManagement/index'),
|
|
|
|
|
meta: { title: '用户管理' },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'appManagement',
|
|
|
|
|
name: 'AppManagement',
|
|
|
|
|
component: () => import('@/views/personnelManagement/appManagement/index'),
|
|
|
|
|
meta: { title: '应用管理' },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: 'roleManagement',
|
|
|
|
|
name: 'RoleManagement',
|
|
|
|
|
component: () => import('@/views/personnelManagement/roleManagement/index'),
|
|
|
|
|
meta: { title: '角色管理' },
|
|
|
|
|
},
|
2026-01-19 18:05:36 +08:00
|
|
|
],
|
|
|
|
|
},
|
2026-03-17 10:02:17 +08:00
|
|
|
|
2025-04-30 23:34:59 +08:00
|
|
|
// {
|
|
|
|
|
// path: '/mall',
|
|
|
|
|
// component: Layout,
|
|
|
|
|
// redirect: 'noRedirect',
|
|
|
|
|
// name: 'Mall',
|
|
|
|
|
// meta: {
|
|
|
|
|
// title: '商城',
|
|
|
|
|
// icon: 'shopping-cart',
|
|
|
|
|
// permissions: ['admin'],
|
|
|
|
|
// },
|
2025-03-28 18:28:06 +08:00
|
|
|
|
2025-04-30 23:34:59 +08:00
|
|
|
// children: [
|
|
|
|
|
// {
|
|
|
|
|
// path: 'pay',
|
|
|
|
|
// name: 'Pay',
|
|
|
|
|
// component: () => import('@/views/mall/pay/index'),
|
|
|
|
|
// meta: {
|
|
|
|
|
// title: '支付',
|
|
|
|
|
// noKeepAlive: true,
|
|
|
|
|
// },
|
|
|
|
|
// children: null,
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// path: 'goodsList',
|
|
|
|
|
// name: 'GoodsList',
|
|
|
|
|
// component: () => import('@/views/mall/goodsList/index'),
|
|
|
|
|
// meta: {
|
|
|
|
|
// title: '商品列表',
|
|
|
|
|
// },
|
|
|
|
|
// },
|
|
|
|
|
// ],
|
|
|
|
|
// },
|
2025-03-28 18:28:06 +08:00
|
|
|
{
|
|
|
|
|
path: '/error',
|
|
|
|
|
component: EmptyLayout,
|
|
|
|
|
redirect: 'noRedirect',
|
|
|
|
|
name: 'Error',
|
2025-04-30 23:34:59 +08:00
|
|
|
hidden: true,
|
2025-03-28 18:28:06 +08:00
|
|
|
meta: { title: '错误页', icon: 'bug' },
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: '401',
|
|
|
|
|
name: 'Error401',
|
|
|
|
|
component: () => import('@/views/401'),
|
|
|
|
|
meta: { title: '401' },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '404',
|
|
|
|
|
name: 'Error404',
|
|
|
|
|
component: () => import('@/views/404'),
|
|
|
|
|
meta: { title: '404' },
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '*',
|
|
|
|
|
redirect: '/404',
|
|
|
|
|
hidden: true,
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
const router = new VueRouter({
|
|
|
|
|
base: publicPath,
|
|
|
|
|
mode: routerMode,
|
|
|
|
|
scrollBehavior: () => ({
|
|
|
|
|
y: 0,
|
|
|
|
|
}),
|
|
|
|
|
routes: constantRoutes,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
export function resetRouter() {
|
|
|
|
|
location.reload()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default router
|