138 lines
4.8 KiB
Vue
138 lines
4.8 KiB
Vue
<template>
|
||
<view class="account-pwd">
|
||
<uni-forms ref="formRef" label-align="left" :model="vdata.formData" :rules="rules">
|
||
<uni-forms-item label="原密码" name="originalPwd">
|
||
<uni-easyinput class='jeepay-easyinput' :inputBorder="false" :type="vdata.isShowOriginalPwd ? 'text' : 'password'" v-model="vdata.formData.originalPwd" :clearable="false" placeholder="请输入登录密码" >
|
||
<template #suffixIcon> <view class='show-tips' style="color: rgba(88,132,204,1);font-weight: 400;font-size: 32rpx;" @tap="vdata.isShowOriginalPwd = !vdata.isShowOriginalPwd ">{{ vdata.isShowOriginalPwd ? '隐藏' : '显示' }}</view> </template>
|
||
</uni-easyinput>
|
||
</uni-forms-item>
|
||
<view class="forget-pwd" @tap="phone.open({
|
||
tips: '为了您的账户安全,您需要使用短信验证码重置密码,是否发送验证码到:',
|
||
phone: vdata.userInfo.telphone,
|
||
confirmText: '发送短信验证码'
|
||
})">
|
||
<text>忘记原密码?去找回 ></text>
|
||
</view>
|
||
<uni-forms-item label="新密码" name="newPwd">
|
||
<uni-easyinput class='jeepay-easyinput' :inputBorder="false" :type="vdata.isShowNewPwd ? 'text' : 'password'" v-model="vdata.formData.newPwd" :clearable="false" placeholder="请输入登录密码" >
|
||
<template #suffixIcon> <view class='show-tips' style="color: rgba(88,132,204,1);font-weight: 400;font-size: 32rpx;" @tap="vdata.isShowNewPwd = !vdata.isShowNewPwd ">{{ vdata.isShowNewPwd ? '隐藏' : '显示' }}</view> </template>
|
||
</uni-easyinput>
|
||
</uni-forms-item>
|
||
<uni-forms-item label="确认新密码" name="confirmPwd">
|
||
<uni-easyinput class='jeepay-easyinput' :inputBorder="false" :type="vdata.isShowConfirmPwd ? 'text' : 'password'" v-model="vdata.formData.confirmPwd" :clearable="false" placeholder="请输入登录密码" >
|
||
<template #suffixIcon> <view class='show-tips' style="color: rgba(88,132,204,1);font-weight: 400;font-size: 32rpx;" @tap="vdata.isShowConfirmPwd = !vdata.isShowConfirmPwd ">{{ vdata.isShowConfirmPwd ? '隐藏' : '显示' }}</view> </template>
|
||
</uni-easyinput>
|
||
</uni-forms-item>
|
||
</uni-forms>
|
||
<button class="confirm flex-center" hover-class="touch-button" @click="modifyPwd">确认修改</button>
|
||
</view>
|
||
<CallPhone ref="phone" @callPhone="callPhone" />
|
||
</template>
|
||
|
||
<script setup>
|
||
import { reactive, ref, onMounted } from 'vue'
|
||
import { $modifyPwd, $getPasswordRules } from "@/http/apiManager.js"
|
||
import storageManage from '@/commons/utils/storageManage.js'
|
||
import go from '@/commons/utils/go.js'
|
||
import infoBox from "@/commons/utils/infoBox.js"
|
||
import formUtil from '@/commons/utils/formUtil.js'
|
||
import CallPhone from './components/CallPhone.vue'
|
||
|
||
const rules = {
|
||
originalPwd: {
|
||
rules:[ formUtil.rules.requiredInputShowToast('原密码') ],
|
||
},
|
||
newPwd: {
|
||
rules:[ formUtil.rules.requiredInputShowToast('新密码') ],
|
||
},
|
||
confirmPwd: {
|
||
rules:[ formUtil.rules.requiredInputShowToast('确认新密码') ],
|
||
}
|
||
}
|
||
|
||
const formRef = ref()
|
||
const phone = ref()
|
||
const vdata = reactive({
|
||
formData: {
|
||
originalPwd: '',
|
||
newPwd: '',
|
||
confirmPwd: ''
|
||
},
|
||
userInfo: storageManage.userInfo(),
|
||
passwordRules: /^$/, //密码规则
|
||
passwordRulesText: '',//密码规则提示文字
|
||
})
|
||
|
||
onMounted(() => {
|
||
getPasswordRules()
|
||
})
|
||
|
||
const getPasswordRules = () => {
|
||
$getPasswordRules().then(({bizData}) => {
|
||
vdata.passwordRules = new RegExp(bizData.regexpRules)
|
||
vdata.passwordRulesText = bizData.errTips
|
||
})
|
||
}
|
||
|
||
const modifyPwd = () => {
|
||
formUtil.validate(formRef.value).then(() => {
|
||
let { newPwd, confirmPwd } = vdata.formData;
|
||
if(!vdata.passwordRules.test(newPwd) || !vdata.passwordRules.test(confirmPwd)) {
|
||
return infoBox.showToast(vdata.passwordRulesText)
|
||
}
|
||
if (newPwd !== confirmPwd) {
|
||
return infoBox.showToast('两次密码输入不一致')
|
||
}
|
||
$modifyPwd(vdata.formData).then(() => {
|
||
infoBox.showToast('修改成功')
|
||
storageManage.token() && storageManage.token(null, true)
|
||
go.to('PAGES_LOGIN', {}, 'redirect')
|
||
})
|
||
})
|
||
}
|
||
|
||
const callPhone = () => {
|
||
go.to('PAGES_FORGET_PASSWORD', {isRetrieve: 1 })
|
||
}
|
||
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.account-pwd {
|
||
min-height: 100vh;
|
||
background-color: $v-color-bgrey;
|
||
::v-deep.uni-forms-item.is-direction-left {
|
||
padding: 0 40rpx;
|
||
.uni-forms-item__label {
|
||
width: 190rpx !important;
|
||
font-size: 32rpx !important;
|
||
font-weight: 400;
|
||
white-space: nowrap;
|
||
color: rgba(102,102,102,1);
|
||
text-indent: 0 !important;
|
||
|
||
}
|
||
.uni-easyinput__placeholder-class {
|
||
font-size: 32rpx !important;
|
||
font-weight: 400 !important;
|
||
}
|
||
}
|
||
.forget-pwd {
|
||
display: flex;
|
||
align-items: center;
|
||
height: 90rpx;
|
||
text-indent: 30rpx;
|
||
color: #2980fd;
|
||
font-size: 30rpx;
|
||
font-weight: 400;
|
||
}
|
||
.confirm {
|
||
margin: 30rpx;
|
||
height: 110rpx;
|
||
border-radius: 20rpx;
|
||
color: #fff;
|
||
background: $jeepay-bg-primary;
|
||
}
|
||
}
|
||
</style>
|