Vue3+ts+element ui plus/antdesgin 实现可编辑单元格/可编辑功能

这篇具有很好参考价值的文章主要介绍了Vue3+ts+element ui plus/antdesgin 实现可编辑单元格/可编辑功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

此功能是基于antdesgin表格组件可编辑单元格功能修改来实现,可查看原文档:带单元格编辑功能的表格

具体思路就是在element ui plus 或者 antdesgin 表格组件的单元格插槽中进行修改,放入“editable-cell”这个div就行;

此方法不仅适用于表格,相关需要自定义编辑的功能都可用此方法,核心就是自行调整“editable-cell”下的内容。

代码以及注释如下:


/*插槽内修改*/
<Table :columns="tableHeader" :data-source="tableData">
  <template #bodyCell="{ column: {dataIndex},index, text, record }">
      /*编辑主体*/
      <div class="editable-cell">
         /*如果editableData中存在这个要编辑的属性,则显示input编辑弹框*/
         <div v-if="editableData[record[dataIndex as string]+''+index]" class="editable-cell-input-wrapper">
            /*input绑定的值为editableData要编辑的属性(key)对应的值,以此来编辑*/
            <Input v-model:value="editableData[record[dataIndex as string]+''+index]"
                   @pressEnter="save(record[dataIndex as string]+''+index,dataIndex as string)"/>
            <icon class="editable-cell-icon-check"
                     @click="save(record[dataIndex as string]+''+index,dataIndex as string)">
                <Check/>
            </icon>
         </div>
         /*否则,显示edit图标*/
         <div v-else class="editable-cell-text-wrapper">
             /*通过checkCanBeEdit方法来判断这个单元格是否可编辑(显示编辑图标)*/
             <icon class="editable-cell-icon"
                      v-if="checkCanBeEdit(dataIndex as string)"
                      @click="edit(record,record[dataIndex as string]+''+index,dataIndex as string)">
                <Edit/>
             </icon>
         </div>
      </div>
  </template>
</Table>

ts:

tableData:表格数据  
tableHeader:表格头

/**
 * 将正在编辑的数据以key-value形式保存到editableData对象中,每个数据都赋予唯一的key(根据实际调整)
 * 编辑完成后(保存后都会更新最新的table数据) 将保存的key删除
 * 通过editableData中的正在编辑的属性有多少来显示input组件,否则显示编辑图标
 */
const editableData: UnwrapRef<Record<string, any>> = reactive({});

/**
 * 编辑框显示 (传入的参数可自行调整,只要能找到当前要修改的数据就行)
 * @param data 选中当前行的数据
 * @param col 当前列的表头名
 * @param key 修改的属性名
 */
const edit = (data: any, col: string, key: string,) => {
  /*将要修改的数据原本值赋给editableData中的唯一key*/
  editableData[key] = data[col];
};

/**
 * 保存修改的参数(传入的参数可自行调整,只要能找到当前要保存的数据就行)
 * @param col 当前列的表头名
 * @param key 修改的属性名
 */
const save = (key: string, col: string) => {
  /*以下方法并不重要,总之就是实现将editableData中修改的数据赋给tableData中对应的数据*/  
  tableData.value.filter((item, index) => {
    return key === item[col] + '' + index
  }).forEach((item) => {
    item[col] = editableData[key]
  });
  /*最后删除editableData中的数据*/
  delete editableData[key];
};
/**
 * 判断当前表头下对应的单元格是否可编辑
 * @param value 当前列的表头名
 */
function checkCanBeEdit(value: string): boolean {
  return !(['是否可编辑'].includes(value as string))
}

样式:文章来源地址https://www.toymoban.com/news/detail-845249.html

/*编辑主体样式(根据实际调整)*/
.editable-cell {
  position: relative;

  .editable-cell-input-wrapper,
  .editable-cell-text-wrapper {
    padding-right: 24px;
  }

  .editable-cell-text-wrapper {
    padding: 5px 24px 5px 5px;
  }

  .editable-cell-icon,
  .editable-cell-icon-check {
    position: absolute;
    right: 0;
    width: 20px;
    cursor: pointer;
  }

  .editable-cell-icon {
    margin-top: 4px;
    display: none;
  }

  .editable-cell-icon-check {
    line-height: 28px;
  }

  .editable-cell-icon:hover,
  .editable-cell-icon-check:hover {
    color: #108ee9;
  }
}
.editable-cell:hover .editable-cell-icon {
  display: inline-block;
}

到了这里,关于Vue3+ts+element ui plus/antdesgin 实现可编辑单元格/可编辑功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3+ts - element-plus封装上传文件图片组件

      近期做到的项目中有涉及到上传图片上传文件的需求,因为是pc管理后台,用到了element-plus框架,所以我也一起使用element-plus中的上传图片上传图片功能,并对它进行封装成一个组件,方便在多个地方使用。 1、上传文件、视频 2、上传图片   在这里上传图片和文件是分

    2024年02月12日
    浏览(38)
  • vue3-ts- element-plus新增组件-过滤

     新增组件-所有值为空时过滤   提交: 

    2024年02月11日
    浏览(38)
  • Vue3+Element-Plus 实现用户列表页面的UI结构及动态加载表单功能 三一

    1.1 头部是一个面包屑 (Breadcrumb)导航区域 1.2 白色区域是一个卡片(Card)视图 1.3 卡片 (Card)视图中嵌套了   输入框(Input )、 按钮(Button)、 表单(Form)、分页(Pagination ) Breadcrumb 面包屑 | Element Plus (gitee.io) https://element-plus.gitee.io/zh-CN/component/breadcrumb.html  2.1.1 复制

    2023年04月09日
    浏览(44)
  • Vue3+TS+Vite创建项目,并导入Element-plus和Sass

    1.桌面新建一个文件夹Vue3-app 打开编辑器导入文件夹,编辑器打开终端输入或者命令行工具cd到项目目录下输入 npm init vue@latest 回车运行 这里我选择了TS+Vite来开发,并选择安装路由 2.cd到 vue-project目录下 输入 npm install 回车运行 3.安装完成后 输入 npm run dev 回车运行 浏览器打开

    2024年02月16日
    浏览(45)
  • vue3+element Plus+ts 自定义主题色,以及生成主题色各种透明度

    目录 思路  安装css-color-function【接收一个颜色值,生成不同的透明度】 获取后台配置的主题色或者使用ColorPicker修改主题色  最终结果如下 本篇文章的主体思路是从element Plus官网引申而来。结合了我以前用vue2+element-ui配置主题色生成透明度(light-1至linght-9)的方法。 utils/

    2024年02月21日
    浏览(43)
  • vite + vue3 + vue-router4 + ts + element plus + pinia + axios构建项目

    最后是完整的vite.config.ts、main.ts配置 1、先用vite创建一个项目 2、安装element plus vite.config.ts配置组件按需导入,图标自动导入   main.ts配置 页面文件使用 3、安装axios main.ts 4、安装pinia /stores/index.ts /stores/counter.ts main.ts 页面使用 5、安装router4 /router/index main.ts   6、vite.config.ts常

    2023年04月25日
    浏览(37)
  • 详解Vite创建Vue3项目+vue-router+ts+vite+element-plus

    前言 在之前的文章中写过“Vue3+TS+ElementPlus的安装和使用教程【详细讲解】”,但那篇文章写的是创建vue3的项目没有使用到Vite构建工具进行创建还是使用的常规webpacket构建工具进行创建的。提到Vite和webpacket的时候我们可以简单说一下。 Vite 和 Webpack 都是现代化的前端构建工

    2024年01月18日
    浏览(46)
  • vue3+ts+element-plus实际开发之导出表格和不同类型之间相互赋值

    1. 安装依赖 npm run xlsx 2. 引入,import * as XLSX from “xlsx”; 3. 报错找不到模块“xlsx”或其相应的类型声明 修改成大写就好了 import * as XLSX from \\\'XLSX\\\' ,如果没有报提示就直接用 4. 使用导出文件 //---- 导出表 1. 直接用a标签下载 鼠标移入样式,点击自动下载 2. 有特殊数据需要解析

    2024年02月15日
    浏览(36)
  • 从0开始搭建一个vue3+vite+ts+pinia+element-plus的项目

    前言:vue3+ts+vite大家已经都开始用了,最近也在学习,基本上是零基础开始ts的学习,很多语法知识是边写边查,没有系统的学习ts。此处展示从零开始,搭建的一个框架,方便拿来即用! 其中框架选择vue,语言选择typeScript 项目启动成功以后如下所示: 为了方便日常工作中

    2024年02月06日
    浏览(46)
  • vue3+ts+element-plus 之使用node.js对接mysql进行表格数据展示

    * 初始化node 查看node是否安装 node -v 初始化命令 npm init 初始化配置解释如下: 完成后会有一个package.json文件 * 安装可能用到的依赖 根据需求安装,我这里需要对接mysql,安装依赖 ,我是一次性安装完,后边会直接使用,也可以边安装边使用。如下 安装成功如下: * 配置文件

    2024年02月15日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包