103 lines
3.2 KiB
JavaScript
103 lines
3.2 KiB
JavaScript
import dayjs from "dayjs";
|
||
|
||
export const kpiMixins = {
|
||
data() {
|
||
return {
|
||
isMobile: false,
|
||
isZd: '',
|
||
current:'2024-10',
|
||
supplierId:'',
|
||
supplierName:'',
|
||
startMonthTime: '',
|
||
startTime: '',
|
||
endTime: '',
|
||
}
|
||
},
|
||
methods: {
|
||
applicateHandle() {
|
||
if (window.parent) {
|
||
const hasListener = window.parent.dispatchEvent(new Event('checkCloseDialog'));
|
||
if (hasListener) {
|
||
const data = {
|
||
action: 'closeDialog',
|
||
message: this.supplierId,
|
||
// 其他需要传递的参数
|
||
};
|
||
window.parent.postMessage(data, '*');
|
||
} else {
|
||
window.history.back();
|
||
}
|
||
}
|
||
},
|
||
toOnlineHours(minutes) {
|
||
let _hours = parseInt(minutes / 60);
|
||
let _minutes = parseInt(minutes % 60);
|
||
return _hours + '时' + _minutes + '分'
|
||
},
|
||
// 初始化获取当月日期
|
||
initDate() {
|
||
const today = dayjs(); // 获取当前日期
|
||
const currentDay = today.date(); // 获取今天是几号(1-31)
|
||
let targetMonth = today; // 默认目标月份是当前月
|
||
if (currentDay === 1) {
|
||
targetMonth = today.subtract(1, 'month'); // 上个月
|
||
}
|
||
this.current = targetMonth.format('YYYY-MM');
|
||
this.startTime = targetMonth.startOf('month').format('YYYY-MM-DD HH:mm:ss');
|
||
let endTime;
|
||
if (targetMonth.isSame(today, 'month')) {
|
||
endTime = today.subtract(1, 'day').endOf('day');
|
||
} else {
|
||
endTime = targetMonth.endOf('month');
|
||
}
|
||
this.endTime = endTime.format('YYYY-MM-DD HH:mm:ss');
|
||
this.startMonthTime=this.getStartTimeFromEndTime(this.endTime)
|
||
},
|
||
//获取近四个月的开始时间
|
||
getStartTimeFromEndTime(endTimeStr) {
|
||
const startTime = dayjs(endTimeStr).subtract(3, 'month').startOf('month');
|
||
return startTime.format('YYYY-MM-DD HH:mm:ss');
|
||
},
|
||
padZero(num) {
|
||
return num < 10 ? `0${num}` : num;
|
||
},
|
||
checkMobile() {
|
||
const userAgent = navigator.userAgent || navigator.vendor || window.opera;
|
||
this.isMobile = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(userAgent);
|
||
},
|
||
// 通用函数,用于处理百分比数据
|
||
processPercentage(value) {
|
||
value *= 100;
|
||
if (value % 1 !== 0) {
|
||
value = value.toFixed(2);
|
||
}
|
||
return value;
|
||
},
|
||
formatPercentage(value) {
|
||
let result = value * 100;
|
||
if (Number.isInteger(result)) {
|
||
return result.toString() + '%';
|
||
} else {
|
||
return result.toFixed(2) + '%';
|
||
}
|
||
},
|
||
// 格式化承接案件量数据
|
||
formatCurrency(value) {
|
||
if (!value) return '';
|
||
let num = parseInt(value);
|
||
return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
||
},
|
||
formatCurrency1(value) {
|
||
if (!value) return ''; // 如果值为空,返回空字符串
|
||
// 如果值已经包含逗号,直接返回原值
|
||
if (value.toString().includes(',')) {
|
||
return value;
|
||
}
|
||
// 否则,添加千分号
|
||
let num = parseInt(value);
|
||
if (isNaN(num)) return ''; // 如果转换失败,返回空字符串
|
||
return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
||
},
|
||
}
|
||
}
|