vue结合iview组件实现可编辑表格

功能需求:

vue结合iview组件实现可编辑表格,便于实时批量保存数据(本例开发适用于薪资报表录入场景)。

 实现效果:

 

相关知识点:ref 引用、slot 插槽

更多样例参考此地址:https://dev.iviewui.com/articles/1040179759335739392

代码片段:

html:

<Table size="small" ref="myTable" border :columns="columns" :data="data" :span-method="handleSpan">
    <template slot="number" slot-scope="props">
	    <InputNumber v-model="props.row.number" @on-change="getValue(props.row._index)"  @on-blur="valueChange(props.row._index)">
        </InputNumber>
	</template>
    <template slot="hasInvoice" slot-scope="props">
		<RadioGroup v-model="props.row.hasInvoice" @on-change="changeRadio(props.row._index)">
			<Radio :label="1">是</Radio>
			<Radio :label="0">否</Radio>
		</RadioGroup>
	</template>
    <template slot="remarks" slot-scope="props">
		<Input type="textarea" :rows="1" v-model="props.row.remarks" @on-change="getValue(props.row._index)"  @on-blur="textChange(props.row._index)" />
	</template>
</Table>

script:

export default {
  data() {
    return {
      data: [ { number: 0, hasInvoice: 1, remarks: ""} ],
      columns: [
        {
          title: '数量',
          key: 'number',
          render: (h, params) => {
            this.data[params.index] = params.row
            return h(
              'div',
              this.$refs.myTable.$scopedSlots.number({
                row: params.row,
                idx: params.row._index
              })
            )
          }
        },
        {
			title: '提供发票',
			key: 'hasInvoice',
			width: 100,
			render: (h, params) => {
			  this.data[params.index] = params.row;
			    return h(
				  'div',
				    this.$refs.myTable.$scopedSlots.hasInvoice({
					  row: params.row,
					  idx: params.row._index
					})
				)
			}
		},
        {
		    title: '备注',
			key: 'remarks',
			width: 220,
			render: (h, params) => {
			this.data[params.index] = params.row;
				return h(
					'div',
					this.$refs.myTable.$scopedSlots.remarks({
						row: params.row,
						idx: params.row._index
					})
				)
			}
		}
      ]
    }
  },

methods:

//数值改变时的回调,返回当前值
	getValue(index) {
		this.form = this.data[index];
		//逻辑处理......
	},
//失焦时触发,用于实时保存
    valueChange(index) {
	    this.form = this.data[index];
        //逻辑处理......
    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值