# 实现方案 —— 2026-04-18-22-59-10 ## 方案目标 将字段下划线默认行为改为「默认不显示」,修复占位符提示文字居中问题。 ## 需求 1:所有字段默认打印时不显示下划线 ### 修改文件 1:`src/pages/TemplateManage.tsx` 1. **新增字段默认状态**: ```ts const [newFieldHasUnderline, setNewFieldHasUnderline] = useState(false); ``` 2. **编辑字段回显默认值**:在 `startEditField` 或等效函数中: ```ts setEditFieldHasUnderline(field.hasUnderline ?? false); ``` 3. **插入字段类名判断**:在 `insertSmartField` 中: ```ts const underlineClass = field.hasUnderline !== true ? ' no-underline' : ''; ``` ### 修改文件 2:`src/utils/defaultContent.ts` 移除 `noUnderlineKeys` 数组,直接在 `smartField()` 中给所有字段加 `.no-underline`: ```ts const smartField = (key: string) => { return ` ×​`; }; ``` ## 需求 2:修复占位符文字偏左 ### 修改文件 `src/pages/ReportEditor.tsx`、`src/pages/TemplateManage.tsx`、`src/utils/defaultContent.ts` ### 修改内容 在所有 `.placeholder-text` 的 `style` 属性中追加 `text-align:center;`。 需要修改的位置: 1. `defaultContent.ts`:Logo 占位符 + 6 个表格占位符 + 签名占位符 2. `ReportEditor.tsx`: - `handleEditorClick` 删除恢复逻辑中的 `.placeholder-text` - `placeholderModal` 确认插入时的 `.placeholder-text`(table 内 + inline-block) 3. `TemplateManage.tsx`: - `handleEditorClick` 删除恢复逻辑中的 `.placeholder-text` - `placeholderModal` 确认插入时的 `.placeholder-text`(table 内 + inline-block) 统一的新样式: ``` color:#94a3b8;font-size:11px;pointer-events:none;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);display:block;width:100%;text-align:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis; ``` ## 涉及文件及修改点 | 文件 | 修改点 | |------|--------| | `src/pages/TemplateManage.tsx` | `newFieldHasUnderline` 默认 `false`;编辑回显默认 `false`;`insertSmartField` 判断逻辑;placeholder-text 样式 | | `src/utils/defaultContent.ts` | `smartField()` 直接加 `.no-underline`;所有 placeholder-text 加 `text-align:center` | | `src/pages/ReportEditor.tsx` | 所有 placeholder-text 加 `text-align:center` | ## 风险与注意事项 1. `smartField()` 中移除 `noUnderlineKeys` 后,所有默认模板字段将统一无下划线。此前通过 `hasUnderline` 配置自定义下划线的机制仍然保留(`field.hasUnderline === true` 时不加 `.no-underline`),只是默认值变为 `false`。 2. `text-align:center` 追加时需注意不破坏已有的其他样式属性顺序。 3. 批量替换 `placeholder-text` 样式时,应使用精确的字符串匹配,避免误伤其他元素。