<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
}