1、安装:npm install vue-esign --save
2、main.js文件中全局引入:
// 签字
import vueEsign from 'vue-esign'
Vue.use(vueEsign)
3、页面内容
<vue-esign ref="esign"
:width="800"
:height="300"
:isCrop="isCrop"
:lineWidth="lineWidth"
:lineColor="lineColor"
:bgColor.sync="bgColor"
/>
<button @click="handleReset">清空画板</button>
<button @click="handleGenerate">生成图片</button>
4、说明:
5、
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 // 得到了签字生成的base64图片
let imgFile = this.base64ImgtoFile(res, 'file') //得到文件格式
}).catch(err => { // 没有签名,点击生成图片时调用
this.$message({
message: err + ' 未签名!',
type: 'warning'
})
alert(err) // 画布没有签字时会执行这里 'Not Signned'
})
}
}
6、将base64转化成图片方法:
// 将base64,转换成图片
base64ImgtoFile(dataurl, filename='file') {
const arr = dataurl.split(',')
const mime = arr[0].match(/:(.*?);/)[1]
const suffix = mime.split('/')[1]
const bstr = atob(arr[1])
let n = bstr.length
const u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new File([u8arr], `${filename}.${suffix}`, {
type: mime
})
},
}