team-size.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?php
  2. use common\helpers\ComponentHelper;
  3. ComponentHelper::loadComponentView('com-user-info');
  4. ?>
  5. <com-list-page :crumbs="crumbs" id="application">
  6. <com-list-table ref="table" :api="api" :search-list="searchList">
  7. <el-table-column prop="id" label="会员ID" align="center">
  8. <template slot-scope="scope">
  9. {{ scope.row.id }}
  10. </template>
  11. </el-table-column>
  12. <el-table-column prop="nickname" label="会员" min-width="200">
  13. <template slot-scope="scope">
  14. <com-user-info :user="scope.row"></com-user-info>
  15. </template>
  16. </el-table-column>
  17. <el-table-column prop="level" label="会员类型" align="center">
  18. <template slot-scope="scope">
  19. <div>{{ scope.row.level_name }}</div>
  20. </template>
  21. </el-table-column>
  22. <el-table-column prop="user_direct_total" label="一级人数" align="center">
  23. <template slot-scope="scope">
  24. <div>{{ scope.row.user_direct_total }}</div>
  25. </template>
  26. </el-table-column>
  27. <el-table-column prop="user_indirect_total" label="二级人数" align="center">
  28. <template slot-scope="scope">
  29. <div>{{ scope.row.user_indirect_total }}</div>
  30. </template>
  31. </el-table-column>
  32. <el-table-column prop="user_team_total" label="团队总数" align="center" min-width="100">
  33. <template slot-scope="scope">
  34. <div>{{ scope.row.user_team_total }}</div>
  35. </template>
  36. </el-table-column>
  37. <el-table-column prop="team_finish_order_total" label="团队订单数" align="center" min-width="100">
  38. <template slot-scope="scope">
  39. <div>{{ scope.row.team_finish_order_total }}</div>
  40. </template>
  41. </el-table-column>
  42. <el-table-column prop="team_finish_order_price_total" label="团队总业绩" align="center" min-width="100">
  43. <template slot-scope="scope">
  44. <div>{{ scope.row.team_finish_order_price_total }}</div>
  45. </template>
  46. </el-table-column>
  47. <el-table-column prop="right_btn" label="操作" align="center" min-width="100">
  48. <template slot-scope="scope">
  49. <el-button type="text" @click="$navigate({
  50. r: 'mall/statistics/team-achievement',
  51. uid: scope.row.id,
  52. name: scope.row.nickname
  53. })">团队业绩</el-button>
  54. </template>
  55. </el-table-column>
  56. <template slot="header-left">
  57. <el-button type="primary" size="mini" @click="exportData" :loading="btnLoad">导出全部</el-button>
  58. <el-button type="primary" size="mini" @click="updateFinishOrder" :loading="btnLoad">团队业绩更新</el-button>
  59. </template>
  60. </com-list-table>
  61. </com-list-page>
  62. <script>
  63. const application = new Vue({
  64. el: '#application',
  65. data: {
  66. api: 'mall/statistics/team-size',
  67. crumbs: [
  68. {
  69. title: '首页',
  70. router: 'mall/overview/index',
  71. },
  72. {
  73. title: '团队人数',
  74. }
  75. ],
  76. levelList: [],
  77. exportList: [],
  78. btnLoad: false,
  79. },
  80. mounted() {
  81. this.getLevel()
  82. },
  83. computed: {
  84. searchList() {
  85. return [
  86. {
  87. key: 'keyword',
  88. title: '用户昵称/手机号',
  89. type: 'text',
  90. },
  91. {
  92. key: 'user_id',
  93. title: '用户ID精准搜索',
  94. type: 'text',
  95. },
  96. {
  97. key: 'level',
  98. title: '会员等级',
  99. type: 'select',
  100. options: this.levelList,
  101. valueKey: {
  102. label: 'name',
  103. value: 'level',
  104. },
  105. },
  106. ]
  107. }
  108. },
  109. methods: {
  110. async getLevel() {
  111. request({
  112. params: {
  113. r: 'mall/user-level/list'
  114. },
  115. method: 'get',
  116. }).then(e => {
  117. if (e.data.code == 0) {
  118. this.levelList = e.data.data
  119. }
  120. })
  121. },
  122. updateFinishOrder() {
  123. this.btnLoad = true;
  124. request({
  125. params: {
  126. r: 'mall/statistics/update-finish-order'
  127. },
  128. method: 'post',
  129. }).then(e => {
  130. if (e.data.code == 0) {
  131. this.$message.success(e.data.msg)
  132. } else {
  133. this.$message.error(e.data.msg)
  134. }
  135. this.btnLoad = false
  136. }).catch(e => {
  137. this.btnLoad = false
  138. this.$message.error('未知错误')
  139. });
  140. },
  141. exportData() {
  142. let searchParams = JSON.stringify(this.$refs['table'].searchParams) == '{}'
  143. ? {}
  144. : JSON.stringify(this.$refs['table'].searchParams)
  145. let params = {
  146. keyword: searchParams.keyword,
  147. level: searchParams.level,
  148. user_id: searchParams.user_id,
  149. }
  150. let data = {type: 'team-size', params: params}
  151. request({
  152. params: {
  153. r: 'mall/statistics/export'
  154. },
  155. data : data,
  156. method: 'post',
  157. }).then(e => {
  158. if (e.data.code == 0) {
  159. this.$message.success(e.data.msg)
  160. } else {
  161. this.$message.error(e.data.msg)
  162. }
  163. this.btnLoad = false
  164. }).catch(e => {
  165. this.btnLoad = false
  166. this.$message.error('未知错误')
  167. })
  168. },
  169. }
  170. })
  171. </script>