index.blade.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. @extends('layouts.app')
  2. @section('title')KPI-日报表@endsection
  3. @section('content')
  4. <div class="d-none" id="list">
  5. <!--查询 -->
  6. <div class="row m-3" style="background-color: #fff;">
  7. <div class="form-group m-2">
  8. <select class="form-control selectpicker" title="分页大小" v-model="size">
  9. <option value="50">50</option>
  10. <option value="100">100</option>
  11. <option value="200">200</option>
  12. <option value="500">500</option>
  13. <option value="1000">1000</option>
  14. </select>
  15. </div>
  16. <div class="form-group m-2" style="max-width: 200px !important;">
  17. <select v-model="search.customerCodeList" class="selectpicker form-control" multiple title="选择货主"
  18. data-actions-box="true"
  19. data-live-search="true"
  20. data-live-search-placeholder="搜索"
  21. >
  22. <option v-for="(v,k) of owners" :value="v.id" :key="v.id">@{{ v.name }}</option>
  23. </select>
  24. </div>
  25. <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="起始日期">
  26. <input v-model="search.startDate" class="form-control" type="date">
  27. </div>
  28. <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="截止日期">
  29. <input v-model="search.endDate" class="form-control" type="date">
  30. </div>
  31. <div class="form-group m-2">
  32. <button class="form-control btn btn-sm btn-info" @click="searchData()">查询</button>
  33. </div>
  34. <div class="form-group m-2">
  35. <button class="form-control btn btn-sm btn-success" @click="resetSearch()">重置</button>
  36. </div>
  37. </div>
  38. <!-- 导出-->
  39. <span class="dropdown"></span>
  40. {{-- <h3>2021</h3>--}}
  41. <!-- 表格-->
  42. <table class="table table-striped table-bordered table-hover text-nowrap waybill-table td-min-width-80"
  43. style="background: #fff;" id="table">
  44. <tr v-for="(item,i) in details.data" :key="i">
  45. <td><input class="checkItem" type="checkbox" :value="item.id"></td>
  46. <td class="td-warm text-muted"><span>@{{ item.customerName }}</span></td>
  47. <td class="td-warm text-muted"><span>@{{ item.statTime.slice(0,10) }}</span></td>
  48. <td class="td-warm text-muted"><span>@{{ item.b2bck }}</span></td>
  49. <td class="td-warm text-muted"><span>@{{ item.jyck }}</span></td>
  50. <td class="td-warm text-muted"><span>@{{ item.qtck }}</span></td>
  51. <td class="td-warm text-muted"><span>@{{ item.jitck }}</span></td>
  52. <td class="td-warm text-muted"><span>@{{ item.hhck }}</span></td>
  53. <td class="td-warm text-muted"><span>@{{ item.ptck }}</span></td>
  54. <td class="td-warm text-muted"><span>@{{ item.f4ck }}</span></td>
  55. <td class="td-warm text-muted"><span>@{{ item.f21ck }}</span></td>
  56. <td class="td-warm text-muted"><span>@{{ item.f11ck }}</span></td>
  57. <td class="td-warm text-muted"><span>@{{ item.f1ck }}</span></td>
  58. <td class="td-warm text-muted"><span>@{{ item.xnck }}</span></td>
  59. <td class="td-warm text-muted"><span>@{{ item.bfck }}</span></td>
  60. <td class="td-warm text-muted"><span>@{{ item.dbck }}</span></td>
  61. <td class="td-warm text-muted"><span>@{{ item.cgth }}</span></td>
  62. <td class="td-warm text-muted"><span>@{{ item.xsck }}</span></td>
  63. <td class="td-warm text-muted"><span>@{{ item.cgrk }}</span></td>
  64. <td class="td-warm text-muted"><span>@{{ item.thrk }}</span></td>
  65. <td class="td-warm text-muted"><span>@{{ item.dbrk }}</span></td>
  66. <td class="td-warm text-muted"><span>@{{ item.xnrk }}</span></td>
  67. <td class="td-warm text-muted"><span>@{{ item.f31rk }}</span></td>
  68. <td class="td-warm text-muted"><span>@{{ item.f10rk }}</span></td>
  69. <td class="td-warm text-muted"><span>@{{ item.f21rk }}</span></td>
  70. <td class="td-warm text-muted"><span>@{{ item.f32rk }}</span></td>
  71. <td class="td-warm text-muted"><span>@{{ item.hhrk }}</span></td>
  72. <td class="td-warm text-muted"><span>@{{ item.cskc }}</span></td>
  73. <td class="td-warm text-muted"><span>@{{ item.qtrk }}</span></td>
  74. <td class="td-warm text-muted"><span>@{{ item.b2brk }}</span></td>
  75. <td class="td-warm text-muted"><span>@{{ item.rejectedOrder }}</span></td>
  76. <td class="td-warm text-muted"><span>@{{ item.rejectedCommodity }}</span></td>
  77. </tr>
  78. </table>
  79. <nav aria-label="...">
  80. <ul class="pagination">
  81. <li class="page-item" :class="current===1?'disabled':''">
  82. <button class="page-link" @click="pagination('pre')">上一页</button>
  83. </li>
  84. <li class="page-item" :class="current===details.pages?'disabled':''">
  85. <button class="page-link" @click="pagination('next')">下一页</button>
  86. </li>
  87. </ul>
  88. </nav>
  89. </div>
  90. @endsection
  91. @section('lastScript')
  92. <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>{{--新版2--}}
  93. <script>
  94. let vue = new Vue({
  95. el: "#list",
  96. data: {
  97. owners: [
  98. @foreach($owners as $owner)
  99. {
  100. name: '{{$owner->name}}', id: '{{$owner->id}}', code: '{{$owner->code}}'
  101. },
  102. @endforeach
  103. ],
  104. selectTr: '',
  105. details: {
  106. data: [],
  107. total: null,
  108. current: null,
  109. pages: null,
  110. size: null
  111. },
  112. size: 50,
  113. current: 1,
  114. search: {
  115. startDate: '',
  116. endDate: '',
  117. customerCodeList: [],
  118. customerIdList: [@foreach($owners as $owner){{$owner->id}},@endforeach],
  119. }
  120. },
  121. created() {
  122. let url = this.getBaseUrl();
  123. url += `/api/deliver/getDayDetailCustomerPage?size=${this.size}&current=${this.current}`;
  124. axios.post(url, this.search).then(res => {
  125. this.details.data = res.data.data.list;
  126. this.details.total = res.data.data.page.total;
  127. this.details.current = res.data.data.page.pageNum;
  128. this.details.pages = res.data.data.page.pages
  129. this.details.size = res.data.data.page.pageSize;
  130. });
  131. },
  132. mounted: function () {
  133. $('#list').removeClass('d-none');
  134. this.rendingHeader();
  135. },
  136. methods: {
  137. resetSearch() {
  138. this.current = 1;
  139. this.size = 50;
  140. this.search = {
  141. startDate: '',
  142. endDate: '',
  143. customerCodeList: [],
  144. }
  145. },
  146. searchData() {
  147. this.current = 1;
  148. this.pagination();
  149. },
  150. cal_deliver_percentage(item) {
  151. if (item.workTimes == 0) return 0;
  152. return Math.round(item.totalDeliveryQty / item.workTimes * 100);
  153. },
  154. //根据环境获取不同的url
  155. getBaseUrl() {
  156. let url = '';
  157. let env = "{{ config('app.env') }}";
  158. if (env === 'local') {
  159. url = 'http://127.0.0.1:8111'
  160. } else if (env === 'production') {
  161. url = 'https://stat.baoshi56.com'
  162. }
  163. return url;
  164. },
  165. pagination(flag) {
  166. if (flag === 'pre' && this.current > 1) {
  167. this.current--;
  168. } else if (flag === 'next' && this.current < this.details.pages) {
  169. this.current++;
  170. }
  171. let env = "{{ config('env') }}";
  172. console.log(env);
  173. let url = this.getBaseUrl();
  174. url += `/api/deliver/getDayDetailCustomerPage?size=${this.size}&current=${this.current}`;
  175. axios.post(url, this.search).then(res => {
  176. if (res.data.data === undefined) {
  177. this.details.data = [];
  178. this.details.total = 0
  179. this.details.current = 1
  180. this.details.pages = 0
  181. this.details.size = 50;
  182. } else {
  183. this.details.data = res.data.data.list;
  184. this.details.total = res.data.data.page.total;
  185. this.details.current = res.data.data.page.pageNum;
  186. this.details.pages = res.data.data.page.pages
  187. this.details.size = res.data.data.page.pageSize;
  188. }
  189. });
  190. },
  191. rendingHeader() {
  192. let column = [
  193. {name: 'ownerName', value: '货主', neglect: true, class: "td-cool"},
  194. {name: 'statTime', value: '统计日期', neglect: true, class: "td-cool"},
  195. {name: 'b2bck', value: 'B2B出库', neglect: true, class: "td-cool"},
  196. {name: 'jyck', value: '一般交易出库', neglect: true, class: "td-cool"},
  197. {name: 'qtck', value: '其他出库', neglect: true, class: "td-cool"},
  198. {name: 'jitck', value: '唯品出库', neglect: true, class: "td-cool"},
  199. {name: 'hhck', value: '换货出库', neglect: true, class: "td-cool"},
  200. {name: 'ptck', value: '普通出库', neglect: true, class: "td-cool"},
  201. {name: 'f4ck', value: '笕尚移仓出库单', neglect: true, class: "td-cool"},
  202. {name: 'f21ck', value: '笕尚调整出库单', neglect: true, class: "td-cool"},
  203. {name: 'f11ck', value: '笕尚退仓出库单', neglect: true, class: "td-cool"},
  204. {name: 'f1ck', value: '笕尚配货出库单', neglect: true, class: "td-cool"},
  205. {name: 'xnck', value: '虚拟出库', neglect: true, class: "td-cool"},
  206. {name: 'bfck', value: '补发出库', neglect: true, class: "td-cool"},
  207. {name: 'dbck', value: '调拨出库', neglect: true, class: "td-cool"},
  208. {name: 'cgth', value: '采购退货', neglect: true, class: "td-cool"},
  209. {name: 'xsck', value: '销售出库', neglect: true, class: "td-cool"},
  210. {name: 'cgrk', value: '采购入库', neglect: true, class: "td-warm"},
  211. {name: 'thrk', value: '退货入库', neglect: true, class: "td-warm"},
  212. {name: 'dbrk', value: '调拨入库', neglect: true, class: "td-warm"},
  213. {name: 'xnrk', value: '虚拟入库', neglect: true, class: "td-warm"},
  214. {name: 'f31rk', value: '笕尚退货入库单', neglect: true, class: "td-warm"},
  215. {name: 'f10rk', value: '笕尚进仓入库单', neglect: true, class: "td-warm"},
  216. {name: 'f21rk', value: '笕尚调整入库单', neglect: true, class: "td-warm"},
  217. {name: 'f32rk', value: '笕尚移仓入库单', neglect: true, class: "td-warm"},
  218. {name: 'hhrk', value: '换货入库', neglect: true, class: "td-warm"},
  219. {name: 'cskc', value: '初始化库存', neglect: true, class: "td-warm"},
  220. {name: 'qtrk', value: '其他入库', neglect: true, class: "td-warm"},
  221. {name: 'b2brk', value: 'B2B入库', neglect: true, class: "td-warm"},
  222. {name: 'rejectedOrder', value: '退货单数', neglect: true, class: "td-cool"},
  223. {name: 'rejectedCommodity', value: '退货商品数', neglect: true, class: "td-cool"},
  224. ];
  225. new Header({
  226. el: "table",
  227. name: "details",
  228. column: column,
  229. data: this.details.data,
  230. restorationColumn: 'id',
  231. fixedTop: ($('#form_div').height()) + ($('#btn').height()) + 2,
  232. before: [
  233. {colspan: '18', value: '出库', class: "table-header-layer-1"},
  234. {colspan: '12', value: '入库', class: "table-header-layer-1"},
  235. {colspan: '2', value: '退货', class: "table-header-layer-1"},
  236. ],
  237. }).init();
  238. },
  239. },
  240. });
  241. </script>
  242. @endsection