index.blade.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. @extends('layouts.app')
  2. @section('title')财务报表@endsection
  3. @section('content')
  4. <div class="d-none" id="editingPanel">
  5. <div class="card" id="nav2">
  6. @component('waybill.menu')@endcomponent
  7. <div class="container-fluid nav3">
  8. <div class="card menu-third" >
  9. <ul class="nav nav-pills">
  10. @can('财务报表-查询')
  11. <li class="nav-item">
  12. <a class="nav-link @if($type=='') active @endif" href="@if(!isset($excepted)) {{url('waybill/waybillFinancialSnapshot')}} @else {{url('waybill/waybillFinancialExcepted')}} @endif">全部</a>
  13. </li>
  14. <li class="nav-item">
  15. <a class="nav-link @if($type=='ZX') active @endif" href="@if(!isset($excepted)) {{url('waybill/waybillFinancialSnapshot?type=ZX')}} @else {{url('waybill/waybillFinancialExcepted?type=ZX')}} @endif">专线</a>
  16. </li>
  17. <li class="nav-item">
  18. <a class="nav-link @if($type=='ZF') active @endif" href="@if(!isset($excepted)) {{url('waybill/waybillFinancialSnapshot?type=ZF')}} @else {{url('waybill/waybillFinancialExcepted?type=ZF')}} @endif">直发车</a>
  19. </li> @endcan
  20. </ul>
  21. </div>
  22. </div>
  23. </div>
  24. <div class="card " style="width: 3500px">
  25. <form method="get" action="@if(!isset($excepted))
  26. @if($type=='ZF'){{url('waybill/waybillFinancialSnapshot?type=ZF')}}@elseif($type=='ZX'){{url('waybill/waybillFinancialSnapshot?type=ZX')}}@else{{url('waybill/waybillFinancialSnapshot')}}@endif
  27. @else
  28. @if($type=='ZF'){{url('waybill/waybillFinancialExcepted?type=ZF')}}@elseif($type=='ZX'){{url('waybill/waybillFinancialExcepted?type=ZX')}}@else{{url('waybill/waybillFinancialExcepted')}}@endif
  29. @endif ">
  30. <div class="card-header form-inline">
  31. <label style="margin-left: 1%"> 开始日期:</label><input style="max-width: 200px" type="date" name="created_at_start" class="form-control form-control-sm" v-model="filterData.created_at_start">
  32. <label style="margin-left: 1%"> 截至日期:</label><input style="max-width: 200px" type="date" class="form-control form-control-sm" name="created_at_end" v-model="filterData.created_at_end">
  33. <input type="text" hidden name="type" v-model="filterData.type" >
  34. <input type="submit" class="btn btn-sm btn-outline-dark ml-3" value="按条件搜索" >
  35. </div>
  36. </form>
  37. <!-- 自定义内容区域 -->
  38. <div>
  39. @if(!isset($excepted))
  40. <div class="card-header">
  41. <label>操作选定记录:</label>
  42. <span class="dropdown">
  43. <button class="btn btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData.length>0?'btn-dark':'btn-outline-dark']"
  44. data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">
  45. 导出Excel
  46. </button>
  47. <div class="dropdown-menu">
  48. <a class="dropdown-item" @click="waybillExport(false)" href="javascript:">导出勾选内容</a>
  49. <a class="dropdown-item" @click="waybillExport(true)" href="javascript:">导出所有页</a>
  50. </div>
  51. </span>
  52. </div>
  53. @endif
  54. @if(!isset($excepted))
  55. <label for="all" class="d-none" id="cloneCheckAll">
  56. <input id="all" type="checkbox" @click="checkAll($event)">全选
  57. </label>
  58. @endif
  59. <table class="d-none table table-bordered text-nowrap" id="headerRoll"></table>
  60. <table class="table table-hover table-bordered text-nowrap " style="width: 1500px;height: auto" id="headerParent">
  61. <thead>
  62. <tr style="background: #E8E8E8;@if(isset($excepted)) color: red; @endif" id="header"></tr>
  63. </thead>
  64. <tbody>
  65. <tr v-for="(json_content,i) in json_contents" :style="{background:json_content.type=='直发车'?'#F8F8F8':''}">
  66. @if(!isset($excepted))
  67. <td>
  68. <input class="checkItem" type="checkbox" :value="json_content.waybill_id" v-model="checkData">
  69. </td>
  70. @endif
  71. <td>@{{ i+1 }}</td>
  72. <td>@{{json_content.type}}</td>
  73. <td>@{{json_content.waybill_number}}</td>
  74. <td>@{{json_content.owner_name}}</td>
  75. <td>@{{json_content.wms_bill_number}}</td>
  76. <td>@{{json_content.origination}}</td>
  77. <td>@{{json_content.destination}}</td>
  78. <td>@{{json_content.recipient}}</td>
  79. <td>@{{json_content.recipient_mobile}}</td>
  80. <td>@{{json_content.charge}}</td>
  81. <td>@{{json_content.ordering_remark}}</td>
  82. <td>@{{json_content.carrier_name}}</td>
  83. <td>@{{json_content.carrier_bill}}</td>
  84. <td>@{{json_content.origination_city_name}}</td>
  85. <td>@{{json_content.destination_city_name}}</td>
  86. <td>@{{json_content.warehouse_weight}}</td>
  87. <td>@{{json_content.warehouse_weight_other}}</td>
  88. <td>@{{json_content.carrier_weight_other}}</td>
  89. <td>@{{json_content.carrier_weight_other}}</td>
  90. <td>@{{json_content.car_type_name}}</td>
  91. <td>@{{json_content.car_owner_info}}</td>
  92. <td>@{{json_content.fee}}</td>
  93. <td>@{{json_content.pick_up_fee}}</td>
  94. <td>@{{json_content.other_fee}}</td>
  95. <td>@{{json_content.collect_fee}}</td>
  96. <td>@{{json_content.dispatch_remark}}</td>
  97. <td>@{{json_content.created_at}}</td>
  98. <td>@{{json_content.auditLog_user_name }}</td>
  99. <td>@{{json_content.total_receivable}}</td>
  100. <td>@{{json_content.total_expense}}</td>
  101. <td>@{{json_content.gross_margin}}</td>
  102. <td>@{{Math.round(json_content.gross_profit_rate*100)}}%</td>
  103. </tr>
  104. </tbody>
  105. </table>
  106. <div class="text-info h5 btn btn">{{$waybillFinancialSnapshots->count()}}/{{$waybillFinancialSnapshots->total()}}</div>
  107. </div>
  108. </div>
  109. <!-- 分页 -->
  110. <div>
  111. <div class="pull-right">
  112. {{$waybillFinancialSnapshots->render()}}
  113. </div>
  114. </div>
  115. </div>
  116. @stop
  117. @section('lastScript')
  118. <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
  119. <script type="text/javascript" src="{{asset('js/queryForm/export200818a.js')}}"></script>
  120. <script>
  121. let vue = new Vue({
  122. el:'#editingPanel',
  123. data:{
  124. json_contents:[
  125. @if(isset($waybillFinancialSnapshots))
  126. @foreach($waybillFinancialSnapshots as $waybillFinancialSnapshot)
  127. {!!$waybillFinancialSnapshot->json_content!!},
  128. @endforeach
  129. @endif
  130. ],
  131. checkData:[],
  132. filterData:{
  133. created_at_start:'',created_at_end:'',type:'{{$type}}',
  134. },
  135. sum:{!! $waybillFinancialSnapshots->total() !!},
  136. },
  137. watch:{
  138. checkData:{
  139. handler(){
  140. if (this.checkData.length === this.json_contents.length){
  141. document.querySelector('#all').checked = true;
  142. document.querySelector('#all_temp').checked = true;
  143. }else {
  144. document.querySelector('#all').checked = false;
  145. document.querySelector('#all_temp').checked = false;
  146. }
  147. },
  148. deep:true
  149. },
  150. },
  151. mounted:function(){
  152. this.initInputs();
  153. $(".tooltipTarget").tooltip({'trigger':'hover'});
  154. $('#editingPanel').removeClass('d-none');
  155. let column = [
  156. @if(!isset($excepted)){name:'cloneCheckAll',customization:true,type:'checkAll',column:'waybill_id',
  157. dom:$('#cloneCheckAll').removeClass('d-none'), neglect: true},@endif
  158. {name:'index',value: '序号', neglect: true},
  159. {name:'type',value: '运单类型', neglect: true},
  160. {name:'waybill_number',value: '运单号', neglect: true},
  161. {name:'owner',value: '货主', neglect: true},
  162. {name:'wms_bill_number',value: 'WMS单号', neglect: true},
  163. {name:'origination',value: '始发地', neglect: true},
  164. {name:'destination',value: '目的地', neglect: true},
  165. {name:'recipient',value: '收件人', neglect: true},
  166. {name:'recipient_mobile',value: '收件人电话', neglect: true},
  167. {name:'charge',value: '收费(元)', neglect: true},
  168. {name:'ordering_remark',value: '下单备注', neglect: true},
  169. {name:'carrier',value: '承运商', neglect: true},
  170. {name:'carrier_bill',value: '承运商单号', neglect: true},
  171. {name:'origination_city',value: '始发市', neglect: true},
  172. {name:'destination_city',value: '目的市', neglect: true},
  173. {name:'warehouse_weight',value: '仓库计数(抛)', neglect: true},
  174. {name:'warehouse_weight_other',value: '仓库计数二', neglect: true},
  175. {name:'carrier_weight',value: '承运商计数(抛)', neglect: true},
  176. {name:'carrier_weight_other',value: '承运商计数二', neglect: true},
  177. {name:'car_type',value: '车型', neglect: true},
  178. {name:'car_owner_info',value: '车辆信息', neglect: true},
  179. {name:'fee',value: '运费(元)', neglect: true},
  180. {name:'pick_up_fee',value: '提货费(元)', neglect: true},
  181. {name:'other_fee',value: '其他费用(元)', neglect: true},
  182. {name:'collect_fee',value: '到付金额(元)', neglect: true},
  183. {name:'dispatch_remark',value: '调度备注', neglect: true},
  184. {name:'created_at',value: '创建时间', neglect: true},
  185. {name:'user_name',value: '终审人员', neglect: true},
  186. {name:'total_receivable',value: '应收款', neglect: true},
  187. {name:'total_expense',value: '应付款', neglect: true},
  188. {name:'gross_margin',value: '毛利', neglect: true},
  189. {name:'gross_profit_rate',value: '毛利率', neglect: true},
  190. ];
  191. let _this = this;
  192. setTimeout(function () {
  193. let header = new Header({
  194. el: "#header",
  195. column: column,
  196. data: _this.json_contents,
  197. restorationColumn: 'id',
  198. offset:0.5,
  199. vue : vue,
  200. });
  201. header.init();
  202. },0);
  203. },
  204. methods:{
  205. initInputs:function(){
  206. let data=this;
  207. let uriParts =decodeURI(location.href).split("?");
  208. if(uriParts.length>1){
  209. let params = uriParts[1].split('&');
  210. params.forEach(function(paramPair){
  211. let pair=paramPair.split('=');
  212. let key = pair[0], val = pair[1];
  213. $('input[name="'+key+'"]').val(val);
  214. decodeURI(data.filterData[key]=val);
  215. });
  216. }
  217. },
  218. checkAll(e){
  219. if (e.target.checked){
  220. this.json_contents.forEach((el,i)=>{
  221. if (this.checkData.indexOf(el.waybill_id) == '-1'){
  222. this.checkData.push(el.waybill_id);
  223. }
  224. });
  225. }else {
  226. this.checkData = [];
  227. }
  228. },
  229. waybillExport(checkAllSign){
  230. let url='{{url('waybillFinancialSnapshot/export')}}';
  231. let token='{{ csrf_token() }}';
  232. excelExport(checkAllSign,this.checkData,url,this.sum,token);
  233. },
  234. }
  235. })
  236. </script>
  237. @stop