Browse Source

增加库表管理页面

zuohuaijun 3 years ago
parent
commit
d183a36fc1
31 changed files with 1091 additions and 469 deletions
  1. 49 43
      Admin.NET/Admin.NET.Core/Admin.NET.Core.xml
  2. 4 4
      Admin.NET/Admin.NET.Core/SeedData/SysMenuSeedData.cs
  3. 6 6
      Admin.NET/Admin.NET.Core/Service/DataBase/Dto/CreateEntityInput.cs
  4. 0 22
      Admin.NET/Admin.NET.Core/Service/DataBase/Dto/DbColumnInfoInput.cs
  5. 46 0
      Admin.NET/Admin.NET.Core/Service/DataBase/Dto/DbColumnInput.cs
  6. 10 2
      Admin.NET/Admin.NET.Core/Service/DataBase/Dto/DbColumnOutput.cs
  7. 0 12
      Admin.NET/Admin.NET.Core/Service/DataBase/Dto/DbTableInfoInput.cs
  8. 30 0
      Admin.NET/Admin.NET.Core/Service/DataBase/Dto/DbTableInput.cs
  9. 0 12
      Admin.NET/Admin.NET.Core/Service/DataBase/Dto/EditColumnInput.cs
  10. 0 19
      Admin.NET/Admin.NET.Core/Service/DataBase/Dto/EditTableInput.cs
  11. 83 79
      Admin.NET/Admin.NET.Core/Service/DataBase/SysDataBaseService.cs
  12. 1 1
      Web/src/api-services/api.ts
  13. 246 177
      Web/src/api-services/apis/sys-database-api.ts
  14. 11 11
      Web/src/api-services/models/admin-result-list-db-column-output.ts
  15. 56 0
      Web/src/api-services/models/admin-result-list-object.ts
  16. 5 5
      Web/src/api-services/models/create-entity-input.ts
  17. 17 11
      Web/src/api-services/models/db-column-input.ts
  18. 41 17
      Web/src/api-services/models/db-column-output.ts
  19. 10 10
      Web/src/api-services/models/db-table-input.ts
  20. 7 13
      Web/src/api-services/models/delete-db-column-input.ts
  21. 5 5
      Web/src/api-services/models/delete-db-table-input.ts
  22. 9 7
      Web/src/api-services/models/index.ts
  23. 50 0
      Web/src/api-services/models/update-db-column-input.ts
  24. 8 8
      Web/src/api-services/models/update-db-table-input.ts
  25. 91 0
      Web/src/views/system/database/component/editColumn.vue
  26. 90 0
      Web/src/views/system/database/component/editTable.vue
  27. 210 0
      Web/src/views/system/database/index.vue
  28. 1 0
      Web/src/views/system/onlineUser/index.vue
  29. 3 3
      Web/src/views/system/org/component/orgTree.vue
  30. 1 1
      Web/src/views/system/server/index.vue
  31. 1 1
      Web/src/views/system/user/index.vue

+ 49 - 43
Admin.NET/Admin.NET.Core/Admin.NET.Core.xml

@@ -4561,105 +4561,111 @@
             <returns></returns>
         </member>
         <member name="P:Admin.NET.Core.Service.CreateEntityInput.TableName">
-             <summary>
-            
-             </summary>
-             <example>student</example>
+            <summary>
+            表名
+            </summary>
+            <example>student</example>
         </member>
         <member name="P:Admin.NET.Core.Service.CreateEntityInput.EntityName">
-             <summary>
-            
-             </summary>
-             <example>Student</example>
+            <summary>
+            实体名
+            </summary>
+            <example>Student</example>
         </member>
         <member name="P:Admin.NET.Core.Service.CreateEntityInput.BaseClassName">
-             <summary>
-            
-             </summary>
-             <example>AutoIncrementEntity</example>
+            <summary>
+            基类名
+            </summary>
+            <example>AutoIncrementEntity</example>
         </member>
         <member name="P:Admin.NET.Core.Service.CreateEntityInput.Position">
-             <summary>
-            
-             </summary>
-             <example>Magic.Application</example>
+            <summary>
+            导出位置
+            </summary>
+            <example>Web.Application</example>
         </member>
         <member name="P:Admin.NET.Core.Service.CreateEntityInput.ConfigId">
-             <summary>
-            
-             </summary>
+            <summary>
+            库标识
+            </summary>
         </member>
-        <member name="T:Admin.NET.Core.Service.SysDataBaseService">
+        <member name="T:Admin.NET.Core.Service.SysDatabaseService">
             <summary>
             系统数据库管理服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysDataBaseService.ColumnAdd(Admin.NET.Core.Service.DbColumnInfoInput)">
+        <member name="M:Admin.NET.Core.Service.SysDatabaseService.GetDbList">
             <summary>
-            添加列
+            获取库列表
             </summary>
-            <param name="input"></param>
+            <returns></returns>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysDataBaseService.ColumnDelete(Admin.NET.Core.Service.DbColumnInfoOutput)">
+        <member name="M:Admin.NET.Core.Service.SysDatabaseService.GetColumnList(System.String,System.String)">
             <summary>
-            删除列
+            获取字段列表
+            </summary>
+            <param name="tableName">表名</param>
+            <param name="configId">ConfigId</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Core.Service.SysDatabaseService.AddColumn(Admin.NET.Core.Service.DbColumnInput)">
+            <summary>
+            增加列
             </summary>
             <param name="input"></param>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysDataBaseService.ColumnEdit(Admin.NET.Core.Service.EditColumnInput)">
+        <member name="M:Admin.NET.Core.Service.SysDatabaseService.DeleteColumn(Admin.NET.Core.Service.DeleteDbColumnInput)">
             <summary>
-            编辑列
+            删除
             </summary>
             <param name="input"></param>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysDataBaseService.GetColumnInfosByTableName(System.String,System.String)">
+        <member name="M:Admin.NET.Core.Service.SysDatabaseService.UpdateColumn(Admin.NET.Core.Service.UpdateDbColumnInput)">
             <summary>
-            获取表字段
+            编辑列
             </summary>
-            <param name="tableName">表名</param>
-            <param name="configId">ConfigId</param>
-            <returns></returns>
+            <param name="input"></param>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysDataBaseService.GetTableInfoList(System.String)">
+        <member name="M:Admin.NET.Core.Service.SysDatabaseService.GetTableList(System.String)">
             <summary>
-            获取表信息
+            获取表列表
             </summary>
             <param name="configId">ConfigId</param>
             <returns></returns>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysDataBaseService.TableAdd(Admin.NET.Core.Service.DbTableInfoInput)">
+        <member name="M:Admin.NET.Core.Service.SysDatabaseService.AddTable(Admin.NET.Core.Service.DbTableInput)">
             <summary>
-            增表
+            增
             </summary>
             <param name="input"></param>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysDataBaseService.TableDelete(Admin.NET.Core.Service.DeleteTableInput)">
+        <member name="M:Admin.NET.Core.Service.SysDatabaseService.DeleteTable(Admin.NET.Core.Service.DeleteDbTableInput)">
             <summary>
             删除表
             </summary>
             <param name="input"></param>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysDataBaseService.TableEdit(Admin.NET.Core.Service.EditTableInput)">
+        <member name="M:Admin.NET.Core.Service.SysDatabaseService.UpdateTable(Admin.NET.Core.Service.UpdateDbTableInput)">
             <summary>
             编辑表
             </summary>
             <param name="input"></param>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysDataBaseService.CreateEntity(Admin.NET.Core.Service.CreateEntityInput)">
+        <member name="M:Admin.NET.Core.Service.SysDatabaseService.CreateEntity(Admin.NET.Core.Service.CreateEntityInput)">
             <summary>
             创建实体
             </summary>
             <param name="input"></param>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysDataBaseService.GetTemplatePath">
+        <member name="M:Admin.NET.Core.Service.SysDatabaseService.GetEntityTemplatePath">
             <summary>
-            获取模板文件路径集合
+            获取实体模板文件路径
             </summary>
             <returns></returns>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysDataBaseService.GetTargetPath(Admin.NET.Core.Service.CreateEntityInput)">
+        <member name="M:Admin.NET.Core.Service.SysDatabaseService.GetEntityTargetPath(Admin.NET.Core.Service.CreateEntityInput)">
             <summary>
-            设置生成文件路径
+            设置生成实体文件路径
             </summary>
             <param name="input"></param>
             <returns></returns>

+ 4 - 4
Admin.NET/Admin.NET.Core/SeedData/SysMenuSeedData.cs

@@ -117,10 +117,10 @@ public class SysMenuSeedData : ISqlSugarEntitySeedData<SysMenu>
 
             new SysMenu{ Id=252885263002600, Pid=0, Title="开发工具", Path="/develop", Name="develop", Component="Layout", Redirect="/develop/api", Icon="ele-Cpu", Type=MenuTypeEnum.Dir, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), Order=400 },
             new SysMenu{ Id=252885263002610, Pid=252885263002600, Title="系统接口", Path="/develop/api", Name="sysApi", Component="layout/routerView/iframe", IsIframe=true, OutLink="https://localhost:44326/api/", Icon="ele-Help", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), Order=100 },
-            new SysMenu{ Id=252885263002611, Pid=252885263002600, Title="表单设计", Path="/develop/formDes", Name="sysFormDes", Component="/system/formDes/index", Icon="ele-Edit", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), Order=101 },
-            new SysMenu{ Id=252885263002612, Pid=252885263002600, Title="代码生成", Path="/develop/codeGen", Name="sysCodeGen", Component="/system/codeGen/index", Icon="ele-Crop", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), Order=102 },
-            new SysMenu{ Id=252885263002613, Pid=252885263002600, Title="库表管理", Path="/develop/database", Name="sysDatabase", Component="/system/database/index",Icon="ele-Coin", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), Order=103 },
-
+            new SysMenu{ Id=252885263002620, Pid=252885263002600, Title="表单设计", Path="/develop/formDes", Name="sysFormDes", Component="/system/formDes/index", Icon="ele-Edit", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), Order=101 },
+            new SysMenu{ Id=252885263002630, Pid=252885263002600, Title="代码生成", Path="/develop/codeGen", Name="sysCodeGen", Component="/system/codeGen/index", Icon="ele-Crop", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), Order=102 },
+            new SysMenu{ Id=252885263002640, Pid=252885263002600, Title="库表管理", Path="/develop/database", Name="sysDatabase", Component="/system/database/index",Icon="ele-Coin", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), Order=103 },
+ 
             new SysMenu{ Id=252885263002700, Pid=0, Title="帮助文档", Path="/doc", Name="doc", Component="Layout", Redirect="/doc/furion", Icon="ele-Notebook", Type=MenuTypeEnum.Dir, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), Order=500 },
             new SysMenu{ Id=252885263002710, Pid=252885263002700, Title="后台教程", Path="/doc/furion", Name="sysFurion", Component="IFrame", IsIframe=false, IsKeepAlive=false, OutLink="https://furion.baiqian.ltd/", Icon="ele-Promotion", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), Order=100 },
             new SysMenu{ Id=252885263002711, Pid=252885263002700, Title="前端教程", Path="/doc/element", Name="sysElement", Component="IFrame", IsIframe=false, IsKeepAlive=false, OutLink="https://element-plus.gitee.io/zh-CN/", Icon="ele-Position", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), Order=101 },

+ 6 - 6
Admin.NET/Admin.NET.Core/Service/DataBase/Dto/CreateEntityInput.cs

@@ -3,31 +3,31 @@
 public class CreateEntityInput
 {
     /// <summary>
-    ///
+    /// 表名
     /// </summary>
     /// <example>student</example>
     public string TableName { get; set; }
 
     /// <summary>
-    ///
+    /// 实体名
     /// </summary>
     /// <example>Student</example>
     public string EntityName { get; set; }
 
     /// <summary>
-    ///
+    /// 基类名
     /// </summary>
     /// <example>AutoIncrementEntity</example>
     public string BaseClassName { get; set; }
 
     /// <summary>
-    ///
+    /// 导出位置
     /// </summary>
-    /// <example>Magic.Application</example>
+    /// <example>Web.Application</example>
     public string Position { get; set; }
 
     /// <summary>
-    ///
+    /// 库标识
     /// </summary>
     public string ConfigId { get; set; }
 }

+ 0 - 22
Admin.NET/Admin.NET.Core/Service/DataBase/Dto/DbColumnInfoInput.cs

@@ -1,22 +0,0 @@
-namespace Admin.NET.Core.Service;
-
-public class DbColumnInfoInput
-{
-    public string TableName { get; set; }
-
-    public string DbColumnName { get; set; }
-
-    public string DataType { get; set; }
-
-    public int Length { get; set; }
-
-    public string ColumnDescription { get; set; }
-
-    public int IsNullable { get; set; }
-
-    public int IsIdentity { get; set; }
-
-    public int IsPrimarykey { get; set; }
-
-    public int DecimalDigits { get; set; }
-}

+ 46 - 0
Admin.NET/Admin.NET.Core/Service/DataBase/Dto/DbColumnInput.cs

@@ -0,0 +1,46 @@
+namespace Admin.NET.Core.Service;
+
+public class DbColumnInput
+{
+    public string ConfigId { get; set; }
+
+    public string TableName { get; set; }
+
+    public string DbColumnName { get; set; }
+
+    public string DataType { get; set; }
+
+    public int Length { get; set; }
+
+    public string ColumnDescription { get; set; }
+
+    public int IsNullable { get; set; }
+
+    public int IsIdentity { get; set; }
+
+    public int IsPrimarykey { get; set; }
+
+    public int DecimalDigits { get; set; }
+}
+
+public class UpdateDbColumnInput
+{
+    public string ConfigId { get; set; }
+
+    public string TableName { get; set; }
+
+    public string ColumnName { get; set; }
+
+    public string OldColumnName { get; set; }
+
+    public string Description { get; set; }
+}
+
+public class DeleteDbColumnInput
+{
+    public string ConfigId { get; set; }
+
+    public string TableName { get; set; }
+
+    public string DbColumnName { get; set; }
+}

+ 10 - 2
Admin.NET/Admin.NET.Core/Service/DataBase/Dto/DbColumnInfoOutput.cs → Admin.NET/Admin.NET.Core/Service/DataBase/Dto/DbColumnOutput.cs

@@ -1,6 +1,6 @@
 namespace Admin.NET.Core.Service;
 
-public class DbColumnInfoOutput
+public class DbColumnOutput
 {
     public string TableName { get; set; }
 
@@ -12,6 +12,8 @@ public class DbColumnInfoOutput
 
     public string DataType { get; set; }
 
+    public object PropertyType { get; set; }
+
     public int Length { get; set; }
 
     public string ColumnDescription { get; set; }
@@ -32,5 +34,11 @@ public class DbColumnInfoOutput
 
     public bool IsArray { get; set; }
 
-    internal bool IsJson { get; set; }
+    public bool IsJson { get; set; }
+
+    public bool? IsUnsigned { get; set; }
+
+    public int CreateTableFieldSort { get; set; }
+
+    internal object SqlParameterDbType { get; set; }
 }

+ 0 - 12
Admin.NET/Admin.NET.Core/Service/DataBase/Dto/DbTableInfoInput.cs

@@ -1,12 +0,0 @@
-namespace Admin.NET.Core.Service;
-
-public class DbTableInfoInput
-{
-    public string ConfigId { get; set; }
-
-    public string Name { get; set; }
-
-    public string Description { get; set; }
-
-    public List<DbColumnInfoInput> DbColumnInfoList { get; set; }
-}

+ 30 - 0
Admin.NET/Admin.NET.Core/Service/DataBase/Dto/DbTableInput.cs

@@ -0,0 +1,30 @@
+namespace Admin.NET.Core.Service;
+
+public class DbTableInput
+{
+    public string ConfigId { get; set; }
+
+    public string TableName { get; set; }
+
+    public string Description { get; set; }
+
+    public List<DbColumnInput> DbColumnInfoList { get; set; }
+}
+
+public class UpdateDbTableInput
+{
+    public string ConfigId { get; set; }
+
+    public string TableName { get; set; }
+
+    public string OldTableName { get; set; }
+
+    public string Description { get; set; }
+}
+
+public class DeleteDbTableInput
+{
+    public string ConfigId { get; set; }
+
+    public string TableName { get; set; }
+}

+ 0 - 12
Admin.NET/Admin.NET.Core/Service/DataBase/Dto/EditColumnInput.cs

@@ -1,12 +0,0 @@
-namespace Admin.NET.Core.Service;
-
-public class EditColumnInput
-{
-    public string TableName { get; set; }
-
-    public string OldName { get; set; }
-
-    public string DbColumnName { get; set; }
-
-    public string ColumnDescription { get; set; }
-}

+ 0 - 19
Admin.NET/Admin.NET.Core/Service/DataBase/Dto/EditTableInput.cs

@@ -1,19 +0,0 @@
-namespace Admin.NET.Core.Service;
-
-public class EditTableInput
-{
-    public string ConfigId { get; set; }
-
-    public string Name { get; set; }
-
-    public string OldName { get; set; }
-
-    public string Description { get; set; }
-}
-
-public class DeleteTableInput
-{
-    public string ConfigId { get; set; }
-
-    public string Name { get; set; }
-}

+ 83 - 79
Admin.NET/Admin.NET.Core/Service/DataBase/SysDataBaseService.cs

@@ -4,23 +4,49 @@
 /// 系统数据库管理服务
 /// </summary>
 [ApiDescriptionSettings(Order = 145)]
-public class SysDataBaseService : IDynamicApiController, ITransient
+public class SysDatabaseService : IDynamicApiController, ITransient
 {
     private readonly ISqlSugarClient _db;
     private readonly IViewEngine _viewEngine;
 
-    public SysDataBaseService(ISqlSugarClient db, IViewEngine viewEngine)
+    public SysDatabaseService(ISqlSugarClient db, IViewEngine viewEngine)
     {
         _db = db;
         _viewEngine = viewEngine;
     }
 
     /// <summary>
-    /// 添加列
+    /// 获取库列表
+    /// </summary>
+    /// <returns></returns>
+    [HttpGet("/sysDatabase/list")]
+    public List<dynamic> GetDbList()
+    {
+        return App.GetOptions<DbConnectionOptions>().ConnectionConfigs.Select(u => u.ConfigId).ToList();
+    }
+
+    /// <summary>
+    /// 获取字段列表
+    /// </summary>
+    /// <param name="tableName">表名</param>
+    /// <param name="configId">ConfigId</param>
+    /// <returns></returns>
+    [HttpGet("/sysDatabase/columnList")]
+    public List<DbColumnOutput> GetColumnList(string tableName, string configId = SqlSugarConst.ConfigId)
+    {
+        var db = _db.AsTenant().GetConnectionScope(configId);
+        if (string.IsNullOrWhiteSpace(tableName))
+            return new List<DbColumnOutput>();
+
+        return db.DbMaintenance.GetColumnInfosByTableName(tableName, false).Adapt<List<DbColumnOutput>>();
+    }
+
+    /// <summary>
+    /// 增加列
     /// </summary>
     /// <param name="input"></param>
-    [HttpPost("/column/add")]
-    public void ColumnAdd(DbColumnInfoInput input)
+    [HttpPost("/sysDatabase/column/add")]
+    public void AddColumn(DbColumnInput input)
     {
         var column = new DbColumnInfo
         {
@@ -33,80 +59,61 @@ public class SysDataBaseService : IDynamicApiController, ITransient
             DecimalDigits = input.DecimalDigits,
             DataType = input.DataType
         };
-        _db.DbMaintenance.AddColumn(input.TableName, column);
-        _db.DbMaintenance.AddColumnRemark(input.DbColumnName, input.TableName, input.ColumnDescription);
+        var db = _db.AsTenant().GetConnectionScope(input.ConfigId);
+        db.DbMaintenance.AddColumn(input.TableName, column);
+        db.DbMaintenance.AddColumnRemark(input.DbColumnName, input.TableName, input.ColumnDescription);
         if (column.IsPrimarykey)
-        {
-            _db.DbMaintenance.AddPrimaryKey(input.TableName, input.DbColumnName);
-        }
+            db.DbMaintenance.AddPrimaryKey(input.TableName, input.DbColumnName);
     }
 
     /// <summary>
     /// 删除列
     /// </summary>
     /// <param name="input"></param>
-    [HttpPost("/column/delete")]
-    public void ColumnDelete(DbColumnInfoOutput input)
+    [HttpPost("/sysDatabase/column/delete")]
+    public void DeleteColumn(DeleteDbColumnInput input)
     {
-        _db.DbMaintenance.DropColumn(input.TableName, input.DbColumnName);
+        var db = _db.AsTenant().GetConnectionScope(input.ConfigId);
+        db.DbMaintenance.DropColumn(input.TableName, input.DbColumnName);
     }
 
     /// <summary>
     /// 编辑列
     /// </summary>
     /// <param name="input"></param>
-    [HttpPost("/column/edit")]
-    public void ColumnEdit(EditColumnInput input)
-    {
-        _db.DbMaintenance.RenameColumn(input.TableName, input.OldName, input.DbColumnName);
-        if (_db.DbMaintenance.IsAnyColumnRemark(input.DbColumnName, input.TableName))
-        {
-            _db.DbMaintenance.DeleteColumnRemark(input.DbColumnName, input.TableName);
-        }
-        _db.DbMaintenance.AddColumnRemark(input.DbColumnName, input.TableName, string.IsNullOrWhiteSpace(input.ColumnDescription) ? input.DbColumnName : input.ColumnDescription);
-    }
-
-    /// <summary>
-    /// 获取表字段
-    /// </summary>
-    /// <param name="tableName">表名</param>
-    /// <param name="configId">ConfigId</param>
-    /// <returns></returns>
-    [HttpGet("/dataBase/columnInfoList")]
-    public List<DbColumnInfoOutput> GetColumnInfosByTableName(string tableName, string configId = SqlSugarConst.ConfigId)
+    [HttpPost("/sysDatabase/column/update")]
+    public void UpdateColumn(UpdateDbColumnInput input)
     {
-        var provider = _db.AsTenant().GetConnectionScope(configId);
-        if (string.IsNullOrWhiteSpace(tableName))
-            return new List<DbColumnInfoOutput>();
-
-        return provider.DbMaintenance.GetColumnInfosByTableName(tableName, false).Adapt<List<DbColumnInfoOutput>>();
+        var db = _db.AsTenant().GetConnectionScope(input.ConfigId);
+        db.DbMaintenance.RenameColumn(input.TableName, input.OldColumnName, input.ColumnName);
+        if (db.DbMaintenance.IsAnyColumnRemark(input.ColumnName, input.TableName))
+            db.DbMaintenance.DeleteColumnRemark(input.ColumnName, input.TableName);
+        db.DbMaintenance.AddColumnRemark(input.ColumnName, input.TableName, string.IsNullOrWhiteSpace(input.Description) ? input.ColumnName : input.Description);
     }
 
     /// <summary>
-    /// 获取表信息
+    /// 获取表列表
     /// </summary>
     /// <param name="configId">ConfigId</param>
     /// <returns></returns>
-    [HttpGet("/dataBase/tableInfoList")]
-    public List<DbTableInfo> GetTableInfoList(string configId = SqlSugarConst.ConfigId)
+    [HttpGet("/sysDatabase/tableList")]
+    public List<DbTableInfo> GetTableList(string configId = SqlSugarConst.ConfigId)
     {
-        var provider = _db.AsTenant().GetConnectionScope(configId);
-        return provider.DbMaintenance.GetTableInfoList(false);
+        var db = _db.AsTenant().GetConnectionScope(configId);
+        return db.DbMaintenance.GetTableInfoList(false);
     }
 
     /// <summary>
-    /// 增表
+    /// 增
     /// </summary>
     /// <param name="input"></param>
-    [HttpPost("/table/add")]
-    public void TableAdd(DbTableInfoInput input)
+    [HttpPost("/sysDatabase/table/add")]
+    public void AddTable(DbTableInput input)
     {
-        var provider = _db.AsTenant().GetConnectionScope(input.ConfigId);
         var columns = new List<DbColumnInfo>();
         if (input.DbColumnInfoList == null || !input.DbColumnInfoList.Any())
-        {
             throw Oops.Oh(ErrorCodeEnum.db1000);
-        }
+
         input.DbColumnInfoList.ForEach(m =>
         {
             columns.Add(new DbColumnInfo
@@ -121,15 +128,15 @@ public class SysDataBaseService : IDynamicApiController, ITransient
                 DecimalDigits = m.DecimalDigits
             });
         });
-        provider.DbMaintenance.CreateTable(input.Name, columns, false);
-        provider.DbMaintenance.AddTableRemark(input.Name, input.Description);
+        var db = _db.AsTenant().GetConnectionScope(input.ConfigId);
+        db.DbMaintenance.CreateTable(input.TableName, columns, false);
+        db.DbMaintenance.AddTableRemark(input.TableName, input.Description);
         if (columns.Any(m => m.IsPrimarykey))
-        {
-            provider.DbMaintenance.AddPrimaryKey(input.Name, columns.FirstOrDefault(m => m.IsPrimarykey).DbColumnName);
-        }
+            db.DbMaintenance.AddPrimaryKey(input.TableName, columns.FirstOrDefault(m => m.IsPrimarykey).DbColumnName);
+
         input.DbColumnInfoList.ForEach(m =>
         {
-            provider.DbMaintenance.AddColumnRemark(m.DbColumnName, input.Name, string.IsNullOrWhiteSpace(m.ColumnDescription) ? m.DbColumnName : m.ColumnDescription);
+            db.DbMaintenance.AddColumnRemark(m.DbColumnName, input.TableName, string.IsNullOrWhiteSpace(m.ColumnDescription) ? m.DbColumnName : m.ColumnDescription);
         });
     }
 
@@ -137,45 +144,43 @@ public class SysDataBaseService : IDynamicApiController, ITransient
     /// 删除表
     /// </summary>
     /// <param name="input"></param>
-    [HttpPost("/table/delete")]
-    public void TableDelete(DeleteTableInput input)
+    [HttpPost("/sysDatabase/table/delete")]
+    public void DeleteTable(DeleteDbTableInput input)
     {
-        var provider = _db.AsTenant().GetConnectionScope(input.ConfigId);
-        provider.DbMaintenance.DropTable(input.Name);
+        var db = _db.AsTenant().GetConnectionScope(input.ConfigId);
+        db.DbMaintenance.DropTable(input.TableName);
     }
 
     /// <summary>
     /// 编辑表
     /// </summary>
     /// <param name="input"></param>
-    [HttpPost("/table/edit")]
-    public void TableEdit(EditTableInput input)
+    [HttpPost("/sysDatabase/table/update")]
+    public void UpdateTable(UpdateDbTableInput input)
     {
-        var provider = _db.AsTenant().GetConnectionScope(input.ConfigId);
-        provider.DbMaintenance.RenameTable(input.OldName, input.Name);
-        if (provider.DbMaintenance.IsAnyTableRemark(input.Name))
-        {
-            provider.DbMaintenance.DeleteTableRemark(input.Name);
-        }
-        provider.DbMaintenance.AddTableRemark(input.Name, input.Description);
+        var db = _db.AsTenant().GetConnectionScope(input.ConfigId);
+        db.DbMaintenance.RenameTable(input.OldTableName, input.TableName);
+        if (db.DbMaintenance.IsAnyTableRemark(input.TableName))
+            db.DbMaintenance.DeleteTableRemark(input.TableName);
+        db.DbMaintenance.AddTableRemark(input.TableName, input.Description);
     }
 
     /// <summary>
     /// 创建实体
     /// </summary>
     /// <param name="input"></param>
-    [HttpPost("/table/createEntity")]
+    [HttpPost("/sysDatabase/entity/create")]
     public void CreateEntity(CreateEntityInput input)
     {
-        var provider = _db.AsTenant().GetConnectionScope(input.ConfigId);
         input.Position = string.IsNullOrWhiteSpace(input.Position) ? "Admin.NET.Application" : input.Position;
         input.BaseClassName = string.IsNullOrWhiteSpace(input.BaseClassName) ? "" : $" : {input.BaseClassName}";
-        var templatePath = GetTemplatePath();
-        var targetPath = GetTargetPath(input);
-        DbTableInfo dbTableInfo = provider.DbMaintenance.GetTableInfoList(false).FirstOrDefault(m => m.Name == input.TableName);
+        var templatePath = GetEntityTemplatePath();
+        var targetPath = GetEntityTargetPath(input);
+        var db = _db.AsTenant().GetConnectionScope(input.ConfigId);
+        DbTableInfo dbTableInfo = db.DbMaintenance.GetTableInfoList(false).FirstOrDefault(m => m.Name == input.TableName);
         if (dbTableInfo == null)
             throw Oops.Oh(ErrorCodeEnum.db1001);
-        List<DbColumnInfo> dbColumnInfos = provider.DbMaintenance.GetColumnInfosByTableName(input.TableName, false);
+        List<DbColumnInfo> dbColumnInfos = db.DbMaintenance.GetColumnInfosByTableName(input.TableName, false);
 
         if (input.BaseClassName.Contains("EntityTenant"))
         {
@@ -217,24 +222,23 @@ public class SysDataBaseService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 获取模板文件路径集合
+    /// 获取实体模板文件路径
     /// </summary>
     /// <returns></returns>
-    private static string GetTemplatePath()
+    private static string GetEntityTemplatePath()
     {
         var templatePath = App.WebHostEnvironment.WebRootPath + @"\Template\";
         return Path.Combine(templatePath, "Entity.cs.vm");
     }
 
     /// <summary>
-    /// 设置生成文件路径
+    /// 设置生成实体文件路径
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
-    private static string GetTargetPath(CreateEntityInput input)
+    private static string GetEntityTargetPath(CreateEntityInput input)
     {
         var backendPath = Path.Combine(new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.FullName, input.Position, "Entity");
-        var entityPath = Path.Combine(backendPath, input.EntityName + ".cs");
-        return entityPath;
+        return Path.Combine(backendPath, input.EntityName + ".cs");
     }
 }

+ 1 - 1
Web/src/api-services/api.ts

@@ -16,7 +16,7 @@ export * from './apis/sys-code-gen-api';
 export * from './apis/sys-code-gen-config-api';
 export * from './apis/sys-config-api';
 export * from './apis/sys-const-api';
-export * from './apis/sys-data-base-api';
+export * from './apis/sys-database-api';
 export * from './apis/sys-dict-data-api';
 export * from './apis/sys-dict-type-api';
 export * from './apis/sys-file-api';

+ 246 - 177
Web/src/api-services/apis/sys-data-base-api.ts → Web/src/api-services/apis/sys-database-api.ts

@@ -16,30 +16,31 @@ 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 { AdminResultListDbColumnInfoOutput } from '../models';
+import { AdminResultListDbColumnOutput } from '../models';
 import { AdminResultListDbTableInfo } from '../models';
+import { AdminResultListObject } from '../models';
 import { CreateEntityInput } from '../models';
-import { DbColumnInfoInput } from '../models';
-import { DbColumnInfoOutput } from '../models';
-import { DbTableInfoInput } from '../models';
-import { DeleteTableInput } from '../models';
-import { EditColumnInput } from '../models';
-import { EditTableInput } from '../models';
+import { DbColumnInput } from '../models';
+import { DbTableInput } from '../models';
+import { DeleteDbColumnInput } from '../models';
+import { DeleteDbTableInput } from '../models';
+import { UpdateDbColumnInput } from '../models';
+import { UpdateDbTableInput } from '../models';
 /**
- * SysDataBaseApi - axios parameter creator
+ * SysDatabaseApi - axios parameter creator
  * @export
  */
-export const SysDataBaseApiAxiosParamCreator = function (configuration?: Configuration) {
+export const SysDatabaseApiAxiosParamCreator = function (configuration?: Configuration) {
     return {
         /**
          * 
-         * @summary 加列
-         * @param {DbColumnInfoInput} [body] 
+         * @summary 加列
+         * @param {DbColumnInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        columnAddPost: async (body?: DbColumnInfoInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            const localVarPath = `/column/add`;
+        sysDatabaseColumnAddPost: async (body?: DbColumnInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/sysDatabase/column/add`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
             let baseOptions;
@@ -75,12 +76,12 @@ export const SysDataBaseApiAxiosParamCreator = function (configuration?: Configu
         /**
          * 
          * @summary 删除列
-         * @param {DbColumnInfoOutput} [body] 
+         * @param {DeleteDbColumnInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        columnDeletePost: async (body?: DbColumnInfoOutput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            const localVarPath = `/column/delete`;
+        sysDatabaseColumnDeletePost: async (body?: DeleteDbColumnInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/sysDatabase/column/delete`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
             let baseOptions;
@@ -113,15 +114,61 @@ export const SysDataBaseApiAxiosParamCreator = function (configuration?: Configu
                 options: localVarRequestOptions,
             };
         },
+        /**
+         * 
+         * @summary 获取字段列表
+         * @param {string} [tableName] 表名
+         * @param {string} [configId] ConfigId
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        sysDatabaseColumnListGet: async (tableName?: string, configId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/sysDatabase/columnList`;
+            // 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
+
+            if (tableName !== undefined) {
+                localVarQueryParameter['tableName'] = tableName;
+            }
+
+            if (configId !== undefined) {
+                localVarQueryParameter['configId'] = configId;
+            }
+
+            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 {EditColumnInput} [body] 
+         * @param {UpdateDbColumnInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        columnEditPost: async (body?: EditColumnInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            const localVarPath = `/column/edit`;
+        sysDatabaseColumnUpdatePost: async (body?: UpdateDbColumnInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/sysDatabase/column/update`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
             let baseOptions;
@@ -156,33 +203,26 @@ export const SysDataBaseApiAxiosParamCreator = function (configuration?: Configu
         },
         /**
          * 
-         * @summary 获取表字段
-         * @param {string} [tableName] 表名
-         * @param {string} [configId] ConfigId
+         * @summary 创建实体
+         * @param {CreateEntityInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        dataBaseColumnInfoListGet: async (tableName?: string, configId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            const localVarPath = `/dataBase/columnInfoList`;
+        sysDatabaseEntityCreatePost: async (body?: CreateEntityInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/sysDatabase/entity/create`;
             // 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 localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (tableName !== undefined) {
-                localVarQueryParameter['tableName'] = tableName;
-            }
-
-            if (configId !== undefined) {
-                localVarQueryParameter['configId'] = configId;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -194,6 +234,8 @@ export const SysDataBaseApiAxiosParamCreator = function (configuration?: Configu
             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,
@@ -202,13 +244,12 @@ export const SysDataBaseApiAxiosParamCreator = function (configuration?: Configu
         },
         /**
          * 
-         * @summary 获取表信息
-         * @param {string} [configId] ConfigId
+         * @summary 获取库列表
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        dataBaseTableInfoListGet: async (configId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            const localVarPath = `/dataBase/tableInfoList`;
+        sysDatabaseListGet: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/sysDatabase/list`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
             let baseOptions;
@@ -221,10 +262,6 @@ export const SysDataBaseApiAxiosParamCreator = function (configuration?: Configu
 
             // authentication Bearer required
 
-            if (configId !== undefined) {
-                localVarQueryParameter['configId'] = configId;
-            }
-
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
                 query.set(key, localVarQueryParameter[key]);
@@ -243,13 +280,13 @@ export const SysDataBaseApiAxiosParamCreator = function (configuration?: Configu
         },
         /**
          * 
-         * @summary 增表
-         * @param {DbTableInfoInput} [body] 
+         * @summary 增
+         * @param {DbTableInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        tableAddPost: async (body?: DbTableInfoInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            const localVarPath = `/table/add`;
+        sysDatabaseTableAddPost: async (body?: DbTableInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/sysDatabase/table/add`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
             let baseOptions;
@@ -284,13 +321,13 @@ export const SysDataBaseApiAxiosParamCreator = function (configuration?: Configu
         },
         /**
          * 
-         * @summary 创建实体
-         * @param {CreateEntityInput} [body] 
+         * @summary 删除表
+         * @param {DeleteDbTableInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        tableCreateEntityPost: async (body?: CreateEntityInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            const localVarPath = `/table/createEntity`;
+        sysDatabaseTableDeletePost: async (body?: DeleteDbTableInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/sysDatabase/table/delete`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
             let baseOptions;
@@ -325,26 +362,28 @@ export const SysDataBaseApiAxiosParamCreator = function (configuration?: Configu
         },
         /**
          * 
-         * @summary 删除
-         * @param {DeleteTableInput} [body] 
+         * @summary 获取表列
+         * @param {string} [configId] ConfigId
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        tableDeletePost: async (body?: DeleteTableInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            const localVarPath = `/table/delete`;
+        sysDatabaseTableListGet: async (configId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/sysDatabase/tableList`;
             // 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 localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+            if (configId !== undefined) {
+                localVarQueryParameter['configId'] = configId;
+            }
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -356,8 +395,6 @@ export const SysDataBaseApiAxiosParamCreator = function (configuration?: Configu
             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,
@@ -367,12 +404,12 @@ export const SysDataBaseApiAxiosParamCreator = function (configuration?: Configu
         /**
          * 
          * @summary 编辑表
-         * @param {EditTableInput} [body] 
+         * @param {UpdateDbTableInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        tableEditPost: async (body?: EditTableInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            const localVarPath = `/table/edit`;
+        sysDatabaseTableUpdatePost: async (body?: UpdateDbTableInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/sysDatabase/table/update`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
             let baseOptions;
@@ -409,20 +446,20 @@ export const SysDataBaseApiAxiosParamCreator = function (configuration?: Configu
 };
 
 /**
- * SysDataBaseApi - functional programming interface
+ * SysDatabaseApi - functional programming interface
  * @export
  */
-export const SysDataBaseApiFp = function(configuration?: Configuration) {
+export const SysDatabaseApiFp = function(configuration?: Configuration) {
     return {
         /**
          * 
-         * @summary 加列
-         * @param {DbColumnInfoInput} [body] 
+         * @summary 加列
+         * @param {DbColumnInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async columnAddPost(body?: DbColumnInfoInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
-            const localVarAxiosArgs = await SysDataBaseApiAxiosParamCreator(configuration).columnAddPost(body, options);
+        async sysDatabaseColumnAddPost(body?: DbColumnInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysDatabaseApiAxiosParamCreator(configuration).sysDatabaseColumnAddPost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -431,12 +468,12 @@ export const SysDataBaseApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 删除列
-         * @param {DbColumnInfoOutput} [body] 
+         * @param {DeleteDbColumnInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async columnDeletePost(body?: DbColumnInfoOutput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
-            const localVarAxiosArgs = await SysDataBaseApiAxiosParamCreator(configuration).columnDeletePost(body, options);
+        async sysDatabaseColumnDeletePost(body?: DeleteDbColumnInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysDatabaseApiAxiosParamCreator(configuration).sysDatabaseColumnDeletePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -444,13 +481,14 @@ export const SysDataBaseApiFp = function(configuration?: Configuration) {
         },
         /**
          * 
-         * @summary 编辑列
-         * @param {EditColumnInput} [body] 
+         * @summary 获取字段列表
+         * @param {string} [tableName] 表名
+         * @param {string} [configId] ConfigId
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async columnEditPost(body?: EditColumnInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
-            const localVarAxiosArgs = await SysDataBaseApiAxiosParamCreator(configuration).columnEditPost(body, options);
+        async sysDatabaseColumnListGet(tableName?: string, configId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListDbColumnOutput>>> {
+            const localVarAxiosArgs = await SysDatabaseApiAxiosParamCreator(configuration).sysDatabaseColumnListGet(tableName, configId, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -458,14 +496,13 @@ export const SysDataBaseApiFp = function(configuration?: Configuration) {
         },
         /**
          * 
-         * @summary 获取表字段
-         * @param {string} [tableName] 表名
-         * @param {string} [configId] ConfigId
+         * @summary 编辑列
+         * @param {UpdateDbColumnInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async dataBaseColumnInfoListGet(tableName?: string, configId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListDbColumnInfoOutput>>> {
-            const localVarAxiosArgs = await SysDataBaseApiAxiosParamCreator(configuration).dataBaseColumnInfoListGet(tableName, configId, options);
+        async sysDatabaseColumnUpdatePost(body?: UpdateDbColumnInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysDatabaseApiAxiosParamCreator(configuration).sysDatabaseColumnUpdatePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -473,13 +510,13 @@ export const SysDataBaseApiFp = function(configuration?: Configuration) {
         },
         /**
          * 
-         * @summary 获取表信息
-         * @param {string} [configId] ConfigId
+         * @summary 创建实体
+         * @param {CreateEntityInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async dataBaseTableInfoListGet(configId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListDbTableInfo>>> {
-            const localVarAxiosArgs = await SysDataBaseApiAxiosParamCreator(configuration).dataBaseTableInfoListGet(configId, options);
+        async sysDatabaseEntityCreatePost(body?: CreateEntityInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysDatabaseApiAxiosParamCreator(configuration).sysDatabaseEntityCreatePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -487,13 +524,12 @@ export const SysDataBaseApiFp = function(configuration?: Configuration) {
         },
         /**
          * 
-         * @summary 新增表
-         * @param {DbTableInfoInput} [body] 
+         * @summary 获取库列表
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async tableAddPost(body?: DbTableInfoInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
-            const localVarAxiosArgs = await SysDataBaseApiAxiosParamCreator(configuration).tableAddPost(body, options);
+        async sysDatabaseListGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListObject>>> {
+            const localVarAxiosArgs = await SysDatabaseApiAxiosParamCreator(configuration).sysDatabaseListGet(options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -501,13 +537,13 @@ export const SysDataBaseApiFp = function(configuration?: Configuration) {
         },
         /**
          * 
-         * @summary 创建实体
-         * @param {CreateEntityInput} [body] 
+         * @summary 增加表
+         * @param {DbTableInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async tableCreateEntityPost(body?: CreateEntityInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
-            const localVarAxiosArgs = await SysDataBaseApiAxiosParamCreator(configuration).tableCreateEntityPost(body, options);
+        async sysDatabaseTableAddPost(body?: DbTableInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysDatabaseApiAxiosParamCreator(configuration).sysDatabaseTableAddPost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -516,12 +552,26 @@ export const SysDataBaseApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 删除表
-         * @param {DeleteTableInput} [body] 
+         * @param {DeleteDbTableInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async tableDeletePost(body?: DeleteTableInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
-            const localVarAxiosArgs = await SysDataBaseApiAxiosParamCreator(configuration).tableDeletePost(body, options);
+        async sysDatabaseTableDeletePost(body?: DeleteDbTableInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysDatabaseApiAxiosParamCreator(configuration).sysDatabaseTableDeletePost(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 {string} [configId] ConfigId
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async sysDatabaseTableListGet(configId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListDbTableInfo>>> {
+            const localVarAxiosArgs = await SysDatabaseApiAxiosParamCreator(configuration).sysDatabaseTableListGet(configId, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -530,12 +580,12 @@ export const SysDataBaseApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 编辑表
-         * @param {EditTableInput} [body] 
+         * @param {UpdateDbTableInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async tableEditPost(body?: EditTableInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
-            const localVarAxiosArgs = await SysDataBaseApiAxiosParamCreator(configuration).tableEditPost(body, options);
+        async sysDatabaseTableUpdatePost(body?: UpdateDbTableInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysDatabaseApiAxiosParamCreator(configuration).sysDatabaseTableUpdatePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -545,210 +595,229 @@ export const SysDataBaseApiFp = function(configuration?: Configuration) {
 };
 
 /**
- * SysDataBaseApi - factory interface
+ * SysDatabaseApi - factory interface
  * @export
  */
-export const SysDataBaseApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+export const SysDatabaseApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
     return {
         /**
          * 
-         * @summary 加列
-         * @param {DbColumnInfoInput} [body] 
+         * @summary 加列
+         * @param {DbColumnInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async columnAddPost(body?: DbColumnInfoInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
-            return SysDataBaseApiFp(configuration).columnAddPost(body, options).then((request) => request(axios, basePath));
+        async sysDatabaseColumnAddPost(body?: DbColumnInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysDatabaseApiFp(configuration).sysDatabaseColumnAddPost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
          * @summary 删除列
-         * @param {DbColumnInfoOutput} [body] 
+         * @param {DeleteDbColumnInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async columnDeletePost(body?: DbColumnInfoOutput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
-            return SysDataBaseApiFp(configuration).columnDeletePost(body, options).then((request) => request(axios, basePath));
+        async sysDatabaseColumnDeletePost(body?: DeleteDbColumnInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysDatabaseApiFp(configuration).sysDatabaseColumnDeletePost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
-         * @summary 编辑列
-         * @param {EditColumnInput} [body] 
+         * @summary 获取字段列表
+         * @param {string} [tableName] 表名
+         * @param {string} [configId] ConfigId
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async columnEditPost(body?: EditColumnInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
-            return SysDataBaseApiFp(configuration).columnEditPost(body, options).then((request) => request(axios, basePath));
+        async sysDatabaseColumnListGet(tableName?: string, configId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultListDbColumnOutput>> {
+            return SysDatabaseApiFp(configuration).sysDatabaseColumnListGet(tableName, configId, options).then((request) => request(axios, basePath));
         },
         /**
          * 
-         * @summary 获取表字段
-         * @param {string} [tableName] 表名
-         * @param {string} [configId] ConfigId
+         * @summary 编辑列
+         * @param {UpdateDbColumnInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async dataBaseColumnInfoListGet(tableName?: string, configId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultListDbColumnInfoOutput>> {
-            return SysDataBaseApiFp(configuration).dataBaseColumnInfoListGet(tableName, configId, options).then((request) => request(axios, basePath));
+        async sysDatabaseColumnUpdatePost(body?: UpdateDbColumnInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysDatabaseApiFp(configuration).sysDatabaseColumnUpdatePost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
-         * @summary 获取表信息
-         * @param {string} [configId] ConfigId
+         * @summary 创建实体
+         * @param {CreateEntityInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async dataBaseTableInfoListGet(configId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultListDbTableInfo>> {
-            return SysDataBaseApiFp(configuration).dataBaseTableInfoListGet(configId, options).then((request) => request(axios, basePath));
+        async sysDatabaseEntityCreatePost(body?: CreateEntityInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysDatabaseApiFp(configuration).sysDatabaseEntityCreatePost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
-         * @summary 新增表
-         * @param {DbTableInfoInput} [body] 
+         * @summary 获取库列表
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async tableAddPost(body?: DbTableInfoInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
-            return SysDataBaseApiFp(configuration).tableAddPost(body, options).then((request) => request(axios, basePath));
+        async sysDatabaseListGet(options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultListObject>> {
+            return SysDatabaseApiFp(configuration).sysDatabaseListGet(options).then((request) => request(axios, basePath));
         },
         /**
          * 
-         * @summary 创建实体
-         * @param {CreateEntityInput} [body] 
+         * @summary 增加表
+         * @param {DbTableInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async tableCreateEntityPost(body?: CreateEntityInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
-            return SysDataBaseApiFp(configuration).tableCreateEntityPost(body, options).then((request) => request(axios, basePath));
+        async sysDatabaseTableAddPost(body?: DbTableInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysDatabaseApiFp(configuration).sysDatabaseTableAddPost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
          * @summary 删除表
-         * @param {DeleteTableInput} [body] 
+         * @param {DeleteDbTableInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async tableDeletePost(body?: DeleteTableInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
-            return SysDataBaseApiFp(configuration).tableDeletePost(body, options).then((request) => request(axios, basePath));
+        async sysDatabaseTableDeletePost(body?: DeleteDbTableInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysDatabaseApiFp(configuration).sysDatabaseTableDeletePost(body, options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 获取表列表
+         * @param {string} [configId] ConfigId
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async sysDatabaseTableListGet(configId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultListDbTableInfo>> {
+            return SysDatabaseApiFp(configuration).sysDatabaseTableListGet(configId, options).then((request) => request(axios, basePath));
         },
         /**
          * 
          * @summary 编辑表
-         * @param {EditTableInput} [body] 
+         * @param {UpdateDbTableInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async tableEditPost(body?: EditTableInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
-            return SysDataBaseApiFp(configuration).tableEditPost(body, options).then((request) => request(axios, basePath));
+        async sysDatabaseTableUpdatePost(body?: UpdateDbTableInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysDatabaseApiFp(configuration).sysDatabaseTableUpdatePost(body, options).then((request) => request(axios, basePath));
         },
     };
 };
 
 /**
- * SysDataBaseApi - object-oriented interface
+ * SysDatabaseApi - object-oriented interface
  * @export
- * @class SysDataBaseApi
+ * @class SysDatabaseApi
  * @extends {BaseAPI}
  */
-export class SysDataBaseApi extends BaseAPI {
+export class SysDatabaseApi extends BaseAPI {
     /**
      * 
-     * @summary 加列
-     * @param {DbColumnInfoInput} [body] 
+     * @summary 加列
+     * @param {DbColumnInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
-     * @memberof SysDataBaseApi
+     * @memberof SysDatabaseApi
      */
-    public async columnAddPost(body?: DbColumnInfoInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
-        return SysDataBaseApiFp(this.configuration).columnAddPost(body, options).then((request) => request(this.axios, this.basePath));
+    public async sysDatabaseColumnAddPost(body?: DbColumnInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysDatabaseApiFp(this.configuration).sysDatabaseColumnAddPost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 
      * @summary 删除列
-     * @param {DbColumnInfoOutput} [body] 
+     * @param {DeleteDbColumnInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
-     * @memberof SysDataBaseApi
+     * @memberof SysDatabaseApi
      */
-    public async columnDeletePost(body?: DbColumnInfoOutput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
-        return SysDataBaseApiFp(this.configuration).columnDeletePost(body, options).then((request) => request(this.axios, this.basePath));
+    public async sysDatabaseColumnDeletePost(body?: DeleteDbColumnInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysDatabaseApiFp(this.configuration).sysDatabaseColumnDeletePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 
-     * @summary 编辑列
-     * @param {EditColumnInput} [body] 
+     * @summary 获取字段列表
+     * @param {string} [tableName] 表名
+     * @param {string} [configId] ConfigId
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
-     * @memberof SysDataBaseApi
+     * @memberof SysDatabaseApi
      */
-    public async columnEditPost(body?: EditColumnInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
-        return SysDataBaseApiFp(this.configuration).columnEditPost(body, options).then((request) => request(this.axios, this.basePath));
+    public async sysDatabaseColumnListGet(tableName?: string, configId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListDbColumnOutput>> {
+        return SysDatabaseApiFp(this.configuration).sysDatabaseColumnListGet(tableName, configId, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 
-     * @summary 获取表字段
-     * @param {string} [tableName] 表名
-     * @param {string} [configId] ConfigId
+     * @summary 编辑列
+     * @param {UpdateDbColumnInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
-     * @memberof SysDataBaseApi
+     * @memberof SysDatabaseApi
      */
-    public async dataBaseColumnInfoListGet(tableName?: string, configId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListDbColumnInfoOutput>> {
-        return SysDataBaseApiFp(this.configuration).dataBaseColumnInfoListGet(tableName, configId, options).then((request) => request(this.axios, this.basePath));
+    public async sysDatabaseColumnUpdatePost(body?: UpdateDbColumnInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysDatabaseApiFp(this.configuration).sysDatabaseColumnUpdatePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 
-     * @summary 获取表信息
-     * @param {string} [configId] ConfigId
+     * @summary 创建实体
+     * @param {CreateEntityInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
-     * @memberof SysDataBaseApi
+     * @memberof SysDatabaseApi
      */
-    public async dataBaseTableInfoListGet(configId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListDbTableInfo>> {
-        return SysDataBaseApiFp(this.configuration).dataBaseTableInfoListGet(configId, options).then((request) => request(this.axios, this.basePath));
+    public async sysDatabaseEntityCreatePost(body?: CreateEntityInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysDatabaseApiFp(this.configuration).sysDatabaseEntityCreatePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 
-     * @summary 新增表
-     * @param {DbTableInfoInput} [body] 
+     * @summary 获取库列表
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
-     * @memberof SysDataBaseApi
+     * @memberof SysDatabaseApi
      */
-    public async tableAddPost(body?: DbTableInfoInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
-        return SysDataBaseApiFp(this.configuration).tableAddPost(body, options).then((request) => request(this.axios, this.basePath));
+    public async sysDatabaseListGet(options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListObject>> {
+        return SysDatabaseApiFp(this.configuration).sysDatabaseListGet(options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 
-     * @summary 创建实体
-     * @param {CreateEntityInput} [body] 
+     * @summary 增加表
+     * @param {DbTableInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
-     * @memberof SysDataBaseApi
+     * @memberof SysDatabaseApi
      */
-    public async tableCreateEntityPost(body?: CreateEntityInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
-        return SysDataBaseApiFp(this.configuration).tableCreateEntityPost(body, options).then((request) => request(this.axios, this.basePath));
+    public async sysDatabaseTableAddPost(body?: DbTableInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysDatabaseApiFp(this.configuration).sysDatabaseTableAddPost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 
      * @summary 删除表
-     * @param {DeleteTableInput} [body] 
+     * @param {DeleteDbTableInput} [body] 
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysDatabaseApi
+     */
+    public async sysDatabaseTableDeletePost(body?: DeleteDbTableInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysDatabaseApiFp(this.configuration).sysDatabaseTableDeletePost(body, options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 获取表列表
+     * @param {string} [configId] ConfigId
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
-     * @memberof SysDataBaseApi
+     * @memberof SysDatabaseApi
      */
-    public async tableDeletePost(body?: DeleteTableInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
-        return SysDataBaseApiFp(this.configuration).tableDeletePost(body, options).then((request) => request(this.axios, this.basePath));
+    public async sysDatabaseTableListGet(configId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListDbTableInfo>> {
+        return SysDatabaseApiFp(this.configuration).sysDatabaseTableListGet(configId, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 
      * @summary 编辑表
-     * @param {EditTableInput} [body] 
+     * @param {UpdateDbTableInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
-     * @memberof SysDataBaseApi
+     * @memberof SysDatabaseApi
      */
-    public async tableEditPost(body?: EditTableInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
-        return SysDataBaseApiFp(this.configuration).tableEditPost(body, options).then((request) => request(this.axios, this.basePath));
+    public async sysDatabaseTableUpdatePost(body?: UpdateDbTableInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysDatabaseApiFp(this.configuration).sysDatabaseTableUpdatePost(body, options).then((request) => request(this.axios, this.basePath));
     }
 }

+ 11 - 11
Web/src/api-services/models/admin-result-list-db-column-info-output.ts → Web/src/api-services/models/admin-result-list-db-column-output.ts

@@ -11,47 +11,47 @@
  * https://github.com/swagger-api/swagger-codegen.git
  * Do not edit the class manually.
  */
-import { DbColumnInfoOutput } from './db-column-info-output';
+import { DbColumnOutput } from './db-column-output';
 /**
  * 全局返回结果
  * @export
- * @interface AdminResultListDbColumnInfoOutput
+ * @interface AdminResultListDbColumnOutput
  */
-export interface AdminResultListDbColumnInfoOutput {
+export interface AdminResultListDbColumnOutput {
     /**
      * 状态码
      * @type {number}
-     * @memberof AdminResultListDbColumnInfoOutput
+     * @memberof AdminResultListDbColumnOutput
      */
     code?: number;
     /**
      * 类型success、warning、error
      * @type {string}
-     * @memberof AdminResultListDbColumnInfoOutput
+     * @memberof AdminResultListDbColumnOutput
      */
     type?: string | null;
     /**
      * 错误信息
      * @type {string}
-     * @memberof AdminResultListDbColumnInfoOutput
+     * @memberof AdminResultListDbColumnOutput
      */
     message?: string | null;
     /**
      * 数据
-     * @type {Array<DbColumnInfoOutput>}
-     * @memberof AdminResultListDbColumnInfoOutput
+     * @type {Array<DbColumnOutput>}
+     * @memberof AdminResultListDbColumnOutput
      */
-    result?: Array<DbColumnInfoOutput> | null;
+    result?: Array<DbColumnOutput> | null;
     /**
      * 附加数据
      * @type {any}
-     * @memberof AdminResultListDbColumnInfoOutput
+     * @memberof AdminResultListDbColumnOutput
      */
     extras?: any | null;
     /**
      * 时间
      * @type {Date}
-     * @memberof AdminResultListDbColumnInfoOutput
+     * @memberof AdminResultListDbColumnOutput
      */
     time?: Date;
 }

+ 56 - 0
Web/src/api-services/models/admin-result-list-object.ts

@@ -0,0 +1,56 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * 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 AdminResultListObject
+ */
+export interface AdminResultListObject {
+    /**
+     * 状态码
+     * @type {number}
+     * @memberof AdminResultListObject
+     */
+    code?: number;
+    /**
+     * 类型success、warning、error
+     * @type {string}
+     * @memberof AdminResultListObject
+     */
+    type?: string | null;
+    /**
+     * 错误信息
+     * @type {string}
+     * @memberof AdminResultListObject
+     */
+    message?: string | null;
+    /**
+     * 数据
+     * @type {Array<any>}
+     * @memberof AdminResultListObject
+     */
+    result?: Array<any> | null;
+    /**
+     * 附加数据
+     * @type {any}
+     * @memberof AdminResultListObject
+     */
+    extras?: any | null;
+    /**
+     * 时间
+     * @type {Date}
+     * @memberof AdminResultListObject
+     */
+    time?: Date;
+}

+ 5 - 5
Web/src/api-services/models/create-entity-input.ts

@@ -18,31 +18,31 @@
  */
 export interface CreateEntityInput {
     /**
-     * 
+     * 表名
      * @type {string}
      * @memberof CreateEntityInput
      */
     tableName?: string | null;
     /**
-     * 
+     * 实体名
      * @type {string}
      * @memberof CreateEntityInput
      */
     entityName?: string | null;
     /**
-     * 
+     * 基类名
      * @type {string}
      * @memberof CreateEntityInput
      */
     baseClassName?: string | null;
     /**
-     * 
+     * 导出位置
      * @type {string}
      * @memberof CreateEntityInput
      */
     position?: string | null;
     /**
-     * 
+     * 库标识
      * @type {string}
      * @memberof CreateEntityInput
      */

+ 17 - 11
Web/src/api-services/models/db-column-info-input.ts → Web/src/api-services/models/db-column-input.ts

@@ -14,61 +14,67 @@
 /**
  * 
  * @export
- * @interface DbColumnInfoInput
+ * @interface DbColumnInput
  */
-export interface DbColumnInfoInput {
+export interface DbColumnInput {
     /**
      * 
      * @type {string}
-     * @memberof DbColumnInfoInput
+     * @memberof DbColumnInput
+     */
+    configId?: string | null;
+    /**
+     * 
+     * @type {string}
+     * @memberof DbColumnInput
      */
     tableName?: string | null;
     /**
      * 
      * @type {string}
-     * @memberof DbColumnInfoInput
+     * @memberof DbColumnInput
      */
     dbColumnName?: string | null;
     /**
      * 
      * @type {string}
-     * @memberof DbColumnInfoInput
+     * @memberof DbColumnInput
      */
     dataType?: string | null;
     /**
      * 
      * @type {number}
-     * @memberof DbColumnInfoInput
+     * @memberof DbColumnInput
      */
     length?: number;
     /**
      * 
      * @type {string}
-     * @memberof DbColumnInfoInput
+     * @memberof DbColumnInput
      */
     columnDescription?: string | null;
     /**
      * 
      * @type {number}
-     * @memberof DbColumnInfoInput
+     * @memberof DbColumnInput
      */
     isNullable?: number;
     /**
      * 
      * @type {number}
-     * @memberof DbColumnInfoInput
+     * @memberof DbColumnInput
      */
     isIdentity?: number;
     /**
      * 
      * @type {number}
-     * @memberof DbColumnInfoInput
+     * @memberof DbColumnInput
      */
     isPrimarykey?: number;
     /**
      * 
      * @type {number}
-     * @memberof DbColumnInfoInput
+     * @memberof DbColumnInput
      */
     decimalDigits?: number;
 }

+ 41 - 17
Web/src/api-services/models/db-column-info-output.ts → Web/src/api-services/models/db-column-output.ts

@@ -14,97 +14,121 @@
 /**
  * 
  * @export
- * @interface DbColumnInfoOutput
+ * @interface DbColumnOutput
  */
-export interface DbColumnInfoOutput {
+export interface DbColumnOutput {
     /**
      * 
      * @type {string}
-     * @memberof DbColumnInfoOutput
+     * @memberof DbColumnOutput
      */
     tableName?: string | null;
     /**
      * 
      * @type {number}
-     * @memberof DbColumnInfoOutput
+     * @memberof DbColumnOutput
      */
     tableId?: number;
     /**
      * 
      * @type {string}
-     * @memberof DbColumnInfoOutput
+     * @memberof DbColumnOutput
      */
     dbColumnName?: string | null;
     /**
      * 
      * @type {string}
-     * @memberof DbColumnInfoOutput
+     * @memberof DbColumnOutput
      */
     propertyName?: string | null;
     /**
      * 
      * @type {string}
-     * @memberof DbColumnInfoOutput
+     * @memberof DbColumnOutput
      */
     dataType?: string | null;
+    /**
+     * 
+     * @type {any}
+     * @memberof DbColumnOutput
+     */
+    propertyType?: any | null;
     /**
      * 
      * @type {number}
-     * @memberof DbColumnInfoOutput
+     * @memberof DbColumnOutput
      */
     length?: number;
     /**
      * 
      * @type {string}
-     * @memberof DbColumnInfoOutput
+     * @memberof DbColumnOutput
      */
     columnDescription?: string | null;
     /**
      * 
      * @type {string}
-     * @memberof DbColumnInfoOutput
+     * @memberof DbColumnOutput
      */
     defaultValue?: string | null;
     /**
      * 
      * @type {boolean}
-     * @memberof DbColumnInfoOutput
+     * @memberof DbColumnOutput
      */
     isNullable?: boolean;
     /**
      * 
      * @type {boolean}
-     * @memberof DbColumnInfoOutput
+     * @memberof DbColumnOutput
      */
     isIdentity?: boolean;
     /**
      * 
      * @type {boolean}
-     * @memberof DbColumnInfoOutput
+     * @memberof DbColumnOutput
      */
     isPrimarykey?: boolean;
     /**
      * 
      * @type {any}
-     * @memberof DbColumnInfoOutput
+     * @memberof DbColumnOutput
      */
     value?: any | null;
     /**
      * 
      * @type {number}
-     * @memberof DbColumnInfoOutput
+     * @memberof DbColumnOutput
      */
     decimalDigits?: number;
     /**
      * 
      * @type {number}
-     * @memberof DbColumnInfoOutput
+     * @memberof DbColumnOutput
      */
     scale?: number;
     /**
      * 
      * @type {boolean}
-     * @memberof DbColumnInfoOutput
+     * @memberof DbColumnOutput
      */
     isArray?: boolean;
+    /**
+     * 
+     * @type {boolean}
+     * @memberof DbColumnOutput
+     */
+    isJson?: boolean;
+    /**
+     * 
+     * @type {boolean}
+     * @memberof DbColumnOutput
+     */
+    isUnsigned?: boolean | null;
+    /**
+     * 
+     * @type {number}
+     * @memberof DbColumnOutput
+     */
+    createTableFieldSort?: number;
 }

+ 10 - 10
Web/src/api-services/models/db-table-info-input.ts → Web/src/api-services/models/db-table-input.ts

@@ -11,35 +11,35 @@
  * https://github.com/swagger-api/swagger-codegen.git
  * Do not edit the class manually.
  */
-import { DbColumnInfoInput } from './db-column-info-input';
+import { DbColumnInput } from './db-column-input';
 /**
  * 
  * @export
- * @interface DbTableInfoInput
+ * @interface DbTableInput
  */
-export interface DbTableInfoInput {
+export interface DbTableInput {
     /**
      * 
      * @type {string}
-     * @memberof DbTableInfoInput
+     * @memberof DbTableInput
      */
     configId?: string | null;
     /**
      * 
      * @type {string}
-     * @memberof DbTableInfoInput
+     * @memberof DbTableInput
      */
-    name?: string | null;
+    tableName?: string | null;
     /**
      * 
      * @type {string}
-     * @memberof DbTableInfoInput
+     * @memberof DbTableInput
      */
     description?: string | null;
     /**
      * 
-     * @type {Array<DbColumnInfoInput>}
-     * @memberof DbTableInfoInput
+     * @type {Array<DbColumnInput>}
+     * @memberof DbTableInput
      */
-    dbColumnInfoList?: Array<DbColumnInfoInput> | null;
+    dbColumnInfoList?: Array<DbColumnInput> | null;
 }

+ 7 - 13
Web/src/api-services/models/edit-column-input.ts → Web/src/api-services/models/delete-db-column-input.ts

@@ -14,31 +14,25 @@
 /**
  * 
  * @export
- * @interface EditColumnInput
+ * @interface DeleteDbColumnInput
  */
-export interface EditColumnInput {
+export interface DeleteDbColumnInput {
     /**
      * 
      * @type {string}
-     * @memberof EditColumnInput
+     * @memberof DeleteDbColumnInput
      */
-    tableName?: string | null;
+    configId?: string | null;
     /**
      * 
      * @type {string}
-     * @memberof EditColumnInput
+     * @memberof DeleteDbColumnInput
      */
-    oldName?: string | null;
+    tableName?: string | null;
     /**
      * 
      * @type {string}
-     * @memberof EditColumnInput
+     * @memberof DeleteDbColumnInput
      */
     dbColumnName?: string | null;
-    /**
-     * 
-     * @type {string}
-     * @memberof EditColumnInput
-     */
-    columnDescription?: string | null;
 }

+ 5 - 5
Web/src/api-services/models/delete-table-input.ts → Web/src/api-services/models/delete-db-table-input.ts

@@ -14,19 +14,19 @@
 /**
  * 
  * @export
- * @interface DeleteTableInput
+ * @interface DeleteDbTableInput
  */
-export interface DeleteTableInput {
+export interface DeleteDbTableInput {
     /**
      * 
      * @type {string}
-     * @memberof DeleteTableInput
+     * @memberof DeleteDbTableInput
      */
     configId?: string | null;
     /**
      * 
      * @type {string}
-     * @memberof DeleteTableInput
+     * @memberof DeleteDbTableInput
      */
-    name?: string | null;
+    tableName?: string | null;
 }

+ 9 - 7
Web/src/api-services/models/index.ts

@@ -17,11 +17,12 @@ export * from './admin-result-int32';
 export * from './admin-result-int64';
 export * from './admin-result-list-code-gen-config';
 export * from './admin-result-list-database-output';
-export * from './admin-result-list-db-column-info-output';
+export * from './admin-result-list-db-column-output';
 export * from './admin-result-list-db-table-info';
 export * from './admin-result-list-file-output';
 export * from './admin-result-list-int64';
 export * from './admin-result-list-menu-output';
+export * from './admin-result-list-object';
 export * from './admin-result-list-role-output';
 export * from './admin-result-list-selector-dto';
 export * from './admin-result-list-string';
@@ -66,14 +67,16 @@ export * from './code-gen-config';
 export * from './create-entity-input';
 export * from './data-scope-enum';
 export * from './database-output';
-export * from './db-column-info-input';
-export * from './db-column-info-output';
+export * from './db-column-input';
+export * from './db-column-output';
 export * from './db-object-type';
 export * from './db-table-info';
-export * from './db-table-info-input';
+export * from './db-table-input';
 export * from './db-type';
 export * from './delete-code-gen-input';
 export * from './delete-config-input';
+export * from './delete-db-column-input';
+export * from './delete-db-table-input';
 export * from './delete-dict-data-input';
 export * from './delete-dict-type-input';
 export * from './delete-file-input';
@@ -82,14 +85,11 @@ export * from './delete-notice-input';
 export * from './delete-org-input';
 export * from './delete-pos-input';
 export * from './delete-role-input';
-export * from './delete-table-input';
 export * from './delete-tenant-input';
 export * from './delete-timer-input';
 export * from './delete-user-input';
 export * from './dict-data-input';
 export * from './dict-type-input';
-export * from './edit-column-input';
-export * from './edit-table-input';
 export * from './file-input';
 export * from './file-output';
 export * from './gen-auth-url-input';
@@ -163,6 +163,8 @@ export * from './time-span';
 export * from './timer-output';
 export * from './update-code-gen-input';
 export * from './update-config-input';
+export * from './update-db-column-input';
+export * from './update-db-table-input';
 export * from './update-dict-data-input';
 export * from './update-dict-type-input';
 export * from './update-menu-input';

+ 50 - 0
Web/src/api-services/models/update-db-column-input.ts

@@ -0,0 +1,50 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * 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 UpdateDbColumnInput
+ */
+export interface UpdateDbColumnInput {
+    /**
+     * 
+     * @type {string}
+     * @memberof UpdateDbColumnInput
+     */
+    configId?: string | null;
+    /**
+     * 
+     * @type {string}
+     * @memberof UpdateDbColumnInput
+     */
+    tableName?: string | null;
+    /**
+     * 
+     * @type {string}
+     * @memberof UpdateDbColumnInput
+     */
+    columnName?: string | null;
+    /**
+     * 
+     * @type {string}
+     * @memberof UpdateDbColumnInput
+     */
+    oldColumnName?: string | null;
+    /**
+     * 
+     * @type {string}
+     * @memberof UpdateDbColumnInput
+     */
+    description?: string | null;
+}

+ 8 - 8
Web/src/api-services/models/edit-table-input.ts → Web/src/api-services/models/update-db-table-input.ts

@@ -14,31 +14,31 @@
 /**
  * 
  * @export
- * @interface EditTableInput
+ * @interface UpdateDbTableInput
  */
-export interface EditTableInput {
+export interface UpdateDbTableInput {
     /**
      * 
      * @type {string}
-     * @memberof EditTableInput
+     * @memberof UpdateDbTableInput
      */
     configId?: string | null;
     /**
      * 
      * @type {string}
-     * @memberof EditTableInput
+     * @memberof UpdateDbTableInput
      */
-    name?: string | null;
+    tableName?: string | null;
     /**
      * 
      * @type {string}
-     * @memberof EditTableInput
+     * @memberof UpdateDbTableInput
      */
-    oldName?: string | null;
+    oldTableName?: string | null;
     /**
      * 
      * @type {string}
-     * @memberof EditTableInput
+     * @memberof UpdateDbTableInput
      */
     description?: string | null;
 }

+ 91 - 0
Web/src/views/system/database/component/editColumn.vue

@@ -0,0 +1,91 @@
+<template>
+	<div class="sys-dbColumn-container">
+		<el-dialog v-model="isShowDialog" width="600px">
+			<template #header>
+				<div style="font-size: large" v-drag="['.el-dialog', '.el-dialog__header']">
+					{{ '列编辑' }}
+				</div>
+			</template>
+			<el-form :model="ruleForm" :rules="ruleRules" ref="ruleFormRef" size="default" label-width="80px">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+						<el-form-item label="列名称" prop="columnName">
+							<el-input v-model="ruleForm.columnName" placeholder="列名称" clearable></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+						<el-form-item label="描述" prop="description">
+							<el-input v-model="ruleForm.description" placeholder="描述" clearable type="textarea"></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="cancel" size="default">取 消</el-button>
+					<el-button type="primary" @click="submit" size="default">确 定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+import { reactive, toRefs, defineComponent, getCurrentInstance, ref } from 'vue';
+
+import { getAPI } from '/@/utils/axios-utils';
+import { SysDatabaseApi } from '/@/api-services/api';
+
+export default defineComponent({
+	name: 'sysEditColumn',
+	components: {},
+	setup() {
+		const { proxy } = getCurrentInstance() as any;
+		const ruleFormRef = ref();
+		const state = reactive({
+			isShowDialog: false,
+			ruleForm: {
+				configId: '',
+				tableName: '',
+				columnName: '',
+				oldColumnName: '',
+				description: '',
+			},
+			ruleRules: {
+				columnName: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
+				description: [{ required: true, message: '描述不能为空', trigger: 'blur' }],
+			},
+		});
+		// 打开弹窗
+		const openDialog = (row: any) => {
+			state.ruleForm = row;
+			state.isShowDialog = true;
+		};
+		// 关闭弹窗
+		const closeDialog = () => {
+			proxy.mittBus.emit('submitRefreshColumn');
+			state.isShowDialog = false;
+		};
+		// 取消
+		const cancel = () => {
+			state.isShowDialog = false;
+		};
+		// 提交
+		const submit = () => {
+			ruleFormRef.value.validate(async (valid: boolean) => {
+				if (!valid) return;
+				await getAPI(SysDatabaseApi).sysDatabaseColumnUpdatePost(state.ruleForm);
+				closeDialog();
+			});
+		};
+		return {
+			ruleFormRef,
+			openDialog,
+			closeDialog,
+			cancel,
+			submit,
+			...toRefs(state),
+		};
+	},
+});
+</script>

+ 90 - 0
Web/src/views/system/database/component/editTable.vue

@@ -0,0 +1,90 @@
+<template>
+	<div class="sys-dbTable-container">
+		<el-dialog v-model="isShowDialog" width="600px">
+			<template #header>
+				<div style="font-size: large" v-drag="['.el-dialog', '.el-dialog__header']">
+					{{ '表编辑' }}
+				</div>
+			</template>
+			<el-form :model="ruleForm" :rules="ruleRules" ref="ruleFormRef" size="default" label-width="80px">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+						<el-form-item label="表名称" prop="tableName">
+							<el-input v-model="ruleForm.tableName" placeholder="表名称" clearable></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+						<el-form-item label="描述" prop="description">
+							<el-input v-model="ruleForm.description" placeholder="描述" clearable type="textarea"></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="cancel" size="default">取 消</el-button>
+					<el-button type="primary" @click="submit" size="default">确 定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+import { reactive, toRefs, defineComponent, getCurrentInstance, ref } from 'vue';
+
+import { getAPI } from '/@/utils/axios-utils';
+import { SysDatabaseApi } from '/@/api-services/api';
+
+export default defineComponent({
+	name: 'sysEditTable',
+	components: {},
+	setup() {
+		const { proxy } = getCurrentInstance() as any;
+		const ruleFormRef = ref();
+		const state = reactive({
+			isShowDialog: false,
+			ruleForm: {
+				configId: '',
+				tableName: '',
+				oldTableName: '',
+				description: '',
+			},
+			ruleRules: {
+				tableName: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
+				description: [{ required: true, message: '描述不能为空', trigger: 'blur' }],
+			},
+		});
+		// 打开弹窗
+		const openDialog = (row: any) => {
+			state.ruleForm = row;
+			state.isShowDialog = true;
+		};
+		// 关闭弹窗
+		const closeDialog = () => {
+			proxy.mittBus.emit('submitRefreshTable');
+			state.isShowDialog = false;
+		};
+		// 取消
+		const cancel = () => {
+			state.isShowDialog = false;
+		};
+		// 提交
+		const submit = () => {
+			ruleFormRef.value.validate(async (valid: boolean) => {
+				if (!valid) return;
+				await getAPI(SysDatabaseApi).sysDatabaseTableUpdatePost(state.ruleForm);
+				closeDialog();
+			});
+		};
+		return {
+			ruleFormRef,
+			openDialog,
+			closeDialog,
+			cancel,
+			submit,
+			...toRefs(state),
+		};
+	},
+});
+</script>

+ 210 - 0
Web/src/views/system/database/index.vue

@@ -0,0 +1,210 @@
+<template>
+	<div class="sys-database-container">
+		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
+			<el-form :model="queryParams" ref="queryForm" :inline="true" v-loading="loading">
+				<el-form-item label="库名" prop="configId">
+					<el-select v-model="configId" placeholder="库名" filterable @change="handleQueryTable">
+						<el-option v-for="item in dbData" :key="item" :label="item" :value="item" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="表名" prop="tableName">
+					<el-select v-model="tableName" placeholder="表名" filterable clearable @change="handleQueryColunm">
+						<el-option v-for="item in tableData" :key="item.name" :label="item.name + '[' + item.description + ']'" :value="item.name" />
+					</el-select>
+				</el-form-item>
+				<el-form-item>
+					<!-- <el-button type="primary" icon="ele-Search" @click="handleQueryTable"> 查看 </el-button> -->
+					<el-button icon="ele-Edit" type="primary" @click="openEditTable"> 编辑表 </el-button>
+					<el-button icon="ele-Delete" type="danger" @click="delTable"> 删除表 </el-button>
+					<el-button icon="ele-Plus" @click="openAddTable"> 增加表 </el-button>
+					<el-button icon="ele-Plus" @click="openAddColumn"> 增加列 </el-button>
+				</el-form-item>
+			</el-form>
+		</el-card>
+
+		<el-card shadow="hover" style="margin-top: 8px">
+			<el-table :data="columnData" style="width: 100%" v-loading="loading1" border>
+				<el-table-column type="index" label="序号" width="55" align="center" />
+				<el-table-column prop="dbColumnName" label="字段名" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="dataType" label="数据类型" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="isPrimarykey" label="主键" width="70" align="center" show-overflow-tooltip>
+					<template #default="scope">
+						<el-tag type="success" v-if="scope.row.isPrimarykey === true">是</el-tag>
+						<el-tag type="info" v-else>否</el-tag>
+					</template>
+				</el-table-column>
+				<el-table-column prop="isIdentity" label="自增" width="70" align="center" show-overflow-tooltip>
+					<template #default="scope">
+						<el-tag type="success" v-if="scope.row.isIdentity === true">是</el-tag>
+						<el-tag type="info" v-else>否</el-tag>
+					</template>
+				</el-table-column>
+				<el-table-column prop="isNullable" label="可空" width="70" align="center" show-overflow-tooltip>
+					<template #default="scope">
+						<el-tag v-if="scope.row.isNullable === true">是</el-tag>
+						<el-tag type="info" v-else>否</el-tag>
+					</template>
+				</el-table-column>
+				<el-table-column prop="length" label="长度" width="70" align="center" show-overflow-tooltip> </el-table-column>
+				<el-table-column prop="decimalDigits" label="精度" width="70" align="center" show-overflow-tooltip> </el-table-column>
+				<el-table-column prop="defaultValue" label="默认值" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="columnDescription" label="描述" show-overflow-tooltip></el-table-column>
+				<el-table-column label="操作" width="140" fixed="right" align="center" show-overflow-tooltip>
+					<template #default="scope">
+						<el-button icon="ele-Edit" size="small" text type="primary" @click="openEditColumn(scope.row)"> 编辑 </el-button>
+						<el-button icon="ele-Delete" size="small" text type="danger" @click="delColumn(scope.row)"> 删除 </el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+		</el-card>
+		<EditTable ref="editTableRef" />
+		<EditColumn ref="editColumnRef" />
+	</div>
+</template>
+
+<script lang="ts">
+import { toRefs, reactive, onMounted, ref, defineComponent, onUnmounted, getCurrentInstance } from 'vue';
+import { ElMessageBox, ElMessage } from 'element-plus';
+import EditTable from '/@/views/system/database/component/editTable.vue';
+import EditColumn from '/@/views/system/database/component/editColumn.vue';
+
+import { getAPI } from '/@/utils/axios-utils';
+import { SysDatabaseApi } from '/@/api-services/api';
+
+export default defineComponent({
+	name: 'sysDatabase',
+	components: { EditTable, EditColumn },
+	setup() {
+		const { proxy } = getCurrentInstance() as any;
+		const editTableRef = ref();
+		const editColumnRef = ref();
+		const state = reactive({
+			loading: false,
+			loading1: false,
+			dbData: [] as any,
+			configId: '',
+			tableData: [] as any,
+			tableName: '',
+			columnData: [] as any,
+			queryParams: {
+				name: undefined,
+				code: undefined,
+			},
+			editPosTitle: '',
+		});
+		onMounted(async () => {
+			state.loading = true;
+			var res = await getAPI(SysDatabaseApi).sysDatabaseListGet();
+			state.dbData = res.data.result;
+			state.loading = false;
+
+			proxy.mittBus.on('submitRefreshTable', () => {
+				handleQueryTable();
+			});
+			proxy.mittBus.on('submitRefreshColumn', () => {
+				handleQueryColunm();
+			});
+		});
+		onUnmounted(() => {
+			proxy.mittBus.off('submitRefreshTable');
+			proxy.mittBus.off('submitRefreshColumn');
+		});
+		// 表查询操作
+		const handleQueryTable = async () => {
+			state.tableName = '';
+			state.columnData = [];
+
+			state.loading = true;
+			var res = await getAPI(SysDatabaseApi).sysDatabaseTableListGet(state.configId);
+			state.tableData = res.data.result;
+			state.loading = false;
+		};
+		// 列查询操作
+		const handleQueryColunm = async () => {
+			state.loading1 = true;
+			var res = await getAPI(SysDatabaseApi).sysDatabaseColumnListGet(state.tableName, state.configId);
+			state.columnData = res.data.result;
+			state.loading1 = false;
+		};
+		// 打开表编辑页面
+		const openEditTable = () => {
+			if (state.configId == '' || state.tableName == '') return;
+
+			var res = state.tableData.filter((u: any) => u.name == state.tableName);
+			var table: any = {
+				configId: state.configId,
+				tableName: state.tableName,
+				oldTableName: state.tableName,
+				description: res.description,
+			};
+			editTableRef.value.openDialog(table);
+		};
+		// 打开表增加页面
+		const openAddTable = () => {
+			ElMessage({
+				type: 'success',
+				message: `期待您的PR! ${state.configId}`,
+			});
+		};
+		// 打开列编辑页面
+		const openEditColumn = (row: any) => {
+			var column: any = {
+				configId: state.configId,
+				tableName: row.tableName,
+				columnName: row.dbColumnName,
+				oldColumnName: row.dbColumnName,
+				description: row.columnDescription,
+			};
+			editColumnRef.value.openDialog(column);
+		};
+		// 打开列增加页面
+		const openAddColumn = () => {
+			ElMessage({
+				type: 'success',
+				message: `期待您的PR! ${state.configId}`,
+			});
+		};
+		// 删除表
+		const delTable = () => {
+			ElMessageBox.confirm(`确定删除表:【${state.tableName}】?`, '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(async () => {
+					await getAPI(SysDatabaseApi).sysDatabaseTableDeletePost({ configId: state.configId, tableName: state.tableName });
+					handleQueryTable();
+					ElMessage.success('表删除成功');
+				})
+				.catch(() => {});
+		};
+		// 删除列
+		const delColumn = (row: any) => {
+			ElMessageBox.confirm(`确定删除列:【${row.dbColumnName}】?`, '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(async () => {
+					await getAPI(SysDatabaseApi).sysDatabaseColumnDeletePost({ configId: state.configId, tableName: state.tableName, dbColumnName: row.dbColumnName });
+					handleQueryTable();
+					ElMessage.success('列删除成功');
+				})
+				.catch(() => {});
+		};
+		return {
+			handleQueryTable,
+			handleQueryColunm,
+			openEditTable,
+			openAddTable,
+			openEditColumn,
+			openAddColumn,
+			delTable,
+			delColumn,
+			editTableRef,
+			editColumnRef,
+			...toRefs(state),
+		};
+	},
+});
+</script>

+ 1 - 0
Web/src/views/system/onlineUser/index.vue

@@ -95,6 +95,7 @@ connection.onclose(async () => {
 });
 // 重连中
 connection.onreconnecting(() => {
+	state.onlineUserList = [];
 	ElNotification({
 		title: '提示',
 		message: '与服务器重连中...',

+ 3 - 3
Web/src/views/system/org/component/orgTree.vue

@@ -56,14 +56,14 @@ const filterText = ref('');
 const treeRef = ref<InstanceType<typeof ElTree>>();
 
 const state = reactive({
-	loading: true,
+	loading: false,
 	orgData: [] as any,
 	isShowCheckbox: false,
 	ownOrgData: [],
 });
 
 onMounted(() => {
-	// initTreeData();
+	initTreeData();
 });
 
 watch(filterText, (val) => {
@@ -123,7 +123,7 @@ const nodeClick = (node: any) => {
 
 //const orgTreeData = state.orgData; // 异步数据导出不了?
 // 导出
-defineExpose({ setCheckedKeys, getCheckedKeys, updateTreeData });
+defineExpose({ initTreeData, updateTreeData, setCheckedKeys, getCheckedKeys });
 </script>
 
 <style scoped>

+ 1 - 1
Web/src/views/system/server/index.vue

@@ -172,7 +172,7 @@ export default defineComponent({
 		onActivated(() => {
 			state.timer = setInterval(() => {
 				refreshData();
-			}, 5000);
+			}, 10000);
 		});
 		onDeactivated(() => {
 			clearInterval(state.timer);

+ 1 - 1
Web/src/views/system/user/index.vue

@@ -147,7 +147,7 @@ export default defineComponent({
 			state.loading = true;
 			var res = await getAPI(SysOrgApi).sysOrgListGet(0);
 			state.orgTreeData = res.data.result;
-			orgTreeRef.value.updateTreeData(state.orgTreeData); // 赋值机构树
+			// orgTreeRef.value.updateTreeData(state.orgTreeData); // 赋值机构树
 			state.loading = false;
 		};
 		// 查询操作