diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt
index 1dc2dfe..f6a6738 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt
@@ -149,9 +149,12 @@ $if(replaceDto.ShowBtnExport)
[ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:export")]
public IActionResult Export([FromQuery] ${replaceDto.ModelTypeName}QueryDto parm)
{
- parm.PageSize = 10000;
+ parm.PageSize = 100000;
var list = _${replaceDto.ModelTypeName}Service.GetList(parm).Result;
-
+ if (list == null || list.Count <= 0)
+ {
+ return ToResponse(ResultCode.FAIL, "没有要导出的数据");
+ }
string sFileName = ExportExcel(list, "${replaceDto.ModelTypeName}", "${genTable.FunctionName}");
return SUCCESS(new { path = "/export/" + sFileName, fileName = sFileName });
}
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt
index f697b72..156e78b 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt
@@ -1,38 +1,65 @@
-using System;
+using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using ${options.ModelsNamespace}.Dto;
using ${options.ModelsNamespace}.Models;
+$if(replaceDto.ShowBtnExport)
+using OfficeOpenXml.Attributes;
+$end
namespace ${options.DtosNamespace}.Dto
{
- ///
- /// ${genTable.FunctionName}输入对象
- ///
- public class ${replaceDto.ModelTypeName}Dto
- {
-$foreach(item in genTable.Columns)
-$if((item.IsInsert || item.IsEdit || item.IsPk || item.IsIncrement))
-$if(item.IsRequired)
- [Required(ErrorMessage = "${item.ColumnComment}不能为空")]
-$end
- public $item.CsharpType$item.RequiredStr $item.CsharpField { get; set; }
-$end
-$end
- }
-
///
/// ${genTable.FunctionName}查询对象
///
public class ${replaceDto.ModelTypeName}QueryDto : PagerInfo
{
$foreach(item in genTable.Columns)
-$if(item.IsQuery && item.htmlType == "datetime")
+$if(item.IsQuery)
+$if(item.htmlType == "datetime")
public DateTime? Begin$item.CsharpField { get; set; }
public DateTime? End$item.CsharpField { get; set; }
-$elseif(item.IsQuery)
+$elseif(item.htmlType == "selectMulti")
+ public ${item.CsharpType}[] $item.CsharpField { get; set; }
+$else
public $item.CsharpType$if(item.CsharpType != "string")?$end $item.CsharpField { get; set; }
$end
+$end
$end
}
-}
+
+ ///
+ /// ${genTable.FunctionName}输入输出对象
+ ///
+ public class ${replaceDto.ModelTypeName}Dto
+ {
+$foreach(item in genTable.Columns)
+$if(item.IsRequired)
+ [Required(ErrorMessage = "${item.ColumnComment}不能为空")]
+$end
+$if(replaceDto.ShowBtnExport)
+$if(item.IsExport)
+ [EpplusTableColumn(Header = "$if(item.ColumnComment == "")${item.CsharpField}${else}${item.ColumnComment}${end}"$if(item.CsharpType == "DateTime"), NumberFormat = "yyyy-MM-dd HH:mm:ss"$end)]
+$else
+ [EpplusIgnore]
+$end
+$end
+ public $item.CsharpType$item.RequiredStr $item.CsharpField { get; set; }
+
+$end
+
+$if(genTable.TplCategory == "subNav" && genTable.SubTable != null)
+$if(replaceDto.ShowBtnExport)
+ [EpplusIgnore]
+$end
+ public ${genTable.SubTable.ClassName} ${genTable.SubTable.ClassName} { get; set; }
+$end
+
+$if(genTable.TplCategory == "subNavMore" && genTable.SubTable != null)
+$if(replaceDto.ShowBtnExport)
+ [EpplusIgnore]
+$end
+ public List<${genTable.SubTable.ClassName}> ${genTable.SubTable.ClassName} { get; set; }
+$end
+ }
+}
\ No newline at end of file
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplIService.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplIService.txt
index aebe033..bc22796 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplIService.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplIService.txt
@@ -14,7 +14,7 @@ namespace ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNam
///
public interface I${replaceDto.ModelTypeName}Service : IBaseService<${replaceDto.ModelTypeName}>
{
- PagedInfo<${replaceDto.ModelTypeName}> GetList(${replaceDto.ModelTypeName}QueryDto parm);
+ PagedInfo<${replaceDto.ModelTypeName}Dto> GetList(${replaceDto.ModelTypeName}QueryDto parm);
$if(genTable.TplCategory == "tree")
List<${replaceDto.ModelTypeName}> GetTreeList(${replaceDto.ModelTypeName}QueryDto parm);
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt
index 82e6efb..bd81ff1 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt
@@ -1,8 +1,6 @@
using System;
using SqlSugar;
-$if(replaceDto.ShowBtnExport)
-using OfficeOpenXml.Attributes;
-$end
+using System.Collections.Generic;
namespace ${options.ModelsNamespace}.Models
{
@@ -20,13 +18,6 @@ $foreach(item in genTable.Columns)
/// 描述 :${item.ColumnComment} ${item.Remark}
/// 空值 :$if(item.IsRequired == "True")false${else}true${end}
///
-$if(replaceDto.ShowBtnExport)
-$if(item.IsExport)
- [EpplusTableColumn(Header = "$if(item.ColumnComment == "")${item.CsharpField}${else}${item.ColumnComment}${end}"$if(item.CsharpType == "DateTime"), NumberFormat = "yyyy-MM-dd HH:mm:ss"$end)]
-$else
- [EpplusIgnore]
-$end
-$end
$if(item.IsPk || item.IsIncrement)
[SugarColumn(IsPrimaryKey = ${item.IsPk.ToString().ToLower()}, IsIdentity = ${item.IsIncrement.ToString().ToLower()}$if(item.CsharpField.ToLower() != item.ColumnName.ToLower()), ColumnName = "$item.ColumnName"$end)]
$elseif(item.CsharpField.ToLower() != item.ColumnName.ToLower())
@@ -35,8 +26,8 @@ $end
public $item.CsharpType$item.RequiredStr $item.CsharpField { get; set; }
${end}
-$if(genTable.TplCategory == "tree")
+$if(genTable.TplCategory == "tree")
[SugarColumn(IsIgnore = true)]
public List<${replaceDto.ModelTypeName}> Children { get; set; }
$end
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt
index cb16edf..c744b4b 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt
@@ -6,6 +6,10 @@ using ${options.ModelsNamespace}.Dto;
using ${options.ModelsNamespace}.Models;
using ${options.IRepositoriesNamespace};
using ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNamespace}Service;
+using System.Linq;
+$if(genTable.TplCategory == "tree")
+using System.Collections.Generic;
+$end
namespace ${options.ServicesNamespace}.${options.SubNamespace}
{
@@ -25,7 +29,7 @@ namespace ${options.ServicesNamespace}.${options.SubNamespace}
///
///
///
- public PagedInfo<${replaceDto.ModelTypeName}> GetList(${replaceDto.ModelTypeName}QueryDto parm)
+ public PagedInfo<${replaceDto.ModelTypeName}Dto> GetList(${replaceDto.ModelTypeName}QueryDto parm)
{
//开始拼装查询条件
var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>();
@@ -33,7 +37,9 @@ namespace ${options.ServicesNamespace}.${options.SubNamespace}
//搜索条件查询语法参考Sqlsugar
$foreach(column in genTable.Columns)
$if(column.IsQuery)
-$if(column.CsharpType == "string")
+$if(column.HtmlType == "selectMulti")
+ predicate = predicate.AndIF(parm.${column.CsharpField} != null, it => parm.${column.CsharpField}.Contains(it.${column.CsharpField}));
+$elseif(column.CsharpType == "string")
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.${column.CsharpField}), ${codeTool.QueryExp(column.CsharpField, column.QueryType)};
$elseif(column.CsharpType == "DateTime")
predicate = predicate.AndIF(parm.Begin${column.CsharpField} == null, it => it.${column.CsharpField} >= DateTime.Now.AddDays(-1));
@@ -48,10 +54,10 @@ $if(null != genTable.SubTableName && "" != genTable.SubTableName)
.Includes(it => it.${genTable.SubTable.ClassName}.MappingField(z => z.${genTable.SubTableFkName}, () => it.${replaceDto.PKName}))
$end
$if(genTable.Options.SortField != "" && genTable.Options.SortField != null)
- .OrderBy("${genTable.Options.SortField} ${genTable.Options.SortType}")
+ //.OrderBy("${genTable.Options.SortField} ${genTable.Options.SortType}")
$end
.Where(predicate.ToExpression())
- .ToPage(parm);
+ .ToPage<${replaceDto.ModelTypeName}, ${replaceDto.ModelTypeName}Dto>(parm);
return response;
}
@@ -78,12 +84,14 @@ $end
$end
$end
- var response = Queryable().Where(predicate.ToExpression())
+ var response = Queryable()
+ .Where(predicate.ToExpression())
.ToTree(it => it.Children, it => it.${genTable.Options.TreeParentCode}, 0);
return response;
}
$end
+
///
/// 添加${genTable.FunctionName}
///
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/TreeVue.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/TreeVue.txt
index 6e91504..d63099d 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/TreeVue.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/TreeVue.txt
@@ -317,8 +317,8 @@ const showSearch = ref(true)
const queryParams = reactive({
pageNum: 1,
pageSize: 10,
- sort: undefined,
- sortType: undefined,
+ sort: '${genTable.Options.SortField}',
+ sortType: '${genTable.Options.SortType}',
$foreach(item in genTable.Columns)
$if(item.IsQuery == true)
${item.CsharpFieldFl}: undefined,
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt
index ea98857..64f7011 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt
@@ -27,13 +27,13 @@ $if(column.HtmlType == "datetime")
@@ -289,17 +289,15 @@ from '@/api/${tool.FirstLowerCase(genTable.ModuleName)}/${genTable.BusinessName.
const { proxy } = getCurrentInstance()
// 选中${replaceDto.FistLowerPk}数组数组
const ids = ref([])
-// 非单选禁用
const single = ref(true)
-// 非多个禁用
const multiple = ref(true)
const loading = ref(false)
const showSearch = ref(true)
const queryParams = reactive({
pageNum: 1,
pageSize: 10,
- sort: undefined,
- sortType: undefined,
+ sort: '${genTable.Options.SortField}',
+ sortType: '${genTable.Options.SortType}',
$foreach(item in genTable.Columns)
$if(item.IsQuery == true)
${item.CsharpFieldFl}: undefined,
@@ -315,35 +313,11 @@ $if(column.IsList)
$end
$end
])
-const title = ref("")
-// 操作类型 1、add 2、edit 3、view
-const opertype = ref(0)
-const open = ref(false)
-const state = reactive({
- form: {},
- rules: {
-$foreach(column in genTable.Columns)
-$if(column.IsRequired && column.IsIncrement == false)
- ${column.CsharpFieldFl}: [{ required: true, message: "${column.ColumnComment}不能为空", trigger: $if(column.htmlType == "select")"change"$else"blur"$end
-$if(column.CsharpType == "int" || column.CsharpType == "long"), type: "number"$end }],
-$end
-$end
- },
- options: {
-$foreach(column in genTable.Columns)
-$if((column.HtmlType == "radio" || column.HtmlType == "select" || column.HtmlType == "checkbox"))
- // $if(column.ColumnComment != "") ${column.ColumnComment} $else ${column.CsharpFieldFl}$end选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
- $if(column.DictType != "")${column.DictType}$else${column.CsharpFieldFl}Options$end: [],
-$end
-$end
- }
-})
-
-const { form, rules, options } = toRefs(state)
const total = ref(0)
const dataList = ref([])
const queryRef = ref()
-const formRef = ref()
+const defaultTime = ref([new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)])
+
$foreach(item in genTable.Columns)
$if(item.HtmlType == "datetime" && item.IsQuery == true)
// ${item.ColumnComment}时间范围
@@ -410,14 +384,82 @@ $end
$end
loading.value = true
list${genTable.BusinessName}(queryParams).then(res => {
- if (res.code == 200) {
- dataList.value = res.data.result
- total.value = res.data.totalNum
+ const { code, data } = res
+ if (code == 200) {
+ dataList.value = data.result
+ total.value = data.totalNum
loading.value = false
}
})
}
+// 查询
+function handleQuery() {
+ queryParams.pageNum = 1
+ getList()
+}
+
+// 重置查询操作
+function resetQuery(){
+$foreach(item in genTable.Columns)
+$if(item.HtmlType == "datetime" && item.IsQuery == true)
+ // ${item.ColumnComment}时间范围
+ dateRange${item.CsharpField}.value = []
+$end
+$end
+ proxy.resetForm("queryRef")
+ handleQuery()
+}
+
+// 多选框选中数据
+function handleSelectionChange(selection) {
+ ids.value = selection.map((item) => item.${replaceDto.FistLowerPk});
+ single.value = selection.length != 1
+ multiple.value = !selection.length;
+}
+
+// 自定义排序
+function sortChange(column) {
+ if (column.prop == null || column.order == null) {
+ queryParams.sort = undefined
+ queryParams.sortType = undefined
+ } else {
+ queryParams.sort = column.prop
+ queryParams.sortType = column.order
+ }
+
+ handleQuery()
+}
+
+
+/*************** form操作 ***************/
+const formRef = ref()
+const title = ref("")
+// 操作类型 1、add 2、edit 3、view
+const opertype = ref(0)
+const open = ref(false)
+const state = reactive({
+ form: {},
+ rules: {
+$foreach(column in genTable.Columns)
+$if(column.IsRequired && column.IsIncrement == false)
+ ${column.CsharpFieldFl}: [{ required: true, message: "${column.ColumnComment}不能为空", trigger: $if(column.htmlType == "select")"change"$else"blur"$end
+$if(column.CsharpType == "int" || column.CsharpType == "long"), type: "number"$end }],
+$end
+$end
+ },
+ options: {
+$foreach(column in genTable.Columns)
+$if(column.HtmlType == "radio" || column.HtmlType == "select" || column.HtmlType == "checkbox" || column.HtmlType == "selectMulti")
+ //$if(column.ColumnComment != "") ${column.ColumnComment} $else ${column.CsharpFieldFl}$end选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
+ $if(column.DictType != "")${column.DictType}$else${column.CsharpFieldFl}Options$end: [],
+$end
+$end
+ }
+})
+
+const { form, rules, options } = toRefs(state)
+
// 关闭dialog
function cancel(){
open.value = false
@@ -439,20 +481,6 @@ $end
proxy.resetForm("formRef")
}
-// 查询
-function handleQuery() {
- queryParams.pageNum = 1
- getList()
-}
-
-// 添加
-function handleAdd() {
- reset();
- open.value = true
- title.value = '添加'
- opertype.value = 1
-}
-
// 删除按钮操作
function handleDelete(row) {
const Ids = row.${replaceDto.FistLowerPk} || ids.value
@@ -468,6 +496,14 @@ function handleDelete(row) {
.catch(() => {})
}
+// 添加按钮操作
+function handleAdd() {
+ reset();
+ open.value = true
+ title.value = '添加'
+ opertype.value = 1
+}
+
// 修改按钮操作
function handleUpdate(row) {
reset()
@@ -491,7 +527,7 @@ $end
})
}
-// 表单提交
+// 添加&修改 表单提交
function submitForm() {
proxy.${refs}refs["formRef"].validate((valid) => {
if (valid) {
@@ -521,17 +557,6 @@ $end
})
}
-// 重置查询操作
-function resetQuery(){
-$foreach(item in genTable.Columns)
-$if(item.HtmlType == "datetime" && item.IsQuery == true)
- // ${item.ColumnComment}时间范围
- dateRange${item.CsharpField}.value = []
-$end
-$end
- proxy.resetForm("queryRef")
- handleQuery()
-}
$if(replaceDto.ShowBtnExport)
// 导出按钮操作
function handleExport() {
@@ -549,6 +574,7 @@ function handleExport() {
})
}
$end
+
$if(replaceDto.ShowBtnView)
/**
* 预览
@@ -562,6 +588,7 @@ function handlePreview(row) {
form.value = row
}
$end
+
$if(replaceDto.ShowBtnTruncate)
/**
* 清空
@@ -582,25 +609,6 @@ function handleClear() {
})
}
$end
-// 多选框选中数据
-function handleSelectionChange(selection) {
- ids.value = selection.map((item) => item.${replaceDto.FistLowerPk});
- single.value = selection.length != 1
- multiple.value = !selection.length;
-}
-
-// 自定义排序
-function sortChange(column) {
- if (column.prop == null || column.order == null) {
- queryParams.sort = undefined
- queryParams.sortType = undefined
- } else {
- queryParams.sort = column.prop
- queryParams.sortType = column.order
- }
-
- handleQuery()
-}
handleQuery()
\ No newline at end of file
diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs
index c2ec709..484408f 100644
--- a/ZR.CodeGenerator/CodeGeneratorTool.cs
+++ b/ZR.CodeGenerator/CodeGeneratorTool.cs
@@ -252,7 +252,7 @@ namespace ZR.CodeGenerator
string fileName;
if (generateDto.VueVersion == 3)
{
- fileName = generateDto.GenTable.BusinessName.ToLower() + ".js";
+ fileName = generateDto.GenTable.BusinessName.ToLower() + ".js";//vue3 api引用目前只能小写
}
else
{
@@ -306,7 +306,7 @@ namespace ZR.CodeGenerator
///
public static string GenerateVueTableList()
{
- return JnHelper.ReadTemplate(CodeTemplateDir, "TableList.txt").Render();
+ return JnHelper.ReadTemplate(CodeTemplateDir, "TableList.txt").Render();
}
///
@@ -366,7 +366,7 @@ namespace ZR.CodeGenerator
{
try
{
- return string.IsNullOrEmpty(str) ? str : str.Substring(0, 1).ToLower() + str[1..];
+ return string.IsNullOrEmpty(str) ? str : str[..1].ToLower() + str[1..];
}
catch (Exception ex)
{
diff --git a/ZR.Repository/BaseRepository.cs b/ZR.Repository/BaseRepository.cs
index 13decfa..2bf476b 100644
--- a/ZR.Repository/BaseRepository.cs
+++ b/ZR.Repository/BaseRepository.cs
@@ -1,4 +1,6 @@
-using SqlSugar;
+using Infrastructure.Extensions;
+using Mapster;
+using SqlSugar;
using SqlSugar.IOC;
using System;
using System.Collections.Generic;
@@ -365,11 +367,33 @@ namespace ZR.Repository
page.PageSize = parm.PageSize;
page.PageIndex = parm.PageNum;
- page.Result = source.OrderByIF(!string.IsNullOrEmpty(parm.Sort), $"{parm.Sort} {(parm.SortType.Contains("desc") ? "desc" : "asc")}")
+ page.Result = source.OrderByIF(parm.Sort.IsNotEmpty(), $"{parm.Sort} {(parm.SortType.Contains("desc") ? "desc" : "asc")}")
.ToPageList(parm.PageNum, parm.PageSize, ref total);
page.TotalNum = total;
return page;
}
+ ///
+ /// 转指定实体类Dto
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static PagedInfo ToPage(this ISugarQueryable source, PagerInfo parm)
+ {
+ var page = new PagedInfo();
+ var total = 0;
+ page.PageSize = parm.PageSize;
+ page.PageIndex = parm.PageNum;
+
+ var result = source.OrderByIF(parm.Sort.IsNotEmpty(), $"{parm.Sort} {(parm.SortType.Contains("desc") ? "desc" : "asc")}")
+ .ToPageList(parm.PageNum, parm.PageSize, ref total);
+ page.TotalNum = total;
+
+ page.Result = result.Adapt>();
+ return page;
+ }
}
}
diff --git a/ZR.Repository/ZR.Repository.csproj b/ZR.Repository/ZR.Repository.csproj
index 533ba73..2d93f25 100644
--- a/ZR.Repository/ZR.Repository.csproj
+++ b/ZR.Repository/ZR.Repository.csproj
@@ -10,6 +10,7 @@
+