setpaswordModal.vue 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. @register="register"
  5. @ok="handSubmit"
  6. :title="t('routes.staff.updateBtn')"
  7. @visible-change="handleVisibleChange"
  8. @cancel="resetFields"
  9. >
  10. <div class="pt-3px pr-3px">
  11. <BasicForm @register="registerForm" />
  12. </div>
  13. </BasicModal>
  14. </template>
  15. <script lang="ts">
  16. import { useI18n } from '/@/hooks/web/useI18n';
  17. import { encodeStr } from '/@/utils/encodeUtil';
  18. import { defineComponent, nextTick } from 'vue';
  19. import { BasicModal, useModalInner } from '/@/components/Modal';
  20. import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
  21. import { updatePasswordApi } from '/@/api/sys/user';
  22. import { useMessage } from '/@/hooks/web/useMessage';
  23. const { createMessage } = useMessage();
  24. export default defineComponent({
  25. components: { BasicModal, BasicForm },
  26. props: {
  27. userData: { type: Object },
  28. },
  29. setup(props) {
  30. const { t } = useI18n();
  31. const schemas: FormSchema[] = [
  32. {
  33. field: 'id',
  34. component: 'Input',
  35. label: 'id',
  36. show: false,
  37. },
  38. {
  39. field: 'password',
  40. component: 'StrengthMeter',
  41. label: t('routes.staff.password'),
  42. labelWidth: 120,
  43. required: true,
  44. colProps: { span: 18 },
  45. },
  46. ];
  47. const [
  48. registerForm,
  49. {
  50. setFieldsValue,
  51. validate,
  52. resetFields,
  53. // setProps
  54. },
  55. ] = useForm({
  56. labelWidth: 120,
  57. schemas,
  58. showActionButtonGroup: false,
  59. actionColOptions: {
  60. span: 24,
  61. },
  62. });
  63. const [register, { closeModal }] = useModalInner((data) => {
  64. data && onDataReceive(data);
  65. });
  66. function onDataReceive(data) {
  67. setFieldsValue({
  68. id: data.id,
  69. });
  70. }
  71. async function handSubmit() {
  72. const { id, password } = await validate();
  73. await updatePasswordApi({ id, newPassword: encodeStr(window.btoa(password)) });
  74. createMessage.success(t('common.optSuccess'));
  75. resetFields();
  76. closeModal();
  77. }
  78. function handleVisibleChange(v) {
  79. v && props.userData && nextTick(() => onDataReceive(props.userData));
  80. }
  81. return {
  82. handSubmit,
  83. register,
  84. t,
  85. schemas,
  86. registerForm,
  87. handleVisibleChange,
  88. resetFields,
  89. };
  90. },
  91. });
  92. </script>