# 2026-08-27 ## 长期/临时医嘱 Form resetForm 失效 bug(已修) - **症状**:点编辑→关闭→点「新增」,Dialog 标题仍显示「编辑」,长者选择器 disabled 锁死,里面显示上个长者(桂娃娃2(8978979)) - **根因**:`Object.assign(form, JSON.parse(JSON.stringify(defaultForm)))` - `JSON.stringify({id: undefined})` 会**丢弃 undefined 字段**(不写入 JSON 字符串) - 所以反序列化出来的对象根本没有 `id` / `elderId` 这两个 key - `Object.assign(target, source)` 是浅合并 + 仅复制 source 自身可枚举属性 → target.id 仍保留编辑时的旧值 - **触发三个症状**: 1. `` 标题误判 2. `` 锁住 3. 提交参数把上次的 id 带出去 - **修复**:两个 Form.vue 的 `resetForm` 改为**逐字段显式重置**,不依赖 JSON 拷贝: ```js form.id = undefined form.elderId = undefined form.elderName = '' // ...其他字段 ``` - **范式沉淀**:表单"重置到默认态"**不要用** `Object.assign(form, JSON.parse(JSON.stringify(defaultForm)))`,前者依赖 JSON 序列化语义、后者依赖对象属性存在性。当 defaultForm 含 undefined 字段时,二者叠加静默失效。**逐字段显式重置**最稳,或用 lodash `_.cloneDeepWith` / `structuredClone`,但都要先 unset undefined 字段。