ProductCreate.vue 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <script setup>
  2. import { usePage } from '@inertiajs/inertia-vue3'
  3. import { useForm } from '@/composables/useForm'
  4. import AppInputText from '@/components/AppInputText.vue'
  5. const form = useForm({
  6. name: null,
  7. unit: null,
  8. })
  9. const onSubmit = () => {
  10. form
  11. .transform((data) => ({
  12. number: usePage().props.value.productNumber,
  13. ...data,
  14. }))
  15. .post(route('products.store'), { onSuccess: () => form.reset() })
  16. }
  17. </script>
  18. <template>
  19. <div class="grid">
  20. <div class="col-12 md:col-6">
  21. <AppInputText
  22. disabled
  23. label="Nomor Produk"
  24. placeholder="nomor produk"
  25. v-model="$page.props.productNumber"
  26. />
  27. </div>
  28. <div class="col-12 md:col-6">
  29. <AppInputText
  30. label="Nama"
  31. placeholder="nama"
  32. :error="form.errors.name"
  33. v-model="form.name"
  34. />
  35. </div>
  36. <div class="col-12 md:col-6">
  37. <AppInputText
  38. label="Satuan"
  39. placeholder="satuan"
  40. :error="form.errors.unit"
  41. v-model="form.unit"
  42. />
  43. </div>
  44. </div>
  45. <div class="flex flex-column md:flex-row justify-content-end">
  46. <Button
  47. label="Simpan"
  48. icon="pi pi-check"
  49. class="p-button-outlined"
  50. :disabled="form.processing"
  51. @click="onSubmit"
  52. />
  53. </div>
  54. </template>