123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <script setup>
  2. import { reactive, watch, onMounted } from 'vue'
  3. import { useForm } from '@inertiajs/inertia-vue3'
  4. import AppInputText from '@/components/AppInputText.vue'
  5. import AppDropdown from '@/components/AppDropdown.vue'
  6. import AppPagination from '@/components/AppPagination.vue'
  7. import { InTable, OutTable } from './TableHeader'
  8. const props = defineProps({
  9. data: Object,
  10. dataCount: Number,
  11. typeVehicles: Object,
  12. entryTransactionData: Object,
  13. entryTransactionCount: Number,
  14. })
  15. watch(
  16. () => props.entryTransactionData,
  17. () => {
  18. setLocalEntryTransaction()
  19. }
  20. )
  21. onMounted(() => {
  22. setLocalEntryTransaction()
  23. })
  24. const localEntryTransactions = reactive([])
  25. const localEntryTransactionDeleted = reactive([])
  26. const setLocalEntryTransaction = () => {
  27. localEntryTransactions.splice(0)
  28. localEntryTransactions.push(...props.entryTransactionData.data)
  29. }
  30. const copy = (data) => {
  31. form.entry_transaction_id = data.transactionNumber
  32. const filterLocalEntryTransactions = props.entryTransactionData.data.filter((val) => {
  33. localEntryTransactionDeleted.push(data.transactionNumber)
  34. return val.entryTransactionId !== data.transactionNumber
  35. })
  36. localEntryTransactions.splice(0)
  37. localEntryTransactions.push(...filterLocalEntryTransactions)
  38. }
  39. const form = useForm({
  40. id: 2,
  41. plat_number: null,
  42. entry_transaction_id: null,
  43. type_vehicle_id: null,
  44. })
  45. const submit = () => {
  46. form.post(route('test-transactions.store'))
  47. }
  48. </script>
  49. <template>
  50. <Card>
  51. <template #title> <h1>Out</h1> </template>
  52. <template #content>
  53. <DataTable
  54. responsiveLayout="scroll"
  55. columnResizeMode="expand"
  56. :value="localEntryTransactions"
  57. :rowHover="true"
  58. :stripedRows="true"
  59. >
  60. <template #header>
  61. <span style="color: var(--primary-color)">Car Entry :</span> {{ entryTransactionCount }}
  62. </template>
  63. <Column v-for="inTable in InTable" :field="inTable.field" :header="inTable.header" :key="inTable.field" />
  64. <Column>
  65. <template #body="{ data }">
  66. <Button icon="pi pi-copy" class="p-button-rounded p-button-text" @click="copy(data)" />
  67. </template>
  68. </Column>
  69. </DataTable>
  70. <AppPagination :links="entryTransactionData.links" />
  71. <Divider type="dashed" />
  72. <div class="grid">
  73. <div class="col-12 md:col-6">
  74. <AppInputText
  75. v-model="form.plat_number"
  76. label="Vehicle Plate"
  77. placeholder="vehicle plate"
  78. :error="form.errors.plat_number"
  79. />
  80. </div>
  81. <div class="col-12 md:col-6">
  82. <AppInputText
  83. disabled
  84. v-model="form.entry_transaction_id"
  85. label="Transaction number"
  86. placeholder="transaction number"
  87. :error="form.errors.entry_transaction_id"
  88. />
  89. </div>
  90. <div class="col-12 md:col-6">
  91. <AppDropdown
  92. v-model="form.type_vehicle_id"
  93. label="Type Vehicle"
  94. placeholder="type vehicle"
  95. :options="typeVehicles"
  96. :error="form.errors.type_vehicle_id"
  97. />
  98. </div>
  99. </div>
  100. <Divider type="dashed" />
  101. <DataTable
  102. responsiveLayout="scroll"
  103. columnResizeMode="expand"
  104. :value="data.data"
  105. :rowHover="true"
  106. :stripedRows="true"
  107. >
  108. <template #header> <span style="color: var(--red-600)">Car Out :</span> {{ dataCount }} </template>
  109. <Column v-for="outTable in OutTable" :field="outTable.field" :header="outTable.header" :key="outTable.field" />
  110. </DataTable>
  111. <AppPagination :links="data.links" />
  112. </template>
  113. <template #footer>
  114. <div class="flex flex-column md:flex-row justify-content-end">
  115. <Button
  116. label="Car Out"
  117. icon="pi pi-check"
  118. class="p-button-outlined"
  119. :disabled="form.processing"
  120. @click="submit"
  121. />
  122. </div>
  123. </template>
  124. </Card>
  125. </template>