Files
medical-mall/debug-system-info-browser.js
2026-02-02 20:07:37 +08:00

102 lines
3.6 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.
// 在浏览器控制台中运行此脚本,诊断 system-info 页面问题
// 复制整个内容到浏览器控制台并按回车执行
(function () {
console.log("=== System-Info 页面诊断工具 ===\n");
// 1. 检查当前路由
const pages = getCurrentPages();
const currentPage = pages[pages.length - 1];
console.log("1. 当前路由信息:");
console.log(" - route:", currentPage?.route);
console.log(" - options:", currentPage?.options);
console.log("");
// 2. 检查 Vue 组件实例(寻找 AdminLayout
console.log("2. 查找 AdminLayout 组件实例:");
try {
// 通过 DOM 查找 AdminLayout 的根元素
const layoutRoot = document.querySelector(".layout-root");
if (layoutRoot) {
console.log(" ✓ 找到 .layout-root DOM 元素");
// 尝试获取 Vue 实例
const vueInstance = layoutRoot.__vueParentComponent || layoutRoot.__vue__;
if (vueInstance) {
console.log(" ✓ 找到 Vue 实例");
// 检查 props
const props = vueInstance.props || vueInstance.propsData;
console.log(" - currentPage prop:", props?.currentPage);
// 检查内部状态
const setupState = vueInstance.setupState || vueInstance.data;
if (setupState) {
console.log(
" - activeMenuId:",
setupState.activeMenuId?.value || setupState.activeMenuId,
);
console.log(
" - activeSubId:",
setupState.activeSubId?.value || setupState.activeSubId,
);
console.log(
" - activeGroups length:",
(setupState.activeGroups?.value || setupState.activeGroups)?.length,
);
}
} else {
console.log(" ✗ 未找到 Vue 实例(可能是渲染问题)");
}
} else {
console.log(" ✗ 未找到 .layout-root DOM 元素");
console.log(" → AdminLayout 组件可能未被渲染!");
}
} catch (e) {
console.log(" ✗ 检查过程出错:", e.message);
}
console.log("");
// 3. 检查 AdminSubSider
console.log("3. 检查二级侧边栏:");
const subSider = document.querySelector(".sub-sider");
if (subSider) {
console.log(" ✓ 找到 .sub-sider DOM 元素");
console.log(
" - 是否可见:",
getComputedStyle(subSider).display !== "none",
);
} else {
console.log(" ✗ 未找到 .sub-sider DOM 元素");
console.log(' → 可能是因为 v-if="activeGroups.length > 0" 条件不满足');
}
console.log("");
// 4. 检查控制台错误
console.log("4. 建议排查步骤:");
console.log(" a) 打开 Vue DevTools 查看组件树");
console.log(
' b) 检查是否有 "Failed to resolve component: AdminLayout" 错误',
);
console.log(" c) 检查 system-info.uvue 是否正确导入了 AdminLayout");
console.log(" d) 检查 menu.uts 中 system-info 的配置");
console.log(" e) 检查网络请求,确保所有资源加载成功");
console.log("");
// 5. 模拟 nav 匹配逻辑
console.log('5. 模拟导航匹配 (currentPage="system-info"):');
console.log(" 根据 nav.uts 逻辑,应该匹配到:");
console.log(' - activeMenuId: "maintain"');
console.log(' - activeSubId: "system-info"');
console.log(' - 这应该显示 "维护" 菜单的二级侧边栏');
console.log("");
console.log("=== 诊断完成 ===");
console.log("如果 AdminLayout 未渲染,请检查:");
console.log(
"1. system-info.uvue 文件中是否有 <script setup> 导入 AdminLayout",
);
console.log("2. 浏览器控制台是否有编译错误");
console.log("3. 刷新页面后重新运行此诊断脚本");
})();