import moment from 'moment'; function fixedZero(val) { return val * 1 < 10 ? `0${val}` : val; } const filters = { // 格式化时间展示多长时间之前 formatTime(time) { let formatTime const date = new Date(time) const dateObj = { year: date.getFullYear(), month: date.getMonth(), date: date.getDate(), hours: date.getHours(), minutes: date.getMinutes() } const newTime = new Date() const diff = newTime.getTime() - time if (newTime.getDate() === dateObj.date && diff < 60000) { formatTime = '刚刚' } else if ( newTime.getDate() === dateObj.date && diff > 60000 && diff < 3600000 ) { formatTime = `${Math.floor(diff / 60000)}分钟前` } else if ( newTime.getDate() === dateObj.date && diff > 3600000 && diff < 86400000 ) { formatTime = `${addZero(dateObj.hours)}:${addZero(dateObj.minutes)}` } else if (newTime.getDate() !== dateObj.date && diff < 86400000) { formatTime = `昨天${addZero(dateObj.hours)}:${addZero(dateObj.minutes)}` } else if (newTime.getFullYear() === dateObj.year) { formatTime = `${dateObj.month + 1}月${dateObj.date}日` } else { formatTime = `${dateObj.year}年${dateObj.month + 1}月${dateObj.date}日` } return formatTime }, //时间日期格式化 format(time) { const hours = 60 * 60 * 1000; const minutes = 60 * 1000; const h = Math.floor(time / hours); const m = Math.floor((time - h * hours) / minutes); const s = Math.floor((time - h * hours - m * minutes) / 1000); return `${fixedZero(h)}:${fixedZero(m)}:${fixedZero(s)}` }, //年月日格式化 getDate(value) { let date = new Date(value) let y = date.getFullYear() let MM = date.getMonth() + 1 MM = MM < 10 ? '0' + MM : MM let d = date.getDate() d = d < 10 ? '0' + d : d return y + '-' + MM + '-' + d }, //年月日时分秒格式化 formatDate: function (value) { let date = new Date(value) let y = date.getFullYear() let MM = date.getMonth() + 1 MM = MM < 10 ? '0' + MM : MM let d = date.getDate() d = d < 10 ? '0' + d : d let h = date.getHours() h = h < 10 ? '0' + h : h let m = date.getMinutes() m = m < 10 ? '0' + m : m let s = date.getSeconds() s = s < 10 ? '0' + s : s return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s }, //bidType类型 bidType(sta) { var data = { null: '-', 1: 'CPM', 2: 'CPC', 6: 'OCPC', 10: 'OCPM', } return data[sta] }, //ocpxActionType类型 ocpxActionType(sta) { var data = { null: '-', 0: '封面点击', 2: '行为数', 10: '曝光', 11: '点击', 31: '下载完成', 53: '提交线索', 180: '激活', 190: '付费', 191: '首日ROI', 348: '有效线索', 383: '授信', 384: '完件', 394: '订单提交', } return data[sta] }, //角色类型 roleCode(value) { var state = { clip: '剪辑', shot: '拍摄', plan: '策划', plane: '平面', admin: '管理员', operator: '运营专员', kuaishouOperationManager: '快手运营经理', designTeamLeader: '设计组长', planeLeader: '平面组长', touTiaoOperationManager: '头条运营经理', operationAssistant: '运营助理', } if (value) { return state[value] } else { return '暂无' } }, //保留两位小数并且变成货币格式 decimalsHandle(val) { if (val && typeof val != 'string') { if (val >= 0) { val = parseFloat(val).toFixed(2); let numberStr = val.toString() let str = numberStr.split('.') let str0 = str[0].split('').reverse(); for (let i = 0; i < str0.length; i++) { if ((i + 1) % 4 === 0) { str0.splice(i, 0, ',') } } str0.reverse() let handleResult = '' for (let j = 0; j < str0.length; j++) { handleResult += str0[j] } return handleResult + '.' + str[1] } else { val = parseFloat(val).toFixed(2); let numberStr = val.toString() let str = numberStr.split('.') let str0 = str[0].substr(1).split('').reverse(); for (let i = 0; i < str0.length; i++) { if ((i + 1) % 4 === 0) { str0.splice(i, 0, ',') } } str0.reverse() let handleResult = '' for (let j = 0; j < str0.length; j++) { handleResult += str0[j] } return '-' + handleResult + '.' + str[1] } } else if (typeof val == 'string') { return val } else { return 0 } }, //变成货币格式 formatCurrency(val) { if ((val || val == 0) && typeof val != 'string') { let numberStr = val.toString() let str = numberStr.split('').reverse() for (let i = 0; i < str.length; i++) { if ((i + 1) % 4 === 0) { str.splice(i, 0, ',') } } str.reverse() let handleResult = '' for (let j = 0; j < str.length; j++) { handleResult += str[j] } return handleResult } else if (typeof val == 'string') { return val } else { return '-' } }, //加百分比 toPercentage(val) { if (val) { if (typeof val != 'string') { return (val * 100).toFixed(2) + '%' } else { return val } } else if (typeof val == 'string') { return val } else { return 0 } }, //媒体类型 handleMediaType(val) { switch (val) { case 1: return '头条' break case 2: return '快手' break case 3: return '头条内广' break case 4: return '快手内广' break default: break } }, //文件大小 sizeShow(value) { return (value / 1024).toFixed(2) }, //预警计算符号 conditionName(val) { var data = { equal: '=',//'等于', not_equal: '≠',//不等于, greater: '>',//大于 less: '<',//小于 greater_equal: '≥',//大于等于 less_equal: '≤',//小于等于 } return data[val] }, } // 获取当前月的第一天 function getCurrentMonthFirst() { let date = new Date(); date.setDate(1); return date; } // 获取当前月的最后一天 function getCurrentMonthLast() { let date = new Date(); let currentMonth = date.getMonth(); let nextMonth = ++currentMonth; let nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1); let oneDay = 1000 * 60 * 60 * 24; return new Date(nextMonthFirstDay - oneDay); } // 今日日期小于15号时和今日日期大于等于15号时 function getCurrentMonthFifty() { let date = new Date(); if (date.getDate() < 15) { let bb = date.setTime(new Date().getTime() - 3600 * 1000 * 24 * 15); return bb; } else if (date.getDate() >= 15) { let year = date.getFullYear(); let month = date.getMonth(); let myDate = new Date(year, month, 0); let lastDay = year + "-" + month + "-" + myDate.getDate();//上个月的最后一天 return lastDay; } } export default { install: function (Vue) { Object.keys(filters).forEach(key => { Vue.filter(key, filters[key]) }) } }