jy-safe-app/pages/my/subPages/editPassword.vue

199 lines
4.5 KiB
Vue
Raw Permalink Normal View History

2025-10-14 15:17:30 +08:00
<template>
<view class='base-info'>
<view class="flex-info">
<view class='label-text'>旧密码</view>
<view class="password-info">
<!-- <u-form-item prop="originPassword"> -->
<u--input name='originPassword' border="none" v-model="originPassword" placeholder='请输入原密码' password />
<!-- </u-form-item> -->
</view>
</view>
<view class="flex-info">
<view class='label-text'>新密码</view>
<view class="password-info">
<!-- <u-form-item prop="newPassword"> -->
<u--input name='newPassword' border="none" v-model="newPassword" placeholder='请输入新密码' password />
<!-- </u-form-item> -->
</view>
</view>
<view class="flex-info">
<view class='label-text'>确认新密码</view>
<view class="password-info">
<!-- <u-form-item prop="matchPassword"> -->
<u--input name='matchPassword' border="none" v-model="matchPassword" password placeholder='请确认新密码' />
<!-- </u-form-item> -->
</view>
</view>
<view class="warn-info">密码由6-15位字母和数字组成区分大小写</view>
<button @click="formSubmit" type="primary" class='save-btn' :disabled="buttonDis">重置密码</button>
<show-toast></show-toast>
</view>
</template>
<script>
import MD5 from 'md5'
import {
modifyPassword
} from '../../../services/common'
import showToast from '../../../components/custom/show-info/show-toast.vue'
export default {
data() {
return {
actionCode: '',
originPassword: '',
newPassword: '',
matchPassword: '',
buttonDis: true,
}
},
watch: {
originPassword: function(newVal) {
if(newVal && this.newPassword && this.matchPassword){
this.buttonDis = false
}else{
this.buttonDis = true
}
},
newPassword: function(newVal) {
if(newVal && this.originPassword && this.matchPassword){
this.buttonDis = false
}else{
this.buttonDis = true
}
},
matchPassword: function(newVal) {
if(newVal && this.newPassword && this.originPassword){
this.buttonDis = false
}else{
this.buttonDis = true
}
}
},
methods: {
async formSubmit() {
const appInfoData = uni.getStorageSync('appInfo')
const userId = appInfoData?.User?.ID || ''
const params = {
Keyword: userId,
Parameter1: MD5(this.originPassword),
Parameter2: MD5(this.newPassword)
}
let eeeeeee = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,15}$/;
if (!this.originPassword) {
this.$showToast({
title: "请输入原密码",
content: "",
icon: 'fail',
success: res => {}
});
return
}
if (!this.newPassword) {
this.$showToast({
title: "请输入新密码",
content: "",
icon: 'fail',
success: res => {}
});
return
}
if (!this.matchPassword) {
this.$showToast({
title: "请确认新密码",
content: "",
icon: 'fail',
success: res => {}
});
return
}
if (this.newPassword !== this.matchPassword) {
this.$showToast({
title: "确认密码与新密码不一致",
content: "",
icon: 'fail',
success: res => {}
});
return
}
if (!eeeeeee.test(this.newPassword)) {
this.$showToast({
title: "请设置6-15位的密码",
content: "至少包含字母、数字",
icon: 'fail',
success: res => {}
});
return
}
const res = await modifyPassword(params)
if (res.IsSuccessful) {
this.$showToast({
title: "修改密码成功",
content: "",
icon: 'success',
success: res => {
uni.removeStorageSync('accessToken')
uni.removeStorageSync('orgId')
uni.removeStorageSync('Tenant')
uni.removeStorageSync('appInfo')
uni.redirectTo({
url: '/pages/login/index'
})
}
});
}
},
gainAuthCodeAction() {
}
}
}
</script>
<style scoped>
.base-info {
padding: 10px 0px;
width: 100%;
height: 100vh;
position: relative;
box-sizing: border-box;
background-color: #F1F2F8;
}
.flex-info {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
background-color: #ffffff;
margin-bottom: 1px;
padding: 0px 15px;
}
.password-info {
/* width: 75%; */
padding: 15px 0px;
flex: 1;
}
.label-text {
font-size: 16px;
width: 25%;
margin-right: 20px;
}
.warn-info {
font-size: 14px;
color: #868A93;
margin: 5px 0px 0px 15px;
}
.info-form {}
.save-btn {
margin: 20px 15px 0px 15px;
}
</style>