添加链接
This commit is contained in:
@@ -33,9 +33,11 @@
|
||||
<div class="right-wrapper">
|
||||
<HighRiskAlertPanel :alertData="dashboardData?.alertData"
|
||||
:alertDetails="dashboardData?.alertData.details"
|
||||
linkUrl="http://10.0.64.20/security/console/command-center?p=tabl"
|
||||
:sourceIndex="sourceIndex"/>
|
||||
<TimeoutWorkOrderPanel :timeoutWorkOrders="dashboardData?.timeoutWorkOrders"
|
||||
:alertDetails="dashboardData?.timeoutWorkOrders.details"
|
||||
linkUrl="http://10.0.64.20/pms/workorder-list"
|
||||
:sourceIndex="sourceIndex"/>
|
||||
</div>
|
||||
<HiddenDangerPanel :hiddenDangerData="dashboardData?.hiddenDangerData"/>
|
||||
@@ -221,55 +223,45 @@ const query = reactive({
|
||||
regionCode: ""
|
||||
})
|
||||
|
||||
// 缓存工具函数
|
||||
const CACHE_KEY_PREFIX = 'regionOption_cache_'
|
||||
// 缓存工具函数 - 三个页面共享的缓存
|
||||
const CACHE_KEY = 'shared_regionOption_cache'
|
||||
const CACHE_DURATION = 5 * 60 * 1000 // 5分钟
|
||||
|
||||
interface CacheData {
|
||||
regionOption: RegionItem[]
|
||||
campus_id: string
|
||||
records: any[] // 原始接口返回的数据
|
||||
timestamp: number
|
||||
}
|
||||
|
||||
const getCachedRegionOption = (regionCode: string): CacheData | null => {
|
||||
if (!regionCode) return null
|
||||
const getCachedRegionOption = (): any[] | null => {
|
||||
try {
|
||||
const cacheKey = CACHE_KEY_PREFIX + regionCode
|
||||
const cached = sessionStorage.getItem(cacheKey)
|
||||
const cached = sessionStorage.getItem(CACHE_KEY)
|
||||
if (cached) {
|
||||
const { data, timestamp } = JSON.parse(cached)
|
||||
const cacheData: CacheData = JSON.parse(cached)
|
||||
const now = Date.now()
|
||||
// 检查缓存是否在有效期内
|
||||
if (now - timestamp < CACHE_DURATION) {
|
||||
console.log('使用缓存的 regionOption 数据,regionCode:', regionCode)
|
||||
return data
|
||||
if (now - cacheData.timestamp < CACHE_DURATION) {
|
||||
console.log('使用缓存的 regionOption 数据')
|
||||
return cacheData.records
|
||||
} else {
|
||||
console.log('缓存已过期,清除缓存,regionCode:', regionCode)
|
||||
sessionStorage.removeItem(cacheKey)
|
||||
console.log('缓存已过期,清除缓存')
|
||||
sessionStorage.removeItem(CACHE_KEY)
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('读取缓存失败:', error)
|
||||
if (regionCode) {
|
||||
sessionStorage.removeItem(CACHE_KEY_PREFIX + regionCode)
|
||||
}
|
||||
sessionStorage.removeItem(CACHE_KEY)
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
const setCachedRegionOption = (regionCode: string, regionOption: RegionItem[], campus_id: string) => {
|
||||
if (!regionCode) return
|
||||
const setCachedRegionOption = (records: any[]) => {
|
||||
try {
|
||||
const cacheKey = CACHE_KEY_PREFIX + regionCode
|
||||
const cacheData: CacheData = {
|
||||
regionOption,
|
||||
campus_id
|
||||
}
|
||||
const cache = {
|
||||
data: cacheData,
|
||||
records,
|
||||
timestamp: Date.now()
|
||||
}
|
||||
sessionStorage.setItem(cacheKey, JSON.stringify(cache))
|
||||
console.log('regionOption 数据已缓存,regionCode:', regionCode)
|
||||
sessionStorage.setItem(CACHE_KEY, JSON.stringify(cacheData))
|
||||
console.log('regionOption 数据已缓存')
|
||||
} catch (error) {
|
||||
console.error('保存缓存失败:', error)
|
||||
}
|
||||
@@ -288,65 +280,43 @@ onMounted(async () => {
|
||||
}
|
||||
|
||||
// 先检查缓存
|
||||
const cachedData = getCachedRegionOption(query.regionCode)
|
||||
if (cachedData && cachedData.regionOption && cachedData.regionOption.length > 0) {
|
||||
regionOption.value = cachedData.regionOption
|
||||
query.campus_id = cachedData.campus_id || ''
|
||||
console.log('从缓存加载 regionOption:', regionOption.value, 'campus_id:', query.campus_id)
|
||||
} else {
|
||||
const cachedRecords = getCachedRegionOption()
|
||||
let records = cachedRecords
|
||||
|
||||
if (!records || records.length === 0) {
|
||||
// 缓存不存在或已过期,调用接口
|
||||
try {
|
||||
let {records} = await getTableList(
|
||||
'park_info_list'
|
||||
)
|
||||
// records = [
|
||||
// {
|
||||
// "region_id": "130601",
|
||||
// "park_code": "1825468527486140416",
|
||||
// "region": "北京",
|
||||
// "park_name": "雄安新区总部"
|
||||
// },
|
||||
// {
|
||||
// "region_id": "130601",
|
||||
// "park_code": "1825468527486140417",
|
||||
// "region": "北京",
|
||||
// "park_name": "雄安地面站"
|
||||
// },
|
||||
// {
|
||||
// "region_id": "130603",
|
||||
// "park_code": "1825468527486140426",
|
||||
// "region": "武汉",
|
||||
// "park_name": "花山新区总部"
|
||||
// }
|
||||
// ]
|
||||
if (records && records.length > 0) {
|
||||
// 去重region字段,使用Map来确保唯一性
|
||||
const regionMap = new Map()
|
||||
records.filter((el) => el.region_id == query.regionCode)
|
||||
.map(el => {
|
||||
return el
|
||||
})
|
||||
.forEach(el => {
|
||||
if (!regionMap.has(el.park_name)) {
|
||||
regionMap.set(el.park_name, {
|
||||
name: el.park_name,
|
||||
code: el.park_code // 使用region_code作为code
|
||||
})
|
||||
}
|
||||
})
|
||||
// // 转换为数组
|
||||
regionOption.value = Array.from(regionMap.values())
|
||||
console.log('regionOption.value>>>>', regionOption.value);
|
||||
|
||||
query.campus_id = regionOption.value.map(el => el.code).join()
|
||||
let result = await getTableList('park_info_list')
|
||||
records = result.records || []
|
||||
|
||||
// 保存到缓存
|
||||
setCachedRegionOption(query.regionCode, regionOption.value, query.campus_id)
|
||||
}
|
||||
if (records && records.length > 0) {
|
||||
// 保存到缓存
|
||||
setCachedRegionOption(records)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('初始化园区数据失败:', error)
|
||||
records = []
|
||||
}
|
||||
}
|
||||
|
||||
if (records && records.length > 0) {
|
||||
// 根据regionCode过滤,去重park_name字段
|
||||
const regionMap = new Map()
|
||||
records.filter((el) => el.region_id == query.regionCode)
|
||||
.forEach(el => {
|
||||
if (!regionMap.has(el.park_name)) {
|
||||
regionMap.set(el.park_name, {
|
||||
name: el.park_name,
|
||||
code: el.park_code
|
||||
})
|
||||
}
|
||||
})
|
||||
// 转换为数组
|
||||
regionOption.value = Array.from(regionMap.values())
|
||||
console.log('regionOption.value>>>>', regionOption.value);
|
||||
|
||||
query.campus_id = regionOption.value.map(el => el.code).join()
|
||||
}
|
||||
|
||||
// 初始化数据
|
||||
await loadDashboardData()
|
||||
|
||||
Reference in New Issue
Block a user