ExampleAdd.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <script setup lang="ts">
  2. import Write from './components/Write.vue'
  3. import { ContentDetailWrap } from '@/components/ContentDetailWrap'
  4. import { ref, unref } from 'vue'
  5. import { ElButton } from 'element-plus'
  6. import { useI18n } from '@/hooks/web/useI18n'
  7. import { useRouter } from 'vue-router'
  8. import { saveTableApi } from '@/api/table'
  9. import { useEmitt } from '@/hooks/event/useEmitt'
  10. const { emitter } = useEmitt()
  11. const { push, go } = useRouter()
  12. const { t } = useI18n()
  13. const writeRef = ref<ComponentRef<typeof Write>>()
  14. const loading = ref(false)
  15. const save = async () => {
  16. const write = unref(writeRef)
  17. const formData = await write?.submit()
  18. if (formData) {
  19. loading.value = true
  20. const res = await saveTableApi(formData)
  21. .catch(() => {})
  22. .finally(() => {
  23. loading.value = false
  24. })
  25. if (res) {
  26. emitter.emit('getList', 'add')
  27. push('/example/example-page')
  28. }
  29. }
  30. }
  31. </script>
  32. <template>
  33. <ContentDetailWrap :title="t('exampleDemo.add')" @back="push('/example/example-page')">
  34. <Write ref="writeRef" />
  35. <template #header>
  36. <ElButton @click="go(-1)">
  37. {{ t('common.back') }}
  38. </ElButton>
  39. <ElButton type="primary" :loading="loading" @click="save">
  40. {{ t('exampleDemo.save') }}
  41. </ElButton>
  42. </template>
  43. </ContentDetailWrap>
  44. </template>
  45. @/hooks/event/useEmitt