@ams-team/field-tag
v1.2.7
Published
AMS标签
Downloads
8
Readme
field-tag AMS标签
预览图
使用
在AMS的resourc配置使用:
// 输入创建标签
testTag: {
type: 'tag',
label: '标签',
props: {
'allow-create': true
}
}
// 选择标签(接口数据)
testTag: {
type: 'tag',
label: '标签',
props: {
placeholder: '请输入标签',
action: 'https://www.easy-mock.com/mock/5a0023effbbb09615044cb82/tag',
successCode: 200
}
}
// 选择标签(静态数据)
testTag: {
type: 'tag',
label: '标签',
props: {
placeholder: '请选择标签',
options: [
{
'id': 2001,
'name': '电商',
},
{
'id': 2002,
'name': '游戏',
},
{
'id': 2003,
'name': '效率',
},
{
'id': 2004,
'name': '资讯',
},
{
'id': 2005,
'name': '社区',
}
]
}
}
// 创建或选择标签(静态数据,也支持接口数据)
testTag: {
type: 'tag',
label: '标签',
props: {
'allow-create': true,
options: ['唯品会', '天猫', '淘宝', '京东', '拼多多']
}
}
接口数据结构:
// 输入创建标签
{
"code": 200,
"data": {
"list":["aaaa.bbb.name", "aaaa.ccc.name"]
},
"msg": "success"
}
// 从接口选择已有标签添加模式
{
"code": 200,
"data": {
"list":[
{
"id": 2001,
"name": "aaaa.bbb.name",
"subName": "分类一" //【可选】显示在下拉选择的次标题,如果没有subName,下拉次标题显示id
}
...
]
},
"msg": "success"
}
其中上面每个标签包含
id
、name
和subName
三个字段,建议接口统一输出同名的字段。如果有旧接口无法兼容,可以通过props.idKey
、props.nameKey
和props.subNameKey
来配置和接口对应的字段名。
传值
Array
// 自由输入添加标签模式
["aaaa.bbb.name", "aaaa.ccc.name"]
// 选择标签
[
{
"id":2001,
"name":"aaaa.bbb.name",
"subName": "分类一" // //【可选】显示在下拉选择的次标题,如果没有subName,下拉次标题显示id
},
...
]
深入:get、set与view配置
如果业务的数据结构千奇百怪,上面配置无法实现,可以通过更自由的get
、set
与 view
来配置
testTag: {
type: 'tag',
label: '选择标签',
props: {
placeholder: '请输入标签',
action: 'https://www.easy-mock.com/mock/5a0023effbbb09615044cb82/tag',
successCode: 200
},
get(value) { // 编辑状态下有效(ctx 为 edit)
console.log(value)
return value.map(item => {
return (item.name || item) + '-get';
});
},
set(value) { // 编辑状态下有效(ctx 为 edit)
console.log(value)
return value.map(item => {
return (item.name || item) + '-set';
});
},
view(value) { // 显示状态下有效(ctx 为 view)
console.log(value)
return value.map(item => {
return item.name + '-view';
});
}
},
配置
| 参数 | 类型 | 必填 | 说明 | 默认值 |
| ---- | ---- | ---- | ---- | ---- |
| type | string | 是 | 文本类型 | 固定值为tag
|
| label | string | 否 | 标签文本 | - |
| hidden | boolean | 否 | 是否隐藏field | false
|
| rules | array | 否 | 校验规则,详见async-validator | - |
| collapseLimit | number | 否 | 展示状态下,最多显示的标签个数,超出隐藏 | - |
| on | object | - | 事件绑定 | - |
| on.click | function | 否 | 点击 Tag 时触发的事件 | - |
| on.close | function | 否 | 关闭 Tag 时触发的事件 | - |
| props | object | - | 补充属性 | - |
| props.action | string | 否 | 标签数据接口地址(优先级高于options
) | - |
| props.options | array | 否 | 标签静态数据接口地址 | - |
| props.method | string | 否 | 接口请求方法, | GET
|
| props.successCode | number | 否 | 接口请求成功code | 和resource的全局配置里的api
successCode
一致 |
| props.withCredentials | boolean | 否 | 接口请求是否携带cookie | 和resource的全局配置里的api
withCredentials
一致 |
| props.placeholder | string | 否 | 输入框的placeholder
配置 | 请输入...
|
| props.button | string 或者 boolean | 否 | 如果是string
类型,代表添加按钮的文案配置;如果是boolean
类型,值为false代表隐藏该按钮 | + 添加
|
| props.size | string | 否 | 尺寸,可取值:medium / small / mini | - |
| props.closable | boolean | 否 | 编辑状态下,标签是否可关闭 | false
|
| props.template | string | 否 | 标签显示的内容模板,语法和vue的模板语法类似,比如 {{ name }} - {{ subName }} - {{ id }}
(其中name
、subName
和id
是数据结构里的字段)| 默认只展示name
字段 |
| props['multiple-limit'] | number | 否 | 用户最多可以选择的项目数,为 0 则不限制 | 0 |
| props['allow-create'] | boolean | 否 | 输入文字来创建新的标签(注意:允许输入创建,数据结构统一使用元素为字符串的数组格式 ["aaaa.bbb.name", "aaaa.ccc.name"]
) | false
|
| props.idKey | string | 否 | 表示id
这个字段key | id
|
| props.nameKey | string | 否 | 表示name
这个字段key | name
|
| props.subNameKey | string | 否 | 表示subName
这个字段key | subName
|
更多的props配置请查看: