Agent_For_Supmea/commands.js

89 lines
5.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

export const COMMANDS = [
{ key: "首页", menu: "首页", route: "/首页" },
{ key: "添加设备", menu: "添加设备", route: "/添加设备/添加设备" },
{ key: "监控中心", menu: "监控中心", route: "/监控中心/监控中心" },
{ key: "摄像头管理", menu: "摄像头管理", route: "/云视频管理/摄像头管理" },
{ key: "云视频监控", menu: "云视频监控", route: "/云视频监控/云视频监控" },
{ key: "GIS监控", menu: "GIS监控", route: "/GIS管理/GIS监控" },
{ key: "我的流量", menu: "我的流量", route: "/资源管理/我的流量" },
{ key: "我的资源", menu: "我的资源", route: "/资源管理/我的资源" },
{ key: "我的订单", menu: "我的订单", route: "/资源管理/我的订单" },
{ key: "仪表积分", menu: "仪表积分", route: "/资源管理/仪表积分" },
{ key: "报警设置", menu: "报警设置", route: "/报警管理/报警设置" },
{ key: "报警通知", menu: "报警通知", route: "/报警管理/报警通知" },
{ key: "报警记录", menu: "报警记录", route: "/报警管理/报警记录" },
{ key: "基础报表", menu: "基础报表", route: "/报表管理/基础报表" },
{ key: "高级报表配置", menu: "高级报表配置", route: "/报表管理/高级报表配置" },
{ key: "高级报表", menu: "高级报表", route: "/报表管理/高级报表" },
{ key: "应用场景", menu: "应用场景", route: "/仪表管理/应用场景" },
{ key: "仪表管理", menu: "仪表管理", route: "/仪表管理/仪表管理" },
{ key: "虚拟仪表", menu: "虚拟仪表", route: "/仪表管理/虚拟仪表" },
{ key: "物位监测", menu: "物位监测", route: "/场景管理/物位监测/物位监测" },
{ key: "物位监测配置", menu: "物位监测配置", route: "/场景管理/物位监测/物位监测配置" },
{ key: "车间看板", menu: "车间看板", route: "/场景管理/车间看板/车间看板" },
{ key: "车间看板配置", menu: "车间看板配置", route: "/场景管理/车间看板/车间看板配置" },
{ key: "能源结算", menu: "能源结算", route: "/场景管理/能源抄表/能源结算" },
{ key: "能源结算配置", menu: "能源结算配置", route: "/场景管理/能源抄表/能源结算配置" },
{ key: "多租户能源结算", menu: "多租户能源结算", route: "/场景管理/多租户结算/多租户能源结算" },
{ key: "租户管理", menu: "租户管理", route: "/场景管理/多租户结算/租户管理" },
{ key: "计价方式管理", menu: "计价方式管理", route: "/场景管理/多租户结算/计价方式管理" },
{ key: "单染缸印染结算", menu: "单染缸印染结算", route: "/场景管理/印染结算/单染缸印染结算" },
{ key: "多染缸印染结算", menu: "多染缸印染结算", route: "/场景管理/印染结算/多染缸印染结算" },
{ key: "染缸能耗一览表", menu: "染缸能耗一览表", route: "/场景管理/印染结算/染缸能耗一览表" },
{ key: "印染结算配置", menu: "印染结算配置", route: "/场景管理/印染结算/印染结算配置" },
{ key: "尘埃粒子车间", menu: "尘埃粒子车间", route: "/场景管理/尘埃粒子/尘埃粒子车间" },
{ key: "洁净度一览表", menu: "洁净度一览表", route: "/场景管理/尘埃粒子/洁净度一览表" },
{ key: "尘埃粒子配置", menu: "尘埃粒子配置", route: "/场景管理/尘埃粒子/尘埃粒子配置" },
{ key: "消息管理", menu: "消息管理", route: "/系统管理/消息管理" },
{ key: "数据服务", menu: "数据服务", route: "/系统管理/数据服务" },
{ key: "数据下云", menu: "数据下云", route: "/系统管理/数据下云" },
];
export function expandParentMenu(span) {
const subMenu = span.closest(".el-sub-menu");
if (subMenu) {
const title = subMenu.querySelector(".el-sub-menu__title");
if (title && !subMenu.classList.contains("is-opened")) {
title.click();
console.log("📂 已展开父菜单");
}
}
}
export function goToRoute(route) {
// 兼容 Hash 路由和普通路由,根据实际项目情况
window.location.hash = route;
console.log("✅ 已跳转到路由:", route);
}
export function handleCommand(keyOrText) {
console.log("🚀 执行指令逻辑:", keyOrText);
// 尝试精确匹配 (AI返回的Key) 或 模糊匹配 (用户输入的Text)
const command = COMMANDS.find(c => c.key === keyOrText) ||
COMMANDS.find(c => keyOrText.includes(c.key));
if (!command) {
console.warn("无法执行,未找到对应菜单动作:", keyOrText);
return;
}
// 查找菜单 DOM 元素 (根据你原有的逻辑)
const allSpans = Array.from(document.querySelectorAll("span"));
// 优先全匹配,防止"报表"匹配到"高级报表"
let span = allSpans.find(el => el.innerText.trim() === command.menu);
if (span) {
expandParentMenu(span);
// 模拟点击触发 Vue/React 的路由跳转,或者直接改 Hash
// 如果页面需要点击才能触发加载,建议 span.click()
// 如果只是纯 hash 跳转goToRoute 即可
// 建议先点击,确保侧边栏高亮
span.click();
goToRoute(command.route);
} else {
console.error(`❌ 未找到菜单元素: ${command.menu}`);
}
}