Browse Source

✨ 移除EasyAbp.SettingUI

✨ 重写设置管理模块
abp4.x
王军 5 years ago
parent
commit
6a0971d8a2
  1. 1
      aspnet-core/Directory.Build.props
  2. 1
      aspnet-core/services/host/CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs
  3. 6
      aspnet-core/services/src/CompanyName.ProjectName.Application.Contracts/CompanyName.ProjectName.Application.Contracts.csproj
  4. 1
      aspnet-core/services/src/CompanyName.ProjectName.Application.Contracts/Permissions/ProjectNamePermissionDefinitionProvider.cs
  5. 1
      aspnet-core/services/src/CompanyName.ProjectName.Application.Contracts/Permissions/ProjectNamePermissions.cs
  6. 4
      aspnet-core/services/src/CompanyName.ProjectName.Application.Contracts/ProjectNameApplicationContractsModule.cs
  7. 62
      aspnet-core/services/src/CompanyName.ProjectName.Application.Contracts/Settings/Dtos/SettingOutput.cs
  8. 3
      aspnet-core/services/src/CompanyName.ProjectName.Application.Contracts/Settings/ISettingAppService.cs
  9. 29
      aspnet-core/services/src/CompanyName.ProjectName.Application.Contracts/Tenants/IVoloTenantAppService.cs
  10. 2
      aspnet-core/services/src/CompanyName.ProjectName.Application/CompanyName.ProjectName.Application.csproj
  11. 1
      aspnet-core/services/src/CompanyName.ProjectName.Application/ProjectNameAppService.cs
  12. 2
      aspnet-core/services/src/CompanyName.ProjectName.Application/ProjectNameApplicationModule.cs
  13. 22
      aspnet-core/services/src/CompanyName.ProjectName.Application/Roles/RolePermissionAppService.cs
  14. 106
      aspnet-core/services/src/CompanyName.ProjectName.Application/Settings/SettingAppService.cs
  15. 81
      aspnet-core/services/src/CompanyName.ProjectName.Application/Tenants/VoloTenantAppService.cs
  16. 1
      aspnet-core/services/src/CompanyName.ProjectName.Domain.Shared/CompanyName.ProjectName.Domain.Shared.csproj
  17. 6
      aspnet-core/services/src/CompanyName.ProjectName.Domain.Shared/Localization/ProjectName/en.json
  18. 52
      aspnet-core/services/src/CompanyName.ProjectName.Domain.Shared/Localization/ProjectName/zh-Hans.json
  19. 13
      aspnet-core/services/src/CompanyName.ProjectName.Domain.Shared/ProjectNameDomainSharedModule.cs
  20. 67
      aspnet-core/services/src/CompanyName.ProjectName.Domain/Settings/ProjectNameSettingDefinitionProvider.cs
  21. 30
      aspnet-core/services/src/CompanyName.ProjectName.Domain/Settings/ProjectNameSettings.cs
  22. 4
      aspnet-core/services/src/CompanyName.ProjectName.HttpApi/Controllers/Systems/SettingController.cs
  23. 54
      aspnet-core/services/src/CompanyName.ProjectName.HttpApi/Controllers/Tenants/AbpTenantController.cs
  24. 50
      aspnet-core/services/src/CompanyName.ProjectName.HttpApi/Controllers/Tenants/TenantController.cs
  25. 4
      vben271/src/router/routes/modules/admin.ts
  26. 1835
      vben271/src/services/ServiceProxies.ts
  27. 34
      vben271/src/views/admin/settings/Setting.vue

1
aspnet-core/Directory.Build.props

@ -8,7 +8,6 @@
<MicrosoftExtensionsHttpVersion>5.0.0</MicrosoftExtensionsHttpVersion> <MicrosoftExtensionsHttpVersion>5.0.0</MicrosoftExtensionsHttpVersion>
<SystemComponentModelAnnotationsVersion>5.0.0</SystemComponentModelAnnotationsVersion> <SystemComponentModelAnnotationsVersion>5.0.0</SystemComponentModelAnnotationsVersion>
<MicrosoftExtensionsDependencyModelVersion>5.0.0</MicrosoftExtensionsDependencyModelVersion> <MicrosoftExtensionsDependencyModelVersion>5.0.0</MicrosoftExtensionsDependencyModelVersion>
<EasyAbpSttingVersion>1.5.0</EasyAbpSttingVersion>
<SerilogVersion>2.10.0</SerilogVersion> <SerilogVersion>2.10.0</SerilogVersion>
<SerilogExtensionsLoggingVersion>3.0.1</SerilogExtensionsLoggingVersion> <SerilogExtensionsLoggingVersion>3.0.1</SerilogExtensionsLoggingVersion>
<SerilogSinksAsyncVersion>1.4.0</SerilogSinksAsyncVersion> <SerilogSinksAsyncVersion>1.4.0</SerilogSinksAsyncVersion>

1
aspnet-core/services/host/CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs

@ -217,6 +217,7 @@ namespace CompanyName.ProjectName
currentContext.Token = accessToken; currentContext.Token = accessToken;
} }
currentContext.Request.Headers.Remove("Authorization");
currentContext.Request.Headers.Add("Authorization", currentContext.Request.Headers.Add("Authorization",
$"Bearer {accessToken}"); $"Bearer {accessToken}");

6
aspnet-core/services/src/CompanyName.ProjectName.Application.Contracts/CompanyName.ProjectName.Application.Contracts.csproj

@ -13,7 +13,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="EasyAbp.Abp.SettingUi.Application.Contracts" Version="$(EasyAbpSttingVersion)" /> <PackageReference Include="Volo.Abp.AspNetCore.Mvc.Contracts" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.ObjectExtending" Version="$(AbpPackageVersion)" /> <PackageReference Include="Volo.Abp.ObjectExtending" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.Account.Application.Contracts" Version="$(AbpPackageVersion)" /> <PackageReference Include="Volo.Abp.Account.Application.Contracts" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.Identity.Application.Contracts" Version="$(AbpPackageVersion)" /> <PackageReference Include="Volo.Abp.Identity.Application.Contracts" Version="$(AbpPackageVersion)" />
@ -35,8 +35,4 @@
<None Remove="AuditLogs\Dto\**" /> <None Remove="AuditLogs\Dto\**" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="Tenants" />
</ItemGroup>
</Project> </Project>

1
aspnet-core/services/src/CompanyName.ProjectName.Application.Contracts/Permissions/ProjectNamePermissionDefinitionProvider.cs

@ -17,6 +17,7 @@ namespace CompanyName.ProjectName.Permissions
var auditManagement = var auditManagement =
abpIdentityGroup.AddPermission(ProjectNamePermissions.SystemManagement.AuditLog, L("Permission:AuditLogManagement")); abpIdentityGroup.AddPermission(ProjectNamePermissions.SystemManagement.AuditLog, L("Permission:AuditLogManagement"));
var esManagement = abpIdentityGroup.AddPermission(ProjectNamePermissions.SystemManagement.ES, L("Permission:ESManagement")); var esManagement = abpIdentityGroup.AddPermission(ProjectNamePermissions.SystemManagement.ES, L("Permission:ESManagement"));
var settingManagement = abpIdentityGroup.AddPermission(ProjectNamePermissions.SystemManagement.Setting, L("Permission:SettingManagement"));
#region IdentityServer #region IdentityServer

1
aspnet-core/services/src/CompanyName.ProjectName.Application.Contracts/Permissions/ProjectNamePermissions.cs

@ -20,6 +20,7 @@ namespace CompanyName.ProjectName.Permissions
public const string UserEnable = Default + ".Users.Enable"; public const string UserEnable = Default + ".Users.Enable";
public const string AuditLog = Default + ".AuditLog"; public const string AuditLog = Default + ".AuditLog";
public const string ES = Default + ".ES"; public const string ES = Default + ".ES";
public const string Setting = Default + ".Setting";
} }

4
aspnet-core/services/src/CompanyName.ProjectName.Application.Contracts/ProjectNameApplicationContractsModule.cs

@ -1,5 +1,4 @@
using CompanyName.ProjectName.DataDictionaryManagement; using CompanyName.ProjectName.DataDictionaryManagement;
using EasyAbp.Abp.SettingUi;
using Volo.Abp.Account; using Volo.Abp.Account;
using Volo.Abp.FeatureManagement; using Volo.Abp.FeatureManagement;
using Volo.Abp.Identity; using Volo.Abp.Identity;
@ -20,8 +19,7 @@ namespace CompanyName.ProjectName
typeof(AbpSettingManagementApplicationContractsModule), typeof(AbpSettingManagementApplicationContractsModule),
typeof(AbpTenantManagementApplicationContractsModule), typeof(AbpTenantManagementApplicationContractsModule),
typeof(AbpObjectExtendingModule), typeof(AbpObjectExtendingModule),
typeof(DataDictionaryManagementApplicationContractsModule), typeof(DataDictionaryManagementApplicationContractsModule)
typeof(AbpSettingUiApplicationContractsModule)
)] )]
public class ProjectNameApplicationContractsModule : AbpModule public class ProjectNameApplicationContractsModule : AbpModule
{ {

62
aspnet-core/services/src/CompanyName.ProjectName.Application.Contracts/Settings/Dtos/SettingOutput.cs

@ -0,0 +1,62 @@
using System;
using System.Collections.Generic;
namespace CompanyName.ProjectName.Settings
{
public class SettingOutput
{
/// <summary>
/// 分组
/// </summary>
public string Group { get; set; }
/// <summary>
/// 分组显示名称
/// </summary>
public string GroupDisplayName { get; set; }
public List<SettingItemOutput> SettingItemOutput { get; set; }
public SettingOutput()
{
SettingItemOutput = new List<SettingItemOutput>();
}
}
public class SettingItemOutput
{
public SettingItemOutput(string name, string displayName, string value, string type,string description)
{
Name = name;
DisplayName = displayName;
Value = value;
Type = type ?? "Text";
Description = description;
}
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 显示名称
/// </summary>
public string DisplayName { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 值
/// </summary>
public string Value { get; set; }
/// <summary>
/// 前端控件类型
/// </summary>
public string Type { get; set; }
}
}

3
aspnet-core/services/src/CompanyName.ProjectName.Application.Contracts/Settings/ISettingAppService.cs

@ -1,6 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using EasyAbp.Abp.SettingUi.Dto;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
namespace CompanyName.ProjectName.Settings namespace CompanyName.ProjectName.Settings
@ -11,7 +10,7 @@ namespace CompanyName.ProjectName.Settings
/// 获取setting信息 /// 获取setting信息
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
Task<List<SettingGroup>> GetAsync(); Task<List<SettingOutput>> GetAsync();
/// <summary> /// <summary>
/// 更新setting /// 更新setting

29
aspnet-core/services/src/CompanyName.ProjectName.Application.Contracts/Tenants/IVoloTenantAppService.cs

@ -0,0 +1,29 @@
using System.Threading.Tasks;
using CompanyName.ProjectName.Extension.Customs.Dtos;
using CompanyName.ProjectName.Tenants.Dtos;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.AspNetCore.Mvc.MultiTenancy;
using Volo.Abp.TenantManagement;
namespace CompanyName.ProjectName.Tenants
{
public interface IVoloTenantAppService : IApplicationService
{
Task<FindTenantResultDto> FindTenantByNameAsync(FindTenantByNameInput input);
Task<PagedResultDto<TenantDto>> ListAsync(PagingTenantInput input);
Task<TenantDto> CreateAsync(TenantCreateDto input);
Task<TenantDto> UpdateAsync(UpdateTenantInput input);
Task DeleteAsync(IdInput input);
Task<string> GetDefaultConnectionStringAsync(IdInput input);
Task UpdateDefaultConnectionStringAsync(UpdateConnectionStringInput input);
Task DeleteDefaultConnectionStringAsync(IdInput input);
}
}

2
aspnet-core/services/src/CompanyName.ProjectName.Application/CompanyName.ProjectName.Application.csproj

@ -15,8 +15,8 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="EasyAbp.Abp.SettingUi.Application" Version="$(EasyAbpSttingVersion)" />
<PackageReference Include="Volo.Abp.Account.Application" Version="$(AbpPackageVersion)" /> <PackageReference Include="Volo.Abp.Account.Application" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.Contracts" Version="4.4.0" />
<PackageReference Include="Volo.Abp.Identity.Application" Version="$(AbpPackageVersion)" /> <PackageReference Include="Volo.Abp.Identity.Application" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.PermissionManagement.Application" Version="$(AbpPackageVersion)" /> <PackageReference Include="Volo.Abp.PermissionManagement.Application" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.TenantManagement.Application" Version="$(AbpPackageVersion)" /> <PackageReference Include="Volo.Abp.TenantManagement.Application" Version="$(AbpPackageVersion)" />

1
aspnet-core/services/src/CompanyName.ProjectName.Application/ProjectNameAppService.cs

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Text; using System.Text;
using CompanyName.ProjectName.Localization; using CompanyName.ProjectName.Localization;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
using Volo.Abp.Localization;
namespace CompanyName.ProjectName namespace CompanyName.ProjectName
{ {

2
aspnet-core/services/src/CompanyName.ProjectName.Application/ProjectNameApplicationModule.cs

@ -1,7 +1,6 @@
using CompanyName.ProjectName.DataDictionaryManagement; using CompanyName.ProjectName.DataDictionaryManagement;
using CompanyName.ProjectName.FreeSqlRepository; using CompanyName.ProjectName.FreeSqlRepository;
using CompanyName.ProjectName.NotificationManagement; using CompanyName.ProjectName.NotificationManagement;
using EasyAbp.Abp.SettingUi;
using Volo.Abp.Account; using Volo.Abp.Account;
using Volo.Abp.AuditLogging; using Volo.Abp.AuditLogging;
using Volo.Abp.AutoMapper; using Volo.Abp.AutoMapper;
@ -26,7 +25,6 @@ namespace CompanyName.ProjectName
typeof(AbpAuditLoggingDomainModule), typeof(AbpAuditLoggingDomainModule),
typeof(DataDictionaryManagementApplicationModule), typeof(DataDictionaryManagementApplicationModule),
typeof(NotificationManagementApplicationModule), typeof(NotificationManagementApplicationModule),
typeof(AbpSettingUiApplicationModule),
typeof(FreeSqlRepositoryModule) typeof(FreeSqlRepositoryModule)
)] )]
public class ProjectNameApplicationModule : AbpModule public class ProjectNameApplicationModule : AbpModule

22
aspnet-core/services/src/CompanyName.ProjectName.Application/Roles/RolePermissionAppService.cs

@ -61,8 +61,7 @@ namespace CompanyName.ProjectName.Roles
"AbpTenantManagement.Tenants.ManageFeatures", "AbpTenantManagement.Tenants.ManageFeatures",
// "AbpTenantManagement.Tenants.ManageConnectionStrings", // "AbpTenantManagement.Tenants.ManageConnectionStrings",
"SettingManagement", "SettingManagement",
"SettingManagement.Emailing", "SettingManagement.Emailing"
"SettingUi"
}; };
var permissions = new List<PermissionTreeDto>(); var permissions = new List<PermissionTreeDto>();
@ -99,24 +98,7 @@ namespace CompanyName.ProjectName.Roles
} }
result.Permissions = permissions; result.Permissions = permissions;
var settingUIPermisstion = "SettingUi.ShowSettingPage";
// https://github.com/EasyAbp/Abp.SettingUi/blob/develop/src/EasyAbp.Abp.SettingUi.Application/SettingUiAppService.cs
// 因为使用的SettingUI模块,想把权限添加到系统管理下
result.Permissions.First(e => e.Key == "AbpIdentity").Children.Add(
new PermissionTreeDto()
{
Key = settingUIPermisstion,
Title = L["Permission:SettingUi:ShowSettingPage"]
});
result.AllGrants.Add(settingUIPermisstion);
var setting = input.First(e => e.Name == "SettingUi").Permissions
.First(e => e.Name == settingUIPermisstion);
if (setting.IsGranted)
{
result.Grants.Add(settingUIPermisstion);
}
return result; return result;
} }

106
aspnet-core/services/src/CompanyName.ProjectName.Application/Settings/SettingAppService.cs

@ -1,31 +1,113 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using EasyAbp.Abp.SettingUi; using CompanyName.ProjectName.Localization;
using EasyAbp.Abp.SettingUi.Authorization; using CompanyName.ProjectName.Permissions;
using EasyAbp.Abp.SettingUi.Dto;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Localization;
using Volo.Abp.Localization;
using Volo.Abp.SettingManagement;
using Volo.Abp.Settings;
namespace CompanyName.ProjectName.Settings namespace CompanyName.ProjectName.Settings
{ {
[Authorize(Policy = SettingUiPermissions.ShowSettingPage)] [Authorize(policy: ProjectNamePermissions.SystemManagement.Setting)]
public class SettingAppService : ProjectNameAppService, ISettingAppService public class SettingAppService : ProjectNameAppService, ISettingAppService
{ {
private readonly ISettingUiAppService _settingUiAppService; private readonly ISettingDefinitionManager _settingDefinitionManager;
private readonly ISettingManager _settingManager;
private readonly IStringLocalizer<ProjectNameResource> _localizer;
private readonly IStringLocalizerFactory _factory;
public SettingAppService(ISettingUiAppService settingUiAppService) public SettingAppService(
ISettingDefinitionManager settingDefinitionManager,
ISettingManager settingManager,
IStringLocalizer<ProjectNameResource> localizer,
IStringLocalizerFactory factory)
{ {
_settingUiAppService = settingUiAppService; _settingDefinitionManager = settingDefinitionManager;
_settingManager = settingManager;
_localizer = localizer;
_factory = factory;
} }
public async Task<List<SettingOutput>> GetAsync()
public async Task<List<SettingGroup>> GetAsync()
{ {
return await _settingUiAppService.GroupSettingDefinitions(); var ss = _localizer.GetAllStrings();
var s = _localizer["Setting:Group:System"];
var s2 = _localizer["Volo.Abp.Identity:PasswordRequiresDigit"];
var allSettings = _settingDefinitionManager.GetAll().ToList();
var settings = allSettings
.Where(e => e.Properties.ContainsKey(ProjectNameSettings.Group.Defalut)).ToList();
var settingOutput = settings
.GroupBy(e => e.Properties[ProjectNameSettings.Group.Defalut].ToString()).Select(s =>
new SettingOutput
{
Group = s.Key,
GroupDisplayName = _localizer[s.Key]
}).ToList();
foreach (var item in settingOutput)
{
var currentSettings = settings.Where(e => e.Properties.ContainsValue(item.Group));
foreach (var itemDefinition in currentSettings)
{
var value = await SettingProvider.GetOrNullAsync(itemDefinition.Name);
var type = itemDefinition.Properties
.FirstOrDefault(f => f.Key == ProjectNameSettings.ControlType.Defalut).Value
.ToString();
item.SettingItemOutput.Add(new SettingItemOutput(
itemDefinition.Name,
L["DisplayName:" + itemDefinition.Name],
value,
type,
itemDefinition.Description.Localize(_factory)));
}
}
return await Task.FromResult(settingOutput);
} }
public async Task UpdateAsync(UpdateSettingInput input) public async Task UpdateAsync(UpdateSettingInput input)
{ {
await _settingUiAppService.SetSettingValues(input.Values); foreach (var kv in input.Values)
{
// The key of the settingValues is in camel_Case, like "setting_Abp_Localization_DefaultLanguage",
// change it to "Abp.Localization.DefaultLanguage" form
if (!kv.Key.StartsWith(ProjectNameSettings.Prefix))
{
continue;
}
string name = kv.Key.RemovePreFix(ProjectNameSettings.Prefix);
var setting = _settingDefinitionManager.GetOrNull(name);
if (setting == null)
{
continue;
}
await SetSetting(setting, kv.Value);
}
}
private Task SetSetting(SettingDefinition setting, string value)
{
if (setting.Providers.Any(p => p == UserSettingValueProvider.ProviderName))
{
return _settingManager.SetForCurrentUserAsync(setting.Name, value);
}
if (setting.Providers.Any(p => p == GlobalSettingValueProvider.ProviderName))
{
return _settingManager.SetGlobalAsync(setting.Name, value);
}
//Default
return _settingManager.SetForCurrentTenantAsync(setting.Name, value);
} }
} }
} }

81
aspnet-core/services/src/CompanyName.ProjectName.Application/Tenants/VoloTenantAppService.cs

@ -0,0 +1,81 @@
using System.Threading.Tasks;
using CompanyName.ProjectName.Extension.Customs.Dtos;
using CompanyName.ProjectName.Tenants.Dtos;
using Microsoft.AspNetCore.Authorization;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc.MultiTenancy;
using Volo.Abp.TenantManagement;
namespace CompanyName.ProjectName.Tenants
{
public class VoloTenantAppService : ProjectNameAppService, IVoloTenantAppService
{
private readonly IAbpTenantAppService _abpTenantAppService;
private readonly ITenantAppService _tenantAppService;
public VoloTenantAppService(
IAbpTenantAppService abpTenantAppService,
ITenantAppService tenantAppService)
{
_abpTenantAppService = abpTenantAppService;
_tenantAppService = tenantAppService;
}
public async Task<FindTenantResultDto> FindTenantByNameAsync(FindTenantByNameInput input)
{
return await _abpTenantAppService.FindTenantByNameAsync(input.Name);
}
[Authorize(policy:TenantManagementPermissions.Tenants.Default)]
public Task<PagedResultDto<TenantDto>> ListAsync(PagingTenantInput input)
{
var request = new GetTenantsInput
{
Filter = input.Filter, SkipCount = input.SkipCount, MaxResultCount = input.PageSize
};
return _tenantAppService.GetListAsync(request);
}
[Authorize(policy:TenantManagementPermissions.Tenants.Create)]
public Task<TenantDto> CreateAsync(TenantCreateDto input)
{
return _tenantAppService.CreateAsync(input);
}
[Authorize(policy:TenantManagementPermissions.Tenants.Update)]
public Task<TenantDto> UpdateAsync(UpdateTenantInput input)
{
var request = new TenantUpdateDto()
{
Name = input.Name.Trim()
};
return _tenantAppService.UpdateAsync(input.Id, request);
}
[Authorize(policy:TenantManagementPermissions.Tenants.Delete)]
public Task DeleteAsync(IdInput input)
{
return _tenantAppService.DeleteAsync(input.Id);
}
[Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)]
public Task<string> GetDefaultConnectionStringAsync(IdInput input)
{
return _tenantAppService.GetDefaultConnectionStringAsync(input.Id);
}
[Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)]
public Task UpdateDefaultConnectionStringAsync(UpdateConnectionStringInput input)
{
return _tenantAppService.UpdateDefaultConnectionStringAsync(input.Id,
input.ConnectionString);
}
[Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)]
public Task DeleteDefaultConnectionStringAsync(IdInput input)
{
return _tenantAppService.DeleteDefaultConnectionStringAsync(input.Id);
}
}
}

1
aspnet-core/services/src/CompanyName.ProjectName.Domain.Shared/CompanyName.ProjectName.Domain.Shared.csproj

@ -9,7 +9,6 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="EasyAbp.Abp.SettingUi.Domain.Shared" Version="$(EasyAbpSttingVersion)" />
<PackageReference Include="Volo.Abp.Identity.Domain.Shared" Version="$(AbpPackageVersion)" /> <PackageReference Include="Volo.Abp.Identity.Domain.Shared" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.IdentityServer.Domain.Shared" Version="$(AbpPackageVersion)" /> <PackageReference Include="Volo.Abp.IdentityServer.Domain.Shared" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.BackgroundJobs.Domain.Shared" Version="$(AbpPackageVersion)" /> <PackageReference Include="Volo.Abp.BackgroundJobs.Domain.Shared" Version="$(AbpPackageVersion)" />

6
aspnet-core/services/src/CompanyName.ProjectName.Domain.Shared/Localization/ProjectName/en.json

@ -15,11 +15,15 @@
"Permission:HangfireManagement": "BackgroundTask", "Permission:HangfireManagement": "BackgroundTask",
"Permission:CapManagement": "IntegratedEvent", "Permission:CapManagement": "IntegratedEvent",
"Permission:ESManagement": "ESManagement", "Permission:ESManagement": "ESManagement",
"Permission:SettingManagement": "SettingManagement",
"Permission:IdentityServerManagement": "IdentityServer", "Permission:IdentityServerManagement": "IdentityServer",
"Permission:IdentityServerManagement:Client": "Client", "Permission:IdentityServerManagement:Client": "Client",
"Permission:IdentityServerManagement:ApiResource": "ApiResource", "Permission:IdentityServerManagement:ApiResource": "ApiResource",
"Permission:IdentityServerManagement:ApiScope": "ApiScope", "Permission:IdentityServerManagement:ApiScope": "ApiScope",
"Permission:IdentityServerManagement:IdentityResources": "IdentityResources", "Permission:IdentityServerManagement:IdentityResources": "IdentityResources",
"Permission:SettingUi:ShowSettingPage": "SettingManagement" "Setting.Group.System": "System",
"Setting.Group.Other": "Other",
"DisplayName:Setting.Group.Other.Github": "Github",
"Description:Setting.Group.Other.Github": "Github"
} }
} }

52
aspnet-core/services/src/CompanyName.ProjectName.Domain.Shared/Localization/ProjectName/zh-Hans.json

@ -1,25 +1,29 @@
{ {
"culture": "zh-Hans", "culture": "zh-Hans",
"texts": { "texts": {
"Menu:Home": "首页", "Menu:Home": "首页",
"Welcome": "欢迎", "Welcome": "欢迎",
"Test": "测试", "Test": "测试",
"LongWelcomeMessage": "欢迎来到该应用程序. 这是一个基于ABP框架的启动项目. 有关更多信息, 请访问 abp.io.", "LongWelcomeMessage": "欢迎来到该应用程序. 这是一个基于ABP框架的启动项目. 有关更多信息, 请访问 abp.io.",
"Permission:Query": "查询", "Permission:Query": "查询",
"Permission:Create": "创建", "Permission:Create": "创建",
"Permission:Update": "编辑", "Permission:Update": "编辑",
"Permission:Delete": "删除", "Permission:Delete": "删除",
"Permission:Enable": "启用|禁用", "Permission:Enable": "启用|禁用",
"Permission:AuditLogManagement": "审计日志", "Permission:AuditLogManagement": "审计日志",
"Permission:SystemManagement": "系统管理", "Permission:SystemManagement": "系统管理",
"Permission:HangfireManagement": "后台任务", "Permission:HangfireManagement": "后台任务",
"Permission:CapManagement": "集成事件", "Permission:CapManagement": "集成事件",
"Permission:ESManagement": "ES日志", "Permission:ESManagement": "ES日志",
"Permission:IdentityServerManagement": "IdentityServer", "Permission:SettingManagement": "设置管理",
"Permission:IdentityServerManagement:Client": "客户端", "Permission:IdentityServerManagement": "IdentityServer",
"Permission:IdentityServerManagement:ApiResource": "Api资源", "Permission:IdentityServerManagement:Client": "客户端",
"Permission:IdentityServerManagement:ApiScope": "ApiScope", "Permission:IdentityServerManagement:ApiResource": "Api资源",
"Permission:IdentityServerManagement:IdentityResources": "Identity资源", "Permission:IdentityServerManagement:ApiScope": "ApiScope",
"Permission:SettingUi:ShowSettingPage": "设置管理" "Permission:IdentityServerManagement:IdentityResources": "Identity资源",
} "Setting.Group.System": "系统",
} "Setting.Group.Other": "其它",
"DisplayName:Setting.Group.Other.Github": "Github",
"Description:Setting.Group.Other.Github": "Github"
}
}

13
aspnet-core/services/src/CompanyName.ProjectName.Domain.Shared/ProjectNameDomainSharedModule.cs

@ -1,16 +1,19 @@
using CompanyName.ProjectName.Localization; using CompanyName.ProjectName.Localization;
using EasyAbp.Abp.SettingUi;
using Volo.Abp.AuditLogging; using Volo.Abp.AuditLogging;
using Volo.Abp.BackgroundJobs; using Volo.Abp.BackgroundJobs;
using Volo.Abp.FeatureManagement; using Volo.Abp.FeatureManagement;
using Volo.Abp.Identity; using Volo.Abp.Identity;
using Volo.Abp.Identity.Localization;
using Volo.Abp.IdentityServer; using Volo.Abp.IdentityServer;
using Volo.Abp.Localization; using Volo.Abp.Localization;
using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Localization.ExceptionHandling;
using Volo.Abp.Localization.Resources.AbpLocalization;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement; using Volo.Abp.PermissionManagement;
using Volo.Abp.SettingManagement; using Volo.Abp.SettingManagement;
using Volo.Abp.TenantManagement; using Volo.Abp.TenantManagement;
using Volo.Abp.Timing.Localization.Resources.AbpTiming;
using Volo.Abp.Validation;
using Volo.Abp.Validation.Localization; using Volo.Abp.Validation.Localization;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
@ -24,8 +27,7 @@ namespace CompanyName.ProjectName
typeof(AbpIdentityServerDomainSharedModule), typeof(AbpIdentityServerDomainSharedModule),
typeof(AbpPermissionManagementDomainSharedModule), typeof(AbpPermissionManagementDomainSharedModule),
typeof(AbpSettingManagementDomainSharedModule), typeof(AbpSettingManagementDomainSharedModule),
typeof(AbpTenantManagementDomainSharedModule), typeof(AbpTenantManagementDomainSharedModule)
typeof(AbpSettingUiDomainSharedModule)
)] )]
public class ProjectNameDomainSharedModule : AbpModule public class ProjectNameDomainSharedModule : AbpModule
{ {
@ -41,12 +43,15 @@ namespace CompanyName.ProjectName
{ {
options.FileSets.AddEmbedded<ProjectNameDomainSharedModule>("CompanyName.ProjectName"); options.FileSets.AddEmbedded<ProjectNameDomainSharedModule>("CompanyName.ProjectName");
}); });
Configure<AbpLocalizationOptions>(options => Configure<AbpLocalizationOptions>(options =>
{ {
options.Resources options.Resources
.Add<ProjectNameResource>("zh-Hans") .Add<ProjectNameResource>("zh-Hans")
.AddBaseTypes(typeof(AbpValidationResource)) .AddBaseTypes(typeof(AbpValidationResource))
.AddBaseTypes(typeof(AbpLocalizationResource))
.AddBaseTypes(typeof(IdentityResource))
.AddBaseTypes(typeof(AbpTimingResource))
.AddVirtualJson("/Localization/ProjectName"); .AddVirtualJson("/Localization/ProjectName");
options.DefaultResourceType = typeof(ProjectNameResource); options.DefaultResourceType = typeof(ProjectNameResource);

67
aspnet-core/services/src/CompanyName.ProjectName.Domain/Settings/ProjectNameSettingDefinitionProvider.cs

@ -10,24 +10,65 @@ namespace CompanyName.ProjectName.Settings
{ {
//Define your own settings here. Example: //Define your own settings here. Example:
//context.Add(new SettingDefinition(ProjectNameSettings.MySetting1)); //context.Add(new SettingDefinition(ProjectNameSettings.MySetting1));
Test(context); OverrideDefalutSettings(context);
} }
/// <summary> /// <summary>
/// 测试Setting /// 重写默认setting添加自定义属性
/// </summary> /// </summary>
/// <param name="context"></param> private static void OverrideDefalutSettings(ISettingDefinitionContext context)
public void Test(ISettingDefinitionContext context)
{ {
// 具体设置请参考 https://github.com/EasyAbp/Abp.SettingUi/blob/develop/docs/README_zh-Hans.md context.GetOrNull("Abp.Localization.DefaultLanguage")
context.Add( .WithProperty(ProjectNameSettings.Group.Defalut,
new SettingDefinition( ProjectNameSettings.Group.SystemManagement)
name: "Test", .WithProperty(ProjectNameSettings.ControlType.Defalut,
defaultValue: "Test Setting Module", ProjectNameSettings.ControlType.TypeText);
displayName: L("Test")
).WithProviders( // 设置级别 context.GetOrNull("Abp.Identity.Password.RequiredLength")
DefaultValueSettingValueProvider.ProviderName, .WithProperty(ProjectNameSettings.Group.Defalut,
GlobalSettingValueProvider.ProviderName)); ProjectNameSettings.Group.SystemManagement)
.WithProperty(ProjectNameSettings.ControlType.Defalut,
ProjectNameSettings.ControlType.TypeCheckBox);
context.GetOrNull("Abp.Identity.Password.RequiredUniqueChars")
.WithProperty(ProjectNameSettings.Group.Defalut,
ProjectNameSettings.Group.SystemManagement)
.WithProperty(ProjectNameSettings.ControlType.Defalut,
ProjectNameSettings.ControlType.TypeCheckBox);
context.GetOrNull("Abp.Identity.Password.RequireNonAlphanumeric")
.WithProperty(ProjectNameSettings.Group.Defalut,
ProjectNameSettings.Group.SystemManagement)
.WithProperty(ProjectNameSettings.ControlType.Defalut,
ProjectNameSettings.ControlType.TypeCheckBox);
context.GetOrNull("Abp.Identity.Password.RequireLowercase")
.WithProperty(ProjectNameSettings.Group.Defalut,
ProjectNameSettings.Group.SystemManagement)
.WithProperty(ProjectNameSettings.ControlType.Defalut,
ProjectNameSettings.ControlType.TypeCheckBox);
context.GetOrNull("Abp.Identity.Password.RequireUppercase")
.WithProperty(ProjectNameSettings.Group.Defalut,
ProjectNameSettings.Group.SystemManagement)
.WithProperty(ProjectNameSettings.ControlType.Defalut,
ProjectNameSettings.ControlType.TypeCheckBox);
context.GetOrNull("Abp.Identity.Password.RequireDigit")
.WithProperty(ProjectNameSettings.Group.Defalut,
ProjectNameSettings.Group.SystemManagement)
.WithProperty(ProjectNameSettings.ControlType.Defalut,
ProjectNameSettings.ControlType.TypeCheckBox);
context.Add(new SettingDefinition(
ProjectNameSettings.Other.Github,
"https://github.com/WangJunZzz/abp-vnext-pro",
L("DisplayName:" + ProjectNameSettings.Other.Github),
L("Description:" + ProjectNameSettings.Other.Github)
).WithProperty(ProjectNameSettings.Group.Defalut,
ProjectNameSettings.Group.OtherManagement)
.WithProperty(ProjectNameSettings.ControlType.Defalut,
ProjectNameSettings.ControlType.TypeText));
} }
private static LocalizableString L(string name) private static LocalizableString L(string name)

30
aspnet-core/services/src/CompanyName.ProjectName.Domain/Settings/ProjectNameSettings.cs

@ -4,9 +4,33 @@
{ {
public const string Prefix = "setting_"; public const string Prefix = "setting_";
//Add your own setting names here. Example: /// <summary>
//public const string MySetting1 = Prefix + ".MySetting1"; /// 前端控件类型
/// </summary>
public static class ControlType
{
public const string Defalut = "Type";
public const string TypeText = "Text";
public const string TypeCheckBox = "CheckBox";
}
public const string TestGroup = "Test"; /// <summary>
/// 系统控制分组
/// </summary>
public static class Group
{
public const string Defalut = "Setting.Group";
public const string SystemManagement = Defalut + ".System";
public const string OtherManagement = Defalut + ".Other";
}
/// <summary>
/// 其他控制分组
/// </summary>
public static class Other
{
private const string Defalut = "Setting.Group.Other";
public const string Github = Defalut + ".Github";
}
} }
} }

4
aspnet-core/services/src/CompanyName.ProjectName.HttpApi/Controllers/Systems/SettingController.cs

@ -1,8 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using CompanyName.ProjectName.Settings; using CompanyName.ProjectName.Settings;
using EasyAbp.Abp.SettingUi;
using EasyAbp.Abp.SettingUi.Dto;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Swashbuckle.AspNetCore.Annotations; using Swashbuckle.AspNetCore.Annotations;
@ -20,7 +18,7 @@ namespace CompanyName.ProjectName.Controllers.Systems
[HttpPost("all")] [HttpPost("all")]
[SwaggerOperation(summary: "获取所有Setting", Tags = new[] { "Settings" })] [SwaggerOperation(summary: "获取所有Setting", Tags = new[] { "Settings" })]
public async Task<List<SettingGroup>> GetAsync() public async Task<List<SettingOutput>> GetAsync()
{ {
return await _settingAppService.GetAsync(); return await _settingAppService.GetAsync();
} }

54
aspnet-core/services/src/CompanyName.ProjectName.HttpApi/Controllers/Tenants/AbpTenantController.cs

@ -1,26 +1,28 @@
using System.Threading.Tasks; // using System;
using CompanyName.ProjectName.Tenants.Dtos; // using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; // using CompanyName.ProjectName.Tenants.Dtos;
using Swashbuckle.AspNetCore.Annotations; // using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.MultiTenancy; // using Swashbuckle.AspNetCore.Annotations;
// using Volo.Abp.Application.Services;
namespace CompanyName.ProjectName.Controllers.Tenants // using Volo.Abp.AspNetCore.Mvc.MultiTenancy;
{ //
[Route("Tenants")] // namespace CompanyName.ProjectName.Controllers.Tenants
public class AbpTenantController : ProjectNameController // {
{ // [Route("Tenants")]
private readonly IAbpTenantAppService _abpTenantAppService; // public class AbpTenantController : ProjectNameController,IApplicationService
// {
public AbpTenantController(IAbpTenantAppService abpTenantAppService) // private readonly IAbpTenantAppService _abpTenantAppService;
{ //
_abpTenantAppService = abpTenantAppService; // public AbpTenantController(IAbpTenantAppService abpTenantAppService)
} // {
// _abpTenantAppService = abpTenantAppService;
[HttpPost("find")] // }
[SwaggerOperation(summary: "通过名称获取租户信息", Tags = new[] {"Tenants"})] //
public async Task<FindTenantResultDto> FindTenantByNameAsync(FindTenantByNameInput input) // [HttpPost("find")]
{ // [SwaggerOperation(summary: "通过名称获取租户信息", Tags = new[] {"Tenants"})]
return await _abpTenantAppService.FindTenantByNameAsync(input.Name); // public async Task<FindTenantResultDto> FindTenantByNameAsync(FindTenantByNameInput input)
} // {
} // return await _abpTenantAppService.FindTenantByNameAsync(input.Name);
} // }
// }
// }

50
aspnet-core/services/src/CompanyName.ProjectName.HttpApi/Controllers/Tenants/TenantController.cs

@ -1,77 +1,83 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using CompanyName.ProjectName.Tenants.Dtos; using CompanyName.ProjectName.Tenants.Dtos;
using CompanyName.ProjectName.Extension.Customs.Dtos; using CompanyName.ProjectName.Extension.Customs.Dtos;
using Microsoft.AspNetCore.Authorization; using CompanyName.ProjectName.Tenants;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Swashbuckle.AspNetCore.Annotations; using Swashbuckle.AspNetCore.Annotations;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc.MultiTenancy;
using Volo.Abp.TenantManagement; using Volo.Abp.TenantManagement;
namespace CompanyName.ProjectName.Controllers.Tenants namespace CompanyName.ProjectName.Controllers.Tenants
{ {
[Route("Tenants")] [Route("Tenants")]
public class TenantController : ProjectNameController public class TenantController : ProjectNameController, IVoloTenantAppService
{ {
private readonly ITenantAppService _tenantAppService; private readonly IVoloTenantAppService _voloTenantAppService;
public TenantController(ITenantAppService tenantAppService) public TenantController(IVoloTenantAppService voloTenantAppService)
{ {
_tenantAppService = tenantAppService; _voloTenantAppService = voloTenantAppService;
}
[HttpPost("find")]
[SwaggerOperation(summary: "通过名称获取租户信息", Tags = new[] {"Tenants"})]
public Task<FindTenantResultDto> FindTenantByNameAsync(FindTenantByNameInput input)
{
return _voloTenantAppService.FindTenantByNameAsync(input);
} }
[HttpPost("page")] [HttpPost("page")]
[SwaggerOperation(summary: "分页获取租户信息", Tags = new[] {"Tenants"})] [SwaggerOperation(summary: "分页获取租户信息", Tags = new[] { "Tenants" })]
public Task<PagedResultDto<TenantDto>> ListAsync(PagingTenantInput input) public Task<PagedResultDto<TenantDto>> ListAsync(PagingTenantInput input)
{ {
var request = new GetTenantsInput {Filter = input.Filter, SkipCount = input.SkipCount, MaxResultCount = input.PageSize}; return _voloTenantAppService.ListAsync(input);
return _tenantAppService.GetListAsync(request);
} }
[HttpPost("create")] [HttpPost("create")]
[SwaggerOperation(summary: "创建租户", Tags = new[] {"Tenants"})] [SwaggerOperation(summary: "创建租户", Tags = new[] { "Tenants" })]
public Task<TenantDto> CreateAsync(TenantCreateDto input) public Task<TenantDto> CreateAsync(TenantCreateDto input)
{ {
return _tenantAppService.CreateAsync(input); return _voloTenantAppService.CreateAsync(input);
} }
[HttpPost("update")] [HttpPost("update")]
[SwaggerOperation(summary: "更新租户", Tags = new[] {"Tenants"})] [SwaggerOperation(summary: "更新租户", Tags = new[] { "Tenants" })]
public Task<TenantDto> UpdateAsync(UpdateTenantInput input) public Task<TenantDto> UpdateAsync(UpdateTenantInput input)
{ {
var request = new TenantUpdateDto() var request = new TenantUpdateDto()
{ {
Name = input.Name.Trim() Name = input.Name.Trim()
}; };
return _tenantAppService.UpdateAsync(input.Id, request); return _voloTenantAppService.UpdateAsync(input);
} }
[HttpPost("delete")] [HttpPost("delete")]
[SwaggerOperation(summary: "删除租户", Tags = new[] {"Tenants"})] [SwaggerOperation(summary: "删除租户", Tags = new[] { "Tenants" })]
public Task DeleteAsync(IdInput input) public Task DeleteAsync(IdInput input)
{ {
return _tenantAppService.DeleteAsync(input.Id); return _voloTenantAppService.DeleteAsync(input);
} }
[HttpPost("getConnectionString")] [HttpPost("getConnectionString")]
[SwaggerOperation(summary: "获取租户连接字符串", Tags = new[] {"Tenants"})] [SwaggerOperation(summary: "获取租户连接字符串", Tags = new[] { "Tenants" })]
[Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)]
public Task<string> GetDefaultConnectionStringAsync(IdInput input) public Task<string> GetDefaultConnectionStringAsync(IdInput input)
{ {
return _tenantAppService.GetDefaultConnectionStringAsync(input.Id); return _voloTenantAppService.GetDefaultConnectionStringAsync(input);
} }
[HttpPost("updateConnectionString")] [HttpPost("updateConnectionString")]
[SwaggerOperation(summary: "更新租户连接字符串", Tags = new[] {"Tenants"})] [SwaggerOperation(summary: "更新租户连接字符串", Tags = new[] { "Tenants" })]
public Task UpdateDefaultConnectionStringAsync(UpdateConnectionStringInput input) public Task UpdateDefaultConnectionStringAsync(UpdateConnectionStringInput input)
{ {
return _tenantAppService.UpdateDefaultConnectionStringAsync(input.Id, input.ConnectionString); return _voloTenantAppService.UpdateDefaultConnectionStringAsync(input);
} }
[HttpPost("deleteConnectionString")] [HttpPost("deleteConnectionString")]
[SwaggerOperation(summary: "删除租户连接字符串", Tags = new[] {"Tenants"})] [SwaggerOperation(summary: "删除租户连接字符串", Tags = new[] { "Tenants" })]
public Task DeleteDefaultConnectionStringAsync(IdInput input) public Task DeleteDefaultConnectionStringAsync(IdInput input)
{ {
return _tenantAppService.DeleteDefaultConnectionStringAsync(input.Id); return _voloTenantAppService.DeleteDefaultConnectionStringAsync(input);
} }
} }
} }

4
vben271/src/router/routes/modules/admin.ts

@ -39,7 +39,7 @@ const admin: AppRouteModule = {
component: () => import('/@/views/admin/settings/Setting.vue'), component: () => import('/@/views/admin/settings/Setting.vue'),
meta: { meta: {
title: t('routes.admin.settingManagement'), title: t('routes.admin.settingManagement'),
policy: 'SettingUi.ShowSettingPage', policy: 'System.Setting',
icon: 'ant-design:unordered-list-outlined', icon: 'ant-design:unordered-list-outlined',
}, },
}, },
@ -62,7 +62,7 @@ const admin: AppRouteModule = {
policy: 'System.ES', policy: 'System.ES',
icon: 'ant-design:snippets-twotone', icon: 'ant-design:snippets-twotone',
}, },
} },
], ],
}; };

1835
vben271/src/services/ServiceProxies.ts

File diff suppressed because it is too large

34
vben271/src/views/admin/settings/Setting.vue

@ -2,47 +2,28 @@
<PageWrapper v-loading="loading"> <PageWrapper v-loading="loading">
<div ref="wrapperRef" :class="prefixCls"> <div ref="wrapperRef" :class="prefixCls">
<Tabs tab-position="left" :tabBarStyle="tabBarStyle"> <Tabs tab-position="left" :tabBarStyle="tabBarStyle">
<template v-for="item in settingList" :key="item.groupName"> <template v-for="item in settingList" :key="item.group">
<TabPane :tab="item.groupDisplayName"> <TabPane :tab="item.groupDisplayName">
<CollapseContainer :title="item.groupDisplayName" :canExpan="false"> <CollapseContainer :title="item.groupDisplayName" :canExpan="false">
<a-form :label-col="labelCol" :wrapper-col="wrapperCol"> <a-form :label-col="labelCol" :wrapper-col="wrapperCol">
<a-form-item v-for="setting in item.settingInfos" :label="setting.displayName"> <a-form-item v-for="setting in item.settingItemOutput" :label="setting.displayName">
<div <div v-if="setting.type === 'Text'">
v-if="
setting.properties.Type === 'number' || setting.properties.Type === 'text'
"
>
<a-input v-model:value="setting.value" style="width: 80%" /> <a-input v-model:value="setting.value" style="width: 80%" />
</div> </div>
<div v-if="setting.properties.Type === 'checkbox'"> <div v-if="setting.type === 'CheckBox'">
<a-checkbox <a-checkbox
:checked="!(setting.value == 'false' || setting.value == false)" :checked="!(setting.value == 'false' || setting.value == false)"
@update:checked="(val) => (setting.value = val)" @update:checked="(val) => (setting.value = val)"
> >
{{ setting.description }} {{ setting.description }}
</a-checkbox> </a-checkbox>
<!-- <a-checkbox v-model:checked="setting.value" size="small">
{{ setting.description }}
</a-checkbox> -->
</div>
<div v-if="setting.properties.Type === 'select'">
<a-select default-value="setting.value" style="width: 120px" size="small">
<a-select-option
v-for="itemOption in setting.properties.Options.split('|')"
:value="itemOption"
:key="itemOption"
>
{{ itemOption }}
</a-select-option>
</a-select>
</div> </div>
</a-form-item> </a-form-item>
<a-button <a-button
style="margin-left: 65%" style="margin-left: 65%"
type="primary" type="primary"
@click="updateSettingValues(item.settingInfos)" @click="updateSettingValues(item.settingItemOutput)"
>{{ t('common.saveText') }}</a-button >{{ t('common.saveText') }}</a-button
> >
</a-form> </a-form>
@ -59,7 +40,7 @@
import { Tabs } from 'ant-design-vue'; import { Tabs } from 'ant-design-vue';
import { CollapseContainer } from '/@/components/Container/index'; import { CollapseContainer } from '/@/components/Container/index';
import { ScrollContainer } from '/@/components/Container/index'; import { ScrollContainer } from '/@/components/Container/index';
import { SettingGroup, UpdateSettingInput } from '/@/services/ServiceProxies'; import { SettingOutput, UpdateSettingInput } from '/@/services/ServiceProxies';
import { getAllSettingsAsync, updateSettingsAsync } from './Setting'; import { getAllSettingsAsync, updateSettingsAsync } from './Setting';
import { useI18n } from '/@/hooks/web/useI18n'; import { useI18n } from '/@/hooks/web/useI18n';
import { PageWrapper } from '/@/components/Page'; import { PageWrapper } from '/@/components/Page';
@ -73,7 +54,7 @@
PageWrapper, PageWrapper,
}, },
setup() { setup() {
let settingList: SettingGroup[] = []; let settingList: SettingOutput[] = [];
const { t } = useI18n(); const { t } = useI18n();
const state = reactive({ const state = reactive({
settingList, settingList,
@ -88,6 +69,7 @@
const updateSettingValues = async (item: any) => { const updateSettingValues = async (item: any) => {
try { try {
debugger;
const prefix = 'setting_'; const prefix = 'setting_';
var request = new UpdateSettingInput(); var request = new UpdateSettingInput();
request.values as {}; request.values as {};

Loading…
Cancel
Save