formDrawer.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <template>
  2. <BasicDrawer
  3. v-bind="$attrs"
  4. destroyOnClose
  5. @register="registerDrawer"
  6. :title="getTitle"
  7. :width="width"
  8. @ok="handleSubmit"
  9. :showFooter="true"
  10. >
  11. <BasicForm @register="registerForm" layout="vertical" />
  12. </BasicDrawer>
  13. </template>
  14. <script lang="ts" setup>
  15. import { ref, computed, unref } from 'vue';
  16. import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
  17. import { BasicForm, useForm } from '/@/components/Form';
  18. import { useMessage } from '/@/hooks/web/useMessage';
  19. import { dataFormSchema } from './data';
  20. import {
  21. storageRecordAdd,
  22. storageRecordEdit,
  23. storageRecordDetail,
  24. } from '/@/api/infra/storageRecordApi';
  25. const emit = defineEmits(['success', 'register']);
  26. const getTitle = computed(() => (!unref(isUpdate) ? '新增存储记录' : '编辑存储记录'));
  27. const width = '45%';
  28. const isUpdate = ref(false);
  29. const rowId = ref();
  30. const { createMessage } = useMessage();
  31. const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({
  32. labelWidth: 100,
  33. schemas: dataFormSchema,
  34. showActionButtonGroup: false,
  35. actionColOptions: {
  36. span: 23,
  37. },
  38. });
  39. const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async data => {
  40. await resetFields();
  41. setDrawerProps({ confirmLoading: false });
  42. isUpdate.value = !!data?.isUpdate;
  43. if (unref(isUpdate)) {
  44. const resData = await storageRecordDetail(data.record.id);
  45. rowId.value = resData.id;
  46. await setFieldsValue({
  47. ...resData,
  48. });
  49. }
  50. });
  51. // 提交按钮事件
  52. async function handleSubmit() {
  53. try {
  54. const values = await validate();
  55. setDrawerProps({ confirmLoading: true });
  56. !unref(isUpdate)
  57. ? await storageRecordAdd({ ...values })
  58. : await storageRecordEdit({ ...values, id: rowId.value });
  59. !unref(isUpdate) ? createMessage.success('新增成功!') : createMessage.success('编辑成功!');
  60. closeDrawer();
  61. emit('success', {
  62. isUpdate: unref(isUpdate),
  63. values: { ...values, id: rowId.value },
  64. });
  65. } finally {
  66. setDrawerProps({ confirmLoading: false });
  67. }
  68. }
  69. </script>