更新记录

0.1.0(2026-10-27)

首个版本。

  • canvas 双路径渲染:H5/微信小程序 2d 高清(DPR 缩放、物理像素导出),App 与其他小程序兼容路径
  • 笔迹平滑:最小距离采样 + 二次贝塞尔中点平滑,单点成墨点
  • 撤销 / 清空 / 空白检测
  • 导出:白底/米黄/透明 PNG;H5 返回 base64,小程序/App 返回临时文件
  • 内置全屏签署覆盖层,Promise 化回调
  • 毛绒 / 简洁双皮肤
  • Vue2 / Vue3 双版本兼容;纯本地运行,无网络请求与数据采集

平台兼容性

uni-app(3.8.7)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
√ √ √ √ √ × √ √ ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
√ √ √ × × × × × × × × ×

uni-app x

Chrome Safari Android iOS 鸿蒙 微信小程序
× × × × × ×

赢冬签名板(yd-signature)

试用提示:DCloud 平台的付费前端组件试用机制仅支持 uni-app x 项目,uni-app 项目无法运行试用。uni-app 项目请直接购买授权;接入疑问欢迎评论区留言,会及时回复。

开箱即用的 uni-app 电子签名组件:笔迹平滑、撤销清空、空白检测、透明/底色 PNG 导出、内置全屏签署模式,毛绒/简洁双皮肤,Vue2/Vue3 双版本兼容。

纯本地运行:不请求网络、不采集任何数据、无第三方依赖。

快速开始

组件位于 uni_modules/yd-signature,导入插件后直接使用(easycom 自动注册,无需 import):

<template>
  <yd-signature
    ref="sig"
    pen-color="#0F172A"
    :pen-width="3.5"
    bg-color="#FFFFFF"
    height="220px"
    skin="fluffy"
    @exported="onExported"
  />
</template>

<script>
export default {
  methods: {
    onExported(res) {
      // H5:res.base64 为 dataURL;小程序/App:res.tempFilePath 为临时文件
      console.log(res.tempFilePath)
    }
  }
}
</script>

全屏签署(合同/知情同意书场景)

this.$refs.sig.openFullscreen({ title: '《知情同意书》签署' })
  .then((res) => {
    // 用户确认并导出成功
  })
  .catch((err) => {
    // err.errCode === 'YD_SIG_CANCEL' 表示用户取消
  })

Props

属性 类型 默认值 说明
pen-color String #0F172A 笔色。修改只影响之后的笔画
pen-width Number 3.5 逻辑笔宽(px)
bg-color String #FFFFFF 底色,传 transparent 导出透明 PNG
height String 200px 签名区高度
disabled Boolean false 禁用书写
show-toolbar Boolean true 内置撤销/清空/导出工具条
show-hint Boolean true 空白时显示提示文案
hint-text String 请在此区域内签名 提示文案
skin String fluffy fluffy 毛绒 / clean 简洁
toolbar-title String '' 工具条左侧标题,留空隐藏
export-scale Number 2 兼容路径(App/部分小程序)导出放大倍数

事件

事件 参数 说明
@start - 落笔
@end { strokes } 收笔,携带当前笔数
@clear - 清空
@exported { tempFilePath, base64 } 工具条导出成功
@error { errCode, errMsg } 导出失败/签名为空
@confirmed { tempFilePath, base64 } 全屏签署确认
@cancelled - 全屏签署取消

方法(ref 调用)

方法 返回 说明
exportImage() Promise 导出;空白时 reject YD_SIG_EMPTY
undo() void 撤销一笔
clear() void 清空
isEmpty() Boolean 是否无墨迹
openFullscreen({ title }) Promise 打开全屏签署层;取消 reject YD_SIG_CANCEL

平台差异与失败处理

  • H5 / 微信小程序:canvas 2d 上下文渲染,支持设备像素比缩放,导出为物理像素级清晰 PNG;H5 导出返回 base64(tempFilePath 同为 dataURL,可直接用于 <image> 与上传)。
  • App / 支付宝 / 抖音等小程序:uni.createCanvasContext 兼容路径,导出用 destWidth/destHeight 放大(export-scale 倍),返回临时文件路径。
  • 签名为空导出:reject { errCode: 'YD_SIG_EMPTY' };全屏层内确认空签名会 toast 提示并保留界面。
  • 用户取消全屏:reject { errCode: 'YD_SIG_CANCEL' },接入方按需静默或提示。
  • 笔宽/坐标均为逻辑像素,跨端视觉一致;底色会合成为导出图的一部分(transparent 除外)。
  • 横屏签署建议直接使用内置全屏覆盖层(自动处理状态栏与安全区),无需页面横屏配置。

常见问题

  • 多实例:支持同页多个组件实例,画布 ID 自动隔离。
  • 深色界面:设置 bg-color 为深色、pen-color 为浅色即可;建议主题切换时联动改 pen-color(参考 Demo 的主题联动)。
  • 笔迹断续:组件内置最小距离采样与圆头笔帽,正常书写无断笔;如覆盖在 scroll-view 内请给签名区预留独立高度,避免滚动抢占手势。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据,不请求网络,所有绘制与导出均在本地完成

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。