427 lines
10 KiB
JavaScript
427 lines
10 KiB
JavaScript
var core = getApp().globalData.requirejs("core"),
|
|
that
|
|
import cwxKeyboard from '@/components/cwx-keyboard/cwx-keyboard'
|
|
import rechargeDeductFn from './utils/rechargeDeductFn'
|
|
import creditDeductFn from './utils/creditDeductFn'
|
|
import orderSubmitFn from './utils/orderSubmitFn'
|
|
import moneyChangeFn from './utils/moneyChangeFn'
|
|
import getMerchFn from './utils/getMerchFn'
|
|
import intFn from './utils/intFn'
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
list: {
|
|
realprice: 0.00,
|
|
credit: 0.00,
|
|
money_sub: 0.00,
|
|
deductcredit: 0.00,
|
|
deductprice: 0.00,
|
|
needpay: 0.00,
|
|
deduct_recharge: 0.00,
|
|
deductprice_zs:0.00,
|
|
deductcredit_zs:0.00
|
|
|
|
},
|
|
merch: {},
|
|
mockInputFocusText: ' ',
|
|
showKeyBoard: true,
|
|
showRemarkInput: false,
|
|
merchid: 0,
|
|
use_deductprice: false,
|
|
hideRechargeDeduct: false,
|
|
hideCreditDeduct: false,
|
|
// 是否已经获取公众号openid
|
|
getOpenIDAlready: '',
|
|
credit1: "",
|
|
// 储值卡
|
|
use_deduct_recharge: false,
|
|
recharge: 0,
|
|
submit: "", //提交状态
|
|
min_deduct_credit_price: 0.02,
|
|
on_paying: false,
|
|
option: {},
|
|
//活动赠送金豆
|
|
credit1_hot_set:0,
|
|
credit1_hot_rang:0,
|
|
use_deductprice_hot: false,
|
|
//活动金额范围 大于20才行
|
|
credit1_hot_set_jine:0,
|
|
//授权登录字段
|
|
openid:'',
|
|
ismobile:false,
|
|
//限额
|
|
quota:2000,
|
|
//可抵扣最大金额
|
|
use_max_credit_money:0
|
|
}
|
|
},
|
|
components: {
|
|
cwxKeyboard
|
|
},
|
|
props: {},
|
|
filters: {
|
|
limitDecimal(val) {
|
|
return parseFloat(val).toFixed(2);
|
|
},
|
|
},
|
|
onLoad: function (t) {
|
|
that = this
|
|
this.option = t
|
|
// uni.showLoading({
|
|
// title: '加载中'
|
|
// });
|
|
mockInputFocus()
|
|
intFn.init(that)
|
|
//加载用户openid
|
|
getApp().globalData.util.loginByCode(null, false).then(userInfo => {
|
|
|
|
if(userInfo.mobile==null||userInfo.mobile==''){
|
|
that.setData({
|
|
ismobile:true
|
|
})
|
|
}
|
|
that.setData({
|
|
openid:userInfo.openid
|
|
})
|
|
})
|
|
},
|
|
onShow: function () {
|
|
|
|
},
|
|
onHide: function () {
|
|
that.submit = false;
|
|
that.list = {};
|
|
that.use_deductprice = false;
|
|
uni.removeStorageSync('qr_scan_data');
|
|
this.$refs.clearMoney._handleClearKey();
|
|
},
|
|
methods: {
|
|
/**
|
|
* 检测是否需要跳转其他页面
|
|
* **/
|
|
isNeedGo2OtherPage: function (queryParam) {
|
|
let page = false
|
|
if (!queryParam) {
|
|
queryParam = that.option
|
|
} else {
|
|
return
|
|
}
|
|
let pageParam = '?id=' + queryParam.merchid
|
|
if (queryParam.needGo2MerCredit) {
|
|
page = 'merch/index_credit'
|
|
} else if (queryParam.needGo2MerGoods || queryParam.table_id) {
|
|
page = 'merch/index'
|
|
} else if (queryParam.needGo2MerDetails) {
|
|
page = 'merch/intro'
|
|
} else if (typeof queryParam.cashierid != "undefined" && queryParam.cashierid != "" && queryParam
|
|
.total >= 0.01) {
|
|
that.onMoneyInput(queryParam.total)
|
|
return
|
|
}
|
|
//如果是扫码点餐
|
|
if (queryParam.table_id) {
|
|
pageParam += '&table_id=' + queryParam.table_id
|
|
}
|
|
if (page) {
|
|
uni.navigateTo({
|
|
url: '/pages/' + page + pageParam
|
|
})
|
|
}
|
|
},
|
|
|
|
// 创建线下支付订单
|
|
getList: function (merchid) {
|
|
if (!merchid) {
|
|
uni.hideLoading()
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: '网络开小差啦,重新扫码试试吧!1623124886'
|
|
})
|
|
return
|
|
}
|
|
getApp().globalData.request({
|
|
s: 'Merch_Index.GetMerchData4OfflinePay',
|
|
id: merchid
|
|
}).then(function (merchData) {
|
|
that.hasMerchData2Next(merchData)
|
|
});
|
|
},
|
|
// 获取到商家数据后 进行下一步操作
|
|
hasMerchData2Next: function (merchData) {
|
|
uni.hideLoading()
|
|
let merch = (merchData.data.data)
|
|
//默认金豆最大抵扣
|
|
that.use_max_credit_money=parseFloat(that.credit1*merch.credit_pay_rate).toFixed(2);
|
|
//金豆兑换比例
|
|
|
|
if (!merch) {
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: '网络开小差啦,重新扫码试试吧!1623930867'
|
|
})
|
|
return;
|
|
}
|
|
if (0 == merch.err_code) {
|
|
// 获得当前商家设置信息
|
|
uni.setStorage({
|
|
key: 'cur_offline_merch_data',
|
|
data: merch
|
|
});
|
|
that.quota=merch.quota;
|
|
uni.setNavigationBarTitle({
|
|
title: '向' + merch.merchname + '付款'
|
|
})
|
|
that.min_deduct_credit_price = parseFloat(merch.min_offline_price) + 0.01
|
|
that.min_deduct_credit_price = getApp().globalData.util.numberFloor(that.min_deduct_credit_price)
|
|
// 生成随机数
|
|
const str = merch.credit_give_hot_rang;
|
|
const [min, max] = str.split(',');
|
|
const randomNum = Math.floor(Math.random() * (max - min + 1)) + parseInt(min);
|
|
|
|
let pt_title=["余乐兑平台"];
|
|
if(merch.activity_platform){
|
|
pt_title = JSON.parse(merch.activity_platform);
|
|
}
|
|
|
|
const index = Math.floor(Math.random() * pt_title.length);
|
|
|
|
that.setData({
|
|
merch: merch,
|
|
merchid: merch.id,
|
|
credit1_hot_set: merch.credit_give_hot_set,
|
|
credit1_hot_rang: randomNum,
|
|
activity_platform:pt_title[index]
|
|
})
|
|
|
|
if (merch.pay_need_mobile) {
|
|
getApp().globalData.checkBindMobile()
|
|
}
|
|
// 获取储值卡余额
|
|
that.getUserRecharge()
|
|
// 获取二步动作, 跳转等
|
|
that.isNeedGo2OtherPage()
|
|
} else if (merch && typeof merch.err_code_desc != undefined && merch.err_code_desc) {
|
|
let tipsText = ''
|
|
if (merch && merch.err_code_desc) {
|
|
tipsText += merch.err_code_desc
|
|
}
|
|
uni.hideLoading();
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: tipsText,
|
|
showCancel: false
|
|
})
|
|
} else {
|
|
let tipsText = '网络开小差啦,重新扫码试试吧!1623124887';
|
|
if (merch && merch.err_code_desc) {
|
|
tipsText += merch.err_code_desc;
|
|
}
|
|
uni.hideLoading()
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: tipsText
|
|
})
|
|
}
|
|
},
|
|
|
|
// 获取储值卡和金豆余额
|
|
getUserCredit: function () {
|
|
getApp().globalData.util.loginByCode(null, false).then(userInfo => {
|
|
that.setData({
|
|
credit1: userInfo.credit1
|
|
})
|
|
})
|
|
},
|
|
|
|
// 获取用户储值卡余额
|
|
getUserRecharge: function () {
|
|
getApp().globalData.request({
|
|
s: 'Member_Recharge.getUserRechargeBan',
|
|
userid: uni.getStorageSync('userInfo').id,
|
|
merchid: that.merchid
|
|
}).then(userRecharge => {
|
|
that.recharge = userRecharge.data.data.balance
|
|
})
|
|
},
|
|
//点击付款
|
|
submitFun: function () {
|
|
if(!this.use_deductprice_hot){
|
|
that.setData({
|
|
activity_platform:''
|
|
})
|
|
}
|
|
console.log("---------------------")
|
|
orderSubmitFn.orderSubmit(that)
|
|
},
|
|
/** 检查是否使用了金豆/储值卡抵扣,如果使用了,必须绑定手机号 */
|
|
checkCreditReBindMobile(list) {
|
|
if (list.deductcredit > 0 || list.deduct_recharge > 0) {
|
|
return true
|
|
}
|
|
return false
|
|
},
|
|
// 是否使用金豆抵扣
|
|
useCreditCheckBox: function (e) {
|
|
that.getUserCredit()
|
|
let noUseDeduct = false; // 不使用金豆抵扣
|
|
if (e.detail.value.length) {
|
|
noUseDeduct = true
|
|
}
|
|
this.use_deductprice = noUseDeduct;
|
|
creditDeductFn.modifyCreditDeduct(that)
|
|
},
|
|
// 是否使用赠送金豆活动抵扣
|
|
useCreditCheckBox_hot: function (e) {
|
|
let noUseDeduct = false; // 不使用金豆抵扣
|
|
if (e.detail.value[0]=='1') {
|
|
noUseDeduct = true
|
|
}
|
|
this.use_deductprice_hot = noUseDeduct;
|
|
creditDeductFn.modifyCreditDeduct(that)
|
|
},
|
|
|
|
// 是否使用储值卡
|
|
useRechargeCheckBox: function (e) {
|
|
that.getUserRecharge();
|
|
let noUseDeduct = false; // 不使用储值卡抵扣
|
|
if (e.detail.value.length) {
|
|
noUseDeduct = true
|
|
}
|
|
this.use_deduct_recharge = noUseDeduct
|
|
rechargeDeductFn.modifyRechargeDeduct(that, true)
|
|
},
|
|
|
|
onMoneyInput(e) {
|
|
//用于判断活动大于20元 回头改下
|
|
this.credit1_hot_set_jine=e
|
|
moneyChangeFn.changeEv(e, that)
|
|
},
|
|
toggleKeyboard() {
|
|
|
|
this.showKeyBoard = !this.showKeyBoard
|
|
},
|
|
|
|
showRemarkClick() {
|
|
this.showRemarkInput = true
|
|
},
|
|
|
|
// 显示推广人备注信息
|
|
showSpreadRemark() {
|
|
getApp().globalData.request({
|
|
s: 'Merch_Index.GetMerchData4OfflinePay',
|
|
id: that.merch.id
|
|
}).then(res => {
|
|
uni.showModal({
|
|
title: '提示',
|
|
showCancel: false,
|
|
content: '推广人备注:' + res.data.data.remark_spread
|
|
})
|
|
})
|
|
},
|
|
|
|
// 显示最小现金支付金额提示
|
|
showMiniCreditdeductTips() {
|
|
getApp().globalData.request({
|
|
s: 'Merch_Index.CreditCannotFullDeductTips',
|
|
id: that.merch.id
|
|
}).then(res => {
|
|
uni.showModal({
|
|
title: "提示",
|
|
showCancel: false,
|
|
content: res.data.data
|
|
})
|
|
})
|
|
},
|
|
// 使用数字人民币支付
|
|
useEcnyPay() {
|
|
uni.showModal({
|
|
title: "提示",
|
|
content: that.merch.e_cny_qrurl_psbc_tips,
|
|
showCancel: false
|
|
})
|
|
getApp().globalData.request({
|
|
s: 'Merch_Ecny.ShowDeviceEcnyQrCode',
|
|
merchid: that.merch.id,
|
|
e_cny_qrurl_psbc: that.merch.e_cny_qrurl_psbc
|
|
})
|
|
},
|
|
// 跳转到商家店铺页面
|
|
go2MerchIndex(merchid) {
|
|
// #ifdef H5
|
|
let h5Pla = getApp().globalData.util.getH5Platform()
|
|
if (h5Pla == "H5-ALIPAY") {
|
|
window.location.href = "alipays://platformapi/startapp?appId=2021001187681202&page=/pages/merch/index/index?id=" + merchid
|
|
}
|
|
// #endif
|
|
// #ifdef MP-ALIPAY||MP-WEIXIN
|
|
uni.navigateTo({
|
|
url: '/pages/merch/index/index?id=' + merchid
|
|
})
|
|
// #endif
|
|
},
|
|
//微信获取手机号
|
|
getPhoneNumber(e){
|
|
getApp().globalData.request({
|
|
s: 'Member_User.getPhone',
|
|
code: e.detail.code,
|
|
openid: that.openid,
|
|
platform: 'MP-WEIXIN'
|
|
}).then(function (res) {
|
|
if(res.data.data.result_code=="SUCCESS"){
|
|
that.ismobile=false; //手机按钮隐藏
|
|
that.use_deductprice=true; //复选框勾选
|
|
creditDeductFn.modifyCreditDeduct(that)
|
|
}
|
|
else{
|
|
uni.showToast({
|
|
title:'取消金豆会员抵扣',
|
|
icon:'none'
|
|
})
|
|
}
|
|
return false;
|
|
|
|
});
|
|
|
|
return false;
|
|
},
|
|
//微信获取手机号-平台赠送活动选项
|
|
getPhoneNumber_hot(e){
|
|
getApp().globalData.request({
|
|
s: 'Member_User.getPhone',
|
|
code: e.detail.code,
|
|
openid: that.openid,
|
|
platform: 'MP-WEIXIN'
|
|
}).then(function (res) {
|
|
if(res.data.data.result_code=="SUCCESS"){
|
|
that.ismobile=false; //手机按钮隐藏
|
|
that.use_deductprice_hot=true; //复选框勾选
|
|
creditDeductFn.modifyCreditDeduct(that)
|
|
}
|
|
else{
|
|
uni.showToast({
|
|
title:'取消活动赠送金豆',
|
|
icon:'none'
|
|
})
|
|
}
|
|
return false;
|
|
|
|
});
|
|
|
|
return false;
|
|
},
|
|
} // / methods
|
|
};
|
|
|
|
// 模拟光标
|
|
function mockInputFocus() {
|
|
|
|
setInterval(function () {
|
|
if (that.mockInputFocusText == '0.1') {
|
|
that.mockInputFocusText = '0.5'
|
|
} else {
|
|
that.mockInputFocusText = '0.1'
|
|
}
|
|
}, 1000)
|
|
}
|