vue格式化数字为财务数字金额

时间:2025-04-05 13:28:21
html: <el-input ="" maxlength="14" :show-word-limit="showWordLimitAmount" clearable @=" = (, RestrictedMoney())" @focus="delcommafyFun('amount', )" @blur="inputMoneyFun('amount', )" ></el-input> //在utils下新建并写入方法 export function inputMoney(val) { if (!val) { return val } else { let inputVal = delcommafy(val) let str = ('.') let re = /\d{1,3}(?=(\d{3})+$)/g let n1 = str[0].replace(re, '$&, ') //这里, 加了空格为了显示好看,不需要的可以去除注意位数的限制 return > 1 && str[1] ? (str[1].length > 1 ? `${n1}. ${str[1]}` : `${n1}. ${str[1]}0`) : `${n1}. 00` //这里. 加了空格为了显示好看,不需要的可以去除注意位数的限制 } } //去除千分位中的‘,' export function delcommafy(num) { if (!num) { return num } else { num = () num = (/, /gi, '') num = (/. 00/gi, '')//因为上面inputMoney方法将Number转成String时加多了空格,这里回转时需要去除 let str = ('.') if (str[1]) { if (str[1].charAt(str[1].length - 1) === '0' && str[1].charAt(str[1].length - 2) !== '0') { num = (0, - 1) } } num = (/ /gi, '') return num } } export function plusOrMinus(values) { let newValue if (!/[^0-9.-]/(values)) { newValue = values .replace(/[^\-\d.]/g, '') .replace(/\b(0+){2,}/g, '0') .replace(/\-{2,}/g, '-') .replace(/^\./g, '') .replace(/\.{2,}/g, '.') .replace('.', '$#$') .replace(/\./g, '') .replace('$#$', '.') if (().indexOf('.') > 0 && Number(().split('.')[1].length) > 2) { newValue = parseInt(parseFloat(newValue) * 100) / 100 } if (().split('-').length - 1 > 1) { newValue = parseFloat(newValue) || '' } if (().split('-').length > 1 && ().split('-')[0].length > 0) { newValue = parseFloat(newValue) || '' } if ( ().length > 1 && (().charAt(0) === '0' || (().length > 2 && ().charAt(0) === '-' && ().charAt(1) === '0' && ().charAt(2) !== '.')) && ().indexOf('.') < 1 ) { newValue = parseFloat(newValue) || '' } // // 判断整数位最多为9位 (输入框限制14位了,这里就不需要判断了) // if (().indexOf('.') > 0 && Number(().split('.')[0].length) > 9) { // newValue = ().substring(0, 9) + '.' + ().split('.')[1] // } else if (().indexOf('.') < 0 && Number(().split('.')[0].length) > 9) { // newValue = ().substring(0, 9) // } } else { newValue = (/[^0-9.-]/g, '') } return newValue } //额外引入公共的方法 import { delcommafy, inputMoney, plusOrMinus } from '@/utils/validation' //注意路径 export default { data() { return { showWordLimitAmount: false,//用于显示字符长度的,需求要求显示14位maxlength="14" form: { amount: '', } } }, methods: { // 额外费用校验输入正负数, 保留2位小数 调用公共方法 RestrictedMoney(values) { return plusOrMinus(()) }, delcommafyFun(insStr, val) { if (insStr === 'amount') { = true = delcommafy(val) } }, inputMoneyFun(insStr, val) { let isTrue = false if (val === '-' || (0, 2) === '-.' || val === '-0' || val === '-0.' || val === '-0.0' || val === '-0.00') { isTrue = true } else { isTrue = false } if (insStr === 'amount') { if (isTrue) { = '' } else { = false = inputMoney(val) } } }, //提交表单的时候注意后台如果需要的数据为Number类型的需要将金额转成Number类型传给后台,不需要的是直接传千位符字符的格式的 // if () { // = Number(delcommafy()) // } } }