// pages/voyages/detail/detail.js import { postApi } from "../../../apis/api" import { uploadImage } from "../../../utils/uploadImage" Page({ data: { id: '', tab: 1, shipDischargeCurrentPage: 1, truckLoadCurrentPage: 1, coordinates: [], medias: [], policys: [], voyage: {}, waybills: [], infoType: 'ship', shipDischargeList: [], truckLoadList: [], shipDischargeTotal: 0, truckLoadTotal: 0, polyline: [{ points: [], width: 2, dottedLine: true, color: "#eb2f06" }], markers: [], points: [], pageSize: 30, latitude: 31.891992, longitude: 120.551369, currentPortId: 0, dischargeModal: false, currentDischargePortId: '', currentDischargePort: '', tab2disabled: false, currentDischargeIndex: 0, tab3CurrentDischargeIndex: 0, uploadBillVisable: true }, changeTab(e) { let { tab } = e.currentTarget.dataset this.setData({ tab }) }, async getVoyageDetail() { let res = await postApi("/voyage/detail", { voyageId: this.data.id, loginAccountId: wx.getStorageSync('loginAccountId'), }) if (res.data.status == 0) { let { coordinates, medias, policys, voyage, waybills } = res.data.result if (coordinates.length) { let points = [] for (let i of coordinates) { points.push({ latitude: i.latitude, longitude: i.longitude }) } let { latitude, longitude } = points[points.length - 1] this.data.latitude = latitude this.data.longitude = longitude this.data.polyline[0].points = points let id = 1 for (let i of points) { this.data.markers.push({ id: id + 1, latitude: i.latitude, longitude: i.longitude, iconPath: "https://6875-huihenduo-2gx127w7f837b584-1255802371.tcb.qcloud.la/miniapp-static/red-circle.png?sign=6d208881376358fb4111aa6d7f1a7846&t=1647934972", height: 20, width: 20 }) } this.setData({ polyline: this.data.polyline, markers: this.data.markers, latitude: this.data.latitude, longitude: this.data.longitude, points }) } // voyage.arrivalLoadPortTime = this.subTimeStr(voyage.arrivalLoadPortTime) // voyage.loadStartTime = this.subTimeStr(voyage.loadStartTime) // voyage.loadEndTime = this.subTimeStr(voyage.loadEndTime) // voyage.setSailTime = this.subTimeStr(voyage.setSailTime) // voyage.expectedArrivalTime = this.subTimeStr(voyage.expectedArrivalTime) let dischargePortIds = voyage.dischargePortIds.split(',') let dischargePorts = voyage.dischargePorts.split(',') let discLength = dischargePortIds.length for (let item of voyage.voyageDetails) { item.setSailTime = this.subTimeStr(item.setSailTime) item.expectedArrivalTime = this.subTimeStr(item.expectedArrivalTime) item.actualArrivalTime = this.subTimeStr(item.actualArrivalTime) item.dischargeStartTime = this.subTimeStr(item.dischargeStartTime) item.dischargeEndTime = this.subTimeStr(item.dischargeEndTime) } this.setData({ coordinates, medias, policys, ...voyage, waybills, currentPortId: voyage?.voyageDetails[0].portId, dischargePortIds, dischargePorts, discLength, tab2disabled: voyage.voyageStatus == 2 }) this.getCarLoadRecordList() this.getDischargeList() } else { wx.showToast({ title: '获取详情失败!', icon: "error" }) } }, subTimeStr(str) { if (!str || typeof str != "string") return; let index = str.indexOf(" "); return str.substring(0, index); }, async getCarLoadRecordList(isScroll) { if (isScroll) { this.data.truckLoadCurrentPage += 1 } else { this.data.truckLoadCurrentPage = 1 } let res = await postApi("/voyage/getCarLoadRecordList", { portId: this.data.currentPortId, voyageId: this.data.id, size: this.data.pageSize, currentPage: this.data.truckLoadCurrentPage, loginAccountId: wx.getStorageSync('loginAccountId') }) this.setData({ truckLoadCurrentPage: this.data.truckLoadCurrentPage, }) if (0 == res.data.status) { if (isScroll) { let truckLoadList = [...this.data.truckLoadList, ...res.data.result] for (let i of truckLoadList) { i.weighTime = this.cutTimeString(i.weighTime) } this.setData({ truckLoadList, truckLoadTotal: res.data.total }) } else { let truckLoadList = res.data.result for (let i of truckLoadList) { i.weighTime = this.cutTimeString(i.weighTime) } this.setData({ truckLoadList, truckLoadTotal: res.data.total }) } } else { // wx.showToast({ // icon: 'none', // title: res.data.msg, // }) } }, async getDischargeList(isScroll) { if (isScroll) { this.data.shipDischargeCurrentPage += 1 } else { this.data.shipDischargeCurrentPage = 1 } let res = await postApi("/voyage/getDischargeList", { portId: this.data.currentPortId, voyageId: this.data.id, size: this.data.pageSize, currentPage: this.data.shipDischargeCurrentPage, loginAccountId: wx.getStorageSync('loginAccountId') }) this.setData({ shipDischargeCurrentPage: this.data.shipDischargeCurrentPage, }) if (0 == res.data.status) { if (isScroll) { let shipDischargeList = [...this.data.shipDischargeList, ...res.data.result] for (let i of shipDischargeList) { i.dischargeTime = this.cutTimeString(i.dischargeTime) } this.setData({ shipDischargeList, shipDischargeTotal: res.data.total }) } else { let shipDischargeList = res.data.result for (let i of shipDischargeList) { i.dischargeTime = this.cutTimeString(i.dischargeTime) } this.setData({ shipDischargeList, shipDischargeTotal: res.data.total }) } } else { // wx.showToast({ // icon: "none", // title: res.data.msg, // }) } }, previewImage(e) { let { src, files } = e.currentTarget.dataset let urls = [] if (this.data.infoType == "ship" && this.data.tab == 3) { urls = files.map(item => { return item.viewUrl }) } else { urls = [src] } wx.previewImage({ current: src, // 当前显示图片的http链接 urls // 需要预览的图片http链接列表 }) }, changeInfoType(e) { let { type } = e.currentTarget.dataset this.setData({ infoType: type, truckLoadCurrentPage: 1, shipDischargeCurrentPage: 1, shipDischargeList: [], truckLoadList: [], shipDischargeTotal: 0, truckLoadTotal: 0, }) if (type == "ship") { this.getDischargeList() } else { this.getCarLoadRecordList() } }, cutTimeString(str) { let index = str.indexOf(' ') return index == -1 ? str : str.substring(0, index) }, changeBottomPage() { if (this.data.infoType == "ship") { this.getDischargeList(true) } else { this.getCarLoadRecordList(true) } }, scrollShip() { if (this.data.shipDischargeTotal == 0 || this.data.shipDischargeTotal <= this.data.pageSize * this.data.shipDischargeCurrentPage) return this.getDischargeList(true) }, scrollTruck() { if (this.data.truckLoadTotal == 0 || this.data.truckLoadTotal <= this.data.pageSize * this.data.truckLoadCurrentPage) return this.getCarLoadRecordList(true) }, changePort(e) { let tab3CurrentDischargeIndex = e.detail this.setData({ tab3CurrentDischargeIndex, currentPortId: this.data.voyageDetails[tab3CurrentDischargeIndex].portId, shipDischargeList: [], truckLoadList: [], }) if (this.data.infoType == "ship") { this.getDischargeList() } else { this.getCarLoadRecordList() } }, showAddDischargePortModal() { console.log(1) this.setData({ dischargeModal: true }) }, onShareAppMessage() { let id = wx.getStorageSync('voyageDetailId') return { title: '真实 实时 精准', path: `/pages/sharePage/sharePage?id=${id}` } }, doNothing() { }, cancelAddDischargePort() { this.setData({ currentDischargePortId: '', currentDischargePort: '', dischargeModal: false }) }, selectDischargePort(e) { this.setData({ currentDischargePortId: e.detail.value, currentDischargePort: e.detail.label }) this.addDischargePort() }, async addDischargePort() { let { currentDischargePortId, currentDischargePort } = this.data if (!currentDischargePortId || !currentDischargePort) { wx.showToast({ title: '请选择港口', icon: "error" }) return } let res = await postApi("/voyage/addNewPort", { loginAccountId: wx.getStorageSync('loginAccountId'), voyageId: this.data.id, portId: this.data.currentDischargePortId }) this.getVoyageDetail() this.cancelAddDischargePort() }, bindDischargePortChange(e) { let { index, param } = e.currentTarget.dataset this.data.voyageDetails[index][param] = e.detail.value this.setData({ voyageDetails: this.data.voyageDetails }) }, changeDischargeTab(e) { let { detail: currentDischargeIndex } = e this.setData({ currentDischargeIndex }) }, async updateVoyage() { for (let i of this.data.voyageDetails) { Object.keys(i).forEach(function (key) { if ((typeof i[key]) == 'string') { i[key] = i[key].replaceAll('-', '/') if (i[key].length == 10) i[key] = i[key] + " 00:00:00" } }) } if (this.data.arrivalLoadPortTime && this.data.arrivalLoadPortTime.length == 10) this.data.arrivalLoadPortTime = this.data.arrivalLoadPortTime + " 00:00:00" if (this.data.actualLoadTons && this.data.actualLoadTons.length == 10) this.data.actualLoadTons = this.data.actualLoadTons + " 00:00:00" if (this.data.actualLoadPieces && this.data.actualLoadPieces.length == 10) this.data.actualLoadPieces = this.data.actualLoadPieces + " 00:00:00" if (this.data.loadStartTime && this.data.loadStartTime.length == 10) this.data.loadStartTime = this.data.loadStartTime + " 00:00:00" if (this.data.loadEndTime && this.data.loadEndTime.length == 10) this.data.loadEndTime = this.data.loadEndTime + " 00:00:00" let res = await postApi("/voyage/update", { ...this.data, loginAccountId: wx.getStorageSync('loginAccountId') }) if (res.data.status == 0) { wx.showToast({ title: res.data.msg, }) } this.getVoyageDetail() }, async uploadBill(e) { let { type } = e.currentTarget.dataset let postData = { type, voyageId: this.data.id } let res = await uploadImage("/voyage/uploadVoyageWayBill", postData) this.getVoyageDetail() }, async completeVoyage() { wx.showModal({ title: "确认完成航次?", success: async e => { if (e.confirm) { let res = await postApi("/voyage/finish", { loginAccountId: wx.getStorageSync('loginAccountId'), voyageId: this.data.id }) if (res.data.status == 0) { wx.showToast({ title: '成功!', }) this.getVoyageDetail() } } } }) }, async cancelVoyage() { wx.showModal({ title: "确认取消航次?", success: async e => { if (e.confirm) { let res = await postApi("/voyage/cancel", { loginAccountId: wx.getStorageSync('loginAccountId'), id: this.data.id }) if (res.data.status == 0) { wx.showToast({ title: '取消成功!', }) wx.switchTab({ url: '/pages/voyageManage/voyageManage', }) } } } }) }, goTo(e) { let { url } = e.currentTarget.dataset let { id, currentPortId } = this.data wx.navigateTo({ url: `${url}?voyageId=${id}&portId=${currentPortId}`, }) }, uploadBillCanvas() { wx.navigateTo({ url: `/pages/voyageManage/takeBill/takeBill?type=1&voyageId=${this.data.id}`, }) }, onLoad(options) { let { id } = options wx.setStorageSync('voyageDetailId', id) this.setData({ id }) this.getVoyageDetail() }, onShow() { if (wx.getStorageSync('addStatus') == "success") { this.getVoyageDetail() wx.removeStorageSync('addStatus') } } })