【AntDesignPro】Ant Design Pro学习记录—ProTable的使用(三)
CrazyPanda发表于:2024-02-20 16:25:54浏览:477次
一、 自定义检索条件
部分列表页需要做一些简单的数据汇总统计,并能够跟随检索条件自动变化,protable自带的功能没有找到对应的实现方法,最后决定自己来实现这个功能。
1、关闭ProTable自带检索功能
search={false}
2、自定义检索表单
在ProTable上方加入自定义表单
<Card bordered={false} style={{ marginBottom: 15 }}> <ProForm hideRequiredMark style={{ marginTop: 8 }} layout="inline" onFinish={async (value) => { console.log(value); if (value.projects) { setProjectsData(value.projects.join(',')); } if (value.month_start && value.month_end) { if (value.month_start > value.month_end) { message.error('开始月份不能大于结束月份'); return false; } } setMonthStartData(value.month_start); setMonthEndData(value.month_end); monthTotal({ projects: value.projects ? value.projects.join(',') : '', month_start: value.month_start, month_end: value.month_end, }).then((res) => { console.log(res); setData(res?.data); }); if (actionRef.current) { actionRef.current?.reload(); } }} submitter={{ searchConfig: { resetText: '', }, }} > <ProFormSelect name="projects" label="项目名称" options={projectSelect} placeholder="请选择项目" mode="multiple" style={{ minWidth: 200 }} /> <ProFormDatePicker.Month name="month_start" label="开始月份" width={200} placeholder="请选择开始月份" /> <ProFormDatePicker.Month name="month_end" label="结束月份" width={200} placeholder="请选择结束月份" /> </ProForm> </Card>
这里需要配置ProForm的样式
layout="inline"
这样可以保证表单内容横向排列。
3、定义检索字段
把需要的检索条件都存储起来。
const [projectsData, setProjectsData] = useState<[]>(); const [monthStartData, setMonthStartData] = useState<[]>(); const [monthEndData, setMonthEndData] = useState<[]>();
然后再表单的提交方法里面onFinish,给这写内容赋值,同事调用数据统计的方法,将参数传过去获取新的统计结果。
4、 更新列表数据
在Proform的onFinish方法里面,给检索条件赋值成功后,刷新列表
if (actionRef.current) { actionRef.current?.reload(); }
这个刷新需要给ProForm配置actionRef属性
<ProTable<API.CompanyList, API.PageParams> actionRef={actionRef} rowKey="key" search={false} request={async (params) => { params['projects'] = projectsData ? projectsData : ''; params['month_start'] = monthStartData; params['month_end'] = monthEndData; const res = await monthCount(params); return res; }} columns={columns} />
这里我们在request的时候,将自定义的检索条件都给加到原参数上,然后调用列表数据接口,更新数据。
这样就完成了,在点击表单提交按钮的时候,获取汇总统计数据,同时刷新列表。展示效果如下:
有需要的还可以给自定义表单设置重置按钮,同时在reset方法里面同样给检索条件赋值,然后刷新表单即可。
猜你喜欢
- 【AntDesignPro】AntDesignPro使用原生js,箩筐地图的使用
- 项目需要把高德地图替换成箩筐地图,WEB前端使用的ant design pro,高德地图有相关的react demo,而箩筐地图只有原生js,结合上一篇文章【AntDesignPro】使用高德地图设置考勤区域,把高德地图修改为箩筐地图,实现考勤范围设置。1 html使用箩筐地图参考上一篇文章【html】箩筐地图的使用,设置考勤范围,了解实现考勤范围设置需要用到的箩筐地图接口。2 ant design pro加载原生js这个是实现功能的核心,只有js正确加载上了,地图的功能才能够正常使用。结合an
- 【AntDesignPro】Ant Design Pro学习记录—ModalForm的使用(二)
- 目录一、ModalForm高度设置二、ModalForm点击阴影背景,不隐藏弹框三、ProFormSelect联动四、ProFormText关联赋值一、ModalForm高度设置在modalProps中设置bodyStyle:{height:500,overflowY:'scroll'}编辑效果如下:编辑二、ModalForm点击阴影背景,不隐藏弹框同样在modalProps里面,配置maskClosable: false,就可以实现点击弹框外阴影,不隐藏弹框<
- 【AntDesignPro】Ant Design Pro学习记录—默认主题配色修改
- 版本: Ant Design Pro V5先参考下官网定制主题 - Ant Design再参考这篇文章antd pro 修改全局样式_tankpanv的博客-CSDN博客_antd修改全局样式最后自己实验:第一步,在config.ts文件中配置theme: { 'primary-color': defaultSettings.primaryColor, },这种配置需
- 【AntDesignPro】Ant Design Pro学习记录—前后端一体化部署
- 目录前言一、系统配置二、ant design pro访问路径配置三、站点访问路径配置前言好长时间没记录了,使用ant design pro有一年了,期间陆续做了好几个项目,从陌生到熟练,还有好多钻研成果没记录,后续有时间陆续补上。之前几个项目一直是前后端分开部署的,需要配置两个站点域名访问,还要解决跨域session问题,这次把一体化部署记录一下。一、系统配置服务端用的LNMP,使用tp6框架,使用宝塔面板管理。tp站点先正常部署,步骤省略,见下图:配置网站目录和运行目录: 编辑配置伪
- 【AntDesignPro】Ant Design Pro学习记录—ProTable的使用(二)
- 目录一、列表检索初始值设置二、字段缩略显示一、列表检索初始值设置使用initialValue属性,配置列表检索的初始值const columns: ProColumns<API.RoomItem>[] = [ { title: '名称', &nb
- 【AntDesignPro】Ant Design Pro学习记录—ModalForm的使用(四)
- 一、 ModalForm自定义footer按钮参考官网,Modal弹框是可以自定义按钮的,原想着ModalForm的modalprops可以设置自定义footer,结果设置一直不生效,最终还是使用Modal嵌套了ProForm实现了功能,在此记录一下。ant design pro使用的V5版本。1、Modal自定义footer参考官网https://ant-design.antgroup.com/components/modal-cn?from=msidevs.net#components-mo
- 【AntDesignPro】Ant Design Pro学习记录—ModalForm的使用(三)
- 一、 Form.useForm()的使用之前使用表单的时候,一直在为表单赋值纠结,找了一些资料,也感觉很复杂,使用多了之后,感觉表单赋值也挺简单的。1、 创建一个formconst [theForm] = Form.useForm();2、 绑定表单组件无论是ProForm、ModalForm、还是DrawerForm,都可以绑定我们的theForm,使用属性form={theForm}绑定,代码如下<ProForm &nb
- 【React】使用React实现一个内容滑动组件
- 最近在做项目时遇到一个需求,需要让一个列表能够通过点击按钮进行滚动,每次都是一屏的距离,不足则结束。并且,这个列表项是在react-grid-layout中的某一个模块内。所以包裹这个列表的容器会随时发生变化。在完成这个组件后,通过这篇文章总结一下。UI/原型分析那么从上面的功能描述以及项目中的UI,我们可以分析得到这样一个假想图:我们需要实现一个容器来作为我们的可视区域,并且这个容器是可以伸缩的。列表内容如果超出容器的可视区域,那么就会被隐藏。需要左右都有按钮,来支持用户左右滑动内容来查看,每
栏目分类全部>