index.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. <template>
  2. <view :data-theme="theme">
  3. <view class="promoter-order">
  4. <view class='promoterHeader'>
  5. <view class='headerCon acea-row row-between-wrapper'>
  6. <view>
  7. <view class='name'>累积推广订单</view>
  8. <view><text class='num'>{{recordCount || 0}}</text>单</view>
  9. </view>
  10. <view class='iconfont icon-2'></view>
  11. </view>
  12. </view>
  13. <view class='list borderPad'>
  14. <block v-for="(item,index) in recordList" :key="index">
  15. <view class='item'>
  16. <view class='title acea-row row-column row-center'>
  17. <view class='data'>{{item.time}}</view>
  18. <view>本月累计推广订单:{{item.count || 0}}单</view>
  19. </view>
  20. <view class='listn'>
  21. <block v-for="(child,indexn) in item.child" :key="indexn">
  22. <view class='itenm borRadius14'>
  23. <view class='top acea-row row-between-wrapper'>
  24. <view class='pictxt acea-row row-between-wrapper'>
  25. <view class='pictrue'>
  26. <image :src='child.avatar'></image>
  27. </view>
  28. <view class='text line1'>{{child.nickname}}</view>
  29. </view>
  30. <view class='money'>返佣:<text class='font-color'>¥{{child.amount}}</text></view>
  31. <!-- <view class='money' v-if="child.type == 'brokerage'">返佣:<text class='font-color'>¥{{child.number}}</text></view>
  32. <view class='money' v-else>暂未返佣:<text class='font-color'>¥{{child.number}}</text></view> -->
  33. </view>
  34. <view class='bottom'>
  35. <view><text class='name'>订单编号:</text>{{child.orderNo}}</view>
  36. <view><text class='name'>返佣时间:</text>{{child.time}}</view>
  37. </view>
  38. </view>
  39. </block>
  40. </view>
  41. </view>
  42. </block>
  43. <view class='loadingicon acea-row row-center-wrapper'>
  44. <text class='loading iconfont icon-jiazai' :hidden='loading==false'></text>
  45. </view>
  46. </view>
  47. <view v-show="recordList.length == 0 && !loading">
  48. <emptyPage title="暂无推广订单~" mTop="30%" :imgSrc="urlDomain+'crmebimage/presets/noJilu.png'"></emptyPage>
  49. </view>
  50. </view>
  51. </view>
  52. </template>
  53. <script>
  54. // +----------------------------------------------------------------------
  55. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  56. // +----------------------------------------------------------------------
  57. // | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
  58. // +----------------------------------------------------------------------
  59. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  60. // +----------------------------------------------------------------------
  61. // | Author: CRMEB Team <admin@crmeb.com>
  62. // +----------------------------------------------------------------------
  63. import {
  64. spreadOrder
  65. } from '@/api/user.js';
  66. import {
  67. toLogin
  68. } from '@/libs/login.js';
  69. import {
  70. mapGetters
  71. } from "vuex";
  72. import emptyPage from '@/components/emptyPage.vue'
  73. import {
  74. setThemeColor
  75. } from '@/utils/setTheme.js'
  76. const app = getApp();
  77. export default {
  78. components: {
  79. emptyPage
  80. },
  81. data() {
  82. return {
  83. urlDomain: this.$Cache.get("imgHost"),
  84. page: 1,
  85. limit: 20,
  86. status: false,
  87. recordList: [],
  88. recordCount: 0,
  89. time: 0,
  90. theme: app.globalData.theme,
  91. bgColor: '#e93323',
  92. loading: true
  93. };
  94. },
  95. computed: mapGetters(['isLogin']),
  96. onLoad() {
  97. if (this.isLogin) {
  98. this.getRecordOrderList();
  99. } else {
  100. toLogin();
  101. }
  102. let that = this;
  103. that.bgColor = setThemeColor();
  104. uni.setNavigationBarColor({
  105. frontColor: '#ffffff',
  106. backgroundColor: that.bgColor,
  107. });
  108. },
  109. methods: {
  110. stringToDate: function(data) {
  111. let str = data.replace(/-/g, '/');
  112. let date = new Date(str);
  113. return data;
  114. },
  115. getRecordOrderList: function() {
  116. let that = this;
  117. let page = that.page;
  118. let limit = that.limit;
  119. let status = that.status;
  120. let recordList = that.recordList;
  121. let newList = [];
  122. if (status == true) return;
  123. spreadOrder({
  124. page: page,
  125. limit: limit
  126. }).then(res => {
  127. let recordListData = res.data ? res.data : [];
  128. // 每页返回的总条数;
  129. let len = 0;
  130. for (let i = 0; i < recordListData.length; i++) {
  131. len = len + recordListData[i].child.length;
  132. let str = recordListData[i].time.replace(/-/g, '/');
  133. let date = new Date(str).getTime();
  134. that.recordCount += recordListData[i].count || 0;
  135. if (that.time === date) {
  136. that.$set(that.recordList[i], 'child', that.recordList[i].child.concat(
  137. recordListData[i].child));
  138. } else {
  139. recordListData.forEach((item, index) => {
  140. if (recordListData[i] == item) {
  141. newList.push(item);
  142. }
  143. })
  144. that.$set(that, 'recordList', recordList.concat(newList));
  145. }
  146. that.time = date;
  147. };
  148. that.status = limit > len;
  149. that.page = page + 1;
  150. that.loading = false;
  151. });
  152. }
  153. }
  154. }
  155. </script>
  156. <style scoped lang="scss">
  157. .promoter-order .list .item .title {
  158. height: 133rpx;
  159. font-size: 26rpx;
  160. color: #999;
  161. }
  162. .promoterHeader {
  163. @include main_bg_color(theme);
  164. }
  165. .promoter-order .list .item .title .data {
  166. font-size: 28rpx;
  167. color: #282828;
  168. margin-bottom: 5rpx;
  169. }
  170. .promoter-order .list .item .listn .itenm {
  171. background-color: #fff;
  172. }
  173. .promoter-order .list .item .listn .itenm~.itenm {
  174. margin-top: 20rpx;
  175. }
  176. .promoter-order .list .item .listn .itenm .top {
  177. padding: 0 24rpx;
  178. border-bottom: 1rpx solid #eee;
  179. height: 100rpx;
  180. }
  181. .promoter-order .list .item .listn .itenm .top .pictxt {
  182. width: 320rpx;
  183. }
  184. .promoter-order .list .item .listn .itenm .top .pictxt .text {
  185. width: 230rpx;
  186. font-size: 30rpx;
  187. color: #282828;
  188. }
  189. .promoter-order .list .item .listn .itenm .top .pictxt .pictrue {
  190. width: 66rpx;
  191. height: 66rpx;
  192. }
  193. .promoter-order .list .item .listn .itenm .top .pictxt .pictrue image {
  194. width: 100%;
  195. height: 100%;
  196. border-radius: 50%;
  197. border: 3rpx solid #fff;
  198. box-sizing: border-box;
  199. box-shadow: 0 0 15rpx #aaa;
  200. }
  201. .promoter-order .list .item .listn .itenm .top .money {
  202. font-size: 28rpx;
  203. }
  204. .promoter-order .list .item .listn .itenm .bottom {
  205. padding: 20rpx 24rpx;
  206. font-size: 28rpx;
  207. color: #666;
  208. line-height: 1.6;
  209. }
  210. .promoter-order .list .item .listn .itenm .bottom .name {
  211. color: #999;
  212. }
  213. </style>