index.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. <div id="app" v-cloak>
  2. <el-card shadow="never" style="border:0" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
  3. <div slot="header">
  4. <span>提成明细</span>
  5. </div>
  6. <div class="table-body">
  7. <div class="input-item">
  8. <el-input @keyup.enter.native="loadData" size="small" placeholder="输入用户ID搜索" v-model="search.keyword" clearable @clear="toSearch">
  9. <el-button slot="append" icon="el-icon-search" @click="toSearch"></el-button>
  10. </el-input>
  11. </div>
  12. <!-- <div style="float: right">-->
  13. <!-- <el-button type="primary" size="small" :loading="jobLoading" style="padding: 9px 15px !important;" @click="runBossJob">手动执行分红</el-button>-->
  14. <!-- </div>-->
  15. <el-tabs v-model="activeName" @tab-click="handleClick">
  16. <el-table :data="list" stripe v-loading="loading" size="small" style="margin-bottom: 15px;">
  17. <el-table-column prop="id" width="100" label="ID" align="center"></el-table-column>
  18. <el-table-column label="股东信息">
  19. <template slot-scope="scope">
  20. <com-image style="float: left;margin-right: 5px;" class="avatar_url"
  21. mode="aspectFill" :src="scope.row.user.avatar_url ? scope.row.user.avatar_url : '/resources/img/common/default-avatar.png'"></com-image>
  22. <div>ID:{{scope.row.user.id}}</div>
  23. <div>{{scope.row.user.nickname}}</div>
  24. </template>
  25. </el-table-column>
  26. <el-table-column label="奖励类型">
  27. <template slot-scope="scope">
  28. <div>{{ commonission_type[scope.row.type] }}</div>
  29. </template>
  30. </el-table-column>
  31. <el-table-column label="结算周期" align="left">
  32. <template slot-scope="scope">
  33. <div>{{ compute_period[scope.row.compute_period] }}</div>
  34. <div>{{ scope.row.start_time }}~{{ scope.row.end_time }}</div>
  35. </template>
  36. </el-table-column>
  37. <el-table-column label="结算金额" prop="amounts" align="center"></el-table-column>
  38. <el-table-column label="佣金金额" prop="commission" align="center"></el-table-column>
  39. <el-table-column v-if="is_sediment == 1" label="存入沉淀池金额" prop="sedimen_money" align="center"></el-table-column>
  40. <el-table-column label="操作">
  41. <template slot-scope="scope">
  42. <el-button type="text" @click="handle('detail',scope.row)" v-if="scope.row.type != 4">分红明细</el-button>
  43. <span v-else>--</span>
  44. </template>
  45. </el-table-column>
  46. </el-table>
  47. </el-tabs>
  48. <div style="text-align: right;margin: 20px 0;">
  49. <el-pagination @current-change="pagination" background layout="prev, pager, next" :page-count="pageCount"></el-pagination>
  50. </div>
  51. </div>
  52. </el-card>
  53. </div>
  54. <script>
  55. const app = new Vue({
  56. el: '#app',
  57. data: {
  58. loading: false,
  59. jobLoading: false,
  60. activeName: '-1',
  61. list: [],
  62. commonission_type: [],
  63. compute_period: [],
  64. is_sediment: 0,
  65. page: 1,
  66. pageCount: 0,
  67. search: {}
  68. },
  69. mounted() {
  70. this.loadData();
  71. },
  72. methods: {
  73. loadData() {
  74. let self = this;
  75. self.loading = true;
  76. let basic_params = {
  77. page: self.page,
  78. };
  79. basic_params = Object.assign(basic_params, this.search);
  80. request({
  81. params: {
  82. r: 'boss/commission/index'
  83. },
  84. data: basic_params,
  85. method: 'post',
  86. }).then(e => {
  87. this.loading = false;
  88. if (e.data.code == 0) {
  89. self.list = e.data.data.list.list;
  90. self.commonission_type = e.data.data.commonission_type;
  91. self.compute_period = e.data.data.compute_period;
  92. self.is_sediment = e.data.data.is_sediment;
  93. self.pageCount = e.data.data.list.page_count;
  94. } else {
  95. self.$message.error(e.data.msg);
  96. }
  97. }).catch(e => {
  98. self.loading = false;
  99. });
  100. },
  101. // 操作处理
  102. handle(type, data = null) {
  103. switch (type) {
  104. case 'detail':// 编辑
  105. params = {
  106. r: 'boss/commission/reward-log'
  107. };
  108. params = Object.assign(params, {
  109. id: data.user_id,
  110. type: data.type,
  111. start_time: data.start_time,
  112. end_time: data.end_time,
  113. });
  114. navigateTo(params);
  115. break;
  116. }
  117. },
  118. runBossJob() {
  119. this.jobLoading = true;
  120. let params = {
  121. r: 'plugin/boss/mall/boss/run-boss-job'
  122. };
  123. request({
  124. params: params,
  125. method: 'post',
  126. }).then(e => {
  127. this.jobLoading = false;
  128. if (e.data.code == 0) {
  129. this.$message.success(e.data.msg);
  130. this.search.page = 1;
  131. this.loadData();
  132. } else {
  133. this.jobLoading = false;
  134. this.$message.error(e.data.msg);
  135. }
  136. });
  137. },
  138. pagination(currentPage) {
  139. let self = this;
  140. self.page = currentPage;
  141. self.loadData();
  142. },
  143. handleClick(tab, event) {
  144. this.search.page = 1;
  145. this.search.status = this.activeName;
  146. this.loadData()
  147. },
  148. toSearch() {
  149. this.search.page = 1;
  150. this.loadData();
  151. },
  152. }
  153. });
  154. </script>
  155. <style>
  156. .el-tabs__header {
  157. font-size: 16px;
  158. }
  159. .table-body {
  160. padding: 20px;
  161. background-color: #fff;
  162. }
  163. .table-body .el-button {
  164. padding: 0 !important;
  165. border: 0;
  166. margin: 0 5px;
  167. }
  168. .input-item {
  169. width: 250px;
  170. margin: 0 0 20px;
  171. display: inline-block;
  172. }
  173. .input-item .el-input__inner {
  174. border-right: 0;
  175. }
  176. .input-item .el-input__inner:hover {
  177. border: 1px solid #dcdfe6;
  178. border-right: 0;
  179. outline: 0;
  180. }
  181. .input-item .el-input__inner:focus {
  182. border: 1px solid #dcdfe6;
  183. border-right: 0;
  184. outline: 0;
  185. }
  186. .input-item .el-input-group__append {
  187. background-color: #fff;
  188. border-left: 0;
  189. width: 10%;
  190. padding: 0;
  191. }
  192. .input-item .el-input-group__append .el-button {
  193. padding: 0;
  194. }
  195. .input-item .el-input-group__append .el-button {
  196. margin: 0;
  197. }
  198. .batch {
  199. margin: 0 0 20px;
  200. display: inline-block;
  201. }
  202. .batch .el-button {
  203. padding: 9px 15px !important;
  204. }
  205. .el-table th>.cell{
  206. color: #333;
  207. font-weight: bold;
  208. font-size: 14px;
  209. }
  210. .el-table__footer-wrapper, .el-table__header-wrapper{
  211. border-bottom: 1.4px solid #D6D6D6;
  212. }
  213. </style>