complicationFormModal.vue 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. destroyOnClose
  5. @register="registerModal"
  6. :title="getTitle"
  7. @ok="handleSubmit"
  8. >
  9. <BasicForm @register="registerForm" />
  10. </BasicModal>
  11. </template>
  12. <script lang="ts" setup>
  13. import { ref, computed, unref } from 'vue';
  14. import { BasicModal, useModalInner } from '/@/components/Modal';
  15. import { BasicForm, useForm } from '/@/components/Form';
  16. import { useMessage } from '/@/hooks/web/useMessage';
  17. import { complicationFormSchema } from './data';
  18. import {
  19. complicationAdd,
  20. complicationEdit,
  21. complicationById,
  22. } from '/@/api/biz/management/complication';
  23. const emit = defineEmits(['success', 'register']);
  24. const getTitle = computed(() => (!unref(isUpdate) ? '新增并发症' : '编辑并发症'));
  25. const isUpdate = ref(false);
  26. const rowId = ref();
  27. const { createMessage } = useMessage();
  28. const [registerForm, { resetFields, validate, setFieldsValue }] = useForm({
  29. layout: 'vertical',
  30. showResetButton: true,
  31. labelWidth: 100,
  32. schemas: complicationFormSchema,
  33. showActionButtonGroup: false,
  34. actionColOptions: {
  35. span: 23,
  36. },
  37. });
  38. const [registerModal, { setModalProps, closeModal }] = useModalInner(async data => {
  39. await resetFields();
  40. setModalProps({ confirmLoading: false });
  41. isUpdate.value = !!data?.isUpdate;
  42. if (unref(isUpdate)) {
  43. rowId.value = data.record.id;
  44. const resData = await complicationById(data.record.id);
  45. await setFieldsValue({
  46. ...resData,
  47. });
  48. }
  49. });
  50. // 提交按钮事件
  51. async function handleSubmit() {
  52. try {
  53. const values = await validate();
  54. setModalProps({ confirmLoading: true });
  55. !unref(isUpdate)
  56. ? await complicationAdd({ ...values })
  57. : await complicationEdit({ ...values, id: rowId.value });
  58. !unref(isUpdate) ? createMessage.success('新增成功!') : createMessage.success('编辑成功!');
  59. closeModal();
  60. emit('success', { isUpdate: unref(isUpdate), values: { ...values, id: rowId.value } });
  61. } finally {
  62. setModalProps({ confirmLoading: false, canFullscreen: false });
  63. }
  64. }
  65. </script>