xto-fronted 0.4.92 → 0.4.94

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 (83) 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/{index-CsjBlLrl.js → index-3ekBp4iW.js} +2 -2
  35. package/dist/{index-CvYIvRSW.js → index-58aI1w0v.js} +2 -2
  36. package/dist/{index--qRfsJ32.js → index-A_B_Ap_A.js} +1510 -1537
  37. package/dist/{index-DAPLMrmP.js → index-B5DLfOYb.js} +23 -23
  38. package/dist/index-BAmYUT0G.js +189 -0
  39. package/dist/index-BRvi9qW-.js +515 -0
  40. package/dist/index-BVGW4DDQ.js +189 -0
  41. package/dist/index-Bmf0YbVq.js +189 -0
  42. package/dist/index-C2-a5KSQ.js +4233 -0
  43. package/dist/{index-DjkSMw-x.js → index-CeZ0CSSs.js} +2 -2
  44. package/dist/index-Cf8E7FM1.js +4270 -0
  45. package/dist/index-ChowNrlU.js +641 -0
  46. package/dist/index-D25KzR0I.js +479 -0
  47. package/dist/index-DCBIjLHy.js +515 -0
  48. package/dist/index-DEYOivza.js +641 -0
  49. package/dist/index-DReodgBw.js +4233 -0
  50. package/dist/index-DjERNRXX.js +515 -0
  51. package/dist/index-LSdsO2Ox.js +479 -0
  52. package/dist/index-gBlRG4kk.js +479 -0
  53. package/dist/index-xWU3J3OH.js +641 -0
  54. package/dist/index.es.js +1 -1
  55. package/dist/index.html +28 -0
  56. package/dist/index.umd.js +8 -8
  57. package/dist/style.css +1 -1
  58. package/package.json +91 -91
  59. package/src/App.vue +48 -48
  60. package/src/assets/styles/_dark.scss +639 -639
  61. package/src/assets/styles/_root.scss +183 -183
  62. package/src/assets/styles/_variables.scss +69 -69
  63. package/src/assets/styles/index.scss +460 -460
  64. package/src/components/Layout/MixTopMenu.vue +4 -1
  65. package/src/components/Layout/Sidebar.vue +201 -198
  66. package/src/components/Layout/SidebarMenuItem.vue +158 -158
  67. package/src/components/Layout/TopMenu.vue +1173 -1170
  68. package/src/components/Layout/index.vue +192 -192
  69. package/src/composables/useI18n.ts +43 -43
  70. package/src/index.ts +100 -100
  71. package/src/router/layoutRoute.ts +59 -59
  72. package/src/stores/index.ts +15 -15
  73. package/src/stores/locale.ts +66 -66
  74. package/src/types/json-bigint.d.ts +18 -18
  75. package/src/types/xto.d.ts +172 -172
  76. package/src/utils/request.ts +184 -184
  77. package/src/views/dashboard/index.vue +545 -545
  78. package/src/views/error/403.vue +251 -251
  79. package/src/views/error/404.vue +253 -253
  80. package/src/views/login/index.vue +586 -586
  81. package/src/views/system/menu/index.vue +690 -690
  82. package/src/views/system/role/index.vue +583 -583
  83. 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>