import { Pagination } from '@/types' import { ElMessage } from 'element-plus' import useClipboard from 'vue-clipboard3' import moment from 'moment' const { toClipboard } = useClipboard(); /** * 日期转化为字符串 * @param date Date 日期 * @param formatter String 转换的格式 * @returns String */ export const date2StrUtil = (date: Date, formatter = 'YYYY-MM-DD HH:mm:ss') => { return moment(date).format(formatter) } /** * 删除分页数据的时候,计算分页请求的current的值 * @param current 当前页 * @param dataSourceLength 数据源的长度 * @param deleteNum 删除数量 * @returns 新的当前页 */ export const getPageCurrentUtil = (current: Pagination['current'], dataSourceLength: number, deleteNum = 1): Pagination['current'] => { if (current === 1 || dataSourceLength > deleteNum) return current return current - 1 } type Source = Record /** * 对象转化为数组 * @param obj 源对象 {ad: "dasd"} * @param k 数组每项的key值 * @param v 数组每项的value值 * @return [{key: '', value: ''}] */ export const obj2ArrUtil = (obj: T | undefined, k = 'key', v = 'value') => { if (!obj) return [{ [k]: '', [v]: '' }] return Object.keys(obj).map(key => ({ [k]: key, [v]: obj[key] })) } type Sources = Record[] /** * 对象转化为数组 * @param arr 源对象 [{key: '', value: ''}] * @param k 数组每项的key值 * @param v 数组每项的value值 * @return {[key]: value} */ export const arr2ObjUtil = (arr: T | undefined, k = 'key', v = 'value') => { if (!arr) return undefined return arr.reduce((total, obj) => { return { ...total, [obj[k]]: obj[v] } }, {}) } /** * 关闭定时器 * @param timerId 定时器id */ export const clearTimerUtil = (timerId: NodeJS.Timer | undefined) => { timerId && clearInterval(timerId); } /** * 点击复制文本 * @param text * @returns */ export const copyTextUtil = (text: string) => { return new Promise((resolve, reject) => { try { //复制 toClipboard(text); //下面可以设置复制成功的提示框等操作 ElMessage.success('复制成功'); resolve(text); } catch (e) { //复制失败 ElMessage.error('复制失败'); reject(e); } }); };