|
@@ -0,0 +1,288 @@
|
|
|
+
|
|
|
+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)
|
|
|
+ },
|
|
|
+}
|
|
|
+
|
|
|
+// 获取当前月的第一天
|
|
|
+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])
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|