vue3 element-plus el-table 实现指定单元格编辑

首先要知道是哪一行需要修改,当点击时修改,回车保存

1.定义行id

const tableRowEditId = ref(null); // 控制可编辑的每一行
// const tableColumnEditIndex = ref(null); //控制可编辑的每一列

2.在el-table 上 绑定 单元格的点击事件 cell-click(单击)cell-dblclick(双击) 

 <el-table
   :data="tableData"
   @cell-click="showUnitInput"
  >
 
</el-table>
 
 
const showUnitInput = (row: any, column: any) => {
  tableRowEditId.value = row.id //确定点击的单元格在哪行
  // tableColumnEditIndex.value = column.id //确定点击的单元格在哪列 
}
 

3.点击时显示输入框

<template #examineItem="{ row, column }">
        <!-- @blur="blurValueInput(row, column)" -->
        <el-input
          v-model="row.examineItem"
          v-if="tableRowEditId === row.id"
          @keyup.enter="blurValueInput(row, column)"
        />
        <span v-else>{{ row.examineItem }}</span>
      </template>

或者

 <template #default="{ row, column }">
   <el-input
    v-if="
     tableRowEditId === row.id &&
     tableColumnEditIndex === column.id
    "
    @keyup.enter="blurValueInput(row, column)"
   />
     <span v-else>{{ row.value }}</span>
   </template>

4.回车或焦点消失时调用接口

const blurValueInput = (row, column) => {
  tableRowEditId.value = null;
  console.log(row.examineItem, "blurValueInput");
  // tableColumnEditIndex.value = null
  //在此处调接口传数据
  appointSaveOrUpdate({ ...row }).then((res) => {
    if (res.code == 200) {
      proxy.$modal.msgSuccess("操作成功");
      getList();
    }
  });
};

5.效果

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现Vue3 Element-Plus的el-table汇总行单元格合并,你可以使用`span-method`属性来定义一个函数,该函数可以返回每个单元格需要合并的行数和列数。下面是一个示例代码: ```html <el-table :data="tableData" border style="width: 100%"> <el-table-column prop="date" label="日期" width="180"> </el-table-column> <el-table-column prop="name" label="姓名" width="180"> </el-table-column> <el-table-column prop="address" label="地址"> </el-table-column> <el-table-column label="合计" :span-method="objectSpanMethod"> <template #default="{ rows, row, column, $index }"> <span v-if="$index === 0">{{ row.total }}</span> </template> </el-table-column> </el-table> ``` 在上面的代码中,我们定义了一个`objectSpanMethod`方法,并将其赋值给`span-method`属性。这个方法接收四个参数:`{ rows, row, column, $index }`。其中`rows`是当前列的所有行数据,`row`是当前行数据,`column`是当前列数据,`$index`是当前行的索引。 下面是`objectSpanMethod`方法的实现: ```js methods: { objectSpanMethod({ row, column, rowIndex, columnIndex }) { if (columnIndex === 3) { if (rowIndex === 0) { return { rowspan: this.tableData.length, colspan: 1 }; } else { return { rowspan: 0, colspan: 0 }; } } } } ``` 在上面的代码中,我们检查当前列是否为第四列(即“合计”列),如果是,我们检查当前行是否为第一行。如果是,我们返回一个对象`{ rowspan: this.tableData.length, colspan: 1 }`,其中`rowspan`表示当前单元格需要合并的行数,`colspan`表示当前单元格需要合并的列数。如果当前行不是第一行,则返回一个空对象`{ rowspan: 0, colspan: 0 }`,表示当前单元格不需要合并。 这样,我们就可以实现Vue3 Element-Plus的el-table汇总行单元格合并了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值