refactor(screen): 优化区域选项缓存逻辑
- 修改 setCachedRegionOption 函数,添加 cacheKey 参数支持 - 将缓存键从固定值改为动态传入的 cacheKey - 添加 globalRegionMap 用于存储全局区域映射 - 实现区域数据按 region_id 分组并缓存到对应键值 - 更新函数调用传递 CACHE_KEY 作为缓存键参数
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user