Skip to content

Transfer 穿梭框

规则

基础示例

js
const rule = {
    type: "elTransfer",
    field: "transfer",
    title: "穿梭框",
    value: [],
    props: {
        data: [
            {label: 'California', key: 'California'},
            {label: 'Illinois', key: 'Illinois'},
            {label: 'Maryland', key: 'Maryland'},
            {label: 'Texas', key: 'Texas'},
            {label: 'Florida', key: 'Florida'},
            {label: 'Colorado', key: 'Colorado'},
            {label: 'Connecticut', key: 'Connecticut'},
        ]
    },
}

Props 配置示例

可搜索

js
const rule = {
    type: "elTransfer",
    field: "users",
    title: "用户选择",
    value: [],
    props: {
        data: [
            {label: '张三', key: '1'},
            {label: '李四', key: '2'},
            {label: '王五', key: '3'},
        ],
        filterable: true,
        filterPlaceholder: "请输入关键词搜索",
    },
}

自定义标题和按钮

js
const rule = {
    type: "elTransfer",
    field: "permissions",
    title: "权限分配",
    value: [],
    props: {
        data: [
            {label: '查看', key: 'view'},
            {label: '编辑', key: 'edit'},
            {label: '删除', key: 'delete'},
        ],
        titles: ['待选权限', '已选权限'],
        buttonTexts: ['添加', '移除'],
    },
}

自定义数据字段

js
const rule = {
    type: "elTransfer",
    field: "products",
    title: "商品选择",
    value: [],
    props: {
        data: [
            {name: '商品A', id: '1'},
            {name: '商品B', id: '2'},
        ],
        props: {
            key: 'id',
            label: 'name',
        },
    },
}

Events 事件示例

监听选择变化

js
const rule = {
    type: "elTransfer",
    field: "users",
    title: "用户选择",
    value: [],
    props: {
        data: [
            {label: '张三', key: '1'},
            {label: '李四', key: '2'},
        ],
    },
    on: {
        change: (value, direction, movedKeys) => {
            console.log('右侧列表变化:', value);
            console.log('移动方向:', direction);
            console.log('移动的key:', movedKeys);
        },
        'left-check-change': (value, movedKeys) => {
            console.log('左侧选中变化:', value, movedKeys);
        },
        'right-check-change': (value, movedKeys) => {
            console.log('右侧选中变化:', value, movedKeys);
        },
    },
}

选择后统计数量

js
const rule = [
    {
        type: "elTransfer",
        field: "users",
        title: "用户选择",
        value: [],
        props: {
            data: [
                {label: '张三', key: '1'},
                {label: '李四', key: '2'},
                {label: '王五', key: '3'},
            ],
        },
        inject: true,
        on: {
            change: ($inject, value) => {
                // 自动更新已选数量
                $inject.api.setValue('selectedCount', value.length);
            },
        },
    },
    {
        type: "input-number",
        field: "selectedCount",
        title: "已选数量",
        props: {
            disabled: true,
        },
    },
]

完整配置项:Element_Transfer

value :Array

Props

属性名说明类型默认值
dataTransfer 的数据源object[]
filterable是否可搜索booleanfalse
filterPlaceholder搜索框占位符string
filterMethod自定义搜索方法Function
targetOrder右侧列表元素的排序策略: 若为 original,则保持与数据源相同的顺序; 若为 push,则新加入的元素排在最后; 若为 unshift,则新加入的元素排在最前enumoriginal
titles自定义列表标题object[]
buttonTexts自定义按钮文案object[]
renderContent自定义数据项渲染函数object
format列表顶部勾选状态文案object{}
props数据源的字段别名object
leftDefaultChecked初始状态下左侧列表的已勾选项的 key 数组object[]
rightDefaultChecked初始状态下右侧列表的已勾选项的 key 数组object[]
validateEvent是否触发表单验证booleantrue

Events

事件名说明类型
change右侧列表元素变化时触发Function
left-check-change左侧列表元素被用户选中 / 取消选中时触发Function
right-check-change右侧列表元素被用户选中 / 取消选中时触发Function

Slots

插槽名说明
default自定义数据项的内容, 参数为 { option }
left-footer左侧列表底部的内容
right-footer右侧列表底部的内容
left-empty左侧面板为空或没有数据符合筛选条件时的内容
right-empty右侧面板为空或没有数据符合筛选条件时的内容

FormCreate 是一个开源项目,基于 MIT 许可证发布,欢迎个人和企业用户免费使用