You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1021 lines
26 KiB
JavaScript
1021 lines
26 KiB
JavaScript
const app = getApp();
|
|
const loginApi = require('../../../utils/loginApi.js');
|
|
const cartUtils = require('../../../utils/cartUtils.js');
|
|
const cartNum = require('../../../utils/cartNum.js');
|
|
const cartOrder = require('../../../utils/cartOrder.js');
|
|
const card = require('../../../utils/card.js');
|
|
const des = require('../../../utils/des.js');
|
|
const md5 = require('../../../utils/md5.js');
|
|
|
|
Page({
|
|
|
|
/**
|
|
* 页面的初始数据
|
|
*/
|
|
data: {
|
|
hide: true,
|
|
showPayPwdInput: false, //是否展示密码输入层
|
|
pwdVal: '', //输入的密码
|
|
payFocus: true, //文本框焦点
|
|
|
|
cartHeight: 0,
|
|
ip: "123.12.12.123",
|
|
taktTime: 2000, // 查询间隔时间(毫秒)
|
|
executeCount: 30, // 查询次数
|
|
repeadCount: 2, // 重查次数
|
|
iPhoneX: wx.getStorageSync("model"),
|
|
addressInfo: {}, // 收货地址信息
|
|
address: "选择收货地址", //
|
|
showCart: false, // 是否展示购物车数据
|
|
cartList: [], // 购物车商品
|
|
cartTotal: {}, // 购物车汇总
|
|
boxFee: 0.00, // 餐盒费
|
|
deliverFee: 0.00, // 配送费
|
|
|
|
mobileFocus: false,
|
|
mobileStatus: false,
|
|
mobile: wx.getStorageSync("vipMobile"),
|
|
|
|
description: "",
|
|
dinewayIndex: 0, // 就餐方式index
|
|
dinewayList: [],
|
|
paywayIndex: 0, // 支付方式index
|
|
paywayList: [{
|
|
name: "会员卡支付",
|
|
sign: "02",
|
|
color: "#000",
|
|
icon: "icon-huiyuanqia"
|
|
},
|
|
{
|
|
name: "微信支付",
|
|
sign: "05",
|
|
color: "green",
|
|
icon: "icon-weixinzhifu6"
|
|
}
|
|
],
|
|
store: {},
|
|
memberInfo: {},
|
|
payOrder: {},
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面加载
|
|
*/
|
|
onLoad: function(options) {
|
|
var that = this;
|
|
this.data.dinewayIndex = app.busMode
|
|
var store = wx.getStorageSync("store");
|
|
console.log(store);
|
|
if (store.storeBusModes) {
|
|
var busArr = store.storeBusModes.split(',');
|
|
for (var i = 0; i < busArr.length; i++) {
|
|
that.data.dinewayList.push(cartUtils.getStoreBusMode(i));
|
|
}
|
|
}
|
|
|
|
that.setData({
|
|
store: store,
|
|
takeMethod: that.data.dinewayIndex,
|
|
dinewayList: that.data.dinewayList
|
|
});
|
|
|
|
// 初始化购物车utils
|
|
cartNum.init(app, cartUtils);
|
|
|
|
// 获取页面信息
|
|
wx.getSystemInfo({
|
|
success: function(res) {
|
|
var cartHeight = res.windowHeight * 0.7;
|
|
that.setData({
|
|
cartHeight: cartHeight
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
/**
|
|
* 刷新地址
|
|
*/
|
|
updateDisSelectAddress: function(message) {
|
|
var tempAddress = JSON.parse(message);
|
|
this.data.addressInfo = tempAddress;
|
|
var address = "";
|
|
if (tempAddress.receiveAddress.length > 0) {
|
|
address = address + tempAddress.receiveAddress;
|
|
}
|
|
if (tempAddress.name.length > 0) {
|
|
address = address + " " + tempAddress.name;
|
|
}
|
|
if (tempAddress.receiveMobile.length > 0) {
|
|
address = address + " " + tempAddress.receiveMobile;
|
|
}
|
|
this.setData({
|
|
address: address
|
|
})
|
|
},
|
|
|
|
/***
|
|
* 支付
|
|
*/
|
|
bindGopay: function() {
|
|
var that = this;
|
|
that.setData({
|
|
pwdVal: "",
|
|
})
|
|
var payType = this.data.paywayList[this.data.paywayIndex];
|
|
var sign = payType.sign;
|
|
if (sign == "02") { // 会员支付
|
|
if (this.data.mobile == "") {
|
|
app.msg.showMsg("提示", "请您先获取手机号");
|
|
return;
|
|
}
|
|
var order = cartUtils.getStoreCartMap();
|
|
var totalMemberCash = order.totalMemberCash;
|
|
var cardAmcount = app.cardInfo.availableAmount;
|
|
if (totalMemberCash <= cardAmcount) {
|
|
that.createOrderInfo();
|
|
} else {
|
|
wx.showModal({
|
|
title: '提示',
|
|
content: '会员卡余额不足,请充值',
|
|
showCancel: true,
|
|
success: function(res) {
|
|
if (res.confirm) {
|
|
wx.navigateTo({
|
|
url: '../../card/recharge',
|
|
})
|
|
}
|
|
},
|
|
})
|
|
}
|
|
} else { // 微信支付
|
|
this.createOrderInfo();
|
|
}
|
|
|
|
},
|
|
|
|
// 创建订单
|
|
createOrderInfo: function() {
|
|
var that = this;
|
|
var store = cartUtils.getStore();
|
|
if (undefined == store) {
|
|
app.msg.showMsg("提示", "门店信息不存在");
|
|
return;
|
|
}
|
|
var order = cartUtils.getStoreCartMap();
|
|
if (undefined == order || undefined == order.dishes || order.dishes.length == 0) {
|
|
wx.showModal({
|
|
title: "提示",
|
|
content: "购物车没有商品,快去选购商品吧",
|
|
success: function(res) {
|
|
if (res.confirm) {
|
|
wx.navigateBack({
|
|
|
|
});
|
|
}
|
|
}
|
|
});
|
|
return;
|
|
}
|
|
// 组装订单数据
|
|
order = that.processOrder(order, store);
|
|
|
|
// 校验订单参数
|
|
var result = that.checkOrder(order);
|
|
if (!result.flag) {
|
|
if (result.msg != "") {
|
|
wx.showModal({
|
|
title: '提示',
|
|
showCancel: false,
|
|
content: result.msg,
|
|
success: function(res) {
|
|
if (res.confirm) {
|
|
if(result.url){
|
|
wx.navigateTo({
|
|
url: result.url,
|
|
});
|
|
}
|
|
if (app.utils.isNotBlank(result.sign)) {
|
|
that.setData({
|
|
mobileFocus: true
|
|
});
|
|
}
|
|
}
|
|
}
|
|
})
|
|
}
|
|
return;
|
|
}
|
|
|
|
var params = {
|
|
"method": "liteappdc.order.create",
|
|
"storeId": store.id,
|
|
"wid": app.wid,
|
|
"userId": app.userId,
|
|
"openId": app.openId,
|
|
"orderInfoJson": encodeURIComponent(JSON.stringify(order))
|
|
}
|
|
var ignores = [];
|
|
ignores.push("wid");
|
|
ignores.push("userId");
|
|
ignores.push("openId");
|
|
ignores.push("orderInfoJson");
|
|
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) {
|
|
var tOrder = result.data.order;
|
|
that.data.payOrder = tOrder;
|
|
var payMap = that.data.paywayList[that.data.paywayIndex];
|
|
var sign = payMap.sign;
|
|
if (sign == "02") {
|
|
if (order.totalMemberCash == parseFloat(tOrder.receiveAmount).toFixed(2)) {
|
|
var cardInfo = app.cardInfo;
|
|
var isNoPwd = cardInfo.isNoPwd; // 是否免密
|
|
var npAmount = cardInfo.npAmount; // 免密金额
|
|
var receiveAmount = tOrder.receiveAmount; // 付款金额
|
|
if (isNoPwd == 0) { // 不免密
|
|
that.showInputLayer();
|
|
} else {
|
|
if (receiveAmount > npAmount) {
|
|
that.showInputLayer(); // 不免密
|
|
} else {
|
|
that.cardPay();
|
|
}
|
|
}
|
|
} else {
|
|
app.msg.showMsg("提示", "下单失败请重试");
|
|
}
|
|
} else {
|
|
|
|
// 微信统一下单
|
|
if (order.totalCash == parseFloat(tOrder.receiveAmount).toFixed(2)) {
|
|
that.unifiedorder(tOrder.receiveAmount, tOrder.orderNo, tOrder.outTradeNo, store.id);
|
|
} else {
|
|
app.msg.showMsg("提示", "下单失败请重试");
|
|
}
|
|
}
|
|
} else {
|
|
app.msg.showMsg("提示", result.message);
|
|
}
|
|
},
|
|
function(error) {
|
|
app.msg.showMsg("提示", "网络中断,获取门店失败");
|
|
}
|
|
);
|
|
},
|
|
|
|
/**
|
|
* 会员卡支付
|
|
*/
|
|
cardPay: function() {
|
|
var that = this;
|
|
var store = cartUtils.getStore();
|
|
var subject = this.data.store.name;
|
|
var totalAmount = card.cardMoney(this.data.payOrder.amount);
|
|
var realAmount = card.cardMoney(this.data.payOrder.receiveAmount);
|
|
var payCardAmount = card.cardMoney(this.data.payOrder.receiveAmount);
|
|
var discountAmount = card.cardMoney(this.data.payOrder.discountAmount);
|
|
|
|
var params = {
|
|
'subject': subject,
|
|
'body': '微信小程序点餐消费',
|
|
"mobile": this.data.mobile,
|
|
"totalAmount": totalAmount,
|
|
"realAmount": realAmount,
|
|
"payCardAmount": payCardAmount,
|
|
"discountAmount": discountAmount,
|
|
// "couponTotalAmount":0,
|
|
'payMode': "02",
|
|
'shopNo': store.no,
|
|
'posNo': store.posNo,
|
|
"workerNo": store.workerNo
|
|
}
|
|
params.tradeNo = card.getTradeNo(); // 订单单号
|
|
var cardInfo = app.cardInfo;
|
|
var pays = card.getPays(realAmount);
|
|
var isNoPwd = 0;
|
|
var passwd = "";
|
|
if (that.data.pwdVal) { // 非免密支付
|
|
isNoPwd = 0;
|
|
passwd = des.stringToHexForDES(that.data.pwdVal);
|
|
} else {
|
|
var content = params.tradeNo + realAmount;
|
|
isNoPwd = 1;
|
|
passwd = md5.md5(content);
|
|
}
|
|
|
|
var cardPayInfo = {
|
|
"cardNo": cardInfo.cardNo,
|
|
"amount": realAmount,
|
|
"isNoPwd": isNoPwd,
|
|
"passwd": passwd
|
|
}
|
|
params.cardPayInfo = JSON.stringify(cardPayInfo);
|
|
|
|
var date = new Date();
|
|
var saleDate = app.utils.getFormatTime(date, 1);
|
|
params.batchNo = '01';
|
|
params.serialNo = '01';
|
|
params.saleDate = saleDate;
|
|
params.pointFlag = 2;
|
|
params.pointValue = 0;
|
|
params.pointAmount = realAmount;
|
|
params.sourceSign = app.sourceSign;
|
|
params.method = 'jw.mobile.trade.pay';
|
|
var ignores = ['batchNo', 'serialNo', 'subject', 'body', 'cardPayInfo', 'pays', 'coupons'];
|
|
that.setData({
|
|
hide: false,
|
|
msg: "处理中..."
|
|
});
|
|
|
|
console.log(params);
|
|
app.jsapi.memberApi(app.globalData.appMemberKey, app.globalData.appMemberSecret, app.globalData.serverMemberUrl).ajax(params, ignores,
|
|
function(json) {
|
|
console.log("会员卡支付", json);
|
|
var result = json.data;
|
|
if (result.status == 1) { //
|
|
var data = result.data;
|
|
var storeId = that.data.store.id;
|
|
var tradeVoucherNo = data.tradeVoucherNo;
|
|
var tradeNo = that.data.payOrder.outTradeNo;
|
|
that.uploadOrder(storeId, tradeVoucherNo, tradeNo);
|
|
} else {
|
|
that.setData({
|
|
hide: true,
|
|
msg: "处理中..."
|
|
});
|
|
wx.showModal({
|
|
title: "提示",
|
|
content: result.errMessage,
|
|
showCancel: false
|
|
});
|
|
}
|
|
},
|
|
function(error) {
|
|
that.setData({
|
|
hide: true,
|
|
msg: "处理中..."
|
|
});
|
|
wx.showModal({
|
|
title: "提示",
|
|
content: "网络连接失败",
|
|
showCancel: false
|
|
});
|
|
}
|
|
);
|
|
|
|
},
|
|
|
|
/**
|
|
* 微信支付——统一下单
|
|
*/
|
|
unifiedorder: function(amount, orderNo, tradeNo, storeId) {
|
|
var that = this;
|
|
var appid = app.globalData.appid;
|
|
var openId = app.openId;
|
|
var params = {
|
|
"method": "liteappdc.pay.unifiedorder",
|
|
"storeId": storeId,
|
|
"operatorType": "custom",
|
|
"sourceSign": app.globalData.sourceSign,
|
|
"amount": amount,
|
|
"workerNo": "",
|
|
"posNo": "",
|
|
"appid": appid,
|
|
"openId": openId,
|
|
"ip": that.data.ip,
|
|
"orderNo": orderNo,
|
|
"tradeNo": tradeNo,
|
|
}
|
|
|
|
// 忽略签名参数
|
|
var ignores = [];
|
|
ignores.push("operatorType");
|
|
ignores.push("sourceSign");
|
|
ignores.push("accountId");
|
|
ignores.push("amount");
|
|
ignores.push("workerNo");
|
|
ignores.push("posNo");
|
|
ignores.push("appid");
|
|
ignores.push("openId");
|
|
ignores.push("ip");
|
|
ignores.push("orderNo");
|
|
ignores.push("tradeNo");
|
|
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.payRequest(result.data, amount, tradeNo);
|
|
// 统一下单成功 启动定时器查询支付结果
|
|
that.timerQeuryPayResult(storeId, appid, orderNo, tradeNo, amount);
|
|
} else {
|
|
app.msg.showMsg("提示", result.message);
|
|
}
|
|
},
|
|
function(error) {
|
|
wx.hideLoading();
|
|
app.msg.showMsg("提示", "网络中断,操作失败");
|
|
}
|
|
);
|
|
},
|
|
|
|
/**
|
|
* 拉起微信支付
|
|
*/
|
|
payRequest: function(param, amount, tradeNo) {
|
|
var that = this;
|
|
wx.requestPayment({
|
|
'timeStamp': param.timeStamp,
|
|
'nonceStr': param.nonceStr,
|
|
'package': param.package,
|
|
'signType': param.signType,
|
|
'paySign': param.paySign,
|
|
complete: function(res) {
|
|
if (res.errMsg != "requestPayment:ok") {
|
|
wx.showModal({
|
|
title: '提示',
|
|
content: '支付遇到了错误或者您主动放弃了支付',
|
|
showCancel: false
|
|
});
|
|
// 支付失败 关闭定时器
|
|
if (that.data.interval) {
|
|
clearInterval(that.data.interval);
|
|
}
|
|
that.setData({
|
|
executeCount: 30
|
|
});
|
|
}
|
|
}
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 定时器-查询支付结果
|
|
* 查询一分钟 30次
|
|
*/
|
|
timerQeuryPayResult: function(storeId, appid, orderNo, tradeNo, amount) {
|
|
var that = this;
|
|
var executeCount = that.data.executeCount;
|
|
var interval = that.data.interval;
|
|
interval = setInterval(function() {
|
|
executeCount = that.data.executeCount;
|
|
if (executeCount < 0) {
|
|
// 查询次数用完 关闭并重置定时器
|
|
clearInterval(interval);
|
|
that.setData({
|
|
executeCount: 30
|
|
});
|
|
// 再此发起查询
|
|
var repeadCount = that.data.repeadCount;
|
|
if (repeadCount > 0) {
|
|
wx.showModal({
|
|
title: '提示',
|
|
content: '未查询到微信支付成功信息,是否再查询一次',
|
|
confirmText: "再查一次",
|
|
success: function() {
|
|
repeadCount = that.data.repeadCount - 1;
|
|
that.setData({
|
|
repeadCount: repeadCount
|
|
});
|
|
}
|
|
});
|
|
} else {
|
|
app.utils.alertErrorMsg("提示", "支付失败,请联系管理员");
|
|
}
|
|
} else {
|
|
executeCount -= 1;
|
|
that.setData({
|
|
executeCount: executeCount
|
|
});
|
|
// 查询微信支付结果
|
|
that.queryPayResult(storeId, appid, orderNo, tradeNo);
|
|
}
|
|
}, that.data.taktTime) //循环时间 这里是1秒
|
|
|
|
that.setData({
|
|
interval: interval
|
|
});
|
|
|
|
},
|
|
|
|
/**
|
|
* 查询支付结果
|
|
*/
|
|
queryPayResult: function(storeId, appid, orderNo, tradeNo) {
|
|
var that = this;
|
|
var params = {
|
|
"method": "liteAppdc.pay.orderquery",
|
|
"storeId": storeId,
|
|
"appid": appid,
|
|
"tradeNo": tradeNo
|
|
}
|
|
// 忽略签名参数
|
|
var ignores = [];
|
|
ignores.push("appid");
|
|
ignores.push("tradeNo");
|
|
app.jsapi.api(app.globalData.appKey, app.globalData.appSecret, app.globalData.serverUrl).ajax(params, ignores,
|
|
function(json) {
|
|
var result = json.data;
|
|
if (result.status == 1) {
|
|
var payResult = result.data;
|
|
// 支付成功
|
|
if (payResult.status == 1) {
|
|
// 关闭定时器,重置查询次数
|
|
clearInterval(that.data.interval);
|
|
that.setData({
|
|
executeCount: 30
|
|
});
|
|
|
|
/*** 通过微信异步通知来上传订单 这里不再主动发起上传 ***/
|
|
var prepayId = payResult.prepayId;
|
|
// 支付成功-上传订单
|
|
that.uploadOrder(storeId, prepayId, tradeNo);
|
|
}
|
|
} else {
|
|
console.log("查询订单支付结果异常:" + payResult.message);
|
|
}
|
|
},
|
|
function(error) {
|
|
clearInterval(that.data.interval);
|
|
that.setData({
|
|
executeCount: 30
|
|
});
|
|
wx.showModal({
|
|
title: '提示',
|
|
content: "网络中断,操作失败"
|
|
});
|
|
}
|
|
);
|
|
},
|
|
|
|
/**
|
|
* 上传订单
|
|
*/
|
|
uploadOrder: function(storeId, prepayId, tradeNo) {
|
|
var that = this;
|
|
var params = {
|
|
"method": "liteAppdc.salesOrder.create",
|
|
"storeId": storeId,
|
|
"prepayId": prepayId,
|
|
"tradeNo": tradeNo
|
|
}
|
|
// 不签名参数
|
|
var ignores = [];
|
|
ignores.push("prepayId");
|
|
ignores.push("tradeNo");
|
|
app.jsapi.api(app.globalData.appKey, app.globalData.appSecret, app.globalData.serverUrl).ajax(params, ignores,
|
|
function(json) {
|
|
that.setData({
|
|
hide: true,
|
|
msg: "处理中..."
|
|
});
|
|
var result = json.data;
|
|
if (result.status == 1) {
|
|
// 清除购物车商品
|
|
cartUtils.clearStoreCartMap();
|
|
// // 跳转到订单详情
|
|
// wx.redirectTo({
|
|
// url: '../detail/detail?orderNo=' + orderNo + "&storeId=" + storeId,
|
|
// });
|
|
// 跳转到订单详情
|
|
wx.redirectTo({
|
|
url: '../detail/detail?orderNo=' + result.data.orderNo + "&storeId=" + result.data.storeId,
|
|
});
|
|
} else {
|
|
app.msg.showMsg("提示", "订单信息异常,请取消下单。");
|
|
}
|
|
},
|
|
function(error) {
|
|
that.setData({
|
|
hide: true,
|
|
msg: "处理中..."
|
|
});
|
|
app.msg.showMsg("提示", "网络中断,获取品类失败");
|
|
}
|
|
);
|
|
},
|
|
|
|
// 校验订单信息
|
|
checkOrder: function(order) {
|
|
var that = this;
|
|
var flag = true;
|
|
var sign = "";
|
|
var msg = "";
|
|
// 支付方式
|
|
if (app.utils.isBlank(order.paymode)) {
|
|
flag = false;
|
|
msg = "请选择支付方式";
|
|
return {
|
|
flag: flag,
|
|
msg: msg
|
|
};
|
|
}
|
|
// 就餐方式
|
|
if (app.utils.isBlank(order.busMode)) {
|
|
flag = false;
|
|
msg = "请选择就餐方式";
|
|
return {
|
|
flag: flag,
|
|
msg: msg
|
|
};
|
|
}
|
|
// 如果是堂食,桌号不能为空
|
|
if (order.busMode == 0) {
|
|
if (undefined == order.tableNo || order.tableNo.length == 0) {
|
|
// 打开桌号列表
|
|
flag = false;
|
|
msg = "";
|
|
that.bindGoTables();
|
|
return {
|
|
flag: flag,
|
|
msg: msg
|
|
};
|
|
}
|
|
}
|
|
// 校验手机号
|
|
if (app.utils.isBlank(order.mobile)) {
|
|
flag = false;
|
|
sign: "mobile";
|
|
msg = "请输入手机号码以便为您提供更好的服务 ";
|
|
return {
|
|
flag: flag,
|
|
sign: sign,
|
|
msg: msg
|
|
};
|
|
}
|
|
|
|
if (order.busMode == 2) {
|
|
if (order.receiveAddress.length == 0) {
|
|
flag = false;
|
|
return {
|
|
url:'../address/address',
|
|
flag: flag,
|
|
sign: "提示",
|
|
msg: "请选择收货地址, 以便及时给您送餐",
|
|
};
|
|
}
|
|
}
|
|
|
|
// 校验user信息
|
|
if (app.utils.isBlank(order.memberId)) {
|
|
flag = false;
|
|
msg = "未能获取用户信息";
|
|
return {
|
|
flag: flag,
|
|
msg: msg
|
|
};
|
|
}
|
|
|
|
return {
|
|
flag: flag,
|
|
msg: msg
|
|
};
|
|
},
|
|
|
|
// 组装订单数据
|
|
processOrder: function(order, store) {
|
|
var that = this;
|
|
order.storeId = store.id;
|
|
order.storeNo = store.no;
|
|
order.storeName = store.name;
|
|
order.posNo = store.posNo;
|
|
order.workerNo = store.workerNo;
|
|
|
|
|
|
// 支付方式 05:微信支付 02:会员卡支付
|
|
var paywayIndex = that.data.paywayIndex;
|
|
var paywayList = that.data.paywayList;
|
|
var payway = paywayList[paywayIndex];
|
|
order.paymode = payway.sign;
|
|
|
|
// 就餐方式 0:堂食 1:外带 2:外卖
|
|
var dinewayIndex = that.data.dinewayIndex;
|
|
var dinewayList = that.data.dinewayList;
|
|
var dineway = dinewayList[dinewayIndex];
|
|
if(dineway.sign == undefined){
|
|
dineway.sign = 0;
|
|
}
|
|
order.busMode = dineway.sign;
|
|
order.takeMethod = "";
|
|
order.takeTime = "";
|
|
order.address = "";
|
|
|
|
/* 桌号 */
|
|
if (order.busMode != 2) {
|
|
order.tableId = app.table.tableId;
|
|
order.tableNo = app.table.tableNo;
|
|
order.tableName = app.table.tableName;
|
|
} else {
|
|
order.tableId = "";
|
|
order.tableNo = "";
|
|
order.tableName = "";
|
|
}
|
|
|
|
order.mobile = undefined == that.data.mobile ? "" : that.data.mobile;
|
|
order.cardNo = ""; // 会员卡号
|
|
order.memberId = app.userId;
|
|
order.description = that.data.description;
|
|
|
|
var receiveName = "";
|
|
var receiveMobile = "";
|
|
var receiveAddress = "";
|
|
var boxFee = 0.00;
|
|
var distributionFee = 0.00;
|
|
|
|
if (dinewayIndex == 1) { // 外带
|
|
boxFee = that.data.boxFee;
|
|
} else if (dinewayIndex == 2) { // 外卖
|
|
if (that.data.addressInfo.receiveMobile) {
|
|
receiveName = that.data.addressInfo.name;
|
|
receiveMobile = that.data.addressInfo.receiveMobile;
|
|
receiveAddress = that.data.addressInfo.receiveAddress;
|
|
}
|
|
boxFee = that.data.boxFee;
|
|
distributionFee = that.data.deliverFee;
|
|
}
|
|
order.receiveName = receiveName;
|
|
order.receiveMobile = receiveMobile;
|
|
order.receiveAddress = receiveAddress;
|
|
order.boxFee = boxFee;
|
|
order.distributionFee = distributionFee;
|
|
// 重新计算商品的总价和会员价
|
|
cartOrder.getTotal(order);
|
|
return order;
|
|
},
|
|
|
|
/**
|
|
* 刷新商品数量和购物车信息
|
|
*/
|
|
refreshCartData: function() {
|
|
var cartTotal = cartUtils.getCartTotal();
|
|
var cartList = cartUtils.getDishListByCart();
|
|
if (cartList.length == 0) {
|
|
this.setData({
|
|
showCart: false
|
|
});
|
|
}
|
|
this.setData({
|
|
cartTotal: cartTotal,
|
|
cartList: cartList
|
|
});
|
|
// 计算额外的费用
|
|
this.getExtraCost();
|
|
},
|
|
|
|
/**
|
|
* 修改购物车商品数量
|
|
*/
|
|
bindChangeNum: function(e) {
|
|
var that = this;
|
|
var sign = e.currentTarget.dataset.sign;
|
|
var uniqueId = e.currentTarget.dataset.uniqueid;
|
|
switch (sign) {
|
|
case "2":
|
|
cartNum.addNumberByCart(uniqueId);
|
|
break;
|
|
case "3":
|
|
cartNum.decNumberByCart(uniqueId);
|
|
break;
|
|
default:
|
|
console.log("error");
|
|
break;
|
|
}
|
|
//更新购物车
|
|
that.refreshCartData();
|
|
},
|
|
|
|
/**
|
|
* 打开/关闭购物车
|
|
*/
|
|
showCartList: function(e) {
|
|
// 获取购物车商品列表
|
|
var dishList = cartUtils.getDishListByCart();
|
|
this.setData({
|
|
cartList: dishList
|
|
});
|
|
|
|
if (this.data.cartList.length > 0) {
|
|
this.setData({
|
|
showCart: !this.data.showCart
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 选择就餐方式
|
|
*/
|
|
binddineway: function(e) {
|
|
var index = e.currentTarget.dataset.index;
|
|
this.setData({
|
|
dinewayIndex: index,
|
|
takeMethod: index,
|
|
});
|
|
this.getExtraCost();
|
|
},
|
|
|
|
/**
|
|
* 计算额外的费用
|
|
*/
|
|
getExtraCost: function() {
|
|
var index = this.data.dinewayIndex;
|
|
var order = cartUtils.getStoreCartMap();
|
|
this.data.boxFee = cartOrder.getBoxFee(order);
|
|
this.data.deliverFee = cartOrder.getDeliverFee(this.data.store);
|
|
var extraCost = "";
|
|
if (index == 1) { // 外带
|
|
extraCost = "餐盒费:¥ " + this.data.boxFee;
|
|
} else if (index == 2) { // 外卖
|
|
extraCost = "餐盒费:" + this.data.boxFee + " + " + "配送费:" + this.data.deliverFee;
|
|
}
|
|
|
|
this.setData({
|
|
dinewayIndex: index,
|
|
takeMethod: index,
|
|
extraCost: extraCost,
|
|
});
|
|
},
|
|
|
|
/**
|
|
* 选择支付方式
|
|
*/
|
|
bindpayway: function(e) {
|
|
var index = e.currentTarget.dataset.index;
|
|
this.setData({
|
|
paywayIndex: index
|
|
});
|
|
},
|
|
|
|
/**
|
|
* 选择桌号
|
|
*/
|
|
bindGoTables: function() {
|
|
var erpStoreId = this.data.store.storeId;
|
|
var tableId = app.table.tableId;
|
|
var tableNo = app.table.tableNo;
|
|
wx.navigateTo({
|
|
url: '../table/table?erpStoreId=' + erpStoreId + "&tableId=" + tableId + "&tableNo=" + tableNo,
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 手机号
|
|
*/
|
|
inputMobile: function(e) {
|
|
var value = e.detail.value;
|
|
this.setData({
|
|
mobile: value
|
|
});
|
|
return value;
|
|
},
|
|
|
|
/**
|
|
* 选择送餐地址
|
|
*/
|
|
selectSendAddress: function() {
|
|
wx.navigateTo({
|
|
url: '../address/address',
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 备注
|
|
*/
|
|
inputDescription: function(e) {
|
|
var value = e.detail.value;
|
|
this.setData({
|
|
description: value
|
|
});
|
|
return value;
|
|
},
|
|
|
|
/**
|
|
* 获取手机号
|
|
*/
|
|
getPhoneNumber: function(e) {
|
|
var that = this;
|
|
if (e.detail.errMsg == 'getPhoneNumber:ok') {
|
|
var iv = e.detail.iv;
|
|
var encryptedData = e.detail.encryptedData;
|
|
|
|
card.wx_getPhoneNumber(iv, encryptedData, function(json) {
|
|
var result = json.data;
|
|
if (result.status == '1') {
|
|
var data = result.data.data;
|
|
var purePhoneNumber = data.purePhoneNumber; //没有区号的手机号
|
|
var phoneNumber = data.phoneNumber; // 用户绑定的手机号(国外手机号会有区号)
|
|
var countryCode = data.countryCode; //区号
|
|
that.setData({
|
|
mobile: purePhoneNumber,
|
|
mobileStatus: true
|
|
});
|
|
wx.hideLoading();
|
|
wx.setStorageSync("mobile", purePhoneNumber);
|
|
that.updateUserMobile(purePhoneNumber);
|
|
}
|
|
}, function(err) {
|
|
|
|
});
|
|
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 更改/记录用户的手机号
|
|
*/
|
|
updateUserMobile: function(purePhoneNumber) {
|
|
wx.request({
|
|
url: app.globalData.serverUrlExtend,
|
|
method: "POST",
|
|
header: {
|
|
'content-type': 'application/x-www-form-urlencoded'
|
|
},
|
|
data: {
|
|
"type": "wxdcedituser",
|
|
"tenantId": app.tenantId,
|
|
"wid": app.wid,
|
|
"userId": app.userId,
|
|
"mobile": purePhoneNumber,
|
|
},
|
|
complete: function(res) {
|
|
console.log("更改用户手机号码result:");
|
|
|
|
}
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面显示
|
|
*/
|
|
onShow: function() {
|
|
var that = this;
|
|
// 刷新购物车商品列表
|
|
that.refreshCartData();
|
|
// 获取ip
|
|
wx.request({
|
|
url: 'http://ip-api.com/json',
|
|
success: function(e) {
|
|
var ip = e.data.query;
|
|
ip = app.utils.isNotBlank(ip) ? ip : "123.12.12.123";
|
|
that.setData({
|
|
ip: ip
|
|
});
|
|
}
|
|
});
|
|
|
|
this.setData({
|
|
table: app.table
|
|
});
|
|
},
|
|
|
|
/**
|
|
* 显示支付密码输入层
|
|
*/
|
|
showInputLayer: function() {
|
|
this.setData({
|
|
showPayPwdInput: true,
|
|
payFocus: true
|
|
});
|
|
},
|
|
/**
|
|
* 隐藏支付密码输入层
|
|
*/
|
|
hidePayLayer: function() {
|
|
var val = this.data.pwdVal;
|
|
this.setData({
|
|
showPayPwdInput: false,
|
|
payFocus: false,
|
|
pwdVal: val
|
|
});
|
|
// 会员创建订单
|
|
if (val) {
|
|
this.cardPay();
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 获取焦点
|
|
*/
|
|
getFocus: function() {
|
|
this.setData({
|
|
payFocus: true
|
|
});
|
|
},
|
|
/**
|
|
* 输入密码监听
|
|
*/
|
|
inputPwd: function(e) {
|
|
this.setData({
|
|
pwdVal: e.detail.value
|
|
});
|
|
if (e.detail.value.length >= 6) {
|
|
this.hidePayLayer();
|
|
}
|
|
}
|
|
}) |