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
})
},
}