vue elmentui 可编辑table 实现

废话不多说上图:

1.可编辑input

2.可编辑下来框

3.点击chechbox

4.可编辑radio

其实后面两种可以直接显示值 需要修改直接改就行

保持风格统一所以就做了点击之后出现修改功能

上代码,不要哔哔 哈哈 粗暴   真得是曲不离口 拳不离手, 几天不练习都不会写了

声明:部分代码有借鉴

<template>
<div class="divCaculateResultDisplay">
      <div class="divParamInput2">
        <label class="labConfidenceParamTitle">结果:</label>
      </div>
      <div class="divNotAllowCaculateResult">
        <el-table
        border
        height="385"
        :data="tableData"
        class="tb-edit"
        style="width: 100%"
        @cell-click="getCell"
        :cell-class-name="tableCellClassName"
        highlight-current-row>
          <el-table-column fixed align="center" prop="createTime" label="创建时间" width="150">
          </el-table-column>
          <el-table-column prop="powerFactor" label="功率因素" width="" align="center">
            <template slot-scope="scope">
             <el-input v-model="scope.row.powerFactor" @blur="handleBlur(scope.row)"  v-if=' scope.row.index == tabRowIndex  && scope.column.index == tabColumnIndex' v-focus></el-input>
              <div v-else>
               <span  >{{scope.row.powerFactor}}</span>
              </div>
            </template>
          </el-table-column>
          <el-table-column prop="selecttest" label="测试选择下拉" width="" align="center"  >
            <template slot-scope="scope">
              <el-select   v-focus v-model="scope.row.selecttest"   v-if=' scope.row.index == tabRowIndex  && scope.column.index == tabColumnIndex'  @change="handleBlur(scope.row)"    >
                <el-option
                  v-for="item in FloorsOptions"
                  :key="item"
                  :label="item"
                  :value="item"
                ></el-option>
              </el-select>
              <div v-else>
                <span   >{{scope.row.selecttest}}</span>
              </div>
            </template>
          </el-table-column>
          <el-table-column prop="checkboxtest" label="测试check" width="" align="center"  >
            <template slot-scope="scope">
               <el-checkbox v-model="scope.row.checkboxtest"  v-if=' scope.row.index == tabRowIndex  && scope.column.index == tabColumnIndex'  @change="handleBlur(scope.row)" label="复选框测试"></el-checkbox>

               <div v-else>
                 <span   >{{scope.row.checkboxtest}}</span>
               </div>
            </template>
          </el-table-column>
          <el-table-column prop="radiotest" label="测试radio" width="" align="center"  >
            <template slot-scope="scope">
              <el-radio-group  v-if=' scope.row.index == tabRowIndex  && scope.column.index == tabColumnIndex' v-focus  @change="handleBlur(scope.row)" v-model="scope.row.radiotest" >
                <el-radio  label="男"  >男</el-radio>
                 <el-radio    label="女"  >女</el-radio>
              </el-radio-group>

              <div v-else>
                <span   >{{scope.row.radiotest}}</span>
              </div>

            </template>
          </el-table-column>
          <!-- 此处省略 -->
          <el-table-column label="操作">
            <template slot-scope="scope">
               <el-button @click="handleRowEdit(scope.$index, scope.row)">编辑</el-button>
              <el-button type="danger" @click="handleDelete(scope.$index, scope.row)">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
        <el-pagination :current-page="page" :page-size="10" @current-change="CurrentChange" style="
            margin-top: 10px;
            display: flex;
            justify-content: center;
            align-items: center;
          " background layout="prev, pager, next" :total="total">
        </el-pagination>
      </div>
    </div>
</template>
<script>

export default {
  directives: {
              //注册一个局部的自定义指令 v-focus,输入框自动聚焦
              focus: {
                  inserted: function (el) {
                      el.querySelector('input').focus()
                  }
              }
          },
data() {
      return {
             page: 1,
             tabRowIndex: null, //行角标
             tabColumnIndex: '', //列角标
             limit: 10,
             total:0,
             FloorsOptions:["test1","test2","test3","test4","test5"],
             tableData: [{
               createTime:"2024-01-01",
               powerFactor:"555",
               selecttest:"test1",
                checkboxtest:"false",
                radiotest:"",
               setingFlag:false
             },

             {
               createTime:"2024-02-01",
               powerFactor:"66",
               selecttest:"test2",
              checkboxtest:"false",
              radiotest:"",
               setingFlag:false
             },
             {
               createTime:"2024-03-01",
               powerFactor:"66",
               selecttest:"test3",
              checkboxtest:"false",
              radiotest:"",
               setingFlag:false
             },
             {
               createTime:"2024-04-01",
               powerFactor:"66",
               selecttest:"test4",
              checkboxtest:"false",
               radiotest:"",
               setingFlag:false
             },
             ],
        }
    },
methods: {
        getCell(row, column, cell, event) {
          console.log("行的内容:",row);
            this.tabRowIndex = row.index
            this.tabColumnIndex = column.index
        },
        tableCellClassName({row, column, rowIndex, columnIndex}){//注意这里是解构
         //利用单元格的 className 的回调方法,给行列索引赋值
          row.index=rowIndex;
          column.index=columnIndex;
        },

        handleBlur(row) {
        row.setingFlag = false;
        const param={
          id:row.id,
          powerFactor:row.powerFactor,
          currentA:row.currentA,
          currentB:row.currentB,
          currentC:row.currentC,
          voltage:row.voltage,
          voltageA:row.voltageA,
          voltageB:row.voltageB,
          voltageC:row.voltageC,
          activePower:row.activePower,
          selecttest:row.selecttest,
          reactivePower:row.reactivePower,
          apparentPower:row.apparentPower,
          calculatedPowerFactor:row.calculatedPowerFactor,
          energyConsumption:row.energyConsumption
        }
        this.tabRowIndex = null;
        this.tabColumnIndex = null;
         console.log("handleBlur========================");
        console.log(param);

      },
      handleRowEdit(index ,row){
         this.$set(row, "setingFlag", true)
      },
      handleDelete( index,  row){
        console.log(index  )
        console.log(  row)
      },
      CurrentChange(){
        console.log("CurrentChange")
      },
    }
}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/552886.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux下:指令的理解、本质、shell

文章目录 理解文件的属性目录结构快捷键上下historytable两下CTRL CCTRL D关机命令 文件互传shell命令及其运行原理指令的本质命令whoamiwhopwdlsclearcdtreectrl ctouchstatmkdirrmdir && rmmancpmvwhichalisacattacecho> 输出重定向>> 追加重定向< 输…

如何在Windows安装Ollama大语言模型工具并实现无公网IP异地远程使用

文章目录 前言1. 运行Ollama2. 安装Open WebUI2.1 在Windows系统安装Docker2.2 使用Docker部署Open WebUI 3. 安装内网穿透工具4. 创建固定公网地址 前言 本文主要介绍如何在Windows系统快速部署Ollama开源大语言模型运行工具&#xff0c;并安装Open WebUI结合cpolar内网穿透软…

数字乡村创新实践探索农业现代化路径:科技赋能农业产业升级、提升乡村治理效能与农民幸福感

随着信息技术的快速发展和数字化时代的到来&#xff0c;数字乡村建设正成为推动农业现代化、提升农业产业竞争力、优化乡村治理以及提高农民幸福感的重要途径。本文将围绕数字乡村创新实践&#xff0c;探讨其在农业现代化路径中的积极作用&#xff0c;以及如何通过科技赋能实现…

立创-IS61LV5128AL-10TLI功能参数及连接方法

IS61LV5128AL-10TLI功能和参数介绍-公司新闻-配芯易-深圳市亚泰盈科电子有限公司 制造商:ISSI 产品品种:静态随机存取存储器 RoHS:是 存储容量:4 Mbit 安排:512 k x 8 访问时刻:10 ns 最大时钟频率:100 MHz 接口类型:Parallel 电源电压-最大:3.63 V 电源电压-最小:3.135 V 电源…

eNSP-OSPF综合实验

目录 实验要求 配置IP 构建外部RIP协议用户组 配置公网通 构建MGRE隧道 创建隧道 配置下一跳解析协议&#xff08;NHRP&#xff09; OSPF私网通 area 0&#xff08;公网区域不宣告&#xff09;&#xff1a; area 1&#xff1a; area 2&#xff1a; area 3&#xff…

案例实践 | InterMat:基于长安链的材料数据发现与共享系统

案例名称&#xff1a;InterMat-基于区块链的材料数据发现与共享系统 ■ 建设单位 北京钢研新材科技有限公司 ■ 用户群体 材料数据上下游单位 ■ 应用成效 已建设10共识节点、50轻节点&#xff0c;1万注册用户 案例背景 材料是构成各种装备和工程的物质载体&#xff0c…

【C++题解】1345. 玫瑰花圃

问题&#xff1a;1345. 玫瑰花圃 类型&#xff1a;基本运算、小数运算 题目描述&#xff1a; 有一块nn&#xff08;n≥5&#xff0c;且 n 是奇数&#xff09;的红玫瑰花圃&#xff0c;由 nn 个小正方形花圃组成&#xff0c;现要求在花圃中最中间的一行、最中间的一列以及 4 个…

cesium加载倾斜影像数据(模拟雨、雪、雾、无人机飞行、测距、箭头标绘、电子围栏等)

实现效果如下&#xff1a; 功能菜单如下&#xff1a; 加载倾斜影像核心代码&#xff1a; var palaceTileset new Cesium.Cesium3DTileset({url: http://127.0.0.1:9002/tileset.json,//控制切片视角显示的数量&#xff0c;可调整性能maximumScreenSpaceError: 0.1,maximumNum…

Real3DPortrait照片对口型,数字人,音频/视频驱动数字人

先看效果 上传一张图片和一段音频&#xff0c;照片如下&#xff1a; 合成后效果如下&#xff1a; 照片对口型-音频驱动 支持音频驱动和视频驱动&#xff0c;视频可以使照片有参照视频中的口型和和动作。 项目地址 https://github.com/yerfor/Real3DPortrait 我的环境 win…

CentOS-Stream-9升级openssh9.7p

CentOS Stream 9 ssh -V需要的RPM包 openssh-9.7p1-1.el9.x86_64.rpm openssh-clients-9.7p1-1.el9.x86_64.rpm openssh-server-9.7p1-1.el9.x86_64.rpm 编译openssh openssh官方只提供源码包&#xff0c;我们选择自己将源码编译为rpm包来升级环境的openssh&#xff0c;需要…

UE5 C++ 使用TimeLine时间轴实现开关门

一.添加门头文件 和 声明 #include "Components/TimelineComponent.h" #include"Components/BoxComponent.h" UPROPERTY(EditAnywhere,BlueprintReadWrite,Category "MyCurve")UCurveFloat* MyCurveFloat;UPROPERTY(EditAnywhere, BlueprintR…

前端网络---http缓存

什么是http缓存&#xff1f; 1、HTTP 缓存会存储与请求关联的响应&#xff0c;并将存储的响应复用于后续请求。 2、缓存的原理是在首次请求后保存一份请求资源的响应副本&#xff0c;当用户再次发起相同请求时&#xff0c;判断缓存是否命中&#xff0c;如果命中则将前面的响应…

如何保障UDP传输中数据文件不丢失?

UDP协议因其低时延和高速传输的特性&#xff0c;在实时应用和大量数据传输领域中发挥着不可或缺的作用。但是&#xff0c;由于UDP是一种无连接的通讯协议&#xff0c;它并不确保数据包的顺序、完整性和可靠性。 为了解决UDP传输中数据一致性的问题&#xff0c;技术专家们进行了…

HTML不常用的文本标签

1.标签如下&#xff1a; 代码及相关内容 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>不常用的文…

2024第二十一届五一数学建模C题思路 五一杯建模思路

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

大数据测试:构建Hadoop和Spark分布式HA运行环境

随着大数据技术的不断发展&#xff0c;Hadoop和Spark已成为处理大规模数据的热门框架。在生产环境中&#xff0c;高可用性&#xff08;HA&#xff09;是至关重要的&#xff0c;以确保数据处理和分析任务不受中断。本文将详细介绍如何构建 Hadoop和Spark分布式HA运行环境&#x…

Ubuntu 22.04 配置VirtualBox安装Windows 10虚拟机

Ubuntu 22.04 配置VirtualBox安装Windows 10虚拟机 文章目录 Ubuntu 22.04 配置VirtualBox安装Windows 10虚拟机1.安装virtualbox2.下载Window.iso文件并载入3.问题解决3.1 Kernel driver not installed (rc-1908)3.2 VT-x is disabled in the BIOS for all CPU modes 4.安装Wi…

中文编程入门(Lua5.4.6中文版)第十三章 Lua 文件操作

在《Lua世界》的冒险旅途中&#xff0c;勇士们时常需要与神秘的文本卷轴打交道。为了更好地掌握这些知识宝藏&#xff0c;Lua I/O库提供了两种强大的探索模式&#xff1a;简单模式和完全模式&#xff0c;助你轻松应对各类文献挑战。 简单模式&#xff1a;初识卷轴 简单模式如…

如何精心挑选合适的软件公司

选择一家合适的软件公司对于小程序商城的开发与运营而言&#xff0c;具有举足轻重的意义。面对市场上琳琅满目的软件公司&#xff0c;如何找到那个真正适合自己的合作伙伴呢&#xff1f;接下来&#xff0c;我们将从需求分析、公司资质、项目案例、服务态度和成本效益五个方面&a…

Linux0.11 源码中的内存分页机制

学习Linux的源码&#xff0c;《深入linux 内核架构》这本书看起来就让人害怕&#xff0c;然后就想着看看早期的linux版本的源码&#xff0c;从网上查看资料发现linux0.11 这个版本有很多人拿来当成教学版本&#xff0c;而且也有很多的参考书以这个版本作为基础来讲解&#xff0…