treasure-box-mybox.d4cf42ab.chunk.js.map 75.6 KB
Newer Older
1
{"version":3,"sources":["components/activity/treasure-box/common/createSuccess/index.js","components/activity/treasure-box/myTreasure/team.js","components/activity/treasure-box/myTreasure/prize.js","components/activity/treasure-box/common/splitSuccess/index.js","components/activity/treasure-box/myTreasure/mask.js","components/activity/treasure-box/myTreasure/index.js","common/addressPopup/index.js","common/bindPhone/index.js","common/confirmPhone/index.js"],"names":["common_createSuccess","props","console","log","_props$data","data","_props$data$team_num","team_num","_props$data$lack_memb","lack_member","_props$data$member","member","handleToInvite","members","Array","fill","react_default","a","createElement","className","map","item","index","_member","key","src","alt","type","onClick","TreasureTeam","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","initMemberInfo","params","arguments","length","undefined","_this$props","userInfo","arr","JSON","stringify","len","push","setState","team","assign","currentMember","uid","filter","computedClass","id","is_open","state","classnames","active","computedBg","val","backgroundImage","concat","toCheckPrize","_this$state$team","_this$state$team$memb","nextProps","oldData","newData","_this2","_this$state","_this$state$team2","is_captain","status","treasure_code","_this$state$team2$mem","_this$props2","toSplitTreasure","children","data-skip","style","head_img","data-layout","Fragment","getParam","href","data-direction","prize_name","Component","myTreasure_prize","bind_phone","bind_address","prize_type","handleToBindPhone","handleToBindAddress","toComposeCoupon","toUseCoupon","toCourseList","toFecthMoney","SplitSuccess","continueSplitTreasure","ids","successSplitTreasure","http","post","API","home","then","res","_res$data","code","setTimeout","_this$props2$data","_this$props2$data$mem","prize_img","avatar","prize","Root","document","querySelector","Mask","el","appendChild","removeChild","visible","handleToHide","ReactDOM","createPortal","MyTreasure","connect","_ref","country","user","popupInstance","initPrizeName","fetchCurrentTeamId","prizeName","judgeIsHaveId","owner_uid","isShowBindPhone","from","isPhone","handleToConfirmPhone","bindInfo","handleToHideWindow","confirmInfo","isConfirm","successBindPhone","teams","splitInfo","teamId","showSuccessSplit","prize_data","initNoSplitInfo","isSplit","isAddress","successBindAddress","_this$state2","fetchMyTreasure","get","_res$data2","rule","isArray","isEmpty","captain_uid","fetchActivityStatus","_res$data3","Number","treasure_stage","history","startCountDown","isEnd","treasureTime","treasure_stop_date","seconds","timer","clearInterval","setInterval","window","location","toOrganizeTeam","_this$props$userInfo$","_res$data4","isCreate","createInfo","SendMessageToApp","param","title","nextProp","_this$state3","_this$state3$splitInf","_this$state3$confirmI","_this$state3$confirmI2","_this$state3$confirmI3","browser","isAndroidApp","isIOSApp","common","arrow","myTreasure_team","splitInstance","myTreasure_mask","common_splitSuccess","bindPhone","hideBindPhone","desc","confirmPhone","handleToCancle","addressPopup","skip","tip","dangerouslySetInnerHTML","__html","AddressPopup","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_3__","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__","fetchUserAddress","addressInfo","msg","name","phone","address","isLoading","handleToSubmit","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_2__","act_type","antd_mobile_lib_toast__WEBPACK_IMPORTED_MODULE_1___default","info","_this$props$skip","react__WEBPACK_IMPORTED_MODULE_8___default","formik__WEBPACK_IMPORTED_MODULE_10__","initialValues","validate","errors","test","validateOnBlur","validateOnChange","onSubmit","values","render","_ref2","color","_ref3","field","placeholder","_ref4","_ref5","data-status","BindPhone","captchaInstance","initCountryInfo","toFetchCountryNum","getCaptchaInstance","instance","onVerify","validationData","handleToSend","tel","isFirst","isTimer","_this$state$country$n","num","antd_mobile_lib_toast__WEBPACK_IMPORTED_MODULE_2___default","reset","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__","area_code","phone_num","errno","toBindPhone","_this$state2$accountI","accountInfo","_this$state2$country$","mobile","is_valid","tip_info","_this$props3","_this$props3$skip","formik__WEBPACK_IMPORTED_MODULE_9__","setStatus","setSubmitting","_ref4$values","data-type","_common_Captcha_ali__WEBPACK_IMPORTED_MODULE_11__","getInstance","mb","_ref6","ConfirmPhone","continueBindPhone","_this$props2$bindInfo","_this$props2$skip","data-plat"],"mappings":"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","file":"mrstatic/js/treasure-box-mybox.d4cf42ab.chunk.js","sourcesContent":["import React from 'react';\nimport './index.scss';\n\nexport default (props) => {\n  console.log(props);\n  const { \n    data: {\n      team_num = 1,\n      lack_member = 4,\n      member = [],\n    },\n    handleToInvite\n  } = props;\n  const members = new Array(5).fill({});\n  return (\n    <div className=\"team-success\">\n      <h2 className=\"team-success__title\">创建成功</h2>\n      <p className=\"team-success__tip\">\n        {<span>{team_num}</span>}号队伍 还差{<span>{lack_member}</span>}名队员即可获得宝箱哦~\n      </p>\n      <i className=\"team-success__icon\"></i>\n      <ul className='team-success__member members'>\n        {\n          members.map((item, index) => {\n            const _member = member[index]\n            return (\n              <li className=\"member-item\" key={index}>\n                {\n                  _member && _member['is_captain'] && <sup className=\"member-item__captain\">队长</sup>\n                }\n                <img\n                  className=\"member-item__avatar\"\n                  src={\n                    _member\n                      ? _member['head_img']\n                      : \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/not-joined-placeholder.png\"\n                  }\n                  alt=\"\"/>\n              </li>\n            );\n          })\n        }\n      </ul>\n      <button type={'button'} className=\"team-success__button\" onClick={handleToInvite}>邀请好友加入队伍</button>\n    </div>\n  )\n}","import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport { Link } from 'react-router-dom';\nimport './team.scss';\nimport { getParam } from \"@/utils\"\n\nclass TreasureTeam extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      team: {},\n      currentMember: {}\n    };\n  }\n\n  componentDidMount() {\n    this.initMemberInfo();\n  }\n\n  componentWillReceiveProps(nextProps) {\n    const { data: oldData } = this.props;\n    const { data: newData } = nextProps;\n    if(newData.is_open != oldData.is_open) {\n      this.initMemberInfo(newData);\n    }\n  }\n\n  initMemberInfo = (params = {}) => {\n    const { data, userInfo } = this.props;\n    const arr = JSON.stringify(params) !== '{}'? params: data;\n    let member = arr.member;\n    let len = member.length - 5;\n    for(; len < 0; len++) {\n      member.push({});\n    }\n    this.setState({\n      team: Object.assign({}, arr, {\n        member\n      }),\n      currentMember: userInfo.uid? member.filter(item => item.uid == userInfo.uid)[0] : {}\n    });\n  }\n\n  computedClass = (id) => {\n    const { data: { is_open } } = this.props;\n    const { currentMember } = this.state;\n    return classnames(\n      'team-member__item',\n      {\n        'active': id === currentMember.uid && is_open,\n      }\n    );\n  }\n\n  computedBg = (val) => {\n    return val? {\n      backgroundImage: `url(${val})`\n    } : {};\n  }\n\n  // 查看队友的奖品,条件:宝箱已拆\n  toCheckPrize = (id) => {\n    const { team: { is_open, member = []} } = this.state;\n    if(is_open) {\n      const data = member.filter(item => item.uid === id);\n      this.setState({\n        currentMember: data[0]\n      });\n    }\n  }\n\n  render() {\n    const {\n      team: {\n        is_captain,\n        status,\n        team_num,\n        lack_member,\n        is_open,\n        treasure_code,\n        member = [],\n      },\n      currentMember\n    } = this.state;\n    const {\n      toSplitTreasure,\n      userInfo,\n      children\n    } = this.props;\n    return (\n      <div className=\"team-container\" data-skip=\"team\">\n        {\n          !is_captain &&\n          <i className=\"team-friend\">友</i>\n        }\n\n        {/* 组队状态 */}\n        {\n          status === 1\n          ? <i className=\"team-status\">组队中..</i>\n          : <i className=\"team-decorate\"></i>\n        }\n\n        {/* 队伍类型 */}\n        {\n          is_captain\n          ? <h2 className=\"team-title\">{team_num}号队伍</h2>\n          : <h2 className=\"team-title\">好友队伍</h2>\n        }\n\n\n        {/* 队员情况 */}\n        {\n          status === 1\n          ? <p className=\"team-desc\">还差{lack_member}名队员即可获得宝箱哦~</p>\n          : <p className=\"team-desc\">组队成功</p>\n        }\n        <div className=\"team-member\">\n          {\n            member.map((item, index) => (\n              <div\n                className={this.computedClass(item.uid)}\n                onClick={() => this.toCheckPrize(item.uid)}\n                key={index}\n                style={this.computedBg(item.head_img)}\n              >\n                {\n                  item.is_captain &&\n                  <span className=\"team-member__captain\">队长</span>\n                }\n              </div>\n            ))\n          }\n        </div>\n        <div className=\"team-footer\" data-layout={is_open? 'column': 'row'}>\n          {/* 队伍未满 */}\n          {\n            status === 1 &&\n            <>\n              {\n                getParam('version')\n                  ? is_captain\n                    ? <a className=\"team-button\" href={`https://h5.julyedu.com/box/landing?treasure_code=${treasure_code}&origin=1&version=${getParam('version')}`}>继续邀请队友</a>\n                    : <a className=\"team-button\" href={`https://h5.julyedu.com/box/landing?treasure_code=${treasure_code}&origin=2&version=${getParam('version')}`}>帮好友完成组队</a>\n                  : is_captain\n                    ? <a className=\"team-button\" href={`https://h5.julyedu.com/box/landing?treasure_code=${treasure_code}&origin=1`}>继续邀请队友</a>\n                    : <a className=\"team-button\" href={`https://h5.julyedu.com/box/landing?treasure_code=${treasure_code}&origin=2`}>帮好友完成组队</a>\n              }\n            </>\n          }\n\n          {/* 可拆状态 */}\n          {\n            (status === 2 && !is_open) &&\n            <>\n              <span className=\"team-icon\" data-direction=\"left\"></span>\n              <span className=\"team-button--split\" onClick={toSplitTreasure}></span>\n              <span className=\"team-icon\" data-direction=\"right\"></span>\n            </>\n          }\n\n          {/* 已拆状态 */}\n          {\n            (status === 2 && is_open) &&\n            <>\n              {\n                currentMember.prize_name\n                ? <p className=\"team-prize\">{currentMember.prize_name}</p>\n                : <p className=\"team-prize\">尚未开宝箱</p>\n              }\n              {\n                currentMember.uid == userInfo.uid\n                ? children\n                : null\n              }\n            </>\n          }\n        </div>\n      </div>\n    )\n  }\n}\n\nexport default TreasureTeam;\n","import React from 'react';\nimport './prize.scss';\n\nexport default (props) => {\n  const { \n    data: {\n      bind_phone, \n      bind_address, \n      prize_type,\n    },\n    handleToBindPhone,\n    handleToBindAddress,\n    toComposeCoupon,\n    toUseCoupon,\n    toCourseList,\n    toFecthMoney,\n  } = props;\n  return (\n    <>\n      {/* 第一:是否需要绑定手机号 */}\n      {\n        bind_phone &&\n        <a className=\"team-result\" onClick={handleToBindPhone}>\n          <span>绑定手机号</span>\n        </a>\n      }\n\n      {/* 第二:是否需要填写地址 */}\n      {\n        (!bind_phone && bind_address) &&\n        <a className=\"team-result\" onClick={handleToBindAddress}>\n          <span>查看/修改收货信息</span>\n        </a>\n      }\n\n      {/* 第三:奖品,实物 */}\n      {\n        (!bind_phone && !bind_address && prize_type === 1) &&\n        <a className=\"team-result\" onClick={handleToBindAddress}>\n          <span>查看/修改收货信息</span>\n        </a>\n      }\n\n      {/* 第三:奖品,代金券碎片 */}\n      {\n        (!bind_phone && !bind_address && prize_type === 6) &&\n        <a className=\"team-result\" onClick={toComposeCoupon}>\n          可合成代金券在购课时使用,\n          <span>去合成</span>\n        </a>\n      }\n\n      {/* 第三:奖品,指定课程代金券 */}\n      {\n        (!bind_phone && !bind_address && prize_type === 3) &&\n        <a className=\"team-result\" onClick={toUseCoupon}>\n          已发放至您的账户,\n          <span>去使用</span>\n        </a>\n      }\n\n      {/* 第三:奖品,通用课程代金券 */}\n      {\n        (!bind_phone && !bind_address && prize_type === 4) &&\n        <a className=\"team-result\" onClick={toCourseList}>\n          已发放至您的账户,\n          <span>去使用</span>\n        </a>\n      }\n\n      {/* 第三:奖品,现金红包 */}\n      {\n        (!bind_phone && !bind_address && prize_type === 7) &&\n        <a className=\"team-result\" onClick={toFecthMoney}>\n          已存入您的账户,\n          <span>去提现</span>\n        </a>\n      }\n\n      {/* 第三:奖品,线上课程 */}\n      {\n        (!bind_phone && !bind_address && prize_type === 2) &&\n        <a className=\"team-result\">已发放至您的账户</a>\n      }\n\n      {/* 第三:奖品,任意线上课程兑换券 */}\n      {\n        (!bind_phone && !bind_address && prize_type === 5) &&\n        <a className=\"team-result\">无法领取请添加微信:julyedukefu10\n        </a>\n      }\n    </>\n  )\n}","import React, { Component } from 'react';\nimport { http } from '@/utils';\nimport './index.scss';\n\nclass SplitSuccess extends Component {\n\n  computedBg = (val) => {\n    return val? {\n      backgroundImage: `url(${val})`\n    } : {};\n  }\n\n  continueSplitTreasure = () => {\n    const { ids, successSplitTreasure, handleToBindPhone, handleToBindAddress } = this.props;\n    const params = ids[0];\n    http.post(`${API.home}/sys/split_treasure`, params).then(res => {\n      const { code, data } = res.data;\n      if(code === 200) {\n        successSplitTreasure(data);\n        if(data.bind_phone) {\n          setTimeout(() => {\n            handleToBindPhone(data.id);\n          }, 500);\n        }else if(data.bind_address) {\n          setTimeout(() => {\n            handleToBindAddress(data.id, data.prize_name);\n          }, 500);\n        }\n      }else if(code === 12000) {\n        // 请先绑定手机号再拆宝箱\n        handleToBindPhone();\n      }else if(code === 12001) {\n        // 请先填写收货地址再拆宝箱\n        handleToBindAddress();\n      }\n    });\n  }\n\n  render() {\n    const { \n      ids,\n      data: {\n        member = [],\n        prize_img,\n        prize_name,\n      },\n      handleToInvite,\n      children,\n    } = this.props;\n    return (\n      <div data-skip=\"split\">\n        <h2 className=\"split-success__title\">恭喜你获得</h2>\n        <div className=\"split-success__image\">\n          <img src={prize_img} alt=\"\"/>\n        </div>\n        <p className=\"split-success__prize\">{prize_name}</p>\n\n        {children}\n\n        <div className=\"split-success__member\">\n          {\n            member.map((item, index) => (\n              <div className=\"member-item\" key={index}>\n                <span className=\"member-item__avatar\" style={this.computedBg(item.avatar)}>\n                  {\n                    item.is_captain && <i className=\"member-item__captain\">队长</i>\n                  }\n                </span>\n                {\n                  item.prize\n                  ? <span className=\"member-item__prize\">{item.prize}</span>\n                  : <span className=\"member-item__prize\">尚未开宝箱</span>\n                }\n              </div>\n            ))\n          }\n        </div>\n        {\n          ids.length > 0\n          ? <button className=\"split-success__jump\" onClick={this.continueSplitTreasure}>继续开宝箱</button>\n          : <button className=\"split-success__jump\" onClick={handleToInvite}>继续组队开宝箱</button>\n        }\n      </div>\n    );\n  }\n}\n\nexport default SplitSuccess;","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport classnames from 'classnames';\nimport './mask.scss';\n\nconst Root = document.querySelector('body');\n\nclass Mask extends Component {\n\n  constructor(props) {\n    super(props);\n    if(!this.el) {\n      this.el = document.createElement('div');\n    }\n  }\n\n  componentDidMount() {\n    Root.appendChild(this.el);\n  }\n\n  componentWillUnmount() {\n    Root.removeChild(this.el);\n  }\n\n  render() {\n    const { visible, handleToHide, className } = this.props;\n    if(visible) {\n      return ReactDOM.createPortal(\n        (\n          <div className=\"mask\">\n            <div className={classnames(\"mask-content\", className)}>\n              {this.props.children}\n            </div>\n            <div className=\"mask-footer\">\n              <i className=\"mask-button__close\" onClick={handleToHide}></i>\n            </div>\n          </div>\n        ),\n        this.el\n      );\n    }else {\n      return null;\n    }\n  }\n}\n\nexport default Mask;","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { HeaderBar } from '@common'\nimport AddressPopup from '@common/addressPopup/index'\nimport BindPhone from '@common/bindPhone/index'\nimport ConfirmPhone from '@common/confirmPhone/index'\nimport CreateSuccess from './../common/createSuccess/index'\nimport TreasureTeam from './team'\nimport PrizeStatus from './prize'\nimport SplitSuccess from './../common/splitSuccess/index'\nimport { http, getParam, SendMessageToApp, browser } from '@/utils'\nimport Mask from './mask'\nimport './index.scss'\n\n@connect(({country, user}) => ({\n  country,\n  userInfo: user.data\n}))\nclass MyTreasure extends Component {\n  popupInstance = null\n\n  constructor(props) {\n    super(props)\n    this.state = {\n      isEnd: false,\n      isEmpty: false,\n      seconds: 3,\n      teams: [],\n      ids: [], // 未拆宝箱统计\n      bindInfo: {}, // 绑定手机号冲突信息\n      isPhone: false,\n      isAddress: false,\n      isConfirm: false,\n      confirmInfo: {},\n      isSplit: false,\n      isCreate: false,\n      createInfo: {},\n      prizeName: '', // 当前商品的名字\n      treasureTime: '', // 宝箱活动结束时间\n    }\n  }\n\n  componentDidMount() {\n    this.fetchMyTreasure()\n    this.fetchActivityStatus()\n    document.title = '粽子节,开宝箱免费学AI课程,现金红包,京东购物卡送不停!-七月在线';\n  }\n\n  componentWillReceiveProps(nextProp) {\n    const {history} = this.props\n    const {userInfo} = nextProp\n    if (!userInfo.uid) {\n      history.push('/passport')\n    }else {\n      this.fetchMyTreasure();\n    }\n  }\n\n  // 页面加载时,初始化当前需要绑定手机号的奖品名字\n  initPrizeName = (params) => {\n    const key = this.fetchCurrentTeamId(params)\n    const data = params.filter(item => item.id == key)\n    if (data.length > 0) {\n      this.setState({\n        prizeName: data[0]['prize_name']\n      })\n    }\n  }\n\n  // 页面加载时,是否需要拆宝箱\n  judgeIsHaveId = (data) => {\n    const id = getParam('id')\n    if (id) {\n      const newData = data.filter(item => item.id == id)\n      if (newData.length > 0) {\n        const params = {\n          team_num: newData[0]['team_num'],\n          owner_uid: newData[0]['captain_uid']\n        }\n        this.toSplitTreasure(params)\n      }\n    }\n  }\n\n  // 获取当前需要绑定手机的队伍id,当拆到需要绑定手机号/地址的宝箱时,如果不进行绑定则无法拆下一个\n  fetchCurrentTeamId = (data = []) => {\n    const arr = data.filter(item => item.is_open && (item.bind_phone || item.bind_address))\n    if (arr.length > 0) {\n      return arr[0]['id']\n    } else {\n      return ''\n    }\n  }\n\n  // 页面加载时,是否是从选择区号页面过来的\n  // TODO,当同时展示拆宝箱成功弹窗和绑定手机号弹窗时,选择区号返回时未展示拆宝箱成功弹窗(和产品确认,后续优化)\n  isShowBindPhone = (data) => {\n    const {country} = this.props\n    if (country.from) {\n      const id = this.fetchCurrentTeamId(data)\n      this.handleToBindPhone(id)\n    }\n  }\n\n  // 绑定手机号--展示\n  handleToBindPhone = (id) => {\n    this.setState({\n      isPhone: true,\n    })\n  }\n\n  // 绑定手机号--确认\n  handleToConfirmPhone = (params, bindInfo) => {\n    this.handleToHideWindow('isPhone')\n    this.setState({\n      confirmInfo: {\n        params,\n        bindInfo,\n      },\n      isConfirm: true,\n    })\n  }\n\n  // 绑定手机号--成功\n  successBindPhone = () => {\n    this.setState({\n      isPhone: false,\n      isConfirm: false,\n    })\n    const {teams, splitInfo} = this.state\n    const teamId = this.fetchCurrentTeamId(teams)\n    const data = teams.map(item => {\n      if (item.id == teamId) {\n        if (item.bind_address) {\n          this.handleToBindAddress()\n        }\n        return Object.assign({}, item, {\n          bind_phone: false,\n        })\n      }\n      return item\n    })\n    this.setState({\n      teams: data,\n      splitInfo: Object.assign({}, splitInfo, {\n        bind_phone: false\n      })\n    })\n  }\n\n  // 拆宝箱--拆\n  toSplitTreasure = (params) => {\n    http.post(`${API.home}/sys/split_treasure`, params).then(res => {\n      const {code, data} = res.data\n      if (code === 200) {\n        // 拆宝箱弹窗--成功\n        this.showSuccessSplit(data)\n\n        // 更新队伍状态\n        this.successSplitTreasure(data)\n        if (data.bind_phone) {\n          setTimeout(() => {\n            this.handleToBindPhone(data.id)\n          }, 500)\n        } else if (data.bind_address) {\n          setTimeout(() => {\n            this.handleToBindAddress(data.id, data.prize_name)\n          }, 500)\n        }\n      } else if (code === 12000) {\n        // 绑定手机号\n        this.handleToBindPhone()\n      } else if (code === 12001) {\n        // 绑定地址\n        this.handleToBindAddress()\n      }\n    })\n  }\n\n  // 拆宝箱--成功,更新数据\n  successSplitTreasure = (params) => {\n    const {userInfo} = this.props\n    const {teams} = this.state\n    const data = teams.map(item => {\n      if (item.id == params.id) {\n        return Object.assign({}, item, {\n          bind_phone: params.bind_phone,\n          bind_address: params.bind_address,\n          is_open: true,\n          prize_type: params.prize_type,\n          prize_data: params.prize_data,\n          member: item.member.map(val => {\n            if (val.uid == userInfo.uid) {\n              return Object.assign({}, val, {\n                is_open: true,\n                prize_name: params.prize_name\n              })\n            }\n            return val\n          })\n        })\n      } else {\n        return item\n      }\n    })\n    this.initNoSplitInfo(data)\n    this.setState({\n      teams: data,\n      splitInfo: params,\n      prizeName: params.prize_name\n    })\n  }\n\n  // 拆宝箱--成功,展示弹窗\n  showSuccessSplit = (data) => {\n    this.setState({\n      isSplit: true,\n      splitInfo: data\n    })\n  }\n\n  // 绑定地址--展示\n  handleToBindAddress = (id, prizeName = '') => {\n    if (id) {\n      if(prizeName) {\n        this.setState({\n          prizeName\n        })\n      }else {\n        const {teams} = this.state\n        const data = teams.filter(item => item.id == id)\n        if (data.length > 0) {\n          this.setState({\n            prizeName: data[0]['prize_name']\n          })\n        }\n      }\n    }\n    this.setState({\n      isAddress: true\n    })\n  }\n\n  // 绑定地址--成功\n  successBindAddress = () => {\n    this.setState({\n      isAddress: false,\n    })\n    const {teams, splitInfo} = this.state\n    const teamId = this.fetchCurrentTeamId(teams)\n    const data = teams.map(item => {\n      if (item.id == teamId) {\n        return Object.assign({}, item, {\n          bind_address: false,\n        })\n      }\n      return item\n    })\n    this.setState({\n      teams: data,\n      splitInfo: Object.assign({}, splitInfo, {\n        bind_address: false\n      })\n    })\n  }\n\n  // 获取我的宝箱信息\n  fetchMyTreasure = () => {\n    http.get(`${API.home}/sys/treasure/my`).then(res => {\n      const {code, data} = res.data\n      if (code === 200) {\n        this.setState({\n          rule: data.rule\n        })\n        if (Array.isArray(data.team) && data.team.length > 0) {\n          this.initNoSplitInfo(data.team)\n          this.judgeIsHaveId(data.team)\n          this.isShowBindPhone(data.team)\n          this.initPrizeName(data.team)\n          this.setState({\n            isEmpty: false,\n            teams: data.team,\n          })\n        } else {\n          this.setState({\n            isEmpty: true,\n          })\n        }\n      }\n    })\n  }\n\n  // 统计未拆的宝箱信息\n  initNoSplitInfo = (data = []) => {\n    if (data.length > 0) {\n      this.setState({\n        ids: data.filter(item => !item.is_open && item.status === 2).map(val => {\n          return {\n            team_num: val.team_num,\n            owner_uid: val.captain_uid\n          }\n        })\n      })\n    }\n  }\n\n  // 获取宝箱活动状态\n  fetchActivityStatus = () => {\n    http.get(`${API.home}/activity/stage`).then(res => {\n      const {code, data} = res.data\n      if (code === 200) {\n        if(Number(data.treasure_stage) === 0) {\n          this.props.history.push('/');\n          return;\n        }\n        // treasure_stage,宝箱阶段,0-不在活动时间,1-活动时间内\n        if (data.treasure_stage === 0) {\n          this.startCountDown()\n        }\n        this.setState({\n          isEnd: data.treasure_stage === 0,\n          treasureTime: data.treasure_stop_date\n        })\n      }\n    })\n  }\n\n  // 活动结束--倒计时\n  startCountDown = () => {\n    const {history} = this.props\n    let {seconds} = this.state\n    if (this.timer) {\n      clearInterval(this.timer)\n    }\n    this.setState({\n      seconds: seconds--\n    })\n    this.timer = setInterval(() => {\n      this.setState({\n        seconds: seconds--\n      })\n      if (seconds === 0) {\n        this.setState({\n          seconds: 0\n        })\n        clearInterval(this.timer)\n        if (getParam('version')) {\n          history.push(`/year/yearIndex?version=${getParam('version')}`)\n        } else {\n          history.push('/year/yearIndex')\n        }\n      }\n    }, 1000)\n  }\n\n  // 邀请好友\n  handleToInvite = (treasure_code) => {\n    const {history} = this.props\n    if (getParam('version')) {\n      window.location.assign(`https://h5.julyedu.com/box/landing?treasure_code=${treasure_code}&origin=1&version=${getParam('version')}`)\n    } else {\n      window.location.assign(`https://h5.julyedu.com/box/landing?treasure_code=${treasure_code}&origin=1`)\n    }\n  }\n\n  // 组队开宝箱\n  toOrganizeTeam = () => {\n    const {history, userInfo: {uid = ''}} = this.props\n    if (uid === '') {\n      history.push('/passport')\n    } else {\n      http.get(`${API.home}/sys/treasure/createMyTeam`).then(res => {\n        const {code, data} = res.data\n        if (code === 200) {\n          const teams = []\n          teams[0] = data\n          this.setState({\n            isEmpty: false,\n            teams,\n            isCreate: true,\n            createInfo: data\n          })\n        }\n      })\n    }\n  }\n\n  // 奖品,代金券碎片--合成\n  toComposeCoupon = () => {\n    const {history} = this.props\n    if (getParam('version')) {\n      SendMessageToApp(\"toCoupon\")\n    } else {\n      history.push('/coupons/my-patch')\n    }\n  }\n\n  // 奖品,指定课程代金券--使用\n  toUseCoupon = (id) => {\n    const {history} = this.props\n    if (getParam('version')) {\n      SendMessageToApp(\"toCourse\", id)\n    } else {\n      history.push(`/detail?id=${id}`)\n    }\n  }\n\n  // 第三:奖品,通用课程代金券--使用\n  toCourseList = () => {\n    const {history} = this.props\n    if (getParam('version')) {\n      SendMessageToApp('toQualityCourse')\n    } else {\n      history.push('/classify')\n    }\n  }\n\n  // 第三:奖品,现金红包--提现\n  toFecthMoney = () => {\n    const {history} = this.props\n    if (getParam('version')) {\n      SendMessageToApp('toAccount')\n    } else {\n      history.push('/scholarship')\n    }\n  }\n\n  // 弹窗--隐藏\n  handleToHideWindow = (key) => {\n    const param = {}\n    param[key] = false\n    this.setState(param)\n  }\n\n  render() {\n    const {history, userInfo, country} = this.props\n    const {\n      isEnd,\n      isEmpty,\n      seconds,\n      teams,\n      ids,\n      isPhone,\n      isAddress,\n      isConfirm,\n      isSplit,\n      splitInfo = {},\n      confirmInfo: {\n        params = {},\n        bindInfo = {}\n      },\n      isCreate,\n      createInfo,\n      prizeName,\n      rule,\n      treasureTime,\n    } = this.state\n    return (\n      <div data-skip=\"treasure\">\n        {(!browser.isAndroidApp && !browser.isIOSApp) && <HeaderBar title=\"我的宝箱\" arrow={true}/>}\n        {\n          isEnd &&\n          <div className=\"team-empty\">\n            <p className=\"activity-end__desc\">\n              活动已结束<br/>\n              {seconds}s后将自动返回首页\n            </p>\n          </div>\n        }\n        {\n          (!isEnd && isEmpty) &&\n          <div className=\"team-empty\">\n            <i className=\"team-empty__icon\"></i>\n            <p className=\"team-empty__desc\">您当前还没有宝箱哦~</p>\n            <p className=\"team-empty__desc\">快去组队邀请好友一起开宝箱吧!</p>\n            <button className=\"team-empty__button\" onClick={this.toOrganizeTeam}>组队开宝箱</button>\n          </div>\n        }\n        {\n          (!isEnd && !isEmpty && userInfo.uid) &&\n          <div className=\"treasure-content\">\n            {\n              teams.map((item, index) => (\n                <TreasureTeam\n                  data={item}\n                  key={index}\n                  userInfo={userInfo}\n                  history={history}\n                  splitInstance={this.splitInstance}\n                  toSplitTreasure={() => this.toSplitTreasure({\n                    team_num: item.team_num,\n                    owner_uid: item.captain_uid\n                  })}\n                >\n                  <PrizeStatus\n                    data={{\n                      bind_phone: item.bind_phone,\n                      bind_address: item.bind_address,\n                      prize_type: item.prize_type,\n                    }}\n                    handleToBindPhone={this.handleToBindPhone}\n                    handleToBindAddress={() => this.handleToBindAddress(item.id)}\n                    toComposeCoupon={this.toComposeCoupon}\n                    toUseCoupon={() => this.toUseCoupon(item.prize_data)}\n                    toCourseList={this.toCourseList}\n                    toFecthMoney={this.toFecthMoney}\n                  />\n                </TreasureTeam>\n              ))\n            }\n\n            {/* 拆宝箱--弹窗,成功 */}\n            <Mask visible={isSplit} handleToHide={() => this.handleToHideWindow('isSplit')}>\n              <SplitSuccess\n                ids={ids}\n                data={splitInfo}\n                handleToInvite={() => this.handleToInvite(splitInfo.treasure_code)}\n                handleToBindPhone={this.handleToBindPhone}\n                handleToBindAddress={this.handleToBindAddress}\n                successSplitTreasure={this.successSplitTreasure}\n              >\n                <PrizeStatus\n                  data={splitInfo}\n                  handleToBindPhone={this.handleToBindPhone}\n                  handleToBindAddress={this.handleToBindAddress}\n                  toComposeCoupon={this.toComposeCoupon}\n                  toUseCoupon={() => this.toUseCoupon(splitInfo.prize_data)}\n                  toCourseList={this.toCourseList}\n                  toFecthMoney={this.toFecthMoney}\n                />\n              </SplitSuccess>\n            </Mask>\n\n            {/*绑定手机号--弹窗 */}\n            <Mask visible={isPhone} className=\"popup-bind-phone\" handleToHide={() => this.handleToHideWindow('isPhone')}>\n              <BindPhone\n                history={history}\n                country={country}\n                hideBindPhone={() => this.handleToHideWindow('isPhone')}\n                handleToConfirmPhone={this.handleToConfirmPhone}\n                successBindPhone={this.successBindPhone}\n                desc={\n                  <>\n                    <p className=\"phone-treasure__desc\">恭喜您获得 {prizeName}</p>\n                    <p className=\"phone-treasure__notice\">为了您的账户安全,请于{treasureTime}前绑定手机号,过期将失效</p>\n                  </>\n                }\n              />\n            </Mask>\n\n            {/* 绑定手机号--弹窗,确认 */}\n            <Mask visible={isConfirm} handleToHide={() => this.handleToHideWindow('isConfirm')}>\n              <ConfirmPhone\n                data={params}\n                bindInfo={bindInfo}\n                handleToCancle={() => this.handleToHideWindow('isConfirm')}\n                successBindPhone={this.successBindPhone}\n              />\n            </Mask>\n\n            {/* 绑定地址--弹窗 */}\n            <Mask visible={isAddress} className=\"popup-bind-address\" handleToHide={() => this.handleToHideWindow('isAddress')}>\n              <AddressPopup\n                skip=\"year\"\n                tip={\n                  <>\n                    <p className=\"address-treasure__desc\">恭喜您获得 {prizeName}</p>\n                    <p className=\"address-treasure__notice\">请及时填写/确认收货信息,活动结束后统一邮寄</p>\n                  </>\n                }\n                successBindAddress={this.successBindAddress}\n              />\n            </Mask>\n\n            {/* 组队成功 */}\n            <Mask visible={isCreate} handleToHide={() => this.handleToHideWindow('isCreate')}>\n              <CreateSuccess\n                data={createInfo}\n                handleToInvite={() => {\n                  this.handleToInvite(createInfo.treasure_code)\n                  this.handleToHideWindow('isCreate')\n                }}\n              />\n            </Mask>\n          </div>\n        }\n        {\n          rule &&\n          <>\n            <div className=\"activity-rule__header\">\n              <i className=\"activity-rule__decorate\"></i>\n              <h2 className=\"activity-rule__title\">活动规则</h2>\n              <i className=\"activity-rule__decorate\"></i>\n            </div>\n            <div className=\"activity-rule__body\" dangerouslySetInnerHTML={{__html: rule}}></div>\n          </>\n        }\n      </div>\n    )\n  }\n}\n\nexport default MyTreasure\n","import React, { Component } from 'react';\nimport { http } from '@/utils';\nimport { Formik, Form, Field } from 'formik';\nimport { Toast } from \"antd-mobile\";\nimport './index.scss';\n\nclass AddressPopup extends Component {\n  constructor(props) {\n    super(props)\n    this.state = {\n      isLoading: false,\n      addressInfo: {\n        name: '',\n        phone: '',\n        address: '',\n      },\n    }\n  }\n\n  componentDidMount() {\n    this.fetchUserAddress();\n  }\n\n  // 获取收货信息\n  fetchUserAddress = () => {\n    const { addressInfo } = this.state;\n    http.get(`${API.home}/sys/user_address_info`).then(res => {\n      const {code, data, msg} = res.data;\n      if (code === 200) {\n        this.setState({\n          addressInfo: Object.assign({}, addressInfo, {\n            name: data.name,\n            phone: data.phone,\n            address: data.address,\n          }),\n          isLoading: true,\n        });\n      }\n    });\n  }\n\n  handleToSubmit = (params = {}) => {\n    const { successBindAddress } = this.props;\n    http.post(`${API.home}/sys/update_address`, {\n      act_type: 'treasure',\n      ...params\n    }).then(res => {\n      const {code, msg} = res.data;\n      if (code === 200) {\n        successBindAddress();\n      } else {\n        Toast.info(msg, 2, null, false);\n      }\n    });\n  }\n\n  render() {\n    const { isLoading, addressInfo } = this.state;\n    const {tip, prize, skip = 'default'} = this.props;\n    return (\n      <>\n        {\n          isLoading &&\n          <Formik\n            initialValues={{ \n              ...addressInfo\n            }}\n            validate={({name, phone, address}) => {\n              const errors = {};\n\n              if (!name) {\n                errors.name = '请输入收件人';\n              }\n              if(!/^1[3-9]\\d{9}$/.test(phone)) {\n                errors.phone = '请填写正确格式的手机号';\n              }\n              if (!address) {\n                errors.address = '请输入收货地址';\n              }\n\n              return errors;\n            }}\n            validateOnBlur={false}\n            validateOnChange={false}\n            onSubmit={(values) => {\n              this.handleToSubmit(values);\n            }}\n            render={({errors}) => (\n              <Form className=\"address-form\" data-skip={skip}>\n                <h2 className=\"address-form__title\">收货信息</h2>\n                {\n                  prize ? (\n                    <p className='address__prize'>\n                      您抽中了\n                      <span style={{'color': '#FF4000'}}>{prize}</span>\n                    </p>\n                  ) : (null)\n                }\n                {\n                  tip ? (<div className=\"address-form__subtitle\">{tip}</div>) : (<p className=\"address-form__desc\">请及时填写收货信息,获得实物奖品后将第一时间为您邮寄</p>) \n                }\n                <Field \n                  name=\"name\"\n                  render={({ field }) => (\n                    <div className=\"address-form__item\">\n                      <input\n                        {...field}\n                        className=\"address-form__ipt\"\n                        type=\"text\"\n                        placeholder=\"收件人\"\n                      />\n                      {\n                        errors.name &&\n                        <p className=\"address-form__tip\">{errors.name}</p>\n                      }\n                    </div>\n                  )}\n                />\n                <Field \n                  name=\"phone\"\n                  render={({ field }) => (\n                    <div className=\"address-form__item\">\n                      <input\n                        {...field}\n                        className=\"address-form__ipt\"\n                        type=\"text\"\n                        placeholder=\"联系方式\"\n                      />\n                      {\n                        errors.phone &&\n                        <p className=\"address-form__tip\">{errors.phone}</p>\n                      }\n                    </div>\n                  )}\n                />\n                <Field \n                  name=\"address\"\n                  render={({ field }) => (\n                    <div className=\"address-form__item\">\n                      <input\n                        {...field}\n                        className=\"address-form__ipt\"\n                        type=\"text\"\n                        placeholder=\"收货地址\"\n                      />\n                      {\n                        errors.address &&\n                        <p className=\"address-form__tip\">{errors.address}</p>\n                      }\n                    </div>\n                  )}\n                />\n                <button \n                  className=\"address-form__submit\" \n                  data-status=\"do\"\n                  type=\"submit\"\n                >提交</button>\n              </Form>\n            )}\n          />\n        }\n      </>\n    );\n  }\n}\n\nexport default AddressPopup;","import React, { Component } from 'react';\nimport { Formik, Form, Field } from 'formik';\nimport { Toast } from 'antd-mobile';\nimport { isEmpty } from 'lodash';\nimport CaptchaAli from \"@common/Captcha-ali\"\nimport { http } from '@/utils';\nimport './index.scss';\n\nclass BindPhone extends Component {\n  captchaInstance = null;\n\n  constructor(props) {\n    super(props),\n      this.state = {\n        validate: '',\n        seconds: 60,\n        isFirst: true,\n        timer: null,\n        isTimer: false, // 是否开始倒计时\n        accountInfo: {},\n        bindInfo: {},\n        country: {\n          num: '86'\n        },\n        validationData: null\n      }\n  }\n\n  componentDidMount() {\n    this.initCountryInfo();\n  }\n\n  initCountryInfo = () => {\n    const {country} = this.props;\n    this.setState({\n      country\n    });\n  }\n\n  toFetchCountryNum = () => {\n    const {history, hideBindPhone} = this.props;\n    hideBindPhone();\n    history.push('/country?from=bind');\n  }\n\n  getCaptchaInstance = instance => {\n    this.captchaInstance = instance;\n  }\n\n  onVerify = (data) => {\n    this.setState({\n      validate: true,\n      validationData: data\n    })\n  }\n\n  // 获取手机号验证码\n  handleToSend = ({tel, code}) => {\n    let {validate, seconds, validationData, isFirst, isTimer, country: {num = '86'}} = this.state;\n    if (validate) {\n      if (!isFirst) {\n        Toast.info('请重新进行滑块验证', 2, null, false);\n        this.captchaInstance.reset();\n        this.setState({\n          isFirst: true\n        });\n        return\n      }\n      if (!isTimer) {\n        if (!tel) {\n          Toast.info('手机号码不能为空', 2, null, false);\n        } else if (!/^\\d+$/.test(tel)) {\n          Toast.info('请输入正确格式的手机号码', 2, null, false);\n        } else {\n\n          // 获取验证码\n          http.post(\n            `${API['passport-api']}/m/personal/bindPhoneSendCode`,\n            {\n              area_code: `00${num}`,\n              phone_num: tel,\n              ...validationData\n            }\n          ).then(res => {\n            const {errno, msg} = res.data;\n            if (errno === 200) {\n              Toast.info('验证码发送成功', 2, null, false);\n\n              // 倒计时\n              this.timer = window.setInterval(() => {\n                if (seconds <= 0) {\n                  window.clearInterval(this.timer);\n                  this.setState({\n                    isTimer: false,\n                    seconds: 60\n                  });\n                } else {\n                  this.setState({\n                    isTimer: true,\n                    seconds: --seconds\n                  });\n                }\n              }, 1000);\n\n              // 滑块\n              this.setState({\n                isFirst: false\n              })\n            } else {\n              Toast.info(msg, 2, null, false);\n            }\n          })\n        }\n      }\n    }\n    return false;\n  }\n\n  // 绑定手机\n  toBindPhone = () => {\n    const {accountInfo: {tel, code}, country: {num = '86'}} = this.state;\n    const {handleToConfirmPhone, successBindPhone} = this.props;\n    const params = {\n      area_code: `00${num}`,\n      mobile: tel,\n      code: code,\n      act_type: 'treasure', // 宝箱\n    };\n    http.post(\n      `${API.home}/sys/v2/user/bindMobile`,\n      {\n        ...params,\n        type: 1, // 1:绑定,2:修改绑定\n        is_valid: 1, // is_valid\t是否验证 1:验证(默认),0不验证\n      }\n    ).then(res => {\n      const {code, data, msg} = res.data;\n      if (code === 200) {\n        if (data.tip_info) {\n          handleToConfirmPhone(params, data.tip_info);\n        } else {\n          successBindPhone();\n        }\n      } else {\n        Toast.info(msg, 2, null, false);\n      }\n    });\n  }\n\n  render() {\n    const {desc, skip = 'year'} = this.props;\n    const {country, validate, isTimer, seconds} = this.state;\n    return (\n      <Formik\n        initialValues={{\n          tel: '',\n          code: ''\n        }}\n        validate={({tel, code}) => {\n          const errors = {};\n\n          // if (!validateTel(tel)) {\n          if (!/^\\d+$/.test(tel)) {\n            errors.tel = '请填写正确格式的手机号';\n          }\n          if (!/[0-9]{6}/.test(code)) {\n            errors.code = '请输入验证码';\n          }\n\n          return errors;\n        }}\n        onSubmit={(values, {setStatus, setSubmitting}) => {\n          this.setState({\n            accountInfo: {\n              ...values\n            }\n          });\n          this.toBindPhone();\n        }}\n        render={({values: {tel, code}, errors}) => (\n          <Form className=\"popup-form\" data-skip={skip}>\n            <h2 className=\"popup-form__title\">绑定手机号</h2>\n            {\n              desc &&\n              <div className=\"poup-form__desc\">{desc}</div>\n            }\n            <div className=\"popup-form__item\">\n              <a className=\"popup-form__button--num\" onClick={this.toFetchCountryNum}>\n                +{country.num}\n                <i className=\"iconfont iconiconfront-69\"/>\n              </a>\n              <Field\n                name=\"tel\"\n                render={({field}) => {\n                  return (\n                    <input\n                      {...field}\n                      className=\"popup-form__ipt\"\n                      data-type=\"tel\"\n                      type=\"text\"\n                      placeholder=\"请填写手机号\"\n                    />\n                  );\n                }}\n              />\n            </div>\n            <CaptchaAli getInstance={this.getCaptchaInstance} onVerify={this.onVerify} mb={15}/>\n            <div className=\"popup-form__item\">\n              <Field\n                name=\"code\"\n                render={({field}) => {\n                  return (\n                    <input\n                      {...field}\n                      className=\"popup-form__ipt popup-form__ipt--left\"\n                      type=\"text\"\n                      placeholder=\"输入验证码\"\n                    />\n                  );\n                }}\n              />\n              <button\n                className=\"popup-form__button--code\"\n                data-status={(validate && !isTimer) ? 'do' : ''}\n                type=\"button\"\n                onClick={() => this.handleToSend({tel, code})}\n              >\n                {\n                  isTimer ? `重新发送${seconds}s` : '发送验证码'\n                }\n              </button>\n            </div>\n            <button\n              className=\"popup-form__button--bundle\"\n              data-status={(tel && code && isEmpty(errors)) ? 'do' : 'done'}\n              type=\"submit\"\n            >\n              完成绑定\n            </button>\n          </Form>\n        )}\n      />\n    )\n  }\n}\n\nexport default BindPhone;","import React, { Component } from 'react';\nimport { Toast } from 'antd-mobile';\nimport { http } from '@/utils';\nimport './index.scss';\n\nclass ConfirmPhone extends Component {\n  continueBindPhone = () => {\n    const { data, successBindPhone } = this.props;\n    http.post(\n      `${API.home}/sys/v2/user/bindMobile`,\n      {  \n        ...data,\n        type: 1, // 1:绑定,2:修改绑定\n        is_valid: 0, // is_valid\t是否验证 1:验证(默认),0不验证\n      }\n    ).then(res => {\n      const { code, msg } = res.data;\n      if(code === 200 ) {\n        successBindPhone();\n      }else {\n        Toast.info(msg, 2, null, false);\n      }\n    });\n  }\n\n  render() {\n    const { \n      bindInfo = { }, \n      desc, \n      skip = 'year', \n      handleToCancle \n    } = this.props;\n    return (\n      <div className=\"popup-bind\" data-skip={skip}>\n        <h2 className=\"popup-bind__title\">绑定手机号</h2>\n        {\n          desc\n          ? <div className=\"popup-bind__desc\">{desc}</div>\n          : <p className=\"popup-bind__desc\">该手机号已绑定到以下账号,继续绑定将解除以下绑定状态</p>\n        }\n        <ul className=\"popup-bind__list\">\n          {\n            bindInfo['email'] &&\n            <li className=\"popup-bind__account\">\n\n              {/* 邮箱 */}\n              <i className=\"popup-bind__icon\" data-plat=\"mail\"></i>\n              <p className=\"popup-bind__account--name\">{bindInfo['email']}</p>\n            </li>\n          }\n          {\n            bindInfo['wechat_nickname'] &&\n            <li className=\"popup-bind__account\">\n\n              {/* wechat */}\n              <i className=\"popup-bind__icon\" data-plat=\"wachat\"></i>\n              <p className=\"popup-bind__account--name\">{bindInfo['wechat_nickname']}</p>\n            </li>\n          }\n          {\n            bindInfo['qq_nickname'] &&\n            <li className=\"popup-bind__account\">\n\n              {/* qq */}\n              <i className=\"popup-bind__icon\" data-plat=\"qq\"></i>\n              <p className=\"popup-bind__account--name\">{bindInfo['qq_nickname']}</p>\n            </li>\n          }\n          {\n            bindInfo['sina_nickname'] &&\n            <li className=\"popup-bind__account\">\n\n              {/* 微博 */}\n              <i className=\"popup-bind__icon\" data-plat=\"sina\"></i>\n              <p className=\"popup-bind__account--name\">{bindInfo['sina_nickname']}</p>\n            </li>\n          }\n        </ul>\n        <div className=\"popup-bind__footer\">\n          <button\n          className=\"popup-bind__button popup-bind__button--cancle\"\n          onClick={handleToCancle}>取消</button>\n          <button\n          className=\"popup-bind__button popup-bind__button--confirm\"\n          onClick={this.continueBindPhone}>继续绑定</button>\n        </div>\n      </div>\n    )\n  }\n}\n\nexport default ConfirmPhone;"],"sourceRoot":""}