vue中实现签名画板

news2024/11/24 8:29:47

在这里插入图片描述
特意封装成了一个组件,签名之后会生成一张图片
signBoard.vue

<template>
  <el-drawer title="签名" :visible.sync="isShowBoard" append-to-body :show-close="false" :before-close="closeBoard" size="50%" @close="closeBoard">
    <div class="drawer-body">
      <el-row v-loading="loading">
        <vue-sign ref="esign" :width="800" :height="300" :is-crop="isCrop" :line-width="lineWidth" :line-color="lineColor" />
        <button class="mt20" @click="handleReset">清空画板</button>
      </el-row>
    </div>
    <div class="drawer-footer">
      <el-button @click="closeBoard">关 闭</el-button>
      <el-button type="primary" :loading="loading" @click="handleSign">签 名</el-button>
    </div>
  </el-drawer>

</template>

<script>
import vueSign from 'vue-esign'
import oss from '@/utils/oss'
const baseUrl = process.env.VUE_APP_OSS_URL
export default {
  components: { vueSign },
  props: {
    folder: {
      type: String,
      default: ''
    },
    isShowBoard: {
      type: Boolean,
      default: false
    },
    loading: {
      type: Boolean,
      default: false
    }
  },
  data() {
    return {
      lineWidth: 6,
      lineColor: '#000000',
      bgColor: '#eee',
      fileList: [],
      signSrc: '',
      isCrop: false
    }
  },
  methods: {
    handleReset() {
      this.$refs.esign.reset()
      this.$refs.esign.$el.style.background = '#eee'
    },
    async handleGenerate() {
      try {
        const res = await this.$refs.esign.generate()
        //服务器上传
        const result = await oss.dataURLtoFile(res, this.folder)
        this.signSrc = baseUrl + '' + result.fileUrl
        this.$emit('sign', this.signSrc)
      } catch (e) {
        this.$message.error('请先进行手签')
      }
    },
    handleSign() {
      this.handleConfirm(() => this.handleGenerate())
    },
    closeBoard() {
      this.handleReset()
      this.$emit('update:isShowBoard', false)
    }
  }
}
</script>

使用

  <sign-board
    :folder="CONSTANT.EMPLOYEE_CHECK"
    :is-show-board.sync="isShowBoard"
    :loading="loading"
    @sign="getSignSrc"
  />
    getSignSrc(src) {
    },

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文1000字彻底搞懂Web测试与App测试的区别

总结分享一些项目需要结合Web测试和App测试的工作经验给大家&#xff1a; 从功能测试区分&#xff0c;Web测试与App测试在测试用例设计和测试流程上没什么区别。 而两者的主要区别体现在如下几个方面&#xff1a; 1 系统结构方面 Web项目&#xff0c;B/S架构&#xff0c;基于…

网络请求流程简述

二层通信 通过 ARP 获取 MAC通过 MAC 确定目标进行通信 相同 vlan&#xff0c;不跨交换机 相同 vlan&#xff0c;跨交换机 不同 vlan

二进制搭建kubernetes

二进制搭建kubernetes 一、常见的K8S部署方式1.Minikube2.Kubeadmin3.二进制安装部署 二、二进制搭建K8S(单台master)1.部署架构规划2.系统初始化配置3.部署 docker引擎4.部署 etcd 集群4.部署 Master 组件5.部署 Worker Node 组件6.部署网络组件 三、负载均衡部署1.配置load b…

44、Flink之module模块介绍及使用示例和Flink SQL使用hive内置函数及自定义函数详细示例--网上有些说法好像是错误的

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

免费教学自制产品图册的方法

制作一个精美的产品图册可以帮助我们更好地展示产品的特点和优势&#xff0c;吸引潜在客户的注意力。而使用免费的工具和资源来制作图册&#xff0c;不仅可以节省成本&#xff0c;还能提高效率。 首先&#xff0c;我们需要选择一个适合的设计工具。例如FLBOOK在线制作电子杂志平…

包管理工具--》yarn的配置及使用

包管理工具系列文章目录 一、包管理工具--》npm的配置及使用&#xff08;一&#xff09; 二、包管理工具--》npm的配置及使用&#xff08;二&#xff09; 目录 &#x1f31f;yarn 简介 &#x1f31f;yarn 的核心命令 初始化 安装 脚本和本地CLI 查询 更新 卸载 &…

Redis:StringRedisTemplate简介

&#xff08;笔记总结自b站黑马程序员课程&#xff09; 为了在反序列化时知道对象的类型&#xff0c;JSON序列化器会将类的class类型写入json结果中&#xff0c;存入Redis&#xff0c;会带来额外的内存开销。 为了减少内存的消耗&#xff0c;我们可以采用手动序列化的方式&am…

Python之列表操作和内存模型

Python之列表操作和内存模型 列表list 一个排列整齐的队伍&#xff0c;Python采用顺序表实现 列表内的个体称作元素&#xff0c;由若干元素组成 列表 元素可以是任意对象(数字、字符串、对象、列表等) 列表内元素有顺序&#xff0c;可以使用索引 线性的数据结构 使用 [ ] …

Spring - Cloud (微服务)

SpringCloud 和 SpringBoot 版本选择对应&#xff1a; 版本对应&#xff1a;https://start.spring.io/actuator/info Cloud官网&#xff1a;Spring Cloud 中文网&#xff1a;Spring Cloud中文网-官方文档中文版 在官网可以查看 当前Cloud 推荐的Boot版本&#xff1a; 当前技术…

Yolov8-pose关键点检测:模型轻量化创新 | 轻量级Slim-Neck

💡💡💡本文解决什么问题:轻量级Slim-Neck,缓解 DSC 缺陷对模型的负面影响,并充分利用深度可分离卷积 DSC 的优势。 Slim-Neck | mAP50从0.921提升至0.93, mAP50从0.697提升至0.829 Yolov8-Pose关键点检测专栏介绍:https://blog.csdn.net/m0_63774211/category_1…

从0到1构建界面设计系统思维

用户界面&#xff08;UI&#xff09;是人与机器之间发生交互的载体&#xff0c;也是用户体验&#xff08;UX&#xff09;的一个组成部分。用户界面由两个主要部分组成&#xff1a;视觉设计&#xff08;即传达产品的外观和感觉&#xff09;和交互设计&#xff08;即元素的功能和…

超详解| Yolov8模型手把手调参 | 配置 | 模型训练 | 验证 | 推理

YOLOv8是一款前沿、最先进&#xff08;SOTA&#xff09;的模型&#xff0c;基于先前YOLO版本的成功&#xff0c;引入了新功能和改进&#xff0c;进一步提升性能和灵活性。 然而&#xff0c;要充分发挥Yolov8的潜力&#xff0c;合理的参数配置是至关重要的。本文将带您深入了解…

2023年值得推荐的 API 开发工具

数字化时代&#xff0c;应用程序编程接口&#xff08;API&#xff09;的重要性愈发凸显。API 充当着应用程序之间的桥梁&#xff0c;促进数据交换和功能集成。随着 API 的不断增加和复杂化&#xff0c;开发对 API 开发工具的要求也越来越高。 我们一起来盘点下 2023年上半年比…

Ant design table实现单选和点击行选中

实现单选 Antd table实现单选非常方便只需要在rowSelection属性里添加type: radio即可。 实现点击行选中 需要用到onRow属性 在onClick事件里面手动设置selectRowKey&#xff0c;跟Table onChange事件一样 onRow{(record) > ({onClick: () > {console.log(record)…

极智开发 | vscode使用ssh加速git操作

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文分享一下 vscode使用ssh加速git操作。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq 之前在 vscode 中主要使用 http …

浅析自动化测试工具的功能与作用

自动化测试工具是一种软件工具&#xff0c;旨在通过脚本或可视化界面自动执行测试任务和验证预期结果。这些工具可以自动识别和执行测试用例&#xff0c;模拟用户操作&#xff0c;比较实际和预期结果&#xff0c;并生成测试报告。自动化测试工具减少了人工干预&#xff0c;提高…

蓝桥杯备赛Day7——算法复杂度分析、前缀和思想

O(nlogn)算法可能达到的最优复杂度。快速排序算法是典型例子。 O(n^2)一个两重循环的算法,复杂度是O(n^2)。例如冒泡排序,是典型的两重循环。 O(n^3)、O(n^4)等等。 O(2n)一般对应集合问题。 例如一个集合中有n个数,要求输出它的所有子集。 O(n!)在集合问题中,如果要求按顺…

算法训练营day42|动态规划 part04(01背包问题基础(两种解决方案)、LeetCode 416.分割等和子集)

文章目录 01背包----二维dp数组01背包----滚动数组416.分割等和子集思路分析背包解法思考总结 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最…

Geek——能力超强的卸载工具

简介 Geek是一款能力超强的卸载工具&#xff0c;旨在帮助用户轻松、彻底地卸载不需要的软件。无论是常见的应用程序、插件还是顽固的垃圾文件&#xff0c;Geek都能够迅速而安全地将其清理殆尽&#xff0c;释放您的存储空间和系统资源。 使用Geek&#xff0c;您可以轻松摆脱不…

【100天精通Python】Day56:Python 数据分析_Pandas数据清洗和处理

目录 数据清洗和处理 1.处理缺失值 1.1 删除缺失值&#xff1a; 1.2 填充缺失值&#xff1a; 1.3 插值&#xff1a; 2 数据类型转换 2.1 数据类型转换 2.2 日期和时间的转换&#xff1a; 2.3 分类数据的转换&#xff1a; 2.4 自定义数据类型的转换&#xff1a; 3 数…