|
|
@@ -21,7 +21,7 @@
|
|
|
@map-crossing-click="handleMapCrossingClick"
|
|
|
@map-crossing-mouseover="handleMapCrossingMouseover"
|
|
|
@map-crossing-mouseout="handleMapCrossingMouseout"
|
|
|
-
|
|
|
+ @bindTrunkMenuTree="handleTrunkMenuUpdate"
|
|
|
/>
|
|
|
</template>
|
|
|
|
|
|
@@ -113,7 +113,7 @@ import TaskCardList from '@/components/ui/TaskCardList.vue';
|
|
|
import CrossingListPanel from '@/components/ui/CrossingListPanel.vue';
|
|
|
import OnlineStatusTabs from '@/components/ui/OnlineStatusTabs.vue';
|
|
|
import DeviceStatusTabs from '@/components/ui/DeviceStatusTabs.vue';
|
|
|
-import { apiGetTongzhouMenuTree, apiGetTrunkLineMenuTree, apiGetTasks, apiGetTrafficTimeSpace, apiGetCrossingTopCharts, apiGetSpecialTaskMonitorData, apiGetCrossingDetailData } from '@/api';
|
|
|
+import { apiGetTongzhouMenuTree, apiGetTasks, apiGetTrafficTimeSpace, apiGetCrossingTopCharts, apiGetSpecialTaskMonitorData, apiGetCrossingDetailData } from '@/api';
|
|
|
|
|
|
|
|
|
export default {
|
|
|
@@ -175,13 +175,12 @@ export default {
|
|
|
},
|
|
|
async mounted() {
|
|
|
// 加载菜单和任务数据
|
|
|
- const [menuData, trunkData, taskData] = await Promise.all([
|
|
|
+ const [menuData, taskData] = await Promise.all([
|
|
|
apiGetTongzhouMenuTree(),
|
|
|
- apiGetTrunkLineMenuTree(),
|
|
|
apiGetTasks({ pageSize: 5 }),
|
|
|
]);
|
|
|
this.menuData = menuData || [];
|
|
|
- this.trunkLineMenuData = trunkData || [];
|
|
|
+ this.trunkLineMenuData = [];
|
|
|
this.tableData = taskData?.list || taskData || [];
|
|
|
|
|
|
// 组件挂载时检查路由
|
|
|
@@ -481,9 +480,7 @@ export default {
|
|
|
const parts = markerId.split('-');
|
|
|
const lineIdx = parseInt(parts[2], 10);
|
|
|
const segmentIdx = parseInt(parts[3], 10);
|
|
|
- // 前4条路线各拆2段,第5条1段,计算干线编号
|
|
|
- const trunkIdx = lineIdx < 4 ? lineIdx * 2 + segmentIdx : 8;
|
|
|
- // 从菜单树中找叶子节点
|
|
|
+ // 从菜单叶子节点中找 _lineIdx 和 _segmentIdx 匹配的
|
|
|
const leaves = [];
|
|
|
const walk = (nodes) => {
|
|
|
if (!Array.isArray(nodes)) return;
|
|
|
@@ -493,7 +490,28 @@ export default {
|
|
|
}
|
|
|
};
|
|
|
walk(this.trunkLineMenuData);
|
|
|
- return leaves[trunkIdx] || null;
|
|
|
+ return leaves.find(n => n._lineIdx === lineIdx && n._segmentIdx === segmentIdx) || null;
|
|
|
+ },
|
|
|
+ handleTrunkMenuUpdate(segments) {
|
|
|
+ this.trunkLineMenuData = [{
|
|
|
+ id: 'trunk_root',
|
|
|
+ label: '主控中心',
|
|
|
+ icon: 'icon-control',
|
|
|
+ isOpen: true,
|
|
|
+ children: [{
|
|
|
+ id: 'trunk_beijing',
|
|
|
+ label: '北京市交警总队',
|
|
|
+ icon: 'icon-police',
|
|
|
+ isOpen: true,
|
|
|
+ children: [{
|
|
|
+ id: 'trunk_tongzhou',
|
|
|
+ label: '通州区',
|
|
|
+ icon: 'icon-district',
|
|
|
+ isOpen: true,
|
|
|
+ children: segments
|
|
|
+ }]
|
|
|
+ }]
|
|
|
+ }];
|
|
|
},
|
|
|
async showTrunkLineDalogs(nodeData) {
|
|
|
console.log('显示干线弹窗组', nodeData.id, nodeData.label);
|