Show.vue 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <script setup>
  2. import { Head, useForm } from '@inertiajs/inertia-vue3'
  3. import AppLayout from '@/layouts/AppLayout.vue'
  4. import AppInputText from '@/components/AppInputText.vue'
  5. import AppDropdown from '@/components/AppDropdown.vue'
  6. const props = defineProps({
  7. user: Object,
  8. roles: Array,
  9. outlets: Array,
  10. genders: Array,
  11. })
  12. const form = useForm({
  13. name: props.user.name,
  14. phone: props.user.phone,
  15. email: props.user.email,
  16. gender_id: props.user.gender_id,
  17. outlet_id: props.user.outlet_id,
  18. role_id: props.user.role_id,
  19. })
  20. const submit = () => {
  21. form.put(route('users.update', props.user.id))
  22. }
  23. const formChangePassword = useForm({
  24. old_password: '',
  25. new_password: '',
  26. new_password_confirmation: '',
  27. })
  28. const changePassword = () => {
  29. formChangePassword.post(route('users.change-password', props.user.id))
  30. }
  31. </script>
  32. <template>
  33. <Head title="Profil Saya" />
  34. <AppLayout>
  35. <div class="grid">
  36. <div class="col-12 md:col-8">
  37. <Card>
  38. <template #title>Profil Saya</template>
  39. <template #content>
  40. <TabView lazy>
  41. <TabPanel header="Ubah Profil">
  42. <div class="grid">
  43. <div class="col-12 md:col-6">
  44. <AppInputText label="Nama" placeholder="nama" :error="form.errors.name" v-model="form.name" />
  45. </div>
  46. <div class="col-12 md:col-6">
  47. <AppInputText
  48. label="Nomor HP"
  49. placeholder="nomor hp"
  50. :error="form.errors.phone"
  51. v-model="form.phone"
  52. />
  53. </div>
  54. <div class="col-12 md:col-6">
  55. <AppInputText label="Email" placeholder="email" :error="form.errors.email" v-model="form.email" />
  56. </div>
  57. <div class="col-12 md:col-6">
  58. <AppDropdown
  59. label="Jenis Kelamin"
  60. placeholder="pilih satu"
  61. v-model="form.gender_id"
  62. :options="genders"
  63. :error="form.errors.gender_id"
  64. />
  65. </div>
  66. <div class="col-12 flex justify-content-end">
  67. <Button
  68. label="Simpan"
  69. icon="pi pi-check"
  70. class="p-button-text"
  71. :disabled="form.processing"
  72. @click="submit"
  73. />
  74. </div>
  75. </div>
  76. </TabPanel>
  77. <TabPanel header="Ubah Password">
  78. <div class="grid">
  79. <div class="col-12 md:col-6">
  80. <div class="field">
  81. <label for="old_password">Password Lama</label>
  82. <Password
  83. id="old_password"
  84. label="Password Lama"
  85. placeholder="password lama"
  86. class="w-full"
  87. inputClass="w-full"
  88. :toggleMask="true"
  89. :error="form.errors.old_password"
  90. v-model="formChangePassword.old_password"
  91. />
  92. </div>
  93. </div>
  94. <div class="col-12 md:col-6">
  95. <div class="field">
  96. <label for="new_password">Password Baru</label>
  97. <Password
  98. id="new_password"
  99. label="Password Baru"
  100. placeholder="password baru"
  101. class="w-full"
  102. inputClass="w-full"
  103. :toggleMask="true"
  104. :error="formChangePassword.errors.new_password"
  105. v-model="formChangePassword.new_password"
  106. />
  107. </div>
  108. </div>
  109. <div class="col-12 md:col-6">
  110. <div class="field">
  111. <label for="new_password_confirmation">Konfirmasi Password</label>
  112. <Password
  113. id="new_password_confirmation"
  114. label="Konfirmasi Password"
  115. placeholder="konfirmasi password"
  116. class="w-full"
  117. inputClass="w-full"
  118. :toggleMask="true"
  119. v-model="formChangePassword.new_password_confirmation"
  120. />
  121. </div>
  122. </div>
  123. <div class="col-12 flex justify-content-end">
  124. <Button
  125. label="Simpan"
  126. icon="pi pi-check"
  127. class="p-button-text"
  128. :disabled="formChangePassword.processing"
  129. @click="changePassword"
  130. />
  131. </div>
  132. </div>
  133. </TabPanel>
  134. </TabView>
  135. </template>
  136. </Card>
  137. </div>
  138. </div>
  139. </AppLayout>
  140. </template>