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 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.

# 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、无障碍树和键盘焦点。