返回顶部
首页 > 资讯 > 精选 >vue vue-esign签字板的demo怎么实现
  • 319
分享到

vue vue-esign签字板的demo怎么实现

2023-06-30 07:06:21 319人浏览 薄情痞子
摘要

本篇内容主要讲解“Vue vue-esign签字板的demo怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue vue-esign签字板的demo怎么实现”吧!vu

本篇内容主要讲解“Vue vue-esign签字板的demo怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue vue-esign签字板的demo怎么实现”吧!

    vue vue-esign签字板demo

    使用vue-esign让用户能够在手动签字并返回为base64或者file格式的文件流

    安装

    npm install vue-esign --save

    在main.js中全局引用

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

    Demo 

    <template>  <div class="esigns">    <vue-esign      ref="esign"      style="        width: 100%;        height: 400px      "      :isCrop="isCrop"      :lineWidth="lineWidth"      :lineColor="lineColor"      :bGColor.sync="bgColor"    />    <div class="btn">      <van-button type="primary" @click="handleReset">重置</van-button>      <van-button type="info" @click="handleGenerate">确定</van-button>    </div>  </div></template>
    <script>export default {  name: "Esign",  data() {    return {      lineWidth: 6,      lineColor: "#000000",      bgColor: "",      resultImg: "",      isCrop: false,    };  },  methods: {    handleReset() {      // 清除      this.$refs.esign.reset();    },    handleGenerate() {      // 获取base64      var _this = this;      _this.$refs.esign        .generate()        .then((res) => {          // 转成文件          var file = _this.dataURLtoFile(res);            console.log("file:",file )          //调用接口          uploadFile(file).then(({ data }) => {           console.log("data:",data)          });        })        .catch((err) => {          _this.$toast(err);         });    },    // 将base64转换为file    dataURLtoFile(dataurl) {      let arr = dataurl.split(",");      let mime = arr[0].match(/:(.*?);/)[1];      let bytes = atob(arr[1]); // 解码base64      let n = bytes.length;      let ia = new Uint8Array(n);      while (n--) {        ia[n] = bytes.charCodeAt(n);      }      return new File([ia], "easign.jpg", { type: mime });    },  },};</script>
    <style scoped>.btn {  display: flex;  justify-content: space-around;  margin-top: 10px;}</style>

    vue移动端电子签名demo

    html

    <template>    <div id='canvasBox'>        <div ref="canvasBox">             <canvas id="canvas" ref="canvas" height="150"></canvas>        </div>        <div class="row row-space-between">          <button  @click="onClickCancle">取消</button>          <button @click="clear">重签</button>          <button @click="save">确认</button>        </div>        <!-- <img :src="singImgUrl" alt /> -->    </div></template>

    JS相关代码

    <script>var draw;var preHandler = function(e) {  e.preventDefault();};class Draw {  constructor(el) {    this.el = el;    this.canvas = document.getElementById(this.el);    this.cxt = this.canvas.getContext("2d");    this.stage_info = canvas.getBoundingClientRect();    this.path = {      beginX: 0,      beginY: 0,      endX: 0,      endY: 0    };  }  init(btn) {    var that = this;    this.canvas.addEventListener("touchstart", function(event) {      document.addEventListener("touchstart", preHandler, false);      that.drawBegin(event);    });    this.canvas.addEventListener("touchend", function(event) {      document.addEventListener("touchend", preHandler, false);      that.drawEnd();    });    this.clear(btn);  }  drawBegin(e) {    var that = this;    window.getSelection()      ? window.getSelection().removeAllRanges()      : document.selection.empty();    this.cxt.strokeStyle = "#BC4C2D";    this.cxt.beginPath();    this.cxt.moveTo(      e.changedTouches[0].clientX - this.stage_info.left,      e.changedTouches[0].clientY - this.stage_info.top    );    this.path.beginX = e.changedTouches[0].clientX - this.stage_info.left;    this.path.beginY = e.changedTouches[0].clientY - this.stage_info.top;    canvas.addEventListener("touchmove", function() {      that.drawing(event);    });  }  drawing(e) {    this.cxt.lineTo(      e.changedTouches[0].clientX - this.stage_info.left,      e.changedTouches[0].clientY - this.stage_info.top    );    this.path.endX = e.changedTouches[0].clientX - this.stage_info.left;    this.path.endY = e.changedTouches[0].clientY - this.stage_info.top;    this.cxt.stroke();  }  drawEnd() {    document.removeEventListener("touchstart", preHandler, false);    document.removeEventListener("touchend", preHandler, false);    document.removeEventListener("touchmove", preHandler, false);    //canvas.ontouchmove = canvas.ontouchend = null  }  clear(btn) {    this.base64Id = "";    this.cxt.clearRect(0, 0, 500, 600);  }  save() {    var blank = document.createElement("canvas"); //系统获取一个空canvas对象    blank.width = canvas.width;    blank.height = canvas.height;    let flag = canvas.toDataURL("image/png") == blank.toDataURL(); //比较值相等则为空;    if (flag) {      return "0";    } else {      return canvas.toDataURL("image/png");    }  }}export default {  data() {    return {      singImgUrl: ""    };  },  methods: { clear() {        draw.clear();        this.base64Id = ""; },   save() {      var data = "";      data = draw.save();      if (data == "0") {      this.$toast("请先签名再点击确定哦~");      } else {      this.singImgUrl = data;      ///data 就是得到的base64格式的签名图片,根据业务这里可上传到服务器      }      //     },}, mounted() { document.getElementById("canvasBox").addEventListener("touchmove", (e) => {      e.preventDefault();    });//阻止浏览器默认行为,防止签名浏览器下拉-------很重要    this.base64Id = "";    let _width = this.$refs.canvasBox.offsetWidth;    this.$refs.canvas.width = _width; //适配移动端宽度给canvas    draw = new Draw("canvas");    draw.init();  }}</script>

    到此,相信大家对“vue vue-esign签字板的demo怎么实现”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    --结束END--

    本文标题: vue vue-esign签字板的demo怎么实现

    本文链接: https://lsjlt.com/news/327711.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • vue vue-esign签字板的demo怎么实现
      本篇内容主要讲解“vue vue-esign签字板的demo怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue vue-esign签字板的demo怎么实现”吧!vu...
      99+
      2023-06-30
    • vue vue-esign签字板的demo
      目录vue vue-esign签字板demo安装在main.js中全局引用vue移动端电子签名demovue vue-esign签字板demo 使用vue-esign让用户能够在手动...
      99+
      2024-04-02
    • vue模板标签怎么用
      这篇文章将为大家详细讲解有关vue模板标签怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。模板标签的另一种用途该template标签可以在模板内的任何地方使用,以更好地组织代码。我喜欢用它来简化v-i...
      99+
      2023-06-27
    • Vue怎么引入sign-canvas实现签名画板效果
      这篇“Vue怎么引入sign-canvas实现签名画板效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue怎么引入sig...
      99+
      2023-07-05
    • vue旋转木马组件demo怎么实现
      本文小编为大家详细介绍“vue旋转木马组件demo怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue旋转木马组件demo怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实现步骤1.确定组件类型确...
      99+
      2023-07-05
    • Vue中怎么实现3D标签云
      这篇文章主要讲解了“Vue中怎么实现3D标签云”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue中怎么实现3D标签云”吧!预览:代码:页面部分:<template> ...
      99+
      2023-06-20
    • 使用vue怎么实现tab标签
      使用vue怎么实现tab标签?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。<template>    <div&n...
      99+
      2023-06-15
    • vue怎么实现input框禁止输入标签
      这篇“vue怎么实现input框禁止输入标签”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue怎么实现input框禁止输入...
      99+
      2023-06-29
    • vue怎么实现数字变换动画
      今天小编给大家分享一下vue怎么实现数字变换动画的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。UI图数字部分如下:emmm。...
      99+
      2023-06-30
    • vue-admin-template模板添加tagsview的实现
      目录一、从vue-element-admin复制文件二、修改 vue-admin-template\src\layout\components\AppMain.vue三、修改vue-...
      99+
      2024-04-02
    • vue项目中扫码支付的实现示例(附demo)
      目录需求背景思路分析UI展示开始使用一 编写支付组件模板二 支付组件的JS相关代码和说明附:组件JS完整的源码需求背景 市场报告列表展示的报告有两种类型,一种是免费报告,另一种是付...
      99+
      2024-04-02
    • Vue的$set怎么实现
      这篇文章主要讲解了“Vue的$set怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue的$set怎么实现”吧!应用场景 let dataArr =&n...
      99+
      2023-07-04
    • 在Vue中怎么实现打字机的效果
      本篇内容介绍了“在Vue中怎么实现打字机的效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!最终效果I&lsquo;m ByPunk...
      99+
      2023-07-02
    • vue怎么实现修改标签中的内容:id class style
      本篇内容介绍了“vue怎么实现修改标签中的内容:id class style”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
      99+
      2023-07-02
    • 怎么在JavaScript中使用canvas实现一个画板和签字板功能
      怎么在JavaScript中使用canvas实现一个画板和签字板功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。<!DOCTYPE html><...
      99+
      2023-06-06
    • vue怎么实现数字动态翻牌器
      本篇内容主要讲解“vue怎么实现数字动态翻牌器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue怎么实现数字动态翻牌器”吧!数字动态翻牌器最近项目里使用到了数字翻牌器,于是自己写了一个,动态的...
      99+
      2023-06-30
    • vue怎么实现复制文字和图片
      本篇内容主要讲解“vue怎么实现复制文字和图片”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue怎么实现复制文字和图片”吧!document.execCommand('copy'...
      99+
      2023-07-05
    • vue实现登录注册模板的方法
      这篇文章主要介绍了vue实现登录注册模板的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。模板1: login.vue<template><p&...
      99+
      2023-06-14
    • vue怎么实现的跨域
      随着前端技术的不断发展,前端工程师们在制作网站时经常需要通过Ajax请求来获取数据。在这个过程中,很容易遇到跨域问题。本文将介绍Vue.js如何实现跨域请求的方式。JSONP跨域JSONP(JSON with Padding)是一种跨域数据...
      99+
      2023-05-18
    • Vue怎么使用sign-canvas实现在线手写签名
      这篇文章主要讲解了“Vue怎么使用sign-canvas实现在线手写签名”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue怎么使用sign-canvas实现在线手写签名”吧!效果图:sig...
      99+
      2023-06-30
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作