import React, { Component } from 'react'; import { Redirect } from 'react-router'; import Dialog, { DialogActions, DialogContent, DialogContentText, DialogTitle, } from 'material-ui/Dialog'; import {notification,Modal } from 'antd'; import axios from 'axios'; import './LoginDialog.css'; import { broadcastChannelPostMessage } from 'educoder' import Notcompletedysl from "../user/Notcompletedysl"; const $ = window.$; var wait = 60; function time(btn){ if (wait==0) { $(btn).addClass("btn_orange_bg"); btn.removeAttribute("disabled"); btn.innerHTML = "获取验证码"; wait = 60; return; }else{ $(btn).removeClass("btn_orange_bg"); btn.setAttribute("disabled", "disabled"); btn.innerHTML = wait + "s后重试"; wait--; } setTimeout(function(){ time(btn); },1000); } function get_login_verification_code(btn) { if($(btn).attr("disabled")) { return false; } else { if (/^1\d{10}$/.test($("#pass_name_input").val()) || /^[a-zA-Z0-9]+([.\-_\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/.test($("#pass_name_input").val())){ if(!window.IsPC() || $('#quick-drag .drag_text').html() == "验证通过") { $("#passlogin_error_notice").hide(); btn.setAttribute("disabled", "disabled"); var val = ''; var type = 6; if(/^1\d{10}$/.test($("#pass_name_input").val())){ type = 6; } else if(/^[a-zA-Z0-9]+([.\-_\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/.test($("#pass_name_input").val())){ type = 7; } $.get( '/account/get_verification_code', { value: $('#pass_name_input').val().trim(), type: type}, function (data) { if (data.status == "2") { if(type == 6){ $("#pass_name_input").next().find("p").html("该手机号尚未注册,你可以去注册").show(); } else{ $("#pass_name_input").next().find("p").html("该邮箱尚未绑定,你可以登录后去绑定").show(); } } else { $("#pass_name_input").next().find("p").hide(); if(type == 6){ $("#send_code_notice").html(data.msg).show(); } else{ var uurl = window.gotoEmail(data.link); $("#send_code_notice").html("验证码已经发送到您的邮箱,去查收").show(); } time(btn); } }); } else{ $("#passlogin_error_notice").show(); } } } } class LoginDialog extends Component { constructor(props) { super(props) this.state = { open: true, login:0, speedy:1, regular:0, loginValue:'', passValue:'', isGoing:true, isGoingValue:1, disabled:true, bottonclass:'log-botton mt5', dialogBox:'dialogBox', shortcutValue:'', shortcutnum:1, disabledType:true, gaincode:'gain-code', authCodeType:true, authCodeclass:'log-botton mt5', isRender: false, MyEduCoderModals:false, Phonenumberisnotco:undefined, Phonenumberisnotcobool:false, weixinlogin:false, qqlogin:false }; } enter=(num) =>{ this.setState({login:num,speedy:1,dialogBox:'dialogBox'}); } register=(num) =>{ this.setState({login:1,speedy:num,dialogBox:'dialogBox2'}); } inputOnBlur = (e, id) => { this.Emailphonenumberverification(e.target.value, 1); }; // 输入页面 loginChange = (e) =>{ var stirngt=""; if(e.target.value.length>0){ var str= e.target.value.replace(/\s*/g,"") stirngt=str; }else{ stirngt= e.target.value; } if (e.target.value.length === 0) { this.setState({ loginValue: stirngt, Phonenumberisnotco:undefined, }) }else{ this.setState({ loginValue: stirngt, Phonenumberisnotco:undefined, }) } // let reg = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/; // let reg1 = /^1\d{10}$/; // let reg2=/^[a-zA-z]\w{3,14}$/; // // let reg3=/^[a-zA-Z0-9]+([.\-_\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/; // let value=this.refs.loginPassText.value; // let valuenum= value.length; // if(valuenum>0){ // if(!reg.test(value)&&!reg1.test(value)&&!reg2.test(value)){ // this.setState({regular:1}) // return // }else{ // // this.setState({loginValue:value}); // this.setState({regular:0}); // var stirngt; // if(value.length>0){ // var str= value.replace(/\s*/g,"") // stirngt=str; // }else{ // stirngt= value; // } // this.setState({ // loginValue:stirngt, // }); // } // }else{ // this.setState({loginValue:value}); // var stirngt; // if(value.length>0){ // var str= value.replace(/\s*/g,"") // stirngt=str; // }else{ // stirngt= value; // } // this.setState({ // loginValue:stirngt, // }); // } }; //邮箱手机号验证 Emailphonenumberverification = (value, id) => { var url = `/accounts/valid_email_and_phone.json`; axios.get((url), { params: { login: value, type: 1, } }).then((result) => { if(result){ if(result.data.status===-2){ if(result.data.message==="该手机号码或邮箱已被注册"){ this.setState({ Phonenumberisnotco: undefined, Phonenumberisnotcobool: false, }) }else { this.setState({ Phonenumberisnotco: result.data.message, Phonenumberisnotcobool: true, }) } return; }else { this.setState({ Phonenumberisnotco: undefined, Phonenumberisnotcobool: false, }) return; } } }).catch((error) => { }) }; passwordChange = () =>{ let value =this.refs.passwordText.value; let valuenum= value.length; this.setState({disabled:false}) this.setState({bottonclass:'log-botton mt5 edu-back-blue'}) if(valuenum==0){ this.setState({bottonclass:'log-botton mt5'}) this.setState({disabled:true}) } this.setState({passValue:value}) } handleInputChange =(event)=> { const target = event.target; const value = target.type === 'checkbox' ? target.checked : target.value; const name = target.name; this.setState({[name]:value}) if(value===true){ this.setState({isGoingValue:1}) }else{ this.setState({isGoingValue:0}) } } // 快捷注册 shortcutIdChange=()=>{ let reg = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/; let reg1 = /^1\d{10}$/; let reg2=/^[a-zA-z]\w{3,14}$/; let value=this.refs.shortcutText.value; let valuenum= value.length; if(valuenum>0){ if(!reg.test(value)&&!reg1.test(value)&&!reg2.test(value)){ this.setState({shortcutnum:0}) this.setState({disabledType:true}) this.setState({gaincode : 'gain-code'}) return }else{ this.setState({gaincode : 'gain-code edu-back-blue'}) this.setState({shortcutValue:value}) this.setState({shortcutnum:1}) this.setState({disabledType:false}) } }else{ this.setState({shortcutValue:value}) } } authCodeChange=()=>{ let value=this.refs.authCodeText.value; let valuenum= value.length; if(valuenum>3){ this.setState({authCodeType:false}) this.setState({authCodeclass:'log-botton mt5 edu-back-blue'}) }else if(valuenum==0){ this.setState({authCodeType:true}) this.setState({authCodeclass:'log-botton mt5'}) } } get_login_verification_code=()=>{ get_login_verification_code($('#get_verification_code')[0]) } dragWrapper=() =>{ const $ = window.$ $.fn.drag = function(options) { var x, drag = this, isMove = false, defaults = { }; var options = $.extend(defaults, options); var handler = drag.find('.handler'); var drag_bg = drag.find('.drag_bg'); var text = drag.find('.drag_text'); var maxWidth = 100 //鼠标按下时候的x轴的位置 handler.mousedown(function(e) { isMove = true; x = e.pageX - parseInt(handler.css('left'), 10); maxWidth = drag.width() - handler.width() - 2; //能滑动的最大间距 }); $(document).mousemove(function(e) { var _x = e.pageX - x;// _x = e.pageX - (e.pageX - parseInt(handler.css('left'), 10)) = x if (isMove) { if (_x > 0 && _x <= maxWidth) { handler.css({'left': _x}); drag_bg.css({'width': _x}); } else if (_x > maxWidth) { //鼠标指针移动距离达到最大时清空事件 dragOk(); } } }).mouseup(function(e) { isMove = false; var _x = e.pageX - x; if (_x < maxWidth) { //鼠标松开时,如果没有达到最大距离位置,滑块就返回初始位置 handler.css({'left': 0}); drag_bg.css({'width': 0}); } }); //清空事件 function dragOk() { handler.removeClass('handler_bg').addClass('handler_ok_bg'); text.removeClass('slidetounlock').text('验证通过').css({'color':'#fff'}); //modify // drag.css({'color': '#fff !important'}); handler.css({'left': maxWidth}); // add drag_bg.css({'width': maxWidth}); // add handler.unbind('mousedown'); $(document).unbind('mousemove'); $(document).unbind('mouseup'); } } setTimeout(()=>{ $('#quick-drag').drag(); }, 4000) } componentWillReceiveProps(nextProps) { this.setState({ isRender:nextProps.isRender }) // console.log(nextProps.isRender); } IsPC=()=>{ var userAgentInfo = navigator.userAgent; var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; var flag = true; for (var v = 0; v < Agents.length; v++) { if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break; } } return flag; } componentDidMount() { let flag = this.IsPC(); //true为PC端,false为手机端 this.setState({ isphone:flag }) if(this.props.isRender!=undefined){ this.setState({ isRender:this.props.isRender }) } // $(document).on("showLoginDialog", (e, args)=>{ // this.setState({ // isRender: true // }) // }) this.dragWrapper(); axios.interceptors.response.use((response) => { if(response!=undefined) if (response&&response.data.status === 401) { this.setState({ isRender: true }) } return response; }, (error) => { // // if (error.response && error.response.data.error === '401 Unauthorized') { // // this.back_url = window.location.href; // // this.setState({ // // isRender: true // // }) // // // TODO 这里如果样式变了会出现css不加载的情况 // // const $ = window.$; // // const isCssLoaded = window.getComputedStyle($('.log_nav li.active')[0], null) // // .getPropertyValue('border-bottom') // // == "2px solid rgb(69, 155, 229)" // // if (!isCssLoaded) { // // const isPort3007 = window.location.port == 3007; // // let _url_origin = isPort3007 ? 'http://localhost:3000' : '' // // // // $('head').append( $('') // // .attr('href', `${_url_origin}/stylesheets/educoder/edu-main.css`) ); // // $('head').append( $('') // // .attr('href', `${_url_origin}/stylesheets/educoder/edu-all.css`) ); // // } // // } // // return Promise.reject(error); }); } handleDialogClose = () => { // if(this.props.match.path==='/'){ // this.setState({ // isRender: false // }) // this.props.Modifyloginvalue(); // }else{ // if(this.props.isloginCancel===undefined){ // window.location.href="/"; // this.props.Modifyloginvalue(); // // this.setState({ // // isRender: false // // }) // // this.props.Modifyloginvalue(); // }else{ // this.setState({ // isRender: false // }) // this.props.Modifyloginvalue(); // } this.setState({ isRender: false }) this.props.Modifyloginvalue(); // this.setState({ // isRender: false // }) // try { // this.props.Modifyloginvalue(); // }catch (e) { // // } } loginEDU=()=>{ let {loginValue,passValue,regular,isGoingValue}=this.state; if(regular===1){ return } let newloginValue=loginValue.replace(/(^\s*)|(\s*$)/g, ""); let newpassValue=passValue.replace(/(^\s*)|(\s*$)/g, ""); let url='/accounts/login.json' axios.post(url, { login:newloginValue, password:newpassValue, autologin:isGoingValue } ).then((response) => { if(response===undefined){ return } if(response.status===200){ if (response.data.status === 402) { // window.location.href = response.data.url; }else if (response.data.status === -2) { notification.open({ message: '提示', description:response.data.message, }); }else{ broadcastChannelPostMessage('refreshPage') this.setState({ isRender:false }) this.props.Modifyloginvalue(); window.location.reload(); } } // try { // this.props.Modifyloginvalue(); // }catch (e) { // // } }).catch((error) => { console.log("356"); console.log(error) }) }; setNotcompleteds=()=>{ this.setState({ Notcompleteds:true, MyEduCoderModals:false }) }; setMyEduCoderModals=()=>{ this.setState({ MyEduCoderModals:true }) }; onKeydowns=(e)=>{ let {disabled}=this.state; if( disabled===false&& e.keyCode === 13){ this.loginEDU() console.log(1) } }; getloginurl=(url)=>{ window.location.href = url; }; openweixinlogin=()=>{ this.setState({ weixinlogin:true }) } openqqlogin=()=>{ this.setState({ qqlogin:true }) //window.location.href=`https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=101508858&redirect_uri=https%3a%2f%2f${window.location.host}%2otherloginqq&response_type=code` window.location.href=`https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=101508858&redirect_uri=https%3a%2f%2ftest-newweb.educoder.net%2fotherloginqq&response_type=code` // window.location.href=`https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=101508858&redirect_uri=https%3a%2f%2fwww.educoder.net%2fotherloginstart&tp=qq&response_type=code` } hideweixinlogin=()=>{ this.setState({ weixinlogin:false, qqlogin:false }) } render() { let{qqlogin,login,isGoing,isGoingValue,disabled,bottonclass,Phonenumberisnotco, dialogBox, isRender,weixinlogin}=this.state; if (isRender === undefined) { isRender = false } // console.log(this.props) return ( this.handleDialogClose()} > {this.setNotcompleteds()}} /> {this.state.isphone===false?:""} {isRender===true?
{this.handleDialogClose()}}>
{weixinlogin===true?"":
  • {this.enter(0)}}>登录
  • {/*
  • {this.register(0)}}>快捷登录
  • */}
}
{weixinlogin===true?"":
this.inputOnBlur(e, 1)} value={this.state.loginValue} name="username" placeholder="请输入有效的手机号/邮箱号" >

{Phonenumberisnotco}

请输入密码

{/**/}
{} // console.log(1) } > 登录

this.getloginurl("/changepassword")} className="mr3 color-grey-9">忘记密码 this.getloginurl("/register")} className="color-grey-9">注册

{this.state.isphone===true?

———————— 快速登录 ————————

:""}
} {weixinlogin===true?:""} {weixinlogin===true?

this.hideweixinlogin()}>返回账号登录

:""}
{/*快捷登录*/}
:""}
); } } export default LoginDialog ;