Skip to content

Signature 签名

介绍

用于签名场景,基于 Canvas 实现。

基础用法

通过组件的 ref 获取实例,调用 getImage 方法获取签名图片。

  • web端时,获取图片是 base64 格式
  • 小程序端时,获取图片是 filePath 格式
html
<vd-signature ref="signatureRef" />
<vd-button type="primary" :action="handleSubmit">确认</vd-button>
ts
const signatureRef = shallowRef();

async function handleSubmit() {
  // 校验是否签名
  if (!signatureRef.value.validate()) {
    return; // 未签名
  }

  // 获取签名图片
  const image = await signatureRef.value.getImage();

  console.log('签名图片:', image);
}

画笔线条颜色

通过 line-color 属性配置画笔线条颜色。

html
<vd-signature ref="signatureRef" line-color="#000" />

画笔线条宽度

通过 line-width 属性配置画笔线条宽度。

html
<vd-signature ref="signatureRef" line-width="2" />

画布背景颜色

通过 background 属性配置画布背景颜色。

html
<vd-signature ref="signatureRef" background="#fff" />

贝塞尔曲线绘制

通过 bezier-curve 属性配置是否使用贝塞尔曲线绘制,默认开启。

html
<vd-signature ref="signatureRef" :bezier-curve="false" />

图片旋转角

通过 rotate 属性配置图片旋转角,也可以在获取图片时传参设置。

html
<vd-signature ref="signatureRef" rotate="90" />
ts
const signatureRef = shallowRef();

async function handleSubmit() {
  // 校验是否签名
  if (!signatureRef.value.validate()) {
    return; // 未签名
  }

  // 获取签名图片
  const image = await signatureRef.value.getImage({
    rotate: 90,
  });

  console.log('签名图片:', image);
}

缓存和加载已有签名数据

通过 getLinesloadLines 方法获取和加载已有签名数据。

html
<vd-signature ref="signatureRef" />
<vd-button type="primary" :action="handleLoad">加载</vd-button>
<vd-button type="primary" :action="handleSave">保存</vd-button>
ts
const signatureRef = shallowRef();

function handleLoad() {
  const lines = uni.getStorageSync('signature-lines');
  signatureRef.value.loadLines(lines);
  console.log('加载的签名数据:', lines);
}

function handleSave() {
  const lines = signatureRef.value.getLines();
  uni.setStorageSync('signature-lines', lines);
  console.log('保存的签名数据:', lines);
}

清除签名

通过 clear 方法清除签名。

html
<vd-signature ref="signatureRef" />
<vd-button type="primary" :action="handleClear">清除</vd-button>
ts
const signatureRef = shallowRef();

function handleClear() {
  signatureRef.value.clear();
}

撤销一步操作

通过 undo 方法撤销一步操作。

html
<vd-signature ref="signatureRef" />
<vd-button type="primary" :action="handleUndo">撤销</vd-button>
ts
const signatureRef = shallowRef();

function handleUndo() {
  signatureRef.value.undo();
}

重做一步操作

通过 redo 方法重做一步操作。

html
<vd-signature ref="signatureRef" />
<vd-button type="primary" :action="handleRedo">重做</vd-button>
ts
const signatureRef = shallowRef();

function handleRedo() {
  signatureRef.value.redo();
}

只读模式

通过 readonly 属性配置只读模式。

html
<vd-signature ref="signatureRef" readonly />

API

Props

参数说明类型默认值
width画布宽度string | number100%
height画布高度string | number200
line-color线条颜色string#000
line-width线条宽度string | number2
background画布背景色string#fff
bezier-curve是否使用贝塞尔曲线绘制booleantrue
rotate图片旋转角string | number0
watermark水印配置SignatureWatermark-
file-type导出图片类型stringpng
readonly是否只读booleanfalse

SignatureWatermark

参数说明类型默认值
text水印文字string-
color水印颜色stringrgba(0, 0, 0, 0.1)
fontSize水印字体大小string | number14
fontFamily水印字体stringsans-serif
spaceX水印文字水平间距string | number5
spaceY水印文字垂直间距string | number2
rotate水印旋转角度string | number45

代替原始 Props

参数说明类型默认值
custom-id根节点idstring-
custom-class根节点类名ClassValue-
custom-style根节点样式StyleValue-

Events

事件名说明回调参数
click点击时触发MouseEvent
resize尺寸改变时触发NodeRect
start签名开始时触发SignatureEventData
signing签名进行时触发SignatureEventData
end签名结束时触发SignatureEventData

Expose

方法名说明参数返回值
clear清除签名--
undo撤销一步操作--
redo重做一步操作--
validate校验是否签名-boolean
getImage获取签名图片SignatureImageOptionPromise<string>
getLines获取签名线条数据-SignaturePoint[][]
loadLines加载签名线条数据SignaturePoint[][]-

赣ICP备2025061025号-1