| <template> | 
|     <view class="password"> | 
|         <view class="password_tip"> | 
|             <image src="@/static/password_ic_tip@2x.png" alt="" /> | 
|             <text>密码由6-20个英文字母、数字或符号组成</text> | 
|         </view> | 
|         <view class="password_list"> | 
|             <view class="password_list_item"> | 
|                 <text>原密码</text> | 
|                 <view class="password_list_item_box"> | 
|                     <input type="password" v-model="form.originalPassword" maxlength="20" placeholder="请输入原密码"> | 
|                 </view> | 
|             </view> | 
|             <view class="password_list_item"> | 
|                 <text>新密码</text> | 
|                 <view class="password_list_item_box"> | 
|                     <input type="password" v-model="form.newPassword" maxlength="20" placeholder="请输入新密码"> | 
|                 </view> | 
|             </view> | 
|             <view class="password_list_item"> | 
|                 <text>确认密码</text> | 
|                 <view class="password_list_item_box"> | 
|                     <input type="password" v-model="form.confirmPassword" maxlength="20" placeholder="再次输入新密码"> | 
|                 </view> | 
|             </view> | 
|         </view> | 
|         <view class="password_footer"> | 
|             <button class="password_footer_submit" @click="submit"> | 
|                 <text>完成</text> | 
|             </button> | 
|         </view> | 
|     </view> | 
| </template> | 
|   | 
| <script> | 
|     import { updatePwd } from '@/util/api/PersonalAPI' | 
|     export default { | 
|         data() { | 
|             return { | 
|                 form: { | 
|                     originalPassword: '', | 
|                     newPassword: '', | 
|                     confirmPassword: '' | 
|                 } | 
|             }; | 
|         }, | 
|         methods: { | 
|             // 忘记密码 | 
|             forgotPassword() { | 
|                  | 
|             }, | 
|             // 提交修改 | 
|             submit() { | 
|                 if (!this.form.originalPassword) { | 
|                     uni.showToast({ title: '原密码不能为空', icon: 'none', duration: 2000 }); | 
|                 } else if (!this.form.newPassword) { | 
|                     uni.showToast({ title: '新密码不能为空', icon: 'none', duration: 2000 }); | 
|                 } else if (!/^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{6,}$/.test(this.form.newPassword)) { | 
|                     uni.showToast({ title: '密码格式不正确', icon: 'none', duration: 2000 }); | 
|                 } else if (!this.form.confirmPassword) { | 
|                     uni.showToast({ title: '确认密码不能为空', icon: 'none', duration: 2000 }); | 
|                 } else if (this.form.newPassword !== this.form.confirmPassword) { | 
|                     uni.showToast({ title: '两次输入的密码不一致', icon: 'none', duration: 2000 }); | 
|                 } else { | 
|                     updatePwd({ | 
|                         newPwd: this.form.newPassword, | 
|                         oldPwd: this.form.originalPassword | 
|                     }).then(res => { | 
|                         if (res.code === 200) { | 
|                             uni.showToast({ title: '修改成功', icon: 'success', duration: 2000, mask: true }); | 
|                             setTimeout(() => { | 
|                                 uni.navigateBack({ delta: 1 }); | 
|                             }, 2000) | 
|                         } | 
|                     }) | 
|                 } | 
|             } | 
|         } | 
|     } | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
|     .password { | 
|         position: absolute; | 
|         width: 100%; | 
|         height: 100%; | 
|         background: white; | 
|         .password_tip { | 
|             height: 72rpx; | 
|             display: flex; | 
|             align-items: center; | 
|             background: #F7F7F7; | 
|             padding: 0 30rpx; | 
|             image { | 
|                 width: 24rpx; | 
|                 height: 24rpx; | 
|                 margin-right: 10rpx; | 
|             } | 
|             text { | 
|                 font-size: 24rpx; | 
|                 font-weight: 400; | 
|                 color: #666666; | 
|             } | 
|         } | 
|         .password_list { | 
|             padding: 0 30rpx; | 
|             .password_list_item { | 
|                 display: flex; | 
|                 align-items: center; | 
|                 height: 90rpx; | 
|                 border-bottom: 1rpx solid #E5E5E5; | 
|                 text { | 
|                     width: 150rpx; | 
|                     flex-shrink: 0; | 
|                     font-size: 30rpx; | 
|                     font-weight: 400; | 
|                     color: #222222; | 
|                 } | 
|                 .password_list_item_box { | 
|                     display: flex; | 
|                     justify-content: space-between; | 
|                     flex: 1; | 
|                     input { | 
|                         border: none; | 
|                         font-size: 30rpx; | 
|                     } | 
|                     input::-webkit-input-placeholder { | 
|                         font-size: 28rpx; | 
|                         font-weight: 400; | 
|                         color: #B2B2B2; | 
|                     } | 
|                     p { | 
|                         font-size: 26rpx; | 
|                         font-weight: 400; | 
|                         color: #4275FC; | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|         .password_footer { | 
|             margin-top: 80rpx; | 
|             padding: 0 30rpx; | 
|             .password_footer_submit { | 
|                 width: 100%; | 
|                 height: 88rpx; | 
|                 border: none; | 
|                 background: #4275FC; | 
|                 box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08); | 
|                 border-radius: 8rpx; | 
|                 display: flex; | 
|                 align-items: center; | 
|                 justify-content: center; | 
|                 text { | 
|                     font-size: 30rpx; | 
|                     font-weight: 500; | 
|                     color: #FFFFFF; | 
|                 } | 
|             } | 
|         } | 
|     } | 
| </style> |