| <template> | 
|     <view> | 
|         <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> | 
|         </uni-segmented-control> | 
|         <view class="content"> | 
|             <view v-if="current === 0" style="width: 95%;"> | 
|                 <view style="margin-top: 10px;margin-left: 20px;"> | 
|                     <u-sticky offset-top="0" zIndex="999" bgColor="#fff" style="width: 100%;"> | 
|                         <view style="background-color: #fff; padding-bottom: 20rpx;"> | 
|                             <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> | 
|                             <uni-forms ref="formData" label-width="120"> | 
|                                 <uni-forms-item label="出库地址" style="background-color: #fff;"> | 
|                                     <uni-easyinput type="text" maxlength="25" :focus="true" v-model="outAddress" | 
|                                         placeholder="请输入出库地址" ref='midInput' /> | 
|                                 </uni-forms-item> | 
|                             </uni-forms> | 
|                         </view> | 
|                     </u-sticky> | 
|                     <uni-list class="body"> | 
|                         <uni-list-item direction="column" v-for="(item,index) in stockInfo" :key="item.id"> | 
|                             <template v-slot:body> | 
|                                 <view class="uni-list-box"> | 
|                                     <checkbox @click="click(item)"></checkbox> | 
|                                     <view class="uni-content"> | 
|                                         <view class="uni-title-sub uni-ellipsis-2">托盘号:{{item.barcode}}</view> | 
|                                         <view class="uni-note">货位编号:{{item.locationNo}}</view> | 
|                                         <view class="uni-note">物料编码:{{item.matCode}}</view> | 
|                                         <view class="uni-note">物料名称:{{item.matName}}</view> | 
|                                         <view class="uni-note">安规:{{item.safety_regulations}}</view> | 
|                                         <view class="uni-note">数量:{{item.quantity}}</view> | 
|                                     </view> | 
|                                 </view> | 
|                             </template> | 
|                         </uni-list-item> | 
|                     </uni-list> | 
|                     <view style="background-color: #fff; padding: 20rpx,20rpx;" class="footerxy"> | 
|                         <u-sticky offset-top="80%" zIndex="999"> | 
|                             <button @click="outbound()" type="primary" size="default">出库确认</button> | 
|                         </u-sticky> | 
|                     </view> | 
|                 </view> | 
|             </view> | 
|             <view v-if="current === 1" style="width: 95%;"> | 
|                 <uni-forms label-width="120" style="margin-top: 20px;margin-left: 20px;"> | 
|                     <uni-forms-item label="出库库位"> | 
|                         <uni-easyinput type="text" :focus="!focus" @input="getMatInfo" v-model="startpoint" | 
|                             placeholder="请输入出库库位" ref='midInput' /> | 
|                     </uni-forms-item> | 
|                     <uni-forms-item label="出库站点"> | 
|                         <uni-easyinput type="text" :focus="focus" v-model="endpoint" placeholder="请输入出库站点" | 
|                             ref='midInput' /> | 
|                     </uni-forms-item> | 
|                     <uni-forms-item> | 
|                         <button @click="manualOutbound" type="primary" size="default" | 
|                             style="margin-top: 2%;">发送任务</button> | 
|                     </uni-forms-item> | 
|                 </uni-forms> | 
|                 <uni-list class="body"> | 
|                     <uni-list-item direction="column" v-for="(item,index) in matInfos" :key="index"> | 
|                         <template v-slot:body> | 
|                             <view class="uni-list-box"> | 
|                                 <view class="uni-content"> | 
|                                     <view class="uni-title-sub uni-ellipsis-2">序号:{{index}}</view> | 
|                                     <view class="uni-title-sub uni-ellipsis-2">物料编号:{{item.mater_code}}</view> | 
|                                     <view class="uni-title-sub uni-ellipsis-2">物料名称:{{item.mater_name}}</view> | 
|                                     <view class="uni-title-sub uni-ellipsis-2">安规:{{item.safety}}</view> | 
|                                     <view class="uni-title-sub uni-ellipsis-2">产品条码:{{item.product_barcode}}</view> | 
|                                 </view> | 
|                             </view> | 
|                         </template> | 
|                     </uni-list-item> | 
|                 </uni-list> | 
|             </view> | 
|   | 
|         </view> | 
|         <u-toast ref="uToast" /> | 
|     </view> | 
| </template> | 
|   | 
| <script> | 
|     export default { | 
|         data() { | 
|             return { | 
|                 items: ['手动出库', '指定出库'], | 
|                 current: 0, | 
|                 stockInfo: [], | 
|                 outItems: [], | 
|                 outAddress: "", | 
|                 pageNo: 1, | 
|                 searchValue: "", | 
|                 focus: false, | 
|                 startpoint: "", | 
|                 endpoint: "", | 
|                 matInfos: [], | 
|             } | 
|         }, | 
|         onLoad(res) { | 
|             this.getData(); | 
|         }, | 
|         onReachBottom() { | 
|             this.pageNo += 1; | 
|             this.getData(); | 
|         }, | 
|         methods: { | 
|             onClickItem(e) { | 
|                 if (this.current !== e.currentIndex) { | 
|                     this.current = e.currentIndex; | 
|                 } | 
|             }, | 
|             search() { | 
|                 this.$nextTick(() => { | 
|                     this.pageNo = 1; | 
|                     this.getData(); | 
|                 }) | 
|             }, | 
|             getData() { | 
|                 var postData = { | 
|                     MainData: { | 
|                         system: "KB", | 
|                         matCode: this.searchValue | 
|                     }, | 
|                     Extra: this.pageNo | 
|                 } | 
|                 this.$u.post('/api/VV_StockProduct/GetStockInfo', postData).then((res) => { | 
|                     if (res.status) { | 
|                         if (res.data) { | 
|                             if (this.pageNo == 1) { | 
|                                 this.stockInfo = res.data; | 
|                             } else { | 
|                                 this.stockInfo = this.stockInfo.concat(res.data); | 
|                             } | 
|                         } else { | 
|                             this.$refs.uToast.show({ | 
|                                 title: res.message, | 
|                             }); | 
|                         } | 
|                     } else { | 
|                         this.stockInfo = []; | 
|                         this.$refs.uToast.show({ | 
|                             title: res.message, | 
|                             type: "error" | 
|                         }); | 
|                     } | 
|                 }) | 
|             }, | 
|             getMatInfo() { | 
|                 this.$nextTick(() => { | 
|                     if (this.startpoint != "") { | 
|                         if (this.startpoint.length == 20) { | 
|                             var postData = { | 
|                                 MainData: { | 
|                                     locationCode: this.startpoint | 
|                                 } | 
|                             } | 
|                             this.$u.post('/api/StockOperate/GetProductMatInfo', postData).then(res => { | 
|                                 if (res.status) { | 
|                                     this.matInfos = res.data; | 
|                                     this.focus = true; | 
|                                 } else { | 
|                                     this.$refs.uToast.show({ | 
|                                         title: res.message, | 
|                                         type: "error" | 
|                                     }); | 
|                                     return; | 
|                                 } | 
|                             }) | 
|                         } else { | 
|                             this.$refs.uToast.show({ | 
|                                 title: "库位号扫描错误", | 
|                                 type: "error" | 
|                             }); | 
|                             return; | 
|                         } | 
|                     } | 
|                 }) | 
|             }, | 
|             manualOutbound() { | 
|                 if (this.startpoint == "") { | 
|                     this.$refs.uToast.show({ | 
|                         title: "请输入起始地址", | 
|                         type: "error" | 
|                     }); | 
|                     return; | 
|                 } | 
|                 if (this.endpoint == "") { | 
|                     this.$refs.uToast.show({ | 
|                         title: "请输入出库地址", | 
|                         type: "error" | 
|                     }); | 
|                     return; | 
|                 } | 
|                 if (this.matInfos.length == 0) { | 
|                     this.$refs.uToast.show({ | 
|                         title: "无库存信息", | 
|                         type: "error" | 
|                     }); | 
|                     return; | 
|                 } | 
|                 var postData = { | 
|                     MainData: { | 
|                         "locationCode": this.startpoint, | 
|                         "endPoint": this.endpoint | 
|                     }, | 
|                 } | 
|                 this.$u.post('/api/Outbound/ProductOutboundByLocation', postData).then((res) => { | 
|                     if (res.status) { | 
|                         this.$refs.uToast.show({ | 
|                             title: "出库成功", | 
|                             type: "success" | 
|                         }); | 
|                         this.startpoint = ""; | 
|                         this.endPoint = ""; | 
|                         this.matInfos = []; | 
|                     } else { | 
|                         this.$refs.uToast.show({ | 
|                             title: "出库失败" + res.message, | 
|                             type: "error" | 
|                         }); | 
|                     } | 
|                 }) | 
|             }, | 
|             outbound() { | 
|                 if (this.outItems.length == 0) { | 
|                     this.$refs.uToast.show({ | 
|                         title: "请选择要出库的数据", | 
|                         type: "error" | 
|                     }); | 
|                     return; | 
|                 } | 
|                 if (this.outItems.length > 1) { | 
|                     this.$refs.uToast.show({ | 
|                         title: "请选择一条要出库的数据", | 
|                         type: "error" | 
|                     }); | 
|                     return; | 
|                 } | 
|                 if (this.outAddress == "") { | 
|                     this.$refs.uToast.show({ | 
|                         title: "请输入出库地址", | 
|                         type: "error" | 
|                     }); | 
|                     return; | 
|                 } | 
|                 var postData = { | 
|                     MainData: { | 
|                         "locationCode": this.outItems[0].locationNo, | 
|                         "endPoint": this.outAddress | 
|                     }, | 
|                 } | 
|   | 
|                 this.$u.post('/api/Outbound/ProductOutboundByLocation', postData).then((res) => { | 
|                     if (res.status) { | 
|                         this.$refs.uToast.show({ | 
|                             title: "出库成功", | 
|                             type: "success" | 
|                         }); | 
|                         this.outAddress = ""; | 
|                         this.outItems = []; | 
|                         this.stockInfo = []; | 
|                         this.pageNo = 1; | 
|                         this.search(); | 
|                     } else { | 
|                         this.$refs.uToast.show({ | 
|                             title: "出库失败" + res.message, | 
|                             type: "error" | 
|                         }); | 
|                     } | 
|                 }) | 
|             }, | 
|             click(e) { | 
|                 if (this.outItems.find(x => x.barcode == e.barcode)) { | 
|                     this.outItems.map((item, index) => { | 
|                         if (item.barcode == e.barcode) { | 
|                             this.outItems.splice(index, 1); | 
|                         } | 
|                     }) | 
|                 } else { | 
|                     this.outItems.push(e); | 
|                 } | 
|             } | 
|         } | 
|     } | 
| </script> | 
|   | 
| <style lang="scss"> | 
|     @import '@/common/uni-ui.scss'; | 
|   | 
|     .content { | 
|         display: flex; | 
|         height: 150px; | 
|     } | 
|   | 
|     .content-text { | 
|         font-size: 14px; | 
|         color: #666; | 
|     } | 
|   | 
|     .footer { | 
|         // padding-top: 50%; | 
|     } | 
|   | 
|     .footerxy { | 
|         width: 100%; | 
|         height: 140rpx; | 
|         text-align: center; | 
|         position: fixed; | 
|         /*1、【relative】相对定位;2、【absolute】绝对定位;3、【fixed】固定定位;4、【static】默认值;5、【sticky】粘性定位。*/ | 
|         left: 0px; | 
|         /*定位:离页面左边0px的位置*/ | 
|         bottom: 0px; | 
|         /*定位:离页面底部0px的位置*/ | 
|         padding-top: 20rpx; | 
|         margin-left: 20px; | 
|     } | 
| </style> |