takeBill.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import {
  2. uploadFile
  3. } from "../../../utils/uploadImage"
  4. Page({
  5. data: {
  6. avatar: "https://6875-huihenduo-2gx127w7f837b584-1255802371.tcb.qcloud.la/miniapp-static/avatar-icon.jpg?sign=f5c66c94d189436f82353eb48cb01f08&t=1634538864",
  7. cameraIcon: "https://6875-huihenduo-2gx127w7f837b584-1255802371.tcb.qcloud.la/miniapp-static/camera-icon.png?sign=11a65871a2800cd04ecaa8991687fccd&t=1634607415",
  8. newCameraIcon: "https://6875-huihenduo-2gx127w7f837b584-1255802371.tcb.qcloud.la/miniapp-static/camera.png?sign=ad0fe8bead6a46cb20f45f792d4bed67&t=1645502416",
  9. userName: "",
  10. phone: "",
  11. shipName: "",
  12. shipMmsi: "",
  13. authModal: false,
  14. modalText: "位置",
  15. cw: '',
  16. ch: '',
  17. disabled: false,
  18. imgCache: ''
  19. },
  20. takeBill() {
  21. if (this.data.disabled) return
  22. wx.showLoading({
  23. title: '正在上传...',
  24. })
  25. this.data.disabled = true
  26. const ctx = wx.createCameraContext()
  27. ctx.takePhoto({
  28. quality: 'high',
  29. success: (res) => {
  30. let src = res.tempImagePath
  31. let ch = res.height * 2
  32. let cw = res.width * 2
  33. wx.getImageInfo({
  34. src,
  35. success: e => {
  36. this.setData({
  37. ch,
  38. cw
  39. })
  40. const query = wx.createSelectorQuery();
  41. query.select('#myCanvas').node().exec((res) => {
  42. const canvas = res[0].node;
  43. const ctx = canvas.getContext('2d');
  44. const img = canvas.createImage();
  45. let h = ch / 2
  46. let w = cw / 2
  47. canvas.height = h * 0.85
  48. canvas.width = w * 0.9
  49. img.src = src
  50. img.onload = () => {
  51. ctx.drawImage(img, -w * 0.05, -h * 0.05);
  52. }
  53. this.saveImg(src)
  54. })
  55. }
  56. })
  57. }
  58. })
  59. },
  60. goBack() {
  61. wx.navigateBack()
  62. },
  63. async saveImg(src) {
  64. const query = wx.createSelectorQuery();
  65. const canvas = await new Promise((resolve, reject) => {
  66. query.select('#myCanvas')
  67. .fields({
  68. node: true,
  69. size: true
  70. })
  71. .exec(async (res) => {
  72. resolve(res[0].node);
  73. })
  74. });
  75. wx.canvasToTempFilePath({
  76. canvas,
  77. success: async e => {
  78. // let path = e.tempFilePath
  79. // wx.navigateTo({
  80. // url: `/pages/takeBill/success/success?src=${src}&path=${path}`
  81. // })
  82. // return
  83. this.setData({
  84. imgCache: e.tempFilePath
  85. })
  86. let res = await uploadFile("/voyage/uploadVoyageWayBill", e.tempFilePath, {
  87. type: this.data.type,
  88. voyageId: this.data.voyageId
  89. })
  90. wx.hideLoading({
  91. success: (res) => {},
  92. })
  93. console.log(res)
  94. wx.showToast({
  95. title: res.msg,
  96. })
  97. setTimeout(() => {
  98. this.data.disabled = false
  99. wx.setStorageSync('addStatus', "success")
  100. this.goBack()
  101. }, 1000)
  102. },
  103. fail(res) {
  104. console.log('fail');
  105. }
  106. })
  107. },
  108. onLoad(options) {
  109. this.setData({
  110. ...options
  111. })
  112. }
  113. })