Skip to content

Signature 手写签名 ​

手写签名组件,基于 Vant Signature + Field 组件实现。

类型标识 ​

  • t: 'signature'

额外 Props ​

属性名类型默认值描述
renderFieldbooleantrue是否渲染 VanField 组件
signaturePropsPartial<SignatureProps>-VanSignature 组件的属性
signatureOnobject{}VanSignature 组件的事件
signatureSlotsSignatureSlots-VanSignature 组件的插槽
submitAtEndbooleantrue是否在结束签名时触发一次提交事件(需要 vant >= 4.8.6)
valueFormat(option) => any | Promise<any>-对提交的数据进行处理
format(option) => string-当需要作为图片回显时的处理函数

SignatureSlots ​

插槽名绑定值描述
tipsCommonSlotsProps自定义提示文案

SubmitOption ​

参数类型描述
imagestringbase64 图片数据
canvasstringcanvas 数据

Slots ​

支持所有 CommonSlots 插槽。

示例 ​

基础用法 ​

typescript
const formConfig = defineOption([
    {
        field: 'signature',
        t: 'signature',
        label: '签名',
        signatureProps: {
            penColor: '#1989fa',
            backgroundColor: '#f5f5f5',
        },
    },
]);

自定义数据处理 ​

typescript
const formConfig = defineOption([
    {
        field: 'signature',
        t: 'signature',
        label: '签名',
        valueFormat: (option) => {
            // 将签名数据转换为 base64 字符串存储
            return option.image;
        },
        format: (option) => {
            // 回显时直接返回 base64 字符串
            if (typeof option === 'string') return option;
            return option.image;
        },
    },
]);

自定义提示 ​

tsx
const formConfig = defineOption([
    {
        field: 'signature',
        t: 'signature',
        label: '签名',
        signatureSlots: {
            tips: () => <div style="color:#999;font-size:12px">请在下方空白区域签名</div>,
        },
    },
]);