import * as XLSX from 'xlsx/xlsx.mjs'
|
import dayjs from 'dayjs'
|
|
export function useCommonFunction() {
|
/**
|
* description:判断起始时间跨度是否超过1个月
|
* @param: 开始时间,结束时间
|
* @createTime:2023-08-18
|
* @returns:超过一个月返回true,不超过一个月则返回false
|
*/
|
|
function isExceedOneMonth(dateStr1, dateStr2) {
|
// 超过一个月,返回True,否则返回False
|
// 将日期字符串转为日期对象
|
const date1 = new Date(dateStr1)
|
const date2 = new Date(dateStr2)
|
|
// 获取两个日期的年、月、日
|
const year1 = date1.getFullYear()
|
const month1 = date1.getMonth()
|
const day1 = date1.getDate()
|
|
const year2 = date2.getFullYear()
|
const month2 = date2.getMonth()
|
const day2 = date2.getDate()
|
|
// 判断两个日期是否相差一个月
|
if (year1 === year2) {
|
// 年份相等,比较月份差值
|
if (Math.abs(month1 - month2) === 1) {
|
// 月份差值为1,还需要判断具体日期
|
if ((month1 < month2 && day1 < day2) || (month1 > month2 && day1 > day2)) {
|
return true
|
}
|
}
|
} else if (Math.abs(year1 - year2) === 1) {
|
// 年份差值为1,比较月份和日期
|
if (
|
(year1 < year2 && month1 === 11 && month2 === 0 && day1 < day2) ||
|
(year1 > year2 && month1 === 0 && month2 === 11 && day1 > day2)
|
) {
|
return true
|
}
|
}
|
|
// 默认返回false,表示两个日期字符串不相差一个月
|
return false
|
}
|
|
/**
|
* 百分号比较大小
|
* @param: a是否大于b
|
* @returns:大于,则返回true。否则返回false
|
*/
|
function cmpp(a, b) {
|
return Number(a.replace('%', '')) >= Number(b.replace('%', ''))
|
}
|
|
/**
|
*导出为excel
|
* @param: 表格数据,待导出的表格列,excel列,excel文件名
|
* @returns
|
*/
|
function exportToExcel(exportData, tableColumns, excelColumnsName, excelName = 'data.xlsx') {
|
const itemsFormatted = exportData.map((item) => {
|
const newItem = {}
|
tableColumns.forEach((col) => {
|
newItem[col] = item[col]
|
})
|
return newItem
|
})
|
// 创建xlsx对象
|
const xls = XLSX.utils.json_to_sheet(itemsFormatted)
|
|
// 编辑表头行 修改表头
|
excelColumnsName.forEach((item) => {
|
xls[item[0]].v = item[1]
|
})
|
// 创建workbook,并把sheet添加进去
|
const wb = XLSX.utils.book_new()
|
XLSX.utils.book_append_sheet(wb, xls, 'Sheet1')
|
// 将workbook转为二进制xlsx文件并下载
|
XLSX.writeFile(wb, excelName)
|
}
|
|
/**
|
* description:返回时间数组,间隔15分钟。
|
* @param: 异常的开始,异常结束时间
|
* @createTime:2023-08-17
|
* @returns:比如12:00:00-13:00:00 所以返回的数组元素是 12:00:00 ,12:15:00,12:30:00,12:45:00,13:00:00
|
*/
|
function descFiftyTime(begin, end) {
|
let time = []
|
if (begin == end) {
|
time.push(begin)
|
return time
|
}
|
time.push(begin)
|
let temp = dayjs(begin).add(15, 'minute').format('YYYY-MM-DD HH:mm:ss')
|
while (temp != end) {
|
time.push(temp)
|
temp = dayjs(temp).add(15, 'minute').format('YYYY-MM-DD HH:mm:ss')
|
}
|
// 加上异常的结束时间
|
time.push(temp)
|
return time
|
}
|
|
/**
|
* 格式化为百分号
|
* @param {*} v
|
* @returns
|
*/
|
function percentFormatter(v) {
|
return Math.round(v * 100, 2) + '%'
|
}
|
|
return { isExceedOneMonth, cmpp, exportToExcel, descFiftyTime, percentFormatter }
|
}
|