优化Vue3&服务层代码生成模板

This commit is contained in:
不做码农 2022-11-29 11:43:39 +08:00
parent ce04eb78c2
commit ef9379811d
10 changed files with 187 additions and 125 deletions

View File

@ -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 });
}

View File

@ -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
{
/// <summary>
/// ${genTable.FunctionName}输入对象
/// </summary>
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
}
/// <summary>
/// ${genTable.FunctionName}查询对象
/// </summary>
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
}
/// <summary>
/// ${genTable.FunctionName}输入输出对象
/// </summary>
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
}
}

View File

@ -14,7 +14,7 @@ namespace ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNam
/// </summary>
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);

View File

@ -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}
/// </summary>
$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

View File

@ -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}
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
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
/// <summary>
/// 添加${genTable.FunctionName}
/// </summary>

View File

@ -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,

View File

@ -27,13 +27,13 @@ $if(column.HtmlType == "datetime")
<el-form-item label="$labelName">
<el-date-picker
v-model="dateRange${column.CsharpField}"
style="width: 240px"
type="daterange"
type="datetimerange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
placeholder="请选择$labelName"
value-format="YYYY-MM-DD HH:mm:ss"
:default-time="defaultTime"
:shortcuts="dateOptions">
</el-date-picker>
</el-form-item>
@ -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()
</script>

View File

@ -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
{
@ -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)
{

View File

@ -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;
}
/// <summary>
/// 转指定实体类Dto
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="T2"></typeparam>
/// <param name="source"></param>
/// <param name="parm"></param>
/// <returns></returns>
public static PagedInfo<T2> ToPage<T, T2>(this ISugarQueryable<T> source, PagerInfo parm)
{
var page = new PagedInfo<T2>();
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<List<T2>>();
return page;
}
}
}

View File

@ -10,6 +10,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Mapster" Version="7.3.0" />
<PackageReference Include="Microsoft.Extensions.Options" Version="7.0.0" />
<PackageReference Include="MySql.Data" Version="8.0.31" />
<PackageReference Include="NETCore.Encrypt" Version="2.1.0" />