changeInventory.blade.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  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. <form method="GET" action="{{url('inventory/statement/changeInventory')}}" id="form">
  7. <table class="table table-sm table-bordered text-nowrap mb-0">
  8. <tr v-if="isBeingFilterConditions">
  9. <td colspan="10">
  10. <div class="col" style="padding:0">
  11. <a href="{{url('inventory/statement/changeInventory')}}"><span class="btn btn-warning text-dark">清除过滤条件</span></a>
  12. </div></td>
  13. </tr>
  14. <tr>
  15. <td >
  16. <select name="paginate" v-model="filterData.paginate" class="tooltipTarget form-control-sm" style="vertical-align: middle" @change="submit">
  17. <option value="50">50行</option>
  18. <option value="100">100行</option>
  19. <option value="200">200行</option>
  20. <option value="500">500行</option>
  21. <option value="1000">1000行</option>
  22. </select></td>
  23. <td >
  24. <input type="date" name="date_start" class=" form-control-sm tooltipTarget" title="选择显示指定日期的起始时间"
  25. v-model="filterData.date_start" :class="filterData.created_at_start?'bg-warning':''">
  26. </td>
  27. <td>
  28. <input name="TOLocation" v-model="filterData.TOLocation" class="form-control-sm tooltipTarget" placeholder="库位" :class="filterData.TOLocation?'bg-warning':''">
  29. </td>
  30. <td >
  31. <input name="LotAtt05" v-model="filterData.LotAtt05" class="form-control-sm tooltipTarget" placeholder="属性仓" :class="filterData.LotAtt05?'bg-warning':''">
  32. </td>
  33. <td >
  34. <input type="date" class=" form-control-sm tooltipTarget" name="LotAtt02_start" title="选择显示失效日期的起始时间"
  35. v-model="filterData.LotAtt02_start" :class="filterData.LotAtt02_start?'bg-warning':''" >
  36. </td>
  37. <td colspan="5"></td>
  38. </tr>
  39. <tr>
  40. <td >
  41. <input type="text" class="form-control-sm tooltipTarget" placeholder="客户"
  42. style="width:70px" @input="owner_seek"
  43. title="输入关键词快速定位下拉列表,回车确定">
  44. <select name="descr_c" v-model="filterData.descr_c" @change="submit" style="max-width: 100px" class="form-control-sm tooltipTarget" title="选择要显示的客户" :class="filterData.descr_c?'bg-warning':''">
  45. <option > </option>
  46. <option v-for="owner in owners" :value="owner.descr_c" >@{{owner.descr_c}}</option>
  47. </select>
  48. </td>
  49. <td >
  50. <input type="date" class=" form-control-sm tooltipTarget" name="date_end" title="选择显示指定日期的结束时间"
  51. v-model="filterData.date_end" :class="filterData.created_at_end?'bg-warning':''" >
  52. </td>
  53. <td>
  54. <input name="SKU" v-model="filterData.SKU" class="form-control-sm tooltipTarget" placeholder="产品编码" :class="filterData.SKU?'bg-warning':''">
  55. </td>
  56. <td >
  57. <input name="ALTERNATE_SKU1" v-model="filterData.ALTERNATE_SKU1" class="form-control-sm tooltipTarget" placeholder="产品条码" :class="filterData.ALTERNATE_SKU1?'bg-warning':''">
  58. </td>
  59. <td >
  60. <input type="date" class=" form-control-sm tooltipTarget" name="LotAtt02_end" title="选择显示失效日期的结束时间"
  61. v-model="filterData.LotAtt02_end" :class="filterData.LotAtt02_end?'bg-warning':''" >
  62. </td>
  63. <td colspan="5">
  64. <input hidden type="submit" >
  65. </td>
  66. </tr>
  67. <tr>
  68. <td colspan="9">
  69. <span class="dropdown">
  70. <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData.length>0?'btn-dark text-light':'']"
  71. data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
  72. 导出Excel
  73. </button>
  74. <div class="dropdown-menu">
  75. <a class="dropdown-item" @click="processExport(1)" href="javascript:">导出勾选内容</a>
  76. <a class="dropdown-item" @click="processExport(2)" href="javascript:">导出所有页</a>
  77. </div>
  78. </span>
  79. </td>
  80. </tr>
  81. </table>
  82. </form>
  83. <table class="table table-sm table-striped table-bordered table-hover text-nowrap card-body mt-2">
  84. <tr>
  85. <th>
  86. <label for="all">
  87. <input id="all" type="checkbox" @click="checkAll($event)">全选
  88. </label>
  89. </th>
  90. <th>序号</th>
  91. <th>货主</th>
  92. <th>库位</th>
  93. <th>产品编码</th>
  94. <th>产品条码</th>
  95. <th>商品名称</th>
  96. <th>属性仓</th>
  97. <th>质量状态</th>
  98. <th>失效日期</th>
  99. <th>批号</th>
  100. <th>移出数量</th>
  101. <th>移入数量</th>
  102. <th>在库数量</th>
  103. <th>占用数量</th>
  104. </tr>
  105. <tr v-for="(oracleActTransactingLog,i) in oracleActTransactingLogs">
  106. <td>
  107. <input class="checkItem" type="checkbox" :value="oracleActTransactingLog" v-model="checkData">
  108. </td>
  109. <td>@{{ i+1 }}</td>
  110. <td class="text-primary">@{{ oracleActTransactingLog.货主 }}</td>
  111. <td class="text-muted">@{{ oracleActTransactingLog.库位 }}</td>
  112. <td class="text-muted">@{{ oracleActTransactingLog.产品编码 }}</td>
  113. <td class="text-muted">@{{ oracleActTransactingLog.产品条码 }}</td>
  114. <td :title="oracleActTransactingLog.商品名称" class="tooltipTarget" style="max-width: 200px;overflow:hidden">@{{ oracleActTransactingLog.商品名称 }}</td>
  115. <td class="text-muted">@{{ oracleActTransactingLog.属性仓 }}</td>
  116. <td class="text-muted">@{{ oracleActTransactingLog.质量状态 }}</td>
  117. <td class="text-muted">@{{ oracleActTransactingLog.失效日期 }}</td>
  118. <td class="text-muted">@{{ oracleActTransactingLog.批号 }}</td>
  119. <td>@{{ oracleActTransactingLog.移出数量 }}</td>
  120. <td>@{{ oracleActTransactingLog.移入数量 }}</td>
  121. <td>@{{ oracleActTransactingLog.在库数量 }}</td>
  122. <td>@{{ oracleActTransactingLog.占用数量 }}</td>
  123. </tr>
  124. </table>
  125. <form method="post" hidden action="{{url('inventory/statement/changeInventory/export')}}" id="checkDataForm">
  126. @csrf
  127. <input name="checkData" :value="checkData | json">
  128. <input name="export" :value="filterData.export">
  129. <input name="date_start" :value="filterData.date_start">
  130. <input name="date_end" :value="filterData.date_end">
  131. <input name="SKU" :value="filterData.SKU">
  132. <input name="TOLocation" :value="filterData.TOLocation">
  133. <input name="LotAtt05" :value="filterData.LotAtt05">
  134. <input name="LotAtt02_start" :value="filterData.LotAtt02_start">
  135. <input name="LotAtt02_end" :value="filterData.LotAtt02_end">
  136. <input name="descr_c" :value="filterData.descr_c">
  137. <input name="ALTERNATE_SKU1" :value="filterData.ALTERNATE_SKU1">
  138. </form>
  139. <div >
  140. <button type="button" @click="pageUp()" :readonly="page>1?false:true" class="btn btn-sm " :class="page>1?'btn-outline-info':''">上一页</button>
  141. <button type="button" @click="pageDown()" class="btn btn-sm btn-outline-info ml-5">下一页</button>
  142. <input @keyup.enter="pageSkip($event)" class="form-control-sm ml-3 tooltipTarget" :placeholder="'当前页数:'+page" title="去往指定页">
  143. </div>
  144. </div>
  145. @endsection
  146. @section('lastScript')
  147. <script>
  148. new Vue({
  149. el:"#list",
  150. data:{
  151. oracleActTransactingLogs:{!! $oracleActTransactingLogs !!},
  152. page:Number('{{$page}}'),
  153. filterData:{date_start:'',date_end:'',SKU:'',paginate:"50",TOLocation:'',
  154. LotAtt05:'',LotAtt02_start:'',LotAtt02_end:'',descr_c:'',ALTERNATE_SKU1:'',export:''},
  155. owners:[
  156. @foreach($owners as $owner)
  157. {!! $owner !!},
  158. @endforeach
  159. ],
  160. checkData:[],
  161. },
  162. mounted:function () {
  163. $(".tooltipTarget").tooltip({'trigger':'hover'});
  164. this.initInputs();
  165. $("#list").removeClass('d-none');
  166. },
  167. computed:{
  168. isBeingFilterConditions:function(){
  169. for(let key in this.filterData){
  170. if(this.filterData[key] && key!='paginate'){
  171. return true
  172. }
  173. }
  174. return false;
  175. },
  176. },
  177. watch:{
  178. checkData:{
  179. handler(){
  180. if (this.checkData.length === this.oracleActTransactingLogs.length){
  181. document.querySelector('#all').checked = true;
  182. }else {
  183. document.querySelector('#all').checked = false;
  184. }
  185. },
  186. deep:true
  187. }
  188. },
  189. methods:{
  190. initInputs:function(){
  191. let data=this;
  192. let uriParts =decodeURI(location.href).split("?");
  193. if(uriParts.length>1){
  194. let params = uriParts[1].split('&');
  195. params.forEach(function(paramPair){
  196. let pair=paramPair.split('=');
  197. let key = pair[0], val = pair[1];
  198. $('input[name="'+key+'"]').val(val);
  199. $('select[name="'+key+'"]').val(val);
  200. decodeURI(data.filterData[key]=val);
  201. });
  202. }
  203. },
  204. pageUp(){
  205. if (this.page<=1)return;
  206. this.page=this.page-1;
  207. window.location.href="{{url('inventory/statement/changeInventory?page=')}}"+this.page;
  208. },
  209. pageDown(){
  210. this.page=this.page+1;
  211. window.location.href="{{url('inventory/statement/changeInventory?page=')}}"+this.page;
  212. },
  213. pageSkip(e){
  214. this.page=e.target.value;
  215. if (Number(this.page)<=0){
  216. tempTip.setDuration(2000);
  217. tempTip.show('页数不存在! ');
  218. return
  219. }
  220. window.location.href="{{url('inventory/statement/changeInventory?page=')}}"+this.page;
  221. },
  222. //提交表单
  223. submit:function(){
  224. let form = $("#form");
  225. form.submit();
  226. },
  227. //全选事件
  228. checkAll(e){
  229. if (e.target.checked){
  230. this.oracleActTransactingLogs.forEach((el,i)=>{
  231. if (this.checkData.indexOf(el) == '-1'){
  232. this.checkData.push(el);
  233. }
  234. });
  235. }else {
  236. this.checkData = [];
  237. }
  238. },
  239. //寻找客户
  240. owner_seek:function (e) {
  241. let _this=this;
  242. let $val=e.target.value;
  243. if($val==='')_this.filterData.owner_id='';
  244. else
  245. _this.owners.forEach(function (owner) {
  246. if (owner.name.includes($val)){
  247. _this.filterData.owner_id=owner.id;
  248. }
  249. });
  250. },
  251. processExport:function(value){
  252. if (value==1&&this.checkData.length <= 0) {
  253. tempTip.setDuration(2000);
  254. tempTip.showSuccess('没有勾选任何记录');
  255. return
  256. }
  257. this.filterData.export=value;
  258. setTimeout(function () {
  259. $("#checkDataForm").submit();
  260. },1);
  261. },
  262. },
  263. filters:{
  264. json(value) {
  265. return JSON.stringify(value);
  266. }
  267. },
  268. });
  269. </script>
  270. @endsection