electiveSign.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <template>
  2. <div>
  3. <div class="mb10 f16 jc-between fx-row">
  4. <p>请您签名</p>
  5. <el-button @click="handleReset">清空</el-button>
  6. </div>
  7. <vue-esign
  8. ref="esign"
  9. class="mySign"
  10. :width="1200"
  11. :height="500"
  12. :isCrop="isCrop"
  13. :lineWidth="lineWidth"
  14. :lineColor="lineColor"
  15. :bgColor.sync="bgColor"
  16. />
  17. </div>
  18. </template>
  19. <script>
  20. import { saveEsign } from '@/api/webApi/elective/selected-subject'
  21. export default {
  22. props: ['flowId'],
  23. data() {
  24. return {
  25. lineWidth: 3, // 画笔的线条粗细
  26. lineColor: '#000000', // 画笔的颜色
  27. bgColor: '', // 画布的背景颜色
  28. base64Img: '', // 最终画布生成的base64图片
  29. isCrop: false // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
  30. }
  31. },
  32. methods: {
  33. // 清空画板
  34. handleReset() {
  35. this.$refs.esign.reset()
  36. },
  37. saveElective(callback) {
  38. saveEsign({
  39. id: this.flowId,
  40. esignPath: this.base64Img
  41. }).then(res => {
  42. callback()
  43. })
  44. },
  45. // 生成签字图
  46. handleGenerate(callback) {
  47. this.$refs.esign
  48. .generate() // 使用生成器调用把签字的图片转换成为base64图片格式
  49. .then((res) => {
  50. this.base64Img = res
  51. this.saveElective(callback)
  52. // 在这里向后端发请求把转换后的base64文件传给后端,后端接收以后再转换成图片做静态图片存储
  53. // 当然也可以把base64转成流文件blob格式的,类似上传给后端这样,具体哪种方式看后端要求
  54. })
  55. .catch((err) => {
  56. console.log(err)
  57. // 画布没有签字时会执行这里提示一下
  58. this.$message({
  59. type: 'warning',
  60. message: '请先签名'
  61. })
  62. return
  63. })
  64. }
  65. }
  66. }
  67. </script>
  68. <style lang="scss" scoped>
  69. // 设置一下签字区域的虚线边框
  70. .mySign {
  71. border: 1px dashed #000;
  72. }
  73. </style>