ResetPwd.vue 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <template>
  2. <el-form ref="formRef" :model="password" :rules="rules" label-width="80px">
  3. <el-form-item :label="t('profile.password.oldPassword')">
  4. <InputPassword v-model="password.oldPassword" />
  5. </el-form-item>
  6. <el-form-item :label="t('profile.password.newPassword')">
  7. <InputPassword v-model="password.newPassword" strength />
  8. </el-form-item>
  9. <el-form-item :label="t('profile.password.confirmPassword')">
  10. <InputPassword v-model="password.confirmPassword" strength />
  11. </el-form-item>
  12. <el-form-item>
  13. <XButton :title="t('common.save')" type="primary" @click="submit(formRef)" />
  14. <XButton :title="t('common.reset')" type="danger" @click="reset(formRef)" />
  15. </el-form-item>
  16. </el-form>
  17. </template>
  18. <script lang="ts" name="ResetPwd" setup>
  19. import type { FormInstance, FormRules } from 'element-plus'
  20. import { InputPassword } from '@/components/InputPassword'
  21. import { updateUserPassword } from '@/api/system/user/profile'
  22. const { t } = useI18n()
  23. const message = useMessage()
  24. const formRef = ref<FormInstance>()
  25. const password = reactive({
  26. oldPassword: '',
  27. newPassword: '',
  28. confirmPassword: ''
  29. })
  30. // 表单校验
  31. const equalToPassword = (value, callback) => {
  32. if (password.newPassword !== value) {
  33. callback(new Error(t('profile.password.diffPwd')))
  34. } else {
  35. callback()
  36. }
  37. }
  38. const rules = reactive<FormRules>({
  39. oldPassword: [
  40. { required: true, message: t('profile.password.oldPwdMsg'), trigger: 'blur' },
  41. { min: 3, max: 5, message: t('profile.password.pwdRules'), trigger: 'blur' }
  42. ],
  43. newPassword: [
  44. { required: true, message: t('profile.password.newPwdMsg'), trigger: 'blur' },
  45. { min: 6, max: 20, message: t('profile.password.pwdRules'), trigger: 'blur' }
  46. ],
  47. confirmPassword: [
  48. { required: true, message: t('profile.password.cfPwdMsg'), trigger: 'blur' },
  49. { required: true, validator: equalToPassword, trigger: 'blur' }
  50. ]
  51. })
  52. const submit = (formEl: FormInstance | undefined) => {
  53. if (!formEl) return
  54. formEl.validate(async (valid) => {
  55. if (valid) {
  56. await updateUserPassword(password.oldPassword, password.newPassword)
  57. message.success(t('common.updateSuccess'))
  58. }
  59. })
  60. }
  61. const reset = (formEl: FormInstance | undefined) => {
  62. if (!formEl) return
  63. formEl.resetFields()
  64. }
  65. </script>