vue3.0 通用管理页面封装
2023-12-21 16:51:38
bmTable使用方法
<BmTable url="/project/list"
:columns="columns"
:formItem="formItem"
:formConfig="formConfig"
:isPagination="true"
@postData="postData"
@preData="preData"
ref="bmTable">
<template #bmSuffix>
<div>
<el-button type="success">新增</el-button>
</div>
</template>
</BmTable>
export default {
mixins: [IndexMixin],
setup() {
const bmTable = ref()
const postData = (data)=> { return data; }
const preData = (data)=> { return data; }
return {
postData,
preData,
bmTable
}
}
}
export default {
data() {
return {
columns: [
{
prop: 'creatTime',
label: '创建时间',
},
{
prop: 'datas',
label: '操作',
labelWidth: 180,
render: (item)=> {
return <>
<el-button link type="success" onClick={()=> { this.deletes(item); }}>删除</el-button>
</>
}
}
],
formItem: [
{
prop: 'created',
label: '创建时间',
el: 'el-input',
placeholder: '123',
defaultValue: 'test'
},
{
prop: 'crea',
label: '创建',
el: 'el-select',
data: [{label: '123', value: '1'}, {label: '3', value: '2'}],
elOpt: 'el-option',
placeholder: '123',
defaultValue: '1'
},
],
formConfig: { }
}
},
}
参数
- columns 表格列参数
- formItem 页面搜索条件参数
- formConfig 页面搜索内容配置参数
- isPagination 是否前端分页
- bmSuffix 插槽 页面操作按钮位置,如新增、批量下载、批量删除等操作
事件
- postData 请求完成后对返回的数据处理事件
- preData 请求前对请求参数处理事件
实现方案
原理:当我们存在多个组件中的数据或者功能很相近时,我们就可以利用 mixins 将公共部分提取出来,通过 mixins 封装函数,组件调用他们是不会改变函数作用域外部的。
注意事项
- 接口返回数据
接口返回参数若后端分页时数据放入data.data.result, 前端分页时数据放入data.data
if (!isPagination) {
tableData.list = onPostData ? onPostData(data.data) : data.data;
tableData.data = tableData.list.slice(
(tableData.pagination.page - 1) * tableData.pagination.pageSize,
tableData.pagination.page * tableData.pagination.pageSize
);
tableData.pagination.total = tableData.list.length;
return;
}
tableData.data = onPostData
? onPostData(data.data.result)
: data.data.result;
tableData.pagination.total = data.data.total;
});
文章来源:https://blog.csdn.net/weixin_43245286/article/details/135131351
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!