import React from "react"; import {Button, Col, Container, Form, FormControl, Image, Row} from "react-bootstrap"; import {Sex, User, UserEdit, UserType} from "../entity"; import {Input} from "../ui/InputGroup"; import {JSONResponse, Method, request} from "../interface"; import { EmptyBodyTransform, FindUserInfo, FindUserInfoTransform, ModifyPwdMessage, ModifyPwdTransform, SimpleMessage } from "../result"; import {MyDialog} from "../ui/MyDialog"; import {Address} from "../ui/Address"; import {Cookies} from "react-cookie"; import {user_type_cookie} from "../account/PropCookie"; import {Api, prefix} from "../api"; import {UploadImg} from "../ui/UploadImg"; /** * 图片尺寸限制 */ const maxImageSize={ width:100, height:100 } /** * 个人信息 */ export class MyInfo extends React.Component< { //刷新用户信息 refreshFun?:Function, //查看用户id userId:string; //查看本人 isOwn:boolean; //是否添加好友 isAdd:boolean; cookies?:Cookies; }, { userEdit:UserEdit, userInfo?:User, result:JSX.Element|null, activityImgFile?:any; }>{ private ages:Array constructor(props: Readonly) { super(props); this.ages=this.createAge() this.state={ userEdit:{ contentEditable:false, modifyPassword:false, oldPassword:"", newPassword:"", confirmNewPwd:"", }, result:null, } } createAge(){ let age=[] for(let i=18;i<100;i++){ age.push(i) } return age } /** * 加载用户信息 */ loadInfo(){ if(!this.props.userId){ return } let that=this request(Api.account.find+"/"+this.props.userId,Method.GET, {},new FindUserInfoTransform(),function(res:FindUserInfo){ switch (res.customResult) { case SimpleMessage.fail: that.setState({ result:

获取用户信息失败,请联系管理员

});break case SimpleMessage.ok: that.setState({ userInfo:res.info, userEdit: { headImg:res.info?.headImg, userId:res.info?.userId, name:res.info?.name, age:res.info?.age, mobile:+(res.info?.mobile||""), email:res.info?.email, serviceAddress:res.info?.serviceAddress, info:res.info?.info, userType:res.info?.userType, sex:res.info?.sex, contentEditable:false, modifyPassword:false, oldPassword:"", newPassword:"", confirmNewPwd:"", } }) break } }) } componentDidMount() { this.loadInfo() } /** * 进入编辑模式 */ openEdit(){ this.setState({ userEdit:{...this.state.userEdit,...{contentEditable:true}} }) } /** * 进入修改密码 */ openModifyPwd(){ this.setState({ userEdit:{...this.state.userEdit,...{ modifyPassword:true}} }) } /** * 修改密码 */ modifyPwd(){ this.setState({ userEdit:{...this.state.userEdit,...{ modifyPassword:false}} }) let that=this request(Api.account.updatePwd,Method.POST, { newPassword:this.state.userEdit.newPassword, oldPassword:this.state.userEdit.oldPassword },new ModifyPwdTransform(),function (res:JSONResponse) { switch (res.customResult) { case ModifyPwdMessage.fail: that.setState({ result:

修改密码失败,请联系管理员

});break case ModifyPwdMessage.pwd_fail: that.setState({ result:

修改密码失败,原密码错误

});break case ModifyPwdMessage.ok: that.setState({ result:

修改密码成功

});break } }) } /** * 保存信息 */ doSave(){ this.setState({ userEdit:{...this.state.userEdit,...{ contentEditable:false}} }) let that=this request(Api.account.update,Method.PUT, { headImg:this.state.userEdit.headImg||"", name:this.state.userEdit.name||"", age:this.state.userEdit.age+""||"", mobile:this.state.userEdit.mobile+""||"", email:this.state.userEdit.email||"", serviceAddress:this.state.userEdit.serviceAddress||"", info:this.state.userEdit.info||"", userType:this.state.userEdit.userType||"", sex:this.state.userEdit.sex||"", activityImgFile:this.state.activityImgFile?this.state.activityImgFile:null },new EmptyBodyTransform(),function (res:JSONResponse) { switch (res.customResult) { case SimpleMessage.fail: that.setState({ result:

更新信息失败,请联系管理员

});break case SimpleMessage.ok: that.loadInfo(); //TODO 更新用户身份 that.setState({ result:

更新信息成功

}) break } }) } /** * 添加好友 */ addFriend(){ let that=this request(Api.account.friend,Method.POST, {targetUserId:this.props.userId},new EmptyBodyTransform(),function (res:JSONResponse) { switch (res.customResult) { case SimpleMessage.ok: that.setState({ result:

成功发送邀请

});break case SimpleMessage.fail: that.setState({ result:

发送好友邀请失败,请联系管理员

});break } }) } /** * 同意好友邀请 */ agreeFriend(){ } render() { return ( {this.state.userEdit.contentEditable? this.setState({activityImgFile:value})} /> : } {/*TODO 表单校验*/} {this.state.userInfo?.userId} {this.state.userEdit.contentEditable? this.setState({ userEdit:{...this.state.userEdit,...{ name:e.target.value}} })}/> :this.state.userInfo?.name} {this.state.userEdit.contentEditable? this.setState({ userEdit:{...this.state.userEdit,...{ age:+e.target.value}} })}> {this.ages.map(value=>)} :this.state.userInfo?.age} {this.state.userEdit.contentEditable? this.setState({ userEdit:{...this.state.userEdit,...{ mobile:+e.target.value}} })}/> :this.state.userInfo?.mobile} {this.state.userEdit.contentEditable? this.setState({ userEdit:{...this.state.userEdit,...{ email:e.target.value}} })}/> :this.state.userInfo?.email} {this.state.userEdit.contentEditable? this.setState({ userEdit:{...this.state.userEdit,...{ sex:event.target.value}} })}> :this.state.userInfo?.sex===Sex.man?"男":"女"} {this.state.userEdit.contentEditable?
this.setState({ userEdit:{...this.state.userEdit,...{ serviceAddress:value}} })}/>:this.state.userInfo?.serviceAddress} {this.state.userEdit.contentEditable? this.setState({ userEdit:{...this.state.userEdit,...{ userType:e.target.value}} })}> : this.state.userInfo?.userType===UserType.help?"等待前往帮助":"等待接受帮助"} {this.state.userEdit.contentEditable? this.setState({ userEdit:{...this.state.userEdit,...{ info:e.target.value}} })}/> :this.state.userInfo?.info} {this.state.userEdit.modifyPassword?
this.setState({ userEdit:{...this.state.userEdit,...{ oldPassword:value}} })}/> this.setState({ userEdit:{...this.state.userEdit,...{newPassword:value}} })}/> this.setState({ userEdit:{...this.state.userEdit,...{confirmNewPwd:value}} })}/>
:null } {this.props.isOwn? {this.state.userEdit.contentEditable? : } {this.state.userEdit.modifyPassword? : } : {this.state.userInfo?.isMyFriend===undefined||this.state.userInfo.isMyFriend?null:this.props.isAdd? : } } { this.setState({ result:null }) if(this.props.cookies?.get(user_type_cookie)!==this.state.userEdit.userType&&this.props.refreshFun) { this.props.refreshFun({ userType:this.state.userEdit.userType, }) } }}/> ) } }