zant-admin 2.0.0 → 2.0.2

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 (81) hide show
  1. package/README.md +460 -268
  2. package/bin/cli.js +1 -1
  3. package/bin/generator.js +502 -502
  4. package/bin/prompts.js +123 -159
  5. package/bin/utils.js +133 -133
  6. package/package.json +1 -1
  7. package/public/logo.png +0 -0
  8. package/src/App.vue +16 -16
  9. package/src/api/methods/department.js +36 -0
  10. package/src/api/methods/employee.js +22 -0
  11. package/src/api/methods/logError.js +8 -8
  12. package/src/api/methods/logOperation.js +8 -8
  13. package/src/api/methods/login.js +6 -6
  14. package/src/api/methods/position.js +26 -0
  15. package/src/api/methods/quartz.js +36 -36
  16. package/src/api/methods/region.js +16 -16
  17. package/src/api/methods/sysAccount.js +29 -29
  18. package/src/api/methods/sysDict.js +29 -29
  19. package/src/api/methods/sysDictItem.js +26 -26
  20. package/src/api/methods/sysMenu.js +42 -42
  21. package/src/api/methods/sysRole.js +35 -35
  22. package/src/api/methods/sysUser.js +25 -25
  23. package/src/api/methods/system.js +15 -15
  24. package/src/api/request.js +225 -225
  25. package/src/assets/css/style.css +2 -2
  26. package/src/assets/css/zcui.css +1023 -1023
  27. package/src/assets/imgs/logo.png +0 -0
  28. package/src/assets/imgs/md/console.png +0 -0
  29. package/src/assets/imgs/md/login.png +0 -0
  30. package/src/assets/imgs/md/menu.png +0 -0
  31. package/src/assets/imgs/md/serviceMonitoring.png +0 -0
  32. package/src/assets/imgs/md/statistics.png +0 -0
  33. package/src/components/FormTable.vue +5 -19
  34. package/src/components/IconPicker.vue +351 -351
  35. package/src/components/MainPage.vue +838 -838
  36. package/src/components/details/logErrorDetails.vue +58 -58
  37. package/src/components/details/logOperationDetails.vue +76 -76
  38. package/src/components/edit/QuartzEdit.vue +221 -221
  39. package/src/components/edit/SysAccountEdit.vue +185 -185
  40. package/src/components/edit/SysDictEdit.vue +116 -116
  41. package/src/components/edit/SysDictItemEdit.vue +136 -136
  42. package/src/components/edit/SysRoleEdit.vue +111 -111
  43. package/src/components/edit/organizationalStructure/DepartmentEdit.vue +162 -0
  44. package/src/components/edit/organizationalStructure/EmployeeEdit.vue +295 -0
  45. package/src/components/edit/organizationalStructure/PositionEdit.vue +166 -0
  46. package/src/components/edit/sysMenuEdit.vue +2 -1
  47. package/src/config/index.js +74 -74
  48. package/src/directives/permission.js +49 -49
  49. package/src/main.js +37 -37
  50. package/src/stores/config.js +43 -43
  51. package/src/stores/dict.js +33 -33
  52. package/src/stores/menu.js +81 -81
  53. package/src/stores/user.js +21 -21
  54. package/src/utils/baseEcharts.js +661 -661
  55. package/src/utils/dictTemplate.js +26 -26
  56. package/src/utils/regionUtils.js +173 -173
  57. package/src/utils/useFormCRUD.js +59 -59
  58. package/src/views/baiscstatis/center.vue +474 -474
  59. package/src/views/baiscstatis/iframePage.vue +29 -29
  60. package/src/views/baiscstatis/notFound.vue +192 -192
  61. package/src/views/console.vue +821 -821
  62. package/src/views/demo/button.vue +269 -269
  63. package/src/views/demo/importexport.vue +119 -119
  64. package/src/views/demo/region.vue +322 -322
  65. package/src/views/demo/statistics.vue +214 -214
  66. package/src/views/home.vue +6 -6
  67. package/src/views/login.vue +12 -2
  68. package/src/views/operations/log/logError.vue +78 -78
  69. package/src/views/operations/log/logLogin.vue +66 -66
  70. package/src/views/operations/log/logOperation.vue +103 -103
  71. package/src/views/operations/log/logQuartz.vue +56 -56
  72. package/src/views/operations/quartz.vue +179 -179
  73. package/src/views/operations/serviceMonitoring.vue +134 -134
  74. package/src/views/organizationalStructure/department.vue +194 -0
  75. package/src/views/organizationalStructure/employee.vue +234 -0
  76. package/src/views/organizationalStructure/position.vue +196 -0
  77. package/src/views/system/sysAccount.vue +128 -128
  78. package/src/views/system/sysDict.vue +159 -159
  79. package/src/views/system/sysDictItem.vue +118 -118
  80. package/src/views/system/sysMenu.vue +225 -225
  81. package/src/views/system/sysRole.vue +207 -207
@@ -1,214 +1,214 @@
1
- <template>
2
- <div class="statistics-container">
3
- <a-row :gutter="16">
4
- <!-- 柱状图 -->
5
- <a-col :span="12">
6
- <a-card title="销售数据统计" class="chart-card">
7
- <div ref="barChartRef" class="chart-container"></div>
8
- </a-card>
9
- </a-col>
10
-
11
- <!-- 饼图 -->
12
- <a-col :span="12">
13
- <a-card title="产品占比分析" class="chart-card">
14
- <div ref="pieChartRef" class="chart-container"></div>
15
- </a-card>
16
- </a-col>
17
- </a-row>
18
-
19
- <a-row :gutter="16" style="margin-top: 16px">
20
- <!-- 折线图 -->
21
- <a-col :span="24">
22
- <a-card title="月度趋势分析" class="chart-card">
23
- <div ref="lineChartRef" class="chart-container"></div>
24
- </a-card>
25
- </a-col>
26
- </a-row>
27
- </div>
28
- </template>
29
-
30
- <script setup>
31
- import { ref, onMounted, onUnmounted } from 'vue'
32
- import {
33
- initBarChart,
34
- updateBarChart,
35
- initPieChart,
36
- updatePieChart,
37
- initLineChart,
38
- updateLineChart,
39
- } from '@/utils/baseEcharts'
40
-
41
- // 图表DOM引用
42
- const barChartRef = ref(null)
43
- const pieChartRef = ref(null)
44
- const lineChartRef = ref(null)
45
-
46
- // 图表实例
47
- let barChartInstance = null
48
- let pieChartInstance = null
49
- let lineChartInstance = null
50
-
51
- /**
52
- * 初始化所有图表
53
- */
54
- const initCharts = () => {
55
- // 初始化柱状图
56
- if (barChartRef.value) {
57
- barChartInstance = initBarChart(barChartRef.value, '销售额(万元)')
58
- }
59
-
60
- // 初始化饼图
61
- if (pieChartRef.value) {
62
- pieChartInstance = initPieChart(pieChartRef.value, '产品占比')
63
- }
64
-
65
- // 初始化折线图
66
- if (lineChartRef.value) {
67
- lineChartInstance = initLineChart(lineChartRef.value, '访问量(万次)')
68
- }
69
- }
70
-
71
- /**
72
- * 生成模拟数据
73
- */
74
- const generateMockData = () => {
75
- // 柱状图数据
76
- const barData = {
77
- xAxis: {
78
- data: [
79
- '1月',
80
- '2月',
81
- '3月',
82
- '4月',
83
- '5月',
84
- '6月',
85
- '7月',
86
- '8月',
87
- '9月',
88
- '10月',
89
- '11月',
90
- '12月',
91
- ],
92
- },
93
- series: [
94
- {
95
- name: '产品A',
96
- data: [120, 132, 101, 134, 90, 230, 210, 220, 182, 191, 234, 290],
97
- },
98
- {
99
- name: '产品B',
100
- data: [220, 182, 191, 234, 290, 330, 310, 220, 182, 191, 234, 290],
101
- },
102
- {
103
- name: '产品C',
104
- data: [150, 232, 201, 154, 190, 330, 410, 320, 282, 291, 334, 390],
105
- },
106
- ],
107
- }
108
-
109
- // 饼图数据
110
- const pieData = [
111
- { name: '电子产品', value: 335 },
112
- { name: '家居用品', value: 310 },
113
- { name: '服装鞋帽', value: 234 },
114
- { name: '食品饮料', value: 135 },
115
- { name: '图书音像', value: 1048 },
116
- ]
117
-
118
- // 折线图数据
119
- const lineData = {
120
- xAxis: {
121
- data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
122
- },
123
- series: [
124
- {
125
- name: '网站访问量',
126
- data: [820, 932, 901, 934, 1290, 1330, 1320],
127
- },
128
- {
129
- name: 'APP访问量',
130
- data: [620, 732, 701, 734, 1090, 1130, 1120],
131
- },
132
- {
133
- name: '小程序访问量',
134
- data: [420, 532, 501, 534, 890, 930, 920],
135
- },
136
- ],
137
- }
138
-
139
- return { barData, pieData, lineData }
140
- }
141
-
142
- /**
143
- * 更新所有图表数据
144
- */
145
- const updateCharts = () => {
146
- const { barData, pieData, lineData } = generateMockData()
147
-
148
- // 更新柱状图
149
- if (barChartInstance) {
150
- updateBarChart({
151
- chartInstance: barChartInstance,
152
- data: barData,
153
- shouldShowSlider: false,
154
- })
155
- }
156
-
157
- // 更新饼图
158
- if (pieChartInstance) {
159
- updatePieChart({
160
- chartInstance: pieChartInstance,
161
- data: pieData,
162
- })
163
- }
164
-
165
- // 更新折线图
166
- if (lineChartInstance) {
167
- updateLineChart({
168
- chartInstance: lineChartInstance,
169
- data: lineData,
170
- shouldShowSlider: false,
171
- })
172
- }
173
- }
174
-
175
- /**
176
- * 窗口大小变化时重新调整图表大小
177
- */
178
- const handleResize = () => {
179
- barChartInstance?.resize()
180
- pieChartInstance?.resize()
181
- lineChartInstance?.resize()
182
- }
183
-
184
- // 组件挂载时初始化图表
185
- onMounted(() => {
186
- initCharts()
187
- updateCharts()
188
-
189
- // 监听窗口大小变化
190
- window.addEventListener('resize', handleResize)
191
- })
192
-
193
- // 组件卸载时清理资源
194
- onUnmounted(() => {
195
- // 销毁图表实例
196
- barChartInstance?.dispose()
197
- pieChartInstance?.dispose()
198
- lineChartInstance?.dispose()
199
-
200
- // 移除事件监听
201
- window.removeEventListener('resize', handleResize)
202
- })
203
- </script>
204
-
205
- <style scoped>
206
- .chart-card {
207
- margin-bottom: 16px;
208
- }
209
-
210
- .chart-container {
211
- height: 300px;
212
- width: 100%;
213
- }
214
- </style>
1
+ <template>
2
+ <div class="statistics-container">
3
+ <a-row :gutter="16">
4
+ <!-- 柱状图 -->
5
+ <a-col :span="12">
6
+ <a-card title="销售数据统计" class="chart-card">
7
+ <div ref="barChartRef" class="chart-container"></div>
8
+ </a-card>
9
+ </a-col>
10
+
11
+ <!-- 饼图 -->
12
+ <a-col :span="12">
13
+ <a-card title="产品占比分析" class="chart-card">
14
+ <div ref="pieChartRef" class="chart-container"></div>
15
+ </a-card>
16
+ </a-col>
17
+ </a-row>
18
+
19
+ <a-row :gutter="16" style="margin-top: 16px">
20
+ <!-- 折线图 -->
21
+ <a-col :span="24">
22
+ <a-card title="月度趋势分析" class="chart-card">
23
+ <div ref="lineChartRef" class="chart-container"></div>
24
+ </a-card>
25
+ </a-col>
26
+ </a-row>
27
+ </div>
28
+ </template>
29
+
30
+ <script setup>
31
+ import { ref, onMounted, onUnmounted } from 'vue'
32
+ import {
33
+ initBarChart,
34
+ updateBarChart,
35
+ initPieChart,
36
+ updatePieChart,
37
+ initLineChart,
38
+ updateLineChart,
39
+ } from '@/utils/baseEcharts'
40
+
41
+ // 图表DOM引用
42
+ const barChartRef = ref(null)
43
+ const pieChartRef = ref(null)
44
+ const lineChartRef = ref(null)
45
+
46
+ // 图表实例
47
+ let barChartInstance = null
48
+ let pieChartInstance = null
49
+ let lineChartInstance = null
50
+
51
+ /**
52
+ * 初始化所有图表
53
+ */
54
+ const initCharts = () => {
55
+ // 初始化柱状图
56
+ if (barChartRef.value) {
57
+ barChartInstance = initBarChart(barChartRef.value, '销售额(万元)')
58
+ }
59
+
60
+ // 初始化饼图
61
+ if (pieChartRef.value) {
62
+ pieChartInstance = initPieChart(pieChartRef.value, '产品占比')
63
+ }
64
+
65
+ // 初始化折线图
66
+ if (lineChartRef.value) {
67
+ lineChartInstance = initLineChart(lineChartRef.value, '访问量(万次)')
68
+ }
69
+ }
70
+
71
+ /**
72
+ * 生成模拟数据
73
+ */
74
+ const generateMockData = () => {
75
+ // 柱状图数据
76
+ const barData = {
77
+ xAxis: {
78
+ data: [
79
+ '1月',
80
+ '2月',
81
+ '3月',
82
+ '4月',
83
+ '5月',
84
+ '6月',
85
+ '7月',
86
+ '8月',
87
+ '9月',
88
+ '10月',
89
+ '11月',
90
+ '12月',
91
+ ],
92
+ },
93
+ series: [
94
+ {
95
+ name: '产品A',
96
+ data: [120, 132, 101, 134, 90, 230, 210, 220, 182, 191, 234, 290],
97
+ },
98
+ {
99
+ name: '产品B',
100
+ data: [220, 182, 191, 234, 290, 330, 310, 220, 182, 191, 234, 290],
101
+ },
102
+ {
103
+ name: '产品C',
104
+ data: [150, 232, 201, 154, 190, 330, 410, 320, 282, 291, 334, 390],
105
+ },
106
+ ],
107
+ }
108
+
109
+ // 饼图数据
110
+ const pieData = [
111
+ { name: '电子产品', value: 335 },
112
+ { name: '家居用品', value: 310 },
113
+ { name: '服装鞋帽', value: 234 },
114
+ { name: '食品饮料', value: 135 },
115
+ { name: '图书音像', value: 1048 },
116
+ ]
117
+
118
+ // 折线图数据
119
+ const lineData = {
120
+ xAxis: {
121
+ data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
122
+ },
123
+ series: [
124
+ {
125
+ name: '网站访问量',
126
+ data: [820, 932, 901, 934, 1290, 1330, 1320],
127
+ },
128
+ {
129
+ name: 'APP访问量',
130
+ data: [620, 732, 701, 734, 1090, 1130, 1120],
131
+ },
132
+ {
133
+ name: '小程序访问量',
134
+ data: [420, 532, 501, 534, 890, 930, 920],
135
+ },
136
+ ],
137
+ }
138
+
139
+ return { barData, pieData, lineData }
140
+ }
141
+
142
+ /**
143
+ * 更新所有图表数据
144
+ */
145
+ const updateCharts = () => {
146
+ const { barData, pieData, lineData } = generateMockData()
147
+
148
+ // 更新柱状图
149
+ if (barChartInstance) {
150
+ updateBarChart({
151
+ chartInstance: barChartInstance,
152
+ data: barData,
153
+ shouldShowSlider: false,
154
+ })
155
+ }
156
+
157
+ // 更新饼图
158
+ if (pieChartInstance) {
159
+ updatePieChart({
160
+ chartInstance: pieChartInstance,
161
+ data: pieData,
162
+ })
163
+ }
164
+
165
+ // 更新折线图
166
+ if (lineChartInstance) {
167
+ updateLineChart({
168
+ chartInstance: lineChartInstance,
169
+ data: lineData,
170
+ shouldShowSlider: false,
171
+ })
172
+ }
173
+ }
174
+
175
+ /**
176
+ * 窗口大小变化时重新调整图表大小
177
+ */
178
+ const handleResize = () => {
179
+ barChartInstance?.resize()
180
+ pieChartInstance?.resize()
181
+ lineChartInstance?.resize()
182
+ }
183
+
184
+ // 组件挂载时初始化图表
185
+ onMounted(() => {
186
+ initCharts()
187
+ updateCharts()
188
+
189
+ // 监听窗口大小变化
190
+ window.addEventListener('resize', handleResize)
191
+ })
192
+
193
+ // 组件卸载时清理资源
194
+ onUnmounted(() => {
195
+ // 销毁图表实例
196
+ barChartInstance?.dispose()
197
+ pieChartInstance?.dispose()
198
+ lineChartInstance?.dispose()
199
+
200
+ // 移除事件监听
201
+ window.removeEventListener('resize', handleResize)
202
+ })
203
+ </script>
204
+
205
+ <style scoped>
206
+ .chart-card {
207
+ margin-bottom: 16px;
208
+ }
209
+
210
+ .chart-container {
211
+ height: 300px;
212
+ width: 100%;
213
+ }
214
+ </style>
@@ -1,6 +1,6 @@
1
- <script setup>
2
- import MainPage from '../components/MainPage.vue'
3
- </script>
4
- <template>
5
- <MainPage />
6
- </template>
1
+ <script setup>
2
+ import MainPage from '../components/MainPage.vue'
3
+ </script>
4
+ <template>
5
+ <MainPage />
6
+ </template>
@@ -85,6 +85,7 @@
85
85
  </a-form-item>
86
86
  <a class="login-form-forgot" href="">忘记密码</a>
87
87
  </a-form-item>
88
+
88
89
  <a-form-item>
89
90
  <a-button :disabled="disabled" type="primary" :loading="loading" html-type="submit" size="large"
90
91
  class="login-form-button">
@@ -95,6 +96,15 @@
95
96
 
96
97
  </a-tab-pane>
97
98
  </a-tabs>
99
+ <a-alert
100
+ type="info"
101
+ show-icon
102
+ style="margin-bottom: 16px"
103
+ >
104
+ <template #message>
105
+ 测试账号:<b>admin</b> &nbsp;&nbsp;密码:<b>123456</b>
106
+ </template>
107
+ </a-alert>
98
108
  <a-divider>其他登录方式</a-divider>
99
109
  <div class="text-align-center">
100
110
  <a-space size="large">
@@ -137,8 +147,8 @@ import { reactive, computed, ref } from 'vue'
137
147
  import { message } from 'ant-design-vue'
138
148
  import { MessageOutlined, QqOutlined } from '@ant-design/icons-vue'
139
149
  const formState = reactive({
140
- mobile: '123456',
141
- password: '123456',
150
+ mobile: '',
151
+ password: '',
142
152
  remember: true,
143
153
  vercode: '',
144
154
  })
@@ -1,78 +1,78 @@
1
- <template>
2
- <form-table
3
- :formState="formState"
4
- :columns="columns"
5
- modulePath="LogError"
6
- :rowSelect="false"
7
- :permissionModulePath="permissionModulePath"
8
- @details="details"
9
- >
10
- </form-table>
11
- <!-- 详情 -->
12
- <LogErrorDetails
13
- :open="detailsopen"
14
- :info="info"
15
- @close="detailsopen = false"
16
- >
17
- </LogErrorDetails>
18
- </template>
19
- <script setup>
20
- import { ref } from 'vue'
21
- import FormTable from '@/components/FormTable.vue'
22
- import logError from '@/api/methods/logError'
23
- import LogErrorDetails from '@/components/details/logErrorDetails.vue'
24
- // 权限模块路径
25
- const permissionModulePath = ref('operations:log:logError')
26
- const formState = ref({
27
- actionName: { label: '方法', value: '', type: 'text' },
28
- code: { label: '异常码', value: '', type: 'text' },
29
- createTime: { label: '日期范围', value: '', type: 'time' },
30
- })
31
- const columns = ref([
32
- {
33
- title: '序号',
34
- key: 'num',
35
- width: 80,
36
- },
37
- {
38
- title: '方法',
39
- dataIndex: 'actionName',
40
- ellipsis: true,
41
- },
42
- {
43
- title: '异常码',
44
- dataIndex: 'code',
45
- width: 100,
46
- },
47
- {
48
- title: '异常内容',
49
- dataIndex: 'message',
50
- ellipsis: true,
51
- },
52
-
53
- {
54
- title: '创建时间',
55
- dataIndex: 'createTime',
56
- width: 200,
57
- },
58
- {
59
- title: '操作',
60
- key: 'operation',
61
- fixed: 'right',
62
- width: 100,
63
- },
64
- ])
65
- //详情
66
- const detailsopen = ref(false)
67
- const info = ref({})
68
- const details = record => {
69
- logError.detail({ id: record.id }).then(res => {
70
- info.value = res.data
71
- detailsopen.value = true
72
- })
73
- }
74
- const detailsHandleCancel = () => {
75
- detailsopen.value = false
76
- }
77
- </script>
78
- <style></style>
1
+ <template>
2
+ <form-table
3
+ :formState="formState"
4
+ :columns="columns"
5
+ modulePath="LogError"
6
+ :rowSelect="false"
7
+ :permissionModulePath="permissionModulePath"
8
+ @details="details"
9
+ >
10
+ </form-table>
11
+ <!-- 详情 -->
12
+ <LogErrorDetails
13
+ :open="detailsopen"
14
+ :info="info"
15
+ @close="detailsopen = false"
16
+ >
17
+ </LogErrorDetails>
18
+ </template>
19
+ <script setup>
20
+ import { ref } from 'vue'
21
+ import FormTable from '@/components/FormTable.vue'
22
+ import logError from '@/api/methods/logError'
23
+ import LogErrorDetails from '@/components/details/logErrorDetails.vue'
24
+ // 权限模块路径
25
+ const permissionModulePath = ref('operations:log:logError')
26
+ const formState = ref({
27
+ actionName: { label: '方法', value: '', type: 'text' },
28
+ code: { label: '异常码', value: '', type: 'text' },
29
+ createTime: { label: '日期范围', value: '', type: 'time' },
30
+ })
31
+ const columns = ref([
32
+ {
33
+ title: '序号',
34
+ key: 'num',
35
+ width: 80,
36
+ },
37
+ {
38
+ title: '方法',
39
+ dataIndex: 'actionName',
40
+ ellipsis: true,
41
+ },
42
+ {
43
+ title: '异常码',
44
+ dataIndex: 'code',
45
+ width: 100,
46
+ },
47
+ {
48
+ title: '异常内容',
49
+ dataIndex: 'message',
50
+ ellipsis: true,
51
+ },
52
+
53
+ {
54
+ title: '创建时间',
55
+ dataIndex: 'createTime',
56
+ width: 200,
57
+ },
58
+ {
59
+ title: '操作',
60
+ key: 'operation',
61
+ fixed: 'right',
62
+ width: 100,
63
+ },
64
+ ])
65
+ //详情
66
+ const detailsopen = ref(false)
67
+ const info = ref({})
68
+ const details = record => {
69
+ logError.detail({ id: record.id }).then(res => {
70
+ info.value = res.data
71
+ detailsopen.value = true
72
+ })
73
+ }
74
+ const detailsHandleCancel = () => {
75
+ detailsopen.value = false
76
+ }
77
+ </script>
78
+ <style></style>