更新记录
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>