takeBill.js 3.4 KB

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