Edit.vue 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <script setup>
  2. import { useForm, Link, Head } from '@inertiajs/inertia-vue3'
  3. import AppTextInput from '@/components/AppTextInput.vue'
  4. import AppSelectInput from '@/components/AppSelectInput.vue'
  5. import AppButtonCreate from '@/components/AppButtonCreate.vue'
  6. import AppButtonDelete from '@/components/AppButtonDelete.vue'
  7. import AppButtonAction from '@/components/AppButtonAction.vue'
  8. import AppModalAlert from '@/components/AppModalAlert.vue'
  9. import DefaultLayout from '@/layouts/DefaultLayout.vue'
  10. const props = defineProps({
  11. user: Object,
  12. outlets: Array,
  13. roles: Array,
  14. })
  15. const form = useForm({
  16. name: props.user.name,
  17. phone: props.user.phone,
  18. email: props.user.email,
  19. address: props.user.address,
  20. gender: props.user.gender,
  21. outlet_id: props.user.outlet,
  22. role_id: props.user.role,
  23. })
  24. const submit = () => {
  25. form.put(route('users.update', props.user.id))
  26. }
  27. </script>
  28. <template>
  29. <Head title="Ubah User" />
  30. <DefaultLayout v-slot="{ toggleModalAlert }">
  31. <CRow>
  32. <CCol md="8">
  33. <CCard color="light" class="border-light">
  34. <CForm @submit.prevent="submit">
  35. <CRow class="p-4">
  36. <CCol md="6" class="mb-4">
  37. <AppTextInput label="Nama" placeholder="nama" :error="form.errors.name" v-model="form.name" />
  38. </CCol>
  39. <CCol md="6" class="mb-4">
  40. <AppTextInput label="Nomor HP" placeholder="nomor hp" :error="form.errors.phone" v-model="form.phone" />
  41. </CCol>
  42. <CCol md="6" class="mb-4">
  43. <AppTextInput label="Email" placeholder="email" :error="form.errors.email" v-model="form.email" />
  44. </CCol>
  45. <CCol md="6" class="mb-4">
  46. <AppTextInput label="Alamat" placeholder="alamat" :error="form.errors.address" v-model="form.address" />
  47. </CCol>
  48. <CCol md="6" class="mb-4">
  49. <AppSelectInput label="Jenis Kelamin" :error="form.errors.gender" v-model="form.gender">
  50. <option value="1">Perempuan</option>
  51. <option value="2">Laki-laki</option>
  52. </AppSelectInput>
  53. </CCol>
  54. <CCol md="6" class="mb-4">
  55. <AppSelectInput label="Outlet" :error="form.errors.outlet_id" v-model="form.outlet_id">
  56. <option v-for="outlet in outlets" key="outlet.id" :value="outlet.id">{{ outlet.name }}</option>
  57. </AppSelectInput>
  58. </CCol>
  59. <CCol md="6">
  60. <AppSelectInput label="Hak Akses" :error="form.errors.role_id" v-model="form.role_id">
  61. <option v-for="role in roles" key="role.id" :value="role.id">{{ role.name }}</option>
  62. </AppSelectInput>
  63. </CCol>
  64. </CRow>
  65. <CCardFooter class="d-flex justify-content-between align-items-center">
  66. <AppButtonAction @click="toggleModalAlert">Hapus User</AppButtonAction>
  67. <AppModalAlert>
  68. Anda yakin ingin mengahapus user ini?
  69. <template #footer>
  70. <AppButtonDelete :href="route('users.destroy', user.id)">Hapus User</AppButtonDelete>
  71. </template>
  72. </AppModalAlert>
  73. <div>
  74. <Link
  75. :href="route('users.block', user.id)"
  76. as="button"
  77. method="delete"
  78. class="btn btn-ghost-primary me-2"
  79. >
  80. Block User
  81. </Link>
  82. <AppButtonCreate :disabled="form.processing">Ubah User</AppButtonCreate>
  83. </div>
  84. </CCardFooter>
  85. </CForm>
  86. </CCard>
  87. </CCol>
  88. </CRow>
  89. </DefaultLayout>
  90. </template>