| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- import type { RouteRecordRaw } from 'vue-router'
- type RecursiveRequired<T> = {
- [P in keyof T]-?: RecursiveRequired<T[P]>
- }
- type RecursivePartial<T> = {
- [P in keyof T]?: RecursivePartial<T[P]>
- }
- declare namespace Settings {
- interface app {
- /**
- * 颜色方案
- * @默认值 `''` 跟随系统
- * @可选值 `'light'` 明亮模式
- * @可选值 `'dark'` 暗黑模式
- */
- colorScheme?: '' | 'light' | 'dark'
- /**
- * 是否开启哀悼模式
- * @默认值 `false`
- */
- enableMournMode?: boolean
- /**
- * 是否开启色弱模式
- * @默认值 `false`
- */
- enableColorAmblyopiaMode?: boolean
- /**
- * 是否开启权限功能
- * @默认值 `false`
- */
- enablePermission?: boolean
- /**
- * 是否开启载入进度条
- * @默认值 `true`
- */
- enableProgress?: boolean
- /**
- * 是否开启动态标题
- * @默认值 `false`
- */
- enableDynamicTitle?: boolean
- /**
- * 路由数据来源
- * @默认值 `'frontend'` 前端
- * @可选值 `'backend'` 后端
- * @可选值 `'filesystem'` 文件系统
- */
- routeBaseOn?: 'frontend' | 'backend' | 'filesystem'
- }
- interface home {
- /**
- * 是否开启主页
- * @默认值 `true`
- */
- enable?: boolean
- /**
- * 主页名称
- * @默认值 `'主页'`
- */
- title?: string
- /**
- * 主页完整路径
- * @默认值 `'/'`
- */
- fullPath?: string
- }
- interface layout {
- /**
- * 是否开启移动端适配,开启后当页面宽度小于 992px 时自动切换为移动端展示
- * @默认值 `false`
- */
- enableMobileAdaptation?: boolean
- }
- interface menu {
- /**
- * 导航栏数据来源,当 `app.routeBaseOn: 'filesystem'` 时生效
- * @默认值 `'frontend'` 前端
- * @可选值 `'backend'` 后端
- */
- baseOn?: 'frontend' | 'backend'
- /**
- * 导航栏模式
- * @默认值 `'side'` 侧边栏模式(有主导航)
- * @可选值 `'head'` 顶部模式
- * @可选值 `'single'` 侧边栏模式(无主导航)
- */
- mode?: 'side' | 'head' | 'single'
- /**
- * 切换主导航是否跳转页面
- * @默认值 `false`
- */
- switchMainMenuAndPageJump?: boolean
- /**
- * 次导航是否只保持一个子项的展开
- * @默认值 `true`
- */
- subMenuUniqueOpened?: boolean
- /**
- * 次导航是否收起
- * @默认值 `false`
- */
- subMenuCollapse?: boolean
- /**
- * 是否开启次导航的展开/收起按钮
- * @默认值 `false`
- */
- enableSubMenuCollapseButton?: boolean
- /**
- * 是否开启主导航切换快捷键
- * @默认值 `false`
- */
- enableHotkeys?: boolean
- }
- interface topbar {
- /**
- * 模式
- * @默认值 `'static'` 静止,跟随页面滚动
- * @可选值 `'fixed'` 固定,不跟随页面滚动,始终固定在顶部
- * @可选值 `'sticky'` 粘性,页面往下滚动时隐藏,往上滚动时显示
- */
- mode?: 'static' | 'fixed' | 'sticky'
- }
- interface tabbar {
- /**
- * 是否开启标签栏
- * @默认值 `false`
- */
- enable?: boolean
- /**
- * 是否开启标签栏图标显示
- * @默认值 `false`
- */
- enableIcon?: boolean
- /**
- * 是否开启标签栏快捷键
- * @默认值 `false`
- */
- enableHotkeys?: boolean
- }
- interface toolbar {
- /**
- * 是否开启面包屑导航
- * @默认值 `true`
- */
- breadcrumb?: boolean
- /**
- * 是否开启导航搜索
- * @默认值 `true`
- */
- navSearch?: boolean
- /**
- * 是否开启全屏
- * @默认值 `false`
- */
- fullscreen?: boolean
- /**
- * 是否开启页面刷新
- * @默认值 `false`
- */
- pageReload?: boolean
- /**
- * 是否开启颜色主题
- * @默认值 `false`
- */
- colorScheme?: boolean
- }
- interface mainPage {
- /**
- * 是否开启页面快捷键
- * @默认值 `true`
- */
- enableHotkeys?: boolean
- }
- interface navSearch {
- /**
- * 是否开启导航搜索快捷键
- * @默认值 `true`
- */
- enableHotkeys?: boolean
- }
- interface copyright {
- /**
- * 是否开启底部版权,同时在路由 meta 对象里可以单独设置某个路由是否显示底部版权信息
- * @默认值 `false`
- */
- enable?: boolean
- /**
- * 网站运行日期
- * @默认值 `''`
- */
- dates?: string
- /**
- * 公司名称
- * @默认值 `''`
- */
- company?: string
- /**
- * 网站地址
- * @默认值 `''`
- */
- website?: string
- /**
- * 网站备案号
- * @默认值 `''`
- */
- beian?: string
- }
- interface all {
- /** 应用设置 */
- app?: app
- /** 主页设置 */
- home?: home
- /** 布局设置 */
- layout?: layout
- /** 导航栏设置 */
- menu?: menu
- /** 顶栏设置 */
- topbar?: topbar
- /** 标签栏设置 */
- tabbar?: tabbar
- /** 工具栏设置 */
- toolbar?: toolbar
- /** 页面设置 */
- mainPage?: mainPage
- /** 导航搜索设置 */
- navSearch?: navSearch
- /** 底部版权设置 */
- copyright?: copyright
- }
- }
- declare module 'vue-router' {
- interface RouteMeta {
- title?: string | (() => string)
- icon?: string
- defaultOpened?: boolean
- auth?: string | string[]
- sidebar?: boolean
- menu?: boolean
- breadcrumb?: boolean
- activeMenu?: string
- cache?: boolean | string | string[]
- noCache?: string | string[]
- link?: string
- breadcrumbNeste?: Route.breadcrumb[]
- }
- }
- declare namespace Route {
- interface recordMainRaw {
- meta?: {
- title?: string | (() => string)
- icon?: string
- auth?: string | string[]
- }
- children: RouteRecordRaw[]
- }
- interface breadcrumb {
- path: string
- title?: string | (() => string)
- icon?: string
- hide: boolean
- }
- }
- declare namespace Menu {
- /** 原始 */
- interface recordRaw {
- path?: string
- meta?: {
- title?: string | (() => string)
- icon?: string
- defaultOpened?: boolean
- auth?: string | string[]
- menu?: boolean
- link?: string
- }
- children?: recordRaw[]
- }
- /** 主导航 */
- interface recordMainRaw {
- meta?: {
- title?: string | (() => string)
- icon?: string
- auth?: string | string[]
- }
- children: recordRaw[]
- }
- }
- declare namespace Tabbar {
- interface recordRaw {
- tabId: string
- fullPath: string
- title?: string | (() => string)
- icon?: string
- name: string[]
- }
- }
|