receive.blade.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. @extends('layouts.app')
  2. @section('title')手持入库-收货@endsection
  3. @section('content')
  4. <div class="d-none" id="container">
  5. <div class="card offset-md-3 col-md-6">
  6. <div class="card-header text-center bg-transparent" id="header_title">
  7. <span class="font-weight-bold h3">收货</span>
  8. <<<<<<< HEAD
  9. =======
  10. {{-- <span class="font-weight-bold text-danger">暂停使用</span>--}}
  11. >>>>>>> b0347ca84d8eeedd9c1ac88b1c55b77c6a0613e8
  12. </div>
  13. <div >
  14. <div class="offset-1 mt-2">
  15. <span class="font-weight-bold h5">ASN号:</span><br>
  16. <p class="small font-weight-light">可输入条码,ASN号,货主编号(如:YOUWU)_搜索</p>
  17. <div class="form-group row mt-2">
  18. <label for="asn"></label>
  19. <input type="text" class="form-control col-8" id="asn" autocomplete="off"
  20. :class="errors.asnno ? 'is-invalid' : ''" v-model="info.asnno">
  21. <span class="ml-2">
  22. <button type="button" id="select" class="btn btn-info font-weight-bold" @click="selectAsn()">搜索</button>
  23. </span>
  24. <span class="invalid-feedback" role="alert" v-if="errors.asnno">
  25. <strong>@{{ errors.asnno[0] }}</strong>
  26. </span>
  27. </div>
  28. </div>
  29. <div style="overflow: auto;overflow-x: hidden" id="cardTable">
  30. <table class="table-sm table-striped table-bordered table-hover"
  31. style="background: rgb(255, 255, 255);">
  32. <tr v-for="(asn,i) in asns" @click="selectTrOne(i,asn)" :class="selectTr===i+1?'focusing' : ''">
  33. <td style="filter:grayscale(30%);">
  34. <div>
  35. <div style="transform:scale(1)" class="pl-0">
  36. <span v-if="asn.asnno"><span class="text-info font-weight-bold">ASN编号:</span><span class="text-black font-weight-bold">@{{ asn.asnno }}</span></span><br>
  37. <span v-if="asn.asnstatus">
  38. <span class="font-weight-bold">状态:</span>
  39. <span class="text-lowercase " v-if="asn.asnstatus==='00'">订单创建</span>
  40. <span class="text-lowercase " v-if="asn.asnstatus==='30'">部分收货</span>
  41. </span>
  42. <span v-if="asn.customerid"><span class="font-weight-bold">货主:</span><span class="text-black font-weight-bold">@{{ asn.customerid }}<span>&nbsp;</span></span></span>
  43. <span v-if="asn.asnreference1"><span class="text-lowercase">客户订单号1:</span><span class="text-lowercase font-weight-bold">@{{ asn.asnreference1 }} <span>&nbsp;</span></span></span>
  44. <span v-if="asn.notes"><span class="text-lowercase">备注:</span><span class="text-lowercase font-weight-bold">@{{ asn.notes }}<span>&nbsp;</span> </span></span>
  45. <span v-if="asn.addtime"><span class="text-black">创建时间:</span><span class="text-black-50 font-weight-bold">@{{ asn.addtime }}<span>&nbsp;</span></span></span>
  46. <span>
  47. <span class="btn btn-success btn-sm" v-if="!asn.up" @click.stop="getAsnDetails(asn)">明细</span>
  48. <span class="btn btn-secondary btn-sm" v-if="asn.up" @click.stop="closeDetail(asn)">收起</span>
  49. </span>
  50. <table class="table-sm table-borderless" v-if="asns.length>0 && asn.asnDetails && asn.up">
  51. <tr v-for="(asnDetail,i) in asn.asnDetails">
  52. <td>
  53. <span><span class="small">产品:</span><span class="text-black small">@{{ asnDetail.sku }}</span></span>
  54. <span><span class="small">条码:</span><span class="text-black font-weight-bold small">@{{ asnDetail.alternate_sku1 }}</span></span>
  55. <span><span class="small">品名:</span><span class="text-black small">@{{ asnDetail.skudescrc }}</span></span>
  56. <span><span class="small">预期数量:</span><span class="text-black font-weight-bold small">@{{ asnDetail.expectedqty }}</span></span>
  57. <span><span class="small">已收数量:</span><span class="text-black font-weight-bold small">@{{ asnDetail.receivedqty?asnDetail.receivedqty:asnDetail.receivedqty_each }}</span></span>
  58. <td/>
  59. </tr>
  60. </table>
  61. </div>
  62. </div>
  63. </td>
  64. </tr>
  65. </table>
  66. </div>
  67. </div>
  68. <div class="card-footer bg-transparent">
  69. <button type="button" id="confirm" class="btn btn-md btn-success font-weight-bold float-right" @click="ensure()">确定</button>
  70. <button type="button" id="cancel" class="btn btn-md btn-danger font-weight-bold float-left" @click="cancel()">取消</button>
  71. </div>
  72. </div>
  73. </div>
  74. @stop
  75. @section('lastScript')
  76. <script type="text/javascript">
  77. new Vue({
  78. el:"#container",
  79. data:{
  80. height:0,//屏幕高度
  81. info:{},
  82. errors:{},
  83. asns:[],
  84. selectTr:'',
  85. isAndroid:false,
  86. asnno:'',
  87. customerid:'',
  88. },
  89. mounted(){
  90. if (navigator.userAgent.indexOf("Android")!==-1)this.isAndroid = true;
  91. this.pageInit();
  92. $("#container").removeClass("d-none");
  93. this.height=window.screen.availHeight;
  94. document.getElementById('cardTable').style.height=this.height*0.35+'px';
  95. $('#asn').trigger("click").focus();
  96. },
  97. methods:{
  98. //页面初始化
  99. pageInit(){
  100. if (!this.isAndroid)return;
  101. let element = document.getElementById("navbarSupportedContent").parentElement;
  102. element.className = "row";
  103. element.children[0].className += " col-5";
  104. element.innerHTML = element.children[0].outerHTML;
  105. let e1 = document.getElementById("menu");
  106. let e2 = document.getElementById("demand-div");
  107. if (e1)e1.remove();
  108. if (e2)e2.remove();
  109. document.getElementById('app').firstElementChild.style.display = 'none';
  110. },
  111. selectAsn(){
  112. this.selectTr='';
  113. let url = '{{url('store/handInStorage/selectAsn')}}';
  114. window.axios.post(url,{asnno:this.info.asnno})
  115. .then(res=>{
  116. if (res.data.success){
  117. this.asns=res.data.data;
  118. this.$forceUpdate()
  119. return;
  120. }
  121. window.tempTip.setDuration(2000);
  122. window.tempTip.show(res.data.data);
  123. }).catch(err=>{
  124. window.tempTip.setDuration(2000);
  125. window.tempTip.show("网络错误:"+err);
  126. })
  127. },
  128. getAsnDetails(asn){
  129. if (!asn)return;
  130. let url = '{{url('store/handInStorage/selectAsnDetails')}}';
  131. window.axios.post(url,{asnno:asn.asnno})
  132. .then(res=>{
  133. if (res.data.success){
  134. this.asns.forEach(function (Asn){
  135. if (Asn.asnno==asn.asnno){
  136. Asn.up=true;
  137. Asn.asnDetails=res.data.data;
  138. }
  139. })
  140. this.$forceUpdate()
  141. return;
  142. }
  143. window.tempTip.setDuration(2000);
  144. window.tempTip.show(res.data.data);
  145. window.tempTip.showErrorAudio();
  146. }).catch(err=>{
  147. window.tempTip.setDuration(2000);
  148. window.tempTip.show("网络错误:"+err);
  149. window.tempTip.showErrorAudio();
  150. })
  151. },
  152. closeDetail(asn){
  153. this.asns.forEach(function (Asn){
  154. if (Asn.asnno==asn.asnno){
  155. Asn.up=false;
  156. }
  157. })
  158. this.$forceUpdate()
  159. },
  160. selectTrOne(i,asn){
  161. if (this.selectTr===i+1){
  162. this.selectTr=0
  163. }else {
  164. this.selectTr=i+1;
  165. this.info.asnno=asn.asnno;
  166. this.info.customerid=asn.customerid;
  167. this.info.asntype=asn.asntype;
  168. }
  169. },
  170. ensure(){
  171. let error = {};
  172. if (!this.info.asnno)error.asnno = ["ASN号必填"];
  173. if (this.info.asnno && this.info.asnno.indexOf('ASN')===-1)error.asnno = ["无效ASN号"];
  174. if (JSON.stringify(error)!=='{}'){this.errors = error;return;}
  175. if (!this.info.customerid||!this.info.asntype){this.info.customerid='';this.info.asntype='';}
  176. this.checkAsnOperation();
  177. },
  178. checkAsnOperation(){
  179. let url = '{{url('store/handInStorage/checkAsnOperation')}}';
  180. window.axios.post(url,{info:this.info})
  181. .then(res=>{
  182. if (res.data.success){
  183. window.location.href="{{url('store/handInStorage/receiveDetailPage')}}/" + res.data.data.asnno+'/'+ res.data.data.customerid;
  184. }else {
  185. window.tempTip.setDuration(2000);
  186. window.tempTip.show(res.data.data);
  187. window.tempTip.showErrorAudio();
  188. }
  189. }).catch(err=>{
  190. window.tempTip.setDuration(2000);
  191. window.tempTip.show("网络错误:"+err);
  192. window.tempTip.showErrorAudio();
  193. })
  194. },
  195. cancel(){
  196. setTimeout(function () {
  197. window.location.reload();
  198. },100);
  199. },
  200. },
  201. });
  202. </script>
  203. @stop