index.blade.php 11 KB

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