业务场景

  • 用户在页面使用电子签名进行文件的签收与信息的确认

分析

  • 考虑用户会通过手机或者PC端进行操作,因此需要在事件中考虑手机端部分

思路

  • 通过一个对话框的形式利用Canvas生成图片并通过toDataURL()转换成Base64的形式保存下来提交给后端进行保存

最终效果

实际效果展示


实现

export default {name: 'ESignature',data() {return {points: [],canvasTxt: null,stage_info: [],startX: 0,startY: 0,moveY: 0,moveX: 0,isDown: false,strokeStyle: '#000',lineWidth: 2}},mounted() {this.initCanvas()},methods: {// 初始化CanvasinitCanvas() {let canvas = this.$refs.canvasF// 获取画布的高度canvas.height = this.$refs.canvasHW.offsetHeight - 20// 获取画布的宽度canvas.width = this.$refs.canvasHW.offsetWidth - 20// 创建 context 对象this.canvasTxt = canvas.getContext('2d')this.stage_info = canvas.getBoundingClientRect()},// 鼠标按下事件 - 准备绘画mouseDown(ev) {ev = ev || eventev.preventDefault()if (ev) {let obj = {x: ev.offsetX,y: ev.offsetY}this.startX = obj.xthis.startY = obj.ythis.canvasTxt.beginPath()this.canvasTxt.moveTo(this.startX, this.startY)this.canvasTxt.lineTo(obj.x, obj.y)this.canvasTxt.stroke()this.canvasTxt.closePath()this.points.push(obj)this.isDown = true}},// 鼠标移动事件 - 开始绘画mouseMove(ev) {ev = ev || eventev.preventDefault()if (this.isDown) {let obj = {x: ev.offsetX,y: ev.offsetY}this.moveY = obj.ythis.moveX = obj.xthis.canvasTxt.strokeStyle = this.strokeStylethis.canvasTxt.lineWidth = this.lineWidththis.canvasTxt.beginPath()this.canvasTxt.moveTo(this.startX, this.startY)this.canvasTxt.lineTo(obj.x, obj.y)this.canvasTxt.stroke()this.canvasTxt.closePath()this.startY = obj.ythis.startX = obj.xthis.points.push(obj)}},// 松开鼠标事件 - 停止绘画mouseUp(ev) {ev = ev || eventev.preventDefault()if (ev) {let obj = {x: ev.offsetX,y: ev.offsetY}this.canvasTxt.beginPath()this.canvasTxt.moveTo(this.startX, this.startY)this.canvasTxt.lineTo(obj.x, obj.y)this.canvasTxt.stroke()this.canvasTxt.closePath()this.points.push(obj)this.points.push({ x: -1, y: -1 })this.isDown = false}},// 返回handleGoBack() {this.handleOverwrite()this.$emit('on-back')},// 重写handleOverwrite() {this.canvasTxt.clearRect(0, 0, this.$refs.canvasF.width, this.$refs.canvasF.height)this.points = []},}
}
详情请看:Vue-电子签名(E-Signature)

Vue-电子签名(E-Signature)相关推荐

  1. 电子签名 和 电子证书

    上回我白话了一下:"对称加密"和"非对称加密"的来龙去脉,收到了不错的反馈,今天接着上一次白话留下的伏笔,说一说"对称加密"和"非 ...

  2. sa密码修改记录_【数据完整性】一文读懂电子记录与电子签名

    一.电子记录的定义和特征 1.电子记录(Electronic  Record)是指依靠计算机系统进行创建.修改.维护.存档.找回或发送,诸如文字.图表.数据.声音.图像及其他以电子(数字)形式存在的信 ...

  3. 白话解释 非对称加密,电子签名,电子证书,根证书,HTTPS,PKI 到底是什么

    上回我白话了一下:"对称加密"和"非对称加密"的来龙去脉,收到了不错的反馈,今天接着上一次白话留下的伏笔,说一说"对称加密"和"非 ...

  4. 【北邮国院大三上】电子商务法(e-commerce law)知识点整理——e-transaction_Part2_BUPTWeek8

    北邮国院大三电商在读,随课程进行整理知识点.仅整理PPT和相关法条中相对重要的知识点,个人认为相对不重要的细小的知识点不列在其中.如有错误请指出.转载请注明出处,祝您学习愉快. 在进入主题之前,先讲了 ...

  5. vue signature 电子签名

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

  6. vue中使用电子签名

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

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

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

  8. VUE解决微信签名,SPA微信invalid signature问题,完美处理

    深度解决方案,包教不包会,只因为踩坑无数,希望大家能有所收获 前端小菜鸟,因为项目要对接微信的jssdk,对接就需要签名认证,但是无奈安卓和IOS各有各的坑,本篇文章只讨论签名,和一个分享的坑,希望大 ...

  9. Web前后端笔记-vue封装http请求添加signature及后端(Java)解析并验证

    首先帖下运行截图: 签名过期情况: 签名错误情况: 这里npm要导入js-md5,并且在main.js中添加 import md5 from 'js-md5' Vue.prototype.$md5 = ...

  10. vue 单页面(SPA) history模式调用微信jssdk 跳转后偶尔 “invalid signature“错误解决方案

    vue 单页面(SPA) history模式调用微信jssdk 跳转后偶尔 "invalid signature"错误解决方案 参考文章: (1)vue 单页面(SPA) hist ...

最新文章

  1. 干货 | 目标检测入门,看这篇就够了(下)
  2. 波士顿动力发布新版人形机器人:能跳跃旋转、后空翻
  3. 定时从linux获取文件,Linux 使用scp命令定时将文件备份到另一台服务器
  4. LeetCode 之Two Sum
  5. Nexus:一站式私有仓库管理(NuGet、Maven、npm、Docker)
  6. 尚硅谷2020最新版SpringCloud(H版alibaba)框架开发教程全套完整版从入门到精通
  7. div超出不换行_文字超出显示点点点之ellipsis 设置
  8. 用c语言求最大公约数的流程图,如何用c语言求最大公约数和最小公倍数
  9. php关闭gd库,详解php开启gd库的两种方法
  10. linux服务器和客户端配置,Linux基础教程:YUM服务端与客户端配置步骤
  11. 【十二】Jmeter:“CSV 数据文件设置”参数化请求出现中文乱码
  12. 华为v3鸿蒙系统_重磅!华为鸿蒙系统问世!
  13. CDN技术详解之系统架构
  14. c# winform实现人脸识别系统(文末附源码)
  15. Excel 数据透视表教程大全之 03 刷新数据、添加多个字段作为值字段、值显示为总数的百分
  16. CPU在计算机领域的含义,电脑中的CPU是什么意思
  17. Restful API设计规范及实战
  18. php网页转html网页怎么弄
  19. 用容器类实现事件坚挺器接口的示例
  20. 芯片族探索互联网+的新视角

热门文章

  1. 如何设置一个可扩展的MongoDB数据库?
  2. 叶文贤:胸怀绿色润滑 锻造品牌灵魂
  3. Python/Matplotlib实现雨点图动画
  4. Image Retrieval using Scene Graphs ——基于场景图的图像检索 读书笔记
  5. usb驱动开发21——驱动生命线
  6. java引用不同包下同名类_Java--一个类中引用不同包下同名类
  7. padavan mysql_newifi3 用Padavan(老毛子)固件 搭建web 尝试
  8. idea中创建scala的worksheet第五章
  9. kubernetes Downward API
  10. 如何修复cdn服务器异常,cdn服务器连接异常解决方法