const { default: api } = require("../../js/api"); const util = require('../../utils/util.js') // pages/historyOrderAfter/historyOrderAfter.js Page({ /** * 页面的初始数据 */ data: { orders: [ { order:{ status: '未支付', statusColor: '#ff8d1a', oilName: "hk", nozzle: "1", volume: "1", amount: "1", payAmount: "1", discount: "1", orderId: "1", time: "2025-4-3", price:'666' }, bottonText2: "" } ], date: '', startDate: '', endDate: '', pageNum: 1,//查询页码 pageSize: 5,//页数 isHaveOrder: true,//是否还有订单 paymentMode: -1, /** 后支付订单状态 订单状态(0:未支付; 1:已支付; 2:订单全额退款;3:订单部分退款;5:已完成)*/ payStatusValue: [{ orderStatus: 0, status: '未支付', statusColor: '#ff8d1a' }, { orderStatus: 1, status: '已完成', statusColor: '#a6a6a6' }, { orderStatus: 5, status: '已完成', statusColor: '#a6a6a6' } ], /** 预支付订单状态 授权状态(未授权:0;已授权:1) * + 订单状态(0:未支付; 1:已支付; 2:订单全额退款;3:订单部分退款;5:已完成) */ prepayStatuValue: [ { authorizationStatus: 0, orderStatus: 0, status: '支付失败', statusColor: '#f1912f' }, { authorizationStatus: 0, orderStatus: 1, status: '授权失败', statusColor: '#f0d02e' }, { authorizationStatus: 1, orderStatus: 1, status: '授权成功', statusColor: '#a2cd4a' }, { authorizationStatus: 0, orderStatus: 2, status: '已完成', statusColor: '#a6a6a6' }, { authorizationStatus: 0, orderStatus: 3, status: '已完成', statusColor: '#a6a6a6' }, { authorizationStatus: 0, orderStatus: 5, status: '已完成', statusColor: '#a6a6a6' }, ], }, /** 获取当前日期 */ getNowDate() { const date = new Date(); // 获取当前日期 const year = date.getFullYear(); // 获取年份 const month = String(date.getMonth() + 1).padStart(2, '0'); // 获取月份,补零 const day = String(date.getDate()).padStart(2, '0'); // 获取日期,补零 return `${year}-${month}-${day}`; // 拼接成 yyyy-MM-dd 格式 }, /** 获取上个月日期 */ getLastMouthDate() { const currentDate = new Date(); // 获取当前日期 const year = currentDate.getFullYear(); // 当前年份 const month = currentDate.getMonth(); // 当前月份(0-11) const day = currentDate.getDate(); // 当前日期 // 计算一个月前的日期 const oneMonthAgoDate = new Date(year, month - 1, day); // 处理跨年问题(如果当前月份是 1 月,month - 1 会是 0,即上一年的 12 月) // 无需额外处理,Date 对象会自动处理 // 格式化日期为 YYYY-MM-DD const formattedDate = `${oneMonthAgoDate.getFullYear()}-${String(oneMonthAgoDate.getMonth() + 1).padStart(2, '0')}-${String(oneMonthAgoDate.getDate()).padStart(2, '0')}`; return formattedDate; }, /** 计算倒计时,倒计时结束后发起取消授权 */ startCountdow() { this.timer = setInterval(() => { const countDownZeroOrders = [] const orders = this.data.orders.map(order => { if (order.countdown && order.countdown != '0') { const currentCountDown = (Number(order.countdown) - 1); order.countdown = currentCountDown.toString(); if (currentCountDown <= 0) countDownZeroOrders.push(order) } return order }) this.setData({ orders: orders }) this.toUnAnthorization(countDownZeroOrders) }, 1000); }, /** 结束倒计时 */ endCountDown() { if (this.timer) { clearInterval(this.timer) this.timer = null } }, /** 发送取消授权 */ toUnAnthorization(orders) { console.log(orders) }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { const today = this.getNowDate(); const lastMouthDay = this.getLastMouthDate(); this.setData({ // date: today, paymentMode: options.paymentMode, startDate: today, endDate: lastMouthDay }); console.log("历史页当前data", this.data) // this.startCountdow(); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { this.getOrder(); }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { this.endCountDown() }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { this.refreshOrder() }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { if (!this.data.isHaveOrder) return; var page = this.data.pageNum + 1; this.setData({ pageNum: page }) this.getOrder() }, /** * 用户点击右上角分享 */ onShareAppMessage() { }, /** 日期选择器选择时间 */ bindDateChange(date) { this.setData({ date: date.detail.value, orders: [] }); console.log(date) this.getOrder() }, /** 组件按钮一点击事件 */ onOrderButtonClick1(event) { console.log(event) const order = event.detail.order; const message = event.detail.event; if (message == "退款") { wx.showLoading({ title: '正在退款', }) api.request_RefundTrx({ "trxId": order.orderId }).then(res => { console.log("退款", res) wx.hideLoading() if (res.data.statusCode == 200) { return util.subAndsendMessage(order.orderId, "退款") } else { wx.showToast({ title: res.data.message, }) } }).then(res => { this.refreshOrder(); }) .catch(err => { console.log("退款失败", err) wx.hideLoading() }) } }, /** 组件按钮二点击事件 */ onOrderButtonClick2(event) { console.log(event) if (event.detail.event == "重新授权") { this.toAuthorization(event.detail.order.orderId) } }, /** 授权 */ toAuthorization(orderId) { const that = this; wx.showLoading({ title: '授权中', }) api.request_NozzleAuthorization(orderId).then(res => { console.log("授权", res) wx.hideLoading() if (res.data.statusCode == 200) { that.refreshOrder() } else { wx.showToast({ title: '授权失败', }) } }).catch(err => { console.log("授权报错", err) wx.showToast({ title: '授权失败', }) }) }, /** 获取订单 */ getOrder() { wx.showLoading({ title: '获取订单中', }) const that = this; api.request_WXFindOrders(this.data.date, this.data.pageNum, this.data.pageSize).then(res => { wx.hideLoading() // api.request_WXFindOrders(this.data.date, 3, 5).then(res => { console.log("获取历史订单", res) let datas = res.data.data; if (datas.length <= 0) { that.data.isHaveOrder = false; return } var getOrders = that.turnOnOrder(datas) var orderList = [...this.data.orders, ...getOrders] this.setData({ orders: orderList }) console.log("转换后的订单", this.data.orders) }).catch(err => { wx.hideLoading() console.log("获取历史订单失败", err) wx.showModal({ title: '提示', content: '获取订单失败', }) }) }, /** 打包订单信息 */ turnOnOrder(orders) { const that = this; var getOrders = orders.map(order => { //获取订单时间 var times = [order.authorizationTime, order.createTime, order.fuelItemTransactionEndTime, order.transactionTime]; var timeFormate = times.find(t => t != undefined && t != null && t != ''); var time = util.formatDateNotSecond(timeFormate); //获取订单升数 var volume = (order.originalQty != null && order.originalQty != undefined) ? order.originalQty : order.qty //获取订单状态 var status = undefined; //根据不同的模式获取订单状态值 if (that.data.paymentMode == 0) { status = that.data.payStatusValue.find(state => state.orderStatus == order.orderStatus) } else { status = that.data.prepayStatuValue.find(state => state.authorizationStatus == order.authorizationStatus && state.orderStatus == order.orderStatus ) } var stute = ''; var stateColor = ''; var bt1 = '' var bt2 = '' if (status != undefined) { stute = status.status stateColor = status.statusColor } if (that.data.paymentMode == 0) { if (stute == '未支付') bt2 = '重新支付'; return { order: { status: stute, statusColor: stateColor, oilName: order.productName, nozzle: order.nozzleId, volume: volume, amount: order.originalAmount, payAmount: order.actualPaymentAmount, discount: order.originalAmount - order.actualPaymentAmount, orderId: order.id, time: time, price: order.price }, bottonText2: bt2 } } else { if (stute == "授权成功") bt2 = "请尽快提枪" if (stute == "支付失败") { bt1 = "取消" bt2 = "继续支付" } if (stute == "授权失败") { bt1 = "退款" bt2 = "重新授权" } return { order: { status: stute, statusColor: stateColor, oilName: order.productName, nozzle: order.nozzleId, volume: volume, amount: order.originalAmount, payAmount: order.actualPaymentAmount, discount: order.originalAmount - order.actualPaymentAmount, refund: order.refundAmount, orderId: order.id, time: time }, bottonText1: bt1, bottonText2: bt2 } } }) return getOrders; }, /** 刷新订单 */ refreshOrder() { this.setData({ date: '', orders: [] }); console.log(this.data.date) this.getOrder() } })