takeBill.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import {
  2. uploadFile
  3. } from "../../utils/upload"
  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. },
  19. takeBill() {
  20. if (this.data.disabled) return
  21. wx.showLoading({
  22. title: '正在上传...',
  23. })
  24. this.data.disabled = true
  25. const ctx = wx.createCameraContext()
  26. ctx.takePhoto({
  27. quality: 'high',
  28. success: (res) => {
  29. let src = res.tempImagePath
  30. let ch = res.height * 2
  31. let cw = res.width * 2
  32. wx.getImageInfo({
  33. src,
  34. success: e => {
  35. this.setData({
  36. ch,
  37. cw
  38. })
  39. const query = wx.createSelectorQuery();
  40. query.select('#myCanvas').node().exec((res) => {
  41. const canvas = res[0].node;
  42. const ctx = canvas.getContext('2d');
  43. const img = canvas.createImage();
  44. let h = ch / 2
  45. let w = cw / 2
  46. canvas.height = h * 0.85
  47. canvas.width = w * 0.9
  48. img.src = src
  49. img.onload = () => {
  50. ctx.drawImage(img, -w * 0.05, -h * 0.05);
  51. }
  52. this.saveImg(src)
  53. })
  54. }
  55. })
  56. }
  57. })
  58. },
  59. goBack() {
  60. wx.redirectTo({
  61. url: '/pages/takePhoto/takePhoto',
  62. })
  63. },
  64. async saveImg(src) {
  65. const query = wx.createSelectorQuery();
  66. const canvas = await new Promise((resolve, reject) => {
  67. query.select('#myCanvas')
  68. .fields({
  69. node: true,
  70. size: true
  71. })
  72. .exec(async (res) => {
  73. resolve(res[0].node);
  74. })
  75. });
  76. wx.canvasToTempFilePath({
  77. canvas,
  78. success: async e => {
  79. // let path = e.tempFilePath
  80. // wx.navigateTo({
  81. // url: `/pages/takeBill/success/success?src=${src}&path=${path}`
  82. // })
  83. // return
  84. let res = await uploadFile(e.tempFilePath, {
  85. type: 0,
  86. userId: wx.getStorageSync('userId'),
  87. // userId: 89,
  88. location: ''
  89. })
  90. wx.hideLoading({
  91. success: (res) => {},
  92. })
  93. wx.showToast({
  94. title: res.msg,
  95. })
  96. setTimeout(() => {
  97. this.data.disabled = false
  98. this.goBack()
  99. }, 1000)
  100. },
  101. fail(res) {
  102. console.log('fail');
  103. }
  104. })
  105. },
  106. onLoad() {
  107. let userName = wx.getStorageSync('userName')
  108. let userId = wx.getStorageSync('userId')
  109. let phone = wx.getStorageSync('phone')
  110. let shipId = wx.getStorageSync('shipId')
  111. this.setData({
  112. userName,
  113. phone,
  114. userId,
  115. shipId
  116. })
  117. }
  118. })