|
|
@ -1,82 +1,4 @@ |
|
|
|
<template> |
|
|
|
<div class="form-container"> |
|
|
|
<el-form |
|
|
|
ref="passwdFormRef" |
|
|
|
:model="passwd" |
|
|
|
:rules="rules" |
|
|
|
label-width="100px" |
|
|
|
class="password-form" |
|
|
|
> |
|
|
|
<h3 class="form-title">修改密码</h3> |
|
|
|
|
|
|
|
<!-- 原密码 --> |
|
|
|
<el-form-item prop="oldPassword" label="原密码"> |
|
|
|
<el-input |
|
|
|
v-model.trim="passwd.oldPassword" |
|
|
|
type="password" |
|
|
|
placeholder="请输入原密码" |
|
|
|
show-password |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<!-- 新密码 --> |
|
|
|
<el-form-item prop="newPassword" label="新密码"> |
|
|
|
<el-input |
|
|
|
v-model.trim="passwd.newPassword" |
|
|
|
type="password" |
|
|
|
placeholder="请输入新密码" |
|
|
|
show-password |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<!-- 重复密码 --> |
|
|
|
<el-form-item prop="againPassword" label="重复密码"> |
|
|
|
<el-input |
|
|
|
v-model.trim="passwd.againPassword" |
|
|
|
type="password" |
|
|
|
placeholder="请再次输入新密码" |
|
|
|
show-password |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<!-- 密码规则提示 --> |
|
|
|
<div class="rule-tips"> |
|
|
|
<div :class="isLengthValid ? 'tip pass' : 'tip neutral'"> |
|
|
|
<el-icon> |
|
|
|
<component :is="isLengthValid ? SuccessFilled : SuccessFilled"/> |
|
|
|
</el-icon> |
|
|
|
密码由8-16位数字、字母或符号组成 |
|
|
|
</div> |
|
|
|
<div :class="isComplexValid ? 'tip pass' : 'tip neutral'"> |
|
|
|
<el-icon> |
|
|
|
<component :is="isComplexValid ? SuccessFilled : SuccessFilled"/> |
|
|
|
</el-icon> |
|
|
|
至少含2种以上字符 |
|
|
|
</div> |
|
|
|
<div v-if="errorMsg" class="tip fail"> |
|
|
|
<el-icon> |
|
|
|
<CircleCloseFilled/> |
|
|
|
</el-icon> |
|
|
|
{{ errorMsg }} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 按钮 --> |
|
|
|
<div class="button-group"> |
|
|
|
<el-button |
|
|
|
type="primary" |
|
|
|
@click="onSubmit" |
|
|
|
style="width: 300px" |
|
|
|
:loading="loading" |
|
|
|
:disabled="!isLengthValid || !isComplexValid" |
|
|
|
> |
|
|
|
{{ loading ? '修改中...' : '确定' }} |
|
|
|
</el-button> |
|
|
|
</div> |
|
|
|
|
|
|
|
</el-form> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<script setup> |
|
|
|
import {ref, reactive, computed, watch, onMounted} from 'vue' |
|
|
@ -191,7 +113,7 @@ const changePassword = async function () { |
|
|
|
// 延迟跳转,确保用户看到成功消息 |
|
|
|
setTimeout(() => { |
|
|
|
router.push('/PasswordSuccess'); |
|
|
|
}, 1500); |
|
|
|
}, 1000); |
|
|
|
}else if (result.code === 0){ |
|
|
|
ElMessage.error('原密码错误') |
|
|
|
passwd.oldPassword = ''; |
|
|
@ -221,6 +143,10 @@ const resetFields = () => { |
|
|
|
} |
|
|
|
errorMsg.value = '' |
|
|
|
} |
|
|
|
// 暴露 resetFields 方法给父组件调用 |
|
|
|
defineExpose({ |
|
|
|
resetFields |
|
|
|
}) |
|
|
|
|
|
|
|
// 修改提交方法 |
|
|
|
const onSubmit = () => { |
|
|
@ -248,6 +174,90 @@ onMounted(() => { |
|
|
|
|
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
|
|
<template> |
|
|
|
<div class="form-container"> |
|
|
|
<el-form |
|
|
|
ref="passwdFormRef" |
|
|
|
:model="passwd" |
|
|
|
:rules="rules" |
|
|
|
label-width="100px" |
|
|
|
class="password-form" |
|
|
|
> |
|
|
|
<h3 class="form-title">修改密码</h3> |
|
|
|
|
|
|
|
<!-- 原密码 --> |
|
|
|
<el-form-item prop="oldPassword" label="原密码"> |
|
|
|
<el-input |
|
|
|
v-model.trim="passwd.oldPassword" |
|
|
|
type="password" |
|
|
|
placeholder="请输入原密码" |
|
|
|
show-password |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<!-- 新密码 --> |
|
|
|
<el-form-item prop="newPassword" label="新密码"> |
|
|
|
<el-input |
|
|
|
v-model.trim="passwd.newPassword" |
|
|
|
type="password" |
|
|
|
placeholder="请输入新密码" |
|
|
|
show-password |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<!-- 重复密码 --> |
|
|
|
<el-form-item prop="againPassword" label="重复密码"> |
|
|
|
<el-input |
|
|
|
v-model.trim="passwd.againPassword" |
|
|
|
type="password" |
|
|
|
placeholder="请再次输入新密码" |
|
|
|
show-password |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<!-- 密码规则提示 --> |
|
|
|
<div class="rule-tips"> |
|
|
|
<div :class="isLengthValid ? 'tip pass' : 'tip neutral'"> |
|
|
|
<el-icon> |
|
|
|
<component :is="isLengthValid ? SuccessFilled : SuccessFilled"/> |
|
|
|
</el-icon> |
|
|
|
密码由8-16位数字、字母或符号组成 |
|
|
|
</div> |
|
|
|
<div :class="isComplexValid ? 'tip pass' : 'tip neutral'"> |
|
|
|
<el-icon> |
|
|
|
<component :is="isComplexValid ? SuccessFilled : SuccessFilled"/> |
|
|
|
</el-icon> |
|
|
|
至少含2种以上字符 |
|
|
|
</div> |
|
|
|
<div v-if="errorMsg" class="tip fail"> |
|
|
|
<el-icon> |
|
|
|
<CircleCloseFilled/> |
|
|
|
</el-icon> |
|
|
|
{{ errorMsg }} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 按钮 --> |
|
|
|
<div class="button-group"> |
|
|
|
<el-button |
|
|
|
type="primary" |
|
|
|
@click="onSubmit" |
|
|
|
style="width: 300px" |
|
|
|
:loading="loading" |
|
|
|
:disabled="!isLengthValid || !isComplexValid" |
|
|
|
> |
|
|
|
{{ loading ? '修改中...' : '确定' }} |
|
|
|
</el-button> |
|
|
|
</div> |
|
|
|
|
|
|
|
</el-form> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<style scoped> |
|
|
|
.form-container { |
|
|
|
justify-content: center; |
|
|
|