优化代码生成模板
This commit is contained in:
parent
5b376614d0
commit
a0cf47c099
109
ZR.Admin.WebApi/wwwroot/CodeGenTemplate/CurdForm.txt
Normal file
109
ZR.Admin.WebApi/wwwroot/CodeGenTemplate/CurdForm.txt
Normal file
@ -0,0 +1,109 @@
|
||||
$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(tool.CheckInputDtoNoField(column.CsharpField))
|
||||
$elseif(column.IsInsert == false && column.IsEdit == false)
|
||||
<el-col :lg="12" v-if="opertype == 2">
|
||||
<el-form-item label="${labelName}">{{form.${columnName}}}</el-form-item>
|
||||
</el-col>
|
||||
$elseif(tool.CheckTree(genTable ,column.CsharpField))
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="父级id" prop="${columnName}">
|
||||
<treeselect v-model="form.${columnName}" :options="dataList" :normalizer="normalizer" :show-count="true" placeholder="选择上级菜单" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
$elseif(column.IsPK || column.IsIncrement)
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
$if(column.IsIncrement == false)
|
||||
<el-input-number v-model.number="form.${columnName}" controls-position="right" placeholder="请输入${labelName}" :disabled="title=='修改数据'"/>
|
||||
$else
|
||||
<span v-html="form.${columnName}"/>
|
||||
$end
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
$else
|
||||
$if(column.HtmlType == "inputNumber")
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<el-input-number v-model.number="form.${columnName}" controls-position="right" placeholder="请输入${labelName}" ${labelDisabled}/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
$elseif(column.HtmlType == "datetime")
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<el-date-picker v-model="form.${columnName}" type="datetime" placeholder="选择日期时间"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
$elseif(column.HtmlType == "imageUpload")
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<UploadImage v-model="form.${columnName}" column="${columnName}" @success="handleUploadSuccess" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
$elseif(column.HtmlType == "fileUpload")
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<UploadFile v-model="form.${columnName}" column="${columnName}" @success="handleUploadSuccess" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
$elseif(column.HtmlType == "radio")
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<el-radio-group v-model="form.${columnName}">
|
||||
<el-radio v-for="item in ${columnName}Options" :key="item.dictValue" :label="${value}">{{item.dictLabel}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
$elseif(column.HtmlType == "textarea")
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<el-input type="textarea" v-model="form.${columnName}" placeholder="请输入${labelName}"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
$elseif(column.HtmlType == "editor")
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<editor v-model="form.${columnName}" :min-height="200" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
$elseif(column.HtmlType == "select")
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<el-select v-model="form.${columnName}" placeholder="请选择${labelName}">
|
||||
<el-option v-for="item in ${columnName}Options" :key="item.dictValue" :label="item.dictLabel" :value="${value}"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
$elseif(column.HtmlType == "checkbox")
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<el-checkbox-group v-model="form.${columnName}Checked">
|
||||
<el-checkbox v-for="item in ${columnName}Options" :key="item.dictValue" :label="item.dictValue">{{item.dictLabel}}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
$else
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<el-input v-model="form.${columnName}" placeholder="请输入${labelName}" ${labelDisabled}/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
$end
|
||||
$end
|
||||
$end
|
||||
@ -48,7 +48,7 @@ ${VueViewListContent}
|
||||
<el-dialog :title="title" :lock-scroll="false" :visible.sync="open" >
|
||||
<el-form ref="form" :model="form" :rules="rules" :label-width="formLabelWidth">
|
||||
<el-row :gutter="20">
|
||||
${VueViewFormContent}
|
||||
${VueViewFormContent}
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
@ -107,6 +107,7 @@ $end
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 操作类型 1、add 2、edit
|
||||
opertype: 0,
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 是否展开,默认全部折叠
|
||||
|
||||
@ -57,7 +57,7 @@ $end
|
||||
<el-dialog :title="title" :lock-scroll="false" :visible.sync="open" >
|
||||
<el-form ref="form" :model="form" :rules="rules" :label-width="formLabelWidth">
|
||||
<el-row :gutter="20">
|
||||
${VueViewFormContent}
|
||||
${VueViewFormContent}
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
|
||||
@ -3,7 +3,6 @@
|
||||
<!-- :model属性用于表单验证使用 比如下面的el-form-item 的 prop属性用于对表单值进行验证操作 -->
|
||||
<el-form :model="queryParams" label-position="right" inline ref="queryRef" v-show="showSearch"
|
||||
@submit.prevent>
|
||||
|
||||
$foreach(column in genTable.Columns)
|
||||
$set(labelName = "")
|
||||
$set(columnName = "")
|
||||
|
||||
@ -27,9 +27,8 @@ namespace ZR.CodeGenerator
|
||||
|
||||
if (GenConstants.inputDtoNoField.Any(f => f.Contains(dbFieldInfo.CsharpField, StringComparison.OrdinalIgnoreCase)))
|
||||
{
|
||||
return sb.ToString();
|
||||
}
|
||||
if (!dbFieldInfo.IsInsert && !dbFieldInfo.IsEdit)
|
||||
else if (!dbFieldInfo.IsInsert && !dbFieldInfo.IsEdit)
|
||||
{
|
||||
sb.AppendLine(" <el-col :lg=\"12\" v-if=\"opertype == 2\">");
|
||||
sb.AppendLine($" <el-form-item label=\"{labelName}\">{{{{form.{columnName}}}}}</el-form-item>");
|
||||
@ -200,36 +199,5 @@ namespace ZR.CodeGenerator
|
||||
return $"it => it.{ propertyName} == parm.{propertyName})";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 格式化字典数据显示到table
|
||||
/// </summary>
|
||||
/// <param name="htmlType"></param>
|
||||
/// <param name="columnName"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetFormatter(string htmlType, string columnName)
|
||||
{
|
||||
if (htmlType.Equals(GenConstants.HTML_CHECKBOX) ||
|
||||
htmlType.Equals(GenConstants.HTML_SELECT) ||
|
||||
htmlType.Equals(GenConstants.HTML_RADIO))
|
||||
{
|
||||
return $" :formatter=\"{columnName}Format\"";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 超出隐藏
|
||||
/// </summary>
|
||||
/// <param name="column"></param>
|
||||
/// <returns></returns>
|
||||
public static string ShowToolTip(GenTableColumn column)
|
||||
{
|
||||
if (column.CsharpType.Equals("string") ||
|
||||
column.HtmlType.Equals(GenConstants.HTML_DATETIME))
|
||||
{
|
||||
return $" :show-overflow-tooltip=\"true\"";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -65,11 +65,6 @@ namespace ZR.CodeGenerator
|
||||
replaceDto.UploadFile = 1;
|
||||
}
|
||||
dbFieldInfo.CsharpFieldFl = dbFieldInfo.CsharpField.FirstLowerCase();
|
||||
//CodeGenerateTemplate.GetQueryDtoProperty(dbFieldInfo, replaceDto);
|
||||
|
||||
replaceDto.VueViewFormHtml += CodeGenerateTemplate.TplVueFormContent(dbFieldInfo, dto.GenTable);
|
||||
//replaceDto.VueViewListHtml += CodeGenerateTemplate.TplTableColumn(dbFieldInfo, dto.GenTable);
|
||||
//replaceDto.VueQueryFormHtml += CodeGenerateTemplate.TplQueryFormHtml(dbFieldInfo);
|
||||
}
|
||||
|
||||
replaceDto.PKName = PKName;
|
||||
@ -78,9 +73,9 @@ namespace ZR.CodeGenerator
|
||||
InitJntTemplate(dto, replaceDto);
|
||||
replaceDto.VueViewListHtml = GenerateVueTableList();
|
||||
replaceDto.VueQueryFormHtml = GenerateVueQueryForm();
|
||||
replaceDto.VueViewFormHtml = GenerateCurdForm();
|
||||
|
||||
GenerateModels(replaceDto, dto);
|
||||
GenerateInputDto(replaceDto, dto);
|
||||
GenerateRepository(replaceDto, dto);
|
||||
GenerateService(replaceDto, dto);
|
||||
GenerateControllers(replaceDto, dto);
|
||||
@ -107,25 +102,13 @@ namespace ZR.CodeGenerator
|
||||
private static void GenerateModels(ReplaceDto replaceDto, GenerateDto generateDto)
|
||||
{
|
||||
var tpl = FileHelper.ReadJtTemplate("TplModel.txt");
|
||||
var result = tpl.Render();
|
||||
var tplDto = FileHelper.ReadJtTemplate("TplDto.txt");
|
||||
|
||||
string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Models", _option.SubNamespace, replaceDto.ModelTypeName + ".cs");
|
||||
generateDto.GenCodes.Add(new GenCode(1, "Model.cs", fullPath, result));
|
||||
}
|
||||
string fullPathDto = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Dto", _option.SubNamespace, $"{replaceDto.ModelTypeName}Dto.cs");
|
||||
|
||||
/// <summary>
|
||||
/// 生成表单提交输入参数Dto
|
||||
/// </summary>
|
||||
/// <param name="generateDto"></param>
|
||||
/// <param name="replaceDto">替换实体</param>
|
||||
private static void GenerateInputDto(ReplaceDto replaceDto, GenerateDto generateDto)
|
||||
{
|
||||
var tpl = FileHelper.ReadJtTemplate("TplDto.txt");
|
||||
|
||||
var result = tpl.Render();
|
||||
var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Dto", _option.SubNamespace, $"{replaceDto.ModelTypeName}Dto.cs");
|
||||
|
||||
generateDto.GenCodes.Add(new GenCode(2, "Dto.cs", fullPath, result));
|
||||
generateDto.GenCodes.Add(new GenCode(1, "Model.cs", fullPath, tpl.Render()));
|
||||
generateDto.GenCodes.Add(new GenCode(2, "Dto.cs", fullPathDto, tplDto.Render()));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -193,7 +176,6 @@ namespace ZR.CodeGenerator
|
||||
}
|
||||
var tpl = FileHelper.ReadJtTemplate(fileName);
|
||||
tpl.Set("vueQueryFormHtml", replaceDto.VueQueryFormHtml);
|
||||
tpl.Set("VueViewEditFormRuleContent", replaceDto.VueViewEditFormRuleContent);//添加、修改表单验证规则
|
||||
tpl.Set("VueViewFormContent", replaceDto.VueViewFormHtml);//添加、修改表单
|
||||
tpl.Set("VueViewListContent", replaceDto.VueViewListHtml);//查询 table列
|
||||
|
||||
@ -227,15 +209,11 @@ namespace ZR.CodeGenerator
|
||||
}
|
||||
fileName = Path.Combine("v3", fileName);
|
||||
var tpl = FileHelper.ReadJtTemplate(fileName);
|
||||
//tpl.Set("vueQueryFormHtml", replaceDto.VueQueryFormHtml);
|
||||
//tpl.Set("VueViewEditFormRuleContent", replaceDto.VueViewEditFormRuleContent);//添加、修改表单验证规则
|
||||
//tpl.Set("VueViewFormContent", replaceDto.VueViewFormHtml);//添加、修改表单
|
||||
//tpl.Set("VueViewListContent", replaceDto.VueViewListHtml);//查询 table列
|
||||
|
||||
var result = tpl.Render();
|
||||
var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZR.Vue3", "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue");
|
||||
//Console.WriteLine(result);
|
||||
generateDto.GenCodes.Add(new GenCode(16, "index.vue", fullPath, result));
|
||||
generateDto.GenCodes.Add(new GenCode(16, "vue3.vue", fullPath, result));
|
||||
}
|
||||
/// <summary>
|
||||
/// 生成vue页面api
|
||||
@ -297,6 +275,17 @@ namespace ZR.CodeGenerator
|
||||
{
|
||||
var tpl = FileHelper.ReadJtTemplate("TableList.txt");
|
||||
var result = tpl.Render();
|
||||
//Console.WriteLine(result);
|
||||
return result;
|
||||
}
|
||||
/// <summary>
|
||||
/// 生成vue表单
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static string GenerateCurdForm()
|
||||
{
|
||||
var tpl = FileHelper.ReadJtTemplate("CurdForm.txt");
|
||||
var result = tpl.Render();
|
||||
Console.WriteLine(result);
|
||||
return result;
|
||||
}
|
||||
@ -445,7 +434,7 @@ namespace ZR.CodeGenerator
|
||||
IsIncrement = column.IsIdentity,
|
||||
Create_by = genTable.Create_by,
|
||||
Create_time = DateTime.Now,
|
||||
IsInsert = !column.IsIdentity,//非自增字段都需要插入
|
||||
IsInsert = !column.IsIdentity || GenConstants.inputDtoNoField.Any(f => f.Contains(column.DbColumnName, StringComparison.OrdinalIgnoreCase)),//非自增字段都需要插入
|
||||
IsEdit = true,
|
||||
IsQuery = false,
|
||||
HtmlType = GenConstants.HTML_INPUT
|
||||
@ -520,7 +509,7 @@ namespace ZR.CodeGenerator
|
||||
options.Data.Set("replaceDto", replaceDto);
|
||||
options.Data.Set("options", dto.GenOptions);
|
||||
options.Data.Set("genTable", dto.GenTable);
|
||||
options.Data.Set("btns", dto.CheckedBtn);
|
||||
//options.Data.Set("btns", dto.CheckedBtn);
|
||||
options.Data.Set("showCustomInput", showCustomInput);
|
||||
options.Data.Set("tool", new CodeGeneratorTool());
|
||||
options.Data.Set("codeTool", new CodeGenerateTemplate());
|
||||
@ -528,5 +517,21 @@ namespace ZR.CodeGenerator
|
||||
//...其它数据
|
||||
});
|
||||
}
|
||||
|
||||
#region 模板用
|
||||
/// <summary>
|
||||
/// 模板用
|
||||
/// </summary>
|
||||
/// <param name="str"></param>
|
||||
/// <returns></returns>
|
||||
public static bool CheckInputDtoNoField(string str)
|
||||
{
|
||||
return GenConstants.inputDtoNoField.Any(f => f.Contains(str, StringComparison.OrdinalIgnoreCase));
|
||||
}
|
||||
public static bool CheckTree(GenTable genTable, string csharpField)
|
||||
{
|
||||
return (genTable.TplCategory.Equals("tree", StringComparison.OrdinalIgnoreCase) && genTable.TreeParentCode != null && csharpField.Equals(genTable.TreeParentCode));
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,10 +39,6 @@ namespace ZR.CodeGenerator.Model
|
||||
/// </summary>
|
||||
public string VueQueryFormHtml { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// vue 添加、编辑表单规则
|
||||
/// </summary>
|
||||
public string VueViewEditFormRuleContent { get; set; }
|
||||
/// <summary>
|
||||
/// 查询条件
|
||||
/// </summary>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user