Files
2026-04-04 17:27:12 +08:00

239 lines
6.1 KiB
JavaScript
Executable File
Raw Permalink 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.
import {getRechargeConfig, addRecharge} from '@/api/recharge'
import {getMemberInfoById} from '@/api/member'
import {mapGetters} from 'vuex';
export default {
data() {
return {
type: 'member',
//充值卡相关
memberRecharge: [],
rechargeMoney: 0,
rechargeType: 1,
rechargeIndex: 0,
rechargeTypeList: [{
text: '充值套餐',
value: 1
}, {
text: '自定义金额',
value: 2
}],
outTradeNo: '',
isRepeat: false
};
},
computed: {
reward() {
if (this.rechargeType == 1 && this.memberRecharge.length > 0 && this.memberRecharge[this.rechargeIndex]) {
let data = this.memberRecharge[this.rechargeIndex];
if (data.point || data.growth || data.coupon) return true;
}
return false;
},
...mapGetters(['rechargeActive','memberSearchWayConfig'])
},
onLoad() {
uni.hideTabBar();
},
onShow() {
this.create_time = this.$util.timeFormat(parseInt(new Date().getTime() / 1000));
this.addKeyDownEvent();
// 添加组件的键盘监听事件
if (this.$refs.payment) this.$refs.payment.addKeyDownEvent();
this.getMemberRecharge();
},
onHide() {
this.removeKeyDownEvent();
// 移除组件的键盘监听事件
if (this.$refs.payment) this.$refs.payment.removeKeyDownEvent();
},
methods: {
//充值卡相关
getMemberRecharge() {
getRechargeConfig().then(res => {
if (res.code == 0 && res.data) {
this.memberRecharge = res.data;
if (this.memberRecharge.length > 0) {
for (let i in this.memberRecharge) this.memberRecharge[i]['money'] = this.memberRecharge[i]['price'];
} else {
this.rechargeType = 2;
this.rechargeTypeList[0].disable = true;
}
}
});
},
getMemberInfo() {
getMemberInfoById(this.globalMemberInfo.member_id).then(res => {
if (res.code == 0 && res.data) {
this.$store.commit('app/setGlobalMemberInfo', res.data);
} else {
this.$util.showToast({
title: '未获取到会员信息'
});
}
});
},
openMember() {
if (this.$refs.selectMember) {
this.$store.commit('recharge/setActive', 'ShowMember');
this.$refs.selectMember.open(() => {
this.$store.commit('recharge/setActive', 'ShowMemberAfter');
});
setTimeout(() => {
this.$refs.selectMember.inputFocus = true;
}, 200);
}
},
showMember() {
this.$store.commit('recharge/setActive', 'ShowMember');
if (!this.globalMemberInfo) {
if (this.$refs.selectMember) this.$refs.selectMember.open(() => {
this.$store.commit('recharge/setActive', 'ShowMemberAfter');
});
} else {
// 打开会员信息弹出框
this.$store.commit('recharge/setActive', 'ShowMemberAfter');
this.$refs.memberDetailPopup.open();
}
},
pay() {
if (!this.globalMemberInfo || (this.globalMemberInfo && !this.globalMemberInfo.member_id)) {
this.type = 'member';
this.openMember();
return false;
}
if (this.rechargeType == 1 && !this.memberRecharge[this.rechargeIndex]) {
this.$util.showToast({
title: '请选择充值套餐'
});
return;
}
var isValid = /^-?\d+(\.\d{1,2})?$/;
if (this.rechargeType == 2 && !isValid.test(this.rechargeMoney)) {
this.$util.showToast({
title: '请输入正确的充值金额'
});
return;
}
let data = {
member_id: this.globalMemberInfo.member_id
};
if (this.rechargeType == 1) {
data.sku_array = [{
recharge_id: this.memberRecharge[this.rechargeIndex].recharge_id
}];
} else {
data.sku_array = [{
money: this.rechargeMoney
}];
}
data.sku_array = JSON.stringify(data.sku_array);
this.$store.commit('recharge/setActive', 'OrderCreate');
if (this.isRepeat) return;
this.isRepeat = true;
addRecharge(data).then(res => {
this.isRepeat = false;
if (res.code == 0) {
this.outTradeNo = res.data.out_trade_no;
this.type = 'pay';
} else {
this.$util.showToast({
title: res.message
});
}
});
},
cancelPayment() {
this.type = 'member';
},
paySuccess() {
this.type = 'member';
this.outTradeNo = '';
this.getMemberInfo();
this.$store.commit('recharge/setActive', '');
this.isRepeat = false;
},
/**
* 添加键盘监听事件
*/
addKeyDownEvent() {
// #ifdef H5
// 绑定监听事件
window.addEventListener("keydown", this.listenerKeyDown, true);
// 监听F1~F12BACKSPACE
window.POS_HOTKEY_CALLBACK = (control, code) => {
this.posHotKeyCallback(code);
};
// #endif
},
/**
* 移除键盘监听事件
*/
removeKeyDownEvent() {
// #ifdef H5
window.removeEventListener("keydown", this.listenerKeyDown, true);
delete window.POS_HOTKEY_CALLBACK;
// #endif
},
listenerKeyDown(e) {
var code = e.code;
// console.log('KeyDown', this.type, code, this.rechargeActive, e);
if (this.rechargeActive == '' && code == 'KeyM') {
// 选择会员键盘快捷键【M】
this.openMember();
} else if(this.rechargeActive == 'ShowMember' && this.memberSearchWayConfig.way == 'list'){
// 按照会员列表进行搜索
if (code == 'Enter' || code == 'NumpadEnter') {
if(this.$refs.selectMember.searchFinish && this.$refs.selectMember.memberId){
this.$refs.selectMember.getMemberInfo(this.$refs.selectMember.memberId);
}
}
} else if (this.rechargeActive == 'ShowMemberAfter' || (this.type == 'member' && this.rechargeActive == '')) {
// 活跃窗口:设置会员后,选择充值金额
if (code == 'Enter' || code == 'NumpadEnter') {
this.pay();
}
}
},
/**
* 监听键盘事件回调
* @param {Object} code
*/
posHotKeyCallback(code) {
if (code == 'BACKSPACE') {
// 退格键
if (this.rechargeActive == 'OrderCreate') {
if (this.$refs.payment) {
if (this.$refs.payment.active == 'openMoneyPopup') {
this.$refs.payment.deleteCode();
}
}
}
} else {
// 触发左侧菜单按键回调
this.menuTriggerKeyCodeCallBack(code);
}
}
}
}