更新记录

1.2.2(2025-08-01) 下载此版本

  • 画笔宽度配置。
  • 文档内容补充:1. 画笔宽度配置。1.vue2 的 h5/小程序兼容测试(其他平台未知----)

1.2.1(2025-07-17) 下载此版本

  • 优化 清除下控制台警告,避免使用者以为 警告为报错

1.2.0(2025-07-15) 下载此版本

  • 兼容 uniappx H5
  • 兼容 uniappx 小程序
  • 兼容 uniappx 鸿蒙环境(模拟机测试的)
查看更多

平台兼容性

uni-app

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

uni-app x

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

其他

多语言 暗黑模式 宽屏模式
× ×

上来直接差评的就别提问了,你应该指点江山去,相信你自己。

上来直接差评的就别提问了,你应该指点江山去,相信你自己。

上来直接差评的就别提问了,你应该指点江山去,相信你自己。

===========================================================================================

rn-signature 个性签名组件

组件名 rn-signature 签名组件兼容 H5、APP、小程序。模拟横屏签名效果。 兼容鸿蒙 APP 横屏(使用的模拟器:devecostudio 版本为 5.1.1,hbuilder x 版本为 4.66)

========================================

注意:vue2 只测试了 h5 和 小程序, 其他的平台没测试。

效果展示

  • h5 端

111


222

  • 小程序端

333


444

  • APP 端

777


888

  • 鸿蒙展示效果 999

使用方式

  1. 首先在插件市场进行下载 地址:rn-signature
  2. 引入
# vue3用法
<template>
    <rn-signature :options="options" :data="data" />
</template>

# vue2 用法
<template>
    <rn-signature :options="options" :data.sync="data" />
</template>
  1. 配置
<script>
export default {
    data() {
        return {
            options: {
                clear:{
                    show: true,
                },
                placeholder: {
                    content: '请设置个性签名',
                },
                style: { //设置签名容器宽高
                    width: '600rpx',
                    height: '300rpx',
                    borderRadius: '20rpx'
                }
            },
            data: {
                url: '',//签名生成的图片地址。
            }
        }
    }
}
</script>

options 配置

属性 说明 类型 默认值 可选值
clear 清除按钮相关配置项 Object clear 配置项 -
placeholder 占位符提示信息, Object placeholder 配置项 -
style 个性签名样式配置项 Object style 配置项 -
art 艺术字 Object art 配置项 -
btn 按钮配置项 Object btn 配置项
ctx 画笔配置项 Object ctx 配置项

clear 配置项

属性 说明 类型 默认值 可选值
show 是否显示清除按钮 Boolean true -
slot 清除按钮插槽,名称“clearSlot” Boolean false -
customClass 自定义类名,需配合 slot 使用 String btn_clear_wrap -

自定义类名使用方式

::v-deep .btn_clear_wrap {

}

art 配置项

属性 说明 类型 默认值 可选值
enable 是否启用 Boolean false -

placeholder 配置项

属性 说明 类型 默认值 可选值
content 提示内容 String 请设置个性签名 -
fontSize 字体大小 Number 40 -
textBaseline 字体对其方式 String middle -
textAlign 对其方式 String center -
fillStyle 字体颜色 String #888 -

style 配置项

属性 说明 类型 默认值 可选值
width 宽度 String 100% -
height 高度 String 300rpx -
background 背景色 String #fff -
border 边框 String 1px solid -
borderRadius 圆角 String 20rpx -
--其他样式属性都可以 --- ---- --- ----

btn 按钮配置

属性 说明 类型 默认值 可选值
saveBtn 保存按钮 Object {order: 1,content: '保存',style: {}} -
resetBtn 重置按钮 Object {order: 2,content: '重新绘制',style: {}} -
cancelBtn 取消按钮 Object {order: 3,content: '取消',style: {}} -
  • order 排序
  • content 按钮内容
  • style 按钮样式

ctx 按钮配置

属性 说明 类型 默认值 可选值
lineWidth 画笔宽度 number 8 -
  • order 排序
  • content 按钮内容
  • style 按钮样式

Slot 插槽

名称 说明
clearSlot 清除按钮插槽,用于清除生成好的签名图片

测试用例

<template>
    <view class="test_container">
        <!-- 测试一 -->
        <rn-signature :options="options" :data="data" />
        <view style="margin: 20rpx;"></view>
        <!-- 测试二 -->
        <rn-signature :options="options" :data="data1" />
        <view style="margin: 20rpx;"></view>
        <button @click="uploadClick">上传</button>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                options: {
                    // art: {//可选配置-艺术字设置
                    //  enable: true,
                    // },
                    // clear: {//可选配置-清除按钮设置
                    //  show: true,
                    //  slot: false,
                    //  customClass: 'btn_clear_wrap'
                    // },
                    // placeholder: {//可选配置-默认提示信息设置
                    //  content: '请设置个性签名',
                    // },
                    // btn: {//可选配置-画布中三个按钮设置
                    //  saveBtn: {
                    //      order: 1,
                    //      content: '保存',
                    //      style: {
                    //          border: '3px solid #00ffff'
                    //      }
                    //  },
                    //  resetBtn: {
                    //      order: 2,
                    //      content: '重绘',
                    //  },
                    //  cancelBtn: {
                    //      order: 1,
                    //  }
                    // },
                    style: { //设置签名容器宽高-一般都会设置下样式,配合自己的业务。
                        width: '600rpx',
                        height: '300rpx',
                        border: 'none',
                        'box-shadow': '0px 0px 5px rgba(0, 0, 0, 0.4)'
                    },
                },
                data: {
                    url: ''
                },
                data1: {
                    url: ''
                }
            };
        },
        methods: {
            /**
             * 简单的测试上传功能
             */
            uploadClick() {
                uni.uploadFile({
                    /**
                     * 小程序 和 APP端 ---- 正常上传 以  url: http://192.168.84.163:3000 为例
                     */
                    // #ifdef MP-WEIXIN || APP-PLUS
                    url: 'http://192.168.29.163:3000/file-service/upload',
                    // #endif

                    /**
                     * h5 端 走 vue.config.js 或 vite.config.js 中的代理
                     */
                    // #ifndef MP-WEIXIN || APP-PLUS
                    url: '/api/file-service/upload',
                    // #endif
                    header: {
                        'content-type': 'multipart/form-data'
                    },
                    formData: {
                        userId: '123'
                    }, // 避免与name字段冲突
                    filePath: this.data.url,
                    name: 'file',
                    success(res) {
                        console.log('上传成功:', res)
                    },
                    fail(err) {
                        console.log('上传失败:', err)
                    }
                })
            }
        }
    }
</script>

<style lang="scss" scoped>
    .test_container {
        width: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        margin: 20px 0;
        flex-direction: column;
        padding: 20rpx
    }

    ::v-deep .btn_clear_wrap {}
</style>
# vue.config.js 或 vite.config.js 中的代理配置
proxy: {
    '/api': {
        target: 'http://192.168.84.163:3000',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')  // 路径重写(可选)
    }
}

效果图

666

使用 uvue 页面:H5、小程序 使用 uts 文件: H5、小程序

隐私、权限声明

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

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

插件不采集任何数据

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

许可协议

MIT协议