EP-WachatApp/eaterplanet_ecommerce/pages/order/placeOrder.js

1590 lines
51 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var app = getApp()
var locat = require('../../utils/Location.js');
var util = require('../../utils/util.js');
var status = require('../../utils/index.js');
var wcache = require('../../utils/wcache.js');
Page({
mixins: [require('../../mixin/globalMixin.js')],
data: {
payBtnLoading: false,
showConfirmModal: false,
receiverAddress: "", //快递送货地址
tuan_send_address: "", //团长送货地址
showGetPhone: false,
lou_meng_hao:'',
pickUpAddress: "",
disUserName: "",
pickUpCommunityName: "",
is_limit_distance_buy: 0,
tabList: [
{ id: 0, name: '社区自提', dispatching: 'pickup', enabled: false },
{ id: 1, name: '团长配送', dispatching: 'tuanz_send', enabled: false },
{ id: 2, name: '快递配送', dispatching: 'express', enabled: false },
{ id: 3, name: '同城配送', dispatching: 'localtown_delivery', enabled: false},
{ id: 4, name: '到店核销', dispatching: 'hexiao', enabled: false}
],
originTabList: [
{ id: 0, name: '社区自提', dispatching: 'pickup' },
{ id: 1, name: '团长配送', dispatching: 'tuanz_send'},
{ id: 2, name: '快递配送', dispatching: 'express'},
{ id: 3, name: '同城配送', dispatching: 'localtown_delivery'},
{ id: 4, name: '到店核销', dispatching: 'hexiao'}
],
tabIdx: 0,
region: ['选择地址', '', ''],
tot_price: 0,
needAuth: false,
reduce_money: 0,
hide_quan: true,
tuan_region: ['选择地址','',''],
groupInfo: {
group_name: '社区',
owner_name: '团长',
placeorder_tuan_name: '配送费',
placeorder_trans_name: '快递费'
},
comment: '',
is_yue_open: 0,
can_yupay: 0,
ck_yupay: 0,
use_score: 0,
commentArr: {},
note_content: '',
showAlertTime: false,
curAlertTime: -1,
isAgreePresale: false,
presale_info: '',
presalePickup: ['自提','配送','发货','配送','核销'],
allform: ""
},
canPay: true,
canPreSub: true,
handlerGobackClick(delta) {
const pages = getCurrentPages();
if (pages.length >= 2) {
wx.navigateBack({
delta: delta
});
} else {
wx.switchTab({
url: '/eaterplanet_ecommerce/pages/index/index'
});
}
},
handlerGohomeClick(url) {
wx.switchTab({
url: '/eaterplanet_ecommerce/pages/index/index'
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function(options) {
var that = this;
status.setGroupInfo().then((groupInfo) => { that.setData({ groupInfo }) });
var token = wx.getStorageSync('token');
var community = wx.getStorageSync('community');
var community_id = community.communityId;
util.check_login() ? this.setData({ needAuth: false }) : (this.setData({ needAuth: true }));
// let is_limit = options.is_limit || 0;
this.setData({
buy_type: options.type || '',
soli_id: options.soli_id || '',
pickUpAddress: community.fullAddress || '',
pickUpCommunityName: community.communityName || '',
disUserName: community.disUserName || ''
})
wx.showLoading()
app.util.request({
url: 'entry/wxapp/user',
data: {
controller: 'car.checkout',
token: token,
community_id,
buy_type: options.type,
soli_id: options.soli_id
},
dataType: 'json',
method: 'POST',
success: function (res) {
// wx.hideLoading();
setTimeout(function(){ wx.hideLoading(); },1000);
let rdata = res.data;
// 提货方式
let tabIdx = -1;
let tabLength = 0;
let tabList = that.data.tabList || {};
let sortTabList = [];
let {
delivery_express_name,
delivery_tuanzshipping_name,
delivery_ziti_name,
delivery_diy_sort,
delivery_type_express,
delivery_type_tuanz,
delivery_type_ziti,
delivery_tuanz_money,
is_vip_card_member,
vipcard_save_money,
level_save_money,
is_open_vipcard_buy,
is_member_level_buy,
total_integral,
is_need_subscript,
need_subscript_template,
delvery_type_hexiao,
order_note_open,
order_note_name,
order_note_content,
delivery_type_localtown,
localtown_dispatchtime, //预计配送需要多少分钟
pickingup_fare, //订单包装费,只有在 同城快递的时
localtown_shipping_fare, //同城配送费
localtown_modifypickingname,
localtown_shipping_fare_arr,
localtown_moneytype_fixed_freemoney,
localtown_makeup_delivery_money,
localtown_expected_delivery,
order_lou_meng_hao,
order_lou_meng_hao_placeholder,
presale_info,
cashondelivery_data,
allform
} = res.data;
let {
isopen_cashondelivery,
isopen_cashondelivery_communityhead,
isopen_cashondelivery_express,
isopen_cashondelivery_hexiao,
isopen_cashondelivery_localtown
} = cashondelivery_data;
presale_info = Object.keys(presale_info).length ? presale_info : '';
// 同城满免运费
if(localtown_shipping_fare_arr) {
let shipping_fare = 0;
shipping_fare = localtown_shipping_fare_arr.total_yl_shipping_fare*1 - localtown_shipping_fare_arr.total_shipping_fare*1;
localtown_shipping_fare_arr.shipping_fare = shipping_fare.toFixed(2);
}
if (delivery_type_localtown == 1) tabList[3].enabled = true, tabLength++;
if (delivery_type_express == 1) tabList[2].enabled = true, tabLength++;
if (delivery_type_tuanz == 1) tabList[1].enabled = true, tabLength++;
if (delivery_type_ziti == 1) tabList[0].enabled = true, tabLength++;
if (delivery_diy_sort) {
let sortArr = delivery_diy_sort.split(',');
if (sortArr[2] && tabList[sortArr[2]] && tabList[sortArr[2]].enabled) tabIdx = sortArr[2];
if (sortArr[1] && tabList[sortArr[1]] && tabList[sortArr[1]].enabled) tabIdx = sortArr[1];
if (sortArr[0] && tabList[sortArr[0]] && tabList[sortArr[0]].enabled) tabIdx = sortArr[0];
sortArr.forEach(function(item){
sortTabList.push(tabList[item]);
})
}
delivery_express_name && (tabList[2].name = delivery_express_name);
delivery_tuanzshipping_name && (tabList[1].name = delivery_tuanzshipping_name);
delivery_ziti_name && (tabList[0].name = delivery_ziti_name);
// 同城配送TODO...
sortTabList.push({id: 3, name: '同城配送', dispatching: 'localtown_delivery', enabled: (delivery_type_localtown==1) });
if(tabIdx==-1&&delivery_type_localtown==1) tabIdx=3;
let localtown_delivery_space_month = '';
if(localtown_expected_delivery&&localtown_expected_delivery.localtown_delivery_space_month) {
localtown_delivery_space_month = localtown_expected_delivery.localtown_delivery_space_month;
}
// 到店核销
sortTabList.push({id: 4, name: '到店核销', dispatching: 'hexiao', enabled: (delvery_type_hexiao==1) });
if(tabIdx==-1&&delvery_type_hexiao) { tabIdx = 4; }
var addres = 0;
addres = 1;
var seller_chose_id = 0;
var seller_chose_store_id = 0;
var seller_goods = rdata.seller_goodss;
let commentArr = {};
for (let key in seller_goods) commentArr[key] = '';
let sel_chose_vouche = '';
let sgvKey = 0;
let goodsTotNum = 0;
for (var i in seller_goods) {
if (seller_goods[i].show_voucher == 1) {
if (seller_goods[i].chose_vouche.id) seller_chose_id = seller_goods[i].chose_vouche.id;
if (seller_goods[i].chose_vouche.store_id) seller_chose_store_id = seller_goods[i].chose_vouche.store_id;
if (Object.prototype.toString.call(seller_goods[i].chose_vouche) == '[object Object]'){
sel_chose_vouche = seller_goods[i].chose_vouche;
}
if(Object.keys(seller_goods[i].chose_vouche).length>0) sgvKey = i;
}
seller_goods[i].goodsnum = Object.keys(seller_goods[i].goods).length;
for (var j in seller_goods[i].goods) {
goodsTotNum += seller_goods[i].goods[j].quantity*1;
if (seller_goods[i].goods[j].header_disc > 0 && seller_goods[i].goods[j].header_disc < 100) {
seller_goods[i].goods[j].header_disc = (seller_goods[i].goods[j].header_disc / 10).toFixed(1);
}
}
}
let current_distance = rdata.current_distance || '';
let current_distance_str = that.changeDistance(current_distance);
order_note_content = order_note_content!=null?order_note_content:'';
if(presale_info&&presale_info.goods_price) {
let deduction_money = presale_info.deduction_money;
deduction_money = deduction_money>0?deduction_money:presale_info.presale_ding_money;
let totDeduction = deduction_money*goodsTotNum;
presale_info.balance = (presale_info.goods_price*1 - totDeduction).toFixed(2);
presale_info.totdingMoney = (goodsTotNum*presale_info.presale_ding_money).toFixed(2);
presale_info.totDeduction = totDeduction.toFixed(2);
}
let param = {
sgvKey,
is_hexiao: delvery_type_hexiao,
loadover: true,
commentArr,
sel_chose_vouche,
tabList: sortTabList,
is_limit_distance_buy: rdata.is_limit_distance_buy || 0,
tabIdx: tabIdx,
tabLength: tabLength,
tuan_send_address: rdata.tuan_send_address,
is_open_order_message: rdata.is_open_order_message,
is_yue_open: rdata.is_yue_open,
can_yupay: rdata.can_yupay,
show_voucher: rdata.show_voucher,
current_distance,
man_free_tuanzshipping: rdata.man_free_tuanzshipping*1 || 0,
man_free_shipping: rdata.man_free_shipping*1 || 0,
index_hide_headdetail_address: rdata.index_hide_headdetail_address || 0,
open_score_buy_score: rdata.open_score_buy_score || 0,
score: rdata.score || 0,
score_for_money: rdata.score_for_money || 0,
bue_use_score: rdata.bue_use_score || 0,
is_man_delivery_tuanz_fare: rdata.is_man_delivery_tuanz_fare, //是否达到满xx减团长配送费
fare_man_delivery_tuanz_fare_money: rdata.fare_man_delivery_tuanz_fare_money, //达到满xx减团长配送费 减了多少钱
is_man_shipping_fare: rdata.is_man_shipping_fare, //是否达到满xx减运费
fare_man_shipping_fare_money: rdata.fare_man_shipping_fare_money, //达到满xx减运费司机减了多少运费
is_vip_card_member,
vipcard_save_money,
level_save_money,
is_open_vipcard_buy,
is_member_level_buy,
// canLevelBuy,
total_integral: total_integral || '',
is_need_subscript,
need_subscript_template,
current_distance_str,
order_note_open,
order_note_name,
order_note_content,
note_content: order_note_content,
localtown_dispatchtime,
pickingup_fare,
localtown_shipping_fare,
localtown_modifypickingname: localtown_modifypickingname || '包装费',
localtown_shipping_fare_arr,
localtown_moneytype_fixed_freemoney,
localtown_makeup_delivery_money,
localtown_expected_delivery,
localtown_delivery_space_month,
order_lou_meng_hao: order_lou_meng_hao|| '楼号门牌',
order_lou_meng_hao_placeholder: order_lou_meng_hao_placeholder || '例如:A座106室',
presale_info,
cashondelivery_data,
allform
}
let addrObj = rdata.address || {};
let tuan_send_address_info = rdata.tuan_send_address_info || {};
let tuanAddress = tuan_send_address_info.address || '选择位置';
if(tuan_send_address_info.city_name == "" || tuan_send_address_info.city_id==3708 || tuan_send_address_info.country_name == "" || tuan_send_address_info.country_id==3708){
tuanAddress = '选择位置';
}
// 20200710 TODO
// addrObj = tuan_send_address_info;
param.tabAddress = [
{
name: rdata.ziti_name || '',
mobile: rdata.ziti_mobile || ''
},
{
name: tuan_send_address_info.name || '',
mobile: tuan_send_address_info.telephone || '',
receiverAddress: tuanAddress,
lou_meng_hao: tuan_send_address_info.lou_meng_hao || '',
region: [tuan_send_address_info.province_name || "", tuan_send_address_info.city_name || "", tuan_send_address_info.country_name || ""]
},
{
name: addrObj.name || '',
mobile: addrObj.telephone || '',
receiverAddress: addrObj.address || '',
region: [addrObj.province_name || "选择地址", addrObj.city_name || "", addrObj.country_name || ""]
},
{
name: addrObj.name || '',
mobile: addrObj.telephone || '',
receiverAddress: addrObj.address || '',
region: [addrObj.province_name || "选择地址", addrObj.city_name || "", addrObj.country_name || ""]
},
{
name: rdata.ziti_name || '',
mobile: rdata.ziti_mobile || ''
}
];
if(JSON.stringify(addrObj)!='[]') {
if(addrObj.lon_lat=='') {
if(tabIdx==3){
param.tabAddress[3] = {
name: addrObj.name || '',
mobile: addrObj.telephone || '',
receiverAddress: '',
region: ["选择地址", "", ""]
}
}
} else if(addrObj.lon_lat) {
let lat_lon = addrObj.lon_lat.split(',');
wcache.put('latitude2', lat_lon[1]);
wcache.put('longitude2', lat_lon[0]);
}
}
if (addres == 1) {
that.setData({
...param,
pick_up_time: res.data.pick_up_time,
pick_up_type: res.data.pick_up_type,
pick_up_weekday: res.data.pick_up_weekday,
addressState: true,
is_integer: res.data.is_integer,
is_ziti: res.data.is_ziti,
pick_up_arr: res.data.pick_up_arr,
seller_goodss: res.data.seller_goodss,
seller_chose_id: seller_chose_id,
seller_chose_store_id: seller_chose_store_id,
goods: res.data.goods,
buy_type: res.data.buy_type,
yupay: res.data.can_yupay,
is_yue_open: res.data.is_yue_open,
yu_money: res.data.yu_money,
total_free: res.data.total_free,
trans_free_toal: res.data.trans_free_toal,
delivery_tuanz_money: res.data.delivery_tuanz_money,
reduce_money: res.data.reduce_money,
is_open_fullreduction: res.data.is_open_fullreduction,
cha_reduce_money: res.data.cha_reduce_money
}, () => {
that.calcPrice();
})
} else {
that.setData({
...param,
is_integer: res.data.is_integer,
addressState: false,
goods: res.data.goods,
is_ziti: res.data.is_ziti,
pick_up_arr: res.data.pick_up_arr,
seller_goodss: res.data.seller_goodss,
seller_chose_id: seller_chose_id,
seller_chose_store_id: seller_chose_store_id,
buy_type: res.data.buy_type,
yupay: res.data.can_yupay,
is_yue_open: res.data.is_yue_open,
yu_money: res.data.yu_money,
total_free: res.data.total_free,
trans_free_toal: res.data.trans_free_toal,
delivery_tuanz_money: res.data.delivery_tuanz_money,
reduce_money: res.data.reduce_money,
is_open_fullreduction: res.data.is_open_fullreduction,
cha_reduce_money: res.data.cha_reduce_money
},()=>{
that.calcPrice();
})
}
}
})
},
changeDistance: function(current_distance) {
if(current_distance) {
current_distance = parseFloat(current_distance);
if(current_distance > 1000) {
let current_distance_int = current_distance/1000;
return current_distance_int.toFixed(2) + 'km';
}
return current_distance + 'm';
}
return current_distance;
},
/**
* 授权成功回调
*/
authSuccess: function () {
this.onLoad();
},
/**
* 设置手机号
*/
getReceiveMobile: function (e) {
var num = e.detail;
this.setData({
t_ziti_mobile: num,
showGetPhone: false
});
},
ck_wxpays: function () {
this.setData({
ck_yupay: 0
})
},
ck_yupays: function () {
this.setData({
ck_yupay: 1
})
},
ck_cash: function () {
this.setData({
ck_yupay: 2
})
},
scoreChange: function (e) {
console.log('是否使用', e.detail.value)
let tdata = this.data;
let score_for_money = tdata.score_for_money*1;
let tot_price = tdata.tot_price*1;
let disAmount = tdata.disAmount*1;
if (e.detail.value){
tot_price = tot_price - score_for_money;
disAmount += score_for_money;
} else {
tot_price = tot_price + score_for_money;
disAmount -= score_for_money;
}
this.setData({
use_score: e.detail.value?1:0,
tot_price: tot_price.toFixed(2),
disAmount: disAmount.toFixed(2)
})
},
/**
* 未登录
*/
needAuth: function(){
this.setData({
needAuth: true
});
},
/**
* 关闭手机授权
*/
close: function () {
this.setData({
showGetPhone: false
});
},
// 生成订单号 Step1
preOrderConfirm() {
if(this.data.allform&&this.data.allform.is_open_orderform) {
this.selectComponent("#sForm").formSubmit();
return false;
} else {
this.goOrderfrom();
}
},
// 生成订单号 Step2
goOrderfrom: function(formData={detail: {}}) {
let that = this;
let { tabAddress, tabIdx, note_content, order_note_open, order_note_name, isAgreePresale, buy_type, presale_info } = this.data;
this.setData({ formData: formData.detail })
var t_ziti_name = tabAddress[tabIdx].name;
var t_ziti_mobile = tabAddress[tabIdx].mobile;
var receiverAddress = tabAddress[tabIdx].receiverAddress;
var region = tabAddress[tabIdx].region;
var tuan_send_address = tabAddress[tabIdx].receiverAddress;
var lou_meng_hao = tabAddress[tabIdx].lou_meng_hao;
if (t_ziti_name == '') {
this.setData({
focus_name: true
})
let tip = '请填写收货人';
if (tabIdx == 0) tip = '请填写提货人';
wx.showToast({
title: tip,
icon: 'none'
})
return false;
}
if (t_ziti_mobile == '' || !(/^1(3|4|5|6|7|8|9)\d{9}$/.test(t_ziti_mobile))) {
this.setData({
focus_mobile: true
})
wx.showToast({
title: '手机号码有误',
icon: 'none'
})
return false;
}
if((tabIdx==0||tabIdx==1||tabIdx==3)&&this.data.buy_type!='virtualcard') {
if(order_note_open==1 && note_content=='') {
wx.showToast({
title: '请填写' + order_note_name,
icon: 'none'
})
return false;
}
} else {
note_content = '';
}
if(order_note_open==0) note_content = '';
if ((tabIdx == 2 || tabIdx == 3) && region[0] == '选择地址') {
wx.showToast({
title: '请选择所在地区',
icon: 'none'
})
return false;
}
if ((tabIdx == 2 || tabIdx == 3) && receiverAddress == ''){
this.setData({
focus_addr: true
})
wx.showToast({
title: '请填写详细地址',
icon: 'none'
})
return false;
}
if (tabIdx == 1) {
if (tuan_send_address == '选择位置' || tuan_send_address == '') {
wx.showToast({
title: '请选择位置',
icon: 'none'
})
return false;
}
if (lou_meng_hao == ''){
wx.showToast({
title: '输入楼号门牌',
icon: 'none'
})
return false;
}
}
if(buy_type=='presale'&&!isAgreePresale) {
wx.showModal({
title: '提示',
content: '预售商品定金不支持退款,同意后可继续下单',
showCancel: true,
cancelText: '我再想想',
cancelColor: '#ff5344',
confirmText: '同意下单',
success (res) {
if (res.confirm) {
that.setData({ isAgreePresale: true });
if (tabIdx == 2){
that.preSubscript();
} else {
that.conformOrder();
}
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
return;
}
if (tabIdx == 2||this.data.buy_type=="virtualcard"){
this.preSubscript();
} else {
this.conformOrder();
}
},
/**
* 支付防抖
*/
preSubscript: function(event) {
let that = this;
if(!this.canPreSub) return;
this.canPreSub = false;
let is_need_subscript = this.data.is_need_subscript;
if(is_need_subscript==1) {
//弹出订阅消息
console.log(111)
this.subscriptionNotice().then(()=>{
console.log(3333)
that.prepay();
}).catch(()=>{
console.log(444)
that.prepay();
});
} else {
console.log(222)
that.prepay();
}
},
prepay: function() {
this.canPreSub = true;
let { tabAddress, tabIdx, is_limit_distance_buy, note_content, seller_goodss, commentArr, formData } = this.data;
let isVirtualcard = 0;
if(this.data.buy_type=='virtualcard') isVirtualcard = 1;
if (is_limit_distance_buy == 1 && (tabIdx == 1) && isVirtualcard==0){
wx.showModal({
title: '提示',
content: '离团长太远了,暂不支持下单',
showCancel: false,
confirmColor: '#F75451'
})
return false;
}
console.log('this.canPay', this.canPay)
if(this.canPay){
this.setData({ payBtnLoading: true })
this.canPay = false;
var that = this;
var token = wx.getStorageSync('token');
let { seller_chose_id, seller_chose_store_id, ck_yupay, tabList } = this.data;
var voucher_id = seller_chose_id;
var dispatching = '';
tabList.forEach(function(item){
if (item.id == tabIdx) dispatching = item.dispatching;
})
let arr = [];
for (let key in seller_goodss) {
let goodsid = '';
let goods = seller_goodss[key].goods;
Object.keys(goods).forEach(kk=>{
goodsid += goods[kk].goods_id+'_';
})
commentArr[key] = key+'_'+goodsid + commentArr[key];
}
for (let key in commentArr) arr.push(commentArr[key]);
let comment = arr.join('@EOF@');
var receiverAddress = tabAddress[tabIdx].receiverAddress || '';
var region = tabAddress[tabIdx].region || [];
var t_ziti_name = tabAddress[tabIdx].name;
var t_ziti_mobile = tabAddress[tabIdx].mobile;
let lou_meng_hao = tabAddress[tabIdx].lou_meng_hao || '';
var quan_arr = [];
if (voucher_id > 0) {
var t_tmp = seller_chose_store_id + '_' + voucher_id;
quan_arr.push(t_tmp);
}
let tuan_send_address = '';
let tuan_region = '';
let address_name = '';
let province_name = '';
let city_name = '';
let country_name = '';
if (tabIdx==1){
tuan_send_address = receiverAddress;
tuan_region = region;
province_name = tuan_region[0];
city_name = tuan_region[1];
country_name = tuan_region[2];
} else if (tabIdx == 2 || tabIdx == 3) {
address_name = receiverAddress;
province_name = region[0];
city_name = region[1];
country_name = region[2];
}
var community = wx.getStorageSync('community');
var community_id = community.communityId;
var pick_up_id = community_id;
let latitude = wx.getStorageSync('latitude2');
let longitude = wx.getStorageSync('longitude2');
let { use_score, buy_type, soli_id } = this.data;
// 送达时间
let expected_delivery_time = '';
let localtown_delivery_space_month = '';
if(tabIdx==3){
let { localtown_expected_delivery, curAlertTime, localtown_dispatchtime, localtown_delivery_space_month } = this.data;
if(curAlertTime==-1) {
expected_delivery_time = localtown_dispatchtime;
} else {
expected_delivery_time = localtown_expected_delivery.localtown_delivery_space_time_list[localtown_delivery_space_month][curAlertTime].time;
}
expected_delivery_time = localtown_delivery_space_month + ' ' + expected_delivery_time;
}
let cashon_delivery = (ck_yupay)==2?1:0
wx.showLoading();
app.util.request({
url: 'entry/wxapp/user',
data: {
controller: 'car.sub_order',
token: token,
pay_method: 'wxpay',
buy_type,
pick_up_id,
dispatching,
ziti_name: t_ziti_name,
quan_arr,
comment,
ziti_mobile: t_ziti_mobile,
latitude,
longitude,
ck_yupay,
tuan_send_address,
lou_meng_hao,
address_name,
province_name,
city_name,
country_name,
use_score,
soli_id,
note_content,
expected_delivery_time,
scene: app.globalData.scene,
cashon_delivery,
...formData
},
dataType: 'json',
method: 'POST',
success: function (res) {
wx.hideLoading();
let has_yupay = res.data.has_yupay || 0;
var order_id = res.data.order_id;
let h = {};
console.log('支付日志:', res);
if (res.data.code == 0) {
// 交易组件
if(res.data.isRequestOrderPayment==1) {
wx.requestOrderPayment({
"orderInfo": res.data.order_info,
"timeStamp": res.data.timeStamp,
"nonceStr": res.data.nonceStr,
"package": res.data.package,
"signType": res.data.signType,
"paySign": res.data.paySign,
'success': function (wxres) {
that.canPay = true;
if (buy_type == "dan" || buy_type == "pindan" || buy_type == "integral" || buy_type == "soitaire" || buy_type == "presale" || buy_type == "virtualcard") {
if (res.data.is_go_orderlist<=1){
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/order/order?id=' + order_id + '&is_show=1&delivery=' + dispatching
})
} else {
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/order/index?is_show=1'
})
}
} else {
wx.redirectTo({
url: `/eaterplanet_ecommerce/moduleA/pin/share?id=${order_id}`
})
}
},
'fail': function (error) {
if (res.data.is_go_orderlist <= 1) {
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/order/order?id=' + order_id + '&isfail=1&delivery=' + dispatching
})
} else {
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/order/index?isfail=1'
})
}
}
})
} else {
that.changeIndexList();
if (has_yupay == 1) {
that.canPay = true;
if (buy_type == "dan" || buy_type == "pindan" || buy_type == "integral" || buy_type == "soitaire" || buy_type == "presale" || buy_type == "virtualcard") {
if (res.data.is_go_orderlist <= 1) {
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/order/order?id=' + order_id + '&is_show=1&delivery=' + dispatching
})
} else {
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/order/index?is_show=1'
})
}
} else {
wx.redirectTo({
url: `/eaterplanet_ecommerce/moduleA/pin/share?id=${order_id}`
})
}
} else {
wx.requestPayment({
"appId": res.data.appId,
"timeStamp": res.data.timeStamp,
"nonceStr": res.data.nonceStr,
"package": res.data.package,
"signType": res.data.signType,
"paySign": res.data.paySign,
'success': function (wxres) {
that.canPay = true;
if (buy_type == "dan" || buy_type == "pindan" || buy_type == "integral" || buy_type == "soitaire" || buy_type == "presale" || buy_type == "virtualcard") {
if (res.data.is_go_orderlist<=1){
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/order/order?id=' + order_id + '&is_show=1&delivery=' + dispatching
})
} else {
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/order/index?is_show=1'
})
}
} else {
wx.redirectTo({
url: `/eaterplanet_ecommerce/moduleA/pin/share?id=${order_id}`
})
}
},
'fail': function (error) {
if (res.data.is_go_orderlist <= 1) {
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/order/order?id=' + order_id + '&isfail=1&delivery=' + dispatching
})
} else {
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/order/index?isfail=1'
})
}
}
})
}
}
} else if (res.data.code == 1) {
that.canPay = true;
wx.showModal({
title: '提示',
content: res.data.RETURN_MSG || '支付失败',
showCancel: false,
confirmColor: '#F75451',
success (ret) {
if (ret.confirm) {
if (res.data.is_go_orderlist <= 1) {
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/order/order?id=' + order_id + '&isfail=1&delivery=' + dispatching
})
} else {
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/order/index?is_show=1&isfail=1'
})
}
}
}
})
} else if (res.data.code == 2) {
that.canPay = true;
if( res.data.is_forb ==1 ){ h.btnDisable = true; h.btnText="已抢光"; }
wx.showToast({
title: res.data.msg,
icon: "none"
});
} else {
console.log(res);
}
that.setData({ btnLoading: false, payBtnLoading:false, ...h })
},
fail: function() {
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/order/index?is_show=1&isfail=1'
})
}
})
}
},
/**
* 监听收货人
*/
changeReceiverName: function(e) {
let { tabAddress, tabIdx } = this.data;
let receiverName = e.detail.value.trim();
Object.keys(tabAddress).length && (tabAddress[tabIdx].name = receiverName);
if (!receiverName) {
let tip = '请填写收货人';
if (tabIdx == 0) tip = '请填写提货人';
wx.showToast({
title: tip,
icon: "none"
});
}
this.setData({ tabAddress })
return {
value: receiverName
}
},
/**
* 监听备注
*/
changeNoteName: function(e) {
let noteName = e.detail.value.trim();
let order_note_name = this.data.order_note_name;
if (!noteName) {
let tip = '请填写' + order_note_name;
wx.showToast({
title: tip,
icon: "none"
});
}
this.setData({ note_content: noteName })
return {
value: noteName
}
},
/**
* 监听手机号
*/
bindReceiverMobile: function(e) {
let { tabAddress, tabIdx } = this.data;
let mobile = e.detail.value.trim();
tabAddress[tabIdx].mobile = mobile;
this.setData({ tabAddress });
return {
value: mobile
}
},
/**
* 监控快递地址变化
*/
changeReceiverAddress: function(e){
let { tabAddress, tabIdx } = this.data;
tabAddress[tabIdx].receiverAddress = e.detail.value.trim();
this.setData({ tabAddress });
return {
value: e.detail.value.trim()
}
},
/**
* 监控团长送货地址变化
*/
changeTuanAddress: function (e) {
let { tabAddress, tabIdx } = this.data;
tabAddress[tabIdx].lou_meng_hao = e.detail.value.trim();
this.setData({ tabAddress });
return {
value: e.detail.value.trim()
}
},
/**
* 结算
*/
conformOrder: function() {
this.setData({
showConfirmModal: true
});
},
/**
* 关闭结算
*/
closeConfirmModal: function() {
this.canPay = true;
this.setData({
showConfirmModal: false
});
},
/**
* 地区选择
*/
bindRegionChange: function (e) {
let region = e.detail.value;
region && this.checkOut(region[1]);
this.setData({ region })
},
checkOut: function (mb_city_name) {
var that = this;
var token = wx.getStorageSync('token');
var community = wx.getStorageSync('community');
var community_id = community.communityId;
let latitude = wx.getStorageSync('latitude2');
let longitude = wx.getStorageSync('longitude2');
let buy_type = this.data.buy_type;
let soli_id = this.data.soli_id;
app.util.request({
url: 'entry/wxapp/user',
data: {
controller: 'car.checkout',
token,
community_id,
mb_city_name,
latitude: latitude,
longitude: longitude,
buy_type,
soli_id
},
dataType: 'json',
method: 'POST',
success: function (res) {
if(res.data.code==1){
let rdata = res.data;
let {
vipcard_save_money,
shop_buy_distance,
is_limit_distance_buy,
current_distance,
level_save_money,
score,
score_for_money,
bue_use_score,
localtown_shipping_fare_arr,
localtown_moneytype_fixed_freemoney,
localtown_makeup_delivery_money
} = rdata;
if (that.data.tabIdx == 1 && is_limit_distance_buy == 1 && (current_distance > shop_buy_distance)) {
wx.showModal({
title: '提示',
content: '超出配送范围,请重新选择',
showCancel: false,
confirmColor: '#F75451'
})
}
current_distance = current_distance || '';
let current_distance_str = that.changeDistance(current_distance);
// 同城满免运费
if(localtown_shipping_fare_arr) {
let shipping_fare = 0;
shipping_fare = localtown_shipping_fare_arr.total_yl_shipping_fare*1 - localtown_shipping_fare_arr.total_shipping_fare*1;
localtown_shipping_fare_arr.shipping_fare = shipping_fare.toFixed(2);
}
that.setData({
score: score || 0,
score_for_money: score_for_money || 0,
bue_use_score: bue_use_score || 0,
vipcard_save_money,
level_save_money,
is_limit_distance_buy: is_limit_distance_buy || 0,
current_distance,
current_distance_str,
trans_free_toal: rdata.trans_free_toal,
is_man_delivery_tuanz_fare: rdata.is_man_delivery_tuanz_fare, //是否达到满xx减团长配送费
fare_man_delivery_tuanz_fare_money: rdata.fare_man_delivery_tuanz_fare_money, //达到满xx减团长配送费 减了多少钱
is_man_shipping_fare: rdata.is_man_shipping_fare, //是否达到满xx减运费
fare_man_shipping_fare_money: rdata.fare_man_shipping_fare_money, //达到满xx减运费司机减了多少运费
localtown_shipping_fare_arr,
localtown_moneytype_fixed_freemoney,
localtown_makeup_delivery_money
}, () => { that.calcPrice() })
}
}
})
},
/**
* 定位获取地址
*/
choseLocation: function() {
let { tabAddress, tabIdx } = this.data;
var that = this;
wx.chooseLocation({
success: function (e) {
console.log(e);
var s_region = that.data.region;
var filename = e.name;
let addr = e.address || '';
var reg = /.+?(省|市|自治区|自治州|县|区|特别行政区)/g;
// var result = addr.match(reg);
var result = null;
console.log('patt', result);
if (result == null || filename=="") {
locat.getGpsLocation(e.latitude, e.longitude).then((res) => {
console.log('反推了', res);
if (res) {
s_region[0] = res.province;
s_region[1] = res.city;
s_region[2] = res.district;
filename || (filename = res.street);
}
setRes();
});
} else {
s_region[0] = result[0];
s_region[1] = result[1];
s_region[2] = result[2] || '';
var dol_path = addr.replace(s_region.join(''), '');
filename = dol_path + e.name;
setRes();
}
wcache.put('latitude2', e.latitude);
wcache.put('longitude2', e.longitude);
function setRes(){
console.log('setData');
s_region && (s_region[1] != "市") && that.checkOut(s_region[1]);
tabAddress[tabIdx].region = s_region;
tabAddress[tabIdx].receiverAddress = filename;
that.setData({ tabAddress })
}
},
fail: function (error) {
console.log(error)
if (error.errMsg =='chooseLocation:fail auth deny') {
console.log('无权限')
locat.checkGPS(app, locat.openSetting())
}
}
})
},
/**
* 微信获取地址
*/
getWxAddress: function() {
let { tabAddress, tabIdx } = this.data;
let region = tabAddress[tabIdx].region || [];
let that = this;
wx.getSetting({
success(res) {
if (res.authSetting['scope.address']) {
wx.chooseAddress({
success(res) {
console.log("step1")
region[0] = res.provinceName || "选择地址";
region[1] = res.cityName || "";
region[2] = res.countyName || "";
let receiverAddress = res.detailInfo;
tabAddress[tabIdx].name = res.userName;
tabAddress[tabIdx].mobile = res.telNumber;
tabAddress[tabIdx].region = region;
tabAddress[tabIdx].receiverAddress = receiverAddress;
that.setData({ tabAddress })
region && (region[1] != "市") && that.checkOut(region[1]);
},
fail(res){
console.log("step4")
console.log(res)
}
})
} else {
if (res.authSetting['scope.address'] == false) {
wx.openSetting({
success(res) {
console.log(res.authSetting)
}
})
} else {
console.log("step2")
wx.chooseAddress({
success(res) {
console.log("step3")
region[0] = res.provinceName || "选择地址";
region[1] = res.cityName || "";
region[2] = res.countyName || "";
let receiverAddress = res.detailInfo;
region && (region[1] != "市") && that.checkOut(region[1]);
tabAddress[tabIdx].name = res.userName;
tabAddress[tabIdx].mobile = res.telNumber;
tabAddress[tabIdx].region = region;
tabAddress[tabIdx].receiverAddress = receiverAddress;
that.setData({ tabAddress })
}
})
}
}
}
})
},
/**
* tab切换
*/
tabSwitch: function (t) {
let idx = 1 * t.currentTarget.dataset.idx;
(idx != 0) && wx.showToast({ title: '配送变更,费用已变化', icon: "none"});
this.setData({
tabIdx: idx
},function(){
this.calcPrice(1);
})
},
/**
* 打开优惠券
*/
show_voucher: function (event) {
var that = this;
var serller_id = event.currentTarget.dataset.seller_id;
var voucher_list = [];
var seller_chose_id = this.data.seller_chose_id;
var seller_chose_store_id = this.data.seller_chose_store_id;
var seller_goods = this.data.seller_goodss;
for (var i in seller_goods) {
var s_id = seller_goods[i].store_info.s_id;
if (s_id == serller_id) {
voucher_list = seller_goods[i].voucher_list;
if (seller_chose_id == 0) {
seller_chose_id = seller_goods[i].chose_vouche.id || 0;
seller_chose_store_id = seller_goods[i].chose_vouche.store_id || 0;
}
}
}
that.setData({
ssvoucher_list: voucher_list,
voucher_serller_id: serller_id,
seller_chose_id: seller_chose_id,
seller_chose_store_id: seller_chose_store_id,
hide_quan: false
})
},
// 选择优惠券
chose_voucher_id: function (event) {
wx.showLoading();
var voucher_id = event.currentTarget.dataset.voucher_id;
var seller_id = event.currentTarget.dataset.seller_id;
var that = this;
var token = wx.getStorageSync('token');
var use_quan_str = seller_id + "_" + voucher_id;
let latitude = wx.getStorageSync('latitude2');
let longitude = wx.getStorageSync('longitude2');
var buy_type = that.data.buy_type;
let soli_id = this.data.soli_id;
var community_id = wx.getStorageSync('community').communityId || '';
app.util.request({
url: 'entry/wxapp/user',
data: {
controller: 'car.checkout',
token,
community_id,
voucher_id,
use_quan_str,
buy_type,
latitude,
longitude,
soli_id
},
dataType: 'json',
method: 'POST',
success: function (res) {
wx.hideLoading();
if(res.data.code ==1){
let seller_goodss = res.data.seller_goodss;
let sel_chose_vouche = '';
for (var i in seller_goodss) {
seller_goodss[i].goodsnum = Object.keys(seller_goodss[i].goods).length;
if (Object.prototype.toString.call(seller_goodss[i].chose_vouche) == '[object Object]') {
sel_chose_vouche = seller_goodss[i].chose_vouche;
}
}
const rdata = res.data;
let current_distance = rdata.current_distance || '';
let current_distance_str = that.changeDistance(current_distance);
let {score,score_for_money,bue_use_score} = rdata;
let h = {};
if(bue_use_score*1<=0) h.use_score = '';
that.setData({
...h,
score: score || 0,
score_for_money: score_for_money || 0,
bue_use_score: bue_use_score || 0,
seller_goodss: seller_goodss,
seller_chose_id: voucher_id,
seller_chose_store_id: seller_id,
hide_quan: true,
goods: rdata.goods,
buy_type: rdata.buy_type || 'dan',
yupay: rdata.can_yupay,
is_yue_open: rdata.is_yue_open,
total_free: rdata.total_free,
sel_chose_vouche: sel_chose_vouche,
current_distance,
current_distance_str
},()=>{
that.calcPrice(1);
})
}
}
})
},
//关闭优惠券
closeCouponModal: function(){
this.setData({
hide_quan: true
})
},
/**
* 计算总额
*/
calcPrice: function(isTabSwitch = 0){
let tdata = this.data;
let {
total_free,
delivery_tuanz_money,
fare_man_shipping_fare_money,
trans_free_toal,
tabIdx, goods,
is_open_vipcard_buy,
is_vip_card_member,
fare_man_delivery_tuanz_fare_money,
pickingup_fare,
localtown_makeup_delivery_money,
buy_type
} = tdata;
total_free *= 1; //合计金额(扣除满减、优惠券,不含运费)
delivery_tuanz_money *= 1; //配送费
fare_man_shipping_fare_money *= 1; //免多少运费
trans_free_toal = trans_free_toal*1;
let tot_price = 0; //计算后合计+运费
// 商品总额
let total_goods_price = 0;
let levelAmount = 0; //等级优惠
for (let gidx of Object.keys(goods)) {
let item = goods[gidx];
total_goods_price += item.total;
if(is_open_vipcard_buy==1&&item.is_take_vipcard==1&&is_vip_card_member==1) {
// 会员优惠
} else if (item.is_mb_level_buy) {
levelAmount += item.total * 1 - item.level_total * 1;
}
}
let total_all = total_goods_price; //总额
// 商品总额+配送费
if(tabIdx==0){
tot_price = total_free;
} else if (tabIdx==1){
// 满免运费
let is_man_delivery_tuanz_fare = tdata.is_man_delivery_tuanz_fare; //是否达到满xx减团长配送费
if (is_man_delivery_tuanz_fare==0) {
tot_price = delivery_tuanz_money + total_free;
} else {
tot_price = total_free + delivery_tuanz_money - fare_man_delivery_tuanz_fare_money*1;
}
total_all += delivery_tuanz_money;
} else if(tabIdx==2) {
// 满免快递费
let is_man_shipping_fare = tdata.is_man_shipping_fare; //是否达到满xx减运费
total_all += trans_free_toal;
if (is_man_shipping_fare == 0) {
tot_price = trans_free_toal + total_free;
} else {
if(buy_type=="pintuan") {
tot_price = trans_free_toal + total_free;
} else {
tot_price = trans_free_toal + total_free - fare_man_shipping_fare_money*1;
}
}
} else if(tabIdx==3) {
// 同城配送
let localtown_shipping_fare_arr = this.data.localtown_shipping_fare_arr;
let total_yl_shipping_fare = localtown_shipping_fare_arr.total_yl_shipping_fare*1 || 0;
let total_shipping_fare = localtown_shipping_fare_arr.total_shipping_fare*1 || 0;
total_all += total_yl_shipping_fare;
//包装费
total_all += pickingup_fare*1 + localtown_makeup_delivery_money*1;
tot_price = total_free + localtown_makeup_delivery_money*1;
tot_price += pickingup_fare*1+total_shipping_fare*1;
} else if (tabIdx==4) {
tot_price = total_free;
}
//使用积分
let use_score = tdata.use_score;
if (isTabSwitch && use_score) {
let score_for_money = tdata.score_for_money * 1;
tot_price = tot_price - score_for_money;
}
let disAmount = 0; //优惠金额
disAmount = (total_all - tot_price*1).toFixed(2);
this.setData({
total_all: total_all.toFixed(2),
disAmount,
tot_price: tot_price.toFixed(2),
total_goods_price: total_goods_price.toFixed(2),
levelAmount: levelAmount.toFixed(2)
})
},
/**
* 订单留言 20190219
*/
bindInputMessage: function (event) {
let commentArr = this.data.commentArr;
let idx = event.currentTarget.dataset.idx;
var val = event.detail.value;
commentArr[idx] = val;
this.setData({ commentArr })
},
/**
* 修改首页列表商品购物车数量
*/
changeIndexList: function(){
let goods = this.data.goods || [];
if(goods.length>0){
goods.forEach((item)=>{
item.option.length == 0 && status.indexListCarCount(item.goods_id, 0);
})
}
},
/**
* 订阅消息
*/
subscriptionNotice: function() {
let that = this;
return new Promise((resolve, reject)=>{
let obj = that.data.need_subscript_template;
let tmplIds = Object.keys(obj).map(key => obj[key]); // 订阅消息模版id
if (wx.requestSubscribeMessage) {
tmplIds.length && wx.requestSubscribeMessage({
tmplIds: tmplIds,
success(res) {
let is_need_subscript = 1;
let acceptId = [];
tmplIds.forEach(item=>{
if (res[item] == 'accept') {
//用户同意了订阅,添加进数据库
acceptId.push(item);
} else {
//用户拒绝了订阅或当前游戏被禁用订阅消息
is_need_subscript = 0;
}
})
if(acceptId.length) {
that.addAccept(acceptId);
}
that.setData({ is_need_subscript })
resolve();
},
fail(err) {
console.log(err)
reject();
}
})
} else {
// 兼容处理
reject();
}
})
},
// 用户点击订阅添加到数据库
addAccept: function (acceptId) {
let token = wx.getStorageSync('token');
let type = acceptId.join(',');
app.util.request({
url: 'entry/wxapp/user',
data: {
controller: 'user.collect_subscriptmsg',
token,
type
},
dataType: 'json',
method: 'POST',
success: function () {}
})
},
handleTimeModal: function(){
let localtown_expected_delivery = this.data.localtown_expected_delivery;
if(localtown_expected_delivery.localtown_expected_delivery_status&&localtown_expected_delivery.localtown_delivery_space_month) {
this.setData({
showAlertTime: !this.data.showAlertTime
})
}
},
selectAlertTime: function(event){
let idx = event.currentTarget.dataset.idx;
console.log(idx)
this.setData({
curAlertTime: idx
})
},
selectAlertDate: function(event){
let idx = event.currentTarget.dataset.idx;
console.log(idx)
let curAlertTime = 0;
if(this.data.localtown_expected_delivery.localtown_delivery_space_month==idx) curAlertTime = -1;
this.setData({
localtown_delivery_space_month: idx,
curAlertTime
})
},
agreePresaleChange: function(e) {
let state = e.detail.value;
console.log('统一支付定金', state);
this.setData({ isAgreePresale: state })
},
hanlePresaleModal: function(e) {
this.setData({
showPresaleDesc: !this.data.showPresaleDesc
})
},
showPresaleAmoutDesc: function(){
wx.showModal({
title: '优惠说明',
content: '优惠金额将在支付尾款时使用',
showCancel: false
})
}
})