Files
platforms/frontend/platform_admin/scripts/check-menu-permission-tree.mjs

27 lines
1.3 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.
/**
* 功能:静态检查角色菜单树、叶子提交和自身导航读取契约。
* 版本v1.0.0
*/
import { readFileSync } from 'node:fs';
const read = (path) => readFileSync(new URL(path, import.meta.url), 'utf8');
const resources = read('../src/api/resources.ts');
const form = read('../src/views/resource/ResourceFieldForm.vue');
const tree = read('../src/views/resource/MenuPermissionTree.vue');
const dialog = read('../src/views/resource/ResourceActionDialog.vue');
const payload = read('../src/api/resource-form.ts');
function requireMarker(source, marker, message) {
if (!source.includes(marker)) throw new Error(`角色菜单树检查失败:${message}`);
}
requireMarker(resources, "type: 'menu-tree'", '分配菜单未使用专用树字段');
requireMarker(form, 'MenuPermissionTree', '通用表单未挂载菜单树');
requireMarker(tree, ':indeterminate="groupIndeterminate(group)"', '父菜单缺少半选状态');
requireMarker(tree, 'toggleGroup(group, checked === true)', '父菜单缺少全选或全清行为');
requireMarker(tree, 'group.name }} / {{ child.name', '子菜单未显示完整路径');
requireMarker(payload, "field.type === 'menu-tree'", '空叶子数组不能稳定提交');
requireMarker(dialog, '确认清空菜单权限', '清空全部菜单前缺少明确警告');
console.log('角色菜单树静态检查通过');