captain-ui
Version:
有赞vue wap业务组件库
354 lines (321 loc) • 9.52 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
require("vant/es/dialog/style");
var _dialog = _interopRequireDefault(require("vant/es/dialog"));
require("vant/es/popup/style");
var _popup = _interopRequireDefault(require("vant/es/popup"));
var _password = _interopRequireDefault(require("./components/password"));
var _payList = _interopRequireDefault(require("./components/pay-list"));
var _qrcode = _interopRequireDefault(require("./components/qrcode"));
var _confirm = _interopRequireDefault(require("./components/confirm"));
var _url = _interopRequireDefault(require("../../common/url"));
var _default2 = {
render: function render() {
var _vm = this;
var _h = _vm.$createElement;
var _c = _vm._self._c || _h;
return _c('div', {
staticClass: "cap-pay"
}, [_c('van-popup', {
attrs: {
"position": "bottom"
},
model: {
value: _vm.showPayView,
callback: function callback($$v) {
_vm.showPayView = $$v;
},
expression: "showPayView"
}
}, [_c('cap-paylist', {
attrs: {
"pay-ways": _vm.payWays,
"loading-pay-way": _vm.loadingPayWay,
"on-pay-item-click": _vm.onPayItemClick
}
})], 1), _c('van-popup', {
staticClass: "cap-pay__password-container",
attrs: {
"close-on-click-overlay": false
},
model: {
value: _vm.showPassword,
callback: function callback($$v) {
_vm.showPassword = $$v;
},
expression: "showPassword"
}
}, [_c('cap-password', {
attrs: {
"close": _vm.closePassword,
"on-confirm": _vm.onPasswordConfirm,
"account": _vm.account,
"pay-way": _vm.selectedPayWay,
"loading": _vm.loadingPayWay.need_password && _vm.showPassword
}
})], 1), _c('van-popup', {
attrs: {
"close-on-click-overlay": false
},
model: {
value: _vm.showConfirm,
callback: function callback($$v) {
_vm.showConfirm = $$v;
},
expression: "showConfirm"
}
}, [_c('cap-confirm', {
attrs: {
"close": _vm.closeConfirm,
"on-confirm": _vm.onConfirmAccept,
"pay-way": _vm.selectedPayWay,
"loading": _vm.loadingPayWay.need_confirm && _vm.showConfirm
}
})], 1), _vm.showQrcodePay ? _c('cap-qrcode-pay', {
attrs: {
"qrcode-url": _vm.qrcodeUrl,
"on-btn-clicked": _vm.onQrcodeBtnClick
},
on: {
"input": _vm.onCloseQrcodePay
}
}) : _vm._e()], 1);
},
name: 'cap-pay',
components: {
'cap-password': _password.default,
'cap-paylist': _payList.default,
'cap-qrcode-pay': _qrcode.default,
'cap-confirm': _confirm.default,
'van-popup': _popup.default
},
props: {
value: Boolean,
account: {
type: String,
default: ''
},
payWays: {
type: Array,
required: true
},
loadingPayWay: {
type: Object,
default: function _default() {
return {};
}
},
onPayWaySelected: {
type: Function,
validator: function validator(value) {
return typeof value === 'function';
}
},
changePasswordUrl: {
type: String,
default: _url.default.wap + '/buyer/auth/changePassword?redirect_uri=' + encodeURIComponent(window.location.href)
},
showQrcodePay: {
type: Boolean,
default: false
},
qrcodeUrl: {
type: String,
default: ''
},
onCloseQrcodePay: {
type: Function,
validator: function validator(value) {
return typeof value === 'function';
},
default: function _default() {
return function () {};
}
},
onQrcodeBtnClick: {
type: Function,
validator: function validator(value) {
return typeof value === 'function';
},
default: function _default() {
return function () {};
}
},
showAfterPayConfirm: {
type: Boolean,
default: false
},
showPassword: {
type: Boolean,
default: false
},
showChangePriceConfirm: {
type: Boolean,
default: false
},
changePriceMsg: {
type: String,
default: ''
},
newPrice: {
type: Number,
default: -1
},
payRiskAdvice: {
type: Object,
default: function _default() {
return {
show: false,
riskAdvice: '银行卡支付异常,请更换支付方式。如果有疑问,请联系客服。',
contactServiceUrl: 'https://help.youzan.com/online/mars/index?from=mars_mp&access_token=',
onConfirmClick: function onConfirmClick() {},
onCancelClick: function onCancelClick() {}
};
}
}
},
data: function data() {
return {
showConfirm: false,
selectedPayWay: {},
showPayView: this.value
};
},
watch: {
value: function value(val) {
// 如果只有一种支付方式的话,立刻唤起支付,不再显示弹层
if (val && this.payWays.length === 1) {
this.$emit('input', false);
this.onPayItemClick(this.payWays[0]);
} else {
this.showPayView = val;
}
},
showPayView: function showPayView(val) {
this.$emit('input', val);
},
showAfterPayConfirm: function showAfterPayConfirm(val) {
if (val) {
this.startShowAfterPayConfirm();
}
},
showChangePriceConfirm: function showChangePriceConfirm(val) {
if (val) {
this.startShowChangePriceConfirm();
}
},
'payRiskAdvice.show': function payRiskAdviceShow(val) {
if (val) {
this.startShowPayRiskAdviceConfirm();
}
}
},
methods: {
closePassword: function closePassword() {
this.$emit('update:show-password', false);
},
closeConfirm: function closeConfirm() {
this.showConfirm = false;
},
onPayItemClick: function onPayItemClick(payWay) {
var _this = this;
this.selectedPayWay = payWay;
if (payWay.need_password) {
this.$emit('update:show-password', true);
return;
}
if (payWay.need_confirm) {
this.showConfirm = true;
return;
}
if (payWay.pay_channel === 'CASH_ON_DELIVERY') {
_dialog.default.confirm({
title: '下单提醒',
message: this.getCODMessage(payWay.pay_channel_name)
}).then(function (action) {
_this.onPayWaySelected({
payWay: payWay
});
}, function (error) {
console.log(error);
});
return;
}
this.onPayWaySelected({
payWay: payWay
});
},
getCODMessage: function getCODMessage(payName) {
var message = '';
switch (payName) {
case '到店付款':
message = '你正在选择到店付款,下单后请自行到店领取并付款。';
break;
// 货到付款
default:
message = '你正在选择货到付款,下单后由商家发货,送货上门并收款。';
}
return message;
},
onPasswordConfirm: function onPasswordConfirm(password) {
this.onPayWaySelected({
payWay: this.selectedPayWay,
password: password
});
},
onConfirmAccept: function onConfirmAccept() {
this.onPayWaySelected({
payWay: this.selectedPayWay
});
},
startShowAfterPayConfirm: function startShowAfterPayConfirm() {
var _this2 = this;
_dialog.default.confirm({
title: '微信支付确认',
message: '若你已付款成功,请点击“已完成支付”;若付款时遇到问题,可选择“其他支付方式”',
confirmButtonText: '已完成支付',
cancelButtonText: '其他支付方式'
}).then(function (action) {
_this2.$emit('update:show-after-pay-confirm', false);
_this2.$emit('confirm:pay-result', action);
}).catch(function (action) {
_this2.$emit('update:show-after-pay-confirm', false);
_this2.$emit('cancel:pay-result', action);
});
},
startShowChangePriceConfirm: function startShowChangePriceConfirm() {
var _this3 = this;
_dialog.default.confirm({
title: '改价提醒',
message: this.changePriceMsg
}).then(function (action) {
_this3.onPayWaySelected({
payWay: _this3.selectedPayWay,
accept_price: 1,
new_price: _this3.newPrice
});
_this3.$emit('confirm:change-price', action);
}).catch(function (action) {
_this3.$emit('cancel:change-price', action);
});
},
startShowPayRiskAdviceConfirm: function startShowPayRiskAdviceConfirm() {
var _this4 = this;
_dialog.default.confirm({
message: this.payRiskAdvice.riskAdvice,
confirmButtonText: '更换支付方式',
cancelButtonText: '联系客服'
}).then(function (action) {
_this4.payRiskAdvice.onConfirmClick();
_this4.$emit('update:pay-risk-advice-show', false);
}).catch(function (action) {
window.location.href = _this4.payRiskAdvice.contactServiceUrl;
_this4.$emit('update:pay-risk-advice-show', false);
_this4.payRiskAdvice.onCancelClick();
});
}
}
};
exports.default = _default2;