Merge pull request '整理代码生成功能' (#207) from koy07555/Admin.NET.Pro:整理代码生成功能 into main

Reviewed-on: http://101.43.53.74:3000/Admin.NET/Admin.NET.Pro/pulls/207
This commit is contained in:
zuohuaijun 2024-12-18 16:20:07 +08:00
commit ff40fcd4ab
5 changed files with 62 additions and 17 deletions

View File

@ -29,7 +29,7 @@ public class TestCodeGenDemo : EntityBase
/// 数值
/// </summary>
[SugarColumn(ColumnDescription = "数值")]
public int Age { get; set; }
public int? Age { get; set; }
/// <summary>
/// 时间选择
@ -41,41 +41,47 @@ public class TestCodeGenDemo : EntityBase
/// 开关
/// </summary>
[SugarColumn(ColumnDescription = "开关")]
public bool IsOk { get; set; }
public bool? IsOk { get; set; }
/// <summary>
/// 外键(sys_user)
/// </summary>
[SugarColumn(ColumnDescription = "外键(sys_user)")]
public long UserId { get; set; }
public long? UserId { get; set; }
/// <summary>
/// 树选择框(sys_org)
/// 树选择框1(sys_org)
/// </summary>
[SugarColumn(ColumnDescription = "树选择框(sys_org)")]
public long OrgId { get; set; }
[SugarColumn(ColumnDescription = "树选择框1(sys_org)")]
public long? OrgId { get; set; }
/// <summary>
/// 树选择框2(sys_menu)
/// </summary>
[SugarColumn(ColumnDescription = "树选择框2(sys_menu)")]
public long? MenuId { get; set; }
/// <summary>
/// 字典1
/// </summary>
[SugarColumn(ColumnDescription = "字典1")]
public string Dict1 { get; set; }
public string? Dict1 { get; set; }
/// <summary>
/// 枚举1
/// </summary>
[SugarColumn(ColumnDescription = "枚举1")]
public string Enum1 { get; set; }
public int? Enum1 { get; set; }
/// <summary>
/// 常量1
/// </summary>
[SugarColumn(ColumnDescription = "常量1")]
public int Const1 { get; set; }
public int? Const1 { get; set; }
/// <summary>
/// 上传控件
/// </summary>
[SugarColumn(ColumnDescription = "上传控件")]
public long UploadImage { get; set; }
public string? UploadImage { get; set; }
}

View File

@ -319,9 +319,9 @@ public class SysCodeGenService : IDynamicApiController, ITransient
/// <summary>
/// 获取库表信息
/// </summary>
/// <param name="containSysTable"></param>
/// <param name="excludeSysTable">是否排除带SysTable属性的表</param>
/// <returns></returns>
private async Task<IEnumerable<EntityInfo>> GetEntityInfos(bool containSysTable = false)
private async Task<IEnumerable<EntityInfo>> GetEntityInfos(bool excludeSysTable = false)
{
var types = new List<Type>();
if (_codeGenOptions.EntityAssemblyNames != null)
@ -357,7 +357,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
foreach (var ct in cosType)
{
// 若实体贴[SysTable]特性,则禁止显示系统自带的
if (containSysTable && ct.IsDefined(typeof(SysTableAttribute), false))
if (excludeSysTable && ct.IsDefined(typeof(SysTableAttribute), false))
continue;
var des = ct.GetCustomAttributes(typeof(DescriptionAttribute), false);

View File

@ -120,7 +120,7 @@ if (@column.QueryWhether == "Y"){
@:.Select<@(@Model.ClassName)Output>();
}
@if(@Model.TableField.Any(x=>x.EffectType == "ForeignKey")){
@:return await query.OrderBuilder(input,"[u].","[@(PKName)]").ToPagedListAsync(input.Page, input.PageSize);
@:return await query.OrderBuilder(input,"u.","@(PKName)").ToPagedListAsync(input.Page, input.PageSize);
} else {
@:return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize);
}

View File

@ -59,7 +59,7 @@
v-model="state.ruleForm.@(@column.LowerPropertyName)"
>
<template #default="{ node, data }">
<span>{{ data.name }}</span>
<span>{{ data.@LowerFirstLetter(@column.DisplayColumn) }}</span>
<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
</template>
</el-cascader>
@ -194,6 +194,9 @@ import { useUserInfo } from '/@@/stores/userInfo';
@foreach (var column in Model.TableField.Where(x=>x.EffectType == "ForeignKey").ToList()){
@:get@(@column.FkEntityName)@(@column.PropertyName)Dropdown,
}
@foreach (var column in Model.TableField.Where(x=>x.EffectType == "ApiTreeSelector").ToList()){
@:get@(@column.FkEntityName)Tree,
}
@:add@(@Model.ClassName),
@:update@(@Model.ClassName),
@:detail@(@Model.ClassName) } from "/@@/api/@(@Model.PagePath)/@(@Model.LowerClassName)";
@ -411,7 +414,7 @@ if(@column.EffectType == "ApiTreeSelector" && !definedObjects.ContainsKey("defin
@{definedObjects.Add("define_get@(@column.FkEntityName)TreeData", 1);}
@:const @LowerFirstLetter(@column.FkEntityName)TreeData = ref<any>([]);
@:const get@(@column.FkEntityName)TreeData = async () => {
@:let list = await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)@(@column.FkEntityName)TreeGet();
@:let list = await get@(@column.FkEntityName)Tree();
@:@LowerFirstLetter(@column.FkEntityName)TreeData.value = list.data.result ?? [];
@:};
@:get@(@column.FkEntityName)TreeData();

View File

@ -53,7 +53,7 @@
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
<el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)">
<el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable placeholder="请选择@(@column.ColumnComment)" clearable @@keyup.enter.native="handleQuery(true)" >
<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.name||''} [${item.code}] ${item.value}`" />
<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.code" :label="`${item.name||''} [${item.code}] ${item.value}`" />
</el-select>
</el-form-item>
</el-col>
@ -64,6 +64,24 @@
<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.name} [${item.code}] ${item.value}`" />
</el-select>
</el-form-item>
</el-col>
} else if(@column.EffectType == "ApiTreeSelector") {
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
<el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)">
<el-cascader
@:options="@LowerFirstLetter(@column.FkEntityName)TreeData"
@:props="{ checkStrictly: true, emitPath: false, value: '@LowerFirstLetter(@column.ValueColumn)', label: '@LowerFirstLetter(@column.DisplayColumn)' }"
placeholder="请选择@(column.ColumnComment)"
clearable=""
class="w100"
v-model="state.queryParams.@(@column.LowerPropertyName)"
>
<template #default="{ node, data }">
<span>{{ data.@LowerFirstLetter(@column.DisplayColumn) }}</span>
<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
</template>
</el-cascader>
</el-form-item>
</el-col>
} else if(@column.EffectType == "DatePicker") {
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
@ -225,6 +243,9 @@ foreach (var column in Model.QueryWhetherList){
if(@column.EffectType == "ForeignKey"){
@:import { get@(@column.FkEntityName)@(@column.PropertyName)Dropdown } from '/@@/api/@(@Model.PagePath)/@(@Model.LowerClassName)';
}
if(@column.EffectType == "ApiTreeSelector"){
@:import { get@(@column.FkEntityName)Tree } from '/@@/api/@(@Model.PagePath)/@(@Model.LowerClassName)';
}
}
}
@ -468,6 +489,21 @@ const handleDelete = (row: any) => {
@:get@(@column.FkEntityName)@(@column.PropertyName)DropdownList();
}
}
@foreach (var column in Model.QueryWhetherList) {
@if(@column.EffectType == "ApiTreeSelector") {
@:const @LowerFirstLetter(@column.FkEntityName)TreeData = ref<any>([]);
@:const get@(@column.FkEntityName)TreeData = async () => {
@if (@Model.IsApiService) {
@:let list = await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)@(@column.FkEntityName)Tree();
} else {
@:let list = await get@(@column.FkEntityName)Tree();
}
@:@LowerFirstLetter(@column.FkEntityName)TreeData.value = list.data.result ?? [];
@:};
@:get@(@column.FkEntityName)TreeData();
}
}
</script>
<style lang="scss" scoped>