# BUG-027:管理端跨域联合招聘会联盟城市管理弹窗存在字段无障碍问题 - 严重级别:P3(管理弹窗可访问性问题) - 状态:代码已修复,待测试环境浏览器复验 - 环境:test - 角色:PC 监管管理员(超级管理员) - 入口:`/shihezi/jobfair/jobfair/crosscityfair` → “区域管理” → “管理” - 发现时间:2026-07-25 ## 前置条件 使用测试环境监管管理员进入招聘会管理页面;当前数据中联盟城市接口可返回 9 条城市记录。本问题只涉及查看和查询,没有新增、编辑或删除城市。 ## 复现步骤 1. 打开监管管理端“跨域联合招聘会管理”。 2. 保持“区域管理”页签,点击“管理”。 3. 观察“联盟城市管理”弹窗中的“城市名称”查询输入框。 4. 在 Chrome DevTools 查看 Console/Issues 以及输入框 DOM 属性。 5. 可选:输入“石”并点击“查询”,验证问题不影响接口返回;再点击“重置”恢复 9 条列表。 ## 预期结果 “城市名称”查询字段应有稳定的 `id` 或 `name`,可见标签应通过 `for`/`aria-labelledby` 与输入框关联,并设置合理的 `autocomplete`;读屏、键盘和浏览器辅助检查应能识别该字段。查询和重置仍应正常工作。 ## 实际结果 弹窗能正常显示 9 个联盟城市,输入“石”后返回 1 条“石河子市”,重置后恢复 9 条;但 DevTools 记录了字段质量问题: - `A form field element should have an id or name attribute (count: 3)`; - `No label associated with a form field (count: 1)`; - `An element doesn't have an autocomplete attribute`。 只读 DOM 检查显示弹窗输入为 `type=text`,有 `id="name"`,但没有 `name`、`aria-label`、`aria-labelledby` 或 `autocomplete`。可见“城市名称”在视觉上存在,但没有形成稳定的原生标签关联;同页日期输入也没有完整的 `id/name` 语义,因此 DevTools 汇总出的无 id/name 数量为 3。 ## 浏览器证据 - 弹窗全页截图:[JF-AD-024-admin-crosscity-region-dialog.png](../screenshots/JF-AD-024-admin-crosscity-region-dialog.png)。 - 查询结果截图:[JF-AD-025-admin-crosscity-city-search.png](../screenshots/JF-AD-025-admin-crosscity-city-search.png)。 - 初始联盟城市请求:`GET /api/shihezi/cms/cross-city-alliance/list?current=1&pageSize=10`,HTTP 200。 - 条件查询请求:`GET /api/shihezi/cms/cross-city-alliance/list?name=%E7%9F%B3¤t=1&pageSize=10`,HTTP 200,响应列表为 1 条。 - 重置请求:`GET /api/shihezi/cms/cross-city-alliance/list?current=1&pageSize=10`,HTTP 200,响应列表为 9 条。 - Console/Issues:`msgid=181` 的无 id/name 问题、`msgid=183` 的标签关联问题、`msgid=184` 的 autocomplete 问题。 ## 影响范围 管理员可以用鼠标查询城市,但读屏用户、键盘用户和依赖表单语义的自动化/质量工具无法可靠识别该字段。该问题与企业端同一功能的 [BUG-011](./BUG-011-enterprise-crosscity-region-dialog-accessibility.md) 对应,说明同一实现至少在两个角色入口复现。 ## 初步定位 前端 `shz-admin/src/pages/Jobfair/Crosscityfair/index.tsx` 的 `AllianceManageModal` 在约第 170–200 行使用 `ProTable` 查询,在第 232–237 行使用 `ProFormText name="name" label="城市名称"`。当前构建生成的原生输入未补齐 DevTools 所需的表单语义属性;城市列表接口本身返回正常,不是数据接口故障。 ## 建议 为查询输入补充稳定的 `id/name`、显式 `label`/`aria-labelledby` 和符合语义的 `autocomplete`,并统一检查新增/编辑城市表单。修复后应在管理员和企业角色分别重新检查 Console/Issues、无障碍树和键盘焦点。