更新记录

1.0.0(2025-09-07) 下载此版本

初次发布


平台兼容性

uni-app(4.11)

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

uni-app x(4.11)

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

wt-sign

签名组件

WtSign 是一个纯粹的签名组件,支持横屏/竖屏两种模式,可生成 PNG/JPG 格式的签名图片。

签名界面需自行根据需求实现。

使用

组件跟随父容器的宽高尺寸。

基础用法

<view class="sign-view" style="width: 100%; height: 300rpx;">
    <wt-sign
        ref="signRef"
        direction="horizontal"
        @complete="handleSignComplete"
    />
</view>

API

Props

参数 类型 默认值 可选值 说明
direction String #fff vertical/horizontal 签名方向(竖屏/横屏)
fileType String png png/jpg 导出图片类型
bgColor String #f5f5f5 任意合法颜色值 背景颜色
canvasFillColor String white 任意合法颜色值 画布填充颜色
beforeGenerate Function 生成签名图片之前的钩子,参数为点集合和签名方向,若返回 false 则停止生成。支持返回一个 Promise 对象,Promise 对象 reject 时则停止生成,resolve 时开始上传( resolve 传入 true 则上传 )

Events

事件名称 说明 回调参数
complete 签名完成时触发,返回临时文件路径 (tempFilePath: string)
touchstart 手指触摸动作开始 (EventHandle)
touchmove 手指触摸动作移动 (EventHandle)
touchend 手指触摸动作结束

Methods

方法名 说明 参数
generateImage 生成签名图片 (direction: String),参数可选,同direction属性
clear 清除签名

使用示例

<template>
    <view>
        <view class="sign-view">
            <wt-sign
                ref="wtSign"
                @complete="handleSignComplete"
                :beforeGenerate="beforeGenerate"
            />
        </view>
        <button @click="handleSign">sign</button>
        <button @click="handleSignClear">clear</button>

        <view>签名结果:</view>
        <image
            :src="signImgUrl"
            mode="aspectFit"
            style="width: 100%"
        ></image>
        <image
            :src="signImgUrl"
            mode="aspectFill"
            style="width: 100%"
        ></image>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                signImgUrl: "",
            };
        },
        methods: {
            beforeGenerate(points, direction) {
                console.log('beforeGenerate', points, direction);

                if(!points.length) {
                    uni.showToast({
                        title: '请先签名',
                        icon: "none",
                    })
                    return false;
                }
                return true;

                // Promise 形式
                // return new Promise((resolve,reject) => {
                //  setTimeout(() => {
                //      resolve(true)
                //  }, 600)
                // })

            },
            handleSign() {
                this.$refs.wtSign.generateImage();
            },
            handleSignClear() {
                this.$refs.wtSign.clear();
            },
            handleSignComplete(url) {
                this.signImgUrl = url;
                this.handleStreamUpload(url);
            },
            // 示例上传
            handleStreamUpload(tempFilePath) {
                uni.uploadFile({
                    url: 'https://kieai.redpandaai.co/api/file-stream-upload',
                    filePath: tempFilePath,
                    formData: {
                        name: "image",
                    },
                    header: {
                        'Content-Type': 'multipart/form-data'
                    },
                    name: 'file',
                    success: (res) => {
                        console.log('上传成功:', res);
                    }
                });
            },
        }
    }
</script>

<style lang="scss">
.sign-view{
    width: 100%;
    height: 300rpx;
}
</style>

隐私、权限声明

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

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

插件不采集任何数据

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

许可协议

MIT协议

暂无用户评论。