AccountConfig.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. import React, {Component} from 'react';
  2. import {FormattedMessage} from 'react-intl';
  3. import {Icon, Row, Col, Input, Button} from 'antd';
  4. import './index.css'
  5. import avatar from '../images/avatar.jpg';
  6. import classnames from 'classnames';
  7. class AccountConfig extends Component {
  8. constructor(props) {
  9. super(props);
  10. this.state = {
  11. overNickname: false,
  12. editNickname: false,
  13. overTel: false,
  14. editTel: false,
  15. overEmail: false,
  16. editEmail: false
  17. };
  18. }
  19. cancelEdit = (kind) => {
  20. let key = `edit${kind[0].toUpperCase()}${kind.slice(1)}`;
  21. this.setState({
  22. [key]: false
  23. })
  24. };
  25. render() {
  26. return (
  27. <div>
  28. <Row style={{marginTop: 100}}>
  29. <Col span={12} offset={6} className={'login-wrapper'}>
  30. <div className={'mask'} style={{backgroundImage: `url(${avatar})`}}>
  31. <div className={'mask-black'}>
  32. <div className={'tip'}>
  33. <Icon style={{fontSize: 30, display: 'block'}} type="camera"/>
  34. <span style={{paddingTop: 5, display: 'block'}} className={'tip-span'}>
  35. <FormattedMessage id="modify avatar"/>
  36. </span>
  37. </div>
  38. </div>
  39. </div>
  40. <Row>
  41. <Col span={20} offset={4} className={'message-wrapper'}>
  42. <Row>
  43. <Col span={22}>
  44. {
  45. this.state.editNickname ?
  46. <EditNickname kind={'nickname'} cancelEdit={this.cancelEdit}/>
  47. :
  48. <div className={'nickname'} onMouseOver={() => {
  49. this.setState({overNickname: true})
  50. }} onMouseLeave={() => {
  51. this.setState({overNickname: false})
  52. }}>
  53. xxx
  54. {
  55. this.state.overNickname ?
  56. <span style={{paddingLeft: '5px', paddingRight: '5px'}}
  57. onClick={() => {
  58. this.setState({
  59. editNickname: true,
  60. overNickname: false
  61. })
  62. }}>
  63. <Icon style={{fontSize: '18px'}} type="edit"
  64. theme="twoTone"/>
  65. <span className={'modify'}> <FormattedMessage id="modify"/></span>
  66. </span>
  67. :
  68. ''
  69. }
  70. </div>
  71. }
  72. </Col>
  73. <Col span={2}>
  74. <div className="back-to-login" onClick={() => {
  75. this.props.history.push({
  76. pathname: '/login',
  77. })
  78. }}>
  79. <FormattedMessage id="login"/> <Icon type="right" style={{color: '#848fa6'}}/>
  80. </div>
  81. </Col>
  82. </Row>
  83. <Row className={'message'}>
  84. <Col span={5}>
  85. <span className={'message-title'}><FormattedMessage id="tel"/></span>
  86. </Col>
  87. <Col span={19}>
  88. {
  89. this.state.editTel ?
  90. <Edit kind={'tel'} cancelEdit={this.cancelEdit}/>
  91. :
  92. <div className={'message-content'} onMouseOver={() => {
  93. this.setState({overTel: true})
  94. }} onMouseLeave={() => {
  95. this.setState({overTel: false})
  96. }}>
  97. 110
  98. {
  99. this.state.overTel ?
  100. <span style={{paddingLeft: '5px', paddingRight: '5px'}}
  101. onClick={() => {
  102. this.setState({
  103. editTel: true,
  104. overTel: false
  105. })
  106. }}>
  107. <Icon style={{fontSize: '18px'}} type="edit"
  108. theme="twoTone"/>
  109. <span className={'modify'}> <FormattedMessage id="modify"/></span>
  110. </span>
  111. :
  112. ''
  113. }
  114. </div>
  115. }
  116. </Col>
  117. </Row>
  118. <Row className={'message'}>
  119. <Col span={5}>
  120. <span className={'message-title'}><FormattedMessage id="email"/></span>
  121. </Col>
  122. <Col span={19}>
  123. {
  124. this.state.editEmail ?
  125. <Edit kind={'email'} cancelEdit={this.cancelEdit}/>
  126. :
  127. <div className={'message-content'} onMouseOver={() => {
  128. this.setState({overEmail: true})
  129. }} onMouseLeave={() => {
  130. this.setState({overEmail: false})
  131. }}>
  132. xxx@ioobot.com
  133. {
  134. this.state.overEmail ?
  135. <span style={{paddingLeft: '5px', paddingRight: '5px'}}
  136. onClick={() => {
  137. this.setState({
  138. editEmail: true,
  139. overEmail: false
  140. })
  141. }}>
  142. <Icon style={{fontSize: '18px'}} type="edit"
  143. theme="twoTone"/>
  144. <span className={'modify'}> modify</span>
  145. </span>
  146. :
  147. ''
  148. }
  149. </div>
  150. }
  151. </Col>
  152. </Row>
  153. </Col>
  154. </Row>
  155. </Col>
  156. </Row>
  157. </div>
  158. )
  159. }
  160. }
  161. export default AccountConfig;
  162. class EditNickname extends Component {
  163. constructor(props) {
  164. super(props);
  165. this.state = {}
  166. }
  167. render() {
  168. return (
  169. <Row className={'message-top'}>
  170. <Col span={5}>
  171. <span className={'message-title message-title-high'}>{this.props.kind}</span>
  172. </Col>
  173. <Col span={19}>
  174. <span className={'message-content'}>
  175. <Input/>
  176. <Button type={'primary'}><FormattedMessage id="save"/></Button>
  177. <Button onClick={() => this.props.cancelEdit(this.props.kind)}><FormattedMessage id="cancel"/></Button>
  178. </span>
  179. </Col>
  180. </Row>
  181. )
  182. }
  183. }
  184. class Edit extends Component {
  185. constructor(props) {
  186. super(props);
  187. this.state = {}
  188. }
  189. render() {
  190. return (
  191. <span className={'message-content'}>
  192. <Input/>
  193. <Button type={'primary'}><FormattedMessage id="save"/></Button>
  194. <Button onClick={() => this.props.cancelEdit(this.props.kind)}><FormattedMessage id="cancel"/></Button>
  195. </span>
  196. )
  197. }
  198. }