# zeus-view **Repository Path**: rederic/zeus-view ## Basic Information - **Project Name**: zeus-view - **Description**: 代码生成器前端(vue3、ts、elementplus) - **Primary Language**: HTML/CSS - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2023-03-27 - **Last Updated**: 2026-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: Zeus生成器 ## README # 项目简介 Zeus代码生成器是一款自动代码生成工具,旨在快速生成基础的CRUD代码。 后端是基于`springboot`、`freemarker`、`mybatisplus`实现,前端采用`vue3`、`elementplus`、`electron`技术。 在此基础上也提供了一些高级功能,做到灵活配置,生成可扩展性强的代码。 客户端支持多开。同一个电脑可以打开多个客户端。可以分别登录管理员和普通用户的账号,管理员修改模板内容。普通用户生成代码。 - **[ZEUS官网](https://engini.vip/zeus)** - **[客户端在线下载](https://engini.vip/zeus/ZeusSetup.exe)** - **[后端Gitee 仓库地址](https://gitee.com/rederic/zeus-server.git)** | [前端Gitee 仓库地址](https://gitee.com/rederic/zeus-view.git) - **[后端GitHub 仓库地址](https://github.com/EricConstantine/zeus-server.git)** | [前端GitHub 仓库地址](https://github.com/EricConstantine/zeus-view.git) Tip **优势** 1. 项目结构可视化,文件树、文件图形化的模板编辑,操作模板更加直观、简洁。 2. 使用Freemarker作为模板引擎,模板中支持Freemarker所有语法,系统提供强大的内置字典。模板操作更加灵活。 3. Zeus可以作为作为mysql、oracle客户端,直接连接内网数据库。 4. 脚本管理。取代Jenkins,轻量化快速更新打包项目。网页查看项目日志等功能。 5. 方便团队开发项目,统一代码风格,规范化代码接口。 # 快速使用 1. 下载客户端 **[客户端在线下载](https://engini.cn/zeus/ZeusSetup.exe)** 2. 客户端默认有两个用户 ``` 管理员 admin/1QA@ws 普通用户 test/123456CopyErrorOK! ``` 登录管理员账号,在项目管理处,可以查看 项目,进入项目管理查看目前已有的模板。 代码生成就是根据这些模板动态根据数据库反向生成代码 3. 新建配置 登录普通用户账号 在配置管理处新建一条配置信息 具体查看6.2 **普通用户新建配置** 4. 生成代码 在取码中心 选择配置、选择表 生成代码 具体查看6.3 **普通用户生成代码** 5. 大功告成 打开配置管理 我们配置的文件路径,会看到生成的代码 账号简介 **管理员** > 团队技术leader > > 负责创建项目、组建项目人员、创建模板、管理用户、版本更新、脚本管理(更新打包)。 **普通用户** > 普通开发人员 > > (前端后端都可以)通过配置中心配置项目路径和数据库地址。在取码中心快速生成代码、注入项目中 # 框架基座 完全基于 [v3-admin](https://github.com/un-pany/v3-admin) 的 Electron 项目模板,文档也请参考 v3-admin 的文档。 > 国内环境在安装依赖和打包时,需要开启 .npmrc 文件中的镜像源配置 > node 版本要求14.17.0 ------------ # 版本记录 ## 2024年3月23日 兼容mac打包 mac打包注意事项 MAC 打包由于mac默认安装的python3.x 的版本 而 electron 要求的版本是python2.7的版本,所以需要手动安装python2.7 Exit code: ENOENT. spawn /usr/bin/python ENOENT 重新安装 python2 下载地址:https://www.python.org/ftp/python/2.7.18/python-2.7.18-macosx10.9.pkg 使用 /Library/Frameworks/Python.framework/Versions/2.7/bin/python 打开 dmg.js 文件 /node_modules/dmg-builder/out/dmg.js dmg.js文件闪找到 "/usr/bin/python" 替换为 "/Library/Frameworks/Python.framework/Versions/2.7/bin/python" npm config set electron_mirror https://npm.taobao.org/mirrors/electron/ 采用postcss-px-to-viewport进行分辨率适配 组件命名zeus(宙斯-天神之父),简称zs ## 2024年3月24日 oracle自动化配置项 修复bug 把oracle做成可配置项,这样就可以使用yarn打包,yarn打包和install不需要翻墙。如果要使用oracle,就打开 .env中的VUE_APP_ENABLE_ORACLE 修复记事本bug,优化网页库和记事本展示 修复无法链接mysql8 问题 ## 2024年3月25日 yarn打包无任何问题推荐使用yarn ## 2024年3月29日 增加共享库 增加共享库,优化记事本、共享库、网页库UI样式。修复bug ## 2024年3月30日 兼容ORACLE instantclient_11_2 可以 但是用instantclient_12_2 就不行。应该是oracledb类库导致的 如果仅使用mysql的话就用yarn打包安装依赖,非常快速 如果要使用oracle的话需要用npm install 然后使用npm打包,npm需要翻墙才行。配置cmd和node代理 ------------ # 功能说明 ## [1. 项目管理](https://engini.cn/zeus/#/zh-cn/FunctionIntroduce/first_index?id=_1-项目管理) 1. 项目在zeus中是一个基础单元。他可以是前端项目,也可以是后端项目。 2. 代码生成是基于项目来的,项目除了有本身的名称、描述、公开等属性外。还具有高级功能【数据字典】(更灵活的生成模板)。 3. 如果项目不是公开项目,就可以组建自己的开发团队,加入开发人员,只有开发人员才能看到对应的项目。 4. 项目中还包括了空间树和模板。空间树是项目的目录结构,有文件和文件夹两种形式。 5. 文件对应的就是模板,根据模板里的代码生成对应的代码。 ## [2. 项目说明](https://engini.cn/zeus/#/zh-cn/FunctionIntroduce/first_index?id=_2-项目说明) 项目是由管理员定义,可以是前端项目、后端项目等任意形式,他具有项目名称、项目描述、是否公开、创建属性的属性。如果是非公开项目,可以给项目组建人员团队,指定人员能看到此项目。 ## [3. 数据字典](https://engini.cn/zeus/#/zh-cn/FunctionIntroduce/first_index?id=_3-数据字典) 数据字典是模板的高级配置。分为内置字典和自定义字典两种 ### [1. 内置字典](https://engini.cn/zeus/#/zh-cn/FunctionIntroduce/first_index?id=_1-内置字典) 内置字典是系统中自带的字典,在模板中用户可以直接使用字典值获取对应的数据。 内置字典的数据来源是,普通用户在配置中心配置的数据库连接,然后在取码中心选择的表。(表名、描述、字段列表) 用户通过在模板中使用内置字典可以完成基本单表CRUD操作 | 一级字典 | 二级字典 | 字典释义 | 示例 | |---------------|--------------|-------------------------------------------------------------|--------------------| | ${table_name} | 空 | 表名字 | model_user | | ${tableDesc} | 空 | 表描述 | 用户表 | | ${TableName} | 空 | 表名字首字母大写驼峰 | ModelUser | | ${tableName} | 空 | 表名字首字母小写驼峰 | modelUser | | ${tablename} | 空 | 表名字首字母小写驼峰 | modeluser | | ${author} | 空 | 作者 | Eric | | ${date} | 空 | 时间 | 2025-8-14 10:10:10 | | ${FiledList} | filed_name | 字段名字 | user_name | | ${FiledList} | filedName | 字段名字首字母小写驼峰 | userName | | ${FiledList} | FILEDNAME | 不带_的全大写字段名字 | USERNAME | | ${FiledList} | FILED_NAME | 带_的全大写字段名字 | USER_NAME | | ${FiledList} | filedDesc | 字段描述 | 用户名称 | | ${FiledList} | isKey | 是否主键 | Y/N | | ${FiledList} | filedLen | 字段长度(数字) | 20 | | ${FiledList} | realType | 真实字段类型 | varchar | | ${FiledList} | javaType | 字段类型转JAVA类型 | String | | ${FiledList} | xmlType | 字段类型转XML类型 | VARCHAR | | ${FiledList} | scale | 精度(数字) | 2 | | ${FiledList} | nullable | 是否非空 | Y/N | | ${FiledList} | defaultValue | 默认值 | | | ${FiledList} | frontType | 前端类型 | | | ${FiledList} | 字段列表 | 全部字段 | | | ${UpdateFiledList} | 更新字段列表 | 同FiledList但是不带主键、create_time、create_id | | | ${keyJavaType} | 主键java | 主键的java类型(JPA、MybatisPlus会需要) | | | ${FormFiledList} | 表单列表 | 同FiledList但是不带主键create_time、update_time、create_id,update_id | | **内置字典转化规则** | 字段类型转XML类型规则 | 字段类型转JAVA类型规则 | | ---------------------- | ---------------------- | | varchar ==> VARCHAR | varchar ==> String | | char ==> VARCHAR | double ==> Double | | text ==> LONGVARCHAR | char ==> String | | tinyint ==> TINYINT | text ==> String | | bigint ==> BIGINT | int ==> Integer | | int ==> INTEGER | tinyint ==> Integer | | numeric ==> DOUBLE | bigint ==> Long | | decimal ==> FLOAT | numeric ==> Double | | date ==> DATE | decimal ==> Float | | datetime ==> TIMESTAMP | date ==> Date | | | datetime ==> TIMESTAMP | ### [2. 自定义字典](https://engini.cn/zeus/#/zh-cn/FunctionIntroduce/first_index?id=_2-自定义字典) 自定义字典分为三类 字符串、数组、属性列表。 管理员可以在项目中定义该项目的内置字典。在模板中使用内置字典。类似于声明一个插槽。用户在生成代码的时候可以去灵活给插槽赋值。动态生成自己想要的代码。 | 分类 | 功能 | | -------- | ------------------------------------------------------------ | | 字符串 | 声明字符串类型的自定义字典,主要用来给模板中传如固定字符串。比如包名 | | 数组 | 声明数组型字典,常见的主要用来控制后台的增删改查功能,或者前台的,按钮显示,增删改查功能 | | 属性列表 | 属性列表是对内置字典中的FiledList的筛选。可以用来做前端查询条件、列表数据、编辑数据动态化 | ### [3. 空间树](https://engini.cn/zeus/#/zh-cn/FunctionIntroduce/first_index?id=_3-空间树) 空间树是项目的目录结构,空间树,有文件和文件夹组成,文件是Freemarker模板。 用户通过构建自己项目空间树,动态生成具有此目录结构的代码到项目中来。 空间树的根节点就是项目的根目录。对应普通用户【配置中心】后台项目项目目录中的配置。 #### [1. 新建空间树](https://engini.cn/zeus/#/zh-cn/FunctionIntroduce/first_index?id=_1-新建空间树) 1. 选中项目根节点,右键,即可新建文件或者文件夹。 2. 然后,点击文件夹》右键》可以修改该文件夹,也可以新增该文件夹下的文件夹和文件 3. 点击文件,在右侧填充对应的模板信息 4. 填充好模板后,点击右上角提交代码按钮。即可保存模板 空间树目录要和实际项目目录保持一致 #### [2. 空间树示例](https://engini.cn/zeus/#/zh-cn/FunctionIntroduce/first_index?id=_2-空间树示例) ![image-20230315201022700](https://engini.cn/zeus/img/image-20230315201022700.png) ------ # 操作手册 ## 1. 管理员新建项目 #### [管理员可以通过新增按钮创建项目,也可以直接通过复制操作,完全拷贝一个项目](https://engini.cn/zeus/#/zh-cn/UserManualIntroduce/first_index?id=管理员可以通过新增按钮创建项目,也可以直接通过复制操作,完全拷贝一个项目) ![image-20230315175200542](https://engini.cn/zeus/img/image-20230315175200542.png) 在项目中构建自己的空间树、和模板。详情参考 `功能说明`中的空间树介绍 ## 2. 普通用户新建配置 #### [普通用户在【配置管理】菜单中,新建配置](https://engini.cn/zeus/#/zh-cn/UserManualIntroduce/second_index?id=普通用户在【配置管理】菜单中,新建配置) > 1. 选择项目 > 2. 设置项目所在的本地目录 > 3. 填写数据库连接信息 > 4. 测试数据库连接 > 5. 保存配置 ![image-20230315181202666](https://engini.cn/zeus/img/image-20230315181202666.png) ## 3. 普通用户生成代码 > 1. 用户打开【取码中心】功能 > 2. 选择我们在配置中心新建的配置 > 3. 选择根据配置信息加载的表 > 4. 点击生成代码 ![image-20230315181515748](https://engini.cn/zeus/img/image-20230315181515748.png) ## 4. 高级配置 ![image-20230315181749642](https://engini.cn/zeus/img/image-20230315181749642.png) ## 5. 模板语法 ### [主要参考已有模板,Freemarker的所有语法都支持。](https://engini.cn/zeus/#/zh-cn/UserManualIntroduce/five_index?id=主要参考已有模板,freemarker的所有语法都支持。) 这里列举下常见语法 1. 遍历数组 ``` <#list FiledList as field> private ${field.javaType} ${field.filedName}; CopyErrorOK! ``` 2. 字符串转数组 ``` <#assign function_list=FunctionList?split(",") > <#list function_list as function> <#if (function == 'findPage')> CopyErrorOK! ``` 3. 遍历数组获取下标 ``` <#list FiledList as column> <#if (column_index>0)> <#if (column.javaType== 'String')> if(StringUtils.isNotEmpty(body.getParameter().get${FiledList[0].FILEDNAME}())) queryWrapper.like("${column.filed_name}", body.getParameter().get${FiledList[0].FILEDNAME}()); <#if (column.javaType== 'Integer' || column.javaType== 'Double' || column.javaType== 'Float' || column.javaType== 'Long')> if(body.getParameter().get${FiledList[0].FILEDNAME}() != null) queryWrapper.eq("${column.filed_name}", body.getParameter().get${FiledList[0].FILEDNAME}()); CopyErrorOK! ``` ------ # 常见问题 ## 1. 取码中心生成代码失败 > 通过管理员登录系统,进入脚本管理,运行查看代码生成器日志脚本,查看模板报错信息。 ## 2. 取码中心生成无反应 #### [1. zeus客户端软件权限](https://engini.cn/zeus/#/zh-cn/CodeQuestionIntroduce/second_index?id=_1-zeus客户端软件权限) > 1. 桌面选择zeus客户端的logo > 2. 右键》属性》打开文件所在位置》找到zeus.exe 以管理员权限运行 > 3. 桌面zeus快捷方式,右键》属性》高级》勾选 以管理员身份运行 #### [2. 切换【配置中心】代码](https://engini.cn/zeus/#/zh-cn/CodeQuestionIntroduce/second_index?id=_2-切换【配置中心】代码) ```markup > 后台项目目录,尽量不要选C盘的,C盘权限不足会导致代码无法注入。CopyErrorOK! ``` #### [3. 查看日志排查问题](https://engini.cn/zeus/#/zh-cn/CodeQuestionIntroduce/second_index?id=_3-查看日志排查问题) ```markup > 接口问题排查 > > 在客户端使用快捷键**CTRL ALT I** 可以打开控制台,查看生成代码接口,是否返回正常,如果是接口错误,大概率是模板错误CopyErrorOK! ``` ##### [`客户端问题排查`](https://engini.cn/zeus/#/zh-cn/CodeQuestionIntroduce/second_index?id=客户端问题排查) Tip 1. 桌面选择zeus客户端的logo 2. 右键》属性》打开文件所在位置 3. 复制当前路径 4. 使用管理员方式打开CMD,输入刚才输入的路径cd进去 5. 执行zeus.exe 6. 查看客户端日志 ## 3、Oracle配置的特别说明 在客户端使用CTRL+I打开配置窗口后,在Oracle的OCI路径里配置oci.dll的绝对路径 这里以`C:\instantclient_19_3\oci.dll`为例: Oracle的OCI路径:C:\instantclient_19_3\oci.dll **注意:同时oci.dll的所在目录也就是 C:\instantclient_19_3 加入到windows的环境变量path中!** 配置完成后,重启客户端生效。 Copyright © 2023 💖 **-Zeus-**