FormModal.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. destroyOnClose
  5. @register="registerModal"
  6. :title="getTitle"
  7. @ok="handleSubmit"
  8. width="900px"
  9. >
  10. <BasicForm @register="registerForm" />
  11. </BasicModal>
  12. </template>
  13. <script lang="ts" setup>
  14. import { ref, computed, unref } from 'vue';
  15. import { BasicModal, useModalInner } from '/@/components/Modal';
  16. import { BasicForm, useForm } from '/@/components/Form';
  17. import { useMessage } from '/@/hooks/web/useMessage';
  18. import { dataFormSchema } from './data';
  19. import { sysUserAdd, sysUserEdit, sysUserDetail } from '/@/api/sys/sysUserApi';
  20. import { sysConfigCurrent } from '/@/api/sys/sysConfigApi';
  21. const emit = defineEmits(['success', 'register']);
  22. const getTitle = computed(() => (!unref(isUpdate) ? '新增用户' : '编辑用户'));
  23. const isUpdate = ref(false);
  24. const rowId = ref();
  25. const { createMessage } = useMessage();
  26. const [registerForm, { setFieldsValue, resetFields, validate, updateSchema, getFieldsValue }] =
  27. useForm({
  28. labelWidth: 100,
  29. schemas: dataFormSchema,
  30. showActionButtonGroup: false,
  31. actionColOptions: {
  32. span: 23,
  33. },
  34. baseColProps: { lg: 12, md: 24 },
  35. });
  36. const [registerModal, { setModalProps, closeModal }] = useModalInner(async data => {
  37. await resetFields();
  38. setModalProps({ confirmLoading: false });
  39. isUpdate.value = !!data?.isUpdate;
  40. if (unref(isUpdate)) {
  41. rowId.value = data.record.id;
  42. const resData = await sysUserDetail(data.record.id);
  43. resData.sex = String(resData.sex || '3');
  44. resData.orgId = String(resData.orgId);
  45. await updateSchema([
  46. {
  47. field: 'username',
  48. componentProps: {
  49. disabled: true,
  50. },
  51. dynamicRules: false,
  52. },
  53. ]);
  54. await setFieldsValue({
  55. ...resData,
  56. });
  57. } else {
  58. let sysInitPassword = '123456';
  59. await sysConfigCurrent().then(data => {
  60. if (data && data.defaultPsw) {
  61. sysInitPassword = data.defaultPsw;
  62. }
  63. });
  64. await setFieldsValue({
  65. password: sysInitPassword,
  66. });
  67. }
  68. await updateSchema([
  69. {
  70. field: 'password',
  71. ifShow: !unref(isUpdate),
  72. },
  73. ]);
  74. const fildValue = getFieldsValue();
  75. console.log('fildValue', fildValue);
  76. });
  77. // 提交按钮事件
  78. async function handleSubmit() {
  79. try {
  80. const values = await validate();
  81. setModalProps({ confirmLoading: true });
  82. console.log('values', values);
  83. console.log('values::::::::', values);
  84. !unref(isUpdate)
  85. ? await sysUserAdd({ ...values })
  86. : await sysUserEdit({ ...values, id: rowId.value });
  87. !unref(isUpdate) ? createMessage.success('新增成功!') : createMessage.success('编辑成功!');
  88. closeModal();
  89. emit('success', { isUpdate: unref(isUpdate), values: { ...values, id: rowId.value } });
  90. } finally {
  91. setModalProps({ confirmLoading: false });
  92. }
  93. }
  94. </script>