period.php 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  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 style="float: right">-->
  6. <!-- <el-button type="primary" size="small" style="padding: 9px 15px !important;" @click="manualexecution()">手动分红</el-button>-->
  7. <!-- </div>-->
  8. </div>
  9. <div class="table-body">
  10. <div class="search-box">
  11. <!-- 搜索 -->
  12. <el-form :inline="true" :model="searchForm" size="small" class="demo-form-inline">
  13. <el-form-item label="创建时间">
  14. <el-date-picker
  15. v-model="searchForm.datetime"
  16. type="datetimerange"
  17. value-format="yyyy-MM-dd HH:mm:ss"
  18. range-separator="至"
  19. start-placeholder="开始日期"
  20. end-placeholder="结束日期">
  21. </el-date-picker>
  22. </el-form-item>
  23. <el-form-item>
  24. <el-button type="primary" @click="search">搜索</el-button>
  25. <el-button type="danger" @click="resetSearch" v-if="show_clear_search_btn">清除条件</el-button>
  26. </el-form-item>
  27. </el-form>
  28. </div>
  29. <el-tabs v-model="activeName">
  30. <el-table :data="list" stripe v-loading="loading" size="small" style="margin-bottom: 15px;">
  31. <el-table-column prop="id" width="100" label="结算期数" align="center">
  32. <template slot-scope="scope">
  33. 第{{ scope.row.period_num }}期
  34. </template>
  35. </el-table-column>
  36. <el-table-column label="结算周期" align="center">
  37. <template slot-scope="scope">
  38. <div>{{ compute_period[scope.row.compute_period] }}</div>
  39. </template>
  40. </el-table-column>
  41. <el-table-column label="时间范围" align="center">
  42. <template slot-scope="scope">
  43. <div>{{ scope.row.start_time }}至{{ scope.row.end_time }}</div>
  44. </template>
  45. </el-table-column>
  46. <el-table-column label="加权平分(元)" prop="extra_amounts" align="center"></el-table-column>
  47. <el-table-column label="业绩分红(元)" prop="achievement_commission" align="center"></el-table-column>
  48. <el-table-column label="出单奖励(元)" prop="amounts" align="center"></el-table-column>
  49. <el-table-column label="出单奖励结算人数" prop="amounts_num" align="center"></el-table-column>
  50. <el-table-column label="总分红人数" prop="total_amounts_num" align="center"></el-table-column>
  51. <el-table-column label="创建时间" align="center">
  52. <template slot-scope="scope">
  53. <div>{{scope.row.created_at|dateTimeFormat('Y-m-d H:i:s')}}</div>
  54. </template>
  55. </el-table-column>
  56. <el-table-column label="操作">
  57. <template slot-scope="scope">
  58. <el-button type="text" size="small" @click="handle('detail',scope.row)">提成明细</el-button>
  59. </template>
  60. </el-table-column>
  61. </el-table>
  62. </el-tabs>
  63. <div style="text-align: right;margin: 20px 0;">
  64. <el-pagination @current-change="pagination" background layout="prev, pager, next" :page-count="pageCount"></el-pagination>
  65. </div>
  66. </div>
  67. </el-card>
  68. </div>
  69. <script>
  70. const app = new Vue({
  71. el: '#app',
  72. data: {
  73. loading: false,
  74. jobLoading: false,
  75. activeName: '-1',
  76. list: [],
  77. commonission_type: [],
  78. compute_period: [],
  79. page: 1,
  80. pageCount: 0,
  81. searchForm: {
  82. datetime:[],
  83. },
  84. },
  85. mounted() {
  86. this.getList();
  87. },
  88. computed: {
  89. show_clear_search_btn: function() {
  90. return this.searchForm.datetime != [];
  91. },
  92. },
  93. methods: {
  94. search() {
  95. this.page = 1;
  96. this.getList(this.searchForm);
  97. },
  98. resetSearch() {// 清空查询条件
  99. this.searchForm = {
  100. datetime:[],
  101. };
  102. this.page = 1;
  103. this.getList();
  104. },
  105. getList() {
  106. let self = this;
  107. self.loading = true;
  108. let basic_params = {
  109. page: self.page,
  110. };
  111. basic_params = Object.assign(basic_params, this.searchForm);
  112. request({
  113. params: {
  114. r: 'serve-bonus/commission/period'
  115. },
  116. data: basic_params,
  117. method: 'post',
  118. }).then(e => {
  119. this.loading = false;
  120. if (e.data.code == 0) {
  121. self.list = e.data.data.list.list;
  122. self.commonission_type = e.data.data.commonission_type;
  123. self.compute_period = e.data.data.compute_period;
  124. self.pageCount = e.data.data.list.page_count;
  125. } else {
  126. self.$message.error(e.data.msg);
  127. }
  128. }).catch(e => {
  129. self.loading = false;
  130. });
  131. },
  132. //手动执行分红 测试时使用
  133. manualexecution(){
  134. this.$confirm('执行任务, 是否继续?', '警告', {type: 'warning'}).then(() => {
  135. let params = {
  136. r: 'serve-bonus/commission/manualexecution'
  137. };
  138. request({
  139. params: params,
  140. method: 'post',
  141. }).then(e => {
  142. });
  143. })
  144. },
  145. // 操作处理
  146. handle(type, data = null) {
  147. switch (type) {
  148. case 'detail':// 提成明细
  149. params = {
  150. r: 'serve-bonus/commission/commission-log'
  151. };
  152. params = Object.assign(params, {
  153. period_id: data.id
  154. });
  155. navigateTo(params);
  156. break;
  157. }
  158. },
  159. runServeBonusJob() {
  160. this.jobLoading = true;
  161. let params = {
  162. r: 'serve-bonus/commission/job'
  163. };
  164. request({
  165. params: params,
  166. method: 'post',
  167. }).then(e => {
  168. this.jobLoading = false;
  169. if (e.data.code == 0) {
  170. this.$message.success(e.data.msg);
  171. this.search.page = 1;
  172. this.getList();
  173. } else {
  174. this.jobLoading = false;
  175. this.$message.error(e.data.msg);
  176. }
  177. });
  178. },
  179. pagination(currentPage) {
  180. let self = this;
  181. self.page = currentPage;
  182. self.getList();
  183. },
  184. }
  185. });
  186. </script>
  187. <style>
  188. .el-tabs__header {
  189. font-size: 16px;
  190. }
  191. .table-body {
  192. padding: 20px;
  193. background-color: #fff;
  194. }
  195. .batch {
  196. margin: 0 0 20px;
  197. display: inline-block;
  198. }
  199. .batch .el-button {
  200. padding: 9px 15px !important;
  201. }
  202. .el-table th>.cell{
  203. color: #333;
  204. font-weight: bold;
  205. font-size: 14px;
  206. }
  207. .el-table__footer-wrapper, .el-table__header-wrapper{
  208. border-bottom: 1.4px solid #D6D6D6;
  209. }
  210. </style>