change-pwd.vue 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <template>
  2. <mx-submit-layout :loading="loading" :title="prevData.settingName" @submit="handleSubmit">
  3. <uv-form ref="form" :model="model" :rules="rules">
  4. <old-pwd-field/>
  5. <pwd-repeat-fields/>
  6. </uv-form>
  7. </mx-submit-layout>
  8. </template>
  9. <script setup>
  10. import {ref} from 'vue'
  11. import {useTransfer} from "@/hooks/useTransfer";
  12. import {updateUserPwd} from "@/api/system/user";
  13. import {alertAsync} from "@/utils/uni-helper";
  14. import {createChangePwdModelRules} from "@/pages/login/components/hooks/defineFormModels";
  15. import {useProvideFormData} from "@/pages/login/components/hooks/useFormDataInjection";
  16. import OldPwdField from "@/pages/login/components/register-fields/old-pwd-field.vue";
  17. import PwdRepeatFields from "@/pages/login/components/register-fields/pwd-repeat-fields.vue";
  18. const {prevData, transferBack} = useTransfer()
  19. const loading = ref(false)
  20. const form = ref(null)
  21. const [m, r, modelToCommit] = createChangePwdModelRules()
  22. const [model, rules] = useProvideFormData(m, r)
  23. const handleSubmit = async () => {
  24. await form.value.validate()
  25. if (loading.value) return
  26. loading.value = true
  27. try {
  28. const commit = modelToCommit()
  29. await updateUserPwd(commit)
  30. await alertAsync('新密码保存成功')
  31. transferBack()
  32. } finally {
  33. loading.value = false
  34. }
  35. }
  36. </script>
  37. <style lang="scss">
  38. </style>