organization.vue 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <template>
  2. <div class="d-flex flex-column align-center">
  3. <h2 class="ma-4">{{ $t('cmf_structure_licence')}}</h2>
  4. <a
  5. href="https://www.cmf-musique.org/services/tarifs-preferentiels/"
  6. target="_blank"
  7. >
  8. {{ $t('cmf_licence_details_url')}}
  9. </a>
  10. <v-form
  11. ref="form"
  12. lazy-validation
  13. >
  14. <v-btn class="ma-12" @click="submit">{{ $t('generate') }}</v-btn>
  15. </v-form>
  16. <span v-if="pending">
  17. Loading...
  18. </span>
  19. <span v-if="fileUrl !== null">
  20. <a :href="fileUrl">{{ fileUrl }}</a>
  21. </span>
  22. </div>
  23. </template>
  24. <script lang="ts">
  25. import {defineComponent, Ref, ref, useContext} from "@nuxtjs/composition-api";
  26. import {HTTP_METHOD, QUERY_TYPE} from "~/types/enums";
  27. import DataPersister from "~/services/data/dataPersister";
  28. import {DataPersisterArgs} from "~/types/interfaces";
  29. export default defineComponent({
  30. name: 'OrganizationCmfLicence',
  31. setup() {
  32. const { $config } = useContext()
  33. let pending: Ref<boolean> = ref(false)
  34. let fileUrl: Ref<string | null> = ref(null)
  35. console.log($config.baseUrl_mercure)
  36. const submit = async () => {
  37. const url = new URL($config.baseUrl_mercure)
  38. url.searchParams.append('topic', "files")
  39. // const eventSource = new EventSource(url.toString(), { withCredentials: true });
  40. const eventSource = new EventSource(url.toString());
  41. eventSource.onmessage = event => {
  42. // Will be called every time an update is published by the server
  43. const data = JSON.parse(event.data)
  44. fileUrl.value = data.url
  45. pending.value = false
  46. }
  47. const response = await DataPersister.request(
  48. '/api/export/cmf-licence/organization',
  49. HTTP_METHOD.POST,
  50. { type: QUERY_TYPE.DEFAULT, data: { format: 'pdf', async: true } } as DataPersisterArgs
  51. )
  52. pending.value = true
  53. }
  54. return {
  55. submit,
  56. pending,
  57. fileUrl
  58. }
  59. }
  60. })
  61. </script>