Report.vue 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <script setup>
  2. import { reportTable } from './config'
  3. import AppDateRangeFilter from '@/components/AppDateRangeFilter.vue'
  4. import AppButtonLink from '@/components/AppButtonLink.vue'
  5. import AppResetFilter from '@/components/AppResetFilter.vue'
  6. import AppPagination from '@/components/AppPagination.vue'
  7. import DashboardLayout from '@/layouts/Dashboard/DashboardLayout.vue'
  8. defineProps({
  9. initialFilters: Object,
  10. purchases: {
  11. type: Object,
  12. default: {
  13. data: [],
  14. links: [],
  15. total: 0,
  16. },
  17. },
  18. })
  19. const exportExcel = () => {
  20. return route('purchases.report.excel', location.search)
  21. }
  22. </script>
  23. <template>
  24. <DashboardLayout title="Laporan Pembelian">
  25. <DataTable
  26. responsive-layout="scroll"
  27. column-resize-mode="expand"
  28. :value="purchases.data"
  29. :rowHover="true"
  30. :stripedRows="true"
  31. >
  32. <template #header>
  33. <h1>Laporan Pembelian</h1>
  34. <div class="grid">
  35. <div class="col-12 sm:col-6 lg:col-4">
  36. <AppDateRangeFilter
  37. placeholder="filter waktu..."
  38. :initial-filter="initialFilters"
  39. />
  40. </div>
  41. <div class="col-12 sm:col-6 lg:col-4">
  42. <AppResetFilter :url="route('purchases.report')" />
  43. </div>
  44. <div class="col-12">
  45. <AppButtonLink
  46. v-if="purchases.total"
  47. label="Export excel"
  48. class-button="p-button-outlined md:w-16rem"
  49. icon="pi pi-file-excel"
  50. :inertia-link="false"
  51. :href="exportExcel()"
  52. />
  53. </div>
  54. </div>
  55. </template>
  56. <Column
  57. v-for="value in reportTable"
  58. :field="value.field"
  59. :header="value.header"
  60. :key="value.field"
  61. />
  62. </DataTable>
  63. <AppPagination :links="purchases.links" />
  64. </DashboardLayout>
  65. </template>