使用vue-esign实现手写签名并上传

效果截图

在这里插入图片描述

安装插件:

npm install vue-esign --save

使用:

1.在main.js中引入

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

2.在页面中引用

<vue-esign ref="esign" :width="800" :height="300" :isCrop="isCrop" :lineWidth="lineWidth" :lineColor="lineColor" :bgColor.sync="bgColor" />
<el-button type="primary" size="mini" @click="handleReset">清空画板</el-button>
<el-button type="primary" size="mini" @click="handleUpload">上传签名</el-button>

3.完整功能代码

htmlimport { uploadGrayFile } from "@/XXXX";
export default {
	data () {
	  return {
	    lineWidth: 6,
	    lineColor: '#000000',
	    bgColor: '',
	    resultImg: '',
	    isCrop: false,
        resultImageUrl: "",
	  }
	},
	methods: {
	  handleReset () {
	    this.$refs['esign'].reset() //清空画布
	  },
	  handleUpload () {
	    this.$refs['esign'].generate().then(res => {
	      const bl = this.convertBase64UrlToBlob(res);
	      const formData = new FormData();
	      formData.append("file", bl, Date.now() + ".jpeg");
	      uploadGrayFile(formData).then((response) => {
	        if (response.code == 200) {
	          this.resultImageUrl = response.path
	          this.$message({
	            message: '签名上传成功!',
	            type: 'success'
	          })
	          return;
	        }
	        this.$vux.loading.hide();
	        this.$toast("签名上传失败!");
	      })
	    }).catch(err => { //  没有签名,点击生成图片时调用
	      this.$message({
	        message: '请先签名!',
	        type: 'warning'
	      })
	      // alert(err) // 画布没有签字时会执行这里 'Not Signned'
	    })
	  },
	  convertBase64UrlToBlob(urlData) {
	    const type = "image/jpeg";
	    let bytes = null;
	    if (urlData.split(",").length > 1) {
	      bytes = window.atob(urlData.split(",")[1]);
	    } else {
	      bytes = window.atob(urlData);
	    }
	    let ab = new ArrayBuffer(bytes.length);
	    let ia = new Uint8Array(ab);
	    for (let i = 0; i < bytes.length; i++) {
	      ia[i] = bytes.charCodeAt(i);
	    }
	    return new Blob([ab], { type });
	  }
	}
};
</script>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值