uniapp小程序实现横屏手写签名

在这里插入图片描述

<template><view class="signBox column-me"><!-- 这个是自定义的title-可根据自己封装的title的作为调整 --><status-bar title="电子签名" :bgColor="null"></status-bar><view class="topHint">请绘制清晰可辨的签名并保存</view><canvas class="canvas flex1" :canvas-id="cid" :id="cid" @touchstart="touchstart" @touchmove="touchmove"@touchend="touchend" :disable-scroll="true"></canvas><view class="btn margin-top10 margin-bottom10"><view class="cancelBtn" @click="reWrite">重写</view><view class="saveBtn margin-left30" @click="save">保存</view></view></view>
</template><script>export default {components: {},data() {return {line: [],radius: 0,taskId: '',//以下与签名有关参数dom: null,cid: 'canvas', //画布idStrokes: [],showCanvasDialog: false,canvasImg: '', //签名图片}},onLoad(e) {this.taskId = e.taskId},computed: {},mounted: function() {let that = thisthis.initCanvas()},methods: {initCanvas() {let that = thisthis.$nextTick(function() {this.dom = uni.createCanvasContext(this.cid, this);var query = wx.createSelectorQuery();query.select('#canvas').boundingClientRect();query.exec(function(res) {let widths = res[0].widthlet heights = res[0].heightthat.dom.rect(0, 0, widths, heights)that.dom.setFillStyle('#FFFFFF')that.dom.fill()that.dom.draw()})});},touchstart(e) {this.Strokes.push({imageData: null,style: {color: '#000000',lineWidth: '3',},points: [{x: e.touches[0].x,y: e.touches[0].y,type: e.type,}]})this.drawLine(this.Strokes[this.Strokes.length - 1], e.type);},touchmove(e) {this.Strokes[this.Strokes.length - 1].points.push({x: e.touches[0].x,y: e.touches[0].y,type: e.type,})this.drawLine(this.Strokes[this.Strokes.length - 1], e.type);},touchend(e) {if (this.Strokes[this.Strokes.length - 1].points.length < 2) { //当此路径只有一个点的时候this.Strokes.pop();}},drawLine(StrokesItem, type) {if (StrokesItem.points.length > 1) {this.dom.setLineCap('round')this.dom.setStrokeStyle(StrokesItem.style.color);this.dom.setLineWidth(StrokesItem.style.lineWidth);this.dom.moveTo(StrokesItem.points[StrokesItem.points.length - 2].x, StrokesItem.points[StrokesItem.points.length -2].y);this.dom.lineTo(StrokesItem.points[StrokesItem.points.length - 1].x, StrokesItem.points[StrokesItem.points.length -1].y);this.dom.stroke();this.dom.draw(true);}},//重写签名reWrite() {this.Strokes = [];this.dom.draw();this.initCanvas()},// 保存图片save() {let that = thisuni.canvasToTempFilePath({canvasId: 'canvas',fileType: 'png',quality: 1, //图片质量success: function(res) {let imgs = [res.tempFilePath]that.$.upload_img(imgs, 0, res => {let imgUrl = res.data //签名图片let mediaUrl = that.$.get_data('mediaUrl') //采集图片if (that.$.isEmpty(mediaUrl)) {mediaUrl = ''}that.$.ajax("POST", "/customer/user/checkTask", {taskId: that.taskId,status: 1, //状态:1同意2拒绝  signImage: imgUrl,userVideo: mediaUrl,}, (res) => {if (res.code === 1000) {that.$.ti_shi(res.message)setTimeout(() => {uni.$emit('signOk')that.$.back()}, 1000)} else {that.$.ti_shi(res.message)}});})},fail(e) {console.log(e)}})}}}
</script><style scoped lang="less">.signBox {position: relative;overflow: hidden;background-color: #F6F6F6;height: 100vh;width: 100vw;.canvas {width: 100%;background: #FFFFFF;}.topHint {width: 100%;height: 60rpx;line-height: 60rpx;font-size: 28rpx;color: #6D7984;text-align: center;background: ;}.btn {width: 100%;height: 132rpx;display: flex;align-items: center;justify-content: center;.saveBtn {width: 300rpx;height: 88rpx;line-height: 88rpx;background: #215AA0;border-radius: 20rpx;text-align: center;font-size: 32rpx;color: #FFFFFF;}.cancelBtn {width: 298rpx;height: 86rpx;line-height: 86rpx;background: #FFFFFF;border-radius: 20rpx;text-align: center;font-size: 32rpx;color: #202233;border: 1px solid #BBC4CC;}}}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/413339.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

滚雪球学MyBatis-Plus(02):环境准备

环境准备 本地开发环境参考如下&#xff1a; 开发工具&#xff1a;IntelliJ IDEA 2021.3.2JDK版本&#xff1a; JDK 1.8Spring Boot版本&#xff1a;2.3.1.RELEASEMaven版本&#xff1a;Apache Maven 3.8.2MySQL&#xff1a;5.6 前言 在上期内容中&#xff0c;我们系统地介绍了…

python实战三-提取Word数据到Excel

视频源码&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/83db5bb15383 一个文件夹下有大量会议通知文件&#xff0c;为word文件&#xff0c;文件格式都是一致的&#xff0c;现在要将文件中的一些字段提取出来汇总到Excel文件中。 会议通知文件格式如下&#xff1a; 要提…

电路笔记(PCB): 椭圆形板框绘制

使用 QCAD绘制并导出dxf文件 https://www.qcad.org/en/&#xff0c;QCAD 是一个免费的开源应用程序&#xff0c;用于二维 &#xff08;2D&#xff09; 计算机辅助绘图 &#xff08;CAD&#xff09;。 导入dxf文件

【Apache Doris】数据均衡问题排查指南

原文阅读&#xff1a;【巨人肩膀社区博客分享】【Apache Doris】数据均衡问题排查指南 一、前提概要 当集群处于以下几种情况时&#xff0c;可参考本文进行问题排查。 •BE节点之间的数据不均 •单个BE节点上的多个磁盘之间的数据不均 •BE节点的上线和下线进度卡死&#…

路由策略工具

1.产生背景 a.保证数据访问的安全性 b.提高链路带宽利用率 c.流量路径不优 2.解决方案: 解决方案一:路由策略:可通过修改路由条目(即对接收和发布的路由进行过滤)来控制流量可达性 解决方案二:流量过滤:可使用Traffic-Filter工具对数据直接进行过滤 3.路由策略工具 a.可利…

基于jstat 分析垃圾回收情况,进行JVM调优

文章目录 引言I jstat 统计信息工具JVM 堆内存布局命令格式元数据空间统计堆内存统计JVM编译方法统计编译统计类加载统计II JVM调优基本概念: 应用程序的响应时间(RT)和吞吐量(QPS)JVM调优原理调优思路调优方法JVM调优技巧建议III 基于jstat 分析垃圾回收情况,进行JVM调优…

gitee 简单使用

目录 1. github 介绍 2. gitee 介绍 2.1 下载工具 2.2 创建仓库 2.3 clone 远程仓库到本地 2.4 上传代码 2.4.1 add:预添加到本地仓库 2.4.2 commit:提交代码到仓库 2.4.3 push:推送添加操作到远程仓库 3. 问题解决 3.1 文件推送成功&#xff0c;gitee没有绿点 3.2…

如何实现OpenHarmony的OTA升级

OTA简介 随着设备系统日新月异&#xff0c;用户如何及时获取系统的更新&#xff0c;体验新版本带来的新的体验&#xff0c;以及提升系统的稳定性和安全性成为了每个厂商都面临的严峻问题。OTA&#xff08;Over the Air&#xff09;提供对设备远程升级的能力。升级子系统对用户…

.NET WPF 抖动动画

.NET WPF 抖动动画 文章目录 .NET WPF 抖动动画1. WPF 动画的基本概念2. 动画类型3. 使用XAML定义动画4. 使用代码后台定义动画5. 组合动画6. 动画控制7. 自定义动画8. 动画的性能优化9. Demo - 抖动动画1. WPF 动画的基本概念 动画(Animation):在WPF中,动画指的是在一段时…

三级_网络技术_53_应用题

一、 请根据下图所示网络结构回答下列问题。 1.设备1应选用__________网络设备。 2.若对整个网络实施保护&#xff0c;防火墙应加在图中位置1~3的__________位置上。 3.如果采用了入侵检测设备对进出网络的流量进行检测&#xff0c;并且探测器是在交换机1上通过端口镜像方式…

完整指南:CNStream流处理多路并发框架适配到NVIDIA Jetson Orin (一) 依赖库编译、第三方库编译安装

目录 1 jetson-ffmpeg的编译安装与配置--用来做视频编码、视频解码 2 CV-CUDA库的编译安装与配置--用来做图像缩放、裁剪、色域转换 3 cuda cudnn TensorRT相关库的拷贝与配置 3.1将cuda cudnn TensorRT相关的头文件拷贝到工程中 3.2 将cuda cudnn TensorRT相关的库拷贝到…

ArcGIS Pro技术应用

GIS是利用电子计算机及其外部设备&#xff0c;采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲&#xff0c;它是在一定的地域内&#xff0c;将地理空间信息和 一些与该地域地理信息相关的属性信息结合起来&#xff0c;达到对地理和属性信息的综合管理。GIS的…

学习之SQL语句之DQL(数据库查询语言)

DQL英文全称是Data Query Language(数据查询语言)&#xff0c;数据查询语言&#xff0c;用来查询数据库中表的记录 查询关键字:SELECT 数据准备&#xff1a; CREATE TABLE emp ( id INT COMMENT “编号”, workno VARCHAR ( 10 ) COMMENT “工号”, NAME VARCHAR ( 10 ) COMME…

day45.动态规划

1035.不相交的线: 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在&#xff0c;可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线&#xff0c;这些直线需要同时满足&#xff1a; nums1[i] nums2[j] 且绘制的直线不与任何其他连线&#xff08;非水…

【Python】家庭用电数据的时序分析

Household Electricity Consumption | Kaggle 目录 数据简介 探索分析 数据清洗 用电占比 趋势分析 序列分解 周期分析 周期分解 分析小结 数据简介 240000-household-electricity-consumption-records数据集包含了一个家庭6个月的用电数据&#xff0c;收集于2007年1…

安防监控/软硬一体/视频汇聚网关EasyCVR硬件启动崩溃是什么原因?

安防视频监控EasyCVR安防监控视频系统采用先进的网络传输技术&#xff0c;支持高清视频的接入和传输&#xff0c;能够满足大规模、高并发的远程监控需求。EasyCVR平台支持多种视频流的外部分发&#xff0c;如RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、WebRTC、WS-FMP4、HTTP-…

MySql【数据查询语言DQL】

DQL[非常重要] DQL 主要指查询语句,有查询单表数据,也有查多表数据表,单表查询 基本查询 条件查询 模糊查询 排序查询 聚合查询 去重查询 分组查询 限制查询 1、 数据准备 将发的stu.sql导入到MySql中 2、 基本查询 select 字段1,字段2,... from 表名; 查询返回的是一张…

C语言 ——— 文件读取结束的判定

目录 判定文件读取结束的方式 被错误使用的feof函数 判定文件结束的正确使用 判定文件读取结束的方式 判断文本文件是否读取结束&#xff1a; 利用 fgetc 判断返回值是否为 EOF 利用 fgets 判断返回值是否为 NULL 判断二进制文件是否读取结束&#xff1a; 利用 fread 判…

MAC环境导出项目的目录结构

一、安装Homebrew包管理工具 /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)" 官网网址&#xff1a;https://brew.idayer.com/ 二、用brew包管理工具安装tree brew install tree 三、打开终端&#xff0c;导出项目…

axios响应

一.axios请求配置项(axios在调用时所接收的参数对象&#xff09; 以下是请求时可用的配置选项&#xff0c;只有url是必须的&#xff0c;如果没有指定method&#xff0c;请求将默认使用get方法 { // url 是用于请求的服务器 URL url: "/user", // method 是创建请…