feat 报告详情

This commit is contained in:
Ironsp
2026-09-03 11:58:40 +08:00
parent 1fffd93c83
commit 607b5f8c91
7 changed files with 261 additions and 2 deletions

127
src/utils/storage.ts Normal file
View 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