文件内容 SelectDto.cs 18 KB 16918 字符
using PasteApeart.Helper;
using ExampleForm.testmodels;
using ExampleForm.usermodels;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

namespace ExampleForm.Application.testmodels
{
    /// <summary>
    /// 
    /// </summary>
    public class SelectDto
    {

        /////<summary>
        /////单选 一般表示状态,第二个参数表示日类型这个选项将不会显示,被忽略了
        /////</summary>
        //[ColumnDataType("mark", "test", "datetype")]
        //[PasteSelect("[{\"name\":\"日类型\",\"value\":0},{\"name\":\"月类型\",\"value\":1},{\"name\":\"年类型\",\"value\":2}]","0")]
        //public int DateType { get; set; }
        ///// <summary>
        ///// 单选 注意字段类型为string
        ///// </summary>
        //[PasteSelects("[{\"name\":\"日类型\",\"value\":\"day\"},{\"name\":\"月类型\",\"value\":\"month\"},{\"name\":\"年类型\",\"value\":\"year\"}]")]
        //public string DateName { get; set; }

        ///// <summary>
        ///// 年龄 多个之间使用,隔开
        ///// </summary>
        //[ColumnDataType("splitarray")]
        //public int[] Ages { get; set; }
        ///// <summary>
        ///// 复选 多个之间用逗号隔开
        ///// </summary>
        //[PasteSelects("[{\"name\":\"日类型\",\"value\":\"day\"},{\"name\":\"月类型\",\"value\":\"month\"},{\"name\":\"年类型\",\"value\":\"year\"}]", ",")]
        //public string TypeStrs { get; set; }
        ///// <summary>
        ///// 复选数组 配置最多选择1项,由args4配置,当前等效于PasteSelects
        ///// </summary>
        //[ColumnDataType("selects", "[{\"name\":\"日类型\",\"value\":\"day\"},{\"name\":\"月类型\",\"value\":\"month\"},{\"name\":\"年类型\",\"value\":\"year\"}]","","","1")]
        //public string[] Types { get; set; }
        ///// <summary>
        ///// 分类 多个之间使用,隔开,有默认值1,2,5,前端为字符串输入,用分隔符分割,后端接收到的为int[]
        ///// </summary>
        //[ColumnDataType("splitarray")]
        //public int[] Tabs { get; set; } = new int[] { 1, 2, 5 };
        ///// <summary>
        ///// 曾用名 多个之间使用,隔开,表示的是用户用分隔符输入,然后提交给后端的时候变更为对应的数组,比如当前的string[]
        ///// </summary>
        //[ColumnDataType("splitarray")]
        //public string[] Names { get; set; }

        ///// <summary>
        ///// 动作类型 这是一个Enum类型
        ///// </summary>
        //public ActionEnum ActionType { get; set; }

        ///// <summary>
        ///// 动作类型 由于过滤,UI只会显示1和4也就是正常和停止
        ///// </summary>
        //[PasteSelect("","-1,5")]
        //public ActionEnum SameAction { get; set; }

        /// <summary>
        /// 横向分类 这是一个Enum类型,而且使用了过滤,过滤掉-1和0的值的选项不返回前端
        /// </summary>
        [PasteLselect("", "-1,0")]
        [Description("横向分类 这是一个Enum类型,而且使用了过滤,过滤掉-1和0的值的选项不返回前端")]
        public ActionEnum ClassType { get; set; }

        /// <summary>
        /// 动作类型 由于过滤,UI只会显示1和4也就是正常和停止
        /// </summary>
        [PasteSelect("", "-1,5")]
        [Description("动作类型 由于过滤,UI只会显示1和4也就是正常和停止")]
        public ActionEnum[] Actions { get; set; }
    }

    /// <summary>
    /// 
    /// </summary>
    public class StringDto
    {
        ///<summary>
        ///姓名 模拟短文本输入
        ///</summary>
        [MaxLength(32)]
        [Required]
        [PasteMark("str", "desc")]
        [PasteSort(5)]
        [Description("姓名 模拟短文本输入")]
        public string Name { get; set; }

        ///<summary>
        ///文本区域 模拟文本区域的输入
        ///</summary>
        [MaxLength(128)]
        [PasteMark("str", "desc")]
        [PasteSort(4)]
        [Description("文本区域 模拟文本区域的输入")]
        public string Desc { get; set; }

        ///<summary>
        ///文本 虽然长度限制256,不过还是以text的形式展示
        ///</summary>
        [MaxLength(256)]
        [PasteText]
        [PasteSort(3)]
        [Description("文本 虽然长度限制256,不过还是以text的形式展示")]
        public string Mark { get; set; }

        ///<summary>
        ///文本区域 长度大于128则自动为textarea
        ///</summary>
        [MaxLength(256)]
        [PasteSort(2)]
        [Description("文本区域 长度大于128则自动为textarea")]
        public string Text { get; set; }

        ///<summary>
        ///内容 虽然设置了长度256,但还是会以富文本的形式展示
        ///</summary>
        [MaxLength(256)]
        [PasteRichText]
        [Description("内容 虽然设置了长度256,但还是会以富文本的形式展示")]
        public string Html { get; set; }

        ///<summary>
        ///富文本 模拟富文本,前端HTML的是使用wangEditv5,默认不配置maxlength的就是html
        ///</summary>
        [Description("富文本 模拟富文本,前端HTML的是使用wangEditv5,默认不配置maxlength的就是html")]
        public string Blog { get; set; }

        ///<summary>
        ///MarkDown 内容将提交给Mark1和MarkHtml 
        ///</summary>
        [PasteMarkDown(300, "markHtml")]
        [Description("MarkDown 内容将提交给Mark1和MarkHtml")]
        public string Mark1 { get; set; }

        /// <summary>
        /// 这个就是Mark1的Html代码
        /// </summary>
        [PasteHidden]
        [Description("这个就是Mark1的Html代码")]
        public string MarkHtml { get; set; }

        /////<summary>
        /////MarkDown2 有默认值的
        /////</summary>
        //[ColumnDataType("markdown")]
        //public string Mark2 { get; set; } = "## 今日成果";

        /// <summary>
        /// 文本 这个可以编辑
        /// </summary>
        [PasteText]
        [Description("文本 这个可以编辑")]
        public string Name1 { get; set; }

        /// <summary>
        /// 文本 这个不能编辑
        /// </summary>
        [PasteText]
        [PasteReadOnly]
        [Description("文本 这个不能编辑")]
        public string Name2 { get; set; } = "给你看看";


    }

    /// <summary>
    /// 时间案例
    /// </summary>
    [PasteGroup("v1", "组别一")]
    [PasteGroup("gg", "子壹组别")]
    [Description("时间案例")]
    public class DateTimeDto
    {

        /// <summary>
        /// 金额
        /// </summary>
        [PasteFenToYuan]
        [Description("金额")]
        public long Amount { get; set; } = 1600;

        ///// <summary>
        ///// 数量
        ///// </summary>
        //[PastePrefix("高于")]
        //[PasteUnit("cm")]
        //public long Val1 { get; set; } = 1600;

        ///// <summary>
        ///// ID 默认以,分割内容,示例1,3,6
        ///// </summary>
        //[PasteSplit]
        //public int[] ids1 { get; set; }

        ///// <summary>
        ///// ID 默认以,分割内容,示例1,3,6
        ///// </summary>
        //[PasteSplit]
        //public int[] ids2 { get; set; } = new int[] { 5, 7 };

        ///// <summary>
        ///// 值 需要以|分割输入项,示例:星期一|星期二
        ///// </summary>
        //[PasteSplit("|")]
        //public string[] vals1 { get; set; }

        ///// <summary>
        ///// 值 需要以|分割输入项,示例:星期一|星期二
        ///// </summary>
        //[PasteSplit("|")]
        //public string[] vals2 { get; set; } = new string[] { "星期六", "星期天" };

        /////<summary>
        /////时间1 默认为datetiem,yyyy-MM-dd HH:mm:ss格式
        /////</summary>
        //public DateTime date1 { get; set; }

        /////<summary>
        /////时间2 给定一个默认值
        /////</summary>
        //public DateTime date5 { get; set; } = DateTime.Now.AddMinutes(-5);

        /////<summary>
        /////时间3 设置为可不填
        /////</summary>
        //public DateTime? date6 { get; set; }

        /////<summary>
        /////时间4 使用了format的时间,最好设置为string格式
        /////</summary>
        //[ColumnDataType("datetime", "yyyy-MM-dd HH")]
        //public string date2 { get; set; }

        /////<summary>
        /////时间区间 时间区间,一般由2个字段承载,所以尾巴字段得隐藏,默认为sdate和edate搭配
        /////</summary>
        //[PasteDaterange("date3", "date4")]
        //public DateTime? date3 { get; set; }

        ///// <summary>
        ///// 由于3设置了,所以这里不显示,只是作为接收使用
        ///// </summary>
        //[PasteHidden]
        //public DateTime? date4 { get; set; }

        ///// <summary>
        ///// 外表
        ///// </summary>
        //[PasteSunform("text")]
        //[PasteGroupItem("v1")]
        //public StringDto abc { get; set; }

        /// <summary>
        /// 枚举一
        /// </summary>
        [Description("枚举一")]
        public ActionEnum m1 { get; set; }

        /// <summary>
        /// 枚举二
        /// </summary>
        [PasteSelects]
        [Description("枚举二")]
        public ActionEnum[] m2 { get; set; }

        /// <summary>
        /// 子1
        /// </summary>
        [PasteDirectsun]
        [PasteGroupItem("gg")]
        [Description("子1")]
        public ObjectDto obj2 { get; set; } = new ObjectDto { Desc = "11111111111111", Name = "2222222", Text = "33333333333" };

        /// <summary>
        /// 子2 这种情况就是错误的,因为没有值,不会被渲染
        /// </summary>
        [PasteDirectsun]
        [Description("子2 这种情况就是错误的,因为没有值,不会被渲染")]
        public List<Model1> sel2 { get; set; }

        /// <summary>
        /// 子3
        /// </summary>
        [PasteDirectsun]
        [Description("子3")]
        public Model1[] sel3 { get; set; } = new Model1[] { new Model1 { Id = 1, Name = "mod1" }, new Model1 { Id = 2, Name = "mod2" } };

        /// <summary>
        /// 子4
        /// </summary>
        [PasteDirectsun]
        [Description("子4")]
        public List<Model1> sel4 { get; set; } = new List<Model1> { new Model1 { Id = 4, Name = "mod4" } };

        /// <summary>
        /// 子5
        /// </summary>
        [PasteDirectsun]
        [Description("子5")]
        public Xavels xitem { get; set; } = new Xavels { };
    }

    /// <summary>
    /// XY
    /// </summary>
    [Description("XY")]
    public class Xavels
    {
        /// <summary>
        /// XX
        /// </summary>
        [PasteDirectsun]
        [Description("XX")]
        public Model1[] sel5 { get; set; } = new Model1[] { new Model1 { Name = "x1" }, new Model1 { Name = "x2" } };
    }

    /// <summary>
    /// object outer 案例
    /// </summary>
    [PasteGroup("g2", "G2", false)]
    [Description("object outer 案例")]
    public class ObjectDto
    {

        ///<summary>
        ///姓名 模拟短文本输入
        ///</summary>
        [MaxLength(32)]
        [Required]
        [Description("姓名 模拟短文本输入")]
        public string Name { get; set; }

        ///<summary>
        ///文本区域 模拟文本区域的输入
        ///</summary>
        [MaxLength(128)]
        [Description("文本区域 模拟文本区域的输入")]
        public string Desc { get; set; }

        ///<summary>
        ///文本区域 长度大于128则自动为textarea
        ///</summary>
        [MaxLength(256)]
        [Description("文本区域 长度大于128则自动为textarea")]
        public string Text { get; set; }

        /// <summary>
        /// 角色
        /// </summary>
        [PasteOuter("gradeInfo", "extendGrade", "id", "name")]
        [PasteLoaditem("/api/app/obj/item?grade_id={{:=item.gradeId}}")]
        [Description("角色")]
        public int GradeId { get; set; }

        /// <summary>
        /// 角色
        /// </summary>
        [PasteOuters("gradeInfo", "extendGrade", "id+:+name", "name+:+code")]
        [Description("角色")]
        public int[] grade_ids { get; set; }

        /// <summary>
        /// 角色的扩展信息,编辑的时候显示用
        /// </summary>
        [PasteHidden]
        [Description("角色的扩展信息,编辑的时候显示用")]
        public GradeShort ExtendGrade { get; set; }

        /// <summary>
        /// 外表时间
        /// </summary>
        [PasteObject("mod1", "", "id", "name")]
        [Description("外表时间")]
        public Model1 date2 { get; set; }

        /// <summary>
        /// 外表字符
        /// </summary>
        [PasteObjects("mod2", "id", "mark", "")]
        [Description("外表字符")]
        public Model2[] str2 { get; set; }

        /// <summary>
        /// 
        /// </summary>
        [PasteSunform("mod1", 200)]
        [PasteGroupItem("g2", "G2组", true)]
        public Model1 mod1 { get; set; } = new Model1 { Id = 3, Name = "3333333333" };

    }

    /// <summary>
    /// 
    /// </summary>
    public class Model1
    {
        /// <summary>
        /// ID 这个用于排重
        /// </summary>
        [Description("ID 这个用于排重")]
        public int Id { get; set; }

        /// <summary>
        /// 名称 这个用于显示到UI
        /// </summary>
        [MaxLength(32)]
        [Description("名称 这个用于显示到UI")]
        public string Name { get; set; }
    }

    /// <summary>
    /// 
    /// </summary>
    public class Model2
    {
        /// <summary>
        /// ID 这个用于排重
        /// </summary>
        [Description("ID 这个用于排重")]
        public int Id { get; set; }

        /// <summary>
        /// 名称 这个用于显示到UI
        /// </summary>
        [MaxLength(32)]
        [Description("名称 这个用于显示到UI")]
        public string Mark { get; set; }


        /// <summary>
        /// 描述
        /// </summary>
        [MaxLength(64)]
        [Description("描述")]
        public string Desc { get; set; }
    }

    /// <summary>
    /// 图片案例
    /// </summary>
    [Description("图片案例")]
    public class ImageModel
    {
        /// <summary>
        /// 图片1
        /// </summary>
        [PasteImage(1, "/api/app/Upload/UpWord?type=word", "1500*0")]
        [Description("图片1")]
        public string Img1 { get; set; }

        /// <summary>
        /// 图片文字识别
        /// </summary>
        [PasteImage(1, "word", "750*0")]
        [Description("图片2")]
        [PasteUnit(".")]
        public string Img2 { get; set; }

        /// <summary>
        /// 图片3
        /// </summary>
        [PasteImage(3, "head", "120*0")]
        [Description("图片3")]
        [PasteUnit(".")]
        public string Img3 { get; set; }

        /// <summary>
        /// 图片4
        /// </summary>
        [PasteImage(5, "head", "120*0")]
        [Description("图片4")]
        public string[] Img4 { get; set; }
    }

    /// <summary>
    /// 上传文件案例
    /// </summary>
    [Description("上传文件案例")]
    public class FileModel
    {
        /// <summary>
        /// 文件1 默认配置,使用默认的路径上传
        /// </summary>
        [PasteFile()]
        [Description("文件1 默认配置,使用默认的路径上传")]
        public string File1 { get; set; } = "";

        /// <summary>
        /// 文件2 定义存储路径
        /// </summary>
        [PasteFile("", "xpath")]
        [Description("文件2 定义存储路径")]
        public string File2 { get; set; } = "";

        /// <summary>
        /// 文件3 自定义上传地址,注意headers
        /// </summary>
        [PasteFile("/api/app/Upload/UpFile?type=abc")]
        [Description("文件3 自定义上传地址,注意headers")]
        public string File3 { get; set; } = "";

        /// <summary>
        /// 文件4 自定义onchange函数
        /// </summary>
        [PasteFile("", "", "funcUploadFile(this);")]
        [Description("文件4 自定义onchange函数")]
        public string File4 { get; set; } = "";
    }

    /// <summary>
    /// query案例
    /// </summary>
    [Description("query案例")]
    public class LinkQueryModel
    {

        ///<summary>
        ///姓名 模拟短文本输入
        ///</summary>
        [MaxLength(32)]
        [Required]
        [Description("姓名 模拟短文本输入")]
        public string Name { get; set; }

        ///<summary>
        ///文本区域 模拟文本区域的输入
        ///</summary>
        [MaxLength(128)]
        [Description("文本区域 模拟文本区域的输入")]
        public string Desc { get; set; }

    }

    /// <summary>
    /// 
    /// </summary>
    public class DataFormat
    {
        /// <summary>
        /// Int
        /// </summary>
        [Description("Int")]
        [PasteClass("cusclass")]
        public int Int1 { get; set; }

        /// <summary>
        /// Int?
        /// </summary>
        [Description("Int?")]
        [PasteStyle("width:50px;")]
        public int? Int2 { get; set; }

        /// <summary>
        /// Long
        /// </summary>
        [Description("Long")]
        public long Long1 { get; set; } = 1744152780507;

        /// <summary>
        /// Long?
        /// </summary>
        [Description("Long?")]
        public long? Long2 { get; set; } = 1744152780507;

        /// <summary>
        /// Date TimeStamp
        /// </summary>
        [PasteDate("yyyy-MM-dd", "times")]
        [Description("Date TimeStamp")]
        public long Time1 { get; set; } = 1744152780;

        /// <summary>
        /// Date TimeStamp?
        /// </summary>
        [PasteDate("yyyy-MM-dd", "times")]
        [Description("Date TimeStamp?")]
        public long? Time2 { get; set; } = 1744252780;

        /// <summary>
        /// Date TimeStampms
        /// </summary>
        [PasteDate("yyyy-MM-dd HH:mm:ss", "timems")]
        [Description("Date TimeStampms")]
        public long Time3 { get; set; } = 1744352780123;

        /// <summary>
        /// Date TimeStampms?
        /// </summary>
        [PasteDate("yyyy-MM-dd", "timems")]
        [Description("Date TimeStampms?")]
        public long? Time4 { get; set; } = 1744452780507;

        /// <summary>
        /// Enum[]
        /// </summary>
        [PasteSplit(",")]
        [Description("Enum[]")]
        public EnumIsEnableState[] state1 { get; set; }

        /// <summary>
        /// long[]
        /// </summary>
        [PasteSplit(",")]
        [Description("long[]")]
        public long[] state2 { get; set; }

        /// <summary>
        /// int[]
        /// </summary>
        [PasteSplit(",")]
        [Description("int[]")]
        public int[] state3 { get; set; }

        /// <summary>
        /// uint32[]
        /// </summary>
        [PasteSplit(",")]
        [Description("uint32[]")]
        public UInt32[] state4 { get; set; }

    }
}
​ ​