在公司频繁接触背景管理系统的开发中,基本上有90%以上是表页,并且业务逻辑基本上是相同的。一开始,我还考虑了基于第二个包装的El-Table元素。在搜索过程中,我还与许多出色的项目接触,包括:(vxe-table,Aphue ...),所有亲餐桌组件均出生???
?请注意:以下内容仅表示我的个人包装思想。如果您认为还不错,请帮助我单击一颗小星星。如果您有一个更好的主意,请在评论区域,螃蟹和螃蟹中留言?
您可以看到表中的搜索区域中的字段存在,并且每个页面的搜索和重置方法都是相同的逻辑,但是它只是不同的查询参数。当我们可以完全指定搜索时:当表配置项目列可以变成搜索项时,然后使用搜索type字段来指定搜索框的类型。最后,将表的搜索方法封装在表格中以包装到表中以包装到表中以包装到表中以包装到表中,以将其包装到表中以包装在表中。钩钩函数。页面上没有搜索逻辑。
表数据操作按钮在每个页面中基本上都不同,因此我们直接使用使用域插槽来完成每个页面的数据操作按钮区域。将挂钩函数选中到要使用的页面。
该领域没有特殊功能。只有三个按钮。功能是:表数据刷新(始终携带当前查询和分页条件),表列表显示设置,表格搜索区域隐藏(方便显示更多数据信息信息信息信息信息信息信息信息To.可以通过Toolbutton属性控制隐藏区域。
该区域主要是数据显示,它配置为列项目以传递到Pro-Table组件。使用域插槽可以自定义每列的内容以显示所需的内容,并支持多次选择数据数据(多个钩钩功能被封装在内部)。
分页中没有特殊功能,应支持所有支持。?
columnScolumnProps?—— Pro-table将渲染搜索表格和表单列requestApifunction?-请求函数paginalboolean?true以获取表单数据的表单数据。widthnumber |字符串 - - 单元宽度枚举 - 字典,格式化单元格,也可以用作搜索框的drop -down选项 - 是否显示sortablebooleanfalse - 是否| |时间表|DateTimerange搜索项类型,默认为TextInitsearchParamString |数字|布尔|任何[] - - 具有初始化参数模板的搜索项目:
脚本:
const tableref = ref();
//是否显示搜索模块const isshowsearch = ref(true);
接口Protable Props {列:partial [];//列配置项目requestapi :(参数:any)=> Promise;//请求api ==>分页?:boolean;//您是否需要分页组件==> non -component(默认)initparam?:noy;//初始化请求参数==> non -perm(catulty {})border?:boolean;//表单是否显示border ==> non -component(default(default for true)条纹?要显示表函数按钮==> non -component(默认)childrorname?:string; // //当数据中存在时,请指定儿童密钥名称==> non -perminal(默认的“儿童”)}}
//接受parent component参数,配置默认值const props = withDefaults(defineProps(),{columns:{)=> [],分页:true,initarparam:{},border:true:true:true:false:false,toolbutton:toolbutton:test,test,test,test,test,test,test,test,test,test,test,test,test,儿童名称:“儿童”});
//表选择挂钩const {selectChange,getrowkeys,selectedListids,isselectlted} = useElection();
//表列配置项目处理(添加ISShow属性,控制显示/隐藏)const TableColumns = ref
//过滤搜索项的配置项const searchcolumns = props.columns.filter(item => item.search);
。值[colorn.prop!] = column.InitsearchParam;}});
//列设置const colorf = ref();//过滤未通知的列const colsetting = tablecolumns.value.filter(((项目:partial)=> {return ittem.type!==“ select” && && && inity.type!==“ index” index“ && ittem.ttem.type!===========“扩张”;});const opencolSetting =()=> {colorf.value.opencolSetting();};
//获取表单data onmountd(()=> {getTableList();});
//暴露于父组件的参数和方法defineexpose({searchParam,refresh:getTableList});
``````````''。
原始:https://juejin.cn/post/7094890833064755208