index.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <?php
  2. use common\helpers\ComponentHelper;
  3. ComponentHelper::loadComponentView('com-image' );
  4. ?>
  5. <div id="app" v-cloak>
  6. <el-card shadow="never" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
  7. <div slot="header">
  8. <div>
  9. <span>补货统计
  10. <el-tooltip class="item" effect="dark" content="个人团队补货奖励,只有开启统计平级两层的盒数算阶梯,才会统计直推、间推" placement="top-start">
  11. <i class="el-icon-info"></i>
  12. </el-tooltip>
  13. </span>
  14. </div>
  15. </div>
  16. <div class="table-body">
  17. <el-form ref="form" style="margin-bottom: 10px;" :model="search" label-width="96px" size="mini">
  18. <el-row :gutter="12">
  19. <el-col :span="6" style="padding-left: 0;" class="top_form">
  20. <el-form-item label="会员ID">
  21. <el-input v-model="search.user_id" placeholder="请输入会员ID" clearable></el-input>
  22. </el-form-item>
  23. </el-col>
  24. <el-col :span="6" class="top_form">
  25. <el-form-item label="会员">
  26. <el-input v-model="search.mobile" placeholder="会员手机号" clearable></el-input>
  27. </el-form-item>
  28. </el-col>
  29. </el-row>
  30. <el-row :gutter="24">
  31. <el-col class="top_form">
  32. <el-form-item label="时间">
  33. <el-date-picker
  34. v-model="search.time"
  35. type="datetimerange"
  36. range-separator="至"
  37. start-placeholder="开始日期"
  38. end-placeholder="结束日期"
  39. value-format="yyyy-MM-dd HH:mm:ss"
  40. @change="addTimeChange"
  41. :default-time="['00:00:00', '23:59:59']"
  42. >
  43. </el-date-picker>
  44. <el-button type="primary" style="margin-left: 10px;" size="mini" @click="toSearch" >搜索</el-button>
  45. <el-button type="danger" size="mini" @click="resetSearch" >清除</el-button>
  46. </el-form-item>
  47. </el-col>
  48. </el-row>
  49. </el-form>
  50. <el-table v-loading="listLoading" :data="list" style="width: 100%">
  51. <el-table-column prop="user_id" label="会员ID" align="center" width="100"></el-table-column>
  52. <el-table-column label="用户信息" align="center" width="200">
  53. <template slot-scope="scope">
  54. <div class="user_img" flex="cross:center">
  55. <!-- <com-image style="float: left;margin-right: 5px;" class="avatar_url" mode="aspectFill" :src="scope.row.user.avatar_url ? scope.row.user.avatar_url : '/resources/img/common/default-avatar.png'"></com-image>-->
  56. <el-image class="default-avatar" :src="scope.row.user.avatar_url">
  57. <div slot="error" class="image-slot">
  58. <com-image src="resources/img/mall/default_avatar_url.png"></com-image>
  59. </div>
  60. </el-image>
  61. <div>{{scope.row.user.nickname}}<br/>{{scope.row.user.mobile}}</div>
  62. </div>
  63. </template>
  64. </el-table-column>
  65. <el-table-column label="等级" align="center">
  66. <template slot-scope="scope">
  67. {{ level_map[scope.row.level] }}
  68. </template>
  69. </el-table-column>
  70. <el-table-column label="补货数量" align="center" prop="self_num"></el-table-column>
  71. <el-table-column label="直推补货数量" align="center" prop="direct_num"></el-table-column>
  72. <el-table-column label="间推补货数量" align="center" prop="indirect_num"></el-table-column>
  73. <el-table-column label="奖励金额" align="center" prop="money"></el-table-column>
  74. <el-table-column label="开始时间" prop="upgrade_level_at" align="center">
  75. <template slot-scope="scope">
  76. {{scope.row.start|dateTimeFormat('Y-m-d H:i:s')}}
  77. </template>
  78. </el-table-column>
  79. <el-table-column label="结束时间" prop="upgrade_level_at" align="center">
  80. <template slot-scope="scope">
  81. {{scope.row.end|dateTimeFormat('Y-m-d H:i:s')}}
  82. </template>
  83. </el-table-column>
  84. <el-table-column label="添加时间" prop="upgrade_level_at" align="center">
  85. <template slot-scope="scope">
  86. {{scope.row.created_at|dateTimeFormat('Y-m-d H:i:s')}}
  87. </template>
  88. </el-table-column>
  89. </el-table>
  90. <div style="text-align: right;margin: 20px 0;">
  91. <el-pagination @current-change="pagination" background layout="prev, pager, next" :page-count="pageCount"></el-pagination>
  92. </div>
  93. </div>
  94. </el-card>
  95. </div>
  96. <script>
  97. const app = new Vue({
  98. el: '#app',
  99. data() {
  100. return {
  101. list: [],
  102. listLoading: false,
  103. page: 1,
  104. pageCount: 0,
  105. dialogVisible: false,
  106. logLoading: false,
  107. logList: [],
  108. logPage: 1,
  109. logPageCount: 0,
  110. log_user_id: 0,
  111. level_map: {},
  112. search: {
  113. user_id: null,
  114. mobile: null,
  115. level: null,
  116. start_at: null,
  117. end_at: null,
  118. },
  119. nickname: ''
  120. };
  121. },
  122. mounted: function () {
  123. this.getList();
  124. },
  125. methods: {
  126. pagination(currentPage) {
  127. let self = this;
  128. self.page = currentPage;
  129. self.getList();
  130. },
  131. getList() {
  132. let self = this;
  133. self.listLoading = true;
  134. let params = {
  135. r: 'cloud-stock/fill-statistics/index',
  136. page:self.page,
  137. };
  138. params = Object.assign(params, this.search);
  139. request({
  140. params: params,
  141. method: 'get',
  142. }).then(e => {
  143. self.listLoading = false;
  144. self.list = e.data.data.list.list;
  145. self.pageCount = e.data.data.list.page_count;
  146. self.level_map = e.data.data.level_map
  147. }).catch(e => {
  148. console.log(e);
  149. });
  150. },
  151. //搜索时间处理
  152. addTimeChange(v){
  153. this.search.start_at = v?v[0]:'';
  154. this.search.end_at = v?v[1]:'';
  155. },
  156. //清空搜索
  157. resetSearch() {
  158. this.search = {};
  159. this.getList();
  160. },
  161. //搜索
  162. toSearch() {
  163. this.page = 1;
  164. this.getList();
  165. },
  166. }
  167. });
  168. </script>
  169. <style>
  170. .user_img{
  171. position: relative;
  172. margin-right: 8px;
  173. /* height: 50px;
  174. width: 50px; */
  175. }
  176. .default-avatar{
  177. width: 50px;
  178. height: 50px;
  179. border-radius: 50%;
  180. margin-right: 8px;
  181. }
  182. .uer-nickname {
  183. flex: 1;
  184. }
  185. </style>