UNPKG

qm-bus

Version:

千米公有云业务组件库

75 lines (70 loc) 1.94 kB
import React, { Component } from 'react' import PropTypes from 'prop-types' const { object, array } = PropTypes import { QMConst } from 'qm-ux' const noop = () => undefined export default class Qrcode extends Component { static defaultProps = { url: '', logo: '', short: false, gh: true, } componentWillMount() {} createQrcode() { let target = '' let { user = {}, menu = {}, role = {}, route = {} } = this.context let _scene = user.sceneName || '' switch (_scene) { case 'onlineDistribution': _scene = '云订货' break case 'o2o': _scene = '连锁总部' break case 'onlineMall': _scene = '云商城' break case 'communityStore': _scene = '社区店' break default: _scene = '' } let _menu = (menu || {}).name || '' if (!_menu) { let _name = route.name || '' _menu = _name || '' } let _role = role.name || '' let userId = user.adminId || '' let employee = user.employee ? user.optId : '' let message = this.props['data-gh-name'] let category = _scene + '-' + _role + '-' + _menu let origin = encodeURIComponent(this.props.url) if (this.props.gh) { target = QMConst.HOST['v_app_api'] + `/gh_qrcode.html?url=${origin}&u=${userId}&tag=${message}&e=${employee}&cate=${category}` } else { target = this.props.url } let _logo = encodeURIComponent(this.props.logo || '') if (/^\/\//g.test(target)) { target = location.protocol + target } let _target = encodeURIComponent(target) return ( QMConst.HOST['v_app_api'] + `/api/common/qrcode?origin=${_target}&logo=${_logo}&shortUrl=${this.props.short || false}` ) } render() { return <img src={this.createQrcode()} {...this.props} /> } } Qrcode.contextTypes = { role: object, menu: object, user: object, }