广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >微信小程序canvas实现手写签名
  • 243
分享到

微信小程序canvas实现手写签名

2024-04-02 19:04:59 243人浏览 独家记忆
摘要

本文实例为大家分享了微信小程序canvas实现手写签名的具体代码,供大家参考,具体内容如下 很多时候,程序中需要用到签名的功能,附上源码(微信小程序) .wxml <view

本文实例为大家分享了微信小程序canvas实现手写签名的具体代码,供大家参考,具体内容如下

很多时候,程序中需要用到签名的功能,附上源码微信小程序

.wxml

<view class="canvasBox">
      <view class="canvasTitle">请签名:</view>
      <view class="canvasContent">
        <view class="singatureTag">签名区域</view>
        <canvas style="width: {{canvasw}}px; height: {{canvash}}rpx;line-height:{{canvash}}rpx" disable-scroll="true"
          canvas-id="myCanvas" bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd"
          touchcancel="canvasEnd" binderror="canvasIdErrorCallback"></canvas>
      </view>
</view>
 
<view class="next" style="padding-bottom:calc({{iphonex_height}}px + 20rpx);">
      <view class="next-list">
        <van-button round custom-style='font-size:30rpx;border-radius:20px;width:60%;' type="info" plain color="#5359a7"
          catchtap="clearDraw">清  除</van-button>
      </view>
      <view class="next-list">
        <van-button round custom-style='font-size:30rpx;width:60%;' type="info" color="#1417b7" catchtap="submitDraw">
          提  交</van-button>
      </view>
</view>

 .js

data: {
    iphonex_height: app.globalData.iphonex_safe_area_height, //inphonex安全区高度
    currentColor: '#000',
    canvasw: 0,
    canvash: 0,
    userId: '',
    signFile: '',
    base64: '',
  },
 

  onLoad: function (options) {
    var that = this;
    that.setData({
      userId: options.userId,
      signFile: options.signFile,
      name: options.name,
      drawId_: options.drawId,
      list_: JSON.parse(options.list_),
      userID: options.userID,
    })
    console.log(that.data.list_);
 
    this.begin = false;
    this.startX = 0;
    this.startY = 0;
    this.context = wx.createCanvasContext('myCanvas')
    this.context.setLineWidth(4);
    this.context.setLineCap('round');
    this.context.setLineJoin('round');
    wx.getSystemInfo({
      success: function (res) {
        that.setData({
          canvasw: res.windowWidth, //设备宽度
          canvash: 400
        });
      }
    });
  },
 
  touchStart: function (e) {
    this.lineBegin(e.touches[0].x, e.touches[0].y)
  },
 
  // 绘制中 手指在屏幕上移动
  touchMove: function (e) {
    if (this.begin) {
      this.lineAddPoint(e.touches[0].x, e.touches[0].y);
      this.context.draw(true);
    }
  },
 
  // 绘制结束 手指抬起
  touchEnd: function () {
    this.lineEnd();
  },
 
  // 绘制线条结束
  lineEnd: function () {
    this.context.closePath();
    this.begin = false;
  },
 
  // 开始绘制线条
  lineBegin: function (x, y) {
    this.begin = true;
    this.context.beginPath()
    this.startX = x;
    this.startY = y;
    this.context.moveTo(this.startX, this.startY)
    this.lineAddPoint(x, y);
  },
 
  // 绘制线条中间添加点
  lineAddPoint: function (x, y) {
    this.context.moveTo(this.startX, this.startY)
    this.context.lineTo(x, y)
    this.context.stroke();
    this.startX = x;
    this.startY = y;
  },

提交:请求接口

//提交
  submitDraw() {
    console.log("提交");
    var that = this;
    console.log(that.data.name);
    //跳转携带的参数
    if (that.data.name == "sponsor_drawing") {
      console.log("申请人签字");
      wx.canvasToTempFilePath({
        canvasId: 'myCanvas',
        success: function (res) {
          if (that.startY == 0) {
            wx.showToast({
              icon: 'none',
              title: '您还没有签名',
            })
          } else {
            //整理签名格式
            that.setData({
              //转base64
              base64: wx.getFileSystemManager().readFileSync(res.tempFilePath, "base64").replace(/\s/g, ""),
            })
            console.log("base64");
            console.log(that.data.base64);
            //请求接口 提交信息
            //申请人签字
            let url = '/release/release?drawId=' + that.data.drawId_ + '&signature=' + `${encodeURIComponent(that.data.base64)}`;
            let data = {}
            wx.showLoading({
              title: '发布中',
            })
            app.wxRequest('POST', 1, url, data, (res) => {
              if (res.code == 200) {
                wx.hideLoading();
                Toast('提存信息发布成功');
                if (that.data.list_ != null) {
                  var issuer_ = that.data.list_.issuer; //发布人信息
                  var accept_ = that.data.list_.accept; //受领人信息
                  if (app.globalData.note_bool) {
                    for (var i = 0; i < accept_.length; i++) {
                      if (list_ != null) {
                        that.call_function(1, issuer_[0].name, accept_[i].name, accept_[i].phone); //短信通知
                      }
                    }
                  }
                }
                setTimeout(function () {
                  wx.switchTab({
                    url: '/pages/user/mydrawing/index',
                  });
                }, 500)
              } else {
                wx.hideLoading();
                Toast('提存信息发布失败');
              }
            }, (err) => {
              wx.hideLoading();
              Toast('加载失败');
              console.log(err);
            })
          }
        },
      })
    } else if (that.data.name == "kuanApplyof") {
      console.log("受领人签字");
      wx.canvasToTempFilePath({
        canvasId: 'myCanvas',
        success: function (res) {
          if (that.startY == 0) {
            wx.showToast({
              icon: 'none',
              title: '您还没有签名',
            })
          } else {
            //整理签名格式
            that.setData({
              //转base64
              base64: wx.getFileSystemManager().readFileSync(res.tempFilePath, "base64"),
            })
            console.log("base64");
            console.log(that.data.base64);
            //请求接口 提交信息
            // list_ = JSON.parse(list_);
            console.log(that.data.list_);
            let url = '/accept/apply?drawId=' + that.data.drawId_ + '&userId=' + that.data.userID + '&signature=' + `${encodeURIComponent(that.data.base64)}`;
            let data = {
              account: that.data.list_.account, //开户名
              mobile: that.data.list_.mobile, //手机号
              cardNo: that.data.list_.cardNo, //身份证号
              bankName: that.data.list_.bankName, //开户行
              bankNo: that.data.list_.bankNo, //卡号
              remarks: that.data.list_.remarks, //备注信息
              applyMaterialList: that.data.list_.applyMaterialList, //申请材料信息
            }
            console.log(data);
            wx.showLoading({
              title: '确认中',
            })
            app.wxRequest('POST', 2, url, data, (res) => {
              console.log(res);
              if (res.code == 200) {
                wx.hideLoading();
                Toast('确认提存信息成功');
                var name_accept = null;
                for (var i = 0; i < that.data.list_.accept_list.length; i++) {
                  if (app.globalData.user_phone == that.data.list_.accept_list[i].mobile) {
                    name_accept = that.data.list_.accept_list[i].name;
                  }
                }
                let sendMobile = app.globalData.sendMobile; //公证
                if (that.data.list_ != null && name_accept != null) {
                  if (app.globalData.note_bool) {
                    if (sendMobile != '') {
                      that.call_function(7, that.data.list_.issuer_list.realName, name_accept, sendMobile);
                    }
                  }
                }
                setTimeout(() => {
                  wx.switchTab({
                    url: '/pages/user/perceptio/index',
                  })
                }, 500)
              } else {
                wx.hideLoading();
                Toast('确认提存信息失败');
              }
            }, (err) => {
              wx.hideLoading();
              Toast('加载失败');
              console.log(err);
            })
          }
        },
      })
 
    } else {
      Toast('提存信息发布失败');
    }
  },
 
  clearDraw() {
    console.log("清除");
    this.startY = 0
    this.context.draw()
    this.context.setLineWidth(4);
    this.context.setLineCap('round');
    this.context.setLineJoin('round');
  }

样式(CSS)


 
.contentBox {
  width: 100%;
  background:#4f58a8;
}
 
.title{
  font-size: 30rpx;
  color:#fff;
  font-weight: 600;
  text-indent: 20rpx;
  padding:30rpx 0;
}
 
.main {
  padding-top: 40rpx;
  width: 100%;
  margin: 0 auto;
  background:#ffffff;
  border-radius: 30rpx 30rpx 0 0;
}
.warningTitle{
  width: 90%;
  margin: 30rpx auto 0;
  font-weight: 600;
  line-height: 60rpx;
  font-size:40rpx;
}
.txtWarning {
  line-height: 20px;
  width: 90%;
  margin: 0 auto 90rpx;
}
 
.canvasBox {
  height: 400rpx;
  width: 100%;
  margin: 30rpx auto;
}
.canvasTitle{
  height: 65rpx;
  width: 90%;
  margin: 0 auto;
}
.canvasContent {
  height: 400rpx;
  border-bottom: 4rpx solid #cdcdcd;
  background:#f5f5f5;
  position: relative;
}
.singatureTag{
  position: absolute;
  top: 0rpx;
  left: 0rpx;
  font-size: 160rpx;
  color: #e6e6e6;
  width: 100%;
  text-align: center;
  letter-spacing: 8rpx;
  line-height: 400rpx;
}
.btnBox {
  width: 100%;
  margin-top: 30rpx;
  display: flex;
  justify-content: space-between;
}
 
.next {
  width: 100%;
  padding: 20rpx 0;
  background: #ffffff;
  border-top: 1rpx solid #ccc;
  position: fixed;
  left: 0;
  bottom: 0;
  z-index: 9;
}
.next-list {
  width: 50%;
  text-align: center;
  display: inline-block;
  vertical-align: middle;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 微信小程序canvas实现手写签名

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序canvas实现手写签名
    本文实例为大家分享了微信小程序canvas实现手写签名的具体代码,供大家参考,具体内容如下 很多时候,程序中需要用到签名的功能,附上源码(微信小程序) .wxml <view...
    99+
    2022-11-13
  • 微信小程序实现手写签名
    本文实例为大家分享了微信小程序实现手写签名的具体代码,供大家参考,具体内容如下 本示例具备的功能: 1、笔迹绘制 2、笔迹清空 以下是js代码: var content = null...
    99+
    2022-11-13
  • 微信小程序实现手写签名(签字版)
    本文实例为大家分享了微信小程序实现手写签名的具体代码,供大家参考,具体内容如下 公司近期有个需要用户签名的功能,就用小程序canvas写了个 wxml <view class...
    99+
    2022-11-13
  • 微信小程序实现横屏手写签名
    本文实例为大家分享了微信小程序实现横屏手写签名的具体代码,供大家参考,具体内容如下 1.关键配置: "pageOrientation": "landsc...
    99+
    2022-11-13
  • 微信小程序如何实现手写签名
    这篇文章主要介绍了微信小程序如何实现手写签名的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序如何实现手写签名文章都会有所收获,下面我们一起来看看吧。效果wxml<view class=&...
    99+
    2023-07-02
  • 微信小程序怎么实现手写签名
    本文小编为大家详细介绍“微信小程序怎么实现手写签名”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序怎么实现手写签名”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在微信小程序上实现手写签名,获取canva...
    99+
    2023-06-29
  • 微信小程序用canvas实现电子签名
    本文实例为大家分享了微信小程序用canvas实现电子签名的具体代码,供大家参考,具体内容如下 <view class="sign-contain">     <vi...
    99+
    2022-11-13
  • 微信小程序实现手写签名的示例代码
    目录1.效果图2.相关代码canvas代码js相关在微信小程序上实现手写签名,获取canvascontext新版本和旧版本有点坑,新版本在获取canvas后如果页面有滑动,则签名坐标...
    99+
    2022-11-13
  • 微信小程序怎么实现简单手写签名组件
    这篇文章主要介绍了微信小程序怎么实现简单手写签名组件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序怎么实现简单手写签名组件文章都会有所收获,下面我们一起来看看吧。需求:可以实现用户在微信小程序上手写签...
    99+
    2023-06-08
  • 微信小程序怎么实现一个手写签名组件
    这期内容当中小编将会给大家带来有关微信小程序怎么实现一个手写签名组件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。背景:在做项目过程中,需要在微信小程序中实现手写签名组件。在网上找了微信小程序手写签名实现...
    99+
    2023-06-20
  • 小程序实现手写签名
    本文实例为大家分享了小程序实现手写签名的具体代码,供大家参考,具体内容如下 方法不是我自己写的,但是也忘记最初的原版出自于哪里了,不过搜索下来就是大同小异,我就附上自己实测有效的!可...
    99+
    2022-11-13
  • 微信小程序怎么用canvas实现电子签名
    这篇文章主要介绍“微信小程序怎么用canvas实现电子签名”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序怎么用canvas实现电子签名”文章能帮助大家解决问题。具体代码如下<view...
    99+
    2023-07-02
  • 小程序实现手写板签名
    本文实例为大家分享了小程序实现手写板签名的具体代码,供大家参考,具体内容如下 1.wxss代码 page {     background: #F8F8F8; } .qianmin...
    99+
    2022-11-13
  • 微信小程序实现手写板
    本文实例为大家分享了微信小程序实现手写板的具体代码,供大家参考,具体内容如下 <!-- wxml --> <view class="hxt-flex-column...
    99+
    2022-11-13
  • 微信小程序实现简单手写签名组件的方法实例
    目录背景:需求:效果一、思路 二、实现 1. 页面与样式 2. 初始化 3. 点击时 4. 签名时 三、总结 背景: 在做项目过程中,需要在微信小程序中实现手写签名组件。在网上找了微...
    99+
    2022-11-12
  • 微信小程序实现电子签名
    本文实例为大家分享了微信小程序实现电子签名的具体代码,供大家参考,具体内容如下 <view class="sign-contain"> <view class...
    99+
    2022-11-12
  • 小程序实现手写签名功能
    小程序利用canvas实现手写签名,供大家参考,具体内容如下 设置小程序横屏 在page.json或对应页面 .json文件中设置landscape代表固定横屏 "pageOrie...
    99+
    2022-11-13
  • 小程序canvas手写签名适配PC实现示例详解
    目录引言先看看效果图看看代码判别是否是PC版本注意事项结语引言 继上一篇的《丝滑流畅的手写签名功能》博文才过去没多久,我才发现 canvas 2d 无法在 PC 的小程序中使用,真实...
    99+
    2023-05-16
    小程序canvas手写签名 适配PC小程序canvas签名
  • 微信小程序怎么实现电子签名
    要在微信小程序中实现电子签名,可以按照以下步骤操作:1. 在小程序页面中创建一个画布(canvas)组件,用于绘制签名。可以使用 `...
    99+
    2023-08-18
    微信小程序
  • 微信小程序canvas实现环形渐变
    本文实例为大家分享了微信小程序canvas实现环形渐变的具体代码,供大家参考,具体内容如下 这个例子是在微信小程序中写的 效果图 后端返回的数据格式,需要的只有otherInfo里...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作