第一次上传
This commit is contained in:
182
src/filters/index.js
Normal file
182
src/filters/index.js
Normal file
@@ -0,0 +1,182 @@
|
||||
// import parseTime, formatTime and set to filter
|
||||
export { parseTime, formatTime, parseDate } from '@/utils'
|
||||
|
||||
export function numSplit(val) {
|
||||
if (!val) {
|
||||
return 0
|
||||
}
|
||||
const fix = 2
|
||||
val = val.toFixed(fix) // 保留小数2位
|
||||
val = '' + val // 转换成字符串
|
||||
var int = val.slice(0, fix * -1 - 1) // 拿到整数
|
||||
var ext = val.slice(fix * -1 - 1) // 获取到小数
|
||||
// 每个三位价格逗号
|
||||
int = int.split('').reverse().join('') // 翻转整数
|
||||
var temp = '' // 临时变量
|
||||
for (var i = 0; i < int.length; i++) {
|
||||
temp += int[i]
|
||||
if ((i + 1) % 3 === 0 && i !== int.length - 1) {
|
||||
temp += ',' // 每隔三个数字拼接一个逗号
|
||||
}
|
||||
}
|
||||
temp = temp.split('').reverse().join('') // 加完逗号之后翻转
|
||||
if (ext !== '.00') {
|
||||
temp = temp + ext // 整数小数拼接
|
||||
}
|
||||
return temp // 返回
|
||||
}
|
||||
/**
|
||||
* Show plural label if time is plural number
|
||||
* @param {number} time
|
||||
* @param {string} label
|
||||
* @return {string}
|
||||
*/
|
||||
function pluralize(time, label) {
|
||||
if (time === 1) {
|
||||
return time + label
|
||||
}
|
||||
return time + label + 's'
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {number} time
|
||||
*/
|
||||
export function timeAgo(time) {
|
||||
const between = Date.now() / 1000 - Number(time)
|
||||
if (between < 3600) {
|
||||
return pluralize(~~(between / 60), ' 分钟')
|
||||
} else if (between < 86400) {
|
||||
return pluralize(~~(between / 3600), ' 小时')
|
||||
} else {
|
||||
return pluralize(~~(between / 86400), ' 天')
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Number formatting
|
||||
* like 10000 => 10k
|
||||
* @param {number} num
|
||||
* @param {number} digits
|
||||
*/
|
||||
export function numberFormatter(num, digits) {
|
||||
const si = [
|
||||
{ value: 1E18, symbol: 'E' },
|
||||
{ value: 1E15, symbol: 'P' },
|
||||
{ value: 1E12, symbol: 'T' },
|
||||
{ value: 1E9, symbol: 'G' },
|
||||
{ value: 1E6, symbol: 'M' },
|
||||
{ value: 1E3, symbol: 'k' }
|
||||
]
|
||||
for (let i = 0; i < si.length; i++) {
|
||||
if (num >= si[i].value) {
|
||||
return (num / si[i].value + 0.1).toFixed(digits).replace(/\.0+$|(\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol
|
||||
}
|
||||
}
|
||||
return num.toString()
|
||||
}
|
||||
|
||||
/**
|
||||
* 10000 => "10,000"
|
||||
* @param {number} num
|
||||
*/
|
||||
export function toThousandFilter(num) {
|
||||
return (+num || 0).toString().replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
|
||||
}
|
||||
|
||||
/**
|
||||
* 首字母转大写
|
||||
* @param {String} string
|
||||
*/
|
||||
export function uppercaseFirst(string) {
|
||||
return string.charAt(0).toUpperCase() + string.slice(1)
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化经纬度
|
||||
*/
|
||||
export function locationNumber(lo) {
|
||||
if (lo === null || lo === undefined) {
|
||||
return '无'
|
||||
}
|
||||
return lo
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理空值
|
||||
* @param {String} str
|
||||
*/
|
||||
export function handleNull(str) {
|
||||
if (!str) {
|
||||
return ''
|
||||
}
|
||||
return str
|
||||
}
|
||||
/**
|
||||
* 暂无处理空值
|
||||
* @param {String} str
|
||||
*/
|
||||
export function handleNullNo(str) {
|
||||
if (!str) {
|
||||
return '暂无'
|
||||
}
|
||||
return str
|
||||
}
|
||||
|
||||
export function filterFixed0(num) {
|
||||
if (!num) {
|
||||
return 0
|
||||
}
|
||||
return parseFloat(num).toFixed(0)
|
||||
}
|
||||
|
||||
export function filterFixed1(num) {
|
||||
if (!num) {
|
||||
return 0
|
||||
}
|
||||
return parseFloat(num).toFixed(1)
|
||||
}
|
||||
|
||||
export function filterFixed2(num) {
|
||||
if (!num) {
|
||||
return 0
|
||||
}
|
||||
return parseFloat(num).toFixed(2)
|
||||
}
|
||||
|
||||
export function filterFixed3(num) {
|
||||
if (!num) {
|
||||
return 0
|
||||
}
|
||||
return parseFloat(num).toFixed(3)
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算两个时间戳相差天时分秒
|
||||
* @param {开始时间} startTime
|
||||
* @param {结束时间} endTime
|
||||
*/
|
||||
export function diffTimeStr(startTime, endTime) {
|
||||
// 如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
|
||||
var dateDiff = endTime - startTime// 时间差的毫秒数
|
||||
var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000))// 计算出相差天数
|
||||
var leave1 = dateDiff % (24 * 3600 * 1000) // 计算天数后剩余的毫秒数
|
||||
var hours = Math.floor(leave1 / (3600 * 1000))// 计算出小时数
|
||||
// 计算相差分钟数
|
||||
var leave2 = leave1 % (3600 * 1000) // 计算小时数后剩余的毫秒数
|
||||
var minutes = Math.floor(leave2 / (60 * 1000))// 计算相差分钟数
|
||||
// 计算相差秒数
|
||||
var leave3 = leave2 % (60 * 1000) // 计算分钟数后剩余的毫秒数
|
||||
var seconds = Math.round(leave3 / 1000)
|
||||
var timeFn = ''
|
||||
if (dayDiff > 0) {
|
||||
timeFn += dayDiff + ' 天 '
|
||||
}
|
||||
if (hours > 0) {
|
||||
timeFn += hours + ' 小时 '
|
||||
}
|
||||
if (minutes > 0) {
|
||||
timeFn += minutes + ' 分钟 '
|
||||
}
|
||||
timeFn += seconds + ' 秒'
|
||||
return timeFn
|
||||
}
|
||||
Reference in New Issue
Block a user