zant-admin 1.0.0

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 (82) hide show
  1. package/README.en.md +36 -0
  2. package/README.md +248 -0
  3. package/SCAFFOLD_README.md +215 -0
  4. package/bin/cli.js +99 -0
  5. package/bin/generator.js +503 -0
  6. package/bin/prompts.js +159 -0
  7. package/bin/utils.js +134 -0
  8. package/package.json +74 -0
  9. package/public/logo.png +0 -0
  10. package/src/App.vue +16 -0
  11. package/src/api/methods/logError.js +8 -0
  12. package/src/api/methods/logOperation.js +8 -0
  13. package/src/api/methods/login.js +6 -0
  14. package/src/api/methods/quartz.js +36 -0
  15. package/src/api/methods/region.js +16 -0
  16. package/src/api/methods/sysAccount.js +30 -0
  17. package/src/api/methods/sysDict.js +29 -0
  18. package/src/api/methods/sysDictItem.js +26 -0
  19. package/src/api/methods/sysMenu.js +42 -0
  20. package/src/api/methods/sysRole.js +35 -0
  21. package/src/api/methods/sysUser.js +25 -0
  22. package/src/api/methods/system.js +16 -0
  23. package/src/api/request.js +225 -0
  24. package/src/assets/css/style.css +70 -0
  25. package/src/assets/css/zcui.css +340 -0
  26. package/src/assets/imgs/loginbackground.svg +69 -0
  27. package/src/assets/imgs/logo.png +0 -0
  28. package/src/assets/imgs/md/1.png +0 -0
  29. package/src/assets/imgs/md/10.png +0 -0
  30. package/src/assets/imgs/md/11.png +0 -0
  31. package/src/assets/imgs/md/2.png +0 -0
  32. package/src/assets/imgs/md/3.png +0 -0
  33. package/src/assets/imgs/md/4.png +0 -0
  34. package/src/assets/imgs/md/5.png +0 -0
  35. package/src/assets/imgs/md/6.png +0 -0
  36. package/src/assets/imgs/md/7.png +0 -0
  37. package/src/assets/imgs/md/8.png +0 -0
  38. package/src/assets/imgs/md/9.png +0 -0
  39. package/src/components/FormTable.vue +875 -0
  40. package/src/components/IconPicker.vue +344 -0
  41. package/src/components/MainPage.vue +957 -0
  42. package/src/components/details/logErrorDetails.vue +58 -0
  43. package/src/components/details/logOperationDetails.vue +76 -0
  44. package/src/components/edit/QuartzEdit.vue +221 -0
  45. package/src/components/edit/SysAccountEdit.vue +178 -0
  46. package/src/components/edit/SysDictEdit.vue +114 -0
  47. package/src/components/edit/SysDictItemEdit.vue +134 -0
  48. package/src/components/edit/SysRoleEdit.vue +109 -0
  49. package/src/components/edit/sysMenuEdit.vue +305 -0
  50. package/src/config/index.js +74 -0
  51. package/src/directives/permission.js +45 -0
  52. package/src/main.js +38 -0
  53. package/src/router/index.js +270 -0
  54. package/src/stores/config.js +37 -0
  55. package/src/stores/dict.js +33 -0
  56. package/src/stores/menu.js +57 -0
  57. package/src/stores/user.js +21 -0
  58. package/src/utils/baseEcharts.js +661 -0
  59. package/src/utils/dictTemplate.js +26 -0
  60. package/src/utils/regionUtils.js +169 -0
  61. package/src/utils/useFormCRUD.js +60 -0
  62. package/src/views/baiscstatis/center.vue +463 -0
  63. package/src/views/baiscstatis/iframePage.vue +31 -0
  64. package/src/views/baiscstatis/notFound.vue +192 -0
  65. package/src/views/console.vue +771 -0
  66. package/src/views/demo/importexport.vue +123 -0
  67. package/src/views/demo/region.vue +240 -0
  68. package/src/views/demo/statistics.vue +195 -0
  69. package/src/views/home.vue +7 -0
  70. package/src/views/login.vue +272 -0
  71. package/src/views/operations/log/logError.vue +78 -0
  72. package/src/views/operations/log/logLogin.vue +66 -0
  73. package/src/views/operations/log/logOperation.vue +103 -0
  74. package/src/views/operations/log/logQuartz.vue +57 -0
  75. package/src/views/operations/quartz.vue +181 -0
  76. package/src/views/operations/serviceMonitoring.vue +134 -0
  77. package/src/views/system/sysAccount.vue +123 -0
  78. package/src/views/system/sysDict.vue +156 -0
  79. package/src/views/system/sysDictItem.vue +118 -0
  80. package/src/views/system/sysMenu.vue +223 -0
  81. package/src/views/system/sysRole.vue +184 -0
  82. package/templates/env.production +2 -0
package/bin/utils.js ADDED
@@ -0,0 +1,134 @@
1
+ /**
2
+ * 脚手架工具函数
3
+ */
4
+
5
+ import { execSync } from 'child_process';
6
+ import fs from 'fs';
7
+ import path from 'path';
8
+ import { fileURLToPath } from 'url';
9
+
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = path.dirname(__filename);
12
+
13
+ /**
14
+ * 检查 Node.js 版本
15
+ */
16
+ export function checkNodeVersion() {
17
+ const currentNodeVersion = process.versions.node;
18
+ const semver = currentNodeVersion.split('.');
19
+ const major = parseInt(semver[0], 10);
20
+
21
+ if (major < 16) {
22
+ console.error(`❌ 需要 Node.js 16.0.0 或更高版本,当前版本: ${currentNodeVersion}`);
23
+ process.exit(1);
24
+ }
25
+ }
26
+
27
+ /**
28
+ * 检查目录是否存在
29
+ */
30
+ export function checkDirectoryExists(dirPath) {
31
+ return fs.existsSync(dirPath);
32
+ }
33
+
34
+ /**
35
+ * 创建目录
36
+ */
37
+ export function createDirectory(dirPath) {
38
+ if (!checkDirectoryExists(dirPath)) {
39
+ fs.mkdirSync(dirPath, { recursive: true });
40
+ }
41
+ }
42
+
43
+ /**
44
+ * 复制文件
45
+ */
46
+ export function copyFile(sourcePath, targetPath) {
47
+ fs.copyFileSync(sourcePath, targetPath);
48
+ }
49
+
50
+ /**
51
+ * 复制目录
52
+ */
53
+ export function copyDirectory(sourceDir, targetDir) {
54
+ createDirectory(targetDir);
55
+
56
+ const files = fs.readdirSync(sourceDir);
57
+
58
+ files.forEach(file => {
59
+ const sourcePath = path.join(sourceDir, file);
60
+ const targetPath = path.join(targetDir, file);
61
+
62
+ const stat = fs.statSync(sourcePath);
63
+
64
+ if (stat.isDirectory()) {
65
+ copyDirectory(sourcePath, targetPath);
66
+ } else {
67
+ copyFile(sourcePath, targetPath);
68
+ }
69
+ });
70
+ }
71
+
72
+ /**
73
+ * 读取模板文件
74
+ */
75
+ export function readTemplateFile(templatePath) {
76
+ const fullPath = path.join(__dirname, '../templates', templatePath);
77
+ return fs.readFileSync(fullPath, 'utf8');
78
+ }
79
+
80
+ /**
81
+ * 写入文件
82
+ */
83
+ export function writeFile(filePath, content) {
84
+ const dir = path.dirname(filePath);
85
+ createDirectory(dir);
86
+ fs.writeFileSync(filePath, content);
87
+ }
88
+
89
+ /**
90
+ * 渲染模板
91
+ */
92
+ export function renderTemplate(template, data) {
93
+ return template.replace(/\{\{\s*(\w+)\s*\}\}/g, (match, key) => {
94
+ return data[key] || match;
95
+ });
96
+ }
97
+
98
+ /**
99
+ * 执行命令
100
+ */
101
+ export function executeCommand(command, cwd) {
102
+ try {
103
+ execSync(command, {
104
+ cwd,
105
+ stdio: 'inherit',
106
+ encoding: 'utf8'
107
+ });
108
+ return true;
109
+ } catch (error) {
110
+ return false;
111
+ }
112
+ }
113
+
114
+ /**
115
+ * 获取项目根目录
116
+ */
117
+ export function getProjectRoot() {
118
+ return path.join(__dirname, '..');
119
+ }
120
+
121
+ /**
122
+ * 验证项目名称
123
+ */
124
+ export function validateProjectName(name) {
125
+ if (!name) {
126
+ throw new Error('项目名称不能为空');
127
+ }
128
+
129
+ if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(name)) {
130
+ throw new Error('项目名称只能包含字母、数字、下划线和连字符,且必须以字母开头');
131
+ }
132
+
133
+ return true;
134
+ }
package/package.json ADDED
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "zant-admin",
3
+ "version": "1.0.0",
4
+ "description": "基于 Vue 3 + Vite + Ant Design Vue 的前端管理系统脚手架",
5
+ "main": "bin/cli.js",
6
+ "bin": {
7
+ "zant-admin": "./bin/cli.js"
8
+ },
9
+ "type": "module",
10
+ "scripts": {
11
+ "dev": "vite",
12
+ "build": "vite build",
13
+ "preview": "vite preview",
14
+ "lint": "eslint . --fix",
15
+ "format": "prettier --write src/"
16
+ },
17
+ "dependencies": {
18
+ "@ant-design/icons-vue": "^7.0.1",
19
+ "alova": "^3.2.6",
20
+ "ant-design-vue": "^4.2.6",
21
+ "commander": "^12.1.0",
22
+ "dayjs": "^1.11.13",
23
+ "echarts": "^6.0.0",
24
+ "file-saver": "^2.0.5",
25
+ "pinia": "^2.2.6",
26
+ "pinia-plugin-persist": "^1.0.0",
27
+ "vue": "^3.5.13",
28
+ "vue-router": "^4.4.5"
29
+ },
30
+ "devDependencies": {
31
+ "@eslint/js": "^9.12.0",
32
+ "@vitejs/plugin-vue": "^6.0.1",
33
+ "@vitejs/plugin-vue-jsx": "^5.0.1",
34
+ "@vue/eslint-config-prettier": "^10.0.0",
35
+ "eslint": "^9.12.0",
36
+ "eslint-plugin-vue": "^9.29.0",
37
+ "prettier": "^3.3.3",
38
+ "vite": "^7.0.6",
39
+ "vite-plugin-clean": "^2.0.1"
40
+ },
41
+ "keywords": [
42
+ "vue3",
43
+ "vite",
44
+ "ant-design-vue",
45
+ "admin",
46
+ "management-system",
47
+ "scaffold",
48
+ "脚手架"
49
+ ],
50
+ "author": "zc",
51
+ "license": "MIT",
52
+ "engines": {
53
+ "node": ">=16.0.0"
54
+ },
55
+ "repository": {
56
+ "type": "git",
57
+ "url": "https://gitee.com/your-username/zant-admin.git"
58
+ },
59
+ "bugs": {
60
+ "url": "https://gitee.com/your-username/zant-admin/issues"
61
+ },
62
+ "homepage": "https://gitee.com/your-username/zant-admin#readme",
63
+ "files": [
64
+ "bin/",
65
+ "templates/",
66
+ "src/",
67
+ "public/",
68
+ "README.md",
69
+ "SCAFFOLD_README.md"
70
+ ],
71
+ "publishConfig": {
72
+ "access": "public"
73
+ }
74
+ }
Binary file
package/src/App.vue ADDED
@@ -0,0 +1,16 @@
1
+ <template>
2
+ <a-config-provider :locale="localeStore.locale">
3
+ <section id="app">
4
+ <router-view />
5
+ </section>
6
+ </a-config-provider>
7
+ </template>
8
+ <style></style>
9
+
10
+ <script setup>
11
+ import { configStore } from './stores/config'
12
+ import { dictStore } from './stores/dict'
13
+ const localeStore = configStore()
14
+ const dict = dictStore()
15
+ dict.initDictList()
16
+ </script>
@@ -0,0 +1,8 @@
1
+ import { get } from '@/api/request'
2
+ const logError = {
3
+ //根据id获取信息
4
+ detail(params) {
5
+ return get('logError/detail', params)
6
+ },
7
+ }
8
+ export default logError
@@ -0,0 +1,8 @@
1
+ import { get } from '@/api/request'
2
+ const logOperation = {
3
+ //根据id获取信息
4
+ detail(params) {
5
+ return get('logOperation/detail', params)
6
+ },
7
+ }
8
+ export default logOperation
@@ -0,0 +1,6 @@
1
+ import { post } from '@/api/request'
2
+
3
+ // 登录
4
+ export function login(params) {
5
+ return post('sysAccount/login', params)
6
+ }
@@ -0,0 +1,36 @@
1
+ import { get, post } from '@/api/request'
2
+ const quartz = {
3
+ //根据id获取信息
4
+ get(params) {
5
+ return get('quartz/get', params)
6
+ },
7
+ //添加任务
8
+ add(params) {
9
+ return post('quartz/add', params)
10
+ },
11
+ //修改
12
+ update(params) {
13
+ return post('quartz/update', params)
14
+ },
15
+ //暂停任务
16
+ pauseTask(params) {
17
+ return get('quartz/pauseTask', params)
18
+ },
19
+ //恢复任务
20
+ resumeTask(params) {
21
+ return get('quartz/resumeTask', params)
22
+ },
23
+ //删除任务
24
+ delete(params) {
25
+ return get('quartz/delete', params)
26
+ },
27
+ //立即执行
28
+ triggerTask(params) {
29
+ return get('quartz/triggerTask', params)
30
+ },
31
+ //获取程序集和类名
32
+ getAssembly(params) {
33
+ return get('quartz/getAssembly', params)
34
+ },
35
+ }
36
+ export default quartz
@@ -0,0 +1,16 @@
1
+ import { get } from '@/api/request'
2
+ const region = {
3
+ //获取所有省份
4
+ getAllProvince() {
5
+ return get('region/getAllProvince')
6
+ },
7
+ //获取所有城市
8
+ getAllCity() {
9
+ return get('region/getAllCity')
10
+ },
11
+ //获取所有区域(区/县)
12
+ getAllAreas() {
13
+ return get('region/getAllAreas')
14
+ },
15
+ }
16
+ export default region
@@ -0,0 +1,30 @@
1
+ import { post, get } from '@/api/request'
2
+
3
+ const sysAccount = {
4
+ //根据id获取信息
5
+ get(params) {
6
+ return get('sysAccount/get', params)
7
+ },
8
+ //新增
9
+ add(params) {
10
+ return post('sysAccount/add', params, true)
11
+ },
12
+ //修改
13
+ update(params) {
14
+ return post('sysAccount/update', params, true)
15
+ },
16
+ //修改是否启用
17
+ updateIsEnabled(params) {
18
+ return get('sysAccount/updateIsEnabled', params)
19
+ },
20
+ //发送短信
21
+ sendCode(params) {
22
+ return get('sysAccount/sendCode', params)
23
+ },
24
+ //修改密码
25
+ updatePwd(params) {
26
+ return get('sysAccount/updatePwd', params)
27
+ },
28
+
29
+ }
30
+ export default sysAccount
@@ -0,0 +1,29 @@
1
+ import { post, get } from '@/api/request'
2
+
3
+ const sysDict = {
4
+ //根据id获取信息
5
+ get(params) {
6
+ return get('sysDict/get', params)
7
+ },
8
+ //保存
9
+ save(params) {
10
+ return post('sysDict/save', params)
11
+ },
12
+ //修改是否启用
13
+ updateIsEnabled(params) {
14
+ return get('sysDict/updateIsEnabled', params)
15
+ },
16
+ //新增
17
+ add(params) {
18
+ return post('sysDict/add', params)
19
+ },
20
+ //更新
21
+ update(params) {
22
+ return post('sysDict/update', params)
23
+ }, //查询字典值
24
+ getDictList() {
25
+ return get('sysDict/getDictList')
26
+ },
27
+ }
28
+ // 获取字典分页信息
29
+ export default sysDict
@@ -0,0 +1,26 @@
1
+ import { post, get } from '@/api/request'
2
+
3
+ const sysDictItem = {
4
+ //根据id获取信息
5
+ get(params) {
6
+ return get('sysDictItem/get', params,true)
7
+ },
8
+ //保存
9
+ save(params) {
10
+ return post('sysDictItem/save', params)
11
+ },
12
+ //新增
13
+ add(params) {
14
+ return post('sysDictItem/add', params,true)
15
+ },
16
+ //更新
17
+ update(params) {
18
+ return post('sysDictItem/update', params,true)
19
+ },
20
+ //修改是否启用
21
+ updateIsEnabled(params) {
22
+ return get('sysDictItem/updateIsEnabled', params)
23
+ },
24
+ }
25
+ // 获取字典分页信息
26
+ export default sysDictItem
@@ -0,0 +1,42 @@
1
+ import { get, post } from '@/api/request'
2
+
3
+ const sysMenu = {
4
+ // 获取下拉框Tree选择框数据
5
+ getTreeSelectMenu() {
6
+ return get('sysmenu/getTreeSelectMenu')
7
+ },
8
+ //获取路由菜单
9
+ getRoutesMenu() {
10
+ return get('sysmenu/getRoutesMenu')
11
+ },
12
+ //修改是否启用
13
+ updateIsEnabled(params) {
14
+ return get('sysmenu/updateIsEnabled', params)
15
+ },
16
+ //修改是否缓存
17
+ updateCache(params) {
18
+ return get('sysmenu/updateCache', params)
19
+ },
20
+ //修改是否显示在菜单
21
+ updateIsShowMenu(params) {
22
+ return get('sysmenu/updateIsShowMenu', params)
23
+ },
24
+ //根据id获取信息
25
+ get(params) {
26
+ return get('sysmenu/get', params)
27
+ },
28
+ //新增
29
+ add(params) {
30
+ return post('sysmenu/add', params)
31
+ },
32
+ //修改
33
+ update(params) {
34
+ return post('sysmenu/update', params)
35
+ },
36
+ //获取按钮权限信息
37
+ getMenuBtn(params) {
38
+ return get('sysmenu/getMenuBtn', params)
39
+ },
40
+ }
41
+ // 导出对象
42
+ export default sysMenu
@@ -0,0 +1,35 @@
1
+ import { post, get } from '@/api/request'
2
+
3
+ const sysRole = {
4
+ //根据id获取信息
5
+ get(params) {
6
+ return get('sysRole/get', params)
7
+ },
8
+ //新增
9
+ add(params) {
10
+ return post('sysRole/add', params)
11
+ },
12
+ //更新
13
+ update(params) {
14
+ return post('sysRole/update', params)
15
+ },
16
+ //修改是否启用
17
+ updateIsEnabled(params) {
18
+ return get('sysRole/updateIsEnabled', params)
19
+ },
20
+ //查询角色列表
21
+ getList() {
22
+ return get('sysRole/getList')
23
+ },
24
+
25
+ //获取角色关联菜单信息(树结构)
26
+ getRoleMenu(params) {
27
+ return get('sysRole/getRoleMenu', params)
28
+ },
29
+ //保存角色关联菜单
30
+ savePower(params) {
31
+ return post('sysRole/savePower', params)
32
+ },
33
+ }
34
+ // 获取角色分页信息
35
+ export default sysRole
@@ -0,0 +1,25 @@
1
+ import { post, get } from '@/api/request'
2
+
3
+ const sysUser = {
4
+ //根据id获取信息
5
+ get(params) {
6
+ return get('sysUser/get', params)
7
+ },
8
+ //新增
9
+ add(params) {
10
+ return post('sysUser/add', params)
11
+ },
12
+ //保存
13
+ save(params) {
14
+ return post('sysUser/save', params)
15
+ },
16
+ //修改是否启用
17
+ updateIsEnabled(params) {
18
+ return get('sysUser/updateIsEnabled', params)
19
+ },
20
+ //发送短信
21
+ sendCode(params) {
22
+ return get('sysUser/sendCode', params)
23
+ },
24
+ }
25
+ export default sysUser
@@ -0,0 +1,16 @@
1
+ import {get} from '@/api/request';
2
+ const system ={
3
+
4
+ /// 获取系统描述
5
+
6
+ getSystemDescription(){
7
+ return get('server/getSystemDescription')
8
+ },
9
+
10
+ /// 获取系统更新记录
11
+
12
+ projectUpdateRecord(){
13
+ return get('server/projectUpdateRecord')
14
+ },
15
+ }
16
+ export default system