diff --git a/build/code.quality.props b/build/code.quality.props
index 2bc0b475..268737ce 100644
--- a/build/code.quality.props
+++ b/build/code.quality.props
@@ -23,7 +23,7 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Api.cs b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Api.cs
index 716dd780..14b846b1 100644
--- a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Api.cs
+++ b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Api.cs
@@ -71,7 +71,7 @@ public record Sys_Api : ImmutableEntity, IFieldSummary
[CsvIgnore]
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_RoleApi))]
- public ICollection Roles { get; init; }
+ public IReadOnlyCollection Roles { get; init; }
///
/// 服务描述
diff --git a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Dept.cs b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Dept.cs
index aa7b39dd..0f1ddc92 100644
--- a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Dept.cs
+++ b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Dept.cs
@@ -44,7 +44,7 @@ public record Sys_Dept : VersionEntity, IFieldEnabled, IFieldSummary, IFieldSort
[CsvIgnore]
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_RoleDept))]
- public ICollection Roles { get; init; }
+ public IReadOnlyCollection Roles { get; init; }
///
/// 发送给此部门的站内信集合
@@ -52,7 +52,7 @@ public record Sys_Dept : VersionEntity, IFieldEnabled, IFieldSummary, IFieldSort
[CsvIgnore]
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_SiteMsgDept))]
- public ICollection SiteMsgs { get; init; }
+ public IReadOnlyCollection SiteMsgs { get; init; }
///
/// 排序值,越大越前
diff --git a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_DicCatalog.cs b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_DicCatalog.cs
index e6954aac..9d6443c9 100644
--- a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_DicCatalog.cs
+++ b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_DicCatalog.cs
@@ -29,7 +29,7 @@ public record Sys_DicCatalog : VersionEntity
[CsvIgnore]
[JsonIgnore]
[Navigate(nameof(Sys_DicContent.CatalogId))]
- public ICollection Contents { get; init; }
+ public IReadOnlyCollection Contents { get; init; }
///
/// 字典目录名称
diff --git a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_DocCatalog.cs b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_DocCatalog.cs
index 8e8c4d8d..44dc733a 100644
--- a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_DocCatalog.cs
+++ b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_DocCatalog.cs
@@ -29,7 +29,7 @@ public record Sys_DocCatalog : VersionEntity, IFieldOwner
[CsvIgnore]
[JsonIgnore]
[Navigate(nameof(Sys_DocContent.CatalogId))]
- public ICollection Contents { get; init; }
+ public IReadOnlyCollection Contents { get; init; }
///
/// 文档分类名称
diff --git a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Menu.cs b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Menu.cs
index 72478fa8..b037d147 100644
--- a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Menu.cs
+++ b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Menu.cs
@@ -111,7 +111,7 @@ public record Sys_Menu : VersionEntity, IFieldSort
[CsvIgnore]
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_RoleMenu))]
- public ICollection Roles { get; init; }
+ public IReadOnlyCollection Roles { get; init; }
///
/// 排序值,越大越前
diff --git a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Role.cs b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Role.cs
index de478691..bd8614b6 100644
--- a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Role.cs
+++ b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_Role.cs
@@ -16,7 +16,7 @@ public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary
[CsvIgnore]
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_RoleApi))]
- public ICollection Apis { get; init; }
+ public IReadOnlyCollection Apis { get; init; }
///
/// 仪表板布局
@@ -40,7 +40,7 @@ public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary
[CsvIgnore]
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_RoleDept))]
- public ICollection Depts { get; init; }
+ public IReadOnlyCollection Depts { get; init; }
///
/// 是否显示仪表板
@@ -72,7 +72,7 @@ public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary
[CsvIgnore]
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_RoleMenu))]
- public ICollection Menus { get; init; }
+ public IReadOnlyCollection Menus { get; init; }
///
/// 角色名称
@@ -88,7 +88,7 @@ public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary
[CsvIgnore]
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_SiteMsgRole))]
- public ICollection SiteMsgs { get; init; }
+ public IReadOnlyCollection SiteMsgs { get; init; }
///
/// 排序值,越大越前
@@ -112,7 +112,7 @@ public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary
[CsvIgnore]
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_UserRole))]
- public ICollection Users { get; init; }
+ public IReadOnlyCollection Users { get; init; }
///
public virtual void Register(TypeAdapterConfig config)
diff --git a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsg.cs b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsg.cs
index 041f79d1..02dc1a4c 100644
--- a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsg.cs
+++ b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_SiteMsg.cs
@@ -31,7 +31,7 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary
[CsvIgnore]
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_SiteMsgDept))]
- public ICollection Depts { get; init; }
+ public IReadOnlyCollection Depts { get; init; }
///
/// 消息-标记映射
@@ -39,7 +39,7 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary
[CsvIgnore]
[JsonIgnore]
[Navigate(nameof(Sys_SiteMsgFlag.SiteMsgId))]
- public ICollection Flags { get; init; }
+ public IReadOnlyCollection Flags { get; init; }
///
/// 消息类型
@@ -54,7 +54,7 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary
[CsvIgnore]
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_SiteMsgRole))]
- public ICollection Roles { get; init; }
+ public IReadOnlyCollection Roles { get; init; }
///
/// 消息摘要
@@ -78,7 +78,7 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary
[CsvIgnore]
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_SiteMsgUser))]
- public ICollection Users { get; init; }
+ public IReadOnlyCollection Users { get; init; }
///
public void Register(TypeAdapterConfig config)
diff --git a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_User.cs b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_User.cs
index ef3765af..6436625b 100644
--- a/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_User.cs
+++ b/src/backend/NetAdmin/NetAdmin.Domain/DbMaps/Sys/Sys_User.cs
@@ -97,7 +97,7 @@ public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister
[CsvIgnore]
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_SiteMsgUser))]
- public ICollection SiteMsgs { get; init; }
+ public IReadOnlyCollection SiteMsgs { get; init; }
///
/// 备注
diff --git a/src/backend/NetAdmin/NetAdmin.Domain/NetAdmin.Domain.csproj b/src/backend/NetAdmin/NetAdmin.Domain/NetAdmin.Domain.csproj
index b74283c9..e166d9a1 100644
--- a/src/backend/NetAdmin/NetAdmin.Domain/NetAdmin.Domain.csproj
+++ b/src/backend/NetAdmin/NetAdmin.Domain/NetAdmin.Domain.csproj
@@ -4,8 +4,8 @@
-
-
+
+
diff --git a/src/backend/NetAdmin/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj b/src/backend/NetAdmin/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj
index 1fce6e80..fbb98e27 100644
--- a/src/backend/NetAdmin/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj
+++ b/src/backend/NetAdmin/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/backend/NetAdmin/NetAdmin.Tests/NetAdmin.Tests.csproj b/src/backend/NetAdmin/NetAdmin.Tests/NetAdmin.Tests.csproj
index 4062810f..3821d2ef 100644
--- a/src/backend/NetAdmin/NetAdmin.Tests/NetAdmin.Tests.csproj
+++ b/src/backend/NetAdmin/NetAdmin.Tests/NetAdmin.Tests.csproj
@@ -3,7 +3,7 @@
-
+
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/frontend/admin/package.json b/src/frontend/admin/package.json
index 5f2fcec2..ce7a253c 100644
--- a/src/frontend/admin/package.json
+++ b/src/frontend/admin/package.json
@@ -23,7 +23,7 @@
"sortablejs": "1.15.6",
"vkbeautify": "0.99.3",
"vue": "3.5.13",
- "vue-i18n": "11.1.2",
+ "vue-i18n": "11.1.3",
"vue-router": "4.5.0",
"vue3-ace-editor": "2.2.4",
"vue3-json-viewer": "2.2.2",
@@ -34,9 +34,9 @@
"@vitejs/plugin-vue": "5.2.3",
"prettier": "3.5.3",
"prettier-plugin-organize-attributes": "1.0.0",
- "sass": "1.86.0",
+ "sass": "1.86.3",
"terser": "5.39.0",
- "vite": "6.2.2"
+ "vite": "6.2.5"
},
"browserslist": [
"> 1%",
diff --git a/src/frontend/admin/src/components/scUpload/multiple.vue b/src/frontend/admin/src/components/scUpload/multiple.vue
index ca3a3a4f..551a43b9 100644
--- a/src/frontend/admin/src/components/scUpload/multiple.vue
+++ b/src/frontend/admin/src/components/scUpload/multiple.vue
@@ -8,6 +8,7 @@
:before-upload="before"
:data="data"
:disabled="disabled"
+ :drag="drag"
:http-request="request"
:limit="limit"
:multiple="multiple"
@@ -70,6 +71,7 @@ export default {
type: Object,
default: () => {},
},
+ drag: { type: Boolean, default: false },
name: { type: String, default: config.filename },
data: {
type: Object,