import React, { Component } from 'react'
import { connect } from 'react-redux'
import { http } from "@/utils"
import { Popup } from '@/common'
import AddressPopup from './../blessingPreheat/addressPopup/index'
import './index.scss'

@connect(({user}) => (
  {
    uid: user.data.uid || ''
  }
))
class BlessingRank extends Component {
  popupInstance = null
  constructor(props) {
    super(props)
    this.state = {
      rankList: [],
      rules: [
        '1、排行榜名次以2019年11月13日24点七月在线公布的排行榜为准，榜单确认后，得奖小伙伴请及时填写邮寄信息，7个自然日内不填写，视为主动放弃奖品；',
        '2、福气值只在本活动期间享受抽奖、提高中奖概率、购课优化、增加AI水平测试等福利；',
        '3、如有发现恶意刷榜，刷虚假数据等行为将取消其领奖资格；',
        '4、本活动解释权归北京七月在线科技有限公司所有。',
      ],
    }
  }

  componentDidMount() {
    this.fetchRankData()
  }

  fetchRankData = () => {
    http.get(`${API.home}/sys/blessing/ranking`).then(res => {
      const {code, data} = res.data
      if (code === 200) {
        this.setState({
          rankList: data,
        })
      }
    })
  }

  handleToSwitch = (bool) => {
    const {history, uid} = this.props
    if (bool && !uid) {
      history.push('/passport')
    } else {
      if (bool && !this.popupInstance) {
        this.popupInstance = Popup({
          title: '收货信息',
          content: <AddressPopup handleToHide={() => this.handleToSwitch(false)}/>
        })
      } else {
        this.popupInstance.close()
        this.popupInstance = null
      }
    }
  }

  formatString = (str, len) => {
    return str.length > len ? `${str.substr(0, len)}...` : str
  }

  render() {
    const {rankList, rules} = this.state
    return (
      <>
        <div className="rank__banner"></div>
        <div className="rank__body">
          <button className="rank__address" onClick={() => this.handleToSwitch(true)}>填写收货地址></button>
          <div className="rank__table">
            <dl className="rank__table-header">
              <dd className="rank__table-column">排名</dd>
              <dd className="rank__table-column">用户</dd>
              <dd className="rank__table-column">分数</dd>
              <dd className="rank__table-column">奖品</dd>
            </dl>
            {
              rankList.map((item, index) => {
                return (
                  <dl className="rank__table-body" key={index}>
                    <dd className="rank__table-column">
                      {
                        index < 3
                          ? (
                            <i className="rank__table-num" data-num={index + 1}></i>
                          )
                          : index + 1
                      }
                    </dd>
                    <dd className="rank__table-column">
                      <div className="rank__table-user">
                        <i className="rank__table-portrait" style={{backgroundImage: `url(${item.head_image})`}}></i>
                        <span>{this.formatString(item.user_name, 5)}</span>
                      </div>
                    </dd>
                    <dd className="rank__table-column">{item.blessing_value}</dd>
                    <dd className="rank__table-column">{this.formatString(item.prize_name, 7)}</dd>
                  </dl>
                )
              })
            }

          </div>
          <div className="rank__rule">
            <h2 className="rank__rule-title">活动规则</h2>
            {
              rules.map((item, index) => (
                <p className="rank__rule-desc" key={index}>{item}</p>
              ))
            }
          </div>
        </div>
      </>
    )
  }
}

export default BlessingRank
