fix(document): 去掉签署态的系统页眉,患者信息改由正文占位符承载
This commit is contained in:
@@ -31,7 +31,6 @@ import {
|
||||
readFieldFromElement,
|
||||
resolveAnswersFromSystem,
|
||||
scanFieldTokens,
|
||||
SIGNING_DOCUMENT_HEADER,
|
||||
SIGNING_OPTION_MARKERS,
|
||||
type SigningSystemSnapshot,
|
||||
} from './signing-fields'
|
||||
@@ -714,39 +713,6 @@ function convertInlineOptions(root: Element, interactive: boolean, selected: Set
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成固定页眉:患者姓名 / 性别 / 年龄 / 住院号·门诊号,取值全部来自 HIS。
|
||||
* 只读展示,不挂 data-sign-field —— 页眉不是"待填写项",也不进签署证据,
|
||||
* 患者信息以任务快照为准,页眉只负责把快照呈现出来。
|
||||
*/
|
||||
function buildDocumentHeader(doc: Document, answers: SigningAnswers): HTMLElement {
|
||||
const header = doc.createElement('header')
|
||||
header.className = 'sign-doc-header'
|
||||
|
||||
SIGNING_DOCUMENT_HEADER.forEach(({ id, label, valueWidthEm }) => {
|
||||
const item = doc.createElement('span')
|
||||
item.className = 'sign-doc-header__item'
|
||||
|
||||
const labelElement = doc.createElement('span')
|
||||
labelElement.className = 'sign-doc-header__label'
|
||||
labelElement.textContent = `${label}:`
|
||||
|
||||
const value = answers[id]
|
||||
const valueElement = doc.createElement('span')
|
||||
valueElement.className = 'sign-doc-header__value'
|
||||
valueElement.textContent = typeof value === 'string' ? value : ''
|
||||
// 宽度随字段走(而不是写死在样式里):页眉四项要挤在一行,
|
||||
// 各字段需要的下划线长度差别很大,样式里只能给一个统一值,容易撑到换行
|
||||
valueElement.style.minWidth = `${valueWidthEm}em`
|
||||
|
||||
item.appendChild(labelElement)
|
||||
item.appendChild(valueElement)
|
||||
header.appendChild(item)
|
||||
})
|
||||
|
||||
return header
|
||||
}
|
||||
|
||||
/** 渲染开关。默认全部关闭,只读展示是"安全侧"缺省。 */
|
||||
export interface SigningDocumentRenderOptions {
|
||||
/**
|
||||
@@ -825,9 +791,10 @@ export function buildSigningDocumentHtml(
|
||||
convertCheckboxTables(root, interactive, selected)
|
||||
convertInlineOptions(root, interactive, selected)
|
||||
|
||||
// 页眉最后插入:保证 HIS 取值不会被当成文书内容参与占位符/方框识别
|
||||
root.insertBefore(buildDocumentHeader(doc, answers), root.firstChild)
|
||||
|
||||
// 渲染只**填值**,不往正文里添任何内容:文书长什么样就是编辑器里那一份。
|
||||
// 这里曾经最后插入一条系统页眉(患者姓名 / 性别 / 年龄 / 住院号),2026-09-30 去掉:
|
||||
// 编辑器里没有它,编辑时看不到、签出来和下载的 PDF 上却多一条。
|
||||
// 患者信息要出现在文书上,就在正文里插对应占位符(编辑器「HIS 自动填充」里有这几个按钮)。
|
||||
return root.innerHTML
|
||||
}
|
||||
|
||||
@@ -1099,7 +1066,7 @@ export function applySignatureToRoot(root: HTMLElement, fieldId: string, dataUrl
|
||||
/**
|
||||
* 统计填写项进度:已填数量、未填的必填项、命中的异常项。
|
||||
*
|
||||
* 按字段键去重:同一个字段在文书里可能出现多次(页眉的患者姓名/就诊号与正文重复是常态),
|
||||
* 按字段键去重:同一个字段在文书里可能出现多次(签名位每页都有、患者姓名在正文里反复提到),
|
||||
* 它们共用一份取值,只能算一个填写项,否则分母会被重复计数撑大。
|
||||
*
|
||||
* 「已填」的判据见 isEmptyFieldValue:多选取值只有空数组才算没填——
|
||||
|
||||
Reference in New Issue
Block a user