spread-order.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <template>
  2. <mescroll-uni ref="mescrollRef" top="80rpx" @init="mescrollInit" @down="downCallback" @up="upCallback"
  3. :down="downOption" :up="upOption">
  4. <view class="spread-order">
  5. <view class="order-container">
  6. <view v-for="(item, index) in orderList" :key="item.order_sn" class="order-item bg-white m-t-20">
  7. <view class="order-header flex row-between">
  8. <view>订单编号:{{item.order_sn}}</view>
  9. <view class="static sm"
  10. :style="{color: item.status == 1 ? colorConfig.primary : item.status == 3 ? '#909090' : '#00c735'}">
  11. {{item.statusDesc}}
  12. </view>
  13. </view>
  14. <view class="order-content flex">
  15. <view>
  16. <u-image width="180rpx" height="180rpx" border-radius="6px" :src="item.goods_image" />
  17. </view>
  18. <view class="order-goods-info m-l-20">
  19. <view class="name sm line-2">{{item.goods_name}}</view>
  20. <view class="flex row-between m-t-6">
  21. <view class="xs muted">
  22. <text class="m-r-10">
  23. 数量
  24. </text>
  25. <text class="normal nr">{{item.goods_num}}</text></view>
  26. <view class="xs">
  27. <text class="muted m-r-10">付款金额</text>
  28. <price-format :subscript-size="28" :first-size="28" :second-size="28"
  29. :price="item.pay_price" />
  30. </view>
  31. </view>
  32. <view class="pre-income muted sm m-t-10">
  33. <text class="m-r-10">预估收益</text>
  34. <price-format :subscript-size="28" :first-size="28" :second-size="28"
  35. :color="colorConfig.primary" :price="item.money" />
  36. </view>
  37. </view>
  38. </view>
  39. <view class="order-footer flex row-between">
  40. <view class="time muted sm">{{item.create_time}}</view>
  41. </view>
  42. </view>
  43. </view>
  44. </view>
  45. </mescroll-uni>
  46. </template>
  47. <script>
  48. import {
  49. distributionOrder
  50. } from "@/utils/type";
  51. import {
  52. getDistributionOrder
  53. } from "@/api/user";
  54. import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js";
  55. import MescrollMoreItemMixin from "@/components/mescroll-uni/mixins/mescroll-more-item.js";
  56. export default {
  57. mixins: [MescrollMixin, MescrollMoreItemMixin],
  58. data() {
  59. return {
  60. orderList: [],
  61. downOption: {
  62. auto: false // 不自动加载 (mixin已处理第一个tab触发downCallback)
  63. },
  64. upOption: {
  65. auto: false, // 不自动加载
  66. noMoreSize: 4, //如果列表已无数据,可设置列表的总数量要大于半页才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看; 默认5
  67. empty: {
  68. icon: '/static/images/order_null.png',
  69. tip: '暂无分销订单~', // 提示
  70. fixed: true
  71. }
  72. },
  73. confirmDialog: false
  74. };
  75. },
  76. props: {
  77. type: {
  78. type: Number | String,
  79. default: distributionOrder.ALL
  80. }
  81. },
  82. methods: {
  83. reflesh() {
  84. this.page = 1;
  85. this.lists = [];
  86. this.loadingStatus = loadingType.LOADING; // this.$getAfterSaleList();
  87. },
  88. upCallback(page) {
  89. let pageNum = page.num; // 页码, 默认从1开始
  90. let pageSize = page.size; // 页长, 默认每页10条
  91. let {
  92. type,
  93. } = this;
  94. getDistributionOrder({
  95. page_size: pageSize,
  96. page_no: pageNum,
  97. status: type
  98. }).then(({
  99. data
  100. }) => {
  101. let curPageData = data.list;
  102. let curPageLen = curPageData.length;
  103. let hasNext = !!data.more;
  104. if (page.num == 1) this.orderList = [];
  105. this.orderList = this.orderList.concat(curPageData);
  106. this.mescroll.endSuccess(curPageLen, hasNext);
  107. })
  108. },
  109. }
  110. };
  111. </script>
  112. <style lang="scss">
  113. .spread-order {
  114. .spread-header {
  115. height: 240rpx;
  116. background-color: var(--primary-color);
  117. padding-top: 60rpx;
  118. .deal-num {
  119. flex: 1;
  120. align-self: flex-start;
  121. .num {
  122. font-size: 42rpx;
  123. }
  124. .explain {
  125. line-height: 34rpx;
  126. margin-top: 16rpx;
  127. }
  128. }
  129. .income-num {
  130. flex: 1;
  131. align-self: flex-start;
  132. .explain {
  133. line-height: 34rpx;
  134. margin-top: 12rpx;
  135. }
  136. }
  137. }
  138. .order-container {
  139. padding: 0 20rpx;
  140. .order-item {
  141. border-radius: 14rpx;
  142. .order-header {
  143. padding: 20rpx 30rpx;
  144. border-bottom: $-solid-border;
  145. .status {
  146. color: #F95F2F;
  147. }
  148. }
  149. .order-content {
  150. padding: 20rpx 30rpx 20rpx 20rpx;
  151. border-bottom: $-solid-border;
  152. .order-goods-info {
  153. text-align: left;
  154. flex: 1;
  155. .name {
  156. line-height: 36rpx;
  157. }
  158. .pre-income {
  159. line-height: 34rpx;
  160. margin-top: 8rpx;
  161. }
  162. }
  163. }
  164. .order-footer {
  165. padding: 20rpx 30rpx 20rpx 20rpx;
  166. .static {
  167. color: #F95F2F;
  168. }
  169. .wait-return {
  170. color: #F95F2F;
  171. }
  172. }
  173. }
  174. }
  175. }
  176. </style>