Merge pull request 'main' (#8) from Admin.NET/Admin.NET.Pro:main into main

Reviewed-on: http://101.43.53.74:3000/shuerchoi/Admin.NET.Pro/pulls/8
This commit is contained in:
shuerchoi 2024-07-24 12:00:47 +08:00
commit 0ffd58cd36
15 changed files with 216 additions and 147 deletions

View File

@ -32,13 +32,13 @@
<PackageReference Include="Novell.Directory.Ldap.NETStandard" Version="3.6.0" /> <PackageReference Include="Novell.Directory.Ldap.NETStandard" Version="3.6.0" />
<PackageReference Include="QRCoder" Version="1.6.0" /> <PackageReference Include="QRCoder" Version="1.6.0" />
<PackageReference Include="RabbitMQ.Client" Version="6.8.1" /> <PackageReference Include="RabbitMQ.Client" Version="6.8.1" />
<PackageReference Include="SixLabors.ImageSharp.Web" Version="3.1.2" /> <PackageReference Include="SixLabors.ImageSharp.Web" Version="3.1.3" />
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.4.0" /> <PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.4.0" />
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3" Version="3.6.0" /> <PackageReference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3" Version="3.6.0" />
<PackageReference Include="SqlSugarCore" Version="5.1.4.166" /> <PackageReference Include="SqlSugarCore" Version="5.1.4.166" />
<PackageReference Include="SSH.NET" Version="2024.1.0" /> <PackageReference Include="SSH.NET" Version="2024.1.0" />
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.4.3" /> <PackageReference Include="System.Linq.Dynamic.Core" Version="1.4.3" />
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1052" /> <PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1054" />
<PackageReference Include="UAParser" Version="3.1.47" /> <PackageReference Include="UAParser" Version="3.1.47" />
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" /> <PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
</ItemGroup> </ItemGroup>

View File

@ -81,6 +81,13 @@ public partial class SysCodeGenConfig : EntityBase
[MaxLength(64)] [MaxLength(64)]
public string? FkColumnName { get; set; } public string? FkColumnName { get; set; }
/// <summary>
/// 外键链接字段
/// </summary>
[SugarColumn(ColumnDescription = "外键链接字段", Length = 64)]
[MaxLength(64)]
public string? FkLinkColumnName { get; set; }
/// <summary> /// <summary>
/// 外键显示字段.NET类型 /// 外键显示字段.NET类型
/// </summary> /// </summary>

View File

@ -77,6 +77,11 @@ public class CodeGenConfig
/// </summary> /// </summary>
public string FkColumnName { get; set; } public string FkColumnName { get; set; }
/// <summary>
/// 外键链接字段
/// </summary>
public string FkLinkColumnName { get; set; }
/// <summary> /// <summary>
/// 外键显示字段(首字母小写) /// 外键显示字段(首字母小写)
/// </summary> /// </summary>

View File

@ -178,7 +178,7 @@ public class DeleteCodeGenInput
public long Id { get; set; } public long Id { get; set; }
} }
public class UpdateCodeGenInput : PageCodeGenInput public class UpdateCodeGenInput : AddCodeGenInput
{ {
/// <summary> /// <summary>
/// 代码生成器Id /// 代码生成器Id

View File

@ -61,7 +61,8 @@ public class SysCodeGenService : IDynamicApiController, ITransient
var codeGen = input.Adapt<SysCodeGen>(); var codeGen = input.Adapt<SysCodeGen>();
var newCodeGen = await _db.Insertable(codeGen).ExecuteReturnEntityAsync(); var newCodeGen = await _db.Insertable(codeGen).ExecuteReturnEntityAsync();
// 加入配置表中
// 增加配置表
_codeGenConfigService.AddList(GetColumnList(input), newCodeGen); _codeGenConfigService.AddList(GetColumnList(input), newCodeGen);
} }
@ -78,7 +79,12 @@ public class SysCodeGenService : IDynamicApiController, ITransient
if (isExist) if (isExist)
throw Oops.Oh(ErrorCodeEnum.D1400); throw Oops.Oh(ErrorCodeEnum.D1400);
await _db.Updateable(input.Adapt<SysCodeGen>()).ExecuteCommandAsync(); var codeGen = input.Adapt<SysCodeGen>();
await _db.Updateable(codeGen).ExecuteCommandAsync();
// 更新配置表
await _codeGenConfigService.DeleteCodeGenConfig(codeGen.Id);
_codeGenConfigService.AddList(GetColumnList(input.Adapt<AddCodeGenInput>()), codeGen);
} }
/// <summary> /// <summary>
@ -97,7 +103,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
{ {
_db.Deleteable<SysCodeGen>().In(u.Id).ExecuteCommand(); _db.Deleteable<SysCodeGen>().In(u.Id).ExecuteCommand();
// 删除配置表 // 删除配置表
codeGenConfigTaskList.Add(_codeGenConfigService.DeleteCodeGenConfig(u.Id)); codeGenConfigTaskList.Add(_codeGenConfigService.DeleteCodeGenConfig(u.Id));
}); });
await Task.WhenAll(codeGenConfigTaskList); await Task.WhenAll(codeGenConfigTaskList);

View File

@ -180,7 +180,7 @@ public class SysRegionService : IDynamicApiController, ITransient
list.Add(region); list.Add(region);
// 市级 // 市级
if (!string.IsNullOrEmpty(item.Href) && syncLevel > 1) if (!string.IsNullOrEmpty(item.Href))
{ {
var dom1 = await context.OpenAsync(item.Href); var dom1 = await context.OpenAsync(item.Href);
var itemList1 = dom1.QuerySelectorAll("table.citytable tr.citytr td a"); var itemList1 = dom1.QuerySelectorAll("table.citytable tr.citytr td a");
@ -196,6 +196,13 @@ public class SysRegionService : IDynamicApiController, ITransient
Remark = item1.Href, Remark = item1.Href,
Level = 2, Level = 2,
}; };
// 若URL中查询的一级行政区域缺少Code则通过二级区域填充
if (list.Count == 1 && !string.IsNullOrEmpty(region1.Code))
region.Code = region1.Code.Substring(0, 2).PadRight(region1.Code.Length, '0');
// 同步层级为“1-省级”退出
if (syncLevel < 2)
break;
list.Add(region1); list.Add(region1);
// 区县级 // 区县级

View File

@ -92,6 +92,10 @@ public static class SqlSugarSetup
IsAutoUpdateQueryFilter = true, // 启用更新查询过滤器 IsAutoUpdateQueryFilter = true, // 启用更新查询过滤器
SqlServerCodeFirstNvarchar = true // 采用Nvarchar SqlServerCodeFirstNvarchar = true // 采用Nvarchar
}; };
// 若库类型是人大金仓则默认设置PG模式
if (config.DbType == SqlSugar.DbType.Kdbndp)
config.MoreSettings.DatabaseModel = SqlSugar.DbType.PostgreSQL; // 配置PG模式主要是兼容系统表差异
} }
/// <summary> /// <summary>

View File

@ -78,7 +78,7 @@ if (@column.QueryWhether == "Y"){
@foreach (var column in Model.TableField){ @foreach (var column in Model.TableField){
if(@column.EffectType == "fk"){ if(@column.EffectType == "fk"){
joinTableName += ", " + column.PropertyName.ToLower(); joinTableName += ", " + column.PropertyName.ToLower();
@:.LeftJoin<@(@column.FkEntityName)>((@(@joinTableName)) => u.@(@column.PropertyName) == @(@column.PropertyName.ToLower()).Id ) @:.LeftJoin<@(@column.FkEntityName)>((@(@joinTableName)) => u.@(@column.PropertyName) == @(@column.PropertyName.ToLower()).@(@column.FkLinkColumnName) )
} else if(@column.EffectType == "ApiTreeSelect"){ } else if(@column.EffectType == "ApiTreeSelect"){
joinTableName += ", " + column.PropertyName.ToLower(); joinTableName += ", " + column.PropertyName.ToLower();
@:.LeftJoin<@(@column.FkEntityName)>((@(@joinTableName)) => u.@(@column.PropertyName) == @(@column.PropertyName.ToLower()).@(@column.ValueColumn) ) @:.LeftJoin<@(@column.FkEntityName)>((@(@joinTableName)) => u.@(@column.PropertyName) == @(@column.PropertyName.ToLower()).@(@column.ValueColumn) )
@ -205,7 +205,7 @@ if(@column.EffectType == "fk" && (@column.WhetherAddUpdate == "Y" || column.Quer
@:.Select(u => new @:.Select(u => new
@:{ @:{
@:Label = u.@(@column.FkColumnName), @:Label = u.@(@column.FkColumnName),
@:Value = u.Id @:Value = u.@(@column.FkLinkColumnName)
@:} @:}
@:).ToListAsync(); @:).ToListAsync();
@:} @:}

View File

@ -3,23 +3,23 @@
{ {
return text.ToString()[..1].ToLower() + text[1..]; // 首字母小写 return text.ToString()[..1].ToLower() + text[1..]; // 首字母小写
} }
var pkField = Model.TableField.Where(c => c.ColumnKey == "True").FirstOrDefault(); var pkField = Model.TableField.Where(c => c.ColumnKey == "True").FirstOrDefault();
string pkFieldName = null; string pkFieldName = null;
if(pkField != null && !string.IsNullOrEmpty(pkField.PropertyName)) if(pkField != null && !string.IsNullOrEmpty(pkField.PropertyName))
{ {
pkFieldName = LowerFirstLetter(pkField.PropertyName); pkFieldName = LowerFirstLetter(pkField.PropertyName);
} }
Dictionary<string, int> definedObjects = new Dictionary<string, int>(); Dictionary<string, int> definedObjects = new Dictionary<string, int>();
bool haveLikeCdt = false; bool haveLikeCdt = false;
foreach (var column in Model.TableField){ foreach (var column in Model.TableField){
if (column.QueryWhether == "Y" && column.QueryType == "like"){ if (column.QueryWhether == "Y" && column.QueryType == "like"){
haveLikeCdt = true; haveLikeCdt = true;
} }
} }
} }
<template> <template>
<div class="@(@Model.LowerClassName)-container"> <div class="@(@Model.LowerClassName)-container">
<el-card shadow="hover" :body-style="{ padding: '20px 20px 16px 10px', display: 'flex', width: '100%', height: '100%', alignItems: 'start' }"> <el-card shadow="hover" :body-style="{ padding: '20px 20px 16px 10px', display: 'flex', width: '100%', height: '100%', alignItems: 'start' }">
<el-form :model="state.queryParams" ref="queryForm" :show-message="false" :inlineMessage="true" label-width="auto" style="flex: 1 1 0%" @@submit.prevent="handleQuery" > <el-form :model="state.queryParams" ref="queryForm" :show-message="false" :inlineMessage="true" label-width="auto" style="flex: 1 1 0%" @@submit.prevent="handleQuery" >
<el-row :gutter="10"> <el-row :gutter="10">
@if(Model.QueryWhetherList.Count > 0){ @if(Model.QueryWhetherList.Count > 0){
@ -38,8 +38,8 @@
} else if(@column.EffectType == "InputNumber") { } else if(@column.EffectType == "InputNumber") {
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI"> <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
<el-form-item label="@column.ColumnComment"> <el-form-item label="@column.ColumnComment">
<el-input-number v-model="state.queryParams.@(@column.LowerPropertyName)" placeholder="请输入@(@column.ColumnComment)" clearable @@keyup.enter.native="handleQuery" /> <el-input-number v-model="state.queryParams.@(@column.LowerPropertyName)" placeholder="请输入@(@column.ColumnComment)" clearable @@keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
} else if(@column.EffectType == "fk") { } else if(@column.EffectType == "fk") {
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI"> <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
@ -86,7 +86,7 @@
<el-row> <el-row>
<el-col> <el-col>
<el-button-group> <el-button-group>
<el-button type="primary" icon="ele-Search" @@click="handleQuery" v-auth="'@(@Model.LowerClassName):page'" :loading="options.loading"> 查询 </el-button> <el-button type="primary" icon="ele-Search" @@click="handleQuery" v-auth="'@(@Model.LowerClassName)/page'" :loading="options.loading"> 查询 </el-button>
<el-button icon="ele-Refresh" @@click="resetQuery" :loading="options.loading"> 重置 </el-button> <el-button icon="ele-Refresh" @@click="resetQuery" :loading="options.loading"> 重置 </el-button>
<el-button icon="ele-ZoomIn" @@click="changeAdvanceQueryUI" v-if="!state.showAdvanceQueryUI" style="margin-left: 5px"> 高级查询 </el-button> <el-button icon="ele-ZoomIn" @@click="changeAdvanceQueryUI" v-if="!state.showAdvanceQueryUI" style="margin-left: 5px"> 高级查询 </el-button>
<el-button icon="ele-ZoomOut" @@click="changeAdvanceQueryUI" v-if="state.showAdvanceQueryUI" style="margin-left: 5px"> 隐藏 </el-button> <el-button icon="ele-ZoomOut" @@click="changeAdvanceQueryUI" v-if="state.showAdvanceQueryUI" style="margin-left: 5px"> 隐藏 </el-button>
@ -95,17 +95,17 @@
</el-row> </el-row>
</el-card> </el-card>
<el-card class="full-table" shadow="hover" style="margin-top: 5px"> <el-card class="full-table" shadow="hover" style="margin-top: 5px">
<vxe-grid ref="xGrid" class="xGrid-style" v-bind="options" v-on="gridEvents"> <vxe-grid ref="xGrid" class="xGrid-style" v-bind="options" v-on="gridEvents">
<template #toolbar_buttons> <template #toolbar_buttons>
<el-button type="primary" icon="ele-Plus" @@click="handleAdd" v-auth="'@(@Model.LowerClassName):add'"> 新增 </el-button> <el-button type="primary" icon="ele-Plus" @@click="handleAdd" v-auth="'@(@Model.LowerClassName)/add'"> 新增 </el-button>
</template> </template>
<template #toolbar_tools> </template> <template #toolbar_tools> </template>
<template #empty> <template #empty>
<el-empty :image-size="200" /> <el-empty :image-size="200" />
</template> </template>
@foreach (var column in Model.TableField) { @foreach (var column in Model.TableField) {
if(@column.WhetherTable == "Y") { if(@column.WhetherTable == "Y") {
if(@column.EffectType == "Upload") { if(@column.EffectType == "Upload") {
@:<template #row_@(@column.LowerPropertyName)="{ row }"> @:<template #row_@(@column.LowerPropertyName)="{ row }">
@:<el-popover @:<el-popover
@ -144,41 +144,41 @@
@:</template> @:</template>
} else if(@column.EffectType == "ConstSelector") { } else if(@column.EffectType == "ConstSelector") {
@:<template #row_@(@column.LowerPropertyName)="{ row }"> @:<template #row_@(@column.LowerPropertyName)="{ row }">
@:<span>{{codeToName(row.@(@column.LowerPropertyName), '@(@column.DictTypeCode)')}}</span> @:<span>{{codeToName(row.@(@column.LowerPropertyName), '@(@column.DictTypeCode)')}}</span>
@:</template> @:</template>
} else if(@column.EffectType == "Select") { } else if(@column.EffectType == "Select") {
@:<template #row_@(@column.LowerPropertyName)="{ row }"> @:<template #row_@(@column.LowerPropertyName)="{ row }">
@:<el-tag :type="di('@(@column.DictTypeCode)', row.@(@column.LowerPropertyName))?.tagType"> {{di('@(@column.DictTypeCode)', row.@column.LowerPropertyName)?.name}}</el-tag> @:<el-tag :type="di('@(@column.DictTypeCode)', row.@(@column.LowerPropertyName))?.tagType"> {{di('@(@column.DictTypeCode)', row.@column.LowerPropertyName)?.name}}</el-tag>
@:</template> @:</template>
} else if(@column.EffectType == "EnumSelector") { } else if(@column.EffectType == "EnumSelector") {
@:<template #row_@(@column.LowerPropertyName)="{ row }"> @:<template #row_@(@column.LowerPropertyName)="{ row }">
@:<el-tag :type="dv('@(@column.DictTypeCode)', row.@(@column.LowerPropertyName))?.tagType"> {{dv('@(@column.DictTypeCode)', row.@column.LowerPropertyName)?.name}}</el-tag> @:<el-tag :type="dv('@(@column.DictTypeCode)', row.@(@column.LowerPropertyName))?.tagType"> {{dv('@(@column.DictTypeCode)', row.@column.LowerPropertyName)?.name}}</el-tag>
@:</template> @:</template>
} }
} }
} }
<template #row_record="{ row }"> <template #row_record="{ row }">
<ModifyRecord :data="row" /> <ModifyRecord :data="row" />
</template> </template>
<template #row_buttons="{ row }"> <template #row_buttons="{ row }">
@if(@Model.PrintType == "custom") { @if(@Model.PrintType == "custom") {
<el-tooltip content="打印" placement="top"> <el-tooltip content="打印" placement="top">
<el-button icon="ele-Printer" size="small" text type="primary" @@click="handlePrint(row)" v-auth="'@(@Model.LowerClassName):print'" /> <el-button icon="ele-Printer" size="small" text type="primary" @@click="handlePrint(row)" v-auth="'@(@Model.LowerClassName)/print'" />
</el-tooltip> </el-tooltip>
} }
<el-tooltip content="编辑" placement="top"> <el-tooltip content="编辑" placement="top">
<el-button icon="ele-Edit" size="small" text type="primary" @@click="handleEdit(row)" v-auth="'@(@Model.LowerClassName):update'" /> <el-button icon="ele-Edit" size="small" text type="primary" @@click="handleEdit(row)" v-auth="'@(@Model.LowerClassName)/update'" />
</el-tooltip> </el-tooltip>
<el-tooltip content="删除" placement="top"> <el-tooltip content="删除" placement="top">
<el-button icon="ele-Delete" size="small" text type="danger" @@click="handleDelete(row)" v-auth="'@(@Model.LowerClassName):delete'" /> <el-button icon="ele-Delete" size="small" text type="danger" @@click="handleDelete(row)" v-auth="'@(@Model.LowerClassName)/delete'" />
</el-tooltip> </el-tooltip>
</template> </template>
</vxe-grid> </vxe-grid>
</el-card> </el-card>
<PrintDialog ref="printDialogRef" :title="state.title" @@reloadTable="handleQuery" /> <PrintDialog ref="printDialogRef" :title="state.title" @@reloadTable="handleQuery" />
<EditDialog ref="editDialogRef" :title="state.title" @@reloadTable="handleQuery" /> <EditDialog ref="editDialogRef" :title="state.title" @@reloadTable="handleQuery" />
</div> </div>
</template> </template>
<script lang="ts" setup name="@(@Model.LowerClassName)"> <script lang="ts" setup name="@(@Model.LowerClassName)">
@ -192,7 +192,7 @@ import { Local } from '/@@/utils/storage';
@if(@Model.TableField.Any(x=>x.EffectType == "ConstSelector")){ @if(@Model.TableField.Any(x=>x.EffectType == "ConstSelector")){
@:import { codeToName, getConstType } from "/@@/utils/constHelper"; @:import { codeToName, getConstType } from "/@@/utils/constHelper";
} }
@if(@Model.TableField.Any(x=>x.EffectType == "Select") || @Model.TableField.Any(x=>x.EffectType == "EnumSelector")){ @if(@Model.TableField.Any(x=>x.EffectType == "Select") || @Model.TableField.Any(x=>x.EffectType == "EnumSelector")){
@:import { getDictLabelByVal as di, getDictDataList as dl } from '/@@/utils/dict-utils'; @:import { getDictLabelByVal as di, getDictDataList as dl } from '/@@/utils/dict-utils';
} }
@ -224,12 +224,12 @@ import ModifyRecord from '/@@/components/table/modifyRecord.vue';
// 模型 // 模型
@:import { @(@Model.ClassName), @(@Model.ClassName)Input, @(@Model.ClassName)Output } from '/@@/api-services/models'; @:import { @(@Model.ClassName), @(@Model.ClassName)Input, @(@Model.ClassName)Output } from '/@@/api-services/models';
} else { } else {
@:import { page@(@Model.ClassName), delete@(@Model.ClassName) } from '/@@/api/@(@Model.PagePath)/@(@Model.LowerClassName)'; @:import { page@(@Model.ClassName), delete@(@Model.ClassName) } from '/@@/api/@(@Model.PagePath)/@(@Model.LowerClassName)';
foreach (var column in Model.QueryWhetherList){ foreach (var column in Model.QueryWhetherList){
if(@column.EffectType == "fk"){ if(@column.EffectType == "fk"){
@:import { get@(@column.FkEntityName)@(@column.PropertyName)Dropdown } from '/@@/api/@(@Model.PagePath)/@(@Model.LowerClassName)'; @:import { get@(@column.FkEntityName)@(@column.PropertyName)Dropdown } from '/@@/api/@(@Model.PagePath)/@(@Model.LowerClassName)';
} }
} }
} }
@ -364,24 +364,24 @@ const handleEdit = (row: any) => {
// 打开打印页面 // 打开打印页面
const handlePrint = async (row: any) => { const handlePrint = async (row: any) => {
state.title = '打印@(@Model.BusName)'; state.title = '打印@(@Model.BusName)';
@if(@Model.PrintType == "custom"){ @if(@Model.PrintType == "custom"){
if (@Model.IsApiService) { if (@Model.IsApiService) {
@:var res = await getAPI(SysPrintApi).apiSysPrintPrintNameGet('@Model.PrintName'); @:var res = await getAPI(SysPrintApi).apiSysPrintPrintNameGet('@Model.PrintName');
} else { } else {
@:var res = await getPrint@(@Model.ClassName)(row); @:var res = await getPrint@(@Model.ClassName)(row);
} }
@:var printTemplate = res.data.result as SysPrint; @:var printTemplate = res.data.result as SysPrint;
@:var template = JSON.parse(printTemplate.template); @:var template = JSON.parse(printTemplate.template);
@:var width = template.panels[0].width; @:var width = template.panels[0].width;
@:row['barCode'] = row.code; @:row['barCode'] = row.code;
@:row['qrCode'] = row.code; @:row['qrCode'] = row.code;
@:row["printDate"] = formatDate(new Date(), 'YYYY-mm-dd HH:MM'); @:row["printDate"] = formatDate(new Date(), 'YYYY-mm-dd HH:MM');
@:printDialogRef.value.showDialog(new hiprint.PrintTemplate({template: template}), row, width); @:printDialogRef.value.showDialog(new hiprint.PrintTemplate({template: template}), row, width);
} }
@if(@Model.PrintType == "auto"){ @if(@Model.PrintType == "auto"){
@:printDialogRef.value.showDialog(row); @:printDialogRef.value.showDialog(row);
} }
}; };
// 删除 // 删除
@ -392,14 +392,14 @@ const handleDelete = (row: any) => {
type: 'warning', type: 'warning',
}).then(async () => { }).then(async () => {
@if (@Model.IsApiService) { @if (@Model.IsApiService) {
@:await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)DeletePost({ id: row.id }); @:await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)DeletePost({ id: row.id });
} else { } else {
@:await delete@(@Model.ClassName)(row); @:await delete@(@Model.ClassName)(row);
} }
await handleQuery(); await handleQuery();
ElMessage.success('删除成功'); ElMessage.success('删除成功');
}) })
.catch(() => {}); .catch(() => {});
}; };
// 表格事件 // 表格事件
@ -417,12 +417,12 @@ const gridEvents: VxeGridListeners<@(@Model.ClassName)> = {
}; };
@foreach (var column in Model.QueryWhetherList) { @foreach (var column in Model.QueryWhetherList) {
@if(@column.EffectType == "fk") { @if(@column.EffectType == "fk") {
@:const @LowerFirstLetter(@column.FkEntityName)@(@column.PropertyName)DropdownList = ref<any>([]); @:const @LowerFirstLetter(@column.FkEntityName)@(@column.PropertyName)DropdownList = ref<any>([]);
@:const get@(@column.FkEntityName)@(@column.PropertyName)DropdownList = async () => { @:const get@(@column.FkEntityName)@(@column.PropertyName)DropdownList = async () => {
//@:let list = await get@(@column.FkEntityName)@(@column.PropertyName)Dropdown(); //@:let list = await get@(@column.FkEntityName)@(@column.PropertyName)Dropdown();
@:let list = await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)@(@column.FkEntityName)@(@column.PropertyName)DropdownGet(); @:let list = await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)@(@column.FkEntityName)@(@column.PropertyName)DropdownGet();
@:@LowerFirstLetter(@column.FkEntityName)@(@column.PropertyName)DropdownList.value = list.data.result ?? []; @:@LowerFirstLetter(@column.FkEntityName)@(@column.PropertyName)DropdownList.value = list.data.result ?? [];
@:}; @:};
@:get@(@column.FkEntityName)@(@column.PropertyName)DropdownList(); @:get@(@column.FkEntityName)@(@column.PropertyName)DropdownList();
} }
@ -433,6 +433,6 @@ const gridEvents: VxeGridListeners<@(@Model.ClassName)> = {
:deep(.el-input), :deep(.el-input),
:deep(.el-select), :deep(.el-select),
:deep(.el-input-number) { :deep(.el-input-number) {
width: 100%; width: 100%;
} }
</style> </style>

View File

@ -2,7 +2,7 @@
"name": "admin.net.pro", "name": "admin.net.pro",
"type": "module", "type": "module",
"version": "2.4.33", "version": "2.4.33",
"lastBuildTime": "2024.07.20", "lastBuildTime": "2024.07.24",
"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架", "description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",
"author": "zuohuaijun", "author": "zuohuaijun",
"license": "MIT", "license": "MIT",
@ -59,7 +59,7 @@
"vform3-builds": "^3.0.10", "vform3-builds": "^3.0.10",
"vue": "^3.4.33", "vue": "^3.4.33",
"vue-clipboard3": "^2.0.0", "vue-clipboard3": "^2.0.0",
"vue-demi": "^0.14.8", "vue-demi": "^0.14.9",
"vue-grid-layout": "3.0.0-beta1", "vue-grid-layout": "3.0.0-beta1",
"vue-i18n": "^9.13.1", "vue-i18n": "^9.13.1",
"vue-json-pretty": "^2.4.0", "vue-json-pretty": "^2.4.0",
@ -68,8 +68,8 @@
"vue-signature-pad": "^3.0.2", "vue-signature-pad": "^3.0.2",
"vue3-tree-org": "^4.2.2", "vue3-tree-org": "^4.2.2",
"vuedraggable": "4.0.3", "vuedraggable": "4.0.3",
"vxe-pc-ui": "^4.0.77", "vxe-pc-ui": "^4.0.82",
"vxe-table": "^4.7.56", "vxe-table": "^4.7.59",
"vxe-table-plugin-element": "^4.0.4", "vxe-table-plugin-element": "^4.0.4",
"vxe-table-plugin-export-xlsx": "^4.0.5", "vxe-table-plugin-export-xlsx": "^4.0.5",
"xe-utils": "^3.5.28", "xe-utils": "^3.5.28",
@ -79,12 +79,12 @@
"@iconify/vue": "^4.1.2", "@iconify/vue": "^4.1.2",
"@plugin-web-update-notification/vite": "^1.7.1", "@plugin-web-update-notification/vite": "^1.7.1",
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"@types/node": "^20.14.11", "@types/node": "^20.14.12",
"@types/nprogress": "^0.2.3", "@types/nprogress": "^0.2.3",
"@types/sortablejs": "^1.15.8", "@types/sortablejs": "^1.15.8",
"@typescript-eslint/eslint-plugin": "^7.16.1", "@typescript-eslint/eslint-plugin": "^7.17.0",
"@typescript-eslint/parser": "^7.16.1", "@typescript-eslint/parser": "^7.17.0",
"@vitejs/plugin-vue": "^5.0.5", "@vitejs/plugin-vue": "^5.1.0",
"@vitejs/plugin-vue-jsx": "^4.0.0", "@vitejs/plugin-vue-jsx": "^4.0.0",
"@vue/compiler-sfc": "^3.4.33", "@vue/compiler-sfc": "^3.4.33",
"code-inspector-plugin": "^0.14.2", "code-inspector-plugin": "^0.14.2",
@ -95,10 +95,10 @@
"rollup-plugin-visualizer": "^5.12.0", "rollup-plugin-visualizer": "^5.12.0",
"sass": "^1.77.8", "sass": "^1.77.8",
"terser": "^5.31.3", "terser": "^5.31.3",
"typescript": "^5.5.3", "typescript": "^5.5.4",
"vite": "^5.3.4", "vite": "^5.3.4",
"vite-plugin-cdn-import": "^1.0.1", "vite-plugin-cdn-import": "^1.0.1",
"vite-plugin-compression2": "^1.1.2", "vite-plugin-compression2": "^1.1.3",
"vite-plugin-vue-setup-extend": "^0.4.0", "vite-plugin-vue-setup-extend": "^0.4.0",
"vue-eslint-parser": "^9.4.3" "vue-eslint-parser": "^9.4.3"
}, },

View File

@ -42,6 +42,7 @@ export const SysCodeGenConfigApiAxiosParamCreator = function (configuration?: Co
* @param {string} [fkTableName] * @param {string} [fkTableName]
* @param {string} [lowerFkEntityName] () * @param {string} [lowerFkEntityName] ()
* @param {string} [fkColumnName] * @param {string} [fkColumnName]
* @param {string} [fkLinkColumnName]
* @param {string} [lowerFkColumnName] () * @param {string} [lowerFkColumnName] ()
* @param {string} [fkColumnNetType] .NET类型 * @param {string} [fkColumnNetType] .NET类型
* @param {string} [dictTypeCode] code * @param {string} [dictTypeCode] code
@ -63,7 +64,7 @@ export const SysCodeGenConfigApiAxiosParamCreator = function (configuration?: Co
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
apiSysCodeGenConfigDetailGet: async (id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { apiSysCodeGenConfigDetailGet: async (id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, fkLinkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
const localVarPath = `/api/sysCodeGenConfig/detail`; const localVarPath = `/api/sysCodeGenConfig/detail`;
// use dummy base URL string because the URL constructor only accepts absolute URLs. // use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, 'https://example.com'); const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@ -136,6 +137,10 @@ export const SysCodeGenConfigApiAxiosParamCreator = function (configuration?: Co
localVarQueryParameter['FkColumnName'] = fkColumnName; localVarQueryParameter['FkColumnName'] = fkColumnName;
} }
if (fkLinkColumnName !== undefined) {
localVarQueryParameter['FkLinkColumnName'] = fkLinkColumnName;
}
if (lowerFkColumnName !== undefined) { if (lowerFkColumnName !== undefined) {
localVarQueryParameter['LowerFkColumnName'] = lowerFkColumnName; localVarQueryParameter['LowerFkColumnName'] = lowerFkColumnName;
} }
@ -240,6 +245,7 @@ export const SysCodeGenConfigApiAxiosParamCreator = function (configuration?: Co
* @param {string} [fkTableName] * @param {string} [fkTableName]
* @param {string} [lowerFkEntityName] () * @param {string} [lowerFkEntityName] ()
* @param {string} [fkColumnName] * @param {string} [fkColumnName]
* @param {string} [fkLinkColumnName]
* @param {string} [lowerFkColumnName] () * @param {string} [lowerFkColumnName] ()
* @param {string} [fkColumnNetType] .NET类型 * @param {string} [fkColumnNetType] .NET类型
* @param {string} [dictTypeCode] code * @param {string} [dictTypeCode] code
@ -261,7 +267,7 @@ export const SysCodeGenConfigApiAxiosParamCreator = function (configuration?: Co
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
apiSysCodeGenConfigListGet: async (id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { apiSysCodeGenConfigListGet: async (id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, fkLinkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
const localVarPath = `/api/sysCodeGenConfig/list`; const localVarPath = `/api/sysCodeGenConfig/list`;
// use dummy base URL string because the URL constructor only accepts absolute URLs. // use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, 'https://example.com'); const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@ -334,6 +340,10 @@ export const SysCodeGenConfigApiAxiosParamCreator = function (configuration?: Co
localVarQueryParameter['FkColumnName'] = fkColumnName; localVarQueryParameter['FkColumnName'] = fkColumnName;
} }
if (fkLinkColumnName !== undefined) {
localVarQueryParameter['FkLinkColumnName'] = fkLinkColumnName;
}
if (lowerFkColumnName !== undefined) { if (lowerFkColumnName !== undefined) {
localVarQueryParameter['LowerFkColumnName'] = lowerFkColumnName; localVarQueryParameter['LowerFkColumnName'] = lowerFkColumnName;
} }
@ -495,6 +505,7 @@ export const SysCodeGenConfigApiFp = function(configuration?: Configuration) {
* @param {string} [fkTableName] * @param {string} [fkTableName]
* @param {string} [lowerFkEntityName] () * @param {string} [lowerFkEntityName] ()
* @param {string} [fkColumnName] * @param {string} [fkColumnName]
* @param {string} [fkLinkColumnName]
* @param {string} [lowerFkColumnName] () * @param {string} [lowerFkColumnName] ()
* @param {string} [fkColumnNetType] .NET类型 * @param {string} [fkColumnNetType] .NET类型
* @param {string} [dictTypeCode] code * @param {string} [dictTypeCode] code
@ -516,8 +527,8 @@ export const SysCodeGenConfigApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
async apiSysCodeGenConfigDetailGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSysCodeGenConfig>>> { async apiSysCodeGenConfigDetailGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, fkLinkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSysCodeGenConfig>>> {
const localVarAxiosArgs = await SysCodeGenConfigApiAxiosParamCreator(configuration).apiSysCodeGenConfigDetailGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, options); const localVarAxiosArgs = await SysCodeGenConfigApiAxiosParamCreator(configuration).apiSysCodeGenConfigDetailGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, fkLinkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
return axios.request(axiosRequestArgs); return axios.request(axiosRequestArgs);
@ -539,6 +550,7 @@ export const SysCodeGenConfigApiFp = function(configuration?: Configuration) {
* @param {string} [fkTableName] * @param {string} [fkTableName]
* @param {string} [lowerFkEntityName] () * @param {string} [lowerFkEntityName] ()
* @param {string} [fkColumnName] * @param {string} [fkColumnName]
* @param {string} [fkLinkColumnName]
* @param {string} [lowerFkColumnName] () * @param {string} [lowerFkColumnName] ()
* @param {string} [fkColumnNetType] .NET类型 * @param {string} [fkColumnNetType] .NET类型
* @param {string} [dictTypeCode] code * @param {string} [dictTypeCode] code
@ -560,8 +572,8 @@ export const SysCodeGenConfigApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
async apiSysCodeGenConfigListGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListCodeGenConfig>>> { async apiSysCodeGenConfigListGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, fkLinkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListCodeGenConfig>>> {
const localVarAxiosArgs = await SysCodeGenConfigApiAxiosParamCreator(configuration).apiSysCodeGenConfigListGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, options); const localVarAxiosArgs = await SysCodeGenConfigApiAxiosParamCreator(configuration).apiSysCodeGenConfigListGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, fkLinkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
return axios.request(axiosRequestArgs); return axios.request(axiosRequestArgs);
@ -606,6 +618,7 @@ export const SysCodeGenConfigApiFactory = function (configuration?: Configuratio
* @param {string} [fkTableName] * @param {string} [fkTableName]
* @param {string} [lowerFkEntityName] () * @param {string} [lowerFkEntityName] ()
* @param {string} [fkColumnName] * @param {string} [fkColumnName]
* @param {string} [fkLinkColumnName]
* @param {string} [lowerFkColumnName] () * @param {string} [lowerFkColumnName] ()
* @param {string} [fkColumnNetType] .NET类型 * @param {string} [fkColumnNetType] .NET类型
* @param {string} [dictTypeCode] code * @param {string} [dictTypeCode] code
@ -627,8 +640,8 @@ export const SysCodeGenConfigApiFactory = function (configuration?: Configuratio
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
async apiSysCodeGenConfigDetailGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSysCodeGenConfig>> { async apiSysCodeGenConfigDetailGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, fkLinkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSysCodeGenConfig>> {
return SysCodeGenConfigApiFp(configuration).apiSysCodeGenConfigDetailGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, options).then((request) => request(axios, basePath)); return SysCodeGenConfigApiFp(configuration).apiSysCodeGenConfigDetailGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, fkLinkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, options).then((request) => request(axios, basePath));
}, },
/** /**
* *
@ -646,6 +659,7 @@ export const SysCodeGenConfigApiFactory = function (configuration?: Configuratio
* @param {string} [fkTableName] * @param {string} [fkTableName]
* @param {string} [lowerFkEntityName] () * @param {string} [lowerFkEntityName] ()
* @param {string} [fkColumnName] * @param {string} [fkColumnName]
* @param {string} [fkLinkColumnName]
* @param {string} [lowerFkColumnName] () * @param {string} [lowerFkColumnName] ()
* @param {string} [fkColumnNetType] .NET类型 * @param {string} [fkColumnNetType] .NET类型
* @param {string} [dictTypeCode] code * @param {string} [dictTypeCode] code
@ -667,8 +681,8 @@ export const SysCodeGenConfigApiFactory = function (configuration?: Configuratio
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
*/ */
async apiSysCodeGenConfigListGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultListCodeGenConfig>> { async apiSysCodeGenConfigListGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, fkLinkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultListCodeGenConfig>> {
return SysCodeGenConfigApiFp(configuration).apiSysCodeGenConfigListGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, options).then((request) => request(axios, basePath)); return SysCodeGenConfigApiFp(configuration).apiSysCodeGenConfigListGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, fkLinkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, options).then((request) => request(axios, basePath));
}, },
/** /**
* *
@ -706,6 +720,7 @@ export class SysCodeGenConfigApi extends BaseAPI {
* @param {string} [fkTableName] * @param {string} [fkTableName]
* @param {string} [lowerFkEntityName] () * @param {string} [lowerFkEntityName] ()
* @param {string} [fkColumnName] * @param {string} [fkColumnName]
* @param {string} [fkLinkColumnName]
* @param {string} [lowerFkColumnName] () * @param {string} [lowerFkColumnName] ()
* @param {string} [fkColumnNetType] .NET类型 * @param {string} [fkColumnNetType] .NET类型
* @param {string} [dictTypeCode] code * @param {string} [dictTypeCode] code
@ -728,8 +743,8 @@ export class SysCodeGenConfigApi extends BaseAPI {
* @throws {RequiredError} * @throws {RequiredError}
* @memberof SysCodeGenConfigApi * @memberof SysCodeGenConfigApi
*/ */
public async apiSysCodeGenConfigDetailGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSysCodeGenConfig>> { public async apiSysCodeGenConfigDetailGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, fkLinkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSysCodeGenConfig>> {
return SysCodeGenConfigApiFp(this.configuration).apiSysCodeGenConfigDetailGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, options).then((request) => request(this.axios, this.basePath)); return SysCodeGenConfigApiFp(this.configuration).apiSysCodeGenConfigDetailGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, fkLinkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, options).then((request) => request(this.axios, this.basePath));
} }
/** /**
* *
@ -747,6 +762,7 @@ export class SysCodeGenConfigApi extends BaseAPI {
* @param {string} [fkTableName] * @param {string} [fkTableName]
* @param {string} [lowerFkEntityName] () * @param {string} [lowerFkEntityName] ()
* @param {string} [fkColumnName] * @param {string} [fkColumnName]
* @param {string} [fkLinkColumnName]
* @param {string} [lowerFkColumnName] () * @param {string} [lowerFkColumnName] ()
* @param {string} [fkColumnNetType] .NET类型 * @param {string} [fkColumnNetType] .NET类型
* @param {string} [dictTypeCode] code * @param {string} [dictTypeCode] code
@ -769,8 +785,8 @@ export class SysCodeGenConfigApi extends BaseAPI {
* @throws {RequiredError} * @throws {RequiredError}
* @memberof SysCodeGenConfigApi * @memberof SysCodeGenConfigApi
*/ */
public async apiSysCodeGenConfigListGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListCodeGenConfig>> { public async apiSysCodeGenConfigListGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkEntityName?: string, fkTableName?: string, lowerFkEntityName?: string, fkColumnName?: string, fkLinkColumnName?: string, lowerFkColumnName?: string, fkColumnNetType?: string, dictTypeCode?: string, whetherRetract?: string, whetherRequired?: string, whetherSortable?: string, queryWhether?: string, queryType?: string, whetherTable?: string, whetherAddUpdate?: string, columnKey?: string, dataType?: string, whetherCommon?: string, tableNickName?: string, displayColumn?: string, valueColumn?: string, pidColumn?: string, orderNo?: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListCodeGenConfig>> {
return SysCodeGenConfigApiFp(this.configuration).apiSysCodeGenConfigListGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, options).then((request) => request(this.axios, this.basePath)); return SysCodeGenConfigApiFp(this.configuration).apiSysCodeGenConfigListGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, fkLinkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, options).then((request) => request(this.axios, this.basePath));
} }
/** /**
* *

View File

@ -124,6 +124,14 @@ export interface CodeGenConfig {
*/ */
fkColumnName?: string | null; fkColumnName?: string | null;
/**
*
*
* @type {string}
* @memberof CodeGenConfig
*/
fkLinkColumnName?: string | null;
/** /**
* () * ()
* *

View File

@ -164,6 +164,14 @@ export interface SysCodeGenConfig {
*/ */
fkColumnName?: string | null; fkColumnName?: string | null;
/**
*
*
* @type {string}
* @memberof SysCodeGenConfig
*/
fkLinkColumnName?: string | null;
/** /**
* .NET类型 * .NET类型
* *

View File

@ -82,14 +82,6 @@ export interface UpdateCodeGenInput {
*/ */
descStr?: string | null; descStr?: string | null;
/**
*
*
* @type {string}
* @memberof UpdateCodeGenInput
*/
authorName?: string | null;
/** /**
* *
* *
@ -138,38 +130,6 @@ export interface UpdateCodeGenInput {
*/ */
connectionString?: string | null; connectionString?: string | null;
/**
*
*
* @type {string}
* @memberof UpdateCodeGenInput
*/
generateType?: string | null;
/**
*
*
* @type {string}
* @memberof UpdateCodeGenInput
*/
tableName?: string | null;
/**
*
*
* @type {string}
* @memberof UpdateCodeGenInput
*/
nameSpace?: string | null;
/**
*
*
* @type {string}
* @memberof UpdateCodeGenInput
*/
busName?: string | null;
/** /**
* *
* *
@ -186,14 +146,6 @@ export interface UpdateCodeGenInput {
*/ */
menuApplication?: string | null; menuApplication?: string | null;
/**
*
*
* @type {boolean}
* @memberof UpdateCodeGenInput
*/
generateMenu?: boolean;
/** /**
* *
* *
@ -226,6 +178,54 @@ export interface UpdateCodeGenInput {
*/ */
printName?: string | null; printName?: string | null;
/**
*
*
* @type {string}
* @memberof UpdateCodeGenInput
*/
tableName: string;
/**
*
*
* @type {string}
* @memberof UpdateCodeGenInput
*/
busName: string;
/**
*
*
* @type {string}
* @memberof UpdateCodeGenInput
*/
nameSpace: string;
/**
*
*
* @type {string}
* @memberof UpdateCodeGenInput
*/
authorName: string;
/**
*
*
* @type {string}
* @memberof UpdateCodeGenInput
*/
generateType: string;
/**
*
*
* @type {boolean}
* @memberof UpdateCodeGenInput
*/
generateMenu: boolean;
/** /**
* 使 Api Service * 使 Api Service
* *

View File

@ -30,6 +30,13 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="链接字段" prop="linkColumnName">
<el-select v-model="state.ruleForm.linkColumnName" class="w100">
<el-option v-for="item in state.columnData" :key="item.columnName" :label="item.columnName + ' [' + item.columnComment + ']'" :value="item.columnName" />
</el-select>
</el-form-item>
</el-col>
</el-row> </el-row>
</el-form> </el-form>
<template #footer> <template #footer>
@ -108,6 +115,7 @@ const closeDialog = () => {
let tableData = state.tableData.filter((x) => x.tableName == state.ruleForm.tableName); let tableData = state.tableData.filter((x) => x.tableName == state.ruleForm.tableName);
rowdata.fkEntityName = tableData.length == 0 ? '' : tableData[0].entityName; rowdata.fkEntityName = tableData.length == 0 ? '' : tableData[0].entityName;
rowdata.fkColumnName = state.ruleForm.columnName; rowdata.fkColumnName = state.ruleForm.columnName;
rowdata.fkLinkColumnName = state.ruleForm.linkColumnName;
let columnData = state.columnData.filter((x) => x.columnName == state.ruleForm.columnName); let columnData = state.columnData.filter((x) => x.columnName == state.ruleForm.columnName);
rowdata.fkColumnNetType = columnData.length == 0 ? '' : columnData[0].netType; rowdata.fkColumnNetType = columnData.length == 0 ? '' : columnData[0].netType;
emits('submitRefreshFk', rowdata); emits('submitRefreshFk', rowdata);