global.d.ts 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. import type { RouteRecordRaw } from 'vue-router'
  2. type RecursiveRequired<T> = {
  3. [P in keyof T]-?: RecursiveRequired<T[P]>
  4. }
  5. type RecursivePartial<T> = {
  6. [P in keyof T]?: RecursivePartial<T[P]>
  7. }
  8. declare namespace Settings {
  9. interface app {
  10. /**
  11. * 颜色方案
  12. * @默认值 `''` 跟随系统
  13. * @可选值 `'light'` 明亮模式
  14. * @可选值 `'dark'` 暗黑模式
  15. */
  16. colorScheme?: '' | 'light' | 'dark'
  17. /**
  18. * 是否开启哀悼模式
  19. * @默认值 `false`
  20. */
  21. enableMournMode?: boolean
  22. /**
  23. * 是否开启色弱模式
  24. * @默认值 `false`
  25. */
  26. enableColorAmblyopiaMode?: boolean
  27. /**
  28. * 是否开启权限功能
  29. * @默认值 `false`
  30. */
  31. enablePermission?: boolean
  32. /**
  33. * 是否开启载入进度条
  34. * @默认值 `true`
  35. */
  36. enableProgress?: boolean
  37. /**
  38. * 是否开启动态标题
  39. * @默认值 `false`
  40. */
  41. enableDynamicTitle?: boolean
  42. /**
  43. * 路由数据来源
  44. * @默认值 `'frontend'` 前端
  45. * @可选值 `'backend'` 后端
  46. * @可选值 `'filesystem'` 文件系统
  47. */
  48. routeBaseOn?: 'frontend' | 'backend' | 'filesystem'
  49. }
  50. interface home {
  51. /**
  52. * 是否开启主页
  53. * @默认值 `true`
  54. */
  55. enable?: boolean
  56. /**
  57. * 主页名称
  58. * @默认值 `'主页'`
  59. */
  60. title?: string
  61. /**
  62. * 主页完整路径
  63. * @默认值 `'/'`
  64. */
  65. fullPath?: string
  66. }
  67. interface layout {
  68. /**
  69. * 是否开启移动端适配,开启后当页面宽度小于 992px 时自动切换为移动端展示
  70. * @默认值 `false`
  71. */
  72. enableMobileAdaptation?: boolean
  73. }
  74. interface menu {
  75. /**
  76. * 导航栏数据来源,当 `app.routeBaseOn: 'filesystem'` 时生效
  77. * @默认值 `'frontend'` 前端
  78. * @可选值 `'backend'` 后端
  79. */
  80. baseOn?: 'frontend' | 'backend'
  81. /**
  82. * 导航栏模式
  83. * @默认值 `'side'` 侧边栏模式(有主导航)
  84. * @可选值 `'head'` 顶部模式
  85. * @可选值 `'single'` 侧边栏模式(无主导航)
  86. */
  87. mode?: 'side' | 'head' | 'single'
  88. /**
  89. * 切换主导航是否跳转页面
  90. * @默认值 `false`
  91. */
  92. switchMainMenuAndPageJump?: boolean
  93. /**
  94. * 次导航是否只保持一个子项的展开
  95. * @默认值 `true`
  96. */
  97. subMenuUniqueOpened?: boolean
  98. /**
  99. * 次导航是否收起
  100. * @默认值 `false`
  101. */
  102. subMenuCollapse?: boolean
  103. /**
  104. * 是否开启次导航的展开/收起按钮
  105. * @默认值 `false`
  106. */
  107. enableSubMenuCollapseButton?: boolean
  108. /**
  109. * 是否开启主导航切换快捷键
  110. * @默认值 `false`
  111. */
  112. enableHotkeys?: boolean
  113. }
  114. interface topbar {
  115. /**
  116. * 模式
  117. * @默认值 `'static'` 静止,跟随页面滚动
  118. * @可选值 `'fixed'` 固定,不跟随页面滚动,始终固定在顶部
  119. * @可选值 `'sticky'` 粘性,页面往下滚动时隐藏,往上滚动时显示
  120. */
  121. mode?: 'static' | 'fixed' | 'sticky'
  122. }
  123. interface tabbar {
  124. /**
  125. * 是否开启标签栏
  126. * @默认值 `false`
  127. */
  128. enable?: boolean
  129. /**
  130. * 是否开启标签栏图标显示
  131. * @默认值 `false`
  132. */
  133. enableIcon?: boolean
  134. /**
  135. * 是否开启标签栏快捷键
  136. * @默认值 `false`
  137. */
  138. enableHotkeys?: boolean
  139. }
  140. interface toolbar {
  141. /**
  142. * 是否开启面包屑导航
  143. * @默认值 `true`
  144. */
  145. breadcrumb?: boolean
  146. /**
  147. * 是否开启导航搜索
  148. * @默认值 `true`
  149. */
  150. navSearch?: boolean
  151. /**
  152. * 是否开启全屏
  153. * @默认值 `false`
  154. */
  155. fullscreen?: boolean
  156. /**
  157. * 是否开启页面刷新
  158. * @默认值 `false`
  159. */
  160. pageReload?: boolean
  161. /**
  162. * 是否开启颜色主题
  163. * @默认值 `false`
  164. */
  165. colorScheme?: boolean
  166. }
  167. interface mainPage {
  168. /**
  169. * 是否开启页面快捷键
  170. * @默认值 `true`
  171. */
  172. enableHotkeys?: boolean
  173. }
  174. interface navSearch {
  175. /**
  176. * 是否开启导航搜索快捷键
  177. * @默认值 `true`
  178. */
  179. enableHotkeys?: boolean
  180. }
  181. interface copyright {
  182. /**
  183. * 是否开启底部版权,同时在路由 meta 对象里可以单独设置某个路由是否显示底部版权信息
  184. * @默认值 `false`
  185. */
  186. enable?: boolean
  187. /**
  188. * 网站运行日期
  189. * @默认值 `''`
  190. */
  191. dates?: string
  192. /**
  193. * 公司名称
  194. * @默认值 `''`
  195. */
  196. company?: string
  197. /**
  198. * 网站地址
  199. * @默认值 `''`
  200. */
  201. website?: string
  202. /**
  203. * 网站备案号
  204. * @默认值 `''`
  205. */
  206. beian?: string
  207. }
  208. interface all {
  209. /** 应用设置 */
  210. app?: app
  211. /** 主页设置 */
  212. home?: home
  213. /** 布局设置 */
  214. layout?: layout
  215. /** 导航栏设置 */
  216. menu?: menu
  217. /** 顶栏设置 */
  218. topbar?: topbar
  219. /** 标签栏设置 */
  220. tabbar?: tabbar
  221. /** 工具栏设置 */
  222. toolbar?: toolbar
  223. /** 页面设置 */
  224. mainPage?: mainPage
  225. /** 导航搜索设置 */
  226. navSearch?: navSearch
  227. /** 底部版权设置 */
  228. copyright?: copyright
  229. }
  230. }
  231. declare module 'vue-router' {
  232. interface RouteMeta {
  233. title?: string | (() => string)
  234. icon?: string
  235. defaultOpened?: boolean
  236. auth?: string | string[]
  237. sidebar?: boolean
  238. menu?: boolean
  239. breadcrumb?: boolean
  240. activeMenu?: string
  241. cache?: boolean | string | string[]
  242. noCache?: string | string[]
  243. link?: string
  244. breadcrumbNeste?: Route.breadcrumb[]
  245. }
  246. }
  247. declare namespace Route {
  248. interface recordMainRaw {
  249. meta?: {
  250. title?: string | (() => string)
  251. icon?: string
  252. auth?: string | string[]
  253. }
  254. children: RouteRecordRaw[]
  255. }
  256. interface breadcrumb {
  257. path: string
  258. title?: string | (() => string)
  259. icon?: string
  260. hide: boolean
  261. }
  262. }
  263. declare namespace Menu {
  264. /** 原始 */
  265. interface recordRaw {
  266. path?: string
  267. meta?: {
  268. title?: string | (() => string)
  269. icon?: string
  270. defaultOpened?: boolean
  271. auth?: string | string[]
  272. menu?: boolean
  273. link?: string
  274. }
  275. children?: recordRaw[]
  276. }
  277. /** 主导航 */
  278. interface recordMainRaw {
  279. meta?: {
  280. title?: string | (() => string)
  281. icon?: string
  282. auth?: string | string[]
  283. }
  284. children: recordRaw[]
  285. }
  286. }
  287. declare namespace Tabbar {
  288. interface recordRaw {
  289. tabId: string
  290. fullPath: string
  291. title?: string | (() => string)
  292. icon?: string
  293. name: string[]
  294. }
  295. }