import globalStore from "../stores/exampleStore" import { resolve } from "path"; //防止多次重复点击 (函数节流) export function throttle(fn, gapTime) { if (gapTime == null || gapTime == undefined) { gapTime = 1500; } let _lastTime = null; return function () { let _nowTime = new Date(); if (_nowTime - _lastTime > gapTime || !_lastTime) { fn.apply(this, arguments); //将this和参数传给原函数 _lastTime = _nowTime; } }; } export function debounce(fn, delay) { let timeout = null; return function () { clearTimeout(timeout); timeout = setTimeout(() => { fn.apply(this, arguments); }, delay); }; } /* 返回时间补0 time 时间 format 格式 yyyyMMdd HH:mm:ss, yyyyMMdd, HH:mm:ss Symbol 分隔符号 */ export function getFormatDate(time, format, symbol) { if (typeof time == 'string') { time = new Date(time.replace(/-/g, '/')) } format = format ? format : "yyyyMMdd HH:mm:ss"; symbol = symbol ? symbol : ""; let year = time.getFullYear(); let month = time.getMonth() < 9 ? "0" + (time.getMonth() + 1) : time.getMonth() + 1; let day = time.getDate() < 10 ? "0" + time.getDate() : time.getDate(); let hour = time.getHours() < 10 ? "0" + time.getHours() : time.getHours(); let minutes = time.getMinutes() < 10 ? "0" + time.getMinutes() : time.getMinutes(); let seconds = time.getSeconds() < 10 ? "0" + time.getSeconds() : time.getSeconds(); if (format === "yyyyMMdd HH:mm:ss") { return symbol ? `${year}${symbol}${month}${symbol}${day} ${hour}:${minutes}:${seconds}` : `${year}/${month}/${day} ${hour}:${minutes}:${seconds}`; } else if (format === "yyyyMMdd") { return symbol ? `${year}${symbol}${month}${symbol}${day}` : `${year}/${month}/${day}`; } else if (format === "HH:mm:ss") { return `${hour}:${minutes}:${seconds}`; } else if (format === "HH:mm") { return `${hour}:${minutes}`; } } // 返回每个月的第一天 export function getCurrentMonthFirst(date) { date.setDate(1); var month = parseInt(date.getMonth() + 1); var day = date.getDate(); if (month < 10) { month = "0" + month; } if (day < 10) { day = "0" + day; } return date.getFullYear() + "-" + month + "-" + day; } // 返回每个月的最后一天 export function getCurrentMonthLast(date) { var currentMonth = date.getMonth(); var nextMonth = ++currentMonth; var nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1); var oneDay = 1000 * 60 * 60 * 24; var lastTime = new Date(nextMonthFirstDay - oneDay); var month = parseInt(lastTime.getMonth() + 1); var day = lastTime.getDate(); if (month < 10) { month = "0" + month; } if (day < 10) { day = "0" + day; } return date.getFullYear() + "-" + month + "-" + day; } //开始时间取整, 取5的倍数 export function getInterTime(time) { let date = time; if (typeof time == "string") { date = new Date(time); } const min = date.getMinutes(); const addMin = Math.floor(min / 5) * 5 + 5; date.setMinutes(addMin); return date; } // 判断是刚刚 60分钟以内 23小时以内 正常时间年月日 export function getCreateShowTime(createdTime) { let creatTime = createdTime; if (typeof createdTime === 'string') { creatTime = createdTime.replace(/\-/g, "/") } let timeResule = '' const year = new Date().getFullYear() const month = new Date().getMonth() + 1 const day = new Date().getDate() const creatYear = new Date(creatTime).getFullYear() const creatMonth = new Date(creatTime).getMonth() + 1 const creatDay = new Date(creatTime).getDate() if (year == creatYear) { if (month == creatMonth) { if (day == creatDay) { const letMin = (new Date().getTime() - new Date(creatTime).getTime()) / 1000 / 60; if (letMin < 2) { timeResule = '刚刚' } else if (letMin < 60) { timeResule = letMin.toFixed(0) + '分钟前' } else { timeResule = (letMin / 60).toFixed(0) + '小时前' } } else { timeResule = day - creatDay + '天前' } } else { const leftDay = (new Date().getTime() - new Date(creatTime).getTime()) / 1000 / 60 / 60 / 24; if (leftDay < 28) { if (leftDay < 1) { timeResule = (leftDay * 24).toFixed(0) + '小时前' } else { timeResule = leftDay.toFixed(0) + '天前' } } else { timeResule = `${creatTime.substring(5, 7)}月${creatTime.substring(8, 10)}日 ${creatTime.substring(11, 16)}` } } } else { timeResule = `${creatTime.substring(0, 4)}年${creatTime.substring(5, 7)}月${creatTime.substring(8, 10)}日 ${creatTime.substring(11, 16)}` } return timeResule } export function padZero(val) { return ("00" + val).slice(-2); } /* 获取随机数 min = 0 区间范围 默认0 max = 100 区间范围 默认100 [min, max) */ export function getRndInteger(min = 0, max = 100) { return Math.floor(Math.random() * (max - min)) + min; } /* 展示时间 startTime 开始时间 endTime 结束时间 */ export function getShowTime(startTime, endTime) { const weekList = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] const weekIndex = new Date(startTime).getDay() let isAcrossDay = false if (startTime.substring(0, 10) !== endTime.substring(0, 10)) { isAcrossDay = true } if (isAcrossDay) { return `${startTime.substring(5, 7)}月${startTime.substring(8, 10)}日 ${startTime.substring(11, 16)}-${endTime.substring(5, 7)}月${endTime.substring(8, 10)}日 ${endTime.substring(11, 16)}` } return `${startTime.substring(5, 7)}月${startTime.substring(8, 10)}日 ${weekList[weekIndex]} ${startTime.substring(11, 16)}-${endTime.substring(11, 16)}` } /* 获取两年后的今天 */ export function getTwoYearToday(startTime) { let date = new Date(startTime) date.setYear(date.getFullYear() + 2) let year = date.getFullYear(); let month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1; let day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() return year + '-' + month + '-' + day } // 处理重复模型 export function dealRepeatModal(item) { const repeatWeek = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'] // 不重复 if (item.repeatable === 0) { return { repeatable: item.repeatable, recurrenceModel: item.recurrenceModel } } const initialTime = globalStore.data.startTime.replace(/\//g, "-").substring(0, 10) const terminateTime = getTwoYearToday(globalStore.data.startTime) const recurrenceModel = { model: item.recurrenceModel.model, initialTime: initialTime, terminateTime: terminateTime, interval: 1 } // 每天重复 if (item.recurrenceModel.model === "daily") { return { repeatable: item.repeatable, recurrenceModel: recurrenceModel, selectRepeatId: item.id } } // 每月重复 if (item.recurrenceModel.model === "absolute_Monthly") { recurrenceModel.daysOfMonth = [new Date(globalStore.data.startTime).getDate()] return { repeatable: item.repeatable, recurrenceModel: recurrenceModel, selectRepeatId: item.id } } // 每周重复 if (item.recurrenceModel.weekDayList && item.recurrenceModel.weekDayList.length > 4) { recurrenceModel.weekDayList = item.recurrenceModel.weekDayList return { repeatable: item.repeatable, recurrenceModel: recurrenceModel, selectRepeatId: item.id } } // 每周的一天重复 recurrenceModel.weekDayList = [repeatWeek[new Date(globalStore.data.startTime).getDay()]] return { repeatable: item.repeatable, recurrenceModel: recurrenceModel, selectRepeatId: item.id } } // 修改时间修改重复模型 export function modifyTimeImpactRepeat(recurrenceModel) { const repeatWeek = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'] const initialTime = globalStore.data.startTime.replace(/\//g, "-").substring(0, 10) const terminateTime = getTwoYearToday(globalStore.data.startTime) recurrenceModel.initialTime = initialTime recurrenceModel.terminateTime = terminateTime if (recurrenceModel.model === 'weekly' && recurrenceModel.weekDayList.length === 1) { recurrenceModel.weekDayList = [repeatWeek[new Date(globalStore.data.startTime).getDay()]] } if (recurrenceModel.model === 'absolute_Monthly') { recurrenceModel.daysOfMonth = [new Date(globalStore.data.startTime).getDate()] } return recurrenceModel } // 添加参会人 export function selectPeople(select, require) { const _that = this return new Promise((resolve) => { dd.complexChoose({ title: "选择参会人", //标题 multiple: true, //是否多选 pickedUsers: select, //已选用户 s requiredUsers: require, //必选用户(不可取消选中状态) responseUserOnly: true, //返回人,或者返回人和部门 success: function (res) { resolve(res) }, fail: function (err) { } }) }) } // 可选中去掉必选人 export function selectedelRequired(select, require) { return select.filter(it => { return !require.includes(it) }) } // 文件格式化 export function renderSize(value) { if (null == value || value == '' || value == 0) { return ""; } var unitArr = new Array("B", "K", "M", "G", "T", "P", "E", "Z", "Y"); var index = 0; var srcsize = parseFloat(value); index = Math.floor(Math.log(srcsize) / Math.log(1024)); var size = srcsize / Math.pow(1024, index); size = size.toFixed(2);//保留的小数位数 return size + unitArr[index]; } export function isJSON(str) { if (typeof str == 'string') { try { var obj = JSON.parse(str); if (typeof obj == 'object' && obj) { return true; } else { return false; } } catch (e) { return false; } } return false; } export function removeHtml(str) { return str.replace(/<\/li>/g, "\n").replace(/<.+?>/g, "").replace(/ /g, '') }