king
2021-01-08 da7068bd48791cdee966c786ce0dfd46f6e03df9
src/tabviews/iframe/index.jsx
@@ -1,16 +1,74 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { Button, message } from 'antd'
import MKEmitter from '@/utils/events.js'
import mzhCN from '@/locales/zh-CN/main.js'
import menUS from '@/locales/en-US/main.js'
class Iframe extends Component {
  static propTypes = {
    title: PropTypes.string,
    MenuID: PropTypes.string,    // 菜单Id
    MenuNo: PropTypes.string,    // 菜单参数
    url: PropTypes.string
  }
  state = {
    visible: true,
    dict: localStorage.getItem('lang') !== 'en-US' ? mzhCN : menUS,
    debug: sessionStorage.getItem('debug') === 'true'
  }
  componentDidMount () {
    MKEmitter.addListener('reloadMenuView', this.reloadMenuView)
  }
  /**
   * @description 组件销毁,清除state更新
   */
  componentWillUnmount () {
    this.setState = () => {
      return
    }
    MKEmitter.removeListener('reloadMenuView', this.reloadMenuView)
  }
  reloadMenuView = (menuId) => {
    const { MenuID } = this.props
    if (MenuID !== menuId) return
    this.setState({visible: false}, () => {
      this.setState({visible: true})
    })
  }
  copyMenuNo = (e) => {
    const { MenuNo } = this.props
    e.stopPropagation()
    let oInput = document.createElement('input')
    oInput.value = MenuNo || ''
    document.body.appendChild(oInput)
    oInput.select()
    document.execCommand('Copy')
    oInput.className = 'oInput'
    oInput.style.display = 'none'
    message.success(this.state.dict['main.copy.success'])
  }
  render () {
    return (
      <iframe title={this.props.title} src={this.props.url} />
    )
    const { visible, debug } = this.state
    return (<div>
      {visible ? <iframe title={this.props.title} src={this.props.url} /> : null}
      {debug ? <Button
        icon="copy"
        shape="circle"
        className={'main-copy ifr-copy'}
        onClick={this.copyMenuNo}
      /> : null}
    </div>)
  }
}