import React, { Component } from 'react' import { Row, Col, Input, Button, Select, message, Upload, Icon } from 'antd' import axios from 'axios'; import {formatTime} from '../../common.js' import PropTypes from 'prop-types' class Profile extends Component { static propTypes = { match: PropTypes.object } constructor(props) { super(props) this.state = { usernameEdit: false, emailEdit: false, secureEdit: false, roleEdit: false, userinfo: { } } } componentDidMount(){ const uid = this.props.match.params.uid; this.getUserInfo(uid) } handleEdit = (key, val) => { var s = {}; s[key] = val; this.setState(s) } getUserInfo = (id) => { var _this = this; axios.get('/api/user/find?id=' + id).then((res) => { _this.setState({ userinfo: res.data.data, _userinfo: res.data.data }) }) } updateUserinfo = (name) =>{ var state = this.state; let value = this.state._userinfo[name]; let params = {uid: state.userinfo.uid} params[name] = value; axios.post('/api/user/update', params).then( (res)=>{ let data = res.data; if(data.errcode === 0){ let userinfo = this.state.userinfo; userinfo[name] = value; this.setState({ userinfo: userinfo }) this.handleEdit(name + 'Edit', false) message.success('更新用户信息成功'); }else{ message.error(data.errmsg) } }, (err) => { message.error(err.message) } ) } changeUserinfo = (e) =>{ let dom = e.target; let name = dom.getAttribute("name"); let value = dom.value; let userinfo = this.state._userinfo; userinfo[name] = value; this.setState({ _userinfo: userinfo }) } changeRole = (val) =>{ let userinfo = this.state.userinfo; userinfo.role = val; this.setState({ _userinfo: userinfo }) this.updateUserinfo('role'); } updatePassword = () =>{ let old_password = document.getElementById('old_password').value; let password = document.getElementById('password').value; let verify_pass = document.getElementById('verify_pass').value; if(password != verify_pass){ return message.error('两次输入的密码不一样'); } let params = { uid: this.state.userinfo.uid, password: password, old_password: old_password } axios.post('/api/user/change_password', params).then( (res)=>{ let data = res.data; if(data.errcode === 0){ this.handleEdit('secureEdit', false) message.success('修改密码成功'); }else{ message.error(data.errmsg) } }, (err) => { message.error(err.message) } ) } render() { let ButtonGroup = Button.Group; let userNameEditHtml, emailEditHtml, secureEditHtml, roleEditHtml; const Option = Select.Option; let userinfo = this.state.userinfo; let _userinfo = this.state._userinfo; let roles = { admin: '管理员', member: '会员' } if (this.state.usernameEdit === false) { userNameEditHtml =
{userinfo.username}   {/* { this.handleEdit('usernameEdit', true) }}>修改*/}
} else { userNameEditHtml =
} if (this.state.emailEdit === false) { emailEditHtml =
{userinfo.email}   {/* { this.handleEdit('emailEdit', true) }} >修改*/}
} else { emailEditHtml =
} if (this.state.roleEdit === false) { roleEditHtml =
{roles[userinfo.role]}   {/* { this.handleEdit('roleEdit', true) }} >修改*/}
} else { roleEditHtml = } if (this.state.secureEdit === false) { secureEditHtml = } else { secureEditHtml =
} return
点击上传头像 用户id {userinfo.uid} 用户名 {userNameEditHtml} Email {emailEditHtml} 角色 {roleEditHtml} 创建账号时间 {formatTime(userinfo.add_time)} 更新账号时间 {formatTime(userinfo.up_time)} 密码 {secureEditHtml}
} } class Avatar extends Component { constructor(props) { super(props); this.state = { imageUrl:"" } } static propTypes = { uid: PropTypes.number } uploadAvatar(basecode){ axios.post("/user/upload_avatar",{basecode: basecode}).then(()=>{ this.setState({ imageUrl: basecode }) }).catch((e)=>{ console.log(e); }) } handleChange(info){ if (info.file.status === 'done') { // Get this url from response in real world. getBase64(info.file.originFileObj, basecode=>{this.uploadAvatar(basecode)}); } } render() { let imageUrl = ""; if(this.props.uid && !this.state.imageUrl){ imageUrl = `/user/avatar?uid=${this.props.uid}`; }else{ imageUrl = this.state.imageUrl; } return
{ imageUrl ? : }
} } function beforeUpload(file) { const isJPG = file.type === 'image/jpeg'; const isPNG = file.type === 'image/png'; if (!isJPG && !isPNG) { message.error('图片的格式只能为 jpg、png!'); } const isLt2M = file.size / 1024 / 1024 < 2; if (!isLt2M) { message.error('图片必须小于 200kb!'); } return (isPNG||isJPG) && isLt2M; } function getBase64(img, callback) { const reader = new FileReader(); reader.addEventListener('load', () => callback(reader.result)); reader.readAsDataURL(img); } export default Profile