Vue3实战 第十二章 表格组件里el-table-column 的 formatter属性应用

news2025/4/7 3:22:55

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄

🌹简历模板、学习资料、面试题库、技术互助

🌹文末获取联系方式 📝

在这里插入图片描述


往期热门专栏回顾

专栏描述
Java项目实战介绍Java组件安装、使用;手写框架等
Aws服务器实战Aws Linux服务器上操作nginx、git、JDK、Vue
Java微服务实战Java 微服务实战,Spring Cloud Netflix套件、Spring Cloud Alibaba套件、Seata、gateway、shadingjdbc等实战操作
Java基础篇Java基础闲聊,已出HashMap、String、StringBuffer等源码分析,JVM分析,持续更新中
Springboot篇从创建Springboot项目,到加载数据库、静态资源、输出RestFul接口、跨越问题解决到统一返回、全局异常处理、Swagger文档
Spring MVC篇从创建Spring MVC项目,到加载数据库、静态资源、输出RestFul接口、跨越问题解决到统一返回
华为云服务器实战华为云Linux服务器上操作nginx、git、JDK、Vue等,以及使用宝塔运维操作添加Html网页、部署Springboot项目/Vue项目等
Java爬虫通过Java+Selenium+GoogleWebDriver 模拟真人网页操作爬取花瓣网图片、bing搜索图片等
Vue实战讲解Vue3的安装、环境配置,基本语法、循环语句、生命周期、路由设置、组件、axios交互、Element-ui的使用等
Spring讲解Spring(Bean)概念、IOC、AOP、集成jdbcTemplate/redis/事务等

《Vue3实战》篇章整体栏目
—————————————————————————————
【第一章】node.js/npm安装、配置
【第二章】创建项目和目录结构
【第三章】基础语法
【第四章】条件语句、循环语句
【第五章】计算、监听属性
【第六章】样式绑定和事件处理
【第七章】表单
【第八章】自定义指令
【第九章】路由
【第十章】Element plus指南
【第十一章】Vue里的Axios及使用get、post请求
【第十二章】表格组件里el-table-column 的 formatter属性应用

—————————————————————————————


前言

今天讲解表格组件里el-table-column 的 formatter属性应用,比如时间格式化、数据格式化、状态格式化等,解决我们急需的功能,也方便以后自己查找。

1、使用方式

在 Vue 中,el-table-column 的 formatter 属性允许你定义一个方法来格式化单元格的显示内容。
这个属性通常用于 Element UI<el-table> 组件中。 

1.1、在el-table-column 标签中指定 formatter 属性

首先,你需要在 <el-table-column> 标签中指定 formatter 属性,并将其设置为一个方法名:
<template>
  <el-table :data="tableData" style="width: 100%">
    <!-- 其他列 -->
    <el-table-column
      prop="date"
      label="Date"
      :formatter="formatDate">
    </el-table-column>
    <el-table-column
      prop="amount"
      label="Amount"
      :formatter="formatAmount">
    </el-table-column>
  </el-table>
</template>

1.2、定义方法

然后,在 Vue 组件的 methods 部分定义这些方法:
<script>
export default {
  data() {
    return {
      tableData: [
        { date: '2024-03-12', amount: 100 },
        // 更多数据...
      ],
    };
  },
  methods: {
    formatDate(row, column, cellValue, index) {
      // 这里使用 row 和 cellValue 来格式化日期
      // 假设 cellValue 是一个 ISO 字符串,例如 '2024-03-12'
      const date = new Date(cellValue);
      return date.toLocaleDateString();
    },
    formatAmount(row, column, cellValue, index) {
      // 格式化金额,例如将 1000 格式化为 $1,000.00
      return `$${parseFloat(cellValue).toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,')}`;
    }
  }
}
</script>

在上面的代码中,formatDate 和 formatAmount 方法被用作格式化函数。这些方法接受四个参数:

  • row:当前行的数据对象。
  • column:当前列的定义。
  • cellValue:当前单元格的值,由 prop 属性指定。
  • index:当前行的索引。

这些方法返回格式化后的显示内容。在 formatDate 方法中,日期被转换为本地日期字符串。在 formatAmount 方法中,金额被格式化为具有两位小数和逗号分隔符的货币格式。

请确保你的 Element UI 组件库已经正确安装并导入到项目中,因为 el-table 和 el-table-column 是 Element UI 提供的组件。如果你使用的是 Element Plus(Element UI 的 Vue 3 版本),确保导入的是正确的库版本。


2、实战代码

  • 创建vue3项目
    【第一章】node.js/npm安装、配置
    【第二章】创建项目和目录结构
  • 引入Element Plus组件
    【第十章】Element plus指南
  • 实际应用

2.1、格式化时间实际应用和效果

在这里插入图片描述
在这里插入图片描述

<template>
  <div style="margin-top: 15px;">
    <el-row>
      <el-col :span="11">
        <el-input
            placeholder="请输入分组名称"
            v-model="groupName"
            clearable >
          <template #prepend>分组名称</template>
        </el-input>
      </el-col>
      <el-col :span="2"><div class="grid-content ep-bg-purple-light" /></el-col>
      <el-col :span="11">
        <el-button type="primary" plain style="width: 100%;" @click="query">查询</el-button>
      </el-col>
    </el-row>
    <br>
    <el-row>
      <el-col :span="20"> </el-col>
      <el-col :span="4">
        <el-button type="primary" style="width: 100%;" @click="query">新增分组</el-button>
      </el-col>
    </el-row>

    <br>
    <el-table  :data="parkingLotGroupList"  stripe style="width: 100%" v-loading="loading">
      <el-table-column   prop="groupId"  label="分组编号"  min-width="8%"> </el-table-column>
      <el-table-column   prop="groupName"  label="分组名称"  min-width="20%"> </el-table-column>
      <el-table-column   prop="groupDescription" label="描述信息" min-width="20%" > </el-table-column>
      <el-table-column   prop="location" label="地理位置" min-width="12%" > </el-table-column>
      <el-table-column   prop="createTime" label="创建时间" min-width="15%" :formatter="timeFormatter" > </el-table-column>
      <el-table-column   prop="operate" label="操作" min-width="25%">
        <el-row>
          <el-col :span="1"><div class="grid-content ep-bg-purple-light" /></el-col>
          <el-col :span="11">
            <el-button type="primary" style="width: 100%;" @click="query">查看其下车辆</el-button>
          </el-col>
          <el-col :span="12"><div class="grid-content ep-bg-purple-light" /></el-col>
        </el-row>
      </el-table-column>
    </el-table>
  </div>

</template>

<script>
import axios from "axios";

export default {
  name: "parkingLotGroup",
  data(){
    return{
      title: "分组信息管理",
      groupName: "",
      loading: false ,
      parkingLotGroupList: []
    }
  },
  mounted(){
    this.invokeList();
  },
  methods:{
    timeFormatter(row, column , cellValue) {
      const date = new Date(cellValue * 1000);
      // 使用本地时间格式
      return date.toLocaleString();
    },
    openErrorAlert(message) {
      this.$message({
        message: message,
        type: 'error'
      });
    },
    openSuccessAlert(message) {
      this.$message({
        message: message,
        type: 'success'
      });
    },
    query() {
      this.invokeList();
    },
    invokeList() {
      var queryUrl = "http://127.0.0.1:8080/parkingLotGroups/queryByParams?name=";
      if(this.groupName.length > 0) {
        queryUrl += this.groupName;
      }

      //axios调用后台get方法
      axios.get(queryUrl)
          .then(response =>{
            //对返回结果进行处理
            console.log("response:" + JSON.stringify(response));
            this.loading = false;
            this.data = response.data;
            if(this.data.code == 200) {
              this.parkingLotGroupList = this.data.data;
            } else {
              this.openErrorAlert(this.data.message);
            }
          }).catch(function(error){
        this.loading = false;
        //异常处理
        console.log(error);
      })
    }
  }
}
</script>


<style scoped>

</style>

2.2、格式化状态实际应用和效果

在这里插入图片描述

<template>
  <div style="margin-top: 15px;">
    <el-row>
      <el-col :span="11">
        <el-input
            placeholder="请输入a"
            v-model="a"
            clearable >
          <template #prepend>a名称</template>
        </el-input>
      </el-col>
      <el-col :span="2"><div class="grid-content ep-bg-purple-light" /></el-col>
      <el-col :span="11">
        <el-input
            placeholder="请输入最少的**"
            v-model.number="minBatteryCapacityPercentage"
            type="number"
            min="1"
            max="100"
            clearable >
          <template #prepend>至少有多少**</template>
        </el-input>
      </el-col>
    </el-row>
    <br>
    <el-row>
      <el-col :span="13"><div class="grid-content ep-bg-purple-light" /></el-col>
      <el-col :span="11">
        <el-button type="primary" style="width: 100%;" @click="query">查询</el-button>
      </el-col>
    </el-row>

    <br>
    <el-table  :data="parkingBarrierList"  stripe style="width: 100%" v-loading="loading">
      <el-table-column   prop="id"  label="设备编号"  min-width="8%"> </el-table-column>
      <el-table-column   prop="imei"  label="设备imei"  min-width="17%"> </el-table-column>
      <el-table-column   prop="batteryCapacityPercentage" label="电池容量%数" min-width="10%" > </el-table-column>
      <el-table-column   prop="vehicleStatus" label="是否有车" min-width="12%" :formatter="vehicleStatusFormatter" > </el-table-column>
      <el-table-column   prop="lockOpenStatus" label="打开状态" min-width="12%" :formatter="lockOpenStatusFormatter"> </el-table-column>
      <el-table-column   prop="lockCloseStatus" label="关闭状态" min-width="12%" :formatter="lockCloseStatusFormatter" > </el-table-column>
      <el-table-column   prop="lockStatus" label="开关状态" min-width="12%" :formatter="lockStatusFormatter"> </el-table-column>
      <el-table-column   prop="crcChecksum" label="CRC验证码" min-width="10%"> </el-table-column>
      <el-table-column   prop="operate" label="操作" min-width="20%">
        <el-row>
          <el-col :span="1"><div class="grid-content ep-bg-purple-light" /></el-col>
          <el-col :span="22">
            <el-button type="primary" style="width: 100%;" @click="query">绑定车位</el-button>
          </el-col>
          <el-col :span="1"><div class="grid-content ep-bg-purple-light" /></el-col>
        </el-row>
      </el-table-column>
    </el-table>
  </div>

</template>

<script>
import axios from "axios";

export default {
  name: "ParkingBarrier",
  data(){
    return{
      title: "ParkingBarrier",
      minBatteryCapacityPercentage: 0,
      a: "",
      loading: false ,
      parkingBarrierList: []
    }
  },
  mounted(){
    this.invokeList();
  },
  methods:{
    vehicleStatusFormatter(row, column , cellValue) {
      return cellValue === 1 ? '有' : '无';
    },
    lockOpenStatusFormatter(row, column , cellValue) {
      return cellValue === 1 ? '正在打开' : '打开完成';
    },
    lockCloseStatusFormatter(row, column , cellValue) {
      return cellValue === 1 ? '正在关闭' : '关闭完成';
    },
    lockStatusFormatter(row, column , cellValue) {
      return cellValue === 1 ? '打开状态' : '关闭状态';
    },
    openErrorAlert(message) {
      this.$message({
        message: message,
        type: 'error'
      });
    },
    openSuccessAlert(message) {
      this.$message({
        message: message,
        type: 'success'
      });
    },
    query() {
      this.invokeList();
    },
    invokeList() {
      var queryUrl = "http://127.0.0.1:8080/deviceCommunications/imei?imei=";
      if(this.imei.length > 0) {
        queryUrl += this.imei;
      }
      if(this.minBatteryCapacityPercentage > 0) {
        queryUrl += "&minBatteryCapacityPercentage=" + this.minBatteryCapacityPercentage;
      }

      //axios调用后台get方法
      axios.get(queryUrl)
          .then(response =>{
            //对返回结果进行处理
            console.log("response:" + JSON.stringify(response));
            this.loading = false;
            this.data = response.data;
            if(this.data.code == 200) {
              this.parkingBarrierList = this.data.data;
            } else {
              this.openErrorAlert(this.data.message);
            }
          }).catch(function(error){
        this.loading = false;
        //异常处理
        console.log(error);
      })
    }
  }
}
</script>


<style scoped>

</style>

资料获取,更多粉丝福利,关注下方公众号获取

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity Xlua热更新技术学习指南

热更新是商业网络游戏必不可少的一项技术&#xff0c;而基于lua的热更新技术又是Unity商业网游项目中的一个主流选择。 部分同学近期表示自己在面试中被面试官提问热更新相关知识&#xff0c;但由于对热更新能力有所缺失&#xff0c;最后遗憾的与心仪工作失之交臂。 由此可见&a…

C++第三弹---C++入门(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 C入门 1、内联函数 1.1、概念 1.2、特性 2、auto关键字(C11) 2.1、类型别名思考 2.2、auto简介 2.3、auto的使用细则 2.3、auto不能推导的场景 …

3.自定义工程目录配置CMakeLists

问题背景 熟悉stm32keil开发的都知道&#xff0c;我们在编写不同的外设时&#xff0c;通常都会单独编写一个app文件夹或者是user文件夹之类的来存放不同外设功能的源文件和头文件。 在前面一节2.构建第一个工程并烧录到ESP32开发板-CSDN博客中&#xff0c;我们是使用了一个乐鑫…

数据管道架构设计一览

数据管道架构设计一览 今天来聊聊数据管道。 数据管道是现代系统中有效管理和处理数据的基本组成部分。 这些管道通常包括 5 个主要阶段&#xff1a; 收集&#xff08;Collect&#xff09;摄取&#xff08;Ingest&#xff09;存储&#xff08;Store&#xff09;计算&#x…

OpenCV(七)——灰度图像的阙值处理以及图像的边界填充

灰度图像的阙值处理 在OpenCV中利用threshold()对灰度图像进行阙值处理&#xff0c;该函数通过将图像中的每个像素值与一个给定的阈值进行比较来工作。如果像素值超过这个阈值&#xff0c;那么像素值将被设置成指定的最大值&#xff1b;如果没有超过阈值&#xff0c;则根据不同…

【干货】【常用电子元器件介绍】【晶体三极管】(二)--晶体三极管的应用

声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。 一、 三极管电路的链接形式 三极管(transistor)是近代电子电路的核心组件。其 主要功能是做电流的开关,就如同控制水管中水流量的阀 (valve)。三极管工作情况模拟示意图如下图所示。   …

企业网站为什么要用OV级别的SSL证书?

部署OV SSL证书的网站&#xff0c;可在SSL证书详情中查看网站所属企业名称&#xff0c;可以让用户有效区分出钓鱼网站&#xff0c;鉴别网站的真实身份。企业网站为啥要选OV&#xff08;组织验证&#xff09;SSL证书呢&#xff1f;主要有这么几个原因&#xff1a; 1.安全等级更高…

uiCA模拟器和bHive benchmark的使用

概念 uiCA 基本块吞吐量预测器 github地址&#xff1a;GitHub - andreas-abel/uiCA: uops.info Code Analyzer uiCA是一个模拟器&#xff0c;可以预测基本块在最新的英特尔微体系结构上的吞吐量。除此之外&#xff0c;它还提供了代码执行的洞察。 uiCA基于来自uops.info的数…

SpringCloud Hystrix 断路器

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第五篇&#xff0c;即介绍 Hystrix 断路器。 二、概述 2.1 分布式系统面临的问题 复杂分布式体系结构中…

深入探究Java中的TransferQueue:机制、特性与应用场景

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! TransferQueue是Java并发包中的一个强大工具&#xff0c;专为需要精确的数据传递场景而设计。它实现了BlockingQueue接口&#xf…

Midjourney绘图欣赏系列(十)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子&#xff0c;它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同&#xff0c;Midjourney 是自筹资金且闭源的&#xff0c;因此确切了解其幕后内容尚不…

快速构建Vue2/Vue3项目

1.创建一个空文件夹 我创建了一个vue的空文件夹 2.使用vscode打开 3.终端输入npm init -y npm init -y 含义是项目初始化 运行后会出现一个文件&#xff1a;package.json 在运行第四步前&#xff0c;我的项目出现的问题&#xff01;&#xff01;&#xff01; 就是我的文件…

Go——运算符,变量和常量,基本类型

一.运算符 Go语言内置的运算符有&#xff1a; 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 1.1 算术运算符 注意&#xff1a;(自增)和--(自减)在go语言中是单独的语句&#xff0c;并不是运算符。 1.2 关系运算符 1.3 逻辑运算符 1.4 位运算符 位运算符对整数在内存…

【每日八股】Java基础经典面试题2

前言&#xff1a;哈喽大家好&#xff0c;我是黑洞晓威&#xff0c;25届毕业生&#xff0c;正在为即将到来的秋招做准备。本篇将记录学习过程中经常出现的知识点以及自己学习薄弱的地方进行总结&#x1f970;。 本篇文章记录的Java基础面试题&#xff0c;适合在学Java基础的小白…

给多篇文章注音 只要拼音不要汉字 怎么办?快看过来 小编帮你解决

在日常办公和学习中&#xff0c;我们有时需要对Word文档中的文字进行拼音标注&#xff0c;特别是当我们需要教授儿童识字或者制作一些特殊的文档时。然而&#xff0c;很多时候&#xff0c;我们可能只需要拼音而不需要汉字本身。那么&#xff0c;如何在Word中给文字注音&#xf…

【你也能从零基础学会网站开发】Web建站之javascript入门篇 认识Document文档对象

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 Document对象 …

Rust异步编程 Async Await 入门

Rust Async Await 入门 在本文中&#xff0c;我们将仔细研究 Rust 中的异步编程。到目前为止&#xff0c;我对 Rust 异步的体验主要是从 Stack Overflow 复制代码。本文旨在帮助您了解什么是异步代码以及如何有效地使用它。 什么是异步代码&#xff1f; 要了解什么是异步代码…

openGauss使用BenchmarkSQL进行性能测试(上)

一、前言 本文提供openGauss使用BenchmarkSQL进行性能测试的方法和测试数据报告。 BenchmarkSQL&#xff0c;一个JDBC基准测试工具&#xff0c;内嵌了TPC-C测试脚本&#xff0c;支持很多数据库&#xff0c;如PostgreSQL、Oracle和Mysql等。 TPC-C是专门针对联机交易处理系统…

金融知识分享系列之:MACD指标精讲

金融知识分享系列之&#xff1a;MACD指标精讲 一、MACD指标二、指标原理三、MACD指标参考用法四、MACD计算步骤五、MACD分析要素六、根据快线DIF位置判断趋势七、金叉死叉作为多空信号八、快线位置交叉信号九、指标背离判断行情反转十、差离值的正负十一、差离值的变化十二、指…

K 近邻算法

为什么学习KNN算法 KNN是监督学习分类算法&#xff0c;主要解决现实生活中分类问题。 &#xff08;1&#xff09;首先准备数据&#xff0c;可以是视频、音频、文本、图片等等 &#xff08;2&#xff09;抽取所需要的一些列特征&#xff0c;形成特征向量 &#xff08;3&…