padsDrawer.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <template>
  2. <BasicDrawer
  3. v-bind="$attrs"
  4. width="50%"
  5. :showDetailBack="false"
  6. :title="getTitle"
  7. @register="registerDrawer"
  8. >
  9. <BasicForm @register="registerForm" />
  10. </BasicDrawer>
  11. </template>
  12. <script lang="ts">
  13. import { defineComponent, computed, ref, unref } from 'vue';
  14. import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
  15. import { BasicForm, useForm } from '/@/components/Form';
  16. import { useMessage } from '/@/hooks/web/useMessage';
  17. import { padsSchemas } from './schemas';
  18. import { padsSaveApi, padsUpdateApi } from '/@/api/advertisement/list';
  19. export default defineComponent({
  20. components: { BasicDrawer, BasicForm },
  21. props: {
  22. type: {
  23. type: String,
  24. default: '0',
  25. },
  26. },
  27. emits: ['register', 'reload'],
  28. setup(props, { emit }) {
  29. const { createMessage } = useMessage();
  30. const modelRef = ref({
  31. type: props.type,
  32. });
  33. const isUpdate = ref(true);
  34. const [registerForm, { validate, setProps, resetFields, setFieldsValue }] = useForm({
  35. labelCol: {
  36. span: 4,
  37. },
  38. wrapperCol: {
  39. span: 18,
  40. },
  41. schemas: padsSchemas,
  42. actionColOptions: {
  43. offset: 8,
  44. span: 8,
  45. },
  46. submitButtonOptions: {
  47. text: '提交',
  48. },
  49. submitFunc: summitAddDrawer,
  50. });
  51. async function summitAddDrawer() {
  52. try {
  53. let data = await validate();
  54. let httpApi = unref(isUpdate) ? padsUpdateApi : padsSaveApi;
  55. setProps({
  56. submitButtonOptions: {
  57. loading: true,
  58. },
  59. });
  60. httpApi({
  61. ...modelRef.value,
  62. ...data,
  63. image: data.image[0],
  64. }).then((_) => {
  65. setProps({
  66. submitButtonOptions: {
  67. loading: false,
  68. },
  69. });
  70. createMessage.success('提交成功!');
  71. emit('reload');
  72. closeDrawer();
  73. });
  74. } catch (error) {
  75. console.log('error', error);
  76. }
  77. }
  78. const getTitle = computed(() => (!unref(isUpdate) ? '新增推荐位' : '编辑推荐位'));
  79. const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
  80. resetFields();
  81. setDrawerProps({ confirmLoading: false });
  82. isUpdate.value = !!data?.isUpdate;
  83. modelRef.value = {
  84. ...data.record,
  85. type: props.type,
  86. };
  87. if (unref(isUpdate)) {
  88. console.log('data.record', data.record);
  89. setFieldsValue({
  90. ...data.record,
  91. image: [data.record.image],
  92. });
  93. }
  94. });
  95. return {
  96. registerForm,
  97. getTitle,
  98. registerDrawer,
  99. closeDrawer,
  100. };
  101. },
  102. });
  103. </script>