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
}
const setCachedRegionOption = (regionOption: RegionItem[], campus_id: string) => {
const setCachedRegionOption = (regionOption: RegionItem[], campus_id: string, cacheKey: string) => {
try {
const cacheData: CacheData = {
regionOption,
@@ -256,7 +256,7 @@ const setCachedRegionOption = (regionOption: RegionItem[], campus_id: string) =>
data: cacheData,
timestamp: Date.now()
}
sessionStorage.setItem(CACHE_KEY, JSON.stringify(cache))
sessionStorage.setItem(cacheKey, JSON.stringify(cache))
console.log('regionOption 数据已缓存')
} catch (error) {
console.error('保存缓存失败:', error)
@@ -318,6 +318,7 @@ onMounted(async () => {
// 将园区信息去重
const parkMap = new Map();
const globalRegionMap = new Map();
records.forEach(el => {
if (!parkMap.has(el.park_code)) {
parkMap.set(el.park_code, {
@@ -325,12 +326,24 @@ onMounted(async () => {
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转换为数组
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) {