authorizationList.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. <template>
  2. <view class="content">
  3. <scroll-view class="list-scroll-content" scroll-y @scrolltolower="loadData">
  4. <!-- 空白页 -->
  5. <empty v-if="navList[0].loaded === true && navList[0].orderList.length === 0"></empty>
  6. <!-- 订单列表 -->
  7. <view class="listItem flex" v-for="(item, index) in navList[0].orderList">
  8. <view>
  9. <image class="avatar" :src="item.to_user.avatar" mode="scaleToFill"></image>
  10. </view>
  11. <view class="conetnt">
  12. <view class="name">
  13. {{item.nickname}}
  14. </view>
  15. <view class="user">
  16. 手机号:{{item.to_user.phone}}
  17. </view>
  18. </view>
  19. <view class="rightButtom" @click="outAuth(item)">
  20. 解除
  21. </view>
  22. </view>
  23. <uni-load-more :status=" navList[0].loadingType"></uni-load-more>
  24. </scroll-view>
  25. </view>
  26. </template>
  27. <script>
  28. import empty from '@/components/empty';
  29. import {
  30. del_auth_car,
  31. get_auth
  32. } from '@/api/user.js';
  33. export default {
  34. components: {
  35. empty
  36. },
  37. data() {
  38. return {
  39. tabCurrentIndex: 0,
  40. navList: [{
  41. state: 0,
  42. text: '授权用户',
  43. loadingType: 'more',
  44. orderList: [],
  45. page: 1, //当前页数
  46. limit: 10 //每次信息条数
  47. }],
  48. id: '',
  49. };
  50. },
  51. onLoad(options) {
  52. this.id = options.id || '';
  53. this.loadData();
  54. },
  55. methods: {
  56. // 是否取消授权
  57. outAuth(item) {
  58. uni.showModal({
  59. title: '提示',
  60. content: `是否取消${item.nickname}授权?`,
  61. success: res => {
  62. if (res.confirm) {
  63. uni.showLoading({
  64. title: '取消授权中',
  65. mask:true
  66. });
  67. del_auth_car({
  68. id:item.id
  69. }).then((e) => {
  70. uni.hideLoading()
  71. }).catch((e) => {
  72. console.log(e);
  73. uni.hideLoading()
  74. })
  75. console.log('取消授权');
  76. }
  77. },
  78. });
  79. },
  80. //获取列表
  81. loadData(source) {
  82. //这里是将订单挂载到tab列表下
  83. let index = this.tabCurrentIndex;
  84. let navItem = this.navList[index];
  85. let state = navItem.state;
  86. if (source === 'tabChange' && navItem.loaded === true) {
  87. //tab切换只有第一次需要加载数据
  88. return;
  89. }
  90. if (navItem.loadingType === 'loading') {
  91. //防止重复加载
  92. return;
  93. }
  94. if (navItem.loadingType === 'noMore') {
  95. //防止重复加载
  96. return;
  97. }
  98. // 修改当前对象状态为加载中
  99. navItem.loadingType = 'loading';
  100. get_auth({
  101. car_number: this.id,
  102. page: navItem.page,
  103. limit: navItem.limit
  104. })
  105. .then(({
  106. data
  107. }) => {
  108. let arr = data.data.map(e => {
  109. return e;
  110. });
  111. navItem.orderList = navItem.orderList.concat(arr);
  112. // console.log(navItem.orderList);
  113. navItem.page++;
  114. if (navItem.limit == arr.length) {
  115. //判断是否还有数据, 有改为 more, 没有改为noMore
  116. navItem.loadingType = 'more';
  117. return;
  118. } else {
  119. //判断是否还有数据, 有改为 more, 没有改为noMore
  120. navItem.loadingType = 'noMore';
  121. }
  122. uni.hideLoading();
  123. this.$set(navItem, 'loaded', true);
  124. })
  125. .catch(e => {
  126. console.log(e);
  127. });
  128. },
  129. //订单状态文字和颜色
  130. }
  131. }
  132. </script>
  133. <style lang="scss">
  134. page,
  135. .content {
  136. height: 100%;
  137. }
  138. .list-scroll-content {
  139. padding-top: 30rpx;
  140. height: 100%;
  141. }
  142. .listItem {
  143. padding: $page-row-spacing;
  144. margin: $page-row-spacing;
  145. margin-top: 0;
  146. background-color: #FFFFFF;
  147. border-radius: 20rpx;
  148. .avatar {
  149. border-radius: 100rpx;
  150. width: 120rpx;
  151. height: 120rpx;
  152. }
  153. .rightButtom {
  154. padding: 20rpx 0;
  155. text-align: center;
  156. color: $color-red;
  157. border-radius: 100rpx;
  158. border: 1px solid $color-red;
  159. width: 200rpx;
  160. }
  161. .conetnt {
  162. padding-left: 20rpx;
  163. flex-grow: 1;
  164. .name {
  165. font-size: 32rpx;
  166. color: $font-color-dark;
  167. }
  168. .user {
  169. font-size: 24rpx;
  170. color: $font-color-disabled;
  171. margin-top: 30rpx;
  172. }
  173. }
  174. }
  175. </style>