authorizationList.vue 3.8 KB

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