xto-fronted 0.4.93 → 0.4.95

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 (92) hide show
  1. package/dist/assets/404-C9Uh6Uu-.css +1 -0
  2. package/dist/assets/404-zjGLLssH.js +1 -0
  3. package/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
  4. package/dist/assets/index-B5xc4gQB.css +1 -0
  5. package/dist/assets/index-BDgOY6Rp.js +1 -0
  6. package/dist/assets/index-BIoRANs0.js +1 -0
  7. package/dist/assets/index-BRR97dc6.js +1 -0
  8. package/dist/assets/index-Bz0BgZQ1.js +1 -0
  9. package/dist/assets/index-CAdztNsv.css +1 -0
  10. package/dist/assets/index-CCXrcISf.css +1 -0
  11. package/dist/assets/index-CfpZmcpk.css +1 -0
  12. package/dist/assets/index-CwJSA85U.js +1 -0
  13. package/dist/assets/index-CwRA10ac.js +1 -0
  14. package/dist/assets/index-D8NDxq9d.js +1 -0
  15. package/dist/assets/index-DEB6-Iv_.js +2 -0
  16. package/dist/assets/index-DM4Ezclc.css +1 -0
  17. package/dist/assets/index-DYv7nImj.css +1 -0
  18. package/dist/assets/index-t-2Y0KhA.css +1 -0
  19. package/dist/assets/vendor-CUVPinTg.js +13 -0
  20. package/dist/assets/vue-vendor-DeJXJVbN.js +29 -0
  21. package/dist/assets/xto-base-CL2NKZJJ.css +1 -0
  22. package/dist/assets/xto-base-PwLGsxxb.js +1 -0
  23. package/dist/assets/xto-business--V1F5Gwb.css +1 -0
  24. package/dist/assets/xto-core-CtL4zKiV.js +1 -0
  25. package/dist/assets/xto-data-MxZsiJgi.css +1 -0
  26. package/dist/assets/xto-data-bCXQa7fT.js +1 -0
  27. package/dist/assets/xto-feedback-Bxx38c3P.css +1 -0
  28. package/dist/assets/xto-feedback-CPydp0kn.js +1 -0
  29. package/dist/assets/xto-form-Cu6q3VLG.css +1 -0
  30. package/dist/assets/xto-form-bywohdAf.js +1 -0
  31. package/dist/assets/xto-layout-BDD6sSlM.css +1 -0
  32. package/dist/assets/xto-navigation-Bbdpine9.js +1 -0
  33. package/dist/assets/xto-navigation-XfpyMpEo.css +1 -0
  34. package/dist/components/Layout/MixTopMenu.vue.d.ts +6 -1
  35. package/dist/components/Layout/Sidebar.vue.d.ts +2 -0
  36. package/dist/components/Layout/TopMenu.vue.d.ts +6 -1
  37. package/dist/components/Layout/index.vue.d.ts +6 -1
  38. package/dist/{index-D59X6HmM.js → index-3ekBp4iW.js} +2 -2
  39. package/dist/{index-Cp8kqjtv.js → index-58aI1w0v.js} +2 -2
  40. package/dist/{index-me_Uu2lk.js → index-A_B_Ap_A.js} +1560 -1590
  41. package/dist/{index-lJrh5CFc.js → index-B5DLfOYb.js} +23 -23
  42. package/dist/index-BAmYUT0G.js +189 -0
  43. package/dist/{index-B4U8Dy2W.js → index-BK4Mut6H.js} +2 -2
  44. package/dist/index-BRvi9qW-.js +515 -0
  45. package/dist/index-BVGW4DDQ.js +189 -0
  46. package/dist/index-BXg94yA2.js +515 -0
  47. package/dist/index-Bmf0YbVq.js +189 -0
  48. package/dist/index-C2-a5KSQ.js +4233 -0
  49. package/dist/index-CAHSv7LK.js +4285 -0
  50. package/dist/index-CeZ0CSSs.js +641 -0
  51. package/dist/index-Cf8E7FM1.js +4270 -0
  52. package/dist/index-CgyQqbdx.js +189 -0
  53. package/dist/index-ChowNrlU.js +641 -0
  54. package/dist/index-D25KzR0I.js +479 -0
  55. package/dist/index-DCBIjLHy.js +515 -0
  56. package/dist/index-DEYOivza.js +641 -0
  57. package/dist/index-DReodgBw.js +4233 -0
  58. package/dist/index-DjERNRXX.js +515 -0
  59. package/dist/index-LSdsO2Ox.js +479 -0
  60. package/dist/index-UJixTdep.js +479 -0
  61. package/dist/index-gBlRG4kk.js +479 -0
  62. package/dist/index-xWU3J3OH.js +641 -0
  63. package/dist/index.es.js +1 -1
  64. package/dist/index.html +28 -0
  65. package/dist/index.umd.js +8 -8
  66. package/dist/style.css +1 -1
  67. package/package.json +91 -91
  68. package/src/App.vue +48 -48
  69. package/src/assets/styles/_dark.scss +639 -639
  70. package/src/assets/styles/_root.scss +183 -183
  71. package/src/assets/styles/_variables.scss +69 -69
  72. package/src/assets/styles/index.scss +460 -460
  73. package/src/components/Layout/MixTopMenu.vue +8 -1
  74. package/src/components/Layout/Sidebar.vue +200 -198
  75. package/src/components/Layout/SidebarMenuItem.vue +158 -158
  76. package/src/components/Layout/TopMenu.vue +1177 -1170
  77. package/src/components/Layout/index.vue +199 -192
  78. package/src/composables/useI18n.ts +43 -43
  79. package/src/index.ts +100 -100
  80. package/src/router/layoutRoute.ts +59 -59
  81. package/src/stores/index.ts +15 -15
  82. package/src/stores/locale.ts +66 -66
  83. package/src/types/json-bigint.d.ts +18 -18
  84. package/src/types/xto.d.ts +172 -172
  85. package/src/utils/request.ts +184 -184
  86. package/src/views/dashboard/index.vue +545 -545
  87. package/src/views/error/403.vue +251 -251
  88. package/src/views/error/404.vue +253 -253
  89. package/src/views/login/index.vue +586 -586
  90. package/src/views/system/menu/index.vue +690 -690
  91. package/src/views/system/role/index.vue +583 -583
  92. package/src/views/system/user/index.vue +655 -655
@@ -1,252 +1,252 @@
1
- <script setup lang="ts">
2
- import { useRouter } from 'vue-router'
3
- import { Button } from '@xto/base'
4
-
5
- const router = useRouter()
6
-
7
- const goBack = () => {
8
- router.push('/')
9
- }
10
- </script>
11
-
12
- <template>
13
- <div class="error-page">
14
- <div class="error-container">
15
- <!-- 装饰背景 -->
16
- <div class="error-bg">
17
- <div class="bg-circle circle-1"></div>
18
- <div class="bg-circle circle-2"></div>
19
- <div class="bg-circle circle-3"></div>
20
- </div>
21
-
22
- <!-- 内容 -->
23
- <div class="error-content">
24
- <div class="error-code">
25
- <span class="code-digit">4</span>
26
- <span class="code-zero warning">
27
- <span class="zero-inner">0</span>
28
- </span>
29
- <span class="code-digit">3</span>
30
- </div>
31
-
32
- <div class="error-illustration">
33
- <svg viewBox="0 0 200 120" fill="none" xmlns="http://www.w3.org/2000/svg">
34
- <!-- 盾牌 -->
35
- <path d="M100 15 L150 35 L150 70 C150 95 100 110 100 110 C100 110 50 95 50 70 L50 35 Z"
36
- fill="var(--color-warning-lighter)" stroke="var(--color-warning)" stroke-width="2"/>
37
- <!-- 锁 -->
38
- <rect x="85" y="55" width="30" height="25" rx="4" fill="var(--color-warning)"/>
39
- <path d="M92 55 V48 A8 8 0 0 1 108 48 V55" fill="none" stroke="var(--color-warning)" stroke-width="3"/>
40
- <!-- 禁止符号 -->
41
- <circle cx="100" cy="67" r="6" fill="none" stroke="#fff" stroke-width="2"/>
42
- <line x1="96" y1="63" x2="104" y2="71" stroke="#fff" stroke-width="2"/>
43
- </svg>
44
- </div>
45
-
46
- <h1 class="error-title">无访问权限</h1>
47
- <p class="error-desc">抱歉,您没有权限访问此页面,请联系管理员获取权限</p>
48
-
49
- <div class="error-actions">
50
- <Button type="primary" size="large" @click="goBack">
51
- <template #icon>
52
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
53
- <path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"/>
54
- <polyline points="9,22 9,12 15,12 15,22"/>
55
- </svg>
56
- </template>
57
- 返回首页
58
- </Button>
59
- <Button size="large" @click="router.go(-1)">
60
- <template #icon>
61
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
62
- <path d="M19 12H5M12 19l-7-7 7-7"/>
63
- </svg>
64
- </template>
65
- 返回上一页
66
- </Button>
67
- </div>
68
-
69
- <!-- 提示 -->
70
- <div class="error-tip">
71
- <p>可能的原因:</p>
72
- <ul>
73
- <li>您的账号权限不足</li>
74
- <li>该页面需要特定角色才能访问</li>
75
- <li>您的登录状态已过期</li>
76
- </ul>
77
- </div>
78
- </div>
79
- </div>
80
- </div>
81
- </template>
82
-
83
- <style lang="scss" scoped>
84
- .error-page {
85
- width: 100%;
86
- height: 100%;
87
- display: flex;
88
- align-items: center;
89
- justify-content: center;
90
- background: var(--bg-color-page);
91
- position: relative;
92
- overflow: hidden;
93
- }
94
-
95
- .error-container {
96
- position: relative;
97
- z-index: 2;
98
- max-width: 600px;
99
- padding: 40px;
100
- }
101
-
102
- .error-bg {
103
- position: absolute;
104
- inset: 0;
105
- z-index: 1;
106
- overflow: hidden;
107
-
108
- .bg-circle {
109
- position: absolute;
110
- border-radius: 50%;
111
- opacity: 0.1;
112
-
113
- &.circle-1 {
114
- width: 400px;
115
- height: 400px;
116
- top: -100px;
117
- right: -100px;
118
- background: var(--color-warning);
119
- }
120
-
121
- &.circle-2 {
122
- width: 300px;
123
- height: 300px;
124
- bottom: -50px;
125
- left: -50px;
126
- background: var(--color-warning);
127
- }
128
-
129
- &.circle-3 {
130
- width: 200px;
131
- height: 200px;
132
- top: 50%;
133
- left: 50%;
134
- transform: translate(-50%, -50%);
135
- background: var(--color-warning-light);
136
- }
137
- }
138
- }
139
-
140
- .error-content {
141
- text-align: center;
142
- }
143
-
144
- .error-code {
145
- display: flex;
146
- justify-content: center;
147
- align-items: center;
148
- gap: 8px;
149
- margin-bottom: 32px;
150
-
151
- .code-digit {
152
- font-size: 80px;
153
- font-weight: 700;
154
- color: var(--color-text-primary);
155
- line-height: 1;
156
- }
157
-
158
- .code-zero {
159
- position: relative;
160
- width: 80px;
161
- height: 80px;
162
- display: flex;
163
- align-items: center;
164
- justify-content: center;
165
- background: linear-gradient(135deg, var(--color-warning) 0%, var(--color-warning-light) 100%);
166
- border-radius: 50%;
167
-
168
- .zero-inner {
169
- font-size: 48px;
170
- font-weight: 700;
171
- color: #fff;
172
- }
173
- }
174
- }
175
-
176
- .error-illustration {
177
- width: 200px;
178
- height: 120px;
179
- margin: 0 auto 24px;
180
- }
181
-
182
- .error-title {
183
- font-size: 24px;
184
- font-weight: 600;
185
- color: var(--color-text-primary);
186
- margin-bottom: 12px;
187
- }
188
-
189
- .error-desc {
190
- font-size: 14px;
191
- color: var(--color-text-secondary);
192
- margin-bottom: 32px;
193
- }
194
-
195
- .error-actions {
196
- display: flex;
197
- justify-content: center;
198
- gap: 16px;
199
- margin-bottom: 32px;
200
-
201
- :deep(.x-button) {
202
- padding: 12px 24px;
203
- border-radius: 8px;
204
-
205
- svg {
206
- width: 18px;
207
- height: 18px;
208
- margin-right: 8px;
209
- }
210
- }
211
- }
212
-
213
- .error-tip {
214
- padding: 20px;
215
- background: var(--color-warning-lighter);
216
- border-radius: var(--border-radius-large);
217
-
218
- p {
219
- font-size: 14px;
220
- font-weight: 500;
221
- color: var(--color-text-primary);
222
- margin-bottom: 12px;
223
- }
224
-
225
- ul {
226
- list-style: none;
227
- padding: 0;
228
- margin: 0;
229
-
230
- li {
231
- font-size: 13px;
232
- color: var(--color-text-secondary);
233
- padding: 4px 0;
234
- position: relative;
235
- padding-left: 16px;
236
-
237
- &:before {
238
- content: '';
239
- position: absolute;
240
- left: 0;
241
- top: 50%;
242
- transform: translateY(-50%);
243
- width: 6px;
244
- height: 6px;
245
- background: var(--color-warning);
246
- border-radius: 50%;
247
- opacity: 0.6;
248
- }
249
- }
250
- }
251
- }
1
+ <script setup lang="ts">
2
+ import { useRouter } from 'vue-router'
3
+ import { Button } from '@xto/base'
4
+
5
+ const router = useRouter()
6
+
7
+ const goBack = () => {
8
+ router.push('/')
9
+ }
10
+ </script>
11
+
12
+ <template>
13
+ <div class="error-page">
14
+ <div class="error-container">
15
+ <!-- 装饰背景 -->
16
+ <div class="error-bg">
17
+ <div class="bg-circle circle-1"></div>
18
+ <div class="bg-circle circle-2"></div>
19
+ <div class="bg-circle circle-3"></div>
20
+ </div>
21
+
22
+ <!-- 内容 -->
23
+ <div class="error-content">
24
+ <div class="error-code">
25
+ <span class="code-digit">4</span>
26
+ <span class="code-zero warning">
27
+ <span class="zero-inner">0</span>
28
+ </span>
29
+ <span class="code-digit">3</span>
30
+ </div>
31
+
32
+ <div class="error-illustration">
33
+ <svg viewBox="0 0 200 120" fill="none" xmlns="http://www.w3.org/2000/svg">
34
+ <!-- 盾牌 -->
35
+ <path d="M100 15 L150 35 L150 70 C150 95 100 110 100 110 C100 110 50 95 50 70 L50 35 Z"
36
+ fill="var(--color-warning-lighter)" stroke="var(--color-warning)" stroke-width="2"/>
37
+ <!-- 锁 -->
38
+ <rect x="85" y="55" width="30" height="25" rx="4" fill="var(--color-warning)"/>
39
+ <path d="M92 55 V48 A8 8 0 0 1 108 48 V55" fill="none" stroke="var(--color-warning)" stroke-width="3"/>
40
+ <!-- 禁止符号 -->
41
+ <circle cx="100" cy="67" r="6" fill="none" stroke="#fff" stroke-width="2"/>
42
+ <line x1="96" y1="63" x2="104" y2="71" stroke="#fff" stroke-width="2"/>
43
+ </svg>
44
+ </div>
45
+
46
+ <h1 class="error-title">无访问权限</h1>
47
+ <p class="error-desc">抱歉,您没有权限访问此页面,请联系管理员获取权限</p>
48
+
49
+ <div class="error-actions">
50
+ <Button type="primary" size="large" @click="goBack">
51
+ <template #icon>
52
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
53
+ <path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"/>
54
+ <polyline points="9,22 9,12 15,12 15,22"/>
55
+ </svg>
56
+ </template>
57
+ 返回首页
58
+ </Button>
59
+ <Button size="large" @click="router.go(-1)">
60
+ <template #icon>
61
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
62
+ <path d="M19 12H5M12 19l-7-7 7-7"/>
63
+ </svg>
64
+ </template>
65
+ 返回上一页
66
+ </Button>
67
+ </div>
68
+
69
+ <!-- 提示 -->
70
+ <div class="error-tip">
71
+ <p>可能的原因:</p>
72
+ <ul>
73
+ <li>您的账号权限不足</li>
74
+ <li>该页面需要特定角色才能访问</li>
75
+ <li>您的登录状态已过期</li>
76
+ </ul>
77
+ </div>
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </template>
82
+
83
+ <style lang="scss" scoped>
84
+ .error-page {
85
+ width: 100%;
86
+ height: 100%;
87
+ display: flex;
88
+ align-items: center;
89
+ justify-content: center;
90
+ background: var(--bg-color-page);
91
+ position: relative;
92
+ overflow: hidden;
93
+ }
94
+
95
+ .error-container {
96
+ position: relative;
97
+ z-index: 2;
98
+ max-width: 600px;
99
+ padding: 40px;
100
+ }
101
+
102
+ .error-bg {
103
+ position: absolute;
104
+ inset: 0;
105
+ z-index: 1;
106
+ overflow: hidden;
107
+
108
+ .bg-circle {
109
+ position: absolute;
110
+ border-radius: 50%;
111
+ opacity: 0.1;
112
+
113
+ &.circle-1 {
114
+ width: 400px;
115
+ height: 400px;
116
+ top: -100px;
117
+ right: -100px;
118
+ background: var(--color-warning);
119
+ }
120
+
121
+ &.circle-2 {
122
+ width: 300px;
123
+ height: 300px;
124
+ bottom: -50px;
125
+ left: -50px;
126
+ background: var(--color-warning);
127
+ }
128
+
129
+ &.circle-3 {
130
+ width: 200px;
131
+ height: 200px;
132
+ top: 50%;
133
+ left: 50%;
134
+ transform: translate(-50%, -50%);
135
+ background: var(--color-warning-light);
136
+ }
137
+ }
138
+ }
139
+
140
+ .error-content {
141
+ text-align: center;
142
+ }
143
+
144
+ .error-code {
145
+ display: flex;
146
+ justify-content: center;
147
+ align-items: center;
148
+ gap: 8px;
149
+ margin-bottom: 32px;
150
+
151
+ .code-digit {
152
+ font-size: 80px;
153
+ font-weight: 700;
154
+ color: var(--color-text-primary);
155
+ line-height: 1;
156
+ }
157
+
158
+ .code-zero {
159
+ position: relative;
160
+ width: 80px;
161
+ height: 80px;
162
+ display: flex;
163
+ align-items: center;
164
+ justify-content: center;
165
+ background: linear-gradient(135deg, var(--color-warning) 0%, var(--color-warning-light) 100%);
166
+ border-radius: 50%;
167
+
168
+ .zero-inner {
169
+ font-size: 48px;
170
+ font-weight: 700;
171
+ color: #fff;
172
+ }
173
+ }
174
+ }
175
+
176
+ .error-illustration {
177
+ width: 200px;
178
+ height: 120px;
179
+ margin: 0 auto 24px;
180
+ }
181
+
182
+ .error-title {
183
+ font-size: 24px;
184
+ font-weight: 600;
185
+ color: var(--color-text-primary);
186
+ margin-bottom: 12px;
187
+ }
188
+
189
+ .error-desc {
190
+ font-size: 14px;
191
+ color: var(--color-text-secondary);
192
+ margin-bottom: 32px;
193
+ }
194
+
195
+ .error-actions {
196
+ display: flex;
197
+ justify-content: center;
198
+ gap: 16px;
199
+ margin-bottom: 32px;
200
+
201
+ :deep(.x-button) {
202
+ padding: 12px 24px;
203
+ border-radius: 8px;
204
+
205
+ svg {
206
+ width: 18px;
207
+ height: 18px;
208
+ margin-right: 8px;
209
+ }
210
+ }
211
+ }
212
+
213
+ .error-tip {
214
+ padding: 20px;
215
+ background: var(--color-warning-lighter);
216
+ border-radius: var(--border-radius-large);
217
+
218
+ p {
219
+ font-size: 14px;
220
+ font-weight: 500;
221
+ color: var(--color-text-primary);
222
+ margin-bottom: 12px;
223
+ }
224
+
225
+ ul {
226
+ list-style: none;
227
+ padding: 0;
228
+ margin: 0;
229
+
230
+ li {
231
+ font-size: 13px;
232
+ color: var(--color-text-secondary);
233
+ padding: 4px 0;
234
+ position: relative;
235
+ padding-left: 16px;
236
+
237
+ &:before {
238
+ content: '';
239
+ position: absolute;
240
+ left: 0;
241
+ top: 50%;
242
+ transform: translateY(-50%);
243
+ width: 6px;
244
+ height: 6px;
245
+ background: var(--color-warning);
246
+ border-radius: 50%;
247
+ opacity: 0.6;
248
+ }
249
+ }
250
+ }
251
+ }
252
252
  </style>