refactor(screen): 优化区域选项缓存逻辑

- 修改 setCachedRegionOption 函数,添加 cacheKey 参数支持
- 将缓存键从固定值改为动态传入的 cacheKey
- 添加 globalRegionMap 用于存储全局区域映射
- 实现区域数据按 region_id 分组并缓存到对应键值
- 更新函数调用传递 CACHE_KEY 作为缓存键参数
This commit is contained in:
2025-12-29 17:33:14 +08:00
parent 07331d0e15
commit 018f611bfc

View File

@@ -246,7 +246,7 @@ const getCachedRegionOption = (): CacheData | null => {
return null return null
} }
const setCachedRegionOption = (regionOption: RegionItem[], campus_id: string) => { const setCachedRegionOption = (regionOption: RegionItem[], campus_id: string, cacheKey: string) => {
try { try {
const cacheData: CacheData = { const cacheData: CacheData = {
regionOption, regionOption,
@@ -256,7 +256,7 @@ const setCachedRegionOption = (regionOption: RegionItem[], campus_id: string) =>
data: cacheData, data: cacheData,
timestamp: Date.now() timestamp: Date.now()
} }
sessionStorage.setItem(CACHE_KEY, JSON.stringify(cache)) sessionStorage.setItem(cacheKey, JSON.stringify(cache))
console.log('regionOption 数据已缓存') console.log('regionOption 数据已缓存')
} catch (error) { } catch (error) {
console.error('保存缓存失败:', error) console.error('保存缓存失败:', error)
@@ -318,6 +318,7 @@ onMounted(async () => {
// 将园区信息去重 // 将园区信息去重
const parkMap = new Map(); const parkMap = new Map();
const globalRegionMap = new Map();
records.forEach(el => { records.forEach(el => {
if (!parkMap.has(el.park_code)) { if (!parkMap.has(el.park_code)) {
parkMap.set(el.park_code, { parkMap.set(el.park_code, {
@@ -325,12 +326,24 @@ onMounted(async () => {
code: el.park_code code: el.park_code
}) })
} }
if (globalRegionMap.has(el.region_id)) {
globalRegionMap.get(el.region_id).push({name: el.park_name, code: el.park_code})
}else {
let regionValues = [{name: el.park_name, code: el.park_code}]
globalRegionMap.set(el.region_id, regionValues)
}
}) })
for(let [region_id, regionValues] of globalRegionMap) {
let campus_ids = regionValues.map(e1 => e1.code).join();
setCachedRegionOption(regionValues, campus_ids, region_id)
}
// 将parkMap转换为数组 // 将parkMap转换为数组
query.campus_id = Array.from(parkMap.values()).map(e1 => e1.code).join(); query.campus_id = Array.from(parkMap.values()).map(e1 => e1.code).join();
// 保存到缓存 // 保存到缓存
setCachedRegionOption(regionOption.value, query.campus_id) setCachedRegionOption(regionOption.value, query.campus_id, CACHE_KEY)
} }
} catch (error) { } catch (error) {