agent_log.blade.php 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. @extends('layouts.base')
  2. @section('content')
  3. @section('title', trans('升级日志'))
  4. <link rel="stylesheet" type="text/css" href="{{static_url('yunshop/goods/vue-goods1.css')}}"/>
  5. <style>
  6. #log_content .el-row {
  7. margin-bottom: 20px;
  8. &:last-child {
  9. margin-bottom: 0;
  10. }
  11. }
  12. #log_content .count {
  13. color:#8B92AD;
  14. margin-left: 15px;
  15. }
  16. </style>
  17. <div class="all">
  18. <div id='log_content' >
  19. <!-- 搜索栏 -->
  20. <div class="vue-head">
  21. <div class="vue-main-title">
  22. <div class="vue-main-title-left"></div>
  23. <div class="vue-main-title-content">升级日志</div>
  24. </div>
  25. <el-form ref="form" label-width="15%">
  26. <div class="vue-main-form">
  27. <el-row :gutter="10">
  28. <el-col :span="5">
  29. <el-input v-model="searchParams.id" placeholder="会员ID" clearable></el-input>
  30. </el-col>
  31. <el-col :span="5">
  32. <el-input v-model="searchParams.info" placeholder="会员昵称/姓名/手机号" clearable></el-input>
  33. </el-col>
  34. <el-col :span="4">
  35. <el-select v-model="searchParams.beforeLevel" placeholder="升级前等级" clearable>
  36. <el-option label="默认等级" value="-1"></el-option>
  37. <el-option :label="level.name" :value="level.id" v-for="level in levels" :key="level.id" ></el-option>
  38. </el-select>
  39. </el-col>
  40. <el-col :span="4">
  41. <el-select v-model="searchParams.afterLevel" placeholder="升级后等级" clearable>
  42. <el-option label="默认等级" value="-1"></el-option>
  43. <el-option :label="level.name" :value="level.id" v-for="level in levels" :key="level.id" ></el-option>
  44. </el-select>
  45. </el-col>
  46. </el-row>
  47. <el-row>
  48. <el-col :span="12">
  49. <el-date-picker
  50. v-model="searchParams.timeRange"
  51. type="datetimerange"
  52. range-separator="至"
  53. start-placeholder="开始日期"
  54. end-placeholder="结束日期">
  55. </el-date-picker>
  56. <el-button type="primary" @click="searchForm">搜索</el-button>
  57. </el-col>
  58. </el-row>
  59. </div>
  60. </el-form>
  61. </div>
  62. <!-- 表格列表 -->
  63. <div class="vue-head">
  64. <div class="vue-main-title">
  65. <div class="vue-main-title-left"></div>
  66. <div class="vue-main-title-content">
  67. <span>升级列表</span>
  68. <span class="count">总数:[[orderPagination.total]]</span>
  69. </div>
  70. </div>
  71. <el-table :data="tableData" v-loading="table_loading" v-loading="table_loading">
  72. <el-table-column label="会员ID" prop="member.uid" fixed align="center">
  73. </el-table-column>
  74. <el-table-column label="时间" prop="created_at" align="center">
  75. </el-table-column>
  76. <el-table-column label="会员" prop="avatar" align="center">
  77. <template slot-scope="scope">
  78. <div v-if="scope.row.member">
  79. <img :src="scope.row.member.avatar" alt="" style="width:40px;height:40px;border-radius:50%">
  80. <div>[[scope.row.member.nickname]]</div>
  81. </div>
  82. </template>
  83. </el-table-column>
  84. <el-table-column label="升级前等级" align="center">
  85. <template slot-scope="scope">
  86. <div v-if="scope.row.before_level">
  87. <div>ID:[[scope.row.before_level.id]] </div>
  88. <div>[[scope.row.before_level.name]] </div>
  89. <el-link type="primary" @click="toLevelEdit(scope.row.before_level.id)">等级设置</el-link>
  90. </div>
  91. <div v-else>默认等级</div>
  92. </template>
  93. </el-table-column>
  94. <el-table-column label="升级后等级" prop="title" align="center">
  95. <template slot-scope="scope">
  96. <div v-if="scope.row.after_level">
  97. <div>ID:[[scope.row.after_level.id]] </div>
  98. <div>[[scope.row.after_level.name]] </div>
  99. <el-link type="primary" @click="toLevelEdit(scope.row.after_level.id)">等级设置</el-link>
  100. </div>
  101. <div v-else>默认等级</div>
  102. </template>
  103. </el-table-column>
  104. <el-table-column label="升级方式" prop="mold" align="center">
  105. </el-table-column>
  106. <el-table-column label="升级类型" prop="type" align="center">
  107. </el-table-column>
  108. <el-table-column label="操作" prop="created_at" align="center">
  109. <template slot-scope="scope">
  110. <div>
  111. <el-link type="primary" @click="toRecord(scope.row.id)">达成记录</el-link>
  112. </div>
  113. </template>
  114. </el-table-column>
  115. </el-table>
  116. <div class="vue-page">
  117. <el-pagination style="text-align: right;" layout="prev, pager, next,jumper"
  118. :total="orderPagination.total" :current-page.sync="orderPagination.pages" :page-size="orderPagination.limit"
  119. @current-change="getData"
  120. ></el-pagination>
  121. </div>
  122. </div>
  123. </div>
  124. </div>
  125. <script language='javascript'>
  126. const Levels={!!json_encode($levels)!!};
  127. const UrlStr = "{!! yzWebFullUrl('plugin.commission.admin.agent-log.search-datas') !!}"; // 日志列表请求接口
  128. const levelEditUrl = "{!! yzWebFullUrl('plugin.commission.admin.level.edit') !!}"; // 分销商等级修改页
  129. const recordUrl = "{!! yzWebFullUrl('plugin.commission.admin.agent-log.record') !!}"; // 分销商等级修改页
  130. new Vue({
  131. el: "#log_content",
  132. delimiters: ["[[", "]]"],
  133. data: {
  134. tableData: [],
  135. levels: Levels,
  136. table_loading: false,
  137. searchParams: {
  138. id: '',
  139. info: '',
  140. beforeLevel: '',
  141. afterLevel: '',
  142. timeRange: []
  143. },
  144. orderPagination: {
  145. pages: 1,
  146. limit: 15,
  147. total: 50,
  148. },
  149. },
  150. mounted () {
  151. this.getData();
  152. },
  153. methods: {
  154. getData (page = this.orderPagination.pages) {
  155. let requestParams = {
  156. uid: this.searchParams.id,
  157. member: this.searchParams.info,
  158. before_level_id: this.searchParams.beforeLevel,
  159. after_level_id: this.searchParams.afterLevel,
  160. };
  161. if (this.searchParams.timeRange && this.searchParams.timeRange.length > 1) {
  162. requestParams.time = {};
  163. requestParams.time["start"] = this.searchParams.timeRange[0] / 1000;
  164. requestParams.time["end"] = this.searchParams.timeRange[1] / 1000;
  165. }
  166. this.table_loading = true;
  167. this.fetchData(UrlStr, {
  168. page,
  169. search: requestParams
  170. }).then(respone => {
  171. this.table_loading = false;
  172. let {data, total, per_page} = respone.data;
  173. this.tableData = data;
  174. this.orderPagination.total = total;
  175. this.orderPagination.limit = per_page;
  176. }).catch(() => {
  177. this.table_loading = false;
  178. })
  179. },
  180. searchForm () {
  181. this.orderPagination.pages = 1;
  182. this.getData();
  183. },
  184. toLevelEdit (levelId) {
  185. window.location.href = levelEditUrl + "&id=" + levelId;
  186. },
  187. toRecord (recordId) {
  188. window.location.href = recordUrl + "&id=" + recordId;
  189. },
  190. fetchData(URL, requestParams) {
  191. return new Promise((resolve, reject) => {
  192. this.$http
  193. .post(URL, requestParams)
  194. .then(function (response) {
  195. return response.json();
  196. })
  197. .then(({ result, data, msg }) => {
  198. if (result == 0) {
  199. this.$message({
  200. message: msg,
  201. type: "error",
  202. });
  203. reject({ result, data, msg });
  204. }
  205. resolve({ result, data, msg});
  206. })
  207. .catch((err) => {
  208. reject(err);
  209. });
  210. });
  211. },
  212. },
  213. });
  214. </script>
  215. @endsection