import { uploadFile } from "../../utils/upload"; import { subMsg } from "../../utils/wxUtils"; import { postApi } from "../../apis/api"; Page({ data: { sign: "https://frontend-1255802371.cos.ap-shanghai.myqcloud.com/sign.png", avater_exp: "https://6875-huihenduo-2gx127w7f837b584-1255802371.tcb.qcloud.la/miniapp-static/avatar-icon.jpg?sign=f5c66c94d189436f82353eb48cb01f08&t=1634538864", cameraIcon: "https://6875-huihenduo-2gx127w7f837b584-1255802371.tcb.qcloud.la/miniapp-static/camera-icon.png?sign=11a65871a2800cd04ecaa8991687fccd&t=1634607415", newCameraIcon: "https://6875-huihenduo-2gx127w7f837b584-1255802371.tcb.qcloud.la/miniapp-static/camera.png?sign=ad0fe8bead6a46cb20f45f792d4bed67&t=1645502416", userName: "", phone: "", shipName: "", shipMmsi: "", authModal: false, modalText: "位置", shipId: "", locked: false, }, openSetting() { this.setData({ authModal: false, }); wx.openSetting({ complete: (e) => { console.log(e); if (e.authSetting["scope.writePhotosAlbum"]) { if (wx.getStorageSync("cacheImage")) { wx.saveImageToPhotosAlbum({ filePath: wx.getStorageSync("cacheImage"), success: (e) => { wx.showToast({ title: "保存成功!", }); wx.removeStorageSync("cacheImage"); }, complete: (e) => { console.log(e); }, }); } } }, }); }, takeBill() { if (this.data.locked) return; wx.redirectTo({ url: "/pages/takeBill/takeBill", }); }, async registerShip() { if (!this.checkout()) return; let res = await postApi("/user/wx/register", { userId: wx.getStorageSync("userId"), shipName: this.data.shipName, shipMmsi: this.data.shipMmsi, }); if (res.data.status == 0) { let { shipInfo, userInfo } = res.data.result; let data = { ...shipInfo, ...userInfo, }; Object.keys(data).forEach(function (key) { wx.setStorageSync(key, data[key]); }); wx.showToast({ title: res.data.msg, }); this.setData({ ...data, }); } else { wx.showToast({ title: res.data.msg, }); } }, checkout() { if (!this.data.shipName) { wx.showToast({ title: "请输入船名!", icon: "error", }); return; } if (!this.data.shipMmsi) { wx.showToast({ title: "请输入MMSI!", icon: "error", }); return; } return true; }, async takePhoto(e) { if (this.data.locked) { wx.showLoading({ title: "高精度定位中...", }); return; } this.data.locked = true; let { mediatype } = e.currentTarget.dataset; wx.getLocation({ type: "gcj02", isHighAccuracy: true, success: (e) => { let { latitude, longitude } = e; console.log("获取定位成功!", e); this.data.latitude = latitude; this.data.longitude = longitude; wx.setStorageSync("latitude", latitude); wx.setStorageSync("longitude", longitude); wx.chooseMedia({ mediaType: ["image"], sourceType: ["camera"], success: (e) => { console.log("获取媒体成功!", e); let src = e.tempFiles[0].tempFilePath; if (e.type == "video") { wx.showLoading({ title: "正在压缩...", }); wx.compressVideo({ src, quality: "high", bitrate: "", fps: "", resolution: "", success: async (e) => { if (wx.getStorageSync("userName")) { wx.showLoading({ title: "正在上传...", }); let res = await uploadFile(e.tempFilePath, { type: 4, userId: wx.getStorageSync("userId"), location: `${this.data.longitude},${this.data.latitude}`, }); if (res.status == 0) { console.log(res); wx.showToast({ title: res.msg, }); wx.redirectTo({ url: "/pages/takePhoto/success/success", }); } else { wx.showToast({ title: res.msg, }); } } else { // 新用户视频 wx.hideLoading({ success: (res) => {}, }); console.log("新用户视频", e); wx.setStorageSync("type", 2); wx.setStorageSync("file", e.tempFilePath); wx.redirectTo({ url: `/pages/newCachePage/newCachePage`, }); } }, fail: (e) => { console.log(e); }, }); } else { wx.compressImage({ src, quality: 80, // 压缩质量 success: async (e) => { console.log("图片压缩成功!", e); wx.hideLoading({ success: (res) => {}, }); if (wx.getStorageSync("userName")) { wx.showLoading({ title: "正在上传...", }); let postData = { type: mediatype, userId: wx.getStorageSync("userId"), }; if (mediatype == 3) { postData.location = `${this.data.longitude},${this.data.latitude}`; } else { postData.location = ""; } let res = await uploadFile(e.tempFilePath, postData); console.log("上传结束", res); if (res.status == 0) { wx.showToast({ title: res.msg, }); wx.setStorageSync("shareImageUrl", res.result.viewUrl); console.log(wx.getStorageSync("shareImageUrl")); wx.downloadFile({ url: res.result.viewUrl, success: (e) => { console.log("下载调用!", e); wx.setStorageSync("cacheImage", e.tempFilePath); if (mediatype == 3) { wx.saveImageToPhotosAlbum({ filePath: e.tempFilePath, success: (e) => { if (e.errMsg == "saveImageToPhotosAlbum:ok") { wx.showToast({ title: "保存成功!", }); wx.removeStorageSync("cacheImage"); } }, fail: (e) => { console.log("失败4", e); this.setData({ authModal: true, modalText: "文件存储", }); }, }); } wx.redirectTo({ url: "/pages/takePhoto/success/success", }); }, fail: (e) => { console.log("失败3", e); }, }); } else { wx.showToast({ title: res.msg, }); } } else { // 新用户图片 console.log("新用户图片", e); wx.setStorageSync("type", 1); wx.setStorageSync("file", e.tempFilePath); wx.redirectTo({ url: `/pages/newCachePage/newCachePage`, }); } }, fail: (e) => { console.log("失败2", e); }, }); } }, fail: (e) => { console.log("失败1", e); }, }); }, fail: (e) => { this.setData({ authModal: true, modalText: "位置信息", }); }, complete: (e) => { wx.hideLoading({ success: (res) => {}, }); this.data.locked = false; }, }); }, async msg() { let res = await subMsg(); }, async checkCheckStatus() { let { data } = await postApi("/user/wx/checkin/status", { userId: wx.getStorageSync("userId"), }); this.setData(data.result); }, async check() { if (this.data.checkinStatus == 1) return; if (this.data.locked) { wx.showLoading({ title: "高精度定位中...", }); return; } this.data.locked = true; let { mediatype } = e.currentTarget.dataset; wx.getLocation({ type: "gcj02", isHighAccuracy: true, success: async (e) => { let { latitude, longitude } = e; let { data } = await postApi("/user/wx/checkin", { userId: wx.getStorageSync("userId"), latitude, longitude, }); this.setData(data.result); if (data.status == 0) { wx.showToast({ title: data.msg, icon: "success", duration: 2000, mask: true, }); } }, }); }, onShow() { let userName = wx.getStorageSync("userName"); let userId = wx.getStorageSync("userId"); let phone = wx.getStorageSync("phone"); let shipId = wx.getStorageSync("shipId"); if (userId && shipId) this.checkCheckStatus(); this.setData({ userName, phone, userId, shipId, }); }, });