feat(sign): 补齐医护端与患者端签署流程

This commit is contained in:
xy
2026-09-28 19:57:57 +08:00
parent a25716c861
commit 8024075439
22 changed files with 1082 additions and 163 deletions
+4 -5
View File
@@ -98,6 +98,7 @@ export interface SignFieldElement {
fieldOptions: string[]
fieldMulti?: boolean
fieldRisk?: string
fieldPdfPosition?: SigningFieldDef['pdfPosition']
/** void 元素也要有一个空文本子节点,否则 Slate 会认为结构非法 */
children: [{ text: '' }]
}
@@ -118,6 +119,7 @@ function buildSignFieldProps(field: SigningFieldDef): Omit<SignFieldElement, 'ty
fieldOptions: [...field.options],
fieldMulti: field.multi,
fieldRisk: field.risk,
fieldPdfPosition: field.pdfPosition ? { ...field.pdfPosition } : undefined,
}
}
@@ -205,6 +207,7 @@ export function readFieldFromSignFieldNode(elem: SignFieldElement): SigningField
options: [...elem.fieldOptions],
...(elem.fieldMulti === undefined ? {} : { multi: elem.fieldMulti }),
...(elem.fieldRisk ? { risk: elem.fieldRisk } : {}),
...(elem.fieldPdfPosition ? { pdfPosition: { ...elem.fieldPdfPosition } } : {}),
}
}
@@ -232,11 +235,7 @@ function isSelected(editor: IDomEditor, elemNode: unknown): boolean {
* 编辑器内渲染:一个只靠属性展示的胶囊。
* 不渲染 children,也不放文本节点,理由见文件头的 ③。
*/
function renderSignField(
elemNode: unknown,
_children: VNode[] | null,
editor: IDomEditor,
): VNode {
function renderSignField(elemNode: unknown, _children: VNode[] | null, editor: IDomEditor): VNode {
const elem = elemNode as SignFieldElement
const kindLabel = SIGNING_FIELD_KIND_LABELS[elem.fieldKind] ?? '文本'
const selected = isSelected(editor, elemNode)