diff --git a/src/views/Home/Index10.vue b/src/views/Home/Index10.vue index b1a8fa4..779351d 100644 --- a/src/views/Home/Index10.vue +++ b/src/views/Home/Index10.vue @@ -31,7 +31,7 @@ 👥 外协管理 - + 管理
@@ -58,7 +58,7 @@ 🛡️ 风险管理
- + 管理
@@ -85,7 +85,7 @@ ⚠️ 隐患管理
- + 管理
@@ -114,7 +114,7 @@ 🚧 高危作业
- + 管理
@@ -151,7 +151,7 @@ 📄 应急预案
- + 管理
@@ -191,7 +191,7 @@ 📚 安全培训
- + 管理
@@ -283,6 +283,32 @@ const getInitialDateRange = () => { } const dateRange = ref(getInitialDateRange()) +// 外协管理:/person/table/view/1959187451673116674 +// 风险管理: +// fx/table/view/1978723750599790594 +// 隐患管理:/fx/table/view/1963446160885366786 +// 高危作业:/low/table/view/1964253329070571521 +// 应急预案:/yayl/table/view/1966394259751907330 +// 安全培训:/pxks/table/view/1968225010550091777 +const openOutsourcingManagement = () => { + window.open('/person/table/view/1959187451673116674', '_blank') +} +const openRiskManagement = () => { + window.open('/fx/table/view/1978723750599790594', '_blank') +} +const openHiddenDangerManagement = () => { + window.open('/fx/table/view/1963446160885366786', '_blank') +} +const openHighRiskManagement = () => { + window.open('/low/table/view/1964253329070571521', '_blank') +} +const openEmergencyPlanManagement = () => { + window.open('/yayl/table/view/1966394259751907330', '_blank') +} +const openTrainingManagement = () => { + window.open('/pxks/table/view/1968225010550091777', '_blank') +} + // 外协管理数据 const outsourcingTotal = ref(0) // 外协人员总数 const outsourcingDistribution = ref([]) diff --git a/src/views/Home/Index12.vue b/src/views/Home/Index12.vue index e00a5ac..f531164 100644 --- a/src/views/Home/Index12.vue +++ b/src/views/Home/Index12.vue @@ -34,7 +34,7 @@ 👥 外协管理
- + 管理
@@ -61,7 +61,7 @@ 🛡️ 风险管理
- + 管理
@@ -102,7 +102,7 @@ ⚠️ 隐患管理
- + 管理
@@ -154,7 +154,7 @@ 🚧 高危作业
- + 管理
@@ -191,7 +191,7 @@ 📄 应急预案
- + 管理
@@ -231,7 +231,7 @@ 📚 安全培训
- + 管理
@@ -322,6 +322,30 @@ const selectedPark = ref('') const parkSelectorVisible = ref(false) const parkOption = ref([]) +// 外协管理:/person/table/view/1959187451673116674 +// 风险管理:/fx/table/view/1978723750599790594 +// 隐患管理:/fx/table/view/1963446160885366786 +// 高危作业:/low/table/view/1964253329070571521 +// 应急预案:/yayl/table/view/1966394259751907330 +// 安全培训:/pxks/table/view/1968225010550091777 +const openOutsourcingManagement = () => { + window.open('/person/table/view/1959187451673116674', '_blank') +} +const openRiskManagement = () => { + window.open('/fx/table/view/1978723750599790594', '_blank') +} +const openHiddenDangerManagement = () => { + window.open('/fx/table/view/1963446160885366786', '_blank') +} +const openHighRiskManagement = () => { + window.open('/low/table/view/1964253329070571521', '_blank') +} +const openEmergencyPlanManagement = () => { + window.open('/yayl/table/view/1966394259751907330', '_blank') +} +const openTrainingManagement = () => { + window.open('/pxks/table/view/1968225010550091777', '_blank') +} // 时间选择相关 - 默认当前月起止,如果路由中有日期范围参数则使用 const getCurrentMonthRange = () => { const start = dayjs().startOf('month').format('YYYY-MM-DD') diff --git a/src/views/Home/Index13.vue b/src/views/Home/Index13.vue index 25242a4..323c1b1 100644 --- a/src/views/Home/Index13.vue +++ b/src/views/Home/Index13.vue @@ -31,7 +31,7 @@ 👥 外协管理
- + 管理
@@ -58,7 +58,7 @@ 🛡️ 风险管理
- + 管理
@@ -99,7 +99,7 @@ ⚠️ 隐患管理
- + 管理
@@ -151,7 +151,7 @@ 🚧 高危作业
- + 管理
@@ -188,7 +188,7 @@ 📄 应急预案
- + 管理
@@ -230,7 +230,7 @@ 📚 安全培训
- + 管理
@@ -312,6 +312,30 @@ interface RecentDrillItem { const router = useRouter() const route = useRoute() +// 外协管理:/person/table/view/1959187451673116674 +// 风险管理:/fx/table/view/1978723750599790594 +// 隐患管理:/fx/table/view/1963446160885366786 +// 高危作业:/low/table/view/1964253329070571521 +// 应急预案:/yayl/table/view/1966394259751907330 +// 安全培训:/pxks/table/view/1968225010550091777 +const openOutsourcingManagement = () => { + window.open('/person/table/view/1959187451673116674', '_blank') +} +const openRiskManagement = () => { + window.open('/fx/table/view/1978723750599790594', '_blank') +} +const openHiddenDangerManagement = () => { + window.open('/fx/table/view/1963446160885366786', '_blank') +} +const openHighRiskManagement = () => { + window.open('/low/table/view/1964253329070571521', '_blank') +} +const openEmergencyPlanManagement = () => { + window.open('/yayl/table/view/1966394259751907330', '_blank') +} +const openTrainingManagement = () => { + window.open('/pxks/table/view/1968225010550091777', '_blank') +} // 园区名称 - 从路由参数获取 const selectedPark = ref('') diff --git a/src/views/screen/companyScreen.vue b/src/views/screen/companyScreen.vue index ec5f339..37adbee 100644 --- a/src/views/screen/companyScreen.vue +++ b/src/views/screen/companyScreen.vue @@ -208,7 +208,7 @@
- +
@@ -231,7 +231,7 @@
- +
@@ -680,6 +680,50 @@ interface RegionItem { code: string pic_url: string } +// 缓存工具函数 - 三个页面共享的缓存 +const CACHE_KEY = 'shared_regionOption_cache' +const CACHE_DURATION = 5 * 60 * 1000 // 5分钟 + +interface CacheData { + records: any[] // 原始接口返回的数据 + timestamp: number +} + +const getCachedRegionOption = (): any[] | null => { + try { + const cached = sessionStorage.getItem(CACHE_KEY) + if (cached) { + const cacheData: CacheData = JSON.parse(cached) + const now = Date.now() + // 检查缓存是否在有效期内 + if (now - cacheData.timestamp < CACHE_DURATION) { + console.log('使用缓存的 regionOption 数据') + return cacheData.records + } else { + console.log('缓存已过期,清除缓存') + sessionStorage.removeItem(CACHE_KEY) + } + } + } catch (error) { + console.error('读取缓存失败:', error) + sessionStorage.removeItem(CACHE_KEY) + } + return null +} + +const setCachedRegionOption = (records: any[]) => { + try { + const cacheData: CacheData = { + records, + timestamp: Date.now() + } + sessionStorage.setItem(CACHE_KEY, JSON.stringify(cacheData)) + console.log('regionOption 数据已缓存') + } catch (error) { + console.error('保存缓存失败:', error) + } +} + const regionOption = ref([]) onMounted(async () => { updateTime() @@ -692,50 +736,40 @@ onMounted(async () => { handleRiskTabChange('安全类') - try { - let { records } = await getTableList( - 'park_info_list' - ) - // records = [ - // { - // "region_id": "130601", - // "park_code": "1825468527486140416", - // "region": "北京", - // "park_name": "雄安新区总部", - // "pic_url": "1" - // }, - // { - // "region_id": "130601", - // "park_code": "1825468527486140417", - // "region": "北京", - // "park_name": "雄安地面站", - // "pic_url": "2" - // }, - // { - // "region_id": "130603", - // "park_code": "1825468527486140426", - // "region": "武汉", - // "park_name": "花山新区总部", - // "pic_url": "3" - // } - // ] - if (records && records.length > 0) { - // 更新为新的数据格式 - regionOption.value = records.map(el => ({ - name: el.park_name, - code: el.park_code, - pic_url: el.pic_url - })) + // 先检查缓存 + const cachedRecords = getCachedRegionOption() + let records = cachedRecords + + if (!records || records.length === 0) { + // 缓存不存在或已过期,调用接口 + try { + let result = await getTableList('park_info_list') + records = result.records || [] + + if (records && records.length > 0) { + // 保存到缓存 + setCachedRegionOption(records) + } + } catch (error) { + console.error('初始化园区数据失败:', error) + records = [] + } + } + + if (records && records.length > 0) { + // 更新为新的数据格式 + regionOption.value = records.map(el => ({ + name: el.park_name, + code: el.park_code, + pic_url: el.pic_url + })) - for (let i = 0; i < regionOption.value.length; i++) { - const el = regionOption.value[i]; - if (el.code == query.campus_id && el.pic_url) { - backgroundImage.value = el.pic_url - } + for (let i = 0; i < regionOption.value.length; i++) { + const el = regionOption.value[i]; + if (el.code == query.campus_id && el.pic_url) { + backgroundImage.value = el.pic_url } } - } catch (error) { - console.error('初始化园区数据失败:', error) } // 初始化数据 await loadDashboardData() diff --git a/src/views/screen/components/AlertList.vue b/src/views/screen/components/AlertList.vue index a908f34..72bc5ff 100644 --- a/src/views/screen/components/AlertList.vue +++ b/src/views/screen/components/AlertList.vue @@ -58,6 +58,7 @@ interface Props { scrollSpeed?: number scrollInterval?: number, tableTitle?: TableTitle[] + linkUrl?: string } const props = withDefaults(defineProps(), { @@ -73,7 +74,7 @@ let scrollTimer: NodeJS.Timeout | null = null let isScrolling = false const handleItemClick = (item: AlertItem) => { - window.open(`http://10.0.64.20/pms/workorder-list`, '_blank') + window.open(props.linkUrl, '_blank') } // 自动滚动功能 diff --git a/src/views/screen/components/HighRiskAlertPanel.vue b/src/views/screen/components/HighRiskAlertPanel.vue index df96e1d..cc59a32 100644 --- a/src/views/screen/components/HighRiskAlertPanel.vue +++ b/src/views/screen/components/HighRiskAlertPanel.vue @@ -45,7 +45,7 @@ --> - + @@ -72,6 +72,7 @@ interface Props { alertData?: AlertData alertDetails?: AlertItem[] sourceIndex?: number + linkUrl?: string } // 默认值 diff --git a/src/views/screen/components/RiskStatisticsPanel.vue b/src/views/screen/components/RiskStatisticsPanel.vue index 13054ee..6216185 100644 --- a/src/views/screen/components/RiskStatisticsPanel.vue +++ b/src/views/screen/components/RiskStatisticsPanel.vue @@ -11,7 +11,7 @@
-
{{ item.title }}
+
{{ item.title }}
@@ -75,6 +75,10 @@ const defaultChart: ChartItem[] = [ { title: '每年检查(巡检类)', total: 6, rate: 0, status: { notStarted: 3, inProgress: 0, done: 3, voided: 0 } } ] +const handleChartTitleClick = () => { + window.open('http://10.0.64.20/pms/workorder-list', '_blank') +} + const tabCharts = ref>({ 安全类: [...defaultChart], 工程类: [...defaultChart] @@ -204,6 +208,7 @@ const handleTabClick = (tab: TabType) => { font-size: 13px; text-align: center; margin-bottom: 6px; + cursor: pointer; } .chart-content { diff --git a/src/views/screen/mainScreen.vue b/src/views/screen/mainScreen.vue index a6d7cce..85cf4ca 100644 --- a/src/views/screen/mainScreen.vue +++ b/src/views/screen/mainScreen.vue @@ -30,9 +30,11 @@
@@ -215,25 +217,25 @@ const query = reactive({ campus_id: "", }) -// 缓存工具函数 -const CACHE_KEY = '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 = (): CacheData | null => { +const getCachedRegionOption = (): any[] | null => { try { 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) { + if (now - cacheData.timestamp < CACHE_DURATION) { console.log('使用缓存的 regionOption 数据') - return data + return cacheData.records } else { console.log('缓存已过期,清除缓存') sessionStorage.removeItem(CACHE_KEY) @@ -246,17 +248,13 @@ const getCachedRegionOption = (): CacheData | null => { return null } -const setCachedRegionOption = (regionOption: RegionItem[], campus_id: string) => { +const setCachedRegionOption = (records: any[]) => { try { const cacheData: CacheData = { - regionOption, - campus_id - } - const cache = { - data: cacheData, + records, timestamp: Date.now() } - sessionStorage.setItem(CACHE_KEY, JSON.stringify(cache)) + sessionStorage.setItem(CACHE_KEY, JSON.stringify(cacheData)) console.log('regionOption 数据已缓存') } catch (error) { console.error('保存缓存失败:', error) @@ -269,74 +267,54 @@ onMounted(async () => { timeUpdateTimerId.value = setInterval(updateTime, 1000) // 先检查缓存 - const cachedData = getCachedRegionOption() - 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": "花山新区总部" - // } - // ] + let result = await getTableList('park_info_list') + records = result.records || [] + if (records && records.length > 0) { - // 去重region字段,使用Map来确保唯一性 - const regionMap = new Map() - records.forEach(el => { - if (!regionMap.has(el.region)) { - regionMap.set(el.region, { - name: el.region, - code: el.region_id // 使用region_code作为code - }) - } - }) - // 转换为数组 - regionOption.value = Array.from(regionMap.values()) - - console.log('regionOption.value>>>>', regionOption.value); - - // 将园区信息去重 - const parkMap = new Map(); - records.forEach(el => { - if (!parkMap.has(el.park_code)) { - parkMap.set(el.park_code, { - name: el.park_name, - code: el.park_code - }) - } - }) - // 将parkMap转换为数组 - query.campus_id = Array.from(parkMap.values()).map(e1 => e1.code).join(); - // 保存到缓存 - setCachedRegionOption(regionOption.value, query.campus_id) - + setCachedRegionOption(records) } } catch (error) { console.error('初始化园区数据失败:', error) + records = [] } } + + if (records && records.length > 0) { + // 去重region字段,使用Map来确保唯一性 + const regionMap = new Map() + records.forEach(el => { + if (!regionMap.has(el.region)) { + regionMap.set(el.region, { + name: el.region, + code: el.region_id // 使用region_id作为code + }) + } + }) + // 转换为数组 + regionOption.value = Array.from(regionMap.values()) + + console.log('regionOption.value>>>>', regionOption.value); + + // 将园区信息去重 + const parkMap = new Map(); + records.forEach(el => { + if (!parkMap.has(el.park_code)) { + parkMap.set(el.park_code, { + name: el.park_name, + code: el.park_code + }) + } + }) + // 将parkMap转换为数组 + query.campus_id = Array.from(parkMap.values()).map(e1 => e1.code).join(); + } // 初始化数据 await loadDashboardData() diff --git a/src/views/screen/powerMonitoring.vue b/src/views/screen/powerMonitoring.vue index 1e3cd6b..34c3eda 100644 --- a/src/views/screen/powerMonitoring.vue +++ b/src/views/screen/powerMonitoring.vue @@ -109,7 +109,7 @@ 异常 diff --git a/src/views/screen/regionScreen.vue b/src/views/screen/regionScreen.vue index 18a68ef..5f973ec 100644 --- a/src/views/screen/regionScreen.vue +++ b/src/views/screen/regionScreen.vue @@ -33,9 +33,11 @@
@@ -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()