log.blade.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. @extends('layouts.base')
  2. @section('title', '奖励记录')
  3. @section('content')
  4. <link rel="stylesheet" type="text/css" href="{{static_url('yunshop/goods/vue-goods1.css')}}"/>
  5. <style>
  6. .vue-main{background: #eff3f6;}
  7. /* 导航 */
  8. .el-radio-button .el-radio-button__inner,.el-radio-button:first-child .el-radio-button__inner {border-radius: 4px 4px 4px 4px;border-left: 0px;}
  9. .el-radio-button__inner{border:0;}
  10. .el-radio-button:last-child .el-radio-button__inner {border-radius: 4px 4px 4px 4px;}
  11. </style>
  12. <div class="all">
  13. <div id="app" v-cloak>
  14. <div class="vue-head">
  15. <el-radio-group v-model="level_type" @change="gotoOther">
  16. <el-radio-button label="0" >会员等级奖励记录</el-radio-button>
  17. <el-radio-button label="1" >分销等级奖励记录</el-radio-button>
  18. <el-radio-button label="3" >小程序广告奖励记录</el-radio-button>
  19. </el-radio-group>
  20. </div>
  21. <div class="vue-head">
  22. <div class="vue-main-title" style="margin-bottom:20px">
  23. <div class="vue-main-title-left"></div>
  24. <div class="vue-main-title-content">奖励记录</div>
  25. </div>
  26. <div class="vue-search">
  27. <el-form :inline="true" :model="search_form" class="demo-form-inline">
  28. <el-form-item label="">
  29. <el-input v-model="search_form.member" placeholder="会员昵称/姓名/手机号"></el-input>
  30. </el-form-item>
  31. <el-form-item label="">
  32. <el-input v-model="search_form.member_id" placeholder="会员ID"></el-input>
  33. </el-form-item>
  34. <el-select v-model="search_form.reward_code" filterable clearable placeholder="获得方式">
  35. <el-option label="观看奖励" value="0"></el-option>
  36. <el-option label="上级奖励" value="1"></el-option>
  37. </el-select>
  38. <el-select v-model="search_form.reward_type" filterable clearable placeholder="奖励类型">
  39. <el-option label="积分" value="0"></el-option>
  40. <el-option label="爱心值" value="1"></el-option>
  41. </el-select>
  42. <el-select v-model="search_form.is_time" filterable clearable placeholder="是否搜索时间">
  43. <el-option label="时间不限" value="0"></el-option>
  44. <el-option label="搜索时间" value="1"></el-option>
  45. </el-select>
  46. <el-form-item label="">
  47. <el-date-picker
  48. @change="btnChange"
  49. v-model="times"
  50. type="datetimerange"
  51. value-format="yyyy-MM-dd HH:mm:ss"
  52. range-separator="至"
  53. start-placeholder="开始日期"
  54. end-placeholder="结束日期"
  55. style="margin-left:5px;"
  56. align="right">
  57. </el-date-picker>
  58. </el-form-item>
  59. <el-form-item label="">
  60. <el-button type="primary" @click="search(1)">搜索</el-button>
  61. {{--<el-button @click="export1()">导出</el-button>--}}
  62. </el-form-item>
  63. </el-form>
  64. </div>
  65. </div>
  66. <div class="vue-main">
  67. <div class="vue-main-form">
  68. <div class="vue-main-title" style="margin-bottom:20px">
  69. <div class="vue-main-title-left"></div>
  70. <div class="vue-main-title-content" style="flex:0 0 90px">记录列表</div>
  71. </div>
  72. <el-table :data="list" style="width: 100%">
  73. <el-table-column label="时间" align="center" prop="created_at">
  74. </el-table-column>
  75. <el-table-column label="会员ID" align="center" prop="member_id">
  76. </el-table-column>
  77. <el-table-column label="会员" align="center" prop="title" >
  78. <template slot-scope="scope">
  79. <a v-bind:href="'{{ yzWebUrl('member.member.detail', array('id' => '')) }}'+[[scope.row.member_id]]"
  80. target="_blank">
  81. <div v-if="scope.row.has_one_member">
  82. <el-image :src="scope.row.has_one_member.avatar_image" alt="" style="width:40px;height:40px;border-radius:50%"></el-image>
  83. </div>
  84. {{--<img v-bind:src="scope.row.has_one_member.avatar"--}}
  85. {{--style='width:30px;height:30px;padding:1px;border:1px solid #ccc'>--}}
  86. <br/>[[scope.row.has_one_member ? scope.row.has_one_member.nickname : '' ]]
  87. </a>
  88. </template>
  89. </el-table-column>
  90. <el-table-column label="会员等级" align="center" prop="level_name" v-if="this.level_type == 0">
  91. <template slot-scope="scope">
  92. <div v-if="scope.row.has_one_level">
  93. [[scope.row.has_one_level ? scope.row.has_one_level.level_name : '' ]]
  94. </div>
  95. <div v-else>
  96. 默认等级
  97. </div>
  98. </template>
  99. </el-table-column>
  100. <el-table-column label="会员分销等级" align="center" prop="name" v-if="this.level_type == 1">
  101. <template slot-scope="scope">
  102. <div v-if="scope.row.has_one_agent_level">
  103. [[scope.row.has_one_agent_level ? scope.row.has_one_agent_level.name : '' ]]
  104. </div>
  105. <div v-else>
  106. 默认等级
  107. </div>
  108. </template>
  109. </el-table-column>
  110. <el-table-column label="获得方式" align="center" prop="reward_name">
  111. </el-table-column>
  112. <el-table-column label="奖励数量" align="center" prop="amount">
  113. </el-table-column>
  114. <el-table-column label="奖励方式" align="center" prop="reward_type_name">
  115. </el-table-column>
  116. <el-table-column label="备注" align="center" prop="remark">
  117. </el-table-column>
  118. </el-table>
  119. </div>
  120. </div>
  121. <!-- 分页 -->
  122. <div class="vue-page" v-if="total>0">
  123. <el-row>
  124. <el-col align="right">
  125. <el-pagination layout="prev, pager, next,jumper" @current-change="search" :total="total"
  126. :page-size="per_page" :current-page="current_page" background
  127. ></el-pagination>
  128. </el-col>
  129. </el-row>
  130. </div>
  131. </div>
  132. </div>
  133. <script>
  134. var app = new Vue({
  135. el: "#app",
  136. delimiters: ['[[', ']]'],
  137. name: 'test',
  138. data() {
  139. return {
  140. level_type:0,
  141. list:[],
  142. search_form:{},
  143. times:[],
  144. // 统计
  145. total: 0,
  146. rules: {},
  147. current_page:1,
  148. per_page:1,
  149. star:'',
  150. end:'',
  151. date:[],
  152. flight_time:[],
  153. }
  154. },
  155. created() {
  156. },
  157. mounted() {
  158. this.getData(1);
  159. },
  160. methods: {
  161. btnChange(data){
  162. this.date = data
  163. console.log(data)
  164. },
  165. getData(page) {
  166. let json = {
  167. page:page,
  168. search:{
  169. member:this.search_form.member,
  170. member_id:this.search_form.member_id,
  171. reward_code:this.search_form.reward_code,
  172. reward_type:this.search_form.reward_type,
  173. is_time:this.search_form.is_time,
  174. time_range:{},
  175. level_type:this.level_type,
  176. }
  177. };
  178. if(this.times && this.times.length>0) {
  179. json.search.time_range.start = this.times[0];
  180. json.search.time_range.end = this.times[1];
  181. }
  182. const transformTimestamp = (timestamp) => {
  183. const date = new Date(timestamp);
  184. const Y = date.getFullYear() + '-';
  185. const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
  186. const D = date.getDate() + ' ';
  187. const h = date.getHours() + ':';
  188. const m = date.getMinutes();
  189. const s = date.getSeconds(); // 秒
  190. const dateString = Y + M + D;
  191. return dateString;
  192. }
  193. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  194. this.$http.post('{!! yzWebFullUrl('plugin.flyers-advertise.admin.reward-log.index') !!}',json).then(function(response) {
  195. if (response.data.result) {
  196. this.list = response.data.data.data;
  197. this.list.forEach(item => {
  198. item.flight_time = transformTimestamp(item.flight_time * 1000)
  199. // this.flight_time.push(transformTimestamp(item.flight_time * 1000))
  200. // console.log(item.flight_time);
  201. })
  202. console.log(this.flight_time);
  203. // this.flight_time = transformTimestamp(this.list.flight_time);
  204. this.current_page=response.data.data.current_page;
  205. this.total=response.data.data.total;
  206. this.per_page=response.data.data.per_page;
  207. loading.close();
  208. } else {
  209. this.$message({
  210. message: response.data.msg,
  211. type: 'error'
  212. });
  213. }
  214. loading.close();
  215. }, function(response) {
  216. this.$message({
  217. message: response.data.msg,
  218. type: 'error'
  219. });
  220. loading.close();
  221. });
  222. },
  223. search(val) {
  224. this.getData(val);
  225. },
  226. // 查看角色
  227. showForm(item) {
  228. let link = `{!! yzWebFullUrl('plugin.flyers-advertise.admin.reward-log.detail') !!}`+`&id=`+item.id;
  229. window.location.href = link;
  230. },
  231. export1(){
  232. console.log(this.search_form);
  233. var url = "{!! yzWebFullUrl('plugin.flyers-advertise.admin.reward-log.export') !!}";
  234. if (this.search_form.member) {
  235. url += "&search[member]="+this.search_form.member;
  236. }
  237. if (this.search_form.member_id) {
  238. url += "&search[member_id]="+this.search_form.member_id;
  239. }
  240. if (this.search_form.is_time) {
  241. url += "&search[is_time]="+this.search_form.is_time;
  242. }
  243. if (this.date.length > 1) {
  244. url += "&search[time_range][start]="+this.date[0];
  245. }
  246. if (this.date.length > 1) {
  247. url += "&search[time_range][end]="+this.date[1];
  248. }
  249. console.log(url);
  250. window.location.href = url;
  251. },
  252. gotoOther(type) {
  253. this.level_type = type;
  254. this.getData(1);
  255. },
  256. },
  257. })
  258. </script>
  259. @endsection