菜单跳转

This commit is contained in:
李鹏宇
2026-07-02 11:16:06 +08:00
parent aefea68ae6
commit cbdbcada13
@@ -0,0 +1,51 @@
/** @odoo-module **/
import { jsonrpc } from "@web/core/network/rpc_service";
import { FormController } from "@web/views/form/form_controller";
import { patch } from "@web/core/utils/patch";
/**
* 主动感知规则表单:测试按钮点击处理
*
* 拦截"测试主动感知"按钮的点击:
* 1. 调用 /ai/rule/test_guide 创建测试消息
* 2. 成功后派发事件通知浮动聊天框打开并刷新
*/
patch(FormController.prototype, "yuthon_ai_agent.ActiveGuideTest", {
setup() {
super.setup(...arguments);
},
});
// 注入全局函数到 window,供 onclick 调用
window._testActiveGuide = async function (btnEl) {
const formEl = btnEl.closest(".o_form_view");
if (!formEl) return;
// 从 URL 或 data 属性获取 record id
const resId = formEl.dataset?.resId
|| (new URLSearchParams(window.location.search)).get("id");
if (!resId) {
alert("无法获取规则 ID");
return;
}
btnEl.disabled = true;
btnEl.textContent = "⏳ 测试中...";
try {
const res = await jsonrpc("/ai/rule/test_guide", { rule_id: parseInt(resId) });
if (res.error) {
alert("错误: " + res.error);
} else {
// 通知浮动聊天框打开
window.dispatchEvent(new CustomEvent("yuthon:ai_open_chat", {
detail: { forceOpen: true },
}));
}
} catch (e) {
alert("测试失败: " + e.message);
} finally {
btnEl.disabled = false;
// 恢复按钮文字(Odoo 会重新渲染)
}
};