index.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. <template>
  2. <view :style="viewColor">
  3. <view class="promoter-order">
  4. <view class="promoter-header">
  5. <view class="search">
  6. <view class="search-content acea-row row-middle">
  7. <text class="iconfont icon-sousuo"></text>
  8. <input type='text' placeholder='搜索用户昵称或商品名称' @confirm="searchSubmitValue" confirm-type='search'
  9. name="search" placeholder-class='placeholder' />
  10. </view>
  11. </view>
  12. <timeSlot @changeTime="changeTime"></timeSlot>
  13. </view>
  14. <view class='list' v-if="recordList.length>0">
  15. <view class="top_num">
  16. 共 <text class="main_color">{{total}}</text> 笔订单
  17. </view>
  18. <block v-for="(item,index) in recordList" :key="index">
  19. <view class='item'>
  20. <view class='listn'>
  21. <view class='itenm'>
  22. <view class='top acea-row row-between-wrapper'>
  23. <view class='pictxt acea-row row-between-wrapper'>
  24. <view class='pictrue'>
  25. <image v-if="item.user.avatar" :src='item.user.avatar'></image>
  26. <image v-else class="avatar" src="/static/images/f.png"></image>
  27. </view>
  28. <view class='text line1'>{{item.user.nickname}}</view>
  29. </view>
  30. <view class='money' v-if="item.status >= 2">返佣:<text class='p-color'>¥{{item.brokerage}}</text></view>
  31. <view class='money' v-else>暂未返佣:<text class='p-color'>¥{{item.brokerage}}</text></view>
  32. </view>
  33. <view class='bottom'>
  34. <view class="acea-row">
  35. <view class='name'>商品名称:</view>
  36. <view class="line1 store_name">{{item.orderProduct[0]['cart_info']['product']['store_name']}}</view>
  37. </view>
  38. <view><text class='name'>订单编号:</text>{{item.order_sn}}</view>
  39. <view><text class='name'>下单时间:</text>{{item.pay_time}}</view>
  40. </view>
  41. </view>
  42. </view>
  43. </view>
  44. </block>
  45. </view>
  46. <view v-if="recordList.length == 0">
  47. <emptyPage title="暂无推广订单~"></emptyPage>
  48. </view>
  49. </view>
  50. </view>
  51. </template>
  52. <script>
  53. // +----------------------------------------------------------------------
  54. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  55. // +----------------------------------------------------------------------
  56. // | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
  57. // +----------------------------------------------------------------------
  58. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  59. // +----------------------------------------------------------------------
  60. // | Author: CRMEB Team <admin@crmeb.com>
  61. // +----------------------------------------------------------------------
  62. import { spreadOrder } from '@/api/user.js';
  63. import { mapGetters } from "vuex";
  64. import { toLogin } from '@/libs/login.js';
  65. import emptyPage from '@/components/emptyPage.vue';
  66. import timeSlot from '@/components/timeSlot/index.vue';
  67. export default {
  68. components: {
  69. timeSlot,
  70. emptyPage
  71. },
  72. data() {
  73. return {
  74. page: 1,
  75. limit: 8,
  76. keyword: "",
  77. start: 0,
  78. stop: 0,
  79. status: false,
  80. total:0,
  81. sum_brokerage:0,
  82. recordList: [],
  83. recordCount: 0,
  84. userInfo:'',
  85. time: "", //时间|today=今天|yesterday=昨天|month=本月
  86. times: [],
  87. };
  88. },
  89. computed: mapGetters(['isLogin','viewColor']),
  90. onLoad() {
  91. if (this.isLogin) {
  92. this.getRecordOrderList();
  93. } else {
  94. toLogin()
  95. }
  96. },
  97. methods: {
  98. searchSubmitValue(e) {
  99. this.keyword = e ? e.detail.value : ''
  100. this.page = 1;
  101. this.limit = 20;
  102. this.status = false;
  103. this.$set(this, 'recordList', []);
  104. this.$set(this, 'times', []);
  105. this.getRecordOrderList()
  106. },
  107. changeTime(time) {
  108. this.start = time.start
  109. this.stop = time.stop
  110. this.searchSubmitValue()
  111. },
  112. getRecordOrderList: function() {
  113. let that = this;
  114. let page = that.page;
  115. let limit = that.limit;
  116. let status = that.status;
  117. let recordList = that.recordList;
  118. let recordListNew = [];
  119. if (status == true) return;
  120. spreadOrder({
  121. start: that.start,
  122. stop: that.stop,
  123. keyword: that.keyword,
  124. page: page,
  125. limit: limit
  126. }).then(res => {
  127. that.total = res.data.count;
  128. that.sum_brokerage = res.data.sum_brokerage;
  129. let len = res.data.list ? res.data.list.length : 0;
  130. let recordListData = res.data.list;
  131. recordListNew = recordList.concat(recordListData);
  132. that.recordCount = res.data.count || 0;
  133. that.status = limit > len;
  134. that.page +=1;
  135. that.$set(that, 'recordList', recordListNew);
  136. });
  137. }
  138. },
  139. onReachBottom() {
  140. this.getRecordOrderList();
  141. }
  142. }
  143. </script>
  144. <style scoped lang="scss">
  145. .promoterHeader {
  146. background-image: linear-gradient(to right, var(--view-bntColor21) 0%, var(--view-bntColor22) 100%);
  147. }
  148. .promoter-header{
  149. position: fixed;
  150. top: 0;
  151. left: 0;
  152. z-index: 9;
  153. width: 100%;
  154. }
  155. .p-color {
  156. color: var(--view-priceColor);
  157. }
  158. .search {
  159. padding: 17rpx 30rpx;
  160. background-color: var(--view-theme);
  161. .search-content {
  162. width: 100%;
  163. height: 60rpx;
  164. padding: 0 30rpx;
  165. border-radius: 30rpx;
  166. background-color: #FFFFFF;
  167. font-size: 26rpx;
  168. }
  169. .iconfont {
  170. margin-right: 10rpx;
  171. font-size: 26rpx;
  172. color: #999999;
  173. }
  174. .placeholder {
  175. font-size: 26rpx;
  176. color: #999999;
  177. }
  178. .input {
  179. flex: 1;
  180. }
  181. }
  182. .promoter-order .list{
  183. margin-top: 200rpx;
  184. }
  185. .promoter-order .list .item .title {
  186. height: 133rpx;
  187. padding: 0 30rpx;
  188. font-size: 26rpx;
  189. color: #999;
  190. }
  191. .promoter-order .list .item .title .data {
  192. font-size: 28rpx;
  193. color: #282828;
  194. margin-bottom: 5rpx;
  195. }
  196. .promoter-order .list .item .listn .itenm {
  197. background-color: #fff;
  198. }
  199. .promoter-order .list .item .listn .itenm~.itenm {
  200. margin-top: 12rpx;
  201. }
  202. .promoter-order .list .item .listn .itenm .top {
  203. margin-left: 30rpx;
  204. padding-right: 30rpx;
  205. border-bottom: 1px solid #eee;
  206. height: 100rpx;
  207. }
  208. .promoter-order .list .item .listn .itenm .top .pictxt {
  209. width: 320rpx;
  210. }
  211. .promoter-order .list .item .listn .itenm .top .pictxt .text {
  212. width: 230rpx;
  213. font-size: 30rpx;
  214. color: #282828;
  215. }
  216. .promoter-order .list .item .listn .itenm .top .pictxt .pictrue {
  217. width: 64rpx;
  218. height: 64rpx;
  219. }
  220. .promoter-order .list .item .listn .itenm .top .pictxt .pictrue image {
  221. width: 100%;
  222. height: 100%;
  223. border-radius: 50%;
  224. border: 3rpx solid #fff;
  225. box-sizing: border-box;
  226. box-shadow: 0px 1px 12px 0px rgba(0,0,0,0.102);
  227. }
  228. .promoter-order .list .item .listn .itenm .top .money {
  229. font-size: 28rpx;
  230. }
  231. .promoter-order .list .item .listn .itenm .bottom {
  232. padding: 20rpx 30rpx;
  233. font-size: 28rpx;
  234. color: #666;
  235. line-height: 1.6;
  236. }
  237. .promoter-order .list .item .listn .itenm .bottom .name {
  238. color: #999;
  239. }
  240. .promoter-order .list .item .listn .itenm .bottom .store_name{
  241. max-width: 550rpx;
  242. }
  243. .top_num{
  244. padding: 0 30rpx;
  245. font-size: 26rpx;
  246. color: #666;
  247. line-height: 86rpx;
  248. }
  249. .main_color{
  250. color: var(--view-theme);
  251. }
  252. </style>