xto-fronted 0.4.85 → 0.4.87

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 (101) 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.html +28 -0
  35. package/package.json +91 -91
  36. package/src/App.vue +48 -48
  37. package/src/assets/styles/_root.scss +183 -183
  38. package/src/assets/styles/_variables.scss +69 -69
  39. package/src/composables/useI18n.ts +44 -0
  40. package/src/index.ts +15 -1
  41. package/src/stores/index.ts +2 -1
  42. package/src/stores/locale.ts +67 -0
  43. package/src/types/json-bigint.d.ts +18 -18
  44. package/src/types/xto.d.ts +24 -0
  45. package/src/views/dashboard/index.vue +545 -545
  46. package/src/views/error/403.vue +251 -251
  47. package/src/views/error/404.vue +253 -253
  48. package/src/views/login/index.vue +586 -586
  49. package/src/views/system/menu/index.vue +690 -690
  50. package/src/views/system/role/index.vue +583 -583
  51. package/src/views/system/user/index.vue +655 -655
  52. package/dist/App.vue.d.ts +0 -2
  53. package/dist/api/auth.d.ts +0 -8
  54. package/dist/api/system.d.ts +0 -16
  55. package/dist/api/user.d.ts +0 -13
  56. package/dist/components/Layout/Footer.vue.d.ts +0 -2
  57. package/dist/components/Layout/Header.vue.d.ts +0 -5
  58. package/dist/components/Layout/MixTopMenu.vue.d.ts +0 -5
  59. package/dist/components/Layout/Sidebar.vue.d.ts +0 -11
  60. package/dist/components/Layout/SidebarMenuItem.vue.d.ts +0 -5
  61. package/dist/components/Layout/Tabs.vue.d.ts +0 -2
  62. package/dist/components/Layout/TopMenu.vue.d.ts +0 -5
  63. package/dist/components/Layout/index.vue.d.ts +0 -2
  64. package/dist/composables/useApp.d.ts +0 -29
  65. package/dist/composables/useAuth.d.ts +0 -6
  66. package/dist/composables/useForm.d.ts +0 -20
  67. package/dist/composables/useTable.d.ts +0 -29
  68. package/dist/directives/permission.d.ts +0 -4
  69. package/dist/enums/index.d.ts +0 -32
  70. package/dist/index-BZaqYObA.js +0 -479
  71. package/dist/index-CbwOysFI.js +0 -641
  72. package/dist/index-Jynxhhda.js +0 -189
  73. package/dist/index-XgzSS-fV.js +0 -515
  74. package/dist/index-_iZKFlCa.js +0 -4178
  75. package/dist/index.d.ts +0 -54
  76. package/dist/index.es.js +0 -91
  77. package/dist/index.umd.js +0 -8
  78. package/dist/main.d.ts +0 -0
  79. package/dist/router/dynamicRoutes.d.ts +0 -30
  80. package/dist/router/guards.d.ts +0 -17
  81. package/dist/router/index.d.ts +0 -6
  82. package/dist/router/layoutRoute.d.ts +0 -18
  83. package/dist/router/staticRoutes.d.ts +0 -2
  84. package/dist/stores/app.d.ts +0 -93
  85. package/dist/stores/auth.d.ts +0 -41
  86. package/dist/stores/index.d.ts +0 -9
  87. package/dist/stores/menu.d.ts +0 -77
  88. package/dist/stores/user.d.ts +0 -92
  89. package/dist/style.css +0 -1
  90. package/dist/utils/auth.d.ts +0 -27
  91. package/dist/utils/config.d.ts +0 -30
  92. package/dist/utils/permission.d.ts +0 -18
  93. package/dist/utils/request.d.ts +0 -24
  94. package/dist/utils/storage.d.ts +0 -24
  95. package/dist/views/dashboard/index.vue.d.ts +0 -2
  96. package/dist/views/error/403.vue.d.ts +0 -2
  97. package/dist/views/error/404.vue.d.ts +0 -2
  98. package/dist/views/login/index.vue.d.ts +0 -4
  99. package/dist/views/system/menu/index.vue.d.ts +0 -4
  100. package/dist/views/system/role/index.vue.d.ts +0 -4
  101. package/dist/views/system/user/index.vue.d.ts +0 -4
@@ -1,254 +1,254 @@
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">
27
- <span class="zero-inner">0</span>
28
- </span>
29
- <span class="code-digit">4</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
- <rect x="40" y="20" width="120" height="80" rx="8" fill="var(--color-fill)" stroke="var(--color-border)" stroke-width="2"/>
36
- <rect x="50" y="30" width="100" height="60" rx="4" fill="var(--bg-color)"/>
37
- <line x1="60" y1="45" x2="140" y2="45" stroke="var(--color-border-light)" stroke-width="2"/>
38
- <line x1="60" y1="55" x2="120" y2="55" stroke="var(--color-border-light)" stroke-width="2"/>
39
- <line x1="60" y1="65" x2="100" y2="65" stroke="var(--color-border-light)" stroke-width="2"/>
40
- <!-- 问号 -->
41
- <text x="100" y="75" text-anchor="middle" fill="var(--color-primary)" font-size="24" font-weight="600">?</text>
42
- <!-- 搜索图标 -->
43
- <circle cx="150" cy="35" r="12" stroke="var(--color-primary)" stroke-width="2" fill="none"/>
44
- <line x1="158" y1="43" x2="168" y2="53" stroke="var(--color-primary)" stroke-width="2" stroke-linecap="round"/>
45
- </svg>
46
- </div>
47
-
48
- <h1 class="error-title">页面不存在</h1>
49
- <p class="error-desc">抱歉,您访问的页面不存在或已被删除</p>
50
-
51
- <div class="error-actions">
52
- <Button type="primary" size="large" @click="goBack">
53
- <template #icon>
54
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
55
- <path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"/>
56
- <polyline points="9,22 9,12 15,12 15,22"/>
57
- </svg>
58
- </template>
59
- 返回首页
60
- </Button>
61
- <Button size="large" @click="router.go(-1)">
62
- <template #icon>
63
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
64
- <path d="M19 12H5M12 19l-7-7 7-7"/>
65
- </svg>
66
- </template>
67
- 返回上一页
68
- </Button>
69
- </div>
70
-
71
- <!-- 提示 -->
72
- <div class="error-tip">
73
- <p>您可以尝试:</p>
74
- <ul>
75
- <li>检查您输入的网址是否正确</li>
76
- <li>返回首页重新浏览</li>
77
- <li>联系管理员反馈问题</li>
78
- </ul>
79
- </div>
80
- </div>
81
- </div>
82
- </div>
83
- </template>
84
-
85
- <style lang="scss" scoped>
86
- .error-page {
87
- width: 100%;
88
- height: 100%;
89
- display: flex;
90
- align-items: center;
91
- justify-content: center;
92
- background: var(--bg-color-page);
93
- position: relative;
94
- overflow: hidden;
95
- }
96
-
97
- .error-container {
98
- position: relative;
99
- z-index: 2;
100
- max-width: 600px;
101
- padding: 40px;
102
- }
103
-
104
- .error-bg {
105
- position: absolute;
106
- inset: 0;
107
- z-index: 1;
108
- overflow: hidden;
109
-
110
- .bg-circle {
111
- position: absolute;
112
- border-radius: 50%;
113
- opacity: 0.1;
114
-
115
- &.circle-1 {
116
- width: 400px;
117
- height: 400px;
118
- top: -100px;
119
- right: -100px;
120
- background: var(--color-primary);
121
- }
122
-
123
- &.circle-2 {
124
- width: 300px;
125
- height: 300px;
126
- bottom: -50px;
127
- left: -50px;
128
- background: var(--color-info);
129
- }
130
-
131
- &.circle-3 {
132
- width: 200px;
133
- height: 200px;
134
- top: 50%;
135
- left: 50%;
136
- transform: translate(-50%, -50%);
137
- background: var(--color-primary-light-3);
138
- }
139
- }
140
- }
141
-
142
- .error-content {
143
- text-align: center;
144
- }
145
-
146
- .error-code {
147
- display: flex;
148
- justify-content: center;
149
- align-items: center;
150
- gap: 8px;
151
- margin-bottom: 32px;
152
-
153
- .code-digit {
154
- font-size: 80px;
155
- font-weight: 700;
156
- color: var(--color-text-primary);
157
- line-height: 1;
158
- }
159
-
160
- .code-zero {
161
- position: relative;
162
- width: 80px;
163
- height: 80px;
164
- display: flex;
165
- align-items: center;
166
- justify-content: center;
167
- background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light-1) 100%);
168
- border-radius: 50%;
169
-
170
- .zero-inner {
171
- font-size: 48px;
172
- font-weight: 700;
173
- color: #fff;
174
- }
175
- }
176
- }
177
-
178
- .error-illustration {
179
- width: 200px;
180
- height: 120px;
181
- margin: 0 auto 24px;
182
- }
183
-
184
- .error-title {
185
- font-size: 24px;
186
- font-weight: 600;
187
- color: var(--color-text-primary);
188
- margin-bottom: 12px;
189
- }
190
-
191
- .error-desc {
192
- font-size: 14px;
193
- color: var(--color-text-secondary);
194
- margin-bottom: 32px;
195
- }
196
-
197
- .error-actions {
198
- display: flex;
199
- justify-content: center;
200
- gap: 16px;
201
- margin-bottom: 32px;
202
-
203
- :deep(.x-button) {
204
- padding: 12px 24px;
205
- border-radius: 8px;
206
-
207
- svg {
208
- width: 18px;
209
- height: 18px;
210
- margin-right: 8px;
211
- }
212
- }
213
- }
214
-
215
- .error-tip {
216
- padding: 20px;
217
- background: var(--color-fill-light);
218
- border-radius: var(--border-radius-large);
219
-
220
- p {
221
- font-size: 14px;
222
- font-weight: 500;
223
- color: var(--color-text-primary);
224
- margin-bottom: 12px;
225
- }
226
-
227
- ul {
228
- list-style: none;
229
- padding: 0;
230
- margin: 0;
231
-
232
- li {
233
- font-size: 13px;
234
- color: var(--color-text-secondary);
235
- padding: 4px 0;
236
- position: relative;
237
- padding-left: 16px;
238
-
239
- &:before {
240
- content: '';
241
- position: absolute;
242
- left: 0;
243
- top: 50%;
244
- transform: translateY(-50%);
245
- width: 6px;
246
- height: 6px;
247
- background: var(--color-primary);
248
- border-radius: 50%;
249
- opacity: 0.6;
250
- }
251
- }
252
- }
253
- }
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">
27
+ <span class="zero-inner">0</span>
28
+ </span>
29
+ <span class="code-digit">4</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
+ <rect x="40" y="20" width="120" height="80" rx="8" fill="var(--color-fill)" stroke="var(--color-border)" stroke-width="2"/>
36
+ <rect x="50" y="30" width="100" height="60" rx="4" fill="var(--bg-color)"/>
37
+ <line x1="60" y1="45" x2="140" y2="45" stroke="var(--color-border-light)" stroke-width="2"/>
38
+ <line x1="60" y1="55" x2="120" y2="55" stroke="var(--color-border-light)" stroke-width="2"/>
39
+ <line x1="60" y1="65" x2="100" y2="65" stroke="var(--color-border-light)" stroke-width="2"/>
40
+ <!-- 问号 -->
41
+ <text x="100" y="75" text-anchor="middle" fill="var(--color-primary)" font-size="24" font-weight="600">?</text>
42
+ <!-- 搜索图标 -->
43
+ <circle cx="150" cy="35" r="12" stroke="var(--color-primary)" stroke-width="2" fill="none"/>
44
+ <line x1="158" y1="43" x2="168" y2="53" stroke="var(--color-primary)" stroke-width="2" stroke-linecap="round"/>
45
+ </svg>
46
+ </div>
47
+
48
+ <h1 class="error-title">页面不存在</h1>
49
+ <p class="error-desc">抱歉,您访问的页面不存在或已被删除</p>
50
+
51
+ <div class="error-actions">
52
+ <Button type="primary" size="large" @click="goBack">
53
+ <template #icon>
54
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
55
+ <path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"/>
56
+ <polyline points="9,22 9,12 15,12 15,22"/>
57
+ </svg>
58
+ </template>
59
+ 返回首页
60
+ </Button>
61
+ <Button size="large" @click="router.go(-1)">
62
+ <template #icon>
63
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
64
+ <path d="M19 12H5M12 19l-7-7 7-7"/>
65
+ </svg>
66
+ </template>
67
+ 返回上一页
68
+ </Button>
69
+ </div>
70
+
71
+ <!-- 提示 -->
72
+ <div class="error-tip">
73
+ <p>您可以尝试:</p>
74
+ <ul>
75
+ <li>检查您输入的网址是否正确</li>
76
+ <li>返回首页重新浏览</li>
77
+ <li>联系管理员反馈问题</li>
78
+ </ul>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ </div>
83
+ </template>
84
+
85
+ <style lang="scss" scoped>
86
+ .error-page {
87
+ width: 100%;
88
+ height: 100%;
89
+ display: flex;
90
+ align-items: center;
91
+ justify-content: center;
92
+ background: var(--bg-color-page);
93
+ position: relative;
94
+ overflow: hidden;
95
+ }
96
+
97
+ .error-container {
98
+ position: relative;
99
+ z-index: 2;
100
+ max-width: 600px;
101
+ padding: 40px;
102
+ }
103
+
104
+ .error-bg {
105
+ position: absolute;
106
+ inset: 0;
107
+ z-index: 1;
108
+ overflow: hidden;
109
+
110
+ .bg-circle {
111
+ position: absolute;
112
+ border-radius: 50%;
113
+ opacity: 0.1;
114
+
115
+ &.circle-1 {
116
+ width: 400px;
117
+ height: 400px;
118
+ top: -100px;
119
+ right: -100px;
120
+ background: var(--color-primary);
121
+ }
122
+
123
+ &.circle-2 {
124
+ width: 300px;
125
+ height: 300px;
126
+ bottom: -50px;
127
+ left: -50px;
128
+ background: var(--color-info);
129
+ }
130
+
131
+ &.circle-3 {
132
+ width: 200px;
133
+ height: 200px;
134
+ top: 50%;
135
+ left: 50%;
136
+ transform: translate(-50%, -50%);
137
+ background: var(--color-primary-light-3);
138
+ }
139
+ }
140
+ }
141
+
142
+ .error-content {
143
+ text-align: center;
144
+ }
145
+
146
+ .error-code {
147
+ display: flex;
148
+ justify-content: center;
149
+ align-items: center;
150
+ gap: 8px;
151
+ margin-bottom: 32px;
152
+
153
+ .code-digit {
154
+ font-size: 80px;
155
+ font-weight: 700;
156
+ color: var(--color-text-primary);
157
+ line-height: 1;
158
+ }
159
+
160
+ .code-zero {
161
+ position: relative;
162
+ width: 80px;
163
+ height: 80px;
164
+ display: flex;
165
+ align-items: center;
166
+ justify-content: center;
167
+ background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light-1) 100%);
168
+ border-radius: 50%;
169
+
170
+ .zero-inner {
171
+ font-size: 48px;
172
+ font-weight: 700;
173
+ color: #fff;
174
+ }
175
+ }
176
+ }
177
+
178
+ .error-illustration {
179
+ width: 200px;
180
+ height: 120px;
181
+ margin: 0 auto 24px;
182
+ }
183
+
184
+ .error-title {
185
+ font-size: 24px;
186
+ font-weight: 600;
187
+ color: var(--color-text-primary);
188
+ margin-bottom: 12px;
189
+ }
190
+
191
+ .error-desc {
192
+ font-size: 14px;
193
+ color: var(--color-text-secondary);
194
+ margin-bottom: 32px;
195
+ }
196
+
197
+ .error-actions {
198
+ display: flex;
199
+ justify-content: center;
200
+ gap: 16px;
201
+ margin-bottom: 32px;
202
+
203
+ :deep(.x-button) {
204
+ padding: 12px 24px;
205
+ border-radius: 8px;
206
+
207
+ svg {
208
+ width: 18px;
209
+ height: 18px;
210
+ margin-right: 8px;
211
+ }
212
+ }
213
+ }
214
+
215
+ .error-tip {
216
+ padding: 20px;
217
+ background: var(--color-fill-light);
218
+ border-radius: var(--border-radius-large);
219
+
220
+ p {
221
+ font-size: 14px;
222
+ font-weight: 500;
223
+ color: var(--color-text-primary);
224
+ margin-bottom: 12px;
225
+ }
226
+
227
+ ul {
228
+ list-style: none;
229
+ padding: 0;
230
+ margin: 0;
231
+
232
+ li {
233
+ font-size: 13px;
234
+ color: var(--color-text-secondary);
235
+ padding: 4px 0;
236
+ position: relative;
237
+ padding-left: 16px;
238
+
239
+ &:before {
240
+ content: '';
241
+ position: absolute;
242
+ left: 0;
243
+ top: 50%;
244
+ transform: translateY(-50%);
245
+ width: 6px;
246
+ height: 6px;
247
+ background: var(--color-primary);
248
+ border-radius: 50%;
249
+ opacity: 0.6;
250
+ }
251
+ }
252
+ }
253
+ }
254
254
  </style>