feat 报告详情
This commit is contained in:
127
src/utils/storage.ts
Normal file
127
src/utils/storage.ts
Normal file
@@ -0,0 +1,127 @@
|
||||
/**
|
||||
* Storage 工具类
|
||||
*
|
||||
* 使用方式:
|
||||
* import storage from '@/utils/storage'
|
||||
*
|
||||
* // 存储
|
||||
* storage.set('key', value)
|
||||
* storage.set('key', value, 60 * 1000) // 带过期时间(毫秒)
|
||||
*
|
||||
* // 获取
|
||||
* const data = storage.get('key')
|
||||
* const data = storage.get('key', '默认值') // 带默认值
|
||||
*
|
||||
* // 删除
|
||||
* storage.remove('key')
|
||||
*
|
||||
* // 清空所有
|
||||
* storage.clear()
|
||||
*
|
||||
* // 判断是否存在
|
||||
* storage.has('key')
|
||||
*
|
||||
* // 获取所有key
|
||||
* storage.keys()
|
||||
*/
|
||||
|
||||
interface StorageItem<T = any> {
|
||||
value: T
|
||||
expire?: number // 过期时间戳
|
||||
}
|
||||
|
||||
const storage = {
|
||||
/**
|
||||
* 存储数据
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @param expire 过期时间(毫秒),不传则永不过期
|
||||
*/
|
||||
set<T>(key: string, value: T, expire?: number): void {
|
||||
const item: StorageItem<T> = {
|
||||
value,
|
||||
}
|
||||
if (expire) {
|
||||
item.expire = Date.now() + expire
|
||||
}
|
||||
uni.setStorageSync(key, JSON.stringify(item))
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取数据
|
||||
* @param key 键
|
||||
* @param defaultValue 默认值
|
||||
* @returns 存储的值或默认值
|
||||
*/
|
||||
get<T = any>(key: string, defaultValue?: T): T | undefined {
|
||||
try {
|
||||
const raw = uni.getStorageSync(key)
|
||||
if (!raw)
|
||||
return defaultValue
|
||||
|
||||
const item: StorageItem<T> = JSON.parse(raw)
|
||||
|
||||
// 检查是否过期
|
||||
if (item.expire && item.expire < Date.now()) {
|
||||
this.remove(key)
|
||||
return defaultValue
|
||||
}
|
||||
|
||||
return item.value
|
||||
}
|
||||
catch {
|
||||
return defaultValue
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 删除数据
|
||||
* @param key 键
|
||||
*/
|
||||
remove(key: string): void {
|
||||
uni.removeStorageSync(key)
|
||||
},
|
||||
|
||||
/**
|
||||
* 清空所有数据
|
||||
*/
|
||||
clear(): void {
|
||||
uni.clearStorageSync()
|
||||
},
|
||||
|
||||
/**
|
||||
* 判断是否存在
|
||||
* @param key 键
|
||||
* @returns 是否存在
|
||||
*/
|
||||
has(key: string): boolean {
|
||||
try {
|
||||
const raw = uni.getStorageSync(key)
|
||||
if (!raw)
|
||||
return false
|
||||
|
||||
const item: StorageItem = JSON.parse(raw)
|
||||
|
||||
// 检查是否过期
|
||||
if (item.expire && item.expire < Date.now()) {
|
||||
this.remove(key)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
catch {
|
||||
return false
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取所有key
|
||||
* @returns key数组
|
||||
*/
|
||||
keys(): string[] {
|
||||
return Object.keys(uni.getStorageInfoSync().keys)
|
||||
},
|
||||
}
|
||||
|
||||
export default storage
|
||||
Reference in New Issue
Block a user