element表单设置合并且数字金额为大写

 

<el-table
  id="gy-table"
  :data="billDetailsData"
  border
  show-summary
  :summary-method="getSummaries"
  style="width: 100%"
>
  <el-table-column prop="name" label="项目1" min-width="100" />
  <el-table-column prop="lastReading" label="项目2" />
  <el-table-column prop="currentReading" label="项目3" />
  <el-table-column prop="actualUsage" label="项目4" />
  <el-table-column prop="unitPrice" label="项目5" />
  <el-table-column prop="monthMoney" label="项目6" />
  <el-table-column prop="lateFee" label="项目7" />
  <el-table-column prop="realTotalMoney" label="项目8" />
</el-table>
watch: {
  billDetailsData: {
    async handler() {
      await this.$nextTick(() => {
        const tds = document.querySelectorAll('#gy-table .el-table__footer-wrapper tr>td')
        tds[1].innerText = chineseNumber(tds[7].innerText)
        tds[1].colSpan = 3
        tds[1].style.textAlign = 'center'
        tds[2].style.display = 'none'
        tds[3].style.display = 'none'
      })
    }
  }
},
methods: {
  getSummaries(param) {
    const { columns, data } = param
    const sums = []
    columns.forEach((column, index) => {
      if (index === 0) {
        sums[index] = '总价'
        return
      }
      if (index === 4) {
        sums[index] = '小写'
        return
      }
      const values = data.map(item => Number(item[column.property]))
      if (!values.every(value => isNaN(value))) {
        sums[index] = values.reduce((prev, curr) => {
          const value = Number(curr)
          if (!isNaN(value)) {
            return (Number(prev) + Number(curr)).toFixed(2)
          } else {
            return (Number(prev)).toFixed(2)
          }
        }, 0)
        // sums[index] += ' 元';
      } else {
        sums[index] = 'N/A'
      }
    })
   return sums
},

小写转大写chineseNumber方法

// 引入
import { chineseNumber } from '@/utils/utils'

// 封装utils.js
export function chineseNumber(Num) {
  // 判断如果传递进来的不是字符的话转换为字符
  if (typeof Num === 'number') {
    Num = Num.toString()
  }
  Num = Num.replace(/,/g, '') // 替换tomoney()中的“,”
  Num = Num.replace(/ /g, '') // 替换tomoney()中的空格
  Num = Num.replace(/¥/g, '') // 替换掉可能出现的¥字符
  if (isNaN(Num)) { // 验证输入的字符是否为数字
    // alert("请检查小写金额是否正确");
    // return "";
  }
  // 字符处理完毕后开始转换,采用前后两部分分别转换
  var part = String(Num).split('.')
  var newchar = ''
  // 小数点前进行转化
  for (var i = part[0].length - 1; i >= 0; i--) {
    if (part[0].length > 10) {
      // return "";
      // 若数量超过拾亿单位,提示
    }
    var convert = ''
    var perchar = part[0].charAt(i)
    switch (perchar) {
      case '0':
        convert = '零' + convert
        break
      case '1':
        convert = '壹' + convert
        break
      case '2':
        convert = '贰' + convert
        break
      case '3':
        convert = '叁' + convert
        break
      case '4':
        convert = '肆' + convert
        break
      case '5':
        convert = '伍' + convert
        break
      case '6':
        convert = '陆' + convert
        break
      case '7':
        convert = '柒' + convert
        break
      case '8':
        convert = '捌' + convert
        break
      case '9':
        convert = '玖' + convert
        break
    }
    switch (part[0].length - i - 1) {
      case 0:
        convert = convert + '元'
        break
      case 1:
        if (perchar !== 0) convert = convert + '拾'
        break
      case 2:
        if (perchar !== 0) convert = convert + '佰'
        break
      case 3:
        if (perchar !== 0) convert = convert + '仟'
        break
      case 4:
        convert = convert + '万'
        break
      case 5:
        if (perchar !== 0) convert = convert + '拾'
        break
      case 6:
        if (perchar !== 0) convert = convert + '佰'
        break
      case 7:
        if (perchar !== 0) convert = convert + '仟'
        break
      case 8:
        convert = convert + '亿'
        break
      case 9:
        convert = convert + '拾'
        break
    }
    newchar = convert + newchar
  }
  // 小数点之后进行转化
  if (Num.indexOf('.') !== -1) {
    if (part[1].length > 2) {
      // alert("小数点之后只能保留两位,系统将自动截断");
      part[1] = part[1].substr(0, 2)
    }
    for (i = 0; i < part[1].length; i++) {
      convert = ''
      perchar = part[1].charAt(i)
      switch (perchar) {
        case '0':
          convert = '零' + convert
          break
        case '1':
          convert = '壹' + convert
          break
        case '2':
          convert = '贰' + convert
          break
        case '3':
          convert = '叁' + convert
          break
        case '4':
          convert = '肆' + convert
          break
        case '5':
          convert = '伍' + convert
          break
        case '6':
          convert = '陆' + convert
          break
        case '7':
          convert = '柒' + convert
          break
        case '8':
          convert = '捌' + convert
          break
        case '9':
          convert = '玖' + convert
          break
      }
      if (i === 0) convert = convert + '角'
      if (i === 1) convert = convert + '分'
      newchar = newchar + convert
    }
  }
  // 替换所有无用汉字
  while (newchar.search('零零') !== -1) { newchar = newchar.replace('零零', '零') }
  newchar = newchar.replace('零亿', '亿')
  newchar = newchar.replace('亿万', '亿')
  newchar = newchar.replace('零万', '万')
  newchar = newchar.replace('零元', '元')
  newchar = newchar.replace('零角', '')
  newchar = newchar.replace('零分', '')
  if (newchar.charAt(newchar.length - 1) === '元') {
    newchar = newchar + '整'
  }
  return newchar
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值