Files
shz-backend/docs/test-reports/job-fair/2026-07-25/bugs/BUG-027-admin-crosscity-region-dialog-accessibility.md

56 lines
3.7 KiB
Markdown
Raw Normal View History

# 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&current=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` 在约第 170200 行使用 `ProTable` 查询,在第 232237 行使用 `ProFormText name="name" label="城市名称"`。当前构建生成的原生输入未补齐 DevTools 所需的表单语义属性;城市列表接口本身返回正常,不是数据接口故障。
## 建议
为查询输入补充稳定的 `id/name`、显式 `label`/`aria-labelledby` 和符合语义的 `autocomplete`,并统一检查新增/编辑城市表单。修复后应在管理员和企业角色分别重新检查 Console/Issues、无障碍树和键盘焦点。