diff --git a/public/react/src/modules/user/account/AccountBasicEdit.js b/public/react/src/modules/user/account/AccountBasicEdit.js index 13741fd5b..c3b150229 100644 --- a/public/react/src/modules/user/account/AccountBasicEdit.js +++ b/public/react/src/modules/user/account/AccountBasicEdit.js @@ -1,7 +1,7 @@ import React, { Component } from 'react'; import { SnackbarHOC, getImageUrl, City, ConditionToolTip } from 'educoder'; -import { Form, Button, Input, Radio, Select, Tooltip, Icon } from 'antd' +import { Form, Button, Input, Radio, Select, Tooltip, Icon, AutoComplete } from 'antd' import ApplyForAddOrgModal from '../modal/ApplyForAddOrgModal' import ApplyForAddChildOrgModal from '../modal/ApplyForAddChildOrgModal' import axios from 'axios' @@ -84,14 +84,29 @@ class AccountBasic extends Component { } // 获取学校、单位 - getSchoolList=(basicInfo)=>{ + getSchoolList=(basicInfo, selectedName)=>{ let url=`/schools/for_option.json`; axios.get(url).then((result)=>{ if(result){ this.setState({ schoolList:result.data.schools }) - if(basicInfo && basicInfo.school_name){ + if (selectedName) { + let school_id + result.data.schools.reverse().some( item => { + if (item.name == selectedName) { + school_id = item.id + return true; + } + }) + this.props.form.setFieldsValue({ + org: selectedName + }) + this.setState({ + school_id, + school: selectedName + }) + } else if(basicInfo && basicInfo.school_name){ this.setState({ school:basicInfo.school_name, filterSchoolList:this.state.schoolList.filter(function(item){ @@ -119,6 +134,15 @@ class AccountBasic extends Component { console.log(values); let {basicInfo}=this.props; if(!err ){ + if (!this.state.school_id) { + this.props.showNotification('请先请先选择学校/单位') + return; + } + if (!this.state.department_id) { + this.props.showNotification('请先选择院系/部门') + return; + } + let url=`/users/accounts/${basicInfo.id}.json` axios.put((url),{ nickname:values.nickname, @@ -187,6 +211,10 @@ class AccountBasic extends Component { school:e, filterSchoolList:arr }) + } else { + this.setState({ + school: '', + }) } // else{ // let {school}=this.state; @@ -208,17 +236,30 @@ class AccountBasic extends Component { filterDepartments:arr, departmentsName:e }) + } else { + this.setState({ + filterDepartments: this.state.departments + }) } } // 选择部门、学院 changeDepartment=(e)=>{ - let arr= this.state.departments && this.state.departments.filter ? this.state.departments.filter(function(item){ + let arr = this.state.departments && this.state.departments.filter ? this.state.departments.filter(function(item){ return item.name == e; }) : []; + if (!arr[0]) { + this.setState({ + department_id: '', + departmentsName: e, + }) + this.this_department_id = '' + return; + } + this.this_department_id = arr[0].id this.setState({ departmentsName:e, - department_id:arr[0].id + department_id: arr[0].id }) } @@ -231,20 +272,57 @@ class AccountBasic extends Component { let arr=this.state.schoolList.filter(function(item){ return item.name == e; }); + if (!arr[0]) { + // 没找到学校,清空部门 + this.setState({ + departments: [], + filterDepartments: [], + school_id: '', + department_id: '', + }) + this.this_school_id = '' + this.props.form.setFieldsValue({ + org2: '' + }) + return; + } + this.props.form.setFieldsValue({ + org: arr[0].name + }) + this.filterList(e) // 保存选择的学校id + this.this_school_id = arr[0].id this.setState({ - school_id:arr[0].id, + school_id: arr[0].id, school:e, }) - let url=`/schools/${arr[0].id}/departments/for_option.json`; + this._getDepartments(arr[0].id, flag) + } + _getDepartments = (schoolId, flag, selectedName) => { + let url=`/schools/${schoolId || this.state.school_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){ + if (selectedName) { + let department_id + result.data.departments.reverse().some( item => { + if (item.name == selectedName) { + department_id = item.id + return true; + } + }) + this.props.form.setFieldsValue({ + org2: selectedName + }) + this.setState({ + department_id, + // school: selectedName + }) + } else if(result.data.departments && result.data.departments.length>0 && flag==true){ + // 切换学校后,部门默认选择第一个 this.props.form.setFieldsValue({ org2:result.data.departments[0].name }) @@ -274,14 +352,23 @@ class AccountBasic extends Component { } addOrgSuccess = (name) => { - const schoolList = this.state.schoolList.slice(0) - schoolList.push({ id: schoolList.length + 2000, name: name}) - this.setState({ schoolList }) + // const schoolList = this.state.schoolList.slice(0) + // schoolList.push({ id: schoolList.length + 2000, name: name}) + // this.setState({ schoolList }) + + this.getSchoolList(this.props.basicInfo, name); + this.props.form.setFieldsValue({ name: name }) } + addChildOrgSuccess = (deptName) => { + + this._getDepartments(this.state.school_id, false, deptName); + + } + showApplyForAddOrgModal = () => { this.applyForAddOrgForm.setVisible(true) } @@ -320,17 +407,19 @@ class AccountBasic extends Component { {...propsWithoutForm} addOrgSuccess={this.addOrgSuccess} > this.applyForAddChildOrgForm = form} > + {...propsWithoutForm} wrappedComponentRef={(form) => this.applyForAddChildOrgForm = form} + addChildOrgSuccess={this.addChildOrgSuccess} + >