show.vue 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. <template>
  2. <q-card>
  3. <q-tabs v-model="tab"
  4. dense
  5. class="text-grey"
  6. active-color="primary"
  7. indicator-color="primary"
  8. align="justify"
  9. narrow-indicator>
  10. <q-tab name="userInfo"
  11. label="اطلاعات کاربری" />
  12. <q-tab name="educations"
  13. label="سوابق آموزشی" />
  14. <q-tab name="movies1"
  15. label="سوابق مالی" />
  16. <q-tab name="movies2"
  17. label="سوابق دوره های مباحثاتی" />
  18. <q-tab name="movies3"
  19. label="سوابق رویدادها" />
  20. <q-tab name="movies4"
  21. label="سوابق باشگاه اندیشه جویان" />
  22. <q-tab name="movies5"
  23. label="درخواست مدرک و گواهی" />
  24. </q-tabs>
  25. <q-separator />
  26. <q-tab-panels v-model="tab"
  27. animated>
  28. <q-tab-panel name="userInfo">
  29. <entity-edit v-if="mounted"
  30. ref="entityEdit"
  31. v-model:value="inputs"
  32. title="اطلاعات کاربری"
  33. :api="api"
  34. :after-load-input-data="afterLoadInputData"
  35. :entity-id-key="entityIdKey"
  36. :entity-param-key="entityParamKey"
  37. :show-route-name="showRouteName"
  38. :default-layout="false"
  39. :show-close-button="false"
  40. :show-edit-button="false"
  41. :show-expand-button="false"
  42. :show-save-button="false"
  43. :show-reload-button="false">
  44. <template #after-form-builder>
  45. <div class="flex justify-end">
  46. <q-btn color="primary"
  47. label="بروزرسانی اطلاعات"
  48. @click="editEntity" />
  49. </div>
  50. </template>
  51. </entity-edit>
  52. </q-tab-panel>
  53. <q-tab-panel name="educations">
  54. سوابق آموزشی
  55. </q-tab-panel>
  56. <q-tab-panel name="movies1">
  57. سوابق مالی
  58. </q-tab-panel>
  59. <q-tab-panel name="movies2">
  60. سوابق باشگاه اندیشه جویان
  61. </q-tab-panel>
  62. <q-tab-panel name="movies3">
  63. سوابق رویدادها
  64. </q-tab-panel>
  65. <q-tab-panel name="movies4">
  66. سوابق باشگاه اندیشه جویان
  67. </q-tab-panel>
  68. <q-tab-panel name="movies5">
  69. درخواست مدرک و گواهی
  70. </q-tab-panel>
  71. </q-tab-panels>
  72. </q-card>
  73. </template>
  74. <script>
  75. import { EntityEdit } from 'quasar-crud'
  76. import Enums from 'src/assets/Enums/Enums.js'
  77. import { APIGateway } from 'src/api/APIGateway.js'
  78. export default {
  79. name: 'Admin.User.Show',
  80. components: { EntityEdit },
  81. data () {
  82. return {
  83. tab: 'userInfo',
  84. api: null,
  85. mounted: false,
  86. entityIdKey: 'id',
  87. entityParamKey: 'id',
  88. showRouteName: 'Admin.User.Show',
  89. inputs: [
  90. { type: 'separator', name: 'space', label: 'نقش و وضعیت ها', className: 'custom-separator', col: 'col-12' },
  91. {
  92. type: 'select',
  93. name: 'roles',
  94. responseKey: 'roles',
  95. options: Enums.groups,
  96. multiple: true,
  97. label: 'نقش',
  98. placeholder: ' ',
  99. col: 'col-md-3 col-12'
  100. },
  101. { type: 'separator', name: 'space', placeholder: ' ', label: 'اطلاعات ضروری', className: 'custom-separator', col: 'col-12' },
  102. { type: 'input', name: 'email', placeholder: ' ', label: 'ایمیل', responseKey: 'email', col: 'col-md-3 col-12' },
  103. { type: 'input', name: 'mobile_number', placeholder: ' ', label: 'تلفن همراه', responseKey: 'mobile_number', col: 'col-md-3 col-12' },
  104. { type: 'input', name: 'national_code', placeholder: ' ', label: 'کدملی/کد اتباع غیر ایرانی', responseKey: 'national_code', col: 'col-md-3 col-12' },
  105. { type: 'separator', name: 'space', label: 'اطلاعات پروفایل', className: 'custom-separator', col: 'col-12' },
  106. { type: 'file', name: 'picture', placeholder: ' ', label: 'عکس پروفایل', responseKey: 'picture', col: 'col-md-3 col-12' },
  107. { type: 'separator', name: 'space', size: '0', col: 'col-12' },
  108. { type: 'input', name: 'firstname', placeholder: ' ', label: 'نام', responseKey: 'firstname', col: 'col-md-3 col-12' },
  109. { type: 'input', name: 'lastname', placeholder: ' ', label: 'نام خانوادگی', responseKey: 'lastname', col: 'col-md-3 col-12' },
  110. {
  111. type: 'select',
  112. name: 'gender',
  113. responseKey: 'gender',
  114. options: Enums.genders,
  115. value: null,
  116. label: 'جنسیت',
  117. placeholder: ' ',
  118. col: 'col-md-3 col-12'
  119. },
  120. { type: 'date', name: 'birthdate', placeholder: ' ', label: 'تولد', responseKey: 'birthdate', col: 'col-md-3 col-12' },
  121. {
  122. type: 'select',
  123. name: 'marital_status',
  124. responseKey: 'marital_status',
  125. options: Enums.maritalStatuses,
  126. value: null,
  127. label: 'وضعیت تاهل',
  128. placeholder: ' ',
  129. col: 'col-md-3 col-12'
  130. },
  131. { type: 'input', name: 'mobile_number', placeholder: ' ', label: 'تلفن همراه جهت تماس', responseKey: 'mobile_number', col: 'col-md-3 col-12' },
  132. { type: 'input', name: 'on_social_network_mobile_number', placeholder: ' ', label: 'تلفن همراه جهت شبکه های اجتماعی', responseKey: 'on_social_network_mobile_number', col: 'col-md-3 col-12' },
  133. { type: 'input', name: 'phone_number', placeholder: ' ', label: 'تلفن منزل', responseKey: 'phone_number', col: 'col-md-3 col-12' },
  134. {
  135. type: 'select',
  136. name: 'last_academic_degree',
  137. responseKey: 'last_academic_degree',
  138. options: Enums.academicDegree,
  139. value: null,
  140. label: 'آخرین مقطع تحصیلی',
  141. placeholder: ' ',
  142. col: 'col-md-3 col-12'
  143. },
  144. { type: 'input', name: 'last_academic_degree_field', placeholder: ' ', label: 'رشته تحصیلی', responseKey: 'last_academic_degree_field', col: 'col-md-3 col-12' },
  145. { type: 'input', name: 'last_academy_name', placeholder: ' ', label: 'نام دانشگاه یا حوزه تحصیلی', responseKey: 'last_academy_name', col: 'col-md-3 col-12' },
  146. {
  147. type: 'select',
  148. name: 'educational_status',
  149. responseKey: 'educational_status',
  150. options: Enums.educationalStatus,
  151. value: null,
  152. label: 'وضعیت تحصیلی',
  153. placeholder: ' ',
  154. col: 'col-md-3 col-12'
  155. },
  156. { type: 'input', name: 'birth_country', placeholder: ' ', label: 'کشور محل تولد', responseKey: 'birth_country', col: 'col-md-4 col-12' },
  157. { type: 'input', name: 'birth_province', placeholder: ' ', label: 'استان محل تولد', responseKey: 'birth_province', col: 'col-md-4 col-12' },
  158. { type: 'input', name: 'birth_city', placeholder: ' ', label: 'شهر محل تولد', responseKey: 'birth_city', col: 'col-md-4 col-12' },
  159. { type: 'input', name: 'living_country', placeholder: ' ', label: 'کشور محل زندگی فعلی', responseKey: 'living_country', col: 'col-md-4 col-12' },
  160. { type: 'input', name: 'living_province', placeholder: ' ', label: 'استان محل زندگی فعلی', responseKey: 'living_province', col: 'col-md-4 col-12' },
  161. { type: 'input', name: 'living_city', placeholder: ' ', label: 'شهر محل زندگی فعلی', responseKey: 'living_city', col: 'col-md-4 col-12' },
  162. { type: 'input', name: 'living_postal_code', placeholder: ' ', label: 'کد پستی محل زندگی', responseKey: 'living_postal_code', col: 'col-md-3 col-12' },
  163. { type: 'input', name: 'living_address', placeholder: ' ', label: 'آدرس پستی محل زندگی', responseKey: 'living_address', col: 'col-md-6 col-12' },
  164. { type: 'hidden', name: 'id', responseKey: 'id', label: 'id', col: 'col-12' },
  165. { type: 'hidden', name: 'is_active', responseKey: 'is_active', label: 'is_active', col: 'col-12' }
  166. ]
  167. }
  168. },
  169. mounted () {
  170. this.api = APIGateway.user.APIAdresses.byId(this.$route.params.id)
  171. this.mounted = true
  172. },
  173. methods: {
  174. afterLoadInputData (responseData, setNewInputData) {
  175. // const roles = responseData.roles.map(role => {
  176. // return {
  177. // label: this.getRoleTitle(role),
  178. // value: role
  179. // }
  180. // }).filter(role => role.value)
  181. // console.log('roles', roles)
  182. // this.setInputValue('roles', roles)
  183. // setNewInputData(this.inputs)
  184. },
  185. setInputValue (name, value) {
  186. const inputIndex = this.inputs.findIndex(input => input.name === name)
  187. this.inputs[inputIndex].value = value
  188. },
  189. getRoleTitle (roleName) {
  190. const target = Enums.groups.find(item => item.value === roleName)
  191. if (!target) {
  192. return '-'
  193. }
  194. return target.label
  195. },
  196. editEntity () {
  197. this.$refs.entityEdit.editEntity()
  198. }
  199. }
  200. }
  201. </script>
  202. <style scoped>
  203. </style>