# 绩效页 WXML 缺少 data-member-id 导致任务详情页空白

- 日期: 2026-03-25
- Prompt: 绑定小燕访问葛先生任务，依然未找到任务信息
- 影响范围: `performance.wxml`, `task-detail.ts`

## 根因

上一轮修复（perf-to-task-detail-member-query）只改了 TS 逻辑层：
- `performance.ts` 的 `onCustomerTap` 从 `dataset.memberId` 读取值
- `task-detail.ts` 的 `onLoad` 支持 `memberId` 参数
- `task-detail.ts` 的 `loadByMember` 调用 `fetchTaskByMember`

但遗漏了 WXML 模板层——三处 `bindtap` 绑定都没有添加 `data-member-id` 属性：
1. 新客列表 `onCustomerTap` — 只有 `data-name`
2. 常客列表 `onCustomerTap` — 只有 `data-name`
3. 服务记录 `onRecordTap` — 只有 `data-customer-name` 和 `data-task-id`

结果：`e.currentTarget.dataset.memberId` 始终为 `undefined`，传给 task-detail 的 URL 为
`memberId=undefined`，后端收到空字符串或无效值，返回 404，前端显示"未找到任务信息"。

附带问题：`loadByMember` 中 `this.loadData()` 未 await，导致 finally 中 `wx.hideLoading()`
与 loadData 内部的 showLoading/hideLoading 产生竞态。

## 修复

1. `performance.wxml`: 三处 bindtap 添加 `data-member-id="{{item.memberId}}"` / `data-member-id="{{rec.memberId}}"`
2. `task-detail.ts`: `loadByMember` 移除冗余的 showLoading/hideLoading，添加 `await this.loadData()`

## 验证

- 后端 `get_task_by_member(2799207363643141, 8778, 2790685415443269)` 返回 task_id=210
- Pydantic 序列化成功，JSON 输出 `id=210, customerName=葛先生`
- getDiagnostics 三个文件零错误

## 教训

TS 逻辑层改了 `dataset.xxx` 读取，必须同步检查 WXML 模板中对应的 `data-xxx` 属性是否存在。
这是「跨页面跳转必须传可查询 ID」规则的延伸：不仅要在 TS 中传 ID，还要确保 WXML 模板中
`data-*` 属性绑定了正确的数据字段。
