income_records.blade.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. @extends('layouts.base')
  2. @section('title', '收入明细')
  3. @section('content')
  4. <link href="{{static_url('yunshop/css/member.css')}}" media="all" rel="stylesheet" type="text/css"/>
  5. <link href="{{static_url('yunshop/css/member.css')}}" media="all" rel="stylesheet" type="text/css"/>
  6. <link rel="stylesheet" type="text/css" href="{{static_url('yunshop/goods/vue-goods1.css')}}"/>
  7. <style>
  8. .content {
  9. background: #eff3f6;
  10. padding: 10px !important;
  11. }
  12. </style>
  13. <div id="app" v-cloak class="main">
  14. <div class="block">
  15. <div class="vue-head">
  16. <div class="vue-main-title" style="margin-bottom:20px">
  17. <div class="vue-main-title-left"></div>
  18. <div class="vue-main-title-content">明细管理</div>
  19. <div class="vue-main-title-button">
  20. </div>
  21. </div>
  22. <div class="vue-search">
  23. <el-form :inline="true" :model="search_form" class="demo-form-inline">
  24. <el-form-item label="">
  25. <el-input
  26. placeholder="会员ID"
  27. v-model="search_form.member_id"
  28. clearable>
  29. </el-input>
  30. </el-form-item>
  31. <el-form-item label="">
  32. <el-input
  33. placeholder="姓名/昵称/手机号"
  34. v-model="search_form.realname"
  35. clearable>
  36. </el-input>
  37. </el-form-item>
  38. <el-form-item label="">
  39. <el-select clearable v-model="search_form.class" placeholder="业务类型">
  40. <el-option
  41. v-for="(item,index) in income_type_comment"
  42. :key="item.index"
  43. :label="item.title"
  44. :value="item.class">
  45. </el-option>
  46. </el-select>
  47. </el-form-item>
  48. <el-form-item label="">
  49. <el-select clearable v-model="search_form.status" placeholder="提现状态">
  50. <el-option
  51. v-for="(item,index) in income_status"
  52. :key="item.index"
  53. :label="item.label"
  54. :value="item.value">
  55. </el-option>
  56. </el-select>
  57. </el-form-item>
  58. <el-form-item label="">
  59. <el-select clearable v-model="search_form.pay_status" placeholder="提现状态">
  60. <el-option
  61. v-for="(item,index) in pay_status"
  62. :key="item.index"
  63. :label="item.label"
  64. :value="item.value">
  65. </el-option>
  66. </el-select>
  67. </el-form-item>
  68. <el-form-item label="">
  69. <el-date-picker
  70. clearable
  71. value-format="timestamp"
  72. v-model="search_time"
  73. type="datetimerange"
  74. range-separator="至"
  75. start-placeholder="开始日期"
  76. end-placeholder="结束日期">
  77. </el-date-picker>
  78. </el-form-item>
  79. <el-form-item label="">
  80. <el-button type="primary" @click="search(1)">搜索</el-button>
  81. </el-form-item>
  82. <el-form-item label="">
  83. <el-button type="primary" @click="exportList()">导出 EXCEL</el-button>
  84. </el-form-item>
  85. </el-form>
  86. </div>
  87. </div>
  88. </div>
  89. <div style="background: #eff3f6;width:100%;height:15px;"></div>
  90. <div class="block">
  91. <div class="vue-main">
  92. <div class="vue-main-form">
  93. <div class="vue-main-title" style="margin-bottom:20px">
  94. <div class="vue-main-title-left"></div>
  95. <div class="vue-main-title-content">
  96. 明细列表
  97. <span style="margin-left:20px;font-size: 10px;font-weight: 0;color: #9b9da4">
  98. 总数:[[page_list.total]] &nbsp;
  99. 金额总合计:[[amount]]
  100. </span>
  101. </div>
  102. </div>
  103. <el-table :data="page_list.data" style="width: 100%">
  104. <el-table-column label="时间" align="center" prop="" width="auto">
  105. <template slot-scope="scope">
  106. [[scope.row.created_at]]
  107. </template>
  108. </el-table-column>
  109. <el-table-column label="会员ID" align="center" prop="" width="auto">
  110. <template slot-scope="scope">
  111. [[scope.row.member_id]]
  112. </template>
  113. </el-table-column>
  114. <el-table-column label="粉丝" align="center" prop="" width="auto">
  115. <template slot-scope="scope">
  116. <div>
  117. <el-image style='width:30px;height:30px;padding:1px;border:1px solid #ccc'
  118. :src="scope.row.member.avatar"
  119. alt="">
  120. </el-image>
  121. </div>
  122. <div>
  123. <el-button type="text" @click="memberNav(scope.row.member_id)">
  124. [[scope.row.member.nickname]]
  125. </el-button>
  126. </div>
  127. </template>
  128. </el-table-column>
  129. <el-table-column label="姓名/手机号" align="center" prop="" width="auto">
  130. <template slot-scope="scope">
  131. [[scope.row.member.realname]]<br>
  132. [[scope.row.member.mobile]]
  133. </template>
  134. </el-table-column>
  135. <el-table-column label="收入金额" align="center" prop="" width="auto">
  136. <template slot-scope="scope">
  137. [[scope.row.amount]]
  138. </template>
  139. </el-table-column>
  140. <el-table-column label="业务类型" align="center" prop="" width="auto">
  141. <template slot-scope="scope">
  142. [[scope.row.type_name]]
  143. </template>
  144. </el-table-column>
  145. <el-table-column label="提现状态" align="center" prop="" width="auto">
  146. <template slot-scope="scope">
  147. [[scope.row.status_name]]
  148. </template>
  149. </el-table-column>
  150. <el-table-column label="打款状态" align="center" prop="" width="auto">
  151. <template slot-scope="scope">
  152. [[scope.row.pay_status_name]]
  153. </template>
  154. </el-table-column>
  155. </el-table>
  156. </div>
  157. </div>
  158. </div>
  159. <!-- 分页 -->
  160. <div class="vue-page">
  161. <el-row>
  162. <el-col align="right">
  163. <el-pagination layout="prev, pager, next,jumper" @current-change="search" :total="total"
  164. :page-size="per_page" :current-page="current_page" background
  165. ></el-pagination>
  166. </el-col>
  167. </el-row>
  168. </div>
  169. </div>
  170. <script>
  171. var vm = new Vue({
  172. el: '#app',
  173. // 防止后端冲突,修改ma语法符号
  174. delimiters: ['[[', ']]'],
  175. data() {
  176. return {
  177. search_form: {
  178. status: '',
  179. member_id: '',
  180. realname: '',
  181. class: '',
  182. pay_status: '',
  183. time: {
  184. start: 0,
  185. end: 0
  186. }
  187. },
  188. page_list: {},
  189. total: 0,
  190. per_page: 0,
  191. current_page: 0,
  192. pageSize: 0,
  193. amount: 0,
  194. income_status: [
  195. {
  196. value: 0,
  197. label: '未提现'
  198. },
  199. {
  200. value: 1,
  201. label: '已提现'
  202. },
  203. ],
  204. pay_status: [
  205. {
  206. value: -1,
  207. label: '无效'
  208. },
  209. {
  210. value: 0,
  211. label: '未审核'
  212. },
  213. {
  214. value: 1,
  215. label: '未打款'
  216. },
  217. {
  218. value: 2,
  219. label: '已打款'
  220. },
  221. {
  222. value: 3,
  223. label: '已驳回'
  224. },
  225. ],
  226. income_type_comment: [],
  227. search_time: []
  228. }
  229. },
  230. created() {
  231. this.getData(1)
  232. },
  233. //定义全局的方法
  234. beforeCreate() {
  235. },
  236. filters: {},
  237. methods: {
  238. getData(page) {
  239. let search = this.search_form
  240. if (this.search_time) {
  241. search.time.start = this.search_time[0] ? this.search_time[0] : ''
  242. search.time.end = this.search_time[1] ? this.search_time[1] : ''
  243. } else {
  244. search.time.start = ''
  245. search.time.end = ''
  246. }
  247. let loading = this.$loading({
  248. target: document.querySelector(".content"),
  249. background: 'rgba(0, 0, 0, 0)'
  250. });
  251. this.$http.post('{!! yzWebFullUrl('income.income-records.index') !!}', {
  252. search: search,
  253. page: page
  254. }).then(function (response) {
  255. if (response.data.result) {
  256. this.page_list = response.data.data.pageList
  257. this.search_form = response.data.data.search
  258. this.total = response.data.data.pageList.total
  259. this.per_page = response.data.data.pageList.per_page
  260. this.current_page = response.data.data.pageList.current_page
  261. this.income_type_comment = response.data.data.income_type_comment
  262. this.amount = response.data.data.amount
  263. loading.close();
  264. } else {
  265. this.$message({
  266. message: response.data.msg,
  267. type: 'error'
  268. });
  269. }
  270. loading.close();
  271. }, function (response) {
  272. this.$message({
  273. message: response.data.msg,
  274. type: 'error'
  275. });
  276. loading.close();
  277. });
  278. },
  279. search(page) {
  280. this.getData(page)
  281. },
  282. memberNav(uid) {
  283. let url = '{!! yzWebFullUrl('member.member.detail') !!}';
  284. window.open(url + "&id=" + uid)
  285. },
  286. exportList() {
  287. let that = this;
  288. console.log(that.search_form);
  289. let json = {
  290. realname: that.search_form.realname,
  291. pay_status: that.search_form.pay_status,
  292. status: that.search_form.status,
  293. member_id: that.search_form.member_id,
  294. class:that.search_form.class,
  295. time: [this.search_time[0] ? this.search_time[0] : '', this.search_time[1] ? this.search_time[1] : '']
  296. };
  297. let url = '{!! yzWebFullUrl('income.income-records.export') !!}';
  298. for (let i in json) {
  299. if (json[i] || json[i] === 0) {
  300. if (i === 'time') {
  301. if(json[i][0] && json[i][1]) {
  302. url += "&search[" + i + "]=" + json[i]
  303. }
  304. } else {
  305. url += "&search[" + i + "]=" + json[i]
  306. }
  307. }
  308. }
  309. window.location.href = url;
  310. },
  311. },
  312. })
  313. </script>
  314. @endsection