From bbb6d7d5b400e548b87d8638d6b8053e8188a4f0 Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Thu, 11 Mar 2021 17:06:10 +0800 Subject: [PATCH] Fixed feature management UI failing to validate numeric types --- ...sManagementPermissionDefinitionProvider.cs | 1 + .../LINGYUN.ApiGateway.Host/event-bus-cap.db | Bin 40960 -> 40960 bytes vueJs/src/api/feature-management.ts | 2 +- .../admin/components/FeatureManagement.vue | 53 ++++++++++++------ vueJs/src/views/oss-management/index.vue | 38 +++++++++++-- 5 files changed, 69 insertions(+), 25 deletions(-) diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissionDefinitionProvider.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissionDefinitionProvider.cs index 10ce0f4eb..2cc6e5ffc 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissionDefinitionProvider.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissionDefinitionProvider.cs @@ -17,6 +17,7 @@ namespace LINGYUN.Abp.OssManagement.Permissions var ossobject = ossManagement.AddPermission(AbpOssManagementPermissions.OssObject.Default, L("Permission:OssObject")); ossobject.AddChild(AbpOssManagementPermissions.OssObject.Create, L("Permission:Create")); ossobject.AddChild(AbpOssManagementPermissions.OssObject.Delete, L("Permission:Delete")); + ossobject.AddChild(AbpOssManagementPermissions.OssObject.Download, L("Permission:Download")); } private static LocalizableString L(string name) diff --git a/aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db b/aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db index 3c60954cc5bcda97149d12ef106c03fc954ed1bc..e2441e0c74351cd10d54293aef716951eda2fbe3 100644 GIT binary patch delta 250 zcmZoTz|?SnX@WFw3j+fK7Z7s-G4n(XbHj^9a1<=V#>uve|gK z`0E)s_{A9}3n<8JR#AxN*9HnV3Nx;dNPpS@Hl+l};hh5HfQ(BQW?cT$7RccMa-ue` z(hpY0XStKcdi3MoSpUpecLYSCXmTl&X3FXNxd-@{)&nL|NlvyMVAzcvpu8>2Ae3W@Zm4GdgR4(}8ohZDkC{?iu7 z;Q(UF)^{d+N>hv!^FbCz%pxdi3pg*UyIO9&^=X1>T^Aj^k?XLD+_FOx7k51U{kvte5@hqJT1Fyr#;>ryAnM|SfV8<-iJ zn^_u}8d{i4{#YkGSs{j%3n4i9LFPPG12ZdQv&o9_K|ElVo`t2kp@HFKgV;bPkc^(C zk&&^9nTe5sk)f`Ev96(^f}xoeNU6D=rGbf|xuscfX>xLEYD#JfFVHWnOdl9sutXVUPd- diff --git a/vueJs/src/api/feature-management.ts b/vueJs/src/api/feature-management.ts index 50633e181..3fafd2615 100644 --- a/vueJs/src/api/feature-management.ts +++ b/vueJs/src/api/feature-management.ts @@ -32,7 +32,7 @@ export class ValueType { export class Feature { name!: string displayName?: string - value!: string + value!: any description?: string valueType?: ValueType depth?: number diff --git a/vueJs/src/views/admin/components/FeatureManagement.vue b/vueJs/src/views/admin/components/FeatureManagement.vue index a61b9d7b7..50531c280 100644 --- a/vueJs/src/views/admin/components/FeatureManagement.vue +++ b/vueJs/src/views/admin/components/FeatureManagement.vue @@ -36,8 +36,7 @@ v-if="feature.valueType.name === 'ToggleStringValueType'" >
() if (validator.name === 'NUMERIC' && validator.properties) { const ruleRang: {[key: string]: any} = {} - // TODO: 需要动态验证数值范围 - // 暂时不提交 - // 可行性一、对返回数据使用计算属性,在获取数据之后就组装好验证类,传递给对应的form-item的rules - // 可行性二、TODO... - ruleRang.pattern = RegExp('^[^' + validator.properties.MinValue + ']\\d{0,4}$|^' + validator.properties.MaxValue + '$') - // ruleRang.pattern = ^\d{0,11}$ - // ruleRang.type = 'number' - // ruleRang.min = validator.properties.MinValue - // ruleRang.max = validator.properties.MaxValue + ruleRang.type = 'number' + ruleRang.min = validator.properties.MinValue + ruleRang.max = validator.properties.MaxValue ruleRang.trigger = 'blur' ruleRang.message = localizer('AbpFeatureManagement.ThisFieldMustBeBetween{0}And{1}', { 0: validator.properties.MinValue, 1: validator.properties.MaxValue }) featureRules.push(ruleRang) @@ -196,19 +191,24 @@ export default class extends Vue { */ private featureGroups = new FeatureGroups() + get numericValue() { + return (gi: number, fi: number) => { + if (this.featureGroups) { + return Number(this.featureGroups.groups[gi].features[fi].value) + } + return 0 + } + } + mounted() { this.handleGetFeatures() } - @Watch('providerKey') + @Watch('loadFeature') onProviderKeyChanged() { this.handleGetFeatures() } - private handleValueChanged(feature: Feature, value: any) { - feature.value = String(value) - } - /** * 重置表单数据 */ @@ -226,6 +226,22 @@ export default class extends Vue { .getFeatures(this.providerName, this.providerKey) .then(res => { this.featureGroups = res + // 需要改变值类型, 有没有其他的解决方案, + this.featureGroups + .groups + .forEach(group => { + group.features + .forEach(feature => { + switch (feature.valueType?.validator.name) { + case 'BOOLEAN' : + feature.value = feature.value === 'true' + break + case 'NUMERIC' : + feature.value = Number(feature.value) + break + } + }) + }) if (this.featureGroups.groups.length > 0) { this.selectTab = this.featureGroups.groups[0].name } @@ -245,7 +261,8 @@ export default class extends Vue { this.featureGroups.groups.forEach(group => { group.features.forEach(feature => { if (feature.valueType != null) { - updateFeatures.features.push(new Feature(feature.name, feature.value)) + // 需要全部转换为string类型 + updateFeatures.features.push(new Feature(feature.name, String(feature.value))) } }) }) diff --git a/vueJs/src/views/oss-management/index.vue b/vueJs/src/views/oss-management/index.vue index 65d7b145b..563b06d4a 100644 --- a/vueJs/src/views/oss-management/index.vue +++ b/vueJs/src/views/oss-management/index.vue @@ -118,6 +118,7 @@