第一次上传

This commit is contained in:
dt_2916866708
2024-01-11 09:33:24 +08:00
commit b59bab8e90
822 changed files with 105065 additions and 0 deletions

182
src/filters/index.js Normal file
View 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
}