首页 > 其他分享 >vue 给不同组件数据添加千分位符且保留两位小数

vue 给不同组件数据添加千分位符且保留两位小数

时间:2024-04-19 14:36:31浏览次数:19  
标签:02 03 vue obj 千分 2024 01 位符且 thousandSeparated

方法一:使用filter过滤器的方法给普通元素添加千分位符且保留两位小数

<template>
  <div class="app-container">
    {{ obj | modifyObject }}
    {{ obj1 | modifyObject }}
  </div>
</template>
 
<script>

export default {
  components: {},
  data () {
    return {
      obj: '30000.0000',
      obj1: '哈哈哈'
    }
  },
  filters: {
    modifyObject (obj) {
      let numStr = obj.indexOf('.') > 0 ? (obj * 1).toFixed(2) : obj;
      let thousandSeparated = numStr.replace(/\d(?=(\d{3})+\.)/g, '$&,');
      return thousandSeparated;
    },
  },
  mounted () {

  },
  methods: {


  }
}
</script>

方法二:给table某一个数据通过Vue数据格式化,:formatter的使用

<template>
  <div class="app-container">
    <el-table :data="tableData" style="width: 100%">
      <el-table-column prop="date" label="日期" width="180">
      </el-table-column>
      <el-table-column prop="name" label="姓名" width="180">
      </el-table-column>
      <el-table-column prop="address" :formatter="rbstateFormat" label="地址">
      </el-table-column>
    </el-table>
  </div>
</template>
 
<script>

export default {
  components: {},
  data () {
    return {
      tableData: [{
        date: '2016-05-02',
        name: '王小虎',
        address: '300000.000'
      }, {
        date: '2016-05-04',
        name: '王小虎',
        address: '上海市普陀区金沙江路 1517 弄'
      }, {
        date: '2016-05-01',
        name: '王小虎',
        address: '上海市普陀区金沙江路 1519 弄'
      }, {
        date: '2016-05-03',
        name: '王小虎',
        address: '上海市普陀区金沙江路 1516 弄'
      }]
    }
  },
  mounted () {

  },
  methods: {
    // 金额千分位
    rbstateFormat (row, column, cellValue) {
      let numStr = cellValue.indexOf('.') > 0 ? (cellValue * 1).toFixed(2) : cellValue;
      let thousandSeparated = numStr.replace(/\d(?=(\d{3})+\.)/g, '$&,');
      return thousandSeparated;
    },
  }
}
</script>

方法三:动态表格进行判断返回数据,对数值型数据添加千分位符且保留两位小数

<template>
  <div class="app-container">
    <el-table :data="tableData.filter(data => !search || data.name.toLowerCase().includes(search.toLowerCase()))" style="width: 100%">
      <el-table-column label="2024-01" prop="2024-01">
      </el-table-column>
      <el-table-column label="2024-02" prop="2024-02">
      </el-table-column>
      <el-table-column align="right">
        <template slot="header" slot-scope="scope">
          <el-input v-model="search" size="mini" placeholder="输入关键字搜索" />
        </template>
        <template slot-scope="scope">
          <el-button size="mini" @click="handleEdit(scope.$index, scope.row)">Edit</el-button>
          <el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)">Delete</el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>
 
<script>

export default {
  components: {},
  data () {
    return {
      tableData: [
        {
          "2024-01": "0.61",
          "2024-02": "0.61",
          "2024-03": "0.63",
          "主要经营指标": "供热单位燃料成本"
        },
        {
          "2024-01": "11743.453414",
          "2024-02": "21425.960610",
          "2024-03": "27992.785848",
          "主要经营指标": "售热量"
        },
        {
          "2024-01": "6085.911055",
          "2024-02": "10884.267370",
          "2024-03": "16194.837143",
          "主要经营指标": "发电量"
        },
        {
          "2024-01": "19.23",
          "2024-02": "19.26",
          "2024-03": "19.09",
          "主要经营指标": "煤折标煤价"
        },
        {
          "2024-01": "35.46",
          "2024-02": "40.32",
          "2024-03": "39.22",
          "主要经营指标": "售电单位价格"
        },
        {
          "2024-01": "4.26",
          "2024-02": "4.24",
          "2024-03": "4.34",
          "主要经营指标": "发电单位燃烧成本"
        },
        {
          "2024-01": "5.65",
          "2024-02": "6.00",
          "2024-03": "6.05",
          "主要经营指标": "全口径度电边际贡献"
        },
        {
          "2024-01": "",
          "2024-02": "",
          "2024-03": "",
          "主要经营指标": "风光电装机规模"
        }
      ],
      search: ''
    }
  },
  mounted () {
    console.log(this.tableData, '哈');
    this.getDataList()
  },
  methods: {
    getDataList () {
      this.tableData.forEach(item => {
        this.modifyObject(item)
      });
    },

    modifyObject (obj) {
      for (let key in obj) {
        if (obj.hasOwnProperty(key)) { // 确保是对象自有属性,不是原型链上的属性
          // 使用正则表达式添加千分位符和保留两位小数
          let numStr = obj[key].indexOf('.') > 0 ? (obj[key] * 1).toFixed(2) : obj[key];
          let thousandSeparated = numStr.replace(/\d(?=(\d{3})+\.)/g, '$&,');
          // console.log(thousandSeparated,'thousandSeparated');
          obj[key] = thousandSeparated; // 修改属性的值
        }
      }
      return obj; // 返回修改后的对象
    },
    getVal (val) {
      console.log(val, '---');
    }
  }
}
</script>

 

标签:02,03,vue,obj,千分,2024,01,位符且,thousandSeparated
From: https://www.cnblogs.com/fkcqwq/p/18145811

相关文章

  • vue+elemtUI获取单行的id
    问题情境: 当对某一行数据做删除或修改操作时,我们往往需要获取该行数据的实体,例如我的表单数据为数据库中brand表的展示,所以我需要得到的是通过点击修改或删除能得到brand.id,从而在method中使用id获取后端的具体brand对象解决方法<body>内这样书写:先在table-column中加入v-s......
  • Springboot vue pdf/图片 加水印下载
    1:引入包<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.27</version></dependency>2前端代码:downloadFile1(fileUrl,filename){if(filename==null||fi......
  • vue引入字体icon
    这里我用的是阿里图标库1.2.3.4.在vue的assets文件中增加一个font文件把解压后的文件复制进去,并在mian.js中引入iconfont.css5.1.使用,复制以下代码在页面中使用<h1>欢迎<iclass="iconfont">&#xe67c;</i></h1>5.1.2使用,复制一下代码在页面中使用<h1>欢迎<icla......
  • Vue的class类面向对象
    一.准备工作JavaScript语言中,生成实例对象的传统方法是通过构造函数functionAnimal(name,age){this.name=name;this.age=age;}Animal.prototype.showName=function(){console.log(this.name);......
  • 6个高级Vue3知识技巧
    Vue3是一个非常流行的前端框架,广泛应用于大型互联网企业和个人项目。虽然我们已经熟悉了一些常见的Vue3知识,但还有一些不太常见但实用性很强的点可以帮助我们进一步优化和提升Vue3应用的性能和开发效率。本文将介绍一些不太常见的Vue3知识点。01、TeleportTeleport是V......
  • VuePress搭建文档网站
    VuePress官方文档:https://v2.vuepress.vuejs.org/zh/guide/getting-started.html以下是官方文档复制过来的步骤,加上了我的一些经验注释。1、依赖环境Node.jsv18.16.0+(我试了v14是运行不了的,必须这个版本及以上,建议安装nvm,方便切换node版本)包管理器,如pnpm、yarn、npm等(我安......
  • 千分位分隔函数
    点击查看代码添加千分位functionaddThousandSeparator(num,separator=","){returnnum.toString().replace(/\B(?=(\d{3})+(?!\d))/g,separator);}num.toString():将输入的数字num转换为字符串,以便后续处理。.replace(/\B(?=(\d{3})+(?!\d))/g,separator......
  • vue3 获取遍历的子组件
    <template><div><!--使用v-for遍历数据,并为每个子组件设置一个ref--><ChildComponentv-for="(item,index)initems":key="index":ref="el=>setChildRef(el,index)"/></div>......
  • Vue3 + vite 项目自定义一个svg-icon组件
    1.安装vite-plugin-svg-icons插件npmivite-plugin-svg-icons-D2.vite.config.ts中配置importpathfrom"path";import{createSvgIconsPlugin}from"vite-plugin-svg-icons";exportdefaultdefineConfig({plugins:[......createS......
  • vue3+elementplus+axios+router的入门项目总结
    一、使用vite方式创建项目:1、创建空文件夹,用vscode打开空文件夹,终端上运行如下命令$npminitvite-app[项目名]:初始化项目$cd[项目名]:进入项目$npminstall:安装项目依赖$npmrundev:启动项目2、启动项目后会出现访问地址: 3、进入访问地址: 二、引入elementpuls......