import router from '@/router/index'; import { useSystemStore } from '@/store/index'; import { cloneDeep, get } from 'lodash'; import { useI18n } from 'vue-i18n'; import { administrator } from '@/utils/constants'; export * from './unit'; export * from './file'; export * from './validator'; /** * * 判断是否是开发环境 * @return { Boolean } */ export const isDev = () => { return import.meta.env.DEV; }; // 退出登录清除数据 export const logoutClear = () => { localStorage.removeItem('asg-userInfo'); router.push({ name: 'login' }); }; // 跳转到首页 export const goHome = async () => { const systemStore = useSystemStore(); const routeName = get(systemStore, 'menus.0.name', ''); const workspace = get(systemStore, 'workspace.name', ''); await router.push({ name: routeName, params: { workspace: workspace, }, }); }; export function hash(str, lenHash = 32) { lenHash = lenHash || 32; str = str || ''; let ar = str.split('').map((a) => a.charCodeAt(0)), s2alength = ar.length || 1, i = ar.length ? ar.reduce((p, c) => p + c) : 1, s = '', A, B, k = 0, tan = Math.tan; while (s.length < lenHash) { A = ar[k++ % s2alength] || 0.5; B = ar[k++ % s2alength ^ lenHash] || 1.5 ^ lenHash; i = i + ((A ^ B) % lenHash); s += tan((i * B) / A) .toString(16) .split('.')[1] .slice(0, 10); } return s.slice(0, lenHash); } // 三位数加逗号 export const toThousands = (number) => { return number.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); }; // 获取多久时间之前 export const getTimeAgo = (timestamp1, timestamp2) => { const { t } = useI18n(); const diff = Math.abs(timestamp1 - timestamp2) / 1000; // 转为秒 let number = ''; let unit = ''; if (diff < 60) { unit = t('overall.just_now'); } else if (diff < 3600) { number = Math.floor(diff / 60); unit = t('overall.minutes'); } else if (diff < 86400) { number = Math.floor(diff / 3600); unit = t('overall.hours'); } else if (diff < 604800) { number = Math.floor(diff / 86400); unit = t('overall.days'); } else if (diff < 2592000) { number = Math.floor(diff / 604800); unit = t('overall.weeks'); } else if (diff < 31536000) { number = Math.floor(diff / 2592000); unit = t('overall.months'); } else { number = Math.floor(diff / 31536000); unit = t('overall.years'); } return t('overall.time_ago', { number, unit, ago: number ? t('overall.ago') : '', }); }; export function getUUID() { function S4() { return ( ((1 + window.crypto.getRandomValues(new Uint32Array(10))[0]) * 0x10000) | 0 ) .toString(16) .substring(1); } return ( S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4() ); } export function isAdministrator() { let isAdmin = false; let info = localStorage.getItem('asg-userInfo'); try { let userInfo = JSON.parse(info); if (userInfo.accessLevel === administrator) { isAdmin = true; } } catch (error) {} return isAdmin; }