AdminEventTestSetIndex.vue 4.5 KB

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