更新记录

1.0.0(2025-12-31) 下载此版本

功能


平台兼容性

uni-app(4.62)

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

signature-board 手写签名板

简介

一个支持横屏手写签名的 Canvas 组件,自动旋转 90 度输出签名图片,完美兼容 H5、微信小程序、APP 等多端平台。

特性

  • 横屏签名:自动旋转 90 度,适合横屏签名场景
  • 多端兼容:完美支持 H5、微信小程序、APP
  • 高度可定制:支持自定义线条颜色、粗细、按钮样式等
  • Base64 输出:直接输出 base64 格式图片,方便上传
  • 无依赖:不依赖任何第三方库
  • Vue2/Vue3:同时支持 Vue2 和 Vue3

安装

方式一:通过 uni_modules 导入(推荐)

  1. 在 DCloud 插件市场找到本插件
  2. 点击右侧的 使用 HBuilderX 导入插件下载插件ZIP
  3. 导入到项目的 uni_modules 目录

方式二:手动导入

signature-board 文件夹复制到项目的 uni_modules 目录下。

使用方法

基础使用

<template>
  <view class="page">
    <signature-board
      @cancel="handleCancel"
      @reset="handleReset"
      @confirm="handleConfirm"
    />
  </view>
</template>

<script setup>
const handleCancel = () => {
  console.log('取消签名');
};

const handleReset = () => {
  console.log('重写签名');
};

const handleConfirm = (result) => {
  console.log('签名完成,base64:', result.tempFilePath);
  // 可以将 result.tempFilePath 上传到服务器
};
</script>

<style scoped>
.page {
  width: 100vw;
  height: 100vh;
}
</style>

自定义样式

<template>
  <signature-board
    :lineWidth="5"
    lineColor="#FF0000"
    bgColor="#F0F0F0"
    primaryColor="#007AFF"
    resetBgColor="#999999"
    cancelText="返回"
    resetText="清空"
    confirmText="完成"
    emptyTip="请先进行签名"
    errorTip="签名生成失败,请重试"
    @confirm="handleConfirm"
  />
</template>

API

Props

参数 说明 类型 默认值
lineWidth 签名线条粗细 Number 3
lineColor 签名线条颜色 String #000000
bgColor 画布背景颜色 String #FFFFFF
cancelText 取消按钮文字 String 取消
resetText 重写按钮文字 String 重写
confirmText 确认按钮文字 String 确认
emptyTip 未签名提示文字 String 请先签名
errorTip 生成失败提示文字 String 生成签名失败
primaryColor 主题颜色(确认按钮和取消按钮边框) String #784E23
resetBgColor 重写按钮背景颜色 String #CCCCCC

Events

事件名 说明 回调参数
cancel 点击取消按钮时触发 -
reset 点击重写按钮时触发 -
confirm 点击确认按钮时触发 { tempFilePath: string }

confirm 事件返回值

{
  tempFilePath: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...' // base64 格式的签名图片
}

注意事项

  1. 容器尺寸:组件会占满父容器的 100% 宽高,请确保父容器有明确的尺寸
  2. 横屏签名:组件设计为横屏使用,输出的图片会自动旋转 90 度
  3. 图片格式:输出的图片为 PNG 格式的 base64 字符串
  4. 平台差异
    • H5 端使用 DOM Canvas 进行旋转
    • 小程序端使用 Canvas API 进行旋转
    • APP 端使用 compressImage API 进行旋转

常见问题

1. 签名图片如何上传?

const handleConfirm = async (result) => {
  // 方式一:直接上传 base64
  await uploadToServer(result.tempFilePath);

  // 方式二:转换为文件后上传
  const file = base64ToFile(result.tempFilePath);
  await uploadFile(file);
};

2. 如何设置画布大小?

组件会自动占满父容器,通过设置父容器的尺寸来控制画布大小:

<view style="width: 100vw; height: 100vh;">
  <signature-board />
</view>

3. 小程序中签名不流畅?

确保在 canvas 上添加了 disable-scroll 属性(组件已内置)。

更新日志

查看 changelog.md

许可证

MIT License

隐私、权限声明

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

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

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

许可协议

MIT License

Copyright (c) 2025

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

暂无用户评论。