|
|
@@ -39,8 +39,8 @@
|
|
|
@node-click="handleMenuClick" />
|
|
|
</TechTabPane>
|
|
|
<TechTabPane label="干线" name="trunkLine" class="menu-scroll-view">
|
|
|
- <MenuItem v-for="item in menuData" :key="item.id" :node="item" :level="0"
|
|
|
- @node-click="handleMenuClick">
|
|
|
+ <MenuItem v-for="item in trunkLineMenuData" :key="item.id" :node="item" :level="0"
|
|
|
+ @node-click="handleTrunkLineClick">
|
|
|
<template #label="{ node }">
|
|
|
<span v-if="node.children && node.children.length > 0">{{ node.label }}</span>
|
|
|
<span v-else>{{ node.label }} 绿波带</span>
|
|
|
@@ -115,7 +115,7 @@ import CrossingListPanel from '@/components/ui/CrossingListPanel.vue';
|
|
|
import OnlineStatusTabs from '@/components/ui/OnlineStatusTabs.vue';
|
|
|
import DeviceStatusTabs from '@/components/ui/DeviceStatusTabs.vue';
|
|
|
import RingDonutChart from '@/components/ui/RingDonutChart.vue';
|
|
|
-import { apiGetTongzhouMenuTree, apiGetTasks, apiGetTrafficTimeSpace, apiGetCrossingTopCharts, apiGetSpecialTaskMonitorData, apiGetOverviewTopCharts, apiGetCrossingDetailData } from '@/api';
|
|
|
+import { apiGetTongzhouMenuTree, apiGetTrunkLineMenuTree, apiGetTasks, apiGetTrafficTimeSpace, apiGetCrossingTopCharts, apiGetSpecialTaskMonitorData, apiGetOverviewTopCharts, apiGetCrossingDetailData } from '@/api';
|
|
|
|
|
|
|
|
|
export default {
|
|
|
@@ -140,6 +140,7 @@ export default {
|
|
|
// 左侧边栏数据
|
|
|
activeLeftTab: '',
|
|
|
menuData: [],
|
|
|
+ trunkLineMenuData: [],
|
|
|
// 地图模式切换数据
|
|
|
currentView: 'map-mode',
|
|
|
viewOptions: [
|
|
|
@@ -178,11 +179,13 @@ export default {
|
|
|
},
|
|
|
async mounted() {
|
|
|
// 加载菜单和任务数据
|
|
|
- const [menuData, taskData] = await Promise.all([
|
|
|
+ const [menuData, trunkData, taskData] = await Promise.all([
|
|
|
apiGetTongzhouMenuTree(),
|
|
|
+ apiGetTrunkLineMenuTree(),
|
|
|
apiGetTasks({ pageSize: 5 }),
|
|
|
]);
|
|
|
this.menuData = menuData || [];
|
|
|
+ this.trunkLineMenuData = trunkData || [];
|
|
|
this.tableData = taskData?.list || taskData || [];
|
|
|
|
|
|
// 组件挂载时检查路由
|
|
|
@@ -462,12 +465,26 @@ export default {
|
|
|
this.showCrossingDetailDialogs(rowData);
|
|
|
},
|
|
|
// 显示干线弹窗组
|
|
|
+ // 干线菜单叶子节点点击
|
|
|
+ handleTrunkLineClick(nodeData) {
|
|
|
+ console.log('干线菜单点击:', nodeData);
|
|
|
+ this.showTrunkLineDalogs(nodeData);
|
|
|
+ },
|
|
|
async showTrunkLineDalogs(nodeData) {
|
|
|
console.log('显示干线弹窗组', nodeData.id, nodeData.label);
|
|
|
- const tsData = await apiGetTrafficTimeSpace();
|
|
|
+ // 优先使用菜单节点自带的路口和距离数据
|
|
|
+ let tsData;
|
|
|
+ if (nodeData.intersections && nodeData.distances) {
|
|
|
+ tsData = await apiGetTrafficTimeSpace({
|
|
|
+ intersections: nodeData.intersections,
|
|
|
+ distances: nodeData.distances,
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ tsData = await apiGetTrafficTimeSpace();
|
|
|
+ }
|
|
|
this.$refs.layout.openDialog({
|
|
|
id: nodeData.id,
|
|
|
- title: nodeData.label,
|
|
|
+ title: nodeData.label + ' 绿波带',
|
|
|
component: 'TrafficTimeSpace',
|
|
|
width: 1000,
|
|
|
height: 500,
|