| <template> | 
|   <view class="login"> | 
|     <image class="login_bg" src="@/static/login_bg@2x.png" mode="widthFix" /> | 
|     <image class="login_logo" src="@/static/logo@2x.png" mode="widthFix" /> | 
|     <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.phone"  type="tel" 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="number" | 
|         /> | 
|         <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 class="login_list_item"> | 
|         <image src="@/static/login_ic_password@2x.png" mode="widthFix" /> | 
|         <input | 
|           v-model="form.newPassword" | 
|           type="password" | 
|           placeholder="请再次输入新密码" | 
|         /> | 
|       </view> | 
|     </view> | 
|     <view class="login_btn"> | 
|       <view class="login_btn_n" @click="onLogin">确认修改</view> | 
|     </view> | 
|   </view> | 
| </template> | 
|   | 
| <script> | 
| import { resetPassword, sendSms } from '@/api' | 
| export default { | 
|   data() { | 
|     return { | 
|       form: { | 
|       }, | 
|       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.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' | 
|       }) | 
|       if (!form.newPassword) return uni.showToast({ | 
|         title: '确认密码不能为空', | 
|         icon: 'none' | 
|       }) | 
|       if (form.password != form.newPassword) return uni.showToast({ | 
|         title: '两次输入密码不一致', | 
|         icon: 'none' | 
|       }) | 
|       resetPassword({ | 
|         ...form | 
|       }).then(res => { | 
|         if (res && res.code == 200) { | 
|           setTimeout(() => { | 
|             uni.showToast({ | 
|               title: '密码修改成功,请重新登录', | 
|               icon: 'success', | 
|               duration: 2000 | 
|             }) | 
|           }) | 
|           uni.redirectTo({ | 
|             url: "/pages/staffLogin/login" | 
|           }) | 
|         } | 
|       }) | 
|     } | 
|   } | 
| } | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
| .login { | 
|   width: 100%; | 
|   display: flex; | 
|   padding-top: 130rpx; | 
|   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; | 
|   } | 
|   .login_bg { | 
|       position: absolute; | 
|       top: 0; | 
|       left: 0; | 
|       width: 100%; | 
|       z-index: -1; | 
|   } | 
|   .login_title { | 
|     font-size: 44rpx; | 
|     font-weight: 600; | 
|     color: #333333; | 
|     margin-top: 40rpx; | 
|     margin-bottom: 80rpx; | 
|   } | 
|   .login_list { | 
|     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> |