# P6→NS1/RNS1 缺失项 #18:无障碍适配 ## 简要结论 - 状态:❌ 未解决 - 风险等级:🟡 低 - 项目自有页面(task-list、task-detail 及自定义组件)中无任何 `aria-label`、`aria-role` 等无障碍属性。仅 TDesign 组件库内部自带了部分无障碍支持。 ## 详细审查 ### 审查范围 - `apps/miniprogram/miniprogram/pages/task-list/task-list.wxml` - `apps/miniprogram/miniprogram/pages/task-detail/task-detail.wxml` - `apps/miniprogram/miniprogram/components/clue-card/clue-card.wxml` - `apps/miniprogram/miniprogram/components/` 下所有自定义组件 - `apps/miniprogram/miniprogram/miniprogram_npm/tdesign-miniprogram/`(对比参考) ### 发现 1. 全局 grep `aria-label|aria-role|aria-hidden|role=` 在项目自有 wxml 文件中结果为零 2. 仅 TDesign 组件库(`miniprogram_npm/tdesign-miniprogram/`)内部使用了无障碍属性: - `swiper-nav.wxml`:`aria-role="button" aria-label="上一张/下一张"` - `tabs.wxml`:`aria-role="tablist"` - `upload.wxml`:`aria-role="presentation"` + 动态 `aria-label` 3. task-list.wxml 中的交互元素缺少无障碍标注: - 任务卡片无 `aria-role="button"` 或 `aria-label` - 重试按钮无 `aria-role="button"` - 上下文菜单项无 `aria-label` 4. task-detail.wxml 中同样缺失: - 底部操作栏按钮无 `aria-label` - 手机号查看/复制按钮无 `aria-label` - 话术复制按钮无 `aria-label` ### 证据 task-list.wxml 中任务卡片(无无障碍属性): ```xml ``` task-detail.wxml 中底部操作栏(无无障碍属性): ```xml 问问助手 ``` 对比 TDesign 组件(有无障碍属性): ```xml ``` ### 建议 1. 为所有可交互元素添加 `aria-role` 和 `aria-label`: - 任务卡片:`aria-role="button" aria-label="{{item.customerName}} {{item.taskTypeLabel}}"` - 操作按钮:`aria-role="button" aria-label="问问助手"` / `aria-label="添加备注"` - 上下文菜单项:`aria-role="menuitem" aria-label="置顶"` 2. 为非交互的装饰性元素添加 `aria-hidden="true"`(如 banner 背景图、调试面板) 3. 确保焦点顺序合理:banner → 任务列表 → 底部操作栏 4. 建议创建一个无障碍适配 checklist,在后续页面开发中统一执行 5. 优先级较低,可作为 P13 前端打磨的后续迭代