xto-fronted 0.6.3 → 0.8.0
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.
- package/dist/{index-DydABgae.js → index-D73_-C9m.js} +13 -13
- package/dist/index-DBjV4kzh.js +249 -0
- package/dist/{index-IOKG7Gwo.js → index-DJ1oHe08.js} +973 -918
- package/dist/{index-BKO6Hzba.js → index-D_TGEwDg.js} +192 -140
- package/dist/{index-BZSZ3bx2.js → index-DauAWAHG.js} +28 -28
- package/dist/index.js +1 -1
- package/dist/style.css +1 -1
- package/package.json +9 -9
- package/src/App.vue +4 -4
- package/src/assets/styles/_dark.scss +176 -176
- package/src/assets/styles/_reset.scss +8 -8
- package/src/assets/styles/_root.scss +131 -125
- package/src/assets/styles/_variables.scss +17 -17
- package/src/assets/styles/index.scss +39 -39
- package/src/components/Layout/Footer.vue +1 -1
- package/src/components/Layout/Header.vue +59 -60
- package/src/components/Layout/MixTopMenu.vue +42 -43
- package/src/components/Layout/Sidebar.vue +8 -8
- package/src/components/Layout/SidebarMenuItem.vue +2 -2
- package/src/components/Layout/Tabs.vue +6 -6
- package/src/components/Layout/TopMenu.vue +42 -43
- package/src/components/Layout/index.vue +4 -4
- package/src/stores/app.ts +26 -2
- package/src/style.scss +2 -2
- package/src/views/dashboard/index.vue +125 -104
- package/src/views/error/403.vue +13 -13
- package/src/views/error/404.vue +14 -14
- package/src/views/login/index.vue +21 -54
- package/src/views/system/menu/index.vue +30 -30
- package/src/views/system/role/index.vue +20 -20
- package/src/views/system/user/index.vue +23 -23
- package/vite.config.ts +4 -1
- package/dist/index-BXHwCe22.js +0 -189
|
@@ -3,10 +3,38 @@ import { ref } from 'vue'
|
|
|
3
3
|
import { Progress } from '@xto/data'
|
|
4
4
|
|
|
5
5
|
const stats = ref([
|
|
6
|
-
{
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
{
|
|
7
|
+
title: '用户总数',
|
|
8
|
+
value: 1234,
|
|
9
|
+
icon: 'M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm-7 8a7 7 0 0 1 14 0',
|
|
10
|
+
color: 'var(--xto-color-primary, #4F46E5)',
|
|
11
|
+
trend: '+12.5%',
|
|
12
|
+
trendUp: true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
title: '今日访问',
|
|
16
|
+
value: 567,
|
|
17
|
+
icon: 'M2 12s3.5-6 10-6 10 6 10 6-3.5 6-10 6-10-6-10-6Zm10 2.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z',
|
|
18
|
+
color: 'var(--xto-color-success, #00A870)',
|
|
19
|
+
trend: '+8.2%',
|
|
20
|
+
trendUp: true
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
title: '订单数量',
|
|
24
|
+
value: 890,
|
|
25
|
+
icon: 'M21 8l-9-5-9 5v8l9 5 9-5V8Zm-9-2.7L18.6 8 12 11.7 5.4 8 12 5.3Z',
|
|
26
|
+
color: 'var(--xto-color-warning, #FF7D00)',
|
|
27
|
+
trend: '-3.1%',
|
|
28
|
+
trendUp: false
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
title: '销售金额',
|
|
32
|
+
value: 123456,
|
|
33
|
+
icon: 'M3 7h18v10H3V7Zm9 5a2.5 2.5 0 1 0 0 .01M6.5 12h.01M17.5 12h.01',
|
|
34
|
+
color: 'var(--xto-color-danger, #F53F3F)',
|
|
35
|
+
trend: '+15.8%',
|
|
36
|
+
trendUp: true
|
|
37
|
+
}
|
|
10
38
|
])
|
|
11
39
|
|
|
12
40
|
const activities = ref([
|
|
@@ -18,10 +46,30 @@ const activities = ref([
|
|
|
18
46
|
])
|
|
19
47
|
|
|
20
48
|
const quickLinks = ref([
|
|
21
|
-
{
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
49
|
+
{
|
|
50
|
+
title: '用户管理',
|
|
51
|
+
path: '/system/user',
|
|
52
|
+
icon: 'M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm-7 8a7 7 0 0 1 14 0',
|
|
53
|
+
desc: '管理系统用户'
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
title: '角色管理',
|
|
57
|
+
path: '/system/role',
|
|
58
|
+
icon: 'M8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm8 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM2 19a6 6 0 0 1 12 0m2-6a6 6 0 0 1 6 6',
|
|
59
|
+
desc: '角色权限配置'
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
title: '菜单管理',
|
|
63
|
+
path: '/system/menu',
|
|
64
|
+
icon: 'M4 6h16M4 12h16M4 18h10',
|
|
65
|
+
desc: '菜单路由管理'
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
title: '系统设置',
|
|
69
|
+
path: '/system',
|
|
70
|
+
icon: 'M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm7.4-3a7.4 7.4 0 0 0-.1-1.2l2-1.6-2-3.4-2.4 1a7.6 7.6 0 0 0-2-1.2L14.5 3h-5l-.4 2.6a7.6 7.6 0 0 0-2 1.2l-2.4-1-2 3.4 2 1.6a7.4 7.4 0 0 0 0 2.4l-2 1.6 2 3.4 2.4-1a7.6 7.6 0 0 0 2 1.2l.4 2.6h5l.4-2.6a7.6 7.6 0 0 0 2-1.2l2.4 1 2-3.4-2-1.6c.1-.4.1-.8.1-1.2Z',
|
|
71
|
+
desc: '系统参数配置'
|
|
72
|
+
}
|
|
25
73
|
])
|
|
26
74
|
|
|
27
75
|
const systemInfo = ref([
|
|
@@ -37,14 +85,14 @@ const systemInfo = ref([
|
|
|
37
85
|
<!-- 统计卡片 -->
|
|
38
86
|
<div class="stats-section">
|
|
39
87
|
<div v-for="stat in stats" :key="stat.title" class="stat-card">
|
|
40
|
-
<div class="stat-icon"
|
|
41
|
-
<
|
|
88
|
+
<div class="stat-icon">
|
|
89
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" :style="{ color: stat.color }">
|
|
90
|
+
<path :d="stat.icon" />
|
|
91
|
+
</svg>
|
|
42
92
|
</div>
|
|
43
93
|
<div class="stat-content">
|
|
44
94
|
<div class="stat-title">{{ stat.title }}</div>
|
|
45
|
-
<div class="stat-value"
|
|
46
|
-
{{ stat.value.toLocaleString() }}
|
|
47
|
-
</div>
|
|
95
|
+
<div class="stat-value">{{ stat.value.toLocaleString() }}</div>
|
|
48
96
|
<div class="stat-trend" :class="{ up: stat.trendUp, down: !stat.trendUp }">
|
|
49
97
|
<svg v-if="stat.trendUp" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
50
98
|
<path d="M7 17l5-5 5 5M7 7l5 5 5-5"/>
|
|
@@ -55,7 +103,6 @@ const systemInfo = ref([
|
|
|
55
103
|
<span>{{ stat.trend }}</span>
|
|
56
104
|
</div>
|
|
57
105
|
</div>
|
|
58
|
-
<div class="stat-decoration" :style="{ background: `linear-gradient(135deg, ${stat.color}08 0%, transparent 100%)` }"></div>
|
|
59
106
|
</div>
|
|
60
107
|
</div>
|
|
61
108
|
|
|
@@ -74,7 +121,11 @@ const systemInfo = ref([
|
|
|
74
121
|
:to="link.path"
|
|
75
122
|
class="quick-card"
|
|
76
123
|
>
|
|
77
|
-
<div class="quick-icon">
|
|
124
|
+
<div class="quick-icon">
|
|
125
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
|
126
|
+
<path :d="link.icon" />
|
|
127
|
+
</svg>
|
|
128
|
+
</div>
|
|
78
129
|
<div class="quick-info">
|
|
79
130
|
<div class="quick-title">{{ link.title }}</div>
|
|
80
131
|
<div class="quick-desc">{{ link.desc }}</div>
|
|
@@ -106,7 +157,6 @@ const systemInfo = ref([
|
|
|
106
157
|
</div>
|
|
107
158
|
<div class="activity-time">{{ activity.time }}</div>
|
|
108
159
|
</div>
|
|
109
|
-
<div class="activity-dot" :class="activity.type"></div>
|
|
110
160
|
</div>
|
|
111
161
|
</div>
|
|
112
162
|
</div>
|
|
@@ -155,7 +205,7 @@ const systemInfo = ref([
|
|
|
155
205
|
<style lang="scss" scoped>
|
|
156
206
|
.dashboard {
|
|
157
207
|
padding: 24px;
|
|
158
|
-
background: var(--xto-bg-color-page, #
|
|
208
|
+
background: var(--xto-bg-color-page, #F7F8FA);
|
|
159
209
|
min-height: 100%;
|
|
160
210
|
}
|
|
161
211
|
|
|
@@ -176,24 +226,17 @@ const systemInfo = ref([
|
|
|
176
226
|
}
|
|
177
227
|
|
|
178
228
|
.stat-card {
|
|
179
|
-
position: relative;
|
|
180
229
|
display: flex;
|
|
181
230
|
align-items: flex-start;
|
|
182
231
|
gap: 16px;
|
|
183
232
|
padding: 20px;
|
|
184
233
|
background: var(--xto-bg-color, #FFFFFF);
|
|
185
|
-
border-radius: var(--xto-border-radius-large,
|
|
186
|
-
box-shadow: var(--xto-shadow-subtle, 0 1px 2px
|
|
187
|
-
transition:
|
|
188
|
-
overflow: hidden;
|
|
234
|
+
border-radius: var(--xto-border-radius-large, 12px);
|
|
235
|
+
box-shadow: var(--xto-shadow-subtle, 0 1px 2px rgba(31, 35, 41, 0.06));
|
|
236
|
+
transition: box-shadow 0.2s ease;
|
|
189
237
|
|
|
190
238
|
&:hover {
|
|
191
|
-
box-shadow: var(--xto-shadow-
|
|
192
|
-
transform: translateY(-4px);
|
|
193
|
-
|
|
194
|
-
.stat-decoration {
|
|
195
|
-
opacity: 1;
|
|
196
|
-
}
|
|
239
|
+
box-shadow: var(--xto-shadow-base, 0 1px 3px rgba(31, 35, 41, 0.08), 0 4px 12px rgba(31, 35, 41, 0.06));
|
|
197
240
|
}
|
|
198
241
|
|
|
199
242
|
.stat-icon {
|
|
@@ -202,11 +245,13 @@ const systemInfo = ref([
|
|
|
202
245
|
display: flex;
|
|
203
246
|
align-items: center;
|
|
204
247
|
justify-content: center;
|
|
205
|
-
|
|
248
|
+
background: var(--xto-fill-color, #F2F3F5);
|
|
249
|
+
border-radius: var(--xto-border-radius-large, 12px);
|
|
206
250
|
flex-shrink: 0;
|
|
207
251
|
|
|
208
|
-
|
|
209
|
-
|
|
252
|
+
svg {
|
|
253
|
+
width: 24px;
|
|
254
|
+
height: 24px;
|
|
210
255
|
}
|
|
211
256
|
}
|
|
212
257
|
|
|
@@ -217,7 +262,7 @@ const systemInfo = ref([
|
|
|
217
262
|
|
|
218
263
|
.stat-title {
|
|
219
264
|
font-size: 14px;
|
|
220
|
-
color: var(--xto-color-text-secondary, #
|
|
265
|
+
color: var(--xto-color-text-secondary, #86909C);
|
|
221
266
|
margin-bottom: 8px;
|
|
222
267
|
}
|
|
223
268
|
|
|
@@ -226,6 +271,8 @@ const systemInfo = ref([
|
|
|
226
271
|
font-weight: 600;
|
|
227
272
|
line-height: 1.2;
|
|
228
273
|
margin-bottom: 8px;
|
|
274
|
+
color: var(--xto-color-text-primary, #1F2329);
|
|
275
|
+
font-variant-numeric: tabular-nums;
|
|
229
276
|
}
|
|
230
277
|
|
|
231
278
|
.stat-trend {
|
|
@@ -234,7 +281,7 @@ const systemInfo = ref([
|
|
|
234
281
|
gap: 4px;
|
|
235
282
|
font-size: 12px;
|
|
236
283
|
padding: 2px 8px;
|
|
237
|
-
border-radius:
|
|
284
|
+
border-radius: var(--xto-border-radius-small, 4px);
|
|
238
285
|
|
|
239
286
|
svg {
|
|
240
287
|
width: 14px;
|
|
@@ -242,26 +289,15 @@ const systemInfo = ref([
|
|
|
242
289
|
}
|
|
243
290
|
|
|
244
291
|
&.up {
|
|
245
|
-
color: var(--xto-color-success, #
|
|
246
|
-
background: var(--xto-color-success-lighter, #
|
|
292
|
+
color: var(--xto-color-success, #00A870);
|
|
293
|
+
background: var(--xto-color-success-lighter, #EAFBF3);
|
|
247
294
|
}
|
|
248
295
|
|
|
249
296
|
&.down {
|
|
250
|
-
color: var(--xto-color-danger, #
|
|
251
|
-
background: var(--xto-color-danger-lighter, #
|
|
297
|
+
color: var(--xto-color-danger, #F53F3F);
|
|
298
|
+
background: var(--xto-color-danger-lighter, #FEF2F2);
|
|
252
299
|
}
|
|
253
300
|
}
|
|
254
|
-
|
|
255
|
-
.stat-decoration {
|
|
256
|
-
position: absolute;
|
|
257
|
-
top: 0;
|
|
258
|
-
right: 0;
|
|
259
|
-
width: 100px;
|
|
260
|
-
height: 100px;
|
|
261
|
-
border-radius: 50%;
|
|
262
|
-
opacity: 0;
|
|
263
|
-
transition: opacity 0.3s ease;
|
|
264
|
-
}
|
|
265
301
|
}
|
|
266
302
|
|
|
267
303
|
// 主体内容
|
|
@@ -285,15 +321,15 @@ const systemInfo = ref([
|
|
|
285
321
|
h3 {
|
|
286
322
|
font-size: 16px;
|
|
287
323
|
font-weight: 600;
|
|
288
|
-
color: var(--xto-color-text-primary, #
|
|
324
|
+
color: var(--xto-color-text-primary, #1F2329);
|
|
289
325
|
}
|
|
290
326
|
|
|
291
327
|
.section-badge {
|
|
292
328
|
font-size: 12px;
|
|
293
|
-
color: var(--xto-color-text-placeholder, #
|
|
294
|
-
background: var(--xto-fill-color, #
|
|
329
|
+
color: var(--xto-color-text-placeholder, #A9AEB8);
|
|
330
|
+
background: var(--xto-fill-color, #F2F3F5);
|
|
295
331
|
padding: 4px 10px;
|
|
296
|
-
border-radius:
|
|
332
|
+
border-radius: var(--xto-border-radius-small, 4px);
|
|
297
333
|
}
|
|
298
334
|
|
|
299
335
|
.section-link {
|
|
@@ -311,9 +347,9 @@ const systemInfo = ref([
|
|
|
311
347
|
// 快捷入口
|
|
312
348
|
.quick-section {
|
|
313
349
|
background: var(--xto-bg-color, #FFFFFF);
|
|
314
|
-
border-radius: var(--xto-border-radius-large,
|
|
350
|
+
border-radius: var(--xto-border-radius-large, 12px);
|
|
315
351
|
padding: 20px;
|
|
316
|
-
box-shadow: var(--xto-shadow-subtle, 0 1px 2px
|
|
352
|
+
box-shadow: var(--xto-shadow-subtle, 0 1px 2px rgba(31, 35, 41, 0.06));
|
|
317
353
|
}
|
|
318
354
|
|
|
319
355
|
.quick-grid {
|
|
@@ -327,18 +363,16 @@ const systemInfo = ref([
|
|
|
327
363
|
align-items: center;
|
|
328
364
|
gap: 16px;
|
|
329
365
|
padding: 16px;
|
|
330
|
-
background: var(--xto-fill-color-light, #
|
|
331
|
-
border-radius: var(--xto-border-radius-base,
|
|
366
|
+
background: var(--xto-fill-color-light, #F7F8FA);
|
|
367
|
+
border-radius: var(--xto-border-radius-base, 8px);
|
|
332
368
|
text-decoration: none;
|
|
333
|
-
transition:
|
|
369
|
+
transition: background-color 0.2s ease;
|
|
334
370
|
|
|
335
371
|
&:hover {
|
|
336
|
-
background: var(--xto-color-primary-light-
|
|
337
|
-
transform: translateX(4px);
|
|
372
|
+
background: var(--xto-color-primary-light-9, #EDEDFC);
|
|
338
373
|
|
|
339
374
|
.quick-arrow {
|
|
340
375
|
color: var(--xto-color-primary, #4F46E5);
|
|
341
|
-
transform: translateX(4px);
|
|
342
376
|
}
|
|
343
377
|
}
|
|
344
378
|
|
|
@@ -349,9 +383,14 @@ const systemInfo = ref([
|
|
|
349
383
|
align-items: center;
|
|
350
384
|
justify-content: center;
|
|
351
385
|
background: var(--xto-bg-color, #FFFFFF);
|
|
352
|
-
border-radius: var(--xto-border-radius-base,
|
|
353
|
-
|
|
386
|
+
border-radius: var(--xto-border-radius-base, 8px);
|
|
387
|
+
color: var(--xto-color-primary, #4F46E5);
|
|
354
388
|
flex-shrink: 0;
|
|
389
|
+
|
|
390
|
+
svg {
|
|
391
|
+
width: 20px;
|
|
392
|
+
height: 20px;
|
|
393
|
+
}
|
|
355
394
|
}
|
|
356
395
|
|
|
357
396
|
.quick-info {
|
|
@@ -362,13 +401,13 @@ const systemInfo = ref([
|
|
|
362
401
|
.quick-title {
|
|
363
402
|
font-size: 15px;
|
|
364
403
|
font-weight: 500;
|
|
365
|
-
color: var(--xto-color-text-primary, #
|
|
404
|
+
color: var(--xto-color-text-primary, #1F2329);
|
|
366
405
|
margin-bottom: 4px;
|
|
367
406
|
}
|
|
368
407
|
|
|
369
408
|
.quick-desc {
|
|
370
409
|
font-size: 13px;
|
|
371
|
-
color: var(--xto-color-text-secondary, #
|
|
410
|
+
color: var(--xto-color-text-secondary, #86909C);
|
|
372
411
|
}
|
|
373
412
|
|
|
374
413
|
.quick-arrow {
|
|
@@ -377,8 +416,8 @@ const systemInfo = ref([
|
|
|
377
416
|
display: flex;
|
|
378
417
|
align-items: center;
|
|
379
418
|
justify-content: center;
|
|
380
|
-
color: var(--xto-color-text-placeholder, #
|
|
381
|
-
transition:
|
|
419
|
+
color: var(--xto-color-text-placeholder, #A9AEB8);
|
|
420
|
+
transition: color 0.2s ease;
|
|
382
421
|
|
|
383
422
|
svg {
|
|
384
423
|
width: 16px;
|
|
@@ -390,9 +429,9 @@ const systemInfo = ref([
|
|
|
390
429
|
// 最近活动
|
|
391
430
|
.activity-section {
|
|
392
431
|
background: var(--xto-bg-color, #FFFFFF);
|
|
393
|
-
border-radius: var(--xto-border-radius-large,
|
|
432
|
+
border-radius: var(--xto-border-radius-large, 12px);
|
|
394
433
|
padding: 20px;
|
|
395
|
-
box-shadow: var(--xto-shadow-subtle, 0 1px 2px
|
|
434
|
+
box-shadow: var(--xto-shadow-subtle, 0 1px 2px rgba(31, 35, 41, 0.06));
|
|
396
435
|
}
|
|
397
436
|
|
|
398
437
|
.activity-list {
|
|
@@ -405,8 +444,7 @@ const systemInfo = ref([
|
|
|
405
444
|
align-items: flex-start;
|
|
406
445
|
gap: 12px;
|
|
407
446
|
padding: 14px 0;
|
|
408
|
-
border-bottom: 1px solid var(--xto-border-color-lighter, #
|
|
409
|
-
position: relative;
|
|
447
|
+
border-bottom: 1px solid var(--xto-border-color-lighter, #EDEEF1);
|
|
410
448
|
|
|
411
449
|
&:last-child {
|
|
412
450
|
border-bottom: none;
|
|
@@ -424,11 +462,11 @@ const systemInfo = ref([
|
|
|
424
462
|
font-weight: 500;
|
|
425
463
|
flex-shrink: 0;
|
|
426
464
|
|
|
427
|
-
&.success { background: var(--xto-color-success-lighter, #
|
|
428
|
-
&.warning { background: var(--xto-color-warning-lighter, #
|
|
429
|
-
&.info { background: var(--xto-color-info-lighter, #
|
|
430
|
-
&.danger { background: var(--xto-color-danger-lighter, #
|
|
431
|
-
&.primary { background: var(--xto-color-primary-light-
|
|
465
|
+
&.success { background: var(--xto-color-success-lighter, #EAFBF3); color: var(--xto-color-success, #00A870); }
|
|
466
|
+
&.warning { background: var(--xto-color-warning-lighter, #FFF3E8); color: var(--xto-color-warning, #FF7D00); }
|
|
467
|
+
&.info { background: var(--xto-color-info-lighter, #F2F3F5); color: var(--xto-color-info, #86909C); }
|
|
468
|
+
&.danger { background: var(--xto-color-danger-lighter, #FEF2F2); color: var(--xto-color-danger, #F53F3F); }
|
|
469
|
+
&.primary { background: var(--xto-color-primary-light-9, #EDEDFC); color: var(--xto-color-primary, #4F46E5); }
|
|
432
470
|
}
|
|
433
471
|
|
|
434
472
|
.activity-content {
|
|
@@ -443,43 +481,26 @@ const systemInfo = ref([
|
|
|
443
481
|
.activity-user {
|
|
444
482
|
font-size: 14px;
|
|
445
483
|
font-weight: 500;
|
|
446
|
-
color: var(--xto-color-text-primary, #
|
|
484
|
+
color: var(--xto-color-text-primary, #1F2329);
|
|
447
485
|
margin-right: 8px;
|
|
448
486
|
}
|
|
449
487
|
|
|
450
488
|
.activity-action {
|
|
451
489
|
font-size: 14px;
|
|
452
|
-
color: var(--xto-color-text-secondary, #
|
|
490
|
+
color: var(--xto-color-text-secondary, #86909C);
|
|
453
491
|
}
|
|
454
492
|
|
|
455
493
|
.activity-time {
|
|
456
494
|
font-size: 12px;
|
|
457
|
-
color: var(--xto-color-text-placeholder, #
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
.activity-dot {
|
|
461
|
-
position: absolute;
|
|
462
|
-
left: -20px;
|
|
463
|
-
top: 50%;
|
|
464
|
-
transform: translateY(-50%);
|
|
465
|
-
width: 8px;
|
|
466
|
-
height: 8px;
|
|
467
|
-
border-radius: 50%;
|
|
468
|
-
opacity: 0.6;
|
|
469
|
-
|
|
470
|
-
&.success { background: var(--xto-color-success, #10B981); }
|
|
471
|
-
&.warning { background: var(--xto-color-warning, #F59E0B); }
|
|
472
|
-
&.info { background: var(--xto-color-info, #6B7280); }
|
|
473
|
-
&.danger { background: var(--xto-color-danger, #EF4444); }
|
|
474
|
-
&.primary { background: var(--xto-color-primary, #4F46E5); }
|
|
495
|
+
color: var(--xto-color-text-placeholder, #A9AEB8);
|
|
475
496
|
}
|
|
476
497
|
|
|
477
498
|
// 系统信息
|
|
478
499
|
.system-section {
|
|
479
500
|
background: var(--xto-bg-color, #FFFFFF);
|
|
480
|
-
border-radius: var(--xto-border-radius-large,
|
|
501
|
+
border-radius: var(--xto-border-radius-large, 12px);
|
|
481
502
|
padding: 20px;
|
|
482
|
-
box-shadow: var(--xto-shadow-subtle, 0 1px 2px
|
|
503
|
+
box-shadow: var(--xto-shadow-subtle, 0 1px 2px rgba(31, 35, 41, 0.06));
|
|
483
504
|
}
|
|
484
505
|
|
|
485
506
|
.system-grid {
|
|
@@ -503,18 +524,18 @@ const systemInfo = ref([
|
|
|
503
524
|
justify-content: space-between;
|
|
504
525
|
align-items: center;
|
|
505
526
|
padding: 12px 16px;
|
|
506
|
-
background: var(--xto-fill-color-light, #
|
|
507
|
-
border-radius: var(--xto-border-radius-base,
|
|
527
|
+
background: var(--xto-fill-color-light, #F7F8FA);
|
|
528
|
+
border-radius: var(--xto-border-radius-base, 8px);
|
|
508
529
|
|
|
509
530
|
.info-label {
|
|
510
531
|
font-size: 14px;
|
|
511
|
-
color: var(--xto-color-text-secondary, #
|
|
532
|
+
color: var(--xto-color-text-secondary, #86909C);
|
|
512
533
|
}
|
|
513
534
|
|
|
514
535
|
.info-value {
|
|
515
536
|
font-size: 14px;
|
|
516
537
|
font-weight: 500;
|
|
517
|
-
color: var(--xto-color-text-primary, #
|
|
538
|
+
color: var(--xto-color-text-primary, #1F2329);
|
|
518
539
|
}
|
|
519
540
|
}
|
|
520
541
|
|
|
@@ -534,13 +555,13 @@ const systemInfo = ref([
|
|
|
534
555
|
|
|
535
556
|
.status-label {
|
|
536
557
|
font-size: 14px;
|
|
537
|
-
color: var(--xto-color-text-secondary, #
|
|
558
|
+
color: var(--xto-color-text-secondary, #86909C);
|
|
538
559
|
}
|
|
539
560
|
|
|
540
561
|
.status-value {
|
|
541
562
|
font-size: 14px;
|
|
542
563
|
font-weight: 500;
|
|
543
|
-
color: var(--xto-color-text-primary, #
|
|
564
|
+
color: var(--xto-color-text-primary, #1F2329);
|
|
544
565
|
}
|
|
545
566
|
}
|
|
546
|
-
</style>
|
|
567
|
+
</style>
|
package/src/views/error/403.vue
CHANGED
|
@@ -33,10 +33,10 @@ const goBack = () => {
|
|
|
33
33
|
<svg viewBox="0 0 200 120" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
34
34
|
<!-- 盾牌 -->
|
|
35
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(--xto-color-warning-light-9, #
|
|
36
|
+
fill="var(--xto-color-warning-light-9, #FFF3E8)" stroke="var(--xto-color-warning, #FF7D00)" stroke-width="2"/>
|
|
37
37
|
<!-- 锁 -->
|
|
38
|
-
<rect x="85" y="55" width="30" height="25" rx="4" fill="var(--xto-color-warning, #
|
|
39
|
-
<path d="M92 55 V48 A8 8 0 0 1 108 48 V55" fill="none" stroke="var(--xto-color-warning, #
|
|
38
|
+
<rect x="85" y="55" width="30" height="25" rx="4" fill="var(--xto-color-warning, #FF7D00)"/>
|
|
39
|
+
<path d="M92 55 V48 A8 8 0 0 1 108 48 V55" fill="none" stroke="var(--xto-color-warning, #FF7D00)" stroke-width="3"/>
|
|
40
40
|
<!-- 禁止符号 -->
|
|
41
41
|
<circle cx="100" cy="67" r="6" fill="none" stroke="#fff" stroke-width="2"/>
|
|
42
42
|
<line x1="96" y1="63" x2="104" y2="71" stroke="#fff" stroke-width="2"/>
|
|
@@ -87,7 +87,7 @@ const goBack = () => {
|
|
|
87
87
|
display: flex;
|
|
88
88
|
align-items: center;
|
|
89
89
|
justify-content: center;
|
|
90
|
-
background: var(--xto-bg-color-page, #
|
|
90
|
+
background: var(--xto-bg-color-page, #F7F8FA);
|
|
91
91
|
position: relative;
|
|
92
92
|
overflow: hidden;
|
|
93
93
|
}
|
|
@@ -115,7 +115,7 @@ const goBack = () => {
|
|
|
115
115
|
height: 400px;
|
|
116
116
|
top: -100px;
|
|
117
117
|
right: -100px;
|
|
118
|
-
background: var(--xto-color-warning, #
|
|
118
|
+
background: var(--xto-color-warning, #FF7D00);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
&.circle-2 {
|
|
@@ -123,7 +123,7 @@ const goBack = () => {
|
|
|
123
123
|
height: 300px;
|
|
124
124
|
bottom: -50px;
|
|
125
125
|
left: -50px;
|
|
126
|
-
background: var(--xto-color-warning, #
|
|
126
|
+
background: var(--xto-color-warning, #FF7D00);
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
&.circle-3 {
|
|
@@ -151,7 +151,7 @@ const goBack = () => {
|
|
|
151
151
|
.code-digit {
|
|
152
152
|
font-size: 80px;
|
|
153
153
|
font-weight: 700;
|
|
154
|
-
color: var(--xto-color-text-primary, #
|
|
154
|
+
color: var(--xto-color-text-primary, #1F2329);
|
|
155
155
|
line-height: 1;
|
|
156
156
|
}
|
|
157
157
|
|
|
@@ -162,7 +162,7 @@ const goBack = () => {
|
|
|
162
162
|
display: flex;
|
|
163
163
|
align-items: center;
|
|
164
164
|
justify-content: center;
|
|
165
|
-
background: linear-gradient(135deg, var(--xto-color-warning, #
|
|
165
|
+
background: linear-gradient(135deg, var(--xto-color-warning, #FF7D00) 0%, var(--xto-color-warning-light, #FDE68A) 100%);
|
|
166
166
|
border-radius: 50%;
|
|
167
167
|
|
|
168
168
|
.zero-inner {
|
|
@@ -182,13 +182,13 @@ const goBack = () => {
|
|
|
182
182
|
.error-title {
|
|
183
183
|
font-size: 24px;
|
|
184
184
|
font-weight: 600;
|
|
185
|
-
color: var(--xto-color-text-primary, #
|
|
185
|
+
color: var(--xto-color-text-primary, #1F2329);
|
|
186
186
|
margin-bottom: 12px;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
.error-desc {
|
|
190
190
|
font-size: 14px;
|
|
191
|
-
color: var(--xto-color-text-secondary, #
|
|
191
|
+
color: var(--xto-color-text-secondary, #86909C);
|
|
192
192
|
margin-bottom: 32px;
|
|
193
193
|
}
|
|
194
194
|
|
|
@@ -218,7 +218,7 @@ const goBack = () => {
|
|
|
218
218
|
p {
|
|
219
219
|
font-size: 14px;
|
|
220
220
|
font-weight: 500;
|
|
221
|
-
color: var(--xto-color-text-primary, #
|
|
221
|
+
color: var(--xto-color-text-primary, #1F2329);
|
|
222
222
|
margin-bottom: 12px;
|
|
223
223
|
}
|
|
224
224
|
|
|
@@ -229,7 +229,7 @@ const goBack = () => {
|
|
|
229
229
|
|
|
230
230
|
li {
|
|
231
231
|
font-size: 13px;
|
|
232
|
-
color: var(--xto-color-text-secondary, #
|
|
232
|
+
color: var(--xto-color-text-secondary, #86909C);
|
|
233
233
|
padding: 4px 0;
|
|
234
234
|
position: relative;
|
|
235
235
|
padding-left: 16px;
|
|
@@ -242,7 +242,7 @@ const goBack = () => {
|
|
|
242
242
|
transform: translateY(-50%);
|
|
243
243
|
width: 6px;
|
|
244
244
|
height: 6px;
|
|
245
|
-
background: var(--xto-color-warning, #
|
|
245
|
+
background: var(--xto-color-warning, #FF7D00);
|
|
246
246
|
border-radius: 50%;
|
|
247
247
|
opacity: 0.6;
|
|
248
248
|
}
|
package/src/views/error/404.vue
CHANGED
|
@@ -32,11 +32,11 @@ const goBack = () => {
|
|
|
32
32
|
<div class="error-illustration">
|
|
33
33
|
<svg viewBox="0 0 200 120" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
34
34
|
<!-- 页面图标 -->
|
|
35
|
-
<rect x="40" y="20" width="120" height="80" rx="8" fill="var(--xto-fill-color, #
|
|
35
|
+
<rect x="40" y="20" width="120" height="80" rx="8" fill="var(--xto-fill-color, #F2F3F5)" stroke="var(--xto-border-color, #D9DCE1)" stroke-width="2"/>
|
|
36
36
|
<rect x="50" y="30" width="100" height="60" rx="4" fill="var(--xto-bg-color, #FFFFFF)"/>
|
|
37
|
-
<line x1="60" y1="45" x2="140" y2="45" stroke="var(--xto-border-color-light, #
|
|
38
|
-
<line x1="60" y1="55" x2="120" y2="55" stroke="var(--xto-border-color-light, #
|
|
39
|
-
<line x1="60" y1="65" x2="100" y2="65" stroke="var(--xto-border-color-light, #
|
|
37
|
+
<line x1="60" y1="45" x2="140" y2="45" stroke="var(--xto-border-color-light, #E5E6EB)" stroke-width="2"/>
|
|
38
|
+
<line x1="60" y1="55" x2="120" y2="55" stroke="var(--xto-border-color-light, #E5E6EB)" stroke-width="2"/>
|
|
39
|
+
<line x1="60" y1="65" x2="100" y2="65" stroke="var(--xto-border-color-light, #E5E6EB)" stroke-width="2"/>
|
|
40
40
|
<!-- 问号 -->
|
|
41
41
|
<text x="100" y="75" text-anchor="middle" fill="var(--xto-color-primary, #4F46E5)" font-size="24" font-weight="600">?</text>
|
|
42
42
|
<!-- 搜索图标 -->
|
|
@@ -89,7 +89,7 @@ const goBack = () => {
|
|
|
89
89
|
display: flex;
|
|
90
90
|
align-items: center;
|
|
91
91
|
justify-content: center;
|
|
92
|
-
background: var(--xto-bg-color-page, #
|
|
92
|
+
background: var(--xto-bg-color-page, #F7F8FA);
|
|
93
93
|
position: relative;
|
|
94
94
|
overflow: hidden;
|
|
95
95
|
}
|
|
@@ -125,7 +125,7 @@ const goBack = () => {
|
|
|
125
125
|
height: 300px;
|
|
126
126
|
bottom: -50px;
|
|
127
127
|
left: -50px;
|
|
128
|
-
background: var(--xto-color-info, #
|
|
128
|
+
background: var(--xto-color-info, #86909C);
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
&.circle-3 {
|
|
@@ -134,7 +134,7 @@ const goBack = () => {
|
|
|
134
134
|
top: 50%;
|
|
135
135
|
left: 50%;
|
|
136
136
|
transform: translate(-50%, -50%);
|
|
137
|
-
background: var(--xto-color-primary-light-3, #
|
|
137
|
+
background: var(--xto-color-primary-light-3, #847DEC);
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
}
|
|
@@ -153,7 +153,7 @@ const goBack = () => {
|
|
|
153
153
|
.code-digit {
|
|
154
154
|
font-size: 80px;
|
|
155
155
|
font-weight: 700;
|
|
156
|
-
color: var(--xto-color-text-primary, #
|
|
156
|
+
color: var(--xto-color-text-primary, #1F2329);
|
|
157
157
|
line-height: 1;
|
|
158
158
|
}
|
|
159
159
|
|
|
@@ -164,7 +164,7 @@ const goBack = () => {
|
|
|
164
164
|
display: flex;
|
|
165
165
|
align-items: center;
|
|
166
166
|
justify-content: center;
|
|
167
|
-
background: linear-gradient(135deg, var(--xto-color-primary, #4F46E5) 0%, var(--xto-color-primary-light-1, #
|
|
167
|
+
background: linear-gradient(135deg, var(--xto-color-primary, #4F46E5) 0%, var(--xto-color-primary-light-1, #6158E7) 100%);
|
|
168
168
|
border-radius: 50%;
|
|
169
169
|
|
|
170
170
|
.zero-inner {
|
|
@@ -184,13 +184,13 @@ const goBack = () => {
|
|
|
184
184
|
.error-title {
|
|
185
185
|
font-size: 24px;
|
|
186
186
|
font-weight: 600;
|
|
187
|
-
color: var(--xto-color-text-primary, #
|
|
187
|
+
color: var(--xto-color-text-primary, #1F2329);
|
|
188
188
|
margin-bottom: 12px;
|
|
189
189
|
}
|
|
190
190
|
|
|
191
191
|
.error-desc {
|
|
192
192
|
font-size: 14px;
|
|
193
|
-
color: var(--xto-color-text-secondary, #
|
|
193
|
+
color: var(--xto-color-text-secondary, #86909C);
|
|
194
194
|
margin-bottom: 32px;
|
|
195
195
|
}
|
|
196
196
|
|
|
@@ -214,13 +214,13 @@ const goBack = () => {
|
|
|
214
214
|
|
|
215
215
|
.error-tip {
|
|
216
216
|
padding: 20px;
|
|
217
|
-
background: var(--xto-fill-color-light, #
|
|
217
|
+
background: var(--xto-fill-color-light, #F7F8FA);
|
|
218
218
|
border-radius: var(--xto-border-radius-large, 8px);
|
|
219
219
|
|
|
220
220
|
p {
|
|
221
221
|
font-size: 14px;
|
|
222
222
|
font-weight: 500;
|
|
223
|
-
color: var(--xto-color-text-primary, #
|
|
223
|
+
color: var(--xto-color-text-primary, #1F2329);
|
|
224
224
|
margin-bottom: 12px;
|
|
225
225
|
}
|
|
226
226
|
|
|
@@ -231,7 +231,7 @@ const goBack = () => {
|
|
|
231
231
|
|
|
232
232
|
li {
|
|
233
233
|
font-size: 13px;
|
|
234
|
-
color: var(--xto-color-text-secondary, #
|
|
234
|
+
color: var(--xto-color-text-secondary, #86909C);
|
|
235
235
|
padding: 4px 0;
|
|
236
236
|
position: relative;
|
|
237
237
|
padding-left: 16px;
|