fix(pc): 找回被 #feedback 吞掉的表单校验错误 + 收集任务文案精简
naive 的 NFormItem 一旦用了 #feedback 插槽,renderExplains 就永不渲染
(children || feedback ? feedback : …),校验错误被完全遮住 —— 用户看到的是
"红框 + 一句无关的正常提示",现象上等价于"点了保存没反应"。RoleFormModal 里
早就记录过这个机制,但只在自己那个文件绕开了,没固化成约定,于是扩散到 7 处。
- 7 处 validate() 的 catch 改成 message.error(firstError(errors) ?? 兜底)
(login / org / role / user / task 建改任务 / 材料规则 / 表单设计)
- ⚠️ firstError 必须摊平后再取:naive reject 出来的是嵌套数组,
errors[0].message 恒为 undefined,兜底文案会把每条错误都吞成"请检查表单填写"
- 批次号在"修改"时置灰(task_code = 批次号 + 4 位序号,且同时是文件目录名,
而服务端 update 无条件写 batch_no、没有"编码已生成"的保护)
- 删掉「本期范围」区块(收集模式 / 认定类型恒定,请求体里仍写死 1)
- 清掉教材式描述:extras_json / extra_ 前缀 / 幂等 / 接收能力 / 识别结果只用于提示
- 规则沉淀进 frontend-pc/AGENTS.md 第 10 条与交接摘要 §一·四十
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: project-guide
|
||||
description: PC 管理端的技术栈、目录结构、菜单与权限模型,以及九条最容易写错的约定。开始任何 PC 端改动前加载本技能。
|
||||
description: PC 管理端的技术栈、目录结构、菜单与权限模型,以及十条最容易写错的约定。开始任何 PC 端改动前加载本技能。
|
||||
---
|
||||
|
||||
# 项目总览(PC 管理端)
|
||||
@@ -42,7 +42,7 @@ src/
|
||||
- 平台运营要**先选学校**(`stores/acting-tenant.ts` → 请求头 `X-Tenant-Id`);
|
||||
不选就不发请求,否则会把各租户数据混在一起且看起来正常。
|
||||
|
||||
## 九条最容易写错的约定
|
||||
## 十条最容易写错的约定
|
||||
|
||||
1. **没有 auto-import**:组件与 API 全显式 import,标签写 **PascalCase**。
|
||||
漏 import 是**静默故障**(未知自定义元素 → 样式整块丢掉,typecheck/lint 全绿);
|
||||
@@ -67,6 +67,15 @@ src/
|
||||
9. **页面内的页签用工具条分段按钮,不要 `NTabs`**:`NTabPane` 要额外 flex 化才能维持
|
||||
`.page-card` 高度链,否则表格高度算成 0、**一行都看不见**(本仓踩过);
|
||||
且第 5 条那个 `tab="..."` 的坑也在这条路上。各页签的 list/page 状态分开维护。
|
||||
10. **`#feedback` 会遮住校验错误**:`NFormItem` 只要用了这个插槽,
|
||||
`renderExplains`(校验错误)就**永不渲染**(`children || feedback ? feedback : …`),
|
||||
用户看到的是「红框 + 一句无关的正常提示」=「点了保存没反应」。
|
||||
所以带 `#feedback` 的表单,`validate()` 失败必须自己
|
||||
`message.error(firstError(errors) ?? '请检查表单填写')`。
|
||||
⚠️ `firstError` **必须摊平后再取**(naive reject 的是**嵌套数组**,`errors[0].message` 恒为
|
||||
`undefined`);写法抄 `src/views/tenant/TenantEditModal.vue`。
|
||||
⚠️ 该插槽**不接收任何参数**,没有 `#feedback="{ status }"` 这种写法 ——
|
||||
想内联渲染错误只能给 `feedback` **prop** 传渲染函数(要自写包装组件)。
|
||||
|
||||
## 开发
|
||||
|
||||
|
||||
Reference in New Issue
Block a user