UNPKG

captain-ui

Version:

有赞vue wap业务组件库

144 lines (125 loc) 3.47 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _yzAes = _interopRequireDefault(require("@youzan/yz-aes")); var _SlideCaptchaBox = _interopRequireDefault(require("./components/SlideCaptchaBox")); var _default2 = { render: function render() { var _vm = this; var _h = _vm.$createElement; var _c = _vm._self._c || _h; return _c('div', { staticClass: "behavior-captcha" }, [_vm._fingerprint !== null ? _c('slide-captcha-box', { class: _vm.className, attrs: { "fingerprint": _vm._fingerprint, "show-type": _vm.showType, "getCaptchaUrl": _vm.getSlideCaptchaUrl, "checkCaptchaUrl": _vm.checkSlideCaptchaUrl, "destroy": _vm.destroy }, on: { "success": _vm.handleSuccess, "fail": _vm.handleFail, "cancel": _vm.handleCancel } }) : _vm._e()], 1); }, name: 'cap-behavior-captcha', components: { 'slide-captcha-box': _SlideCaptchaBox.default }, props: { className: { type: String, default: '' }, // 显示方式 embed:嵌入式 pop:弹窗式 showType: { type: String, default: 'embed' }, // 行为验证码类型 slide:滑动拼图 click:顺序点击 type: { type: String, default: 'slide' }, // 扩展唯一key 设备指纹唯一性为85%,这个参数主要解决剩下15%的问题 uniqueKey: { type: String, default: '' }, destroy: Function, getSlideCaptchaUrl: { type: String, default: function _default() { if (location.host === 'uic') { return '//uic.youzan.com/passport/api/captcha/behavior-captcha.json'; } return '//passport.youzan.com/api/captcha/behavior-captcha.json'; } }, checkSlideCaptchaUrl: { type: String, default: function _default() { if (location.host === 'uic') { return '//uic.youzan.com/passport/api/captcha/check-captcha.json'; } return '//passport.youzan.com/api/captcha/check-captcha.json'; } } }, data: function data() { return { fingerprint: null }; }, computed: { _fingerprint: function _fingerprint() { var fp = this.fingerprint; if (fp && this.uniqueKey) { fp += _yzAes.default.encrypt(this.uniqueKey); } return fp; } }, mounted: function mounted() { var _this = this; var flag = false; // 1秒内获取不到指纹就放弃获取 var timer = setTimeout(function () { if (!flag) { _this.fingerprint = ''; } flag = true; }, 1000); var fingerPrintHandle = function fingerPrintHandle(_ref) { var rdfp = _ref.rdfp; if (!flag) { _this.fingerprint = rdfp; } clearTimeout(timer); flag = true; }; if (!window.fingerprint) { window.fingerprint = { onComplete: fingerPrintHandle }; } else { window.fingerprint.get && window.fingerprint.get().then(fingerPrintHandle); } }, methods: { handleSuccess: function handleSuccess(ticket) { this.$emit('success', ticket); }, handleFail: function handleFail() { this.$emit('fail'); }, handleCancel: function handleCancel() { this.$emit('cancel'); } } }; exports.default = _default2;