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