优化代码生成&新增默认值处理

This commit is contained in:
不做码农 2023-02-17 11:02:27 +08:00
parent a51c85fcad
commit c7582e62ed
15 changed files with 128 additions and 75 deletions

View File

@ -13,30 +13,34 @@ namespace ${options.ModelsNamespace}.Models
[SugarTable("${genTable.TableName}")]
public class ${replaceDto.ModelTypeName}
{
$foreach(item in genTable.Columns)
${foreach(item in genTable.Columns)}
/// <summary>
/// 描述 :${item.ColumnComment} ${item.Remark}
/// 空值 :$if(item.IsRequired == "True")false${else}true${end}
/// ${item.ColumnComment} ${item.Remark}
/// </summary>
$if(item.IsPk || item.IsIncrement)
[SugarColumn(IsPrimaryKey = ${item.IsPk.ToString().ToLower()}, IsIdentity = ${item.IsIncrement.ToString().ToLower()}$if(item.CsharpField.ToLower() != item.ColumnName.ToLower()), ColumnName = "$item.ColumnName"$end)]
$elseif(item.CsharpField.ToLower() != item.ColumnName.ToLower())
[SugarColumn(ColumnName = "$item.ColumnName")]
$elseif(item.AutoFillType == 1 && item.CsharpType == "DateTime")
[SugarColumn(InsertServerTime = true, IsOnlyIgnoreUpdate = true)]
$elseif(item.AutoFillType == 2 && item.CsharpType == "DateTime")
[SugarColumn(UpdateServerTime = true, IsOnlyIgnoreInsert = true)]
$elseif(item.AutoFillType == 3 && item.CsharpType == "DateTime")
[SugarColumn(InsertServerTime = true, UpdateServerTime = true)]
$elseif(item.AutoFillType == 1)
[SugarColumn(IsOnlyIgnoreUpdate = true)]
$end
public $item.CsharpType$item.RequiredStr $item.CsharpField { get; set; }
${end}
$if(genTable.TplCategory == "tree")
[SugarColumn(IsIgnore = true)]
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; }
$end
$if(genTable.TplCategory == "subNavMore" && genTable.SubTable != null)
[Navigate(NavigateType.Dynamic, null)] //自定义关系映射
public List<${genTable.SubTable.ClassName}> ${genTable.SubTable.ClassName} { get; set; }

View File

@ -14,7 +14,5 @@ namespace ${options.RepositoriesNamespace}
[AppService(ServiceLifetime = LifeTime.Transient)]
public class ${replaceDto.ModelTypeName}Repository : BaseRepository<${replaceDto.ModelTypeName}>
{
#region 业务逻辑代码
#endregion
}
}

View File

@ -95,37 +95,30 @@ $end
/// <summary>
/// 添加${genTable.FunctionName}
/// </summary>
/// <param name="parm"></param>
/// <param name="model"></param>
/// <returns></returns>
public int Add${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} parm)
public int Add${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} model)
{
var response = Insert(parm, it => new
{
${foreach(item in genTable.Columns)}
$if((item.IsInsert))
it.$item.CsharpField,
$end
${end}
});
return response;
return Add(model, true);
}
/// <summary>
/// 修改${genTable.FunctionName}
/// </summary>
/// <param name="parm"></param>
/// <param name="model"></param>
/// <returns></returns>
public int Update${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} parm)
public int Update${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} model)
{
var response = Update(w => w.${replaceDto.PKName} == parm.${replaceDto.PKName}, it => new ${replaceDto.ModelTypeName}()
{
//var response = Update(w => w.${replaceDto.PKName} == model.${replaceDto.PKName}, it => new ${replaceDto.ModelTypeName}()
//{
$foreach(item in genTable.Columns)
$if((item.IsEdit))
$item.CsharpField = parm.$item.CsharpField,
// $item.CsharpField = model.$item.CsharpField,
$end
${end}
});
return response;
//});
//return response;
return Update(model, true);
}
/// <summary>

View File

@ -218,11 +218,10 @@ $end
reset() {
this.form = {
$foreach(item in genTable.Columns)
$if((item.IsEdit || item.IsInsert))
$item.CsharpFieldFl: undefined,
$end
$if((item.HtmlType == "checkbox"))
${item.CsharpFieldFl}Checked: [],
$else
$item.CsharpFieldFl: undefined,
$end
$end
};

View File

@ -210,11 +210,10 @@ $end
reset() {
this.form = {
$foreach(item in genTable.Columns)
$if((item.IsEdit || item.IsInsert))
$item.CsharpFieldFl: undefined,
$end
$if((item.HtmlType == "checkbox"))
$if(item.HtmlType == "checkbox")
${item.CsharpFieldFl}Checked: [],
$else
$item.CsharpFieldFl: undefined,
$end
$end
};

View File

@ -173,11 +173,10 @@ $end
reset() {
this.form = {
$foreach(item in genTable.Columns)
$if((item.IsEdit || item.IsInsert))
$item.CsharpFieldFl: undefined,
$end
$if((item.HtmlType == "checkbox"))
$if(item.HtmlType == "checkbox")
${item.CsharpFieldFl}Checked: [],
$else
$item.CsharpFieldFl: undefined,
$end
$end
};

View File

@ -13,6 +13,7 @@ $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)
@ -22,7 +23,6 @@ $end
$if(column.CsharpType == "int" || column.CsharpType == "long")
$set(numLabel = ".number")
$end
$if(column.HtmlType == "datetime")
<el-form-item label="$labelName">
<el-date-picker
@ -294,15 +294,19 @@ $end
</div>
</template>
<script setup name="${genTable.BusinessName.ToLower()}">
import { treelist${genTable.BusinessName}, list${genTable.BusinessName}, add${genTable.BusinessName}, del${genTable.BusinessName}, update${genTable.BusinessName}, get${genTable.BusinessName},
$if(showCustomInput) changeSort $end } from '@/api/${tool.FirstLowerCase(genTable.ModuleName)}/${genTable.BusinessName.ToLower()}.js'
$if(replaceDto.ShowEditor == 1)
import Editor from '@/components/Editor'
$end
const { proxy } = getCurrentInstance()
// 是否展开,默认全部折叠
const isExpandAll = ref(false)
const refreshTable = ref(true)
//展开/折叠操作
// 展开/折叠操作
function toggleExpandAll() {
refreshTable.value = false
isExpandAll.value = !isExpandAll.value
@ -399,6 +403,9 @@ $end
dataList.value = res.data
loading.value = false
}
.catch(() => {
loading.value = false
})
})
}

View File

@ -37,7 +37,7 @@ $if(column.HtmlType == "datetime")
:shortcuts="dateOptions">
</el-date-picker>
</el-form-item>
$elseif(column.HtmlType == "select" || column.HtmlType == "radio" || column.HtmlType == "selectMulti")
$elseif(column.HtmlType.Contains("select") || column.HtmlType == "radio")
<el-form-item label="${labelName}" prop="${columnName}">
<el-select clearable $if(column.HtmlType == "selectMulti")multiple$end v-model="queryParams.${columnName}" placeholder="请选择${labelName}">
<el-option v-for="item in $if(column.DictType != "") options.${column.DictType} $else options.${column.CsharpFieldFl}Options$end" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue">
@ -105,7 +105,14 @@ $end
</el-row>
<!-- 数据区域 -->
<el-table :data="dataList" v-loading="loading" ref="table" border highlight-current-row @sort-change="sortChange" @selection-change="handleSelectionChange">
<el-table
:data="dataList"
v-loading="loading"
ref="table"
border
highlight-current-row
@sort-change="sortChange"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center"/>
$foreach(column in genTable.Columns)
$set(labelName = "")
@ -135,12 +142,21 @@ $if(column.HtmlType == "customInput" && column.IsPk == false)
$elseif(column.HtmlType == "imageUpload")
<el-table-column prop="${columnName}" label="${labelName}" align="center" v-if="columns.showColumn('${columnName}')">
<template #default="scope">
<el-image preview-teleported :hide-on-click-modal="true" lazy class="table-td-thumb" fit="contain" :src="scope.row.${columnName}" :preview-src-list="[scope.row.${columnName}]">
<div><el-icon :size="15"><document /></el-icon></div>
<el-image
preview-teleported
:hide-on-click-modal="true"
lazy
class="table-td-thumb"
fit="contain"
:src="scope.row.${columnName}"
:preview-src-list="[scope.row.${columnName}]">
<div>
<el-icon :size="15"><document /></el-icon>
</div>
</el-image>
</template>
</el-table-column>
$elseif(column.HtmlType == "checkbox" || column.HtmlType == "select" || column.HtmlType == "radio" || column.HtmlType == "selectMulti")
$elseif(column.HtmlType == "checkbox" || column.HtmlType.Contains("select") || column.HtmlType == "radio")
<el-table-column prop="${columnName}" label="${labelName}" align="center"${column.sortStr} v-if="columns.showColumn('${columnName}')">
<template #default="scope">
$if(column.HtmlType == "checkbox")
@ -189,15 +205,19 @@ $if(column.CsharpType == "int" || column.CsharpType == "long")
$end
$if(column.IsPK || column.IsIncrement)
$if(column.IsPK && column.IsIncrement == false)
<el-col :lg="${options.ColNum}">
<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-input v-model="form.${columnName}" placeholder="请输入${labelName}" :disabled="opertype != 1"/>
</el-form-item>
</el-col>
$else
<el-col :lg="${options.ColNum}" v-if="opertype != 1">
<el-form-item label="${labelName}" prop="${columnName}">
<el-input-number v-model.number="form.${columnName}" controls-position="right" placeholder="请输入${labelName}" :disabled="true"/>
</el-form-item>
</el-col>
$end
$else
$if(column.HtmlType == "inputNumber" || column.HtmlType == "customInput")
<el-col :lg="${options.ColNum}">
@ -223,7 +243,7 @@ $elseif(column.HtmlType == "fileUpload")
<UploadFile v-model="form.${columnName}" :data="{ uploadType: 1 }" />
</el-form-item>
</el-col>
$elseif(column.HtmlType == "radio")
$elseif(column.HtmlType == "radio" || column.HtmlType == "selectRadio")
<el-col :lg="${options.ColNum}">
<el-form-item label="${labelName}" prop="${columnName}">
<el-radio-group v-model="form.${columnName}"${column.DisabledStr}>
@ -247,7 +267,10 @@ $elseif(column.HtmlType == "select" || column.HtmlType == "selectMulti")
<el-col :lg="${options.ColNum}">
<el-form-item label="${labelName}" prop="${columnName}">
<el-select v-model="form.${columnName}" placeholder="请选择${labelName}"${column.DisabledStr}>
<el-option v-for="item in $if(column.DictType != "") options.${column.DictType} $else options.${column.CsharpFieldFl}Options$end" :key="item.dictValue" :label="item.dictLabel" :value="${value}"></el-option>
<el-option
v-for="item in $if(column.DictType != "") options.${column.DictType} $else options.${column.CsharpFieldFl}Options$end"
:key="item.dictValue" :label="item.dictLabel"
:value="${value}"></el-option>
</el-select>
</el-form-item>
</el-col>
@ -259,6 +282,12 @@ $elseif(column.HtmlType == "checkbox")
</el-checkbox-group>
</el-form-item>
</el-col>
$elseif(column.HtmlType == "colorPicker")
<el-col :lg="12">
<el-form-item label="${labelName}" prop="${columnName}">
<el-color-picker v-model="form.${columnName}" />
</el-form-item>
</el-col>
$else
<el-col :lg="${options.ColNum}">
<el-form-item label="${labelName}" prop="${columnName}">
@ -284,6 +313,9 @@ import { list${genTable.BusinessName}, add${genTable.BusinessName}, del${genTabl
$if(replaceDto.ShowBtnTruncate) clear${genTable.BusinessName}, $end
$if(showCustomInput) changeSort $end }
from '@/api/${tool.FirstLowerCase(genTable.ModuleName)}/${genTable.BusinessName.ToLower()}.js'
$if(replaceDto.ShowEditor == 1)
import Editor from '@/components/Editor'
$end
const { proxy } = getCurrentInstance()
// 选中${replaceDto.FistLowerPk}数组数组
@ -323,7 +355,7 @@ $if(item.HtmlType == "datetime" && item.IsQuery == true)
const dateRange${item.CsharpField} = ref([])
$elseif(item.HtmlType == "customInput")
// ******************自定义编辑 start **********************
/******************自定义编辑 start **********************/
const editIndex = ref(-1)
const columnRefs = ref([])
const setColumnsRef = (el) => {
@ -352,7 +384,7 @@ function handleChangeSort(info) {
proxy.${modal}modal.msgSuccess('修改成功')
})
}
// ******************自定义编辑 end **********************
/******************自定义编辑 end **********************/
$end
$end
@ -360,7 +392,7 @@ $end
$set(index = 0)
var dictParams = [
$foreach(item in genTable.Columns)
$if((item.HtmlType == "radio" || item.HtmlType == "select" || item.HtmlType == "selectMulti" || item.HtmlType == "checkbox") && item.DictType != "")
$if((item.HtmlType == "radio" || item.HtmlType.Contains("select") || item.HtmlType == "checkbox") && item.DictType != "")
{ dictType: "${item.DictType}" },
$set(index = index + 1)
$end
@ -457,7 +489,7 @@ $end
},
options: {
$foreach(column in genTable.Columns)
$if(column.HtmlType == "radio" || column.HtmlType == "select" || column.HtmlType == "checkbox" || column.HtmlType == "selectMulti")
$if(column.HtmlType == "radio" || column.HtmlType.Contains("select") || column.HtmlType == "checkbox")
//$if(column.ColumnComment != "") ${column.ColumnComment} $else ${column.CsharpFieldFl}$end选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
$if(column.DictType != "")${column.DictType}$else${column.CsharpFieldFl}Options$end: [],
$end
@ -477,11 +509,10 @@ function cancel(){
function reset() {
form.value = {
$foreach(item in genTable.Columns)
$if((item.IsEdit || item.IsInsert))
$item.CsharpFieldFl: undefined,
$end
$if((item.HtmlType == "checkbox"))
${item.CsharpFieldFl}Checked: [],
$else
$item.CsharpFieldFl: undefined,
$end
$end
};
@ -508,10 +539,10 @@ function handleUpdate(row) {
opertype.value = 2
form.value = {
...data,
...data,
$foreach(item in genTable.Columns)
$if(item.HtmlType == "checkbox")
${item.CsharpFieldFl}Checked: data.${item.CsharpFieldFl} ? data.${item.CsharpFieldFl}.split(',') : [],
${item.CsharpFieldFl}Checked: data.${item.CsharpFieldFl} ? data.${item.CsharpFieldFl}.split(',') : [],
$end
$end
}
@ -551,15 +582,16 @@ $end
function handleDelete(row) {
const Ids = row.${replaceDto.FistLowerPk} || ids.value
proxy.${confirm}confirm('是否确认删除参数编号为"' + Ids + '"的数据项?')
.then(function () {
proxy
.${confirm}confirm('是否确认删除参数编号为"' + Ids + '"的数据项?')
.then(function () {
return del${genTable.BusinessName}(Ids)
})
.then(() => {
})
.then(() => {
getList()
proxy.${modal}modal.msgSuccess("删除成功")
})
.catch(() => {})
})
.catch(() => {})
}
$if(replaceDto.ShowBtnTruncate)

View File

@ -79,6 +79,10 @@ namespace ZR.CodeGenerator
{
replaceDto.SelectMulti = 1;
}
if (dbFieldInfo.HtmlType.Equals(GenConstants.HTML_EDITOR))
{
replaceDto.ShowEditor = 1;
}
dbFieldInfo.CsharpFieldFl = dbFieldInfo.CsharpField.FirstLowerCase();
}

View File

@ -60,5 +60,9 @@ namespace ZR.CodeGenerator.Model
public int SelectMulti { get; set; }
public string Author { get; set; }
public string AddTime { get; set; } = DateTime.Now.ToString("yyyy-MM-dd");
/// <summary>
/// 是否有编辑器
/// </summary>
public int ShowEditor { get; set; }
}
}

View File

@ -77,5 +77,9 @@ namespace ZR.Model.System.Dto
/// 备注
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 自动填充类型
/// </summary>
public int? AutoFillType { get; set; }
}
}

View File

@ -91,6 +91,10 @@ namespace ZR.Model.System.Generate
/// 字典类型
/// </summary>
public string DictType { get; set; } = "";
/// <summary>
/// 自动填充类型 1、添加 2、编辑 3、添加编辑
/// </summary>
public int AutoFillType { get; set; }
#region
[SugarColumn(IsIgnore = true)]
@ -126,7 +130,7 @@ namespace ZR.Model.System.Generate
{
get
{
return (((!IsInsert && !IsEdit) || IsPk) && !IsRequired) ? " :disabled=\"true\"" : "";
return ((IsPk) && !IsRequired) ? " :disabled=\"true\"" : "";
}
}

View File

@ -134,13 +134,16 @@ namespace ZR.Service.System
insertColumns.Add(column);
}
}
GenTableColumnService.Insert(insertColumns);
List<GenTableColumn> delColumns = tableColumns.FindAll(column => !dbTableColumneNames.Contains(column.ColumnName));
if (delColumns != null && delColumns.Count > 0)
bool result = UseTran2(() =>
{
GenTableColumnService.Delete(delColumns.Select(f => f.ColumnId).ToList());
}
GenTableColumnService.Insert(insertColumns);
List<GenTableColumn> delColumns = tableColumns.FindAll(column => !dbTableColumneNames.Contains(column.ColumnName));
if (delColumns != null && delColumns.Count > 0)
{
GenTableColumnService.Delete(delColumns.Select(f => f.ColumnId).ToList());
}
});
}
}
@ -227,7 +230,8 @@ namespace ZR.Service.System
it.Update_by,
it.Remark,
it.IsSort,
it.IsExport
it.IsExport,
it.AutoFillType
})
.ExecuteCommand();
}

View File

@ -800,6 +800,7 @@ CREATE TABLE `gen_table_column` (
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`autoFillType` int(11) NULL DEFAULT NULL COMMENT '自动填充类型',
PRIMARY KEY (`columnId`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 63 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '代码生成业务表字段' ROW_FORMAT = Dynamic;

View File

@ -749,7 +749,8 @@ create table gen_table_column (
create_time datetime , --'创建时间',
update_by varchar(64) default '' , --'更新者',
update_time datetime , --'更新时间',
remark VARCHAR(200)
remark VARCHAR(200) ,--
autoFillType INT -- 1 2 3
)
GO
-- ----------------------------