1、下载插件

npm install vue-esign --save

2、全局引入

//main.js中引入:
import vueEsign from 'vue-esign'
Vue.use(vueEsign)

3、示例代码

<template><div><el-card class="box-card"><div slot="header" class="clearfix"><span>这是电子签名组件</span></div><div class="text item">1.定义数据和清空、生成事件回调</div><div class="text item">2.模板中使用组件,并属性传值</div><div class="text item">3.上传到oss并返回访问路径在模板中显示</div><div class="text item"><img :src="resultImg" class="show-img" v-if="resultImg != ''"><div class="show-info" v-else>请在下方书写电子签名</div></div></el-card><el-card class="qianming-container" body-style="padding:0px"><vue-esign ref="esign"  :isCrop="isCrop" :width="600" :height="300" :lineWidth="lineWidth" :lineColor="lineColor" :bgColor.sync="bgColor" ></vue-esign><div class="contro-container"><el-button type="danger"  @click="handleReset">清空画板</el-button><el-button type="primary" @click="handleGenerate">生成图片</el-button></div></el-card></div>
</template><script>import client  from 'common/js/ossClient.js'export default {name:'Qianming',data(){return {lineWidth: 6,lineColor: '#000000',bgColor: '',resultImg: '',isCrop: false}},methods:{//清空画板..handleReset () {this.$refs.esign.reset();this.resultImg =''},//生成签名图片..handleGenerate () {this.$refs.esign.generate().then(res => {let randnum = Math.random() * 10000000000000randnum = Math.floor(randnum)let fileName = "dianziqianming/" + randnum + '.png'let file = this.dataURLtoFile(res,fileName)client.put(fileName, file).then(res=>{if(res.url){this.resultImg = res.url}else{this.$message.error('文件上传失败')}}).catch(err=>{})}).catch(err => {this.$message.error('请签名之后提交!')})},//将base64转换为文件..dataURLtoFile(dataurl, filename) {var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);while(n--){u8arr[n] = bstr.charCodeAt(n);}return new File([u8arr], filename, {type:mime});}}}
</script> <style scoped>button{height:40px;}.show-img{width:400px;height:200px;border:1px solid #123456;}.show-info{width:400px;height:200px;font-size:24px;display:flex;align-items:center;justify-content:center;}.contro-container{width:600px;height:50px;display:flex;flex-direction:row;align-items:center;justify-content:space-around;background-color:#D3D3D3;position:absolute;bottom:0px;}.qianming-container{width:600px;height:350px;margin:20px auto;position:relative;}.text {font-size: 14px;}.item {margin-bottom: 18px;}.clearfix:before,.clearfix:after {display: table;content: "";}.clearfix:after {clear: both}.box-card {width: 95%;margin-left:2.5%;margin-top:20px;}
</style>

4、文件格式

默认canvas会生成base64格式的图片,使用oss上传需要将图片转化成标准图片格式,转化方法代码:

dataURLtoFile(dataurl, filename) {var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);while(n--){u8arr[n] = bstr.charCodeAt(n);}return new File([u8arr], filename, {type:mime});
}

5.组件样式

初始样式截图

签字样式

链接:https://www.jianshu.com/p/5d5f2917a87e

Vue 实现电子签名相关推荐

  1. vue 实现电子签名功能 支持生成图片

    start 最近遇到需求,说是要在前端页面,做一个电子签名的功能. 以前番茄玩过不少canvas的demo,这玩意我第一反应就是canvas. 简单记录一下这个功能. github 自己造轮子有点麻烦 ...

  2. vue signature 电子签名

    只修改3视图文件 文件夹位置放的相同 就不用改相对地址 npm install vue-signature-simple 文件名index.js 与main.js同级 import VueSignat ...

  3. 关于“量变”和“质变”的圣贤语录与辩证思考

    中国圣贤:天下大事必作于细,天下难事必作于易. 合抱之木,生于毫末:九层之台,起于累土:千里之行,始于足下. 不积跬步,无以至千里.不积小流,无以成江海. 夫风生于地,起于青苹之末.风起于青萍之末,浪 ...

  4. vue中使用电子签名

    使用vue-cli4脚手架,js-signature 2.0.0(https://www.npmjs.com/package/jq-signature)jquery 3.4.1. 1.安装jq及js- ...

  5. pc端签名 vue 生成图片_使用vue实现一个电子签名组件

    使用vue实现一个电子签名组件 在生活中我们使用到电子签名最多的地方可能就是银行了,每次都会让你留下大名.今天我们就要用vue实现一个电子签名的面板 想要绘制图形,第一步想到的就是使用canvas标签 ...

  6. 【电子签名手机-vue】

    电子签名手机-vue <template><div class="signature" @touchmove.prevent><div class=& ...

  7. 使用vue造个小轮子vue-asign,canvas生成电子签名,满足需求

    优化需求,内容是生成电子签名,发现好多个项目都重复写,于是打算自己造个小轮子,名字就叫vue-asign,说明文档如下: vue-asign Canvas 生成电子签名 支持vue2.vue3 演示d ...

  8. pc端签名 vue 生成图片_vue 使用 canvas 实现手写电子签名

    功能 兼容 PC 和 Mobile: 画布自适应屏幕大小变化(窗口缩放.屏幕旋转时画布无需重置,自动校正坐标偏移): 自定义画布尺寸(导出图尺寸),画笔粗细.颜色,画布背景色: 支持裁剪 (针对需求: ...

  9. 前端实现电子签名(vue组件)

    可直接复用(签字图片上传地址更改即可base64) base64已转化为formData格式 <template><div><div class="hello& ...

  10. Vue—使用canvas实现电子签名

    前言 实现签名的功能听着很复杂,其实很简单.使用canvas辅助的API和监听鼠标相关事件即可实现. 思考: 1.如何使用canvas画线 ? 2.如何判断在提交签名时判断是否有签名 ? 3.如何将c ...

最新文章

  1. ANSYS静力学分析时如何添加重力
  2. java实现插入排序算法 附单元测试源码
  3. 从零开始做一个SLG游戏(三):用unity绘制图形
  4. 中国机器人市场前景开阔 本土企业如何突围?
  5. PPT扩展展示时,PPT展示界面背景色有时候突然变成黑底?如何解决?
  6. 中国SaaS市场将快速增长,或形成“小而美”林立格局
  7. 支付宝-第三方应用授权
  8. Windows MongoDB下载 安装以及配置(一条龙到底)
  9. 微信小程序--加载动画【水波涟漪效果】
  10. 扒谱大杂烩-都是前辈写的
  11. 【淘宝SEO】淘宝官方SEO资料
  12. 使用MiKTeX和TeXstudio编辑latex
  13. Ruby for Rails 最佳实践十六
  14. 2019年总结-2020年计划
  15. c语言---c语言中的斐波那契数列程序
  16. 人口会一直增长下去吗_现在世界人口约多少亿 世界人口会一直增加吗还是越来越少...
  17. 【数据结构--散列函数】
  18. 基于平滑、差分的矩形波零漂(基线漂移)消除算法(MATLAB实现,代码和数据见CSDN同名资源)
  19. 毫无疑问计算机犯罪是一个很严重的问题英语,2017考研英语作文万能语句总结...
  20. 【Edge浏览器】edge浏览器下载插件时报Download interrupted错误解决方法

热门文章

  1. oki5530sc打印错误_我用的是四通oki 5530sc针式打印机,打印时提示正在打印,但就是不打印...
  2. HBM|横河Yokogawa数据采集器自动计量校准软件NSAT-3070
  3. matlab 拟合优度检验,χ~2拟合优度检验在教学中的应用及Matlab实现
  4. Ueditor编辑器 .Net 版
  5. 网络暴利行业,天龙私服赚千万是不是梦想?
  6. HSqlDB认识及使用
  7. 北航论文模板:解决XeLaTeX中Font shape'TU/SimSun(1)/b/n' undefined(font) using 'TU/SimSun(1)/m/n' instead
  8. 对COM组件的调用返回了错误HRESULT E_FAIL
  9. Linux删除账号及主目录,linux 删除用户账号和主目录
  10. STM32示波器设计