index.blade.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. @extends('layouts.app')
  2. @section('title')客单件报表@endsection
  3. @section('content')
  4. <div class="d-none" id="list">
  5. <!--查询 -->
  6. <div class="row m-3" style="background-color: #fff;">
  7. <!--货主名称-->
  8. <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="货主名称">
  9. <input v-model="search.customerName" class="form-control" type="text" placeholder="货主名称">
  10. </div>
  11. <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="起始日期">
  12. <input v-model="search.startTime" class="form-control" type="date" step="01">
  13. </div>
  14. <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="截止日期">
  15. <input v-model="search.endTime" class="form-control" type="date" step="01">
  16. </div>
  17. <div class="form-group m-2">
  18. <button class="form-control btn btn-sm btn-info" @click="searchData()">查询</button>
  19. </div>
  20. <div class="form-group m-2">
  21. <button class="form-control btn btn-sm btn-success" @click="downExcel()">导出EXCEL</button>
  22. </div>
  23. </div>
  24. <!-- 导出-->
  25. <span class="dropdown"></span>
  26. <!-- 表格-->
  27. <table class="table table-striped table-bordered table-hover text-nowrap waybill-table td-min-width-80"
  28. style="background: #fff;" id="table">
  29. <tr v-for="(item,i) in details.data" :key="i">
  30. <td class="td-warm text-muted"><span>@{{ i+1 }}</span></td>
  31. <td class="td-warm text-muted"><span>@{{ item.customerName }}</span></td>
  32. <td class="td-warm text-muted"><span>@{{ item.case1Amount }}</span></td>
  33. <td class="td-warm text-muted"><span>@{{ item.case2Amount }}</span></td>
  34. <td class="td-warm text-muted"><span>@{{ item.case3Amount }}</span></td>
  35. <td class="td-warm text-muted"><span>@{{ item.case4Amount }}</span></td>
  36. <td class="td-warm text-muted"><span>@{{ item.case5Amount }}</span></td>
  37. <td class="td-warm text-muted"><span>@{{ item.case6Amount }}</span></td>
  38. <td class="td-warm text-muted"><span>@{{ item.case7Amount }}</span></td>
  39. <td class="td-warm text-muted"><span>@{{ item.case8Amount }}</span></td>
  40. <td class="td-warm text-muted"><span>@{{ item.moreThan9Amount }}</span></td>
  41. <td class="td-warm text-muted"><span>@{{ item.avg }}</span></td>
  42. </tr>
  43. </table>
  44. </div>
  45. @endsection
  46. @section('lastScript')
  47. <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>{{--新版2--}}
  48. <script>
  49. let vue = new Vue({
  50. el: "#list",
  51. data: {
  52. selectTr: null,
  53. details: {
  54. data: [],
  55. },
  56. search: {
  57. startTime: null,
  58. endTime: null,
  59. customerName: null,
  60. customerCodes: {!! $ownerCodes !!}
  61. },
  62. },
  63. created() {
  64. this.initSearchDate();
  65. this.pagination();
  66. },
  67. mounted: function () {
  68. $('#list').removeClass('d-none');
  69. let column = [
  70. {name: 'customerName', value: '货主名称'},
  71. {name: 'case1Amount', value: '1pcs'},
  72. {name: 'case2Amount', value: '2pcs'},
  73. {name: 'case3Amount', value: '3pcs'},
  74. {name: 'case4Amount', value: '4pcs'},
  75. {name: 'case5Amount', value: '5pcs'},
  76. {name: 'case6Amount', value: '6pcs'},
  77. {name: 'case7Amount', value: '7pcs'},
  78. {name: 'case8Amount', value: '8pcs'},
  79. {name: 'moreThan9Amount', value: '>=9pcs'},
  80. {name: 'avg', value: '单均客单数'}
  81. ];
  82. new Header({
  83. el: "table",
  84. name: "details",
  85. column: column,
  86. data: this.details.data,
  87. restorationColumn: 'addtime',
  88. fixedTop: ($('#form_div').height()) + ($('#btn').height()) + 1,
  89. }).init();
  90. },
  91. methods: {
  92. //初始化日期为今天和昨天
  93. initSearchDate() {
  94. let day1 = new Date();
  95. day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
  96. let s1 = day1.getFullYear() + "-" + ((day1.getMonth() + 1) >= 10 ? (day1.getMonth() + 1) : ('0' + (day1.getMonth() + 1))) + "-" + (day1.getDate() >= 10 ? day1.getDate() : ('0' + day1.getDate()));
  97. //今天的时间
  98. let day2 = new Date();
  99. day2.setTime(day2.getTime());
  100. let s2 = day2.getFullYear() + "-" + ((day2.getMonth() + 1) >= 10 ? (day2.getMonth() + 1) : ('0' + (day2.getMonth() + 1))) + "-" + (day2.getDate() >= 10 ? day2.getDate() : ('0' + day2.getDate()));
  101. this.search.startTime = s1;
  102. this.search.endTime = s2;
  103. },
  104. //根据环境获取不同的url
  105. getBaseUrl() {
  106. let url = null;
  107. let env = "{{ config('app.env') }}";
  108. if (env === 'local') {
  109. url = 'http://127.0.0.1:8111'
  110. } else if (env === 'production') {
  111. url = 'https://stat.baoshi56.com'
  112. }
  113. return url;
  114. },
  115. getSearchDate() {
  116. let search = Object.assign({}, this.search);
  117. search.startTime += ' 00:00:00';
  118. search.endTime += ' 00:00:00';
  119. return search;
  120. },
  121. searchData() {
  122. this.pagination();
  123. },
  124. pagination() {
  125. tempTip.showSuccess('开始查询,请稍后!');
  126. let url = this.getBaseUrl() + '/api/report/customerOrderQty/listGrouped';
  127. axios.post(url, this.getSearchDate()).then(res => {
  128. if (res.data.data === undefined) {
  129. this.details.data = [];
  130. } else {
  131. tempTip.showSuccess('查询成功!');
  132. this.details.data = res.data.data;
  133. }
  134. });
  135. },
  136. downExcel() {
  137. let url = this.getBaseUrl();
  138. url += '/api/report/scanInfo/export';
  139. let search = this.getSearch();
  140. axios.post(url, search).then(res => {
  141. if (res.data.code === 200) {
  142. let filename = res.data.data;
  143. let downUrl = this.getBaseUrl() + '/api/report/scanInfo/export/' + filename;
  144. let link = document.createElement('a');
  145. link.style.display = 'none';
  146. link.href = downUrl;
  147. link.download = `${filename}.xlsx`;
  148. document.body.appendChild(link);
  149. link.click();
  150. document.body.removeChild(link);
  151. tempTip.showSuccess('导出成功!');
  152. } else {
  153. tempTip.setDuration(3000);
  154. tempTip.show(res.data.data);
  155. }
  156. })
  157. }
  158. },
  159. });
  160. </script>
  161. @endsection