这个一般用于显示object对象中的某一个字段,比如如下代码

display

在ListDto中用于显示某一个object类型的字段

字段 类型 示例 说明
args1 字符 name 显示当前字段的某一个子字段,默认为name
    ///<summary>
    ///角色绑定权限
    ///</summary>
    [PasteDisable(true, true)]
    public class GradeRoleListDto : EntityDto<int>
    {
        ///<summary>
        ///角色ID 点击选择角色
        ///</summary>
        public int GradeId { get; set; }

        /// <summary>
        /// 角色
        /// </summary>
        [PasteDisplay]
        public GradeShortModel ExtendGrade { get; set; }

        ///<summary>
        ///权限ID 点击选择权限
        ///</summary>
        public int RoleId { get; set; }

        /// <summary>
        /// 权限
        /// </summary>
        [PasteDisplay("name")]
        public RoleShortModel ExtendRole { get; set; }

    }

看上面的Dto,主要是我这个刚好GradeShortModel的显示是name这个字段,所以可以省略

图片alt


注意:PasteOuterDisplay 已过期(Obsolete),建议改用 PasteDisplay(本特性)。

隐藏,其实我一直很想改成hide。。。或许后面会做兼容!
这个就是隐藏这个字段,
这个有点像jsonignore
也就是提交的时候这个字段不会回传的,所以要注意!!!
在view.html中,也就是表单页面中,表示不渲染这个对象,响应的在提交数据的时候也没有这个对象!!!

hidden

表示隐藏这个字段,一般是主键ID,或者外表链接过来的会这配置,比如需要给cate添加子项,则添加由cate那边过来
这个也适用于ListDto

字段 类型 示例 说明
args1 字符 bind 如果不填表示隐藏,如果填写了表示页面的query中model=xxx的时候不隐藏,表示非xxx的时候隐藏,xxx的时候不隐藏

这个特性一般用于表格显示的时候,也就是index.html页面,这个页面有几种模式(query中model=xxx)

view

默认模式,不填也是这个模式

select

模式,就是outer特性的时候,最后一列是选择的时候

bind

这个模式一般是绑定关系的时候,比如从角色列表中,找到一个角色,然后给这个角色绑定权限,那么逻辑上就是打开权限列表页面,如果已经绑定这个角色了的,则switch就是打开状态,否则就是关闭状态,这个时候role的页面就是bind模式!

这个hidden有时候可以被唤醒,就是会显示出来!
在changeui中,会基于当前字段的值进行显示隐藏
具体的查看功能类!
那么有没有一个不显示出来的呢?
hide
其实hidden可以看成是readonly的隐藏款,因为在表单提交的时候是会提交这个对象的!!!

这个特性只用于表单的时候
和hidden很像对吧!
不过他们还是有区别的
empty会占位
而hidden不会占位

比如以下信息

    ///<summary>
    ///网关配置 为不同项目的不同环境配置不一样的IP网段
    ///</summary>
    public class BindProjectNetworkAddDto
    {

        ///<summary>
        ///项目 对哪个项目生效
        ///</summary>
        [ColumnDataType("outer", "projectInfo", "extendProject", "id", "name")]
        [PasteMark]
        [PasteRequired]
        public int ProjectId { get; set; }

        /// <summary>
        /// 占位
        /// </summary>
        [PasteEmpty]
        public int Menu1 { get; set; }

        ///<summary>
        ///服务器 在哪一台服务器上生效
        ///</summary>
        [ColumnDataType("outer", "linuxInfo", "extendLinux", "id", "name")]
        [PasteMark]
        [PasteRequired]
        public int LinuxId { get; set; }

        /// <summary>
        /// 占位
        /// </summary>
        [PasteEmpty]
        public int Menu2 { get; set; }

        ///<summary>
        /// 网关地址 示例:192.168.1.0/16
        ///</summary>
        [MaxLength(24)]
        [PasteMark]
        [Required(ErrorMessage ="网关地址不能为空,请重新输入 示例 172.5.1.0/16")]
        [RegularExpression("^(192|172)(\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})){2}(\\.0/16)$", ErrorMessage = "{0}输入格式错误,192|172打头0/16结尾,示例:192.168.5.0/16")]
        public string Gatway { get; set; }

        /// <summary>
        /// 占位
        /// </summary>
        [PasteEmpty]
        public int Menu3 { get; set; }

    }

看上面,其实Menu字段的都是无效字段,为了占位用而已,不然这个表单就很少内容了
就三个字段,占2行,第一行2个字段,第二行一个字段
通过添加empty字段后,就变成三行了
每行开头一个有效字段,第二列的字段都是空的
效果如下

图片alt

如上,那么问题来了,如果我需要每一行之间空一个空位咋办???

有些时候,我们希望显示某些内容,不希望用户可以修改
这个时候我们可以给这个字段上一个特性
readonly

这个特性的作用就是给组件上readonly,所以需要对应的组件支持这个特性!
比如text textarea richtext等都是支持的!

注意提交数据的时候,服务端需要做判断,否则用户可以通过F12进行修改后提交!!!

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

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

上面的代码在UI上为

图片alt

后面这个点击后没有输入焦点,不让修改,
样式上暂时的需求是不需要不同,你也可以为readonly配置不一样的样式,比如有点灰色的背景色!

看到上面我就知道有个BUG了,readonly应该不要给他删除按钮!!!

这个没啥好说的,就是密码框!

这个表示编写html代码,所以一般用于表格页面

html

如果要显示自定义的表格,则使用这个,表示直接显示信息模板注意里面的带参使用{{:=item.name}}这样的形式

字段 类型 示例 说明
args1 字符 <div><span>{{:=item.name}}</span><span>{{:=item.desc}}</span></div> 需要在td中显示的html代码,支持模板的写法

比如说案例项目的权限列表页面
效果如下
图片alt
看特别是名称这一列,这一列肯定是html干活的,我们看下这个特性是如何写的

    ///<summary>
    ///权限列表
    ///</summary>
    [PasteLinkQuery("fatherId")]
    [PasteButton("备份", "global_role_output(this);")]
    [PasteButton("恢复", "global_role_default(this);","","grady")]
    public class RoleInfoListDto
    {
        /// <summary>
        /// ID
        /// </summary>
        [ColumnDataType("orderby", "Id", "Id desc")]
        public int Id { get; set; }

        ///<summary>
        ///名称
        ///</summary>
        [PasteClass]
        [ColumnDataType("html", "<div class=\"level level{{:=item.level}} role{{:=item.roleTypeInt}}\">{{ if(item.icon){ }}<i class=\"Hui-iconfont {{:=item.icon}}\"></i>{{ } }} {{:=item.name}}</div>")]
        public string Name { get; set; }
}

这个特别适合于自定义一些样式等!

width

表示这个字段在表格得宽度,可以为*或者对应得数字,是表格得列的宽度的权重,这个适用于ListDto

字段 类型 示例 说明
args1 字符 60 表示这个列的宽度,可以为数字也可以是*比如3*这样

表格数据展示的时候显示宽度用

style

针对一些特殊的设定,比如textarea,有些地方我们要设置高一些

字段 类型 示例 说明
args1 字符 height:500px; 就是style里面的内容

其实就是style里面的代码部分,注意一个项是以;结尾的

针对一些自定义的class,可以通过这个来配置

字段 类型 示例 说明
args1 字符 btngo 表示这个对象要添加的class

可以理解为为表单字段设定class名称
默认调用的是fleft表示内容做停靠!

在表单中,数据一般是以2列显示的,
也就是表单的内容一左一右为一行
如果你要某一个数据占整行,就给他这个特性!

ui

注意:PasteUI 已过期(Obsolete),建议改用 PasteChartui。

这个主要是给chart使用的,默认表格是table,也就是列表页面支持table和chart模式
chart就是图表有line,bar模式的,目前采用的是echarts的组件

字段 类型 示例 说明
args1 字符串 table 首显方式table就是默认的表格形式
args2 字符串 chart 备选方式
args1 字符串
args1 字符串

如果args2不填写,则UI中不会出现用户可以切换的按钮!
args1写哪个,哪个就是默认显示的方式
如果query有,比如show_type=chart,而args1又为table
则chart生效!!!

和这个相关的还有
charty
chartx
chartseries

X轴
一般表示时间
图片alt
如上图所示,下面哪一行的就是chartx,在图中表示时间轴

参数 类型 示例 备注
args1 str 时间 X轴的名称,貌似好像没用
args2 str 备用 备用
args3 str 备用 备用
args4 str 备用 备用

注意一个Model里面只能有一个为chartx,有且只能有一个!

Y轴?
我的理解Y轴柱
图片alt
上图的左侧的成绩多少分,右侧的身高多少cm

这个特性是标注在Class上的
按照标注顺序有序标0开始
比如上图的,可能成绩有语文,数学,英语,身高
那么语文,数学,英语就用左边柱子的刻度
身高单独用右边的刻度!

参数 类型 示例 说明
args1 str 成绩 显示名称,比如上面的成绩,身高
args2 str left 柱子放置位置,left左侧,right右侧
args3 int 0 偏移量
args4 str {value}cm 格式化显示

那么接下来的就是数据轴了,请看chartseries

数据轴,上面案例说的 语文 数学 英语 身高的具体数值!
图片alt
就是主视图区域的柱子bar或者线段line

参数 类型 示例 说明
args1 str line line线段线条模式bar柱子形式
args2 int 0 用之前的charty的哪一根,注意和顺序有关
args3 str 标题 语文
args4 str 备用 备用

我的理解args3就是legend,最中间上面那个!

上面的几个特性介绍了图表,我们来看下上面图片的额Dto的配置是怎么样的

///<summary>
///测试表 用于测试CURD的表
///</summary>
[PasteBatch("批量启用", "global_bitch_state(this,1)")]
[PasteBatch("批量禁用", "global_bitch_state(this,0)")]
[PasteUI("chart","table")]
[PasteCharty("成绩","left",0,"{value}分")]
[PasteCharty("身高","right",0,"{value}cm")]
//[ColumnDataType("button","新增新增","open_window('新增','./view.html?path=xxx')","add")]
public class TestTableListDto : EntityDto<int>
{
    ///<summary>
    ///姓名 模拟短文本输入
    ///</summary>
    [ColumnDataType("edit", "view")]
    public string Name { get; set; }

    ///<summary>
    ///头像 模拟图片上传
    ///</summary>
    [ColumnDataType("image")]
    public string Head { get; set; }

    ///<summary>
    ///年龄 模拟输入number
    ///</summary>
    [PasteMark]
    [PastePrefix("多少")]
    [ColumnDataType("edit","view")]
    [PasteUnit("周岁")]
    public int Age { get; set; }

    /// <summary>
    /// 金额
    /// </summary>
    [PasteFenToYuan]
    [PastePrefix("¥")]
    [ColumnDataType("edit", "view")]
    [PasteUnit("元")]
    public long Val1 { get; set; } = 1600;

    ///<summary>
    ///文本区域 模拟文本区域的输入
    ///</summary>
    [ColumnDataType("class", "fleft")]
    [PasteMark]
    [ColumnDataType("edit", "view")]
    public string Desc { get; set; }

    /////<summary>
    /////富文本 模拟富文本,前端HTML的是使用wangEditv5
    /////</summary>
    //public string Blog { get; set; }

    /// <summary>
    /// 开关
    /// </summary>
    [PasteSwitch("",true)]
    public bool IsOpen { get; set; }

    /// <summary>
    /// 开关
    /// </summary>
    [PasteSwitch("", false,"handlerClose")]
    public bool IsClose { get; set; }

    ///<summary>
    ///加入日期 模拟必填时间的输入
    ///</summary>
    [ColumnDataType("edit","view")]
    [ColumnDataType("chartx")]
    public DateTime JoinDate { get; set; }

    ///<summary>
    ///更新日期 模拟非必填的时间输入
    ///</summary>
    [ColumnDataType("hidden")]
    public DateTime? UpdateDate { get; set; }

    /////<summary>
    /////单选 一般表示状态,内定的,有点像Enum,关于Enum后续会支持
    /////</summary>
    //[ColumnDataType("html", "<div>{{:=item.dateType}}-{{:=item.gradeId}}</div>")]
    //public int DateType { get; set; }

    /// <summary>
    /// 时间类型
    /// </summary>
    [ColumnDataType("select", "[{\"name\":\"日类型\",\"value\":0},{\"name\":\"月类型\",\"value\":1},{\"name\":\"年类型\",\"value\":2}]")]
    [ColumnDataType("edit","view")]
    public int DateType { get; set; }

    /// <summary>
    /// 给DateType编辑的时候使用,记得要赋值
    /// </summary>
    [PasteHidden]
    public List<SelectIntItem> DateType_expend_select_values { get; set; }

    /// <summary>
    /// 类型显示
    /// </summary>
    [ColumnDataType("html", "<div class=\"dtype{{:=item.dateTypeInt}}\">{{:=item.dateType}}-{{:=item.dateType}}</div>")]
    public int DateTypeInt { get { return DateType; } }

    ///<summary>
    ///角色ID 这里一般用于外表,就是选择其他表的一个数据作为输入内容
    ///</summary>
    [ColumnDataType("hidden")]
    public int GradeId { get; set; }

    ///<summary>
    ///成绩1 模拟前端限定2位小数
    ///</summary>
    [ColumnDataType("edit", "view")]
    [ColumnDataType("chartseries")]
    public double Score { get; set; }

    ///<summary>
    ///成绩2 模拟前端限定2位小数
    ///</summary>
    [ColumnDataType("chartseries")]
    public double Score2 { get; set; }

    ///<summary>
    ///身高 模拟前端限定2位小数
    ///</summary>
    [PasteChartseries("bar",1)]
    public double Score3 { get; set; }

    /// <summary>
    /// 普通菜单
    /// </summary>
    [ColumnDataType("menu", "菜单一", "open_window('查阅用户带参','./pasteform/index.html?path=userInfo&xxid={{:=item.id}}');", "Hui-iconfont-menu")]
    public string Menu2 { get; set; }

    /// <summary>
    /// 普通条件菜单
    /// </summary>
    [ColumnDataType("ifmenu", "item.age==7", "<a href=\"javascript:;\" onclick=\"open_window(`111`,`./pasteform/index.html?path=userInfo&goid={{:=item.id}}`)\">条件1</a>", "")]
    public string Menu3 { get; set; }

    /// <summary>
    /// 菜单盒子菜单
    /// </summary>
    [ColumnDataType("menu", "菜单二", "open_window('查阅用户带参','./pasteform/index.html?path=userInfo&xxid={{:=item.id}}');", "Hui-iconfont-menu", "box")]
    public string Menu5 { get; set; }

    /// <summary>
    /// 菜单盒子中的条件菜单
    /// </summary>
    [ColumnDataType("ifmenu", "item.age==8", "<a href=\"javascript:;\" onclick=\"open_window(`222`,`./pasteform/index.html?path=userInfo&goid={{:=item.id}}`)\">条件2</a>", "box")]
    public string Menu4 { get; set; }

    /// <summary>
    /// 详细
    /// </summary>
    [ColumnDataType("menu", "详细", "open_window('查看{{:=item.id}}详细','./pasteform/detail.html?path=testTable&id={{:=item.id}}');", "Hui-iconfont-menu")]
    public string Menu6 { get; set; }

}

可以看到要以图表形式显示,依然简单,只需要打几个特性即可!!!

本来不引入这个的,但是在最新的一个项目中遇到如下问题!
假设有一个字段
my_stype
值有1,2
当值为1的时候,我希望 regexp:myrole 的显示,也就是不为1的时候 regexp:myrole 隐藏!

注意看上面,myrole更多的是一个类,因为单个没必要用正则regexp,假设他里面有10个字段,有些字段我不希望显示(某些地方要使用long类型,而前端我希望使用datetiem形式显示,那就有了api提交后,由服务端进行转换,所以这个时候hide就有必要了!)

之前也在考虑是否要引入jsonignore这个特性(官方就有了)
这个特性有点特殊,估计后续会引入!

数据隐藏不是直接去除这么简单,比如
user_id
userinfo
这个时候userinfo往往是为了给user_id提供UI的支持的,比如你选中的是10021233这个用户,显示一串数字肯定不合适的,通过比如outer特性,可以读取到显示为张三李四,这样会不会更好!!

changeui不会唤醒hide
hide不会在UI中有渲染或dom
提交的时候hide等效于jsonignore,不会提交给api端!

这个和之前的loaditem很像!
这个是本地化的loaditem!
比如有以下需求
如果type==1,则显示title字段
如果type==2则显示name字段
这个时候你就给type标注特性chagneui即可!

changeui

改变UI,reload的变种,reload需要api配合,这个是本地的,比如某一个选项选中1,则下面的4.5字段隐藏,否则45显示,是否支持组模式等???
如果选中命中args1,则args2隐藏,如果没命中,则args2显示
可以配置多个,比如有一个lselect有a,b,c对应ABC模块,如果默认值为a,则应该配置B,C隐藏,然后配置3个changeui,a,B b,B 和c,C
这样如果选中a,会走3遍,因为都没命中,也就是B,C都隐藏
如果选中B,也会走3遍,最后变成B显示,A,C隐藏了

字段 类型 示例 说明
args1 字符串 1 当前字段的值,多个之间使用,隔开,比如1,2,3,4选项,选中2或4都可以执行以下逻辑,则2,4
args2 字符串 name,age,info_(.*)_name 表示命中后哪些字段显示,否则隐藏,如果是组则group:开头,比如group:gc_01,如果是正则则regexp:开头,args3同理
args3 字符串 备用 备用
args4 字符串 备用 备用

Dto示例

        /// <summary>
        /// 类型
        /// </summary>
        [PasteSelect("[{\"name\":\"类型1\",\"value\":1},{\"name\":\"类型2\",\"value\":2}]")]
        [PasteChangeui("1","title1")]
        [PasteChangeui("2","title2")]
        public int Vtype { get; set; }

        /// <summary>
        /// 标题 Vtype==1的时候填写
        /// </summary>
        [MaxLength(32)]
        public string Title1 { get; set; }

        /// <summary>
        /// 标题 Vtype==2的时候填写
        /// </summary>
        [MaxLength(32)]
        public string Title2 { get; set; }

UI表现

图片alt
那是因为我给Vtype的默认值为0,所以2个都没显示!
如果切换一下,就会发现UI变了!
图片alt
所以默认值也很重要!

注意

目前的changeui只能作用于select或者lselect特性之后,后续会扩展更多的支持,至少outer也是可以支持的!

标记字段,用于生成表格中的标记列。

书签特性的 popup 形式,点击后不跳转到新页面,而是在当前页面对应的位置弹出 popup 显示说明。
需要到 ../lib/api.js 配置 global_tap_mark 的 apiRoute。

字段 类型 示例 说明
args1 字符 product 书签模块,为空表示当前模块
args2 字符 code 书签项,为空表示当前字段
args3 字符 popup 固定为 popup
args4 字符 留空 备用

批量操作,作用于 ListDto 中,在表格左上方显示,左侧会有可选的单选框,表示批量操作。
使用 FuncReadBitchCheckedNumber 或者 FuncReadBitchCheckedString 可以读取选中的值。

字段 类型 示例 说明
args1 字符 批量删除 按钮名称
args2 字符 global_batch_del(this); 点击后执行的函数
args3 字符 Hui-iconfont-shanchu 图标 class
args4 字符 批量删除 鼠标悬浮标题

还支持 btnCode 参数用于按钮权限。

按钮。注意 Property 上只能单个,Class 上可以多个,表示功能按钮。
如果在 Class 上做权限按钮,需要配合 PasteEnable 使用:先禁用某功能,再写入对应按钮,也就是 PasteEnable 中配置 add 为 0,然后 PasteButton 中的 code 配置为 add。

字段 类型 示例 说明
args1 字符 保存 按钮名称(Class 时为最下方提交按钮的文本)
args2 字符 global_tap_regex(this); 点击后执行的函数,支持宏
args3 字符 add add 表示替换表格页面的新增按钮
args4 字符 标题 鼠标悬浮标题

还支持 btnCode 参数用于按钮权限。


注意:PasteTitle 已废弃(建议改用 Notice 替代),其参数主要用于按钮等特殊组件的标题。

编辑模式后的小按钮(估计用 html 模式更可靠)。

字段 类型 示例 说明
args1 字符 保存 按钮名称
args2 字符 留空 自定义函数,留空表示 func_min_btn_click(this,id,name)
args3 字符 留空 样式名称
args4 字符 留空 自定义参数

分组,用于 Class。
如果和 PasteDirectsun 一起用,且为数组,code 的格式形如 xxxx__0,这样才能基于当前新增一个组。

字段 类型 示例 说明
args1 字符 gr1 代码,唯一
args2 字符 基础配置 名称
args3 字符 open 是否展开,默认 open
args4 字符 留空 如果为 edit 表示可以基于当前版本创建一个新的,需要为数组模式

分组,用于 Property,需要和 Class 中的 PasteGroup 呼应。
Class 不写 PasteGroup 时,可以使用带名称的重载:命中第一个作为组。
如果和 PasteDirectsun 一起用,且为数组,code 的格式形如 xxxx__0。

字段 类型 示例 说明
args1 字符 gr1 代码,需和 Class 中的特性呼应
args2 字符 基础配置 名称(Class 不写 Group 时使用)
args3 字符 open 是否展开,默认 open
args4 字符 留空 如果为 edit 表示可以基于当前版本创建一个新的,需要为数组模式

针对表格头设计的样式,默认 hresize 表示列拖拽调整大小。

字段 类型 示例 说明
args1 字符 hresize 样式名称,默认 hresize
args2 字符 留空 备用
args3 字符 留空 备用
args4 字符 留空 备用

为表格的 tr 标记 class,可以使用宏。
有些时候表格需要为行限定样式,则指定一个字段用于当前行的 class 名称。

字段 类型 示例 说明
args1 字符 trclass_name 字段的名称,表示从数据的该字段读取值作为样式名称
args2 字符 留空 备用
args3 字符 留空 备用
args4 字符 留空 备用

为 tr 写入 html 代码,不再使用默认样式,直接渲染整行 tr,可以使用宏。

字段 类型 示例 说明
args1 字符 data-level=”{{:=item.level}}” 写入到 tr 上的 html 属性代码
args2 字符 留空 备用
args3 字符 留空 备用
args4 字符 留空 备用

标记为半行。主要针对 maxlength 大于 64 的字段,希望半行显示,否则会切换到单行。

要点字段,打重点、注意点,非必填。

sum

字段统计,用于 Sum 计算,可以用于 UI 的当前页,也可以用于后端基于查询的统计。
用于表格中某一列值的统计,体现在表格页面就是某一列当前页面的合计是多少,支持多个字段都标记。
如果是基于查询的统计,你得返回 PasteTotal,也就是返回类型改成 PastePagedto。

评分,5 星评分,需要配合 PasteLoadlib 引入 ./lib/star_score.js。

字段 类型 示例 说明
args1 数字 5 最大多少分

获取定位信息,需要坐标和地址信息(对应 wx.chooseLocation),详细地址放当前字段。

字段 类型 示例 说明
args1 字符 city 城市放到哪个字段
args2 字符 longitude 经度放到哪个字段,double 类型
args3 字符 latitude 纬度放到哪个字段,double 类型

gps

获取定位信息,只要坐标信息(对应 wx.getLocation)。

字段 类型 示例 说明
args1 字符 longitude 经度放到哪个字段,double 类型
args2 字符 latitude 纬度放到哪个字段,double 类型

是否启用 CRUD 功能,是 PasteDisable 的反向配置。
1 启用,0 不启用,其他值忽略、使用前端的默认配置。

字段 类型 示例 说明
args1 数字 1 新增 1 启用 0 禁用 2 忽略
args2 数字 1 编辑 1 启用 0 禁用 2 忽略
args3 数字 1 删除 1 启用 0 禁用 2 忽略
args4 数字 2 详细 1 启用 0 禁用 2 忽略

注意:PasteDisable 已过期,建议改用 PasteEnable。

表示忽略这个字段。和 JsonIgnore 有点区别,JsonIgnore 包含它。
标记这个的话,后端还是可以接收 json 的,只是返回给前端的时候不会有这个字段的信息,所以基于实际情况使用。
如果标记于 Class 上,表示这个 Class 不进行比如 Desc 等的处理(这里说的是 PasteBuilder 工具)。

值类型,特别用于前端要推测类型的时候,比如 EnumRoleType[],这个时候没办法从 value 推测,因为可能为 null,就需要这个辅助。

字段 类型 示例 说明
args1 字符 number 值类型,可选 number/string/boolean

配置默认以图表显示还是表格显示,还是 2 个都可以显示。谁写在前面就默认用哪个显示,也可以使用 query 中的 show_type 来传值。

字段 类型 示例 说明
args1 字符 table 默认方式,table 表格 / chart 图表
args2 字符 chart 可选方式,不能 2 个都一样,单个显示的时候这个参数留空
args3 字符 留空 备用
args4 字符 留空 备用

按需显示,是 PasteHidden 的权限版本,表示有对应 btnCode 的才显示。
特性名称为 hidden,有权限的时候不下发 hidden 特性。

字段 类型 示例 说明
args1 字符 view,bind 不隐藏的 model,支持用 , 分割多个
args2 字符 留空 备用
args3 字符 留空 备用
args4 字符 留空 备用

还支持 btnCode 参数,表示有该权限的时候才显示。

服务端特性,脱敏处理。需要 Class 先标记,表示这个对象有字段要脱敏,然后字段再标记。

字段 类型 示例 说明
args1 数字 3 起始保留长度
args2 数字 4 末尾保留长度
args3 字符 * 脱敏字符
args4 布尔 false 是否在新对象上处理,false 为原对象上变更

导出忽略。导出的时候,忽略这个字段,一般用于 ListDto 中的字段。
导出约定:没有名称的、菜单区域的、配置了当前特性的,都不导出。

发现更多文档

来自贴代码的公开项目