diff --git a/Admin.NET/Admin.NET.Application/Admin.NET.Application.csproj b/Admin.NET/Admin.NET.Application/Admin.NET.Application.csproj index 98305a19..a2246779 100644 --- a/Admin.NET/Admin.NET.Application/Admin.NET.Application.csproj +++ b/Admin.NET/Admin.NET.Application/Admin.NET.Application.csproj @@ -24,12 +24,6 @@ - - - - - - diff --git a/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj b/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj index d888fadb..9397fad9 100644 --- a/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj +++ b/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj @@ -22,6 +22,7 @@ + @@ -39,7 +40,7 @@ - + diff --git a/Admin.NET/Admin.NET.Core/Service/CodeGen/Dto/CodeGenConfig.cs b/Admin.NET/Admin.NET.Core/Service/CodeGen/Dto/CodeGenConfig.cs index 6a4a619c..a7722048 100644 --- a/Admin.NET/Admin.NET.Core/Service/CodeGen/Dto/CodeGenConfig.cs +++ b/Admin.NET/Admin.NET.Core/Service/CodeGen/Dto/CodeGenConfig.cs @@ -219,5 +219,6 @@ public class CodeGenConfig /// 验证触发器 /// public string Trigger { get; set; } - #endregion + + #endregion 不在数据库中的字段 } \ No newline at end of file diff --git a/Admin.NET/Admin.NET.Core/Service/CodeGen/Dto/VerifyRuleItem.cs b/Admin.NET/Admin.NET.Core/Service/CodeGen/Dto/VerifyRuleItem.cs index 339564c4..94059150 100644 --- a/Admin.NET/Admin.NET.Core/Service/CodeGen/Dto/VerifyRuleItem.cs +++ b/Admin.NET/Admin.NET.Core/Service/CodeGen/Dto/VerifyRuleItem.cs @@ -9,26 +9,32 @@ public class VerifyRuleItem /// 编码 /// public long Key { get; set; } + /// /// 验证类型 /// public string Type { get; set; } + /// /// 验证错误消息 /// public string Message { get; set; } + /// /// 最小值 /// public string Min { get; set; } + /// /// 最大值 /// public string Max { get; set; } + /// /// 正则表达式 /// public string Pattern { get; set; } + /// /// 数据类型(搭配正则) /// diff --git a/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenConfigService.cs b/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenConfigService.cs index cb9a6532..81606aa2 100644 --- a/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenConfigService.cs +++ b/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenConfigService.cs @@ -120,7 +120,9 @@ public class SysCodeGenConfigService : IDynamicApiController, ITransient // 生成代码时,主键并不是必要输入项,故一定要排除主键字段 //codeGenConfig.WhetherRequired = (tableColumn.IsNullable || tableColumn.IsPrimarykey) ? YesNoEnum.N.ToString() : YesNoEnum.Y.ToString(); + #region 添加校验规则 + //添加校验规则 codeGenConfig.Id = YitIdHelper.NextId(); //验证规则 @@ -135,8 +137,9 @@ public class SysCodeGenConfigService : IDynamicApiController, ITransient }); } codeGenConfig.WhetherRequired = ruleItems.Any(t => t.Type == "required") ? YesNoEnum.Y.ToString() : YesNoEnum.N.ToString(); - codeGenConfig.Rules = ruleItems.ToJson(); - #endregion + codeGenConfig.Rules = ruleItems.ToJson(); + + #endregion 添加校验规则 codeGenConfig.QueryWhether = YesOrNo; codeGenConfig.WhetherAddUpdate = YesOrNo; diff --git a/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs b/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs index 402fd7fa..22a71766 100644 --- a/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs +++ b/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs @@ -345,7 +345,9 @@ public class SysCodeGenService : IDynamicApiController, ITransient Directory.Delete(outputPath, true); var tableFieldList = await _codeGenConfigService.GetList(new CodeGenConfig() { CodeGenId = input.Id }); // 字段集合 + #region 构造前端需要验证的数据 + foreach (var item in tableFieldList) { List list = new List(); @@ -365,7 +367,9 @@ public class SysCodeGenService : IDynamicApiController, ITransient item.AnyRule = list.Count > 0; item.RemoteVerify = list.Any(t => t.Type == "remote"); } - #endregion + + #endregion 构造前端需要验证的数据 + var queryWhetherList = tableFieldList.Where(u => u.QueryWhether == YesNoEnum.Y.ToString()).ToList(); // 前端查询集合 var joinTableList = tableFieldList.Where(u => u.EffectType == "Upload" || u.EffectType == "fk" || u.EffectType == "ApiTreeSelect").ToList(); // 需要连表查询的字段 (string joinTableNames, string lowerJoinTableNames) = GetJoinTableStr(joinTableList); // 获取连表的实体名和别名 @@ -455,7 +459,9 @@ public class SysCodeGenService : IDynamicApiController, ITransient public async Task> Preview(SysCodeGen input) { var tableFieldList = await _codeGenConfigService.GetList(new CodeGenConfig() { CodeGenId = input.Id }); // 字段集合 + #region 构造前端需要验证的数据 + foreach (var item in tableFieldList) { List list = new List(); @@ -475,7 +481,9 @@ public class SysCodeGenService : IDynamicApiController, ITransient item.AnyRule = list.Count > 0; item.RemoteVerify = list.Any(t => t.Type == "remote"); } - #endregion + + #endregion 构造前端需要验证的数据 + var queryWhetherList = tableFieldList.Where(u => u.QueryWhether == YesNoEnum.Y.ToString()).ToList(); // 前端查询集合 var joinTableList = tableFieldList.Where(u => u.EffectType == "Upload" || u.EffectType == "fk" || u.EffectType == "ApiTreeSelect").ToList(); // 需要连表查询的字段 (string joinTableNames, string lowerJoinTableNames) = GetJoinTableStr(joinTableList); // 获取连表的实体名和别名 diff --git a/Admin.NET/Admin.NET.Core/Service/Message/SysSmsService.cs b/Admin.NET/Admin.NET.Core/Service/Message/SysSmsService.cs index 7642d71b..c0e7fe6a 100644 --- a/Admin.NET/Admin.NET.Core/Service/Message/SysSmsService.cs +++ b/Admin.NET/Admin.NET.Core/Service/Message/SysSmsService.cs @@ -215,7 +215,6 @@ public class SysSmsService : IDynamicApiController, ITransient SecretId = _smsOptions.Tencentyun.AccessKeyId, SecretKey = _smsOptions.Tencentyun.AccessKeySecret }; - return cred; } } \ No newline at end of file diff --git a/Admin.NET/Admin.NET.Core/Service/Server/SysServerService.cs b/Admin.NET/Admin.NET.Core/Service/Server/SysServerService.cs index d3d8f741..8f47d067 100644 --- a/Admin.NET/Admin.NET.Core/Service/Server/SysServerService.cs +++ b/Admin.NET/Admin.NET.Core/Service/Server/SysServerService.cs @@ -4,21 +4,6 @@ // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! -using AlibabaCloud.SDK.Dysmsapi20170525.Models; -using AngleSharp.Html.Parser; -using AspNet.Security.OAuth.Gitee; -using AspNet.Security.OAuth.Weixin; -using AspNetCoreRateLimit; -using Elastic.Clients.Elasticsearch; -using IPTools.Core; -using Lazy.Captcha.Core; -using Magicodes.ExporterAndImporter.Pdf; -using Magicodes.ExporterAndImporter.Word; -using MailKit.Net.Smtp; -using Novell.Directory.Ldap; -using OnceMi.AspNetCore.OSS; -using QRCoder; - namespace Admin.NET.Core.Service; /// @@ -102,25 +87,28 @@ public class SysServerService : IDynamicApiController, ITransient var redisAssembly = typeof(Redis).Assembly.GetName(); var jsonAssembly = typeof(NewtonsoftJsonMvcCoreBuilderExtensions).Assembly.GetName(); var excelAssembly = typeof(IExcelImporter).Assembly.GetName(); - var pdfAssembly = typeof(IPdfExporter).Assembly.GetName(); - var wordAssembly = typeof(IWordExporter).Assembly.GetName(); - var captchaAssembly = typeof(ICaptcha).Assembly.GetName(); + var pdfAssembly = typeof(Magicodes.ExporterAndImporter.Pdf.IPdfExporter).Assembly.GetName(); + var wordAssembly = typeof(Magicodes.ExporterAndImporter.Word.IWordExporter).Assembly.GetName(); + var captchaAssembly = typeof(Lazy.Captcha.Core.ICaptcha).Assembly.GetName(); var wechatApiAssembly = typeof(WechatApiClient).Assembly.GetName(); var wechatTenpayAssembly = typeof(WechatTenpayClient).Assembly.GetName(); - var ossAssembly = typeof(IOSSServiceFactory).Assembly.GetName(); + var ossAssembly = typeof(OnceMi.AspNetCore.OSS.IOSSServiceFactory).Assembly.GetName(); var parserAssembly = typeof(Parser).Assembly.GetName(); - var elasticsearchClientAssembly = typeof(ElasticsearchClient).Assembly.GetName(); - var limitAssembly = typeof(IpRateLimitMiddleware).Assembly.GetName(); - var htmlParserAssembly = typeof(HtmlParser).Assembly.GetName(); - var fluentEmailAssembly = typeof(SmtpClient).Assembly.GetName(); - var qRCodeGeneratorAssembly = typeof(QRCodeGenerator).Assembly.GetName(); - var sendSmsRequestAssembly = typeof(SendSmsRequest).Assembly.GetName(); + var elasticsearchClientAssembly = typeof(Elastic.Clients.Elasticsearch.ElasticsearchClient).Assembly.GetName(); + var limitAssembly = typeof(AspNetCoreRateLimit.IpRateLimitMiddleware).Assembly.GetName(); + var htmlParserAssembly = typeof(AngleSharp.Html.Parser.HtmlParser).Assembly.GetName(); + var fluentEmailAssembly = typeof(MailKit.Net.Smtp.SmtpClient).Assembly.GetName(); + var qRCodeGeneratorAssembly = typeof(QRCoder.QRCodeGenerator).Assembly.GetName(); + var alibabaSendSmsRequestAssembly = typeof(AlibabaCloud.SDK.Dysmsapi20170525.Models.SendSmsRequest).Assembly.GetName(); + var tencentSendSmsRequestAssembly = typeof(TencentCloud.Sms.V20190711.Models.SendSmsRequest).Assembly.GetName(); var imageAssembly = typeof(Image).Assembly.GetName(); var rabbitMQAssembly = typeof(RabbitMQEventSourceStore).Assembly.GetName(); - var ldapConnectionAssembly = typeof(LdapConnection).Assembly.GetName(); - var ipToolAssembly = typeof(IpTool).Assembly.GetName(); - var weixinAuthenticationOptionsAssembly = typeof(WeixinAuthenticationOptions).Assembly.GetName(); - var giteeAuthenticationOptionsAssembly = typeof(GiteeAuthenticationOptions).Assembly.GetName(); + var ldapConnectionAssembly = typeof(Novell.Directory.Ldap.LdapConnection).Assembly.GetName(); + var ipToolAssembly = typeof(IPTools.Core.IpTool).Assembly.GetName(); + var weixinAuthenticationOptionsAssembly = typeof(AspNet.Security.OAuth.Weixin.WeixinAuthenticationOptions).Assembly.GetName(); + var giteeAuthenticationOptionsAssembly = typeof(AspNet.Security.OAuth.Gitee.GiteeAuthenticationOptions).Assembly.GetName(); + var hashidsAssembly = typeof(HashidsNet.Hashids).Assembly.GetName(); + var sftpClientAssembly = typeof(Renci.SshNet.SftpClient).Assembly.GetName(); return new[] { @@ -142,13 +130,16 @@ public class SysServerService : IDynamicApiController, ITransient new { htmlParserAssembly.Name, htmlParserAssembly.Version }, new { fluentEmailAssembly.Name, fluentEmailAssembly.Version }, new { qRCodeGeneratorAssembly.Name, qRCodeGeneratorAssembly.Version }, - new { sendSmsRequestAssembly.Name, sendSmsRequestAssembly.Version }, + new { alibabaSendSmsRequestAssembly.Name, alibabaSendSmsRequestAssembly.Version }, + new { tencentSendSmsRequestAssembly.Name, tencentSendSmsRequestAssembly.Version }, new { imageAssembly.Name, imageAssembly.Version }, new { rabbitMQAssembly.Name, rabbitMQAssembly.Version }, new { ldapConnectionAssembly.Name, ldapConnectionAssembly.Version }, new { ipToolAssembly.Name, ipToolAssembly.Version }, new { weixinAuthenticationOptionsAssembly.Name, weixinAuthenticationOptionsAssembly.Version }, new { giteeAuthenticationOptionsAssembly.Name, giteeAuthenticationOptionsAssembly.Version }, + new { hashidsAssembly.Name, hashidsAssembly.Version }, + new { sftpClientAssembly.Name, sftpClientAssembly.Version }, }; } } \ No newline at end of file diff --git a/Admin.NET/Admin.NET.Web.Entry/wwwroot/template/service_InputDto.cs.vm b/Admin.NET/Admin.NET.Web.Entry/wwwroot/template/service_InputDto.cs.vm index 1cae2652..3a7272cf 100644 --- a/Admin.NET/Admin.NET.Web.Entry/wwwroot/template/service_InputDto.cs.vm +++ b/Admin.NET/Admin.NET.Web.Entry/wwwroot/template/service_InputDto.cs.vm @@ -7,15 +7,15 @@ using Admin.NET.Core; using System.ComponentModel.DataAnnotations; @{ - string RemoteField=""; - string PKName=""; + string RemoteField=""; + string PKName=""; foreach (var column in Model.TableField){ if(column.RemoteVerify){ - RemoteField=@column.PropertyName; - } - if(column.ColumnKey == "True"){ - PKName=column.PropertyName; - } + RemoteField=@column.PropertyName; + } + if(column.ColumnKey == "True"){ + PKName=column.PropertyName; + } } } @@ -90,14 +90,14 @@ if (@column.WhetherAddUpdate == "Y"){ @:[StringLength(@(@column.ColumnLength), ErrorMessage = "@(@column.ColumnComment)不能超过@(@column.ColumnLength)个字符")] } @if(@column.AnyRule){ - @foreach(var rule in @column.RuleItems){ - @if(rule.Type=="pattern"){ - @:[RegularExpression(@@"@(@FormatPattern(rule.Pattern))", ErrorMessage = "@(@rule.Message)")] - } - @if(rule.Type=="length"){ - @:[StringLength(@(@rule.Max),MinimumLength = @(@rule.Min), ErrorMessage = "@(@column.ColumnComment)只能是@(@rule.Min)至@(@rule.Max)字符")] - } - } + @foreach(var rule in @column.RuleItems){ + @if(rule.Type=="pattern"){ + @:[RegularExpression(@@"@(@FormatPattern(rule.Pattern))", ErrorMessage = "@(@rule.Message)")] + } + @if(rule.Type=="length"){ + @:[StringLength(@(@rule.Max),MinimumLength = @(@rule.Min), ErrorMessage = "@(@column.ColumnComment)只能是@(@rule.Min)至@(@rule.Max)字符")] + } + } } @:public override @column.NetType @column.PropertyName { get; set; } @: @@ -147,14 +147,14 @@ if (@column.WhetherAddUpdate == "Y"){ @:[StringLength(@(@column.ColumnLength), ErrorMessage = "@(@column.ColumnComment)不能超过@(@column.ColumnLength)个字符")] } @if(@column.AnyRule){ - @foreach(var rule in @column.RuleItems){ - @if(rule.Type=="pattern"){ - @:[RegularExpression(@@"@(@FormatPattern(rule.Pattern))", ErrorMessage = "@(@rule.Message)")] - } - @if(rule.Type=="length"){ - @:[StringLength(@(@rule.Max),MinimumLength = @(@rule.Min), ErrorMessage = "@(@column.ColumnComment)只能是@(@rule.Min)至@(@rule.Max)字符")] - } - } + @foreach(var rule in @column.RuleItems){ + @if(rule.Type=="pattern"){ + @:[RegularExpression(@@"@(@FormatPattern(rule.Pattern))", ErrorMessage = "@(@rule.Message)")] + } + @if(rule.Type=="length"){ + @:[StringLength(@(@rule.Max),MinimumLength = @(@rule.Min), ErrorMessage = "@(@column.ColumnComment)只能是@(@rule.Min)至@(@rule.Max)字符")] + } + } } @:public override @column.NetType @column.PropertyName { get; set; } @: @@ -172,21 +172,21 @@ if (@column.WhetherAddUpdate == "Y"){ @if(@Model.RemoteVerify){ - @:/// - @:/// 检查@(RemoteField)字段参数 - @:/// - @:public class Exists@(RemoteField)Input - @:{ - @:/// - @:/// 字段名称 - @:/// - @:public string FieldName { get; set; } - @: - @:/// - @:/// 旧字段名 - @:/// - @:public string OldFieldName { get; set; } - @:} + @:/// + @:/// 检查@(RemoteField)字段参数 + @:/// + @:public class Exists@(RemoteField)Input + @:{ + @:/// + @:/// 字段名称 + @:/// + @:public string FieldName { get; set; } + @: + @:/// + @:/// 旧字段名 + @:/// + @:public string OldFieldName { get; set; } + @:} } @{ string FormatPattern(string pattern) diff --git a/Admin.NET/Admin.NET.Web.Entry/wwwroot/template/service_Service.cs.vm b/Admin.NET/Admin.NET.Web.Entry/wwwroot/template/service_Service.cs.vm index 92304f6b..e616a1e5 100644 --- a/Admin.NET/Admin.NET.Web.Entry/wwwroot/template/service_Service.cs.vm +++ b/Admin.NET/Admin.NET.Web.Entry/wwwroot/template/service_Service.cs.vm @@ -11,17 +11,17 @@ using Microsoft.AspNetCore.Http; Dictionary definedObjects = new Dictionary(); bool haveLikeCdt = false; string RemoteField=""; - string PKName=""; + string PKName=""; foreach (var column in Model.TableField){ if (column.QueryWhether == "Y" && column.QueryType == "like"){ haveLikeCdt = true; } if(column.RemoteVerify){ - RemoteField=@column.PropertyName; - } - if(column.ColumnKey == "True"){ - PKName=column.PropertyName; - } + RemoteField=@column.PropertyName; + } + if(column.ColumnKey == "True"){ + PKName=column.PropertyName; + } } } namespace @Model.NameSpace; @@ -48,7 +48,7 @@ public class @(@Model.ClassName)Service : IDynamicApiController, ITransient public async Task> Page(Page@(@Model.ClassName)Input input) { @if (haveLikeCdt) { - @:input.SearchKey = input.SearchKey?.Trim(); + @:input.SearchKey = input.SearchKey?.Trim(); } var query = _@(@Model.LowerClassName)Rep.AsQueryable() @{string conditionFlag = "";} @@ -116,7 +116,7 @@ if (@column.QueryWhether == "Y"){ } else { @:.Select<@(@Model.ClassName)Output>(); } - return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize); + return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize); } /// @@ -136,7 +136,7 @@ if (@column.QueryWhether == "Y"){ @://已存在 @:throw Oops.Oh(ErrorCodeEnum.D1006); @:} - } + } await _@(@Model.LowerClassName)Rep.InsertAsync(entity); return entity.@(@PKName); } @@ -170,14 +170,14 @@ if (@column.ColumnKey == "True"){ { var entity = input.Adapt<@(@Model.ClassName)>(); @if(Model.RemoteVerify){ - @://验证重复值 - @:if (await _advertsRep.IsAnyAsync(t => t.@(RemoteField) == entity.@(RemoteField) && t.@(@PKName) != entity.@(@PKName))) - @:{ - @://已存在 - @:throw Oops.Oh(ErrorCodeEnum.D1006); - @:} + @://验证重复值 + @:if (await _advertsRep.IsAnyAsync(t => t.@(RemoteField) == entity.@(RemoteField) && t.@(@PKName) != entity.@(@PKName))) + @:{ + @://已存在 + @:throw Oops.Oh(ErrorCodeEnum.D1006); + @:} } - await _@(@Model.LowerClassName)Rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); + await _@(@Model.LowerClassName)Rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); } /// diff --git a/Admin.NET/Admin.NET.Web.Entry/wwwroot/template/web_views_editDialog.vue.vm b/Admin.NET/Admin.NET.Web.Entry/wwwroot/template/web_views_editDialog.vue.vm index 554be54b..ea75bc04 100644 --- a/Admin.NET/Admin.NET.Web.Entry/wwwroot/template/web_views_editDialog.vue.vm +++ b/Admin.NET/Admin.NET.Web.Entry/wwwroot/template/web_views_editDialog.vue.vm @@ -181,7 +181,7 @@ if(@Model.TableField.Any(x=>x.EffectType == "Upload")){ foreach (var column in Model.QueryWhetherList){ if(@column.EffectType == "fk"){ @:import { get@(@column.FkEntityName)@(@column.PropertyName)Dropdown } from '/@@/api/@(@Model.PagePath)/@(@Model.LowerClassName)'; - } + } } } @if(@Model.TableField.Any(x=>x.EffectType == "ConstSelector")){ @@ -199,7 +199,7 @@ if(@column.EffectType == "fk"){ @foreach (var column in Model.TableField){ if(@column.EffectType == "ApiTreeSelect" && !definedObjects.ContainsKey("import__@(@column.FkEntityName)Tree")){ @{definedObjects.Add("import__@(@column.FkEntityName)Tree", 1);} - } + } } @if(@Model.TableField.Any(x=>x.EffectType == "EnumSelector")){ @:import { SysEnumApi } from '/@@/api-services/api'; @@ -327,13 +327,13 @@ const submit = async () => { let values = state.ruleForm; if (state.ruleForm.@(@pkFieldName) == undefined || state.ruleForm.@(@pkFieldName) == null || state.ruleForm.@(@pkFieldName) == "" || state.ruleForm.@(@pkFieldName) == 0) { @if (@Model.IsApiService) { - @:await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)AddPost(state.ruleForm); + @:await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)AddPost(state.ruleForm); } else { @:await add@(@Model.ClassName)(values); } } else { @if (@Model.IsApiService) { - @:await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)UpdatePost(state.ruleForm); + @:await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)UpdatePost(state.ruleForm); } else { @:await update@(@Model.ClassName)(values); } @@ -352,7 +352,7 @@ const submit = async () => { if(@column.EffectType == "fk" && @column.WhetherAddUpdate == "Y"){ @:const @LowerFirstLetter(@column.FkEntityName)@(@column.PropertyName)DropdownList = ref([]); @:const get@(@column.FkEntityName)@(@column.PropertyName)DropdownList = async () => { - @if (@Model.IsApiService) { + @if (@Model.IsApiService) { @:let list = await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)@(@column.FkEntityName)@(@column.PropertyName)DropdownGet(); } else { @:let list = await get@(@column.FkEntityName)@(@column.PropertyName)Dropdown(); @@ -369,7 +369,7 @@ if(@column.EffectType == "ApiTreeSelect" && !definedObjects.ContainsKey("define_ @{definedObjects.Add("define_get@(@column.FkEntityName)TreeData", 1);} @:const @LowerFirstLetter(@column.FkEntityName)TreeData = ref([]); @:const get@(@column.FkEntityName)TreeData = async () => { - @:let list = await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)@(@column.FkEntityName)TreeGet(); + @:let list = await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)@(@column.FkEntityName)TreeGet(); @:@LowerFirstLetter(@column.FkEntityName)TreeData.value = list.data.result ?? []; @:}; @:get@(@column.FkEntityName)TreeData(); @@ -391,7 +391,7 @@ if(column.WhetherAddUpdate=="N") continue; if(@column.EffectType == "Upload"){ @:const upload@(@column.PropertyName)Handle = async (options: UploadRequestOptions) => { @if (@Model.IsApiService) { - @:let res = await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)Upload@(@column.FkEntityName)PostForm(options); + @:let res = await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)Upload@(@column.FkEntityName)PostForm(options); } else { @:let res = await upload@(@column.PropertyName)(options); } diff --git a/Web/src/api-services/apis/sys-code-gen-config-api.ts b/Web/src/api-services/apis/sys-code-gen-config-api.ts index f15c86af..ec9fe18b 100644 --- a/Web/src/api-services/apis/sys-code-gen-config-api.ts +++ b/Web/src/api-services/apis/sys-code-gen-config-api.ts @@ -20,6 +20,7 @@ import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } fr import { AdminResultListCodeGenConfig } from '../models'; import { AdminResultSysCodeGenConfig } from '../models'; import { CodeGenConfig } from '../models'; +import { VerifyRuleItem } from '../models'; /** * SysCodeGenConfigApi - axios parameter creator * @export @@ -62,10 +63,15 @@ export const SysCodeGenConfigApiAxiosParamCreator = function (configuration?: Co * @param {string} [valueColumn] 选中值字段 * @param {string} [pidColumn] 父级字段 * @param {number} [orderNo] 排序 + * @param {string} [rules] 字段验证规则 + * @param {Array} [ruleItems] 字段验证集合 + * @param {boolean} [remoteVerify] 是否远程验证 + * @param {boolean} [anyRule] 是否存在验证规则 + * @param {string} [trigger] 验证触发器 * @param {*} [options] Override http request option. * @throws {RequiredError} */ - apiSysCodeGenConfigDetailGet: async (id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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 => { + apiSysCodeGenConfigDetailGet: async (id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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, rules?: string, ruleItems?: Array, remoteVerify?: boolean, anyRule?: boolean, trigger?: string, options: AxiosRequestConfig = {}): Promise => { const localVarPath = `/api/sysCodeGenConfig/detail`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, 'https://example.com'); @@ -218,6 +224,26 @@ export const SysCodeGenConfigApiAxiosParamCreator = function (configuration?: Co localVarQueryParameter['OrderNo'] = orderNo; } + if (rules !== undefined) { + localVarQueryParameter['Rules'] = rules; + } + + if (ruleItems) { + localVarQueryParameter['RuleItems'] = ruleItems; + } + + if (remoteVerify !== undefined) { + localVarQueryParameter['RemoteVerify'] = remoteVerify; + } + + if (anyRule !== undefined) { + localVarQueryParameter['AnyRule'] = anyRule; + } + + if (trigger !== undefined) { + localVarQueryParameter['Trigger'] = trigger; + } + const query = new URLSearchParams(localVarUrlObj.search); for (const key in localVarQueryParameter) { query.set(key, localVarQueryParameter[key]); @@ -270,10 +296,15 @@ export const SysCodeGenConfigApiAxiosParamCreator = function (configuration?: Co * @param {string} [valueColumn] 选中值字段 * @param {string} [pidColumn] 父级字段 * @param {number} [orderNo] 排序 + * @param {string} [rules] 字段验证规则 + * @param {Array} [ruleItems] 字段验证集合 + * @param {boolean} [remoteVerify] 是否远程验证 + * @param {boolean} [anyRule] 是否存在验证规则 + * @param {string} [trigger] 验证触发器 * @param {*} [options] Override http request option. * @throws {RequiredError} */ - apiSysCodeGenConfigListGet: async (id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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 => { + apiSysCodeGenConfigListGet: async (id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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, rules?: string, ruleItems?: Array, remoteVerify?: boolean, anyRule?: boolean, trigger?: string, options: AxiosRequestConfig = {}): Promise => { const localVarPath = `/api/sysCodeGenConfig/list`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, 'https://example.com'); @@ -426,6 +457,26 @@ export const SysCodeGenConfigApiAxiosParamCreator = function (configuration?: Co localVarQueryParameter['OrderNo'] = orderNo; } + if (rules !== undefined) { + localVarQueryParameter['Rules'] = rules; + } + + if (ruleItems) { + localVarQueryParameter['RuleItems'] = ruleItems; + } + + if (remoteVerify !== undefined) { + localVarQueryParameter['RemoteVerify'] = remoteVerify; + } + + if (anyRule !== undefined) { + localVarQueryParameter['AnyRule'] = anyRule; + } + + if (trigger !== undefined) { + localVarQueryParameter['Trigger'] = trigger; + } + const query = new URLSearchParams(localVarUrlObj.search); for (const key in localVarQueryParameter) { query.set(key, localVarQueryParameter[key]); @@ -535,11 +586,16 @@ export const SysCodeGenConfigApiFp = function(configuration?: Configuration) { * @param {string} [valueColumn] 选中值字段 * @param {string} [pidColumn] 父级字段 * @param {number} [orderNo] 排序 + * @param {string} [rules] 字段验证规则 + * @param {Array} [ruleItems] 字段验证集合 + * @param {boolean} [remoteVerify] 是否远程验证 + * @param {boolean} [anyRule] 是否存在验证规则 + * @param {string} [trigger] 验证触发器 * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async apiSysCodeGenConfigDetailGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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>> { - const localVarAxiosArgs = await SysCodeGenConfigApiAxiosParamCreator(configuration).apiSysCodeGenConfigDetailGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkConfigId, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, fkLinkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, options); + async apiSysCodeGenConfigDetailGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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, rules?: string, ruleItems?: Array, remoteVerify?: boolean, anyRule?: boolean, trigger?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { + const localVarAxiosArgs = await SysCodeGenConfigApiAxiosParamCreator(configuration).apiSysCodeGenConfigDetailGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkConfigId, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, fkLinkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, rules, ruleItems, remoteVerify, anyRule, trigger, options); return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; return axios.request(axiosRequestArgs); @@ -581,11 +637,16 @@ export const SysCodeGenConfigApiFp = function(configuration?: Configuration) { * @param {string} [valueColumn] 选中值字段 * @param {string} [pidColumn] 父级字段 * @param {number} [orderNo] 排序 + * @param {string} [rules] 字段验证规则 + * @param {Array} [ruleItems] 字段验证集合 + * @param {boolean} [remoteVerify] 是否远程验证 + * @param {boolean} [anyRule] 是否存在验证规则 + * @param {string} [trigger] 验证触发器 * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async apiSysCodeGenConfigListGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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>> { - const localVarAxiosArgs = await SysCodeGenConfigApiAxiosParamCreator(configuration).apiSysCodeGenConfigListGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkConfigId, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, fkLinkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, options); + async apiSysCodeGenConfigListGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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, rules?: string, ruleItems?: Array, remoteVerify?: boolean, anyRule?: boolean, trigger?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { + const localVarAxiosArgs = await SysCodeGenConfigApiAxiosParamCreator(configuration).apiSysCodeGenConfigListGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkConfigId, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, fkLinkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, rules, ruleItems, remoteVerify, anyRule, trigger, options); return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; return axios.request(axiosRequestArgs); @@ -650,11 +711,16 @@ export const SysCodeGenConfigApiFactory = function (configuration?: Configuratio * @param {string} [valueColumn] 选中值字段 * @param {string} [pidColumn] 父级字段 * @param {number} [orderNo] 排序 + * @param {string} [rules] 字段验证规则 + * @param {Array} [ruleItems] 字段验证集合 + * @param {boolean} [remoteVerify] 是否远程验证 + * @param {boolean} [anyRule] 是否存在验证规则 + * @param {string} [trigger] 验证触发器 * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async apiSysCodeGenConfigDetailGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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> { - return SysCodeGenConfigApiFp(configuration).apiSysCodeGenConfigDetailGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkConfigId, 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)); + async apiSysCodeGenConfigDetailGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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, rules?: string, ruleItems?: Array, remoteVerify?: boolean, anyRule?: boolean, trigger?: string, options?: AxiosRequestConfig): Promise> { + return SysCodeGenConfigApiFp(configuration).apiSysCodeGenConfigDetailGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkConfigId, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, fkLinkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, rules, ruleItems, remoteVerify, anyRule, trigger, options).then((request) => request(axios, basePath)); }, /** * @@ -692,11 +758,16 @@ export const SysCodeGenConfigApiFactory = function (configuration?: Configuratio * @param {string} [valueColumn] 选中值字段 * @param {string} [pidColumn] 父级字段 * @param {number} [orderNo] 排序 + * @param {string} [rules] 字段验证规则 + * @param {Array} [ruleItems] 字段验证集合 + * @param {boolean} [remoteVerify] 是否远程验证 + * @param {boolean} [anyRule] 是否存在验证规则 + * @param {string} [trigger] 验证触发器 * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async apiSysCodeGenConfigListGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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> { - return SysCodeGenConfigApiFp(configuration).apiSysCodeGenConfigListGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkConfigId, 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)); + async apiSysCodeGenConfigListGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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, rules?: string, ruleItems?: Array, remoteVerify?: boolean, anyRule?: boolean, trigger?: string, options?: AxiosRequestConfig): Promise> { + return SysCodeGenConfigApiFp(configuration).apiSysCodeGenConfigListGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkConfigId, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, fkLinkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, rules, ruleItems, remoteVerify, anyRule, trigger, options).then((request) => request(axios, basePath)); }, /** * @@ -754,12 +825,17 @@ export class SysCodeGenConfigApi extends BaseAPI { * @param {string} [valueColumn] 选中值字段 * @param {string} [pidColumn] 父级字段 * @param {number} [orderNo] 排序 + * @param {string} [rules] 字段验证规则 + * @param {Array} [ruleItems] 字段验证集合 + * @param {boolean} [remoteVerify] 是否远程验证 + * @param {boolean} [anyRule] 是否存在验证规则 + * @param {string} [trigger] 验证触发器 * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof SysCodeGenConfigApi */ - public async apiSysCodeGenConfigDetailGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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> { - return SysCodeGenConfigApiFp(this.configuration).apiSysCodeGenConfigDetailGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkConfigId, 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)); + public async apiSysCodeGenConfigDetailGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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, rules?: string, ruleItems?: Array, remoteVerify?: boolean, anyRule?: boolean, trigger?: string, options?: AxiosRequestConfig) : Promise> { + return SysCodeGenConfigApiFp(this.configuration).apiSysCodeGenConfigDetailGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkConfigId, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, fkLinkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, rules, ruleItems, remoteVerify, anyRule, trigger, options).then((request) => request(this.axios, this.basePath)); } /** * @@ -797,12 +873,17 @@ export class SysCodeGenConfigApi extends BaseAPI { * @param {string} [valueColumn] 选中值字段 * @param {string} [pidColumn] 父级字段 * @param {number} [orderNo] 排序 + * @param {string} [rules] 字段验证规则 + * @param {Array} [ruleItems] 字段验证集合 + * @param {boolean} [remoteVerify] 是否远程验证 + * @param {boolean} [anyRule] 是否存在验证规则 + * @param {string} [trigger] 验证触发器 * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof SysCodeGenConfigApi */ - public async apiSysCodeGenConfigListGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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> { - return SysCodeGenConfigApiFp(this.configuration).apiSysCodeGenConfigListGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkConfigId, 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)); + public async apiSysCodeGenConfigListGet(id?: number, codeGenId?: number, columnName?: string, propertyName?: string, columnLength?: number, lowerPropertyName?: string, columnComment?: string, netType?: string, effectType?: string, fkConfigId?: 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, rules?: string, ruleItems?: Array, remoteVerify?: boolean, anyRule?: boolean, trigger?: string, options?: AxiosRequestConfig) : Promise> { + return SysCodeGenConfigApiFp(this.configuration).apiSysCodeGenConfigListGet(id, codeGenId, columnName, propertyName, columnLength, lowerPropertyName, columnComment, netType, effectType, fkConfigId, fkEntityName, fkTableName, lowerFkEntityName, fkColumnName, fkLinkColumnName, lowerFkColumnName, fkColumnNetType, dictTypeCode, whetherRetract, whetherRequired, whetherSortable, queryWhether, queryType, whetherTable, whetherAddUpdate, columnKey, dataType, whetherCommon, tableNickName, displayColumn, valueColumn, pidColumn, orderNo, rules, ruleItems, remoteVerify, anyRule, trigger, options).then((request) => request(this.axios, this.basePath)); } /** * diff --git a/Web/src/api-services/models/code-gen-config.ts b/Web/src/api-services/models/code-gen-config.ts index 4c09e651..2e56b53a 100644 --- a/Web/src/api-services/models/code-gen-config.ts +++ b/Web/src/api-services/models/code-gen-config.ts @@ -12,6 +12,7 @@ * Do not edit the class manually. */ +import { VerifyRuleItem } from './verify-rule-item'; /** * 代码生成详细配置参数 * @@ -283,4 +284,44 @@ export interface CodeGenConfig { * @memberof CodeGenConfig */ orderNo?: number; + + /** + * 字段验证规则 + * + * @type {string} + * @memberof CodeGenConfig + */ + rules?: string | null; + + /** + * 字段验证集合 + * + * @type {Array} + * @memberof CodeGenConfig + */ + ruleItems?: Array | null; + + /** + * 是否远程验证 + * + * @type {boolean} + * @memberof CodeGenConfig + */ + remoteVerify?: boolean; + + /** + * 是否存在验证规则 + * + * @type {boolean} + * @memberof CodeGenConfig + */ + anyRule?: boolean; + + /** + * 验证触发器 + * + * @type {string} + * @memberof CodeGenConfig + */ + trigger?: string | null; } diff --git a/Web/src/api-services/models/index.ts b/Web/src/api-services/models/index.ts index fcf5dca6..507778cd 100644 --- a/Web/src/api-services/models/index.ts +++ b/Web/src/api-services/models/index.ts @@ -404,6 +404,7 @@ export * from './user-input'; export * from './user-menu-input'; export * from './user-output'; export * from './user-role-input'; +export * from './verify-rule-item'; export * from './visual-column'; export * from './visual-db-table'; export * from './visual-table'; diff --git a/Web/src/api-services/models/sys-code-gen-config.ts b/Web/src/api-services/models/sys-code-gen-config.ts index d149eb68..e5d5d125 100644 --- a/Web/src/api-services/models/sys-code-gen-config.ts +++ b/Web/src/api-services/models/sys-code-gen-config.ts @@ -307,4 +307,12 @@ export interface SysCodeGenConfig { * @memberof SysCodeGenConfig */ orderNo?: number; + + /** + * 字段验证规则 + * + * @type {string} + * @memberof SysCodeGenConfig + */ + rules?: string | null; } diff --git a/Web/src/api-services/models/verify-rule-item.ts b/Web/src/api-services/models/verify-rule-item.ts new file mode 100644 index 00000000..611ae8ba --- /dev/null +++ b/Web/src/api-services/models/verify-rule-item.ts @@ -0,0 +1,78 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Admin.NET 通用权限开发平台 + * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + /** + * 验证规则选项 + * + * @export + * @interface VerifyRuleItem + */ +export interface VerifyRuleItem { + + /** + * 编码 + * + * @type {number} + * @memberof VerifyRuleItem + */ + key?: number; + + /** + * 验证类型 + * + * @type {string} + * @memberof VerifyRuleItem + */ + type?: string | null; + + /** + * 验证错误消息 + * + * @type {string} + * @memberof VerifyRuleItem + */ + message?: string | null; + + /** + * 最小值 + * + * @type {string} + * @memberof VerifyRuleItem + */ + min?: string | null; + + /** + * 最大值 + * + * @type {string} + * @memberof VerifyRuleItem + */ + max?: string | null; + + /** + * 正则表达式 + * + * @type {string} + * @memberof VerifyRuleItem + */ + pattern?: string | null; + + /** + * 数据类型(搭配正则) + * + * @type {string} + * @memberof VerifyRuleItem + */ + dataType?: string | null; +} diff --git a/Web/src/hooks/setupVXETableHook.ts b/Web/src/hooks/setupVXETableHook.ts index 90f25c3f..bc345855 100644 --- a/Web/src/hooks/setupVXETableHook.ts +++ b/Web/src/hooks/setupVXETableHook.ts @@ -96,7 +96,7 @@ export const setupVXETable = (app: App) => { autoHidden: false, // 当只有一页时自动隐藏 pageSize: 50, // 每页大小 pagerCount: 10, // 显示页码按钮的数量 - pageSizes: [50, 100, 200, 500], // 每页大小选项列表 + pageSizes: [50, 100, 200, 500, 1000, 2000], // 每页大小选项列表 layouts: ['PrevJump', 'PrevPage', 'JumpNumber', 'NextPage', 'NextJump', 'Sizes', 'FullJump', 'PageCount', 'Total'], // 自定义布局 }, }); diff --git a/Web/src/views/system/codeGen/component/editCodeGenDialog.vue b/Web/src/views/system/codeGen/component/editCodeGenDialog.vue index 62b0fe97..f628c7cc 100644 --- a/Web/src/views/system/codeGen/component/editCodeGenDialog.vue +++ b/Web/src/views/system/codeGen/component/editCodeGenDialog.vue @@ -286,11 +286,6 @@ const submit = () => { }); }; -const isOrNotSelect = () => [ - { label: '是', value: 1 }, - { label: '否', value: 0 }, -]; - // 导出对象 defineExpose({ openDialog }); diff --git a/Web/src/views/system/codeGen/component/genConfigDialog.vue b/Web/src/views/system/codeGen/component/genConfigDialog.vue index 00ab1b68..03f25190 100644 --- a/Web/src/views/system/codeGen/component/genConfigDialog.vue +++ b/Web/src/views/system/codeGen/component/genConfigDialog.vue @@ -19,7 +19,15 @@ - + @@ -113,7 +120,7 @@ import verifyDialog from '/@/views/system/codeGen/component/verifyDialog.vue'; import { getAPI } from '/@/utils/axios-utils'; import { SysCodeGenConfigApi, SysConstApi, SysDictDataApi, SysDictTypeApi, SysEnumApi } from '/@/api-services/api'; -import { CodeGenConfig } from '/@/api-services/models/code-gen-config'; +// import { CodeGenConfig } from '/@/api-services/models/code-gen-config'; const emits = defineEmits(['handleQuery']); const fkDialogRef = ref(); @@ -122,7 +129,7 @@ const verifyDialogRef = ref(); const state = reactive({ isShowDialog: false, loading: false, - tableData: [] as CodeGenConfig[], + tableData: [] as any, // CodeGenConfig[], dbData: [] as any, effectTypeList: [] as any, dictTypeCodeList: [] as any, @@ -198,8 +205,8 @@ const handleQuery = async (row: any) => { if (item[key] === 'N' || (lstWhetherColumn.includes(key) && item[key] === null)) { item[key] = false; } - }; - //验证规则相关 + } + // 验证规则相关 let rules = new Array(); if (item.rules != '' && item.rules !== null) { rules = JSON.parse(item.rules); @@ -244,7 +251,7 @@ const openVerifyDialog = (row: any) => { verifyDialogRef.value.openDialog(row); }; -//验证提交回调 +// 验证提交回调 const submitVerifyOk = (data: any) => { console.log('submitVerifyOk', data); for (let i = 0; i < state.tableData.length; i++) { @@ -255,13 +262,13 @@ const submitVerifyOk = (data: any) => { let rules = new Array(); if (data.rules != '' && data.rules !== null) { rules = JSON.parse(data.rules); - let requiredRule = rules.find(t => t.type === 'required'); + let requiredRule = rules.find((t) => t.type === 'required'); if (requiredRule) { state.tableData[i].whetherRequired = true; } else { state.tableData[i].whetherRequired = false; } - }; + } break; } } @@ -283,14 +290,14 @@ const submit = async () => { state.loading = true; var lst = state.tableData; console.log(lst); - let ignoreFields=['remoteVerify','anyRule','columnKey']; - lst.forEach((item: CodeGenConfig) => { + let ignoreFields = ['remoteVerify', 'anyRule', 'columnKey']; + lst.forEach((item: any) => { // 必填那一项转换 for (var key in item) { - if (item[key] === true&&!ignoreFields.includes(key)) { + if (item[key] === true && !ignoreFields.includes(key)) { item[key] = 'Y'; } - if (item[key] === false&&!ignoreFields.includes(key)) { + if (item[key] === false && !ignoreFields.includes(key)) { item[key] = 'N'; } } @@ -300,51 +307,6 @@ const submit = async () => { closeDialog(); }; -const convertDbType = (dbType: number) => { - let result = ''; - switch (dbType) { - case 0: - result = 'MySql'; - break; - case 1: - result = 'SqlServer'; - break; - case 2: - result = 'Sqlite'; - break; - case 3: - result = 'Oracle'; - break; - case 4: - result = 'PostgreSql'; - break; - case 5: - result = 'Dm'; - break; - case 6: - result = 'Kdbndp'; - break; - case 7: - result = 'Oscar'; - break; - case 8: - result = 'MySqlConnector'; - break; - case 9: - result = 'Access'; - break; - default: - result = 'Custom'; - break; - } - return result; -}; - -const isOrNotSelect = () => [ - { label: '是', value: 1 }, - { label: '否', value: 0 }, -]; - // 导出对象 defineExpose({ openDialog }); diff --git a/Web/src/views/system/codeGen/component/patternDialog.vue b/Web/src/views/system/codeGen/component/patternDialog.vue index 672874cb..a2a36a46 100644 --- a/Web/src/views/system/codeGen/component/patternDialog.vue +++ b/Web/src/views/system/codeGen/component/patternDialog.vue @@ -1,292 +1,292 @@ + +