const setLabelValue = (_item, data) => {
const { optionsKey } = data;
if (data.labelInValue) {
return {
label: optionsKey ? _item[optionsKey.label] : _item.label,
value: optionsKey ? _item[optionsKey.value] : _item
};
} else {
return {
label: optionsKey ? _item[optionsKey.label] : _item.label,
value: optionsKey ? _item[optionsKey.value] : _item.value,
};
}
};
// 选择框
const Select = (form, data) => (
// value-key="id"
<ElSelect
size="default"
v-model={form[data.prop]}
filterable
disabled={data.disabled}
clearable
placeholder={'请选择' + data.label}
{...data.props}
>
{
data.options ? data.options.map((item) => {
return <ElOption {...setLabelValue(item, data)} />;
}):''
}
</ElSelect>
);
ant-design用惯了,想在element plus中也能使用labelInValue的方式同时获取label和value
能实现主要靠的是element plus支持value-key的写法
value绑定item就行啦。
可以使用配置项直接配置labelInValue了
{
label: '姓名',
required: true,
type: 'select',
prop: 'ryId',
labelInValue: true,
options: peopleList
},