xto-fronted 0.4.90 → 0.4.92

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 (76) hide show
  1. package/dist/{index-A_B_Ap_A.js → index--qRfsJ32.js} +1537 -1510
  2. package/dist/{index-LSdsO2Ox.js → index-CsjBlLrl.js} +2 -2
  3. package/dist/{index-58aI1w0v.js → index-CvYIvRSW.js} +2 -2
  4. package/dist/{index-BVGW4DDQ.js → index-DAPLMrmP.js} +23 -23
  5. package/dist/{index-xWU3J3OH.js → index-DjkSMw-x.js} +2 -2
  6. package/dist/index.es.js +1 -1
  7. package/dist/index.umd.js +8 -8
  8. package/dist/stores/menu.d.ts +8 -2
  9. package/dist/style.css +1 -1
  10. package/dist/utils/permission.d.ts +2 -3
  11. package/package.json +91 -91
  12. package/src/App.vue +48 -48
  13. package/src/assets/styles/_dark.scss +639 -572
  14. package/src/assets/styles/_root.scss +183 -183
  15. package/src/assets/styles/_variables.scss +69 -69
  16. package/src/assets/styles/index.scss +460 -460
  17. package/src/components/Layout/Sidebar.vue +198 -198
  18. package/src/components/Layout/TopMenu.vue +1170 -1170
  19. package/src/components/Layout/index.vue +192 -192
  20. package/src/directives/permission.ts +12 -3
  21. package/src/index.ts +100 -100
  22. package/src/router/layoutRoute.ts +59 -59
  23. package/src/stores/menu.ts +64 -3
  24. package/src/types/json-bigint.d.ts +18 -18
  25. package/src/utils/permission.ts +12 -5
  26. package/src/views/dashboard/index.vue +545 -545
  27. package/src/views/error/403.vue +251 -251
  28. package/src/views/error/404.vue +253 -253
  29. package/src/views/login/index.vue +586 -586
  30. package/src/views/system/menu/index.vue +690 -690
  31. package/src/views/system/role/index.vue +583 -583
  32. package/src/views/system/user/index.vue +655 -655
  33. package/dist/assets/404-C9Uh6Uu-.css +0 -1
  34. package/dist/assets/404-zjGLLssH.js +0 -1
  35. package/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js +0 -1
  36. package/dist/assets/index-B5xc4gQB.css +0 -1
  37. package/dist/assets/index-BDgOY6Rp.js +0 -1
  38. package/dist/assets/index-BIoRANs0.js +0 -1
  39. package/dist/assets/index-BRR97dc6.js +0 -1
  40. package/dist/assets/index-Bz0BgZQ1.js +0 -1
  41. package/dist/assets/index-CAdztNsv.css +0 -1
  42. package/dist/assets/index-CCXrcISf.css +0 -1
  43. package/dist/assets/index-CfpZmcpk.css +0 -1
  44. package/dist/assets/index-CwJSA85U.js +0 -1
  45. package/dist/assets/index-CwRA10ac.js +0 -1
  46. package/dist/assets/index-D8NDxq9d.js +0 -1
  47. package/dist/assets/index-DEB6-Iv_.js +0 -2
  48. package/dist/assets/index-DM4Ezclc.css +0 -1
  49. package/dist/assets/index-DYv7nImj.css +0 -1
  50. package/dist/assets/index-t-2Y0KhA.css +0 -1
  51. package/dist/assets/vendor-CUVPinTg.js +0 -13
  52. package/dist/assets/vue-vendor-DeJXJVbN.js +0 -29
  53. package/dist/assets/xto-base-CL2NKZJJ.css +0 -1
  54. package/dist/assets/xto-base-PwLGsxxb.js +0 -1
  55. package/dist/assets/xto-business--V1F5Gwb.css +0 -1
  56. package/dist/assets/xto-core-CtL4zKiV.js +0 -1
  57. package/dist/assets/xto-data-MxZsiJgi.css +0 -1
  58. package/dist/assets/xto-data-bCXQa7fT.js +0 -1
  59. package/dist/assets/xto-feedback-Bxx38c3P.css +0 -1
  60. package/dist/assets/xto-feedback-CPydp0kn.js +0 -1
  61. package/dist/assets/xto-form-Cu6q3VLG.css +0 -1
  62. package/dist/assets/xto-form-bywohdAf.js +0 -1
  63. package/dist/assets/xto-layout-BDD6sSlM.css +0 -1
  64. package/dist/assets/xto-navigation-Bbdpine9.js +0 -1
  65. package/dist/assets/xto-navigation-XfpyMpEo.css +0 -1
  66. package/dist/index-BAmYUT0G.js +0 -189
  67. package/dist/index-BRvi9qW-.js +0 -515
  68. package/dist/index-Bmf0YbVq.js +0 -189
  69. package/dist/index-C2-a5KSQ.js +0 -4233
  70. package/dist/index-CeZ0CSSs.js +0 -641
  71. package/dist/index-D25KzR0I.js +0 -479
  72. package/dist/index-DEYOivza.js +0 -641
  73. package/dist/index-DReodgBw.js +0 -4233
  74. package/dist/index-DjERNRXX.js +0 -515
  75. package/dist/index-gBlRG4kk.js +0 -479
  76. package/dist/index.html +0 -28
@@ -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>