qm-bus
Version:
千米公有云业务组件库
75 lines (70 loc) • 1.94 kB
JavaScript
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,
}