// pages/order/reason/reason.js const app = getApp(); Page({ /** * 页面的初始数据 */ data: { reasonItems: [{ name: "改主意了", select: false }, { name: "重复下单", select: false }, { name: "产品缺货", select: false }, { name: "等待时间过长", select: false }, { name: "店员态度不好", select: false }, { name: "添加或删除产品", select: false }, { name: "无法支付订单", select: false }, { name: "找不到餐厅", select: false }, ], storeId: "", ticketId: "", ticketNo: "", type: "", reason: "" }, /** * 生命周期函数--监听页面加载 */ onLoad: function(options) { if (options.type == 'cancel') { wx.setNavigationBarTitle({ title: '取消订单', }); } else if (options.type == 'refund') { wx.setNavigationBarTitle({ title: '申请退款', }); } this.setData({ type: options.type, storeId: options.storeId, ticketId: options.ticketId, ticketNo: options.ticketNo }); }, /** * 取消/退款操作 * 1:查询订单 * 2:校验订单状态 * 3:根据type执行相应操作 */ bindCancelOrder: function() { var that = this; // 查询订单信息 var params = { "method": "wxdc.sales.order.info", "wxStoreId": that.data.storeId, "memberId": app.userId, "ticketId": that.data.ticketId, "ticketNo": that.data.ticketNo } var ignores = []; wx.showLoading({ title: '加载中...' }); app.jsapi.api(app.globalData.appKey, app.globalData.appSecret, app.globalData.serverUrl).ajax(params, ignores, function(json) { console.log("订单取消", json); wx.hideLoading(); var result = json.data; if (result.status == 1) { var order = result.data; // 执行取消/退款操作 if (undefined != order && null != order) { var type = that.data.type; if (type == "cancel") { that.cancelOrder(order); } else if (type == "refund") { that.refundOrder(order); } else { app.msg.showMsg("提示", "操作类型不存在"); } } else { app.msg.showMsg("提示", "订单不存在"); } } else { app.msg.showMsg("提示", "操作失败:" + result.message); } }, function(error) { console.log(error); app.msg.showMsg("提示", "网络中断,操作失败"); } ); }, /** * 取消订单 */ cancelOrder: function(order) { var that = this; // 0-等待付款;1-已支付;2-已退单;3-已取消;4-商家已确认;5-已完成; if (order.status != 1) { if (order.status == 3) { wx.showModal({ title: '提示', content: '订单已取消,是否返回上一级页面', success: function(res) { console.log(res); if (res.confirm) { that.returnBack(); } } }) } else { app.msg.showMsg("提示", "订单状态非法"); } return; } var params = { "method": "wxdc.sales.order.cancel", "storeId": order.storeId, "memberId": app.userId, "ticketId": order.ticketId, "cancelReason": that.getReason() } // 不签名参数 var ignores = []; ignores.push("cancelReason"); wx.showLoading({ title: '加载中...' }); app.jsapi.api(app.globalData.appKey, app.globalData.appSecret, app.globalData.serverUrl).ajax(params, ignores, function(json) { wx.hideLoading(); var result = json.data; if (result.status == 1) { that.returnBack(); } else { var msg = result.message; if (msg.indexOf('已取消') > -1) { that.returnBack(); } else { app.msg.showMsg("提示", "操作失败:" + msg); } } }, function(error) { console.log(error); app.msg.showMsg("提示", "网络中断,操作失败"); } ); }, /** * 退单 */ refundOrder: function(order) { var that = this; // 0-等待付款;1-已支付;2-已退单;3-已取消;4-商家已确认;5-已完成; if (order.status != 4) { if (order.status == 2) { wx.showModal({ title: '提示', content: '订单已退款,是否返回上一级页面', success: function(res) { if (res.confirm) { that.returnBack(); } } }); } else { app.msg.showMsg("提示", "订单状态非法"); } return; } var params = { "method": "wxdc.order.refund.user.apply", "wxStoreId": order.storeId, "memberId": app.userId, "ticketId": order.ticketId, "refundReason": that.getReason() } // 不签名参数 var ignores = []; ignores.push("refundReason"); wx.showLoading({ title: '加载中...' }); app.jsapi.api(app.globalData.appKey, app.globalData.appSecret, app.globalData.serverUrl).ajax(params, ignores, function(json) { wx.hideLoading(); var result = json.data; if (result.status == 1) { that.returnBack(); } else { var msg = result.message; if (msg.indexOf('已退单') > -1) { that.returnBack(); } else { app.msg.showMsg("提示", "操作失败:" + msg); } } }, function(error) { console.log(error); app.msg.showMsg("提示", "网络中断,操作失败"); } ); }, /** * 返回上一个页面 */ returnBack: function() { var pages = getCurrentPages(); var sourcePage = pages[pages.length - 2]; sourcePage.loadOrderInfo(); wx.navigateBack({ delta: 1 }); }, /** * 原因选中 */ bindSelect: function(e) { var index = e.currentTarget.dataset.index; var reasonItems = this.data.reasonItems; reasonItems[index].select = !reasonItems[index].select; this.setData({ reasonItems: reasonItems }); }, /** * 输入原因 */ inputReason: function(e) { this.setData({ reason: e.detail.value }); }, /** * 获取取消/退款原因 */ getReason: function() { var reason = ""; var reasonItems = this.data.reasonItems; reasonItems.forEach(function(item, index) { if (item.select) { reason = reason.length > 0 ? reason + "," + item.name : item.name; } }); return reason += this.data.reason; } })