index.blade.php 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. @extends('layouts.app')
  2. @section('title')称重管理@endsection
  3. @section('content')
  4. <span id="nav2">
  5. @component('weight.menu')@endcomponent
  6. @component('weight.package.menu')@endcomponent
  7. </span>
  8. <div class="d-none" id="list">
  9. <div class="container-fluid">
  10. <div id="form_div"></div>
  11. <span class="dropdown">
  12. <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget mt-1 mb-1" :class="[checkData.length>0?'btn-dark text-light':'']"
  13. data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">
  14. 导出Excel
  15. </button>
  16. <div class="dropdown-menu">
  17. <a class="dropdown-item" @click="packageExport(false)" href="javascript:">导出勾选内容</a>
  18. <a class="dropdown-item" @click="packageExport(true)" href="javascript:">导出所有页</a>
  19. </div>
  20. </span>
  21. <div>
  22. <label for="all" class="d-none" id="cloneCheckAll">
  23. <input id="all" type="checkbox" @click="checkAll($event)">全选
  24. </label>
  25. <table class="table table-sm text-nowrap table-bordered d-none" id="headerRoll"></table>
  26. <table class="table table-striped table-sm text-nowrap table-hover" id="headerParent">
  27. <tr id="header"></tr>
  28. <tr v-for="(package,i) in packages">
  29. <td>
  30. <input class="checkItem" type="checkbox" :value="package.id" v-model="checkData">
  31. </td>
  32. <td>@{{ i+1 }}</td>
  33. <td>@{{package.ownerName}}</td>
  34. <td>@{{package.logisticNumber}}</td>
  35. <td class="text-muted">@{{package.batchNumber}}</td>
  36. <td>@{{package.orderCode}}</td>
  37. <td class="text-muted">@{{package.logisticName}}</td>
  38. <td class="text-muted">@{{package.measuringMachineName}}</td>
  39. <td>@{{package.weight}}</td>
  40. <td>@{{package.length}}<a v-if="package.length" class="text-primary">*</a>@{{package.width}}<a class="text-primary" v-if="package.width">*</a>@{{package.height}}</td>
  41. <td>@{{package.bulk}}</td>
  42. <td>@{{package.paperBoxName}}</td>
  43. <td :class="[package.status==='已上传'?'text-success':'']">@{{package.status}}</td>
  44. <td class="text-muted">@{{package.batchRule}}</td>
  45. <td class="text-muted">@{{package.weighed_at}}</td>
  46. <td class="text-muted">@{{package.recipient}}</td>
  47. <td class="text-muted">@{{package.recipientMobile}}</td>
  48. </tr>
  49. </table>
  50. <div class="text-info h5 btn btn">{{$packages->count()}}/{{$packages->total()}}</div>
  51. {{$packages->appends($paginateParams)->links()}}
  52. </div>
  53. </div>
  54. </div>
  55. @endsection
  56. @section('lastScript')
  57. <script type="text/javascript" src="{{mix('js/queryForm/export.js')}}"></script>
  58. <script type="text/javascript" src="{{mix('js/queryForm/queryForm.js')}}"></script>
  59. <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>
  60. <script>
  61. @if(isset($request))
  62. let request={!! json_encode($request) !!};
  63. @endif
  64. let vue = new Vue({
  65. el:"#list",
  66. data:{
  67. packages:[
  68. @foreach($packages as $package)
  69. {id:'{{$package->id}}',ownerName:'{{$package->order ? ($package->order->owner ? $package->order->owner->name : '') : ''}}',
  70. orderCode:'{{$package->order ? $package->order->code : ''}}',
  71. logisticName:'{{$package->order ? ($package->order->logistic ? $package->order->logistic->name : '') : ''}}'
  72. ,batchNumber:'{{$package->batch_number}}',batchRule:'{{$package->batch_rule}}',
  73. recipient:'{{$package->order ? $package->order->consignee_name : ''}}',recipientMobile:'{{$package->order ? $package->order->consignee_phone : ''}}'
  74. ,logisticNumber:'{{$package->logistic_number}}'
  75. ,measuringMachineName:'{{$package->measuringMachine ? $package->measuringMachine->name : ''}}',
  76. weight:'{{$package->weight}}', length:'{{$package->length}}',width:'{{$package->width}}',height:'{{$package->height}}',
  77. bulk:'{{$package->bulk}}',paperBoxName:'{{$package->paperBox ? $package->paperBox->name : ''}}',
  78. status:'{{$package->status}}',created_at:'{{$package->created_at}}',weighed_at:'{{$package->weighed_at}}',
  79. paperBox : {!! $package->paperBox??'""' !!} },
  80. @endforeach
  81. ],
  82. i:0,
  83. owners:[
  84. @foreach($owners as $owner)
  85. {name:'{{$owner->id}}',value:'{{$owner->name}}'},
  86. @endforeach
  87. ],
  88. checkData:[],
  89. form:'',
  90. sum:{!! $packages->total() !!},
  91. },
  92. mounted:function(){
  93. $(".tooltipTarget").tooltip({'trigger':'hover'});
  94. $('#list').removeClass('d-none');
  95. let _this = this;
  96. let data = [[
  97. {name:'created_at_start',type:'dateTime',tip:'选择显示创建日期的起始时间'},
  98. {name:'weighed_at_start',type:'dateTime',tip:'选择显示称重日期的起始时间'},
  99. {name:'owner_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的客户'],
  100. placeholder:['货主','定位或多选货主'],data:_this.owners},
  101. {name:'logistic_number',type:'input',tip:'可支持多快递单号,糊模查找需要在左边打上%符号',placeholder:'快递单号'},
  102. ],[
  103. {name:'created_at_end',type:'dateTime',tip:'选择显示创建日期的结束时间'},
  104. {name:'weighed_at_end',type:'dateTime',tip:'选择显示称重日期的结束时间'},
  105. {name:'batch_number',type:'input',tip:'波次号:可在两侧增加百分号(%)进行模糊搜索',placeholder:'波次号'}
  106. ]];
  107. _this.form = new query({
  108. el:'#form_div',
  109. condition:data,
  110. });
  111. _this.form.init();
  112. let column = [
  113. {name:'cloneCheckAll',customization:true,type:'checkAll',column:'id',
  114. dom:$('#cloneCheckAll').removeClass('d-none'), neglect: true},
  115. {name:'index',value: '序号', neglect: true},
  116. {name:'ownerName',value: '货主'},
  117. {name: 'logisticNumber', value: '快递单号'},
  118. {name: 'batchNumber', value: '波次号'},
  119. {name:'order_code',value: '订单号'},
  120. {name: 'logisticName', value: '物流公司'},
  121. {name: 'measuringMachineName', value: '设备'},
  122. {name: 'weight', value: '重(KG)'},
  123. {name:'length_width_height',value: '长*宽*高(cm)', neglect: true},
  124. {name: 'bulk', value: '体积(cm³)'},
  125. {name: 'paperBoxName', value: '纸箱'},
  126. {name: 'status', value: '状态'},
  127. {name:'batchRule',value: '波次规则'},
  128. {name:'weighed_at',value: '称重时间'},
  129. {name:'recipient',value: '收件人'},
  130. {name:'recipientMobile',value: '收件人电话'},
  131. ];
  132. setTimeout(function () {
  133. let header = new Header({
  134. el: "#header",
  135. column: column,
  136. data: _this.packages,
  137. restorationColumn: 'id',
  138. fixedTop:($('#form_div').height())+2,
  139. offset:0.5,
  140. vue : vue,
  141. });
  142. header.init();
  143. },0);
  144. },
  145. watch:{
  146. checkData:{
  147. handler(){
  148. if (this.checkData.length === this.packages.length){
  149. document.querySelector('#all').checked = true;
  150. document.querySelector('#all_temp').checked = true;
  151. }else {
  152. document.querySelector('#all').checked = false;
  153. document.querySelector('#all_temp').checked = false;
  154. }
  155. },
  156. deep:true
  157. }
  158. },
  159. methods:{
  160. checkAll(e){
  161. if (e.target.checked){
  162. this.packages.forEach((el,i)=>{
  163. if (this.checkData.indexOf(el.id) == '-1'){
  164. this.checkData.push(el.id);
  165. }
  166. });
  167. }else {
  168. this.checkData = [];
  169. }
  170. },
  171. packageExport(checkAllSign){
  172. let url = '{{url('package/export')}}';
  173. let token='{{ csrf_token() }}';
  174. excelExport(checkAllSign,this.checkData,url,this.sum,token);
  175. },
  176. },
  177. });
  178. </script>
  179. @endsection