|
|
@@ -25,7 +25,9 @@
|
|
|
color="primary"
|
|
|
:loading="pending"
|
|
|
:disabled="pending"
|
|
|
- :href="file ? file.url : ''">
|
|
|
+ target="_blank"
|
|
|
+ @click="download"
|
|
|
+ >
|
|
|
{{ $t('download') }}
|
|
|
</v-btn>
|
|
|
</div>
|
|
|
@@ -37,13 +39,14 @@
|
|
|
import {computed, ComputedRef, defineComponent, Ref, ref, useContext} from "@nuxtjs/composition-api";
|
|
|
import {QUERY_TYPE} from "~/types/enums";
|
|
|
import DataPersister from "~/services/data/dataPersister";
|
|
|
-import {DataPersisterArgs} from "~/types/interfaces";
|
|
|
+import {DataPersisterArgs, DataProviderArgs} from "~/types/interfaces";
|
|
|
import { Context } from "@nuxt/types";
|
|
|
import {Repository as VuexRepository} from "@vuex-orm/core/dist/src/repository/Repository";
|
|
|
import {Model, Query} from "@vuex-orm/core";
|
|
|
import {repositoryHelper} from "~/services/store/repository";
|
|
|
import {File} from "~/models/Core/File";
|
|
|
import {queryHelper} from "~/services/store/query";
|
|
|
+import DataProvider from "~/services/data/dataProvider";
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'OrganizationCmfLicence',
|
|
|
@@ -66,10 +69,8 @@ export default defineComponent({
|
|
|
const query: Query = repository.query()
|
|
|
|
|
|
const submit = async () => {
|
|
|
- const dataPersister = new DataPersister()
|
|
|
- dataPersister.initCtx(context as unknown as Context)
|
|
|
|
|
|
- const response = await dataPersister.invoke(
|
|
|
+ const response = await context.$dataPersister.invoke(
|
|
|
{
|
|
|
url: '/api/export/cmf-licence/organization',
|
|
|
type: QUERY_TYPE.DEFAULT,
|
|
|
@@ -86,10 +87,42 @@ export default defineComponent({
|
|
|
repositoryHelper.persist(File, response.data)
|
|
|
}
|
|
|
|
|
|
+ const download = async () => {
|
|
|
+ if (file.value === null) {
|
|
|
+ console.error("File is not defined yet, impossible to download")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (pending.value) {
|
|
|
+ console.error("File is still pending, impossible to download")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ const response = await context.$dataProvider.invoke(
|
|
|
+ {
|
|
|
+ type: QUERY_TYPE.FILE,
|
|
|
+ fileArgs: { fileId: file.value.id }
|
|
|
+ } as DataProviderArgs
|
|
|
+ )
|
|
|
+
|
|
|
+ const blob = new Blob([response.data], { type: response.data.type })
|
|
|
+
|
|
|
+ const url = window.URL.createObjectURL(blob)
|
|
|
+
|
|
|
+ const link = document.createElement('a')
|
|
|
+ link.href = url
|
|
|
+ link.download = file.value.name ?? 'unknown'
|
|
|
+ link.target = '_blank'
|
|
|
+ link.click()
|
|
|
+
|
|
|
+ link.remove()
|
|
|
+ window.URL.revokeObjectURL(url)
|
|
|
+ }
|
|
|
+
|
|
|
return {
|
|
|
submit,
|
|
|
pending,
|
|
|
- file
|
|
|
+ file,
|
|
|
+ download: () => download()
|
|
|
}
|
|
|
},
|
|
|
beforeDestroy() {
|