2021-ant design pro 表单、表格(columns) 下拉框从后台拉取数据,并初始化值(options/valueEnum)

ant design pro 表单、表格(columns)下拉框从后台拉取数据,并初始化值(options/valueEnum)

一,首先从后台将数据拉取到指定的数组

//初始化數據用
    const [companyAliasList, setCompanyAlias] = useState<API.OptionsData[]>([]);//公司別
  const initCompanyAlias = async () => {
        //获取数据清单
        sysDictHead = { dictServiceKey: 'finance.epa', dictGroupKey: 'finance.epa', dictKey: 'finance.epa.costRules' }
        //这里异步请求后台将数据拿到
        const dictList = await fetchRemoteData(sysDictHead);
        let companyAliaslist: API.OptionsData[] = [];
        dictList.forEach(item => {
                const valueObj = JSON.parse(item.dictValue as string);
                //注意 <ProFormSelect>组件下拉框的值需要label与value属性,因此这里将数据放到一个对象的label与value
                const tempDetail = { label: '', value: '', };
                tempDetail.label = valueObj.sapCompanyCode;
                tempDetail.value = valueObj.sapCompanyCode;
                companyAliaslist.push(tempDetail);
            })
            //这一步是去重操作,如果你的数据里没有重复的,可以省略
        let obj: API.OptionsData = {};
        companyAliaslist = companyAliaslist.reduce((cur, next) => {
            obj[next.label] ? "" : obj[next.label] = true && cur.push(next);
            return cur;
        }, []) //设置cur默认类型为数组,并且初始值为空的数组
        setCompanyAlias(companyAliaslist)
    };

/这样就将数据放在了companyAliasList里面,接下来就是用他了

一,表单下拉框初始化值(options)

我这里是**<ProForm>**下的 <ProFormSelect>

<ProForm>
 		<ProForm.Group>
                        <ProFormSelect
                            width="sm"
                            //用过options将数据放进去
                            options={companyAliasList}
                            name="companyAlias"
                            label="公司别"
                            rules={[{ required: true, message: '请选择公司别!' }]}
                            placeholder='请选择公司别'
                        />
        <ProForm.Group>
</ProForm>

二,给表格里的下拉框赋值(valueEnum)

这里我就将表格组件省略,只将重要的columns展示给大家
注意看**valueEnum**,这里就是将数据取出来返回给这一列

const columns: ProColumns<DataSourceType>[] = [
        {
            title: '区域别',
            key: 'areaName',
            dataIndex: 'areaName',
            width: '30%',
            valueType: 'select',
            valueEnum: () => {
                const options = {};
                areaTypeList.forEach((item) => {
                    options[item.value] = item.label
                });
                return options;
            },
        },
        {
            title: '区域别金额',
            width: '40%',
            dataIndex: 'areaMoney',
        },
        {
            title: '操作',
            valueType: 'option',
        },
    ];
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值