代码生成新增加排序生成

This commit is contained in:
不做码农 2021-12-02 21:38:05 +08:00
parent 84aeb9b27b
commit 60f2d9934c
9 changed files with 116 additions and 40 deletions

1
.gitignore vendored
View File

@ -267,3 +267,4 @@ __pycache__/
/ZR.Admin.WebApi/wwwroot/uploads /ZR.Admin.WebApi/wwwroot/uploads
/ZR.Admin.WebApi/wwwroot/Generatecode /ZR.Admin.WebApi/wwwroot/Generatecode
/ZR.Admin.WebApi/wwwroot/export /ZR.Admin.WebApi/wwwroot/export
/ZR.Vue/src/views/business/Gendemo.vue

View File

@ -63,6 +63,7 @@
<ItemGroup> <ItemGroup>
<Folder Include="Controllers\business\" /> <Folder Include="Controllers\business\" />
<Folder Include="Controllers\demo\" />
<Folder Include="wwwroot\export\" /> <Folder Include="wwwroot\export\" />
<Folder Include="wwwroot\Generatecode\" /> <Folder Include="wwwroot\Generatecode\" />
<Folder Include="wwwroot\uploads\" /> <Folder Include="wwwroot\uploads\" />

View File

@ -51,7 +51,6 @@ namespace ${options.ApiControllerNamespace}.Controllers
var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>(); var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>();
//搜索条件查询语法参考Sqlsugar //搜索条件查询语法参考Sqlsugar
//predicate = predicate.And(m => m.Name.Contains(parm.Name));
${QueryCondition} ${QueryCondition}
$if(genTable.SortField != "") $if(genTable.SortField != "")
var response = _${replaceDto.ModelTypeName}Service.GetPages(predicate.ToExpression(), parm, x => x.${genTable.SortField}, "${genTable.SortType}"); var response = _${replaceDto.ModelTypeName}Service.GetPages(predicate.ToExpression(), parm, x => x.${genTable.SortField}, "${genTable.SortType}");
@ -161,5 +160,25 @@ ${end}
string sFileName = ExportExcel(list, "${replaceDto.ModelTypeName}", "${genTable.FunctionName}"); string sFileName = ExportExcel(list, "${replaceDto.ModelTypeName}", "${genTable.FunctionName}");
return SUCCESS(new { path = "/export/" + sFileName, fileName = sFileName }); return SUCCESS(new { path = "/export/" + sFileName, fileName = sFileName });
} }
$if(genTable.SortField != "")
/// <summary>
/// 保存排序
/// </summary>
/// <param name="id"></param>
/// <param name="orderNum"></param>
/// <returns></returns>
[ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:update")]
[HttpGet("ChangeSort")]
[Log(Title = "保存排序", BusinessType = BusinessType.UPDATE)]
public IActionResult ChangeSort(int id = 0, int orderNum = 0)
{
if (id <= 0) { return ToResponse(ApiResult.Error(101, "请求参数错误")); }
bool result = _${replaceDto.ModelTypeName}Service.Update(w => w.${replaceDto.PKName} == id, it => new ${replaceDto.ModelTypeName}() { ${genTable.SortField} = orderNum });;
return SUCCESS(result);
}
$end
} }
} }

View File

@ -20,6 +20,11 @@ ${vueQueryFormHtml}
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="danger" :disabled="multiple" v-hasPermi="['${replaceDto.PermissionPrefix}:delete']" plain icon="el-icon-delete" size="mini" @click="handleDelete">删除</el-button> <el-button type="danger" :disabled="multiple" v-hasPermi="['${replaceDto.PermissionPrefix}:delete']" plain icon="el-icon-delete" size="mini" @click="handleDelete">删除</el-button>
</el-col> </el-col>
$if(genTable.SortField != "")
<el-col :span="1.5">
<el-button type="info" plain icon="el-icon-edit" size="mini" @click="handleShowSort" v-hasPermi="['${replaceDto.PermissionPrefix}:update']">修改排序</el-button>
</el-col>
$end
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
@ -59,7 +64,10 @@ import {
add${genTable.BusinessName}, add${genTable.BusinessName},
del${genTable.BusinessName}, del${genTable.BusinessName},
update${genTable.BusinessName}, update${genTable.BusinessName},
get${genTable.BusinessName} get${genTable.BusinessName},
$if(genTable.SortField != "")
changeSort
$end
} from '@/api/${genTable.ModuleName}/${lowerBusinessName}.js'; } from '@/api/${genTable.ModuleName}/${lowerBusinessName}.js';
export default { export default {
@ -68,7 +76,7 @@ export default {
return { return {
labelWidth: "100px", labelWidth: "100px",
formLabelWidth:"100px", formLabelWidth:"100px",
// 选中${replaceDto.PKName}数组 // 选中${replaceDto.FistLowerPk}数组
ids: [], ids: [],
// 非单个禁用 // 非单个禁用
single: true, single: true,
@ -91,12 +99,16 @@ export default {
$foreach(item in genTable.Columns) $foreach(item in genTable.Columns)
$if((item.HtmlType == "radio" || item.HtmlType == "select")) $if((item.HtmlType == "radio" || item.HtmlType == "select"))
// ${item.ColumnComment}选项列表 // ${item.ColumnComment}选项列表
${item.CsharpField2}Options: [], ${item.ColumnName}Options: [],
$end $end
$end $end
$if(replaceDto.UploadFile == 1) $if(replaceDto.UploadFile == 1)
//文件上传地址 //文件上传地址
uploadUrl: process.env.VUE_APP_BASE_API + "upload/SaveFile", uploadUrl: process.env.VUE_APP_BASE_API + "upload/SaveFile",
$end
$if(genTable.SortField != "")
// 是否显示编辑排序
showEditSort: false,
$end $end
// 数据列表 // 数据列表
dataList: [], dataList: [],
@ -117,7 +129,7 @@ ${VueViewEditFormRuleContent}
$foreach(item in genTable.Columns) $foreach(item in genTable.Columns)
$if((item.HtmlType == "radio" || item.HtmlType == "select") && item.DictType != "") $if((item.HtmlType == "radio" || item.HtmlType == "select") && item.DictType != "")
this.getDicts("${item.DictType}").then((response) => { this.getDicts("${item.DictType}").then((response) => {
this.${item.CsharpField2}Options = response.data; this.${item.ColumnName}Options = response.data;
}) })
$end $end
$end $end
@ -162,7 +174,7 @@ $end
}, },
// 多选框选中数据 // 多选框选中数据
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map((item) => item.${replaceDto.PKName}); this.ids = selection.map((item) => item.${replaceDto.FistLowerPk});
this.single = selection.length != 1 this.single = selection.length != 1
this.multiple = !selection.length; this.multiple = !selection.length;
}, },
@ -178,7 +190,7 @@ $end
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const Ids = row.${replaceDto.PKName} || this.ids; const Ids = row.${replaceDto.FistLowerPk} || this.ids;
del${genTable.BusinessName}(Ids).then((res) => { del${genTable.BusinessName}(Ids).then((res) => {
this.msgSuccess("删除成功"); this.msgSuccess("删除成功");
this.handleQuery(); this.handleQuery();
@ -187,8 +199,8 @@ $end
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset();
const ${replaceDto.PKName} = row.${replaceDto.PKName} || this.ids; const id = row.${replaceDto.FistLowerPk} || this.ids;
get${genTable.BusinessName}(${replaceDto.PKName}).then((res) => { get${genTable.BusinessName}(id).then((res) => {
if (res.code == 200) { if (res.code == 200) {
this.form = res.data; this.form = res.data;
this.open = true; this.open = true;
@ -196,6 +208,22 @@ $end
} }
}); });
}, },
$if(genTable.SortField != "")
// 显示编辑排序
handleShowSort() {
this.showEditSort = !this.showEditSort;
},
// 保存排序
handleChangeSort(item, orderNum) {
changeSort({ orderNum: orderNum, id: item.${replaceDto.FistLowerPk} }).then(
(response) => {
this.msgSuccess("修改成功");
this.getList();
this.showEditSort = false;
}
);
},
$end
$if(replaceDto.UploadFile == 1) $if(replaceDto.UploadFile == 1)
//文件上传前判断方法 //文件上传前判断方法
beforeFileUpload(file) { beforeFileUpload(file) {
@ -231,7 +259,7 @@ $end
if (valid) { if (valid) {
console.log(JSON.stringify(this.form)); console.log(JSON.stringify(this.form));
if (this.form.${replaceDto.PKName} != undefined || this.title === "修改数据") { if (this.form.${replaceDto.FistLowerPk} != undefined || this.title === "修改数据") {
update${genTable.BusinessName}(this.form).then((res) => { update${genTable.BusinessName}(this.form).then((res) => {
if (!res.data) { if (!res.data) {
this.msgError("修改失败"); this.msgError("修改失败");

View File

@ -65,3 +65,15 @@ export function export${replaceDto.ModelTypeName}(query) {
params: query params: query
}) })
} }
$if(genTable.SortField != "")
//排序
export function changeSort(data) {
return request({
url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}/ChangeSort',
method: 'get',
params: data
})
}
$end

View File

@ -215,15 +215,27 @@ namespace ZR.CodeGenerator
/// Vue 查询列表 /// Vue 查询列表
/// </summary> /// </summary>
/// <param name="dbFieldInfo"></param> /// <param name="dbFieldInfo"></param>
/// <param name="genTable"></param>
/// <returns></returns> /// <returns></returns>
public static string TplTableColumn(GenTableColumn dbFieldInfo) public static string TplTableColumn(GenTableColumn dbFieldInfo, GenTable genTable)
{ {
string columnName = dbFieldInfo.ColumnName; string columnName = dbFieldInfo.ColumnName;
string label = CodeGeneratorTool.GetLabelName(dbFieldInfo.ColumnComment, columnName); string label = CodeGeneratorTool.GetLabelName(dbFieldInfo.ColumnComment, columnName);
string showToolTip = dbFieldInfo.CsharpType == "string" ? ":show-overflow-tooltip=\"true\"" : ""; string showToolTip = dbFieldInfo.CsharpType == "string" ? ":show-overflow-tooltip=\"true\"" : "";
string formatter = !string.IsNullOrEmpty(dbFieldInfo.DictType) ? $" :formatter=\"{columnName}Format\"" : ""; string formatter = !string.IsNullOrEmpty(dbFieldInfo.DictType) ? $" :formatter=\"{columnName}Format\"" : "";
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
if (dbFieldInfo.IsList && dbFieldInfo.HtmlType.Equals(GenConstants.HTML_IMAGE_UPLOAD))
//有排序字段
if (!string.IsNullOrEmpty(genTable?.SortField.ToString()) && genTable?.SortField.ToString() == dbFieldInfo.CsharpField)
{
sb.AppendLine($@" <el-table-column prop=""{columnName}"" label=""排序"" width=""90"" sortable align=""center"">");
sb.AppendLine(@" <template slot-scope=""scope"">");
sb.AppendLine($@" <el-input size=""mini"" style=""width:50px"" controls-position=""no"" v-model.number=""scope.row.{columnName}"" @blur=""handleChangeSort(scope.row, scope.row.{columnName})"" v-if=""showEditSort"" />");
sb.AppendLine($" <span v-else>{{{{scope.row.{columnName}}}}}</span>");
sb.AppendLine(@" </template>");
sb.AppendLine(@" </el-table-column>");
}
else if (dbFieldInfo.IsList && dbFieldInfo.HtmlType.Equals(GenConstants.HTML_IMAGE_UPLOAD))
{ {
sb.AppendLine($" <el-table-column prop=\"{columnName}\" label=\"图片\">"); sb.AppendLine($" <el-table-column prop=\"{columnName}\" label=\"图片\">");
sb.AppendLine(" <template slot-scope=\"scope\">"); sb.AppendLine(" <template slot-scope=\"scope\">");

View File

@ -53,14 +53,9 @@ namespace ZR.CodeGenerator
replaceDto.PermissionPrefix = $"{dto.GenTable.ModuleName}:{dto.GenTable.ClassName.ToLower()}";//权限 replaceDto.PermissionPrefix = $"{dto.GenTable.ModuleName}:{dto.GenTable.ClassName.ToLower()}";//权限
replaceDto.Author = dto.GenTable.FunctionAuthor; replaceDto.Author = dto.GenTable.FunctionAuthor;
//StringBuilder sb1 = new StringBuilder();
//StringBuilder sb2 = new StringBuilder();
//循环表字段信息 //循环表字段信息
foreach (GenTableColumn dbFieldInfo in dto.GenTable.Columns) foreach (GenTableColumn dbFieldInfo in dto.GenTable.Columns)
{ {
string columnName = dbFieldInfo.ColumnName;
if (dbFieldInfo.IsPk || dbFieldInfo.IsIncrement) if (dbFieldInfo.IsPk || dbFieldInfo.IsIncrement)
{ {
PKName = dbFieldInfo.CsharpField; PKName = dbFieldInfo.CsharpField;
@ -73,13 +68,14 @@ namespace ZR.CodeGenerator
CodeGenerateTemplate.GetQueryDtoProperty(dbFieldInfo, replaceDto); CodeGenerateTemplate.GetQueryDtoProperty(dbFieldInfo, replaceDto);
replaceDto.VueViewFormHtml += CodeGenerateTemplate.TplVueFormContent(dbFieldInfo); replaceDto.VueViewFormHtml += CodeGenerateTemplate.TplVueFormContent(dbFieldInfo);
replaceDto.VueViewListHtml += CodeGenerateTemplate.TplTableColumn(dbFieldInfo); replaceDto.VueViewListHtml += CodeGenerateTemplate.TplTableColumn(dbFieldInfo, dto.GenTable);
replaceDto.VueViewEditFormRuleContent += CodeGenerateTemplate.TplFormRules(dbFieldInfo); replaceDto.VueViewEditFormRuleContent += CodeGenerateTemplate.TplFormRules(dbFieldInfo);
replaceDto.VueQueryFormHtml += CodeGenerateTemplate.TplQueryFormHtml(dbFieldInfo); replaceDto.VueQueryFormHtml += CodeGenerateTemplate.TplQueryFormHtml(dbFieldInfo);
} }
replaceDto.PKName = PKName; replaceDto.PKName = PKName;
replaceDto.PKType = PKType; replaceDto.PKType = PKType;
replaceDto.FistLowerPk = FirstLowerCase(PKName);
InitJntTemplate(dto, replaceDto); InitJntTemplate(dto, replaceDto);
GenerateModels(replaceDto, dto); GenerateModels(replaceDto, dto);
@ -308,16 +304,6 @@ namespace ZR.CodeGenerator
{ {
return string.IsNullOrEmpty(columnDescription) ? columnName : columnDescription; return string.IsNullOrEmpty(columnDescription) ? columnName : columnDescription;
} }
///// <summary>
///// 判断是否给属性添加?
///// </summary>
///// <param name="dbFieldInfo"></param>
///// <returns></returns>
//public static string GetModelRequired(GenTableColumn dbFieldInfo)
//{
// return (!dbFieldInfo.IsRequired && (IsNumber(dbFieldInfo.ColumnType) || dbFieldInfo.CsharpType == "DateTime")) ? "?" : "";
//}
/// <summary> /// <summary>
/// 获取C# 类型 /// 获取C# 类型
/// </summary> /// </summary>

View File

@ -9,6 +9,10 @@ namespace ZR.CodeGenerator.Model
/// </summary> /// </summary>
public string PKName { get; set; } public string PKName { get; set; }
/// <summary> /// <summary>
/// 首字母小写主键
/// </summary>
public string FistLowerPk{ get; set; }
/// <summary>
/// 主键类型 /// 主键类型
/// </summary> /// </summary>
public string PKType { get; set; } public string PKType { get; set; }

View File

@ -13,26 +13,33 @@ namespace ZR.Model.System.Generate
{ {
[SugarColumn(IsIdentity = true, IsPrimaryKey = true)] [SugarColumn(IsIdentity = true, IsPrimaryKey = true)]
public int ColumnId { get; set; } public int ColumnId { get; set; }
/// <summary>
/// 导入代码生成表列名 首字母转了小写
/// </summary>
public string ColumnName { get; set; } public string ColumnName { get; set; }
[SugarColumn(IsOnlyIgnoreUpdate = true)] [SugarColumn(IsOnlyIgnoreUpdate = true)]
public int TableId { get; set; } public int TableId { get; set; }
[SugarColumn(IsOnlyIgnoreUpdate = true)] [SugarColumn(IsOnlyIgnoreUpdate = true)]
public string TableName { get; set; } public string TableName { get; set; }
/// <summary>
/// 列说明
/// </summary>
public string ColumnComment { get; set; } public string ColumnComment { get; set; }
/// <summary>
/// 数据库列类型
/// </summary>
[SugarColumn(IsOnlyIgnoreUpdate = true)] [SugarColumn(IsOnlyIgnoreUpdate = true)]
public string ColumnType { get; set; } public string ColumnType { get; set; }
/// <summary>
/// C#类型
/// </summary>
public string CsharpType { get; set; } public string CsharpType { get; set; }
/// <summary>
/// C# 字段名 首字母大写
/// </summary>
public string CsharpField { get; set; } public string CsharpField { get; set; }
[SugarColumn(IsIgnore = true)]
public string CsharpField2
{
get
{
return CsharpField.Substring(0, 1).ToLower() + CsharpField[1..];
}
}
/// <summary> /// <summary>
/// 是否主键1是 /// 是否主键1是
/// </summary> /// </summary>
@ -42,20 +49,26 @@ namespace ZR.Model.System.Generate
/// 是否必填1是 /// 是否必填1是
/// </summary> /// </summary>
public bool IsRequired { get; set; } public bool IsRequired { get; set; }
/// <summary>
/// 是否自增1是
/// </summary>
[SugarColumn(IsOnlyIgnoreUpdate = true)] [SugarColumn(IsOnlyIgnoreUpdate = true)]
public bool IsIncrement { get; set; } public bool IsIncrement { get; set; }
/// <summary> /// <summary>
/// 是否插入 /// 是否插入1是
/// </summary> /// </summary>
public bool IsInsert { get; set; } public bool IsInsert { get; set; }
/// <summary> /// <summary>
/// 是否需要编辑 /// 是否需要编辑1是
/// </summary> /// </summary>
public bool IsEdit { get; set; } public bool IsEdit { get; set; }
/// <summary> /// <summary>
/// isList /// 是否显示列表1是
/// </summary> /// </summary>
public bool IsList { get; set; } public bool IsList { get; set; }
/// <summary>
/// 是否查询1是
/// </summary>
public bool IsQuery { get; set; } public bool IsQuery { get; set; }
/// <summary> /// <summary>
/// 显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件) /// 显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)