stayPutawayList.blade.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. @extends('layouts.app')
  2. @section('title')待上架列表@endsection
  3. @section('content')
  4. <div class="d-none" id="list">
  5. <!--查询 -->
  6. <div class="row m-3" style="background-color: #fff;">
  7. <div class="form-group m-2">
  8. <select class="form-control selectpicker" title="分页大小" v-model="size">
  9. <option value="50">50</option>
  10. <option value="100">100</option>
  11. <option value="200">200</option>
  12. <option value="500">500</option>
  13. <option value="1000">1000</option>
  14. </select>
  15. </div>
  16. <div class="form-group m-2" style="max-width: 200px !important;">
  17. <select v-model="search.customerCode" class="selectpicker form-control" title="选择货主"
  18. data-actions-box="true"
  19. data-live-search="true"
  20. data-live-search-placeholder="搜索"
  21. >
  22. <option v-for="(v,k) of searchSelects.owners" :value="v.code" :key="v.code">@{{ v.name }}</option>
  23. </select>
  24. </div>
  25. <div class="form-group m-2" style="max-width: 200px !important;">
  26. <select v-model="search.workGroupId" class="selectpicker form-control" title="工作组"
  27. data-actions-box="true"
  28. data-live-search="true"
  29. data-live-search-placeholder="搜索"
  30. >
  31. <option v-for="(v,k) of searchSelects.workGroups" :value="v.id" :key="v.id">@{{ v.name }}</option>
  32. </select>
  33. </div>
  34. <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="容器号">
  35. <input v-model="search.container" class="form-control" type="text" step="01" placeholder="容器号">
  36. </div>
  37. <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="收货任务号">
  38. <input v-model="search.receiveTaskNo" class="form-control" type="text" step="01" placeholder="收货任务号">
  39. </div>
  40. <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="ASN号">
  41. <input v-model="search.asnNo" class="form-control" type="text" step="01" placeholder="ASN号">
  42. </div>
  43. <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="起始日期">
  44. <input v-model="search.receiveStartTime" class="form-control" type="date" step="01">
  45. </div>
  46. <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="截止日期">
  47. <input v-model="search.receiveEndTime" class="form-control" type="date" step="01">
  48. </div>
  49. <div class="form-group m-2">
  50. <button class="form-control btn btn-sm btn-info" @click="searchData()">查询</button>
  51. </div>
  52. </div>
  53. <div class="form-group m-4">
  54. <span class="font-weight-bold">待上架总数:<span class="text-danger">@{{ resData.details.total }}</span></span>
  55. </div>
  56. <!-- 表格-->
  57. <table class="table table-striped table-bordered table-hover text-nowrap"
  58. style="background: #fff;" id="table">
  59. <tr v-for="(item,i) in resData.details.data" :key="i">
  60. <td class="td-warm text-muted "><span>@{{ i+1 }}</span></td>
  61. <td class="td-warm text-muted"><span>@{{ item.warehouseName }}</span></td>
  62. <td class="td-warm text-muted"><span>@{{ item.customerName }}</span></td>
  63. <td class="td-warm text-muted"><span>@{{ item.container }}</span></td>
  64. <td class="td-warm text-muted"><span>@{{ item.receiveTaskNo }}</span></td>
  65. <td class="td-warm text-muted"><span>@{{ item.asnNo }}</span></td>
  66. <td class="td-warm text-muted"><span>@{{ item.receivePerson }}</span></td>
  67. <td class="td-warm text-muted"><span>@{{ item.receiveTime }}</span></td>
  68. <td class="td-warm text-muted"><span>@{{ item.commSku }}</span></td>
  69. <td class="td-warm text-muted"><span>@{{ item.commBarcode }}</span></td>
  70. <td class="td-warm text-muted"><span>@{{ item.commName }}</span></td>
  71. <td class="td-warm text-muted"><span>@{{ item.quanlityCondition }}</span></td>
  72. <td class="td-warm text-muted"><span>@{{ item.attrWarehouse }}</span></td>
  73. <td class="td-warm text-muted"><span>@{{ item.produceDate }}</span></td>
  74. <td class="td-warm text-muted"><span>@{{ item.expiryDate }}</span></td>
  75. <td class="td-warm text-muted"><span>@{{ item.inboundDate }}</span></td>
  76. <td class="td-warm text-muted"><span>@{{ item.batchNumber }}</span></td>
  77. <td class="td-warm text-muted"><span>@{{ item.lotNo }}</span></td>
  78. <td class="td-warm text-muted"><span>@{{ item.stayPutawayQty }}</span></td>
  79. </tr>
  80. </table>
  81. <nav aria-label="..+.">
  82. <ul class="pagination">
  83. <li class="page-item" :class="current===1?'disabled':''">
  84. <button class="page-link" @click="pagination('pre')">上一页</button>
  85. </li>
  86. <li class="page-item" :class="current===resData.details.pages?'disabled':''">
  87. <button class="page-link" @click="pagination('next')">下一页</button>
  88. </li>
  89. </ul>
  90. </nav>
  91. </div>
  92. @endsection
  93. @section('lastScript')
  94. <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>{{--新版2--}}
  95. <script>
  96. /**
  97. * @Description: 轮询执行方法
  98. * @param {func} function 需要轮询的方法
  99. * @param {time} number 轮询间隔,默认1s
  100. * @param {endTime} number 可轮询时间, 为空时一直轮询
  101. * @param {immedaite} boolean 第一次是否立即执行
  102. * @author: XuLijuan
  103. */
  104. const pollingFunction = (func, time = 1000, endTime, immediate = false) => {
  105. immediate && func(); //是否立即执行一次,由实际决定
  106. const startTime = new Date().getTime();
  107. const pollTimer = setInterval(() => {
  108. const nowTime = new Date().getTime();
  109. if (endTime && nowTime - startTime >= endTime) {
  110. pollTimer && clearInterval(pollTimer);
  111. }
  112. func();
  113. }, time);
  114. return pollTimer;
  115. };
  116. let vue = new Vue({
  117. el: "#list",
  118. data: {
  119. timer: null,
  120. resData: {
  121. details: {
  122. data: [],
  123. total: null,
  124. current: 1,
  125. pages: null,
  126. size: 50,
  127. },
  128. itemDetail: null,
  129. },
  130. searchSelects: {
  131. owners: {!! $owners !!},
  132. workGroups: {!! $workGroups !!},
  133. },
  134. selectTr: null,
  135. search: {
  136. customerCode: null,
  137. container: null,
  138. asnNo: null,
  139. receiveStartTime: null,
  140. receiveEndTime: null,
  141. receiveTaskNo: null,
  142. workGroupId: null,
  143. },
  144. size: 50,
  145. current: 1,
  146. },
  147. created() {
  148. window.tempTip.show("功能关闭,移至SWMS系统进行操作");
  149. return;
  150. let url = this.getBaseUrl() + `/api/device/check/receiveBoard/stayPutawayList?size=${this.size}&current=${this.current}`
  151. this.initSearchDate();
  152. this.getPageResult(url);
  153. },
  154. beforeDestroy() {
  155. clearInterval(this.timer)
  156. },
  157. mounted: function () {
  158. $('#list').removeClass('d-none');
  159. pollingFunction(this.searchData, 1000 * 30)
  160. let column = [
  161. {name: 'serial', value: '序号', neglect: true},
  162. {name: 'warehouseName', value: '仓库',neglect: true},
  163. {name: 'customerName', value: '货主',neglect: true},
  164. {name: 'container', value: '容器号',neglect: true},
  165. {name: 'receiveTaskNo', value: '收货任务号',neglect: true},
  166. {name: 'asnNo', value: 'ASN号',neglect: true},
  167. {name: 'receivePerson', value: '收货员',neglect: true},
  168. {name: 'receiveTime', value: '收货时间',neglect: true},
  169. {name: 'commSku', value: 'sku',neglect: true},
  170. {name: 'commBarcode', value: '条码',neglect: true},
  171. {name: 'commName', value: '商品名称',neglect: true},
  172. {name: 'quanlityCondition', value: '质量状态',neglect: true},
  173. {name: 'attrWarehouse', value: '属性仓',neglect: true},
  174. {name: 'produceDate', value: '生产日期',neglect: true},
  175. {name: 'expiryDate', value: '失效日期',neglect: true},
  176. {name: 'inboundDate', value: '入库日期',neglect: true},
  177. {name: 'batchNumber', value: '批号',neglect: true},
  178. {name: 'lotNo', value: '批次号',neglect: true},
  179. {name: 'stayPutawayQty', value: '待上架数量',neglect: true},
  180. ];
  181. new Header({
  182. el: "table",
  183. name: "details",
  184. column: column,
  185. data: this.resData.details.data,
  186. restorationColumn: 'addtime',
  187. isCheckAllBox:false,
  188. fixedTop: ($('#form_div').height()) + ($('#btn').height()) + 1,
  189. }).init();
  190. },
  191. methods: {
  192. getPageResult(url) {
  193. axios.post(url, this.getSearch()).then(res => {
  194. if (res.data.code !== 200) {
  195. this.resData.details.data = [];
  196. this.resData.details.total = 0
  197. this.resData.details.current = 1
  198. this.resData.details.pages = 0
  199. this.resData.details.size = 50;
  200. } else {
  201. this.resData.details.data = res.data.data.list;
  202. this.resData.details.total = res.data.data.page.total;
  203. this.resData.details.current = res.data.data.page.pageNum;
  204. this.resData.details.pages = res.data.data.page.pages
  205. this.resData.details.size = res.data.data.page.pageSize;
  206. }
  207. });
  208. },
  209. getSearch() {
  210. let search = Object.assign({}, this.search);
  211. search.startTime += ' 00:00:00';
  212. search.endTime += ' 23:59:59';
  213. return search;
  214. },
  215. //初始化日期为今天和昨天
  216. initSearchDate() {
  217. let day1 = new Date();
  218. day1.setTime(day1.getTime() - 24 * 60 * 60 * 1000);
  219. let s1 = day1.getFullYear() + "-" + ((day1.getMonth() + 1) >= 10 ? (day1.getMonth() + 1) : ('0' + (day1.getMonth() + 1))) + "-" + (day1.getDate() >= 10 ? day1.getDate() : ('0' + day1.getDate()));
  220. //今天的时间
  221. let day2 = new Date();
  222. day2.setTime(day2.getTime());
  223. let s2 = day2.getFullYear() + "-" + ((day2.getMonth() + 1) >= 10 ? (day2.getMonth() + 1) : ('0' + (day2.getMonth() + 1))) + "-" + (day2.getDate() >= 10 ? day2.getDate() : ('0' + day2.getDate()));
  224. this.search.startTime = s1;
  225. this.search.endTime = s2;
  226. },
  227. searchData() {
  228. this.current = 1;
  229. this.pagination();
  230. },
  231. //根据环境获取不同的url
  232. getBaseUrl() {
  233. let url = null;
  234. let env = "{{ config('app.env') }}";
  235. if (env === 'local') {
  236. url = 'http://127.0.0.1:8116'
  237. } else if (env === 'production') {
  238. url = 'https://api-back.baoshi56.com'
  239. }
  240. return url;
  241. },
  242. pagination(flag) {
  243. if (flag === 'pre' && this.current > 1) {
  244. this.current--;
  245. } else if (flag === 'next' && this.current < this.resData.details.pages) {
  246. this.current++;
  247. }
  248. let url = this.getBaseUrl() + `/api/device/check/receiveBoard/stayPutawayList?size=${this.size}&current=${this.current}`
  249. this.getPageResult(url);
  250. },
  251. },
  252. });
  253. </script>
  254. @endsection