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
package/README.md CHANGED
@@ -5,12 +5,13 @@
5
5
 
6
6
  <div align="center">
7
7
 
8
- ![ZAntAdmin](https://img.shields.io/badge/ZAntAdmin-管理平台-blue.svg)
9
- ![Vue](https://img.shields.io/badge/Vue-3.5-green.svg)
8
+ ![ZAntAdmin](https://img.shields.io/badge/ZAntAdmin-2.0.0-blue.svg)
9
+ ![Vue](https://img.shields.io/badge/Vue-3.5.13-green.svg)
10
+ ![Vite](https://img.shields.io/badge/Vite-7.0.6-646CFF.svg)
10
11
  ![Ant Design Vue](https://img.shields.io/badge/Ant%20Design%20Vue-4.2.6-red.svg)
11
12
  ![License](https://img.shields.io/badge/License-MIT-yellow.svg)
12
13
 
13
- [在线演示](http://106.13.37.129:8123) | [后端项目](https://gitee.com/zchty/zant-core)
14
+ [在线演示](http://106.13.37.129:8123) | [后端项目](https://gitee.com/zchty/zant-core) | [更新日志](./CHANGELOG.md)
14
15
 
15
16
  </div>
16
17
 
@@ -22,406 +23,597 @@
22
23
  - [快速开始](#快速开始)
23
24
  - [核心功能](#核心功能)
24
25
  - [项目特色](#项目特色)
26
+ - [API 接口](#api-接口)
27
+ - [浏览器支持](#浏览器支持)
25
28
  - [贡献指南](#贡献指南)
26
29
  - [许可证](#许可证)
27
30
 
28
31
  ## 项目简介
29
32
 
30
- ZAntAdmin 是一个基于 Vue 3.5 + Vite + Ant Design Vue 4.2.6 构建的现代化前端管理系统。该项目采用最新的前端技术栈,提供了完整的用户认证、权限管理、动态路由、数据可视化等功能,适用于企业级管理系统的开发。
31
-
32
-
33
- ### 效果预览
34
-
35
- <div>
36
- <img src="./src/assets/imgs/md/login.png" alt="登录页面" width="300" style="margin-right: 10px; margin-bottom: 10px; border: 1px solid #d9d9d9; border-radius: 4px;">
37
- <img src="./src/assets/imgs/md/console.png" alt="首页" width="300" style="margin-right: 10px; margin-bottom: 10px; border: 1px solid #d9d9d9; border-radius: 4px;">
38
- <img src="./src/assets/imgs/md/serviceMonitoring.png" alt="服务监控" width="300" style="margin-bottom: 10px; border: 1px solid #d9d9d9; border-radius: 4px;">
39
- <img src="./src/assets/imgs/md/statistics.png" alt="统计图" width="300" style="margin-right: 10px; margin-bottom: 10px; border: 1px solid #d9d9d9; border-radius: 4px;">
40
- <img src="./src/assets/imgs/md/menu.png" alt="菜单管理" width="300" style="margin-right: 10px; margin-bottom: 10px; border: 1px solid #d9d9d9; border-radius: 4px;">
41
- </div>
33
+ ZAntAdmin 是一个基于 **Vue 3.5 + Vite + Ant Design Vue 4.2.6** 构建的现代化前端管理系统。该项目采用最新的前端技术栈,提供了完整的用户认证、权限管理、动态路由、数据可视化等功能,适用于企业级管理系统的快速开发。
34
+
35
+ ### ✨ 主要特性
36
+
37
+ - 🚀 **最新技术栈** - 基于 Vue 3.5、Vite 7、Ant Design Vue 4 等前沿技术
38
+ - 🔐 **完善的权限系统** - 基于 Token 的认证、动态路由、角色权限控制
39
+ - 📦 **丰富的组件库** - 封装了 FormTable、IconPicker 等通用业务组件
40
+ - 🎨 **现代化 UI** - 基于 Ant Design Vue 的企业级设计体系
41
+ - 📱 **响应式设计** - 适配桌面、平板等多种设备
42
+ - 🛠️ **CLI 脚手架** - 提供项目快速生成工具,支持多种模板选择
43
+ - 📊 **数据可视化** - 集成 ECharts 图表库,支持丰富的数据展示
44
+ - 🌍 **国际化支持** - 预留国际化接口,便于多语言扩展
45
+
46
+
47
+ ### 🖼️ 效果预览
48
+
49
+ <table>
50
+ <tr>
51
+ <td align="center">
52
+ <img src="./src/assets/imgs/md/login.png" alt="登录页面" width="280">
53
+ <br>登录页面
54
+ </td>
55
+ <td align="center">
56
+ <img src="./src/assets/imgs/md/console.png" alt="控制台" width="280">
57
+ <br>控制台
58
+ </td>
59
+ <td align="center">
60
+ <img src="./src/assets/imgs/md/serviceMonitoring.png" alt="服务监控" width="280">
61
+ <br>服务监控
62
+ </td>
63
+ </tr>
64
+ <tr>
65
+ <td align="center">
66
+ <img src="./src/assets/imgs/md/statistics.png" alt="统计图表" width="280">
67
+ <br>统计图表
68
+ </td>
69
+ <td align="center">
70
+ <img src="./src/assets/imgs/md/menu.png" alt="菜单管理" width="280">
71
+ <br>菜单管理
72
+ </td>
73
+ </tr>
74
+ </table>
42
75
 
43
76
  ## 技术架构
44
77
 
45
78
  ### 核心框架
46
- - **Vue 3**: 采用 Composition API 和 `<script setup>` 语法糖
47
- - **Vite**: 现代化前端构建工具,提供快速的开发体验
48
- - **Vue Router 4**: 路由管理,支持动态路由和路由守卫
49
- - **Pinia**: 状态管理,替代 Vuex,提供更简洁的 API
79
+
80
+ | 技术 | 版本 | 说明 |
81
+ |------|------|------|
82
+ | [Vue](https://vuejs.org/) | 3.5.13 | 渐进式 JavaScript 框架,采用 Composition API 和 `<script setup>` 语法糖 |
83
+ | [Vite](https://vitejs.dev/) | 7.0.6 | 下一代前端构建工具,提供极速的开发体验 |
84
+ | [Vue Router](https://router.vuejs.org/) | 4.4.5 | 官方路由管理器,支持动态路由和路由守卫 |
85
+ | [Pinia](https://pinia.vuejs.org/) | 2.2.6 | Vue 官方推荐的状态管理方案,替代 Vuex |
50
86
 
51
87
  ### UI 框架
52
- - **Ant Design Vue 4**: 企业级 UI 组件库
53
- - **@ant-design/icons-vue**: Ant Design 图标库
88
+
89
+ | 技术 | 版本 | 说明 |
90
+ |------|------|------|
91
+ | [Ant Design Vue](https://antdv.com/) | 4.2.6 | 企业级 UI 设计语言和组件库 |
92
+ | [@ant-design/icons-vue](https://github.com/ant-design/ant-design-icons) | 7.0.1 | Ant Design 官方图标库 |
54
93
 
55
94
  ### 工具库
56
- - **alova**: 请求库,提供更强大的请求管理能力
57
- - **dayjs**: 轻量级日期处理库
58
- - **echarts**: 数据可视化图表库
59
- - **file-saver**: 文件保存工具
60
- - **pinia-plugin-persist**: Pinia 持久化插件
95
+
96
+ | 技术 | 版本 | 说明 |
97
+ |------|------|------|
98
+ | [Alova](https://alova.js.org/) | 3.2.6 | 下一代请求工具,提供更强大的请求管理能力 |
99
+ | [Dayjs](https://day.js.org/) | 1.11.13 | 轻量级日期处理库,Moment.js 的替代方案 |
100
+ | [ECharts](https://echarts.apache.org/) | 6.0.0 | 开源可视化库,提供丰富的图表类型 |
101
+ | [file-saver](https://github.com/eligrey/FileSaver.js) | 2.0.5 | 文件保存工具,支持客户端文件下载 |
102
+ | [pinia-plugin-persist](https://github.com/Seb-L/pinia-plugin-persist) | 1.0.0 | Pinia 状态持久化插件 |
61
103
 
62
104
  ### 开发工具
63
- - **ESLint**: 代码质量检查
64
- - **Prettier**: 代码格式化
65
- - **vite-plugin-clean**: 构建时清理旧文件
105
+
106
+ | 工具 | 版本 | 说明 |
107
+ |------|------|------|
108
+ | [ESLint](https://eslint.org/) | 9.12.0 | 代码质量检查和规范 |
109
+ | [Prettier](https://prettier.io/) | 3.3.3 | 代码格式化工具 |
110
+ | [vite-plugin-clean](https://github.com/zjxxxxxxxxx/vite-plugin-clean) | 2.0.1 | 构建时清理旧文件插件 |
66
111
 
67
112
  ## 项目结构
68
113
 
69
114
  ```
70
- ZAntAdmin/
71
- ├── public/ # 静态资源
72
- ├── src/
73
- │ ├── api/ # API 接口
115
+ zant-admin/
116
+ ├── bin/ # CLI 脚手架工具
117
+ ├── cli.js # 命令行入口
118
+ │ ├── generator.js # 项目生成器
119
+ │ ├── prompts.js # 交互式提示
120
+ │ └── utils.js # 工具函数
121
+ ├── public/ # 静态资源(不经过构建处理)
122
+ │ └── logo.png # 项目 Logo
123
+ ├── src/ # 源代码目录
124
+ │ ├── api/ # API 接口层
74
125
  │ │ ├── methods/ # 各模块 API 方法
75
- │ │ └── request.js # 请求封装
126
+ │ │ │ ├── department.js # 部门管理接口
127
+ │ │ │ ├── employee.js # 员工管理接口
128
+ │ │ │ ├── login.js # 登录认证接口
129
+ │ │ │ ├── sysAccount.js # 账户管理接口
130
+ │ │ │ ├── sysDict.js # 字典管理接口
131
+ │ │ │ ├── sysMenu.js # 菜单管理接口
132
+ │ │ │ ├── sysRole.js # 角色管理接口
133
+ │ │ │ └── ... # 其他接口
134
+ │ │ └── request.js # 请求封装配置
76
135
  │ ├── assets/ # 静态资源
77
136
  │ │ ├── css/ # 样式文件
137
+ │ │ │ ├── style.css # 全局样式
138
+ │ │ │ └── zcui.css # 自定义 UI 样式
78
139
  │ │ └── imgs/ # 图片资源
79
140
  │ ├── components/ # 公共组件
80
141
  │ │ ├── details/ # 详情组件
81
142
  │ │ ├── edit/ # 编辑组件
82
- │ │ └── pages/ # 页面组件
143
+ │ │ │ ├── organizationalStructure/ # 组织架构编辑
144
+ │ │ │ ├── SysAccountEdit.vue # 账户编辑
145
+ │ │ │ ├── SysRoleEdit.vue # 角色编辑
146
+ │ │ │ └── ...
147
+ │ │ ├── FormTable.vue # 通用表格表单组件
148
+ │ │ ├── IconPicker.vue # 图标选择器组件
149
+ │ │ └── MainPage.vue # 主页面布局组件
83
150
  │ ├── config/ # 配置文件
84
151
  │ ├── directives/ # 自定义指令
152
+ │ │ └── permission.js # 权限指令 v-permission
85
153
  │ ├── router/ # 路由配置
86
- ├── stores/ # 状态管理
154
+ │ └── index.js # 路由入口配置
155
+ │ ├── stores/ # Pinia 状态管理
156
+ │ │ ├── config.js # 配置状态
157
+ │ │ ├── dict.js # 字典状态
158
+ │ │ ├── menu.js # 菜单状态
159
+ │ │ └── user.js # 用户状态
87
160
  │ ├── utils/ # 工具函数
161
+ │ │ ├── baseEcharts.js # ECharts 基础配置
162
+ │ │ ├── dictTemplate.js # 字典模板工具
163
+ │ │ ├── regionUtils.js # 区域工具函数
164
+ │ │ └── useFormCRUD.js # 表单 CRUD 封装
88
165
  │ ├── views/ # 页面视图
166
+ │ │ ├── baiscstatis/ # 基础统计页面
167
+ │ │ ├── demo/ # 示例页面
168
+ │ │ ├── operations/ # 运维管理
169
+ │ │ ├── organizationalStructure/ # 组织架构
170
+ │ │ ├── system/ # 系统管理
171
+ │ │ ├── console.vue # 控制台
172
+ │ │ ├── home.vue # 首页
173
+ │ │ └── login.vue # 登录页
89
174
  │ ├── App.vue # 根组件
90
175
  │ └── main.js # 入口文件
176
+ ├── templates/ # CLI 项目模板
91
177
  ├── .env.development # 开发环境变量
92
178
  ├── .env.production # 生产环境变量
93
179
  ├── .env.test # 测试环境变量
94
180
  ├── eslint.config.js # ESLint 配置
95
181
  ├── .prettierrc.json # Prettier 配置
96
- ├── index.html # HTML 模板
97
- ├── package.json # 项目依赖
98
- └── vite.config.js # Vite 配置
182
+ ├── vite.config.js # Vite 配置
183
+ └── package.json # 项目依赖
99
184
  ```
100
185
 
101
186
  ## 核心功能
102
187
 
103
- ### 1. 用户认证与权限管理
104
- - 基于 Token 的用户认证
105
- - 动态权限控制
106
- - 角色管理
107
- - 权限指令 (`v-permission`)
108
-
109
- ### 2. 动态路由系统
110
- - 基于后端菜单配置的动态路由加载
111
- - 路由守卫实现访问控制
112
- - 多级菜单支持
113
- - 路由缓存控制
114
-
115
- ### 3. 数据管理
116
- - 通用 CRUD 操作封装
117
- - 表单验证
118
- - 数据导入导出
119
- - 文件上传下载
120
-
121
- ### 4. 系统管理
122
- - 用户管理
123
- - 角色管理
124
- - 菜单管理
125
- - 字典管理
126
- - 系统监控
127
- - 日志管理
128
-
129
- ### 5. 数据可视化
130
- - 基于 ECharts 的图表展示
131
- - 统计分析页面
132
- - 数据仪表盘
133
-
134
- ## 快速开始
188
+ ### 🔐 1. 用户认证与权限管理
135
189
 
136
- ### 环境要求
137
- - Node.js >= 16.0.0 (推荐 LTS 版本)
138
- - npm >= 7.0.0
190
+ - **基于 Token 的认证** - JWT Token 实现无状态认证
191
+ - **动态权限控制** - 根据用户角色动态分配权限
192
+ - **角色管理** - 支持多角色配置和权限分配
193
+ - **权限指令** - 自定义 `v-permission` 指令控制按钮级权限
194
+ - **路由守卫** - 全局路由守卫实现访问控制
139
195
 
140
- ### 方式一:使用脚手架(推荐)
196
+ ### 🛣️ 2. 动态路由系统
141
197
 
142
- ZAnt Admin 脚手架是一个基于 Vue 3.5 + Vite + Ant Design Vue 的前端管理系统快速生成工具。通过简单的命令行操作,您可以快速创建功能完整的管理系统项目。
198
+ - **后端配置路由** - 基于后端返回的菜单配置动态生成路由
199
+ - **路由懒加载** - 按需加载页面组件,优化首屏性能
200
+ - **多级菜单支持** - 支持无限层级菜单嵌套
201
+ - **路由缓存** - 支持页面缓存配置,提升切换性能
202
+ - **面包屑导航** - 自动生成面包屑导航
143
203
 
144
- #### 安装脚手架
204
+ ### 📊 3. 数据管理
145
205
 
146
- ```bash
147
- # 全局安装脚手架
148
- npm install -g zant-admin
206
+ - **通用 CRUD 封装** - [useFormCRUD](src/utils/useFormCRUD.js) 工具函数简化增删改查
207
+ - **表单验证** - 基于 Ant Design Vue 的表单验证机制
208
+ - **数据导入导出** - 支持 Excel 文件导入导出
209
+ - **文件上传下载** - 封装文件上传下载功能
210
+ - **分页查询** - 统一分页查询处理
149
211
 
150
- # 或者使用 npx 直接运行
151
- npx zant-admin create my-project
152
- ```
212
+ ### ⚙️ 4. 系统管理
153
213
 
154
- #### 创建新项目
214
+ | 模块 | 功能描述 |
215
+ |------|----------|
216
+ | **用户管理** | 用户增删改查、状态管理、密码重置 |
217
+ | **角色管理** | 角色配置、权限分配、角色关联用户 |
218
+ | **菜单管理** | 菜单配置、权限标识、路由配置 |
219
+ | **字典管理** | 数据字典维护、字典项管理 |
220
+ | **部门管理** | 组织架构管理、部门层级维护 |
221
+ | **职位管理** | 职位信息维护、职位关联员工 |
222
+ | **员工管理** | 员工信息管理、员工状态维护 |
223
+ | **系统监控** | 服务监控、在线用户、数据监控 |
224
+ | **日志管理** | 操作日志、登录日志、错误日志、定时任务日志 |
155
225
 
156
- ##### 交互式创建(推荐)
157
- ```bash
158
- zant-admin create my-project --interactive
159
- ```
226
+ ### 📈 5. 数据可视化
160
227
 
161
- 系统将引导您完成以下配置:
162
- - 项目描述
163
- - 作者名称
164
- - 项目模板选择
165
- - 功能特性选择
166
- - 是否跳过依赖安装
228
+ - **ECharts 图表** - 集成 ECharts 6.x,支持多种图表类型
229
+ - **统计分析页面** - 提供数据统计和分析视图
230
+ - **数据仪表盘** - 可视化数据展示面板
231
+ - **实时监控** - 服务状态实时监控展示
167
232
 
168
- ##### 命令行参数创建
169
- ```bash
170
- # 基本创建
171
- zant-admin create my-project
172
-
173
- # 指定模板和描述
174
- zant-admin create my-project --template basic --description "基础管理系统"
175
-
176
- # 跳过依赖安装
177
- zant-admin create my-project --skip-install
178
-
179
- # 禁用交互式模式
180
- zant-admin create my-project --no-interactive
181
- ```
182
-
183
- #### 脚手架命令
233
+ ## 快速开始
184
234
 
185
- ##### create 命令
186
- 创建一个新的 ZAnt Admin 项目。
235
+ ### 环境要求
187
236
 
188
- **参数:**
189
- - `<project-name>`: 项目名称(必需)
237
+ 在开始之前,请确保您的环境满足以下要求:
190
238
 
191
- **选项:**
192
- - `-t, --template <template>`: 项目模板 (default: "default")
193
- - `-d, --description <description>`: 项目描述
194
- - `-a, --author <author>`: 作者名称
195
- - `--skip-install`: 跳过依赖安装
196
- - `--no-interactive`: 禁用交互式模式
239
+ | 环境 | 版本要求 | 说明 |
240
+ |------|----------|------|
241
+ | Node.js | >= 16.0.0 | 推荐使用 LTS 版本 |
242
+ | npm | >= 7.0.0 | 或 yarn、pnpm |
243
+ | 浏览器 | 现代浏览器 | Chrome、Firefox、Edge、Safari 最新版 |
197
244
 
198
- ##### list-templates 命令
199
- 显示可用的项目模板。
245
+ ### 安装 CLI 脚手架(推荐)
200
246
 
201
247
  ```bash
202
- zant-admin list-templates
203
- ```
204
-
205
- ##### 查看帮助
206
- ```bash
207
- zant-admin --help
208
- ```
248
+ # 全局安装脚手架
249
+ npm install -g zant-admin
209
250
 
210
- ### 方式二:手动安装
251
+ # 创建新项目
252
+ zant-admin create my-project
211
253
 
212
- #### 项目模板
254
+ # 进入项目目录
255
+ cd my-project
213
256
 
214
- ##### 默认模板 (default)
215
- - 包含完整的管理系统功能
216
- - 预设了常用的页面和组件
217
- - 推荐用于大多数项目
257
+ # 启动开发服务器
258
+ npm run dev
259
+ ```
218
260
 
219
- ##### 基础模板 (basic)
220
- - 仅包含核心功能
221
- - 适合需要高度自定义的项目
222
- - 包含登录、首页、控制台等基础页面
261
+ 更多脚手架使用说明请参考 [CLI 脚手架工具](#cli-脚手架工具) 章节。
223
262
 
224
- ##### 完整模板 (full)
225
- - 包含所有示例页面和高级功能
226
- - 适合学习和参考
227
- - 包含用户管理、权限管理等完整示例
263
+ ### CLI 脚手架工具
228
264
 
229
- #### 功能特性
265
+ ZAntAdmin 提供了功能强大的 CLI 脚手架工具,帮助您快速创建项目。
230
266
 
231
- 在交互式模式下,您可以选择以下功能特性:
267
+ #### 全局安装
232
268
 
233
- ##### 用户管理模块
234
- - 用户列表页面
235
- - 用户增删改查功能
236
- - 用户状态管理
269
+ ```bash
270
+ npm install -g zant-admin
271
+ ```
237
272
 
238
- ##### 权限管理模块
239
- - 角色管理
240
- - 权限配置
241
- - 访问控制
273
+ #### 可用命令
242
274
 
243
- ##### 数据可视化图表
244
- - ECharts 集成
245
- - 数据统计图表
246
- - 仪表盘展示
275
+ | 命令 | 说明 | 示例 |
276
+ |------|------|------|
277
+ | `create <project-name>` | 创建新项目 | `zant-admin create my-project` |
278
+ | `list-templates` | 查看可用模板 | `zant-admin list-templates` |
279
+ | `--help` | 查看帮助信息 | `zant-admin --help` |
280
+ | `--version` | 查看版本号 | `zant-admin --version` |
247
281
 
248
- ##### 文件上传功能
249
- - 图片上传
250
- - 文件管理
251
- - 上传进度显示
282
+ #### 创建项目选项
252
283
 
253
- ##### 国际化支持
254
- - 多语言切换
255
- - 中英文支持
256
- - 语言包管理
284
+ ```bash
285
+ zant-admin create <project-name> [options]
286
+
287
+ Options:
288
+ -t, --template <template> 选择项目模板 (default: "default")
289
+ -d, --description <desc> 项目描述
290
+ -a, --author <author> 作者名称
291
+ --skip-install 跳过依赖安装
292
+ --no-interactive 禁用交互式模式
293
+ ```
257
294
 
258
- #### 项目结构
295
+ #### 项目模板
259
296
 
260
- 生成的项目具有以下结构:
297
+ | 模板名称 | 说明 |
298
+ |----------|------|
299
+ | `default` | 默认模板,包含完整的管理系统功能 |
300
+ | `basic` | 基础模板,仅包含核心功能,适合高度自定义 |
301
+ | `full` | 完整模板,包含所有示例页面和高级功能 |
261
302
 
262
- ```
263
- my-project/
264
- ├── public/ # 静态资源
265
- ├── src/
266
- │ ├── api/ # 接口请求
267
- │ ├── assets/ # 静态资源
268
- │ ├── components/ # 公共组件
269
- │ ├── config/ # 配置文件
270
- │ ├── locales/ # 国际化文件(如果选择)
271
- │ ├── router/ # 路由配置
272
- │ ├── stores/ # 状态管理
273
- │ ├── utils/ # 工具函数
274
- │ ├── views/ # 页面视图
275
- │ ├── App.vue # 根组件
276
- │ └── main.js # 入口文件
277
- ├── package.json # 项目配置
278
- ├── vite.config.js # Vite 配置
279
- └── README.md # 项目说明
280
- ```
303
+ #### 交互式创建示例
281
304
 
282
- #### 安装依赖
283
305
  ```bash
284
- npm install
285
- ```
306
+ $ zant-admin create my-project --interactive
307
+
308
+ ? 请输入项目描述: 我的管理系统
309
+ ? 请输入作者名称: zc
310
+ ? 请选择项目模板: default
311
+ ? 请选择功能特性: (Press <space> to select)
312
+ ❯◉ 用户管理模块
313
+ ◉ 权限管理模块
314
+ ◉ 数据可视化图表
315
+ ◯ 文件上传功能
316
+ ◯ 国际化支持
317
+ ? 是否跳过依赖安装? (y/N) N
318
+
319
+ ✔ 项目创建成功!
320
+ ✔ 依赖安装完成!
286
321
 
287
- #### 启动开发服务器
288
- ```bash
322
+ cd my-project
289
323
  npm run dev
290
324
  ```
291
325
 
292
- #### 构建生产版本
293
- ```bash
294
- npm run build
295
- ```
326
+ ### 手动克隆项目
296
327
 
297
- #### 预览生产构建
298
328
  ```bash
299
- npm run preview
300
- ```
301
-
302
- # 代码检查与修复
303
- npm run lint
329
+ # 克隆项目
330
+ git clone https://gitee.com/your-username/zant-admin.git
304
331
 
305
- # 代码格式化
306
- npm run format
332
+ # 进入项目目录
333
+ cd zant-admin
307
334
 
308
- ### 开发规范
309
-
310
- #### 开发指南
311
-
312
- ##### 启动开发服务器
335
+ # 安装依赖
336
+ npm install
313
337
 
314
- ```bash
315
- cd my-project
316
- npm install # 如果跳过了依赖安装
338
+ # 启动开发服务器
317
339
  npm run dev
318
340
  ```
319
341
 
320
- ##### 构建生产版本
342
+ ### 常用命令
321
343
 
322
344
  ```bash
345
+ # 启动开发服务器(默认端口 8080)
346
+ npm run dev
347
+
348
+ # 构建生产版本(输出到 dist 目录)
323
349
  npm run build
324
- ```
325
350
 
326
- ##### 代码检查
351
+ # 预览生产构建
352
+ npm run preview
327
353
 
328
- ```bash
354
+ # 代码检查并自动修复
329
355
  npm run lint
330
- ```
331
356
 
332
- ##### 代码格式化
333
-
334
- ```bash
357
+ # 代码格式化
335
358
  npm run format
336
359
  ```
337
360
 
338
- #### 技术栈
339
-
340
- - **Vue 3**: 渐进式 JavaScript 框架
341
- - **Vite**: 下一代前端构建工具
342
- - **Ant Design Vue**: 企业级 UI 设计语言
343
- - **Pinia**: Vue 状态管理
344
- - **Vue Router**: Vue 官方路由
345
- - **ESLint + Prettier**: 代码规范和格式化
346
-
347
- #### 常见问题
348
-
349
- ##### Q: 创建项目时出现权限错误?
350
- A: 请确保您有足够的权限在目标目录创建文件。
361
+ ### 环境配置
351
362
 
352
- ##### Q: 依赖安装失败?
353
- A: 可以尝试使用 `--skip-install` 跳过安装,然后手动运行 `npm install`。
363
+ 项目支持多环境配置,通过 `.env` 文件管理不同环境的变量:
354
364
 
355
- ##### Q: 如何自定义模板?
356
- A: 您可以修改 `templates/` 目录下的模板文件来自定义生成内容。
365
+ | 文件 | 说明 |
366
+ |------|------|
367
+ | `.env.development` | 开发环境配置 |
368
+ | `.env.test` | 测试环境配置 |
369
+ | `.env.production` | 生产环境配置 |
357
370
 
358
- ##### Q: 支持 TypeScript 吗?
359
- A: 当前版本主要支持 JavaScript,TypeScript 支持将在后续版本中添加。
371
+ ### 开发规范
360
372
 
361
373
  #### Vue 组件规范
374
+
362
375
  1. 使用 Composition API (`<script setup>`) 语法糖
363
376
  2. 组件命名使用 PascalCase (大驼峰命名法)
364
377
  3. 组件文件扩展名统一使用 `.vue`
365
378
  4. 使用 `scoped` 样式避免全局污染
366
379
 
367
380
  #### JavaScript 规范
381
+
368
382
  1. 使用 ES6+ 语法
369
383
  2. 使用 `import/export` 模块化导入导出
370
384
  3. 变量声明优先使用 `const`,其次使用 `let`,避免使用 `var`
371
385
  4. 使用箭头函数简化代码
372
386
 
373
387
  #### CSS 规范
388
+
374
389
  1. CSS 类名使用 kebab-case (短横线命名法)
375
390
  2. 组件样式使用 `scoped` 避免全局污染
376
391
 
377
392
  #### 代码提交规范
378
- 1. 遵循 conventional commit 规范
393
+
394
+ 1. 遵循 [Conventional Commits](https://www.conventionalcommits.org/) 规范
379
395
  2. 提交前确保通过 ESLint 检查
380
396
 
397
+ ```bash
398
+ # 示例
399
+ feat: 添加用户管理功能
400
+ fix: 修复登录页面样式问题
401
+ docs: 更新 README 文档
402
+ style: 格式化代码
403
+ refactor: 重构权限控制逻辑
404
+ ```
405
+
381
406
  ## 项目特色
382
407
 
383
- ### 1. 模块化设计
384
- 项目采用高度模块化的设计,各功能模块相互独立,便于维护和扩展。
408
+ ### 🧩 1. 模块化设计
409
+
410
+ 项目采用高度模块化的设计,各功能模块相互独立,便于维护和扩展:
411
+ - 清晰的目录结构,职责分离
412
+ - 组件化开发,提高复用性
413
+ - 模块间低耦合,易于扩展
414
+
415
+ ### 🧰 2. 通用组件封装
385
416
 
386
- ### 2. 通用组件封装
387
- 提供了丰富的通用组件,如表单表格、图标选择器等,提高开发效率。
417
+ 提供了丰富的通用业务组件,提高开发效率:
388
418
 
389
- ### 3. 工具函数库
390
- 封装了常用的工具函数,如区域工具、表单 CRUD 操作等,简化业务逻辑开发。
419
+ | 组件 | 路径 | 说明 |
420
+ |------|------|------|
421
+ | **FormTable** | [src/components/FormTable.vue](src/components/FormTable.vue) | 通用表格表单组件,支持搜索、分页、操作 |
422
+ | **IconPicker** | [src/components/IconPicker.vue](src/components/IconPicker.vue) | 图标选择器组件,集成 Ant Design 图标 |
423
+ | **MainPage** | [src/components/MainPage.vue](src/components/MainPage.vue) | 主页面布局组件,统一页面结构 |
424
+ | **DepartmentEdit** | [src/components/edit/...](src/components/edit/organizationalStructure/DepartmentEdit.vue) | 部门编辑弹窗组件 |
425
+ | **SysRoleEdit** | [src/components/edit/...](src/components/edit/SysRoleEdit.vue) | 角色编辑弹窗组件 |
391
426
 
392
- ### 4. 响应式设计
393
- 基于 Ant Design Vue 的响应式设计,适配不同屏幕尺寸的设备。
427
+ ### 🛠️ 3. 工具函数库
394
428
 
395
- ### 5. 国际化支持
396
- 预留了国际化接口,便于后续多语言扩展。
429
+ 封装了常用的工具函数,简化业务逻辑开发:
430
+
431
+ | 工具 | 路径 | 说明 |
432
+ |------|------|------|
433
+ | **useFormCRUD** | [src/utils/useFormCRUD.js](src/utils/useFormCRUD.js) | 表单增删改查操作封装 |
434
+ | **regionUtils** | [src/utils/regionUtils.js](src/utils/regionUtils.js) | 省市区数据工具函数 |
435
+ | **dictTemplate** | [src/utils/dictTemplate.js](src/utils/dictTemplate.js) | 字典数据模板工具 |
436
+ | **baseEcharts** | [src/utils/baseEcharts.js](src/utils/baseEcharts.js) | ECharts 基础配置 |
437
+
438
+ ### 📱 4. 响应式设计
439
+
440
+ 基于 Ant Design Vue 的响应式设计,适配不同屏幕尺寸的设备:
441
+ - 自适应布局,支持桌面、平板、手机
442
+ - 侧边栏可折叠,优化小屏体验
443
+ - 表格、表单的响应式适配
444
+
445
+ ### 🌍 5. 国际化支持
446
+
447
+ 预留了国际化接口,便于后续多语言扩展:
448
+ - 基于 Vue I18n 的国际化方案
449
+ - 语言包结构清晰,易于维护
450
+ - 支持动态切换语言
451
+
452
+ ### 🚀 6. 性能优化
453
+
454
+ - **路由懒加载** - 按需加载页面组件
455
+ - **组件按需引入** - 减少打包体积
456
+ - **Pinia 持久化** - 状态数据本地存储
457
+ - **Vite 构建优化** - 快速的开发和构建体验
458
+
459
+ ## API 接口
460
+
461
+ 项目采用模块化方式组织 API 接口,位于 `src/api/methods/` 目录下:
462
+
463
+ ### 接口模块
464
+
465
+ | 模块 | 文件 | 说明 |
466
+ |------|------|------|
467
+ | **登录认证** | `login.js` | 登录、登出、获取用户信息 |
468
+ | **账户管理** | `sysAccount.js` | 账户增删改查、密码管理 |
469
+ | **角色管理** | `sysRole.js` | 角色增删改查、权限分配 |
470
+ | **菜单管理** | `sysMenu.js` | 菜单增删改查、路由配置 |
471
+ | **字典管理** | `sysDict.js` / `sysDictItem.js` | 字典类型和字典项管理 |
472
+ | **部门管理** | `department.js` | 部门组织架构管理 |
473
+ | **职位管理** | `position.js` | 职位信息管理 |
474
+ | **员工管理** | `employee.js` | 员工信息管理 |
475
+ | **日志管理** | `logOperation.js` / `logError.js` / `logLogin.js` | 操作日志、错误日志、登录日志 |
476
+ | **定时任务** | `quartz.js` | 定时任务管理 |
477
+ | **区域数据** | `region.js` | 省市区数据获取 |
478
+
479
+ ### 请求封装
480
+
481
+ 请求核心配置位于 [src/api/request.js](src/api/request.js),基于 Alova 实现:
482
+
483
+ ```javascript
484
+ // 示例:使用封装好的请求方法
485
+ import { getUserList, addUser, updateUser, deleteUser } from '@/api/methods/sysUser.js'
486
+
487
+ // 获取用户列表
488
+ const { data } = await getUserList({ page: 1, size: 10 })
489
+
490
+ // 添加用户
491
+ await addUser({ username: 'admin', nickname: '管理员' })
492
+ ```
493
+
494
+ ## 浏览器支持
495
+
496
+ | 浏览器 | 版本要求 |
497
+ |--------|----------|
498
+ | Chrome | >= 80 |
499
+ | Firefox | >= 75 |
500
+ | Safari | >= 13 |
501
+ | Edge | >= 80 |
502
+
503
+ > 不支持 IE 浏览器
397
504
 
398
505
  ## 部署说明
399
506
 
400
- ### 环境配置
401
- 项目支持多环境配置,通过 `.env` 文件管理不同环境的变量:
402
- - `.env.development`: 开发环境
403
- - `.env.test`: 测试环境
404
- - `.env.production`: 生产环境
507
+ ### 构建生产版本
508
+
509
+ ```bash
510
+ # 执行构建命令
511
+ npm run build
512
+
513
+ # 构建输出位于 dist/ 目录
514
+ ```
515
+
516
+ ### 部署方式
517
+
518
+ #### 方式一:静态服务器部署
519
+
520
+ 将 `dist` 目录下的文件部署到任意静态 Web 服务器:
521
+
522
+ ```bash
523
+ # 使用 nginx 示例
524
+ server {
525
+ listen 80;
526
+ server_name your-domain.com;
527
+ root /path/to/dist;
528
+ index index.html;
529
+
530
+ location / {
531
+ try_files $uri $uri/ /index.html;
532
+ }
533
+
534
+ location /api {
535
+ proxy_pass http://your-backend-server;
536
+ }
537
+ }
538
+ ```
539
+
540
+ #### 方式二:Docker 部署
405
541
 
406
- ### 构建部署
407
- 1. 执行构建命令:`npm run build`
408
- 2. 将 `dist` 目录下的文件部署到 Web 服务器
409
- 3. 配置服务器支持 SPA 路由模式
542
+ ```dockerfile
543
+ FROM nginx:alpine
544
+ COPY dist/ /usr/share/nginx/html/
545
+ COPY nginx.conf /etc/nginx/conf.d/default.conf
546
+ EXPOSE 80
547
+ ```
548
+
549
+ ### 环境变量配置
550
+
551
+ | 变量名 | 说明 | 默认值 |
552
+ |--------|------|--------|
553
+ | `VITE_APP_BASE_API` | API 基础路径 | `/api` |
554
+ | `VITE_APP_TITLE` | 应用标题 | `ZAntAdmin` |
555
+ | `VITE_APP_PORT` | 开发服务器端口 | `8080` |
410
556
 
411
557
 
412
558
  ## 贡献指南
413
559
 
414
- 1. 提出问题或建议
415
- - 提交 Issue 描述问题或建议
416
- - 提供相关的代码片段或截图
560
+ 欢迎提交 Issue 和 Pull Request 来帮助改进这个项目!
561
+
562
+ ### 提交 Issue
563
+
564
+ - 描述清楚问题的复现步骤
565
+ - 提供相关的代码片段或错误截图
566
+ - 标注使用的版本号和环境信息
417
567
 
418
- 2. 参与开发
419
- - Fork 本项目
420
- - 创建特性分支 (`git checkout -b feature/AmazingFeature`)
421
- - 提交更改 (`git commit -m 'Add some AmazingFeature'`)
422
- - 推送到分支 (`git push origin feature/AmazingFeature`)
423
- - 提交 Pull Request
568
+ ### 提交 Pull Request
569
+
570
+ 1. Fork 本项目到您的仓库
571
+ 2. 创建特性分支:`git checkout -b feature/AmazingFeature`
572
+ 3. 提交更改:`git commit -m 'feat: Add some AmazingFeature'`
573
+ 4. 推送到分支:`git push origin feature/AmazingFeature`
574
+ 5. 提交 Pull Request 到主仓库
575
+
576
+ ### 开发注意事项
577
+
578
+ - 确保代码通过 ESLint 检查:`npm run lint`
579
+ - 保持代码风格一致
580
+ - 提交信息遵循 Conventional Commits 规范
581
+ - 更新相关文档(如有必要)
424
582
 
425
583
  ## 许可证
426
584
 
427
- 本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。
585
+ 本项目采用 [MIT](LICENSE) 许可证开源。
586
+
587
+ ```
588
+ MIT License
589
+
590
+ Copyright (c) 2024 zc
591
+
592
+ Permission is hereby granted, free of charge, to any person obtaining a copy
593
+ of this software and associated documentation files (the "Software"), to deal
594
+ in the Software without restriction, including without limitation the rights
595
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
596
+ copies of the Software, and to permit persons to whom the Software is
597
+ furnished to do so, subject to the following conditions:
598
+
599
+ The above copyright notice and this permission notice shall be included in all
600
+ copies or substantial portions of the Software.
601
+
602
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
603
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
604
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
605
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
606
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
607
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
608
+ SOFTWARE.
609
+ ```
610
+
611
+ ---
612
+
613
+ <div align="center">
614
+
615
+ **如果觉得这个项目对您有帮助,请给个 Star ⭐**
616
+
617
+ [返回顶部](#目录)
618
+
619
+ </div>