statistics.blade.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. @extends('layouts.app')
  2. @section('title')称重统计-包裹管理@endsection
  3. @section('content')
  4. <div class="d-none" id="statistics">
  5. <div class="container-fluid">
  6. <div id="form_div"></div>
  7. <span class="dropdown">
  8. <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget"
  9. data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">
  10. 导出Excel
  11. </button>
  12. <div class="dropdown-menu">
  13. <a class="dropdown-item" @click="statisticExport(false)" href="javascript:">导出勾选内容</a>
  14. <a class="dropdown-item" @click="statisticExport(true)" href="javascript:">导出所有页</a>
  15. </div>
  16. </span>
  17. <table class="table table-striped table-sm text-nowrap table-hover">
  18. <tr>
  19. <th>
  20. <label for="all">
  21. <input id="all" type="checkbox" @click="checkAll($event)">全选
  22. </label>
  23. </th>
  24. <th>货主</th>
  25. <th>总计</th>
  26. <th v-for="logistic in logistics">@{{ logistic.value }}</th>
  27. </tr>
  28. <tr v-for="package in packages">
  29. <td>
  30. <input class="checkItem" type="checkbox" :value="package.owner_id" v-model="checkData">
  31. </td>
  32. <th class="text-muted">@{{ package.owner_name }}</th>
  33. <td><p v-if="package.sum">@{{ package.sum }}</p><p v-else>0</p></td>
  34. <td class="text-muted" v-for="logistic in logistics"><span v-if="package[logistic.name]">@{{ package[logistic.name] }}</span><span v-else>0</span></td>
  35. </tr>
  36. </table>
  37. </div>
  38. </div>
  39. @endsection
  40. @section('lastScript')
  41. <script type="text/javascript" src="{{asset('js/queryForm/queryForm.js')}}"></script>
  42. <script type="text/javascript" src="{{asset('js/queryForm/export.js')}}"></script>
  43. <script>
  44. new Vue({
  45. el:"#statistics",
  46. data:{
  47. packages : [
  48. @foreach($packages as $package)
  49. {!! $package !!},
  50. @endforeach
  51. ],
  52. owners:[
  53. @foreach($owners as $owner)
  54. {name:'{{$owner->id}}', value: '{{$owner->name}}'},
  55. @endforeach
  56. ],
  57. logistics:[
  58. @foreach($logistics as $logistic)
  59. {name:'{{$logistic->id}}', value: '{{$logistic->name}}'},
  60. @endforeach
  61. ],
  62. checkData:[],
  63. },
  64. watch:{
  65. checkData:{
  66. handler(){
  67. if (this.checkData.length === this.packages.length){
  68. document.querySelector('#all').checked = true;
  69. }else {
  70. document.querySelector('#all').checked = false;
  71. }
  72. },
  73. deep:true
  74. }
  75. },
  76. mounted:function(){
  77. $(".tooltipTarget").tooltip({'trigger':'hover'});
  78. $('#statistics').removeClass('d-none');
  79. let data = [[
  80. {name:'logistic_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的物流公司'],
  81. placeholder:['物流公司','定位或多选物流公司'],data:this.logistics},
  82. {name:'owner_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的客户'],
  83. placeholder:['货主','定位或多选货主'],data:this.owners},
  84. {name:'created_at_start',type:'time',tip:['选择显示指定日期的起始时间','选择显示指定日期的起始时间']},
  85. {name:'created_at_end',type:'time',tip:['选择显示指定日期的结束时间','选择显示指定日期的结束时间']},
  86. ]];
  87. this.form = new query({
  88. el:'#form_div',
  89. condition:data,
  90. isPaginations:false,
  91. });
  92. this.form.init();
  93. },
  94. methods: {
  95. checkAll(e){
  96. if (e.target.checked){
  97. this.packages.forEach((el)=>{
  98. if (this.checkData.indexOf(el.owner_id) === '-1'){
  99. this.checkData.push(el.owner_id);
  100. }
  101. });
  102. }else {
  103. this.checkData = [];
  104. }
  105. },
  106. statisticExport:function (checkAllSign) {
  107. let url = '{{url('package/statistics/export')}}';
  108. let token='{{ csrf_token() }}';
  109. //excelExport 定义在 js/queryForm/export200918.js
  110. excelExport(checkAllSign,this.checkData,url,this.sum,token);
  111. },
  112. }
  113. });
  114. </script>
  115. @endsection