vue 全局过滤器方法集合(一)

59 阅读1分钟

新建一个文件夹filters

//index.js
//字数超出10个字的后面省略,用…展示代替:
itemDescFilter: function (value) {
      if (!value) {
        return ''
      }

      value = value.toString()
      if (value.length <= 10) {
        return value
      } else {
        return value.substr(0, 10) + ' . . .'
      }
}

//去除空格 type 1-所有空格 2-前后空格 3-前空格 4-后空格
function trim(value, trim) {
 switch (trim) {
 case 1:
 return value.replace(/\s+/g, "");
 case 2:
 return value.replace(/(^\s*)|(\s*$)/g, "");
 case 3:
 return value.replace(/(^\s*)/g, "");
 case 4:
 return value.replace(/(\s*$)/g, "");
 default:
 return value;
 }
}


//任意格式日期处理  
//使用格式:  
// {{ '2018-09-14 01:05' | formaDate(yyyy-MM-dd hh:mm:ss) }}  
// {{ '2018-09-14 01:05' | formaDate(yyyy-MM-dd) }}  
// {{ '2018-09-14 01:05' | formaDate(MM/dd) }} 等  
function formaDate(value, fmt) {  
var date = new Date(value);  
var o = {  
"M+": date.getMonth() + 1, //月份  
"d+": date.getDate(), //日  
"h+": date.getHours(), //小时  
"m+": date.getMinutes(), //分  
"s+": date.getSeconds(), //秒  
"w+": date.getDay(), //星期  
"q+": Math.floor((date.getMonth() + 3) / 3), //季度  
"S": date.getMilliseconds() //毫秒  
};  
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));  
for (var k in o) {  
if(k === 'w+') {  
if(o[k] === 0) {  
fmt = fmt.replace('w', '周日');  
}else if(o[k] === 1) {  
fmt = fmt.replace('w', '周一');  
}else if(o[k] === 2) {  
fmt = fmt.replace('w', '周二');  
}else if(o[k] === 3) {  
fmt = fmt.replace('w', '周三');  
}else if(o[k] === 4) {  
fmt = fmt.replace('w', '周四');  
}else if(o[k] === 5) {  
fmt = fmt.replace('w', '周五');  
}else if(o[k] === 6) {  
fmt = fmt.replace('w', '周六');  
}  
}else if (new RegExp("(" + k + ")").test(fmt)) {  
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));  
}  
}  
return fmt;  
}
//  金额格式化,三位数逗号分隔,小数点后保留两位
function formater(data) {
	  if (!data) return '0.00'
	  // 将数据分割,保留两位小数
	  data= data.toFixed(2)
	  // 获取整数部分
	  const intPart = Math.trunc(data)
	  // 整数部分处理,增加,
	  const intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
	  // 预定义小数部分
	  let floatPart = '.00'
	  // 将数据分割为小数部分和整数部分
	  const newArr = data.toString().split('.')
	  if (newArr.length === 2) { // 有小数部分
	    floatPart = newArr[1].toString() // 取得小数部分
	    return intPartFormat + '.' + floatPart
	  }
	  return intPartFormat + floatPart
}
	
export default {
    itemDescFilter,
    trim,
    formaDate
};

全局引入

//main.js

import filters from 'filters/index.js'

Object.keys(filters).forEach(k=>Vue.filter(k,filters[k]));