zant-admin 2.0.2 → 2.0.4

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 (69) hide show
  1. package/.editorconfig +6 -0
  2. package/.env.development +3 -0
  3. package/.env.production +1 -0
  4. package/.env.test +1 -0
  5. package/.gitignore +36 -0
  6. package/.prettierrc.json +9 -0
  7. package/README.en.md +461 -272
  8. package/README.md +4 -3
  9. package/bin/cli.js +1 -1
  10. package/eslint.config.js +30 -0
  11. package/index.html +13 -0
  12. package/jsconfig.json +8 -0
  13. package/package.json +11 -3
  14. package/src/App.vue +16 -16
  15. package/src/api/methods/logError.js +8 -8
  16. package/src/api/methods/logOperation.js +8 -8
  17. package/src/api/methods/login.js +6 -6
  18. package/src/api/methods/quartz.js +36 -36
  19. package/src/api/methods/region.js +16 -16
  20. package/src/api/methods/sysAccount.js +29 -29
  21. package/src/api/methods/sysDict.js +29 -29
  22. package/src/api/methods/sysDictItem.js +26 -26
  23. package/src/api/methods/sysMenu.js +42 -42
  24. package/src/api/methods/sysRole.js +35 -35
  25. package/src/api/methods/sysUser.js +25 -25
  26. package/src/api/methods/system.js +15 -15
  27. package/src/api/request.js +225 -225
  28. package/src/assets/css/zcui.css +1023 -1023
  29. package/src/components/IconPicker.vue +351 -351
  30. package/src/components/MainPage.vue +838 -838
  31. package/src/components/details/logErrorDetails.vue +58 -58
  32. package/src/components/details/logOperationDetails.vue +76 -76
  33. package/src/components/edit/QuartzEdit.vue +221 -221
  34. package/src/components/edit/SysAccountEdit.vue +185 -185
  35. package/src/components/edit/SysDictEdit.vue +116 -116
  36. package/src/components/edit/SysDictItemEdit.vue +136 -136
  37. package/src/components/edit/SysRoleEdit.vue +111 -111
  38. package/src/config/index.js +74 -74
  39. package/src/directives/permission.js +49 -49
  40. package/src/main.js +37 -37
  41. package/src/stores/config.js +43 -43
  42. package/src/stores/dict.js +33 -33
  43. package/src/stores/menu.js +81 -81
  44. package/src/stores/user.js +21 -21
  45. package/src/utils/baseEcharts.js +661 -661
  46. package/src/utils/dictTemplate.js +26 -26
  47. package/src/utils/regionUtils.js +173 -173
  48. package/src/utils/useFormCRUD.js +59 -59
  49. package/src/views/baiscstatis/center.vue +474 -474
  50. package/src/views/baiscstatis/iframePage.vue +29 -29
  51. package/src/views/baiscstatis/notFound.vue +192 -192
  52. package/src/views/console.vue +821 -821
  53. package/src/views/demo/button.vue +269 -269
  54. package/src/views/demo/importexport.vue +119 -119
  55. package/src/views/demo/region.vue +322 -322
  56. package/src/views/demo/statistics.vue +214 -214
  57. package/src/views/home.vue +6 -6
  58. package/src/views/operations/log/logError.vue +78 -78
  59. package/src/views/operations/log/logLogin.vue +66 -66
  60. package/src/views/operations/log/logOperation.vue +103 -103
  61. package/src/views/operations/log/logQuartz.vue +56 -56
  62. package/src/views/operations/quartz.vue +179 -179
  63. package/src/views/operations/serviceMonitoring.vue +134 -134
  64. package/src/views/system/sysAccount.vue +128 -128
  65. package/src/views/system/sysDict.vue +159 -159
  66. package/src/views/system/sysDictItem.vue +118 -118
  67. package/src/views/system/sysMenu.vue +225 -225
  68. package/src/views/system/sysRole.vue +207 -207
  69. package/vite.config.js +33 -0
@@ -1,29 +1,29 @@
1
- <template>
2
- <iframe
3
- ref="iframeRef"
4
- :src="iframeUrl"
5
- frameborder="0"
6
- style="width: 100%; height: 100%"
7
- ></iframe>
8
- </template>
9
-
10
- <script setup>
11
- import { ref, onMounted, watch } from 'vue'
12
- import { useRoute } from 'vue-router'
13
-
14
- const route = useRoute()
15
- const iframeUrl = ref('')
16
-
17
- onMounted(() => {
18
- console.log('iframeUrl', route.query.url)
19
- iframeUrl.value = decodeURIComponent(route.query.url || '')
20
- })
21
-
22
- // 监听路由变化,点击不同内链菜单时更新 iframe
23
- watch(
24
- () => route.query.url,
25
- newUrl => {
26
- iframeUrl.value = decodeURIComponent(newUrl || '')
27
- },
28
- )
29
- </script>
1
+ <template>
2
+ <iframe
3
+ ref="iframeRef"
4
+ :src="iframeUrl"
5
+ frameborder="0"
6
+ style="width: 100%; height: 100%"
7
+ ></iframe>
8
+ </template>
9
+
10
+ <script setup>
11
+ import { ref, onMounted, watch } from 'vue'
12
+ import { useRoute } from 'vue-router'
13
+
14
+ const route = useRoute()
15
+ const iframeUrl = ref('')
16
+
17
+ onMounted(() => {
18
+ console.log('iframeUrl', route.query.url)
19
+ iframeUrl.value = decodeURIComponent(route.query.url || '')
20
+ })
21
+
22
+ // 监听路由变化,点击不同内链菜单时更新 iframe
23
+ watch(
24
+ () => route.query.url,
25
+ newUrl => {
26
+ iframeUrl.value = decodeURIComponent(newUrl || '')
27
+ },
28
+ )
29
+ </script>
@@ -1,192 +1,192 @@
1
- <template>
2
- <div class="not-found-container">
3
- <div class="content-wrapper">
4
- <div class="error-code">404</div>
5
- <div class="error-message">页面未找到</div>
6
- <div class="error-description">抱歉,您访问的页面不存在或已被移除</div>
7
-
8
- <div class="action-buttons">
9
- <a-button type="primary" size="large" @click="goHome">
10
- <template #icon>
11
- <HomeOutlined />
12
- </template>
13
- 返回首页
14
- </a-button>
15
- <a-button size="large" @click="goBack">
16
- <template #icon>
17
- <ArrowLeftOutlined />
18
- </template>
19
- 返回上页
20
- </a-button>
21
- </div>
22
- </div>
23
-
24
- <div class="background-decoration">
25
- <div class="circle circle-1"></div>
26
- <div class="circle circle-2"></div>
27
- <div class="circle circle-3"></div>
28
- </div>
29
- </div>
30
- </template>
31
-
32
- <script setup>
33
- import { useRouter } from 'vue-router'
34
- import { HomeOutlined, ArrowLeftOutlined } from '@ant-design/icons-vue'
35
-
36
- // 获取路由实例
37
- const router = useRouter()
38
-
39
- /**
40
- * 返回首页
41
- */
42
- const goHome = () => {
43
- router.push('/')
44
- }
45
-
46
- /**
47
- * 返回上一页
48
- */
49
- const goBack = () => {
50
- router.go(-1)
51
- }
52
- </script>
53
-
54
- <style scoped>
55
- .not-found-container {
56
- position: relative;
57
- height: 100%;
58
- display: flex;
59
- align-items: center;
60
- justify-content: center;
61
- background-color: #ffffff;
62
- overflow: hidden;
63
- }
64
-
65
- .content-wrapper {
66
- text-align: center;
67
- z-index: 2;
68
- padding: 20px;
69
- max-width: 600px;
70
- }
71
-
72
- .error-code {
73
- font-size: 120px;
74
- font-weight: bold;
75
- color: #1890ff;
76
- text-shadow: 4px 4px 0 rgba(24, 144, 255, 0.2);
77
- margin-bottom: 20px;
78
- animation: pulse 2s infinite;
79
- }
80
-
81
- .error-message {
82
- font-size: 32px;
83
- font-weight: 500;
84
- color: #333;
85
- margin-bottom: 16px;
86
- }
87
-
88
- .error-description {
89
- font-size: 16px;
90
- color: #666;
91
- margin-bottom: 40px;
92
- line-height: 1.6;
93
- }
94
-
95
- .action-buttons {
96
- display: flex;
97
- justify-content: center;
98
- gap: 16px;
99
- flex-wrap: wrap;
100
- }
101
-
102
- .background-decoration {
103
- position: absolute;
104
- top: 0;
105
- left: 0;
106
- width: 100%;
107
- height: 100%;
108
- z-index: 1;
109
- overflow: hidden;
110
- }
111
-
112
- .circle {
113
- position: absolute;
114
- border-radius: 50%;
115
- opacity: 0.1;
116
- }
117
-
118
- .circle-1 {
119
- width: 300px;
120
- height: 300px;
121
- background-color: #1890ff;
122
- top: -100px;
123
- right: -100px;
124
- animation: float 8s infinite ease-in-out;
125
- }
126
-
127
- .circle-2 {
128
- width: 200px;
129
- height: 200px;
130
- background-color: #52c41a;
131
- bottom: -50px;
132
- left: -50px;
133
- animation: float 6s infinite ease-in-out reverse;
134
- }
135
-
136
- .circle-3 {
137
- width: 150px;
138
- height: 150px;
139
- background-color: #fa8c16;
140
- top: 50%;
141
- left: 10%;
142
- animation: float 7s infinite ease-in-out;
143
- }
144
-
145
- @keyframes pulse {
146
- 0% {
147
- transform: scale(1);
148
- }
149
- 50% {
150
- transform: scale(1.05);
151
- }
152
- 100% {
153
- transform: scale(1);
154
- }
155
- }
156
-
157
- @keyframes float {
158
- 0% {
159
- transform: translateY(0) rotate(0deg);
160
- }
161
- 50% {
162
- transform: translateY(-20px) rotate(5deg);
163
- }
164
- 100% {
165
- transform: translateY(0) rotate(0deg);
166
- }
167
- }
168
-
169
- /* 响应式设计 */
170
- @media (max-width: 768px) {
171
- .error-code {
172
- font-size: 80px;
173
- }
174
-
175
- .error-message {
176
- font-size: 24px;
177
- }
178
-
179
- .error-description {
180
- font-size: 14px;
181
- }
182
-
183
- .action-buttons {
184
- flex-direction: column;
185
- align-items: center;
186
- }
187
-
188
- .action-buttons .ant-btn {
189
- width: 200px;
190
- }
191
- }
192
- </style>
1
+ <template>
2
+ <div class="not-found-container">
3
+ <div class="content-wrapper">
4
+ <div class="error-code">404</div>
5
+ <div class="error-message">页面未找到</div>
6
+ <div class="error-description">抱歉,您访问的页面不存在或已被移除</div>
7
+
8
+ <div class="action-buttons">
9
+ <a-button type="primary" size="large" @click="goHome">
10
+ <template #icon>
11
+ <HomeOutlined />
12
+ </template>
13
+ 返回首页
14
+ </a-button>
15
+ <a-button size="large" @click="goBack">
16
+ <template #icon>
17
+ <ArrowLeftOutlined />
18
+ </template>
19
+ 返回上页
20
+ </a-button>
21
+ </div>
22
+ </div>
23
+
24
+ <div class="background-decoration">
25
+ <div class="circle circle-1"></div>
26
+ <div class="circle circle-2"></div>
27
+ <div class="circle circle-3"></div>
28
+ </div>
29
+ </div>
30
+ </template>
31
+
32
+ <script setup>
33
+ import { useRouter } from 'vue-router'
34
+ import { HomeOutlined, ArrowLeftOutlined } from '@ant-design/icons-vue'
35
+
36
+ // 获取路由实例
37
+ const router = useRouter()
38
+
39
+ /**
40
+ * 返回首页
41
+ */
42
+ const goHome = () => {
43
+ router.push('/')
44
+ }
45
+
46
+ /**
47
+ * 返回上一页
48
+ */
49
+ const goBack = () => {
50
+ router.go(-1)
51
+ }
52
+ </script>
53
+
54
+ <style scoped>
55
+ .not-found-container {
56
+ position: relative;
57
+ height: 100%;
58
+ display: flex;
59
+ align-items: center;
60
+ justify-content: center;
61
+ background-color: #ffffff;
62
+ overflow: hidden;
63
+ }
64
+
65
+ .content-wrapper {
66
+ text-align: center;
67
+ z-index: 2;
68
+ padding: 20px;
69
+ max-width: 600px;
70
+ }
71
+
72
+ .error-code {
73
+ font-size: 120px;
74
+ font-weight: bold;
75
+ color: #1890ff;
76
+ text-shadow: 4px 4px 0 rgba(24, 144, 255, 0.2);
77
+ margin-bottom: 20px;
78
+ animation: pulse 2s infinite;
79
+ }
80
+
81
+ .error-message {
82
+ font-size: 32px;
83
+ font-weight: 500;
84
+ color: #333;
85
+ margin-bottom: 16px;
86
+ }
87
+
88
+ .error-description {
89
+ font-size: 16px;
90
+ color: #666;
91
+ margin-bottom: 40px;
92
+ line-height: 1.6;
93
+ }
94
+
95
+ .action-buttons {
96
+ display: flex;
97
+ justify-content: center;
98
+ gap: 16px;
99
+ flex-wrap: wrap;
100
+ }
101
+
102
+ .background-decoration {
103
+ position: absolute;
104
+ top: 0;
105
+ left: 0;
106
+ width: 100%;
107
+ height: 100%;
108
+ z-index: 1;
109
+ overflow: hidden;
110
+ }
111
+
112
+ .circle {
113
+ position: absolute;
114
+ border-radius: 50%;
115
+ opacity: 0.1;
116
+ }
117
+
118
+ .circle-1 {
119
+ width: 300px;
120
+ height: 300px;
121
+ background-color: #1890ff;
122
+ top: -100px;
123
+ right: -100px;
124
+ animation: float 8s infinite ease-in-out;
125
+ }
126
+
127
+ .circle-2 {
128
+ width: 200px;
129
+ height: 200px;
130
+ background-color: #52c41a;
131
+ bottom: -50px;
132
+ left: -50px;
133
+ animation: float 6s infinite ease-in-out reverse;
134
+ }
135
+
136
+ .circle-3 {
137
+ width: 150px;
138
+ height: 150px;
139
+ background-color: #fa8c16;
140
+ top: 50%;
141
+ left: 10%;
142
+ animation: float 7s infinite ease-in-out;
143
+ }
144
+
145
+ @keyframes pulse {
146
+ 0% {
147
+ transform: scale(1);
148
+ }
149
+ 50% {
150
+ transform: scale(1.05);
151
+ }
152
+ 100% {
153
+ transform: scale(1);
154
+ }
155
+ }
156
+
157
+ @keyframes float {
158
+ 0% {
159
+ transform: translateY(0) rotate(0deg);
160
+ }
161
+ 50% {
162
+ transform: translateY(-20px) rotate(5deg);
163
+ }
164
+ 100% {
165
+ transform: translateY(0) rotate(0deg);
166
+ }
167
+ }
168
+
169
+ /* 响应式设计 */
170
+ @media (max-width: 768px) {
171
+ .error-code {
172
+ font-size: 80px;
173
+ }
174
+
175
+ .error-message {
176
+ font-size: 24px;
177
+ }
178
+
179
+ .error-description {
180
+ font-size: 14px;
181
+ }
182
+
183
+ .action-buttons {
184
+ flex-direction: column;
185
+ align-items: center;
186
+ }
187
+
188
+ .action-buttons .ant-btn {
189
+ width: 200px;
190
+ }
191
+ }
192
+ </style>