diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt
index 94c0916..78eb7b5 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt
@@ -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
}
}
\ No newline at end of file
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt
index 024af8b..bb30e0c 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt
@@ -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
}
}
\ No newline at end of file
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt
index 30b21fd..ebe6972 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt
@@ -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}")
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/TreeVue.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/TreeVue.txt
index 9224b8f..089dba3 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/TreeVue.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/TreeVue.txt
@@ -102,7 +102,6 @@ $end
$foreach(column in genTable.Columns)
$set(labelName = "")
-$set(checkboxHtml = "")
$set(showToolTipHtml = "")
$set(columnName = column.CsharpFieldFl)
$if(column.CsharpType == "string" || column.HtmlType == "datetime")
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt
index 75f9d11..55c241b 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt
@@ -114,19 +114,37 @@ $end
@sort-change="sortChange"
@selection-change="handleSelectionChange">
+$if(null != genTable.SubTableName && "" != genTable.SubTableName && genTable.TplCategory == "subNav")
+
+
+
+$foreach(subColumn in genSubTable.Columns)
+ {{ props.row.$tool.FirstLowerCase(genTable.SubTable.ClassName)Nav.${subColumn.CsharpFieldFl} }}
+$end
+
+
+
+$end
+$if(null != genTable.SubTableName && "" != genTable.SubTableName && genTable.TplCategory == "subNavMore")
+
+
+
+$foreach(subColumn in genSubTable.Columns)
+$if(subColumn.IsList == true)
+
+$end
+$end
+
+
+
+$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)
@@ -192,14 +210,9 @@ $end
$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
diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs
index 80514de..dc1c4e2 100644
--- a/ZR.CodeGenerator/CodeGeneratorTool.cs
+++ b/ZR.CodeGenerator/CodeGeneratorTool.cs
@@ -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());
diff --git a/ZR.CodeGenerator/Model/GenerateDto.cs b/ZR.CodeGenerator/Model/GenerateDto.cs
index 57e6697..47fb4ba 100644
--- a/ZR.CodeGenerator/Model/GenerateDto.cs
+++ b/ZR.CodeGenerator/Model/GenerateDto.cs
@@ -23,7 +23,14 @@ namespace ZR.CodeGenerator.Model
///
public int[] CheckedBtn { get; set; } = System.Array.Empty();
public GenTable GenTable { get; set; }
+ ///
+ /// 主表属性
+ ///
public CodeGenerateOption GenOptions { get; set; }
+ ///
+ /// 子表属性
+ ///
+ public CodeGenerateOption SubTableOptions { get; set; }
#region 存储路径
///
/// 代码模板预览存储路径存放
diff --git a/ZR.Model/System/Generate/GenTableColumn.cs b/ZR.Model/System/Generate/GenTableColumn.cs
index 9686f16..12f5ff6 100644
--- a/ZR.Model/System/Generate/GenTableColumn.cs
+++ b/ZR.Model/System/Generate/GenTableColumn.cs
@@ -25,7 +25,18 @@ namespace ZR.Model.System.Generate
///
/// 列说明
///
- public string ColumnComment { get; set; } = string.Empty;
+ private string columnComment;
+ public string ColumnComment
+ {
+ get
+ {
+ return string.IsNullOrEmpty(columnComment) ? CsharpField : columnComment;
+ }
+ set
+ {
+ columnComment = value;
+ }
+ }
///
/// 数据库列类型
///
@@ -121,7 +132,13 @@ namespace ZR.Model.System.Generate
/// C# 字段名 首字母小写,用于前端
///
[SugarColumn(IsIgnore = true)]
- public string CsharpFieldFl { get; set; }
+ public string CsharpFieldFl
+ {
+ get
+ {
+ return CsharpField[..1].ToLower() + CsharpField[1..];
+ }
+ }
///
/// 前端 只读字段
///