import React, { Component } from 'react'; import { SnackbarHOC, getImageUrl, City } from 'educoder'; import { Form, Button, Input, Radio, Select, Tooltip, Icon } from 'antd' import ApplyForAddOrgModal from '../modal/ApplyForAddOrgModal' import ApplyForAddChildOrgModal from '../modal/ApplyForAddChildOrgModal' import axios from 'axios' const RadioGroup = Radio.Group; const Option = Select.Option; const map={"teacher":"教师", "student":"学生", "professional":"专业人士"} class AccountBasic extends Component { constructor(props){ super(props); this.state={ nameLength:0, showRealName:true, schoolList:undefined, filterSchoolList:undefined, school:undefined, departments:undefined, filterDepartments:undefined, departmentsName:undefined, identity:"teacher", school_id:undefined, department_id:undefined } } componentDidUpdate =(prevProps)=>{ if(this.props.basicInfo && prevProps.basicInfo == undefined){ this.setValue(this.props.basicInfo); this.getSchoolList(this.props.basicInfo); } } componentDidMount = () =>{ if(this.props.basicInfo){ this.setValue(this.props.basicInfo); this.getSchoolList(this.props.basicInfo); } } setValue=(basicInfo)=>{ if(basicInfo){ this.props.form.setFieldsValue({ nickname:basicInfo.nickname, name:!basicInfo.show_realname ? this.hideRealName(basicInfo.name) : basicInfo.name, sex:String(basicInfo.gender), job:basicInfo.identity, org:basicInfo.school_name, org2:basicInfo.department_name, city:[basicInfo.location,basicInfo.location_city] }) setTimeout(() => { // 等显示后再set this.props.form.setFieldsValue({ student_No:basicInfo.student_id, job1:basicInfo && basicInfo.identity=="teacher" ? basicInfo.technical_title:"教授", job2:basicInfo && basicInfo.identity=="professional" ? basicInfo.technical_title:"企业管理者", }) }, 100) //if(basicInfo.nickname){ this.setState({ nameLength:basicInfo.nickname?basicInfo.nickname.length:0, showRealName:basicInfo.show_realname, identity:basicInfo.identity }) //} } } // 获取学校、单位 getSchoolList=(basicInfo)=>{ let url=`/schools/for_option.json`; axios.get(url).then((result)=>{ if(result){ this.setState({ schoolList:result.data.schools }) if(basicInfo && basicInfo.school_name){ this.setState({ school:basicInfo.school_name, filterSchoolList:this.state.schoolList.filter(function(item){ return item.name.indexOf(basicInfo.school_name)>-1; }) }) this.getDepartments(basicInfo.school_name,false); } } }).catch((error)=>{ console.log(error); }) } // 输入昵称时change剩余的字数 changeNickName=(e)=>{ let num= 10 - parseInt(e.target.value.length); this.setState({ nameLength:num < 0 ? 0 : num }) } handleSubmit = () => { this.props.form.validateFieldsAndScroll((err, values) => { console.log(values); let {basicInfo}=this.props; // TODO 为什么modal里的form影响到这里的了 if (err) { delete err.depart } if(!err || Object.keys(err).length == 0){ let url=`/users/accounts/${basicInfo.id}.json` axios.put((url),{ nickname:values.nickname, // 认证中的不能修改 name: basicInfo.authentication == 'uncertified' ? values.name : basicInfo.name, show_realname:this.state.showRealName, gender:parseInt(values.sex), location:values.city[0], location_city:values.city[1], identity: this.state.identity || (values.job=="teacher"?"teacher":values.job=="student"?"student":"professional"), technical_title:values.job1 || values.job2, student_id:values.job=="student" ? values.student_No : null, school_id:this.state.school_id, department_id:this.state.department_id }).then((result)=>{ if(result){ this.props.showNotification('保存成功') this.props.getBasicInfo(); this.props.history.push('/account/profile') } }).catch((error)=>{ console.log(error); }) } }) } // 隐藏或显示真实姓名 showOrHide=(flag,name)=>{ this.setState({ showRealName:flag==true?false:true }) if(flag==true){ this.hideRealName(name); }else{ this.props.form.setFieldsValue({ name }) } } getHiddenName(name) { if (!name) return '' let len=parseInt(name.length)-1; let str=""; for(var i = 0; i < len; i++){ str += "*"; } const newName = name.substr(0,1)+str; return newName } // 将名字隐藏起来 hideRealName=(name)=>{ const newName = this.getHiddenName(name) this.props.form.setFieldsValue({ name: newName }) } // 过滤学校 filterList=(e)=>{ let arr=[]; if(e){ arr= this.state.schoolList.filter(function(item){ return item.name.indexOf(e)>-1; }); this.props.form.setFieldsValue({ org:e }) this.setState({ school:e, filterSchoolList:arr }) } // else{ // let {school}=this.state; // arr= this.state.schoolList.filter(function(item){ // return item.name.indexOf(school)>-1; // }); // } } //搜索部门 searchDepartment=(e)=>{ this.props.form.setFieldsValue({ org2:e }) let arr = this.state.departments.filter(function(item){ return item.name.indexOf(e) > -1 }) this.setState({ filterDepartments:arr, departmentsName:e }) } // 选择部门、学院 changeDepartment=(e)=>{ let arr=this.state.departments.filter(function(item){ return item.name == e; }); this.setState({ departmentsName:e, department_id:arr[0].id }) } // 选择学校(获取对应学校的学院、部门) changeList=(e)=>{ this.getDepartments(e,true); } getDepartments=(e,flag)=>{ let arr=this.state.schoolList.filter(function(item){ return item.name == e; }); // 保存选择的学校id this.setState({ school_id:arr[0].id, school:e, }) let url=`/schools/${arr[0].id}/departments/for_option.json`; axios.get(url).then((result)=>{ if(result){ this.setState({ departments:result.data.departments, filterDepartments:result.data.departments }) // 切换学校后,部门默认选择第一个 if(result.data.departments && result.data.departments.length>0 && flag==true){ this.props.form.setFieldsValue({ org2:result.data.departments[0].name }) } } }).catch((error)=>{ console.log(error); }) } // 切换职称 changeJob=(e)=>{ this.setState({ identity:e }) let {basicInfo}=this.props; if(basicInfo){ this.props.form.setFieldsValue({ job1:basicInfo && basicInfo.identity=="teacher" ? basicInfo.technical_title:"教授", job2:basicInfo && basicInfo.identity=="professional" ? basicInfo.technical_title:"企业管理者", }) } } showApplyForAddOrgModal = () => { this.applyForAddOrgForm.setVisible(true) } showApplyForAddChildOrgModal = () => { let{school,schoolList}=this.state; let arr=schoolList.filter(function(item){ return item.name == school; }); if(arr.length > 0){ this.applyForAddChildOrgForm.setVisible(true) }else{ this.props.showNotification("请先选择正确的单位或者学校!"); } } render() { let{ nameLength, showRealName, filterSchoolList, filterDepartments, school, school_id, departmentsName, identity }=this.state; const { getFieldDecorator } = this.props.form; let{basicInfo}=this.props return (