12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <script setup>
  2. import { useForm } from '@/composables/useForm'
  3. import AppInputText from '@/components/AppInputText.vue'
  4. import DashboardLayout from '@/layouts/Dashboard/DashboardLayout.vue'
  5. const props = defineProps({
  6. number: String,
  7. })
  8. const form = useForm({
  9. name: null,
  10. unit: null,
  11. profit: null,
  12. })
  13. const onSubmit = () => {
  14. form
  15. .transform((data) => ({
  16. number: props.number,
  17. ...data,
  18. }))
  19. .post(route('products.store'), { onSuccess: () => form.reset() })
  20. }
  21. </script>
  22. <template>
  23. <DashboardLayout title="Tambah Produk">
  24. <div class="grid">
  25. <div class="col-12">
  26. <Card>
  27. <template #title> Tambah Produk </template>
  28. <template #content>
  29. <div class="grid">
  30. <div class="col-12 md:col-6">
  31. <AppInputText
  32. disabled
  33. label="Nomor Produk"
  34. placeholder="nomor produk"
  35. :error="form.errors.number"
  36. v-model="number"
  37. />
  38. </div>
  39. <div class="col-12 md:col-6">
  40. <AppInputText
  41. label="Nama"
  42. placeholder="nama"
  43. :error="form.errors.name"
  44. v-model="form.name"
  45. />
  46. </div>
  47. <div class="col-12 md:col-6">
  48. <AppInputText
  49. label="Satuan"
  50. placeholder="satuan"
  51. :error="form.errors.unit"
  52. v-model="form.unit"
  53. />
  54. </div>
  55. <div class="col-12 md:col-6">
  56. <AppInputText
  57. label="Profit"
  58. placeholder="profit"
  59. type="number"
  60. :error="form.errors.profit"
  61. v-model="form.profit"
  62. />
  63. </div>
  64. </div>
  65. <div class="flex flex-column md:flex-row justify-content-end">
  66. <Button
  67. label="Simpan"
  68. icon="pi pi-check"
  69. class="p-button-outlined"
  70. :disabled="form.processing"
  71. @click="onSubmit"
  72. />
  73. </div>
  74. </template>
  75. </Card>
  76. </div>
  77. </div>
  78. </DashboardLayout>
  79. </template>