Edit.vue 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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
  47. label="Address"
  48. placeholder="address"
  49. :error="form.errors.address"
  50. v-model="form.address"
  51. />
  52. </CCol>
  53. <CCol md="6" class="mb-4">
  54. <AppSelectInput label="Jenis Kelamin" :error="form.errors.gender" v-model="form.gender">
  55. <option value="1">Perempuan</option>
  56. <option value="2">Laki-laki</option>
  57. </AppSelectInput>
  58. </CCol>
  59. <CCol md="6" class="mb-4">
  60. <AppSelectInput label="Outlet" :error="form.errors.outlet_id" v-model="form.outlet_id">
  61. <option v-for="outlet in outlets" key="outlet.id" :value="outlet.id">{{ outlet.name }}</option>
  62. </AppSelectInput>
  63. </CCol>
  64. <CCol md="6">
  65. <AppSelectInput label="Hak Akses" :error="form.errors.role_id" v-model="form.role_id">
  66. <option v-for="role in roles" key="role.id" :value="role.id">{{ role.name }}</option>
  67. </AppSelectInput>
  68. </CCol>
  69. </CRow>
  70. <CCardFooter class="d-flex justify-content-between align-items-center">
  71. <AppButtonAction @click="toggleModalAlert">Hapus User</AppButtonAction>
  72. <AppModalAlert>
  73. Anda yakin ingin mengahapus user ini?
  74. <template #footer>
  75. <AppButtonDelete :href="route('users.destroy', user.id)">Hapus User</AppButtonDelete>
  76. </template>
  77. </AppModalAlert>
  78. <div>
  79. <Link
  80. :href="route('users.block', user.id)"
  81. as="button"
  82. method="delete"
  83. class="btn btn-ghost-primary me-2"
  84. >
  85. Block User
  86. </Link>
  87. <AppButtonCreate :disabled="form.processing">Ubah User</AppButtonCreate>
  88. </div>
  89. </CCardFooter>
  90. </CForm>
  91. </CCard>
  92. </CCol>
  93. </CRow>
  94. </DefaultLayout>
  95. </template>