| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377 | import { Component } from 'react'import Taro from '@tarojs/taro'import { connect } from 'react-redux'import {View, Input, Image} from '@tarojs/components'import {login,getWorkingHours,setOpenId} from '../../utils/servers/servers';import { add, minus, asyncAdd } from '../../actions/counter'import { AtButton,AtIcon,AtModal  } from 'taro-ui'import NavBar from '../../components/common/NavBar';import BG from '../../image/bg.jpg';import 'taro-ui/dist/style/components/button.scss';import 'taro-ui/dist/style/components/loading.scss';import 'taro-ui/dist/style/components/icon.scss';import 'taro-ui/dist/style/components/modal.scss';import selectIcon from '../../image/select.png' ;import './index.less'@connect(({ counter }) => ({  counter}), (dispatch) => ({  add () {    dispatch(add())  },  dec () {    dispatch(minus())  },  asyncAdd () {    dispatch(asyncAdd())  }}))class Login extends Component {  constructor(props) {    super(props);    this.state={      username:'',      password:'',      isOpened:false,      openedType:0,      usernameList:Taro.getStorageSync('usernameList') || [],      rememberPassword:true    }    this.login = this.login.bind(this);    this.authorization = this.authorization.bind(this);    this.setUsernameList = this.setUsernameList.bind(this);    this.getUsernameList = this.getUsernameList.bind(this);    this.getWorkingHours = this.getWorkingHours.bind(this);  }  componentDidShow () {  }  componentDidMount() {  }  authorization(){    this.setState({      loading:true,    })    let _this= this;    Taro.getSetting({      withSubscriptions: true,      success:(res)=>{        console.log(res.subscriptionsSetting,'res.subscriptionsSetting')        if(res.subscriptionsSetting.mainSwitch){          if(res.subscriptionsSetting['j7WH3EwQnxGxwuV2HwmJhryxySPE8vOiV5cVOpp-42I'] === "reject" || res.subscriptionsSetting['pWia-KJPFwDM8ReDu_BOa9FJn31VFc81bp3yxfBmIRI'] === "reject" || res.subscriptionsSetting['vo28uzT2sLS-9ioroNyZbMSvu0mMvf6le2pDZVN891U'] === "reject"){            this.setState({              isOpened:true,              loading:false,              openedType:1            })            return;          }          Taro.requestSubscribeMessage({ //获取下发权限            tmplIds: [              'pWia-KJPFwDM8ReDu_BOa9FJn31VFc81bp3yxfBmIRI',              'j7WH3EwQnxGxwuV2HwmJhryxySPE8vOiV5cVOpp-42I',              'vo28uzT2sLS-9ioroNyZbMSvu0mMvf6le2pDZVN891U'            ], //此处写在后台获取的模板ID,可以写多个模板ID,看自己的需求             success: function (s) {                _this.setState({                  loading:false,                })               _this.login();            },            fail: function (err) {              _this.setState({                loading:false,              })              console.log(err)            }          })        }else{          this.setState({            isOpened:true,            loading:false,          })        }      },      fail:()=>{        this.setState({          loading:false,        })      }    })  }  login(){    if(!this.state.username){      Taro.showToast({        title: '请输入用户名',        icon: 'none',        duration: 2000      })      return;    }    if(!this.state.password){      Taro.showToast({        title: '请输入密码',        icon: 'none',        duration: 2000      })      return;    }    this.setState({      loading:true,    })    login({      username:this.state.username,      password:this.state.password    }).then((msg)=>{      this.setState({        loading:false      });      if(!msg.data.openId){        Taro.login({          success: (res)=>{            setOpenId({              code:res.code,            }).then(v=>{              if(v.error.length === 0){                this.setUsernameList(this.state.username,this.state.password);                Taro.eventCenter.trigger('getStorageSync');                this.getWorkingHours(msg.data.departmentId);              }else{                Taro.showToast({                  title:v.error[0].message,                  icon:'none',                })              }            })          },          fail:()=>{            Taro.showToast({title:'系统错误,请稍后重试'})          }        });      }else{        this.setUsernameList(this.state.username,this.state.password);        Taro.eventCenter.trigger('getStorageSync');        this.getWorkingHours(msg.data.departmentId);      }    }).catch((err)=>{      console.log(err)      this.setState({        loading:false      })    })  }  getWorkingHours(depId){    getWorkingHours({      depId    }).then((msg)=>{      if(msg.error.length === 0){        let obj = Taro.getStorageSync('userInfor');        obj.workTimeInfor = msg.data;        Taro.setStorageSync('userInfor', obj);        Taro.switchTab({          url: '/pages/punchClock/index',        })      }else{        Taro.showToast({title:msg.error[0].message,icon:'none'})      }    }).catch((err)=>{      console.log(err)    })  }  setUsernameList(username,password){    if(!this.state.rememberPassword){      let usernameList = Taro.getStorageSync('usernameList') || [];      let index = usernameList.findIndex(v=>v.username === username);      if(index !== -1){        usernameList.splice(index,1)      }      Taro.setStorageSync('usernameList', usernameList);    }else{      let usernameList = Taro.getStorageSync('usernameList') || [];      let index = usernameList.findIndex(v=>v.username === username);      if(index === -1){        usernameList.push({          username,          password        })      }else{        usernameList[index]={          username,          password        }      }      Taro.setStorageSync('usernameList', usernameList);    }  }  getUsernameList(value = this.state.username){    let usernameList = Taro.getStorageSync('usernameList') || [];    let arr = [];    for(let i of usernameList){      if(i.username.indexOf(value) !== -1){        arr.push(i)      }    }    this.setState({      usernameList:arr,      isopenUsernameList:true    })  }  render () {    return (      <View className='login' onClick={()=>{        this.setState({          isopenUsernameList:false        })      }}>        <NavBar          extClass='NavBar'          title='科德集团'          background='#0000'          color='#FFF'          onHome={()=>{}}        />        <View className='welcome'>          <Image src={BG} className='bg' mode='heightFix'/>          <View className='welcomeTitle'>科德科技服务系统</View>          <View className='welcomeTitle'>欢迎您!</View>        </View>        <View className='loginContent'>          <View className='loginItem'>            <AtIcon value='user' size='20' color='#999999'/>            <View className='usernameContent'>              <Input                style={{marginLeft:'15px',width:'100%'}}                type='text'                placeholder='请输入您的系统账户'                value={this.state.username}                onInput={(v)=>{                  this.setState({                    username: v.detail.value                  })                  this.getUsernameList(v.detail.value);                }}                onFocus={()=>{                  this.getUsernameList();                }}                onBlur={()=>{                  // this.setState({                  //   isopenUsernameList:false                  // })                }}              />            </View>          </View>          <View className='usernameListContent'>            {this.state.isopenUsernameList && this.state.usernameList.length >0 ? <View className='usernameList'>              {                this.state.usernameList.map((v,k)=>(                  <View key={k} className='usernameItem' onClick={()=>{                    this.setState({                      username:v.username,                      password:v.password,                      isopenUsernameList:false                    })                    console.log({                      username:v.username,                      password:v.password,                      isopenUsernameList:false                    })                  }}>                    <AtIcon value='user' size='20' color='#c6c4c4'/>                    <View className='value'>                      <View className='name'>{v.username}</View>                      <View className='password'>*******</View>                    </View>                  </View>                ))              }            </View> : null}          </View>          <View className='loginItem'>            <AtIcon value='lock' size='20' color='#999999'/>            <Input              style={{marginLeft:'15px',width:'100%'}}              type='password'              placeholder='请输入密码'              value={this.state.password}              onInput={(v)=>{                this.setState({                  password: v.detail.value                })              }}            />          </View>          <View className='rememberPassword'>            <View className='selectContent' onClick={()=>{              this.setState({                rememberPassword:!this.state.rememberPassword              })            }}>              <Image src={selectIcon} className='selectIcon' style={{visibility:this.state.rememberPassword ? "visible" : "hidden"}}/>            </View>            记住密码          </View>          <AtButton type='primary' 	circle loading={this.state.loading} onClick={this.authorization}>登录</AtButton>          <View className='tips'>            暂无账号?请联系管理员进行添加          </View>          <View className='company'>            湖南科德信息咨询集团有限公司          </View>        </View>        <AtModal          isOpened={this.state.isOpened}          title='提醒'          cancelText='取消'          confirmText='确认'          onClose={()=>{            this.setState({              isOpened:false,              openedType:0,            })          }}          onCancel={()=>{            this.setState({              isOpened:false,              openedType:0            })          }}          onConfirm={()=>{            this.setState({              isOpened:false,              openedType:0            },()=>{              Taro.openSetting({                success:(value)=> {                }              })            })          }}          content={this.state.openedType === 1 ? '您存在拒绝接收的消息类型,请点击确认按钮,前往设置页->通知管理,点击不接受的消息通知类型,调整为允许' : '您关闭了接收通知权限,将不能收到订阅通知,请点击确认按钮,前往设置页->通知管理->接收通知,打开接收通知权限'}        />      </View>    )  }}export default Login
 |