/** * Created by RaoMeng on 2018/11/6 * Desc: 账号绑定 */ import React, {Component} from 'react' import 'css/account-bind.css' import {Avatar, Input, Icon, Button} from 'antd' import {fetchGet, fetchPost} from "../../utils/fetchRequest"; import {API} from "../../configs/api.config"; import {getIntValue, getStrValue, isObjEmpty} from "../../utils/common"; import {Toast} from 'antd-mobile' import {regExpConfig} from "../../configs/regexp.config"; import {connect} from 'react-redux' import {switchUser} from "../../redux/actions/userInfo"; let mType = 'parents' let mSeconds = 0 class AccountBind extends Component { componentWillMount() { this.bodyHeight = document.documentElement.clientHeight if (this.props.match.params.type) { mType = this.props.match.params.type } if (mType == 'parents') { document.title = '家长端绑定' } else if (mType == 'teacher') { document.title = '教职工端绑定' } } constructor() { super() this.state = { account: '', phone: '', code: '', obtainText: '获取验证码', } } render() { const {account, phone, code, obtainText} = this.state const idClear = account ? : null; const phoneClear = phone ? : null; const codeClear = code ? : null; const idIcon = const phoneIcon = const codeIcon = const obtainCode =
{obtainText}
return (
{isObjEmpty(this.props.userInfo.userAvatar) ? : }
{/* this.accountInput = input} onChange={this.accountChange} value={account} type='number' onKeyPress={this.phoneKeyPress}/>*/} this.phoneInput = input} onChange={this.phoneChange} value={phone} type='number' onKeyPress={this.phoneKeyPress} addonAfter={obtainCode}/> this.codeInput = input} onChange={this.codeChange} value={code} type='number' onKeyPress={this.phoneKeyPress}/>
); } phoneKeyPress = (event) => { const invalidChars = ['-', '+', 'e', '.', 'E'] if (invalidChars.indexOf(event.key) !== -1) { event.preventDefault() } } accountChange = (e) => { this.setState({ account: e.target.value }) } phoneChange = (e) => { this.setState({ phone: e.target.value }) } codeChange = (e) => { this.setState({ code: e.target.value }) } accountEmpty = () => { this.accountInput.focus() this.setState({ account: '' }) } phoneEmpty = () => { this.phoneInput.focus() this.setState({ phone: '' }) } codeEmpty = () => { this.codeInput.focus() this.setState({ code: '' }) } obtainCode = () => { if (mSeconds !== 0) { return } const {phone} = this.state if (isObjEmpty(phone)) { Toast.info('请输入手机号码!', 2, null, false) return } if (!regExpConfig.mobile.test(phone)) { Toast.fail('请输入正确的手机号码!', 2, null, false) return } Toast.loading('验证码获取中...', 0) this.setState({ obtainText: '获取中' }) fetchGet(API.SEND_CODE, { userPhone: phone }).then(response => { Toast.hide() if (response.success) { Toast.success('验证码已发送,请注意查收', 2) mSeconds = 60 this.setState({ obtainText: '剩余' + mSeconds + '秒' }) this.countdown() } else { Toast.fail(response.data.message, 2) } }).catch(error => { Toast.hide() this.setState({ obtainText: '获取验证码' }) Toast.fail(error || '获取验证码失败', 2) }) } countdown = () => { setTimeout(() => { if (mSeconds > 0) { mSeconds-- this.setState({ obtainText: '剩余' + mSeconds + '秒' }) this.countdown() } else { this.setState({ obtainText: '获取验证码' }) } }, 1000) } bindEvent = () => { Toast.loading('信息绑定中...') const {phone, code} = this.state if (isObjEmpty(phone, code)) { Toast.fail('请完善所有输入项!') return } fetchPost(API.BIND_OPENID, { userPhone: phone, code: code, openid: this.props.userInfo.userOpenid, headimgurl: this.props.userInfo.userAvatar, }).then(response => { Toast.hide() if (mType == 'parents') { switchUser({ role: 1, })() } else if (mType == 'teacher') { switchUser({ role: 2, })() } if (response && response.data) { if (response.data.teacherDOS) { const teacherDOS = response.data.teacherDOS[0] switchUser({ userRole: 2, teacher: { teacherId: getIntValue(teacherDOS, 'teacherId'), userId: getIntValue(teacherDOS, 'userId'), openid: getStrValue(teacherDOS, 'openid'), userPhone: getStrValue(teacherDOS, 'userPhone'), schoolId: getStrValue(teacherDOS, 'schoolId'), schoolName: getStrValue(teacherDOS, 'schoolName'), teacherNumber: getStrValue(teacherDOS, 'teacherNumber'), teacherName: getStrValue(teacherDOS, 'teacherName'), teacherPhoto: getStrValue(teacherDOS, 'teacherPhoto'), teacherAddress: getStrValue(teacherDOS, 'teacherAddress'), teacherEntry: getStrValue(teacherDOS, 'teacherEntry'), teacherBirthday: getStrValue(teacherDOS, 'teacherBirthday'), teacherSex: getStrValue(teacherDOS, 'teacherSex'),//1:男,2:女 } })() } else { switchUser({ teacher: '' })() } if (response.data.parentsDOS) { const parentsDOS = response.data.parentsDOS[0] switchUser({ userRole: 1, parent: { parentId: getIntValue(parentsDOS, 'parentId'), userId: getIntValue(parentsDOS, 'userId'), userPhone: getStrValue(parentsDOS, 'userPhone'), openid: getStrValue(parentsDOS, 'openid'), schoolId: getIntValue(parentsDOS, 'schoolId'), schoolName: getStrValue(parentsDOS, 'schoolName'), parentsName: getStrValue(parentsDOS, 'parentsName'), parentsBirthday: getStrValue(parentsDOS, 'parentsBirthday'), parentsSex: getIntValue(parentsDOS, 'parentsSex'), parentsPhoto: getStrValue(parentsDOS, 'parentsPhoto'), parentsAddress: getStrValue(parentsDOS, 'parentsAddress'), } })() } else { switchUser({ parent: '' })() } } this.props.history.push('/homePage') }).catch(error => { Toast.hide() if (typeof error === 'string') { Toast.fail(error, 2) } else { Toast.fail('绑定失败') } }) } } let mapStateToProps = (state) => ({ userInfo: {...state.redUserInfo} }) let mapDispatchToProps = (dispatch) => ({}) export default connect(mapStateToProps, mapDispatchToProps)(AccountBind)