style: 全局代码格式化
Former-commit-id: bb50c8419b8fcdeb48c93fce9f399d901e8f5a52
This commit is contained in:
@@ -1,29 +1,28 @@
|
||||
|
||||
/**
|
||||
* Show plural label if time is plural number
|
||||
* @param {number} time
|
||||
* @param {string} label
|
||||
* @return {string}
|
||||
*/
|
||||
function pluralize(time:number, label:string) {
|
||||
if (time === 1) {
|
||||
return time + label
|
||||
}
|
||||
return time + label + 's'
|
||||
function pluralize(time: number, label: string) {
|
||||
if (time === 1) {
|
||||
return time + label;
|
||||
}
|
||||
return time + label + 's';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {number} time
|
||||
*/
|
||||
export function timeAgo(time:number) {
|
||||
const between = Date.now() / 1000 - Number(time)
|
||||
if (between < 3600) {
|
||||
return pluralize(~~(between / 60), ' minute')
|
||||
} else if (between < 86400) {
|
||||
return pluralize(~~(between / 3600), ' hour')
|
||||
} else {
|
||||
return pluralize(~~(between / 86400), ' day')
|
||||
}
|
||||
export function timeAgo(time: number) {
|
||||
const between = Date.now() / 1000 - Number(time);
|
||||
if (between < 3600) {
|
||||
return pluralize(~~(between / 60), ' minute');
|
||||
} else if (between < 86400) {
|
||||
return pluralize(~~(between / 3600), ' hour');
|
||||
} else {
|
||||
return pluralize(~~(between / 86400), ' day');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -32,45 +31,50 @@ export function timeAgo(time:number) {
|
||||
* @param {number} num
|
||||
* @param {number} digits
|
||||
*/
|
||||
export function numberFormatter(num:number, digits:number) {
|
||||
const si = [
|
||||
{value: 1E18, symbol: 'E'},
|
||||
{value: 1E15, symbol: 'P'},
|
||||
{value: 1E12, symbol: 'T'},
|
||||
{value: 1E9, symbol: 'G'},
|
||||
{value: 1E6, symbol: 'M'},
|
||||
{value: 1E3, symbol: 'k'}
|
||||
]
|
||||
for (let i = 0; i < si.length; i++) {
|
||||
if (num >= si[i].value) {
|
||||
return (num / si[i].value).toFixed(digits).replace(/\.0+$|(\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol
|
||||
}
|
||||
}
|
||||
return num.toString()
|
||||
export function numberFormatter(num: number, digits: number) {
|
||||
const si = [
|
||||
{ value: 1e18, symbol: 'E' },
|
||||
{ value: 1e15, symbol: 'P' },
|
||||
{ value: 1e12, symbol: 'T' },
|
||||
{ value: 1e9, symbol: 'G' },
|
||||
{ value: 1e6, symbol: 'M' },
|
||||
{ value: 1e3, symbol: 'k' }
|
||||
];
|
||||
for (let i = 0; i < si.length; i++) {
|
||||
if (num >= si[i].value) {
|
||||
return (
|
||||
(num / si[i].value)
|
||||
.toFixed(digits)
|
||||
.replace(/\.0+$|(\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol
|
||||
);
|
||||
}
|
||||
}
|
||||
return num.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 10000 => "10,000"
|
||||
* @param {number} num
|
||||
*/
|
||||
export function toThousandFilter(num:number) {
|
||||
return (+num || 0).toString().replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
|
||||
export function toThousandFilter(num: number) {
|
||||
return (+num || 0)
|
||||
.toString()
|
||||
.replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','));
|
||||
}
|
||||
|
||||
/**
|
||||
* Upper case first char
|
||||
* @param {String} string
|
||||
*/
|
||||
export function uppercaseFirst(string:string) {
|
||||
return string.charAt(0).toUpperCase() + string.slice(1)
|
||||
export function uppercaseFirst(string: string) {
|
||||
return string.charAt(0).toUpperCase() + string.slice(1);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 金额转换(分->元)
|
||||
* 100 => 1
|
||||
* @param {number} num
|
||||
*/
|
||||
export function moneyFormatter(num:number) {
|
||||
return '¥'+(isNaN(num) ? 0.00 : parseFloat((num / 100).toFixed(2)))
|
||||
export function moneyFormatter(num: number) {
|
||||
return '¥' + (isNaN(num) ? 0.0 : parseFloat((num / 100).toFixed(2)));
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// translate router.meta.title, be used in breadcrumb sidebar tagsview
|
||||
import i18n from "@/lang/index";
|
||||
import i18n from '@/lang/index';
|
||||
|
||||
export function generateTitle(title: any) {
|
||||
// 判断是否存在国际化配置,如果没有原生返回
|
||||
const hasKey = i18n.global.te('route.' + title)
|
||||
if (hasKey) {
|
||||
const translatedTitle = i18n.global.t('route.' + title)
|
||||
return translatedTitle
|
||||
}
|
||||
return title
|
||||
}
|
||||
// 判断是否存在国际化配置,如果没有原生返回
|
||||
const hasKey = i18n.global.te('route.' + title);
|
||||
if (hasKey) {
|
||||
const translatedTitle = i18n.global.t('route.' + title);
|
||||
return translatedTitle;
|
||||
}
|
||||
return title;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function hasClass(ele: HTMLElement, cls: string) {
|
||||
return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'))
|
||||
return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -14,7 +14,7 @@ export function hasClass(ele: HTMLElement, cls: string) {
|
||||
* @param {string} cls
|
||||
*/
|
||||
export function addClass(ele: HTMLElement, cls: string) {
|
||||
if (!hasClass(ele, cls)) ele.className += ' ' + cls
|
||||
if (!hasClass(ele, cls)) ele.className += ' ' + cls;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -23,25 +23,25 @@ export function addClass(ele: HTMLElement, cls: string) {
|
||||
* @param {string} cls
|
||||
*/
|
||||
export function removeClass(ele: HTMLElement, cls: string) {
|
||||
if (hasClass(ele, cls)) {
|
||||
const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)')
|
||||
ele.className = ele.className.replace(reg, ' ')
|
||||
}
|
||||
if (hasClass(ele, cls)) {
|
||||
const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
|
||||
ele.className = ele.className.replace(reg, ' ');
|
||||
}
|
||||
}
|
||||
|
||||
export function mix(color1: string, color2: string, weight: number) {
|
||||
weight = Math.max(Math.min(Number(weight), 1), 0);
|
||||
const r1 = parseInt(color1.substring(1, 3), 16);
|
||||
const g1 = parseInt(color1.substring(3, 5), 16);
|
||||
const b1 = parseInt(color1.substring(5, 7), 16);
|
||||
const r2 = parseInt(color2.substring(1, 3), 16);
|
||||
const g2 = parseInt(color2.substring(3, 5), 16);
|
||||
const b2 = parseInt(color2.substring(5, 7), 16);
|
||||
const r = Math.round(r1 * (1 - weight) + r2 * weight);
|
||||
const g = Math.round(g1 * (1 - weight) + g2 * weight);
|
||||
const b = Math.round(b1 * (1 - weight) + b2 * weight);
|
||||
const rStr = ("0" + (r || 0).toString(16)).slice(-2);
|
||||
const gStr = ("0" + (g || 0).toString(16)).slice(-2);
|
||||
const bStr = ("0" + (b || 0).toString(16)).slice(-2);
|
||||
return "#" + rStr + gStr + bStr;
|
||||
weight = Math.max(Math.min(Number(weight), 1), 0);
|
||||
const r1 = parseInt(color1.substring(1, 3), 16);
|
||||
const g1 = parseInt(color1.substring(3, 5), 16);
|
||||
const b1 = parseInt(color1.substring(5, 7), 16);
|
||||
const r2 = parseInt(color2.substring(1, 3), 16);
|
||||
const g2 = parseInt(color2.substring(3, 5), 16);
|
||||
const b2 = parseInt(color2.substring(5, 7), 16);
|
||||
const r = Math.round(r1 * (1 - weight) + r2 * weight);
|
||||
const g = Math.round(g1 * (1 - weight) + g2 * weight);
|
||||
const b = Math.round(b1 * (1 - weight) + b2 * weight);
|
||||
const rStr = ('0' + (r || 0).toString(16)).slice(-2);
|
||||
const gStr = ('0' + (g || 0).toString(16)).slice(-2);
|
||||
const bStr = ('0' + (b || 0).toString(16)).slice(-2);
|
||||
return '#' + rStr + gStr + bStr;
|
||||
}
|
||||
|
||||
@@ -1,66 +1,69 @@
|
||||
import axios, { AxiosRequestConfig, AxiosResponse } from "axios";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { localStorage } from "@/utils/storage";
|
||||
import useStore from "@/store";
|
||||
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';
|
||||
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||
import { localStorage } from '@/utils/storage';
|
||||
import useStore from '@/store';
|
||||
|
||||
// 创建 axios 实例
|
||||
const service = axios.create({
|
||||
baseURL: import.meta.env.VITE_APP_BASE_API,
|
||||
timeout: 50000,
|
||||
headers: { 'Content-Type': 'application/json;charset=utf-8' }
|
||||
})
|
||||
baseURL: import.meta.env.VITE_APP_BASE_API,
|
||||
timeout: 50000,
|
||||
headers: { 'Content-Type': 'application/json;charset=utf-8' }
|
||||
});
|
||||
|
||||
// 请求拦截器
|
||||
service.interceptors.request.use(
|
||||
(config: AxiosRequestConfig) => {
|
||||
if (!config.headers) {
|
||||
throw new Error(`Expected 'config' and 'config.headers' not to be undefined`);
|
||||
}
|
||||
const { user } = useStore()
|
||||
if (user.token) {
|
||||
config.headers.Authorization = `${localStorage.get('token')}`;
|
||||
}
|
||||
return config
|
||||
}, (error) => {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
)
|
||||
(config: AxiosRequestConfig) => {
|
||||
if (!config.headers) {
|
||||
throw new Error(
|
||||
`Expected 'config' and 'config.headers' not to be undefined`
|
||||
);
|
||||
}
|
||||
const { user } = useStore();
|
||||
if (user.token) {
|
||||
config.headers.Authorization = `${localStorage.get('token')}`;
|
||||
}
|
||||
return config;
|
||||
},
|
||||
error => {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
|
||||
// 响应拦截器
|
||||
service.interceptors.response.use(
|
||||
(response: AxiosResponse) => {
|
||||
const { code, msg } = response.data;
|
||||
if (code === '00000') {
|
||||
return response.data;
|
||||
} else {
|
||||
(response: AxiosResponse) => {
|
||||
const { code, msg } = response.data;
|
||||
if (code === '00000') {
|
||||
return response.data;
|
||||
} else {
|
||||
// 响应数据为二进制流处理(Excel导出)
|
||||
if (response.data instanceof ArrayBuffer) {
|
||||
return response;
|
||||
}
|
||||
|
||||
// 响应数据为二进制流处理(Excel导出)
|
||||
if (response.data instanceof ArrayBuffer) {
|
||||
return response
|
||||
}
|
||||
|
||||
ElMessage({
|
||||
message: msg || '系统出错',
|
||||
type: 'error'
|
||||
})
|
||||
return Promise.reject(new Error(msg || 'Error'))
|
||||
}
|
||||
},
|
||||
(error) => {
|
||||
const { code, msg } = error.response.data
|
||||
if (code === 'A0230') { // token 过期
|
||||
localStorage.clear(); // 清除浏览器全部缓存
|
||||
window.location.href = '/'; // 跳转登录页
|
||||
ElMessageBox.alert('当前页面已失效,请重新登录', '提示', {})
|
||||
} else {
|
||||
ElMessage({
|
||||
message: msg || '系统出错',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
return Promise.reject(new Error(msg || 'Error'))
|
||||
}
|
||||
ElMessage({
|
||||
message: msg || '系统出错',
|
||||
type: 'error'
|
||||
});
|
||||
return Promise.reject(new Error(msg || 'Error'));
|
||||
}
|
||||
},
|
||||
error => {
|
||||
const { code, msg } = error.response.data;
|
||||
if (code === 'A0230') {
|
||||
// token 过期
|
||||
localStorage.clear(); // 清除浏览器全部缓存
|
||||
window.location.href = '/'; // 跳转登录页
|
||||
ElMessageBox.alert('当前页面已失效,请重新登录', '提示', {});
|
||||
} else {
|
||||
ElMessage({
|
||||
message: msg || '系统出错',
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
return Promise.reject(new Error(msg || 'Error'));
|
||||
}
|
||||
);
|
||||
|
||||
// 导出 axios 实例
|
||||
export default service
|
||||
export default service;
|
||||
|
||||
@@ -1,67 +1,72 @@
|
||||
import { ref } from 'vue';
|
||||
export default function () {
|
||||
const chart = ref<any>();
|
||||
const sidebarElm = ref<Element>();
|
||||
|
||||
import { ref } from 'vue'
|
||||
export default function() {
|
||||
const chart = ref<any>()
|
||||
const sidebarElm = ref<Element>()
|
||||
const chartResizeHandler = () => {
|
||||
if (chart.value) {
|
||||
chart.value.resize();
|
||||
}
|
||||
};
|
||||
|
||||
const chartResizeHandler = () => {
|
||||
if (chart.value) {
|
||||
chart.value.resize()
|
||||
}
|
||||
}
|
||||
const sidebarResizeHandler = (e: TransitionEvent) => {
|
||||
if (e.propertyName === 'width') {
|
||||
chartResizeHandler();
|
||||
}
|
||||
};
|
||||
|
||||
const sidebarResizeHandler = (e: TransitionEvent) => {
|
||||
if (e.propertyName === 'width') {
|
||||
chartResizeHandler()
|
||||
}
|
||||
}
|
||||
const initResizeEvent = () => {
|
||||
window.addEventListener('resize', chartResizeHandler);
|
||||
};
|
||||
|
||||
const initResizeEvent = () => {
|
||||
window.addEventListener('resize', chartResizeHandler)
|
||||
}
|
||||
const destroyResizeEvent = () => {
|
||||
window.removeEventListener('resize', chartResizeHandler);
|
||||
};
|
||||
|
||||
const destroyResizeEvent = () => {
|
||||
window.removeEventListener('resize', chartResizeHandler)
|
||||
}
|
||||
const initSidebarResizeEvent = () => {
|
||||
sidebarElm.value = document.getElementsByClassName('sidebar-container')[0];
|
||||
if (sidebarElm.value) {
|
||||
sidebarElm.value.addEventListener(
|
||||
'transitionend',
|
||||
sidebarResizeHandler as EventListener
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
const initSidebarResizeEvent = () => {
|
||||
sidebarElm.value = document.getElementsByClassName('sidebar-container')[0]
|
||||
if (sidebarElm.value) {
|
||||
sidebarElm.value.addEventListener('transitionend', sidebarResizeHandler as EventListener)
|
||||
}
|
||||
}
|
||||
const destroySidebarResizeEvent = () => {
|
||||
if (sidebarElm.value) {
|
||||
sidebarElm.value.removeEventListener(
|
||||
'transitionend',
|
||||
sidebarResizeHandler as EventListener
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
const destroySidebarResizeEvent = () => {
|
||||
if (sidebarElm.value) {
|
||||
sidebarElm.value.removeEventListener('transitionend', sidebarResizeHandler as EventListener)
|
||||
}
|
||||
}
|
||||
const mounted = () => {
|
||||
initResizeEvent();
|
||||
initSidebarResizeEvent();
|
||||
};
|
||||
|
||||
const mounted = () => {
|
||||
initResizeEvent()
|
||||
initSidebarResizeEvent()
|
||||
}
|
||||
const beforeDestroy = () => {
|
||||
destroyResizeEvent();
|
||||
destroySidebarResizeEvent();
|
||||
};
|
||||
|
||||
const beforeDestroy = () => {
|
||||
destroyResizeEvent()
|
||||
destroySidebarResizeEvent()
|
||||
}
|
||||
const activated = () => {
|
||||
initResizeEvent();
|
||||
initSidebarResizeEvent();
|
||||
};
|
||||
|
||||
const activated = () => {
|
||||
initResizeEvent()
|
||||
initSidebarResizeEvent()
|
||||
}
|
||||
const deactivated = () => {
|
||||
destroyResizeEvent();
|
||||
destroySidebarResizeEvent();
|
||||
};
|
||||
|
||||
const deactivated = () => {
|
||||
destroyResizeEvent()
|
||||
destroySidebarResizeEvent()
|
||||
}
|
||||
|
||||
return {
|
||||
chart,
|
||||
mounted,
|
||||
beforeDestroy,
|
||||
activated,
|
||||
deactivated
|
||||
}
|
||||
return {
|
||||
chart,
|
||||
mounted,
|
||||
beforeDestroy,
|
||||
activated,
|
||||
deactivated
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,33 +1,41 @@
|
||||
const easeInOutQuad = (t: number, b: number, c: number, d: number) => {
|
||||
t /= d / 2
|
||||
if (t < 1) {
|
||||
return c / 2 * t * t + b
|
||||
}
|
||||
t--
|
||||
return -c / 2 * (t * (t - 2) - 1) + b
|
||||
}
|
||||
|
||||
t /= d / 2;
|
||||
if (t < 1) {
|
||||
return (c / 2) * t * t + b;
|
||||
}
|
||||
t--;
|
||||
return (-c / 2) * (t * (t - 2) - 1) + b;
|
||||
};
|
||||
|
||||
// requestAnimationFrame for Smart Animating http://goo.gl/sx5sts
|
||||
const requestAnimFrame = (function () {
|
||||
return window.requestAnimationFrame || (window as any).webkitRequestAnimationFrame || (window as any).mozRequestAnimationFrame || function (callback) {
|
||||
window.setTimeout(callback, 1000 / 60)
|
||||
}
|
||||
})()
|
||||
return (
|
||||
window.requestAnimationFrame ||
|
||||
(window as any).webkitRequestAnimationFrame ||
|
||||
(window as any).mozRequestAnimationFrame ||
|
||||
function (callback) {
|
||||
window.setTimeout(callback, 1000 / 60);
|
||||
}
|
||||
);
|
||||
})();
|
||||
|
||||
/**
|
||||
* Because it's so fucking difficult to detect the scrolling element, just move them all
|
||||
* @param {number} amount
|
||||
*/
|
||||
const move = (amount: number) => {
|
||||
document.documentElement.scrollTop = amount;
|
||||
(document.body.parentNode as HTMLElement).scrollTop = amount
|
||||
document.body.scrollTop = amount
|
||||
}
|
||||
document.documentElement.scrollTop = amount;
|
||||
(document.body.parentNode as HTMLElement).scrollTop = amount;
|
||||
document.body.scrollTop = amount;
|
||||
};
|
||||
|
||||
const position = () => {
|
||||
return document.documentElement.scrollTop || (document.body.parentNode as HTMLElement).scrollTop || document.body.scrollTop
|
||||
}
|
||||
return (
|
||||
document.documentElement.scrollTop ||
|
||||
(document.body.parentNode as HTMLElement).scrollTop ||
|
||||
document.body.scrollTop
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number} to
|
||||
@@ -35,27 +43,27 @@ const position = () => {
|
||||
* @param {Function} callback
|
||||
*/
|
||||
export const scrollTo = (to: number, duration: number, callback?: any) => {
|
||||
const start = position()
|
||||
const change = to - start
|
||||
const increment = 20
|
||||
let currentTime = 0
|
||||
duration = (typeof (duration) === 'undefined') ? 500 : duration
|
||||
const animateScroll = function () {
|
||||
// increment the time
|
||||
currentTime += increment
|
||||
// find the value with the quadratic in-out easing function
|
||||
const val = easeInOutQuad(currentTime, start, change, duration)
|
||||
// move the document.body
|
||||
move(val)
|
||||
// do the animation unless its over
|
||||
if (currentTime < duration) {
|
||||
requestAnimFrame(animateScroll)
|
||||
} else {
|
||||
if (callback && typeof (callback) === 'function') {
|
||||
// the animation is done so lets callback
|
||||
callback()
|
||||
}
|
||||
}
|
||||
}
|
||||
animateScroll()
|
||||
}
|
||||
const start = position();
|
||||
const change = to - start;
|
||||
const increment = 20;
|
||||
let currentTime = 0;
|
||||
duration = typeof duration === 'undefined' ? 500 : duration;
|
||||
const animateScroll = function () {
|
||||
// increment the time
|
||||
currentTime += increment;
|
||||
// find the value with the quadratic in-out easing function
|
||||
const val = easeInOutQuad(currentTime, start, change, duration);
|
||||
// move the document.body
|
||||
move(val);
|
||||
// do the animation unless its over
|
||||
if (currentTime < duration) {
|
||||
requestAnimFrame(animateScroll);
|
||||
} else {
|
||||
if (callback && typeof callback === 'function') {
|
||||
// the animation is done so lets callback
|
||||
callback();
|
||||
}
|
||||
}
|
||||
};
|
||||
animateScroll();
|
||||
};
|
||||
|
||||
@@ -2,44 +2,44 @@
|
||||
* window.localStorage 浏览器永久缓存
|
||||
*/
|
||||
export const localStorage = {
|
||||
// 设置永久缓存
|
||||
set(key: string, val: any) {
|
||||
window.localStorage.setItem(key, JSON.stringify(val));
|
||||
},
|
||||
// 获取永久缓存
|
||||
get(key: string) {
|
||||
const json: any = window.localStorage.getItem(key);
|
||||
return JSON.parse(json);
|
||||
},
|
||||
// 移除永久缓存
|
||||
remove(key: string) {
|
||||
window.localStorage.removeItem(key);
|
||||
},
|
||||
// 移除全部永久缓存
|
||||
clear() {
|
||||
window.localStorage.clear();
|
||||
}
|
||||
// 设置永久缓存
|
||||
set(key: string, val: any) {
|
||||
window.localStorage.setItem(key, JSON.stringify(val));
|
||||
},
|
||||
// 获取永久缓存
|
||||
get(key: string) {
|
||||
const json: any = window.localStorage.getItem(key);
|
||||
return JSON.parse(json);
|
||||
},
|
||||
// 移除永久缓存
|
||||
remove(key: string) {
|
||||
window.localStorage.removeItem(key);
|
||||
},
|
||||
// 移除全部永久缓存
|
||||
clear() {
|
||||
window.localStorage.clear();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* window.sessionStorage 浏览器临时缓存
|
||||
*/
|
||||
export const sessionStorage = {
|
||||
// 设置临时缓存
|
||||
set(key: string, val: any) {
|
||||
window.sessionStorage.setItem(key, JSON.stringify(val));
|
||||
},
|
||||
// 获取临时缓存
|
||||
get(key: string) {
|
||||
const json: any = window.sessionStorage.getItem(key);
|
||||
return JSON.parse(json);
|
||||
},
|
||||
// 移除临时缓存
|
||||
remove(key: string) {
|
||||
window.sessionStorage.removeItem(key);
|
||||
},
|
||||
// 移除全部临时缓存
|
||||
clear() {
|
||||
window.sessionStorage.clear();
|
||||
}
|
||||
// 设置临时缓存
|
||||
set(key: string, val: any) {
|
||||
window.sessionStorage.setItem(key, JSON.stringify(val));
|
||||
},
|
||||
// 获取临时缓存
|
||||
get(key: string) {
|
||||
const json: any = window.sessionStorage.getItem(key);
|
||||
return JSON.parse(json);
|
||||
},
|
||||
// 移除临时缓存
|
||||
remove(key: string) {
|
||||
window.sessionStorage.removeItem(key);
|
||||
},
|
||||
// 移除全部临时缓存
|
||||
clear() {
|
||||
window.sessionStorage.clear();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
export function isExternal(path: string) {
|
||||
const isExternal = /^(https?:|http?:|mailto:|tel:)/.test(path)
|
||||
return isExternal
|
||||
const isExternal = /^(https?:|http?:|mailto:|tel:)/.test(path);
|
||||
return isExternal;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user