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