Przeglądaj źródła

控件类型新增:上传单文件,对应的功能调整

Signed-off-by: 纯粹是糖 <353328333@qq.com>
纯粹是糖 9 miesięcy temu
rodzic
commit
2f8c57c4c5

+ 232 - 231
Admin.NET/Admin.NET.Core/Service/CodeGen/Dto/CodeGenConfig.cs

@@ -1,232 +1,233 @@
-// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
-//
-// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
-//
-// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
-
-namespace Admin.NET.Core.Service;
-
-/// <summary>
-/// 代码生成详细配置参数
-/// </summary>
-public class CodeGenConfig
-{
-    /// <summary>
-    /// 主键Id
-    /// </summary>
-    public long Id { get; set; }
-
-    /// <summary>
-    /// 代码生成主表ID
-    /// </summary>
-    public long CodeGenId { get; set; }
-
-    /// <summary>
-    /// 数据库字段名
-    /// </summary>
-    public string ColumnName { get; set; }
-
-    /// <summary>
-    /// 主外键
-    /// </summary>
-    public string ColumnKey { get; set; }
-
-    /// <summary>
-    /// 实体属性名
-    /// </summary>
-    public string PropertyName { get; set; }
-
-    /// <summary>
-    /// 字段数据长度
-    /// </summary>
-    public int ColumnLength { get; set; }
-
-    /// <summary>
-    /// 数据库字段名(首字母小写)
-    /// </summary>
-    public string LowerPropertyName => string.IsNullOrWhiteSpace(PropertyName) ? null : PropertyName[..1].ToLower() + PropertyName[1..];
-
-    /// <summary>
-    /// 字段描述
-    /// </summary>
-    public string ColumnComment { get; set; }
-
-    /// <summary>
-    /// .NET类型
-    /// </summary>
-    public string NetType { get; set; }
-
-    /// <summary>
-    /// 数据库中类型(物理类型)
-    /// </summary>
-    public string DataType { get; set; }
-
-    /// <summary>
-    /// 字段数据默认值
-    /// </summary>
-    public string DefaultValue { get; set; }
-    /// <summary>
-    /// 可空.NET类型
-    /// </summary>
-    public string NullableNetType => Regex.IsMatch(NetType ?? "", "(.*?Enum|bool|char|int|long|double|float|decimal)[?]?") ? NetType.TrimEnd('?') + "?" : NetType;
-
-    /// <summary>
-    /// 作用类型(字典)
-    /// </summary>
-    public string EffectType { get; set; }
-
-    /// <summary>
-    /// 外键库标识
-    /// </summary>
-    public string FkConfigId { get; set; }
-
-    /// <summary>
-    /// 外键实体名称
-    /// </summary>
-    public string FkEntityName { get; set; }
-
-    /// <summary>
-    /// 外键表名称
-    /// </summary>
-    public string FkTableName { get; set; }
-
-    /// <summary>
-    /// 外键实体名称(首字母小写)
-    /// </summary>
-    public string LowerFkEntityName => string.IsNullOrWhiteSpace(FkEntityName) ? null : FkEntityName[..1].ToLower() + FkEntityName[1..];
-
-    /// <summary>
-    /// 外键链接字段
-    /// </summary>
-    public string FkLinkColumnName { get; set; }
-
-    /// <summary>
-    /// 外键显示字段
-    /// </summary>
-    [Newtonsoft.Json.JsonIgnore]
-    [System.Text.Json.Serialization.JsonIgnore]
-    public string FkDisplayColumns { get; set; }
-
-    /// <summary>
-    /// 外键显示字段
-    /// </summary>
-    public List<string> FkDisplayColumnList { get; set; }
-
-    /// <summary>
-    /// 外键显示字段(首字母小写)
-    /// </summary>
-    public List<string> LowerFkDisplayColumnsList => FkDisplayColumnList?.Select(name => name[..1].ToLower() + name[1..]).ToList();
-
-    /// <summary>
-    /// 外键显示字段.NET类型
-    /// </summary>
-    public string FkColumnNetType { get; set; }
-
-    /// <summary>
-    /// 父级字段
-    /// </summary>
-    public string PidColumn { get; set; }
-
-    /// <summary>
-    /// 字典code
-    /// </summary>
-    public string DictTypeCode { get; set; }
-
-    /// <summary>
-    /// 查询方式
-    /// </summary>
-    public string QueryType { get; set; }
-
-    /// <summary>
-    /// 是否是查询条件
-    /// </summary>
-    public string WhetherQuery { get; set; }
-
-    /// <summary>
-    /// 列表是否缩进(字典)
-    /// </summary>
-    public string WhetherRetract { get; set; }
-
-    /// <summary>
-    /// 是否必填(字典)
-    /// </summary>
-    public string WhetherRequired { get; set; }
-
-    /// <summary>
-    /// 是否可排序(字典)
-    /// </summary>
-    public string WhetherSortable { get; set; }
-
-    /// <summary>
-    /// 列表显示
-    /// </summary>
-    public string WhetherTable { get; set; }
-
-    /// <summary>
-    /// 增改
-    /// </summary>
-    public string WhetherAddUpdate { get; set; }
-
-    /// <summary>
-    /// 导入
-    /// </summary>
-    public string WhetherImport { get; set; }
-
-    /// <summary>
-    /// 是否是通用字段
-    /// </summary>
-    public string WhetherCommon { get; set; }
-
-    /// <summary>
-    /// 排序
-    /// </summary>
-    public int OrderNo { get; set; }
-
-    /// <summary>
-    /// 是否是选择器控件
-    /// </summary>
-    public bool IsSelectorEffectType => Regex.IsMatch(EffectType ?? "", "Selector$|ForeignKey", RegexOptions.IgnoreCase);
-
-    /// <summary>
-    /// 去掉尾部Id的属性名
-    /// </summary>
-    public string PropertyNameTrimEndId => PropertyName.TrimEnd("Id");
-
-    /// <summary>
-    /// 去掉尾部Id的属性名
-    /// </summary>
-    public string LowerPropertyNameTrimEndId => LowerPropertyName.TrimEnd("Id");
-
-    /// <summary>
-    /// 扩展属性名称
-    /// </summary>
-    public string ExtendedPropertyName => EffectType switch
-    {
-        "ForeignKey" => $"{PropertyName.TrimEnd("Id")}FkDisplayName",
-        "ApiTreeSelector" => $"{PropertyName.TrimEnd("Id")}DisplayName",
-        "DictSelector" => $"{PropertyName.TrimEnd("Id")}DictLabel",
-        "Upload" => $"{PropertyName.TrimEnd("Id")}Attachment",
-        _ => PropertyName
-    };
-
-    /// <summary>
-    /// 首字母小写的扩展属性名称
-    /// </summary>
-    public string LowerExtendedPropertyName
-    {
-        get
-        {
-            var displayPropertyName = ExtendedPropertyName;
-            if (string.IsNullOrWhiteSpace(displayPropertyName)) return null;
-            return displayPropertyName[..1].ToLower() + displayPropertyName[1..];
-        }
-    }
-
-    /// <summary>
-    /// 获取外键显示值语句
-    /// </summary>
-    /// <param name="tableAlias">表别名</param>
-    /// <param name="separator">多字段时的连接符</param>
-    /// <returns></returns>
-    public string GetDisplayColumn(string tableAlias, string separator = "-") => "$\"" + string.Join(separator, FkDisplayColumnList?.Select(name => $"{{{tableAlias}.{name}}}") ?? new List<string>()) + "\"";
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+//
+// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
+//
+// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+
+namespace Admin.NET.Core.Service;
+
+/// <summary>
+/// 代码生成详细配置参数
+/// </summary>
+public class CodeGenConfig
+{
+    /// <summary>
+    /// 主键Id
+    /// </summary>
+    public long Id { get; set; }
+
+    /// <summary>
+    /// 代码生成主表ID
+    /// </summary>
+    public long CodeGenId { get; set; }
+
+    /// <summary>
+    /// 数据库字段名
+    /// </summary>
+    public string ColumnName { get; set; }
+
+    /// <summary>
+    /// 主外键
+    /// </summary>
+    public string ColumnKey { get; set; }
+
+    /// <summary>
+    /// 实体属性名
+    /// </summary>
+    public string PropertyName { get; set; }
+
+    /// <summary>
+    /// 字段数据长度
+    /// </summary>
+    public int ColumnLength { get; set; }
+
+    /// <summary>
+    /// 数据库字段名(首字母小写)
+    /// </summary>
+    public string LowerPropertyName => string.IsNullOrWhiteSpace(PropertyName) ? null : PropertyName[..1].ToLower() + PropertyName[1..];
+
+    /// <summary>
+    /// 字段描述
+    /// </summary>
+    public string ColumnComment { get; set; }
+
+    /// <summary>
+    /// .NET类型
+    /// </summary>
+    public string NetType { get; set; }
+
+    /// <summary>
+    /// 数据库中类型(物理类型)
+    /// </summary>
+    public string DataType { get; set; }
+
+    /// <summary>
+    /// 字段数据默认值
+    /// </summary>
+    public string DefaultValue { get; set; }
+    /// <summary>
+    /// 可空.NET类型
+    /// </summary>
+    public string NullableNetType => Regex.IsMatch(NetType ?? "", "(.*?Enum|bool|char|int|long|double|float|decimal)[?]?") ? NetType.TrimEnd('?') + "?" : NetType;
+
+    /// <summary>
+    /// 作用类型(字典)
+    /// </summary>
+    public string EffectType { get; set; }
+
+    /// <summary>
+    /// 外键库标识
+    /// </summary>
+    public string FkConfigId { get; set; }
+
+    /// <summary>
+    /// 外键实体名称
+    /// </summary>
+    public string FkEntityName { get; set; }
+
+    /// <summary>
+    /// 外键表名称
+    /// </summary>
+    public string FkTableName { get; set; }
+
+    /// <summary>
+    /// 外键实体名称(首字母小写)
+    /// </summary>
+    public string LowerFkEntityName => string.IsNullOrWhiteSpace(FkEntityName) ? null : FkEntityName[..1].ToLower() + FkEntityName[1..];
+
+    /// <summary>
+    /// 外键链接字段
+    /// </summary>
+    public string FkLinkColumnName { get; set; }
+
+    /// <summary>
+    /// 外键显示字段
+    /// </summary>
+    [Newtonsoft.Json.JsonIgnore]
+    [System.Text.Json.Serialization.JsonIgnore]
+    public string FkDisplayColumns { get; set; }
+
+    /// <summary>
+    /// 外键显示字段
+    /// </summary>
+    public List<string> FkDisplayColumnList { get; set; }
+
+    /// <summary>
+    /// 外键显示字段(首字母小写)
+    /// </summary>
+    public List<string> LowerFkDisplayColumnsList => FkDisplayColumnList?.Select(name => name[..1].ToLower() + name[1..]).ToList();
+
+    /// <summary>
+    /// 外键显示字段.NET类型
+    /// </summary>
+    public string FkColumnNetType { get; set; }
+
+    /// <summary>
+    /// 父级字段
+    /// </summary>
+    public string PidColumn { get; set; }
+
+    /// <summary>
+    /// 字典code
+    /// </summary>
+    public string DictTypeCode { get; set; }
+
+    /// <summary>
+    /// 查询方式
+    /// </summary>
+    public string QueryType { get; set; }
+
+    /// <summary>
+    /// 是否是查询条件
+    /// </summary>
+    public string WhetherQuery { get; set; }
+
+    /// <summary>
+    /// 列表是否缩进(字典)
+    /// </summary>
+    public string WhetherRetract { get; set; }
+
+    /// <summary>
+    /// 是否必填(字典)
+    /// </summary>
+    public string WhetherRequired { get; set; }
+
+    /// <summary>
+    /// 是否可排序(字典)
+    /// </summary>
+    public string WhetherSortable { get; set; }
+
+    /// <summary>
+    /// 列表显示
+    /// </summary>
+    public string WhetherTable { get; set; }
+
+    /// <summary>
+    /// 增改
+    /// </summary>
+    public string WhetherAddUpdate { get; set; }
+
+    /// <summary>
+    /// 导入
+    /// </summary>
+    public string WhetherImport { get; set; }
+
+    /// <summary>
+    /// 是否是通用字段
+    /// </summary>
+    public string WhetherCommon { get; set; }
+
+    /// <summary>
+    /// 排序
+    /// </summary>
+    public int OrderNo { get; set; }
+
+    /// <summary>
+    /// 是否是选择器控件
+    /// </summary>
+    public bool IsSelectorEffectType => Regex.IsMatch(EffectType ?? "", "Selector$|ForeignKey", RegexOptions.IgnoreCase);
+
+    /// <summary>
+    /// 去掉尾部Id的属性名
+    /// </summary>
+    public string PropertyNameTrimEndId => PropertyName.TrimEnd("Id");
+
+    /// <summary>
+    /// 去掉尾部Id的属性名
+    /// </summary>
+    public string LowerPropertyNameTrimEndId => LowerPropertyName.TrimEnd("Id");
+
+    /// <summary>
+    /// 扩展属性名称
+    /// </summary>
+    public string ExtendedPropertyName => EffectType switch
+    {
+        "ForeignKey" => $"{PropertyName.TrimEnd("Id")}FkDisplayName",
+        "ApiTreeSelector" => $"{PropertyName.TrimEnd("Id")}DisplayName",
+        "DictSelector" => $"{PropertyName.TrimEnd("Id")}DictLabel",
+        "Upload" => $"{PropertyName.TrimEnd("Id")}Attachment",
+        "Upload_SingleFile" => $"{PropertyName.TrimEnd("Id")}Attachment",
+        _ => PropertyName
+    };
+
+    /// <summary>
+    /// 首字母小写的扩展属性名称
+    /// </summary>
+    public string LowerExtendedPropertyName
+    {
+        get
+        {
+            var displayPropertyName = ExtendedPropertyName;
+            if (string.IsNullOrWhiteSpace(displayPropertyName)) return null;
+            return displayPropertyName[..1].ToLower() + displayPropertyName[1..];
+        }
+    }
+
+    /// <summary>
+    /// 获取外键显示值语句
+    /// </summary>
+    /// <param name="tableAlias">表别名</param>
+    /// <param name="separator">多字段时的连接符</param>
+    /// <returns></returns>
+    public string GetDisplayColumn(string tableAlias, string separator = "-") => "$\"" + string.Join(separator, FkDisplayColumnList?.Select(name => $"{{{tableAlias}.{name}}}") ?? new List<string>()) + "\"";
 }

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs

@@ -570,7 +570,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
             });
         }
 
-        foreach (var column in tableFieldList.Where(u => u.EffectType == "Upload"))
+        foreach (var column in tableFieldList.Where(u => u.EffectType == "Upload" || u.EffectType == "Upload_SingleFile"))
         {
             newButtons.Add(new SysMenu
             {

+ 2 - 2
Admin.NET/Admin.NET.Web.Entry/wwwroot/template/Output.cs.vm

@@ -1,4 +1,4 @@
-// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
 //
 // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
 //
@@ -22,7 +22,7 @@ public class @(Model.ClassName)Output
     @:/// @(column.ColumnComment) 描述
     @:/// </summary>
     @:public string @(column.ExtendedPropertyName) { get; set; } 
-    }else if(column.EffectType == "Upload"){
+    }else if(column.EffectType == "Upload" || column.EffectType == "Upload_SingleFile"){
     @:
     @:/// <summary>
     @:/// @(column.ColumnComment) 附件信息

+ 3 - 3
Admin.NET/Admin.NET.Web.Entry/wwwroot/template/data.data.ts.vm

@@ -1,7 +1,7 @@
 import { h } from 'vue';
 import { BasicColumn, FormSchema } from '/@@/components/Table';
 @foreach (var column in Model.TableField){
-if(column.EffectType == "Upload"){
+if(column.EffectType == "Upload" || column.EffectType == "Upload_SingleFile"){
 @:import { uploadFile } from '/@@/api/sys/admin';
 }else if(column.EffectType == "ForeignKey"){
 @:import { get@(column.FkEntityName)Dropdown } from '/@@/api/main/@(Model.ClassName)';
@@ -22,7 +22,7 @@ export const columns: BasicColumn[] = [
     @:title: '@column.ColumnComment',
     @:dataIndex: '@column.LowerPropertyName',    
     @:sorter: true,
-if(column.EffectType == "Upload"){
+if(column.EffectType == "Upload" || column.EffectType == "Upload_SingleFile"){
     @:slots: { customRender: '@(column.LowerPropertyName)' },
 }else if(column.EffectType == "ForeignKey"){
     @:customRender: ({ record }) => {
@@ -144,7 +144,7 @@ if(column.EffectType == "ForeignKey"){
     }else{
     @:required: false,
     }
-    if(column.EffectType == "Upload"){
+    if(column.EffectType == "Upload" || column.EffectType == "Upload_SingleFile"){
     @:componentProps: {
       @:maxNumber: 1,
       @:api: uploadFile,

+ 2 - 2
Admin.NET/Admin.NET.Web.Entry/wwwroot/template/dataModal.vue.vm

@@ -32,7 +32,7 @@
             ...data.record,
           });
 @foreach (var column in Model.TableField){
-if(column.EffectType == "Upload"){
+if(column.EffectType == "Upload"  || column.EffectType == "Upload_SingleFile"){
           @:if (data.record.@(column.LowerPropertyName)) {
             @:setFieldsValue({
               @:@(column.LowerPropertyName): [data.record.@(column.LowerPropertyName)Attachment],
@@ -47,7 +47,7 @@ if(column.EffectType == "Upload"){
         try {
           var values = await validate();
 @foreach (var column in Model.TableField){
-if(column.EffectType == "Upload"){
+if(column.EffectType == "Upload"  || column.EffectType == "Upload_SingleFile"){
           @:if (values.@(column.LowerPropertyName)) {
             @:values = { ...values, @(column.LowerPropertyName): values.@(column.LowerPropertyName)[0].id };
           @:}