zoukankan      html  css  js  c++  java
  • vue移动端canvas绘制签名插件:signature_pad

    效果图

    1.下载:npm install --save signature_pad

    2.引入并使用

    <template>
      <div>
        <div style="border: 1px solid #eee" ref="canvasBox">
          <canvas class="canvasId"/>
        </div>
        <div class="btnBox">
          <van-button round type="info" @click="clear">重签</van-button>
          <van-button round type="info" @click="save">确定</van-button>
        </div>
      </div>
    </template>
    
    <script>
      import SignaturePad from 'signature_pad';
      import {Button,Notify} from 'vant'
        export default {
            name: "signature",
          components: {
            [Button.name]:Button,
            [Notify.Component.name]: Notify.Component,
          },
          data () {
            return {
              SignaturePad:null,
              config:{
                penColor: "#000000",   //笔刷颜色
                minWidth:3,       //最小宽度
              }
            }
          },
          mounted() {
            this.getCanvas()
          },
          methods: {
            getCanvas() {
              var canvas = document.querySelector('.canvasId');
              this.signaturePad = new SignaturePad(canvas, this.config);
              canvas.height = 200;
              canvas.width = this.$refs.canvasBox.clientWidth;
            },
            //保存
            save(){
              //默认保存为png格式
              // console.log(this.signaturePad.toDataURL())
              // console.log(this.signaturePad.toDataURL('image/jpeg'))
              // console.log(this.signaturePad.toDataURL('image/svg+xml'))
              // console.log(this.signaturePad.isEmpty())  //判断画布有没有内容,布尔型
              if(this.signaturePad.isEmpty()){
                Notify({ type: 'danger', message: '电子签名不能为空' });
              }else{
                this.$emit('setSign',this.signaturePad.toDataURL())
              }
    
            },
            //清除
            clear() {
              //清除画布内容
              this.signaturePad.clear();
            },
          }
        }
    </script>
    
    <style scoped lang="scss">
      .btnBox {
        padding: 10px;
        text-align: center;
      /deep/ .van-button--info {
        height: 30px;
        padding: 0 30px;
      &:first-child {
         margin-right: 30px;
       }
      }
      }
    </style>

     3.父组件接收签名图片

  • 相关阅读:
    微信小程序之base64转为本地图片
    微信小程序之页面跳转方法
    一些收集的社区网址+学习网站、文档
    11-DOM介绍
    10-关于DOM的事件操作
    09-伪数组 arguments
    前端---css
    前端---html
    并发编程------网络IO模型、IO多路复用
    并发编程------协程
  • 原文地址:https://www.cnblogs.com/duanzhenzhen/p/14443204.html
Copyright © 2011-2022 走看看