UpdatePassword.vue 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <template>
  2. <BasicModal v-bind="$attrs" @register="registerModal" title="修改密码" @ok="handleSubmit" width="600px">
  3. <BasicForm @register="registerForm" />
  4. </BasicModal>
  5. </template>
  6. <script lang="ts" setup>
  7. import { ref, unref, defineExpose } from 'vue';
  8. import { rules } from '/@/utils/helper/validator';
  9. import { defHttp } from '/@/utils/http/axios';
  10. import { BasicModal, useModalInner } from '/@/components/Modal';
  11. import { BasicForm, useForm } from '/@/components/Form/index';
  12. import { useMessage } from '/@/hooks/web/useMessage';
  13. // 声明Emits
  14. const emit = defineEmits(['register']);
  15. const $message = useMessage();
  16. const formRef = ref();
  17. const username = ref('');
  18. //表单配置
  19. const [registerForm, { resetFields, validate, clearValidate }] = useForm({
  20. schemas: [
  21. {
  22. label: '旧密码',
  23. field: 'oldpassword',
  24. component: 'InputPassword',
  25. required: true,
  26. },
  27. {
  28. label: '新密码',
  29. field: 'password',
  30. component: 'StrengthMeter',
  31. componentProps: {
  32. placeholder: '请输入新密码',
  33. },
  34. rules: [
  35. {
  36. required: true,
  37. message: '请输入新密码',
  38. },
  39. ],
  40. },
  41. {
  42. label: '确认新密码',
  43. field: 'confirmpassword',
  44. component: 'InputPassword',
  45. dynamicRules: ({ values }) => rules.confirmPassword(values, true),
  46. },
  47. ],
  48. showActionButtonGroup: false,
  49. });
  50. //表单赋值
  51. const [registerModal, { setModalProps, closeModal }] = useModalInner();
  52. //表单提交事件
  53. async function handleSubmit() {
  54. try {
  55. const values = await validate();
  56. setModalProps({ confirmLoading: true });
  57. //提交表单
  58. let params = Object.assign({ username: unref(username) }, values);
  59. defHttp.put({ url: '/sys/user/updatePassword', params }, { isTransformResponse: false }).then((res) => {
  60. if (res.success) {
  61. $message.createMessage.success(res.message);
  62. //关闭弹窗
  63. closeModal();
  64. } else {
  65. $message.createMessage.warning(res.message);
  66. }
  67. });
  68. } finally {
  69. setModalProps({ confirmLoading: false });
  70. }
  71. }
  72. async function show(name) {
  73. if (!name) {
  74. $message.createMessage.warning('当前系统无登录用户!');
  75. return;
  76. } else {
  77. username.value = name;
  78. await setModalProps({ visible: true });
  79. await resetFields();
  80. await clearValidate();
  81. }
  82. }
  83. defineExpose({
  84. show,
  85. });
  86. </script>