| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380 | 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 { getCurrentPageUrl } from '../../utils/servers/utils'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() {    Taro.showShareMenu({      withShareTicket: true    })  }  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['UGlNqF1VQsxYh6iVKrDuw_EkhrDNU6TXv4snGw4xze8'] === "reject") {            this.setState({              isOpened: true,              loading: false,              openedType: 1            })            return;          }          Taro.requestSubscribeMessage({ //获取下发权限            tmplIds: [              'pWia-KJPFwDM8ReDu_BOa9FJn31VFc81bp3yxfBmIRI',              'j7WH3EwQnxGxwuV2HwmJhryxySPE8vOiV5cVOpp-42I',              'UGlNqF1VQsxYh6iVKrDuw_EkhrDNU6TXv4snGw4xze8'            ], //此处写在后台获取的模板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>        <privacy />        <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                    })                  }}>                    <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
 |