Vue基础篇--table的封装
1、 在components文件夹中新建一个ITable的vue文件
(图片来源网络,侵删)
{{ props.row[item.prop] }}
{{ item.label }}
export default {
name: 'recordlist',
props: {
table: {
type: Object,
default() {
return {
hasMergeRowOrColumn: false, // 是否合并单元格
loading: false, // 加载中动画
hasShowSummary: false, // 是否显示表位合计行
border: false, // 是否带有纵向边框,默认为false
height: "", // 设置table的高度
align: 'center', // 设置数据居中显示
hasSelect: false, // 有无选中功能
hasOperation: false, // 有无操作功能
hasExpand: false, // 有无展开行功能
tr: [ // 表头数据 —— className:列的class名
{
id: '1',
label: 'label',
prop: 'prop',
className: 'classname',
minWidth: '80',
show: true // show有三种值:false隐藏当前列,true常规表格列,template自定义表格列
//
// {{ props.obj.row.username }}
//
}
],
data: [], // 表格数据 —— 如需添加行class,处理数据时则需要传入class名, class需为数组
operation: { // 操作功能
label: '操作', // 操作列的行首文字
width: '200', // 操作列的宽度
className: '', // 操作列的class名
data: [ // 操作列数据
{
label: '通过', // 按钮文字
Fun: 'handleSubmit', // 点击按钮后触发的父组件事件
size: 'mini', // 按钮大小
id: '1', // 按钮循环组件的key值
classname: 'show', // 按钮的类名
type: 'primary' // 按钮的类型
}
]
},
expands: [ // 展开行数据
{
id: '1',
label: 'label',
prop: 'prop'
}
],
getSummaries(param) { // 自定义表位合计行数据
// *** 此函数传入param参数
console.log(param);
// *** 最后返回一个数组,合计行会显示数组中的内容
return []
}
}
}
}
},
methods: {
handleSelectionChange(val) {
this.$emit('onHandleSelectionChange', val);
},
handleOperation(a, b, id) {
const data = this.table.operation.data;
for (let i = 0; i
2、在单页面中引入ITable组件并使用,代码如下:
{{ props.obj.row.username }}
import iTable from '@/components/ITable'
export default {
name: 'Dept',
components: {iTable},
data() {
return {
dataTable: {
tr: [
{
id: '1',
label: '用户名',
prop: 'username',
show: 'template',
className: 'username'
},
{
id: '2',
label: '真实姓名',
prop: 'real_name'
},
{
id: '3',
label: '性别',
prop: 'sex_value'
},
{
id: '11',
label: '客服',
prop: 'agent_name'
},
{
id: '7',
label: '渠道',
prop: 'channel_id'
},
{
id: '8',
label: '注册时间',
prop: 'regist_time',
minWidth: '150'
},
{
id: '9',
label: '上次登录时间',
prop: 'login_time',
minWidth: '150'
},
{
id: '10',
label: '用户状态',
prop: 'status_value'
}
],
operation:{
label: '操作', // 操作列的行首文字
width: '200',
data: [ // 操作列数据
{
label: '添加', // 按钮文字
Fun: 'commitDate', // 点击按钮后触发的父组件事件
size: 'mini', // 按钮大小
id: '1', // 按钮循环组件的key值
classname: 'show', // 按钮的类名
type: 'primary'
},{
label: '删除', // 按钮文字
Fun: 'deleteDate', // 点击按钮后触发的父组件事件
size: 'mini', // 按钮大小
id: '1', // 按钮循环组件的key值
classname: 'show', // 按钮的类名
type: 'danger'
}
]
},
data: [
{
username: '呆萌图',
real_name: '张三',
sex_value: '男',
agent_name: '黎明',
channel_id: '网购22222222222222222222222211111111111111111',
regist_time: '2020-1-2',
login_time: '2020-1-22',
status_value: 'ok'
},
{
username: '呆萌图',
real_name: '张三',
sex_value: '男',
agent_name: '黎明',
channel_id: '网购',
regist_time: '2020-1-2',
login_time: '2020-1-22',
status_value: 'ok'
},
{
username: '呆萌图',
real_name: '张三',
sex_value: '男',
agent_name: '黎明',
channel_id: '网购',
regist_time: '2020-1-2',
login_time: '2020-1-22',
status_value: 'ok'
},
{
username: '呆萌图',
real_name: '张三',
sex_value: '男',
agent_name: '黎明',
channel_id: '网购',
regist_time: '2020-1-2',
login_time: '2020-1-22',
status_value: 'ok'
}],
border: true,
height:"calc(100vh - 300px)",
loading: false,
align: "center",
hasOperation: true,
}
}
}
}
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
