ServiceList.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <template>
  2. <div>
  3. <van-sticky>
  4. <m-header :backUrl="backUrl" :isFixed="false"> </m-header>
  5. <search @onSearch="onSearch" placeholder="请输入乐团名称" />
  6. </van-sticky>
  7. <van-list
  8. class="teamList"
  9. v-model="loading"
  10. v-if="dataShow"
  11. key="data"
  12. :finished="finished"
  13. :immediate-check="false"
  14. finished-text="- 没有更多内容 -"
  15. @load="getTeamList"
  16. >
  17. <van-cell
  18. :title="item.name"
  19. is-link
  20. v-for="item in dataList"
  21. :key="item.id"
  22. @click="gotoDetail(item)"
  23. >
  24. <template #default>
  25. <div>
  26. <p>乐保生效人数:{{ item.hasInstrumentNum || 0 }}</p>
  27. <p>乐团在读人数:{{ item.payNum || 0 }}</p>
  28. </div>
  29. </template>
  30. </van-cell>
  31. </van-list>
  32. <m-empty class="empty" v-else key="data" />
  33. </div>
  34. </template>
  35. <script>
  36. import MHeader from "@/components/MHeader";
  37. import search from "@/components/Search";
  38. import MEmpty from "@/components/MEmpty";
  39. import { repairTeamQueryPage } from "./api";
  40. export default {
  41. components: {
  42. MHeader,
  43. search,
  44. MEmpty,
  45. },
  46. data() {
  47. return {
  48. backUrl: {
  49. status: true,
  50. path: "/home",
  51. },
  52. dataShow: true,
  53. loading: false,
  54. finished: false,
  55. params: {
  56. musicGroupName: null,
  57. page: 1,
  58. rows: 20,
  59. },
  60. dataList: [],
  61. };
  62. },
  63. mounted() {
  64. this.getTeamList();
  65. },
  66. methods: {
  67. onSearch(val) {
  68. this.params.musicGroupName = val;
  69. this.params.page = 1;
  70. this.dataList = [];
  71. this.dataShow = true;
  72. this.loading = true;
  73. this.finished = false;
  74. this.getTeamList();
  75. },
  76. async getTeamList() {
  77. let params = this.params;
  78. params.search = params.musicGroupName ? params.musicGroupName : null;
  79. let teamList = null;
  80. // if (this.type == 'sale') {
  81. // studentList = await queryEduStudents(params)
  82. // } else {
  83. teamList = await repairTeamQueryPage(params);
  84. // }
  85. let result = teamList.data;
  86. this.loading = false;
  87. if (result.code == 200) {
  88. // 重点这句,判断是不是重复请求了
  89. if (this.dataList.length > 0 && result.data.pageNo == 1) {
  90. return;
  91. }
  92. params.page = result.data.pageNo;
  93. this.dataList = this.dataList.concat(result.data.rows);
  94. if (params.page >= result.data.totalPage) {
  95. this.finished = true;
  96. }
  97. this.params.page++;
  98. } else {
  99. this.finished = true;
  100. }
  101. // 判断是否有数据
  102. if (this.dataList.length <= 0) {
  103. this.dataShow = false;
  104. }
  105. },
  106. gotoDetail(row) {
  107. this.$router.push({
  108. path: "/teamStudentList",
  109. query: { musicGroupId: row.id },
  110. });
  111. },
  112. },
  113. };
  114. </script>
  115. <style lang="less" scoped>
  116. .cellDetail {
  117. text-align: right;
  118. }
  119. .teamList {
  120. /deep/.van-cell {
  121. display: flex;
  122. align-items: center;
  123. }
  124. }
  125. </style>