LeaderTeamsIndex.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <template>
  2. <entity-index v-if="mounted"
  3. ref="teamsList"
  4. v-model:value="teamsListInputs"
  5. title="لیست گروه ها"
  6. :api="teamsListApi"
  7. :table="teamsListTable"
  8. :table-keys="teamsListTableKeys"
  9. :show-search-button="false"
  10. :show-reload-button="false"
  11. :show-expand-button="false">
  12. <template v-slot:entity-index-table-cell="{inputData}">
  13. <template v-if="inputData.col.name === 'number'">
  14. {{ inputData.rowNumber }}
  15. </template>
  16. <template v-else-if="inputData.col.name === 'action'">
  17. <div class="action-column-entity-index">
  18. <q-btn size="md"
  19. color="primary"
  20. label="جزییات"
  21. :to="{name: 'UserPanel.Leader.Teams.Show', params: {team_id:inputData.props.row.id}}"
  22. :loading="createInvoiceLoading"
  23. class="q-mr-md" />
  24. </div>
  25. </template>
  26. <template v-else>
  27. {{ inputData.col.value }}
  28. </template>
  29. </template>
  30. </entity-index>
  31. <q-skeleton v-else
  32. type="rect"
  33. height="200px" />
  34. </template>
  35. <script>
  36. import { EntityIndex } from 'quasar-crud'
  37. import { APIGateway } from 'src/api/APIGateway.js'
  38. import { Classroom } from 'src/models/Classroom.js'
  39. import { mixinAuthData } from 'src/mixin/Mixins.js'
  40. import { FormBuilderAssist } from 'quasar-form-builder'
  41. export default {
  42. name: 'LeaderTeamsShow',
  43. components: {
  44. EntityIndex
  45. },
  46. mixins: [mixinAuthData],
  47. data () {
  48. return {
  49. mounted: false,
  50. createInvoiceLoading: false,
  51. classroom: new Classroom(),
  52. dropClassroomByAdminLoading: false,
  53. exportReportLoading: false,
  54. teamsListInputs: [
  55. { type: 'hidden', name: 'leader', value: null }
  56. ],
  57. teamsListApi: APIGateway.team.APIAdresses.myLeadingTeams,
  58. teamsListTable: {
  59. columns: [
  60. {
  61. name: 'number',
  62. required: true,
  63. label: 'شماره',
  64. align: 'left',
  65. field: () => ''
  66. },
  67. {
  68. name: 'id',
  69. required: true,
  70. label: 'شناسه',
  71. align: 'left',
  72. field: row => row.id
  73. },
  74. {
  75. name: 'title',
  76. required: true,
  77. label: 'عنوان گروه',
  78. align: 'left',
  79. field: row => row.title
  80. },
  81. {
  82. name: 'leader_info',
  83. required: true,
  84. label: 'سرگروه',
  85. align: 'left',
  86. field: row => row.leader_info?.firstname + ' ' + row.leader_info?.lastname
  87. },
  88. {
  89. name: 'used_capacity',
  90. required: true,
  91. label: 'ظرفیت باقی مانده',
  92. align: 'left',
  93. field: row => row.capacity - row.used_capacity
  94. },
  95. {
  96. name: 'capacity',
  97. required: true,
  98. label: 'ظرفیت',
  99. align: 'left',
  100. field: row => row.capacity
  101. },
  102. {
  103. name: 'action',
  104. required: true,
  105. label: ' ',
  106. align: 'left',
  107. field: ''
  108. }
  109. ],
  110. data: []
  111. },
  112. teamsListTableKeys: {
  113. data: 'results',
  114. total: 'count',
  115. currentPage: 'current',
  116. perPage: 'per_page',
  117. pageKey: 'page'
  118. }
  119. }
  120. },
  121. mounted () {
  122. this.setMembersListActionBtn()
  123. FormBuilderAssist.setAttributeByName(this.teamsListInputs, 'leader', 'value', this.user.id)
  124. this.mounted = true
  125. },
  126. methods: {
  127. setMembersListActionBtn () {
  128. FormBuilderAssist.setAttributeByName(this.teamsListInputs, 'btn', 'atClick', this.searchMembersList)
  129. },
  130. searchMembersList () {
  131. this.$refs.teamsList.search()
  132. }
  133. }
  134. }
  135. </script>