Files
hfb_sys/frontend/src/router/adminRoutes.ts
T
ymlandClaude Opus 4.6 29d7648a2b 添加管理后台公告管理功能
## 新增功能
- 管理后台公告管理页面(/admin/announcements)
- 公告 CRUD 操作(创建、编辑、删除)
- 公告发布和归档功能
- 按状态和分类筛选
- 在侧边栏添加公告管理入口

## 功能特性
- 支持设置优先级、置顶、重要标记
- 富文本编辑器(支持 Markdown/HTML)
- 实时查看浏览次数
- 权限控制(announcement:view 和 announcement:manage)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-05 20:52:12 +08:00

104 lines
2.8 KiB
TypeScript

import type { RouteRecordRaw } from 'vue-router'
const adminMeta = { layout: 'admin', requiresAdmin: true }
export const adminRoutes: RouteRecordRaw[] = [
{ path: '/admin', redirect: '/admin/dashboard' },
{
path: '/admin/login',
name: 'admin-login',
component: () => import('@/features/admin/views/AdminLoginView.vue'),
meta: { layout: 'blank' },
},
{
path: '/admin/dashboard',
name: 'admin-dashboard',
component: () => import('@/features/admin/views/AdminDashboardView.vue'),
meta: adminMeta,
},
{
path: '/admin/users',
name: 'admin-users',
component: () => import('@/features/admin/views/AdminUsersView.vue'),
meta: adminMeta,
},
{
path: '/admin/orders',
name: 'admin-orders',
component: () => import('@/features/admin/views/AdminOrdersView.vue'),
meta: adminMeta,
},
{
path: '/admin/orders/:id',
name: 'admin-order-detail',
component: () => import('@/features/admin/views/AdminOrderDetailView.vue'),
meta: adminMeta,
},
{
path: '/admin/listings',
name: 'admin-listings',
component: () => import('@/features/admin/views/AdminListingsView.vue'),
meta: adminMeta,
},
{
path: '/admin/listings/:id',
name: 'admin-listing-detail',
component: () => import('@/features/admin/views/AdminListingDetailView.vue'),
meta: adminMeta,
},
{
path: '/admin/listings/review',
name: 'admin-listing-review',
component: () => import('@/features/admin/views/AdminListingReviewView.vue'),
meta: adminMeta,
},
{
path: '/admin/disputes',
name: 'admin-disputes',
component: () => import('@/features/admin/views/AdminDisputesView.vue'),
meta: adminMeta,
},
{
path: '/admin/chats',
name: 'admin-chats',
component: () => import('@/features/admin/views/AdminChatsView.vue'),
meta: adminMeta,
},
{
path: '/admin/wallet-ledger',
name: 'admin-wallet-ledger',
component: () => import('@/features/admin/views/AdminWalletLedgerView.vue'),
meta: adminMeta,
},
{
path: '/admin/system-configs',
name: 'admin-system-configs',
component: () => import('@/features/admin/views/AdminSystemConfigsView.vue'),
meta: adminMeta,
},
{
path: '/admin/audit-logs',
name: 'admin-audit-logs',
component: () => import('@/features/admin/views/AdminAuditLogsView.vue'),
meta: adminMeta,
},
{
path: '/admin/admin-users',
name: 'admin-admin-users',
component: () => import('@/features/admin/views/AdminMgrUsersView.vue'),
meta: adminMeta,
},
{
path: '/admin/roles',
name: 'admin-roles',
component: () => import('@/features/admin/views/AdminRolesView.vue'),
meta: adminMeta,
},
{
path: '/admin/announcements',
name: 'admin-announcements',
component: () => import('@/features/admin/views/AdminAnnouncementsView.vue'),
meta: adminMeta,
},
]