CompanyProfile.vue 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <script setup>
  2. import { useForm } from '@/composables/useForm'
  3. import { useState } from '../Composables/useState'
  4. import Invoice from './Invoice.vue'
  5. import AppInputText from '@/components/AppInputText.vue'
  6. import { provide } from 'vue'
  7. const props = defineProps({
  8. company: Object,
  9. })
  10. const form = useForm({
  11. id: props.company?.id,
  12. name: props.company?.name,
  13. address: props.company?.address,
  14. telephone: props.company?.telephone,
  15. email: props.company?.email,
  16. npwp: props.company?.npwp,
  17. })
  18. provide('form', form)
  19. const { state, setState } = useState()
  20. const onSubmit = () => {
  21. setState()
  22. if (state.disable) {
  23. form.post(route('companies.store'))
  24. }
  25. }
  26. </script>
  27. <template>
  28. <div class="grid">
  29. <div class="col-12">
  30. <h1 class="text-lg">Profil Perusahaan</h1>
  31. </div>
  32. <div class="col-12 md:col-6">
  33. <AppInputText
  34. label="Nama"
  35. placeholder="nama"
  36. :disabled="state.disable"
  37. :error="form.errors.name"
  38. v-model="form.name"
  39. />
  40. </div>
  41. <div class="col-12 md:col-6">
  42. <AppInputText
  43. label="Alamat"
  44. placeholder="alamat"
  45. :disabled="state.disable"
  46. :error="form.errors.address"
  47. v-model="form.address"
  48. />
  49. </div>
  50. <div class="col-12 md:col-6">
  51. <AppInputText
  52. type="number"
  53. label="Nomor Telepon"
  54. placeholder="nomor telepon"
  55. :disabled="state.disable"
  56. :error="form.errors.telephone"
  57. v-model="form.telephone"
  58. />
  59. </div>
  60. <div class="col-12 md:col-6">
  61. <AppInputText
  62. label="Email"
  63. placeholder="email"
  64. :error="form.errors.email"
  65. :disabled="state.disable"
  66. v-model="form.email"
  67. />
  68. </div>
  69. <div class="col-12 md:col-6">
  70. <AppInputText
  71. type="number"
  72. label="NPWP"
  73. placeholder="npwp"
  74. :error="form.errors.npwp"
  75. :disabled="state.disable"
  76. v-model="form.npwp"
  77. />
  78. </div>
  79. <div class="col-12">
  80. <div class="flex flex-column md:flex-row justify-content-end">
  81. <Button
  82. class="p-button-outlined"
  83. :icon="state.icon"
  84. :label="state.label"
  85. :disabled="form.processing"
  86. @click="onSubmit"
  87. />
  88. </div>
  89. </div>
  90. <Divider />
  91. <div class="col-12 hidden sm:block">
  92. <Invoice />
  93. </div>
  94. </div>
  95. </template>