地区左下角对接
This commit is contained in:
@@ -49,7 +49,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import {getTableList, getTableData} from './report'
|
||||
import {getTableList, getTableData, getWorkOrderStatistics} from './report'
|
||||
import {ref, onMounted, watch, onUnmounted} from 'vue'
|
||||
import {useRoute, useRouter} from 'vue-router'
|
||||
import RegionSelector from './components/RegionSelector.vue'
|
||||
@@ -73,7 +73,7 @@ interface RegionItem {
|
||||
code: string
|
||||
}
|
||||
|
||||
type TabType = '危险作业' | '安全考核' | '安全、保密培训'
|
||||
type TabType = '安全类' | '工程类'
|
||||
|
||||
// 响应式数据
|
||||
const currentDateTime = ref<string>('')
|
||||
@@ -569,93 +569,84 @@ const handleHiddenDangerPannelData = (query) => {
|
||||
// 处理风险统计tab切换
|
||||
const handleRiskTabChange = async (tab: TabType) => {
|
||||
console.log('Tab changed to:', tab)
|
||||
|
||||
try {
|
||||
let code = ''
|
||||
let workOrderType = ''
|
||||
switch (tab) {
|
||||
case '危险作业':
|
||||
code = 'hazardous_operations'
|
||||
case '安全类':
|
||||
workOrderType = '安全生产'
|
||||
break
|
||||
case '安全考核':
|
||||
code = 'safety_assessment'
|
||||
break
|
||||
case '安全、保密培训':
|
||||
code = 'security_training'
|
||||
case '工程类':
|
||||
workOrderType = '物业服务-工程'
|
||||
break
|
||||
default:
|
||||
code = 'hazardous_operations'
|
||||
workOrderType = '安全生产'
|
||||
}
|
||||
if (code == 'hazardous_operations') {
|
||||
// 根据不同的tab请求不同的接口
|
||||
getTableList(
|
||||
code,
|
||||
{...query, activeTab: tab}
|
||||
).then(response => {
|
||||
// 更新风险统计数据 - 传递完整的数组数据用于饼图显示
|
||||
if (response.records && response.records.length > 0) {
|
||||
dangerDetail.value = response.records
|
||||
}
|
||||
}).catch(error => {
|
||||
console.error('获取风险统计数据失败:', error)
|
||||
if (isFirstLoad.value) {
|
||||
// dangerDetail.value = [
|
||||
// {
|
||||
// description: '2025-08-10 上午8:00 武汉园区隐患内容管理 状态 处理',
|
||||
// alarm_level_code: 'general',
|
||||
// alarm_status: '已关闭',
|
||||
// alarm_biz_id: '20250827164305283937'
|
||||
// },
|
||||
// {
|
||||
// description: '2025-08-10 上午8:00 武汉园区隐患内容管理 状态 处理',
|
||||
// alarm_level_code: 'general',
|
||||
// alarm_status: '已关闭',
|
||||
// alarm_biz_id: '20250827164305283937'
|
||||
// }, {
|
||||
// description: '2025-08-10 上午8:00 武汉园区隐患内容管理 状态 处理',
|
||||
// alarm_level_code: 'general',
|
||||
// alarm_status: '已关闭',
|
||||
// alarm_biz_id: '20250827164305283937'
|
||||
// }, {
|
||||
// description: '2025-08-10 上午8:00 武汉园区隐患内容管理 状态 处理',
|
||||
// alarm_level_code: 'general',
|
||||
// alarm_status: '已关闭',
|
||||
// alarm_biz_id: '20250827164305283937'
|
||||
// }, {
|
||||
// description: '2025-08-10 上午8:00 武汉园区隐患内容管理 状态 处理',
|
||||
// alarm_level_code: 'general',
|
||||
// alarm_status: '已关闭',
|
||||
// alarm_biz_id: '20250827164305283937'
|
||||
// }, {
|
||||
// description: '2025-08-10 上午8:00 武汉园区隐患内容管理 状态 处理',
|
||||
// alarm_level_code: 'general',
|
||||
// alarm_status: '已关闭',
|
||||
// alarm_biz_id: '20250827164305283937'
|
||||
// }
|
||||
// ]
|
||||
|
||||
// 同时获取维保任务和巡检任务的数据
|
||||
const [maintenanceResponse, inspectionResponse] = await Promise.all([
|
||||
getWorkOrderStatistics({workOrderType, taskType: '维保任务', campus_id: query.campus_id}).catch(error => {
|
||||
console.error('获取维保任务数据失败:', error)
|
||||
return { records: [] }
|
||||
}),
|
||||
getWorkOrderStatistics({workOrderType, taskType: '巡检任务', campus_id: query.campus_id}).catch(error => {
|
||||
console.error('获取巡检任务数据失败:', error)
|
||||
return { records: [] }
|
||||
})
|
||||
])
|
||||
|
||||
// 周期映射
|
||||
const cycleMap: Record<string, string> = {
|
||||
'day': '每日',
|
||||
'month': '每月',
|
||||
'year': '每年'
|
||||
}
|
||||
|
||||
// 将API数据转换为图表数据格式
|
||||
const convertToChartData = (records: any[], taskTypeName: string): any[] => {
|
||||
const charts: any[] = []
|
||||
|
||||
// 按周期分组
|
||||
const cycleGroups: Record<string, any> = {}
|
||||
records.forEach((record: any) => {
|
||||
const cycle = record.cycle || 'day'
|
||||
if (!cycleGroups[cycle]) {
|
||||
cycleGroups[cycle] = record
|
||||
}
|
||||
})
|
||||
} else {
|
||||
// 根据不同的tab请求不同的接口
|
||||
getTableList(
|
||||
code,
|
||||
{...query, activeTab: tab}
|
||||
).then(response => {
|
||||
// 更新风险统计数据 - 传递完整的数组数据用于饼图显示
|
||||
if (response.records && response.records.length > 0) {
|
||||
riskStatistics.value = response.records
|
||||
} else {
|
||||
// 如果没有数据,设置默认值
|
||||
riskStatistics.value = [
|
||||
{
|
||||
csmpus_name: "雄安新区总部",
|
||||
finishCount: "0",
|
||||
participateCount: "0"
|
||||
}
|
||||
]
|
||||
}
|
||||
}).catch(error => {
|
||||
console.error('获取风险统计数据失败:', error)
|
||||
|
||||
// 创建6个图表(3个周期 x 2个任务类型,但这里只处理一种任务类型)
|
||||
const cycles = ['day', 'month', 'year']
|
||||
cycles.forEach((cycle) => {
|
||||
const data = cycleGroups[cycle] || {}
|
||||
const title = `${cycleMap[cycle]}检查(${taskTypeName})`
|
||||
|
||||
charts.push({
|
||||
title,
|
||||
total: Number(data.total) || 0,
|
||||
status: {
|
||||
notStarted: Number(data.pending) || 0,
|
||||
inProgress: Number(data.processing) || 0,
|
||||
done: Number(data.processed) || 0,
|
||||
voided: Number(data.closed) || 0
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
return charts
|
||||
}
|
||||
|
||||
// 转换维保和巡检数据
|
||||
const maintenanceCharts = convertToChartData(maintenanceResponse.records || [], '维保类')
|
||||
const inspectionCharts = convertToChartData(inspectionResponse.records || [], '巡检类')
|
||||
|
||||
// 合并为6个图表:先维保(3个),后巡检(3个)
|
||||
const allCharts = [...maintenanceCharts, ...inspectionCharts]
|
||||
|
||||
// 更新riskStatistics
|
||||
riskStatistics.value[tab] = allCharts
|
||||
|
||||
console.log('更新后的riskStatistics:', riskStatistics.value)
|
||||
} catch (error) {
|
||||
console.error('获取风险统计数据失败:', error)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user