1.1.2 • Published 1 year ago

vue-online-signature v1.1.2

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

vue-online-signature

Canvas 手写签字/签名板

本组件使用vue2.x版本开发,如果使用Vue3.x版本的项目,请使用Vue3.x版本组件,Vue3.x版本请不要使用当前组件,会出现未知BUG

版本提示

  1. Vue3.x npm链接 或 npm install vue3-online-signature --save
  2. Vue3.x gitee链接 https://gitee.com/awfifnypm/vue3-online-signature

功能

  1. 兼容 PC 和 Mobile;
  2. 屏幕旋转自适应自定义画布屏幕大小(屏幕旋转后竖屏与横屏数据互通);
  3. 自定义画布尺寸(尺寸可通过获取id元素,幕屏尺寸,自定义宽高),画笔粗细、颜色,画布背景色;
  4. 支持裁剪 (针对需求:有的签字需要裁剪掉四周空白)。
  5. 自定义导出图旋转角度
  6. 自定义画布背景(支持图片及图片背景重复)
  7. 自定义导出图背景(支持图片及图片背景重复,可生成与画布背景不一样背景的图片)
  8. 导出图片格式为 base64
  9. 初始化布画恢复历史绘制数据或在已经的画布上恢复历史绘制数据 示例demo

注: 本组件是基于vue-esign插件基础上进行二开和修改,使用方法与vue-esign插件有差异,建议查看本插件文档

安装

npm install vue-online-signature --save

使用

  1. 引入 main.js 获vue页面引入
import vueSignature from 'vue-online-signature'
Vue.use(vueEsign) || components: {vueSignature}
  1. 页面中使用 必须设置 ref ,用来调用组件内暴露的内置方法 reset()confirm() 自定义的宽度超出屏幕宽度的话,组件样式宽度则是父元素的100%; 组件所有参数都非必填,组件emit出部份内置方法,具体查看下面说明文档
<vueSignature ref="vueSignatureRef" v-bind="params"/>
<button @click="handleReset">清空画板</button> 
<button @click="handleGenerate">生成图片</button>
data () {
  return {
    resultImg: ''.
    params: {
      width: 0,
      height: 0,
      lineWidth: 5,
      lineColor: '',
      canvasBack: '',
      isCrop: false,
      edg: 0,
      fullScreen: true,
      domId: '',
      imgBack: '',
      isRepeat: '',
      noRotation: false,
      backIsCenter: false,
      recoverPoints: []
    }
  }
},
methods: {
  handleReset () {
    this.$refs.vueSignatureRef.reset()
  },
  handleGenerate () {
    this.$refs.vueSignatureRef.confirm().then(res => {
      imagesSRC.value = res.base64
      sessionStorage.setItem('points', JSON.stringify(res.points))
    }).catch(err => {
      alert(err) // 画布没有签字时会执行这里 'Not Signned'
    })
  }
}
  1. 说明
属性类型默认值说明
domIdString用于获取元素的宽高生成画布尺寸,优先级一级(建议使用canvas父级元素的ID, 父级元素的width值不可大于当前屏幕的宽度)
fullScreenBooleanfalse是否获取屏幕的宽高生成画布尺寸,优先级二级
widthNumber0画布宽度,优先级三级 (此值不可大于当前屏幕的宽度)
heightNumber0画布高度,优先级三级
lineWidthNumber4画笔粗细
lineColorString#000000画笔颜色
canvasBackString画布背景,为空时画布背景透明,支持多种格式 '#ccc','#E5A1A1','rgb(229, 161, 161)','rgba(0,0,0,.6)','red', 'http'、'https'、文件路径及'base64'类型图片链接
imgBackString画布最终导出图的图片背景,如果此参数不为空,生成图片时会覆盖canvasBack的背景图,支持多种格式 '#ccc','#E5A1A1','rgb(229, 161, 161)','rgba(0,0,0,.6)','red', 'http'、'https'、文件路径及'base64'类型图片链接
edgNumber0画布导出图需要旋转的角度(如竖屏导出图会生成竖屏尺寸的图片,此参数值为270时,会生成一张横向的图片)
imgTypeStringimage/png画布导出图的图片类型(可以是其他'image/jpeg'等)
isRepeatString'no-repeat'画布背景是否重复(参数:'repeat','repeat-x','repeat-y' )
noRotationBooleanfalse横屏时导出图是否旋转角度 (当值为true时,横屏时导出图不会旋转角度)
isCropBooleanfalse是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
backIsCenterBooleantrue背景图片是否居中显示(使用domId或输入固定宽度时生效并且只有图片宽度大于canvas宽度才会生效)
verticalDeductWidthNumber0获取屏幕的宽高生成画布尺时,竖屏时宽度需要减除的尺寸
verticalDeductHeightNumber0获取屏幕的宽高生成画布尺时,竖屏时高度需要减除的尺寸
acrossDeductWidthNumber0获取屏幕的宽高生成画布尺时,横屏时宽度需要减除的尺寸
acrossDeductHeightNumber0获取屏幕的宽高生成画布尺时,横屏时高度需要减除的尺寸
recoverPointsArray[]初始生成布画时,需要恢复到canvas画布上的笔画数据(此数据结构必须是confirm方法返回的结构,结构:{x:0,y:0,direction:'across'}, direction参数有across和vertical)
方法参数说明
onDrawingStatusstatus返参可监听画板是否已绘画,true或false
recoverDrawArray通过此方式可在已生成的画布上,把已有的绘制笔画数据覆盖上去,(此数据结构必须是confirm方法返回的结构,结构:{x:0,y:0,direction:'across'}, direction参数有across和vertical)
onMouseDowneventPC 当鼠标指针移动到元素上方,并按下鼠标按键(左、右键均可)时,会发生mousedown事件。
onMouseMoveeventPC 当鼠标指针移动时发生的事件。
onMouseUpeventPC 当在元素上松开鼠标按键(左、右键均可)时,会发生 mouseup 事件。
onTouchStarteventMobile 当手指触摸屏幕时候触发。
onTouchMoveeventMobile 当手指在屏幕上滑动的时候连续地触发。
onTouchEndeventMobile 当手指从屏幕上离开的时候触发。

两个内置方法,通过给组件设置 ref 调用:

清空画布

this.$refs.vueSignatureRef.reset()

生成图片

this.$refs.vueSignatureRef.confirm().then(res => {
      imagesSRC.value = res.base64
      sessionStorage.setItem('points', JSON.stringify(res.points))
  }).catch(err => {
  alert(err) // 画布没有签字时会执行这里 'Not Signned'
})