feat: create export laporan cico
This commit is contained in:
		| @@ -1,5 +1,11 @@ | ||||
| <template> | ||||
|   <Filters @run-search="() => filterData(filters)" :report-button="true" class="mb-4"> | ||||
|   <Filters | ||||
|     @run-report="() => exportToPDF(reportMeta, data, true)" | ||||
|     @reset-form="data = []" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     :report-button="true" | ||||
|     class="mb-4" | ||||
|   > | ||||
|     <Type1 @update:filters="(value) => (filters = value)" /> | ||||
|   </Filters> | ||||
|  | ||||
| @@ -193,7 +199,7 @@ | ||||
|           :hover-state-enabled="true" | ||||
|           @selection-changed="onDataSubSelectionChanged" | ||||
|           :column-width="100" | ||||
|           @exporting="onExporting" | ||||
|           @exporting="onExportingDetail" | ||||
|           :allow-column-resizing="true" | ||||
|           column-resizing-mode="widget" | ||||
|         > | ||||
| @@ -868,14 +874,8 @@ import { | ||||
|   DxSummary, | ||||
|   DxTotalItem | ||||
| } from 'devextreme-vue/data-grid' | ||||
| import { jsPDF } from 'jspdf' | ||||
| import { exportDataGrid as exportToPdf } from 'devextreme/pdf_exporter' | ||||
| import { exportDataGrid as exportToExcel } from 'devextreme/excel_exporter' | ||||
| import { saveAs } from 'file-saver' | ||||
| import { Workbook } from 'exceljs' | ||||
| import Filters from '@/components/Form/Filters.vue' | ||||
| import { Type1 } from '@/components/Form/FiltersType' | ||||
| import { useQuery } from '@vue/apollo-composable' | ||||
| import { queries, requestGraphQl } from '@/utils/api/api.graphql' | ||||
| import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' | ||||
| import DetailDialog from '@/components/Dialogs/DetailDialog.vue' | ||||
| @@ -884,6 +884,12 @@ import { formatWaktu } from '@/components/Form/FiltersType/reference' | ||||
| import { apolloClient } from '@/utils/api/api.graphql' | ||||
| import { provideApolloClient } from '@vue/apollo-composable' | ||||
| import BufferDialog from '@/components/Dialogs/BufferDialog.vue' | ||||
| import { | ||||
|   exportToPDF, | ||||
|   exportToXLSX, | ||||
|   exportDetailToPDF, | ||||
|   exportDetailToXLSX | ||||
| } from '@/report/Cico/LaporanCICO' | ||||
|  | ||||
| const client = apolloClient() | ||||
| provideApolloClient(client) | ||||
| @@ -899,6 +905,12 @@ const dataSub = ref<any[]>([]) | ||||
| const dialogDetail = ref(false) | ||||
| const loadingData = ref(false) | ||||
| const loadingSubData = ref(false) | ||||
| const reportMeta = ref({ | ||||
|   uid: { id: 0, name: 'Semua Unit Induk Distribusi/Wilayah' }, | ||||
|   up3: { id: 0, name: 'Semua Unit Pelaksanaan Pelayanan Pelanggan' }, | ||||
|   posko: { id: 0, name: 'Semua Posko' }, | ||||
|   periode: '' | ||||
| }) | ||||
|  | ||||
| const closedialogDetail = () => (dialogDetail.value = false) | ||||
|  | ||||
| @@ -951,30 +963,19 @@ const showDetail = () => { | ||||
|  | ||||
| const onExporting = (e: any) => { | ||||
|   if (e.format === 'pdf') { | ||||
|     const doc = new jsPDF() | ||||
|  | ||||
|     exportToPdf({ | ||||
|       jsPDFDocument: doc, | ||||
|       component: e.component, | ||||
|       indent: 5 | ||||
|     }).then(() => { | ||||
|       doc.save(`.pdf`) | ||||
|     }) | ||||
|     exportToPDF(reportMeta.value, data.value) | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|     const workbook = new Workbook() | ||||
|     const worksheet = workbook.addWorksheet('Employees') | ||||
|   } | ||||
| } | ||||
|  | ||||
|     exportToExcel({ | ||||
|       component: e.component, | ||||
|       worksheet, | ||||
|       autoFilterEnabled: true | ||||
|     }).then(() => { | ||||
|       workbook.xlsx.writeBuffer().then((buffer: any) => { | ||||
|         saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'DataGrid.xlsx') | ||||
|       }) | ||||
|     }) | ||||
|  | ||||
|     e.cancel = true | ||||
| const onExportingDetail = (e: any) => { | ||||
|   if (e.format === 'pdf') { | ||||
|     exportDetailToPDF(reportMeta.value, dataSub.value) | ||||
|   } else if (e.format === 'xlsx') { | ||||
|     exportDetailToXLSX(reportMeta.value, e) | ||||
|   } else { | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -1021,6 +1022,8 @@ const filterData = async (params: any) => { | ||||
|       } else { | ||||
|         data.value = [] | ||||
|       } | ||||
|  | ||||
|       reportMeta.value = filters.value | ||||
|     }) | ||||
|     .catch((err) => { | ||||
|       console.error(err) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user