xto-fronted 0.4.6 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/.env.development +7 -7
  2. package/.env.production +7 -7
  3. package/dist/assets/403-AFBQifUI.js +1 -0
  4. package/dist/assets/403-BHEXXbt2.css +1 -0
  5. package/dist/assets/404-Ct_A1n7S.css +1 -0
  6. package/dist/assets/404-WFvpcD2_.js +1 -0
  7. package/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
  8. package/dist/assets/index-1juADvYN.js +2 -0
  9. package/dist/assets/index-B-sX4Ru0.js +1 -0
  10. package/dist/assets/index-BMcziU5a.css +1 -0
  11. package/dist/assets/index-BRR97dc6.js +1 -0
  12. package/dist/assets/index-BZA0ksjx.css +1 -0
  13. package/dist/assets/index-BpV_8nl0.js +1 -0
  14. package/dist/assets/index-BvzhR4zp.js +1 -0
  15. package/dist/assets/index-CUh_s55Z.css +1 -0
  16. package/dist/assets/index-CVjdnIgR.css +1 -0
  17. package/dist/assets/index-CYq57-zj.js +1 -0
  18. package/dist/assets/index-CkL3sVAQ.js +2 -0
  19. package/dist/assets/index-CtrKVYJb.css +1 -0
  20. package/dist/assets/index-Cz2P_bsS.js +1 -0
  21. package/dist/assets/index-D9wlAuR_.js +1 -0
  22. package/dist/assets/index-DawJb02s.css +1 -0
  23. package/dist/assets/index-DfFR6NLf.js +1 -0
  24. package/dist/assets/index-DwVgMO8e.js +1 -0
  25. package/dist/assets/index-GDP-IkXE.css +1 -0
  26. package/dist/assets/index-Iaz1ZzPC.js +2 -0
  27. package/dist/assets/index-PfV8pzQz.css +1 -0
  28. package/dist/assets/index-Swfu6yvD.css +1 -0
  29. package/dist/assets/index-Te8_PRgJ.js +1 -0
  30. package/dist/assets/index-WyZ91RLx.css +1 -0
  31. package/dist/assets/index-tFYRoFdE.js +1 -0
  32. package/dist/assets/vendor-42ANG6Sg.js +6 -0
  33. package/dist/assets/vite-Dw-pgLOX.js +1 -0
  34. package/dist/assets/vue-vendor-Br-l7wbK.js +29 -0
  35. package/dist/assets/xto-base-C-IBqjVs.js +1 -0
  36. package/dist/assets/xto-base-C6eqMPdO.css +1 -0
  37. package/dist/assets/xto-business--V1F5Gwb.css +1 -0
  38. package/dist/assets/xto-core-DZK7Cyg0.js +1 -0
  39. package/dist/assets/xto-data-BFpiDgJi.js +1 -0
  40. package/dist/assets/xto-data-CnAQAQH2.css +1 -0
  41. package/dist/assets/xto-feedback-B7ipsTfz.js +1 -0
  42. package/dist/assets/xto-feedback-DBwJzoTj.css +1 -0
  43. package/dist/assets/xto-form-CrsyAjyr.css +1 -0
  44. package/dist/assets/xto-form-NRjKKNcY.js +1 -0
  45. package/dist/assets/xto-layout-BqU8RuWL.css +1 -0
  46. package/dist/assets/xto-navigation-BiSaXPfr.js +1 -0
  47. package/dist/assets/xto-navigation-C1cnSL2E.css +1 -0
  48. package/dist/assets/xto-navigation-CBPg4dCc.css +1 -0
  49. package/dist/assets/xto-navigation-CKabFu9d.js +1 -0
  50. package/dist/index-54irhCHL.js +1830 -0
  51. package/dist/{index-15Bu0M8D.js → index-BzRf1eoJ.js} +1 -1
  52. package/dist/{index-BO2Zf9u6.js → index-DH4aoCZb.js} +1 -1
  53. package/dist/{index-BBqvHkzE.js → index-Kqa7iZ9E.js} +1 -1
  54. package/dist/{index-BQqo0ZIb.js → index-pxkZlvBw.js} +1 -1
  55. package/dist/index.es.js +1 -1
  56. package/dist/index.html +28 -0
  57. package/dist/index.umd.js +1 -1
  58. package/dist/style.css +1 -1
  59. package/package.json +85 -86
  60. package/src/api/auth.ts +25 -25
  61. package/src/api/system.ts +66 -66
  62. package/src/assets/styles/_dark.scss +406 -406
  63. package/src/components/Layout/Header.vue +973 -973
  64. package/src/components/Layout/Sidebar.vue +273 -212
  65. package/src/components/Layout/index.vue +443 -63
  66. package/src/composables/useApp.ts +61 -61
  67. package/src/composables/useAuth.ts +16 -16
  68. package/src/directives/permission.ts +27 -27
  69. package/src/env.d.ts +18 -18
  70. package/src/index.ts +47 -47
  71. package/src/router/dynamicRoutes.ts +162 -162
  72. package/src/router/guards.ts +128 -128
  73. package/src/router/index.ts +79 -79
  74. package/src/stores/auth.ts +65 -65
  75. package/src/stores/menu.ts +48 -48
  76. package/src/stores/user.ts +50 -50
  77. package/src/types/api.d.ts +80 -80
  78. package/src/utils/auth.ts +99 -99
  79. package/src/utils/config.ts +80 -80
  80. package/src/utils/permission.ts +32 -32
  81. package/src/utils/request.ts +124 -124
  82. package/src/views/login/index.vue +194 -188
  83. package/vite.config.ts +135 -135
  84. package/dist/index-B3PLzNB0.js +0 -345
  85. package/dist/index-B6DTsC6l.js +0 -1715
  86. package/dist/index-B7etKk33.js +0 -372
  87. package/dist/index-B7mpL6Zf.js +0 -475
  88. package/dist/index-BC2PGkkJ.js +0 -1644
  89. package/dist/index-BGgbfcmf.js +0 -475
  90. package/dist/index-BGmUwemj.js +0 -372
  91. package/dist/index-BQFfQj5Q.js +0 -142
  92. package/dist/index-BkRneTya.js +0 -142
  93. package/dist/index-BlRrngsc.js +0 -475
  94. package/dist/index-BmVvM7sm.js +0 -345
  95. package/dist/index-Bn4ThpX9.js +0 -142
  96. package/dist/index-BwfjwDKr.js +0 -1477
  97. package/dist/index-BxIL2hrt.js +0 -475
  98. package/dist/index-C-3fhbN2.js +0 -1644
  99. package/dist/index-C0VN9nFF.js +0 -142
  100. package/dist/index-C0xyGOsz.js +0 -475
  101. package/dist/index-C3c8NAZq.js +0 -1477
  102. package/dist/index-C42VtP71.js +0 -142
  103. package/dist/index-C6Nm0r9k.js +0 -475
  104. package/dist/index-C6w0-8xN.js +0 -1648
  105. package/dist/index-CD364XjV.js +0 -142
  106. package/dist/index-CHww99-i.js +0 -345
  107. package/dist/index-CIgWYERJ.js +0 -1644
  108. package/dist/index-CTs6DTuQ.js +0 -345
  109. package/dist/index-CWRs4WMN.js +0 -372
  110. package/dist/index-Cb-SxHJp.js +0 -345
  111. package/dist/index-CeCysOnl.js +0 -345
  112. package/dist/index-Cg1UpC8D.js +0 -1644
  113. package/dist/index-Cgkqpyx2.js +0 -345
  114. package/dist/index-CiuDEfo-.js +0 -142
  115. package/dist/index-CmQfZC8r.js +0 -372
  116. package/dist/index-CmkjhpX_.js +0 -475
  117. package/dist/index-CpxpXTQX.js +0 -1462
  118. package/dist/index-CqXFk_ET.js +0 -345
  119. package/dist/index-Cqix1YLE.js +0 -1697
  120. package/dist/index-CtvB5J9E.js +0 -372
  121. package/dist/index-Cu3Z2-PY.js +0 -345
  122. package/dist/index-CvDxK7Ab.js +0 -372
  123. package/dist/index-D-FER0vJ.js +0 -372
  124. package/dist/index-D2fQ8TK8.js +0 -475
  125. package/dist/index-D3xVcFvg.js +0 -372
  126. package/dist/index-D4crnrO6.js +0 -142
  127. package/dist/index-D7EzwTM5.js +0 -372
  128. package/dist/index-D7TZamyY.js +0 -1664
  129. package/dist/index-D88fiqXR.js +0 -475
  130. package/dist/index-DEbpF-M4.js +0 -1457
  131. package/dist/index-DFXuyPge.js +0 -1627
  132. package/dist/index-DLgimJYb.js +0 -1667
  133. package/dist/index-DPEVEyik.js +0 -475
  134. package/dist/index-DWy_UGhI.js +0 -345
  135. package/dist/index-DYVtddfw.js +0 -142
  136. package/dist/index-DYnXaqYf.js +0 -142
  137. package/dist/index-DcvRPHuy.js +0 -372
  138. package/dist/index-DdC1uV2v.js +0 -1700
  139. package/dist/index-Dga14ZN7.js +0 -1774
  140. package/dist/index-Dk2V44uP.js +0 -372
  141. package/dist/index-DnJ481u1.js +0 -475
  142. package/dist/index-Do1CBqg8.js +0 -345
  143. package/dist/index-DqQRSPeF.js +0 -345
  144. package/dist/index-Jb4VMHIS.js +0 -142
  145. package/dist/index-MC3wWjNt.js +0 -475
  146. package/dist/index-MG0JePmx.js +0 -142
  147. package/dist/index-PRFGBLWt.js +0 -475
  148. package/dist/index-QgkT42dc.js +0 -372
  149. package/dist/index-TrLCW5xL.js +0 -372
  150. package/dist/index-YDlNLFVk.js +0 -142
  151. package/dist/index-ZAJgA3XD.js +0 -475
  152. package/dist/index-a_ilWAvi.js +0 -345
  153. package/dist/index-bi1TMGid.js +0 -372
  154. package/dist/index-fyarVCog.js +0 -475
  155. package/dist/index-mnTZtPFa.js +0 -345
  156. package/dist/index-orZCyV6I.js +0 -345
  157. package/dist/index-p3TbK44c.js +0 -142
  158. package/dist/index-sRwZYbZ4.js +0 -372
  159. package/dist/index-wATqKEcF.js +0 -142
  160. package/dist/setup.d.ts +0 -17
@@ -1,28 +1,28 @@
1
- /**
2
- * 权限指令
3
- * v-permission="['user:edit']" 或 v-permission="'user:edit'"
4
- * 注意:tineco-ui 不支持 permissions 字段,此指令暂时只检查登录状态
5
- */
6
-
7
- import type { Directive, DirectiveBinding } from 'vue'
8
- import { useUserStore } from '@/stores/user'
9
-
10
- const permission: Directive = {
11
- mounted(el: HTMLElement, _binding: DirectiveBinding<string | string[]>) {
12
- const userStore = useUserStore()
13
-
14
- // 如果没有登录,移除元素
15
- if (!userStore.isLoggedIn) {
16
- el.parentNode?.removeChild(el)
17
- }
18
-
19
- // 注意:tineco-ui 不支持 permissions 字段,此指令暂时不做权限判断
20
- }
21
- }
22
-
23
- export default permission
24
-
25
- // 注册指令
26
- export function setupPermissionDirective(app: any) {
27
- app.directive('permission', permission)
1
+ /**
2
+ * 权限指令
3
+ * v-permission="['user:edit']" 或 v-permission="'user:edit'"
4
+ * 注意:tineco-ui 不支持 permissions 字段,此指令暂时只检查登录状态
5
+ */
6
+
7
+ import type { Directive, DirectiveBinding } from 'vue'
8
+ import { useUserStore } from '@/stores/user'
9
+
10
+ const permission: Directive = {
11
+ mounted(el: HTMLElement, _binding: DirectiveBinding<string | string[]>) {
12
+ const userStore = useUserStore()
13
+
14
+ // 如果没有登录,移除元素
15
+ if (!userStore.isLoggedIn) {
16
+ el.parentNode?.removeChild(el)
17
+ }
18
+
19
+ // 注意:tineco-ui 不支持 permissions 字段,此指令暂时不做权限判断
20
+ }
21
+ }
22
+
23
+ export default permission
24
+
25
+ // 注册指令
26
+ export function setupPermissionDirective(app: any) {
27
+ app.directive('permission', permission)
28
28
  }
package/src/env.d.ts CHANGED
@@ -1,19 +1,19 @@
1
- /// <reference types="vite/client" />
2
-
3
- declare module '*.vue' {
4
- import type { DefineComponent } from 'vue'
5
- const component: DefineComponent<{}, {}, any>
6
- export default component
7
- }
8
-
9
- interface ImportMetaEnv {
10
- readonly VITE_APP_TITLE: string
11
- readonly VITE_API_BASE_URL: string
12
- readonly VITE_USE_MOCK: string
13
- readonly VITE_APP_ID: string
14
- readonly VITE_APP_CLIENT_ID: string
15
- }
16
-
17
- interface ImportMeta {
18
- readonly env: ImportMetaEnv
1
+ /// <reference types="vite/client" />
2
+
3
+ declare module '*.vue' {
4
+ import type { DefineComponent } from 'vue'
5
+ const component: DefineComponent<{}, {}, any>
6
+ export default component
7
+ }
8
+
9
+ interface ImportMetaEnv {
10
+ readonly VITE_APP_TITLE: string
11
+ readonly VITE_API_BASE_URL: string
12
+ readonly VITE_USE_MOCK: string
13
+ readonly VITE_APP_ID: string
14
+ readonly VITE_APP_CLIENT_ID: string
15
+ }
16
+
17
+ interface ImportMeta {
18
+ readonly env: ImportMetaEnv
19
19
  }
package/src/index.ts CHANGED
@@ -1,48 +1,48 @@
1
- // 组件
2
- export { default as Layout } from './components/Layout/index.vue'
3
- export { default as Header } from './components/Layout/Header.vue'
4
- export { default as Sidebar } from './components/Layout/Sidebar.vue'
5
- export { default as Tabs } from './components/Layout/Tabs.vue'
6
- export { default as Footer } from './components/Layout/Footer.vue'
7
-
8
- // 错误页面组件
9
- export { default as Login } from './views/login/index.vue'
10
- export { default as NotFound } from './views/error/404.vue'
11
- export { default as Forbidden } from './views/error/403.vue'
12
-
13
- // 组合式函数
14
- export * from './composables/useApp'
15
- export * from './composables/useAuth'
16
- export * from './composables/useForm'
17
- export * from './composables/useTable'
18
-
19
- // 工具函数
20
- export * from './utils/auth'
21
- export * from './utils/permission'
22
- export * from './utils/request'
23
- export * from './utils/storage'
24
- export * from './utils/config'
25
-
26
- // Store
27
- export * from './stores/app'
28
- export * from './stores/auth'
29
- export * from './stores/menu'
30
- export * from './stores/user'
31
-
32
- // 路由
33
- export { default as router, resetRouter } from './router'
34
- export * from './router/staticRoutes'
35
- export * from './router/dynamicRoutes'
36
- export { createLayoutRoute, createRouter } from './router/layoutRoute'
37
- export { setupRouterGuards } from './router/guards'
38
-
39
- // API
40
- export * from './api/auth'
41
- export * from './api/system'
42
- export * from './api/user'
43
-
44
- // 枚举
45
- export * from './enums'
46
-
47
- // 指令
1
+ // 组件
2
+ export { default as Layout } from './components/Layout/index.vue'
3
+ export { default as Header } from './components/Layout/Header.vue'
4
+ export { default as Sidebar } from './components/Layout/Sidebar.vue'
5
+ export { default as Tabs } from './components/Layout/Tabs.vue'
6
+ export { default as Footer } from './components/Layout/Footer.vue'
7
+
8
+ // 错误页面组件
9
+ export { default as Login } from './views/login/index.vue'
10
+ export { default as NotFound } from './views/error/404.vue'
11
+ export { default as Forbidden } from './views/error/403.vue'
12
+
13
+ // 组合式函数
14
+ export * from './composables/useApp'
15
+ export * from './composables/useAuth'
16
+ export * from './composables/useForm'
17
+ export * from './composables/useTable'
18
+
19
+ // 工具函数
20
+ export * from './utils/auth'
21
+ export * from './utils/permission'
22
+ export * from './utils/request'
23
+ export * from './utils/storage'
24
+ export * from './utils/config'
25
+
26
+ // Store
27
+ export * from './stores/app'
28
+ export * from './stores/auth'
29
+ export * from './stores/menu'
30
+ export * from './stores/user'
31
+
32
+ // 路由
33
+ export { default as router, resetRouter } from './router'
34
+ export * from './router/staticRoutes'
35
+ export * from './router/dynamicRoutes'
36
+ export { createLayoutRoute, createRouter } from './router/layoutRoute'
37
+ export { setupRouterGuards } from './router/guards'
38
+
39
+ // API
40
+ export * from './api/auth'
41
+ export * from './api/system'
42
+ export * from './api/user'
43
+
44
+ // 枚举
45
+ export * from './enums'
46
+
47
+ // 指令
48
48
  export { default as permissionDirective } from './directives/permission'
@@ -1,163 +1,163 @@
1
- /**
2
- * 动态路由模板
3
- */
4
-
5
- import type { RouteRecordRaw } from 'vue-router'
6
-
7
- // 布局路由(包含默认子路由)
8
- export const layoutRoute: RouteRecordRaw = {
9
- path: '/',
10
- name: 'Layout',
11
- component: () => import('@/components/Layout/index.vue'),
12
- redirect: '/dashboard',
13
- children: [
14
- {
15
- path: '/dashboard',
16
- name: 'Dashboard',
17
- component: () => import('@/views/dashboard/index.vue'),
18
- meta: {
19
- title: '仪表盘',
20
- icon: 'dashboard',
21
- keepAlive: true,
22
- affix: true
23
- }
24
- },
25
- {
26
- path: '/system/user',
27
- name: 'SystemUser',
28
- component: () => import('@/views/system/user/index.vue'),
29
- meta: {
30
- title: '用户管理',
31
- icon: 'user',
32
- keepAlive: true
33
- }
34
- },
35
- {
36
- path: '/system/role',
37
- name: 'SystemRole',
38
- component: () => import('@/views/system/role/index.vue'),
39
- meta: {
40
- title: '角色管理',
41
- icon: 'role',
42
- keepAlive: true
43
- }
44
- },
45
- {
46
- path: '/system/menu',
47
- name: 'SystemMenu',
48
- component: () => import('@/views/system/menu/index.vue'),
49
- meta: {
50
- title: '菜单管理',
51
- icon: 'menu',
52
- keepAlive: true
53
- }
54
- }
55
- ]
56
- }
57
-
58
- // 默认路由(用于开发,后续由后端返回)
59
- export const defaultDynamicRoutes: RouteRecordRaw[] = [
60
- {
61
- path: '/dashboard',
62
- name: 'Dashboard',
63
- component: () => import('@/views/dashboard/index.vue'),
64
- meta: {
65
- title: '仪表盘',
66
- icon: 'dashboard',
67
- keepAlive: true,
68
- affix: true
69
- }
70
- },
71
- {
72
- path: '/system',
73
- name: 'System',
74
- redirect: '/system/user',
75
- meta: {
76
- title: '系统管理',
77
- icon: 'setting'
78
- },
79
- children: [
80
- {
81
- path: 'user',
82
- name: 'SystemUser',
83
- component: () => import('@/views/system/user/index.vue'),
84
- meta: {
85
- title: '用户管理',
86
- icon: 'user',
87
- keepAlive: true
88
- }
89
- },
90
- {
91
- path: 'role',
92
- name: 'SystemRole',
93
- component: () => import('@/views/system/role/index.vue'),
94
- meta: {
95
- title: '角色管理',
96
- icon: 'role',
97
- keepAlive: true
98
- }
99
- },
100
- {
101
- path: 'menu',
102
- name: 'SystemMenu',
103
- component: () => import('@/views/system/menu/index.vue'),
104
- meta: {
105
- title: '菜单管理',
106
- icon: 'menu',
107
- keepAlive: true
108
- }
109
- }
110
- ]
111
- }
112
- ]
113
-
114
- // Mock 菜单数据(参考 tineco-ui 格式)
115
- export const mockMenuData = [
116
- {
117
- menuCode: 'dashboard',
118
- menuName: '仪表盘',
119
- menuUrl: '/dashboard',
120
- icon: 'dashboard',
121
- closable: true,
122
- isDefault: true,
123
- isOut: false
124
- },
125
- {
126
- menuCode: 'system',
127
- menuName: '系统管理',
128
- menuUrl: '/system',
129
- icon: 'setting',
130
- closable: false,
131
- isDefault: false,
132
- isOut: false,
133
- children: [
134
- {
135
- menuCode: 'system_user',
136
- menuName: '用户管理',
137
- menuUrl: '/system/user',
138
- icon: 'user',
139
- closable: true,
140
- isDefault: false,
141
- isOut: false
142
- },
143
- {
144
- menuCode: 'system_role',
145
- menuName: '角色管理',
146
- menuUrl: '/system/role',
147
- icon: 'role',
148
- closable: true,
149
- isDefault: false,
150
- isOut: false
151
- },
152
- {
153
- menuCode: 'system_menu',
154
- menuName: '菜单管理',
155
- menuUrl: '/system/menu',
156
- icon: 'menu',
157
- closable: true,
158
- isDefault: false,
159
- isOut: false
160
- }
161
- ]
162
- }
1
+ /**
2
+ * 动态路由模板
3
+ */
4
+
5
+ import type { RouteRecordRaw } from 'vue-router'
6
+
7
+ // 布局路由(包含默认子路由)
8
+ export const layoutRoute: RouteRecordRaw = {
9
+ path: '/',
10
+ name: 'Layout',
11
+ component: () => import('@/components/Layout/index.vue'),
12
+ redirect: '/dashboard',
13
+ children: [
14
+ {
15
+ path: '/dashboard',
16
+ name: 'Dashboard',
17
+ component: () => import('@/views/dashboard/index.vue'),
18
+ meta: {
19
+ title: '仪表盘',
20
+ icon: 'dashboard',
21
+ keepAlive: true,
22
+ affix: true
23
+ }
24
+ },
25
+ {
26
+ path: '/system/user',
27
+ name: 'SystemUser',
28
+ component: () => import('@/views/system/user/index.vue'),
29
+ meta: {
30
+ title: '用户管理',
31
+ icon: 'user',
32
+ keepAlive: true
33
+ }
34
+ },
35
+ {
36
+ path: '/system/role',
37
+ name: 'SystemRole',
38
+ component: () => import('@/views/system/role/index.vue'),
39
+ meta: {
40
+ title: '角色管理',
41
+ icon: 'role',
42
+ keepAlive: true
43
+ }
44
+ },
45
+ {
46
+ path: '/system/menu',
47
+ name: 'SystemMenu',
48
+ component: () => import('@/views/system/menu/index.vue'),
49
+ meta: {
50
+ title: '菜单管理',
51
+ icon: 'menu',
52
+ keepAlive: true
53
+ }
54
+ }
55
+ ]
56
+ }
57
+
58
+ // 默认路由(用于开发,后续由后端返回)
59
+ export const defaultDynamicRoutes: RouteRecordRaw[] = [
60
+ {
61
+ path: '/dashboard',
62
+ name: 'Dashboard',
63
+ component: () => import('@/views/dashboard/index.vue'),
64
+ meta: {
65
+ title: '仪表盘',
66
+ icon: 'dashboard',
67
+ keepAlive: true,
68
+ affix: true
69
+ }
70
+ },
71
+ {
72
+ path: '/system',
73
+ name: 'System',
74
+ redirect: '/system/user',
75
+ meta: {
76
+ title: '系统管理',
77
+ icon: 'setting'
78
+ },
79
+ children: [
80
+ {
81
+ path: 'user',
82
+ name: 'SystemUser',
83
+ component: () => import('@/views/system/user/index.vue'),
84
+ meta: {
85
+ title: '用户管理',
86
+ icon: 'user',
87
+ keepAlive: true
88
+ }
89
+ },
90
+ {
91
+ path: 'role',
92
+ name: 'SystemRole',
93
+ component: () => import('@/views/system/role/index.vue'),
94
+ meta: {
95
+ title: '角色管理',
96
+ icon: 'role',
97
+ keepAlive: true
98
+ }
99
+ },
100
+ {
101
+ path: 'menu',
102
+ name: 'SystemMenu',
103
+ component: () => import('@/views/system/menu/index.vue'),
104
+ meta: {
105
+ title: '菜单管理',
106
+ icon: 'menu',
107
+ keepAlive: true
108
+ }
109
+ }
110
+ ]
111
+ }
112
+ ]
113
+
114
+ // Mock 菜单数据(参考 tineco-ui 格式)
115
+ export const mockMenuData = [
116
+ {
117
+ menuCode: 'dashboard',
118
+ menuName: '仪表盘',
119
+ menuUrl: '/dashboard',
120
+ icon: 'dashboard',
121
+ closable: true,
122
+ isDefault: true,
123
+ isOut: false
124
+ },
125
+ {
126
+ menuCode: 'system',
127
+ menuName: '系统管理',
128
+ menuUrl: '/system',
129
+ icon: 'setting',
130
+ closable: false,
131
+ isDefault: false,
132
+ isOut: false,
133
+ children: [
134
+ {
135
+ menuCode: 'system_user',
136
+ menuName: '用户管理',
137
+ menuUrl: '/system/user',
138
+ icon: 'user',
139
+ closable: true,
140
+ isDefault: false,
141
+ isOut: false
142
+ },
143
+ {
144
+ menuCode: 'system_role',
145
+ menuName: '角色管理',
146
+ menuUrl: '/system/role',
147
+ icon: 'role',
148
+ closable: true,
149
+ isDefault: false,
150
+ isOut: false
151
+ },
152
+ {
153
+ menuCode: 'system_menu',
154
+ menuName: '菜单管理',
155
+ menuUrl: '/system/menu',
156
+ icon: 'menu',
157
+ closable: true,
158
+ isDefault: false,
159
+ isOut: false
160
+ }
161
+ ]
162
+ }
163
163
  ]