Report.vue 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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 route('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. :url="route('sales.report')"
  39. :refresh-data="['sales']"
  40. :initial-filter="initialFilters"
  41. />
  42. </div>
  43. <div class="col-12 sm:col-6 lg:col-4">
  44. <AppResetFilter :url="route('sales.report')" />
  45. </div>
  46. <div class="col-12">
  47. <AppButtonLink
  48. v-if="sales.total"
  49. label="Export excel"
  50. class-button="p-button-outlined md:w-16rem"
  51. icon="pi pi-file-excel"
  52. :inertia-link="false"
  53. :href="exportExcel()"
  54. />
  55. </div>
  56. </div>
  57. </template>
  58. <Column
  59. v-for="value in reportTable"
  60. :field="value.field"
  61. :header="value.header"
  62. :key="value.field"
  63. />
  64. </DataTable>
  65. <AppPagination :links="sales.links" />
  66. </DashboardLayout>
  67. </template>