index.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. <?php
  2. use common\helpers\ComponentHelper;
  3. ComponentHelper::loadComponentView('edit', __DIR__);
  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 style="display:flex;justify-content:space-between;align-items:center">
  9. <span>推广变更</span>
  10. <span>
  11. <el-button type="primary" size="small" style="padding: 9px 15px !important;" @click="editClick">修改推广变更
  12. </el-button>
  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.pull_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.pull_mobile" placeholder="请输入下级用户手机号" clearable></el-input>
  27. </el-form-item>
  28. </el-col>
  29. </el-row>
  30. <el-row :gutter="12">
  31. <el-col :span="6" style="padding-left: 0;" class="top_form">
  32. <el-form-item label="推荐人ID">
  33. <el-input v-model="search.push_user_id" placeholder="请输入修改后推荐人用户ID" clearable></el-input>
  34. </el-form-item>
  35. </el-col>
  36. <el-col :span="6" class="top_form">
  37. <el-form-item label="推荐人手机">
  38. <el-input v-model="search.push_mobile" placeholder="请输入修改后推荐人手机号" clearable></el-input>
  39. </el-form-item>
  40. </el-col>
  41. </el-row>
  42. <el-row :gutter="24">
  43. <el-col class="top_form" style="margin-left: -7px;" >
  44. <el-form-item label="修改时间">
  45. <el-date-picker
  46. v-model="search.time"
  47. type="datetimerange"
  48. range-separator="至"
  49. start-placeholder="开始日期"
  50. end-placeholder="结束日期"
  51. value-format="yyyy-MM-dd HH:mm:ss"
  52. @change="addTimeChange"
  53. :default-time="['00:00:00', '23:59:59']"
  54. >
  55. </el-date-picker>
  56. <el-button type="primary" style="margin-left: 10px;" size="mini" @click="toSearch" >搜索</el-button>
  57. <el-button type="danger" size="mini" @click="resetSearch" >清除</el-button>
  58. </el-form-item>
  59. </el-col>
  60. </el-row>
  61. </el-form>
  62. <el-alert
  63. style="padding: 16px;"
  64. title="注意:先在会员列表修改用户的关系链上级,再在这里修改,否则不生效!!"
  65. type="error">
  66. </el-alert>
  67. <el-table v-loading="listLoading" :data="list" stripe style="width: 100%">
  68. <el-table-column prop="pull_user_id" label="下级用户ID" align="center" width="100"></el-table-column>
  69. <el-table-column label="下级用户信息" width="300">
  70. <template slot-scope="scope">
  71. <com-image style="float: left;margin-right: 5px;" class="avatar_url" mode="aspectFill" :src="scope.row.pullUser.avatar_url ? scope.row.pullUser.avatar_url : '/resources/img/common/default-avatar.png'"></com-image>
  72. <div>{{scope.row.pullUser.nickname}}<br/>{{scope.row.pullUser.mobile}}</div>
  73. </template>
  74. </el-table-column>
  75. <el-table-column prop="original_pid" label="原推荐人ID" align="center" width="100"></el-table-column>
  76. <el-table-column label="原推荐人信息" width="300">
  77. <template slot-scope="scope">
  78. <div v-if="scope.row.originalUser">
  79. <com-image style="float: left;margin-right: 5px;" class="avatar_url" mode="aspectFill" :src="scope.row.originalUser.avatar_url ? scope.row.originalUser.avatar_url : '/resources/img/common/default-avatar.png'"></com-image>
  80. <div>{{scope.row.originalUser.nickname}}<br/>{{scope.row.originalUser.mobile}}</div>
  81. </div>
  82. <div v-else>
  83. <div>暂无</div>
  84. </div>
  85. </template>
  86. </el-table-column>
  87. <el-table-column prop="push_user_id" label="修改后推荐人ID" align="center" width="135"></el-table-column>
  88. <el-table-column label="修改后推荐人信息" width="300">
  89. <template slot-scope="scope">
  90. <com-image style="float: left;margin-right: 5px;" class="avatar_url" mode="aspectFill" :src="scope.row.pushUser.avatar_url ? scope.row.pushUser.avatar_url : '/resources/img/common/default-avatar.png'"></com-image>
  91. <div>{{scope.row.pushUser.nickname}}<br/>{{scope.row.pushUser.mobile}}</div>
  92. </template>
  93. </el-table-column>
  94. <el-table-column label="修改时间" prop="created_at" align="center">
  95. <template slot-scope="scope">
  96. {{scope.row.created_at|dateTimeFormat('Y-m-d H:i:s')}}
  97. </template>
  98. </el-table-column>
  99. </el-table>
  100. <div style="text-align: right;margin: 20px 0;">
  101. <el-pagination @current-change="pagination" background layout="prev, pager, next" :page-count="pageCount"></el-pagination>
  102. </div>
  103. </div>
  104. </el-card>
  105. <div style="text-align: right;margin: 20px 0;">
  106. <el-pagination @current-change="logPagination" background layout="prev, pager, next" :page-count="logPageCount"></el-pagination>
  107. </div>
  108. </el-dialog>
  109. <agent-edit v-model="edit.show"></agent-edit>
  110. <!-- 弹窗结束 -->
  111. </div>
  112. <script>
  113. const app = new Vue({
  114. el: '#app',
  115. data() {
  116. return {
  117. list: [],
  118. listLoading: false,
  119. page: 1,
  120. pageCount: 0,
  121. dialogVisible: false,
  122. logLoading: false,
  123. logList: [],
  124. logPage: 1,
  125. logPageCount: 0,
  126. log_user_id: 0,
  127. search: {
  128. pull_user_id: null,
  129. pull_mobile: null,
  130. push_user_id: null,
  131. push_mobile: null,
  132. start_at: null,
  133. end_at: null,
  134. },
  135. nickname: '',
  136. edit: {
  137. show: false,
  138. },
  139. level: {
  140. show: false,
  141. agent: null,
  142. },
  143. };
  144. },
  145. mounted: function () {
  146. this.getList();
  147. },
  148. methods: {
  149. pagination(currentPage) {
  150. let self = this;
  151. self.page = currentPage;
  152. self.getList();
  153. },
  154. getList() {
  155. let self = this;
  156. self.listLoading = true;
  157. let params = {
  158. r: 'double-copy/spread/index',
  159. page:self.page,
  160. };
  161. params = Object.assign(params, this.search);
  162. console.log(params)
  163. request({
  164. params: params,
  165. method: 'get',
  166. }).then(e => {
  167. self.listLoading = false;
  168. self.list = e.data.data.list.list;
  169. self.pageCount = e.data.data.list.page_count;
  170. }).catch(e => {
  171. console.log(e);
  172. });
  173. },
  174. logPagination(currentPage) {
  175. let self = this;
  176. self.logPage = currentPage;
  177. self.getLogList();
  178. },
  179. getLogList() {
  180. let self = this;
  181. self.logLoading = true;
  182. let params = {
  183. r: 'double-copy/pool/log',
  184. page:self.logPage,
  185. user_id:self.log_user_id,
  186. };
  187. request({
  188. params: params,
  189. method: 'get',
  190. }).then(e => {
  191. self.logLoading = false;
  192. self.logList = e.data.data.list;
  193. self.logPageCount = e.data.data.page_count;
  194. }).catch(e => {
  195. console.log(e);
  196. });
  197. },
  198. //搜索时间处理
  199. addTimeChange(v){
  200. this.search.start_at = v?v[0]:'';
  201. this.search.end_at = v?v[1]:'';
  202. },
  203. //清空搜索
  204. resetSearch() {
  205. this.search = {};
  206. this.getList();
  207. },
  208. editClick() {
  209. this.edit.show = true;
  210. },
  211. levelSuccess() {
  212. this.getList();
  213. },
  214. //搜索
  215. toSearch() {
  216. this.page = 1;
  217. this.getList();
  218. },
  219. send(params, url, callback = null) {
  220. let self = this;
  221. request({
  222. params: {
  223. r: url
  224. },
  225. data:params,
  226. method: 'post'
  227. }).then(e => {
  228. if (e.data.code == 0) {
  229. self.$message.success(e.data.msg);
  230. self.getList();
  231. } else {
  232. self.$message.error(e.data.msg);
  233. }
  234. if (callback) callback(e.data);
  235. }).catch(e => {
  236. console.log(e);
  237. });
  238. },
  239. }
  240. });
  241. </script>