在基于ABP框架的前端项目Vue&Element项目中采用电子签名的处理

在前面随笔介绍了《在基于ABP框架的前端项目Vue&Element项目中采用电子签章处理文件和打印处理》的处理,有的时候,我们在流程中或者一些文件签署的时候,需要签上自己的大名,一般通过签名表的方式(银行很常见)实现电子签名的处理。本篇随笔介绍如何基于Vue &Element前端的技术实现电子签名的处理。

1、实现电子签名的组件

我们知道,很多常见的功能,我们都会引入对应的组件来做页面功能,会非常简洁方便,毕竟不用重复制造轮子。

我们在Github上可以找到很多基于Vue前端技术的界面组件,其中实现电子签名的也有好几个,大多数处理界面和功能差不多。

如vue-sign-canvas,它也是基于写字或者签名模式来实现电子签名的处理,案例可以参考地址:https://langyuxiansheng.github.io/vue-sign-canvas/。

案例本身就是一个很好的例子,提供了很多配置属性来实现不同的效果。

而vue-esign也是另一款实现个人电子签名处理的组件,也提供了类似的功能。

npm install vue-esign --save
 <!--  vue2  --> 
 <  vue-esign  ref  ="esign"  :width  ="800"  :height  ="300"  :isCrop  ="isCrop"  :lineWidth  ="lineWidth"  :lineColor  ="lineColor"  :bgColor.sync  ="bgColor"   /> 
 <!--  vue3  --> 
 <  vue-esign  ref  ="esign"  :width  ="800"  :height  ="300"  :isCrop  ="isCrop"  :lineWidth  ="lineWidth"  :lineColor  ="lineColor"  v-model:bgColor  ="bgColor"   /> 

 <!--  isClearBgColor为false时,不必再给bgColor加sync修饰符或v-model  --> 

 <  button  @click  ="handleReset"  > 清空画板 </  button  >  
 <  button  @click  ="handleGenerate"  > 生成图片 </  button  > 
 data () {  return  {
lineWidth:
6 ,
lineColor:
'#000000' ,
bgColor:
'' ,
resultImg:
'' ,
isCrop:
false }
},
methods: {
handleReset () {
this .$refs.esign.reset()
},
handleGenerate () {
this .$refs.esign.generate().then(res => { this .resultImg = res
}).
catch (err => {
alert(err)
// 画布没有签字时会执行这里 'Not Signned' })
}
}

界面效果如下所示。

 本篇随笔基于vue-esign来实现电子签名处理。

2、在页面中实现电子签名

在页面中引入对应的电子签名组件

import Vue from 'vue' import vueEsign from 'vue-esign'  //  电子签名 
 export  default  {
name:
'Signature' ,
components: {
vueEsign
},

在页面HTML代码中,放置一块区域来实现电子签名,引入Vue-esign组件,如下代码所示。

   <  div  class  ="sigbut"  > 
     <  div  class  ="tip"  > 请在这里签名 </  div  > 
     <  div  class  ="left-bu"  > 
       <  el-button  class  ="clear-bu"  size  ="mini"  @click  ="handleReset"  > 清空签名 </  el-button  > 
       <  el-button  class  ="sure"  size  ="mini"  :disabled  ="!showSig"  @click  ="handleGenerate"  >  确定签名  </  el-button  > 
     </  div  > 
   </  div  > 
   <  div  class  ="sig"  > 
     <  vue-esign  v-if  ="showSig"  ref  ="esign"  :width  ="800"  :height  ="150"  :is-crop  ="isCrop"  :line-width  ="lineWidth"  :line-color  ="lineColor"  :bg-color.sync  ="bgColor"   /> 
     <  img  v-if  ="!showSig"  :src  ="resultImg"  alt  =""  class  ="sig-img"  > 
   </  div  > 
 methods: {  //  清空画布 
 handleReset () {  this .resultImg = ''
       this .showSig =  true  ;  this .$nextTick(() => {  this  .$refs.esign.reset()
})
},
// 生成签名图片 handleGenerate () { this .$refs.esign.generate().then(res => { if (res) { this .showSig = false ; this .resultImg = res;
}
}).
catch (err => { this .$message({
message:
'请签名' ,
type:
'warning' });
})
},

最后得到界面效果如下所示。

 由于电脑没有签名笔,因此使用鼠标胡乱画的名字,效果一般,呵呵。

如果使用签名笔来实现模拟真实的签名,其实和书写效果就很接近了,因此也可以作为一般的个人签章处理。

 

标签: Javascript

添加新评论