|
|
@ -1,7 +1,7 @@
|
|
|
|
import React, { Component } from 'react';
|
|
|
|
import React, { Component } from 'react';
|
|
|
|
|
|
|
|
|
|
|
|
import { SnackbarHOC, getImageUrl, City, ConditionToolTip } from 'educoder';
|
|
|
|
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 ApplyForAddOrgModal from '../modal/ApplyForAddOrgModal'
|
|
|
|
import ApplyForAddChildOrgModal from '../modal/ApplyForAddChildOrgModal'
|
|
|
|
import ApplyForAddChildOrgModal from '../modal/ApplyForAddChildOrgModal'
|
|
|
|
import axios from 'axios'
|
|
|
|
import axios from 'axios'
|
|
|
@ -84,14 +84,29 @@ class AccountBasic extends Component {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 获取学校、单位
|
|
|
|
// 获取学校、单位
|
|
|
|
getSchoolList=(basicInfo)=>{
|
|
|
|
getSchoolList=(basicInfo, selectedName)=>{
|
|
|
|
let url=`/schools/for_option.json`;
|
|
|
|
let url=`/schools/for_option.json`;
|
|
|
|
axios.get(url).then((result)=>{
|
|
|
|
axios.get(url).then((result)=>{
|
|
|
|
if(result){
|
|
|
|
if(result){
|
|
|
|
this.setState({
|
|
|
|
this.setState({
|
|
|
|
schoolList:result.data.schools
|
|
|
|
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({
|
|
|
|
this.setState({
|
|
|
|
school:basicInfo.school_name,
|
|
|
|
school:basicInfo.school_name,
|
|
|
|
filterSchoolList:this.state.schoolList.filter(function(item){
|
|
|
|
filterSchoolList:this.state.schoolList.filter(function(item){
|
|
|
@ -119,6 +134,15 @@ class AccountBasic extends Component {
|
|
|
|
console.log(values);
|
|
|
|
console.log(values);
|
|
|
|
let {basicInfo}=this.props;
|
|
|
|
let {basicInfo}=this.props;
|
|
|
|
if(!err ){
|
|
|
|
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`
|
|
|
|
let url=`/users/accounts/${basicInfo.id}.json`
|
|
|
|
axios.put((url),{
|
|
|
|
axios.put((url),{
|
|
|
|
nickname:values.nickname,
|
|
|
|
nickname:values.nickname,
|
|
|
@ -187,6 +211,10 @@ class AccountBasic extends Component {
|
|
|
|
school:e,
|
|
|
|
school:e,
|
|
|
|
filterSchoolList:arr
|
|
|
|
filterSchoolList:arr
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
|
|
school: '',
|
|
|
|
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// else{
|
|
|
|
// else{
|
|
|
|
// let {school}=this.state;
|
|
|
|
// let {school}=this.state;
|
|
|
@ -208,17 +236,30 @@ class AccountBasic extends Component {
|
|
|
|
filterDepartments:arr,
|
|
|
|
filterDepartments:arr,
|
|
|
|
departmentsName:e
|
|
|
|
departmentsName:e
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
|
|
filterDepartments: this.state.departments
|
|
|
|
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 选择部门、学院
|
|
|
|
// 选择部门、学院
|
|
|
|
changeDepartment=(e)=>{
|
|
|
|
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;
|
|
|
|
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({
|
|
|
|
this.setState({
|
|
|
|
departmentsName:e,
|
|
|
|
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){
|
|
|
|
let arr=this.state.schoolList.filter(function(item){
|
|
|
|
return item.name == e;
|
|
|
|
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
|
|
|
|
// 保存选择的学校id
|
|
|
|
|
|
|
|
this.this_school_id = arr[0].id
|
|
|
|
this.setState({
|
|
|
|
this.setState({
|
|
|
|
school_id:arr[0].id,
|
|
|
|
school_id: arr[0].id,
|
|
|
|
school:e,
|
|
|
|
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)=>{
|
|
|
|
axios.get(url).then((result)=>{
|
|
|
|
if(result){
|
|
|
|
if(result){
|
|
|
|
this.setState({
|
|
|
|
this.setState({
|
|
|
|
departments:result.data.departments,
|
|
|
|
departments:result.data.departments,
|
|
|
|
filterDepartments:result.data.departments
|
|
|
|
filterDepartments:result.data.departments
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
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){
|
|
|
|
// 切换学校后,部门默认选择第一个
|
|
|
|
// 切换学校后,部门默认选择第一个
|
|
|
|
if(result.data.departments && result.data.departments.length>0 && flag==true){
|
|
|
|
|
|
|
|
this.props.form.setFieldsValue({
|
|
|
|
this.props.form.setFieldsValue({
|
|
|
|
org2:result.data.departments[0].name
|
|
|
|
org2:result.data.departments[0].name
|
|
|
|
})
|
|
|
|
})
|
|
|
@ -273,6 +351,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 })
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.getSchoolList(this.props.basicInfo, name);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.props.form.setFieldsValue({
|
|
|
|
|
|
|
|
name: name
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
addChildOrgSuccess = (deptName) => {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this._getDepartments(this.state.school_id, false, deptName);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
showApplyForAddOrgModal = () => {
|
|
|
|
showApplyForAddOrgModal = () => {
|
|
|
|
this.applyForAddOrgForm.setVisible(true)
|
|
|
|
this.applyForAddOrgForm.setVisible(true)
|
|
|
@ -309,19 +404,22 @@ class AccountBasic extends Component {
|
|
|
|
return (
|
|
|
|
return (
|
|
|
|
<div>
|
|
|
|
<div>
|
|
|
|
<ApplyForAddOrgModal ref="applyForAddOrgModal" wrappedComponentRef={(form) => this.applyForAddOrgForm = form} schoolName={school}
|
|
|
|
<ApplyForAddOrgModal ref="applyForAddOrgModal" wrappedComponentRef={(form) => this.applyForAddOrgForm = form} schoolName={school}
|
|
|
|
{...propsWithoutForm}></ApplyForAddOrgModal>
|
|
|
|
{...propsWithoutForm} addOrgSuccess={this.addOrgSuccess}
|
|
|
|
|
|
|
|
></ApplyForAddOrgModal>
|
|
|
|
<ApplyForAddChildOrgModal ref="applyForAddChildOrgModal" schoolName={school} schoolId={school_id} departmentName={departmentsName}
|
|
|
|
<ApplyForAddChildOrgModal ref="applyForAddChildOrgModal" schoolName={school} schoolId={school_id} departmentName={departmentsName}
|
|
|
|
{...propsWithoutForm} wrappedComponentRef={(form) => this.applyForAddChildOrgForm = form} ></ApplyForAddChildOrgModal>
|
|
|
|
{...propsWithoutForm} wrappedComponentRef={(form) => this.applyForAddChildOrgForm = form}
|
|
|
|
|
|
|
|
addChildOrgSuccess={this.addChildOrgSuccess}
|
|
|
|
|
|
|
|
></ApplyForAddChildOrgModal>
|
|
|
|
|
|
|
|
|
|
|
|
<div className="basicForm">
|
|
|
|
<div className="basicForm">
|
|
|
|
<style>{`
|
|
|
|
<style>{`
|
|
|
|
.formItemInline {
|
|
|
|
.formItemInline {
|
|
|
|
display: flex;
|
|
|
|
display: flex;
|
|
|
|
margin-bottom: 20px;
|
|
|
|
margin-bottom: 10px;
|
|
|
|
position:relative;
|
|
|
|
position:relative;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.formItemInline .ant-form-explain{
|
|
|
|
.formItemInline .ant-form-explain{
|
|
|
|
position:absolute;
|
|
|
|
/* position:absolute;*/
|
|
|
|
bottom:-20px;
|
|
|
|
bottom:-20px;
|
|
|
|
left:0px;
|
|
|
|
left:0px;
|
|
|
|
width:100%;
|
|
|
|
width:100%;
|
|
|
@ -544,19 +642,29 @@ class AccountBasic extends Component {
|
|
|
|
// type: 'array',
|
|
|
|
// type: 'array',
|
|
|
|
required: true,
|
|
|
|
required: true,
|
|
|
|
message: '请先选择学校/单位',
|
|
|
|
message: '请先选择学校/单位',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 做不了,输入时和submit时都会执行这里
|
|
|
|
|
|
|
|
// validator: (rule, value, callback) => {
|
|
|
|
|
|
|
|
// if (this.this_school_id) {
|
|
|
|
|
|
|
|
// callback();
|
|
|
|
|
|
|
|
// return;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// callback('请先选择学校/单位');
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
}],
|
|
|
|
}],
|
|
|
|
})(
|
|
|
|
})(
|
|
|
|
<Select width={400} showSearch onSearch={this.filterList} onChange={this.changeList}>
|
|
|
|
<AutoComplete width={400} showSearch onSearch={this.filterList} onChange={this.changeList}>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
filterSchoolList && filterSchoolList.map((item,key)=>{
|
|
|
|
filterSchoolList && filterSchoolList.map((item,key)=>{
|
|
|
|
return(<Option value={item.name} key={item.id}>{item.name}</Option>)
|
|
|
|
return(<Option value={item.name} key={item.id}>{item.name}</Option>)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</Select>
|
|
|
|
</AutoComplete>
|
|
|
|
)}
|
|
|
|
)}
|
|
|
|
</Form.Item>
|
|
|
|
</Form.Item>
|
|
|
|
<div style={{marginLeft: '100px',height:"20px",lineHeight:"20px"}}>
|
|
|
|
<div style={{marginLeft: '100px',height:"20px",lineHeight:"20px"}}>
|
|
|
|
{!filterSchoolList || (filterSchoolList && filterSchoolList.length==0 )&&
|
|
|
|
{!filterSchoolList || (filterSchoolList && filterSchoolList.length==0 )&& school &&
|
|
|
|
<span>
|
|
|
|
<span>
|
|
|
|
<span style={{color: '#CDCDCD'}}>未找到包含“{school}”的高校,</span>
|
|
|
|
<span style={{color: '#CDCDCD'}}>未找到包含“{school}”的高校,</span>
|
|
|
|
<span style={{color: '#4CACFF', cursor: 'pointer'}} onClick={this.showApplyForAddOrgModal}>申请新增</span>
|
|
|
|
<span style={{color: '#4CACFF', cursor: 'pointer'}} onClick={this.showApplyForAddOrgModal}>申请新增</span>
|
|
|
@ -573,9 +681,16 @@ class AccountBasic extends Component {
|
|
|
|
// type: 'array',
|
|
|
|
// type: 'array',
|
|
|
|
required: true,
|
|
|
|
required: true,
|
|
|
|
message: '请先选择院系/部门',
|
|
|
|
message: '请先选择院系/部门',
|
|
|
|
|
|
|
|
// validator: (rule, value, callback) => {
|
|
|
|
|
|
|
|
// if (this.this_department_id) {
|
|
|
|
|
|
|
|
// callback();
|
|
|
|
|
|
|
|
// return;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// callback('请先选择院系/部门');
|
|
|
|
|
|
|
|
// }
|
|
|
|
}],
|
|
|
|
}],
|
|
|
|
})(
|
|
|
|
})(
|
|
|
|
<Select width={400} showSearch onSearch={this.searchDepartment} onChange={this.changeDepartment}>
|
|
|
|
<AutoComplete width={400} showSearch onSearch={this.searchDepartment} onChange={this.changeDepartment}>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
filterDepartments && filterDepartments.map((item,key)=>{
|
|
|
|
filterDepartments && filterDepartments.map((item,key)=>{
|
|
|
|
return(
|
|
|
|
return(
|
|
|
@ -583,12 +698,12 @@ class AccountBasic extends Component {
|
|
|
|
)
|
|
|
|
)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</Select>
|
|
|
|
</AutoComplete>
|
|
|
|
)}
|
|
|
|
)}
|
|
|
|
</Form.Item>
|
|
|
|
</Form.Item>
|
|
|
|
<div style={{marginLeft: '100px',height:"20px",lineHeight:"20px"}}>
|
|
|
|
<div style={{marginLeft: '100px',height:"20px",lineHeight:"20px"}}>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
!filterDepartments || (filterDepartments && filterDepartments.length==0 )&&
|
|
|
|
!filterDepartments || (filterDepartments && filterDepartments.length==0 )&& departmentsName &&
|
|
|
|
<span>
|
|
|
|
<span>
|
|
|
|
<span style={{color: '#CDCDCD'}}>未找到包含“{departmentsName}”的院系/部门,</span>
|
|
|
|
<span style={{color: '#CDCDCD'}}>未找到包含“{departmentsName}”的院系/部门,</span>
|
|
|
|
<span style={{color: '#4CACFF', cursor: 'pointer'}} onClick={this.showApplyForAddChildOrgModal}>申请新增</span>
|
|
|
|
<span style={{color: '#4CACFF', cursor: 'pointer'}} onClick={this.showApplyForAddChildOrgModal}>申请新增</span>
|
|
|
|