/**
* Created by RaoMeng on 2019/1/15
* Desc: 通讯录搜索页面
*/
import React, {Component} from 'react'
import PhonesBean from 'model/PhonesBean'
import {getStrValue, isObjEmpty} from "../../utils/common";
import RefreshLayout from "../../components/RefreshLayout";
import PhonesItem from "../../components/PhonesItem";
import {Toast, SearchBar} from "antd-mobile";
import {List, Skeleton} from 'antd'
import {_baseURL, API} from "../../configs/api.config";
import {fetchGet, fetchPost} from "../../utils/fetchRequest";
import {connect} from 'react-redux'
const mPageSize = 10
let mPageIndex = 0
let mSearchKey = ''
class PhonesSearch extends Component {
constructor() {
super()
this.state = {
isRefreshing: false,
phonesList: [],
isLoading: false,
searchKey: '',
searchText: '',
}
}
componentWillMount() {
this.mType = this.props.match.params.type
if (this.mType === 'teacher') {
this.title = '搜索老师'
} else if (this.mType === 'parent') {
this.title = '搜索学生'
}
}
componentDidMount() {
this.searchInput.focus()
document.title = this.title
}
componentWillUnmount() {
}
render() {
const {phonesList, isRefreshing, isLoading, searchText} = this.state
return (
this.searchInput = ref}
value={searchText} onSubmit={this.searchSubmit}
onChange={this.searchChange} onClear={this.searchClear}
onCancel={this.searchClear}/>
(
)}/>
)
}
searchChange = (value) => {
mSearchKey = value
this.setState({
searchText: value
})
}
searchClear = (e) => {
mPageIndex = 0
this.setState({
isLoading: true,
isRefreshing: false,
searchText: '',
searchKey: ''
}, () => {
this.loadPhones()
})
}
searchSubmit = (value) => {
mPageIndex = 0
this.setState({
isLoading: true,
isRefreshing: false,
searchKey: value
}, () => {
this.loadPhones()
})
}
loadPhones = () => {
try {
this.setState({
isRefreshing: true
})
} catch (e) {
}
if (this.mType == 'parent') {
this.url = API.GET_PARENT_PHONES_BYTEACHER
this.params = {
teacherId: this.props.userInfo.user.userFunId
}
this.getPhones()
} else if (this.mType == 'teacher') {
this.url = API.TEACHER_PHONES_LIST
this.params = {
teacherId: this.props.userInfo.user.userFunId
}
this.getPhones()
} else {
Toast.hide()
this.setState({
isRefreshing: false
})
}
}
getPhones = () => {
mPageIndex++
console.log(mPageIndex)
const {phonesList, searchKey} = this.state
if (mPageIndex === 1) {
phonesList.length = 0
}
fetchPost(this.url, {
pageIndex: mPageIndex,
pageSize: mPageSize,
selectKey: searchKey,
...this.params
}).then(response => {
Toast.hide();
if (response && response.data) {
if (this.mType == 'teacher') {
response.data.forEach((item, index) => {
let phoneBean = new PhonesBean()
phoneBean.icon = require('imgs/ic_head' + (index % 15 + 1) + '.png')
phoneBean.icon = _baseURL + getStrValue(item, 'teacherPhoto')
phoneBean.name = getStrValue(item, 'teacherName')
phoneBean.phone = [getStrValue(item, 'userPhone')]
// phoneBean.claName = getStrValue(item, 'schName')
phoneBean.children = ['']
phonesList.push(phoneBean)
})
} else if (this.mType == 'parent') {
let studentList = []
response.data.forEach((item, index) => {
if (item.studentDOS) {
studentList = studentList.concat(item.studentDOS)
}
})
if (!isObjEmpty(studentList)) {
studentList.forEach((item, index) => {
let phoneBean = new PhonesBean()
let phones = []
phoneBean.icon = require('imgs/ic_head' + (index % 15 + 1) + '.png')
phoneBean.icon = _baseURL + getStrValue(item, 'stuPhoto')
phoneBean.name = getStrValue(item, 'stuName')
phoneBean.claName = this.title
if (item.parentsDOS && item.parentsDOS.length > 0) {
item.parentsDOS.forEach((ite, ind) => {
phoneBean.children.push(getStrValue(ite, 'parentsName'))
phones.push(getStrValue(ite, 'userPhone'))
})
}
// if (phones.length > 0) {
phoneBean.phone = phones
// }
phonesList.push(phoneBean)
})
}
}
} else {
if (mPageIndex > 1) {
mPageIndex--
}
}
this.setState({
phonesList,
isLoading: false,
isRefreshing: false,
})
}).catch(error => {
Toast.hide()
if (mPageIndex > 1) {
mPageIndex--
}
if (typeof error === 'string') {
Toast.fail(error, 2)
} else {
Toast.fail('请求异常')
}
this.setState({
isLoading: false,
isRefreshing: false,
})
})
}
}
let mapStateToProps = (state) => ({
userInfo: {...state.redUserInfo},
})
let mapDispatchToProps = (dispatch) => ({})
export default connect(mapStateToProps, mapDispatchToProps)(PhonesSearch)