12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <script setup>
  2. import { IDRCurrencyFormat } from '@/utils/currencyFormat'
  3. defineProps({
  4. title: String,
  5. ppn: {
  6. required: true,
  7. type: Number,
  8. },
  9. headerTable: {
  10. required: true,
  11. type: Array,
  12. },
  13. valueTable: {
  14. required: true,
  15. type: Array,
  16. },
  17. checkedPpn: Boolean,
  18. })
  19. </script>
  20. <template>
  21. <DataTable
  22. responsiveLayout="scroll"
  23. columnResizeMode="expand"
  24. :value="valueTable"
  25. :rowHover="true"
  26. :stripedRows="true"
  27. >
  28. <template #header>
  29. <h2 class="text-2xl font-bold">{{ title }}</h2>
  30. <div class="field-checkbox flex justify-content-end gap-2">
  31. <label class="text-sm" for="ppn">
  32. Semua produk dikenakan PPN {{ ppn }}%
  33. </label>
  34. <input
  35. type="checkbox"
  36. id="ppn"
  37. :checked="checkedPpn"
  38. @input="$emit('update:checkedPpn', $event.target.checked)"
  39. />
  40. </div>
  41. </template>
  42. <Column
  43. v-for="value in headerTable"
  44. :field="value.field"
  45. :header="value.header"
  46. :key="value.field"
  47. >
  48. <template #body="{ data, field }">
  49. <template v-if="field == 'price'">
  50. {{ IDRCurrencyFormat(data[field]) }}
  51. </template>
  52. <template v-else> {{ data[field] }} </template>
  53. </template>
  54. </Column>
  55. <Column>
  56. <template #body="{ index }">
  57. <Button
  58. icon="pi pi-trash"
  59. class="p-button-icon-only p-button-rounded p-button-text"
  60. v-tooltip.bottom="'hapus'"
  61. @click="$emit('delete', index)"
  62. />
  63. </template>
  64. </Column>
  65. </DataTable>
  66. </template>