diff --git a/src/packages/components/Charts/ConfinedSpace/PieCircleCommen/config.ts b/src/packages/components/Charts/ConfinedSpace/PieCircleCommen/config.ts index d2f4a00..d05a03b 100644 --- a/src/packages/components/Charts/ConfinedSpace/PieCircleCommen/config.ts +++ b/src/packages/components/Charts/ConfinedSpace/PieCircleCommen/config.ts @@ -121,7 +121,7 @@ export const option = { // name: '总数', type: 'pie', radius: ['50%', '70%'], - center: ['30%', '50%'], + center: ['31.4%', '50%'], avoidLabelOverlap: false, label: { show: false, diff --git a/src/packages/components/Charts/ConfinedSpace/PieCircleCommen/index.vue b/src/packages/components/Charts/ConfinedSpace/PieCircleCommen/index.vue index 8c265e5..105b722 100644 --- a/src/packages/components/Charts/ConfinedSpace/PieCircleCommen/index.vue +++ b/src/packages/components/Charts/ConfinedSpace/PieCircleCommen/index.vue @@ -179,27 +179,35 @@ function generateTimeRange(period: string): { startTime: string; endTime: string }; } const fetchAlarmData = async ({ startTime, endTime }: { startTime: string; endTime: string }) => { + const defaultNoData = { + dimensions: props.chartConfig.option.dataset.dimensions, + source: [{ + [props.chartConfig.option.dataset.dimensions[0]]: "无数据", + [props.chartConfig.option.dataset.dimensions[1]]: 0 + }], + }; try { const res = await axios.get( - `/dev/space/getNumberByAlarmLevel`, // 手动添加 dev + `/dev/space/getNumberByAlarmLevel`, // 手动添加 dev { params: { startTime, endTime }, // 请求参数(对应原 params) responseType: 'json', } ); - if (res.data.state === true) { + // 检查 API 响应状态和数据是否有效且非空 + if (res.data.state === true && res.data.value && res.data.value.length > 0) { console.log(res.data) return { - dimensions: props.chartConfig.option.dataset.dimensions, + dimensions: props.chartConfig.option.dataset.dimensions, source: res.data.value, }; } else { - console.error('API调用失败:', res.data) - return {} + console.warn('API调用成功但数据为空或状态异常,显示默认无数据。', res.data) + return defaultNoData; } } catch (error) { console.error('获取图表数据失败:', error) - return {} + return defaultNoData; } }; @@ -207,11 +215,8 @@ const handleBorderSelectChange = async (newValue: string) => { props.chartConfig.option.selectOption.selectValue = newValue; const { startTime, endTime } = generateTimeRange(newValue); const fetchedData = await fetchAlarmData({ startTime, endTime }); - if (fetchedData) { - dataHandle(fetchedData); - } else { - dataHandle(undefined); // 清空图表或显示默认状态 - } + dataHandle(fetchedData); + }; watch( diff --git a/src/packages/components/Charts/ConfinedSpace/yushiVideo/index.vue b/src/packages/components/Charts/ConfinedSpace/yushiVideo/index.vue index 20498c7..b4e8172 100644 --- a/src/packages/components/Charts/ConfinedSpace/yushiVideo/index.vue +++ b/src/packages/components/Charts/ConfinedSpace/yushiVideo/index.vue @@ -518,11 +518,26 @@ const getDataSource = (newData: any) => { } }) } - +const fetchCameraTree = async () => { + console.log('fetchCameraTree: 正在获取摄像头树数据...'); + try { + const res = await axios.get('/dev/api/camera/tree'); + if (res.status === 200 && res.data && res.data.state) { + console.log("API 响应数据 (Camera Tree):", res.data.value); + return res.data.value; + } else { + console.warn('API 返回非预期数据结构或空数据:', res); + return []; + } + } catch (error) { + console.error('获取摄像头树失败:', error); + return []; + } +}; onMounted(async () => { if (isPreview()) { yushiStore.setCurrentCameraOrgTree(yushiStore.getCameraOrgTree) - + props.chartConfig.option.dataset.list = await fetchCameraTree(); await initplayer(props.chartConfig.option.dataset) if (props.chartConfig.option.dataset.list) { //加载title @@ -533,7 +548,8 @@ onMounted(async () => { }) } } -}) +} +) onDeactivated(() => { //@ts-ignore