<template> 
 | 
  <view class="login"> 
 | 
    <image class="login_bg" src="@/static/login_bg@2x.png" /> 
 | 
    <image class="login_logo" src="@/static/logo@2x.png" mode="widthFix" /> 
 | 
    <view class="login_title">安泰物流智慧园区</view> 
 | 
    <view class="login_title">物流车司机登录</view> 
 | 
    <view class="login_list"> 
 | 
      <view class="login_list_item"> 
 | 
        <image src="@/static/login_ic_phone@2x.png" mode="widthFix" /> 
 | 
        <input v-model="form.name" maxlength="18" placeholder="请输入姓名" /> 
 | 
      </view> 
 | 
            <view class="login_list_item"> 
 | 
              <image src="@/static/login_ic_phone@2x.png" mode="widthFix" /> 
 | 
              <input v-model="form.phone" maxlength="18" placeholder="请输入手机号" /> 
 | 
            </view> 
 | 
      <view class="login_list_item"> 
 | 
        <image src="@/static/ic_captcha.png" mode="widthFix"></image> 
 | 
        <input 
 | 
          v-model="form.validCode" 
 | 
          placeholder="请输入验证码" 
 | 
          type="text" 
 | 
        /> 
 | 
        <text class="captcha" v-if="countDown == 0" @click="initCaptcha" 
 | 
          >获取验证码</text 
 | 
        > 
 | 
        <text class="placeholder9" v-else>{{ countDown }}</text> 
 | 
      </view> 
 | 
      <view class="login_list_item"> 
 | 
        <image src="@/static/login_ic_password@2x.png" mode="widthFix" /> 
 | 
        <input 
 | 
          v-model="form.password" 
 | 
          type="password" 
 | 
          placeholder="请输入密码" 
 | 
        /> 
 | 
      </view> 
 | 
    </view> 
 | 
    <view class="login_btn"> 
 | 
      <view class="login_btn_n" @click="onLogin">立即注册</view> 
 | 
    </view> 
 | 
    <!--  --> 
 | 
    <u-popup 
 | 
      :show="isShowProtocol" 
 | 
      @close="isShowProtocol = false" 
 | 
      mode="center" 
 | 
    > 
 | 
      <view class="modal">111</view> 
 | 
    </u-popup> 
 | 
  </view> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import { driverRegister, sendSms } from '@/api' 
 | 
export default { 
 | 
  data() { 
 | 
    return { 
 | 
      form: {}, 
 | 
      isShowProtocol: false, 
 | 
      countDown: 0 
 | 
    } 
 | 
  }, 
 | 
  
 | 
  onLoad() { 
 | 
  }, 
 | 
  
 | 
  methods: { 
 | 
    dealChange(e) { 
 | 
      console.log(e) 
 | 
    }, 
 | 
    initCaptcha() { 
 | 
      if (!this.form.phone) return uni.showToast({ 
 | 
        title: '手机号不能为空', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      sendSms({ phone: this.form.phone }).then(res => { 
 | 
        this.countDown = 60 
 | 
        setInterval(() => { 
 | 
          if (this.countDown == 0) return 
 | 
          this.countDown-- 
 | 
        }, 1000) 
 | 
      }) 
 | 
    }, 
 | 
  
 | 
    onLogin() { 
 | 
      const { form } = this 
 | 
            if (!form.name) return uni.showToast({ 
 | 
              title: '姓名不能为空', 
 | 
              icon: 'none' 
 | 
            }) 
 | 
      if (!form.phone) return uni.showToast({ 
 | 
        title: '手机号不能为空', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      if (!form.validCode) return uni.showToast({ 
 | 
        title: '验证码不能为空', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      if (!form.password) return uni.showToast({ 
 | 
        title: '密码不能为空', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      driverRegister({ 
 | 
        ...form 
 | 
      }).then(res => { 
 | 
        if (res && res.code == 200) { 
 | 
                    this.showToast('注册成功,请前往登录') 
 | 
          setTimeout(() => { 
 | 
                        uni.redirectTo({ 
 | 
                          url: "/pages/driver/login" 
 | 
                        }) 
 | 
                    }, 500) 
 | 
        } 
 | 
      }) 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
.login { 
 | 
  width: 100%; 
 | 
  display: flex; 
 | 
  padding-top: 100rpx; 
 | 
  box-sizing: border-box; 
 | 
  align-items: center; 
 | 
  flex-direction: column; 
 | 
  background: linear-gradient( 
 | 
    180deg, 
 | 
    rgba(39, 155, 170, 0.2) 0%, 
 | 
    rgba(39, 155, 170, 0) 100% 
 | 
  ); 
 | 
  .login_logo { 
 | 
    width: 180rpx; 
 | 
    height: 180rpx; 
 | 
        margin-bottom: 40rpx; 
 | 
  } 
 | 
  .login_bg { 
 | 
    position: absolute; 
 | 
    top: 0; 
 | 
    width: 750rpx; 
 | 
  } 
 | 
  .login_title { 
 | 
    font-size: 44rpx; 
 | 
    font-weight: 600; 
 | 
    color: #333333; 
 | 
  } 
 | 
  .login_list { 
 | 
        margin-top: 60rpx; 
 | 
    width: 100%; 
 | 
    padding: 0 60rpx; 
 | 
    box-sizing: border-box; 
 | 
    .login_list_item { 
 | 
      width: 100%; 
 | 
      border-radius: 50rpx; 
 | 
      height: 98rpx; 
 | 
      padding: 0 40rpx; 
 | 
      box-sizing: border-box; 
 | 
      background: #ffffff; 
 | 
      margin-bottom: 40rpx; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      justify-content: space-between; 
 | 
      &:last-child { 
 | 
        margin-bottom: 0 !important; 
 | 
      } 
 | 
      image { 
 | 
        flex-shrink: 0; 
 | 
        width: 40rpx; 
 | 
        height: 40rpx; 
 | 
      } 
 | 
      .captcha { 
 | 
        color: $uni-color-primary; 
 | 
      } 
 | 
      input { 
 | 
        flex: 1; 
 | 
        height: 100%; 
 | 
        color: #666666; 
 | 
        margin-left: 24rpx; 
 | 
        border: none; 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  .login_btn { 
 | 
    width: 100%; 
 | 
    padding: 0 60rpx; 
 | 
    box-sizing: border-box; 
 | 
    margin-top: 80rpx; 
 | 
    .for_psd { 
 | 
      color: $uni-color-primary; 
 | 
      margin-top: 40rpx; 
 | 
      width: 140rpx; 
 | 
      text-align: center; 
 | 
      margin: 40rpx auto; 
 | 
    } 
 | 
    .login_btn_n { 
 | 
      width: 100%; 
 | 
      height: 98rpx; 
 | 
      background: $uni-color-primary; 
 | 
      box-shadow: 0rpx 12rpx 24rpx 0rpx rgba(39, 155, 170, 0.2); 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      justify-content: center; 
 | 
      font-weight: 600; 
 | 
      font-size: 32rpx; 
 | 
      color: #ffffff; 
 | 
      border-radius: 50rpx; 
 | 
    } 
 | 
  } 
 | 
  .deal_wrap { 
 | 
    position: absolute; 
 | 
    width: 100%; 
 | 
    left: 0; 
 | 
    text-align: center; 
 | 
    bottom: 108rpx; 
 | 
    .deal { 
 | 
      color: $uni-color-primary; 
 | 
    } 
 | 
  } 
 | 
} 
 | 
.modal { 
 | 
  padding: 32rpx; 
 | 
} 
 | 
</style> 
 |