vue-esign签字板,鼠标写名,支持PC\移动端,返回base64或者file格式的文件流

vue里实现鼠标签名,支持PC\移动端,返回base64或者file格式的文件流
1 、安装插件 vue-esign

npm install vue-esign --save

2、在main.js引用

import vueEsign from 'vue-esign'
Vue.use(vueEsign)

3、页面中使用

<vue-esign id='canvas' ref="esign" :width='1000' :height="500" style="border: 1px dashed #c2c1c1;" :isCrop="isCrop" :lineWidth="lineWidth" :lineColor="lineColor" :bgColor.sync="bgColor" />
<div style="text-align:center;line-height:50px; ">
     <el-button style="margin: 0px 20px;" @click="handleReset" size="small">清空</el-button>
     <el-button style=" margin: 0px 20px;" type="primary" @click="handleGenerate" size="small">保存</el-button>
</div>
 
 
引入地址
 import {baseUrl} from '@/utils/env.js';
 
 
data () {
  return {
    lineWidth: 6,
    lineColor: '#000000',
    bgColor: '',
    resultImg: '',
    isCrop: false
  }
},

4、返回数据为base64 具体看你返回得数据

    
            handleGenerate() { // 获取base64
                var _this = this
                _this.$refs.esign.generate().then(res => {
                    // 转成文件
                    var blob = _this.dataURLtoBlob(res)
                    var tofile = _this.blobToFile(blob, '签名.jpg')
                    setTimeout(async () => {
                        const formData = new FormData()
                        formData.append('file', tofile, tofile.name)
                        formData.append('fileType', 9)
                        // ajax 请求
                    })
                }).catch(err => {
                     // 画布没有签字时提示
                     this.$notify({
                        title: '提示',
                        message: '失败',
                        type: 'warning'
                    });
                })
            },
            // 将base64转换为blob
            dataURLtoBlob(dataurl) {
                var arr = dataurl.split(',')
                var mime = arr[0].match(/:(.*?);/)[1]
                var bstr = atob(arr[1])
                var n = bstr.length
                var u8arr = new Uint8Array(n)
                while (n--) {
                    u8arr[n] = bstr.charCodeAt(n)
                }
                return new Blob([u8arr], { type: mime })
            },
            // 将blob转换为file
            blobToFile(theBlob, fileName) {
                theBlob.lastModifiedDate = new Date()
                theBlob.name = fileName
                return theBlob
            },

5、清除

 handleReset() { // 清除
                if (this.$refs.esign) {
                    this.$refs.esign.reset();
                }
                var obj = document.getElementById("canvas");
                obj.style.backgroundColor = "#fff";  保存时背景
            },

6、图例
在这里插入图片描述
开源地址:

示例DEMO

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李泽举

如对你有帮助,那我就没白写

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值