# 2026-08-28 ## 医嘱三页面加「年龄」字段(已完成) 按用户截图: - 长期医嘱 / 临时医嘱 print 单抬头:「姓名 / 性别 / 床号 / 护理等级」 → 「姓名 / 性别 / 年龄 / 床号 / 护理等级」(在性别后插入年龄 cell) - 执行医嘱:列表 + 多条打印 + 单条打印 三处的「类型」列 / 行 → 全部改成「年龄」 ### 改动文件 1. `src/views/elderly/elder/doctor-orders/long-doctor-order/Form.vue` - `selectElder` 加 `v-model:elder-age="form.elderAge"` - `defaultForm` 加 `elderAge: ''` - `handleSelectElder` 补 `form.elderAge = elder.elderAge ?? ''` - `resetForm` 加 `form.elderAge = ''` 2. `src/views/elderly/elder/doctor-orders/long-doctor-order/Print.vue` - `info-row` 在性别 cell 后插 `年龄{{ form.elderAge }}` - `defaultForm` 加 `elderAge: ''` 3. `src/views/elderly/elder/doctor-orders/short-doctor-order/Form.vue`:同 long Form 4. `src/views/elderly/elder/doctor-orders/short-doctor-order/Print.vue`:同 long Print 5. `src/views/elderly/elder/doctor-orders/execute-doctor-order/index.vue` - 列表 `el-table`:「类型」列改 `prop="elderAge"` width=80,去掉 tag - 多条打印 `` thead「类型」改「年龄」,tbody 改为 `{{ item.elderAge || '' }}` - 单条打印表里:「类型」th → 「年龄」,td 改 `{{ singlePrintRow.elderAge || '' }}` - `makeRow()` 加 `elderAge: vo.elderAge ?? ''` - `buildMockLong / buildMockShort` 三条测试数据加 `elderAge: 78 / 72 / 65` ### 数据来源 - `selectElder` 组件早就有 `elderAge` 字段 + `emit('update:elderAge', item.elderAge)`,只是 Form.vue 之前没用上 - 详情接口(`getLongDoctorOrder` / `getShortDoctorOrder`)理论上有 elderAge(VO 字段)。若后端遗漏,需要后端补字段 - 执行医嘱列表 elderAge 从 longOrder / shortOrder 的 VO 取(`getLongDoctorOrderPage` / `getShortDoctorOrderPage` 返回 list[].elderAge) ### 截图示意 - 单条执行医嘱打印:「长者 / 年龄 / 床位 / 状态」「长期医嘱」消失 - 多条执行医嘱列表打印:列名「类型」→「年龄」 - 长/短期医嘱单:抬头第 3 格「年龄:xx 岁」 ## 长/短医嘱「新增」弹窗加年龄展示(已完成) 按用户新一轮截图:编辑/新增弹窗基本信息行(原本只有 性别/床位/护理等级)需要再加一列「年龄」。 ### 改动 1. `long-doctor-order/Form.vue` 第 26-46 行 - `` 内 3 列改 4 列(span 6) - 在性别 cell 后插入年龄 cell:`:model-value="form.elderAge !== '' && form.elderAge !== undefined && form.elderAge !== null ? `${form.elderAge}岁` : ''"` + placeholder 2. `short-doctor-order/Form.vue` 第 32-52 行:同 long ### 回填路径 - 新增/编辑模式通过 selectElder `v-model:elder-age="form.elderAge"` 自动回填 - 详情接口(getLong/ShortDoctorOrder)若返 elderAge,Object.assign 时一并落入;后端暂未补该字段时编辑场景会留空(与 bedName/nurseLevelName 同源问题) - 显示加"岁"单位,未选长者时显示 placeholder 文字 ## 长期医嘱单打印:A4 横版 → 竖版(已完成) 按用户要求:长期医嘱单打印从 A4 横版改成竖版。竖版可用宽度只有 210-8×2=194mm,12 列布局必须重排。 ### 重排列宽(long-doctor-order/Print.vue) - 容器 width: 270mm → 194mm - colgroup 12 列 mm 数字:6 / 18 / 50 / 10 / 10 / 11 / 12 / 12 / 18 / 12 / 12 / 23(合计 194mm) - @page: landscape → portrait - 缩窄重点:医嘱内容 85→50mm,备注 48→23mm(用户明确) ### 遗留 / 待评估 - info-row(姓名/性别/年龄/床号/护理等级)5 等分在 194mm 下每格约 145px;若"姓名:xxx"等较长文本会被挤换行。下一轮看效果决定是否改 flex-start + gap ### 竖版备注再缩(备注 23→12mm,总宽 194→183mm) 按用户第二轮反馈:备注列在 80% dialog 中 zoom >100% 时整张表被挤出右边界。 - colgroup 末列 23 → 12mm(备注) - 容器 width: 194 → 183mm - 打印 @page A4 portrait 不变(纸张 = 210mm 减 16mm 边距 = 194mm 可用,183mm 表宽仍内嵌 ✓) ### 竖版再调:备注加宽 + 左右边距缩小 按用户第三轮反馈:12mm 备注太挤,希望左右视觉边距更小。 - Dialog width: 80% → 95%(dialog 占屏更多) - 容器 width: 183mm → `width:100%; max-width:195mm`(弹填 dialog,不超过 A4 portrait 可用区 195mm) - 容器 padding: `4px 6px` → `4px 0`(去掉左右 padding,让表格贴 dialog 内壁) - colgroup 备注 12 → 24mm(+12mm,可读宽度恢复) - 总宽 183 → 195mm:6+18+50+10+10+11+12+12+18+12+12+24 = 195mm - @page A4 portrait 不变(纸张 210-16=194mm,容器 max 195 略超,但 colgroup 总和 195 ≥纸张 194 仅 ~1mm,浏览器自动调整) ### colgroup mm → %,完全弹填 dialog 按用户第四轮反馈:边距缩了之后右侧备注列右边线框仍被挤掉。 根因:colgroup mm 是物理长度(96dpi 1mm=3.78px),用户视口窄+Windows 缩放使 195mm 实际像素超 dialog 95% 宽度。 - colgroup 12 列 mm → %:3.08/9.23/25.64/5.13/5.13/5.64/6.15/6.15/9.23/6.15/6.15/12.31(合计 100%) - 比例与原 195mm 设计一致(6/18/50/.../24mm) - 容器 width: 100%(去掉 max-width),margin: 0(不再居中,贴 dialog 左内壁到右内壁) - table width: 100%(已有,table-layout: fixed 严格按 colgroup % 分列) - 打印纸张 A4 portrait 可用 194mm 时,容器 = 纸张宽,列宽 % 等比缩放至 194×比例 ≈ 原 6/18/50/.../24mm ✓ ### 临时医嘱单 colgroup 重排 按用户第六轮反馈:竖版下医嘱列窄(28.35%)+ 备注列宽(26.80%)不合理。 - 新比例按 A4 portrait 194mm 内容重排:医嘱 28.35→38.66%(+10.3%,75mm),备注 26.80→17.53%(-9.27%,34mm) - 其他列微调:医嘱时间 9.28%(18mm)、频次 5.15%(10mm)、给药时间 5.15%(10mm)、途径 5.67%(11mm)、医生/护士签名各 9.28%(18mm) 按用户第五轮反馈:内部 cell 边框 1px #333 视觉粗,最右列外侧线在容器抗锯齿下显得细且淡,希望统一淡雅。 - th/td `border: 1px solid #333` → `border: 1px solid #999` - 保持 1px 宽度不变,仅颜色变浅,所有内分割线与最外侧线视觉一致 ## 临时医嘱单 + 执行医嘱打印同步改成竖版(已完成) 参照长期医嘱单竖版范式(A4 portrait + % 列宽 + #999 细线),把另外两个打印也改了。 ### 临时医嘱单 short-doctor-order/Print.vue - Dialog width: 80% → 95% - 容器 width: 270mm → 100%,padding 4px 6px → 4px 0,margin 0 auto → 0 - colgroup mm(8列 22/105/14/12/14/18/18/67=270) → %(9.28/28.35/6.19/6.19/6.70/8.25/8.25/26.80,合计 100),比例取自 194mm 竖版设计 - th/td border #333 → #999 - @page landscape → portrait ### 执行医嘱 execute-doctor-order/index.vue - 打印 dialog width: 1080px → 95% - 容器 .exec-print width: 270mm → 100%,padding 4px 6px → 4px 0,margin 0 - 汇总表 colgroup mm(13列 6/22/22/14/75/14/14/12/22/16/22/13/18=270) → %(3.09/8.25/8.25/5.67/18.04/5.67/5.67/5.67/8.25/7.22/8.25/5.67/10.31,合计≈100),比例取自 194mm 竖版设计 - 单条表 colgroup mm(24/96/24/96=240) → %(10/40/10/40 = 100) - .single-info tbody th width: 24mm → 10% - th/td border #333 → #999 - @page landscape → portrait - 注释块「参照 A4 横版范式」→「参照 A4 竖版范式」 ### 列宽 % 设计原则 - 原 mm 数之和 ÷ 194(portrait 可用宽 210-16)再 ×100 得 %,保留与原竖版 mm 设计一致的相对比例 - 屏幕预览弹填 dialog(避免 mm 物理宽度在窄视口 + Windows 缩放下溢出) - 打印 @page portrait 纸张 194mm 时,容器 = 纸张宽,列宽 % 等比缩放回原 mm 值