Show.vue 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <script setup>
  2. import { detailTable, filterOptionCategory } from './config'
  3. import AppPagination from '@/components/AppPagination.vue'
  4. import AppDateRangeFilter from '@/components/AppDateRangeFilter.vue'
  5. import AppDropdownFilter from '@/components/AppDropdownFilter.vue'
  6. import AppButtonLink from '@/components/AppButtonLink.vue'
  7. import AppResetFilter from '@/components/AppResetFilter.vue'
  8. import DashboardLayout from '@/layouts/Dashboard/DashboardLayout.vue'
  9. const props = defineProps({
  10. initialFilters: Object,
  11. productId: Number,
  12. productNumber: String,
  13. historyStockProducts: {
  14. type: Object,
  15. default: {
  16. data: [],
  17. links: [],
  18. total: 0,
  19. },
  20. },
  21. })
  22. const exportExcel = () => {
  23. return (
  24. '/stock-products/history/excel' +
  25. location.search +
  26. `&product_number=${props.productNumber}`
  27. )
  28. }
  29. </script>
  30. <template>
  31. <DashboardLayout title="History Stok Produk">
  32. <DataTable
  33. responsiveLayout="scroll"
  34. :value="historyStockProducts.data"
  35. :rowHover="true"
  36. :stripedRows="true"
  37. >
  38. <template #header>
  39. <h1>History Stok Produk</h1>
  40. <div class="grid">
  41. <div class="col-12 sm:col-6 lg:col-4">
  42. <AppDateRangeFilter
  43. placeholder="filter waktu..."
  44. :name-param="['start_date', 'end_date']"
  45. :initial-date-rage="initialFilters"
  46. />
  47. </div>
  48. <div class="col-12 sm:col-6 lg:col-4">
  49. <AppDropdownFilter
  50. placeholder="category"
  51. name-param="category"
  52. :initial-dropdown="initialFilters"
  53. :options="filterOptionCategory"
  54. />
  55. </div>
  56. <div class="col-12 sm:col-6 lg:col-4">
  57. <AppResetFilter :url="route('stock-products.history', productId)" />
  58. </div>
  59. <div class="col-12 flex flex-column sm:flex-row">
  60. <AppButtonLink
  61. v-if="historyStockProducts.total"
  62. label="Export excel"
  63. class-button="p-button-outlined md:w-16rem"
  64. icon="pi pi-file-excel"
  65. :inertia-link="false"
  66. :href="exportExcel()"
  67. />
  68. </div>
  69. </div>
  70. </template>
  71. <Column
  72. v-for="value in detailTable"
  73. :key="value.field"
  74. :field="value.field"
  75. :header="value.header"
  76. />
  77. <Column>
  78. <template #body="{ data }">
  79. <Badge
  80. v-if="data.category === 'Penambahan'"
  81. :value="data.category"
  82. severity="success"
  83. class="mr-2"
  84. ></Badge>
  85. <Badge
  86. v-if="data.category === 'Pengurangan'"
  87. :value="data.category"
  88. severity="danger"
  89. class="mr-2"
  90. ></Badge>
  91. </template>
  92. </Column>
  93. </DataTable>
  94. <AppPagination :links="historyStockProducts.links" />
  95. </DashboardLayout>
  96. </template>