/** * 企业信息管理 - 页面 UI / 字段展示 自动化检查 * 运行: node scripts/test-enterprise-info-ui-check.mjs */ import fs from "node:fs"; import path from "node:path"; const ROOT = path.resolve(import.meta.dirname, ".."); const PAGE_DIR = path.join(ROOT, "src/pages/Container/EnterpriseInfo"); const UTILS = path.join(ROOT, "src/utils"); const checks = []; function pass(id, name, ok, detail = "") { checks.push({ id, name, status: ok ? "PASS" : "FAIL", detail }); } function read(rel) { return fs.readFileSync(path.join(ROOT, rel), "utf8"); } function fileExists(rel) { return fs.existsSync(path.join(ROOT, rel)); } // ── 公共能力 ── pass("UI-COMMON-01", "mockUpload 默认地址", fileExists("src/utils/mockUpload.js")); pass("UI-COMMON-02", "enterpriseForm 下拉适配", fileExists("src/utils/enterpriseForm.js")); pass("UI-COMMON-03", "DEFAULT_UPLOAD_FILE_URL 配置", read("src/utils/mockUpload.js").includes("gd-hbimg.huaban.com")); // ── 各页面 ── const pages = [ ["OrgInfo", "机构信息"], ["DepartmentPosition", "部门岗位"], ["PersonnelInfo/List", "人员信息"], ["PersonnelChange", "人员变更"], ["ResignationApply", "离职申请"], ["QualificationCert", "资质证书"], ["EquipInfo", "装备信息"], ]; pages.forEach(([rel, label]) => { const content = read(`src/pages/Container/EnterpriseInfo/${rel}/index.js`); pass(`UI-PAGE-${rel}-01`, `${label}-页面存在`, content.length > 100); pass(`UI-PAGE-${rel}-02`, `${label}-使用 PageHeader`, content.includes("PageHeader")); const usesVerticalForm = content.includes('layout="vertical"'); const usesBrokenLabelCol = /labelCol=\{\{\s*span:\s*24/.test(content); const usesFormBuilderModal = /Modal[\s\S]*FormBuilder/.test(content); pass(`UI-PAGE-${rel}-03`, `${label}-弹窗表单布局`, usesVerticalForm || !usesFormBuilderModal || !usesBrokenLabelCol, usesFormBuilderModal && !usesVerticalForm && usesBrokenLabelCol ? "Modal 内 FormBuilder labelCol=24 导致输入框不可见" : ""); }); // ── 人员:部门岗位下拉 ── const staffPage = read("src/pages/Container/EnterpriseInfo/PersonnelInfo/List/index.js"); pass("UI-STAFF-01", "人员-部门 Select", staffPage.includes("deptId") && staffPage.includes("Select")); pass("UI-STAFF-02", "人员-岗位 Select", staffPage.includes("positionId") && staffPage.includes("Select")); pass("UI-STAFF-03", "人员-列表部门列", staffPage.includes('dataIndex: "deptName"')); pass("UI-STAFF-04", "人员-重置密码", staffPage.includes("onResetPassword")); // ── 离职 ── const resignPage = read("src/pages/Container/EnterpriseInfo/ResignationApply/index.js"); pass("UI-RESIGN-01", "离职-审核状态列", resignPage.includes("auditStatus")); pass("UI-RESIGN-02", "离职-用户名列", resignPage.includes('dataIndex: "account"')); pass("UI-RESIGN-03", "离职-默认上传", resignPage.includes("resolveUploadFileId") || resignPage.includes("mockUpload")); // ── 变更次数样式 ── const changePage = read("src/pages/Container/EnterpriseInfo/PersonnelChange/index.js"); pass("UI-CHANGE-01", "变更-次数样式", changePage.includes("CHANGE_COUNT_STYLE")); pass("UI-CHANGE-02", "变更-从 record 渲染", changePage.includes("getChangeCount(record)")); pass("UI-CHANGE-03", "变更-就职/审核状态", changePage.includes("getEmploymentStatusLabel") && changePage.includes("getResignAuditStatusLabel")); pass("UI-RESIGN-04", "离职-从 record 渲染审核状态", resignPage.includes("getResignAuditStatusLabel(record)")); pass("UI-RESIGN-05", "离职-纯文本状态", !resignPage.includes(" { const icon = c.status === "PASS" ? "✓" : "✗"; if (c.status === "PASS") passed += 1; else failed += 1; console.log(`${icon} [${c.status}] ${c.id} ${c.name}${c.detail ? ` — ${c.detail}` : ""}`); }); console.log(`\n合计: ${checks.length} 通过: ${passed} 失败: ${failed}\n`); process.exit(failed > 0 ? 1 : 0);