导入 AKSRT 主题开发源码
This commit is contained in:
1 parent
9681dd3d48
commit
1268a55dd0
595 files changed
+127705
No files matched your search
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* Admin sections — central menu and route registry.
|
||||
*
|
||||
* Sidebar menu, route metadata, schema domain mapping, and deferred-page
|
||||
* planning details are all registered in domain modules to avoid drift between
|
||||
* the navigation tree and router definitions while keeping each file focused.
|
||||
*/
|
||||
|
||||
export { ADMIN_SECTIONS, getAllAdminPages } from './sections/index.js'
|
||||
export { renderFaIcon, customPage, schemaPage, deferredPage } from './sections/helpers.js'
|
||||
@@ -0,0 +1,20 @@
|
||||
import { renderFaIcon, customPage } from './helpers'
|
||||
|
||||
export const docsSection = {
|
||||
key: 'tools-compat',
|
||||
label: '兼容&工具',
|
||||
icon: renderFaIcon('fas fa-toolbox'),
|
||||
route: '/tools',
|
||||
hidden: true,
|
||||
children: [
|
||||
customPage({
|
||||
key: 'docs-dashboard',
|
||||
name: 'DocsDashboard',
|
||||
label: '文档中心',
|
||||
route: '/docs',
|
||||
component: 'DocsPage',
|
||||
title: '文档中心',
|
||||
desc: '更新日志、文档链接和发布说明。',
|
||||
}),
|
||||
],
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
import { renderFaIcon, schemaPage, customPage } from './helpers'
|
||||
|
||||
export const extensionsSection = {
|
||||
key: 'extensions',
|
||||
label: '扩展&增强',
|
||||
icon: renderFaIcon('fas fa-puzzle-piece'),
|
||||
route: '/extensions',
|
||||
children: [
|
||||
schemaPage({
|
||||
key: 'extensions-ip',
|
||||
name: 'ExtensionsIp',
|
||||
label: 'IP归属地',
|
||||
route: '/extensions/ip',
|
||||
title: 'IP归属地',
|
||||
desc: '配置 IP 数据源、缓存策略和前台归属地展示。',
|
||||
canonicalDomain: 'extensions',
|
||||
section: 'ip',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'extensions-audit',
|
||||
name: 'ExtensionsAudit',
|
||||
label: 'API内容审核',
|
||||
route: '/extensions/audit',
|
||||
title: 'API内容审核',
|
||||
desc: '配置第三方内容审核 API 接入、审核范围和失败回退策略。',
|
||||
canonicalDomain: 'extensions',
|
||||
section: 'audit',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'extensions-push',
|
||||
name: 'ExtensionsPush',
|
||||
label: '百度推送',
|
||||
route: '/extensions/push',
|
||||
title: '百度推送',
|
||||
desc: '配置搜索引擎主动推送、批量提交和状态追踪。',
|
||||
canonicalDomain: 'extensions',
|
||||
section: 'push',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'extensions-docs-mode',
|
||||
name: 'ExtensionsDocsMode',
|
||||
label: '文档模式',
|
||||
route: '/extensions/docs-mode',
|
||||
title: '文档模式',
|
||||
desc: '文档专题内容模式与页面增强。',
|
||||
canonicalDomain: 'extensions',
|
||||
section: 'docs-mode',
|
||||
}),
|
||||
customPage({
|
||||
key: 'extensions-security',
|
||||
name: 'ExtensionsSecurity',
|
||||
label: '网站安全',
|
||||
route: '/extensions/security',
|
||||
component: 'ExtensionSecurity',
|
||||
title: '网站安全',
|
||||
desc: '扩展安全策略和第三方安全集成。',
|
||||
}),
|
||||
customPage({
|
||||
key: 'extensions-tools',
|
||||
name: 'ExtensionsTools',
|
||||
label: '系统工具',
|
||||
route: '/extensions/tools',
|
||||
component: 'ExtensionTools',
|
||||
title: '系统工具',
|
||||
desc: '额外运维工具与扩展能力。',
|
||||
}),
|
||||
customPage({
|
||||
key: 'extensions-ai',
|
||||
name: 'ExtensionAI',
|
||||
label: 'AI 子系统',
|
||||
route: '/extensions/ai',
|
||||
component: 'ExtensionAI',
|
||||
status: 'available',
|
||||
title: 'AI 子系统',
|
||||
desc: '配置 AI 内容辅助能力。',
|
||||
canonicalDomain: 'extensions',
|
||||
section: 'ai',
|
||||
}),
|
||||
],
|
||||
}
|
||||
@@ -0,0 +1,165 @@
|
||||
import { renderFaIcon, schemaPage, customPage } from './helpers'
|
||||
|
||||
export const forumSection = {
|
||||
key: 'forum',
|
||||
label: '社区&论坛',
|
||||
icon: renderFaIcon('fas fa-comments'),
|
||||
route: '/forum',
|
||||
children: [
|
||||
schemaPage({
|
||||
key: 'forum-settings-basic',
|
||||
name: 'ForumSettingsBasic',
|
||||
label: '基础设置',
|
||||
route: '/forum/settings',
|
||||
title: '论坛基础设置',
|
||||
desc: '论坛总开关、管理员和名称定义。',
|
||||
canonicalDomain: 'forum',
|
||||
section: 'basic',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'forum-settings-names',
|
||||
name: 'ForumSettingsNames',
|
||||
label: '名称定义',
|
||||
route: '/forum/settings/names',
|
||||
title: '名称定义',
|
||||
desc: '自定义论坛各实体的显示名称。',
|
||||
canonicalDomain: 'forum',
|
||||
section: 'names',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'forum-settings-homepage',
|
||||
name: 'ForumSettingsHomepage',
|
||||
label: '首页设置',
|
||||
route: '/forum/settings/homepage',
|
||||
title: '论坛首页设置',
|
||||
desc: '首页 Tab 引擎、快速发帖入口和移动端交互配置。',
|
||||
canonicalDomain: 'forum',
|
||||
section: 'homepage',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'forum-settings-board-page',
|
||||
name: 'ForumSettingsBoardPage',
|
||||
label: '版块页面',
|
||||
route: '/forum/settings/board-page',
|
||||
title: '版块页面设置',
|
||||
desc: '版块页布局、Tab 栏目和移动端交互配置。',
|
||||
canonicalDomain: 'forum',
|
||||
section: 'board_page',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'forum-settings-post-page',
|
||||
name: 'ForumSettingsPostPage',
|
||||
label: '帖子页面',
|
||||
route: '/forum/settings/post-page',
|
||||
title: '帖子页面设置',
|
||||
desc: '面包屑、评分、高度限制和封面配置。',
|
||||
canonicalDomain: 'forum',
|
||||
section: 'post_page',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'forum-settings-reply',
|
||||
name: 'ForumSettingsReply',
|
||||
label: '回复评论',
|
||||
route: '/forum/settings/reply',
|
||||
title: '回复评论设置',
|
||||
desc: '回复翻页方式、工具栏功能和快捷回复配置。',
|
||||
canonicalDomain: 'forum',
|
||||
section: 'reply',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'forum-settings-permissions',
|
||||
name: 'ForumSettingsPermissions',
|
||||
label: '权限配置',
|
||||
route: '/forum/settings/permissions',
|
||||
title: '论坛权限配置',
|
||||
desc: '发帖限制、帖子付费和版块付费关注。',
|
||||
canonicalDomain: 'forum',
|
||||
section: 'permissions',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'forum-settings-other',
|
||||
name: 'ForumSettingsOther',
|
||||
label: '其它设置',
|
||||
route: '/forum/settings/other',
|
||||
title: '论坛其它设置',
|
||||
desc: '投票、版主申请说明、标题字数和 URL 别名。',
|
||||
canonicalDomain: 'forum',
|
||||
section: 'other',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'forum-settings-upload',
|
||||
name: 'ForumSettingsUpload',
|
||||
label: '上传权限',
|
||||
route: '/forum/settings/upload',
|
||||
title: '上传权限设置',
|
||||
desc: '图片、视频和文件上传大小与格式限制。',
|
||||
canonicalDomain: 'forum',
|
||||
section: 'upload',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'forum-settings-credits',
|
||||
name: 'ForumSettingsCredits',
|
||||
label: '积分设置',
|
||||
route: '/forum/settings/credits',
|
||||
title: '论坛积分设置',
|
||||
desc: '论坛行为积分奖励矩阵和每日上限。',
|
||||
canonicalDomain: 'forum',
|
||||
section: 'credits',
|
||||
}),
|
||||
customPage({
|
||||
key: 'forum-boards',
|
||||
name: 'ForumBoards',
|
||||
label: '板块管理',
|
||||
route: '/forum/boards',
|
||||
component: 'ForumBoards',
|
||||
title: '板块管理',
|
||||
desc: '创建、编辑和排序论坛板块。',
|
||||
canonicalDomain: 'forum',
|
||||
section: 'boards',
|
||||
}),
|
||||
customPage({
|
||||
key: 'forum-topics',
|
||||
name: 'ForumTopics',
|
||||
label: '主题治理',
|
||||
route: '/forum/topics',
|
||||
component: 'ForumTopics',
|
||||
title: '主题治理',
|
||||
desc: '集中处理主题审核、可见性、版块移动和治理状态。',
|
||||
canonicalDomain: 'forum',
|
||||
section: 'topics',
|
||||
}),
|
||||
customPage({
|
||||
key: 'forum-moderator-applications',
|
||||
name: 'ForumModeratorApplications',
|
||||
label: '版主申请',
|
||||
route: '/forum/moderator-applications',
|
||||
component: 'ForumModeratorApplications',
|
||||
title: '版主申请',
|
||||
desc: '处理前台版主申请和审核结果反馈。',
|
||||
canonicalDomain: 'forum',
|
||||
section: 'moderator-applications',
|
||||
}),
|
||||
customPage({
|
||||
key: 'forum-moderators',
|
||||
name: 'ForumModerators',
|
||||
label: '版主管理',
|
||||
route: '/forum/moderators',
|
||||
component: 'ForumModerators',
|
||||
title: '版主管理',
|
||||
desc: '为每个论坛版块分配和管理版主。',
|
||||
canonicalDomain: 'forum',
|
||||
section: 'moderators',
|
||||
}),
|
||||
customPage({
|
||||
key: 'forum-dashboard',
|
||||
name: 'ForumDashboard',
|
||||
label: '论坛概览',
|
||||
route: '/forum',
|
||||
component: 'ForumDashboard',
|
||||
title: '论坛概览',
|
||||
desc: '社区讨论、帖子管理、版块配置等论坛功能概览。',
|
||||
canonicalDomain: 'forum',
|
||||
section: 'dashboard',
|
||||
}),
|
||||
],
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
import { renderFaIcon, schemaPage, customPage } from './helpers'
|
||||
|
||||
export const globalSection = {
|
||||
key: 'global',
|
||||
label: '全局&功能',
|
||||
icon: renderFaIcon('fas fa-globe'),
|
||||
route: '/global',
|
||||
children: [
|
||||
schemaPage({
|
||||
key: 'global-common',
|
||||
name: 'GlobalCommon',
|
||||
label: '常用功能',
|
||||
route: '/global/common',
|
||||
title: '常用功能',
|
||||
desc: '评论、性能、头像源与备案等全局基础配置。',
|
||||
canonicalDomain: 'global',
|
||||
section: 'common',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'global-logo',
|
||||
name: 'GlobalLogo',
|
||||
label: 'LOGO图像',
|
||||
route: '/global/logo',
|
||||
title: 'LOGO图像',
|
||||
desc: '管理站点 Logo、站点图标和品牌标识。',
|
||||
canonicalDomain: 'global',
|
||||
section: 'logo',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'global-seo',
|
||||
name: 'GlobalSeo',
|
||||
label: 'SEO优化',
|
||||
route: '/global/seo',
|
||||
title: 'SEO优化',
|
||||
desc: '站点标题、描述、关键词、Sitemap 等搜索引擎优化设置。',
|
||||
canonicalDomain: 'global',
|
||||
section: 'seo',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'global-layout',
|
||||
name: 'GlobalLayout',
|
||||
label: '显示&布局',
|
||||
route: '/global/layout',
|
||||
title: '显示&布局',
|
||||
desc: '全局布局风格、颜色方案、字体设置。',
|
||||
canonicalDomain: 'global',
|
||||
section: 'layout',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'global-search',
|
||||
name: 'GlobalSearch',
|
||||
label: '搜索功能',
|
||||
route: '/global/search',
|
||||
title: '搜索功能',
|
||||
desc: '搜索页面样式、搜索建议、热门搜索配置。',
|
||||
canonicalDomain: 'global',
|
||||
section: 'search',
|
||||
}),
|
||||
customPage({
|
||||
key: 'global-tabbar',
|
||||
name: 'GlobalTabbar',
|
||||
label: '手机底部Tab',
|
||||
route: '/global/tabbar',
|
||||
title: '手机底部Tab',
|
||||
desc: '移动端底部导航栏配置。',
|
||||
component: 'FooterTabbarSettings',
|
||||
}),
|
||||
customPage({
|
||||
key: 'global-floating',
|
||||
name: 'GlobalFloating',
|
||||
label: '右侧悬浮按钮',
|
||||
route: '/global/floating',
|
||||
title: '右侧悬浮按钮',
|
||||
desc: '页面右侧浮动按钮的显示与配置。',
|
||||
component: 'FloatingButtonsSettings',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'global-i18n',
|
||||
name: 'GlobalI18n',
|
||||
label: '多语言翻译',
|
||||
route: '/global/i18n',
|
||||
title: '多语言翻译',
|
||||
desc: '配置站点语言、语言切换器和翻译管理。',
|
||||
canonicalDomain: 'global',
|
||||
section: 'i18n',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'global-email',
|
||||
name: 'GlobalEmail',
|
||||
label: 'Email邮件',
|
||||
route: '/global/email',
|
||||
title: 'Email邮件',
|
||||
desc: 'SMTP 发信配置、邮件模板与测试。',
|
||||
canonicalDomain: 'global',
|
||||
section: 'email',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'global-custom-code',
|
||||
name: 'GlobalCustomCode',
|
||||
label: '自定义代码',
|
||||
route: '/global/custom-code',
|
||||
title: '自定义代码',
|
||||
desc: '自定义 CSS、JS 代码注入。',
|
||||
canonicalDomain: 'global',
|
||||
section: 'custom-code',
|
||||
}),
|
||||
],
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
import { h } from 'vue'
|
||||
|
||||
export function renderFaIcon(faClass) {
|
||||
return () => h('i', { class: faClass, style: 'font-size:18px;width:18px;text-align:center' })
|
||||
}
|
||||
|
||||
function sectionPage(config) {
|
||||
return {
|
||||
status: 'available',
|
||||
component: 'SchemaPage',
|
||||
canonicalDomain: '',
|
||||
section: '',
|
||||
phase: '',
|
||||
dependsOn: [],
|
||||
reason: '',
|
||||
features: [],
|
||||
iconClass: '',
|
||||
...config,
|
||||
}
|
||||
}
|
||||
|
||||
export function customPage(config) {
|
||||
return sectionPage(config)
|
||||
}
|
||||
|
||||
export function schemaPage(config) {
|
||||
return sectionPage({
|
||||
component: 'SchemaPage',
|
||||
...config,
|
||||
})
|
||||
}
|
||||
|
||||
export function deferredPage(config) {
|
||||
return sectionPage({
|
||||
component: 'DeferredPage',
|
||||
status: 'deferred',
|
||||
...config,
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
import { globalSection } from './global'
|
||||
import { pageDisplaySection } from './page-display'
|
||||
import { postListSection } from './post-list'
|
||||
import { permissionsSection } from './permissions'
|
||||
import { usersSection } from './users'
|
||||
import { paymentSection } from './payment'
|
||||
import { shopSection } from './shop'
|
||||
import { forumSection } from './forum'
|
||||
import { extensionsSection } from './extensions'
|
||||
import { themeInfoSection } from './theme-info'
|
||||
import { docsSection } from './docs'
|
||||
import { toolsSection } from './tools'
|
||||
|
||||
const primarySections = [
|
||||
globalSection,
|
||||
pageDisplaySection,
|
||||
postListSection,
|
||||
permissionsSection,
|
||||
usersSection,
|
||||
paymentSection,
|
||||
shopSection,
|
||||
forumSection,
|
||||
extensionsSection,
|
||||
]
|
||||
|
||||
const compatChildren = [
|
||||
...(toolsSection.children || []),
|
||||
...(themeInfoSection.children || []),
|
||||
...(docsSection.children || []),
|
||||
]
|
||||
|
||||
export const compatToolsSection = {
|
||||
key: 'tools-compat',
|
||||
label: '兼容&工具',
|
||||
icon: toolsSection.icon,
|
||||
route: '/tools',
|
||||
children: compatChildren,
|
||||
}
|
||||
|
||||
export const ADMIN_SECTIONS = [
|
||||
...primarySections,
|
||||
compatToolsSection,
|
||||
]
|
||||
|
||||
export function getAllAdminPages() {
|
||||
const pages = []
|
||||
|
||||
for (const section of ADMIN_SECTIONS) {
|
||||
if (section.placeholder) {
|
||||
pages.push({
|
||||
sectionKey: section.key,
|
||||
...section,
|
||||
})
|
||||
continue
|
||||
}
|
||||
|
||||
for (const child of section.children || []) {
|
||||
pages.push({
|
||||
sectionKey: section.key,
|
||||
...child,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return pages
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
import { renderFaIcon, schemaPage, customPage } from './helpers'
|
||||
|
||||
export const pageDisplaySection = {
|
||||
key: 'page-display',
|
||||
label: '页面&显示',
|
||||
icon: renderFaIcon('fas fa-desktop'),
|
||||
route: '/page-display',
|
||||
children: [
|
||||
schemaPage({
|
||||
key: 'page-display-header-nav',
|
||||
name: 'PageDisplayHeaderNav',
|
||||
label: '顶部导航栏',
|
||||
route: '/page-display/header-nav',
|
||||
title: '顶部导航栏',
|
||||
desc: '导航栏布局、菜单位置、LOGO 与搜索入口配置。',
|
||||
canonicalDomain: 'page_display',
|
||||
section: 'header-nav',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'page-display-background',
|
||||
name: 'PageDisplayBackground',
|
||||
label: '全局背景',
|
||||
route: '/page-display/background',
|
||||
title: '全局背景',
|
||||
desc: '配置站点全局背景图、背景色、暗色模式背景和遮罩。',
|
||||
canonicalDomain: 'page_display',
|
||||
section: 'background',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'page-display-menu-decoration',
|
||||
name: 'PageDisplayMenuDecoration',
|
||||
label: '菜单装饰',
|
||||
route: '/page-display/menu-decoration',
|
||||
title: '菜单装饰',
|
||||
desc: '配置导航菜单的图标、徽章、下拉样式和图文卡片子菜单。',
|
||||
canonicalDomain: 'page_display',
|
||||
section: 'menu-decoration',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'page-display-header-components',
|
||||
name: 'PageDisplayHeaderComponents',
|
||||
label: '顶部多功能组件',
|
||||
route: '/page-display/header-components',
|
||||
title: '顶部多功能组件',
|
||||
desc: '顶部轮播、图标卡片、搜索条、公告条等组件配置。',
|
||||
canonicalDomain: 'page_display',
|
||||
section: 'header-components',
|
||||
}),
|
||||
customPage({
|
||||
key: 'page-display-footer',
|
||||
name: 'PageDisplayFooter',
|
||||
label: '底部页脚',
|
||||
route: '/page-display/footer',
|
||||
title: '底部页脚',
|
||||
desc: '页脚布局、友链、版权信息配置。',
|
||||
component: 'FooterSettings',
|
||||
}),
|
||||
customPage({
|
||||
key: 'page-display-homepage',
|
||||
name: 'PageDisplayHomepage',
|
||||
label: '首页配置',
|
||||
route: '/page-display/homepage',
|
||||
title: '首页配置',
|
||||
desc: '首页模块、布局、推荐位配置。',
|
||||
component: 'HomepageSettings',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'page-display-category',
|
||||
name: 'PageDisplayCategory',
|
||||
label: '分类页面',
|
||||
route: '/page-display/category',
|
||||
title: '分类页面',
|
||||
desc: '分类归档页的头图、简介、列表模式、侧栏配置。',
|
||||
canonicalDomain: 'page_display',
|
||||
section: 'category',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'page-display-tag',
|
||||
name: 'PageDisplayTag',
|
||||
label: '标签页面',
|
||||
route: '/page-display/tag',
|
||||
title: '标签页面',
|
||||
desc: '标签归档页的展示样式与配置。',
|
||||
canonicalDomain: 'page_display',
|
||||
section: 'tag',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'page-display-special',
|
||||
name: 'PageDisplaySpecial',
|
||||
label: '专题页面',
|
||||
route: '/page-display/special',
|
||||
title: '专题页面',
|
||||
desc: '配置专题聚合页的封面、摘要、布局、聚合规则和子页面展示策略。',
|
||||
canonicalDomain: 'page_display',
|
||||
section: 'special',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'page-display-user-home',
|
||||
name: 'PageDisplayUserHome',
|
||||
label: '用户主页',
|
||||
route: '/page-display/user-home',
|
||||
title: '用户主页',
|
||||
desc: '用户公开主页的布局与展示配置。',
|
||||
canonicalDomain: 'page_display',
|
||||
section: 'user-home',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'page-display-other',
|
||||
name: 'PageDisplayOther',
|
||||
label: '其它页面',
|
||||
route: '/page-display/other',
|
||||
title: '其它页面',
|
||||
desc: '404 页面、搜索结果页等其它页面配置。',
|
||||
canonicalDomain: 'page_display',
|
||||
section: 'other',
|
||||
}),
|
||||
],
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
import { renderFaIcon, schemaPage, customPage } from './helpers'
|
||||
|
||||
export const paymentSection = {
|
||||
key: 'payment',
|
||||
label: '支付&付费',
|
||||
icon: renderFaIcon('fas fa-wallet'),
|
||||
route: '/payment',
|
||||
children: [
|
||||
customPage({
|
||||
key: 'payment-gateway',
|
||||
name: 'PaymentGateway',
|
||||
label: '收款接口',
|
||||
route: '/payment/gateway',
|
||||
component: 'PaymentGateway',
|
||||
status: 'available',
|
||||
title: '收款接口',
|
||||
desc: '支付网关适配器、测试网关和手动确认配置。',
|
||||
canonicalDomain: 'payment',
|
||||
section: 'gateway',
|
||||
}),
|
||||
customPage({
|
||||
key: 'payment-paid',
|
||||
name: 'PaymentPaid',
|
||||
label: '下载/付费内容中心',
|
||||
route: '/payment/paid',
|
||||
title: '下载/付费内容中心',
|
||||
desc: '资源下载门槛、付费内容策略和人工交付说明。',
|
||||
component: 'ResourceDownload',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'payment-recharge',
|
||||
name: 'PaymentRecharge',
|
||||
label: '余额充值',
|
||||
route: '/payment/recharge',
|
||||
status: 'available',
|
||||
title: '余额充值',
|
||||
desc: '余额充值策略、记录和手动确认配置。',
|
||||
canonicalDomain: 'payment',
|
||||
section: 'recharge',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'payment-vip',
|
||||
name: 'PaymentVip',
|
||||
label: 'VIP会员',
|
||||
route: '/payment/vip',
|
||||
status: 'available',
|
||||
title: 'VIP会员',
|
||||
desc: '会员套餐、会员特权和免扣策略。',
|
||||
canonicalDomain: 'payment',
|
||||
section: 'vip',
|
||||
}),
|
||||
customPage({
|
||||
key: 'payment-revenue',
|
||||
name: 'PaymentRevenue',
|
||||
label: '创作分成',
|
||||
route: '/payment/revenue',
|
||||
component: 'PaymentRevenue',
|
||||
status: 'available',
|
||||
title: '创作分成',
|
||||
desc: '创作者收益分配和结算记录。',
|
||||
canonicalDomain: 'payment',
|
||||
section: 'revenue',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'payment-affiliate',
|
||||
name: 'PaymentAffiliate',
|
||||
label: '推广返佣',
|
||||
route: '/payment/affiliate',
|
||||
status: 'available',
|
||||
title: '推广返佣',
|
||||
desc: '返佣规则、邀请链路和结算记录。',
|
||||
canonicalDomain: 'payment',
|
||||
section: 'affiliate',
|
||||
}),
|
||||
customPage({
|
||||
key: 'payment-charge-card',
|
||||
name: 'PaymentChargeCard',
|
||||
label: '充值卡',
|
||||
route: '/payment/charge-card',
|
||||
component: 'PaymentChargeCard',
|
||||
status: 'available',
|
||||
title: '充值卡',
|
||||
desc: '创建和管理充值卡。',
|
||||
canonicalDomain: 'payment',
|
||||
section: 'charge-card',
|
||||
}),
|
||||
customPage({
|
||||
key: 'payment-rebate',
|
||||
name: 'PaymentRebate',
|
||||
label: '返佣管理',
|
||||
route: '/payment/rebate',
|
||||
component: 'PaymentRebate',
|
||||
status: 'available',
|
||||
title: '返佣管理',
|
||||
desc: '管理订单返佣和推广返佣记录。',
|
||||
canonicalDomain: 'payment',
|
||||
section: 'rebate',
|
||||
}),
|
||||
],
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
import { renderFaIcon, customPage, schemaPage } from './helpers'
|
||||
|
||||
export const permissionsSection = {
|
||||
key: 'permissions',
|
||||
label: '功能&权限',
|
||||
icon: renderFaIcon('fas fa-shield-alt'),
|
||||
route: '/permissions',
|
||||
children: [
|
||||
customPage({
|
||||
key: 'permissions-comment',
|
||||
name: 'PermissionsComment',
|
||||
label: '评论权限',
|
||||
route: '/permissions/comment',
|
||||
component: 'CommentPermissions',
|
||||
title: '评论权限',
|
||||
desc: '游客评论、频率限制、敏感词和审核策略。',
|
||||
canonicalDomain: 'permissions',
|
||||
section: 'comment',
|
||||
}),
|
||||
customPage({
|
||||
key: 'permissions-attachment',
|
||||
name: 'PermissionsAttachment',
|
||||
label: '附件权限',
|
||||
route: '/permissions/attachment',
|
||||
component: 'AttachmentPermissions',
|
||||
title: '附件权限',
|
||||
desc: '上传角色、文件类型、大小限制和审核状态。',
|
||||
canonicalDomain: 'permissions',
|
||||
section: 'attachment',
|
||||
}),
|
||||
customPage({
|
||||
key: 'permissions-download',
|
||||
name: 'PermissionsDownload',
|
||||
label: '下载权限',
|
||||
route: '/permissions/download',
|
||||
component: 'DownloadPermissions',
|
||||
title: '下载权限',
|
||||
desc: '登录要求、积分要求、角色要求和 VIP 特权。',
|
||||
canonicalDomain: 'permissions',
|
||||
section: 'download',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'permissions-login',
|
||||
name: 'PermissionsLogin',
|
||||
label: '登录权限',
|
||||
route: '/permissions/login',
|
||||
title: '登录权限',
|
||||
desc: '登录验证、人机验证、注册限制配置。',
|
||||
canonicalDomain: 'permissions',
|
||||
section: 'login',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'permissions-moderation',
|
||||
name: 'PermissionsModeration',
|
||||
label: '审核和风控',
|
||||
route: '/permissions/moderation',
|
||||
title: '审核和风控',
|
||||
desc: '评论审核、反垃圾、限流与风控配置。',
|
||||
canonicalDomain: 'permissions',
|
||||
section: 'moderation',
|
||||
}),
|
||||
customPage({
|
||||
key: 'permissions-capabilities',
|
||||
name: 'PermissionsCapabilities',
|
||||
label: '基本权限',
|
||||
route: '/permissions/capabilities',
|
||||
component: 'PermissionsCapabilities',
|
||||
title: '基本权限 / 能力矩阵',
|
||||
desc: '统一管理用户治理、投稿和评论的角色能力矩阵。',
|
||||
canonicalDomain: 'permissions',
|
||||
section: 'capabilities',
|
||||
}),
|
||||
],
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
import { renderFaIcon, schemaPage, customPage } from './helpers'
|
||||
|
||||
export const postListSection = {
|
||||
key: 'post-list',
|
||||
label: '文章&列表',
|
||||
icon: renderFaIcon('fas fa-file-alt'),
|
||||
route: '/post-list',
|
||||
children: [
|
||||
schemaPage({
|
||||
key: 'post-list-list',
|
||||
name: 'PostListList',
|
||||
label: '文章列表',
|
||||
route: '/post-list/list',
|
||||
title: '文章列表',
|
||||
desc: '列表样式、元信息开关、分页方式配置。',
|
||||
canonicalDomain: 'post_list',
|
||||
section: 'list',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'post-list-thumb',
|
||||
name: 'PostListThumb',
|
||||
label: '列表缩略图',
|
||||
route: '/post-list/thumb',
|
||||
title: '列表缩略图',
|
||||
desc: '缩略图策略、封面回退、多图模式配置。',
|
||||
canonicalDomain: 'post_list',
|
||||
section: 'thumb',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'post-list-page',
|
||||
name: 'PostListPage',
|
||||
label: '文章页面',
|
||||
route: '/post-list/page',
|
||||
component: 'PostPageSettings',
|
||||
title: '文章页面',
|
||||
desc: '文章页布局、目录树、灯箱、版权区配置。',
|
||||
canonicalDomain: 'post_list',
|
||||
section: 'page',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'post-list-filter',
|
||||
name: 'PostListFilter',
|
||||
label: '高级筛选',
|
||||
route: '/post-list/filter',
|
||||
title: '高级筛选',
|
||||
desc: '筛选栏、排序方式、分类筛选配置。',
|
||||
canonicalDomain: 'post_list',
|
||||
section: 'filter',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'post-list-feature',
|
||||
name: 'PostListFeature',
|
||||
label: '文章功能',
|
||||
route: '/post-list/feature',
|
||||
title: '文章功能',
|
||||
desc: '收藏、分享、阅读进度、相关推荐等功能开关。',
|
||||
canonicalDomain: 'post_list',
|
||||
section: 'feature',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'post-list-share',
|
||||
name: 'PostListShare',
|
||||
label: '分享设置',
|
||||
route: '/post-list/share',
|
||||
title: '分享设置',
|
||||
desc: '配置微信分享凭据、海报分享和社交分享选项。',
|
||||
canonicalDomain: 'post_list',
|
||||
section: 'share',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'post-list-comment',
|
||||
name: 'PostListComment',
|
||||
label: '评论设置',
|
||||
route: '/post-list/comment',
|
||||
component: 'CommentSettings',
|
||||
title: '评论设置',
|
||||
desc: '评论排序、楼层展示、登录限制、回复限制等配置。',
|
||||
canonicalDomain: 'post_list',
|
||||
section: 'comment',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'post-list-submit',
|
||||
name: 'PostListSubmit',
|
||||
label: '前台投稿',
|
||||
route: '/post-list/submit',
|
||||
title: '前台投稿',
|
||||
desc: '配置前台投稿表单字段、审核流程、附件权限和封面策略。',
|
||||
canonicalDomain: 'post_list',
|
||||
section: 'submit',
|
||||
}),
|
||||
],
|
||||
}
|
||||
@@ -0,0 +1,157 @@
|
||||
import { renderFaIcon, schemaPage, customPage } from './helpers'
|
||||
|
||||
export const shopSection = {
|
||||
key: 'shop',
|
||||
label: '商城&商品',
|
||||
icon: renderFaIcon('fas fa-shopping-cart'),
|
||||
route: '/shop',
|
||||
children: [
|
||||
customPage({
|
||||
key: 'shop-products',
|
||||
name: 'ShopProducts',
|
||||
label: '商品管理',
|
||||
route: '/shop/products',
|
||||
component: 'ShopProducts',
|
||||
title: '商品管理',
|
||||
desc: '管理所有商品的上架、编辑和库存。',
|
||||
canonicalDomain: 'shop',
|
||||
section: 'products',
|
||||
}),
|
||||
customPage({
|
||||
key: 'shop-orders',
|
||||
name: 'ShopOrders',
|
||||
label: '订单管理',
|
||||
route: '/shop/orders',
|
||||
component: 'ShopOrders',
|
||||
title: '订单管理',
|
||||
desc: '查看和管理所有交易订单。',
|
||||
canonicalDomain: 'shop',
|
||||
section: 'orders',
|
||||
}),
|
||||
customPage({
|
||||
key: 'shop-withdrawals',
|
||||
name: 'ShopWithdrawals',
|
||||
label: '提现管理',
|
||||
route: '/shop/withdrawals',
|
||||
component: 'ShopWithdrawals',
|
||||
title: '提现管理',
|
||||
desc: '审核和管理创作者提现申请。',
|
||||
canonicalDomain: 'shop',
|
||||
section: 'withdrawals',
|
||||
}),
|
||||
customPage({
|
||||
key: 'shop-coupons',
|
||||
name: 'ShopCoupons',
|
||||
label: '优惠券',
|
||||
route: '/shop/coupons',
|
||||
component: 'ShopCoupons',
|
||||
title: '优惠券',
|
||||
desc: '创建和管理优惠券。',
|
||||
canonicalDomain: 'shop',
|
||||
section: 'coupons',
|
||||
}),
|
||||
customPage({
|
||||
key: 'shop-after-sale',
|
||||
name: 'ShopAfterSale',
|
||||
label: '售后管理',
|
||||
route: '/shop/after-sale',
|
||||
component: 'ShopAfterSale',
|
||||
title: '售后管理',
|
||||
desc: '管理退款、换货等售后工单。',
|
||||
canonicalDomain: 'shop',
|
||||
section: 'after-sale',
|
||||
}),
|
||||
customPage({
|
||||
key: 'shop-shipping',
|
||||
name: 'ShopShipping',
|
||||
label: '物流管理',
|
||||
route: '/shop/shipping',
|
||||
component: 'ShopShipping',
|
||||
title: '物流管理',
|
||||
desc: '管理订单发货、物流单号和发货状态。',
|
||||
canonicalDomain: 'shop',
|
||||
section: 'shipping',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'shop-basic',
|
||||
name: 'ShopBasic',
|
||||
label: '商城基础',
|
||||
route: '/shop/basic',
|
||||
title: '商城基础',
|
||||
desc: '商城总开关、首页链接、面包屑和 URL 别名设置。',
|
||||
canonicalDomain: 'shop',
|
||||
section: 'basic',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'shop-list',
|
||||
name: 'ShopList',
|
||||
label: '商品列表',
|
||||
route: '/shop/list',
|
||||
title: '商品列表',
|
||||
desc: '商品列表排序、分页、卡片样式和销量显示配置。',
|
||||
canonicalDomain: 'shop',
|
||||
section: 'list',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'shop-contact',
|
||||
name: 'ShopContact',
|
||||
label: '客服配置',
|
||||
route: '/shop/contact',
|
||||
title: '客服配置',
|
||||
desc: '商品详情页客服按钮和联系方式配置。',
|
||||
canonicalDomain: 'shop',
|
||||
section: 'contact',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'shop-single',
|
||||
name: 'ShopSingle',
|
||||
label: '商品详情',
|
||||
route: '/shop/single',
|
||||
title: '商品详情',
|
||||
desc: '商品详情页布局、相关推荐和底部内容设置。',
|
||||
canonicalDomain: 'shop',
|
||||
section: 'single',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'shop-product-defaults',
|
||||
name: 'ShopProductDefaults',
|
||||
label: '商品默认参数',
|
||||
route: '/shop/product-defaults',
|
||||
title: '商品默认参数',
|
||||
desc: '主题级商品参数默认值,作为参数继承链的根。',
|
||||
canonicalDomain: 'shop',
|
||||
section: 'product-defaults',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'shop-shipping-config',
|
||||
name: 'ShopShippingConfig',
|
||||
label: '物流配置',
|
||||
route: '/shop/shipping-config',
|
||||
title: '物流配置',
|
||||
desc: '快递查询接口、物流公司列表和收货地址设置。',
|
||||
canonicalDomain: 'shop',
|
||||
section: 'shipping-config',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'shop-timing',
|
||||
name: 'ShopTiming',
|
||||
label: '时效与售后原因',
|
||||
route: '/shop/timing',
|
||||
title: '时效与售后原因',
|
||||
desc: '确认收货、评价、退货时效和售后原因配置。',
|
||||
canonicalDomain: 'shop',
|
||||
section: 'timing',
|
||||
}),
|
||||
customPage({
|
||||
key: 'shop-dashboard',
|
||||
name: 'ShopDashboard',
|
||||
label: '商城概览',
|
||||
route: '/shop',
|
||||
component: 'ShopDashboard',
|
||||
title: '商城概览',
|
||||
desc: '商品管理、订单系统、库存管理等电商功能概览。',
|
||||
canonicalDomain: 'shop',
|
||||
section: 'dashboard',
|
||||
}),
|
||||
],
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
import { renderFaIcon, customPage } from './helpers'
|
||||
|
||||
export const themeInfoSection = {
|
||||
key: 'tools-compat',
|
||||
label: '兼容&工具',
|
||||
icon: renderFaIcon('fas fa-toolbox'),
|
||||
route: '/tools',
|
||||
hidden: true,
|
||||
children: [
|
||||
customPage({
|
||||
key: 'theme-info-dashboard',
|
||||
name: 'ThemeInfoDashboard',
|
||||
label: '主题信息',
|
||||
route: '/theme-info',
|
||||
component: 'ThemeInfoPage',
|
||||
title: '主题信息',
|
||||
desc: '主题版本、授权信息和帮助入口。',
|
||||
}),
|
||||
customPage({
|
||||
key: 'theme-authorization',
|
||||
name: 'ThemeAuthorization',
|
||||
label: '主题授权',
|
||||
route: '/theme-info/authorization',
|
||||
component: 'ThemeAuthorizationPage',
|
||||
title: '主题授权',
|
||||
desc: '当前版本的授权策略与产品决策说明。',
|
||||
}),
|
||||
],
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
import { renderFaIcon, customPage, schemaPage } from './helpers'
|
||||
|
||||
export const toolsSection = {
|
||||
key: 'tools-compat',
|
||||
label: '兼容&工具',
|
||||
icon: renderFaIcon('fas fa-toolbox'),
|
||||
route: '/tools',
|
||||
children: [
|
||||
customPage({
|
||||
key: 'tools-import-export',
|
||||
name: 'ToolsImportExport',
|
||||
label: '导入导出',
|
||||
route: '/tools/import-export',
|
||||
title: '导入导出',
|
||||
desc: '导出当前配置、执行 dry-run 导入并按域重置。',
|
||||
component: 'ToolsImportExport',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'tools-backup',
|
||||
name: 'ToolsBackup',
|
||||
label: '数据备份',
|
||||
route: '/tools/backup',
|
||||
title: '数据备份',
|
||||
desc: '管理设置快照、创建备份并执行恢复或删除。',
|
||||
canonicalDomain: 'tools',
|
||||
section: 'backup',
|
||||
}),
|
||||
customPage({
|
||||
key: 'tools-health',
|
||||
name: 'ToolsHealth',
|
||||
label: '健康检查',
|
||||
route: '/tools/health',
|
||||
title: '健康检查',
|
||||
desc: '查看主题环境、数据表、邮箱验证迁移和系统诊断状态。',
|
||||
component: 'ToolsHealth',
|
||||
}),
|
||||
customPage({
|
||||
key: 'tools-migration',
|
||||
name: 'ToolsMigration',
|
||||
label: '迁移状态',
|
||||
route: '/tools/migration',
|
||||
title: '迁移状态',
|
||||
desc: '查看数据库 schema 版本、设置迁移版本和迁移日志。',
|
||||
component: 'ToolsMigration',
|
||||
}),
|
||||
customPage({
|
||||
key: 'tools-email-rollback',
|
||||
name: 'ToolsEmailRollback',
|
||||
label: '邮件回滚',
|
||||
route: '/tools/email-rollback',
|
||||
title: '邮件回滚',
|
||||
desc: '查看 14 天邮箱变更窗口内的账号并执行回滚。',
|
||||
component: 'ToolsEmailRollback',
|
||||
}),
|
||||
customPage({
|
||||
key: 'tools-update',
|
||||
name: 'ToolsUpdate',
|
||||
label: '更新中心',
|
||||
route: '/tools/update',
|
||||
title: '更新中心',
|
||||
desc: '查看版本状态、检测更新并浏览更新日志与教程入口。',
|
||||
component: 'ToolsUpdate',
|
||||
canonicalDomain: 'tools',
|
||||
section: 'update',
|
||||
}),
|
||||
],
|
||||
}
|
||||
@@ -0,0 +1,188 @@
|
||||
import { renderFaIcon, schemaPage, customPage } from './helpers'
|
||||
|
||||
export const usersSection = {
|
||||
key: 'users',
|
||||
label: '用户&互动',
|
||||
icon: renderFaIcon('fas fa-users'),
|
||||
route: '/users',
|
||||
children: [
|
||||
schemaPage({
|
||||
key: 'users-auth',
|
||||
name: 'UsersAuth',
|
||||
label: '注册登录',
|
||||
route: '/users/auth',
|
||||
title: '注册登录',
|
||||
desc: '注册方式、登录限制和密码策略配置。',
|
||||
canonicalDomain: 'users',
|
||||
section: 'auth',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'users-oauth',
|
||||
name: 'UsersOauth',
|
||||
label: '第三方登录',
|
||||
route: '/users/oauth',
|
||||
title: '第三方登录',
|
||||
desc: 'GitHub、Gitee、QQ、Google 等第三方登录配置。',
|
||||
canonicalDomain: 'users',
|
||||
section: 'oauth',
|
||||
}),
|
||||
customPage({
|
||||
key: 'users-features',
|
||||
name: 'UsersFeatures',
|
||||
label: '用户功能',
|
||||
route: '/users/features',
|
||||
component: 'UsersFeatures',
|
||||
title: '用户功能',
|
||||
desc: '用户中心与个人主页模块配置。',
|
||||
canonicalDomain: 'users',
|
||||
section: 'features',
|
||||
}),
|
||||
customPage({
|
||||
key: 'users-signin',
|
||||
name: 'UsersSignin',
|
||||
label: '签到奖励',
|
||||
route: '/users/signin',
|
||||
component: 'UsersSignin',
|
||||
title: '签到奖励',
|
||||
desc: '签到规则、连续签到奖励和签到页面配置。',
|
||||
canonicalDomain: 'users',
|
||||
section: 'signin',
|
||||
}),
|
||||
customPage({
|
||||
key: 'users-credits',
|
||||
name: 'UsersCredits',
|
||||
label: '用户积分',
|
||||
route: '/users/credits',
|
||||
title: '用户积分',
|
||||
desc: '积分规则、积分日志和用户积分管理。',
|
||||
component: 'CmsCredits',
|
||||
canonicalDomain: 'users',
|
||||
section: 'credits',
|
||||
}),
|
||||
customPage({
|
||||
key: 'users-verify',
|
||||
name: 'UsersVerify',
|
||||
label: '身份认证',
|
||||
route: '/users/verify',
|
||||
component: 'UsersVerify',
|
||||
status: 'available',
|
||||
title: '身份认证',
|
||||
desc: '身份认证字段、审核流和展示标签。',
|
||||
canonicalDomain: 'users',
|
||||
section: 'verify',
|
||||
}),
|
||||
customPage({
|
||||
key: 'users-level',
|
||||
name: 'UsersLevel',
|
||||
label: '用户等级',
|
||||
route: '/users/level',
|
||||
component: 'UsersLevel',
|
||||
status: 'available',
|
||||
title: '用户等级',
|
||||
desc: '等级规则、升级条件和权益映射。',
|
||||
canonicalDomain: 'users',
|
||||
section: 'level',
|
||||
}),
|
||||
customPage({
|
||||
key: 'users-badge',
|
||||
name: 'UsersBadge',
|
||||
label: '用户徽章',
|
||||
route: '/users/badge',
|
||||
component: 'UsersBadge',
|
||||
status: 'available',
|
||||
title: '用户徽章',
|
||||
desc: '徽章规则、授予条件和前台展示。',
|
||||
canonicalDomain: 'users',
|
||||
section: 'badge',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'users-notifications',
|
||||
name: 'UsersNotifications',
|
||||
label: '消息通知',
|
||||
route: '/users/notifications',
|
||||
title: '消息通知',
|
||||
desc: '站内通知、邮件通知和通知策略配置。',
|
||||
canonicalDomain: 'users',
|
||||
section: 'notifications',
|
||||
}),
|
||||
customPage({
|
||||
key: 'users-invite-codes',
|
||||
name: 'UsersInviteCodes',
|
||||
label: '邀请码运营',
|
||||
route: '/users/invite-codes',
|
||||
component: 'UsersInviteCodes',
|
||||
title: '邀请码运营',
|
||||
desc: '管理邀请码列表、生成新邀请码和查看邀请统计。',
|
||||
canonicalDomain: 'users',
|
||||
section: 'invite-codes',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'users-sms',
|
||||
name: 'UsersSms',
|
||||
label: '短信接口',
|
||||
route: '/users/sms',
|
||||
title: '短信接口',
|
||||
desc: '配置短信验证码和短信通知服务的供应商、模板和限流策略。',
|
||||
canonicalDomain: 'users',
|
||||
section: 'sms',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'users-wechat',
|
||||
name: 'UsersWechat',
|
||||
label: '微信通知',
|
||||
route: '/users/wechat',
|
||||
title: '微信通知',
|
||||
desc: '配置微信模板消息、订阅/解绑和站外通知策略。',
|
||||
canonicalDomain: 'users',
|
||||
section: 'wechat',
|
||||
}),
|
||||
customPage({
|
||||
key: 'users-wechat-template',
|
||||
name: 'UsersWechatTemplate',
|
||||
label: '微信模板消息',
|
||||
route: '/users/wechat-template',
|
||||
component: 'UsersWechatTemplate',
|
||||
status: 'available',
|
||||
title: '微信模板消息',
|
||||
desc: '配置微信公众号模板消息推送。',
|
||||
canonicalDomain: 'users',
|
||||
section: 'wechat-template',
|
||||
}),
|
||||
customPage({
|
||||
key: 'users-messages',
|
||||
name: 'UsersMessages',
|
||||
label: '消息中心',
|
||||
route: '/users/messages',
|
||||
component: 'UsersMessages',
|
||||
status: 'available',
|
||||
title: '消息中心',
|
||||
desc: '管理站内通知、系统消息和用户私信记录。',
|
||||
canonicalDomain: 'users',
|
||||
section: 'messages',
|
||||
}),
|
||||
customPage({
|
||||
key: 'users-ban',
|
||||
name: 'UsersBan',
|
||||
label: '禁封管理',
|
||||
route: '/users/ban',
|
||||
component: 'UsersBan',
|
||||
status: 'available',
|
||||
title: '禁封管理',
|
||||
desc: '查看和管理用户封禁、限制状态。',
|
||||
canonicalDomain: 'users',
|
||||
section: 'ban',
|
||||
}),
|
||||
customPage({
|
||||
key: 'users-report',
|
||||
name: 'UsersReport',
|
||||
label: '禁封/举报',
|
||||
route: '/users/report',
|
||||
component: 'UsersReport',
|
||||
status: 'available',
|
||||
title: '禁封/举报',
|
||||
desc: '举报受理、用户封禁和治理台账。',
|
||||
canonicalDomain: 'users',
|
||||
section: 'report',
|
||||
}),
|
||||
],
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
import { ALL_SCHEMAS, CANONICAL_SCHEMA_DOMAINS, normalizeSchemaDomain } from '@/schema/index.js'
|
||||
|
||||
function cloneDefaults(defaults = {}) {
|
||||
return JSON.parse(JSON.stringify(defaults))
|
||||
}
|
||||
|
||||
export function getSectionDefaults(domain, section) {
|
||||
const domainKey = normalizeSchemaDomain(domain)
|
||||
const sectionSchema = ALL_SCHEMAS[domainKey]?.[section]
|
||||
return cloneDefaults(sectionSchema?.defaults || {})
|
||||
}
|
||||
|
||||
export function getDomainDefaults(domain) {
|
||||
const domainKey = normalizeSchemaDomain(domain)
|
||||
const sections = Object.values(ALL_SCHEMAS[domainKey] || {})
|
||||
|
||||
return sections.reduce((defaults, schema) => {
|
||||
return {
|
||||
...defaults,
|
||||
...cloneDefaults(schema?.defaults || {}),
|
||||
}
|
||||
}, {})
|
||||
}
|
||||
|
||||
export const SETTINGS_DEFAULTS_BY_DOMAIN = CANONICAL_SCHEMA_DOMAINS.reduce((defaults, domain) => {
|
||||
defaults[domain] = getDomainDefaults(domain)
|
||||
return defaults
|
||||
}, {})
|
||||
Reference in new issue
Block a user