AdminTestSetIndex.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <template>
  2. <div>
  3. <div class="flex justify-end">
  4. <q-btn flat
  5. color="grey"
  6. @click="$router.go(-1)">
  7. بازگشت
  8. >
  9. </q-btn>
  10. </div>
  11. <entity-index v-if="mounted"
  12. ref="testSetList"
  13. v-model:value="testSetListInputs"
  14. title="لیست آزمون ها"
  15. :api="testSetListApi"
  16. :table="testSetListTable"
  17. :table-keys="testSetListTableKeys"
  18. :show-search-button="false"
  19. :show-reload-button="false"
  20. :show-expand-button="false">
  21. <template v-slot:entity-index-table-cell="{inputData}">
  22. <template v-if="inputData.col.name === 'number'">
  23. {{ inputData.rowNumber }}
  24. </template>
  25. <template v-else-if="inputData.col.name === 'actions'">
  26. <div class="action-column-entity-index">
  27. <q-btn size="md"
  28. color="primary"
  29. label="انتخاب"
  30. :to="{name: 'Admin.Classroom.TestSet.Test.Create', params: {classroom_id: $route.params.classroom_id, test_set_id:inputData.props.row.id}}"
  31. :loading="createInvoiceLoading"
  32. class="q-mr-md" />
  33. </div>
  34. </template>
  35. <template v-else>
  36. {{ inputData.col.value }}
  37. </template>
  38. </template>
  39. </entity-index>
  40. <q-skeleton v-else
  41. type="rect"
  42. height="200px" />
  43. </div>
  44. </template>
  45. <script>
  46. import { EntityIndex } from 'quasar-crud'
  47. import { TestSet } from 'src/models/TestSet.js'
  48. import ShamsiDate from 'src/assets/ShamsiDate.js'
  49. import { APIGateway } from 'src/api/APIGateway.js'
  50. import { Classroom } from 'src/models/Classroom.js'
  51. import { mixinAuthData } from 'src/mixin/Mixins.js'
  52. import { FormBuilderAssist } from 'quasar-form-builder'
  53. export default {
  54. name: 'LeaderTeamsShow',
  55. components: {
  56. EntityIndex
  57. },
  58. mixins: [mixinAuthData],
  59. data () {
  60. return {
  61. mounted: false,
  62. createInvoiceLoading: false,
  63. classroom: new Classroom(),
  64. dropClassroomByAdminLoading: false,
  65. exportReportLoading: false,
  66. testSetListInputs: [
  67. { type: 'hidden', name: 'unit', value: this.$route.params.unit_id },
  68. { type: 'hidden', name: 'classroom', value: this.$route.params.classroom_id }
  69. ],
  70. testSetListApi: APIGateway.testSet.APIAdresses.base,
  71. testSetListTable: {
  72. columns: [
  73. {
  74. name: 'number',
  75. required: true,
  76. label: 'شماره',
  77. align: 'left',
  78. field: () => ''
  79. },
  80. {
  81. name: 'id',
  82. required: true,
  83. label: 'شناسه',
  84. align: 'left',
  85. field: row => row.id
  86. },
  87. {
  88. name: 'title',
  89. required: true,
  90. label: 'عنوان آزمون',
  91. align: 'left',
  92. field: row => row.title
  93. },
  94. {
  95. name: 'test_set_questions.length',
  96. required: true,
  97. label: 'تعداد سوالات',
  98. align: 'left',
  99. field: row => row.test_set_questions.length
  100. },
  101. {
  102. name: 'level',
  103. required: true,
  104. label: 'درجه سختی',
  105. align: 'left',
  106. field: row => (new TestSet(row)).level_info.label
  107. },
  108. {
  109. name: 'beginning_time',
  110. required: true,
  111. label: 'تاریخ ایجاد',
  112. align: 'left',
  113. field: row => row.creation_time ? ShamsiDate.getDateTime(row.creation_time) : '-'
  114. },
  115. {
  116. name: 'creator_info',
  117. required: true,
  118. label: 'ایجاد کننده',
  119. align: 'left',
  120. field: row => row.creator_info.firstname + ' ' + row.creator_info.lastname
  121. },
  122. {
  123. name: 'actions',
  124. required: true,
  125. label: 'انتخاب',
  126. align: 'left',
  127. field: ''
  128. }
  129. ]
  130. },
  131. testSetListTableKeys: {
  132. data: 'results',
  133. total: 'count',
  134. currentPage: 'current',
  135. perPage: 'per_page',
  136. pageKey: 'page'
  137. }
  138. }
  139. },
  140. mounted () {
  141. this.setMembersListActionBtn()
  142. FormBuilderAssist.setAttributeByName(this.testSetListInputs, 'leader', 'value', this.user.id)
  143. this.mounted = true
  144. },
  145. methods: {
  146. setMembersListActionBtn () {
  147. FormBuilderAssist.setAttributeByName(this.testSetListInputs, 'btn', 'atClick', this.searchMembersList)
  148. },
  149. searchMembersList () {
  150. this.$refs.testSetList.search()
  151. }
  152. }
  153. }
  154. </script>