ShowClassroomInfo.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576
  1. <template>
  2. <div class="classroom">
  3. <q-banner v-if="!loading && !defaultOptions.profileMode"
  4. class="banner classroom-banner">
  5. دوره های آموزشی
  6. {{classroom.title}}
  7. </q-banner>
  8. <q-card v-if="!loading"
  9. flat
  10. class="classroom-card">
  11. <q-card-section class="info-box">
  12. <div class="row">
  13. <div class="col-md-4 col-12 classroom-thumbnail">
  14. <q-img :src="classroom.thumbnail" />
  15. </div>
  16. <div class="col-md-4 col-12 classroom-top-attributes">
  17. <div class="title">
  18. دوره آموزشی
  19. {{classroom.title}}:
  20. </div>
  21. <div class="attributes">
  22. <div class="attribute-item">{{getAudienceGenderType(classroom.audience_gender_type)}}</div>
  23. <div class="attribute-item">{{getHoldingType(classroom.holding_type)}}</div>
  24. </div>
  25. </div>
  26. <div class="col-md-4 col-12 classroom-action-col">
  27. <q-btn v-if="classroom.is_enabled_adding && classroom.current_user_register_info?.status !== 'REGISTERED'"
  28. color="primary"
  29. class="btn-register"
  30. @click="openRulesDialog">
  31. <svg data-name="Add User"
  32. xmlns="http://www.w3.org/2000/svg"
  33. width="20"
  34. height="19.795"
  35. viewBox="0 0 20 19.795"
  36. class="q-mr-md">
  37. <path id="Combined_Shape"
  38. data-name="Combined Shape"
  39. d="M0,16.115c0-3.281,4.5-3.659,7.877-3.659,1.949,0,7.877,0,7.877,3.681,0,3.279-4.5,3.658-7.877,3.658C5.928,19.795,0,19.795,0,16.115Zm1.5,0c0,1.446,2.146,2.18,6.377,2.18s6.377-.726,6.377-2.158c0-1.447-2.146-2.181-6.377-2.181S1.5,14.683,1.5,16.115Zm14.954-5.436V9.424H15.16a.75.75,0,0,1,0-1.5h1.294V6.669a.75.75,0,1,1,1.5,0V7.924h1.3a.75.75,0,0,1,0,1.5h-1.3v1.255a.75.75,0,1,1-1.5,0Zm-8.609-.043a5.334,5.334,0,1,1,.031,0ZM4.06,5.318A3.8,3.8,0,0,0,7.849,9.136l.028.75v-.75A3.818,3.818,0,1,0,4.06,5.318Z"
  40. transform="translate(0)"
  41. fill="#fff" />
  42. </svg>
  43. ثبت نام
  44. </q-btn>
  45. <q-btn v-if="classroom.is_enabled_enrolment && classroom.current_user_register_info?.status !== 'ENROLLED'"
  46. color="primary"
  47. class="btn-register"
  48. :loading="enrolmentLoading"
  49. @click="onEnrolment">
  50. <svg data-name="Add User"
  51. xmlns="http://www.w3.org/2000/svg"
  52. width="20"
  53. height="19.795"
  54. viewBox="0 0 20 19.795"
  55. class="q-mr-md">
  56. <path id="Combined_Shape"
  57. data-name="Combined Shape"
  58. d="M0,16.115c0-3.281,4.5-3.659,7.877-3.659,1.949,0,7.877,0,7.877,3.681,0,3.279-4.5,3.658-7.877,3.658C5.928,19.795,0,19.795,0,16.115Zm1.5,0c0,1.446,2.146,2.18,6.377,2.18s6.377-.726,6.377-2.158c0-1.447-2.146-2.181-6.377-2.181S1.5,14.683,1.5,16.115Zm14.954-5.436V9.424H15.16a.75.75,0,0,1,0-1.5h1.294V6.669a.75.75,0,1,1,1.5,0V7.924h1.3a.75.75,0,0,1,0,1.5h-1.3v1.255a.75.75,0,1,1-1.5,0Zm-8.609-.043a5.334,5.334,0,1,1,.031,0ZM4.06,5.318A3.8,3.8,0,0,0,7.849,9.136l.028.75v-.75A3.818,3.818,0,1,0,4.06,5.318Z"
  59. transform="translate(0)"
  60. fill="#fff" />
  61. </svg>
  62. پیش ثبت نام
  63. </q-btn>
  64. <q-btn v-if="classroom.is_enabled_viewing"
  65. color="primary"
  66. class="btn-register"
  67. :to="{name: 'UserPanel.Profile.ClassroomInfo', params: {id: classroom.id}}">
  68. مشاهده دوره
  69. </q-btn>
  70. <q-btn v-if="classroom.is_enabled_dropping && classroom.current_user_register_info?.status !== 'DROPPED_BY_ITSELF' && classroom.current_user_register_info?.status !== 'DROPPED_BY_ADMIN'"
  71. outline
  72. color="red"
  73. class="btn-register q-ml-md"
  74. :loading="dropLoading"
  75. @click="onDropping">
  76. انصراف
  77. </q-btn>
  78. <q-btn v-if="classroom.current_user_register_info?.status !== 'REGISTERED'"
  79. outline
  80. color="primary"
  81. class="btn-register"
  82. @click="openRulesDialog">
  83. آیین نامه دوره
  84. </q-btn>
  85. </div>
  86. </div>
  87. </q-card-section>
  88. <q-card-section class="info-box">
  89. <div class="row second-section">
  90. <div class="col-md-4 col-sm-6 col-12 attribute-column">
  91. <div class="icon">
  92. <svg xmlns="http://www.w3.org/2000/svg"
  93. width="17.058"
  94. height="21.399"
  95. viewBox="0 0 17.058 21.399">
  96. <path id="Combined_Shape"
  97. data-name="Combined Shape"
  98. d="M0,17.418c0-3.55,4.868-3.96,8.53-3.96,2.109,0,8.528,0,8.528,3.982,0,3.548-4.867,3.959-8.528,3.959C6.42,21.4,0,21.4,0,17.418Zm1.616,0c0,1.57,2.326,2.366,6.914,2.366s6.913-.789,6.913-2.345-2.326-2.366-6.913-2.366S1.616,15.862,1.616,17.418ZM8.5,11.436A5.718,5.718,0,0,1,8.53,0a5.718,5.718,0,0,1,0,11.436ZM4.349,5.718A4.171,4.171,0,0,0,8.5,9.9l.031.77V9.9a4.18,4.18,0,1,0-4.181-4.18Z"
  99. transform="translate(0 0)"
  100. fill="#aaa095" />
  101. </svg>
  102. </div>
  103. <div class="title">
  104. {{ classroom.professor_info.firstname }}
  105. {{ classroom.professor_info.lastname }}
  106. </div>
  107. </div>
  108. <div class="col-md-4 col-sm-6 col-12 attribute-column">
  109. <div class="icon">
  110. <svg id="Calendar"
  111. xmlns="http://www.w3.org/2000/svg"
  112. width="21"
  113. height="23.154"
  114. viewBox="0 0 21 23.154">
  115. <path id="Combined_Shape"
  116. data-name="Combined Shape"
  117. d="M5.945,23.154c-3.668,0-5.945-2.26-5.945-5.9V7.51A5.382,5.382,0,0,1,5.347,1.721V.807a.808.808,0,0,1,1.616,0V1.7h7.084V.807a.807.807,0,1,1,1.615,0v.914a5.8,5.8,0,0,1,3.8,1.572A5.793,5.793,0,0,1,21,7.513v9.824c0,3.588-2.279,5.817-5.946,5.817Zm-4.33-5.9c0,2.762,1.537,4.284,4.33,4.284h9.109c2.792,0,4.331-1.493,4.331-4.2V9.59H1.616ZM19.385,7.974V7.51a4.159,4.159,0,0,0-1.063-3.074,4.164,4.164,0,0,0-2.66-1.094v1.01a.807.807,0,0,1-1.615,0V3.317H6.963V4.352a.808.808,0,0,1-1.616,0V3.341c-2.413.2-3.732,1.664-3.732,4.169v.464Zm-4.9,9.2a.8.8,0,0,1,.8-.807h.01a.807.807,0,1,1-.812.807Zm-4.778,0a.8.8,0,0,1,.8-.807h.01a.807.807,0,1,1-.812.807Zm-4.79,0a.8.8,0,0,1,.8-.807h.01a.807.807,0,1,1-.813.807Zm9.568-4.185a.8.8,0,0,1,.8-.808h.01a.808.808,0,1,1-.812.808Zm-4.778,0a.8.8,0,0,1,.8-.808h.01a.808.808,0,1,1-.812.808Zm-4.79,0a.8.8,0,0,1,.8-.808h.01a.808.808,0,1,1-.813.808Z"
  118. transform="translate(0 0)"
  119. fill="#aaa095" />
  120. </svg>
  121. </div>
  122. <div class="title">
  123. {{ getTerm(classroom) }}
  124. </div>
  125. </div>
  126. <div class="col-md-4 col-sm-6 col-12 attribute-column">
  127. <div class="icon">
  128. <svg data-name="Group 11306"
  129. xmlns="http://www.w3.org/2000/svg"
  130. width="21.539"
  131. height="21.044"
  132. viewBox="0 0 21.539 21.044">
  133. <g id="Buy"
  134. transform="translate(0 0)">
  135. <path id="Combined_Shape"
  136. data-name="Combined Shape"
  137. d="M16.3,19.649A1.395,1.395,0,1,1,17.7,21.044,1.4,1.4,0,0,1,16.3,19.649Zm-12.147,0a1.394,1.394,0,1,1,1.394,1.395A1.4,1.4,0,0,1,4.157,19.649ZM17.77,16.139H6.014A2.76,2.76,0,0,1,3.28,13.615L2.294,1.883.671,1.6A.812.812,0,0,1,.012.668.811.811,0,0,1,.815,0a.829.829,0,0,1,.13.011L3.186.4a.808.808,0,0,1,.666.729L4.1,4.143c15.367.007,15.424.014,15.5.022a2.254,2.254,0,0,1,1.912,2.553l-1.023,7.062a2.76,2.76,0,0,1-2.717,2.358ZM4.89,13.483a1.123,1.123,0,0,0,1.127,1.04H17.771a1.139,1.139,0,0,0,1.122-.972l1.024-7.064a.632.632,0,0,0-.121-.472.625.625,0,0,0-.418-.249c-.052,0-.6,0-1.677,0-1.693,0-4.455,0-7.291,0l-6.17,0ZM13.059,9.74a.808.808,0,0,1,0-1.616h2.985a.808.808,0,0,1,0,1.616Z"
  138. transform="translate(0)"
  139. fill="#aaa095" />
  140. </g>
  141. </svg>
  142. </div>
  143. <div class="title">
  144. {{ classroom.price ? classroom.price.toLocaleString('fa') : 0 }}
  145. ریال
  146. </div>
  147. </div>
  148. </div>
  149. </q-card-section>
  150. <div class="row q-col-gutter-lg four-sections">
  151. <div class="col-md-6 col-12">
  152. <div class="info-box detailes">
  153. <div class="info-box-title">
  154. <svg xmlns="http://www.w3.org/2000/svg"
  155. width="17.054"
  156. height="19.866"
  157. viewBox="0 0 17.054 19.866">
  158. <path id="Combined_Shape"
  159. data-name="Combined Shape"
  160. d="M4.475,19.866A4.585,4.585,0,0,1,0,15.188V4.491A4.606,4.606,0,0,1,4.57.012h6.271a.758.758,0,0,1,.265,0h.131a.755.755,0,0,1,.541.23l5.065,5.277a.753.753,0,0,1,.209.519V15.2A4.615,4.615,0,0,1,12.6,19.865H4.475ZM1.5,4.509V15.2a3.091,3.091,0,0,0,3.009,3.162h8.064a3.109,3.109,0,0,0,2.979-3.155V6.984h-2.01a3.332,3.332,0,0,1-3.318-3.325V1.512H4.572A3.089,3.089,0,0,0,1.5,4.509Zm10.224-.85a1.828,1.828,0,0,0,1.82,1.824H14.73L11.724,2.353ZM5.387,14.108a.75.75,0,0,1,0-1.5h5.4a.75.75,0,0,1,0,1.5Zm0-3.752a.75.75,0,0,1,0-1.5H8.743a.75.75,0,0,1,0,1.5Z"
  161. transform="translate(0.001)"
  162. fill="#aaa095" />
  163. </svg>
  164. جزییات دوره
  165. </div>
  166. <div class="info-box-body">
  167. <div class="info-item">
  168. نام درس:
  169. {{ classroom.title }}
  170. </div>
  171. <div class="info-item">
  172. گروه آموزشی:
  173. {{ classroom.unit_info.category_info.title }}
  174. </div>
  175. <div class="info-item">
  176. زمان شروع ثبت نام گروه درسی:
  177. {{ getTime(classroom.beginning_registration_period) }}
  178. </div>
  179. <div class="info-item">
  180. زمان اتمام ثبت نام گروه درسی:
  181. {{ getTime(classroom.ending_registration_period) }}
  182. </div>
  183. </div>
  184. </div>
  185. <div class="info-box rules">
  186. <div class="info-box-title">
  187. <svg xmlns="http://www.w3.org/2000/svg"
  188. width="16.968"
  189. height="20.356"
  190. viewBox="0 0 16.968 20.356">
  191. <path id="Combined_Shape"
  192. data-name="Combined Shape"
  193. d="M8.266,20.324c-.335-.1-8.205-2.55-8.205-9.445C.06,9,.036,7.621.019,6.616l0-.058c-.046-2.544-.055-3.074.6-3.73C1.4,2.04,7.349,0,8.483,0s7.078,2.04,7.865,2.828c.656.656.646,1.184.6,3.722l0,.062C16.929,7.619,16.9,9,16.9,10.879c0,6.895-7.87,9.344-8.205,9.445a.711.711,0,0,1-.217.032A.719.719,0,0,1,8.266,20.324ZM1.668,3.9c-.182.184-.189.5-.15,2.63l0,.065c.017,1.011.041,2.395.041,4.286,0,5.217,5.765,7.525,6.921,7.934C9.637,18.4,15.4,16.086,15.4,10.879c0-1.959.027-3.4.044-4.353.038-2.127.031-2.445-.162-2.637A30.988,30.988,0,0,0,8.483,1.5,31.027,31.027,0,0,0,1.668,3.9Zm5.577,8.4L5.353,10.406A.751.751,0,0,1,6.415,9.345l1.361,1.363,3.369-3.368A.75.75,0,0,1,12.2,8.4l-3.9,3.9a.749.749,0,0,1-1.061,0Z"
  194. transform="translate(0.001)"
  195. fill="#aaa095" />
  196. </svg>
  197. قوانین دوره
  198. </div>
  199. <div class="info-box-body">
  200. <div v-html="classroom.rules" />
  201. <div v-if="classroom.unit_info && classroom.unit_info.codes"
  202. v-html="classroom.unit_info.codes" />
  203. </div>
  204. </div>
  205. </div>
  206. <div class="col-md-6 col-12">
  207. <div class="info-box class-time">
  208. <div class="info-box-title">
  209. <svg id="Time_Circle"
  210. data-name="Time Circle"
  211. xmlns="http://www.w3.org/2000/svg"
  212. width="20"
  213. height="20"
  214. viewBox="0 0 20 20">
  215. <path id="Combined_Shape"
  216. data-name="Combined Shape"
  217. d="M0,10A10,10,0,1,1,10,20,10.011,10.011,0,0,1,0,10Zm1.5,0A8.5,8.5,0,1,0,10,1.5,8.51,8.51,0,0,0,1.5,10Zm11.547,3.587-3.77-2.249a.754.754,0,0,1-.366-.644V5.845a.75.75,0,0,1,1.5,0v4.422l3.4,2.03a.751.751,0,0,1-.769,1.29Z"
  218. fill="#aaa095" />
  219. </svg>
  220. زمان برگزاری کلاس
  221. </div>
  222. <div class="info-box-body">
  223. <div v-if="classroom.sessions_info && classroom.sessions_info.list.length > 0"
  224. class="info-item">
  225. اولین جلسه:
  226. {{ classroom.sessions_info.list[0].starting_time ? getTitledDateTime(classroom.sessions_info.list[0].starting_time) : '-' }}
  227. </div>
  228. <div v-if="classroom.sessions_info && classroom.sessions_info.list.length > 0"
  229. class="info-item">
  230. طول دوره:
  231. {{ classroom.sessions_info.list.length }}
  232. جلسه
  233. </div>
  234. <div class="info-item">
  235. نوع برگزاری :
  236. {{getHoldingType(classroom.holding_type)}}
  237. </div>
  238. <div v-if="classroom.beginning_enrollment_period"
  239. class="info-item">
  240. زمان شروع پیش ثبت نام:
  241. {{ getTitledDateTime(classroom.beginning_enrollment_period) }}
  242. </div>
  243. <div v-if="classroom.ending_enrollment_period"
  244. class="info-item">
  245. زمان اتمام پیش ثبت نام:
  246. {{ getTitledDateTime(classroom.ending_enrollment_period) }}
  247. </div>
  248. <div v-if="classroom.beginning_registration_period"
  249. class="info-item">
  250. زمان شروع ثبت نام:
  251. {{ getTitledDateTime(classroom.beginning_registration_period) }}
  252. </div>
  253. <div v-if="classroom.ending_registration_period"
  254. class="info-item">
  255. زمان اتمام ثبت نام:
  256. {{ getTitledDateTime(classroom.ending_registration_period) }}
  257. </div>
  258. <div v-if="classroom.beginning_drop_add_period"
  259. class="info-item">
  260. زمان شروع حذف و اضافه:
  261. {{ getTitledDateTime(classroom.beginning_drop_add_period) }}
  262. </div>
  263. <div v-if="classroom.ending_drop_add_period"
  264. class="info-item">
  265. زمان اتمام حذف و اضافه:
  266. {{ getTitledDateTime(classroom.ending_drop_add_period) }}
  267. </div>
  268. </div>
  269. </div>
  270. <div class="info-box books">
  271. <div v-if="false"
  272. class="info-box-title">
  273. <svg xmlns="http://www.w3.org/2000/svg"
  274. width="21.968"
  275. height="15.702"
  276. viewBox="0 0 21.968 15.702">
  277. <path id="import_contacts_FILL0_wght400_GRAD0_opsz48"
  278. d="M7.192,20.482a10.817,10.817,0,0,1,2.609.312,11.579,11.579,0,0,1,2.484.936V11.07A9.5,9.5,0,0,0,9.851,9.91,8.819,8.819,0,0,0,7.192,9.5a7.353,7.353,0,0,0-1.86.237,17.989,17.989,0,0,0-1.835.587h0V21.156h0a7.045,7.045,0,0,1,1.76-.512A11.9,11.9,0,0,1,7.192,20.482Zm6.59,1.248a12.562,12.562,0,0,1,2.446-.936,10.07,10.07,0,0,1,2.546-.312,13.37,13.37,0,0,1,1.96.15,9.769,9.769,0,0,1,1.735.4h0V10.322h0a7.418,7.418,0,0,0-1.8-.624,9.187,9.187,0,0,0-1.9-.2,8.346,8.346,0,0,0-2.609.412,9.727,9.727,0,0,0-2.384,1.161ZM13.034,23.7a1.613,1.613,0,0,1-.362-.037.708.708,0,0,1-.287-.137,10.528,10.528,0,0,0-2.5-1.123,9.28,9.28,0,0,0-2.7-.4,7.188,7.188,0,0,0-1.8.225,17.621,17.621,0,0,0-1.747.549A1.07,1.07,0,0,1,2.537,22.7,1.122,1.122,0,0,1,2,21.7V10.147a1.381,1.381,0,0,1,.175-.686A1.192,1.192,0,0,1,2.7,8.974a9.65,9.65,0,0,1,2.184-.736A11.268,11.268,0,0,1,7.192,8a11.077,11.077,0,0,1,3.058.424,9.758,9.758,0,0,1,2.783,1.3,9.477,9.477,0,0,1,2.733-1.3A10.725,10.725,0,0,1,18.775,8a11.088,11.088,0,0,1,2.3.237,9.691,9.691,0,0,1,2.172.736,1.272,1.272,0,0,1,.537.487,1.309,1.309,0,0,1,.187.686V21.7a1.183,1.183,0,0,1-.562,1.061.956.956,0,0,1-1.111.012,11.887,11.887,0,0,0-1.722-.562,7.589,7.589,0,0,0-1.8-.212,8.949,8.949,0,0,0-2.646.4,10.183,10.183,0,0,0-2.446,1.123.708.708,0,0,1-.287.137A1.613,1.613,0,0,1,13.034,23.7ZM7.891,15.764Z"
  279. transform="translate(-2 -8)"
  280. fill="#aaa095" />
  281. </svg>
  282. کتاب ها
  283. </div>
  284. <div class="info-box-body"
  285. v-html="classroom.description" />
  286. </div>
  287. </div>
  288. </div>
  289. </q-card>
  290. <q-skeleton v-if="loading"
  291. type="circle"
  292. size="100px"
  293. class="q-mt-md" />
  294. <q-skeleton v-if="loading"
  295. width="150px"
  296. class="q-mt-md" />
  297. <q-skeleton v-if="loading"
  298. height="150px"
  299. class="q-mt-md" />
  300. <q-dialog v-model="rulesDialog"
  301. class="rulesDialog"
  302. full-width>
  303. <q-card>
  304. <q-card-section>
  305. <div class="text-h6">آیین نامه</div>
  306. </q-card-section>
  307. <q-separator />
  308. <q-card-section style="max-height: 50vh"
  309. class="scroll">
  310. <div v-html="classroom.rules" />
  311. <div v-if="classroom.unit_info && classroom.unit_info.codes"
  312. v-html="classroom.unit_info.codes" />
  313. </q-card-section>
  314. <q-separator />
  315. <q-card-actions class="rulesDialog-actions">
  316. <div v-if="!defaultOptions.profileMode"
  317. class="rulesDialog-accept-chk">
  318. <q-checkbox v-model="rulesAccept"
  319. label="آیین نامه دوره آموزشی را خواندم و قصد ثبت نام در دوره را دارم" />
  320. </div>
  321. <div class="rulesDialog-btns q-gutter-md">
  322. <q-btn v-if="defaultOptions.profileMode"
  323. v-close-popup
  324. label="بستن"
  325. color="primary"
  326. outline />
  327. <q-btn v-if="!defaultOptions.profileMode"
  328. v-close-popup
  329. label="انصراف"
  330. color="primary"
  331. outline />
  332. <q-btn v-if="!defaultOptions.profileMode"
  333. label="تایید و ادامه"
  334. color="primary"
  335. :disable="!rulesAccept"
  336. @click="acceptAndContinue" />
  337. </div>
  338. </q-card-actions>
  339. </q-card>
  340. </q-dialog>
  341. </div>
  342. </template>
  343. <script>
  344. import Enums from 'src/assets/Enums/Enums.js'
  345. import ShamsiDate from 'src/assets/ShamsiDate.js'
  346. import { APIGateway } from 'src/api/APIGateway.js'
  347. import { Classroom } from 'src/models/Classroom.js'
  348. import { mixinPrefetchServerData, mixinWidget } from 'src/mixin/Mixins.js'
  349. export default {
  350. name: 'ShowClassroomInfo',
  351. mixins: [mixinWidget, mixinPrefetchServerData],
  352. props: {
  353. options: {
  354. type: Object,
  355. default: () => {
  356. return {}
  357. }
  358. }
  359. },
  360. emits: ['onloadn'],
  361. data: () => ({
  362. defaultOptions: {
  363. profileMode: false
  364. },
  365. enrolmentLoading: false,
  366. dropLoading: false,
  367. rulesAccept: false,
  368. rulesDialog: false,
  369. loading: true,
  370. classroom: new Classroom()
  371. }),
  372. methods: {
  373. prefetchServerDataPromise () {
  374. return this.getClassroom()
  375. },
  376. prefetchServerDataPromiseThen (classroom) {
  377. this.classroom = new Classroom(classroom)
  378. this.loading = false
  379. this.$emit('onloadn', this.classroom)
  380. },
  381. prefetchServerDataPromiseCatch () {
  382. this.loading = false
  383. },
  384. getTitledDateTime (dateTime) {
  385. return ShamsiDate.getTitledDateTime(dateTime)
  386. },
  387. acceptAndContinue () {
  388. this.$store.commit('Shop/updateOnRegisterClassroom', this.classroom)
  389. this.$router.push({ name: 'UserPanel.ShopCompleteInfo' })
  390. },
  391. onEnrolment () {
  392. this.$q.dialog({
  393. title: 'توجه',
  394. message: 'آیا از پیش ثبت نام این دوره اطمینان دارید؟' + '\n' + this.classroom.unit_info.codes,
  395. html: true,
  396. cancel: true,
  397. persistent: true
  398. }).onOk(() => {
  399. this.enrolmentLoading = true
  400. const classroomId = this.$route.params.id
  401. APIGateway.classroom.enrollByUser(classroomId)
  402. .then(() => {
  403. this.enrolmentLoading = false
  404. this.getClassroom()
  405. })
  406. .catch(() => {
  407. this.enrolmentLoading = false
  408. })
  409. })
  410. },
  411. onDropping () {
  412. this.$q.dialog({
  413. title: 'توجه',
  414. message: 'آیا از حذف نام این دوره اطمینان دارید؟',
  415. cancel: true,
  416. persistent: true
  417. }).onOk(() => {
  418. this.dropLoading = true
  419. const classroomId = this.$route.params.id
  420. APIGateway.classroom.dropByUser(classroomId)
  421. .then(() => {
  422. this.dropLoading = false
  423. this.getClassroom()
  424. })
  425. .catch(() => {
  426. this.dropLoading = false
  427. })
  428. })
  429. },
  430. openRulesDialog () {
  431. this.rulesDialog = true
  432. },
  433. getHoldingType (type) {
  434. const target = Enums.classroomHoldingTypes.find(item => item.value === type)
  435. if (target) {
  436. return target.label
  437. }
  438. return '-'
  439. },
  440. getAudienceGenderType (type) {
  441. const target = Enums.classroomGenders.find(item => item.value === type)
  442. if (target) {
  443. return target.label
  444. }
  445. return '-'
  446. },
  447. getTime (time) {
  448. return ShamsiDate.getDateTime(time)
  449. },
  450. getTerm (classroom) {
  451. if (!classroom.beginning_registration_period) {
  452. return '-'
  453. }
  454. return ShamsiDate.getTerm(classroom.beginning_registration_period)
  455. },
  456. getClassroom () {
  457. this.loading = true
  458. return APIGateway.classroom.get(this.$route.params.id)
  459. }
  460. }
  461. }
  462. </script>
  463. <style scoped lang="scss">
  464. .classroom {
  465. .classroom-banner {
  466. margin-top: 52px;
  467. margin-bottom: 42px;
  468. }
  469. .classroom-card {
  470. background-color: #F5F5F5;
  471. padding: 20px 30px 40px 30px;
  472. .four-sections {
  473. .info-box {
  474. height: 353px;
  475. overflow: auto;
  476. &.detailes {
  477. //margin-right: 24px;
  478. }
  479. &.rules {
  480. //margin-right: 24px;
  481. }
  482. .info-box-title {
  483. margin-bottom: 29px;
  484. display: flex;
  485. flex-flow: row;
  486. svg {
  487. margin-right: 8px;
  488. }
  489. }
  490. .info-box-body {
  491. .info-item {
  492. margin-bottom: 27px;
  493. }
  494. }
  495. }
  496. }
  497. .info-box {
  498. background-color: #FFFFFF;
  499. border-radius: 8px;
  500. padding: 26px;
  501. margin-bottom: 24px;
  502. .classroom-thumbnail {
  503. padding-right: 42px;
  504. }
  505. .classroom-top-attributes {
  506. .attributes {
  507. padding-top: 27px;
  508. .attribute-item {
  509. margin-bottom: 20px;
  510. position: relative;
  511. padding-left: 15px;
  512. &:before {
  513. content: ' ';
  514. background-color: #EAC38A;
  515. width: 8px;
  516. height: 8px;
  517. border-radius: 100%;
  518. position: absolute;
  519. left: 0;
  520. top: 10px;
  521. }
  522. }
  523. }
  524. }
  525. .classroom-action-col {
  526. display: flex;
  527. justify-content: flex-end;
  528. align-items: flex-end;
  529. flex-wrap: wrap;
  530. .btn-register {
  531. width: 220px;
  532. }
  533. @media screen and (max-width: 700px) {
  534. width: 100%;
  535. .q-btn {
  536. width: 100% !important;
  537. margin-left: 0;
  538. margin-bottom: 8px;
  539. }
  540. }
  541. }
  542. .second-section {
  543. .attribute-column {
  544. display: flex;
  545. flex-flow: row;
  546. .icon {
  547. margin-right: 20px;
  548. }
  549. }
  550. }
  551. }
  552. }
  553. }
  554. </style>
  555. <style lang="scss">
  556. .rulesDialog {
  557. .rulesDialog-actions {
  558. display: flex;
  559. flex-flow: row;
  560. justify-content: space-between;
  561. .rulesDialog-accept-chk {}
  562. .rulesDialog-btns {}
  563. }
  564. }
  565. </style>