Create.vue 2.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <script setup>
  2. import { computed, watch } from 'vue'
  3. import { useForm, Head, usePage } from '@inertiajs/inertia-vue3'
  4. import AppInputText from '@/components/AppInputText.vue'
  5. import AppDropdown from '@/components/AppDropdown.vue'
  6. import AppButton from '@/components/AppButton.vue'
  7. import AppLayout from '@/layouts/AppLayout.vue'
  8. defineProps({
  9. genders: Array,
  10. outlets: Array,
  11. roles: Array,
  12. })
  13. const errors = computed(() => usePage().props.value.errors)
  14. watch(errors, () => {
  15. form.clearErrors()
  16. })
  17. const form = useForm({
  18. name: '',
  19. phone: '',
  20. email: '',
  21. gender_id: '',
  22. outlet_id: '',
  23. role_id: '',
  24. })
  25. const submit = () => {
  26. form.post(route('users.store'))
  27. }
  28. </script>
  29. <template>
  30. <Head title="Tambah User" />
  31. <AppLayout>
  32. <div class="grid">
  33. <div class="col-12 lg:col-8">
  34. <Card>
  35. <template #content>
  36. <div class="grid">
  37. <div class="col-12 md:col-6">
  38. <AppInputText label="Nama" placeholder="nama" :error="form.errors.name" v-model="form.name" />
  39. </div>
  40. <div class="col-12 md:col-6">
  41. <AppInputText label="Nomor HP" placeholder="nomor hp" :error="form.errors.phone" v-model="form.phone" />
  42. </div>
  43. <div class="col-12 md:col-6">
  44. <AppInputText label="Email" placeholder="email" :error="form.errors.email" v-model="form.email" />
  45. </div>
  46. <div class="col-12 md:col-6">
  47. <AppDropdown
  48. label="Jenis Kelamin"
  49. placeholder="pilih satu"
  50. v-model="form.gender_id"
  51. :options="genders"
  52. :error="form.errors.gender_id"
  53. />
  54. </div>
  55. <div class="col-12 md:col-6">
  56. <AppDropdown
  57. label="Hak Akses"
  58. placeholder="pilih satu"
  59. v-model="form.role_id"
  60. :options="roles"
  61. :error="form.errors.role_id"
  62. />
  63. </div>
  64. <div class="col-12 md:col-6">
  65. <AppDropdown
  66. label="Outlet"
  67. placeholder="pilih satu"
  68. v-model="form.outlet_id"
  69. :options="outlets"
  70. :error="form.errors.outlet_id"
  71. />
  72. </div>
  73. </div>
  74. </template>
  75. <template #footer>
  76. <div class="flex justify-content-end">
  77. <AppButton label="Simpan" @click="submit" icon="pi pi-check" class="p-button-text" />
  78. </div>
  79. </template>
  80. </Card>
  81. </div>
  82. </div>
  83. </AppLayout>
  84. </template>