1.写过滤器,在main.js定义过滤器,红色为过滤器颜色

Vue.filter('formatNumber', function(value = '0', currencyType = '') {
    let res;
    if (value.toString().indexOf('.') === -1) {
        res = (value || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') + '.00'
    } else {
        let prev = value.toString().split('.')[0]
        let next = value.toString().split('.')[1] < 10 ? value.toString().split('.')[1] + '0' : value.toString().split('.')[1]
        res = (prev || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') + '.' + next
    }
    return currencyType + res
});

2.在你需要用的地方这样用

<td>{{shop_tatolPrice | formatNumber }}</td>

3.上面是直接写在main.js中,如果你不想写在main.js,想写在一个单独的js,比如:formatNum.js存放在filterjs文件夹,js内容和用法不变,需要在引用的页面引入这个过滤器

,在使用的页面加上一句。

import fliter from '/filterjs/formatNum';

不需要写成formatNum.js,直接写formatNum。

注:另附加一个格式化字符串长度的过滤器

Vue.filter("strFormat",function (value) {
    if(value==undefined || value=='') {
        return '';
    }
    if(value.length > 10) {
        return value.substring(0, 10) + '...';
    }
    return value;
});