html移动端表格插件,移动端类table组件封装

本文介绍了一个基于Vue和VantUI的移动端表格组件,用于创建不定列数的表格。组件包含头部循环渲染列名和内容双重循环渲染行及列内容。提供编辑和删除功能,并展示了如何在父组件中使用该组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

一个不怎么高度自定义的移动端table组件,可创建不定数量的列的table(自己写着玩为了以后维护修改样式方便封装起来的

实现思路表格头部一个循环:循环渲染每一列的列名

表格内容两重循环:外层循环渲染行,内层循环渲染每一行的每一列的内容

实现

环境:vue + vantui,用van-row + van-col模拟行和列// 封装的table组件

{{item.name}}

export default {

props: {

headData: {

type: Array,

default: () => []

},

bodyData: {

type: Array,

default: () => []

}

},

methods: {

doThis(e, rowIdx) {

if(e.target.id === 'edit') {

this.$emit('edit', rowIdx)

}

else if(e.target.id === 'delete') {

this.$emit('delete', rowIdx)

}

}

}

}

@inputPaddingLeft: 5px;

@colPaddingLeft: 10px;

.fake-table /deep/ .van-field__control {

padding-left: @inputPaddingLeft;

}

.col /deep/ .van-cell {

padding: 0;

}

.col /deep/ .input-diabled {

border: none;

}

.col /deep/ .input-abled {

border: 1px solid #DDDDDD;

}

.table-col {

height: 100%;

display: flex;

justify-content: flex-start;

align-items: flex-start;

font-family: PingFangSC-Medium, PingFang SC;

color: #313131;

}

.fake-table {

margin: 0 12px;

&__head, &__body {

border: 1px solid #DDDDDD;

&:not(:last-child) {

border-bottom: none;

}

}

&__head {

height: 40px;

background: #F5FAFF;

.col:extend(.table-col) {

font-size: 14px;

font-weight: 500;

line-height: 20px;

padding: @colPaddingLeft;

}

}

&__body {

.col:extend(.table-col) {

font-size: 13px;

font-weight: 400;

line-height: 18px;

padding: @colPaddingLeft @colPaddingLeft @colPaddingLeft calc(@colPaddingLeft - @inputPaddingLeft);

&:last-child {

padding-left: @inputPaddingLeft;

}

}

}

}

使用// 父组件

// html

// script

import fakeTable from '../../components/fake-table'

// ...省略一些代码

data {

return {

tableHead: [{

name: '材料名称', // 注意传进去的列名

span: '8',

prop: 'name' // 注意传进去的列属性名,要跟实际取得的数据的属性名一致,如matirialUsed数组的每一项的属性名

},

{

name: '型号',

span: '6',

prop: 'model'

},

{

name: '数量',

span: '5',

prop: 'num'

},

{

name: '操作',

span: '5',

prop: ''

}],

matirialUsed: [{

name: '',

model: '',

num: '0',

editDisable: true, // 是否可编辑

},

{

name: '',

model: '',

num: '0',

editDisable: true,

},

{

name: '',

model: '',

num: '0',

editDisable: true,

},

{

name: '',

model: '',

num: '0',

editDisable: true,

}]

}

},

components: {

fakeTable

},

methods: {

editMatirial(idx) {

let flag = this.matirialUsed[idx]['editDisable']

this.$set(this.matirialUsed[idx], 'editDisable', !flag)

},

deleteMatirial(idx) {

let temp = this.matirialUsed

temp.splice(idx, 1)

this.matirialUsed = temp

},

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值