zant-admin 2.0.1 → 2.0.3

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 (70) 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/bin/prompts.js +17 -53
  11. package/eslint.config.js +30 -0
  12. package/index.html +13 -0
  13. package/jsconfig.json +8 -0
  14. package/package.json +12 -2
  15. package/src/App.vue +16 -16
  16. package/src/api/methods/logError.js +8 -8
  17. package/src/api/methods/logOperation.js +8 -8
  18. package/src/api/methods/login.js +6 -6
  19. package/src/api/methods/quartz.js +36 -36
  20. package/src/api/methods/region.js +16 -16
  21. package/src/api/methods/sysAccount.js +29 -29
  22. package/src/api/methods/sysDict.js +29 -29
  23. package/src/api/methods/sysDictItem.js +26 -26
  24. package/src/api/methods/sysMenu.js +42 -42
  25. package/src/api/methods/sysRole.js +35 -35
  26. package/src/api/methods/sysUser.js +25 -25
  27. package/src/api/methods/system.js +15 -15
  28. package/src/api/request.js +225 -225
  29. package/src/assets/css/zcui.css +1023 -1023
  30. package/src/components/IconPicker.vue +351 -351
  31. package/src/components/MainPage.vue +838 -838
  32. package/src/components/details/logErrorDetails.vue +58 -58
  33. package/src/components/details/logOperationDetails.vue +76 -76
  34. package/src/components/edit/QuartzEdit.vue +221 -221
  35. package/src/components/edit/SysAccountEdit.vue +185 -185
  36. package/src/components/edit/SysDictEdit.vue +116 -116
  37. package/src/components/edit/SysDictItemEdit.vue +136 -136
  38. package/src/components/edit/SysRoleEdit.vue +111 -111
  39. package/src/config/index.js +74 -74
  40. package/src/directives/permission.js +49 -49
  41. package/src/main.js +37 -37
  42. package/src/stores/config.js +43 -43
  43. package/src/stores/dict.js +33 -33
  44. package/src/stores/menu.js +81 -81
  45. package/src/stores/user.js +21 -21
  46. package/src/utils/baseEcharts.js +661 -661
  47. package/src/utils/dictTemplate.js +26 -26
  48. package/src/utils/regionUtils.js +173 -173
  49. package/src/utils/useFormCRUD.js +59 -59
  50. package/src/views/baiscstatis/center.vue +474 -474
  51. package/src/views/baiscstatis/iframePage.vue +29 -29
  52. package/src/views/baiscstatis/notFound.vue +192 -192
  53. package/src/views/console.vue +821 -821
  54. package/src/views/demo/button.vue +269 -269
  55. package/src/views/demo/importexport.vue +119 -119
  56. package/src/views/demo/region.vue +322 -322
  57. package/src/views/demo/statistics.vue +214 -214
  58. package/src/views/home.vue +6 -6
  59. package/src/views/operations/log/logError.vue +78 -78
  60. package/src/views/operations/log/logLogin.vue +66 -66
  61. package/src/views/operations/log/logOperation.vue +103 -103
  62. package/src/views/operations/log/logQuartz.vue +56 -56
  63. package/src/views/operations/quartz.vue +179 -179
  64. package/src/views/operations/serviceMonitoring.vue +134 -134
  65. package/src/views/system/sysAccount.vue +128 -128
  66. package/src/views/system/sysDict.vue +159 -159
  67. package/src/views/system/sysDictItem.vue +118 -118
  68. package/src/views/system/sysMenu.vue +225 -225
  69. package/src/views/system/sysRole.vue +207 -207
  70. 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>