diff --git a/Admin.NET/Admin.NET.Core/Option/SMSOptions.cs b/Admin.NET/Admin.NET.Core/Option/SMSOptions.cs
index 692c35286f22a354eeed944d1bb6f198a6785864..524e08b633744ef0e3b3f7032d0e2dd14ac31314 100644
--- a/Admin.NET/Admin.NET.Core/Option/SMSOptions.cs
+++ b/Admin.NET/Admin.NET.Core/Option/SMSOptions.cs
@@ -88,9 +88,9 @@ public sealed class CustomSMSSettings
///
/// API 接口地址模板
- /// 支持占位符: {mobile} - 手机号, {content} - 短信内容, {code} - 验证码
- /// 示例: https://api.xxxx.com/sms?u=xxxx&key=59e03f49c3dbb5033&m={mobile}&c={content}
+ /// 支持占位符: {mobile} - 手机号, {content} - 短信内容, {code} - 验证码
///
+ /// 示例: https://api.xxxx.com/sms?u=xxxx&key=59e03f49c3dbb5033&m={mobile}&c={content}
public string ApiUrl { get; set; }
///
@@ -106,9 +106,11 @@ public sealed class CustomSMSSettings
///
/// POST 请求的数据模板(支持占位符)
- /// JSON 格式示例: {"mobile":"{mobile}","content":"{content}","apikey":"your_key"}
- /// Form 格式示例: mobile={mobile}&content={content}&apikey=your_key
///
+ ///
+ /// JSON 格式示例: {"mobile":"{mobile}","content":"{content}","apikey":"your_key"}
+ /// Form 格式示例: mobile={mobile}&content={content}&apikey=your_key
+ ///
public string PostData { get; set; }
///
diff --git a/Admin.NET/Admin.NET.Core/Service/DataBase/SysDatabaseService.cs b/Admin.NET/Admin.NET.Core/Service/DataBase/SysDatabaseService.cs
index 9d9e38a732055206d3f6039506cb012d34695668..13d3cda189c0eeeb9936117b17702fdd778c1dc1 100644
--- a/Admin.NET/Admin.NET.Core/Service/DataBase/SysDatabaseService.cs
+++ b/Admin.NET/Admin.NET.Core/Service/DataBase/SysDatabaseService.cs
@@ -175,15 +175,21 @@ public class SysDatabaseService : IDynamicApiController, ITransient
public void UpdateColumn(UpdateDbColumnInput input)
{
var db = _db.AsTenant().GetConnectionScope(input.ConfigId);
- db.DbMaintenance.RenameColumn(input.TableName, input.OldColumnName, input.ColumnName);
- if (!string.IsNullOrWhiteSpace(input.DefaultValue))
+
+ // 前端未修改列名时,不进行重命名操作,避免报错
+ if (input.OldColumnName != input.ColumnName)
{
- db.DbMaintenance.AddDefaultValue(input.TableName, input.ColumnName, input.DefaultValue);
+ db.DbMaintenance.RenameColumn(input.TableName, input.OldColumnName, input.ColumnName);
}
- if (db.DbMaintenance.IsAnyColumnRemark(input.ColumnName, input.TableName))
+
+ if (!string.IsNullOrWhiteSpace(input.DefaultValue))
{
- db.DbMaintenance.DeleteColumnRemark(input.ColumnName, input.TableName);
+ db.DbMaintenance.AddDefaultValue(input.TableName, input.ColumnName, input.DefaultValue);
}
+ //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);
}
diff --git a/Admin.NET/Admin.NET.Core/Service/Dict/Dto/DictTypeInput.cs b/Admin.NET/Admin.NET.Core/Service/Dict/Dto/DictTypeInput.cs
index 10682d5dcf6d0260762b053583bbbd0f98cb89cb..960e6a9474cf3b5397a709fa1985f15ed6b2a80d 100644
--- a/Admin.NET/Admin.NET.Core/Service/Dict/Dto/DictTypeInput.cs
+++ b/Admin.NET/Admin.NET.Core/Service/Dict/Dto/DictTypeInput.cs
@@ -25,6 +25,10 @@ public class PageDictTypeInput : BasePageInput
public class AddDictTypeInput : SysDictType
{
+ ///
+ /// 是否是租户字典(Y-是,N-否)
+ ///
+ public override YesNoEnum IsTenant { get; set; } = YesNoEnum.Y;
///
/// 是否是内置字典(Y-是,N-否)
///
diff --git a/Admin.NET/Admin.NET.Core/Service/Dict/SysDictDataService.cs b/Admin.NET/Admin.NET.Core/Service/Dict/SysDictDataService.cs
index cba2d427553854142f288ce7172970482918e76b..7487e96cd6eb7d59583f048427d67639d5c30c02 100644
--- a/Admin.NET/Admin.NET.Core/Service/Dict/SysDictDataService.cs
+++ b/Admin.NET/Admin.NET.Core/Service/Dict/SysDictDataService.cs
@@ -29,7 +29,9 @@ public class SysDictDataService : IDynamicApiController, ITransient
_sysLangTextCacheService = sysLangTextCacheService;
VSysDictData = _sysDictDataRep.Context.UnionAll(
_sysDictDataRep.AsQueryable(),
- _sysDictDataRep.Change().AsQueryable().WhereIF(_userManager.SuperAdmin, d => d.TenantId == _userManager.TenantId).Select());
+ _sysDictDataRep.Change().AsQueryable()
+ //.WhereIF(_userManager.SuperAdmin, d => d.TenantId == _userManager.TenantId)
+ .Select());
}
///
diff --git a/Admin.NET/Admin.NET.Core/Service/Dict/SysDictTypeService.cs b/Admin.NET/Admin.NET.Core/Service/Dict/SysDictTypeService.cs
index b8fa231c6d2249749ff8170198bdc5a2a8db9af3..6315d2930c73c1ac2daad32ac43a7ae9a5593b16 100644
--- a/Admin.NET/Admin.NET.Core/Service/Dict/SysDictTypeService.cs
+++ b/Admin.NET/Admin.NET.Core/Service/Dict/SysDictTypeService.cs
@@ -130,6 +130,8 @@ public class SysDictTypeService : IDynamicApiController, ITransient
var isExist = await _sysDictTypeRep.IsAnyAsync(u => u.Code == input.Code);
if (isExist) throw Oops.Oh(ErrorCodeEnum.D3001);
+ if (_userManager.SuperAdmin) input.IsTenant = YesNoEnum.N; // 超级管理员添加的字典类型默认非租户级
+
await _sysDictTypeRep.InsertAsync(input.Adapt());
}
diff --git a/Admin.NET/Admin.NET.Core/Utils/GiteeHelper.cs b/Admin.NET/Admin.NET.Core/Utils/GiteeHelper.cs
index 3f369e4d86b3e574d00bb6a72b50dccb8ef4e8aa..54f3fc645376b9a496b44391e7114db4bf316684 100644
--- a/Admin.NET/Admin.NET.Core/Utils/GiteeHelper.cs
+++ b/Admin.NET/Admin.NET.Core/Utils/GiteeHelper.cs
@@ -37,7 +37,7 @@ public class GiteeHelper
/// 构建Query参数
///
///
- private static string BuilderQueryString([NotNull] object obj)
+ private static string BuilderQueryString([System.Diagnostics.CodeAnalysis.NotNull] object obj)
{
if (obj == null) return string.Empty;
var query = HttpUtility.ParseQueryString(string.Empty);
diff --git a/Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Service/DingTalkService.cs b/Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Service/DingTalkService.cs
index af274298b8b9cea1419ca8e1843ace2661d95beb..66331968e0d8687795d980561fafb45648af15fa 100644
--- a/Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Service/DingTalkService.cs
+++ b/Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Service/DingTalkService.cs
@@ -86,6 +86,7 @@ public class DingTalkService : IDynamicApiController, IScoped
///
///
[DisplayName("给指定用户发送钉钉互动卡片")]
+ [Obsolete]
public async Task DingTalkSendInteractiveCards(
string token,
DingTalkSendInteractiveCardsInput input
diff --git a/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Proxy/AppChat/Dto/AppChatHttpInput.cs b/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Proxy/AppChat/Dto/AppChatHttpInput.cs
index a5655e81dd8bba512f652a068cb3c3c855b1ad11..e6649388762f92b29248fe66c03147a8c6f81ca6 100644
--- a/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Proxy/AppChat/Dto/AppChatHttpInput.cs
+++ b/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Proxy/AppChat/Dto/AppChatHttpInput.cs
@@ -32,7 +32,7 @@ public class CreatAppChatInput
///
[JsonProperty("userlist")]
[JsonPropertyName("userlist")]
- [NotEmpty(ErrorMessage = "群成员列表不能为空")]
+ [Core.NotEmpty(ErrorMessage = "群成员列表不能为空")]
public List UserList { get; set; }
///
diff --git a/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Proxy/AppChat/IWorkWeixinAppChatHttp.cs b/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Proxy/AppChat/IWorkWeixinAppChatHttp.cs
index 89ac90c6a5ff51df8b4df17cf904c11c7561a7c8..2a8256d0a19e15e4417b1d0108945dece7309655 100644
--- a/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Proxy/AppChat/IWorkWeixinAppChatHttp.cs
+++ b/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Proxy/AppChat/IWorkWeixinAppChatHttp.cs
@@ -17,7 +17,7 @@ public interface IWorkWeixinAppChatHttp : IHttpDeclarative
///
///
///
- ///
+ ///
[Post("https://qyapi.weixin.qq.com/cgi-bin/appchat/create")]
Task Create([Query("access_token")] string accessToken, [Body] CreatAppChatInput body);
@@ -27,7 +27,7 @@ public interface IWorkWeixinAppChatHttp : IHttpDeclarative
///
///
///
- ///
+ ///
[Post("https://qyapi.weixin.qq.com/cgi-bin/appchat/update")]
Task Update([Query("access_token")] string accessToken, [Body] UpdateAppChatInput body);
@@ -37,7 +37,7 @@ public interface IWorkWeixinAppChatHttp : IHttpDeclarative
///
///
///
- ///
+ ///
[Get("https://qyapi.weixin.qq.com/cgi-bin/appchat/get")]
Task Get([Query("access_token")] string accessToken, [Query("chatid")] string chatId);
@@ -47,7 +47,7 @@ public interface IWorkWeixinAppChatHttp : IHttpDeclarative
///
///
///
- ///
+ ///
[Post("https://qyapi.weixin.qq.com/cgi-bin/appchat/send")]
Task Send([Query("access_token")] string accessToken, [Body] SendBaseAppChatInput body);
}
\ No newline at end of file
diff --git a/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Proxy/Auth/IWorkWeixinAuthHttp.cs b/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Proxy/Auth/IWorkWeixinAuthHttp.cs
index 9db100e1e7feda1035b58f729f02b553bf3dbde6..118a08e36e3187aef6f2e03a78cebe47dca877e4 100644
--- a/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Proxy/Auth/IWorkWeixinAuthHttp.cs
+++ b/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Proxy/Auth/IWorkWeixinAuthHttp.cs
@@ -17,7 +17,7 @@ public interface IWorkWeixinAuthHttp : IHttpDeclarative
/// 企业ID
/// 应用的凭证密钥
///
- ///
+ ///
[Post("https://qyapi.weixin.qq.com/cgi-bin/gettoken")]
Task GetToken([Query("corpid")] string corpId, [Query("corpsecret")] string corpSecret);
}
\ No newline at end of file
diff --git a/Web/src/theme/element.scss b/Web/src/theme/element.scss
index ce0c9d7c0a8a2d8b52a2002b431b36d06e99d937..09c9c9993347149585d643539b80986208a9efb1 100644
--- a/Web/src/theme/element.scss
+++ b/Web/src/theme/element.scss
@@ -346,9 +346,11 @@
padding: 0 !important;
margin: 0 auto !important;
position: absolute;
+ max-height: 100vh;
.el-dialog__body {
padding: 18px !important;
+ max-height: calc(100vh - 37px);
}
}
}
@@ -386,6 +388,7 @@
padding: 8px;
border-radius: var(--el-dialog-border-radius) var(--el-dialog-border-radius) 0 0;
background: var(--el-color-primary);
+ color: #fff;
height: 37px;
line-height: 21px;
diff --git a/Web/src/theme/media/scrollbar.scss b/Web/src/theme/media/scrollbar.scss
index 912ecc72654838f335cbe45bc5655333f73125b2..54baa7f3c58c7e3e5347068a73f5538cbd6ed208 100644
--- a/Web/src/theme/media/scrollbar.scss
+++ b/Web/src/theme/media/scrollbar.scss
@@ -41,6 +41,7 @@
}
::-webkit-scrollbar-track-piece {
background-color: var(--next-bg-main-color);
+ border-radius: 4px;
}
// 滚动条的设置
::-webkit-scrollbar-thumb {
diff --git a/Web/src/views/system/database/component/addTable.vue b/Web/src/views/system/database/component/addTable.vue
index c9922b270b9901e599e3cbd94943ccf498b14ffb..f9602a1eae86255b7528e159f5bbf8939fe2a4f8 100644
--- a/Web/src/views/system/database/component/addTable.vue
+++ b/Web/src/views/system/database/component/addTable.vue
@@ -50,7 +50,7 @@
-
+
@@ -183,13 +183,13 @@ function addPrimaryColumn() {
function addColumn() {
state.tableData.push({
columnDescription: '',
- dataType: 'varchar',
+ //dataType: 'varchar',
dbColumnName: '',
decimalDigits: 0,
isIdentity: 0,
isNullable: 1,
isPrimarykey: 0,
- length: 32,
+ //length: 32,
key: colIndex,
editable: true,
isNew: true,
@@ -310,6 +310,17 @@ function handleColDelete(index: number) {
state.tableData.splice(index, 1);
}
+// 列类型选择变化
+function handleColTypeChange(record: EditRecordRow) {
+ if (['varchar', 'char', 'nvarchar', 'nchar'].includes(record.dataType as string)) {
+ if ([0, undefined, null].includes(record.length)) {
+ record.length = 32;
+ }
+ } else {
+ record.length = 0;
+ }
+}
+
// 上移
function handleColUp(record: EditRecordRow, index: number) {
if (record.isNew) {
diff --git a/Web/src/views/system/stressTest/index.vue b/Web/src/views/system/stressTest/index.vue
index b4ba11eb61badd07446f139e51bce7974ec9e852..08afffe1797e4286d68461031d0d1ce7dd883794 100644
--- a/Web/src/views/system/stressTest/index.vue
+++ b/Web/src/views/system/stressTest/index.vue
@@ -1,47 +1,40 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ node.label }}
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ {{ node.label }}
+
+
+
+
+
+
+
-
-
- 开始测试
+
+
+
+ 开始测试
+
@@ -104,7 +97,7 @@
{{ (state.result.percentile999ResponseTime ?? 0).toFixed(2) }}
-
+
@@ -114,10 +107,9 @@