diff --git a/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs b/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs
index 8d2768b..4b3ed0d 100644
--- a/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs
+++ b/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs
@@ -221,13 +221,15 @@ namespace ZR.Admin.WebApi.Controllers
/// 预览代码
///
///
+ ///
///
[HttpPost("preview/{tableId}")]
[ActionPermissionFilter(Permission = "tool:gen:preview")]
- public IActionResult Preview(long tableId = 0)
+ public IActionResult Preview(long tableId = 0, int VueVersion = 0)
{
GenerateDto dto = new();
dto.TableId = tableId;
+ dto.VueVersion = VueVersion;
if (dto == null || dto.TableId <= 0)
{
throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空");
diff --git a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj
index af5a88c..c366c9e 100644
--- a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj
+++ b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj
@@ -59,7 +59,6 @@
-
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/TreeVue.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/TreeVue.txt
new file mode 100644
index 0000000..c41d79a
--- /dev/null
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/TreeVue.txt
@@ -0,0 +1,559 @@
+
+
+
+
+
+$foreach(column in genTable.Columns)
+$set(labelName = "")
+$set(columnName = "")
+$set(numLabel = "")
+$if(column.IsQuery == true)
+ $set(columnName = column.CsharpFieldFl)
+ $if(column.ColumnComment != "")
+ $set(labelName = column.ColumnComment)
+ $else
+ $set(labelName = column.CsharpFieldFl)
+ $end
+ $if(column.CsharpType == "int" || column.CsharpType == "long")
+ $set(numLabel = ".number")
+ $end
+
+$if(column.HtmlType == "datetime")
+
+
+
+$elseif(column.HtmlType == "select" || column.HtmlType == "radio")
+
+
+
+
+
+$else
+
+
+
+$end
+$end
+$end
+
+ 搜索
+ 重置
+
+
+
+
+$if(replaceDto.ShowBtnAdd)
+
+ 新增
+
+$end
+
+ 展开/折叠
+
+$if(replaceDto.ShowBtnDelete)
+
+ 删除
+
+$end
+$if(replaceDto.ShowBtnExport)
+
+ 导出
+
+$end
+
+
+
+
+
+
+$foreach(column in genTable.Columns)
+$set(labelName = "")
+$set(checkboxHtml = "")
+$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)
+
+
+ {{scope.row.${columnName}}}
+
+
+
+$elseif(column.HtmlType == "imageUpload")
+
+
+
+
+
+
+
+$elseif(column.HtmlType == "checkbox" || column.HtmlType == "select" || column.HtmlType == "radio")
+
+
+$if(column.HtmlType == "checkbox")
+
+$else
+
+$end
+
+
+$else
+
+$end
+$end
+$end
+
+
+
+$if(replaceDto.ShowBtnEdit)
+
+$end
+$if(replaceDto.ShowBtnDelete)
+
+$end
+
+
+
+
+
+
+
+
+$foreach(column in genTable.Columns)
+$set(labelName = "")
+$set(labelDisabled = "")
+$set(columnName = column.CsharpFieldFl)
+$set(value = "item.dictValue")
+$if(column.ColumnComment != "")
+$set(labelName = column.ColumnComment)
+$else
+$set(labelName = column.CsharpFieldFl)
+$end
+$if(column.IsPk == true)
+$set(labelDisabled = ":disabled=true")
+$end
+$if(column.CsharpType == "int" || column.CsharpType == "long")
+ $set(value = "parseInt(item.dictValue)")
+$end
+
+$if(column.IsInsert == false && column.IsEdit == false)
+
+ {{form.${columnName}}}
+
+$elseif(tool.CheckTree(genTable ,column.CsharpField))
+
+
+
+
+ {{ data.${treeName} }}
+ ({{ data.children.length }})
+
+
+
+
+$elseif(column.IsPK || column.IsIncrement)
+
+
+$if(column.IsIncrement == false)
+
+$else
+
+$end
+
+
+$else
+$if(column.HtmlType == "inputNumber")
+
+
+
+
+
+$elseif(column.HtmlType == "datetime")
+
+
+
+
+
+$elseif(column.HtmlType == "imageUpload")
+
+
+
+
+
+$elseif(column.HtmlType == "fileUpload")
+
+
+
+
+
+$elseif(column.HtmlType == "radio")
+
+
+
+ {{item.dictLabel}}
+
+
+
+$elseif(column.HtmlType == "textarea")
+
+
+
+
+
+$elseif(column.HtmlType == "editor")
+
+
+
+
+
+$elseif(column.HtmlType == "select")
+
+
+
+
+
+
+
+$elseif(column.HtmlType == "checkbox")
+
+
+
+ {{item.dictLabel}}
+
+
+
+$else
+
+
+
+
+
+$end
+$end
+$end
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ZR.CodeGenerator/CodeGenerateOption.cs b/ZR.CodeGenerator/CodeGenerateOption.cs
index 3c66763..4a16dca 100644
--- a/ZR.CodeGenerator/CodeGenerateOption.cs
+++ b/ZR.CodeGenerator/CodeGenerateOption.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace ZR.CodeGenerator
+namespace ZR.CodeGenerator
{
public class CodeGenerateOption
{
diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs
index 59d460f..872d789 100644
--- a/ZR.CodeGenerator/CodeGeneratorTool.cs
+++ b/ZR.CodeGenerator/CodeGeneratorTool.cs
@@ -38,6 +38,8 @@ namespace ZR.CodeGenerator
_option.ServicesNamespace = _option.BaseNamespace + "Service";
_option.ApiControllerNamespace = _option.BaseNamespace + "Admin.WebApi";
+ dto.VueParentPath = dto.VueVersion == 3 ? "ZRAdmin-vue" : "ZR.Vue";
+
dto.GenOptions = _option;
string PKName = "Id";
@@ -71,16 +73,23 @@ namespace ZR.CodeGenerator
replaceDto.PKType = PKType;
replaceDto.FistLowerPk = PKName.FirstLowerCase();
InitJntTemplate(dto, replaceDto);
- replaceDto.VueViewListHtml = GenerateVueTableList();
- replaceDto.VueQueryFormHtml = GenerateVueQueryForm();
- replaceDto.VueViewFormHtml = GenerateCurdForm();
GenerateModels(replaceDto, dto);
GenerateRepository(replaceDto, dto);
GenerateService(replaceDto, dto);
GenerateControllers(replaceDto, dto);
- GenerateVueViews(replaceDto, dto);
- GenerateVue3Views(replaceDto, dto);
+ if (dto.VueVersion == 3)
+ {
+ GenerateVue3Views(replaceDto, dto);
+ }
+ else
+ {
+ replaceDto.VueViewListHtml = GenerateVueTableList();
+ replaceDto.VueQueryFormHtml = GenerateVueQueryForm();
+ replaceDto.VueViewFormHtml = GenerateCurdForm();
+
+ GenerateVueViews(replaceDto, dto);
+ }
GenerateVueJs(replaceDto, dto);
GenerateSql(replaceDto, dto);
@@ -88,6 +97,7 @@ namespace ZR.CodeGenerator
foreach (var item in dto.GenCodes)
{
+ item.Path = Path.Combine(dto.GenCodePath, item.Path);
FileHelper.WriteAndSave(item.Path, item.Content);
}
}
@@ -104,8 +114,8 @@ namespace ZR.CodeGenerator
var tpl = FileHelper.ReadJtTemplate("TplModel.txt");
var tplDto = FileHelper.ReadJtTemplate("TplDto.txt");
- string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Models", _option.SubNamespace, replaceDto.ModelTypeName + ".cs");
- string fullPathDto = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Dto", _option.SubNamespace, $"{replaceDto.ModelTypeName}Dto.cs");
+ string fullPath = Path.Combine(_option.ModelsNamespace, "Models", _option.SubNamespace, replaceDto.ModelTypeName + ".cs");
+ string fullPathDto = Path.Combine(_option.ModelsNamespace, "Dto", _option.SubNamespace, $"{replaceDto.ModelTypeName}Dto.cs");
generateDto.GenCodes.Add(new GenCode(1, "Model.cs", fullPath, tpl.Render()));
generateDto.GenCodes.Add(new GenCode(2, "Dto.cs", fullPathDto, tplDto.Render()));
@@ -120,7 +130,7 @@ namespace ZR.CodeGenerator
{
var tpl = FileHelper.ReadJtTemplate("TplRepository.txt");
var result = tpl.Render();
- var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.RepositoriesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Repository.cs");
+ var fullPath = Path.Combine(_option.RepositoriesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Repository.cs");
generateDto.GenCodes.Add(new GenCode(3, "Repository.cs", fullPath, result));
}
@@ -135,8 +145,8 @@ namespace ZR.CodeGenerator
var result = tpl.Render();
var result2 = tpl2.Render();
- var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ServicesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Service.cs");
- var fullPath2 = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.IServicsNamespace, _option.SubNamespace, $"I{_option.SubNamespace}Service", $"I{replaceDto.ModelTypeName}Service.cs");
+ var fullPath = Path.Combine(_option.ServicesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Service.cs");
+ var fullPath2 = Path.Combine(_option.IServicsNamespace, _option.SubNamespace, $"I{_option.SubNamespace}Service", $"I{replaceDto.ModelTypeName}Service.cs");
generateDto.GenCodes.Add(new GenCode(4, "Service.cs", fullPath, result));
generateDto.GenCodes.Add(new GenCode(4, "IService.cs", fullPath2, result2));
@@ -151,7 +161,7 @@ namespace ZR.CodeGenerator
tpl.Set("QueryCondition", replaceDto.QueryCondition);
var result = tpl.Render();
- var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ApiControllerNamespace, "Controllers", _option.SubNamespace, $"{replaceDto.ModelTypeName}Controller.cs");
+ var fullPath = Path.Combine(_option.ApiControllerNamespace, "Controllers", _option.SubNamespace, $"{replaceDto.ModelTypeName}Controller.cs");
generateDto.GenCodes.Add(new GenCode(5, "Controller.cs", fullPath, result));
}
@@ -180,7 +190,7 @@ namespace ZR.CodeGenerator
tpl.Set("VueViewListContent", replaceDto.VueViewListHtml);//查询 table列
var result = tpl.Render();
- var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue");
+ var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue");
generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, result));
}
@@ -191,29 +201,24 @@ namespace ZR.CodeGenerator
///
private static void GenerateVue3Views(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 = "Vue.txt";
- break;
+ "tree" => "TreeVue.txt",
+ "crud" => "Vue.txt",
//case "select":
// fileName = "TplVueSelect.txt";
// break;
- default:
- fileName = "Vue.txt";
- break;
- }
+ _ => "Vue.txt",
+ };
fileName = Path.Combine("v3", fileName);
var tpl = FileHelper.ReadJtTemplate(fileName);
+ tpl.Set("treeCode", generateDto.GenTable?.TreeCode?.ToString()?.FirstLowerCase());
+ tpl.Set("treeName", generateDto.GenTable.TreeName?.ToString()?.FirstLowerCase());
+ tpl.Set("treeParentCode", generateDto.GenTable.TreeParentCode?.ToString()?.FirstLowerCase());
var result = tpl.Render();
- var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZRAdmin-vue", "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue");
- //Console.WriteLine(result);
- generateDto.GenCodes.Add(new GenCode(16, "vue3.vue", fullPath, result));
+ var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue");
+ generateDto.GenCodes.Add(new GenCode(16, "index.vue", fullPath, result));
}
///
/// 生成vue页面api
@@ -226,11 +231,19 @@ namespace ZR.CodeGenerator
var tpl = FileHelper.ReadJtTemplate("TplVueApi.txt");
var result = tpl.Render();
- string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "api", generateDto.GenTable.ModuleName.FirstLowerCase(), generateDto.GenTable.BusinessName.FirstUpperCase() + ".js");
+ string fileName;
+ if (generateDto.VueVersion == 3)
+ {
+ fileName = generateDto.GenTable.BusinessName.ToLower() + ".js";
+ }
+ else
+ {
+ fileName = generateDto.GenTable.BusinessName.FirstUpperCase() + ".js";
+ }
+ string fullPath = Path.Combine(generateDto.VueParentPath, "src", "api", generateDto.GenTable.ModuleName.FirstLowerCase(), fileName);
+
generateDto.GenCodes.Add(new GenCode(7, "api.js", fullPath, result));
- string fullPathV3 = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZRAdmin-vue", "src", "api", generateDto.GenTable.ModuleName.FirstLowerCase(), generateDto.GenTable.BusinessName.ToLower() + ".js");
- generateDto.GenCodes.Add(new GenCode(7, "api.js", fullPathV3, result));
}
///
@@ -255,7 +268,7 @@ namespace ZR.CodeGenerator
var tpl = FileHelper.ReadJtTemplate($"{tempName}.txt");
tpl.Set("parentId", generateDto.GenTable.ParentMenuId ?? 0);
var result = tpl.Render();
- string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "sql", generateDto.GenTable.BusinessName + ".sql");
+ string fullPath = Path.Combine(generateDto.GenCodePath, "sql", generateDto.GenTable.BusinessName + ".sql");
generateDto.GenCodes.Add(new GenCode(8, "sql", fullPath, result));
}
@@ -278,7 +291,7 @@ namespace ZR.CodeGenerator
{
var tpl = FileHelper.ReadJtTemplate("TableList.txt");
var result = tpl.Render();
- //Console.WriteLine(result);
+
return result;
}
///
@@ -289,7 +302,6 @@ namespace ZR.CodeGenerator
{
var tpl = FileHelper.ReadJtTemplate("CurdForm.txt");
var result = tpl.Render();
- //Console.WriteLine(result);
return result;
}
#endregion
@@ -339,7 +351,15 @@ namespace ZR.CodeGenerator
///
public static string FirstLowerCase(string str)
{
- return string.IsNullOrEmpty(str) ? str : str.Substring(0, 1).ToLower() + str[1..];
+ try
+ {
+ return string.IsNullOrEmpty(str) ? str : str.Substring(0, 1).ToLower() + str[1..];
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex.Message);
+ return "";
+ }
}
///
@@ -493,7 +513,7 @@ namespace ZR.CodeGenerator
///
private static void InitJntTemplate(GenerateDto dto, ReplaceDto replaceDto)
{
- //Engine.Current.Clean();
+ Engine.Current.Clean();
dto.GenTable.Columns = dto.GenTable.Columns.OrderBy(x => x.Sort).ToList();
bool showCustomInput = dto.GenTable.Columns.Any(f => f.HtmlType.Equals(GenConstants.HTML_CUSTOM_INPUT, StringComparison.OrdinalIgnoreCase));
//jnt模板引擎全局变量
diff --git a/ZR.CodeGenerator/Model/GenerateDto.cs b/ZR.CodeGenerator/Model/GenerateDto.cs
index 91e99a8..57e6697 100644
--- a/ZR.CodeGenerator/Model/GenerateDto.cs
+++ b/ZR.CodeGenerator/Model/GenerateDto.cs
@@ -5,6 +5,10 @@ namespace ZR.CodeGenerator.Model
{
public class GenerateDto
{
+ ///
+ /// vue版本
+ ///
+ public int VueVersion { get; set; }
public long TableId { get; set; }
///
/// 是否预览代码
@@ -28,7 +32,7 @@ namespace ZR.CodeGenerator.Model
///
/// 代码生成路径
///
- public string GenCodePath { get; set; }
+ public string GenCodePath { get; set; } = string.Empty;
///
/// 代码生成压缩包路径
///
@@ -42,6 +46,10 @@ namespace ZR.CodeGenerator.Model
///
public string GenType { get; set; }
public string GenPath { get; set; } = "";
+ ///
+ /// vue代码路径
+ ///
+ public string VueParentPath { get; set; }
#endregion
}