测试需求平台9-Table 组件应用产品列表优化

✍此系列为整理分享已完结入门搭建《TPM提测平台》系列的迭代版,拥抱Vue3.0将前端框架替换成字节最新开源的arco.design,其中约60%重构和20%新增内容,定位为从 0-1手把手实现简单的测试平台开发教程,内容将囊括基础、扩展和实战,由浅入深带你实现测试开发岗位中平台工具技术能力入门和提升

👨‍💻 作者:大奇 MegaQi  
✍️ 专注测试开发实战&车载方向干货分享,欢迎访问长期关注博客和公众号。

1.气泡确认 Popconfirm

点击元素,弹出气泡式的确认框,一般可替代 Modal 对话框实现便捷的二次确认操作。

1.1 组件构成

由基本触发器浮层构成

  1. 触发器:点击触发器将唤起气泡确认框,触发器一般为按钮或链接

  2. 浮层:为确认框容器,其中包含了提示性文字和需要用户确认的操作

1.2 组件用法

气泡确认框是一种轻量的反馈方式,承载的内容也相对较少,主要用于二次确认操作。对比较为常规的对话框二次确认,气泡确认框从形式上更轻量,干扰更小,控件的打开关闭方式也更为便捷

<template>  <a-popconfirm content="你确定要删除此信息吗?">    <a-button>是否删除</a-button>  </a-popconfirm></template>

Popconfirm组件同样有 Props 属性具体参考引用

更多 API:https://arco.design/vue/component/popconfirm#API

本篇主要用到一个ok按钮 Events,即点击确认按钮时触发,对应还有个 cancel 事件,默认是关闭确认对话框,如确认操作无特殊交互逻辑无需处理。

1.3 应用实战

参考上一篇编辑的基础上增加行废弃菜单按钮,外层直接包裹确认气泡 popconfirm,而真正实现软删除的操作也是放在气泡的确认按钮上。

<a-table :columns="columns" :data="renderList" :pagination="false" ><template #optional="{ record }">  <a-button type="text" @click="editButtonClick(record)">编辑</a-button>+   <a-popconfirm content="你确定要废弃此产品吗?" type="warning" @ok="deleteButtonClick(record.id)">+     <a-button type="text">废弃</a-button>+   </a-popconfirm>  </template></a-table>

有个组件绑定,剩下只需要实现接口和触发删除逻辑就行了,这个气泡删除我们使用后端两个删除接口的 软删除 ,即更新产品状态。

/* 接口product.ts新增软接口 */export function apiProductRemove(id: number) {  return axios.post(`/api/product/remove?id=${id}`);}
/* 页面product/index.vue script部分新增确认事件处理 */const removeButtonClick = async (id) => {    const res = await apiProductRemove(id);    if (res.code === 20000) {        fetchData(); // 删除成功重新请求列表    } else {        console.log("产品删除失败");    }  }

案例验证下实现效果

在气泡确认组件使用建议中,有一种危险情况,比如数据彻底移出、操作会影响其他使用,这类是不建议使用 Propconfirm,而是建议使用Modal并通过改变样式、按钮状态等来更明显的提醒和阻断操作。下面以另外一个彻底删除接口实现对话框的模式的确认删除交互。

因为上篇已经详细讲解了 Modal 组件使用,这里就直接给出参考的代码了。1)src/api/product.ts

export function apiProductDelete(id: number) {  return axios.delete('/api/product/delete', {    params: {id}  });}

2)Vue tempplate

<a-modal v-model:visible="delModalVisible"           title="删除产品"           @before-ok="delModalOk"           okText="删除"           :okButtonProps="modalOkPros"  >    <div>确定彻底删除此产品吗?</div>  </a-modal>

3)Vue script

// 控制删除确认对话框const delModalVisible = ref(false); // 定义保存行删除的IDconst delId = ref("");// 对护框确定按钮的自定义属性,按钮为警告类型const modalOkPros = {    status: 'warning'    };// 赋值并弹出对话框const delBtnClick = (id) => {    delId.value = id;    delModalVisible.value = true;};// 调用接口执行删除操作const delModalOk = async () => {    const res = await apiProductRemove(delId.value);    if (res.code === 20000) {        delModalVisible.value = false;        fetchData();    } else {        console.log("产品移除失败");    };};

2.表格 Table 组件

在数据展示、分析整理、操作处理场景中最常用的就是Table表格,它是用行列的形式,结构化展示信息的组件;方便用户查看、分析数据。

2.1 组件构成

参考办公软件 Excel 在做数据表的时候(表头、行、列)格式,对应一个展示 Table 便有如下构成:

  • 表头 :说明这一列的信息类别,也可以在表头放置一些排序、筛选等操作按钮。

  • 单元格 :表格的主体由多个单元格组成,单元格内支持文字、图标、按钮、标签、单选框、复选框等元素。

  • 行列分割线:从视觉上分隔信息。

< 组件用法 https://arco.design/docs/spec/table >

2.2 组件类型

作为数据展示最常用的组件,从样式来和使用场景来说,ArcoDesgin 提供了多种类型

  • 基础表格 由表头和单元格组成,无其他拓展操作,对数据进行最基础展示;

  • 固定表格 用于在固定表格重要行或列(一般为头和两边列)内容展示不全场景,出现滚动条可滑动预览;

  • 选择表格 表格可以配置行的 CheckBox,进行单选/多选方便进行批量的数据操作;

  • 展开表格 表格行可以展开,以展示更多信息;

  • 树表格 即嵌套表格,当数据信息有清晰的层级关系时,可以使用树表格。

<附之前已经实现基础表格图>

2.3 使用时机

何时使用

  • 需要展示数据时:当有大量结构化数据需要展示展示时可以使用表格对数据进行有序的展示,更有利于用户对于数据的获取。

  • 需要对数据进行复杂操作时:当需要对数据进行排序、搜索、筛选等操作时,可以使用表格组件,利于对数据进行操作。

  • 需要对数据进行对比,归纳与分类时:当需要对数据进行对比、归纳、分类等操作时,可以使用表格组件,使信息之间易于对比,便于用户快速查询其中的差异与变化、关联和区别。

何时不适用

  • 单独的选择项和对应选项时: 单独的选择项对应选项时可采用列表组件,而非表格组件。

2.4 属性 API

表格Table可以看作是一个综合且相对负责的组件,因此会有更多的功能、属性、方法等供我们组合使用来达到不同需求,如下图左侧列出了很多参考,在使用时候可以以基本模版为地基,逐项增加配置项。

https://arco.design/vue/component/table#API

<table> Props 表属性

  • columns:表格的列定义 - TableColumnData[] 类型

  • data:表格绑定的数据 - 类型 [] 数据

  • size:大小密度 - 枚举 largeminismallmedium

  • loading:加载状态,常用于大量据接口响应时间长等待 - 布尔 falsetrue

  • row-key:建议指定表数据列 key,如不指定会有很多警告

<table-column> Props 列属性

  • data-index:列信息的标识,即绑定字典中的 key - 字符串类型

  • title:表头列标题 - 字符串 或 React 组件类型

  • width:自定义列最大宽度 - number 类型

  • align:列标题及内容对齐方向 - 枚举 leftcenterright

  • ellipsis:超出列宽度自动省略号,不设置默认超宽换行 - 布尔 falsetrue

  • tooltip:配合省略属性鼠标经过现实完整提示文本 - 布尔

  • slotName:设置当前列的渲染插槽的名字,典型场景数据格式化、自定义扩展列

<table> Slots 插槽,表格本身一些元素的自定义

  • th/td/tr 自定义其元素

  • columns 表格定义,启动时候会屏蔽 columns 属性

2.5 实战优化

对产品列表利用各属性和列自定义插槽知识点进行几处改造,详细参考截图红色标记,这里注意是用到了一个日期处理库moment对日期进行快速格式化,具体知识点汇聚在下一篇统一讲解。

代码优化后刷新管理页面,查看下效果。

表格在 WEB 的系统中对数据的展示和操作有着很重要的使用占比,因此有着更多更复杂的使用方法,此篇是最常用的基础需要熟练掌握,当然后续随着测试需求平台更多的需求被实现会更多的讲解 Table 的知识点。

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

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

相关文章

文件操作和IO(2):Java中操作文件

目录 一、File的属性 二、File的构造方法 三、File的方法 四、代码示例 1、getName&#xff0c;getParent&#xff0c;getPath方法 2、getAbsolutePath&#xff0c;getCanonicalPath方法 3、exists&#xff0c;isDirectory&#xff0c;createNewFile方法 4、createNewF…

【04】C语言括号匹配问题

欢迎来到土土的博客~&#x1f973;&#x1f973;&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;大耳朵土土垚的博客 &#x1f4a5; 所属专栏&#xff1a;C语言系列函数实现 题目描述&#xff1a; 给定一个只包括 ‘(’&#xff0c;‘)’&#xf…

金融业被网络攻击了怎么办,如何治理和风险控制?

近年来&#xff0c;网络罪犯的人数和复杂程度都在增加&#xff0c;网络罪犯的目标锁定变得更具策略性&#xff0c;更加专注于最大效率和获利。随着有关全球网络犯罪的数据持续涌入&#xff0c;可以看出金融服务企业已然成为头号锁定目标。虽然金融服务企业在网络安全人员、工具…

python 基础知识点(蓝桥杯python科目个人复习计划57)

今日复习计划&#xff1a;做题 例题1&#xff1a;笨笨的机器人 问题描述&#xff1a; 肖恩有一个机器人&#xff0c;他能根据输入的指令移动相应的距离。但是这个机器人很笨&#xff0c;他永远分不清往左边还是往右边移动。肖恩也知道这一点&#xff0c;所以他设定这个机器人…

实现数组方法 forEach map filter every

手写forEach Array.prototype.myforEach function (fn, thisValue) {let index 0;let arr thisValue || this;if (typeof fn ! function) {throw new TypeError(fn is not a function)}while (index < arr.length) {if (index in arr) {fn.call (thisValue, arr[index],…

AI入门笔记(三)

神经网络是如何工作的 神经网络又是如何工作的呢&#xff1f;我们用一个例子来解释。我们看下面这张图片&#xff0c;我们要识别出这些图片都是0并不难&#xff0c;要怎么交给计算机&#xff0c;让计算机和我们得出同样的结果&#xff1f;难点就在于模式识别的答案不标准&…

Mybatis_plus-逻辑删除、通用枚举、自动填充、插件等

一、逻辑删除 曾经我们写的删除代码都是物理删除。 逻辑删除&#xff1a;删除转变为更新 ​ update user set deleted1 where id 1 and deleted0 查找: 追加 where 条件过滤掉已删除数据,如果使用 wrapper.entity 生成的 where 条件也会自动追加该字段 ​ 查找: select id,nam…

【NR 定位】3GPP NR Positioning 5G定位标准解读(五)

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

扑克牌翻牌记忆小游戏源码

源码由HTMLCSSJS组成&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 效果预览 下载地址 https://www.qqmu.com/2296.html

Spring学习笔记(七)SpringMVC入门

一.什么是Spring MVC 1.什么是MVC&#xff08;一种思想模式&#xff09; M:模型 V:视图 C:控制器 2、Java EE三层架构 在Java EE开发中&#xff0c;系统经典的三层架构包括表现层、业务层和持久层。 表现层&#xff08;Web层&#xff09;负责接收客户端请求&#xff0c;并…

Linux基本指令(下)

目录 1. less指令 2. head与tail指令 3. find指令 示例 4. grep指令 示例 ​编辑 5. zip/unzip 打包与压缩 示例 ​编辑 6. tar指令 7. find指令&#xff1a; -name 8. echo指令 9. 时间相关的指令 1.在显示方面&#xff0c;使用者可以设定欲显示的格式&#xff…

更详细的软件测试理论基础:流程,开发、测试模型,测试分类,测试用例及其设计方法,缺陷

文章目录 一、测试流程二、开发模型1、 瀑布模型2、增量模型3、快速模型4、其他 三、测试模型1、V模型2、W模型 四、测试分类五、测试用例 test case六、测试用例设计方法1、等价类划分法2、边界值分析法3、因果图法4、判定表法5、正交法6、场景法7、流程分析法8、错误推测法方…

OpenAI回击马斯克的起诉:GPT-4不是AGI,所以没必要开源

前情提要 上一集我们讲到&#xff0c;马斯克起诉了OpenAI&#xff0c;扬言其背叛了公司成立时达成的一项协议&#xff0c;即开发技术的目的是“造福人类”而非利润。 “OpenAI已经变成了微软的一个闭源形态的实际子公司。在其新的董事会领导下&#xff0c;公司不仅在开发&…

FreeCad 有限元分析入门

2024.3 最新版本 0.21.2 FreeCad 有限元分析入门 基本步骤&#xff1a; 一、零件制作 1、创建立方体 2、修改参数 二、建立力学分析 1、为零件附着材料 2、增加固定约束 3、增加均布在表面的受力 4、零件网格化 …

Decoupled Knowledge Distillation解耦知识蒸馏

Decoupled Knowledge Distillation解耦知识蒸馏 现有的蒸馏方法主要是基于从中间层提取深层特征&#xff0c;而忽略了Logit蒸馏的重要性。为了给logit蒸馏研究提供一个新的视角&#xff0c;我们将经典的KD损失重新表述为两部分&#xff0c;即目标类知识蒸馏&#xff08;TCKD&a…

2024 年广东省职业院校技能大赛(高职组)“云计算应用”赛项样题 2

#需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; 某企业根据自身业务需求&#…

第八节 龙晰Anolis 8.8 安装 DDE 桌面环境

一、前言 最小化安装的龙晰 Anolis OS 8.8 是不带图形化界面的&#xff0c;只能使用命令行&#xff0c;有些时候需要用到桌面环境&#xff0c;而DDE (Deepin Desktop Enviroment) 就是很好的桌面环境&#xff0c;它是指龙晰 Anolis 所搭载的中国自主桌面环境&#xff0c;用起来…

常数项级数

定义 级数的形式如下&#xff1a; ∑ n 1 ∞ u n u 1 u 2 u 3 . . . u n . . . \sum_{n1}^{\infin}u_n u_1u_2u_3...u_n... n1∑∞​un​u1​u2​u3​...un​... 这个数列的项数是无穷多个&#xff0c;如果取其前n项 S n u 1 u 2 . . . u n S_n u_1u_2...u_n Sn…

Java集合相关面试题(2024大厂高频面试题系列)

1、说一说Java提供的常见集合&#xff1f;&#xff08;画一下集合结构图&#xff09; 在java中提供了量大类的集合框架&#xff0c;主要分为两类&#xff1a; 第一个是Collection 属于单列集合&#xff0c;第二个是Map 属于双列集合 在Collection中有两个子接口List和Set。…

C#中多语言编程原理及实例解析

文章目录 一、了解C#多语言编程原理1. 通用语言运行库&#xff08;CLR&#xff09;2. 通用类型系统&#xff08;CTS&#xff09;3. 微软中间语言&#xff08;MSIL&#xff09;4. 元数据和反射5. 公共语言规范&#xff08;CLS&#xff09; 二、实例说明 一、了解C#多语言编程原理…