feat: 报表配置功能
This commit is contained in:
parent
7ae8e5e00f
commit
a4799a5093
@ -0,0 +1,45 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 首字母小写(驼峰样式)Converter
|
||||
/// </summary>
|
||||
public class CamelCaseValueConverter : JsonConverter
|
||||
{
|
||||
private static readonly CamelCaseNamingStrategy NamingStrategy = new(true, true);
|
||||
|
||||
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
writer.WriteNull();
|
||||
return;
|
||||
}
|
||||
|
||||
if (typeof(IEnumerable<string>).IsAssignableFrom(value.GetType()))
|
||||
serializer.Serialize(writer, ((IEnumerable<string>)value).Select(u => NamingStrategy.GetPropertyName(u, false)));
|
||||
else
|
||||
writer.WriteValue(NamingStrategy.GetPropertyName(value + "", false));
|
||||
}
|
||||
|
||||
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
||||
{
|
||||
return reader.Value;
|
||||
}
|
||||
|
||||
public override bool CanConvert(Type objectType)
|
||||
{
|
||||
if (objectType == typeof(string) || typeof(IEnumerable<string>).IsAssignableFrom(objectType))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
87
Admin.NET/Admin.NET.Core/Entity/SysReportConfig.cs
Normal file
87
Admin.NET/Admin.NET.Core/Entity/SysReportConfig.cs
Normal file
@ -0,0 +1,87 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 报表配置
|
||||
/// </summary>
|
||||
[SugarTable(null, "报表配置")]
|
||||
[SysTable]
|
||||
public class SysReportConfig : EntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "名称", Length = 255)]
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 描述
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "描述", Length = 500)]
|
||||
public string? Description { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数据源类型
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "数据源类型")]
|
||||
public ReportConfigDsTypeEnum DsType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数据源
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "数据源")]
|
||||
public string? DataSource { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 分组Id
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "分组Id")]
|
||||
public long? GroupId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 分组
|
||||
/// </summary>
|
||||
[Navigate(NavigateType.OneToOne, nameof(GroupId))]
|
||||
public SysReportGroup Group { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 脚本语句
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "脚本语句", ColumnDataType = StaticConfig.CodeFirst_BigString)]
|
||||
public string? SqlScript { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 接口地址
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "接口地址", Length = 4000)]
|
||||
public string? ApiUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 接口请求方式
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "接口请求方式", Length = 10)]
|
||||
public string? ApiHttpMethod { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 接口参数
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "接口参数", Length = 4000)]
|
||||
public string? ApiParams { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 参数
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "参数", ColumnDataType = StaticConfig.CodeFirst_BigString)]
|
||||
public string? Params { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 列表字段
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "列表字段", ColumnDataType = StaticConfig.CodeFirst_BigString)]
|
||||
public string? Fields { get; set; }
|
||||
}
|
||||
39
Admin.NET/Admin.NET.Core/Entity/SysReportDataSource.cs
Normal file
39
Admin.NET/Admin.NET.Core/Entity/SysReportDataSource.cs
Normal file
@ -0,0 +1,39 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 报表数据源
|
||||
/// </summary>
|
||||
[SugarTable(null, "报表数据源")]
|
||||
[SysTable]
|
||||
public class SysReportDataSource : EntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "名称", Length = 255)]
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数据库类型
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "数据库类型", Length = 20)]
|
||||
public string DbType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 连接字符串
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "连接字符串", Length = 2000)]
|
||||
public string ConnectionString { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "备注", Length = 500)]
|
||||
public string? Memo { get; set; }
|
||||
}
|
||||
27
Admin.NET/Admin.NET.Core/Entity/SysReportGroup.cs
Normal file
27
Admin.NET/Admin.NET.Core/Entity/SysReportGroup.cs
Normal file
@ -0,0 +1,27 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 报表分组
|
||||
/// </summary>
|
||||
[SugarTable(null, "报表分组")]
|
||||
[SysTable]
|
||||
public class SysReportGroup : EntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 编码
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "编码", Length = 80)]
|
||||
public string Number { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "名称", Length = 255)]
|
||||
public string Name { get; set; }
|
||||
}
|
||||
@ -846,4 +846,28 @@ public enum ErrorCodeEnum
|
||||
/// </summary>
|
||||
[ErrorCodeItemMetadata("身份标识已存在")]
|
||||
O1000,
|
||||
|
||||
/// <summary>
|
||||
/// 名称已存在
|
||||
/// </summary>
|
||||
[ErrorCodeItemMetadata("名称已存在")]
|
||||
C1000,
|
||||
|
||||
/// <summary>
|
||||
/// 数据源类型为 Sql 才允许执行
|
||||
/// </summary>
|
||||
[ErrorCodeItemMetadata("数据源类型为 Sql 才允许执行")]
|
||||
C1001,
|
||||
|
||||
/// <summary>
|
||||
/// 数据源不存在
|
||||
/// </summary>
|
||||
[ErrorCodeItemMetadata("数据源不存在")]
|
||||
C1002,
|
||||
|
||||
/// <summary>
|
||||
/// 编码已存在
|
||||
/// </summary>
|
||||
[ErrorCodeItemMetadata("编码已存在")]
|
||||
C1003,
|
||||
}
|
||||
25
Admin.NET/Admin.NET.Core/Enum/ReportConfigDsTypeEnum.cs
Normal file
25
Admin.NET/Admin.NET.Core/Enum/ReportConfigDsTypeEnum.cs
Normal file
@ -0,0 +1,25 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 报表配置数据源类型
|
||||
/// </summary>
|
||||
public enum ReportConfigDsTypeEnum
|
||||
{
|
||||
/// <summary>
|
||||
/// Sql
|
||||
/// </summary>
|
||||
[Description("Sql")]
|
||||
Sql = 0,
|
||||
|
||||
/// <summary>
|
||||
/// Api
|
||||
/// </summary>
|
||||
[Description("Api")]
|
||||
Api = 1,
|
||||
}
|
||||
@ -216,6 +216,19 @@ public class SysMenuSeedData : ISqlSugarEntitySeedData<SysMenu>
|
||||
new SysMenu{ Id=1310000000721, Pid=1310000000701, Title="SqlSugar", Path="/doc/SqlSugar", Name="sysSqlSugar", Component="layout/routerView/link", IsIframe=false, IsKeepAlive=false, OutLink="https://www.donet5.com/Home/Doc", Icon="ele-Coin", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=130 },
|
||||
|
||||
new SysMenu{ Id=1310000000801, Pid=0, Title="关于项目", Path="/about", Name="about", Component="/about/index", Icon="ele-InfoFilled", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2023-03-12 00:00:00"), OrderNo=15000 },
|
||||
|
||||
new SysMenu{ Id=1310000000901, Pid=0, Title="报表开发", Path="/report", Name="report", Component="Layout", Icon="iconfont icon-ico_shuju", Type=MenuTypeEnum.Dir, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=14500 },
|
||||
new SysMenu{ Id=1310000000911, Pid=1310000000901, Title="数据源配置", Path="/report/sysReportDataSource", Name="sysReportDataSource", Component="/system/reportDataSource/index", Icon="ele-Document", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
new SysMenu{ Id=1310000000912, Pid=1310000000911, Title="查询", Permission="sysReportDataSource/page", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
new SysMenu{ Id=1310000000913, Pid=1310000000911, Title="编辑", Permission="sysReportDataSource/update", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
new SysMenu{ Id=1310000000914, Pid=1310000000911, Title="增加", Permission="sysReportDataSource/add", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
new SysMenu{ Id=1310000000915, Pid=1310000000911, Title="删除", Permission="sysReportDataSource/delete", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
new SysMenu{ Id=1310000000916, Pid=1310000000911, Title="复制", Permission="sysReportDataSource/copy", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
new SysMenu{ Id=1310000000921, Pid=1310000000901, Title="报表配置", Path="/report/sysReportConfig", Name="sysReportConfig", Component="/system/reportConfig/index", Icon="ele-Document", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=110 },
|
||||
new SysMenu{ Id=1310000000922, Pid=1310000000921, Title="查询", Permission="sysReportConfig/page", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
new SysMenu{ Id=1310000000923, Pid=1310000000921, Title="编辑", Permission="sysReportConfig/update", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
new SysMenu{ Id=1310000000924, Pid=1310000000921, Title="增加", Permission="sysReportConfig/v", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
new SysMenu{ Id=1310000000925, Pid=1310000000921, Title="删除", Permission="sysReportConfig/delete", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
];
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 报表配置分页输入参数
|
||||
/// </summary>
|
||||
public class PageReportConfigInput : BasePageInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 分组Id
|
||||
/// </summary>
|
||||
public long? GroupId { get; set; }
|
||||
}
|
||||
|
||||
public class AddReportConfigInput : SysReportConfig
|
||||
{
|
||||
}
|
||||
|
||||
public class UpdateReportConfigInput : SysReportConfig
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 报表配置解析Sql输入参数
|
||||
/// </summary>
|
||||
public class ReportConfigParseSqlInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 数据源
|
||||
/// </summary>
|
||||
public string DataSource { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 脚本语句
|
||||
/// </summary>
|
||||
public string SqlScript { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 执行参数
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ExecParams { get; set; } = new();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 报表配置执行Sql脚本输入参数
|
||||
/// </summary>
|
||||
public class ReportConfigExecuteSqlScriptInput : BaseIdInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 执行参数
|
||||
/// </summary>
|
||||
public Dictionary<string, object> ExecParams { get; set; } = new();
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 报表配置输出参数
|
||||
/// </summary>
|
||||
public class ReportConfigOutput : SysReportConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// 分组名称
|
||||
/// </summary>
|
||||
public string GroupName { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 报表配置解析Sql输出参数
|
||||
/// </summary>
|
||||
public class ReportConfigParseSqlOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// 报表字段名称集合
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(CamelCaseValueConverter))]
|
||||
public List<string> FieldNames { get; set; }
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 报表数据源详情
|
||||
/// </summary>
|
||||
public class SysReportDataSourceDetail
|
||||
{
|
||||
/// <summary>
|
||||
/// Id
|
||||
/// </summary>
|
||||
public string Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否内置
|
||||
/// </summary>
|
||||
public bool IsBuildIn { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数据库类型
|
||||
/// </summary>
|
||||
public SqlSugar.DbType DbType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 连接字符串
|
||||
/// </summary>
|
||||
public string ConnectionString { get; set; }
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 报表数据源分页输入参数
|
||||
/// </summary>
|
||||
public class PageReportDataSourceInput : BasePageInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
public class AddReportDataSourceInput : SysReportDataSource
|
||||
{
|
||||
}
|
||||
|
||||
public class UpdateReportDataSourceInput : SysReportDataSource
|
||||
{
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 报表数据源输出参数
|
||||
/// </summary>
|
||||
public class ReportDataSourceOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// Id
|
||||
/// </summary>
|
||||
public string Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否内置
|
||||
/// </summary>
|
||||
public bool IsBuildIn { get; set; }
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 报表分组分页输入参数
|
||||
/// </summary>
|
||||
public class PageReportGroupInput : BasePageInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
public class AddReportGroupInput : SysReportGroup
|
||||
{
|
||||
}
|
||||
|
||||
public class UpdateReportGroupInput : SysReportGroup
|
||||
{
|
||||
}
|
||||
@ -0,0 +1,89 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 报表布局配置
|
||||
/// </summary>
|
||||
public class SysReportLayoutConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// 报表字段集合
|
||||
/// </summary>
|
||||
public List<SysReportField> Fields { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 报表参数集合
|
||||
/// </summary>
|
||||
public List<SysReportParam> Params { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 报表字段
|
||||
/// </summary>
|
||||
public class SysReportField
|
||||
{
|
||||
/// <summary>
|
||||
/// 字段名
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(CamelCaseValueConverter))]
|
||||
public string FieldName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 字段标题
|
||||
/// </summary>
|
||||
public string Title { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否合计
|
||||
/// </summary>
|
||||
public bool IsSummary { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否显示
|
||||
/// </summary>
|
||||
public bool Visible { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 分组标题
|
||||
/// </summary>
|
||||
public string GroupTitle { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 列宽度
|
||||
/// </summary>
|
||||
public int Width { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 报表参数
|
||||
/// </summary>
|
||||
public class SysReportParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 参数名
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(CamelCaseValueConverter))]
|
||||
public string ParamName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 参数标题
|
||||
/// </summary>
|
||||
public string Title { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 输入控件类型
|
||||
/// </summary>
|
||||
public string InputCtrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 默认值
|
||||
/// </summary>
|
||||
public object DefaultValue { get; set; }
|
||||
}
|
||||
@ -0,0 +1,310 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core.Service;
|
||||
|
||||
/// <summary>
|
||||
/// 报表配置服务
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings(Order = 500, Description = "报表配置")]
|
||||
public class SysReportConfigService : IDynamicApiController, ITransient
|
||||
{
|
||||
private readonly SqlSugarRepository<SysReportConfig> _rep;
|
||||
private readonly SysReportDataSourceService _sysReportDataSourceService;
|
||||
private readonly SysTenantService _sysTenantService;
|
||||
private readonly UserManager _userManager;
|
||||
|
||||
/// <summary>
|
||||
/// 报表配置服务构造函数
|
||||
/// </summary>
|
||||
public SysReportConfigService(SqlSugarRepository<SysReportConfig> rep,
|
||||
SysReportDataSourceService sysReportDataSourceService,
|
||||
SysTenantService sysTenantService,
|
||||
UserManager userManager
|
||||
)
|
||||
{
|
||||
_rep = rep;
|
||||
_sysReportDataSourceService = sysReportDataSourceService;
|
||||
_sysTenantService = sysTenantService;
|
||||
_userManager = userManager;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取报表配置分页列表
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[DisplayName("获取报表配置分页列表")]
|
||||
public async Task<SqlSugarPagedList<ReportConfigOutput>> Page(PageReportConfigInput input)
|
||||
{
|
||||
return await _rep.AsQueryable()
|
||||
.LeftJoin<SysReportGroup>((c, g) => c.GroupId == g.Id)
|
||||
.WhereIF(!string.IsNullOrWhiteSpace(input.Name), (c, g) => c.Name.Contains(input.Name.Trim()))
|
||||
.WhereIF(input.GroupId is > 0, (c, g) => c.GroupId == input.GroupId)
|
||||
.Select((c, g) => new ReportConfigOutput
|
||||
{
|
||||
GroupName = g.Name
|
||||
}, true)
|
||||
.OrderBuilder(input)
|
||||
.ToPagedListAsync(input.Page, input.PageSize);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 增加报表配置
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[ApiDescriptionSettings(Name = "Add"), HttpPost]
|
||||
[DisplayName("增加报表配置")]
|
||||
public async Task Add(AddReportConfigInput input)
|
||||
{
|
||||
var isExist = await _rep.IsAnyAsync(u => u.Name == input.Name && u.Id != input.Id);
|
||||
if (isExist)
|
||||
throw Oops.Bah(ErrorCodeEnum.C1000);
|
||||
|
||||
await _rep.InsertAsync(input.Adapt<SysReportConfig>());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新报表配置
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[UnitOfWork]
|
||||
[ApiDescriptionSettings(Name = "Update"), HttpPost]
|
||||
[DisplayName("更新报表配置")]
|
||||
public async Task Update(UpdateReportConfigInput input)
|
||||
{
|
||||
var isExist = await _rep.IsAnyAsync(u => u.Name == input.Name && u.Id != input.Id);
|
||||
if (isExist)
|
||||
throw Oops.Bah(ErrorCodeEnum.C1000);
|
||||
|
||||
await _rep.UpdateAsync(input.Adapt<SysReportConfig>());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除报表配置
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[UnitOfWork]
|
||||
[ApiDescriptionSettings(Name = "Delete"), HttpPost]
|
||||
[DisplayName("删除报表配置")]
|
||||
public async Task Delete(BaseIdInput input)
|
||||
{
|
||||
await _rep.DeleteAsync(u => u.Id == input.Id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 复制报表配置
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[UnitOfWork]
|
||||
[ApiDescriptionSettings(Name = "Copy"), HttpPost]
|
||||
[DisplayName("复制报表配置")]
|
||||
public async Task Copy(BaseIdInput input)
|
||||
{
|
||||
var entity = await _rep.GetFirstAsync(u => u.Id == input.Id);
|
||||
if (entity == null)
|
||||
throw Oops.Bah(ErrorCodeEnum.D1002);
|
||||
|
||||
entity.Id = YitIdHelper.NextId();
|
||||
entity.Name = $"{entity.Name} - 副本";
|
||||
entity.CreateTime = DateTime.Now;
|
||||
entity.CreateUserId = null;
|
||||
entity.CreateUserName = null;
|
||||
entity.UpdateTime = null;
|
||||
entity.UpdateUserId = null;
|
||||
entity.UpdateUserName = null;
|
||||
|
||||
await Add(entity.Adapt<AddReportConfigInput>());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取报表布局配置
|
||||
/// </summary>
|
||||
/// <param name="input">输入参数</param>
|
||||
[ApiDescriptionSettings(Name = "GetLayoutConfig"), HttpGet]
|
||||
[DisplayName("获取报表布局配置")]
|
||||
public SysReportLayoutConfig GetLayoutConfig([FromQuery] BaseIdInput input)
|
||||
{
|
||||
var entity = _rep.GetFirst(u => u.Id == input.Id);
|
||||
if (entity == null) throw Oops.Bah(ErrorCodeEnum.D1002);
|
||||
|
||||
return new SysReportLayoutConfig
|
||||
{
|
||||
Fields = string.IsNullOrEmpty(entity.Fields) ? [] : JSON.Deserialize<List<SysReportField>>(entity.Fields),
|
||||
Params = string.IsNullOrEmpty(entity.Params) ? [] : JSON.Deserialize<List<SysReportParam>>(entity.Params),
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 解析报表配置Sql
|
||||
/// </summary>
|
||||
/// <param name="input">输入参数</param>
|
||||
[ApiDescriptionSettings(Name = "ParseSql"), HttpPost]
|
||||
[DisplayName("解析报表配置Sql")]
|
||||
public async Task<ReportConfigParseSqlOutput> ParseSql(ReportConfigParseSqlInput input)
|
||||
{
|
||||
var dataTable = await InnerExecuteSqlScript(input.DataSource, input.SqlScript, input.ExecParams);
|
||||
var fieldNames = (from DataColumn column in dataTable.Columns select column.ColumnName).ToList();
|
||||
|
||||
return new ReportConfigParseSqlOutput
|
||||
{
|
||||
FieldNames = fieldNames
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 执行报表配置Sql脚本
|
||||
/// </summary>
|
||||
/// <param name="input">输入参数</param>
|
||||
[ApiDescriptionSettings(Name = "ExecuteSqlScript"), HttpPost]
|
||||
[DisplayName("执行报表配置Sql脚本")]
|
||||
// 指定使用 CamelCaseDictionaryKey 的序列化配置选项,使字典的 Key 转换为驼峰样式
|
||||
[UnifySerializerSetting("CamelCaseDictionaryKey")]
|
||||
public async Task<List<Dictionary<string, object>>> ExecuteSqlScript(ReportConfigExecuteSqlScriptInput input)
|
||||
{
|
||||
var entity = await _rep.GetFirstAsync(u => u.Id == input.Id);
|
||||
if (entity == null) throw Oops.Bah(ErrorCodeEnum.D1002);
|
||||
|
||||
if (entity.DsType != ReportConfigDsTypeEnum.Sql)
|
||||
throw Oops.Bah(ErrorCodeEnum.C1001);
|
||||
|
||||
var layoutConfig = GetLayoutConfig(input);
|
||||
|
||||
var execParams = new Dictionary<string, object>(input.ExecParams);
|
||||
|
||||
// 补充没有传入的参数,如果传入 null,则填充空字符串,不为 null sqlsugar 才会构造参数
|
||||
foreach (var param in layoutConfig.Params)
|
||||
{
|
||||
execParams.TryAdd(param.ParamName, "");
|
||||
execParams[param.ParamName] ??= "";
|
||||
}
|
||||
|
||||
var dataTable = await InnerExecuteSqlScript(entity.DataSource, entity.SqlScript, execParams);
|
||||
|
||||
// 处理汇总字段
|
||||
var summaryFieldNames = layoutConfig.Fields.Where(u => u.IsSummary).Select(u => u.FieldName).ToList();
|
||||
if (summaryFieldNames.Count > 0)
|
||||
{
|
||||
var summaryInfo = new Dictionary<string, decimal>();
|
||||
UnifyContext.Fill(summaryInfo);
|
||||
foreach (var summaryFieldName in summaryFieldNames)
|
||||
{
|
||||
summaryInfo[summaryFieldName] = dataTable.AsEnumerable().Sum(row =>
|
||||
{
|
||||
decimal.TryParse(row[summaryFieldName] + "", out decimal summaryValue);
|
||||
return summaryValue;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return dataTable.AsEnumerable().Select(UtilMethods.DataRowToDictionary).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 执行Sql脚本内部实现
|
||||
/// </summary>
|
||||
/// <param name="dataSource"></param>
|
||||
/// <param name="sqlScript"></param>
|
||||
/// <param name="execParams"></param>
|
||||
/// <returns></returns>
|
||||
private async Task<DataTable> InnerExecuteSqlScript(string dataSource, string sqlScript, Dictionary<string, object> execParams)
|
||||
{
|
||||
var isSelectQuery = IsSelectQuery(sqlScript);
|
||||
|
||||
var dataSourceDetailList = await _sysReportDataSourceService.GetDataSourceListIncludeDetail();
|
||||
var dataSourceDetail = dataSourceDetailList.FirstOrDefault(u => u.Id == dataSource) ?? throw Oops.Bah(ErrorCodeEnum.C1002);
|
||||
ISqlSugarClient dbClient = GetDbClient(dataSourceDetail);
|
||||
|
||||
var newExecParams = BuildInParamsHandle(dbClient, sqlScript, execParams);
|
||||
var parameters = newExecParams.Select(u => new SugarParameter(u.Key, u.Value)).ToList();
|
||||
|
||||
if (isSelectQuery)
|
||||
{
|
||||
// SELECT 查询
|
||||
var dataTable = await dbClient.Ado.GetDataTableAsync(sqlScript, parameters);
|
||||
return dataTable;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 存储过程
|
||||
var dataTable = await dbClient.Ado.UseStoredProcedure().GetDataTableAsync(sqlScript, parameters);
|
||||
return dataTable;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取 DbClient
|
||||
/// </summary>
|
||||
/// <param name="dataSourceDetail"></param>
|
||||
/// <returns></returns>
|
||||
private ISqlSugarClient GetDbClient(SysReportDataSourceDetail dataSourceDetail)
|
||||
{
|
||||
ISqlSugarClient dbClient = null;
|
||||
if (dataSourceDetail.IsBuildIn)
|
||||
{
|
||||
// 获取内置数据库和租户的连接
|
||||
dbClient = _sysTenantService.GetTenantDbConnectionScope(long.Parse(dataSourceDetail.Id));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (SqlSugarSetup.ITenant.IsAnyConnection(dataSourceDetail.Id))
|
||||
{
|
||||
dbClient = SqlSugarSetup.ITenant.GetConnectionScope(dataSourceDetail.Id);
|
||||
}
|
||||
|
||||
// dbClient 不存在或者连接字符串不一样,则重新设置
|
||||
if (dbClient == null || dbClient.CurrentConnectionConfig.ConnectionString != dataSourceDetail.ConnectionString)
|
||||
{
|
||||
// 获取默认库连接配置
|
||||
var dbOptions = App.GetOptions<DbConnectionOptions>();
|
||||
var mainConnConfig = dbOptions.ConnectionConfigs.First(u => u.ConfigId.ToString() == SqlSugarConst.MainConfigId);
|
||||
|
||||
// 设置连接配置
|
||||
var tenantConnConfig = new DbConnectionConfig
|
||||
{
|
||||
ConfigId = dataSourceDetail.Id,
|
||||
DbType = dataSourceDetail.DbType,
|
||||
IsAutoCloseConnection = true,
|
||||
ConnectionString = dataSourceDetail.ConnectionString,
|
||||
DbSettings = new DbSettings
|
||||
{
|
||||
EnableUnderLine = mainConnConfig.DbSettings.EnableUnderLine,
|
||||
},
|
||||
};
|
||||
SqlSugarSetup.ITenant.AddConnection(tenantConnConfig);
|
||||
dbClient = SqlSugarSetup.ITenant.GetConnectionScope(dataSourceDetail.Id);
|
||||
}
|
||||
}
|
||||
|
||||
return dbClient;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 内置参数处理
|
||||
/// </summary>
|
||||
private Dictionary<string, object> BuildInParamsHandle(ISqlSugarClient dbClient, string sqlScript, Dictionary<string, object> execParams)
|
||||
{
|
||||
var newExecParams = new Dictionary<string, object>(execParams);
|
||||
|
||||
if (sqlScript.IndexOf("@curTenantId", StringComparison.Ordinal) > -1) newExecParams["@curTenantId"] = _userManager.TenantId;
|
||||
if (sqlScript.IndexOf("@curUserId", StringComparison.Ordinal) > -1) newExecParams["@curUserId"] = _userManager.UserId;
|
||||
|
||||
return newExecParams;
|
||||
}
|
||||
|
||||
private static bool IsSelectQuery(string sqlScript)
|
||||
{
|
||||
// 使用正则表达式判断是否包含 SELECT 关键字(忽略大小写)
|
||||
var pattern = @"\bselect\b";
|
||||
var isSelectQuery = Regex.IsMatch(sqlScript, pattern, RegexOptions.IgnoreCase);
|
||||
|
||||
return isSelectQuery;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,185 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
using Furion.Localization;
|
||||
|
||||
namespace Admin.NET.Core.Service;
|
||||
|
||||
/// <summary>
|
||||
/// 报表数据源服务
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings(Order = 500, Description = "报表数据源")]
|
||||
public class SysReportDataSourceService : IDynamicApiController, ITransient
|
||||
{
|
||||
private readonly SqlSugarRepository<SysReportDataSource> _rep;
|
||||
private readonly SqlSugarRepository<SysTenant> _tenantRep;
|
||||
private readonly ISqlSugarClient _db;
|
||||
|
||||
/// <summary>
|
||||
/// 报表数据源服务构造函数
|
||||
/// </summary>
|
||||
public SysReportDataSourceService(SqlSugarRepository<SysReportDataSource> rep,
|
||||
SqlSugarRepository<SysTenant> tenantRep,
|
||||
ISqlSugarClient db
|
||||
)
|
||||
{
|
||||
_rep = rep;
|
||||
_tenantRep = tenantRep;
|
||||
_db = db;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取报表数据源分页列表
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[DisplayName("获取报表数据源分页列表")]
|
||||
public async Task<SqlSugarPagedList<SysReportDataSource>> Page(PageReportDataSourceInput input)
|
||||
{
|
||||
var list = await _rep.AsQueryable()
|
||||
.WhereIF(!string.IsNullOrWhiteSpace(input.Name), u => u.Name.Contains(input.Name.Trim()))
|
||||
.Select(u => new SysReportDataSource(), true)
|
||||
.OrderBuilder(input)
|
||||
.ToPagedListAsync(input.Page, input.PageSize);
|
||||
|
||||
// // 清空连接字符串
|
||||
// foreach (var item in list.Items) item.ConnectionString = "";
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 增加报表数据源
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[ApiDescriptionSettings(Name = "Add"), HttpPost]
|
||||
[DisplayName("增加报表数据源")]
|
||||
public async Task Add(AddReportDataSourceInput input)
|
||||
{
|
||||
var isExist = await _rep.IsAnyAsync(u => u.Name == input.Name && u.Id != input.Id);
|
||||
if (isExist)
|
||||
throw Oops.Bah(ErrorCodeEnum.C1000);
|
||||
|
||||
await _rep.InsertAsync(input.Adapt<SysReportDataSource>());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新报表数据源
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[UnitOfWork]
|
||||
[ApiDescriptionSettings(Name = "Update"), HttpPost]
|
||||
[DisplayName("更新报表数据源")]
|
||||
public async Task Update(UpdateReportDataSourceInput input)
|
||||
{
|
||||
var isExist = await _rep.IsAnyAsync(u => u.Name == input.Name && u.Id != input.Id);
|
||||
if (isExist)
|
||||
throw Oops.Bah(ErrorCodeEnum.C1000);
|
||||
|
||||
var updateEntity = input.Adapt<SysReportDataSource>();
|
||||
|
||||
// // 如果连接字符串为空,则使用原来的值
|
||||
// if (string.IsNullOrEmpty(updateEntity.ConnectionString))
|
||||
// {
|
||||
// var entity = await _rep.GetFirstAsync(u => u.Id == input.Id);
|
||||
// updateEntity.ConnectionString = entity.ConnectionString;
|
||||
// }
|
||||
|
||||
await _rep.UpdateAsync(updateEntity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除报表数据源
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[UnitOfWork]
|
||||
[ApiDescriptionSettings(Name = "Delete"), HttpPost]
|
||||
[DisplayName("删除报表数据源")]
|
||||
public async Task Delete(BaseIdInput input)
|
||||
{
|
||||
await _rep.DeleteAsync(u => u.Id == input.Id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取包含详细信息的数据源列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[NonAction]
|
||||
public async Task<List<SysReportDataSourceDetail>> GetDataSourceListIncludeDetail()
|
||||
{
|
||||
var list = new List<SysReportDataSourceDetail>();
|
||||
|
||||
// 从配置获取数据源
|
||||
var configs = App.GetOptions<DbConnectionOptions>().ConnectionConfigs;
|
||||
foreach (var config in configs)
|
||||
{
|
||||
var configId = config.ConfigId.ToString();
|
||||
var db = _db.AsTenant().GetConnectionScope(configId);
|
||||
list.Add(new SysReportDataSourceDetail
|
||||
{
|
||||
Id = configId,
|
||||
Name = db.Ado.Connection.Database,
|
||||
IsBuildIn = true,
|
||||
DbType = config.DbType,
|
||||
ConnectionString = db.Ado.Connection.ConnectionString,
|
||||
});
|
||||
}
|
||||
|
||||
// 从租户获取数据源
|
||||
var tenantList = await _tenantRep.AsQueryable()
|
||||
.LeftJoin<SysOrg>((u, o) => u.OrgId == o.Id).ClearFilter()
|
||||
.Where((u, o) => u.TenantType == TenantTypeEnum.Db)
|
||||
.Select((u, o) => new { u.Id, o.Name, u.DbType, u.Connection })
|
||||
.ToListAsync();
|
||||
foreach (var tenant in tenantList)
|
||||
{
|
||||
list.Add(new SysReportDataSourceDetail
|
||||
{
|
||||
Id = tenant.Id.ToString(),
|
||||
Name = tenant.Name,
|
||||
IsBuildIn = true,
|
||||
DbType = tenant.DbType,
|
||||
ConnectionString = tenant.Connection,
|
||||
});
|
||||
}
|
||||
|
||||
// 用户自定义
|
||||
var dsList = await _rep.GetListAsync();
|
||||
foreach (var ds in dsList)
|
||||
{
|
||||
list.Add(new SysReportDataSourceDetail
|
||||
{
|
||||
Id = ds.Id.ToString(),
|
||||
Name = ds.Name,
|
||||
IsBuildIn = false,
|
||||
DbType = Enum.Parse<SqlSugar.DbType>(ds.DbType),
|
||||
ConnectionString = ds.ConnectionString,
|
||||
});
|
||||
}
|
||||
|
||||
foreach (var item in list.Where(item => item.IsBuildIn)) item.Name += L.Text["(内置)"];
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取报表数据源列表
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings(Name = "GetDataSourceList"), HttpGet]
|
||||
[DisplayName("获取报表数据源列表")]
|
||||
public async Task<List<ReportDataSourceOutput>> GetDataSourceList()
|
||||
{
|
||||
return (await GetDataSourceListIncludeDetail()).Select(u => new ReportDataSourceOutput
|
||||
{
|
||||
Id = u.Id,
|
||||
Name = u.Name,
|
||||
IsBuildIn = u.IsBuildIn
|
||||
}).ToList();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,81 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core.Service;
|
||||
|
||||
/// <summary>
|
||||
/// 报表分组服务
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings(Order = 500, Description = "报表分组")]
|
||||
public class SysReportGroupService : IDynamicApiController, ITransient
|
||||
{
|
||||
private readonly SqlSugarRepository<SysReportGroup> _rep;
|
||||
|
||||
/// <summary>
|
||||
/// 报表分组服务构造函数
|
||||
/// </summary>
|
||||
public SysReportGroupService(SqlSugarRepository<SysReportGroup> rep)
|
||||
{
|
||||
_rep = rep;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取报表分组列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[ApiDescriptionSettings(Name = "GetList"), HttpGet]
|
||||
[DisplayName("获取报表分组列表")]
|
||||
public async Task<List<SysReportGroup>> GetList()
|
||||
{
|
||||
return await _rep.AsQueryable().OrderBy(u => u.Number).ToListAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 增加报表分组
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[ApiDescriptionSettings(Name = "Add"), HttpPost]
|
||||
[DisplayName("增加报表分组")]
|
||||
public async Task Add(AddReportGroupInput input)
|
||||
{
|
||||
var isExist = await _rep.IsAnyAsync(u => u.Number == input.Number && u.Id != input.Id);
|
||||
if (isExist)
|
||||
throw Oops.Bah(ErrorCodeEnum.C1003);
|
||||
|
||||
await _rep.InsertAsync(input.Adapt<SysReportGroup>());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新报表分组
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[UnitOfWork]
|
||||
[ApiDescriptionSettings(Name = "Update"), HttpPost]
|
||||
[DisplayName("更新报表分组")]
|
||||
public async Task Update(UpdateReportGroupInput input)
|
||||
{
|
||||
var isExist = await _rep.IsAnyAsync(u => u.Number == input.Number && u.Id != input.Id);
|
||||
if (isExist)
|
||||
throw Oops.Bah(ErrorCodeEnum.C1003);
|
||||
|
||||
await _rep.UpdateAsync(input.Adapt<SysReportGroup>());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除报表分组
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[UnitOfWork]
|
||||
[ApiDescriptionSettings(Name = "Delete"), HttpPost]
|
||||
[DisplayName("删除报表分组")]
|
||||
public async Task Delete(BaseIdInput input)
|
||||
{
|
||||
await _rep.DeleteAsync(u => u.Id == input.Id);
|
||||
}
|
||||
}
|
||||
@ -24,6 +24,7 @@ using Microsoft.Extensions.FileProviders;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using MQTTnet.AspNetCore;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using OnceMi.AspNetCore.OSS;
|
||||
using RabbitMQ.Client;
|
||||
using SixLabors.ImageSharp.Web.DependencyInjection;
|
||||
@ -133,6 +134,12 @@ public class Startup : AppStartup
|
||||
//options.JsonSerializerOptions.Converters.AddDateTimeTypeConverters("yyyy-MM-dd HH:mm:ss", localized: true); // 时间格式
|
||||
});
|
||||
|
||||
// 增加字典Key小写处理序列化配置选项
|
||||
var camelCaseDictionaryKeyContractJsonSetting = new JsonSerializerSettings();
|
||||
SetNewtonsoftJsonSetting(camelCaseDictionaryKeyContractJsonSetting);
|
||||
camelCaseDictionaryKeyContractJsonSetting.ContractResolver = new CamelCasePropertyNamesContractResolver(); // 首字母小写(驼峰样式),字典 Key 也会转换为驼峰样式
|
||||
services.AddUnifyJsonOptions("CamelCaseDictionaryKey", camelCaseDictionaryKeyContractJsonSetting);
|
||||
|
||||
// SqlSugar
|
||||
services.AddSqlSugar();
|
||||
|
||||
|
||||
@ -67,6 +67,7 @@
|
||||
"sm-crypto-v2": "^1.12.0",
|
||||
"sortablejs": "^1.15.6",
|
||||
"splitpanes": "^4.0.4",
|
||||
"sql-formatter": "^15.6.5",
|
||||
"uuid": "^11.1.0",
|
||||
"vcrontab-3": "^3.3.22",
|
||||
"vform3-builds": "^3.0.10",
|
||||
|
||||
@ -54,6 +54,9 @@ export * from './apis/sys-pos-api';
|
||||
export * from './apis/sys-print-api';
|
||||
export * from './apis/sys-proc-api';
|
||||
export * from './apis/sys-region-api';
|
||||
export * from './apis/sys-report-config-api';
|
||||
export * from './apis/sys-report-data-source-api';
|
||||
export * from './apis/sys-report-group-api';
|
||||
export * from './apis/sys-role-api';
|
||||
export * from './apis/sys-schedule-api';
|
||||
export * from './apis/sys-server-api';
|
||||
|
||||
732
Web/src/api-services/apis/sys-report-config-api.ts
Normal file
732
Web/src/api-services/apis/sys-report-config-api.ts
Normal file
@ -0,0 +1,732 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';
|
||||
import { Configuration } from '../configuration';
|
||||
// Some imports not used depending on template conditions
|
||||
// @ts-ignore
|
||||
import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';
|
||||
import { AddReportConfigInput } from '../models';
|
||||
import { AdminNETResultListDictionaryStringObject } from '../models';
|
||||
import { AdminNETResultReportConfigParseSqlOutput } from '../models';
|
||||
import { AdminNETResultSqlSugarPagedListReportConfigOutput } from '../models';
|
||||
import { AdminNETResultSysReportLayoutConfig } from '../models';
|
||||
import { BaseIdInput } from '../models';
|
||||
import { PageReportConfigInput } from '../models';
|
||||
import { ReportConfigExecuteSqlScriptInput } from '../models';
|
||||
import { ReportConfigParseSqlInput } from '../models';
|
||||
import { UpdateReportConfigInput } from '../models';
|
||||
/**
|
||||
* SysReportConfigApi - axios parameter creator
|
||||
* @export
|
||||
*/
|
||||
export const SysReportConfigApiAxiosParamCreator = function (configuration?: Configuration) {
|
||||
return {
|
||||
/**
|
||||
*
|
||||
* @summary 增加报表配置
|
||||
* @param {AddReportConfigInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportConfigAddPost: async (body?: AddReportConfigInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportConfig/add`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 复制报表配置
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportConfigCopyPost: async (body?: BaseIdInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportConfig/copy`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 删除报表配置
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportConfigDeletePost: async (body?: BaseIdInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportConfig/delete`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 执行报表配置Sql脚本
|
||||
* @param {ReportConfigExecuteSqlScriptInput} [body] 输入参数
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportConfigExecuteSqlScriptPost: async (body?: ReportConfigExecuteSqlScriptInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportConfig/executeSqlScript`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表布局配置
|
||||
* @param {number} id 主键Id
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportConfigGetLayoutConfigGet: async (id: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
// verify required parameter 'id' is not null or undefined
|
||||
if (id === null || id === undefined) {
|
||||
throw new RequiredError('id','Required parameter id was null or undefined when calling apiSysReportConfigGetLayoutConfigGet.');
|
||||
}
|
||||
const localVarPath = `/api/sysReportConfig/getLayoutConfig`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
if (id !== undefined) {
|
||||
localVarQueryParameter['Id'] = id;
|
||||
}
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表配置分页列表
|
||||
* @param {PageReportConfigInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportConfigPagePost: async (body?: PageReportConfigInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportConfig/page`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 解析报表配置Sql
|
||||
* @param {ReportConfigParseSqlInput} [body] 输入参数
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportConfigParseSqlPost: async (body?: ReportConfigParseSqlInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportConfig/parseSql`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 更新报表配置
|
||||
* @param {UpdateReportConfigInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportConfigUpdatePost: async (body?: UpdateReportConfigInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportConfig/update`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* SysReportConfigApi - functional programming interface
|
||||
* @export
|
||||
*/
|
||||
export const SysReportConfigApiFp = function(configuration?: Configuration) {
|
||||
return {
|
||||
/**
|
||||
*
|
||||
* @summary 增加报表配置
|
||||
* @param {AddReportConfigInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigAddPost(body?: AddReportConfigInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
|
||||
const localVarAxiosArgs = await SysReportConfigApiAxiosParamCreator(configuration).apiSysReportConfigAddPost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 复制报表配置
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigCopyPost(body?: BaseIdInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
|
||||
const localVarAxiosArgs = await SysReportConfigApiAxiosParamCreator(configuration).apiSysReportConfigCopyPost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 删除报表配置
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigDeletePost(body?: BaseIdInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
|
||||
const localVarAxiosArgs = await SysReportConfigApiAxiosParamCreator(configuration).apiSysReportConfigDeletePost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 执行报表配置Sql脚本
|
||||
* @param {ReportConfigExecuteSqlScriptInput} [body] 输入参数
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigExecuteSqlScriptPost(body?: ReportConfigExecuteSqlScriptInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminNETResultListDictionaryStringObject>>> {
|
||||
const localVarAxiosArgs = await SysReportConfigApiAxiosParamCreator(configuration).apiSysReportConfigExecuteSqlScriptPost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表布局配置
|
||||
* @param {number} id 主键Id
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigGetLayoutConfigGet(id: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminNETResultSysReportLayoutConfig>>> {
|
||||
const localVarAxiosArgs = await SysReportConfigApiAxiosParamCreator(configuration).apiSysReportConfigGetLayoutConfigGet(id, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表配置分页列表
|
||||
* @param {PageReportConfigInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigPagePost(body?: PageReportConfigInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminNETResultSqlSugarPagedListReportConfigOutput>>> {
|
||||
const localVarAxiosArgs = await SysReportConfigApiAxiosParamCreator(configuration).apiSysReportConfigPagePost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 解析报表配置Sql
|
||||
* @param {ReportConfigParseSqlInput} [body] 输入参数
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigParseSqlPost(body?: ReportConfigParseSqlInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminNETResultReportConfigParseSqlOutput>>> {
|
||||
const localVarAxiosArgs = await SysReportConfigApiAxiosParamCreator(configuration).apiSysReportConfigParseSqlPost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 更新报表配置
|
||||
* @param {UpdateReportConfigInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigUpdatePost(body?: UpdateReportConfigInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
|
||||
const localVarAxiosArgs = await SysReportConfigApiAxiosParamCreator(configuration).apiSysReportConfigUpdatePost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* SysReportConfigApi - factory interface
|
||||
* @export
|
||||
*/
|
||||
export const SysReportConfigApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
|
||||
return {
|
||||
/**
|
||||
*
|
||||
* @summary 增加报表配置
|
||||
* @param {AddReportConfigInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigAddPost(body?: AddReportConfigInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
|
||||
return SysReportConfigApiFp(configuration).apiSysReportConfigAddPost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 复制报表配置
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigCopyPost(body?: BaseIdInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
|
||||
return SysReportConfigApiFp(configuration).apiSysReportConfigCopyPost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 删除报表配置
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigDeletePost(body?: BaseIdInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
|
||||
return SysReportConfigApiFp(configuration).apiSysReportConfigDeletePost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 执行报表配置Sql脚本
|
||||
* @param {ReportConfigExecuteSqlScriptInput} [body] 输入参数
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigExecuteSqlScriptPost(body?: ReportConfigExecuteSqlScriptInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminNETResultListDictionaryStringObject>> {
|
||||
return SysReportConfigApiFp(configuration).apiSysReportConfigExecuteSqlScriptPost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表布局配置
|
||||
* @param {number} id 主键Id
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigGetLayoutConfigGet(id: number, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminNETResultSysReportLayoutConfig>> {
|
||||
return SysReportConfigApiFp(configuration).apiSysReportConfigGetLayoutConfigGet(id, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表配置分页列表
|
||||
* @param {PageReportConfigInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigPagePost(body?: PageReportConfigInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminNETResultSqlSugarPagedListReportConfigOutput>> {
|
||||
return SysReportConfigApiFp(configuration).apiSysReportConfigPagePost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 解析报表配置Sql
|
||||
* @param {ReportConfigParseSqlInput} [body] 输入参数
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigParseSqlPost(body?: ReportConfigParseSqlInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminNETResultReportConfigParseSqlOutput>> {
|
||||
return SysReportConfigApiFp(configuration).apiSysReportConfigParseSqlPost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 更新报表配置
|
||||
* @param {UpdateReportConfigInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportConfigUpdatePost(body?: UpdateReportConfigInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
|
||||
return SysReportConfigApiFp(configuration).apiSysReportConfigUpdatePost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* SysReportConfigApi - object-oriented interface
|
||||
* @export
|
||||
* @class SysReportConfigApi
|
||||
* @extends {BaseAPI}
|
||||
*/
|
||||
export class SysReportConfigApi extends BaseAPI {
|
||||
/**
|
||||
*
|
||||
* @summary 增加报表配置
|
||||
* @param {AddReportConfigInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportConfigApi
|
||||
*/
|
||||
public async apiSysReportConfigAddPost(body?: AddReportConfigInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
|
||||
return SysReportConfigApiFp(this.configuration).apiSysReportConfigAddPost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 复制报表配置
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportConfigApi
|
||||
*/
|
||||
public async apiSysReportConfigCopyPost(body?: BaseIdInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
|
||||
return SysReportConfigApiFp(this.configuration).apiSysReportConfigCopyPost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 删除报表配置
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportConfigApi
|
||||
*/
|
||||
public async apiSysReportConfigDeletePost(body?: BaseIdInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
|
||||
return SysReportConfigApiFp(this.configuration).apiSysReportConfigDeletePost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 执行报表配置Sql脚本
|
||||
* @param {ReportConfigExecuteSqlScriptInput} [body] 输入参数
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportConfigApi
|
||||
*/
|
||||
public async apiSysReportConfigExecuteSqlScriptPost(body?: ReportConfigExecuteSqlScriptInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminNETResultListDictionaryStringObject>> {
|
||||
return SysReportConfigApiFp(this.configuration).apiSysReportConfigExecuteSqlScriptPost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表布局配置
|
||||
* @param {number} id 主键Id
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportConfigApi
|
||||
*/
|
||||
public async apiSysReportConfigGetLayoutConfigGet(id: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminNETResultSysReportLayoutConfig>> {
|
||||
return SysReportConfigApiFp(this.configuration).apiSysReportConfigGetLayoutConfigGet(id, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表配置分页列表
|
||||
* @param {PageReportConfigInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportConfigApi
|
||||
*/
|
||||
public async apiSysReportConfigPagePost(body?: PageReportConfigInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminNETResultSqlSugarPagedListReportConfigOutput>> {
|
||||
return SysReportConfigApiFp(this.configuration).apiSysReportConfigPagePost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 解析报表配置Sql
|
||||
* @param {ReportConfigParseSqlInput} [body] 输入参数
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportConfigApi
|
||||
*/
|
||||
public async apiSysReportConfigParseSqlPost(body?: ReportConfigParseSqlInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminNETResultReportConfigParseSqlOutput>> {
|
||||
return SysReportConfigApiFp(this.configuration).apiSysReportConfigParseSqlPost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 更新报表配置
|
||||
* @param {UpdateReportConfigInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportConfigApi
|
||||
*/
|
||||
public async apiSysReportConfigUpdatePost(body?: UpdateReportConfigInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
|
||||
return SysReportConfigApiFp(this.configuration).apiSysReportConfigUpdatePost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
}
|
||||
467
Web/src/api-services/apis/sys-report-data-source-api.ts
Normal file
467
Web/src/api-services/apis/sys-report-data-source-api.ts
Normal file
@ -0,0 +1,467 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';
|
||||
import { Configuration } from '../configuration';
|
||||
// Some imports not used depending on template conditions
|
||||
// @ts-ignore
|
||||
import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';
|
||||
import { AddReportDataSourceInput } from '../models';
|
||||
import { AdminNETResultListReportDataSourceOutput } from '../models';
|
||||
import { AdminNETResultSqlSugarPagedListSysReportDataSource } from '../models';
|
||||
import { BaseIdInput } from '../models';
|
||||
import { PageReportDataSourceInput } from '../models';
|
||||
import { UpdateReportDataSourceInput } from '../models';
|
||||
/**
|
||||
* SysReportDataSourceApi - axios parameter creator
|
||||
* @export
|
||||
*/
|
||||
export const SysReportDataSourceApiAxiosParamCreator = function (configuration?: Configuration) {
|
||||
return {
|
||||
/**
|
||||
*
|
||||
* @summary 增加报表数据源
|
||||
* @param {AddReportDataSourceInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportDataSourceAddPost: async (body?: AddReportDataSourceInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportDataSource/add`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 删除报表数据源
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportDataSourceDeletePost: async (body?: BaseIdInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportDataSource/delete`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表数据源列表
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportDataSourceGetDataSourceListGet: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportDataSource/getDataSourceList`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表数据源分页列表
|
||||
* @param {PageReportDataSourceInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportDataSourcePagePost: async (body?: PageReportDataSourceInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportDataSource/page`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 更新报表数据源
|
||||
* @param {UpdateReportDataSourceInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportDataSourceUpdatePost: async (body?: UpdateReportDataSourceInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportDataSource/update`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* SysReportDataSourceApi - functional programming interface
|
||||
* @export
|
||||
*/
|
||||
export const SysReportDataSourceApiFp = function(configuration?: Configuration) {
|
||||
return {
|
||||
/**
|
||||
*
|
||||
* @summary 增加报表数据源
|
||||
* @param {AddReportDataSourceInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportDataSourceAddPost(body?: AddReportDataSourceInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
|
||||
const localVarAxiosArgs = await SysReportDataSourceApiAxiosParamCreator(configuration).apiSysReportDataSourceAddPost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 删除报表数据源
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportDataSourceDeletePost(body?: BaseIdInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
|
||||
const localVarAxiosArgs = await SysReportDataSourceApiAxiosParamCreator(configuration).apiSysReportDataSourceDeletePost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表数据源列表
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportDataSourceGetDataSourceListGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminNETResultListReportDataSourceOutput>>> {
|
||||
const localVarAxiosArgs = await SysReportDataSourceApiAxiosParamCreator(configuration).apiSysReportDataSourceGetDataSourceListGet(options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表数据源分页列表
|
||||
* @param {PageReportDataSourceInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportDataSourcePagePost(body?: PageReportDataSourceInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminNETResultSqlSugarPagedListSysReportDataSource>>> {
|
||||
const localVarAxiosArgs = await SysReportDataSourceApiAxiosParamCreator(configuration).apiSysReportDataSourcePagePost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 更新报表数据源
|
||||
* @param {UpdateReportDataSourceInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportDataSourceUpdatePost(body?: UpdateReportDataSourceInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
|
||||
const localVarAxiosArgs = await SysReportDataSourceApiAxiosParamCreator(configuration).apiSysReportDataSourceUpdatePost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* SysReportDataSourceApi - factory interface
|
||||
* @export
|
||||
*/
|
||||
export const SysReportDataSourceApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
|
||||
return {
|
||||
/**
|
||||
*
|
||||
* @summary 增加报表数据源
|
||||
* @param {AddReportDataSourceInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportDataSourceAddPost(body?: AddReportDataSourceInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
|
||||
return SysReportDataSourceApiFp(configuration).apiSysReportDataSourceAddPost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 删除报表数据源
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportDataSourceDeletePost(body?: BaseIdInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
|
||||
return SysReportDataSourceApiFp(configuration).apiSysReportDataSourceDeletePost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表数据源列表
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportDataSourceGetDataSourceListGet(options?: AxiosRequestConfig): Promise<AxiosResponse<AdminNETResultListReportDataSourceOutput>> {
|
||||
return SysReportDataSourceApiFp(configuration).apiSysReportDataSourceGetDataSourceListGet(options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表数据源分页列表
|
||||
* @param {PageReportDataSourceInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportDataSourcePagePost(body?: PageReportDataSourceInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminNETResultSqlSugarPagedListSysReportDataSource>> {
|
||||
return SysReportDataSourceApiFp(configuration).apiSysReportDataSourcePagePost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 更新报表数据源
|
||||
* @param {UpdateReportDataSourceInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportDataSourceUpdatePost(body?: UpdateReportDataSourceInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
|
||||
return SysReportDataSourceApiFp(configuration).apiSysReportDataSourceUpdatePost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* SysReportDataSourceApi - object-oriented interface
|
||||
* @export
|
||||
* @class SysReportDataSourceApi
|
||||
* @extends {BaseAPI}
|
||||
*/
|
||||
export class SysReportDataSourceApi extends BaseAPI {
|
||||
/**
|
||||
*
|
||||
* @summary 增加报表数据源
|
||||
* @param {AddReportDataSourceInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportDataSourceApi
|
||||
*/
|
||||
public async apiSysReportDataSourceAddPost(body?: AddReportDataSourceInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
|
||||
return SysReportDataSourceApiFp(this.configuration).apiSysReportDataSourceAddPost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 删除报表数据源
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportDataSourceApi
|
||||
*/
|
||||
public async apiSysReportDataSourceDeletePost(body?: BaseIdInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
|
||||
return SysReportDataSourceApiFp(this.configuration).apiSysReportDataSourceDeletePost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表数据源列表
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportDataSourceApi
|
||||
*/
|
||||
public async apiSysReportDataSourceGetDataSourceListGet(options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminNETResultListReportDataSourceOutput>> {
|
||||
return SysReportDataSourceApiFp(this.configuration).apiSysReportDataSourceGetDataSourceListGet(options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表数据源分页列表
|
||||
* @param {PageReportDataSourceInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportDataSourceApi
|
||||
*/
|
||||
public async apiSysReportDataSourcePagePost(body?: PageReportDataSourceInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminNETResultSqlSugarPagedListSysReportDataSource>> {
|
||||
return SysReportDataSourceApiFp(this.configuration).apiSysReportDataSourcePagePost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 更新报表数据源
|
||||
* @param {UpdateReportDataSourceInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportDataSourceApi
|
||||
*/
|
||||
public async apiSysReportDataSourceUpdatePost(body?: UpdateReportDataSourceInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
|
||||
return SysReportDataSourceApiFp(this.configuration).apiSysReportDataSourceUpdatePost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
}
|
||||
382
Web/src/api-services/apis/sys-report-group-api.ts
Normal file
382
Web/src/api-services/apis/sys-report-group-api.ts
Normal file
@ -0,0 +1,382 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';
|
||||
import { Configuration } from '../configuration';
|
||||
// Some imports not used depending on template conditions
|
||||
// @ts-ignore
|
||||
import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';
|
||||
import { AddReportGroupInput } from '../models';
|
||||
import { AdminNETResultListSysReportGroup } from '../models';
|
||||
import { BaseIdInput } from '../models';
|
||||
import { UpdateReportGroupInput } from '../models';
|
||||
/**
|
||||
* SysReportGroupApi - axios parameter creator
|
||||
* @export
|
||||
*/
|
||||
export const SysReportGroupApiAxiosParamCreator = function (configuration?: Configuration) {
|
||||
return {
|
||||
/**
|
||||
*
|
||||
* @summary 增加报表分组
|
||||
* @param {AddReportGroupInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportGroupAddPost: async (body?: AddReportGroupInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportGroup/add`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 删除报表分组
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportGroupDeletePost: async (body?: BaseIdInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportGroup/delete`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表分组列表
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportGroupGetListGet: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportGroup/getList`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 更新报表分组
|
||||
* @param {UpdateReportGroupInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysReportGroupUpdatePost: async (body?: UpdateReportGroupInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysReportGroup/update`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* SysReportGroupApi - functional programming interface
|
||||
* @export
|
||||
*/
|
||||
export const SysReportGroupApiFp = function(configuration?: Configuration) {
|
||||
return {
|
||||
/**
|
||||
*
|
||||
* @summary 增加报表分组
|
||||
* @param {AddReportGroupInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportGroupAddPost(body?: AddReportGroupInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
|
||||
const localVarAxiosArgs = await SysReportGroupApiAxiosParamCreator(configuration).apiSysReportGroupAddPost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 删除报表分组
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportGroupDeletePost(body?: BaseIdInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
|
||||
const localVarAxiosArgs = await SysReportGroupApiAxiosParamCreator(configuration).apiSysReportGroupDeletePost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表分组列表
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportGroupGetListGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminNETResultListSysReportGroup>>> {
|
||||
const localVarAxiosArgs = await SysReportGroupApiAxiosParamCreator(configuration).apiSysReportGroupGetListGet(options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 更新报表分组
|
||||
* @param {UpdateReportGroupInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportGroupUpdatePost(body?: UpdateReportGroupInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
|
||||
const localVarAxiosArgs = await SysReportGroupApiAxiosParamCreator(configuration).apiSysReportGroupUpdatePost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* SysReportGroupApi - factory interface
|
||||
* @export
|
||||
*/
|
||||
export const SysReportGroupApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
|
||||
return {
|
||||
/**
|
||||
*
|
||||
* @summary 增加报表分组
|
||||
* @param {AddReportGroupInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportGroupAddPost(body?: AddReportGroupInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
|
||||
return SysReportGroupApiFp(configuration).apiSysReportGroupAddPost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 删除报表分组
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportGroupDeletePost(body?: BaseIdInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
|
||||
return SysReportGroupApiFp(configuration).apiSysReportGroupDeletePost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表分组列表
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportGroupGetListGet(options?: AxiosRequestConfig): Promise<AxiosResponse<AdminNETResultListSysReportGroup>> {
|
||||
return SysReportGroupApiFp(configuration).apiSysReportGroupGetListGet(options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 更新报表分组
|
||||
* @param {UpdateReportGroupInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysReportGroupUpdatePost(body?: UpdateReportGroupInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
|
||||
return SysReportGroupApiFp(configuration).apiSysReportGroupUpdatePost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* SysReportGroupApi - object-oriented interface
|
||||
* @export
|
||||
* @class SysReportGroupApi
|
||||
* @extends {BaseAPI}
|
||||
*/
|
||||
export class SysReportGroupApi extends BaseAPI {
|
||||
/**
|
||||
*
|
||||
* @summary 增加报表分组
|
||||
* @param {AddReportGroupInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportGroupApi
|
||||
*/
|
||||
public async apiSysReportGroupAddPost(body?: AddReportGroupInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
|
||||
return SysReportGroupApiFp(this.configuration).apiSysReportGroupAddPost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 删除报表分组
|
||||
* @param {BaseIdInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportGroupApi
|
||||
*/
|
||||
public async apiSysReportGroupDeletePost(body?: BaseIdInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
|
||||
return SysReportGroupApiFp(this.configuration).apiSysReportGroupDeletePost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 获取报表分组列表
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportGroupApi
|
||||
*/
|
||||
public async apiSysReportGroupGetListGet(options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminNETResultListSysReportGroup>> {
|
||||
return SysReportGroupApiFp(this.configuration).apiSysReportGroupGetListGet(options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 更新报表分组
|
||||
* @param {UpdateReportGroupInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysReportGroupApi
|
||||
*/
|
||||
public async apiSysReportGroupUpdatePost(body?: UpdateReportGroupInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
|
||||
return SysReportGroupApiFp(this.configuration).apiSysReportGroupUpdatePost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
}
|
||||
180
Web/src/api-services/models/add-report-config-input.ts
Normal file
180
Web/src/api-services/models/add-report-config-input.ts
Normal file
@ -0,0 +1,180 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import { ReportConfigDsTypeEnum } from './report-config-ds-type-enum';
|
||||
import { SysReportGroup } from './sys-report-group';
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @export
|
||||
* @interface AddReportConfigInput
|
||||
*/
|
||||
export interface AddReportConfigInput {
|
||||
|
||||
/**
|
||||
* 雪花Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
id?: number;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
createTime?: Date;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
updateTime?: Date | null;
|
||||
|
||||
/**
|
||||
* 创建者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
createUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
createUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 修改者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
updateUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 修改者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
updateUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 软删除
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
isDelete?: boolean;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
name?: string | null;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
description?: string | null;
|
||||
|
||||
/**
|
||||
* @type {ReportConfigDsTypeEnum}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
dsType?: ReportConfigDsTypeEnum;
|
||||
|
||||
/**
|
||||
* 数据源
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
dataSource?: string | null;
|
||||
|
||||
/**
|
||||
* 分组Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
groupId?: number | null;
|
||||
|
||||
/**
|
||||
* @type {SysReportGroup}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
group?: SysReportGroup;
|
||||
|
||||
/**
|
||||
* 脚本语句
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
sqlScript?: string | null;
|
||||
|
||||
/**
|
||||
* 接口地址
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
apiUrl?: string | null;
|
||||
|
||||
/**
|
||||
* 接口请求方式
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
apiHttpMethod?: string | null;
|
||||
|
||||
/**
|
||||
* 接口参数
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
apiParams?: string | null;
|
||||
|
||||
/**
|
||||
* 参数
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
params?: string | null;
|
||||
|
||||
/**
|
||||
* 列表字段
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportConfigInput
|
||||
*/
|
||||
fields?: string | null;
|
||||
}
|
||||
118
Web/src/api-services/models/add-report-data-source-input.ts
Normal file
118
Web/src/api-services/models/add-report-data-source-input.ts
Normal file
@ -0,0 +1,118 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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 AddReportDataSourceInput
|
||||
*/
|
||||
export interface AddReportDataSourceInput {
|
||||
|
||||
/**
|
||||
* 雪花Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AddReportDataSourceInput
|
||||
*/
|
||||
id?: number;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AddReportDataSourceInput
|
||||
*/
|
||||
createTime?: Date;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AddReportDataSourceInput
|
||||
*/
|
||||
updateTime?: Date | null;
|
||||
|
||||
/**
|
||||
* 创建者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AddReportDataSourceInput
|
||||
*/
|
||||
createUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportDataSourceInput
|
||||
*/
|
||||
createUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 修改者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AddReportDataSourceInput
|
||||
*/
|
||||
updateUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 修改者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportDataSourceInput
|
||||
*/
|
||||
updateUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 软删除
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof AddReportDataSourceInput
|
||||
*/
|
||||
isDelete?: boolean;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportDataSourceInput
|
||||
*/
|
||||
name?: string | null;
|
||||
|
||||
/**
|
||||
* 数据库类型
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportDataSourceInput
|
||||
*/
|
||||
dbType?: string | null;
|
||||
|
||||
/**
|
||||
* 连接字符串
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportDataSourceInput
|
||||
*/
|
||||
connectionString?: string | null;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportDataSourceInput
|
||||
*/
|
||||
memo?: string | null;
|
||||
}
|
||||
102
Web/src/api-services/models/add-report-group-input.ts
Normal file
102
Web/src/api-services/models/add-report-group-input.ts
Normal file
@ -0,0 +1,102 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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 AddReportGroupInput
|
||||
*/
|
||||
export interface AddReportGroupInput {
|
||||
|
||||
/**
|
||||
* 雪花Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AddReportGroupInput
|
||||
*/
|
||||
id?: number;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AddReportGroupInput
|
||||
*/
|
||||
createTime?: Date;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AddReportGroupInput
|
||||
*/
|
||||
updateTime?: Date | null;
|
||||
|
||||
/**
|
||||
* 创建者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AddReportGroupInput
|
||||
*/
|
||||
createUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportGroupInput
|
||||
*/
|
||||
createUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 修改者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AddReportGroupInput
|
||||
*/
|
||||
updateUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 修改者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportGroupInput
|
||||
*/
|
||||
updateUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 软删除
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof AddReportGroupInput
|
||||
*/
|
||||
isDelete?: boolean;
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportGroupInput
|
||||
*/
|
||||
number?: string | null;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddReportGroupInput
|
||||
*/
|
||||
name?: string | null;
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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 AdminNETResultListDictionaryStringObject
|
||||
*/
|
||||
export interface AdminNETResultListDictionaryStringObject {
|
||||
|
||||
/**
|
||||
* 状态码
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AdminNETResultListDictionaryStringObject
|
||||
*/
|
||||
code?: number;
|
||||
|
||||
/**
|
||||
* 类型success、warning、error
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminNETResultListDictionaryStringObject
|
||||
*/
|
||||
type?: string | null;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminNETResultListDictionaryStringObject
|
||||
*/
|
||||
message?: string | null;
|
||||
|
||||
/**
|
||||
* 数据
|
||||
*
|
||||
* @type {Array<{ [key: string]: any; }>}
|
||||
* @memberof AdminNETResultListDictionaryStringObject
|
||||
*/
|
||||
result?: Array<{ [key: string]: any; }> | null;
|
||||
|
||||
/**
|
||||
* 附加数据
|
||||
*
|
||||
* @type {any}
|
||||
* @memberof AdminNETResultListDictionaryStringObject
|
||||
*/
|
||||
extras?: any | null;
|
||||
|
||||
/**
|
||||
* 时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AdminNETResultListDictionaryStringObject
|
||||
*/
|
||||
time?: Date;
|
||||
}
|
||||
@ -0,0 +1,71 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import { ReportDataSourceOutput } from './report-data-source-output';
|
||||
/**
|
||||
* 全局返回结果
|
||||
*
|
||||
* @export
|
||||
* @interface AdminNETResultListReportDataSourceOutput
|
||||
*/
|
||||
export interface AdminNETResultListReportDataSourceOutput {
|
||||
|
||||
/**
|
||||
* 状态码
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AdminNETResultListReportDataSourceOutput
|
||||
*/
|
||||
code?: number;
|
||||
|
||||
/**
|
||||
* 类型success、warning、error
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminNETResultListReportDataSourceOutput
|
||||
*/
|
||||
type?: string | null;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminNETResultListReportDataSourceOutput
|
||||
*/
|
||||
message?: string | null;
|
||||
|
||||
/**
|
||||
* 数据
|
||||
*
|
||||
* @type {Array<ReportDataSourceOutput>}
|
||||
* @memberof AdminNETResultListReportDataSourceOutput
|
||||
*/
|
||||
result?: Array<ReportDataSourceOutput> | null;
|
||||
|
||||
/**
|
||||
* 附加数据
|
||||
*
|
||||
* @type {any}
|
||||
* @memberof AdminNETResultListReportDataSourceOutput
|
||||
*/
|
||||
extras?: any | null;
|
||||
|
||||
/**
|
||||
* 时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AdminNETResultListReportDataSourceOutput
|
||||
*/
|
||||
time?: Date;
|
||||
}
|
||||
@ -0,0 +1,71 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import { SysReportGroup } from './sys-report-group';
|
||||
/**
|
||||
* 全局返回结果
|
||||
*
|
||||
* @export
|
||||
* @interface AdminNETResultListSysReportGroup
|
||||
*/
|
||||
export interface AdminNETResultListSysReportGroup {
|
||||
|
||||
/**
|
||||
* 状态码
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AdminNETResultListSysReportGroup
|
||||
*/
|
||||
code?: number;
|
||||
|
||||
/**
|
||||
* 类型success、warning、error
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminNETResultListSysReportGroup
|
||||
*/
|
||||
type?: string | null;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminNETResultListSysReportGroup
|
||||
*/
|
||||
message?: string | null;
|
||||
|
||||
/**
|
||||
* 数据
|
||||
*
|
||||
* @type {Array<SysReportGroup>}
|
||||
* @memberof AdminNETResultListSysReportGroup
|
||||
*/
|
||||
result?: Array<SysReportGroup> | null;
|
||||
|
||||
/**
|
||||
* 附加数据
|
||||
*
|
||||
* @type {any}
|
||||
* @memberof AdminNETResultListSysReportGroup
|
||||
*/
|
||||
extras?: any | null;
|
||||
|
||||
/**
|
||||
* 时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AdminNETResultListSysReportGroup
|
||||
*/
|
||||
time?: Date;
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import { ReportConfigParseSqlOutput } from './report-config-parse-sql-output';
|
||||
/**
|
||||
* 全局返回结果
|
||||
*
|
||||
* @export
|
||||
* @interface AdminNETResultReportConfigParseSqlOutput
|
||||
*/
|
||||
export interface AdminNETResultReportConfigParseSqlOutput {
|
||||
|
||||
/**
|
||||
* 状态码
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AdminNETResultReportConfigParseSqlOutput
|
||||
*/
|
||||
code?: number;
|
||||
|
||||
/**
|
||||
* 类型success、warning、error
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminNETResultReportConfigParseSqlOutput
|
||||
*/
|
||||
type?: string | null;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminNETResultReportConfigParseSqlOutput
|
||||
*/
|
||||
message?: string | null;
|
||||
|
||||
/**
|
||||
* @type {ReportConfigParseSqlOutput}
|
||||
* @memberof AdminNETResultReportConfigParseSqlOutput
|
||||
*/
|
||||
result?: ReportConfigParseSqlOutput;
|
||||
|
||||
/**
|
||||
* 附加数据
|
||||
*
|
||||
* @type {any}
|
||||
* @memberof AdminNETResultReportConfigParseSqlOutput
|
||||
*/
|
||||
extras?: any | null;
|
||||
|
||||
/**
|
||||
* 时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AdminNETResultReportConfigParseSqlOutput
|
||||
*/
|
||||
time?: Date;
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import { SqlSugarPagedListReportConfigOutput } from './sql-sugar-paged-list-report-config-output';
|
||||
/**
|
||||
* 全局返回结果
|
||||
*
|
||||
* @export
|
||||
* @interface AdminNETResultSqlSugarPagedListReportConfigOutput
|
||||
*/
|
||||
export interface AdminNETResultSqlSugarPagedListReportConfigOutput {
|
||||
|
||||
/**
|
||||
* 状态码
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AdminNETResultSqlSugarPagedListReportConfigOutput
|
||||
*/
|
||||
code?: number;
|
||||
|
||||
/**
|
||||
* 类型success、warning、error
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminNETResultSqlSugarPagedListReportConfigOutput
|
||||
*/
|
||||
type?: string | null;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminNETResultSqlSugarPagedListReportConfigOutput
|
||||
*/
|
||||
message?: string | null;
|
||||
|
||||
/**
|
||||
* @type {SqlSugarPagedListReportConfigOutput}
|
||||
* @memberof AdminNETResultSqlSugarPagedListReportConfigOutput
|
||||
*/
|
||||
result?: SqlSugarPagedListReportConfigOutput;
|
||||
|
||||
/**
|
||||
* 附加数据
|
||||
*
|
||||
* @type {any}
|
||||
* @memberof AdminNETResultSqlSugarPagedListReportConfigOutput
|
||||
*/
|
||||
extras?: any | null;
|
||||
|
||||
/**
|
||||
* 时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AdminNETResultSqlSugarPagedListReportConfigOutput
|
||||
*/
|
||||
time?: Date;
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import { SqlSugarPagedListSysReportDataSource } from './sql-sugar-paged-list-sys-report-data-source';
|
||||
/**
|
||||
* 全局返回结果
|
||||
*
|
||||
* @export
|
||||
* @interface AdminNETResultSqlSugarPagedListSysReportDataSource
|
||||
*/
|
||||
export interface AdminNETResultSqlSugarPagedListSysReportDataSource {
|
||||
|
||||
/**
|
||||
* 状态码
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AdminNETResultSqlSugarPagedListSysReportDataSource
|
||||
*/
|
||||
code?: number;
|
||||
|
||||
/**
|
||||
* 类型success、warning、error
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminNETResultSqlSugarPagedListSysReportDataSource
|
||||
*/
|
||||
type?: string | null;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminNETResultSqlSugarPagedListSysReportDataSource
|
||||
*/
|
||||
message?: string | null;
|
||||
|
||||
/**
|
||||
* @type {SqlSugarPagedListSysReportDataSource}
|
||||
* @memberof AdminNETResultSqlSugarPagedListSysReportDataSource
|
||||
*/
|
||||
result?: SqlSugarPagedListSysReportDataSource;
|
||||
|
||||
/**
|
||||
* 附加数据
|
||||
*
|
||||
* @type {any}
|
||||
* @memberof AdminNETResultSqlSugarPagedListSysReportDataSource
|
||||
*/
|
||||
extras?: any | null;
|
||||
|
||||
/**
|
||||
* 时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AdminNETResultSqlSugarPagedListSysReportDataSource
|
||||
*/
|
||||
time?: Date;
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import { SysReportLayoutConfig } from './sys-report-layout-config';
|
||||
/**
|
||||
* 全局返回结果
|
||||
*
|
||||
* @export
|
||||
* @interface AdminNETResultSysReportLayoutConfig
|
||||
*/
|
||||
export interface AdminNETResultSysReportLayoutConfig {
|
||||
|
||||
/**
|
||||
* 状态码
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AdminNETResultSysReportLayoutConfig
|
||||
*/
|
||||
code?: number;
|
||||
|
||||
/**
|
||||
* 类型success、warning、error
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminNETResultSysReportLayoutConfig
|
||||
*/
|
||||
type?: string | null;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminNETResultSysReportLayoutConfig
|
||||
*/
|
||||
message?: string | null;
|
||||
|
||||
/**
|
||||
* @type {SysReportLayoutConfig}
|
||||
* @memberof AdminNETResultSysReportLayoutConfig
|
||||
*/
|
||||
result?: SysReportLayoutConfig;
|
||||
|
||||
/**
|
||||
* 附加数据
|
||||
*
|
||||
* @type {any}
|
||||
* @memberof AdminNETResultSysReportLayoutConfig
|
||||
*/
|
||||
extras?: any | null;
|
||||
|
||||
/**
|
||||
* 时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AdminNETResultSysReportLayoutConfig
|
||||
*/
|
||||
time?: Date;
|
||||
}
|
||||
@ -14,6 +14,9 @@ export * from './add-plugin-input';
|
||||
export * from './add-pos-input';
|
||||
export * from './add-print-input';
|
||||
export * from './add-region-input';
|
||||
export * from './add-report-config-input';
|
||||
export * from './add-report-data-source-input';
|
||||
export * from './add-report-group-input';
|
||||
export * from './add-role-input';
|
||||
export * from './add-schedule-input';
|
||||
export * from './add-subscribe-message-template-input';
|
||||
@ -50,6 +53,7 @@ export * from './admin-netresult-list-db-backup-output';
|
||||
export * from './admin-netresult-list-db-column-output';
|
||||
export * from './admin-netresult-list-db-output';
|
||||
export * from './admin-netresult-list-db-table-info';
|
||||
export * from './admin-netresult-list-dictionary-string-object';
|
||||
export * from './admin-netresult-list-enum-entity';
|
||||
export * from './admin-netresult-list-enum-type-output';
|
||||
export * from './admin-netresult-list-int64';
|
||||
@ -58,6 +62,7 @@ export * from './admin-netresult-list-log-vis-output';
|
||||
export * from './admin-netresult-list-menu-output';
|
||||
export * from './admin-netresult-list-nu-get-package';
|
||||
export * from './admin-netresult-list-pos-output';
|
||||
export * from './admin-netresult-list-report-data-source-output';
|
||||
export * from './admin-netresult-list-role-output';
|
||||
export * from './admin-netresult-list-role-table-output';
|
||||
export * from './admin-netresult-list-stat-log-output';
|
||||
@ -75,6 +80,7 @@ export * from './admin-netresult-list-sys-menu';
|
||||
export * from './admin-netresult-list-sys-notice';
|
||||
export * from './admin-netresult-list-sys-org';
|
||||
export * from './admin-netresult-list-sys-region';
|
||||
export * from './admin-netresult-list-sys-report-group';
|
||||
export * from './admin-netresult-list-sys-schedule';
|
||||
export * from './admin-netresult-list-sys-user';
|
||||
export * from './admin-netresult-list-sys-user-ext-org';
|
||||
@ -87,6 +93,7 @@ export * from './admin-netresult-login-user-output';
|
||||
export * from './admin-netresult-model-list-output';
|
||||
export * from './admin-netresult-notice-output';
|
||||
export * from './admin-netresult-object';
|
||||
export * from './admin-netresult-report-config-parse-sql-output';
|
||||
export * from './admin-netresult-sm-key-pair-output';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-chat-list-output';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-job-detail-output';
|
||||
@ -94,6 +101,7 @@ export * from './admin-netresult-sql-sugar-paged-list-oauth-user-output';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-open-access-output';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-page-pos-output';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-page-role-output';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-report-config-output';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-sys-code-gen';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-sys-config';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-sys-config-tenant';
|
||||
@ -113,6 +121,7 @@ export * from './admin-netresult-sql-sugar-paged-list-sys-online-user';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-sys-plugin';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-sys-print';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-sys-region';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-sys-report-data-source';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-sys-upgrade';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-sys-wechat-pay';
|
||||
export * from './admin-netresult-sql-sugar-paged-list-tenant-output';
|
||||
@ -133,6 +142,7 @@ export * from './admin-netresult-sys-log-msg';
|
||||
export * from './admin-netresult-sys-log-op';
|
||||
export * from './admin-netresult-sys-notice';
|
||||
export * from './admin-netresult-sys-print';
|
||||
export * from './admin-netresult-sys-report-layout-config';
|
||||
export * from './admin-netresult-sys-schedule';
|
||||
export * from './admin-netresult-sys-upgrade';
|
||||
export * from './admin-netresult-sys-user';
|
||||
@ -354,6 +364,8 @@ export * from './page-pos-input';
|
||||
export * from './page-pos-output';
|
||||
export * from './page-print-input';
|
||||
export * from './page-region-input';
|
||||
export * from './page-report-config-input';
|
||||
export * from './page-report-data-source-input';
|
||||
export * from './page-role-input';
|
||||
export * from './page-role-output';
|
||||
export * from './page-sys-wechat-pay-input';
|
||||
@ -373,6 +385,12 @@ export * from './public-message-input';
|
||||
export * from './query-region-input';
|
||||
export * from './ram-info';
|
||||
export * from './refund-request-input';
|
||||
export * from './report-config-ds-type-enum';
|
||||
export * from './report-config-execute-sql-script-input';
|
||||
export * from './report-config-output';
|
||||
export * from './report-config-parse-sql-input';
|
||||
export * from './report-config-parse-sql-output';
|
||||
export * from './report-data-source-output';
|
||||
export * from './reset-pwd-user-input';
|
||||
export * from './role-api-input';
|
||||
export * from './role-input';
|
||||
@ -404,6 +422,7 @@ export * from './sql-sugar-paged-list-oauth-user-output';
|
||||
export * from './sql-sugar-paged-list-open-access-output';
|
||||
export * from './sql-sugar-paged-list-page-pos-output';
|
||||
export * from './sql-sugar-paged-list-page-role-output';
|
||||
export * from './sql-sugar-paged-list-report-config-output';
|
||||
export * from './sql-sugar-paged-list-sys-code-gen';
|
||||
export * from './sql-sugar-paged-list-sys-config';
|
||||
export * from './sql-sugar-paged-list-sys-config-tenant';
|
||||
@ -423,6 +442,7 @@ export * from './sql-sugar-paged-list-sys-online-user';
|
||||
export * from './sql-sugar-paged-list-sys-plugin';
|
||||
export * from './sql-sugar-paged-list-sys-print';
|
||||
export * from './sql-sugar-paged-list-sys-region';
|
||||
export * from './sql-sugar-paged-list-sys-report-data-source';
|
||||
export * from './sql-sugar-paged-list-sys-upgrade';
|
||||
export * from './sql-sugar-paged-list-sys-wechat-pay';
|
||||
export * from './sql-sugar-paged-list-tenant-output';
|
||||
@ -469,6 +489,11 @@ export * from './sys-org';
|
||||
export * from './sys-plugin';
|
||||
export * from './sys-print';
|
||||
export * from './sys-region';
|
||||
export * from './sys-report-data-source';
|
||||
export * from './sys-report-field';
|
||||
export * from './sys-report-group';
|
||||
export * from './sys-report-layout-config';
|
||||
export * from './sys-report-param';
|
||||
export * from './sys-schedule';
|
||||
export * from './sys-tenant-upload-carousel-file-body';
|
||||
export * from './sys-upgrade';
|
||||
@ -512,6 +537,9 @@ export * from './update-plugin-input';
|
||||
export * from './update-pos-input';
|
||||
export * from './update-print-input';
|
||||
export * from './update-region-input';
|
||||
export * from './update-report-config-input';
|
||||
export * from './update-report-data-source-input';
|
||||
export * from './update-report-group-input';
|
||||
export * from './update-role-input';
|
||||
export * from './update-schedule-input';
|
||||
export * from './update-sys-ldap-input';
|
||||
|
||||
100
Web/src/api-services/models/page-report-config-input.ts
Normal file
100
Web/src/api-services/models/page-report-config-input.ts
Normal file
@ -0,0 +1,100 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import { Filter } from './filter';
|
||||
import { Search } from './search';
|
||||
/**
|
||||
* 报表配置分页输入参数
|
||||
*
|
||||
* @export
|
||||
* @interface PageReportConfigInput
|
||||
*/
|
||||
export interface PageReportConfigInput {
|
||||
|
||||
/**
|
||||
* @type {Search}
|
||||
* @memberof PageReportConfigInput
|
||||
*/
|
||||
search?: Search;
|
||||
|
||||
/**
|
||||
* 模糊查询关键字
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof PageReportConfigInput
|
||||
*/
|
||||
keyword?: string | null;
|
||||
|
||||
/**
|
||||
* @type {Filter}
|
||||
* @memberof PageReportConfigInput
|
||||
*/
|
||||
filter?: Filter;
|
||||
|
||||
/**
|
||||
* 当前页码
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof PageReportConfigInput
|
||||
*/
|
||||
page?: number;
|
||||
|
||||
/**
|
||||
* 页码容量
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof PageReportConfigInput
|
||||
*/
|
||||
pageSize?: number;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof PageReportConfigInput
|
||||
*/
|
||||
field?: string | null;
|
||||
|
||||
/**
|
||||
* 排序方向
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof PageReportConfigInput
|
||||
*/
|
||||
order?: string | null;
|
||||
|
||||
/**
|
||||
* 降序排序
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof PageReportConfigInput
|
||||
*/
|
||||
descStr?: string | null;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof PageReportConfigInput
|
||||
*/
|
||||
name?: string | null;
|
||||
|
||||
/**
|
||||
* 分组Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof PageReportConfigInput
|
||||
*/
|
||||
groupId?: number | null;
|
||||
}
|
||||
92
Web/src/api-services/models/page-report-data-source-input.ts
Normal file
92
Web/src/api-services/models/page-report-data-source-input.ts
Normal file
@ -0,0 +1,92 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import { Filter } from './filter';
|
||||
import { Search } from './search';
|
||||
/**
|
||||
* 报表数据源分页输入参数
|
||||
*
|
||||
* @export
|
||||
* @interface PageReportDataSourceInput
|
||||
*/
|
||||
export interface PageReportDataSourceInput {
|
||||
|
||||
/**
|
||||
* @type {Search}
|
||||
* @memberof PageReportDataSourceInput
|
||||
*/
|
||||
search?: Search;
|
||||
|
||||
/**
|
||||
* 模糊查询关键字
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof PageReportDataSourceInput
|
||||
*/
|
||||
keyword?: string | null;
|
||||
|
||||
/**
|
||||
* @type {Filter}
|
||||
* @memberof PageReportDataSourceInput
|
||||
*/
|
||||
filter?: Filter;
|
||||
|
||||
/**
|
||||
* 当前页码
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof PageReportDataSourceInput
|
||||
*/
|
||||
page?: number;
|
||||
|
||||
/**
|
||||
* 页码容量
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof PageReportDataSourceInput
|
||||
*/
|
||||
pageSize?: number;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof PageReportDataSourceInput
|
||||
*/
|
||||
field?: string | null;
|
||||
|
||||
/**
|
||||
* 排序方向
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof PageReportDataSourceInput
|
||||
*/
|
||||
order?: string | null;
|
||||
|
||||
/**
|
||||
* 降序排序
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof PageReportDataSourceInput
|
||||
*/
|
||||
descStr?: string | null;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof PageReportDataSourceInput
|
||||
*/
|
||||
name?: string | null;
|
||||
}
|
||||
24
Web/src/api-services/models/report-config-ds-type-enum.ts
Normal file
24
Web/src/api-services/models/report-config-ds-type-enum.ts
Normal file
@ -0,0 +1,24 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* 报表配置数据源类型<br /> Sql Sql = 0<br /> Api Api = 1<br />
|
||||
* @export
|
||||
* @enum {string}
|
||||
*/
|
||||
export enum ReportConfigDsTypeEnum {
|
||||
NUMBER_0 = 0,
|
||||
NUMBER_1 = 1
|
||||
}
|
||||
|
||||
@ -0,0 +1,38 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* 报表配置执行Sql脚本输入参数
|
||||
*
|
||||
* @export
|
||||
* @interface ReportConfigExecuteSqlScriptInput
|
||||
*/
|
||||
export interface ReportConfigExecuteSqlScriptInput {
|
||||
|
||||
/**
|
||||
* 主键Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ReportConfigExecuteSqlScriptInput
|
||||
*/
|
||||
id: number;
|
||||
|
||||
/**
|
||||
* 执行参数
|
||||
*
|
||||
* @type {{ [key: string]: any; }}
|
||||
* @memberof ReportConfigExecuteSqlScriptInput
|
||||
*/
|
||||
execParams?: { [key: string]: any; } | null;
|
||||
}
|
||||
188
Web/src/api-services/models/report-config-output.ts
Normal file
188
Web/src/api-services/models/report-config-output.ts
Normal file
@ -0,0 +1,188 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import { ReportConfigDsTypeEnum } from './report-config-ds-type-enum';
|
||||
import { SysReportGroup } from './sys-report-group';
|
||||
/**
|
||||
* 报表配置输出参数
|
||||
*
|
||||
* @export
|
||||
* @interface ReportConfigOutput
|
||||
*/
|
||||
export interface ReportConfigOutput {
|
||||
|
||||
/**
|
||||
* 雪花Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
id?: number;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
createTime?: Date;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
updateTime?: Date | null;
|
||||
|
||||
/**
|
||||
* 创建者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
createUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
createUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 修改者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
updateUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 修改者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
updateUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 软删除
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
isDelete?: boolean;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
name?: string | null;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
description?: string | null;
|
||||
|
||||
/**
|
||||
* @type {ReportConfigDsTypeEnum}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
dsType?: ReportConfigDsTypeEnum;
|
||||
|
||||
/**
|
||||
* 数据源
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
dataSource?: string | null;
|
||||
|
||||
/**
|
||||
* 分组Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
groupId?: number | null;
|
||||
|
||||
/**
|
||||
* @type {SysReportGroup}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
group?: SysReportGroup;
|
||||
|
||||
/**
|
||||
* 脚本语句
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
sqlScript?: string | null;
|
||||
|
||||
/**
|
||||
* 接口地址
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
apiUrl?: string | null;
|
||||
|
||||
/**
|
||||
* 接口请求方式
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
apiHttpMethod?: string | null;
|
||||
|
||||
/**
|
||||
* 接口参数
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
apiParams?: string | null;
|
||||
|
||||
/**
|
||||
* 参数
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
params?: string | null;
|
||||
|
||||
/**
|
||||
* 列表字段
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
fields?: string | null;
|
||||
|
||||
/**
|
||||
* 分组名称
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportConfigOutput
|
||||
*/
|
||||
groupName?: string | null;
|
||||
}
|
||||
46
Web/src/api-services/models/report-config-parse-sql-input.ts
Normal file
46
Web/src/api-services/models/report-config-parse-sql-input.ts
Normal file
@ -0,0 +1,46 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* 报表配置解析Sql输入参数
|
||||
*
|
||||
* @export
|
||||
* @interface ReportConfigParseSqlInput
|
||||
*/
|
||||
export interface ReportConfigParseSqlInput {
|
||||
|
||||
/**
|
||||
* 数据源
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportConfigParseSqlInput
|
||||
*/
|
||||
dataSource?: string | null;
|
||||
|
||||
/**
|
||||
* 脚本语句
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportConfigParseSqlInput
|
||||
*/
|
||||
sqlScript?: string | null;
|
||||
|
||||
/**
|
||||
* 执行参数
|
||||
*
|
||||
* @type {{ [key: string]: any; }}
|
||||
* @memberof ReportConfigParseSqlInput
|
||||
*/
|
||||
execParams?: { [key: string]: any; } | null;
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* 报表配置解析Sql输出参数
|
||||
*
|
||||
* @export
|
||||
* @interface ReportConfigParseSqlOutput
|
||||
*/
|
||||
export interface ReportConfigParseSqlOutput {
|
||||
|
||||
/**
|
||||
* 报表字段名称集合
|
||||
*
|
||||
* @type {Array<string>}
|
||||
* @memberof ReportConfigParseSqlOutput
|
||||
*/
|
||||
fieldNames?: Array<string> | null;
|
||||
}
|
||||
46
Web/src/api-services/models/report-data-source-output.ts
Normal file
46
Web/src/api-services/models/report-data-source-output.ts
Normal file
@ -0,0 +1,46 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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 ReportDataSourceOutput
|
||||
*/
|
||||
export interface ReportDataSourceOutput {
|
||||
|
||||
/**
|
||||
* Id
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportDataSourceOutput
|
||||
*/
|
||||
id?: string | null;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ReportDataSourceOutput
|
||||
*/
|
||||
name?: string | null;
|
||||
|
||||
/**
|
||||
* 是否内置
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof ReportDataSourceOutput
|
||||
*/
|
||||
isBuildIn?: boolean;
|
||||
}
|
||||
@ -0,0 +1,79 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import { ReportConfigOutput } from './report-config-output';
|
||||
/**
|
||||
* 分页泛型集合
|
||||
*
|
||||
* @export
|
||||
* @interface SqlSugarPagedListReportConfigOutput
|
||||
*/
|
||||
export interface SqlSugarPagedListReportConfigOutput {
|
||||
|
||||
/**
|
||||
* 页码
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SqlSugarPagedListReportConfigOutput
|
||||
*/
|
||||
page?: number;
|
||||
|
||||
/**
|
||||
* 页容量
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SqlSugarPagedListReportConfigOutput
|
||||
*/
|
||||
pageSize?: number;
|
||||
|
||||
/**
|
||||
* 总条数
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SqlSugarPagedListReportConfigOutput
|
||||
*/
|
||||
total?: number;
|
||||
|
||||
/**
|
||||
* 总页数
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SqlSugarPagedListReportConfigOutput
|
||||
*/
|
||||
totalPages?: number;
|
||||
|
||||
/**
|
||||
* 当前页集合
|
||||
*
|
||||
* @type {Array<ReportConfigOutput>}
|
||||
* @memberof SqlSugarPagedListReportConfigOutput
|
||||
*/
|
||||
items?: Array<ReportConfigOutput> | null;
|
||||
|
||||
/**
|
||||
* 是否有上一页
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof SqlSugarPagedListReportConfigOutput
|
||||
*/
|
||||
hasPrevPage?: boolean;
|
||||
|
||||
/**
|
||||
* 是否有下一页
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof SqlSugarPagedListReportConfigOutput
|
||||
*/
|
||||
hasNextPage?: boolean;
|
||||
}
|
||||
@ -0,0 +1,79 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import { SysReportDataSource } from './sys-report-data-source';
|
||||
/**
|
||||
* 分页泛型集合
|
||||
*
|
||||
* @export
|
||||
* @interface SqlSugarPagedListSysReportDataSource
|
||||
*/
|
||||
export interface SqlSugarPagedListSysReportDataSource {
|
||||
|
||||
/**
|
||||
* 页码
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SqlSugarPagedListSysReportDataSource
|
||||
*/
|
||||
page?: number;
|
||||
|
||||
/**
|
||||
* 页容量
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SqlSugarPagedListSysReportDataSource
|
||||
*/
|
||||
pageSize?: number;
|
||||
|
||||
/**
|
||||
* 总条数
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SqlSugarPagedListSysReportDataSource
|
||||
*/
|
||||
total?: number;
|
||||
|
||||
/**
|
||||
* 总页数
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SqlSugarPagedListSysReportDataSource
|
||||
*/
|
||||
totalPages?: number;
|
||||
|
||||
/**
|
||||
* 当前页集合
|
||||
*
|
||||
* @type {Array<SysReportDataSource>}
|
||||
* @memberof SqlSugarPagedListSysReportDataSource
|
||||
*/
|
||||
items?: Array<SysReportDataSource> | null;
|
||||
|
||||
/**
|
||||
* 是否有上一页
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof SqlSugarPagedListSysReportDataSource
|
||||
*/
|
||||
hasPrevPage?: boolean;
|
||||
|
||||
/**
|
||||
* 是否有下一页
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof SqlSugarPagedListSysReportDataSource
|
||||
*/
|
||||
hasNextPage?: boolean;
|
||||
}
|
||||
118
Web/src/api-services/models/sys-report-data-source.ts
Normal file
118
Web/src/api-services/models/sys-report-data-source.ts
Normal file
@ -0,0 +1,118 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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 SysReportDataSource
|
||||
*/
|
||||
export interface SysReportDataSource {
|
||||
|
||||
/**
|
||||
* 雪花Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SysReportDataSource
|
||||
*/
|
||||
id?: number;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof SysReportDataSource
|
||||
*/
|
||||
createTime?: Date;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof SysReportDataSource
|
||||
*/
|
||||
updateTime?: Date | null;
|
||||
|
||||
/**
|
||||
* 创建者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SysReportDataSource
|
||||
*/
|
||||
createUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportDataSource
|
||||
*/
|
||||
createUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 修改者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SysReportDataSource
|
||||
*/
|
||||
updateUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 修改者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportDataSource
|
||||
*/
|
||||
updateUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 软删除
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof SysReportDataSource
|
||||
*/
|
||||
isDelete?: boolean;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportDataSource
|
||||
*/
|
||||
name?: string | null;
|
||||
|
||||
/**
|
||||
* 数据库类型
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportDataSource
|
||||
*/
|
||||
dbType?: string | null;
|
||||
|
||||
/**
|
||||
* 连接字符串
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportDataSource
|
||||
*/
|
||||
connectionString?: string | null;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportDataSource
|
||||
*/
|
||||
memo?: string | null;
|
||||
}
|
||||
70
Web/src/api-services/models/sys-report-field.ts
Normal file
70
Web/src/api-services/models/sys-report-field.ts
Normal file
@ -0,0 +1,70 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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 SysReportField
|
||||
*/
|
||||
export interface SysReportField {
|
||||
|
||||
/**
|
||||
* 字段名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportField
|
||||
*/
|
||||
fieldName?: string | null;
|
||||
|
||||
/**
|
||||
* 字段标题
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportField
|
||||
*/
|
||||
title?: string | null;
|
||||
|
||||
/**
|
||||
* 是否合计
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof SysReportField
|
||||
*/
|
||||
isSummary?: boolean;
|
||||
|
||||
/**
|
||||
* 是否显示
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof SysReportField
|
||||
*/
|
||||
visible?: boolean;
|
||||
|
||||
/**
|
||||
* 分组标题
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportField
|
||||
*/
|
||||
groupTitle?: string | null;
|
||||
|
||||
/**
|
||||
* 列宽度
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SysReportField
|
||||
*/
|
||||
width?: number;
|
||||
}
|
||||
102
Web/src/api-services/models/sys-report-group.ts
Normal file
102
Web/src/api-services/models/sys-report-group.ts
Normal file
@ -0,0 +1,102 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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 SysReportGroup
|
||||
*/
|
||||
export interface SysReportGroup {
|
||||
|
||||
/**
|
||||
* 雪花Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SysReportGroup
|
||||
*/
|
||||
id?: number;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof SysReportGroup
|
||||
*/
|
||||
createTime?: Date;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof SysReportGroup
|
||||
*/
|
||||
updateTime?: Date | null;
|
||||
|
||||
/**
|
||||
* 创建者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SysReportGroup
|
||||
*/
|
||||
createUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportGroup
|
||||
*/
|
||||
createUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 修改者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SysReportGroup
|
||||
*/
|
||||
updateUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 修改者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportGroup
|
||||
*/
|
||||
updateUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 软删除
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof SysReportGroup
|
||||
*/
|
||||
isDelete?: boolean;
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportGroup
|
||||
*/
|
||||
number?: string | null;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportGroup
|
||||
*/
|
||||
name?: string | null;
|
||||
}
|
||||
40
Web/src/api-services/models/sys-report-layout-config.ts
Normal file
40
Web/src/api-services/models/sys-report-layout-config.ts
Normal file
@ -0,0 +1,40 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import { SysReportField } from './sys-report-field';
|
||||
import { SysReportParam } from './sys-report-param';
|
||||
/**
|
||||
* 报表布局配置
|
||||
*
|
||||
* @export
|
||||
* @interface SysReportLayoutConfig
|
||||
*/
|
||||
export interface SysReportLayoutConfig {
|
||||
|
||||
/**
|
||||
* 报表字段集合
|
||||
*
|
||||
* @type {Array<SysReportField>}
|
||||
* @memberof SysReportLayoutConfig
|
||||
*/
|
||||
fields?: Array<SysReportField> | null;
|
||||
|
||||
/**
|
||||
* 报表参数集合
|
||||
*
|
||||
* @type {Array<SysReportParam>}
|
||||
* @memberof SysReportLayoutConfig
|
||||
*/
|
||||
params?: Array<SysReportParam> | null;
|
||||
}
|
||||
54
Web/src/api-services/models/sys-report-param.ts
Normal file
54
Web/src/api-services/models/sys-report-param.ts
Normal file
@ -0,0 +1,54 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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 SysReportParam
|
||||
*/
|
||||
export interface SysReportParam {
|
||||
|
||||
/**
|
||||
* 参数名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportParam
|
||||
*/
|
||||
paramName?: string | null;
|
||||
|
||||
/**
|
||||
* 参数标题
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportParam
|
||||
*/
|
||||
title?: string | null;
|
||||
|
||||
/**
|
||||
* 输入控件类型
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysReportParam
|
||||
*/
|
||||
inputCtrl?: string | null;
|
||||
|
||||
/**
|
||||
* 默认值
|
||||
*
|
||||
* @type {any}
|
||||
* @memberof SysReportParam
|
||||
*/
|
||||
defaultValue?: any | null;
|
||||
}
|
||||
180
Web/src/api-services/models/update-report-config-input.ts
Normal file
180
Web/src/api-services/models/update-report-config-input.ts
Normal file
@ -0,0 +1,180 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import { ReportConfigDsTypeEnum } from './report-config-ds-type-enum';
|
||||
import { SysReportGroup } from './sys-report-group';
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @export
|
||||
* @interface UpdateReportConfigInput
|
||||
*/
|
||||
export interface UpdateReportConfigInput {
|
||||
|
||||
/**
|
||||
* 雪花Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
id?: number;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
createTime?: Date;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
updateTime?: Date | null;
|
||||
|
||||
/**
|
||||
* 创建者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
createUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
createUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 修改者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
updateUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 修改者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
updateUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 软删除
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
isDelete?: boolean;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
name?: string | null;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
description?: string | null;
|
||||
|
||||
/**
|
||||
* @type {ReportConfigDsTypeEnum}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
dsType?: ReportConfigDsTypeEnum;
|
||||
|
||||
/**
|
||||
* 数据源
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
dataSource?: string | null;
|
||||
|
||||
/**
|
||||
* 分组Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
groupId?: number | null;
|
||||
|
||||
/**
|
||||
* @type {SysReportGroup}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
group?: SysReportGroup;
|
||||
|
||||
/**
|
||||
* 脚本语句
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
sqlScript?: string | null;
|
||||
|
||||
/**
|
||||
* 接口地址
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
apiUrl?: string | null;
|
||||
|
||||
/**
|
||||
* 接口请求方式
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
apiHttpMethod?: string | null;
|
||||
|
||||
/**
|
||||
* 接口参数
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
apiParams?: string | null;
|
||||
|
||||
/**
|
||||
* 参数
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
params?: string | null;
|
||||
|
||||
/**
|
||||
* 列表字段
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportConfigInput
|
||||
*/
|
||||
fields?: string | null;
|
||||
}
|
||||
118
Web/src/api-services/models/update-report-data-source-input.ts
Normal file
118
Web/src/api-services/models/update-report-data-source-input.ts
Normal file
@ -0,0 +1,118 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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 UpdateReportDataSourceInput
|
||||
*/
|
||||
export interface UpdateReportDataSourceInput {
|
||||
|
||||
/**
|
||||
* 雪花Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof UpdateReportDataSourceInput
|
||||
*/
|
||||
id?: number;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof UpdateReportDataSourceInput
|
||||
*/
|
||||
createTime?: Date;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof UpdateReportDataSourceInput
|
||||
*/
|
||||
updateTime?: Date | null;
|
||||
|
||||
/**
|
||||
* 创建者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof UpdateReportDataSourceInput
|
||||
*/
|
||||
createUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportDataSourceInput
|
||||
*/
|
||||
createUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 修改者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof UpdateReportDataSourceInput
|
||||
*/
|
||||
updateUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 修改者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportDataSourceInput
|
||||
*/
|
||||
updateUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 软删除
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof UpdateReportDataSourceInput
|
||||
*/
|
||||
isDelete?: boolean;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportDataSourceInput
|
||||
*/
|
||||
name?: string | null;
|
||||
|
||||
/**
|
||||
* 数据库类型
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportDataSourceInput
|
||||
*/
|
||||
dbType?: string | null;
|
||||
|
||||
/**
|
||||
* 连接字符串
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportDataSourceInput
|
||||
*/
|
||||
connectionString?: string | null;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportDataSourceInput
|
||||
*/
|
||||
memo?: string | null;
|
||||
}
|
||||
102
Web/src/api-services/models/update-report-group-input.ts
Normal file
102
Web/src/api-services/models/update-report-group-input.ts
Normal file
@ -0,0 +1,102 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* 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 UpdateReportGroupInput
|
||||
*/
|
||||
export interface UpdateReportGroupInput {
|
||||
|
||||
/**
|
||||
* 雪花Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof UpdateReportGroupInput
|
||||
*/
|
||||
id?: number;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof UpdateReportGroupInput
|
||||
*/
|
||||
createTime?: Date;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof UpdateReportGroupInput
|
||||
*/
|
||||
updateTime?: Date | null;
|
||||
|
||||
/**
|
||||
* 创建者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof UpdateReportGroupInput
|
||||
*/
|
||||
createUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportGroupInput
|
||||
*/
|
||||
createUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 修改者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof UpdateReportGroupInput
|
||||
*/
|
||||
updateUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 修改者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportGroupInput
|
||||
*/
|
||||
updateUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 软删除
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof UpdateReportGroupInput
|
||||
*/
|
||||
isDelete?: boolean;
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportGroupInput
|
||||
*/
|
||||
number?: string | null;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateReportGroupInput
|
||||
*/
|
||||
name?: string | null;
|
||||
}
|
||||
@ -85,6 +85,19 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
|
||||
icon: 'ele-View',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: '/report/view/:reportConfigId/:tagsViewName?',
|
||||
name: 'sysReportView',
|
||||
component: () => import('/@/views/system/reportConfig/component/reportView.vue'),
|
||||
meta: {
|
||||
title: '报表查看',
|
||||
isHide: true,
|
||||
isKeepAlive: true,
|
||||
isAffix: false,
|
||||
isIframe: false,
|
||||
icon: '',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
594
Web/src/views/system/reportConfig/component/editReportConfig.vue
Normal file
594
Web/src/views/system/reportConfig/component/editReportConfig.vue
Normal file
@ -0,0 +1,594 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-dialog v-model="state.isShowDialog" draggable :close-on-click-modal="false" width="90%">
|
||||
<template #header>
|
||||
<div style="color: #fff">
|
||||
<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>
|
||||
<span> {{ props.title }} </span>
|
||||
</div>
|
||||
</template>
|
||||
<el-form :model="state.ruleForm" ref="ruleFormRef" label-width="130" :rules="rules">
|
||||
<el-row :gutter="10">
|
||||
<el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8" class="mb20">
|
||||
<el-form-item :label="$t('名称')" prop="name">
|
||||
<el-input v-model="state.ruleForm.name" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8" class="mb20">
|
||||
<el-form-item :label="$t('分组')" prop="groupId">
|
||||
<el-select v-model="state.ruleForm.groupId" filterable clearable>
|
||||
<el-option v-for="item in state.groupList" :key="item.id" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8" class="mb20">
|
||||
<el-form-item :label="$t('描述')" prop="description">
|
||||
<el-input v-model="state.ruleForm.description" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8" class="mb20">
|
||||
<el-form-item :label="$t('数据源类型')" prop="dsType">
|
||||
<g-sys-dict v-model="state.ruleForm.dsType" code="ReportConfigDsTypeEnum" render-as="select" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8" class="mb20" v-if="state.ruleForm.dsType === ReportConfigDsTypeEnum.NUMBER_0">
|
||||
<el-form-item :label="$t('数据源')" prop="dataSource">
|
||||
<el-select v-model="state.ruleForm.dataSource" class="w100">
|
||||
<el-option v-for="item in state.dataSourceList" :key="item.id" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" :style="[state.ruleForm.dsType === ReportConfigDsTypeEnum.NUMBER_0 ? '' : 'display:none;']">
|
||||
<el-form-item :label="$t('脚本语句')" prop="sqlScript">
|
||||
<div ref="sqlScriptMonacoEditorRef" style="width: 100%; height: 300px; border: 1px solid var(--el-border-color)"></div>
|
||||
<el-button ref="parseSqlButtonRef" type="success" plain style="margin-top: 8px" @click="parseSqlClick">{{ $t('解析Sql') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8" class="mb20" v-if="state.ruleForm.dsType === ReportConfigDsTypeEnum.NUMBER_1">
|
||||
<el-form-item :label="$t('接口地址')" prop="apiUrl">
|
||||
<el-input v-model="state.ruleForm.apiUrl" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8" class="mb20" v-if="state.ruleForm.dsType === ReportConfigDsTypeEnum.NUMBER_1">
|
||||
<el-form-item :label="$t('接口请求方式')" prop="apiHttpMethod">
|
||||
<el-select v-model="state.ruleForm.apiHttpMethod" class="w100">
|
||||
<el-option key="Get" label="Get" value="Get" />
|
||||
<el-option key="Post" label="Post" value="Post" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" :style="[state.ruleForm.dsType === ReportConfigDsTypeEnum.NUMBER_1 ? '' : 'display:none;']">
|
||||
<el-form-item :label="$t('接口参数')" prop="apiParams">
|
||||
<div ref="apiParamsMonacoEditorRef" style="width: 100%; height: 300px; border: 1px solid var(--el-border-color)"></div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-tabs v-model="state.activeName" class="report-config-tab">
|
||||
<el-tab-pane :label="$t('字段')" name="field">
|
||||
<vxe-grid ref="vFieldGrid" v-bind="fieldConfig.gridOptions" :data="state.fieldListData">
|
||||
<template #toolbar_buttons>
|
||||
<el-space>
|
||||
<el-button type="primary" size="small" icon="ele-Plus" @click="() => add(vFieldGrid!, beforeAddField)">{{ $t('新增') }}</el-button>
|
||||
<el-button size="small" @click="() => insert(vFieldGrid!)">{{ $t('插入') }}</el-button>
|
||||
<el-button type="danger" size="small" icon="ele-Minus" plain @click="() => remove(vFieldGrid!)">{{ $t('删除') }}</el-button>
|
||||
</el-space>
|
||||
</template>
|
||||
<template #toolbar_tools> </template>
|
||||
<template #row_isSummary="{ row }">
|
||||
{{ row.isSummary ? '√' : '' }}
|
||||
</template>
|
||||
<template #row_visible="{ row }">
|
||||
{{ row.visible ? '√' : '' }}
|
||||
</template>
|
||||
</vxe-grid>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane :label="$t('参数')" name="param">
|
||||
<div style="display: flex; height: 100%">
|
||||
<vxe-grid ref="vParamGrid" style="flex: 1" v-bind="paramConfig.gridOptions" :data="state.paramListData">
|
||||
<template #toolbar_buttons>
|
||||
<el-space>
|
||||
<el-button type="primary" size="small" icon="ele-Plus" @click="() => add(vParamGrid!)">{{ $t('新增') }}</el-button>
|
||||
<el-button size="small" @click="() => insert(vParamGrid!)">{{ $t('插入') }}</el-button>
|
||||
<el-button type="danger" size="small" icon="ele-Minus" plain @click="() => remove(vParamGrid!)">{{ $t('删除') }}</el-button>
|
||||
</el-space>
|
||||
</template>
|
||||
<template #toolbar_tools> </template>
|
||||
</vxe-grid>
|
||||
<el-card style="margin-left: 4px" :header="$t('内置参数')" headerClass="sys-report-config-param-build-in-card-header">
|
||||
<el-row style="width: 240px" v-for="(item, index) in buildInParams" :key="index">
|
||||
<el-col :span="11">{{ item.name }}</el-col>
|
||||
<el-col :span="13">{{ item.description }}</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button icon="ele-CircleCloseFilled" @click="cancel">{{ $t('取 消') }}</el-button>
|
||||
<el-button type="primary" icon="ele-CircleCheckFilled" @click="submit">{{ $t('确 定') }}</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts" name="sysReportConfigEditForm">
|
||||
import { computed, onMounted, reactive, ref } from 'vue';
|
||||
import { ElInput, ElMessage } from 'element-plus';
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { ReportConfigDsTypeEnum, ReportDataSourceOutput, SysReportField, SysReportGroup, SysReportParam, UpdateReportConfigInput } from '/@/api-services';
|
||||
import { SysReportConfigApi, SysReportDataSourceApi, SysReportGroupApi } from '/@/api-services/api';
|
||||
import { VxeGrid } from 'vxe-table';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
import * as monaco from 'monaco-editor';
|
||||
import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker';
|
||||
import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
|
||||
import { format } from 'sql-formatter';
|
||||
import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
|
||||
import { sqlSugarDbTypes } from '../inputCtrlType';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const props = defineProps({
|
||||
title: String,
|
||||
});
|
||||
const emits = defineEmits(['handleQuery']);
|
||||
const ruleFormRef = ref();
|
||||
const vFieldGrid = ref<InstanceType<typeof VxeGrid>>();
|
||||
const vParamGrid = ref<InstanceType<typeof VxeGrid>>();
|
||||
const sqlScriptMonacoEditorRef = ref();
|
||||
const apiParamsMonacoEditorRef = ref();
|
||||
const parseSqlButtonRef = ref<InstanceType<typeof ElInput>>();
|
||||
|
||||
// TODO: monaco 封装成组件
|
||||
// 设置 monaco worker
|
||||
self.MonacoEnvironment = {
|
||||
getWorker: function (workerId: string, label: string) {
|
||||
if (label === 'json') {
|
||||
return new jsonWorker();
|
||||
}
|
||||
return new editorWorker();
|
||||
},
|
||||
};
|
||||
|
||||
// 注册 monaco sql 格式化
|
||||
monaco.languages.registerDocumentFormattingEditProvider('sql', {
|
||||
provideDocumentFormattingEdits: (model: monaco.editor.ITextModel): monaco.languages.ProviderResult<monaco.languages.TextEdit[]> => {
|
||||
return [
|
||||
{
|
||||
text: formatSql(model.getValue()),
|
||||
range: model.getFullModelRange(),
|
||||
},
|
||||
];
|
||||
},
|
||||
});
|
||||
|
||||
/** 格式化 Sql */
|
||||
const formatSql = (value: string): string => {
|
||||
return format(value, {
|
||||
tabWidth: 4,
|
||||
useTabs: false,
|
||||
keywordCase: 'upper',
|
||||
dataTypeCase: 'upper',
|
||||
functionCase: 'upper',
|
||||
logicalOperatorNewline: 'before',
|
||||
language: 'transactsql',
|
||||
});
|
||||
};
|
||||
|
||||
// 初始化monacoEditor对象
|
||||
var sqlScriptMonacoEditor: monaco.editor.IStandaloneCodeEditor;
|
||||
const initSqlScriptMonacoEditor = () => {
|
||||
sqlScriptMonacoEditor = monaco.editor.create(sqlScriptMonacoEditorRef.value, {
|
||||
theme: 'vs', // 主题 vs vs-dark hc-black
|
||||
value: '', // 默认显示的值
|
||||
language: 'sql',
|
||||
formatOnPaste: true,
|
||||
wordWrap: 'on', //自动换行,注意大小写
|
||||
wrappingIndent: 'indent',
|
||||
folding: true, // 是否折叠
|
||||
foldingHighlight: true, // 折叠等高线
|
||||
foldingStrategy: 'indentation', // 折叠方式 auto | indentation
|
||||
showFoldingControls: 'always', // 是否一直显示折叠 always | mouSEOver
|
||||
disableLayerHinting: true, // 等宽优化
|
||||
emptySelectionClipboard: false, // 空选择剪切板
|
||||
selectionClipboard: false, // 选择剪切板
|
||||
automaticLayout: true, // 自动布局
|
||||
codeLens: false, // 代码镜头
|
||||
scrollBeyondLastLine: false, // 滚动完最后一行后再滚动一屏幕
|
||||
colorDecorators: true, // 颜色装饰器
|
||||
accessibilitySupport: 'auto', // 辅助功能支持 "auto" | "off" | "on"
|
||||
lineNumbers: 'on', // 行号 取值: "on" | "off" | "relative" | "interval" | function
|
||||
lineNumbersMinChars: 5, // 行号最小字符 number
|
||||
//enableSplitViewResizing: false,
|
||||
readOnly: false, //是否只读 取值 true | false
|
||||
renderLineHighlight: 'none', // 当前行突出显示方式 "all" | "line" | "none" | "gutter"
|
||||
minimap: {
|
||||
// 缩略图
|
||||
size: 'fill',
|
||||
enabled: false,
|
||||
},
|
||||
});
|
||||
|
||||
// 添加按钮
|
||||
sqlScriptMonacoEditor.addOverlayWidget({
|
||||
getId: function () {
|
||||
return 'monaco.editor.neuz.parseSqlButton';
|
||||
},
|
||||
getDomNode: function () {
|
||||
return parseSqlButtonRef.value?.$el;
|
||||
},
|
||||
getPosition: function () {
|
||||
return {
|
||||
preference: monaco.editor.OverlayWidgetPositionPreference.TOP_RIGHT_CORNER,
|
||||
};
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
// 初始化monacoEditor对象
|
||||
var apiParamsMonacoEditor: monaco.editor.IStandaloneCodeEditor;
|
||||
const initApiParamsMonacoEditor = () => {
|
||||
apiParamsMonacoEditor = monaco.editor.create(apiParamsMonacoEditorRef.value, {
|
||||
theme: 'vs', // 主题 vs vs-dark hc-black
|
||||
value: '', // 默认显示的值
|
||||
language: 'json',
|
||||
formatOnPaste: true,
|
||||
wordWrap: 'on', //自动换行,注意大小写
|
||||
wrappingIndent: 'indent',
|
||||
folding: true, // 是否折叠
|
||||
foldingHighlight: true, // 折叠等高线
|
||||
foldingStrategy: 'indentation', // 折叠方式 auto | indentation
|
||||
showFoldingControls: 'always', // 是否一直显示折叠 always | mouSEOver
|
||||
disableLayerHinting: true, // 等宽优化
|
||||
emptySelectionClipboard: false, // 空选择剪切板
|
||||
selectionClipboard: false, // 选择剪切板
|
||||
automaticLayout: true, // 自动布局
|
||||
codeLens: false, // 代码镜头
|
||||
scrollBeyondLastLine: false, // 滚动完最后一行后再滚动一屏幕
|
||||
colorDecorators: true, // 颜色装饰器
|
||||
accessibilitySupport: 'auto', // 辅助功能支持 "auto" | "off" | "on"
|
||||
lineNumbers: 'on', // 行号 取值: "on" | "off" | "relative" | "interval" | function
|
||||
lineNumbersMinChars: 5, // 行号最小字符 number
|
||||
//enableSplitViewResizing: false,
|
||||
readOnly: false, //是否只读 取值 true | false
|
||||
renderLineHighlight: 'none', // 当前行突出显示方式 "all" | "line" | "none" | "gutter"
|
||||
});
|
||||
};
|
||||
|
||||
/** 后端内置参数 */
|
||||
const buildInParams = [
|
||||
{ name: '@curTenantId', description: '当前租户Id' },
|
||||
{ name: '@curUserId', description: '当前用户Id' },
|
||||
];
|
||||
|
||||
const fieldConfig = reactive({
|
||||
gridOptions: useVxeTable<SysReportField>(
|
||||
{
|
||||
id: 'sysReportConfigEditForm_fields',
|
||||
columns: [
|
||||
{ type: 'checkbox', width: 36, fixed: 'left' },
|
||||
{ field: 'fieldName', title: t('字段名'), width: 200, editRender: { name: 'ElInput', props: { size: 'small' } }, dragSort: true },
|
||||
{ field: 'title', title: t('字段标题'), width: 200, editRender: { name: 'ElInput', props: { size: 'small' } } },
|
||||
{ field: 'isSummary', title: t('是否合计'), width: 90, editRender: { name: 'ElSwitch', props: { size: 'small' } }, slots: { default: 'row_isSummary' } },
|
||||
{ field: 'visible', title: t('是否显示'), width: 90, editRender: { name: 'ElSwitch', props: { size: 'small' } }, slots: { default: 'row_visible' } },
|
||||
{ field: 'groupTitle', title: t('分组标题'), width: 200, editRender: { name: 'ElInput', props: { size: 'small' } } },
|
||||
{ field: 'width', title: t('列宽'), width: 80, editRender: { name: 'ElInputNumber', props: { size: 'small', min: 0, controlsPosition: 'right' } } },
|
||||
],
|
||||
},
|
||||
{
|
||||
align: 'left',
|
||||
columnConfig: {
|
||||
width: 130, // 列默认宽度
|
||||
},
|
||||
toolbarConfig: {
|
||||
refresh: false,
|
||||
import: false,
|
||||
export: false,
|
||||
print: false,
|
||||
zoom: false,
|
||||
custom: false,
|
||||
},
|
||||
rowConfig: {
|
||||
drag: true,
|
||||
},
|
||||
editConfig: {
|
||||
trigger: 'click',
|
||||
mode: 'row',
|
||||
// showStatus: true,
|
||||
autoClear: false,
|
||||
},
|
||||
keyboardConfig: {
|
||||
isArrow: true,
|
||||
},
|
||||
editRules: {
|
||||
fieldName: [{ required: true, message: t('字段名不能为空') }],
|
||||
},
|
||||
}
|
||||
),
|
||||
});
|
||||
|
||||
const paramConfig = reactive({
|
||||
gridOptions: useVxeTable<SysReportField>(
|
||||
{
|
||||
id: 'sysReportConfigEditForm_param',
|
||||
columns: [
|
||||
{ type: 'checkbox', width: 36, fixed: 'left' },
|
||||
{ field: 'paramName', title: t('参数名'), editRender: { name: 'ElInput', props: { size: 'small' } } },
|
||||
{ field: 'title', title: t('参数标题'), editRender: { name: 'ElInput', props: { size: 'small' } } },
|
||||
{
|
||||
field: 'inputCtrl',
|
||||
title: t('输入控件类型'),
|
||||
editRender: {
|
||||
name: 'ElSelect',
|
||||
options: sqlSugarDbTypes,
|
||||
props: { size: 'small', filterable: true },
|
||||
},
|
||||
},
|
||||
{ field: 'defaultValue', title: t('默认值'), editRender: { name: 'ElInput', props: { size: 'small' } } },
|
||||
],
|
||||
},
|
||||
{
|
||||
align: 'left',
|
||||
columnConfig: {
|
||||
width: 130, // 列默认宽度
|
||||
},
|
||||
toolbarConfig: {
|
||||
refresh: false,
|
||||
import: false,
|
||||
export: false,
|
||||
print: false,
|
||||
zoom: false,
|
||||
custom: false,
|
||||
},
|
||||
editConfig: {
|
||||
trigger: 'click',
|
||||
mode: 'row',
|
||||
// showStatus: true,
|
||||
autoClear: false,
|
||||
},
|
||||
keyboardConfig: {
|
||||
isArrow: true,
|
||||
},
|
||||
editRules: {
|
||||
paramName: [{ required: true, message: t('参数名不能为空') }],
|
||||
title: [{ required: true, message: t('参数标题不能为空') }],
|
||||
inputCtrl: [{ required: true, message: t('输入控件类型不能为空') }],
|
||||
},
|
||||
}
|
||||
),
|
||||
});
|
||||
|
||||
const state = reactive({
|
||||
isShowDialog: false,
|
||||
ruleForm: {} as UpdateReportConfigInput,
|
||||
activeName: 'field',
|
||||
/** 字段列表数据 */
|
||||
fieldListData: [] as SysReportField[],
|
||||
/** 参数列表数据 */
|
||||
paramListData: [] as SysReportParam[],
|
||||
/** 数据源列表数据 */
|
||||
dataSourceList: [] as ReportDataSourceOutput[],
|
||||
/** 分组列表数据 */
|
||||
groupList: [] as SysReportGroup[],
|
||||
});
|
||||
|
||||
const rules = computed(() => {
|
||||
const data = {
|
||||
name: [{ required: true, message: t('名称不能为空') }],
|
||||
dsType: [{ required: true, message: t('数据源类型不能为空') }],
|
||||
} as any;
|
||||
|
||||
if (state.ruleForm.dsType == ReportConfigDsTypeEnum.NUMBER_0) {
|
||||
data.dataSource = [{ required: true, message: t('数据源不能为空') }];
|
||||
} else {
|
||||
data.apiUrl = [{ required: true, message: t('接口地址不能为空') }];
|
||||
data.apiHttpMethod = [{ required: true, message: t('接口请求方式不能为空') }];
|
||||
}
|
||||
|
||||
return data;
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
getAPI(SysReportDataSourceApi)
|
||||
.apiSysReportDataSourceGetDataSourceListGet()
|
||||
.then((result) => {
|
||||
if (result.data.type !== 'success') {
|
||||
return;
|
||||
}
|
||||
|
||||
state.dataSourceList = result.data.result!;
|
||||
});
|
||||
getAPI(SysReportGroupApi)
|
||||
.apiSysReportGroupGetListGet()
|
||||
.then((res) => {
|
||||
state.groupList = res.data.result!;
|
||||
});
|
||||
});
|
||||
|
||||
// 打开弹窗
|
||||
const openDialog = (row: any) => {
|
||||
state.ruleForm = JSON.parse(JSON.stringify(row));
|
||||
|
||||
state.fieldListData = state.ruleForm.fields ? JSON.parse(state.ruleForm.fields) : [];
|
||||
state.paramListData = state.ruleForm.params ? JSON.parse(state.ruleForm.params) : [];
|
||||
|
||||
state.isShowDialog = true;
|
||||
ruleFormRef.value?.resetFields();
|
||||
|
||||
const defaultSqlValue = `-- SELECT * FROM xxx WHERE number = @number AND createTime >= @time AND tenantId=@curTenantId
|
||||
-- sp_name`;
|
||||
|
||||
// 延迟拿值防止取不到
|
||||
setTimeout(() => {
|
||||
if (sqlScriptMonacoEditor == null || sqlScriptMonacoEditor == undefined) initSqlScriptMonacoEditor();
|
||||
sqlScriptMonacoEditor!.setValue(state.ruleForm.sqlScript == undefined || state.ruleForm.sqlScript == null || state.ruleForm.sqlScript == '' ? defaultSqlValue : state.ruleForm.sqlScript);
|
||||
|
||||
if (apiParamsMonacoEditor == null || apiParamsMonacoEditor == undefined) initApiParamsMonacoEditor();
|
||||
apiParamsMonacoEditor!.setValue(state.ruleForm.apiParams ?? '');
|
||||
}, 100);
|
||||
};
|
||||
|
||||
// 关闭弹窗
|
||||
const closeDialog = () => {
|
||||
emits('handleQuery');
|
||||
state.isShowDialog = false;
|
||||
};
|
||||
|
||||
// 取消
|
||||
const cancel = () => {
|
||||
state.isShowDialog = false;
|
||||
};
|
||||
|
||||
// 提交
|
||||
const submit = () => {
|
||||
ruleFormRef.value.validate(async (valid: boolean) => {
|
||||
if (!valid) return;
|
||||
|
||||
// 构造提交数据
|
||||
const fieldFullData = vFieldGrid.value!.getFullData();
|
||||
const paramFullData = vParamGrid.value!.getFullData();
|
||||
const record = state.ruleForm;
|
||||
record.sqlScript = sqlScriptMonacoEditor.getValue();
|
||||
record.apiParams = apiParamsMonacoEditor.getValue();
|
||||
record.fields = JSON.stringify(fieldFullData);
|
||||
record.params = JSON.stringify(paramFullData);
|
||||
|
||||
if (state.ruleForm.id != undefined && state.ruleForm.id > 0) {
|
||||
await getAPI(SysReportConfigApi).apiSysReportConfigUpdatePost(record);
|
||||
} else {
|
||||
await getAPI(SysReportConfigApi).apiSysReportConfigAddPost(record);
|
||||
}
|
||||
closeDialog();
|
||||
});
|
||||
};
|
||||
|
||||
/** 在新增字段前执行 */
|
||||
const beforeAddField = (row: SysReportField): Promise<void> => {
|
||||
row.isSummary = false;
|
||||
row.visible = true;
|
||||
row.width = 0;
|
||||
|
||||
return Promise.resolve();
|
||||
};
|
||||
|
||||
/** 解析SQL */
|
||||
const parseSqlClick = () => {
|
||||
const paramFullData = vParamGrid.value!.getFullData();
|
||||
const execParams: Record<string, string> = {};
|
||||
for (const item of paramFullData) {
|
||||
if (item.paramName) {
|
||||
execParams[item.paramName] = '';
|
||||
}
|
||||
}
|
||||
|
||||
return getAPI(SysReportConfigApi)
|
||||
.apiSysReportConfigParseSqlPost({ dataSource: state.ruleForm.dataSource, sqlScript: sqlScriptMonacoEditor.getValue(), execParams: execParams })
|
||||
.then((res) => {
|
||||
ElMessage.success('解析成功');
|
||||
|
||||
const fieldList = vFieldGrid.value!.getFullData();
|
||||
const fieldNames = res.data.result?.fieldNames ?? [];
|
||||
|
||||
fieldNames.forEach((fieldName: string) => {
|
||||
if (fieldList.some((field) => field.fieldName === fieldName)) return;
|
||||
|
||||
const field: SysReportField = { fieldName: fieldName, isSummary: false, visible: true, width: 0 };
|
||||
vFieldGrid.value!.insertAt(field, -1);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/** 新增行 */
|
||||
const add = async (grid: InstanceType<typeof VxeGrid>, beforeAdd: ((row: any) => Promise<void>) | undefined = undefined): Promise<void> => {
|
||||
try {
|
||||
const newRow = {};
|
||||
beforeAdd && (await beforeAdd(newRow));
|
||||
|
||||
const { row } = await grid.insertAt(newRow, -1);
|
||||
await grid.setEditRow(row, true);
|
||||
} catch (err: any) {
|
||||
console.log(err);
|
||||
ElMessage.error(err.message || err);
|
||||
}
|
||||
};
|
||||
|
||||
/** 插入行 */
|
||||
const insert = async (grid: InstanceType<typeof VxeGrid>): Promise<void> => {
|
||||
try {
|
||||
const newRow = {};
|
||||
|
||||
const curRow = grid.getCurrentRecord();
|
||||
const { row } = await grid.insertAt(newRow, curRow);
|
||||
await grid.setEditRow(row, true);
|
||||
} catch (err: any) {
|
||||
console.log(err);
|
||||
ElMessage.error(err.message || err);
|
||||
}
|
||||
};
|
||||
|
||||
/** 删除行 */
|
||||
const remove = async (grid: InstanceType<typeof VxeGrid>): Promise<void> => {
|
||||
try {
|
||||
let checkedRows = grid.getCheckboxRecords();
|
||||
if (checkedRows === null || checkedRows.length === 0) {
|
||||
if (checkedRows === null) {
|
||||
checkedRows = [];
|
||||
}
|
||||
const curRow = grid.getCurrentRecord();
|
||||
if (curRow !== null) checkedRows.push(curRow);
|
||||
}
|
||||
|
||||
if (!checkedRows || checkedRows.length === 0) return;
|
||||
|
||||
await Promise.all(
|
||||
checkedRows.map(async (row: any): Promise<void> => {
|
||||
await grid.remove(row);
|
||||
})
|
||||
);
|
||||
|
||||
await grid.clearCheckboxRow();
|
||||
await grid.clearCurrentRow();
|
||||
} catch (err: any) {
|
||||
console.log(err);
|
||||
ElMessage.error(err.message || err);
|
||||
}
|
||||
};
|
||||
|
||||
// 导出对象
|
||||
defineExpose({ openDialog });
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
:deep(.el-dialog__body) {
|
||||
height: calc(100vh - 18px) !important;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
:deep(.el-tabs) {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
|
||||
.el-tabs__content {
|
||||
flex: 1;
|
||||
|
||||
.el-tab-pane {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.report-config-tab {
|
||||
flex: 1;
|
||||
}
|
||||
</style>
|
||||
<style lang="scss">
|
||||
.sys-report-config-param-build-in-card-header {
|
||||
padding: 8px;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,81 @@
|
||||
<template>
|
||||
<el-dialog v-model="state.isShowDialog" draggable :close-on-click-modal="false" width="600px">
|
||||
<template #header>
|
||||
<div style="color: #fff">
|
||||
<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>
|
||||
<span> {{ props.title }} </span>
|
||||
</div>
|
||||
</template>
|
||||
<el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto">
|
||||
<el-row :gutter="10">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item :label="$t('编码')" prop="number" :rules="[{ required: true, message: $t('名称不能为空'), trigger: 'blur' }]">
|
||||
<el-input v-model="state.ruleForm.number" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item :label="$t('名称')" prop="name" :rules="[{ required: true, message: $t('名称不能为空'), trigger: 'blur' }]">
|
||||
<el-input v-model="state.ruleForm.name" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button icon="ele-CircleCloseFilled" @click="cancel">{{ $t('取 消') }}</el-button>
|
||||
<el-button type="primary" icon="ele-CircleCheckFilled" @click="submit">{{ $t('确 定') }}</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts" name="sysReportGroupEditForm">
|
||||
import { reactive, ref } from 'vue';
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { UpdateReportGroupInput } from '/@/api-services';
|
||||
import { SysReportGroupApi } from '/@/api-services/api';
|
||||
|
||||
const props = defineProps({
|
||||
title: String,
|
||||
});
|
||||
const emits = defineEmits(['handleQuery']);
|
||||
const ruleFormRef = ref();
|
||||
const state = reactive({
|
||||
isShowDialog: false,
|
||||
ruleForm: {} as UpdateReportGroupInput,
|
||||
});
|
||||
|
||||
// 打开弹窗
|
||||
const openDialog = (row: any) => {
|
||||
state.ruleForm = JSON.parse(JSON.stringify(row));
|
||||
state.isShowDialog = true;
|
||||
ruleFormRef.value?.resetFields();
|
||||
};
|
||||
|
||||
// 关闭弹窗
|
||||
const closeDialog = () => {
|
||||
emits('handleQuery');
|
||||
state.isShowDialog = false;
|
||||
};
|
||||
|
||||
// 取消
|
||||
const cancel = () => {
|
||||
state.isShowDialog = false;
|
||||
};
|
||||
|
||||
// 提交
|
||||
const submit = () => {
|
||||
ruleFormRef.value.validate(async (valid: boolean) => {
|
||||
if (!valid) return;
|
||||
if (state.ruleForm.id != undefined && state.ruleForm.id > 0) {
|
||||
await getAPI(SysReportGroupApi).apiSysReportGroupUpdatePost(state.ruleForm);
|
||||
} else {
|
||||
await getAPI(SysReportGroupApi).apiSysReportGroupAddPost(state.ruleForm);
|
||||
}
|
||||
closeDialog();
|
||||
});
|
||||
};
|
||||
|
||||
// 导出对象
|
||||
defineExpose({ openDialog });
|
||||
</script>
|
||||
@ -0,0 +1,170 @@
|
||||
<template>
|
||||
<div class="group-panel" v-loading="state.isLoading">
|
||||
<el-button-group class="group-panel-buttonGroup">
|
||||
<el-button icon="el-icon-circle-plus-outline" size="small" @click="createFormShow">{{ $t('新增分组') }}</el-button>
|
||||
<el-dropdown split-button @command="handleCommand" size="small" @click="editFormShow">
|
||||
{{ $t('编辑分组') }}
|
||||
<template v-slot:dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item command="del" :icon="Minus">{{ $t('删除分组') }}</el-dropdown-item>
|
||||
<el-dropdown-item command="refresh" :icon="RefreshRight">{{ $t('刷新') }}</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
</el-button-group>
|
||||
<el-card :loading="true" class="group-panel-tree" shadow="never">
|
||||
<el-scrollbar>
|
||||
<div v-if="state.groupTree">
|
||||
<el-tree
|
||||
ref="groupTree"
|
||||
:data="state.groupTree"
|
||||
:props="state.defaultProps"
|
||||
:default-expand-all="true"
|
||||
:expand-on-click-node="false"
|
||||
:highlight-current="true"
|
||||
@node-click="(group: SysReportGroup) => emit('nodeClick', group)"
|
||||
/>
|
||||
</div>
|
||||
<div v-else>
|
||||
<el-empty />
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</el-card>
|
||||
<EditReportGroup ref="editReportGroup" :title="state.title" @handleQuery="handleQuery"></EditReportGroup>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts" name="sysReportGroup">
|
||||
import { onMounted, reactive, ref } from 'vue';
|
||||
import EditReportGroup from './editReportGroup.vue';
|
||||
import { Minus, RefreshRight } from '@element-plus/icons-vue';
|
||||
import { ElMessage, ElMessageBox, ElTree } from 'element-plus';
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { SysReportGroup, SysReportGroupApi } from '/@/api-services';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
// 定义子组件向父组件传值/事件
|
||||
const emit = defineEmits(['nodeClick']);
|
||||
|
||||
const groupTree = ref<InstanceType<typeof ElTree>>();
|
||||
const editReportGroup = ref<InstanceType<typeof EditReportGroup>>();
|
||||
|
||||
const state = reactive({
|
||||
/** 是否加载中 */
|
||||
isLoading: false,
|
||||
title: '',
|
||||
groupTree: [],
|
||||
defaultProps: {
|
||||
children: 'children',
|
||||
label: 'label',
|
||||
},
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
getGroupTree();
|
||||
});
|
||||
|
||||
const getGroupTree = () => {
|
||||
state.isLoading = true;
|
||||
getAPI(SysReportGroupApi)
|
||||
.apiSysReportGroupGetListGet()
|
||||
.then((res) => {
|
||||
getTree(res.data.result ?? []);
|
||||
let rootGroup = [{ id: 0, label: t('全部'), value: 0, children: [] }];
|
||||
rootGroup[0].children = res.data.result as [];
|
||||
state.groupTree = rootGroup as [];
|
||||
})
|
||||
.finally(() => {
|
||||
state.isLoading = false;
|
||||
});
|
||||
};
|
||||
|
||||
const getTree = (tree: SysReportGroup[]): [] => {
|
||||
tree.forEach((r: any) => {
|
||||
r.label = `${r.number}[${r.name}]`;
|
||||
r.value = r.id;
|
||||
});
|
||||
return [];
|
||||
};
|
||||
|
||||
const handleCommand = (cmd: string) => {
|
||||
switch (cmd) {
|
||||
//刷新
|
||||
case 'refresh':
|
||||
getGroupTree();
|
||||
break;
|
||||
//删除分组
|
||||
case 'del':
|
||||
const currData = groupTree.value!.getCurrentNode();
|
||||
if (currData) {
|
||||
reportGroupDelete(currData.id, currData.label);
|
||||
}
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
const createFormShow = () => {
|
||||
state.title = t('新增分组');
|
||||
editReportGroup.value?.openDialog({});
|
||||
};
|
||||
|
||||
const editFormShow = () => {
|
||||
const currData = groupTree.value!.getCurrentNode();
|
||||
if (!currData) {
|
||||
ElMessage.error(t('请选择分组后编辑'));
|
||||
return;
|
||||
}
|
||||
if (currData.id == 0) {
|
||||
ElMessage.error(t('请选择有效的分组节点'));
|
||||
return;
|
||||
}
|
||||
state.title = t('编辑分组');
|
||||
editReportGroup.value?.openDialog(currData);
|
||||
};
|
||||
|
||||
const reportGroupDelete = (recordId: number, label: string) => {
|
||||
if (recordId == 0) {
|
||||
ElMessage.error(t('请选择有效的分组节点'));
|
||||
return;
|
||||
}
|
||||
|
||||
ElMessageBox.confirm(t('确认删除?', { label: label }), t('提示'), {
|
||||
confirmButtonText: t('确定'),
|
||||
cancelButtonText: t('取消'),
|
||||
type: 'warning',
|
||||
}).then(() => {
|
||||
getAPI(SysReportGroupApi)
|
||||
.apiSysReportGroupDeletePost({ id: recordId })
|
||||
.then((res) => {
|
||||
ElMessage.success(t('删除成功'));
|
||||
getGroupTree();
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const handleQuery = () => {
|
||||
getGroupTree();
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.group-panel {
|
||||
background-color: var(--el-fill-color-blank);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
|
||||
.group-panel-buttonGroup {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.group-panel-tree {
|
||||
flex: 1;
|
||||
|
||||
:deep(.el-card__body) {
|
||||
padding: 0px;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
230
Web/src/views/system/reportConfig/component/reportView.vue
Normal file
230
Web/src/views/system/reportConfig/component/reportView.vue
Normal file
@ -0,0 +1,230 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="full-table" shadow="hover">
|
||||
<vxe-grid ref="xGrid" v-bind="options" :loading="state.isLoading">
|
||||
<template #top>
|
||||
<TableSearch ref="tableSearch" :search="state.search" @search="onSearch" v-model="state.queryParams" />
|
||||
</template>
|
||||
<template #toolbar_buttons>
|
||||
<!-- <el-button @click="handleExport"> {{ $t('导出') }} </el-button> -->
|
||||
</template>
|
||||
</vxe-grid>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts" name="sysReportView">
|
||||
import { onBeforeMount, reactive, ref, watch } from 'vue';
|
||||
import { VxeGridInstance, VxeGridPropTypes, VxeTableDefines, VxeTablePropTypes } from 'vxe-table';
|
||||
import TableSearch from '/@/components/table/search.vue';
|
||||
import { SysReportConfigApi } from '/@/api-services/api';
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { downloadByData, getFileName } from '/@/utils/download';
|
||||
import { ElMessageBox } from 'element-plus';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { useRoute } from 'vue-router';
|
||||
import { SysReportField, SysReportLayoutConfig, SysReportParam } from '/@/api-services';
|
||||
import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const xGrid = ref<VxeGridInstance>();
|
||||
const tableSearch = ref<InstanceType<typeof TableSearch>>();
|
||||
|
||||
// 定义变量内容
|
||||
const route = useRoute();
|
||||
const reportConfigId: string = route.params.reportConfigId as string;
|
||||
|
||||
const state = reactive({
|
||||
search: [] as Array<TableSearchType>,
|
||||
/** 查询参数 */
|
||||
queryParams: {} as EmptyObjectType,
|
||||
/** 是否加载中 */
|
||||
isLoading: false,
|
||||
/** 布局配置 */
|
||||
layoutConfig: {} as SysReportLayoutConfig,
|
||||
/** 汇总信息 */
|
||||
totalInfo: {},
|
||||
});
|
||||
|
||||
/** 监听 totalInfo 改变 */
|
||||
watch(
|
||||
() => state.totalInfo,
|
||||
(val) => {
|
||||
options.showFooter = Object.keys(state.totalInfo).length > 0;
|
||||
}
|
||||
);
|
||||
|
||||
onBeforeMount(() => {
|
||||
// 获取布局配置
|
||||
getAPI(SysReportConfigApi)
|
||||
.apiSysReportConfigGetLayoutConfigGet(Number(reportConfigId))
|
||||
.then((res) => {
|
||||
state.layoutConfig = res.data.result!;
|
||||
|
||||
if (state.layoutConfig.fields) {
|
||||
options.columns!.push({ type: 'seq', width: 50 });
|
||||
|
||||
const columns = state.layoutConfig.fields.map((r) => {
|
||||
return convertSysReportFieldToVxeColumn(r);
|
||||
});
|
||||
|
||||
// 分组Id
|
||||
let groupIndex = 0;
|
||||
const newColumn: VxeTableDefines.ColumnOptions[] = [];
|
||||
state.layoutConfig.fields!.forEach((r) => {
|
||||
const column = columns.find((c) => c.field === r.fieldName)!;
|
||||
// 没有分组
|
||||
if (!r.groupTitle) {
|
||||
newColumn.push(column);
|
||||
return;
|
||||
}
|
||||
|
||||
// 有分组
|
||||
let groupColumn = newColumn.find((c) => c.field?.startsWith('group') && c.title === r.groupTitle);
|
||||
if (!groupColumn) {
|
||||
groupColumn = { field: 'group' + groupIndex++, title: r.groupTitle, children: [] };
|
||||
newColumn.push(groupColumn);
|
||||
}
|
||||
|
||||
// 添加到分组中
|
||||
groupColumn.children!.push(column);
|
||||
});
|
||||
|
||||
options.columns!.push(...newColumn);
|
||||
}
|
||||
|
||||
if (state.layoutConfig.params) {
|
||||
state.search = state.layoutConfig.params!.map((r) => {
|
||||
return convertSysReportParamToTableSearchType(r);
|
||||
});
|
||||
|
||||
// 默认值处理
|
||||
state.layoutConfig.params!.forEach((r) => {
|
||||
if (r.defaultValue) state.queryParams[r.paramName!] = r.defaultValue;
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/** 表尾数据获取函数 */
|
||||
const footerMethod: VxeTablePropTypes.FooterMethod<any> = ({ columns }) => {
|
||||
return [
|
||||
columns!.map((column, columnIndex) => {
|
||||
if (columnIndex === 0) return t('合计');
|
||||
if (state.totalInfo && (state.totalInfo as any)[column.field] !== undefined) return (state.totalInfo as any)[column.field];
|
||||
return '';
|
||||
}),
|
||||
];
|
||||
};
|
||||
|
||||
// 表格参数配置
|
||||
const options = useVxeTable<any>(
|
||||
{
|
||||
id: `sysReportView_${reportConfigId}`,
|
||||
name: '报表查看',
|
||||
columns: [],
|
||||
},
|
||||
// vxeGrid配置参数(此处可覆写任何参数),参考vxe-table官方文档
|
||||
{
|
||||
// 代理配置
|
||||
proxyConfig: { autoLoad: true, ajax: { query: ({ page, sort }) => handleQueryApi(page, sort) } },
|
||||
columnConfig: {
|
||||
width: 120, // 列默认宽度
|
||||
},
|
||||
pagerConfig: { enabled: false },
|
||||
showFooter: false,
|
||||
footerMethod: footerMethod,
|
||||
// 布局调整,与标准的区别是,Top 放在顶部,标准是放在 Table 前面
|
||||
layouts: ['Top', 'Form', 'Toolbar', 'Table', 'Bottom', 'Pager'],
|
||||
}
|
||||
);
|
||||
|
||||
// 查询api
|
||||
const handleQueryApi = async (page: VxeGridPropTypes.ProxyAjaxQueryPageParams, sort: VxeGridPropTypes.ProxyAjaxQuerySortCheckedParams) => {
|
||||
return getAPI(SysReportConfigApi)
|
||||
.apiSysReportConfigExecuteSqlScriptPost({ id: Number(reportConfigId), execParams: state.queryParams })
|
||||
.then((res) => {
|
||||
state.totalInfo = res.data.extras;
|
||||
return res;
|
||||
});
|
||||
};
|
||||
|
||||
// 查询操作
|
||||
const handleQuery = async (reset = false) => {
|
||||
options.loading = true;
|
||||
reset ? await xGrid.value?.commitProxy('reload') : await xGrid.value?.commitProxy('query');
|
||||
options.loading = false;
|
||||
};
|
||||
|
||||
/** 搜索点击时表单回调 */
|
||||
const onSearch = (data: EmptyObjectType) => {
|
||||
handleQuery(true);
|
||||
};
|
||||
|
||||
/**导出 */
|
||||
const handleExport = () => {
|
||||
ElMessageBox.confirm(t('确定导出?'), t('提示'), {
|
||||
confirmButtonText: t('确定'),
|
||||
cancelButtonText: t('取消'),
|
||||
type: 'warning',
|
||||
}).then(() => {
|
||||
// TODO: 导出实现
|
||||
// getAPI(SysReportConfigApi)
|
||||
// .apiSysReportConfigExportPost(Object.assign(queryParamHandle(state.queryParam)), { responseType: 'blob' })
|
||||
// .then((res) => {
|
||||
// var fileName = getFileName(res.headers);
|
||||
// downloadByData(res.data as any, fileName);
|
||||
// });
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* SysReportField 转换成 ColumnOptions
|
||||
* @param column 报表字段
|
||||
*/
|
||||
const convertSysReportFieldToVxeColumn = (column: SysReportField): VxeTableDefines.ColumnOptions => {
|
||||
return {
|
||||
field: column.fieldName,
|
||||
title: column.title ?? column.fieldName,
|
||||
width: column.width ? column.width : undefined,
|
||||
visible: column.visible,
|
||||
} as VxeTableDefines.ColumnOptions;
|
||||
};
|
||||
|
||||
/**
|
||||
* SysReportParam 转换成 TableSearchType
|
||||
* @param column 报表参数
|
||||
* @returns
|
||||
*/
|
||||
const convertSysReportParamToTableSearchType = (column: SysReportParam) => {
|
||||
// 转换控件类型
|
||||
let type: string = '';
|
||||
switch (column.inputCtrl as unknown as string) {
|
||||
case 'Input':
|
||||
type = 'input';
|
||||
break;
|
||||
case 'Date':
|
||||
type = 'date';
|
||||
break;
|
||||
case 'Select':
|
||||
type = 'select';
|
||||
break;
|
||||
default:
|
||||
console.warn(`控件类型:${column.inputCtrl} 未支持,默认使用 input 控件`);
|
||||
type = 'input';
|
||||
break;
|
||||
}
|
||||
// // 处理下拉选项
|
||||
// let options: SelectOptionType[] = [];
|
||||
// if (column.options && column.options.length > 0) {
|
||||
// options = column.options.map((o) => ({ label: o.title!, value: o.value! }));
|
||||
// }
|
||||
return {
|
||||
label: column.title,
|
||||
prop: column.paramName,
|
||||
type: type,
|
||||
// options: options,
|
||||
} as TableSearchType;
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="scss"></style>
|
||||
245
Web/src/views/system/reportConfig/index.vue
Normal file
245
Web/src/views/system/reportConfig/index.vue
Normal file
@ -0,0 +1,245 @@
|
||||
<template>
|
||||
<div>
|
||||
<splitpanes class="default-theme" style="height: 100%">
|
||||
<pane size="16" class="pane-left">
|
||||
<ReportGroupPanel @nodeClick="handleGroupNodeClick" />
|
||||
</pane>
|
||||
<pane size="84" class="pane-right">
|
||||
<el-card shadow="hover" :body-style="{ padding: '5px 5px 0 5px', display: 'flex', width: '100%', height: '100%', alignItems: 'start' }">
|
||||
<el-form :model="state.queryParams" ref="queryForm" :show-message="false" :inlineMessage="true" label-width="auto" style="flex: 1 1 0%">
|
||||
<el-row :gutter="10">
|
||||
<el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
|
||||
<el-form-item :label="$t('名称')" prop="name">
|
||||
<el-input v-model="state.queryParams.name" clearable @keyup.enter.native="handleQuery(true)" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<el-divider style="height: calc(100% - 5px); margin: 0 10px" direction="vertical" />
|
||||
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-button-group>
|
||||
<el-button type="primary" icon="ele-Search" @click="handleQuery(true)" v-auth="'sysReportConfig/page'" :loading="options.loading"> {{ $t('查询') }} </el-button>
|
||||
<el-button icon="ele-Refresh" @click="resetQuery" :loading="options.loading"> {{ $t('重置') }} </el-button>
|
||||
</el-button-group>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
|
||||
<vxe-grid ref="xGrid" class="xGrid-style" v-bind="options" v-on="gridEvents">
|
||||
<template #toolbar_buttons>
|
||||
<el-button type="primary" icon="ele-Plus" @click="handleAdd" v-auth="'sysReportConfig/add'"> {{ $t('新增') }} </el-button>
|
||||
</template>
|
||||
<template #toolbar_tools> </template>
|
||||
<template #empty>
|
||||
<el-empty :image-size="200" />
|
||||
</template>
|
||||
<template #row_dsType="{ row }">
|
||||
<g-sys-dict v-model="row.dsType" code="ReportConfigDsTypeEnum" />
|
||||
</template>
|
||||
<template #row_dataSource="{ row }">
|
||||
<span> {{ state.dataSourceList.find((r) => r.id == row.dataSource)?.name }}</span>
|
||||
</template>
|
||||
<template #row_record="{ row }">
|
||||
<ModifyRecord :data="row" />
|
||||
</template>
|
||||
<template #row_buttons="{ row }">
|
||||
<el-tooltip :content="$t('编辑')" placement="top">
|
||||
<el-button icon="ele-Edit" size="small" text type="primary" @click="handleEdit(row)" v-auth="'sysReportConfig/update'" :disabled="row.status === 1" />
|
||||
</el-tooltip>
|
||||
<el-tooltip :content="$t('删除')" placement="top">
|
||||
<el-button icon="ele-Delete" size="small" text type="danger" @click="handleDelete(row)" v-auth="'sysReportConfig/delete'" :disabled="row.status === 1" />
|
||||
</el-tooltip>
|
||||
<el-button icon="ele-CopyDocument" size="small" text type="primary" @click="copy(row)"> {{ $t('复制') }} </el-button>
|
||||
<el-button icon="ele-ScaleToOriginal" size="small" text type="primary" @click="preview(row)"> {{ $t('预览') }} </el-button>
|
||||
</template>
|
||||
</vxe-grid>
|
||||
</el-card>
|
||||
</pane>
|
||||
</splitpanes>
|
||||
<EditReportConfig ref="editRef" :title="state.title" @handleQuery="handleQuery" />
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts" name="sysReportConfig">
|
||||
import { onMounted, reactive, ref } from 'vue';
|
||||
import { ElMessageBox, ElMessage } from 'element-plus';
|
||||
import { VxeGridInstance, VxeGridListeners, VxeGridPropTypes } from 'vxe-table';
|
||||
import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
|
||||
import { Local } from '/@/utils/storage';
|
||||
import ReportGroupPanel from './component/reportGroupPanel/index.vue';
|
||||
import EditReportConfig from '/@/views/system/reportConfig/component/editReportConfig.vue';
|
||||
import { Splitpanes, Pane } from 'splitpanes';
|
||||
import 'splitpanes/dist/splitpanes.css';
|
||||
import ModifyRecord from '/@/components/table/modifyRecord.vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { PageReportConfigInput, ReportConfigDsTypeEnum, ReportConfigOutput, ReportDataSourceOutput, SysReportConfigApi, SysReportDataSourceApi, SysReportGroup } from '/@/api-services';
|
||||
import { useRouter } from 'vue-router';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
const xGrid = ref<VxeGridInstance>();
|
||||
const editRef = ref<InstanceType<typeof EditReportConfig>>();
|
||||
const state = reactive({
|
||||
queryParams: {
|
||||
name: undefined,
|
||||
} as EmptyObjectType,
|
||||
localPageParam: {
|
||||
pageSize: 50 as number,
|
||||
defaultSort: { field: 'id', order: 'asc', descStr: 'desc' },
|
||||
},
|
||||
title: '',
|
||||
/** 已选择的分组Id */
|
||||
selectedGroupId: 0,
|
||||
/** 数据源列表数据 */
|
||||
dataSourceList: [] as ReportDataSourceOutput[],
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
getAPI(SysReportDataSourceApi)
|
||||
.apiSysReportDataSourceGetDataSourceListGet()
|
||||
.then((result) => {
|
||||
if (result.data.type !== 'success') {
|
||||
return;
|
||||
}
|
||||
|
||||
state.dataSourceList = result.data.result!;
|
||||
});
|
||||
});
|
||||
|
||||
// 本地存储参数
|
||||
const localPageParamKey = 'localPageParam:sysReportConfig';
|
||||
// 表格参数配置
|
||||
const options = useVxeTable<ReportConfigOutput>(
|
||||
{
|
||||
id: 'sysReportConfig',
|
||||
name: '报表数据源',
|
||||
columns: [
|
||||
{ field: 'seq', type: 'seq', title: '序号', width: 60, fixed: 'left' },
|
||||
{ field: 'name', title: '名称', width: 200, showOverflow: 'tooltip' },
|
||||
{ field: 'dsType', title: '数据源类型', width: 100, showOverflow: 'tooltip', slots: { default: 'row_dsType' } },
|
||||
{ field: 'dataSource', title: '数据源', width: 200, showOverflow: 'tooltip', slots: { default: 'row_dataSource' } },
|
||||
{ field: 'groupName', title: '分组名称', width: 150, showOverflow: 'tooltip' },
|
||||
{ field: 'record', title: '修改记录', width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } },
|
||||
{ field: 'buttons', title: '操作', fixed: 'right', width: 200, showOverflow: true, slots: { default: 'row_buttons' } },
|
||||
],
|
||||
},
|
||||
// vxeGrid配置参数(此处可覆写任何参数),参考vxe-table官方文档
|
||||
{
|
||||
// 代理配置
|
||||
proxyConfig: { autoLoad: true, ajax: { query: ({ page, sort }) => handleQueryApi(page, sort) } },
|
||||
// 排序配置
|
||||
sortConfig: { defaultSort: Local.get(localPageParamKey)?.defaultSort || state.localPageParam.defaultSort },
|
||||
// 分页配置
|
||||
pagerConfig: { pageSize: Local.get(localPageParamKey)?.pageSize || state.localPageParam.pageSize },
|
||||
// 工具栏配置
|
||||
toolbarConfig: { export: false, print: false },
|
||||
columnConfig: {
|
||||
width: 120, // 列默认宽度
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
// 页面初始化
|
||||
onMounted(() => {
|
||||
state.localPageParam = Local.get(localPageParamKey) || state.localPageParam;
|
||||
});
|
||||
|
||||
// 查询api
|
||||
const handleQueryApi = async (page: VxeGridPropTypes.ProxyAjaxQueryPageParams, sort: VxeGridPropTypes.ProxyAjaxQuerySortCheckedParams) => {
|
||||
state.queryParams.groupId = state.selectedGroupId;
|
||||
const params = Object.assign(state.queryParams, { page: page.currentPage, pageSize: page.pageSize, field: sort.field, order: sort.order, descStr: 'desc' }) as PageReportConfigInput;
|
||||
return getAPI(SysReportConfigApi).apiSysReportConfigPagePost(params);
|
||||
};
|
||||
|
||||
// 查询操作
|
||||
const handleQuery = async (reset = false) => {
|
||||
options.loading = true;
|
||||
reset ? await xGrid.value?.commitProxy('reload') : await xGrid.value?.commitProxy('query');
|
||||
options.loading = false;
|
||||
};
|
||||
|
||||
// 重置操作
|
||||
const resetQuery = async () => {
|
||||
state.queryParams = {} as any;
|
||||
state.queryParams.groupId = state.selectedGroupId;
|
||||
await xGrid.value?.commitProxy('reload');
|
||||
};
|
||||
|
||||
// 打开新增页面
|
||||
const handleAdd = () => {
|
||||
state.title = t('添加报表数据源');
|
||||
editRef.value?.openDialog({ dsType: ReportConfigDsTypeEnum.NUMBER_0 });
|
||||
};
|
||||
|
||||
// 打开编辑页面
|
||||
const handleEdit = (row: any) => {
|
||||
state.title = t('编辑报表数据源');
|
||||
editRef.value?.openDialog(row);
|
||||
};
|
||||
|
||||
// 删除
|
||||
const handleDelete = (row: any) => {
|
||||
ElMessageBox.confirm(t('确定删除?'), t('提示'), {
|
||||
confirmButtonText: t('确定'),
|
||||
cancelButtonText: t('取消'),
|
||||
type: 'warning',
|
||||
}).then(async () => {
|
||||
await getAPI(SysReportConfigApi).apiSysReportConfigDeletePost({ id: row.id });
|
||||
handleQuery();
|
||||
ElMessage.success(t('删除成功'));
|
||||
});
|
||||
};
|
||||
|
||||
// 表格事件
|
||||
const gridEvents: VxeGridListeners<ReportConfigOutput> = {
|
||||
// 只对 pager-config 配置时有效,分页发生改变时会触发该事件
|
||||
async pageChange({ pageSize }) {
|
||||
state.localPageParam.pageSize = pageSize;
|
||||
Local.set(localPageParamKey, state.localPageParam);
|
||||
},
|
||||
// 当排序条件发生变化时会触发该事件
|
||||
async sortChange({ field, order }) {
|
||||
state.localPageParam.defaultSort = { field: field, order: order!, descStr: 'desc' };
|
||||
Local.set(localPageParamKey, state.localPageParam);
|
||||
},
|
||||
};
|
||||
|
||||
const handleGroupNodeClick = (g: SysReportGroup) => {
|
||||
state.selectedGroupId = g.id!;
|
||||
handleQuery(true);
|
||||
};
|
||||
|
||||
/** 复制 */
|
||||
const copy = (row: any) => {
|
||||
ElMessageBox.confirm(t('确定复制?'), t('提示'), {
|
||||
confirmButtonText: t('确定'),
|
||||
cancelButtonText: t('取消'),
|
||||
type: 'warning',
|
||||
}).then(async () => {
|
||||
await getAPI(SysReportConfigApi).apiSysReportConfigCopyPost({ id: row.id });
|
||||
handleQuery();
|
||||
ElMessage.success(t('复制成功'));
|
||||
});
|
||||
};
|
||||
/** 预览 */
|
||||
const preview = (row: any) => {
|
||||
router.push(`/report/view/${row.id}/${encodeURIComponent(row.name)}`);
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.pane-left {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.pane-right {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
</style>
|
||||
5
Web/src/views/system/reportConfig/inputCtrlType.ts
Normal file
5
Web/src/views/system/reportConfig/inputCtrlType.ts
Normal file
@ -0,0 +1,5 @@
|
||||
export const sqlSugarDbTypes = [
|
||||
{ label: '输入框', value: 'Input' },
|
||||
{ label: '日期选择器', value: 'Date' },
|
||||
{ label: '选择器', value: 'Select' },
|
||||
];
|
||||
@ -0,0 +1,95 @@
|
||||
<template>
|
||||
<el-dialog v-model="state.isShowDialog" draggable :close-on-click-modal="false" width="600px">
|
||||
<template #header>
|
||||
<div style="color: #fff">
|
||||
<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>
|
||||
<span> {{ props.title }} </span>
|
||||
</div>
|
||||
</template>
|
||||
<el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto">
|
||||
<el-row :gutter="10">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item :label="$t('名称')" prop="name" :rules="[{ required: true, message: $t('名称不能为空'), trigger: 'blur' }]">
|
||||
<el-input v-model="state.ruleForm.name" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item :label="$t('数据库类型')" prop="dbType" :rules="[{ required: true, message: $t('数据库类型不能为空'), trigger: 'blur' }]">
|
||||
<el-select v-model="state.ruleForm.dbType">
|
||||
<el-option v-for="item in sqlSugarDbTypes" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item :label="$t('连接字符串')" prop="connectionString">
|
||||
<el-input v-model="state.ruleForm.connectionString" type="textarea" :autosize="{ minRows: 6 }" :placeholder="$t('编辑时置空则不更新值')" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item :label="$t('备注')" prop="memo">
|
||||
<el-input v-model="state.ruleForm.memo" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button icon="ele-CircleCloseFilled" @click="cancel">{{ $t('取 消') }}</el-button>
|
||||
<el-button type="primary" icon="ele-CircleCheckFilled" @click="submit">{{ $t('确 定') }}</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts" name="sysReportDataSourceEditForm">
|
||||
import { reactive, ref } from 'vue';
|
||||
import { ElInput } from 'element-plus';
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { UpdateReportDataSourceInput } from '/@/api-services';
|
||||
import { SysReportDataSourceApi } from '/@/api-services/api';
|
||||
import { sqlSugarDbTypes } from '.././sqlSugarDbType';
|
||||
|
||||
const props = defineProps({
|
||||
title: String,
|
||||
});
|
||||
const emits = defineEmits(['handleQuery']);
|
||||
const ruleFormRef = ref();
|
||||
const state = reactive({
|
||||
isShowDialog: false,
|
||||
ruleForm: {} as UpdateReportDataSourceInput,
|
||||
});
|
||||
|
||||
// 打开弹窗
|
||||
const openDialog = (row: any) => {
|
||||
state.ruleForm = JSON.parse(JSON.stringify(row));
|
||||
state.isShowDialog = true;
|
||||
ruleFormRef.value?.resetFields();
|
||||
};
|
||||
|
||||
// 关闭弹窗
|
||||
const closeDialog = () => {
|
||||
emits('handleQuery');
|
||||
state.isShowDialog = false;
|
||||
};
|
||||
|
||||
// 取消
|
||||
const cancel = () => {
|
||||
state.isShowDialog = false;
|
||||
};
|
||||
|
||||
// 提交
|
||||
const submit = () => {
|
||||
ruleFormRef.value.validate(async (valid: boolean) => {
|
||||
if (!valid) return;
|
||||
if (state.ruleForm.id != undefined && state.ruleForm.id > 0) {
|
||||
await getAPI(SysReportDataSourceApi).apiSysReportDataSourceUpdatePost(state.ruleForm);
|
||||
} else {
|
||||
await getAPI(SysReportDataSourceApi).apiSysReportDataSourceAddPost(state.ruleForm);
|
||||
}
|
||||
closeDialog();
|
||||
});
|
||||
};
|
||||
|
||||
// 导出对象
|
||||
defineExpose({ openDialog });
|
||||
</script>
|
||||
180
Web/src/views/system/reportDataSource/index.vue
Normal file
180
Web/src/views/system/reportDataSource/index.vue
Normal file
@ -0,0 +1,180 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card shadow="hover" :body-style="{ padding: '5px 5px 0 5px', display: 'flex', width: '100%', height: '100%', alignItems: 'start' }">
|
||||
<el-form :model="state.queryParams" ref="queryForm" :show-message="false" :inlineMessage="true" label-width="auto" style="flex: 1 1 0%">
|
||||
<el-row :gutter="10">
|
||||
<el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
|
||||
<el-form-item :label="$t('名称')" prop="name">
|
||||
<el-input v-model="state.queryParams.name" clearable @keyup.enter.native="handleQuery(true)" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<el-divider style="height: calc(100% - 5px); margin: 0 10px" direction="vertical" />
|
||||
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-button-group>
|
||||
<el-button type="primary" icon="ele-Search" @click="handleQuery(true)" v-auth="'sysReportDataSource/page'" :loading="options.loading"> {{ $t('查询') }} </el-button>
|
||||
<el-button icon="ele-Refresh" @click="resetQuery" :loading="options.loading"> {{ $t('重置') }} </el-button>
|
||||
</el-button-group>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
|
||||
<vxe-grid ref="xGrid" class="xGrid-style" v-bind="options" v-on="gridEvents">
|
||||
<template #toolbar_buttons>
|
||||
<el-button type="primary" icon="ele-Plus" @click="handleAdd" v-auth="'sysReportDataSource/add'"> {{ $t('新增') }} </el-button>
|
||||
</template>
|
||||
<template #toolbar_tools> </template>
|
||||
<template #empty>
|
||||
<el-empty :image-size="200" />
|
||||
</template>
|
||||
<template #row_dbType="{ row }">
|
||||
<el-tag> {{ sqlSugarDbTypes.find((r) => r.value == row.dbType)?.label }} </el-tag>
|
||||
</template>
|
||||
<template #row_record="{ row }">
|
||||
<ModifyRecord :data="row" />
|
||||
</template>
|
||||
<template #row_buttons="{ row }">
|
||||
<el-tooltip :content="$t('编辑')" placement="top">
|
||||
<el-button icon="ele-Edit" size="small" text type="primary" @click="handleEdit(row)" v-auth="'sysReportDataSource/update'" :disabled="row.status === 1" />
|
||||
</el-tooltip>
|
||||
<el-tooltip :content="$t('删除')" placement="top">
|
||||
<el-button icon="ele-Delete" size="small" text type="danger" @click="handleDelete(row)" v-auth="'sysReportDataSource/delete'" :disabled="row.status === 1" />
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</vxe-grid>
|
||||
</el-card>
|
||||
<EditReportDataSource ref="editRef" :title="state.title" @handleQuery="handleQuery" />
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts" name="sysReportDataSource">
|
||||
import { onMounted, reactive, ref } from 'vue';
|
||||
import { ElMessageBox, ElMessage } from 'element-plus';
|
||||
import { VxeGridInstance, VxeGridListeners, VxeGridPropTypes } from 'vxe-table';
|
||||
import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
|
||||
import { Local } from '/@/utils/storage';
|
||||
import EditReportDataSource from '/@/views/system/reportDataSource/component/editReportDataSource.vue';
|
||||
import ModifyRecord from '/@/components/table/modifyRecord.vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { PageReportDataSourceInput, SysReportDataSource, SysReportDataSourceApi } from '/@/api-services';
|
||||
import { sqlSugarDbTypes } from './sqlSugarDbType';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const xGrid = ref<VxeGridInstance>();
|
||||
const editRef = ref<InstanceType<typeof EditReportDataSource>>();
|
||||
const state = reactive({
|
||||
queryParams: {
|
||||
name: undefined,
|
||||
},
|
||||
localPageParam: {
|
||||
pageSize: 50 as number,
|
||||
defaultSort: { field: 'id', order: 'asc', descStr: 'desc' },
|
||||
},
|
||||
title: '',
|
||||
});
|
||||
|
||||
// 本地存储参数
|
||||
const localPageParamKey = 'localPageParam:sysReportDataSource';
|
||||
// 表格参数配置
|
||||
const options = useVxeTable<SysReportDataSource>(
|
||||
{
|
||||
id: 'sysReportDataSource',
|
||||
name: '报表数据源',
|
||||
columns: [
|
||||
{ field: 'seq', type: 'seq', title: '序号', width: 60, fixed: 'left' },
|
||||
{ field: 'name', title: '名称', width: 200, showOverflow: 'tooltip' },
|
||||
{ field: 'dbType', title: '数据库类型', width: 100, showOverflow: 'tooltip', slots: { default: 'row_dbType' } },
|
||||
{ field: 'connectionString', title: '连接字符串', width: 400, showOverflow: 'tooltip' },
|
||||
{ field: 'memo', title: '备注', width: 200, showOverflow: 'tooltip' },
|
||||
{ field: 'record', title: '修改记录', width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } },
|
||||
{ field: 'buttons', title: '操作', fixed: 'right', width: 100, showOverflow: true, slots: { default: 'row_buttons' } },
|
||||
],
|
||||
},
|
||||
// vxeGrid配置参数(此处可覆写任何参数),参考vxe-table官方文档
|
||||
{
|
||||
// 代理配置
|
||||
proxyConfig: { autoLoad: true, ajax: { query: ({ page, sort }) => handleQueryApi(page, sort) } },
|
||||
// 排序配置
|
||||
sortConfig: { defaultSort: Local.get(localPageParamKey)?.defaultSort || state.localPageParam.defaultSort },
|
||||
// 分页配置
|
||||
pagerConfig: { pageSize: Local.get(localPageParamKey)?.pageSize || state.localPageParam.pageSize },
|
||||
// 工具栏配置
|
||||
toolbarConfig: { export: false, print: false },
|
||||
columnConfig: {
|
||||
width: 120, // 列默认宽度
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
// 页面初始化
|
||||
onMounted(() => {
|
||||
state.localPageParam = Local.get(localPageParamKey) || state.localPageParam;
|
||||
});
|
||||
|
||||
// 查询api
|
||||
const handleQueryApi = async (page: VxeGridPropTypes.ProxyAjaxQueryPageParams, sort: VxeGridPropTypes.ProxyAjaxQuerySortCheckedParams) => {
|
||||
const params = Object.assign(state.queryParams, { page: page.currentPage, pageSize: page.pageSize, field: sort.field, order: sort.order, descStr: 'desc' }) as PageReportDataSourceInput;
|
||||
return getAPI(SysReportDataSourceApi).apiSysReportDataSourcePagePost(params);
|
||||
};
|
||||
|
||||
// 查询操作
|
||||
const handleQuery = async (reset = false) => {
|
||||
options.loading = true;
|
||||
reset ? await xGrid.value?.commitProxy('reload') : await xGrid.value?.commitProxy('query');
|
||||
options.loading = false;
|
||||
};
|
||||
|
||||
// 重置操作
|
||||
const resetQuery = async () => {
|
||||
state.queryParams = {} as any;
|
||||
await xGrid.value?.commitProxy('reload');
|
||||
};
|
||||
|
||||
// 打开新增页面
|
||||
const handleAdd = () => {
|
||||
state.title = t('添加报表数据源');
|
||||
editRef.value?.openDialog({});
|
||||
};
|
||||
|
||||
// 打开编辑页面
|
||||
const handleEdit = (row: any) => {
|
||||
state.title = t('编辑报表数据源');
|
||||
editRef.value?.openDialog(row);
|
||||
};
|
||||
|
||||
// 删除
|
||||
const handleDelete = (row: any) => {
|
||||
ElMessageBox.confirm(t('确定删除?'), t('提示'), {
|
||||
confirmButtonText: t('确定'),
|
||||
cancelButtonText: t('取消'),
|
||||
type: 'warning',
|
||||
})
|
||||
.then(async () => {
|
||||
await getAPI(SysReportDataSourceApi).apiSysReportDataSourceDeletePost({ id: row.id });
|
||||
handleQuery();
|
||||
ElMessage.success(t('删除成功'));
|
||||
})
|
||||
.catch(() => {});
|
||||
};
|
||||
|
||||
// 表格事件
|
||||
const gridEvents: VxeGridListeners<SysReportDataSource> = {
|
||||
// 只对 pager-config 配置时有效,分页发生改变时会触发该事件
|
||||
async pageChange({ pageSize }) {
|
||||
state.localPageParam.pageSize = pageSize;
|
||||
Local.set(localPageParamKey, state.localPageParam);
|
||||
},
|
||||
// 当排序条件发生变化时会触发该事件
|
||||
async sortChange({ field, order }) {
|
||||
state.localPageParam.defaultSort = { field: field, order: order!, descStr: 'desc' };
|
||||
Local.set(localPageParamKey, state.localPageParam);
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="scss"></style>
|
||||
26
Web/src/views/system/reportDataSource/sqlSugarDbType.ts
Normal file
26
Web/src/views/system/reportDataSource/sqlSugarDbType.ts
Normal file
@ -0,0 +1,26 @@
|
||||
export const sqlSugarDbTypes = [
|
||||
{ label: 'MySql', value: '0' },
|
||||
{ label: 'SqlServer', value: '1' },
|
||||
{ label: 'Sqlite', value: '2' },
|
||||
{ label: 'Oracle', value: '3' },
|
||||
{ label: 'PostgreSQL', value: '4' },
|
||||
{ label: 'Dm', value: '5' },
|
||||
{ label: 'Kdbndp', value: '6' },
|
||||
{ label: 'Oscar', value: '7' },
|
||||
{ label: 'MySqlConnector', value: '8' },
|
||||
{ label: 'Access', value: '9' },
|
||||
{ label: 'OpenGauss', value: '10' },
|
||||
{ label: 'QuestDB', value: '11' },
|
||||
{ label: 'HG', value: '12' },
|
||||
{ label: 'ClickHouse', value: '13' },
|
||||
{ label: 'GBase', value: '14' },
|
||||
{ label: 'Odbc', value: '15' },
|
||||
{ label: 'OceanBaseForOracle', value: '16' },
|
||||
{ label: 'TDengine', value: '17' },
|
||||
{ label: 'GaussDB', value: '18' },
|
||||
{ label: 'OceanBase', value: '19' },
|
||||
{ label: 'Tidb', value: '20' },
|
||||
{ label: 'Vastbase', value: '21' },
|
||||
{ label: 'PolarDB', value: '22' },
|
||||
{ label: 'Doris', value: '23' },
|
||||
];
|
||||
Loading…
Reference in New Issue
Block a user