update README.md
@ -5,7 +5,7 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace ZR.Common.Extension
|
namespace Infrastructure.Extensions
|
||||||
{
|
{
|
||||||
public static partial class Extensions
|
public static partial class Extensions
|
||||||
{
|
{
|
||||||
@ -7,7 +7,7 @@ using System.Text;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
//using Newtonsoft.Json;
|
//using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace ZR.Common.Extension
|
namespace Infrastructure.Extensions
|
||||||
{
|
{
|
||||||
public static partial class Extensions
|
public static partial class Extensions
|
||||||
{
|
{
|
||||||
@ -4,7 +4,7 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace ZR.Common.Extension
|
namespace Infrastructure.Extensions
|
||||||
{
|
{
|
||||||
public static partial class Extensions
|
public static partial class Extensions
|
||||||
{
|
{
|
||||||
@ -5,7 +5,7 @@ using System.Linq.Expressions;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace ZR.Common.Extension
|
namespace Infrastructure.Extensions
|
||||||
{
|
{
|
||||||
public static class LinqExtensions
|
public static class LinqExtensions
|
||||||
{
|
{
|
||||||
@ -5,7 +5,7 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace ZR.Common.Extension
|
namespace Infrastructure.Extensions
|
||||||
{
|
{
|
||||||
public static partial class Extensions
|
public static partial class Extensions
|
||||||
{
|
{
|
||||||
@ -1,10 +1,10 @@
|
|||||||
using System;
|
using Infrastructure.Extensions;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using ZR.Common.Extension;
|
|
||||||
|
|
||||||
namespace ZR.Common
|
namespace Infrastructure
|
||||||
{
|
{
|
||||||
public class ComputerHelper
|
public class ComputerHelper
|
||||||
{
|
{
|
||||||
@ -2,7 +2,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace ZR.Common
|
namespace Infrastructure
|
||||||
{
|
{
|
||||||
public class DateTimeHelper
|
public class DateTimeHelper
|
||||||
{
|
{
|
||||||
@ -4,7 +4,7 @@ using System.IO;
|
|||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace ZR.Common
|
namespace Infrastructure
|
||||||
{
|
{
|
||||||
public class FileUtil
|
public class FileUtil
|
||||||
{
|
{
|
||||||
@ -4,7 +4,7 @@ using System.Net.Http;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace ZR.Common
|
namespace Infrastructure
|
||||||
{
|
{
|
||||||
public class HttpHelper
|
public class HttpHelper
|
||||||
{
|
{
|
||||||
@ -3,7 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace ZR.Common
|
namespace Infrastructure
|
||||||
{
|
{
|
||||||
public class ShellHelper
|
public class ShellHelper
|
||||||
{
|
{
|
||||||
142
README.md
@ -9,15 +9,18 @@
|
|||||||
* 权限认证使用Jwt,支持多终端认证系统。
|
* 权限认证使用Jwt,支持多终端认证系统。
|
||||||
* 支持加载动态权限菜单,多方式轻松权限控制
|
* 支持加载动态权限菜单,多方式轻松权限控制
|
||||||
|
|
||||||
> 如果对您有帮助,点击右上角⭐Star⭐关注 ,感谢支持开源!
|
```
|
||||||
|
如果对您有帮助,您可以点右上角⭐Star⭐ 收藏一下 ,这样作者才有继续免费下去的动力,谢谢!~
|
||||||
|
```
|
||||||
|
|
||||||
## 🍿在线体验
|
## 🍿在线体验
|
||||||
体验地址:http://www.izhaorui.cn:8080/
|
- 体验地址:http://www.izhaorui.cn:8080/
|
||||||
管理员:admin
|
- 管理员:admin
|
||||||
密 码:123456
|
- 密 码:123456
|
||||||
|
|
||||||
**由于是个人项目,资金有限,体验服是低配,请大家爱惜,轻戳,不胜感激!!!**
|
|
||||||
|
|
||||||
|
```
|
||||||
|
由于是个人项目,资金有限,体验服是低配,请大家爱惜,轻戳,不胜感激!!!
|
||||||
|
```
|
||||||
## 🍁前端技术
|
## 🍁前端技术
|
||||||
Vue版前端技术栈 :基于vue、vuex、vue-router 、vue-cli 、axios 和 element-ui,前端采用vscode工具开发
|
Vue版前端技术栈 :基于vue、vuex、vue-router 、vue-cli 、axios 和 element-ui,前端采用vscode工具开发
|
||||||
|
|
||||||
@ -34,86 +37,93 @@ Vue版前端技术栈 :基于vue、vuex、vue-router 、vue-cli 、axios 和 e
|
|||||||
|
|
||||||
## 🍄快速启动
|
## 🍄快速启动
|
||||||
需要安装:VS2019(最新版)、npm或yarn(最新版)
|
需要安装:VS2019(最新版)、npm或yarn(最新版)
|
||||||
准备工作:将document文件夹下面的admin.sql脚本导入到数据库中,修改ZR.Admin.WebApi项目里面配置文件中的conn_zrAdmin数据库连接字符串以及DbType选择对应的数据库类型,目前仅支持MySQL、SQL server
|
- 准备工作:将document文件夹下面的xxx.sql脚本导入到数据库中,修改appsettings.json配置文件里面中的conn_zrAdmin数据库连接字符串以及conn_zrAdmin_Type选择对应的数据库类型,目前仅支持MySQL、SQL server
|
||||||
启动后台:打开项目根目录的startup.bat即可启动(数据库默认MySQL)
|
- 启动后台:打开项目根目录的startup.bat即可启动,或者打开ZRAdmin.sln解决方案,直接运行(F5)即可启动
|
||||||
启动前端:打开ZR.Vue文件夹,运行npm install命令,再运行npm run serve启动
|
- 启动前端:打开ZR.Vue文件夹,运行npm install命令下载安装依赖,再运行npm run serve启动
|
||||||
浏览器访问:http://localhost:8887 (默认前端端口为:8887,后台端口为:8888)
|
- 浏览器访问:http://localhost:8887 (默认前端端口为:8887,后台端口为:8888)
|
||||||
|
|
||||||
|
|
||||||
## 🍖内置功能
|
## 🍖内置功能
|
||||||
|
|
||||||
1. [X] 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
|
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
|
||||||
2. [X] 部门管理:配置系统组织机构(公司、部门、小组),树结构展现。
|
2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现。
|
||||||
3. [X] 岗位管理:配置系统用户所属担任职务。
|
3. 岗位管理:配置系统用户所属担任职务。
|
||||||
4. [X] 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
|
4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
|
||||||
5. [X] 角色管理:角色菜单权限分配。
|
5. 角色管理:角色菜单权限分配。
|
||||||
6. [X] 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
|
6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
|
||||||
7. [ ] 参数管理:对系统动态配置常用参数。
|
6. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
|
||||||
8. [X] 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
|
7. 登录日志:系统登录日志记录查询包含登录异常。
|
||||||
9. [X] 登录日志:系统登录日志记录查询包含登录异常。
|
8. 系统接口:使用swagger生成相关api接口文档。
|
||||||
10. [ ] 在线用户:当前系统中活跃用户状态监控。
|
9. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
|
||||||
11. [X] 系统接口:使用swagger生成相关api接口文档。
|
10. 在线构建器:拖动表单元素生成相应的VUE代码。
|
||||||
12. [X] 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
|
11. 任务系统:基于Quartz.NET定时任务执行。
|
||||||
13. [X] 在线构建器:拖动表单元素生成相应的VUE代码。
|
12. 文章管理:可以写文章记录。
|
||||||
14. [X] 任务系统:基于Quartz.NET定时任务执行。
|
13. 代码生成:可以一键生成前后端代码(.cs、.vue、.js、sql),自定义配置前端展示控件、让开发更快捷高效。
|
||||||
15. [X] 文章管理:可以写文章记录。
|
|
||||||
16. [X] 代码生成:可以一键生成前后端代码(.cs、.vue、.js),自定义配置前端展示控件、让开发更快捷高效。
|
|
||||||
|
|
||||||
## 项目结构
|
|
||||||
|
|
||||||
ZRAdmin解决方案包含:
|
## 🍻项目结构
|
||||||
|
|
||||||
ZR.Service[服务层类库]:提供WebApi接口调用;
|
```
|
||||||
|
- ZR.Service[服务层类库]:提供WebApi接口调用;
|
||||||
|
- ZR.Repository[仓库层类库]:方便提供有执行存储过程的操作;
|
||||||
|
- ZR.Model[实体层类库],提供项目中的数据库表、数据传输对象;
|
||||||
|
- ZR.Admin.WebApi[webapi接口]:为Vue版或其他三方系统提供接口服务。
|
||||||
|
- ZR.Vue[前端UI]:vue版本UI层。
|
||||||
|
- ZR.Tasks[定时任务类库]:提供项目定时任务实现功能;
|
||||||
|
- ZR.CodeGenerator[代码生成功能],包含代码生成的模板、方法、代码生成的下载。
|
||||||
|
```
|
||||||
|
## ⚡ 近期计划
|
||||||
|
|
||||||
ZR.Tasks[定时任务类库]:提供项目定时任务实现功能;
|
- [ ] 参数管理
|
||||||
|
- [ ] 在线用户
|
||||||
|
- [ ] 文件管理
|
||||||
|
- [ ] 邮件发送
|
||||||
|
- [ ] 集成微信开发
|
||||||
|
|
||||||
ZR.Repository[仓库层类库]:方便提供有执行存储过程的操作;
|
## 📖 帮助文档
|
||||||
|
👉快捷部署到Linux文档:
|
||||||
ZR.Model[实体层类库],提供项目中的数据库表、数据传输对象;
|
- [本地md文件](./document/nginx部署文档.md "代码生成")
|
||||||
|
|
||||||
ZR.CodeGenerator[代码生成功能],包含代码生成的模板、方法、代码生成的下载。
|
|
||||||
|
|
||||||
ZR.Admin.WebApi[webapi接口]:为Vue版或其他三方系统提供接口服务。
|
|
||||||
|
|
||||||
ZR.Vue[前端UI]:vue版本UI层。
|
|
||||||
|
|
||||||
DataBase是最新数据库备份文件,目前支持MS SQL Server和MySql。
|
|
||||||
|
|
||||||
|
👉代码生成器使用教程:
|
||||||
|
- [本地md文件](./document/代码生成器使用.md "代码生成")
|
||||||
|
|
||||||
## 🍎演示图
|
## 🍎演示图
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/1.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/1.png"/></td>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/2.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/2.png"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/3.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/3.png"/></td>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/4.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/4.png"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/5.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/5.png"/></td>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/6.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/6.png"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/7.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/7.png"/></td>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/8.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/8.png"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/9.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/9.png"/></td>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/10.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/10.png"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/11.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/11.png"/></td>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/12.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/12.png"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/13.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/13.png"/></td>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/14.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/14.png"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/15.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/15.png"/></td>
|
||||||
<td><img src="https://www.izhaorui.cn/images/zradmin/16.png"/></td>
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/16.png"/></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/17.png"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
@ -127,17 +137,17 @@ DataBase是最新数据库备份文件,目前支持MS SQL Server和MySql。
|
|||||||
|
|
||||||
## 💐 特别鸣谢
|
## 💐 特别鸣谢
|
||||||
- 👉Ruoyi.vue:[Ruoyi](http://www.ruoyi.vip/)
|
- 👉Ruoyi.vue:[Ruoyi](http://www.ruoyi.vip/)
|
||||||
- 👉SqlSugar:https://gitee.com/dotnetchina/SqlSugar
|
- 👉SqlSugar:[SqlSugar](https://gitee.com/dotnetchina/SqlSugar)
|
||||||
|
|
||||||
## 🍻参与贡献
|
## 😎联系作者
|
||||||
- Fork 本项目
|
|
||||||
- 新建 Feat_xxx 分支
|
|
||||||
- 提交代码
|
|
||||||
- 新建 Pull Request
|
|
||||||
|
|
||||||
## 联系作者
|
|
||||||
QQ:599854767
|
QQ:599854767
|
||||||
|
|
||||||
## 🎀捐赠
|
## 🎀捐赠
|
||||||
如果这个项目对您有所帮助,请扫下方二维码打赏一杯咖啡。
|
如果这个项目对您有所帮助,请扫下方二维码打赏一杯咖啡。
|
||||||
<img src="https://www.izhaorui.cn/static/pay.jpg"/>
|
<img src="https://gitee.com/izory/ZrAdminNetCore/raw/master/document/images/pay.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
## 源码地址
|
||||||
|
[Gitee码云中国](https://gitee.com/izory/ZrAdminNetCore)
|
||||||
|
|
||||||
|
[Github](https://github.com/izhaorui/ZrAdmin.NET)
|
||||||
@ -9,6 +9,7 @@ using ZR.Admin.WebApi.Filters;
|
|||||||
using ZR.Common;
|
using ZR.Common;
|
||||||
using Infrastructure.Enums;
|
using Infrastructure.Enums;
|
||||||
using ZR.Service.System.IService;
|
using ZR.Service.System.IService;
|
||||||
|
using Infrastructure;
|
||||||
|
|
||||||
namespace ZR.Admin.WebApi.Controllers.System
|
namespace ZR.Admin.WebApi.Controllers.System
|
||||||
{
|
{
|
||||||
|
|||||||
@ -58,7 +58,7 @@ import {
|
|||||||
del{ModelTypeName},
|
del{ModelTypeName},
|
||||||
update{ModelTypeName},
|
update{ModelTypeName},
|
||||||
get{ModelTypeName}
|
get{ModelTypeName}
|
||||||
} from '@/api/{fileClassName}.js'
|
} from '@/api/{fileClassName}.js';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: '{ModelTypeName}',
|
name: '{ModelTypeName}',
|
||||||
|
|||||||
@ -29,12 +29,12 @@ namespace ZR.CodeGenerator
|
|||||||
sb.AppendLine($" }},");
|
sb.AppendLine($" }},");
|
||||||
}
|
}
|
||||||
//有下拉框选项初列表查询数据
|
//有下拉框选项初列表查询数据
|
||||||
if (dbFieldInfo.HtmlType == GenConstants.HTML_SELECT && !string.IsNullOrEmpty(dbFieldInfo.DictType))
|
if ((dbFieldInfo.HtmlType == GenConstants.HTML_SELECT || dbFieldInfo.HtmlType == GenConstants.HTML_RADIO) && !string.IsNullOrEmpty(dbFieldInfo.DictType))
|
||||||
{
|
{
|
||||||
sb.AppendLine(@$" // {dbFieldInfo.ColumnComment}字典翻译");
|
sb.AppendLine(@$" // {dbFieldInfo.ColumnComment}字典翻译");
|
||||||
sb.AppendLine($" {columnName}Format(row, column) {{");
|
sb.AppendLine($" {columnName}Format(row, column) {{");
|
||||||
sb.AppendLine(@$" return this.selectDictLabel(this.{columnName}Options, row.{columnName});");
|
sb.AppendLine(@$" return this.selectDictLabel(this.{columnName}Options, row.{columnName});");
|
||||||
sb.Append(@" },");
|
sb.AppendLine(@" },");
|
||||||
|
|
||||||
}
|
}
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
@ -74,7 +74,7 @@ namespace ZR.CodeGenerator
|
|||||||
public static string GetModelRequired(GenTableColumn dbFieldInfo)
|
public static string GetModelRequired(GenTableColumn dbFieldInfo)
|
||||||
{
|
{
|
||||||
string str = "";
|
string str = "";
|
||||||
if (!dbFieldInfo.IsRequired && (dbFieldInfo.CsharpType == "int" || dbFieldInfo.CsharpType == "long" || dbFieldInfo.CsharpType == "DateTime"))
|
if (!dbFieldInfo.IsRequired && (CodeGeneratorTool.IsNumber(dbFieldInfo.ColumnType) || dbFieldInfo.CsharpType == "DateTime"))
|
||||||
{
|
{
|
||||||
str = "?";
|
str = "?";
|
||||||
}
|
}
|
||||||
@ -104,7 +104,7 @@ namespace ZR.CodeGenerator
|
|||||||
public static string GetQueryDtoProperty(GenTableColumn dbFieldInfo)
|
public static string GetQueryDtoProperty(GenTableColumn dbFieldInfo)
|
||||||
{
|
{
|
||||||
string QueryDtoContent = "";
|
string QueryDtoContent = "";
|
||||||
if (dbFieldInfo.IsQuery && !GenConstants.inputDtoNoField.Any(f => f.Replace("_", "").ToLower().Contains(dbFieldInfo.CsharpField.ToLower().Replace("_", ""))))
|
if (dbFieldInfo.IsQuery && !GenConstants.inputDtoNoField.Any(f => f.ToLower().Contains(dbFieldInfo.CsharpField.ToLower())))
|
||||||
{
|
{
|
||||||
QueryDtoContent += $" public {dbFieldInfo.CsharpType} {dbFieldInfo.CsharpField} {{ get; set; }}\r\n";
|
QueryDtoContent += $" public {dbFieldInfo.CsharpType} {dbFieldInfo.CsharpField} {{ get; set; }}\r\n";
|
||||||
}
|
}
|
||||||
@ -120,7 +120,7 @@ namespace ZR.CodeGenerator
|
|||||||
string labelDisabled = dbFieldInfo.IsPk ? ":disabled=\"true\"" : "";
|
string labelDisabled = dbFieldInfo.IsPk ? ":disabled=\"true\"" : "";
|
||||||
string placeHolder = dbFieldInfo.IsIncrement ? "" : $"请输入{labelName}";
|
string placeHolder = dbFieldInfo.IsIncrement ? "" : $"请输入{labelName}";
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
if (GenConstants.inputDtoNoField.Any(f => f.Replace("_", "").ToLower().Contains(dbFieldInfo.CsharpField.ToLower().Replace("_", ""))))
|
if (GenConstants.inputDtoNoField.Any(f => f.ToLower().Contains(dbFieldInfo.CsharpField.ToLower())))
|
||||||
{
|
{
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
@ -194,7 +194,7 @@ namespace ZR.CodeGenerator
|
|||||||
if (dbFieldInfo.HtmlType == GenConstants.HTML_DATETIME)
|
if (dbFieldInfo.HtmlType == GenConstants.HTML_DATETIME)
|
||||||
{
|
{
|
||||||
sb.AppendLine(" <el-form-item label=\"时间\">");
|
sb.AppendLine(" <el-form-item label=\"时间\">");
|
||||||
sb.AppendLine(" <el-date-picker v-model=\"dateRange\" size=\"small\" value-format=\"yyyy-MM-dd\" type=\"daterange\" range-separator=\"-\" start-placeholder=\"开始日期\" end-placeholder=\"结束日期\"></el-date-picker>");
|
sb.AppendLine(" <el-date-picker v-model=\"timeRange\" size=\"small\" value-format=\"yyyy-MM-dd\" type=\"daterange\" range-separator=\"-\" start-placeholder=\"开始日期\" end-placeholder=\"结束日期\"></el-date-picker>");
|
||||||
sb.AppendLine(" </el-form-item>");
|
sb.AppendLine(" </el-form-item>");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@ -4,6 +4,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
using ZR.CodeGenerator.Model;
|
using ZR.CodeGenerator.Model;
|
||||||
using ZR.Model.System.Generate;
|
using ZR.Model.System.Generate;
|
||||||
|
|
||||||
@ -57,6 +58,9 @@ namespace ZR.CodeGenerator
|
|||||||
replaceDto.ViewsFileName = FirstLowerCase(replaceDto.ModelTypeName);
|
replaceDto.ViewsFileName = FirstLowerCase(replaceDto.ModelTypeName);
|
||||||
replaceDto.Author = tableInfo.FunctionAuthor;
|
replaceDto.Author = tableInfo.FunctionAuthor;
|
||||||
|
|
||||||
|
StringBuilder sb1 = new StringBuilder();
|
||||||
|
StringBuilder sb2 = new StringBuilder();
|
||||||
|
|
||||||
//循环表字段信息
|
//循环表字段信息
|
||||||
foreach (GenTableColumn dbFieldInfo in listField)
|
foreach (GenTableColumn dbFieldInfo in listField)
|
||||||
{
|
{
|
||||||
@ -86,14 +90,15 @@ namespace ZR.CodeGenerator
|
|||||||
//{
|
//{
|
||||||
// replaceDto.Querycondition += $"predicate = predicate.And(m => m.{dbFieldInfo.CsharpField}.Contains(parm.Name));";
|
// replaceDto.Querycondition += $"predicate = predicate.And(m => m.{dbFieldInfo.CsharpField}.Contains(parm.Name));";
|
||||||
//}
|
//}
|
||||||
|
|
||||||
if ((dbFieldInfo.HtmlType == GenConstants.HTML_SELECT || dbFieldInfo.HtmlType == GenConstants.HTML_RADIO) && !string.IsNullOrEmpty(dbFieldInfo.DictType))
|
if ((dbFieldInfo.HtmlType == GenConstants.HTML_SELECT || dbFieldInfo.HtmlType == GenConstants.HTML_RADIO) && !string.IsNullOrEmpty(dbFieldInfo.DictType))
|
||||||
{
|
{
|
||||||
replaceDto.VueDataContent += $" // {dbFieldInfo.ColumnComment}选项列表\n";
|
sb1.AppendLine($" // {dbFieldInfo.ColumnComment}选项列表");
|
||||||
replaceDto.VueDataContent += $" {FirstLowerCase(dbFieldInfo.CsharpField)}Options: [],\n";
|
sb1.AppendLine($" {FirstLowerCase(dbFieldInfo.CsharpField)}Options: [],");
|
||||||
|
|
||||||
replaceDto.MountedMethod += $" this.getDicts(\"{dbFieldInfo.DictType}\").then((response) => {{\n";
|
sb2.AppendLine($" this.getDicts(\"{dbFieldInfo.DictType}\").then((response) => {{");
|
||||||
replaceDto.MountedMethod += $" this.{FirstLowerCase(dbFieldInfo.CsharpField)}Options = response.data;\n";
|
sb2.AppendLine($" this.{FirstLowerCase(dbFieldInfo.CsharpField)}Options = response.data;");
|
||||||
replaceDto.MountedMethod += " })\n";
|
sb2.AppendLine(" })");
|
||||||
}
|
}
|
||||||
|
|
||||||
replaceDto.QueryProperty += CodeGenerateTemplate.GetQueryDtoProperty(dbFieldInfo);
|
replaceDto.QueryProperty += CodeGenerateTemplate.GetQueryDtoProperty(dbFieldInfo);
|
||||||
@ -105,6 +110,9 @@ namespace ZR.CodeGenerator
|
|||||||
replaceDto.InputDtoProperty += CodeGenerateTemplate.GetDtoProperty(dbFieldInfo);
|
replaceDto.InputDtoProperty += CodeGenerateTemplate.GetDtoProperty(dbFieldInfo);
|
||||||
replaceDto.VueQueryFormHtml += CodeGenerateTemplate.GetQueryFormHtml(dbFieldInfo);
|
replaceDto.VueQueryFormHtml += CodeGenerateTemplate.GetQueryFormHtml(dbFieldInfo);
|
||||||
}
|
}
|
||||||
|
replaceDto.VueDataContent = sb1.ToString();
|
||||||
|
replaceDto.MountedMethod = sb2.ToString();
|
||||||
|
|
||||||
replaceDto.PKName = PKName;
|
replaceDto.PKName = PKName;
|
||||||
replaceDto.PKType = PKType;
|
replaceDto.PKType = PKType;
|
||||||
|
|
||||||
@ -201,7 +209,7 @@ namespace ZR.CodeGenerator
|
|||||||
.Replace("{Author}", replaceDto.Author)
|
.Replace("{Author}", replaceDto.Author)
|
||||||
.Replace("{DateTime}", replaceDto.AddTime);
|
.Replace("{DateTime}", replaceDto.AddTime);
|
||||||
|
|
||||||
//generateDto.GenCodes.Add(new GenCode(2, "数据传输实体类", fullPath, content));
|
generateDto.GenCodes.Add(new GenCode(2, "数据传输实体类", fullPath, content));
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -255,7 +263,7 @@ namespace ZR.CodeGenerator
|
|||||||
.Replace("{Author}", replaceDto.Author)
|
.Replace("{Author}", replaceDto.Author)
|
||||||
.Replace("{DateTime}", replaceDto.AddTime);
|
.Replace("{DateTime}", replaceDto.AddTime);
|
||||||
|
|
||||||
//generateDto.GenCodes.Add(new GenCode(4, "接口层", fullPath, content));
|
generateDto.GenCodes.Add(new GenCode(4, "接口层", fullPath, content));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -16,7 +16,7 @@ namespace ZR.CodeGenerator
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// InputDto输入实体是不包含字段
|
/// InputDto输入实体是不包含字段
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly string[] inputDtoNoField = new string[] { "createTime", "updateTime", "addtime" };
|
public static readonly string[] inputDtoNoField = new string[] { "createTime", "updateTime", "addtime", "create_time", "update_time" };
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 图片字段
|
/// 图片字段
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -11,7 +11,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.0.3.4" />
|
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.0.4" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
|
||||||
<PackageReference Include="Npoi.Mapper" Version="3.5.1" />
|
<PackageReference Include="Npoi.Mapper" Version="3.5.1" />
|
||||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.0.3.4" />
|
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.0.4" />
|
||||||
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
<PackageReference Include="Microsoft.Extensions.Options" Version="5.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Options" Version="5.0.0" />
|
||||||
<PackageReference Include="MySql.Data" Version="8.0.25" />
|
<PackageReference Include="MySql.Data" Version="8.0.25" />
|
||||||
<PackageReference Include="NETCore.Encrypt" Version="2.0.9" />
|
<PackageReference Include="NETCore.Encrypt" Version="2.0.9" />
|
||||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.0.3.4" />
|
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.0.4" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
using Infrastructure.Attribute;
|
using Infrastructure.Attribute;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using ZR.Common;
|
|
||||||
using ZR.Model;
|
using ZR.Model;
|
||||||
using ZR.Model.System.Dto;
|
using ZR.Model.System.Dto;
|
||||||
using ZR.Model.System;
|
using ZR.Model.System;
|
||||||
using ZR.Repository.System;
|
using ZR.Repository.System;
|
||||||
using ZR.Service.System.IService;
|
using ZR.Service.System.IService;
|
||||||
|
using Infrastructure;
|
||||||
|
|
||||||
namespace ZR.Service.System
|
namespace ZR.Service.System
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,59 +0,0 @@
|
|||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 代码生成测试表分页查询
|
|
||||||
* @param {查询条件} data
|
|
||||||
*/
|
|
||||||
export function listGendemo(query) {
|
|
||||||
return request({
|
|
||||||
url: 'business/Gendemo/list',
|
|
||||||
method: 'get',
|
|
||||||
params: query,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增代码生成测试表
|
|
||||||
* @param data
|
|
||||||
*/
|
|
||||||
export function addGendemo(data) {
|
|
||||||
return request({
|
|
||||||
url: 'business/Gendemo',
|
|
||||||
method: 'post',
|
|
||||||
data: data,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改代码生成测试表
|
|
||||||
* @param data
|
|
||||||
*/
|
|
||||||
export function updateGendemo(data) {
|
|
||||||
return request({
|
|
||||||
url: 'business/Gendemo',
|
|
||||||
method: 'PUT',
|
|
||||||
data: data,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取代码生成测试表详情
|
|
||||||
* @param {Id} 代码生成测试表Id
|
|
||||||
*/
|
|
||||||
export function getGendemo(id) {
|
|
||||||
return request({
|
|
||||||
url: 'business/Gendemo/' + id,
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除
|
|
||||||
* @param {主键} pid
|
|
||||||
*/
|
|
||||||
export function delGendemo(pid) {
|
|
||||||
return request({
|
|
||||||
url: 'business/Gendemo/' + pid,
|
|
||||||
method: 'delete'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@ -56,7 +56,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<span class="tip">如果觉得有用你可以请作者喝杯咖啡表示鼓励</span>
|
<span class="tip">如果觉得有用你可以请作者喝杯咖啡表示鼓励</span>
|
||||||
<img src="http://www.izhaorui.cn/static/pay.jpg" alt="donate" width="100%" />
|
<img src="http://ss.izhaorui.cn/pay.jpg" alt="donate" width="100%" />
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
<el-button type="danger" :disabled="multiple" plain icon="el-icon-delete" @click="handleDelete" size="mini" v-hasPermi="['tool:gen:delete']">删除</el-button>
|
<el-button type="danger" :disabled="multiple" plain icon="el-icon-delete" @click="handleDelete" size="mini" v-hasPermi="['tool:gen:delete']">删除</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-table ref="gridtable" v-loading="tableloading" :data="tableData" border @selection-change="handleSelectionChange" highlight-current-row height="500px">
|
<el-table ref="gridtable" v-loading="tableloading" :data="tableData" border @selection-change="handleSelectionChange" highlight-current-row height="480px">
|
||||||
<el-table-column type="selection" align="center" width="55"></el-table-column>
|
<el-table-column type="selection" align="center" width="55"></el-table-column>
|
||||||
<el-table-column label="序号" type="index" width="50" align="center">
|
<el-table-column label="序号" type="index" width="50" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
@ -45,7 +45,7 @@
|
|||||||
<!-- 预览界面 -->
|
<!-- 预览界面 -->
|
||||||
<el-dialog :title="preview.title" :visible.sync="preview.open" width="80%" top="5vh" append-to-body>
|
<el-dialog :title="preview.title" :visible.sync="preview.open" width="80%" top="5vh" append-to-body>
|
||||||
<el-tabs v-model="preview.activeName">
|
<el-tabs v-model="preview.activeName">
|
||||||
<el-tab-pane v-for="(item, key) in preview.data" :label="item.title" :name="item.type.toString()" :key="key">
|
<el-tab-pane v-for="(item, key) in preview.data" :label="item.title" :name="key.toString()" :key="key">
|
||||||
<pre v-html="highlightedCode(item.content)">
|
<pre v-html="highlightedCode(item.content)">
|
||||||
</pre>
|
</pre>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
@ -115,7 +115,7 @@ export default {
|
|||||||
open: false,
|
open: false,
|
||||||
title: "代码预览",
|
title: "代码预览",
|
||||||
data: {},
|
data: {},
|
||||||
activeName: "1",
|
activeName: "0",
|
||||||
},
|
},
|
||||||
showGenerate: false,
|
showGenerate: false,
|
||||||
checkedCodeGenerateForm: [1, 2, 3, 4, 5, 6, 7, 8],
|
checkedCodeGenerateForm: [1, 2, 3, 4, 5, 6, 7, 8],
|
||||||
@ -199,10 +199,10 @@ export default {
|
|||||||
var seachdata = {
|
var seachdata = {
|
||||||
tableId: this.currentSelected.tableId,
|
tableId: this.currentSelected.tableId,
|
||||||
tableName: this.currentSelected.name,
|
tableName: this.currentSelected.name,
|
||||||
genFiles: this.checkedCodeGenerateForm,
|
genCodeFiles: this.checkedCodeGenerateForm,
|
||||||
coverd: this.coverd,
|
coverd: this.coverd,
|
||||||
dbType: this.dbType,
|
dbType: this.dbType,
|
||||||
queryColumn: this.checkedQueryColumn,
|
// queryColumn: this.checkedQueryColumn,
|
||||||
};
|
};
|
||||||
console.log(JSON.stringify(seachdata));
|
console.log(JSON.stringify(seachdata));
|
||||||
|
|
||||||
|
|||||||
33
ZRAdmin.xml
@ -27,44 +27,47 @@
|
|||||||
<param name="data"></param>
|
<param name="data"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:ZR.Admin.WebApi.Controllers.UserInfoController">
|
<member name="T:ZR.Admin.WebApi.Controllers.GendemoController">
|
||||||
<summary>
|
<summary>
|
||||||
代码自动生成
|
代码生成演示Controller
|
||||||
|
|
||||||
|
@author zhaorui
|
||||||
|
@date 2021-09-24
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:ZR.Admin.WebApi.Controllers.UserInfoController._UserInfoService">
|
<member name="F:ZR.Admin.WebApi.Controllers.GendemoController._GendemoService">
|
||||||
<summary>
|
<summary>
|
||||||
用户信息接口
|
代码生成演示接口
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ZR.Admin.WebApi.Controllers.UserInfoController.QueryUserInfo(ZR.Model.Dto.UserInfoQueryDto)">
|
<member name="M:ZR.Admin.WebApi.Controllers.GendemoController.QueryGendemo(ZR.Model.Dto.GendemoQueryDto)">
|
||||||
<summary>
|
<summary>
|
||||||
查询用户信息列表
|
查询代码生成演示列表
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ZR.Admin.WebApi.Controllers.UserInfoController.GetUserInfo(System.Int32)">
|
<member name="M:ZR.Admin.WebApi.Controllers.GendemoController.GetGendemo(System.Int32)">
|
||||||
<summary>
|
<summary>
|
||||||
查询用户信息详情
|
查询代码生成演示详情
|
||||||
</summary>
|
</summary>
|
||||||
<param name="Luid"></param>
|
<param name="Id"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ZR.Admin.WebApi.Controllers.UserInfoController.AddUserInfo(ZR.Model.Dto.UserInfoDto)">
|
<member name="M:ZR.Admin.WebApi.Controllers.GendemoController.AddGendemo(ZR.Model.Dto.GendemoDto)">
|
||||||
<summary>
|
<summary>
|
||||||
添加用户信息
|
添加代码生成演示
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ZR.Admin.WebApi.Controllers.UserInfoController.UpdateUserInfo(ZR.Model.Dto.UserInfoDto)">
|
<member name="M:ZR.Admin.WebApi.Controllers.GendemoController.UpdateGendemo(ZR.Model.Dto.GendemoDto)">
|
||||||
<summary>
|
<summary>
|
||||||
更新用户信息
|
更新代码生成演示
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ZR.Admin.WebApi.Controllers.UserInfoController.DeleteUserInfo(System.String)">
|
<member name="M:ZR.Admin.WebApi.Controllers.GendemoController.DeleteGendemo(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
删除用户信息
|
删除代码生成演示
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 6.6 MiB |
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 6.6 MiB |
BIN
document/images/15-1.png
Normal file
|
After Width: | Height: | Size: 6.5 MiB |
BIN
document/images/17.png
Normal file
|
After Width: | Height: | Size: 6.5 MiB |
BIN
document/images/pay.jpg
Normal file
|
After Width: | Height: | Size: 164 KiB |
BIN
document/images/代码生成演示202109250747.mp4
Normal file
9
document/nginx部署文档.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
## nginx部署文档.md
|
||||||
|
|
||||||
|
1. 拷贝zradmin.ini文件代码到nginx配置文件http模块中
|
||||||
|
2. 在nginx安装目录中的html目录中创建文件夹zradmin_vue
|
||||||
|
3. 发布ZR.Admin.WebApi项目并部署到服务器中启动
|
||||||
|
4. 发布ZR.Vue项目并拷贝dist文件中的代码到刚刚创建的zradmin_vue中
|
||||||
|
5. 浏览器中访问 http://localhost:8080
|
||||||
|
|
||||||
|
注意:服务器防火墙的设置开放8080 端口
|
||||||
18
document/代码生成器使用.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
## 代码生成器使用教程
|
||||||
|
|
||||||
|
### 修改配置文件appsettings.json
|
||||||
|
```
|
||||||
|
"gen": {
|
||||||
|
"conn": "server=127.0.0.1;user=zr;pwd=abc;database={database}",
|
||||||
|
"dbType": 0, //MySql = 0, SqlServer = 1
|
||||||
|
"autoPre": true, //自动去除表前缀
|
||||||
|
"author": "zr",
|
||||||
|
"tablePrefix": "sys_" //"表前缀(生成类名不会包含表前缀,多个用","分隔)",
|
||||||
|
}
|
||||||
|
```
|
||||||
|
修改conn数据库连接字符串其中{database}为动态要替换的数据库名
|
||||||
|
<img src="http://ss.izhaorui.cn/zradmin/15-1.png"/>
|
||||||
|
|
||||||
|
|
||||||
|
👉视频教程:
|
||||||
|
- [观看视频](http://ss.izhaorui.cn/zradmin/%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90%E6%BC%94%E7%A4%BA202109250747.mp4)
|
||||||