changeInventory.blade.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. @extends('layouts.app')
  2. @section('title')库存管理-动库报表@endsection
  3. @section('content')
  4. @component('inventory.statement.menu')@endcomponent
  5. <div id="list" class="d-none card container-fluid" style="min-width: 1500px">
  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" :class="[checkData.length>0?'btn-dark text-light':'']"
  9. data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">
  10. 导出Excel
  11. </button>
  12. <div class="dropdown-menu">
  13. <a class="dropdown-item" @click="processExport(false)" href="javascript:">导出勾选内容</a>
  14. <a class="dropdown-item" @click="processExport(true)" href="javascript:">导出所有页</a>
  15. </div>
  16. </span>
  17. <label for="all" id="cloneCheckAll" class="d-none">
  18. <input id="all" type="checkbox" @click="checkAll($event)">全选
  19. </label>
  20. <table class="table table-sm table-bordered text-nowrap d-none" id="headerRoll"></table>
  21. <table class="table table-sm table-striped table-bordered table-hover text-nowrap card-body mt-2" id="headerParent">
  22. <tr id="header"></tr>
  23. <tr v-for="(oracleActTransactingLog,i) in oracleActTransactingLogs">
  24. <td>
  25. <input class="checkItem" type="checkbox" :value="oracleActTransactingLog" v-model="checkData">
  26. </td>
  27. <td>@{{ i+1 }}</td>
  28. <td class="text-primary">@{{ oracleActTransactingLog.货主 }}</td>
  29. <td class="text-muted">@{{ oracleActTransactingLog.库位 }}</td>
  30. <td class="text-muted">@{{ oracleActTransactingLog.产品编码 }}</td>
  31. <td class="text-muted">@{{ oracleActTransactingLog.产品条码 }}</td>
  32. <td :title="oracleActTransactingLog.商品名称" class="tooltipTarget" style="max-width: 200px;overflow:hidden">@{{ oracleActTransactingLog.商品名称 }}</td>
  33. <td class="text-muted">@{{ oracleActTransactingLog.属性仓 }}</td>
  34. <td class="text-muted">@{{ oracleActTransactingLog.质量状态 }}</td>
  35. <td class="text-muted">@{{ oracleActTransactingLog.失效日期 }}</td>
  36. <td class="text-muted">@{{ oracleActTransactingLog.批号 }}</td>
  37. <td v-if="!isTotalStock">@{{ oracleActTransactingLog.移出数量 }}</td>
  38. <td v-if="!isTotalStock">@{{ oracleActTransactingLog.移入数量 }}</td>
  39. <td><span v-if="oracleActTransactingLog.在库数量">@{{ oracleActTransactingLog.在库数量 }}</span><span v-else>0</span></td>
  40. <td><span v-if="oracleActTransactingLog.占用数量">@{{ oracleActTransactingLog.占用数量 }}</span><span v-else>0</span></td>
  41. </tr>
  42. </table>
  43. <div>
  44. <button type="button" @click="pageUp()" :readonly="page>1?false:true" class="btn btn-sm " :class="page>1?'btn-outline-info':''">上一页</button>
  45. <button type="button" @click="pageDown()" :readonly="page<maxPage?false:true" class="btn btn-sm m-3" :class="page<maxPage?'btn-outline-info':''">下一页</button>
  46. <div v-if="isPage">
  47. <input @keyup.enter="pageSkip($event)" class="form-control-sm ml-3 tooltipTarget" :placeholder="'当前页数:'+page+'/'+maxPage" title="去往指定页">
  48. <span class="text-muted m-1">共 @{{ sum }} 条</span>
  49. </div>
  50. </div>
  51. </div>
  52. @endsection
  53. @section('lastScript')
  54. <script type="text/javascript" src="{{asset('js/queryForm/export200818a.js')}}"></script>
  55. <script type="text/javascript" src="{{asset('js/queryForm/queryForm200825.js')}}"></script>
  56. <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
  57. <script>
  58. let vue=new Vue({
  59. el:"#list",
  60. data:{
  61. oracleActTransactingLogs:{!! $oracleActTransactingLogs !!},
  62. page:Number('{{$page}}'),
  63. owners:[
  64. @foreach($owners as $owner)
  65. {name:'{{$owner->customerid}}',value:'{{$owner->descr_c}}'},
  66. @endforeach
  67. ],
  68. checkData:[],
  69. maxPage:1,
  70. sum:0,
  71. isPage:true,
  72. date:[{name:'1',value:'近一天'},{name:'3',value:'近三天'},{name:'7',value:'近一周'},{name:'30',value:'近一月'},],
  73. isTotalStock : "{{ $isTotalStock }}",
  74. },
  75. mounted:function () {
  76. $(".tooltipTarget").tooltip({'trigger':'hover'});
  77. $("#list").removeClass('d-none');
  78. if (this.oracleActTransactingLogs.length>0){
  79. this.maxPage=Math.ceil(this.oracleActTransactingLogs[0].sum/50);
  80. this.sum=this.oracleActTransactingLogs[0].sum;
  81. }
  82. let data=[
  83. [
  84. {name:['date_start','range'],type:'dateTime_select',tip:['选择创建日期的起始时间','查询内容的日期范围'],placeholder:['','查询内容的日期范围'],data: this.date
  85. ,killings:[['range'],['date_start']]},
  86. {name:'TOLocation',type:'input',tip:'库位:糊模查找需要在左边打上%符号',placeholder: '库位'},
  87. {name:'LotAtt05',type:'input',tip:'属性仓:糊模查找需要在左边打上%符号',placeholder: '属性仓'},
  88. {name:'LotAtt02_start',type:'dateTime',tip:'选择显示失效日期的起始时间'},
  89. {name:'customerid',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的客户'],
  90. placeholder:['货主','定位或多选货主'],data:this.owners},
  91. ],
  92. [
  93. {name:'date_end',type:'dateTime',tip:'选择创建日期的结束时间',killings:['range']},
  94. {name:'SKU',type:'input',tip:'产品编码:糊模查找需要在左边打上%符号',placeholder: '产品编码'},
  95. {name:'ALTERNATE_SKU1',type:'input',tip:'产品条码:糊模查找需要在左边打上%符号',placeholder: '产品条码'},
  96. {name:'LotAtt02_end',type:'dateTime',tip:'选择显示失效日期的结束时间'},
  97. ],
  98. ];
  99. this.form = new query({
  100. el:'#form_div',
  101. condition:data
  102. });
  103. this.form.init();
  104. let thisUrl=document.URL;
  105. let parameter=thisUrl.split('?',2);
  106. if (parameter.length > 1){
  107. let _this=this;
  108. let list=['ALTERNATE_SKU1','LotAtt05','LotAtt02_start','descr_c','LotAtt02_end'];
  109. let param=parameter[1].split('&');
  110. param.every(function (data) {
  111. let arr=data.split('=');
  112. if (arr.length > 1){
  113. if (list.includes(arr[0]) && arr[1]){
  114. _this.isPage = false;
  115. return false;
  116. }
  117. }
  118. return true;
  119. });
  120. }
  121. let column = [
  122. {name:'cloneCheckAll',customization:true,type:'checkAll',
  123. dom:$('#cloneCheckAll').removeClass('d-none'), neglect: true},
  124. {name:'index',value: '序号', neglect: true},
  125. {name:'货主',value: '货主', class:'text-primary'},
  126. {name:'库位',value: '库位', class:'text-muted'},
  127. {name:'产品编码',value: '产品编码', class:'text-muted'},
  128. {name:'产品条码',value: '产品条码', class:'text-muted'},
  129. {name:'商品名称',value: '商品名称'},
  130. {name:'属性仓',value: '属性仓', class:'text-muted'},
  131. {name:'质量状态',value: '质量状态', class:'text-muted'},
  132. {name:'失效日期',value: '失效日期', class:'text-muted'},
  133. {name:'批号',value: '批号', class:'text-muted'},
  134. @if(!$isTotalStock)
  135. {name:'移出数量',value: '移出数量', neglect: true},
  136. {name:'移入数量',value: '移入数量', neglect: true},
  137. @endif
  138. {name:'在库数量',value: '在库数量', neglect: true},
  139. {name:'占用数量',value: '占用数量', neglect: true},
  140. ];
  141. let header=null;
  142. let _this = this;
  143. setTimeout(function () {
  144. header = new Header({
  145. el: "#header",
  146. column: column,
  147. data: _this.oracleActTransactingLogs,
  148. restorationColumn: 'rn',
  149. is_restorationColumn_asc:true,
  150. fixedTop:($('#form_div').height())+2,
  151. offset:0.5,
  152. vue:vue
  153. });
  154. header.init();
  155. },0);
  156. },
  157. watch:{
  158. checkData:{
  159. handler(){
  160. if (this.checkData.length === this.oracleActTransactingLogs.length){
  161. document.querySelector('#all').checked = true;
  162. document.querySelector('#all_temp').checked = true;
  163. }else {
  164. document.querySelector('#all').checked = false;
  165. document.querySelector('#all_temp').checked = false;
  166. }
  167. },
  168. deep:true
  169. }
  170. },
  171. methods:{
  172. pageUp(){
  173. if (this.page<=1)return;
  174. this.href(this.page-1);
  175. },
  176. pageDown(){
  177. if (this.page>=this.maxPage)return;
  178. this.href(this.page+1);
  179. },
  180. pageSkip(e){
  181. if (Number(e.target.value)<=0 || Number(e.target.value)>this.maxPage){
  182. tempTip.setDuration(2000);
  183. tempTip.show('页数不存在! ');
  184. return
  185. }
  186. this.href(e.target.value);
  187. },
  188. href(page){
  189. let url = document.URL;
  190. if (url.indexOf('page='+this.page) != -1){
  191. url = url.replace("page="+this.page,"page="+page);
  192. }else{
  193. if (url.indexOf('?') == -1) url += "?page="+page;
  194. else url += "&page="+page;
  195. }
  196. window.location.href=url;
  197. },
  198. //全选事件
  199. checkAll(e){
  200. if (e.target.checked){
  201. this.oracleActTransactingLogs.forEach((el,i)=>{
  202. if (this.checkData.indexOf(el) == '-1'){
  203. this.checkData.push(el);
  204. }
  205. });
  206. }else {
  207. this.checkData = [];
  208. }
  209. },
  210. processExport(checkAllSign){
  211. let url = '{{url('inventory/statement/allInventory/export')}}';
  212. if (!this.isTotalStock)
  213. url = '{{url('inventory/statement/changeInventory/export')}}';
  214. let token='{{ csrf_token() }}';
  215. let data= JSON.stringify( this.checkData );
  216. excelExport(checkAllSign,data,url,this.sum,token);
  217. },
  218. },
  219. filters:{
  220. json(value) {
  221. return JSON.stringify(value);
  222. }
  223. },
  224. });
  225. </script>
  226. @endsection