Create.vue 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <script setup>
  2. import { watch } from 'vue'
  3. import { Inertia } from '@inertiajs/inertia'
  4. import { useForm } from '@inertiajs/inertia-vue3'
  5. import { useFormErrorReset } from '@/components/useFormErrorReset'
  6. import { throttle } from 'lodash'
  7. import AppInputText from '@/components/AppInputText.vue'
  8. import AppDropdown from '@/components/AppDropdown.vue'
  9. import DashboardLayout from '@/layouts/DashboardLayout.vue'
  10. import IndexTable from './TableHeader'
  11. defineProps({
  12. outTransactions: Object,
  13. typeVehicles: Object,
  14. })
  15. const form = useForm({
  16. plat_number: null,
  17. entry_transaction_id: null,
  18. type_vehicle_id: null,
  19. })
  20. useFormErrorReset(form)
  21. watch(
  22. () => form.plat_number,
  23. () => {
  24. Inertia.reload({
  25. only: ['typeVehicles'],
  26. data: { plat_number: form.plat_number },
  27. })
  28. }
  29. )
  30. const submit = () => {
  31. form.post(route('transactions.store'), { onSuccess: () => form.reset() })
  32. }
  33. </script>
  34. <template>
  35. <DashboardLayout>
  36. <div class="grid">
  37. <div class="col-12">
  38. <Card>
  39. <template #title> Tambah Transaksi Keluar </template>
  40. <template #content>
  41. <div class="grid">
  42. <div class="col-12 md:col-6">
  43. <AppInputText
  44. v-model="form.plat_number"
  45. label="Plat Kendaraan"
  46. placeholder="plat kendaraan"
  47. :error="form.errors.plat_number"
  48. />
  49. </div>
  50. <div class="col-12 md:col-6">
  51. <AppInputText
  52. v-model="form.entry_transaction_id"
  53. label="Nomor Transaksi"
  54. placeholder="nomor transaksi"
  55. :error="form.errors.entry_transaction_id"
  56. />
  57. </div>
  58. <div class="col-12 md:col-6">
  59. <AppDropdown
  60. v-model="form.type_vehicle_id"
  61. label="Jenis Kendaraan"
  62. placeholder="jenis kendaraan"
  63. :options="typeVehicles"
  64. :error="form.errors.type_vehicle_id"
  65. />
  66. </div>
  67. </div>
  68. </template>
  69. <template #footer>
  70. <div class="flex flex-column md:flex-row justify-content-end">
  71. <Button
  72. label="Simpan"
  73. icon="pi pi-check"
  74. class="p-button-outlined"
  75. :disabled="form.processing"
  76. @click="submit"
  77. />
  78. </div>
  79. </template>
  80. </Card>
  81. </div>
  82. <div class="col-12">
  83. <Card>
  84. <template #title> Kendaraan Keluar </template>
  85. <template #content>
  86. <DataTable
  87. responsiveLayout="scroll"
  88. columnResizeMode="expand"
  89. :value="outTransactions"
  90. :rowHover="true"
  91. :stripedRows="true"
  92. >
  93. <template #header>
  94. <span style="color: var(--red-600)">
  95. Maksimal ditampilkan :
  96. </span>
  97. 10
  98. <br />
  99. <span style="color: var(--red-600)">Ditampilkan :</span>
  100. {{ Object.keys(outTransactions).length }}
  101. </template>
  102. <Column
  103. v-for="value in IndexTable"
  104. :field="value.field"
  105. :header="value.header"
  106. :key="value.field"
  107. />
  108. </DataTable>
  109. </template>
  110. </Card>
  111. </div>
  112. </div>
  113. </DashboardLayout>
  114. </template>