vue3 el-table 去除小数 并使用千分号

在 Vue 3 中使用 Element Plus 的 <el-table> 组件时,如果你想在表格的某个列中去除小数并使用千分号来格式化数字,你可以通过以下几种方式实现:

方法 1:使用自定义列模板

你可以通过定义一个自定义的列模板来格式化数字。这种方法允许你完全控制如何显示数据。

复制代码
<template>
  <el-table :data="tableData" style="width: 100%">
    <el-table-column prop="date" label="日期" width="180" />
    <el-table-column label="金额">
      <template #default="scope">
        {{ formatNumber(scope.row.amount) }}
      </template>
    </el-table-column>
  </el-table>
</template>
 
<script setup>
import { ref } from 'vue';
 
const tableData = ref([
  { date: '2023-04-01', amount: 12345.67 },
  { date: '2023-04-02', amount: 98765.43 },
  // 更多数据...
]);
 
function formatNumber(value) {
  if (!value) return '';
  const num = Math.round(value); // 去除小数
  return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); // 添加千分号
}
</script>

方法 2:使用计算属性或方法格式化数据

如果你希望在数据传递给表格之前就进行格式化,你可以在数据源对象上添加一个计算属性或方法,然后在表格中使用这个属性或方法。

复制代码
<template>
  <el-table :data="formattedTableData" style="width: 100%">
    <el-table-column prop="date" label="日期" width="180" />
    <el-table-column prop="formattedAmount" label="金额" />
  </el-table>
</template>
 
<script setup>
import { computed, ref } from 'vue';
 
const tableData = ref([
  { date: '2023-04-01', amount: 12345.67 },
  { date: '2023-04-02', amount: 98765.43 },
  // 更多数据...
]);
 
const formattedTableData = computed(() => {
  return tableData.value.map(item => ({
    ...item,
    formattedAmount: formatNumber(item.amount)
  }));
});
 
function formatNumber(value) {
  if (!value) return '';
  const num = Math.round(value); // 去除小数
  return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); // 添加千分号
}
</script>

方法 3:使用过滤器(如果你在使用 Vue 2 或 Vue 3 的 Composition API 但想保持类似 Vue 2 的语法风格)

虽然 Vue 3 不再支持全局过滤器,但你可以通过创建一个函数并直接在模板中调用它来模拟过滤器的行为。上面的方法 1 和方法 2 已经展示了如何在 Vue 3 中实现这一点。如果你确实想保持类似 Vue 2 的语法风格,可以封装一个函数并在模板中使用它。但通常推荐使用计算属性或方法,因为它们在 Vue 3 中更为自然和强大。

以上方法都可以帮助你在 Element Plus 的 <el-table> 中去除小数并使用千分号格式化数字。选择最适合你项目需求的方法。

相关推荐
一颗不甘坠落的流星21 分钟前
【HTML】iframe 标签 allow 权限汇总(例如添加复制粘贴权限)
前端·javascript·html
forestsea27 分钟前
现代 JavaScript 加密技术详解:Web Crypto API 与常见算法实践
前端·javascript·算法
爱泡脚的鸡腿2 小时前
uni-app D6 实战(小兔鲜)
前端·vue.js
骑自行车的码农2 小时前
🍂 React DOM树的构建原理和算法
javascript·算法·react.js
北极糊的狐2 小时前
Vue3 中父子组件传参是组件通信的核心场景,需遵循「父传子靠 Props,子传父靠自定义事件」的原则,以下是资料总结
前端·javascript·vue.js
看到我请叫我铁锤2 小时前
vue3中THINGJS初始化步骤
前端·javascript·vue.js·3d
q***25213 小时前
SpringMVC 请求参数接收
前端·javascript·算法
谢尔登3 小时前
defineProperty如何弥补数组响应式不足的缺陷
前端·javascript·vue.js
涔溪4 小时前
实现将 Vue2 子应用通过无界(Wujie)微前端框架接入到 Vue3 主应用中(即 Vue3 主应用集成 Vue2 子应用)
vue.js·微前端·wujie
T***u3335 小时前
前端框架在性能优化中的实践
javascript·vue.js·前端框架