问题形容

在咱们开发我的项目中,特地是流程审批类的我的项目,最初一步会提交审核,审核员看完相应信息当前,没问题就会签字通过审批。所以就要用到本篇文章中的vue-esign签字技术。
vue-esign技术是基于html5代新个性,canvas技术进行的组件化封装,在那个页面须要用到签字技术,只须要引入vue-esign组件即可。这个组件其实也是能够了解为是一个插件。本篇文章记录一下这个插件的用法,忘了的时候回来看看。咱们先看一下最终的demo效果图

vue-esign效果图

左边控制台输出的就是生成的签名画布图片转成base64格局的图片信息

应用步骤

第一步,下载并注册vue-esign插件

下载:
cnpm i vue-esign --save
main.js中引入并注册这个插件:

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

第二步,应用vue-esign插件

<template>  <div id="app">    <!-- 做应用el-dialog做签字的弹框 -->    <el-dialog title="签字" :visible.sync="dialogVisible" width="800px" append-to-body>      <!-- 应用这个签名组件 -->      <vue-esign        ref="esign"        class="mySign"        :width="800"        :height="300"        :isCrop="isCrop"        :lineWidth="lineWidth"        :lineColor="lineColor"        :bgColor.sync="bgColor"      />      <span slot="footer" class="dialog-footer">        <el-button @click="handleGenerate" type="primary">生成签字图片</el-button>        <el-button @click="handleReset">清空画板</el-button>        <el-button @click="dialogVisible = false">勾销</el-button>      </span>    </el-dialog>    <!-- 审查人点击确认签字按钮触发签字 -->    <div class="checkMan">      <h2>审查人</h2>      <el-button plain @click="dialogVisible = true" type="primary">点击签字</el-button>      <!-- 用户用来预览签字图片的中央 -->      <img :src="resultImg" alt="" />    </div>  </div></template><script>export default {  name: "App",  data() {    return {      dialogVisible: false, // 弹框是否开启      lineWidth: 6, // 画笔的线条粗细      lineColor: "#000000", // 画笔的色彩      bgColor: "", // 画布的背景色彩      resultImg: "", // 最终画布生成的base64图片      isCrop: false, // 是否裁剪,在画布设定尺寸根底上裁掉周围空白局部    };  },  methods: {    // 清空画板    handleReset() {      this.$refs.esign.reset();    },    // 生成签字图    handleGenerate() {      this.$refs.esign        .generate() // 应用生成器调用把签字的图片转换成为base64图片格式        .then((res) => {          this.resultImg = res;        })        .catch((err) => {          // 画布没有签字时会执行这里提醒一下          this.$message({            type: "warning",            message: "请签名后再生成签字图片",          });        });      // 在这里向后端发申请把转换后的base64文件传给后端,后端接管当前再转换成图片做动态图片存储      // 当然也能够把base64转成流文件blob格局的,相似上传给后端这样,具体哪种形式看后端要求      setTimeout(() => {        // 这里要应用定时器略微延后当前就能取到base64数据了,当然也能够再加一个确认按钮,如:确认应用这张base64签名图片        // 点击确认当前,在其回调函数中,再把base64的签名图片传给后端用于存储        console.log('我是签字后的base64图片',this.resultImg);      }, 200);      this.dialogVisible = false;    },  },};</script><style lang="less" scoped>#app {  width: 100%;  height: 100%;  padding: 60px;  .checkMan {    width: 400px;    height: 360px;    text-align: center;    border: 1px solid #e9e9e9;    padding-top: 40px;    h2 {      margin-bottom: 20px;    }    .el-button {      margin-bottom: 20px;    }    img {      width: 100%;      height: 200px;    }  }}/deep/ .el-dialog__body {  // 设置一下签字区域的虚线边框  .mySign {    border: 1px dashed #000;  }}</style>

其实用法也很简略,细节的正文写在代码外面了。记录一下

最初附上官网的npmjs文档链接解说,传送门如下:
https://www.npmjs.com/package...