feat:代码生成完善导航查询
This commit is contained in:
parent
d13d7666ab
commit
2b06669128
@ -5,6 +5,9 @@ using System.ComponentModel.DataAnnotations;
|
||||
$if(replaceDto.ShowBtnExport)
|
||||
using MiniExcelLibs.Attributes;
|
||||
$end
|
||||
$if(null != genTable.SubTableName && "" != genTable.SubTableName)
|
||||
using ${subTableOptions.ModelsNamespace}.${subTableOptions.SubNamespace};
|
||||
$end
|
||||
|
||||
namespace ${options.DtosNamespace}
|
||||
{
|
||||
@ -54,14 +57,14 @@ $if(genTable.TplCategory == "subNav" && genTable.SubTable != null)
|
||||
$if(replaceDto.ShowBtnExport)
|
||||
[ExcelIgnore]
|
||||
$end
|
||||
public ${genTable.SubTable.ClassName} ${genTable.SubTable.ClassName} { get; set; }
|
||||
public ${genTable.SubTable.ClassName} ${genTable.SubTable.ClassName}Nav { get; set; }
|
||||
$end
|
||||
|
||||
$if(genTable.TplCategory == "subNavMore" && genTable.SubTable != null)
|
||||
$if(replaceDto.ShowBtnExport)
|
||||
[ExcelIgnore]
|
||||
$end
|
||||
public List<${genTable.SubTable.ClassName}> ${genTable.SubTable.ClassName} { get; set; }
|
||||
public List<${genTable.SubTable.ClassName}> ${genTable.SubTable.ClassName}Nav { get; set; }
|
||||
$end
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,9 @@
|
||||
using System;
|
||||
using SqlSugar;
|
||||
using System.Collections.Generic;
|
||||
$if(genTable.TplCategory.Contains("subNav") && genTable.SubTable != null)
|
||||
using ${subTableOptions.ModelsNamespace}.${subTableOptions.SubNamespace};
|
||||
$end
|
||||
|
||||
namespace ${options.ModelsNamespace}.${options.SubNamespace}
|
||||
{
|
||||
@ -38,12 +41,12 @@ $if(genTable.TplCategory == "tree")
|
||||
public List<${replaceDto.ModelTypeName}> Children { get; set; }
|
||||
$end
|
||||
$if(genTable.TplCategory == "subNav" && genTable.SubTable != null)
|
||||
[Navigate(NavigateType.Dynamic, null)] //自定义关系映射
|
||||
public ${genTable.SubTable.ClassName} ${genTable.SubTable.ClassName} { get; set; }
|
||||
[Navigate(NavigateType.OneToOne, nameof(${replaceDto.PKName}))] //自定义关系映射
|
||||
public ${genTable.SubTable.ClassName} ${genTable.SubTable.ClassName}Nav { get; set; }
|
||||
$end
|
||||
$if(genTable.TplCategory == "subNavMore" && genTable.SubTable != null)
|
||||
[Navigate(NavigateType.Dynamic, null)] //自定义关系映射
|
||||
public List<${genTable.SubTable.ClassName}> ${genTable.SubTable.ClassName} { get; set; }
|
||||
[Navigate(NavigateType.OneToMany, nameof(${genTable.SubTable.ClassName}.${genTable.SubTableFkName}), nameof(${replaceDto.PKName}))] //自定义关系映射
|
||||
public List<${genTable.SubTable.ClassName}> ${genTable.SubTable.ClassName}Nav { get; set; }
|
||||
$end
|
||||
}
|
||||
}
|
||||
@ -51,7 +51,7 @@ $end
|
||||
$end
|
||||
var response = Queryable()
|
||||
$if(null != genTable.SubTableName && "" != genTable.SubTableName)
|
||||
.Includes(it => it.${genTable.SubTable.ClassName}.MappingField(z => z.${genTable.SubTableFkName}, () => it.${replaceDto.PKName}))
|
||||
.Includes(x => x.${genTable.SubTable.ClassName}Nav) //填充子对象
|
||||
$end
|
||||
$if(genTable.Options.SortField != "" && genTable.Options.SortField != null)
|
||||
//.OrderBy("${genTable.Options.SortField} ${genTable.Options.SortType}")
|
||||
|
||||
@ -102,7 +102,6 @@ $end
|
||||
<el-table-column type="selection" width="50" align="center"/>
|
||||
$foreach(column in genTable.Columns)
|
||||
$set(labelName = "")
|
||||
$set(checkboxHtml = "")
|
||||
$set(showToolTipHtml = "")
|
||||
$set(columnName = column.CsharpFieldFl)
|
||||
$if(column.CsharpType == "string" || column.HtmlType == "datetime")
|
||||
|
||||
@ -114,19 +114,37 @@ $end
|
||||
@sort-change="sortChange"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="50" align="center"/>
|
||||
$if(null != genTable.SubTableName && "" != genTable.SubTableName && genTable.TplCategory == "subNav")
|
||||
<el-table-column type="expand">
|
||||
<template #default="props">
|
||||
<el-descriptions border>
|
||||
$foreach(subColumn in genSubTable.Columns)
|
||||
<el-descriptions-item label="${subColumn.ColumnComment}">{{ props.row.$tool.FirstLowerCase(genTable.SubTable.ClassName)Nav.${subColumn.CsharpFieldFl} }}</el-descriptions-item>
|
||||
$end
|
||||
</el-descriptions>
|
||||
</template>
|
||||
</el-table-column>
|
||||
$end
|
||||
$if(null != genTable.SubTableName && "" != genTable.SubTableName && genTable.TplCategory == "subNavMore")
|
||||
<el-table-column type="expand">
|
||||
<template #default="props">
|
||||
<el-table :data="props.row.$tool.FirstLowerCase(genTable.SubTable.ClassName)Nav">
|
||||
$foreach(subColumn in genSubTable.Columns)
|
||||
$if(subColumn.IsList == true)
|
||||
<el-table-column prop="${subColumn.CsharpFieldFl}" label="${subColumn.ColumnComment}" align="center"/>
|
||||
$end
|
||||
$end
|
||||
</el-table>
|
||||
</template>
|
||||
</el-table-column>
|
||||
$end
|
||||
$foreach(column in genTable.Columns)
|
||||
$set(labelName = "")
|
||||
$set(checkboxHtml = "")
|
||||
$set(labelName = column.ColumnComment)
|
||||
$set(showToolTipHtml = "")
|
||||
$set(columnName = column.CsharpFieldFl)
|
||||
$if(column.CsharpType == "string" || column.HtmlType == "datetime")
|
||||
$set(showToolTipHtml = " :show-overflow-tooltip=\"true\"")
|
||||
$end
|
||||
$if(column.ColumnComment != "")
|
||||
$set(labelName = column.ColumnComment)
|
||||
$else
|
||||
$set(labelName = column.CsharpFieldFl)
|
||||
$end
|
||||
$if(column.IsList == true)
|
||||
$if(column.HtmlType == "customInput" && column.IsPk == false)
|
||||
<el-table-column prop="${columnName}" label="${labelName}" width="90" sortable align="center" v-if="columns.showColumn('${columnName}')">
|
||||
@ -192,14 +210,9 @@ $end
|
||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
||||
<el-row :gutter="20">
|
||||
$foreach(column in genTable.Columns)
|
||||
$set(labelName = "")
|
||||
$set(columnName = column.CsharpFieldFl)
|
||||
$set(value = "item.dictValue")
|
||||
$if(column.ColumnComment != "")
|
||||
$set(labelName = column.ColumnComment)
|
||||
$else
|
||||
$set(labelName = column.CsharpFieldFl)
|
||||
$end
|
||||
$if(column.CsharpType == "int" || column.CsharpType == "long")
|
||||
$set(value = "parseInt(item.dictValue)")
|
||||
$end
|
||||
|
||||
@ -32,7 +32,11 @@ namespace ZR.CodeGenerator
|
||||
{
|
||||
dto.VueParentPath = vuePath;
|
||||
}
|
||||
dto.GenOptions = GenerateOption(dto.GenTable); ;
|
||||
dto.GenOptions = GenerateOption(dto.GenTable);
|
||||
if (dto.GenTable.SubTable != null)
|
||||
{
|
||||
dto.SubTableOptions = GenerateOption(dto.GenTable.SubTable);
|
||||
}
|
||||
|
||||
ReplaceDto replaceDto = new()
|
||||
{
|
||||
@ -45,33 +49,15 @@ namespace ZR.CodeGenerator
|
||||
ShowBtnExport = dto.GenTable.Options.CheckedBtn.Any(f => f == 4),
|
||||
ShowBtnView = dto.GenTable.Options.CheckedBtn.Any(f => f == 5),
|
||||
ShowBtnTruncate = dto.GenTable.Options.CheckedBtn.Any(f => f == 6),
|
||||
PKName = "Id",
|
||||
PKType = "int"
|
||||
};
|
||||
var columns = dto.GenTable.Columns;
|
||||
|
||||
//循环表字段信息
|
||||
foreach (GenTableColumn dbFieldInfo in dto.GenTable.Columns.OrderBy(x => x.Sort))
|
||||
{
|
||||
if (dbFieldInfo.IsPk || dbFieldInfo.IsIncrement)
|
||||
{
|
||||
replaceDto.PKName = dbFieldInfo.CsharpField;
|
||||
replaceDto.PKType = dbFieldInfo.CsharpType;
|
||||
}
|
||||
if (dbFieldInfo.HtmlType.Equals(GenConstants.HTML_IMAGE_UPLOAD) || dbFieldInfo.HtmlType.Equals(GenConstants.HTML_FILE_UPLOAD))
|
||||
{
|
||||
replaceDto.UploadFile = 1;
|
||||
}
|
||||
if (dbFieldInfo.HtmlType.Equals(GenConstants.HTML_SELECT_MULTI))
|
||||
{
|
||||
replaceDto.SelectMulti = 1;
|
||||
}
|
||||
if (dbFieldInfo.HtmlType.Equals(GenConstants.HTML_EDITOR))
|
||||
{
|
||||
replaceDto.ShowEditor = 1;
|
||||
}
|
||||
dbFieldInfo.CsharpFieldFl = dbFieldInfo.CsharpField.FirstLowerCase();
|
||||
}
|
||||
replaceDto.PKName = columns.Find(f => f.IsPk || f.IsIncrement).CsharpField ?? "Id";
|
||||
replaceDto.PKType = columns.Find(f => f.IsPk || f.IsIncrement).CsharpType ?? "int";
|
||||
|
||||
replaceDto.UploadFile = columns.Any(f => f.HtmlType.Equals(GenConstants.HTML_IMAGE_UPLOAD) || f.HtmlType.Equals(GenConstants.HTML_FILE_UPLOAD)) ? 1 : 0;
|
||||
replaceDto.SelectMulti = columns.Any(f => f.HtmlType.Equals(GenConstants.HTML_SELECT_MULTI)) ? 1 : 0;
|
||||
replaceDto.ShowEditor = columns.Any(f => f.HtmlType.Equals(GenConstants.HTML_EDITOR)) ? 1 : 0;
|
||||
replaceDto.FistLowerPk = replaceDto.PKName.FirstLowerCase();
|
||||
InitJntTemplate(dto, replaceDto);
|
||||
|
||||
@ -188,27 +174,12 @@ namespace ZR.CodeGenerator
|
||||
/// 生成Vue页面
|
||||
private static void GenerateVueViews(ReplaceDto replaceDto, GenerateDto generateDto)
|
||||
{
|
||||
string fileName = string.Empty;
|
||||
switch (generateDto.GenTable.TplCategory)
|
||||
string fileName = generateDto.GenTable.TplCategory switch
|
||||
{
|
||||
case "tree":
|
||||
fileName = "TplTreeVue.txt";
|
||||
break;
|
||||
case "crud":
|
||||
fileName = "TplVue.txt";
|
||||
break;
|
||||
case "subNav":
|
||||
fileName = "TplVue.txt";
|
||||
break;
|
||||
case "subNavMore":
|
||||
fileName = "TplVue.txt";
|
||||
break;
|
||||
case "select":
|
||||
fileName = "TplVueSelect.txt";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
"tree" => "TplTreeVue.txt",
|
||||
"select" => "TplVueSelect.txt",
|
||||
_ => "TplVue.txt",
|
||||
};
|
||||
var tpl = JnHelper.ReadTemplate(CodeTemplateDir, fileName);
|
||||
tpl.Set("vueQueryFormHtml", replaceDto.VueQueryFormHtml);
|
||||
tpl.Set("VueViewFormContent", replaceDto.VueViewFormHtml);//添加、修改表单
|
||||
@ -230,10 +201,6 @@ namespace ZR.CodeGenerator
|
||||
string fileName = generateDto.GenTable.TplCategory switch
|
||||
{
|
||||
"tree" => "TreeVue.txt",
|
||||
"crud" => "Vue.txt",
|
||||
//case "select":
|
||||
// fileName = "TplVueSelect.txt";
|
||||
// break;
|
||||
_ => "Vue.txt",
|
||||
};
|
||||
fileName = Path.Combine("v3", fileName);
|
||||
@ -557,7 +524,9 @@ namespace ZR.CodeGenerator
|
||||
options.Data.Set("nextTick", "$");
|
||||
options.Data.Set("replaceDto", replaceDto);
|
||||
options.Data.Set("options", dto.GenOptions);
|
||||
options.Data.Set("subTableOptions", dto.SubTableOptions);
|
||||
options.Data.Set("genTable", dto.GenTable);
|
||||
options.Data.Set("genSubTable", dto.GenTable?.SubTable);
|
||||
options.Data.Set("showCustomInput", showCustomInput);
|
||||
options.Data.Set("tool", new CodeGeneratorTool());
|
||||
options.Data.Set("codeTool", new CodeGenerateTemplate());
|
||||
|
||||
@ -23,7 +23,14 @@ namespace ZR.CodeGenerator.Model
|
||||
/// </summary>
|
||||
public int[] CheckedBtn { get; set; } = System.Array.Empty<int>();
|
||||
public GenTable GenTable { get; set; }
|
||||
/// <summary>
|
||||
/// 主表属性
|
||||
/// </summary>
|
||||
public CodeGenerateOption GenOptions { get; set; }
|
||||
/// <summary>
|
||||
/// 子表属性
|
||||
/// </summary>
|
||||
public CodeGenerateOption SubTableOptions { get; set; }
|
||||
#region 存储路径
|
||||
/// <summary>
|
||||
/// 代码模板预览存储路径存放
|
||||
|
||||
@ -25,7 +25,18 @@ namespace ZR.Model.System.Generate
|
||||
/// <summary>
|
||||
/// 列说明
|
||||
/// </summary>
|
||||
public string ColumnComment { get; set; } = string.Empty;
|
||||
private string columnComment;
|
||||
public string ColumnComment
|
||||
{
|
||||
get
|
||||
{
|
||||
return string.IsNullOrEmpty(columnComment) ? CsharpField : columnComment;
|
||||
}
|
||||
set
|
||||
{
|
||||
columnComment = value;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 数据库列类型
|
||||
/// </summary>
|
||||
@ -121,7 +132,13 @@ namespace ZR.Model.System.Generate
|
||||
/// C# 字段名 首字母小写,用于前端
|
||||
/// </summary>
|
||||
[SugarColumn(IsIgnore = true)]
|
||||
public string CsharpFieldFl { get; set; }
|
||||
public string CsharpFieldFl
|
||||
{
|
||||
get
|
||||
{
|
||||
return CsharpField[..1].ToLower() + CsharpField[1..];
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 前端 只读字段
|
||||
/// </summary>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user