List 列表
基础用法
纯列表,数据是通过data
静态配置的
{
"type": "list",
"resource": {
"fields": {
"text": {
"label": "文本",
"type": "text"
},
"inputnumber": {
"type": "inputnumber",
"label": "数字输入"
},
"select": {
"type": "select",
"label": "select多选",
"props": {
"options": {
"a": "黄金糕",
"b": "双皮奶",
"c": "蚵仔煎",
"d": "龙须面",
"e": "北京烤鸭"
}
}
}
}
},
"data": {
"list": [{
"text": "双11活动",
"inputnumber": 3,
"select": "a,b,c"
}, {
"text": "双11活动2",
"inputnumber": 4,
"select": "b,c"
}, {
"text": "双11活动3",
"inputnumber": 5,
"select": "a,b,c"
}, {
"text": "双11活动4",
"inputnumber": 6,
"select": "c"
}]
}
}
显示配置
索引行号0.9.1+
通过设置props.type: 'index'
可以实现在每行显示索引行号。
{
"type": "list",
"resource": {
"fields": {
"text": {
"label": "文本",
"type": "text"
},
"inputnumber": {
"type": "inputnumber",
"label": "数字输入"
},
"select": {
"type": "select",
"label": "select多选",
"props": {
"options": {
"a": "黄金糕",
"b": "双皮奶",
"c": "蚵仔煎",
"d": "龙须面",
"e": "北京烤鸭"
}
}
}
}
},
"data": {
"list": [{
"text": "双11活动",
"inputnumber": 3,
"select": "a,b,c"
}, {
"text": "双11活动2",
"inputnumber": 4,
"select": "b,c"
}, {
"text": "双11活动3",
"inputnumber": 5,
"select": "a,b,c"
}, {
"text": "双11活动4",
"inputnumber": 6,
"select": "c"
}]
},
"props": {
"type": "index"
}
}
显示配置
带分页的列表
是否显示分页由列表接口返回的total
字段决定,当接口没有返回该字段或者该字段返回0,则不显示分页。如果不需要分页的场景可以利用此特性。分页时默认是20条一页,可通过pageSize
和接口配合来改变。
另外,数据如果是通过接口获取,记得主动在 events
里的 init
调一下 @list
{
"type": "list",
"resource": {
"api": {
"prefix": "https://easy-mock.com/mock/5a0023effbbb09615044cb82/",
"list": "smallList",
"successCode": 0
},
"fields": {
"id": {
"type": "text",
"label": "ID",
"props": {
"width": 50
}
},
"testText": {
"type": "text",
"label": "名称"
},
"testTextarea": {
"type": "textarea",
"label": "文本框"
},
"testDate": {
"type": "datetime",
"label": "创建时间"
},
"testSwitch": {
"type": "switch",
"label": "开关"
}
}
},
"events": {
"init": "@list"
}
}
显示配置
表头带排序和筛选的列表
这两个功能是通过接口来实现真实排序和筛选的,下面例子是模拟接口,看不到排序和筛选后的效果。
配置在 sorts
内的字段可以支持排序,排序变更时会触发 list
action并携带对应的排序参数。
配置在 filters
内的字段可以支持过滤,可以通过 multiple
控制是否支持多选,如果 remote
配置为false、则会使用默认的字符串过滤并且不会请求接口(如果要自定本地过滤请使用props透传),当 remote
为true时,选择的过滤结果将携带在参数上并会发起新的请求刷新列表。
如果没有配置会使用同名 field
的 props.options
配置,如果都没有filter配置会失效
{
"type": "list",
"resource": {
"api": {
"prefix": "https://easy-mock.com/mock/5a0023effbbb09615044cb82/",
"list": "smallList",
"successCode": 0
},
"fields": {
"id": {
"type": "text",
"label": "ID",
"props": {
"width": 100
}
},
"testSelect": {
"type": "select",
"label": "select多选",
"props": {
"options": {
"a": "黄金糕",
"b": "双皮奶",
"c": "蚵仔煎",
"d": "龙须面",
"e": "北京烤鸭"
}
}
},
"testText": {
"type": "text",
"label": "名称"
},
"testTextarea": {
"type": "textarea",
"label": "文本框"
},
"testDate": {
"type": "datetime",
"label": "创建时间"
}
}
},
"filters": {
"testSelect": {
"multiple": true,
"remote": true
}
},
"sorts": {
"id": true
},
"events": {
"init": "@list"
}
}
显示配置
搜索配置 0.5.0+
注意:在 ams@0.5.0
以前的版本是通过配置 searchs
和 searchsOptions
实现的搜索配置,0.5.0+
使用新的operations
+ slot
实现列表的搜索和多选配置(0.5.0-0.6.0 会兼容searchs和searchsOptions,将在0.6.0+移除兼容支持)
通过配置slot
为searchs
可以配置搜索条件,operations
配置参考:operations配置
{
"type": "list",
"resource": {
"api": {
"prefix": "https://easy-mock.com/mock/5a0023effbbb09615044cb82/",
"list": "smallList",
"successCode": 0
},
"fields": {
"id": {
"type": "text",
"label": "ID"
},
"testSelect": {
"type": "select",
"label": "select多选",
"props": {
"options": {
"a": "黄金糕",
"b": "双皮奶",
"c": "蚵仔煎",
"d": "龙须面",
"e": "北京烤鸭"
}
}
},
"testText": {
"type": "text",
"label": "名称",
"props": {
"placeholder": "请输入名词"
}
}
}
},
"data": {
"list": [{
"id": 3,
"testText": "双11活动",
"testSelect": "a,b,c"
}, {
"id": 4,
"testText": "双11活动2",
"testSelect": "b,c"
}, {
"id": 5,
"testText": "双11活动3",
"testSelect": "a,b,c"
}, {
"id": 6,
"testText": "双11活动4",
"testSelect": "c"
}]
},
"operations": {
"testText": {
"slot": "searchs",
"type": "field",
"label": "名称"
},
"testSelect": {
"slot": "searchs",
"type": "field",
"label": "类型"
},
"search": {
"slot": "searchs",
"type": "button",
"props": {
"type": "primary"
},
"label": "搜索",
"event": "list:1"
}
}
}
显示配置
多选操作配置 0.5.0+
通过配置list 的 options.multipleSelect
为 true
时可让列表出现多选按钮,配置 slot
为 multipleSelect
可以配置多选后出现的操作(多选操作只有在选择了至少一行后才会出现),operations
配置参考:operations配置
{
"type": "list",
"resource": {
"fields": {
"id": {
"type": "text",
"label": "ID"
},
"testSelect": {
"type": "select",
"label": "select多选",
"props": {
"options": {
"a": "黄金糕",
"b": "双皮奶",
"c": "蚵仔煎",
"d": "龙须面",
"e": "北京烤鸭"
}
}
},
"testText": {
"type": "text",
"label": "名称",
"props": {
"placeholder": "请输入名词"
}
}
}
},
"data": {
"list": [{
"id": 3,
"testText": "双11活动",
"testSelect": "a,b,c"
}, {
"id": 4,
"testText": "双11活动2",
"testSelect": "b,c"
}, {
"id": 5,
"testText": "双11活动3",
"testSelect": "a,b,c"
}, {
"id": 6,
"testText": "双11活动4",
"testSelect": "c"
}],
"total": 100
},
"options": {
"multipleSelect": true
},
"operations": {
"selectMulti": {
"slot": "multipleSelect",
"type": "field",
"field": "testSelect"
},
"buttonMulti": {
"slot": "multipleSelect",
"type": "button",
"label": "删除",
"event": "multi"
}
},
"actions": {
"multi": function(e) {
this.$message("你点击了删除按钮!"), console.log("multipleSelect action", e.$prevReturn)
}
}
}
显示配置
slotBlocks 插槽配置
搜索条顶部:配置子block的slot为
top
,可以插入到搜索条顶部搜索条和表格之间:配置子block的slot为
tableTop
,可以插入到搜索条和表格之间
{
"type": "list",
"resource": {
"fields": {
"id": {
"type": "text",
"label": "ID"
},
"testSelect": {
"type": "select",
"label": "select多选",
"props": {
"options": {
"a": "黄金糕",
"b": "双皮奶",
"c": "蚵仔煎",
"d": "龙须面",
"e": "北京烤鸭"
}
}
},
"testText": {
"type": "text",
"label": "名称",
"props": {
"placeholder": "请输入名词"
}
}
}
},
"data": {
"list": [{
"id": 3,
"testText": "双11活动",
"testSelect": "a,b,c"
}, {
"id": 4,
"testText": "双11活动2",
"testSelect": "b,c"
}, {
"id": 5,
"testText": "双11活动3",
"testSelect": "a,b,c"
}, {
"id": 6,
"testText": "双11活动4",
"testSelect": "c"
}],
"total": 100
},
"operations": {
"testText": {
"slot": "searchs",
"type": "field"
},
"search": {
"slot": "searchs",
"type": "button",
"props": {
"type": "primary"
},
"label": "搜索",
"event": "list:1"
}
},
"blocks": {
"listTop": {
"type": "component",
"options": {
"is": "div",
"text": "我是列表区块最顶部的插槽内容!!"
},
"style": {
"padding": "20px",
"marginBottom": "20px",
"border": "1px solid #3eaf7c"
},
"slot": "top"
},
"listTableTop": {
"type": "component",
"options": {
"is": "div",
"text": "我是列表区块表格顶部的插槽内容!!"
},
"style": {
"padding": "20px",
"border": "1px solid #f60"
},
"slot": "tableTop"
}
}
}
显示配置
列表每行操作项
{
"type": "list",
"resource": {
"fields": {
"text": {
"label": "文本",
"type": "text"
},
"inputnumber": {
"type": "inputnumber",
"label": "数字输入"
},
"select": {
"type": "select",
"label": "select多选",
"props": {
"options": {
"a": "黄金糕",
"b": "双皮奶",
"c": "蚵仔煎",
"d": "龙须面",
"e": "北京烤鸭"
}
}
}
}
},
"data": {
"list": [{
"text": "双11活动",
"inputnumber": 3,
"select": "a,b,c"
}, {
"text": "双11活动2",
"inputnumber": 4,
"select": "b,c"
}, {
"text": "双11活动3",
"inputnumber": 5,
"select": "a,b,c"
}, {
"text": "双11活动4",
"inputnumber": 6,
"select": "c"
}]
},
"operations": {
"testNewInput": {
"slot": "searchs",
"type": "field",
"field": {
"type": "text",
"props": {
"placeholder": "折"
},
"style": {
"width": "100px"
}
}
},
"search": {
"slot": "searchs",
"type": "button",
"props": {
"type": "primary"
},
"label": "搜索",
"event": "list"
},
"reset": {
"slot": "searchs",
"type": "reset",
"label": "重置"
},
"addItem": {
"type": "button",
"label": "新建",
"props": {
"type": "primary"
},
"slot": "searchs"
},
"editItem": {
"type": "button",
"label": "编辑",
"props": {
"type": "primary",
"icon": "el-icon-edit"
}
},
"removeItem": {
"type": "button",
"props": {
"type": "danger",
"icon": "el-icon-delete",
"circle": true
}
}
},
"actions": {
"addItem": function() {
this.$message("这是”新建“按钮事件响应Demo效果,可在区块配置的“actions”里修改~")
},
"editItem": function() {
this.$message("这是”编辑“按钮事件响应Demo效果,可在区块配置的“actions”里修改~")
},
"removeItem": function() {
this.$message("这是”删除“按钮事件响应Demo效果,可在区块配置的“actions”里修改~")
},
"reset": function() {
this.$message("这是”重置“按钮事件响应Demo效果,可在区块配置的“actions”里修改~")
}
}
}
显示配置
编辑状态的列表
- 支持字段之间的联动:某个字段的状态根据另一个字段的取值发生变化(比如下面demo的
条件
字段会根据对比
字段发生变化)
{
"type": "list",
"ctx": "edit",
"props": {
"type": "index"
},
"resource": {
"fields": {
"a": {
"type": "text",
"label": "指标",
"props": {
"width": "170px"
}
},
"b": {
"type": "text",
"label": "连续次数"
},
"c1": {
"type": "unitselect",
"label": "时间段",
"units": ["分钟", "小时"],
"defaultUnit": "分钟"
},
"e": {
"type": "select",
"label": "对比",
"props": {
"multiple": false,
"options": {
"0": "昨天",
"5": "不对比"
}
}
},
"f": {
"type": "select",
"label": "条件",
"props": {
"multiple": false,
"options": {
"0": "同比下降",
"1": "同比上升"
}
},
"changeConfig": function(e, t) {
return t && "5" === t.e && (e.props.options = {
">": ">",
">=": ">=",
"<": "<",
"<=": "<=",
"==": "=="
}), !e.props.options[t.f] && (t.f = ""), e
}
}
}
},
"data": {
"list": [{
"a": "大促指标",
"b": "12",
"c1": "12",
"e": "0",
"f": "0"
}]
},
"operations": {
"removeItem": {
"type": "button",
"label": "删除",
"props": {
"type": "danger",
"icon": "el-icon-delete"
}
},
"addItem1": {
"type": "button",
"label": "新增规则",
"props": {
"type": "primary"
},
"slot": "searchs",
"event": "addItem"
},
"addItem2": {
"type": "button",
"label": "右上",
"props": {
"type": "primary"
},
"slot": "rightTop",
"event": "addItem"
},
"addItem3": {
"type": "button",
"label": "左下",
"props": {
"type": "primary"
},
"slot": "leftBottom",
"event": "addItem"
},
"addItem4": {
"type": "button",
"label": "右下1",
"props": {
"type": "primary"
},
"slot": "rightBottom",
"event": "addItem"
},
"addItem5": {
"type": "button",
"label": "右下2",
"props": {
"type": "primary"
},
"slot": "rightBottom",
"event": "addItem"
},
"saveItem": {
"type": "button",
"label": "保存",
"props": {
"type": "primary"
},
"slot": "searchs"
}
},
"actions": {
"addItem": function() {
this.data.list.push({
a: "",
b: "",
c1: "",
e: "",
f: ""
})
},
"saveItem": function() {
alert("你点击了保存按钮")
}
}
}
显示配置
在线实验室
参数列表
参数 | 说明 | 可选值 | 类型 | 必填 |
---|
type | block类型 | string | 是 |
data | data可以指定当前block的初始数据,结构和fields保持一致 | null | object | 否 |
config | 全局配置,和通过ams.config配置效果一致 | null | object | 否 |
style | 可以设置区块的外层样式 | null | object | 否 |
events | 可以配置对应事件的处理actions | null | object | 否 |
actions | 可以配置具体的action处理函数 | null | object | 否 |
operations | 可以配置operation操作 | null | object | 否 |
blocks | 可以配置多个子block | null | object | 否 |
render | 默认为false,配置为true则自动在body内渲染,如传入string则渲染在指定的querySelector上 | boolean | string | 否 |
props | 会透传至底层的element-ui组件作为props属性,或者是原生dom元素的属性 | null | object | 否 |
options | block特有配置 | null | object | 否 |
resource | 资源配置,可以通过string使用同名resource,或者直接通过object指定 | string | object | 否 |
fields | 会合并覆盖resource内的fields | null | object | 否 |