You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
zhishifufei_php/public/pc/components/my/member/index.js

226 lines
8.0 KiB

define([
'swiper',
'qrcode',
'api/auth',
'text!./index.html',
'css!./index.css'
], function (Swiper, QRCode, authApi, html) {
return {
filters: {
priceReal: function (price) {
return parseFloat(price);
}
},
inject: ['getUserInfo'],
props: {
isLogin: {
type: Boolean,
default: false
},
isAlipay: {
type: Boolean,
default: true
},
isWechat: {
type: Boolean,
default: true
},
userInfo: {
type: Object,
default: function () {
return {};
}
}
},
data: function () {
return {
exchangeVisible: false,
interests: [],
description: [],
memberShipList: [],
qrcode: null,
member_code: '',
member_pwd: '',
filterData: {
type: 0,
payType: 'weixin'
},
isReset: true,
count: 0
};
},
watch: {
isLogin: function (value) {
if (value) {
this.merber_data();
this.member_ship_lists();
}
},
filterData: {
handler: function () {
this.isReset = true;
},
deep: true
}
},
mounted: function () {
this.$nextTick(function () {
this.swiper = new Swiper('.swiper-container', {
slidesPerView: 'auto',
spaceBetween: 30,
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev'
},
observer: true,
observeParents: true,
observeSlideChildren: true
});
if (!this.isWechat) {
if (this.isAlipay) {
this.filterData.payType = 'zhifubao';
} else {
this.filterData.payType = '';
}
}
});
},
methods: {
merber_data: function () {
authApi.merber_data().then(function (res) {
var data = res.data;
this.interests = data.interests;
this.description = data.description;
}.bind(this));
},
member_ship_lists: function () {
authApi.member_ship_lists().then(function (res) {
this.memberShipList = res.data;
}.bind(this));
},
// 支付
create_order: function () {
var vm = this;
authApi.create_order({
special_id: this.memberShipList[this.filterData.type].id,
pay_type_num: 10,
payType: this.filterData.payType
}).then(function (res) {
switch (res.data.status) {
case "PAY_ERROR":
case 'ORDER_EXIST':
case 'ORDER_ERROR':
vm.$message.error(res.msg);
break;
case 'WECHAT_PAY':
vm.isReset = false;
if (vm.qrcode) {
vm.qrcode.makeCode(res.data.result.jsConfig);
} else {
vm.$nextTick(function () {
vm.qrcode = new QRCode(vm.$refs.qrcode, res.data.result.jsConfig);
});
}
vm.testing_order_state(res.data.result.orderId);
break;
case 'ZHIFUBAO_PAY':
vm.isReset = false;
if (vm.qrcode) {
vm.qrcode.makeCode(res.data.result.jsConfig);
} else {
vm.$nextTick(function () {
vm.qrcode = new QRCode(vm.$refs.qrcode, res.data.result.jsConfig);
});
}
vm.testing_order_state(res.data.result.orderId);
break;
case 'SUCCESS':
vm.member_ship_lists();
vm.$message.success(res.msg);
if (vm.pay_type === 'yue') {
vm.dialogVisible = true;
}
vm.getUserInfo();
break;
}
}).catch(function (err) {
vm.$message.error(err.msg);
});
},
createQRCode: function (text) {
this.qrcode = new QRCode(document.getElementById("qrcode"), {
text: text,
width: 250,
height: 250,
colorDark: "#000000",
colorLight: "#ffffff",
correctLevel: QRCode.CorrectLevel.H
});
},
confirm_activation: function () {
var vm = this;
if (!this.member_code) {
return this.$message.warning('请输入卡号');
}
if (!this.member_pwd) {
return this.$message.warning('请输入卡密');
}
authApi.confirm_activation({
member_code: this.member_code,
member_pwd: this.member_pwd
}).then(function (res) {
vm.$message.success(res.msg);
vm.exchangeVisible = false;
vm.member_code = '';
vm.member_pwd = '';
vm.getUserInfo();
}).catch(function (err) {
vm.$message.error(err.msg);
});
},
// 用户信息
user_info: function () {
var vm = this;
authApi.user_info().then(function (res) {
sessionStorage.setItem('userInfo', JSON.stringify(res.data));
vm.userInfo = res.data;
}).catch(function (err) {
vm.$message.error(err.msg);
});
},
payAfterClick: function () {
this.isReset = true;
this.getUserInfo();
},
// 扫码回调
testing_order_state: function (orderId) {
var vm = this;
if (vm.timer) {
return;
}
this.timer = setInterval(function () {
vm.count++;
authApi.testing_order_state({
order_id: orderId,
type: 3
}).then(function (res) {
if (res.data == 1) {
clearInterval(vm.timer);
vm.count = 0;
vm.timer = null;
vm.payAfterClick();
}
}).catch(function (err) {
console.error(err.msg);
});
if (vm.count == 12) {
clearInterval(vm.timer);
vm.count = 0;
vm.timer = null;
}
}, 5000);
}
},
template: html
};
});