前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >这个Element table 上下移需求不简单

这个Element table 上下移需求不简单

作者头像
草帽lufei
发布于 2022-09-16 08:59:29
发布于 2022-09-16 08:59:29
1.6K00
代码可运行
举报
文章被收录于专栏:程序语言交流程序语言交流
运行总次数:0
代码可运行

前言

Element table 上下移动,听起来是不是很简单的需求,产品的描述也简单:表格数据支持拖动上下移,支持通过选择表格行数据点击按钮上下移。最终效果大概如下(模拟数据共7条,去除了关联的业务操作)

Element Table 上下移最终效果(下图)

原型评审的时候,因为内容比较多,产品经理讲 Element table 上下移动时一句话就带过了,原型功能描述也简单。做的时候才发现这个功能涉及很多细节需要考虑(痛哭流涕啊~),产品给留下的坑,接下来咱们一起来捋一下,防止下次考虑不周。

思路梳理

抛开业务复杂度,只分析这一小部分的上下移功能技术层的需求实现思路,上下移功能分为两种操作方式,一种是表格数据行拖动上下移;一种是复选框选中数据后,点击上下移按钮实现表格数据行移动

分析到这里的时候发现需求描述里面对于开发人员来讲,功能描述不完善

  • 问题1:表格数据行拖动上下移,是单行拖动,还是多行拖动?
  • 问题2:通过按钮操作上移的时候,支持多选吗?单行移动还是几行移动?
  • 问题3:如果表格支持多选后上下移,那么不连续选中后数据怎么处理?如图
  • 问题4:如果多选的数据,非连续选中情况下,有数据已经是最下方了,如何处理边界数据移动问题?如图
  • 问题5:如果选中的数据已经是最上或最下了,怎么移动呢?
  • 问题6:如果表格数据全选,怎么移动?
这么多细节问题,产品经理咋不讲清楚写明白呢,喷他!

带着问题找产品经理确认,结果产品经理说他也没想到还有这么好些情况

和产品经理一波 battle 后的结果
  • 问题1:表格数据单行拖动上下移
  • 问题2:按钮操作上下移,支持数据行多选,单行移动
  • 问题3:表格数据不连续选中后,数据先合并,再以最靠上或靠下的数据为基础,向上或向下移动
    • 根据选中的ID举例,默认表格ID排序为 1234567, 如果选中ID为 346,向下移动, 在数据层先把这三个数据截出来,整合,然后再插入到 7 的后面,整个表格数据ID排序就是 1257346。
  • 问题4:如果多选的数据,非连续选中情况下,有数据已经是最下方了,数据整合后,再基于最上或最下的数据为基础向上或下移动
  • 问题5:如果选中的数据已经是最上或最下了,直接上下移,不用提示
  • 问题6:如果表格数据全选上下移直接提示 "不能选择全部数据上下移"

问题清楚了开始复制粘贴,啊呸!来让我们开始改变世界

确认完所有细节问题后,发现这表格数据移动功能实现逻辑代码还是不少的,为什么标题说这个上下移需求不简单呢?主要这一部分功能评审的时候基本没算开发时间,和其他几个功能整个一起评审才给1天,这时候对于我们项目组已经排好工期的状态是不加工时的,开发人员自己加班赶进度保证项目整体进度,哎......

表格数据行拖动上下移

表格数据行拖动这个原生实现就不考虑了,时间代价有点高,一般找个 npm 库就行,目前不错的拖拽库有 Sortable.js 官方有 Vue 版 Vue.Draggable ,因为拖动需求比较简单,发现一个更好用的库,我用的这个 el-table-draggable ,这个库的作者基于 sortablejs 封装了一下,在 Vue Element table 中使用更方便,只需要 <el-table-draggable> 包裹一下 el-table 就行了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import ElTableDraggable from 'el-table-draggable'

components: {
  ElTableDraggable
}

<el-table-draggable>
  <el-table
    row-key="id"
    ref="multipleTable"
    :data="tableData"
    tooltip-effect="dark"
    style="width: 100%"
    @selection-change="handleSelectionChange"
  >
    <el-table-column type="selection" width="55"> </el-table-column>
    <el-table-column label="ID" width="60">
      <template slot-scope="scope">{{ scope.row.id }}</template>
    </el-table-column>
    <el-table-column label="日期" width="120">
      <template slot-scope="scope">{{ scope.row.date }}</template>
    </el-table-column>
    <el-table-column prop="name" label="姓名" width="120">
    </el-table-column>
    <el-table-column prop="address" label="地址" show-overflow-tooltip>
    </el-table-column>
  </el-table>
</el-table-draggable>

注意!el-table 中的 row-key 必须设置,否则无法拖拽。

如果只是简单实现一下表格数据行拖拽,读者以后功能开发可以优先考虑 el-table-draggable 这个库, 能够快速实现业务需求, 省下来的时间,摸鱼真爽~ (๑˃̵ᴗ˂̵)ﻭ

表格数据选中点击按钮上下移

分析点击移动数据这里的实现逻辑,整个上下移动需要3个核心步骤:定位、删除、移动。这里直接上代码

一. 基于选中数据定位需要移动到的位置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// confirm slotIndex
let slotIndex = -1
this.tableData.forEach((item, index) => {
  if (this.multipleSelection.length > 1) {
    this.multipleSelection.forEach((v, k) => {
      if (item.id === v.id) {
        if (slotIndex === -1) {
          slotIndex = index
        } else {
          if (slotIndex < index) {
            slotIndex = index
          }
        }
      }
    })
  } else {
    this.multipleSelection.forEach((v, k) => {
      if (item.id === v.id) {
        slotIndex = index + 1
      }
    })
  }
})
二. 删除表格中的选中数据
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// delete selectedata
this.multipleSelection.forEach((item, index) => {
  this.tableData.forEach((v, k) => {
    if (item.id === v.id) {
      this.tableData.splice(k, 1)
    }
  })
})
三. 将选中的数据移入指定位置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this.tableData.splice(slotIndex, 0, this.multipleSelection)
this.tableData = this.tableData.flat()

执行完这三个步骤后,表格数据就能按需移动了。在我们的实际项目场景中,由于表格数据内容太多,数据又都比较像,因此需要移动后的数据继续回显,这样用户能更直观,在实际项目业务表格由于数据内容太多了,也关联了其他业务功能操作,表格数据上下移动后选中回显渲染是异常的,需要使用 setTimeout $nextTick() 处理一下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
setTimeout(async () => {
  await this.$nextTick()
  selectionTableData.forEach(row => {
    this.$refs.table2.toggleRowSelection(row)
  })
}, 10)

注意! 表格中数据选中,选中数据的数组是按照选中操作的顺序排列的,例如选中操作顺序为 321, 对于页面来讲,选中的数据是 123,这时候要按照页面的ID顺序进行整体移动,还是按照选中数据的顺序移动,最终效果不一样,目前我们的功能实现是按照选中顺序进行移动的

演示代码地址

https://github.com/gywgithub/vue-admin-element/blob/main/src/views/Table2.vue

写在最后

表格数据移动也有其他的实现方案,欢迎大家评论区讨论交流,一起学习共同进步 ^-^

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 参谋总长萨博 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
你的英语不行!微软亚研自动语法纠错系统达到人类水平
用于语法纠错(GEC)的序列到序列(seq2seq)模型(Cho et al., 2014; Sutskever et al., 2014)近年来吸引了越来越多的注意力(Yuan & Briscoe, 2016; Xie et al., 2016; Ji et al., 2017; Schmaltz et al., 2017; Sakaguchi et al., 2017; Chollampatt & Ng, 2018)。但是,大部分用于 GEC 的 seq2seq 模型存在两个缺陷。第一,seq2seq 模型的训练过程中使用的纠错句对有限,如图 1(a)所示。受训练数据的限制,具备数百万参数的模型也可能无法实现良好的泛化。因此,如果一个句子和训练实例有些微的不同,则此类模型通常无法完美地修改句子,如图 1(b)所示。第二,seq2seq 模型通常无法通过单轮 seq2seq 推断完美地修改有很多语法错误的句子,如图 1(b)和图 1(c)所示,因为句子中的一些错误可能使语境变得奇怪,会误导模型修改其他错误。
机器之心
2018/07/26
5580
你的英语不行!微软亚研自动语法纠错系统达到人类水平
【论文解读】基于Transformer增强架构的中文语法纠错
语法纠错(Grammatical Error Correction, GEC)任务,旨在利用自然语言处理技术,自动识别并纠正非中文母语学习者书写的文本中所包含的语法错误,拼写错误,语序错误,标点错误等等,是自然语言处理的一项重要任务。下面这对语句就是语法纠错任务的一个示例,每个输入对应一个输出,左侧输入的是一句可能带有错误的文本,右侧输出的是纠正后的结果,句中红色的字是有修改的地方。
zenRRan
2020/04/17
2K0
【论文解读】基于Transformer增强架构的中文语法纠错
ACL 2019论文分享: 让机器有自主意识地和人类对话
(对人机对话技术不是很了解的读者,建议先阅读此前的一篇公众号内容“一文看懂人机对话”)
用户1386409
2019/07/16
1.5K0
ACL 2019论文分享: 让机器有自主意识地和人类对话
CCL2022 中文语法纠错评测
每天给你送来NLP技术干货! ---- 中文语法纠错任务(Chinese Grammatical Error Correction,CGEC)旨在自动检测并修改中文文本中的标点、拼写、语法、语义等错误,从而获得符合原意的正确句子。近年来,中文语法纠错任务越来越受到关注,也出现了一些有潜在商业价值的应用。为了推动这项研究的发展,研究者通过专家标注以及众包等形式构建一定规模的训练和测试数据,在语法检查以及语法纠错等不同任务上开展技术评测。同时,由于中文语法纠错任务相对复杂、各评测任务以及各数据集之间存在差异,
zenRRan
2022/05/18
2.9K0
CCL2022 中文语法纠错评测
AI技术讲座精选:用端到端训练模型进行语法智能纠错
现有的拼写检查系统可以识别拼写错误,但无法识别出语法错误,本文的亮点在于使用流行的 seq2seq + attention 模型,在大规模拼写检查数据集上进行训练,用以简单的语法错误识别任务。 对上下文敏感的拼写检查系统(例如 Autocorrect)虽然可以纠正大量的来自于即时消息、电子邮件和短消息中的输入错误,但却对即便是最最简单的语法错误无能为力。举个例子,信息“ I’m going to store ”将不会被自动纠错系统报错,但人们通常更倾向于说“ I’m going to the store ”
AI科技大本营
2018/04/26
2K0
自然语言处理-错字识别(基于Python)kenlm、pycorrector
当然,针对不同业务场景,这些问题并不一定全部存在,比如输入法中需要处理前四种,搜索引擎需要处理所有类型,语音识别后文本纠错只需要处理前两种, 其中’形似字错误’主要针对五笔或者笔画手写输入等。
学到老
2019/01/25
16.7K0
自然语言处理-错字识别(基于Python)kenlm、pycorrector
文本智能校对大赛冠军方案!已落地应用,来自苏州大学、达摩院团队
近期参加了2022 蜜度中文文本智能校对大赛,经过2个月的比赛,在600余名参赛者中取得了第一名的成绩,相关技术也已在钉钉文档等产品落地应用。借此机会,笔者想和大家分享下对中文文本纠错任务的一些看法。
Datawhale
2022/10/31
1.6K0
文本智能校对大赛冠军方案!已落地应用,来自苏州大学、达摩院团队
华为杨浩:小知识驱动大数据,构建知识可认知的 AI 应用
基于深度学习的神经网络机器翻译已经在通用翻译、领域翻译、翻译评估和自动译后编辑等多个场景,产生了巨大的商业价值,但是仍然存在着两个典型问题。一方面,过译漏译等质量问题仍然存在;另一方面,端到端的神经网络黑盒架构使专家介入优化比较困难,传统离散知识不能很好融入模型算法。 在 2021 年 11 月 25 日和 26 日,AICon 全球人工智能与机器学习大会(北京)上,我们邀请到了华为文本机器翻译实验室主任杨浩,他将从离散知识和神经网络模型的融合角度为你带来《知识驱动的机器翻译研究和实践》,希望可以为你带来启发。
深度学习与Python
2022/03/23
5550
华为杨浩:小知识驱动大数据,构建知识可认知的 AI 应用
【AAAI 2020】微软亚洲研究院6篇精选论文在家必看!
编者按:AAAI 2020 明天将在纽约开幕,然而这次的情况有些许不同,许多国内的小伙伴因疫情影响无法到现场参加会议。各位小伙伴在家中做好日常防护的同时,是时候开启“云参会”模式啦。本届 AAAI 中微软亚洲研究院有29篇论文入选,本文为大家介绍的6篇精选论文涵盖多维数据普适分析、文本风格迁移、句子改写、集成学习、实体链接任务等多个前沿主题,如果你不能去到大会现场,先来看看这些精选论文吧。
zenRRan
2020/02/20
6990
2018 NLPCC Chinese Grammatical Error Correction 论文小结
这一段时间,笔者一直在研究语音识别后的文本纠错,而就在八月26-30日,CCF的自然语言处理和中文计算会议召开了,笔者也从师兄那里拿到了新鲜出炉的会议论文集,其中重点看的自然是其shared task2:grammatical error correction的overview以及优胜团队的论文。本文总结了优胜团队的论文并给出了一些可能的改进方向。
zenRRan
2018/10/09
2.3K0
2018 NLPCC Chinese Grammatical Error Correction 论文小结
【ACL 2019】腾讯AI Lab解读三大前沿方向及20篇入选论文
本文将通过介绍入选NLP领域顶级学术会议 ACL 的论文,解读腾讯 AI Lab 的重点研究方向:自然语言理解、对话系统和文本生成,以及机器翻译等。
zenRRan
2019/08/19
1K0
【ACL 2019】腾讯AI Lab解读三大前沿方向及20篇入选论文
推断速度达seq2seq模型的100倍,谷歌开源文本生成新方法LaserTagger
序列到序列(seq2seq)模型给机器翻译领域带来了巨大变革,并成为多种文本生成任务的首选工具,如文本摘要、句子融合和语法纠错。模型架构改进(如 Transformer)以及通过无监督训练方法利用大型无标注文本数据库的能力,使得近年来神经网络方法获得了质量上的提升。
机器之心
2020/02/24
6600
推断速度达seq2seq模型的100倍,谷歌开源文本生成新方法LaserTagger
ACL 2019对话系统论文综述,一文带你纵览16篇前沿研究
这次会议共接收到投稿 2905 篇,比 2018 的 1544 近乎翻倍,接收文章数为 660 篇,接收率为 22.7%,与 2018 年的 24.9%,2017 年的 23.3% 差别不大。
机器之心
2019/08/20
1.8K0
文字语义纠错技术探索与实践
文本语义纠错的使用场景非常广泛,基本上只要涉及到写作就有文本纠错的需求。书籍面市前就有独立的校对的环节来保障出版之后不出现明显的问题。在新闻中我们也时不时看到因为文字审核没到位造成大乌龙的情况,包括上市公司在公开文书上把“临时大会”写成为“临死大会”,政府文件把“报效国家”写成了“报销国家”。有关文本纠错的辅助工具能给文字工作人员带来较大的便利,对审核方面的风险也大幅降低。
用户10103085
2022/12/21
1.4K0
文字语义纠错技术探索与实践
重磅!一文彻底读懂智能对话系统!当前研究综述和未来趋势
作者:蒙 康 编辑:王抒伟 笔者在最近的研究中发现了一篇非常好的有关对话系统的论文,《A Survey on Dialogue Systems:Recent Advances and New Frontiers》,论文来自于京东数据团队,论文引用了近124篇论文,是一篇综合全面的介绍对话系统的文章,可谓是诚意满满,今天我们将其重点进行解读,以飨读者。 前言 1 拥有一个虚拟助理或一个拥有足够智能的聊天伙伴系统似乎是虚幻的,而且可能只在科幻电影中存在很长一段时间。近年来,人机对话因其潜在的潜力和诱人的商业
机器学习算法工程师
2018/03/06
2.9K0
重磅!一文彻底读懂智能对话系统!当前研究综述和未来趋势
当深度学习遇见自动文本摘要
本文介绍了深度神经网络在自动文本摘要任务中的研究进展。首先介绍了自动文本摘要任务的基本概念,然后详细阐述了基于深度神经网络的自动文本摘要方法,包括基于抽取式摘要和基于生成式摘要的方法。最后,文章对自动文本摘要方法的未来发展方向进行了探讨。
腾讯云开发者社区
2017/07/25
11.3K2
当深度学习遇见自动文本摘要
中文语法纠错全国大赛获奖分享:基于多轮机制的中文语法纠错
中文语法纠错任务旨在对文本中存在的拼写、语法等错误进行自动检测和纠正,是自然语言处理领域一项重要的任务。同时该任务在公文、新闻和教育等领域都有着落地的应用价值。但由于中文具有的文法和句法规则比较复杂,基于深度学习的中文文本纠错在实际落地的场景中仍然具有推理速度慢、纠错准确率低和假阳性高等缺点,因此中文文本纠错任务还具有非常大的研究空间。 达观数据在CCL2022汉语学习者文本纠错评测比赛的赛道一中文拼写检查(Chinese Spelling Check)任务中取得了冠军,赛道二中文语法纠错(Chinese Grammatical Error Diagnosis)任务中获得了亚军。本文基于赛道二中文语法纠错任务的内容,对比赛过程中采用的一些方法进行分享,并介绍比赛采用的技术方案在达观智能校对系统中的应用和落地。赛道一中文拼写检查的冠军方案会在后续的文章分享。
用户10103085
2022/12/22
9500
中文语法纠错全国大赛获奖分享:基于多轮机制的中文语法纠错
Transformer自动纠语法、改论文,我们试了试这个免费英文写作新神器
在当前疫情下,我们已经离不开居家学习了,各种备考也得提到日程上。机器之心的读者大多数都是理科生,数学、计算机都还是有一些「天赋」。然而对于英语,貌似这些天赋帮不到我们什么,缺乏「语感」的我们在写作文时经常会犯一些拼写、语法错误。
机器之心
2020/04/14
2.7K0
Transformer自动纠语法、改论文,我们试了试这个免费英文写作新神器
NLP任务之中文拼写 语法纠错 介绍与综述
在很多中文NLP相关的落地场景都会涉及到文本纠错的相关技术,例如跟各种形式机器人的语音或者文字对话,或者用手机扫描相关的PDF或者图片,或者跟人聊天时用输入法打字等等,无论是通过ASR识别的语音信息,通过OCR识别得到的图片信息,还是用户真实通过输入法的文字,都有可能出现错误。这些错误会影响文本的可读性,不利于人和机器的理解,如果这些错误不加处理,会传播到后续的环节,影响后续任务的效果。常见的中文错误类型包括以下几种:
大鹅
2022/07/20
4.2K1
全国中文纠错大赛达观冠军方案分享:多模型结合的等长拼写纠错
中文拼写检查任务是中文自然语言处理中非常具有代表性和挑战性的任务,其本质是找出文本段落中的错别字。这项任务在各种领域,如公文,新闻、财报中都有很好的落地应用价值。而其任务的困难程度也赋予了它非常大的研究空间。达观数据在CCL2022汉语学习者文本纠错评测比赛的赛道一中文拼写检查(Chinese Spelling Check)任务中取得了全国冠军,赛道二中文语法纠错(Chinese Grammatical Error Diagnosis)任务中获得了亚军。本文基于赛道一中文拼写检查任务的内容,对比赛过程中采用的一些方法进行分享,并介绍比赛采用的技术方案在达观智能校对系统中的应用和落地。赛道二中文语法纠错的获奖方案已经分享在达观数据官方公众号中。
用户10103085
2022/12/22
2.1K0
全国中文纠错大赛达观冠军方案分享:多模型结合的等长拼写纠错
推荐阅读
相关推荐
你的英语不行!微软亚研自动语法纠错系统达到人类水平
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 前言
  • 思路梳理
    • 这么多细节问题,产品经理咋不讲清楚写明白呢,喷他!
    • 和产品经理一波 battle 后的结果
  • 问题清楚了开始复制粘贴,啊呸!来让我们开始改变世界
    • 表格数据行拖动上下移
    • 表格数据选中点击按钮上下移
      • 一. 基于选中数据定位需要移动到的位置
      • 二. 删除表格中的选中数据
      • 三. 将选中的数据移入指定位置
  • 演示代码地址
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档