list.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <template>
  2. <div class="app-content">
  3. <app-tabs :tabs="tabs" :isFixed="true" :currentTab="tabIndex" @change="change" :height="100" itemWidth="25%" />
  4. <!-- list -->
  5. <div class="list-wrap">
  6. <block v-if="!$util.isEmpty(list.data)">
  7. <div class="list" v-for="(item, index) in list.data" :key="index">
  8. <div>
  9. <app-avatar-module :src="item.userAvatar" :width="110" />
  10. </div>
  11. <div class="list-right">
  12. <div class="app-size-30 app-color-0">{{ item.userName }}</div>
  13. <div class="list-info">
  14. <div>
  15. <div>
  16. <span class="list-info-left">ID: {{ item.userId }}</span>
  17. <span>手机号: {{ item.mobile }}</span>
  18. </div>
  19. <div class="list-remark">
  20. <span class="list-info-left">金额: {{ item.amount }}</span>
  21. <span>最低消费: {{ item.miniCost }}</span>
  22. </div>
  23. </div>
  24. <div :class="[item.status == 1 ? 'app-color-4' : '']">{{ item.status | constantfilter('COUPON_STATUS') }}</div>
  25. </div>
  26. </div>
  27. </div>
  28. </block>
  29. <block v-else>
  30. <app-wrapper-empty title="暂无数据" :is-empty="$util.isEmpty(list.data)" />
  31. </block>
  32. </div>
  33. </div>
  34. </template>
  35. <script>
  36. import AppTabs from '@/components/plugin/tabs'
  37. import AppAvatarModule from '@/components/module/app-avatar'
  38. import AppWrapperEmpty from '@/components/app-wrapper-empty'
  39. import { list } from '@/mixins'
  40. // api
  41. import { getListB } from '@/api/coupon'
  42. export default {
  43. name: 'admin-invite',
  44. components: {
  45. AppTabs,
  46. AppAvatarModule,
  47. AppWrapperEmpty
  48. },
  49. mixins: [list],
  50. data() {
  51. return {
  52. tabIndex: 0,
  53. tabs: [
  54. {
  55. name: '全部',
  56. value: 0
  57. },
  58. {
  59. name: '待使用',
  60. value: 0
  61. },
  62. {
  63. name: '已使用',
  64. value: 0
  65. },
  66. {
  67. name: '已失效',
  68. value: 0
  69. }
  70. ]
  71. }
  72. },
  73. onPullDownRefresh() {
  74. this.resetList()
  75. this._list().then(res => {
  76. uni.stopPullDownRefresh()
  77. })
  78. },
  79. onReachBottom() {
  80. if (!this.list.finished) {
  81. this._list().then(res => {
  82. uni.stopPullDownRefresh()
  83. })
  84. } else {
  85. uni.stopPullDownRefresh()
  86. }
  87. },
  88. onLoad: function() {
  89. // this.init()
  90. },
  91. methods: {
  92. async init() {
  93. this._list()
  94. },
  95. _list() {
  96. let index = JSON.parse(JSON.stringify(this.tabIndex))
  97. index = index - 1
  98. return getListB({ status: index }).then(res => {
  99. this.completes(res)
  100. if (!this.$util.isEmpty(res.data)) {
  101. this.tabs[0].value = res.data.asset.totalNum
  102. this.tabs[1].value = res.data.asset.unUseNum
  103. this.tabs[2].value = res.data.asset.useNum
  104. this.tabs[3].value = res.data.asset.invalidNum
  105. console.log(res.data.asset.totalNum)
  106. }
  107. })
  108. },
  109. change(e) {
  110. if (this.tabIndex == e.index) {
  111. return false
  112. } else {
  113. this.tabIndex = e.index
  114. this.resetList()
  115. this._list()
  116. }
  117. // this.tabIndex = e.index
  118. }
  119. }
  120. }
  121. </script>
  122. <style lang="scss" scoped>
  123. .app-content {
  124. padding-top: 120upx;
  125. }
  126. // list
  127. .list-wrap {
  128. width: 100%;
  129. color: $fontColor3;
  130. background-color: #fff;
  131. .list {
  132. @include disFlex(center, space-between);
  133. width: calc(100% - 60upx);
  134. padding: 30upx 0;
  135. margin: 0 30upx;
  136. border-bottom: 1px solid $borderColor;
  137. .list-right {
  138. width: calc(100% - 130upx);
  139. .list-info {
  140. @include disFlex(center, space-between);
  141. margin-top: 10upx;
  142. .list-remark {
  143. margin-top: 10upx;
  144. }
  145. .list-info-left {
  146. display: inline-block;
  147. width: 160upx;
  148. }
  149. }
  150. }
  151. }
  152. }
  153. </style>