formDrawer.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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 { sysPosAdd, sysPosEdit, sysPosDetail } from '/@/api/sys/sysPosApi';
  21. const emit = defineEmits(['success', 'register']);
  22. const getTitle = computed(() => (!unref(isUpdate) ? '新增岗位管理' : '编辑岗位管理'));
  23. const width = '45%';
  24. const isUpdate = ref(false);
  25. const rowId = ref();
  26. const { createMessage } = useMessage();
  27. const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({
  28. labelWidth: 100,
  29. schemas: dataFormSchema,
  30. showActionButtonGroup: false,
  31. actionColOptions: {
  32. span: 23,
  33. },
  34. });
  35. const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async data => {
  36. await resetFields();
  37. setDrawerProps({ confirmLoading: false });
  38. isUpdate.value = !!data?.isUpdate;
  39. if (unref(isUpdate)) {
  40. const resData = await sysPosDetail(data.record.id);
  41. rowId.value = resData.id;
  42. await setFieldsValue({
  43. ...resData,
  44. disable: String(resData.disable),
  45. });
  46. }
  47. });
  48. // 提交按钮事件
  49. async function handleSubmit() {
  50. try {
  51. const values = await validate();
  52. setDrawerProps({ confirmLoading: true });
  53. !unref(isUpdate)
  54. ? await sysPosAdd({ ...values })
  55. : await sysPosEdit({ ...values, id: rowId.value });
  56. !unref(isUpdate) ? createMessage.success('新增成功!') : createMessage.success('编辑成功!');
  57. closeDrawer();
  58. emit('success', {
  59. isUpdate: unref(isUpdate),
  60. values: { ...values, id: rowId.value },
  61. });
  62. } finally {
  63. setDrawerProps({ confirmLoading: false });
  64. }
  65. }
  66. </script>