| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  | <!-- | 
					
						
							|  |  |  |  |  * @Descripttion:  | 
					
						
							|  |  |  |  |  * @version:  | 
					
						
							|  |  |  |  |  * @Author: 王三华 | 
					
						
							|  |  |  |  |  * @Date: 2023-05-18 14:42:53 | 
					
						
							|  |  |  |  | --> | 
					
						
							|  |  |  |  | <template> | 
					
						
							|  |  |  |  |   <view class="main"> | 
					
						
							|  |  |  |  |     <view class="contents"> | 
					
						
							|  |  |  |  |       <u-form ref="uForm" | 
					
						
							|  |  |  |  |               :model="emailObj" | 
					
						
							|  |  |  |  |               class="paddings" | 
					
						
							|  |  |  |  |               labelWidth="auto"> | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |         <u-form-item :label="'会员编号'" | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |                      label-width="80px" | 
					
						
							|  |  |  |  |                      prop="memberCode"> | 
					
						
							|  |  |  |  |           <u-input v-model="emailObj.memberCode" | 
					
						
							|  |  |  |  |                    class="border-color" | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |                    :placeholder="'会员编号'" | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |                    placeholder-class="place-class" /> | 
					
						
							|  |  |  |  |         </u-form-item> | 
					
						
							|  |  |  |  |         <u-form-item label="用户密码" | 
					
						
							|  |  |  |  |                      label-width="80px" | 
					
						
							|  |  |  |  |                      prop="newPassword"> | 
					
						
							|  |  |  |  |           <u-input v-model="emailObj.newPassword" | 
					
						
							|  |  |  |  |                    class="border-color" | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |                    :placeholder="'请输入会员编号'" | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |                    type="password" | 
					
						
							|  |  |  |  |                    placeholder-class="place-class" /> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         </u-form-item> | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |         <u-form-item :label="'确认密码'" | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |                      label-width="80px" | 
					
						
							|  |  |  |  |                      prop="loginPassword"> | 
					
						
							|  |  |  |  |           <u-input v-model="emailObj.loginPassword" | 
					
						
							|  |  |  |  |                    class="border-color" | 
					
						
							|  |  |  |  |                    type="password" | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |                    :placeholder="'请输入密码'" | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |                    placeholder-class="place-class" /> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         </u-form-item> | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |         <u-form-item :label="'联系方式'" | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |                      label-width="80px" | 
					
						
							|  |  |  |  |                      prop="phone" | 
					
						
							|  |  |  |  |                      style="display: flex;"> | 
					
						
							|  |  |  |  |           <u-input v-model="emailObj.phone" | 
					
						
							|  |  |  |  |                    class="border-color" | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |                    :placeholder="'请输入联系方式'" | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |                    maxlength="20" | 
					
						
							|  |  |  |  |                    type="number" | 
					
						
							|  |  |  |  |                    placeholder-class="place-class" /> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         </u-form-item> | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |         <u-form-item :label="'验证码'" | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |                      label-width="80px" | 
					
						
							|  |  |  |  |                      prop="code"> | 
					
						
							|  |  |  |  |           <u-input v-model="emailObj.code" | 
					
						
							|  |  |  |  |                    class="border-color width-s" | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |                    :placeholder="'请输入验证码'" | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |                    placeholder-class="place-class" /> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           <button :disabled="disabled" | 
					
						
							|  |  |  |  |                   class="yzm" | 
					
						
							|  |  |  |  |                   @click.stop="getCode()"> | 
					
						
							|  |  |  |  |             {{getCodeText}} | 
					
						
							|  |  |  |  |           </button> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         </u-form-item> | 
					
						
							|  |  |  |  |       </u-form> | 
					
						
							|  |  |  |  |     </view> | 
					
						
							|  |  |  |  |     <u-button class="btn" | 
					
						
							|  |  |  |  |               shape="circle" | 
					
						
							|  |  |  |  |               type="success" | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |               @click="submit">{{'确定'}}</u-button> | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |     <view style="height: 20rpx;"></view> | 
					
						
							|  |  |  |  |   </view> | 
					
						
							|  |  |  |  | </template> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <script> | 
					
						
							|  |  |  |  | import * as api from '@/config/login.js' | 
					
						
							|  |  |  |  | import { setToken } from '@/config/auth.js' | 
					
						
							|  |  |  |  | import address from '@/components/address.vue' | 
					
						
							|  |  |  |  | import store from '@/store' | 
					
						
							|  |  |  |  | import { forgetPassword } from '../../config/login' | 
					
						
							|  |  |  |  | export default { | 
					
						
							|  |  |  |  |   data() { | 
					
						
							|  |  |  |  |     let validatePwd = (rule, value, callback) => { | 
					
						
							|  |  |  |  |       if (this.emailObj.newPassword != value) { | 
					
						
							|  |  |  |  |         callback(new Error('与新密码不一致,请重新输入')) | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         callback() | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     return { | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |       getCodeText: '获取验证码', | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |       disabled: false, | 
					
						
							|  |  |  |  |       time: 60, | 
					
						
							|  |  |  |  |       yzmCheck: false, | 
					
						
							|  |  |  |  |       userInfo: '', | 
					
						
							|  |  |  |  |       emailObj: { | 
					
						
							|  |  |  |  |         memberCode: '', | 
					
						
							|  |  |  |  |         newPassword: '', | 
					
						
							|  |  |  |  |         loginPassword: '', | 
					
						
							|  |  |  |  |         phone: '', | 
					
						
							|  |  |  |  |         code: '', | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       rules: { | 
					
						
							|  |  |  |  |         memberCode: [ | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |           { required: true, trigger: 'blur', message: '请输入会员编号' }, | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |         ], | 
					
						
							|  |  |  |  |         code: [ | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |           { required: false, trigger: 'blur', message: '请输入验证码' }, | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |         ], | 
					
						
							|  |  |  |  |         newPassword: [ | 
					
						
							|  |  |  |  |           { required: true, trigger: 'blur', message: '请输入密码' }, | 
					
						
							|  |  |  |  |         ], | 
					
						
							|  |  |  |  |         loginPassword: [{ validator: validatePwd, trigger: 'blur' }], | 
					
						
							|  |  |  |  |         phone: [ | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |           { required: false, trigger: 'blur', message: '请输入联系方式' }, | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |         ], | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   onLoad(option) { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.userInfo = uni.getStorageSync('User') | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   onReady() { | 
					
						
							|  |  |  |  |     this.$refs.uForm.setRules(this.rules) | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   methods: { | 
					
						
							|  |  |  |  |     submit() { | 
					
						
							|  |  |  |  |       this.$refs.uForm.validate().then((res) => { | 
					
						
							|  |  |  |  |         api.forgetPassword(this.emailObj).then((res) => { | 
					
						
							|  |  |  |  |           if (res.code == '200') { | 
					
						
							|  |  |  |  |             uni.showToast({ | 
					
						
							|  |  |  |  |               title: res.msg, | 
					
						
							|  |  |  |  |               icon: 'none', | 
					
						
							|  |  |  |  |               success() { | 
					
						
							|  |  |  |  |                 setTimeout(() => { | 
					
						
							|  |  |  |  |                   uni.navigateTo({ | 
					
						
							|  |  |  |  |                     url: '/pages/login/index', | 
					
						
							|  |  |  |  |                   }) | 
					
						
							|  |  |  |  |                 }, 2000) | 
					
						
							|  |  |  |  |               }, | 
					
						
							|  |  |  |  |             }) | 
					
						
							|  |  |  |  |           } else { | 
					
						
							|  |  |  |  |             uni.showToast({ | 
					
						
							|  |  |  |  |               icon: 'none', | 
					
						
							|  |  |  |  |               title: res.msg, | 
					
						
							|  |  |  |  |             }) | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         }) | 
					
						
							|  |  |  |  |       }) | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     getCode() { | 
					
						
							|  |  |  |  |       // this.disabled = true
 | 
					
						
							|  |  |  |  |       // this.getCodeText = "发送中..." //发送验证码
 | 
					
						
							|  |  |  |  |       // this.getCodeisWaiting = true;
 | 
					
						
							|  |  |  |  |       // this.getCodeBtnColor = "rgba(255,255,255,0.5)" //追加样式,修改颜色
 | 
					
						
							|  |  |  |  |       this.getYzm() | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     getYzm() { | 
					
						
							|  |  |  |  |       this.$refs.uForm.validate().then((res) => { | 
					
						
							|  |  |  |  |         api.forgetVerification(this.emailObj).then((res) => { | 
					
						
							|  |  |  |  |           if (res.code == '200') { | 
					
						
							|  |  |  |  |             setTimeout(() => { | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |               //this.$common.msg('验证码已发送')
 | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |               uni.showToast({ | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |                 title: '验证码已发送', | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |                 icon: 'none', | 
					
						
							|  |  |  |  |               }) //弹出提示框
 | 
					
						
							|  |  |  |  |               this.setTimer() //调用定时器方法
 | 
					
						
							|  |  |  |  |             }, 1000) | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         }) | 
					
						
							|  |  |  |  |       }) | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     setTimer() { | 
					
						
							|  |  |  |  |       this.disabled = true | 
					
						
							|  |  |  |  |       let holdTime = 60 //定义变量并赋值
 | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |       this.getCodeText = '重新获取' + '(60)' | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |       //setInterval()是一个实现定时调用的函数,可按照指定的周期(以毫秒计)来调用函数或计算表达式。
 | 
					
						
							|  |  |  |  |       //setInterval方法会不停地调用函数,直到 clearInterval被调用或窗口被关闭。
 | 
					
						
							|  |  |  |  |       this.time = setInterval(() => { | 
					
						
							|  |  |  |  |         if (holdTime <= 0) { | 
					
						
							|  |  |  |  |           this.disabled = false | 
					
						
							|  |  |  |  |           this.getCodeisWaiting = false | 
					
						
							|  |  |  |  |           this.getCodeBtnColor = '#ffffff' | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |           this.getCodeText = '获取验证码' | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |           clearInterval(this.time) //清除该函数
 | 
					
						
							|  |  |  |  |           return //返回前面
 | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |         this.getCodeText = '重新获取' + '(' + holdTime + ')' | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |         holdTime-- | 
					
						
							|  |  |  |  |       }, 1000) | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | </script> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <style lang="scss" scoped> | 
					
						
							| 
									
										
										
										
											2025-04-01 17:06:24 +08:00
										 |  |  |  | :v-deep uni-button:after { | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |   border: none; | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2025-04-01 17:06:24 +08:00
										 |  |  |  | :v-deep .u-form-item__body__right__message { | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |   margin-left: 170rpx !important; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | .yzm { | 
					
						
							|  |  |  |  |   // width: 161rpx;
 | 
					
						
							|  |  |  |  |   height: 74rpx; | 
					
						
							|  |  |  |  |   line-height: 74rpx; | 
					
						
							|  |  |  |  |   text-align: center; | 
					
						
							|  |  |  |  |   color: #fff; | 
					
						
							|  |  |  |  |   background: #2fbc42; | 
					
						
							|  |  |  |  |   border-radius: 40rpx; | 
					
						
							|  |  |  |  |   margin-left: 30rpx; | 
					
						
							|  |  |  |  |   font-size: 24rpx; | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2025-04-01 17:06:24 +08:00
										 |  |  |  | :v-deep .u-form-item:nth-child(2) { | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |   width: 670rpx; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | .contents { | 
					
						
							|  |  |  |  |   background-color: #fff; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | page { | 
					
						
							|  |  |  |  |   background-color: #f2f2f2; | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2025-04-01 17:06:24 +08:00
										 |  |  |  | :v-deep .width-s { | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |   width: 200rpx !important; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | .paddings { | 
					
						
							|  |  |  |  |   padding: 30rpx 0rpx; | 
					
						
							|  |  |  |  |   margin: 0 40rpx; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | .border-color { | 
					
						
							|  |  |  |  |   border-radius: 50rpx; | 
					
						
							|  |  |  |  |   padding-left: 50rpx !important; | 
					
						
							|  |  |  |  |   font-size: 28rpx; | 
					
						
							|  |  |  |  |   width: 400rpx; | 
					
						
							|  |  |  |  |   height: 60rpx; | 
					
						
							|  |  |  |  |   background: #f5f6f8; | 
					
						
							|  |  |  |  |   border: none; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | .btn { | 
					
						
							|  |  |  |  |   background-color: #fb3024; | 
					
						
							|  |  |  |  |   border: none; | 
					
						
							|  |  |  |  |   height: 92rpx; | 
					
						
							|  |  |  |  |   line-height: 92rpx; | 
					
						
							|  |  |  |  |   font-size: 30rpx; | 
					
						
							|  |  |  |  |   margin: 40rpx auto; | 
					
						
							|  |  |  |  |   width: 690rpx; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | </style> |