captain-ui
Version:
有赞vue wap业务组件库
178 lines (161 loc) • 4.22 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
require("vant/es/toast/style");
var _toast = _interopRequireDefault(require("vant/es/toast"));
require("vant/es/dialog/style");
var _dialog = _interopRequireDefault(require("vant/es/dialog"));
var _vue = _interopRequireDefault(require("vue"));
var _ajax = _interopRequireDefault(require("../../common/ajax"));
/* eslint-disable camelcase */
_vue.default.use(_dialog.default);
var _default = {
render: function render() {
var _vm = this;
var _h = _vm.$createElement;
var _c = _vm._self._c || _h;
return _c('van-dialog', {
staticClass: "captain-image-captcha",
attrs: {
"title": _vm.title,
"show-cancel-button": _vm.showCancelButton,
"confirm-button-text": _vm.confirmText,
"cancel-button-text": _vm.cancelText,
"before-close": _vm.beforeClose
},
model: {
value: _vm.showImageCaptcha,
callback: function callback($$v) {
_vm.showImageCaptcha = $$v;
},
expression: "showImageCaptcha"
}
}, [_c('div', {
staticClass: "captcha-input"
}, [_c('input', {
directives: [{
name: "model",
rawName: "v-model",
value: _vm.captchaCode,
expression: "captchaCode"
}],
attrs: {
"type": "text",
"placeholder": _vm.placeholder
},
domProps: {
"value": _vm.captchaCode
},
on: {
"input": function input($event) {
if ($event.target.composing) {
return;
}
_vm.captchaCode = $event.target.value;
}
}
}), _c('img', {
ref: "imageCaptcha",
attrs: {
"src": _vm.imageCaptchaUrl,
"alt": "验证码"
},
on: {
"click": _vm.refreshImageCaptcha
}
})])]);
},
name: 'cap-image-captcha',
props: {
value: Boolean,
title: {
type: String,
default: '请填写图形验证码'
},
placeholder: {
type: String,
default: '请输入图片验证码'
},
imageCaptchaUrl: {
type: String,
default: 'https://passport.youzan.com/api/captcha/image.png'
},
checkImageCaptchaUrl: {
type: String,
default: 'https://passport.youzan.com/api/captcha/validImageText.json'
},
showCancelButton: {
type: Boolean,
default: true
},
confirmText: {
type: String,
default: '确定'
},
cancelText: {
type: String,
default: '取消'
},
success: Function,
cancel: Function
},
data: function data() {
return {
showImageCaptcha: this.value,
captchaCode: ''
};
},
watch: {
value: function value(val) {
this.showImageCaptcha = val;
},
showImageCaptcha: function showImageCaptcha(val) {
this.$emit('input', val);
}
},
methods: {
handleConfirmClick: function handleConfirmClick(done) {
var _this = this;
if (!this.captchaCode) {
(0, _toast.default)('请输入验证码');
done(false);
return;
}
(0, _ajax.default)({
url: this.checkImageCaptchaUrl,
method: 'POST',
withCredentials: true,
data: {
code: this.captchaCode
}
}).then(function (resp) {
if (resp.code === 0) {
_this.captchaCode = '';
done();
_this.$emit('success');
} else {
(0, _toast.default)(resp.msg || '请求错误');
done(false);
}
}).catch(function (msg) {
(0, _toast.default)(msg || '请求错误');
done(false);
});
},
refreshImageCaptcha: function refreshImageCaptcha() {
var now = new Date().getTime();
this.$refs.imageCaptcha.src = this.imageCaptchaUrl + '?t=' + now;
},
beforeClose: function beforeClose(action, done) {
if (action === 'confirm') {
this.handleConfirmClick(done);
} else {
this.captchaCode = '';
done();
this.$emit('cancel');
}
}
}
};
exports.default = _default;