121 lines
3.8 KiB
JavaScript
121 lines
3.8 KiB
JavaScript
import Vue from 'vue';
|
||
import Dayjs from '@/libs/day.js';
|
||
import store from '@/store/index.js';
|
||
import richText from '@/common/utils/richText.js';
|
||
// 格式化富文本内容
|
||
Vue.filter('richTextFormat', richText.format);
|
||
// 识别图片路径是否为全路径 若不是则进行拼接
|
||
Vue.filter('assembleImgSrc', src => {
|
||
src = src || ''
|
||
if (src.indexOf('http://') != -1 || src.indexOf('https://') != -1) {
|
||
return src
|
||
}
|
||
if (src.indexOf('/uploads/') != -1 || src.indexOf('/uploads/') != -1) {
|
||
return BASE_URL + src
|
||
} else {
|
||
return IMG_BASE_URL + src
|
||
}
|
||
});
|
||
|
||
// 日期格式转换
|
||
Vue.filter('formatDate', (date, format = 'YYYY-MM-DD HH:mm:ss') => {
|
||
return Dayjs(date).format(format)
|
||
});
|
||
|
||
// 格式化数字
|
||
Vue.filter('formatNumber', (number, tag = 'w') => {
|
||
number = Number(number);
|
||
if (number >= 10000) {
|
||
return (Math.floor(number / 1000) / 10).toFixed(1) + tag;
|
||
} else {
|
||
return number;
|
||
}
|
||
});
|
||
|
||
// 格式化角标数字
|
||
Vue.filter('formatTagNumber', number => {
|
||
if (number >= 100) {
|
||
return "99+";
|
||
} else {
|
||
return number;
|
||
}
|
||
});
|
||
// 过滤商品价格
|
||
Vue.filter('filterGoodsPrice', function (value, isActive) {
|
||
// console.log('filterGoodsPrice',value)
|
||
if (!value) return '';
|
||
let isMember = store.getters.isMember; // 是否是会员
|
||
let isActivity = value.activity_type == undefined || value.activity_type == 0 ? false : true; // 是否是活动
|
||
// 拼团时,是点击单独购买value.isActive == false还是发起拼团value.isActive == true,单独购买就不属于活动了
|
||
if (value.isActive == false) {
|
||
isActivity = false;
|
||
// console.log('是否活动1', value.isActive);
|
||
}
|
||
// 过滤价格时,若是传入第二参数isActive == false,则说明页面显示正常商品价格,就不属于活动了
|
||
if (isActive == false) {
|
||
isActivity = false;
|
||
// console.log('是否活动2', isActivity);
|
||
}
|
||
// console.log('是否会员',isMember);
|
||
// console.log('是否活动',isActivity);
|
||
// let member_activity_price = value.member_activity_price ? value.member_activity_price : value.activity_price; //会员活动价
|
||
let member_activity_price = value.activity_price; //活动不区分会员还是非会员
|
||
let activity_price = value.activity_price; // 活动价
|
||
let member_price = value.member_price ? value.member_price : value.shop_price; // 会员价
|
||
let shop_price = value.shop_price; // 售卖价
|
||
if (isActivity && isMember) {
|
||
// console.log("会员活动价",member_activity_price);
|
||
return member_activity_price;
|
||
} else if (isActivity && !isMember) {
|
||
// console.log("活动价",activity_price);
|
||
return activity_price;
|
||
} else if (!isActivity && isMember) {
|
||
// console.log("会员价",member_price);
|
||
return member_price;
|
||
} else if (!isActivity && !isMember) {
|
||
// console.log("普通价",shop_price);
|
||
return shop_price;
|
||
}
|
||
return '';
|
||
})
|
||
|
||
// 手机号脱敏
|
||
Vue.filter('filterMobile', function (val) {
|
||
if (!val) return "";
|
||
return val.substr(0, 3) + "****" + val.substr(-4);
|
||
})
|
||
/**
|
||
* @description 输出数字价格/小数点
|
||
* @param {String} name 要过滤的字符
|
||
* @param {Number} type 取值类型,1=价格,2=小数点
|
||
* @param {Number} textCount 小数点位数
|
||
* */
|
||
Vue.filter('formatPrice', function (name, type, textCount) {
|
||
let num, smore;
|
||
let data = name
|
||
textCount = textCount || 2
|
||
if (!data || isNaN(data)) {
|
||
num = data
|
||
smore = ''
|
||
} else {
|
||
let arr = Number(data).toFixed(textCount).split('.')
|
||
num = arr[0]
|
||
smore = arr[1]
|
||
}
|
||
if (type == 1) { //输出数字
|
||
return num
|
||
} else { //输出小数点
|
||
return smore
|
||
}
|
||
})
|
||
Vue.filter('frontPrice', function (val) {
|
||
let e = +val
|
||
if (isNaN(e)) return '0'
|
||
return e.toFixed(2).split('.')[0] + '.'
|
||
})
|
||
Vue.filter('laterPrice', function (val) {
|
||
let e = +val
|
||
if (isNaN(e)) return '.00'
|
||
return e.toFixed(2).split('.')[1]
|
||
})
|