From 3d316e2e4e381eb4c58504e15c1af08bdd880d55 Mon Sep 17 00:00:00 2001
From: hjm <63528605@qq.com>
Date: Wed, 24 Jul 2019 18:06:43 +0800
Subject: [PATCH] account
---
.../modules/user/account/AccountBasicEdit.js | 148 +++++++++++++++---
.../user/modal/ApplyForAddChildOrgModal.js | 8 +-
2 files changed, 132 insertions(+), 24 deletions(-)
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}
>