|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <view> | 
|---|
|  |  |  | <view class="list list-font-color shop-car" :class="orderDetl.color" v-for="orderDetl in orderCarList" > | 
|---|
|  |  |  | <view class="list list-font-color shop-car" :class="orderDetl.color" v-for="(orderDetl,index) in orderCarList" :key="index"> | 
|---|
|  |  |  | <view class="list-left"> | 
|---|
|  |  |  | <view class="detl-threeCode">{{orderDetl.threeCode}}</view> | 
|---|
|  |  |  | <view>主单号:{{orderDetl.orderNo}}</view> | 
|---|
|  |  |  | <view>编号:{{orderDetl.matnr}}</view> | 
|---|
|  |  |  | <view>名称:{{orderDetl.maktx}}</view> | 
|---|
|  |  |  | <view>总数量:{{orderDetl.anfme}}</view> | 
|---|
|  |  |  | <view>入库数量:{{orderDetl.anfme}}</view> | 
|---|
|  |  |  | <view>入库数量:{{orderDetl.pakinQty}}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="list-right" @click="addItem(orderDetl)"> | 
|---|
|  |  |  | <view class="list-right" @click="chageDetl(index)"> | 
|---|
|  |  |  | <uni-icons type="settings" size="25"  color="#fff"></uni-icons> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <!-- 垫高 --> | 
|---|
|  |  |  | <view style="height: 120rpx;"></view> | 
|---|
|  |  |  | <!-- 底部操作按钮 --> | 
|---|
|  |  |  | <view class="buttom"> | 
|---|
|  |  |  | <button size="mini" type="primary" @click="agvStart('warn')">启动入库</button> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <!-- 弹窗 --> | 
|---|
|  |  |  | <view> | 
|---|
|  |  |  | <uni-popup ref="chageDetl" type="dialog"> | 
|---|
|  |  |  | <view class="popup"> | 
|---|
|  |  |  | <!-- 标题 --> | 
|---|
|  |  |  | <view class="title">入库数量</view> | 
|---|
|  |  |  | <view class="popup-item"> | 
|---|
|  |  |  | <uni-number-box :value="count" :step='1' :max="9999999" color="#747474" @change="changeValue" /> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="btn"> | 
|---|
|  |  |  | <view class="btn-left" @click="remove()">移除物料</view> | 
|---|
|  |  |  | <view class="btn-right" @click="changeCount()">修改数量</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </uni-popup> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <!-- 弹窗 --> | 
|---|
|  |  |  | <view> | 
|---|
|  |  |  | <uni-popup ref="agvStart" type="dialog"> | 
|---|
|  |  |  | <view class="popup"> | 
|---|
|  |  |  | <!-- 标题 --> | 
|---|
|  |  |  | <view class="title">启动入库</view> | 
|---|
|  |  |  | <view class="popup-item"> | 
|---|
|  |  |  | <view class="popup-item-left">货架码:</view> | 
|---|
|  |  |  | <view class="popup-item-right"><input type="text" v-model="barcode"></view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="popup-item"> | 
|---|
|  |  |  | <view class="popup-item-left">站点码:</view> | 
|---|
|  |  |  | <view class="popup-item-right"><input type="text" v-model="agvDevp"></view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="btn"> | 
|---|
|  |  |  | <view class="btn-left" @click="agvStartClose()">取消</view> | 
|---|
|  |  |  | <view class="btn-right" @click="agvStartConfirm()">入库</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </uni-popup> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | // todo: 购物车优化,存储购物车内容,退出页面再进后购物车还在 | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | orderCarList: [] | 
|---|
|  |  |  | orderCarList: [], | 
|---|
|  |  |  | count: 0, | 
|---|
|  |  |  | index: 0, | 
|---|
|  |  |  | barcode: '', | 
|---|
|  |  |  | agvDevp: '', | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onShow() { | 
|---|
|  |  |  | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | chageDetl(index) { | 
|---|
|  |  |  | this.index = index | 
|---|
|  |  |  | this.count = this.orderCarList[index].pakinQty | 
|---|
|  |  |  | this.$refs.chageDetl.open() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 修改数量 | 
|---|
|  |  |  | changeCount() { | 
|---|
|  |  |  | if (this.count > this.orderCarList[this.index].anfme) { | 
|---|
|  |  |  | uni.showToast({ title: '数量不合法!', icon: "none", position: 'top' }) | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.orderCarList[this.index].pakinQty = this.count | 
|---|
|  |  |  | this.$forceUpdate() // 强制刷新 | 
|---|
|  |  |  | this.$refs.chageDetl.close() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 移除物料 | 
|---|
|  |  |  | remove() { | 
|---|
|  |  |  | this.orderCarList.splice(this.index, 1) | 
|---|
|  |  |  | this.$refs.chageDetl.close() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | changeValue(value) { | 
|---|
|  |  |  | this.count = value | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | agvStart() { | 
|---|
|  |  |  | this.$refs.agvStart.open() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | agvStartClose() { | 
|---|
|  |  |  | this.barcode = '' | 
|---|
|  |  |  | this.agvDevp = '' | 
|---|
|  |  |  | this.$refs.agvStart.close() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | agvStartConfirm() { | 
|---|
|  |  |  | let _this = this | 
|---|
|  |  |  | if (_this.barcode === '') { | 
|---|
|  |  |  | uni.showToast({ title: '货架码为空!', icon: "error", position: 'top' }) | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (_this.agvDevp === '') { | 
|---|
|  |  |  | uni.showToast({ title: '站点码为空!', icon: "error", position: 'top' }) | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (_this.orderCarList.length === 0) { | 
|---|
|  |  |  | uni.showToast({ title: '组托列表为空!', icon: "error", position: 'top' }) | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (let k of _this.orderCarList) { | 
|---|
|  |  |  | if (k.pakinQty == 0) { | 
|---|
|  |  |  | uni.showToast({ title: `${k.matnr}数量不能为 0 !`, icon: "error", position: 'top' }) | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | let combMat = { orderNo:'', barcode: '', locNo: '', combMats: [] } | 
|---|
|  |  |  | let combMats = [] | 
|---|
|  |  |  | for (let item of _this.orderCarList) { | 
|---|
|  |  |  | combMat.orderNo = item.orderNo | 
|---|
|  |  |  | combMat.barcode = _this.barcode | 
|---|
|  |  |  | combMat.locNo = _this.agvDevp | 
|---|
|  |  |  | combMat.combMats = [] | 
|---|
|  |  |  | let combM = {csocode: item.threeCode,isoseq: item.deadTime,matnr: item.matnr,batch: item.batch,anfme: item.pakinQty,maktx: item.maktx,specs: item.specs} | 
|---|
|  |  |  | combMat.combMats.push(combM) | 
|---|
|  |  |  | combMats.push({...combMat}) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.comb(combMats) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | comb(combMats) { | 
|---|
|  |  |  | let _this = this; | 
|---|
|  |  |  | uni.request({ | 
|---|
|  |  |  | url: _this.baseUrl + '/agvMobile/start/pakin/auth', | 
|---|
|  |  |  | data: JSON.stringify({ | 
|---|
|  |  |  | barcode: _this.barcode, | 
|---|
|  |  |  | containerCode: _this.barcode, | 
|---|
|  |  |  | devNo: _this.agvDevp, | 
|---|
|  |  |  | combParams: combMats | 
|---|
|  |  |  | }), | 
|---|
|  |  |  | method: 'POST', | 
|---|
|  |  |  | header: { | 
|---|
|  |  |  | 'token': uni.getStorageSync('token') | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | success(result) { | 
|---|
|  |  |  | var res = result.data | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | _this.orderCarList = [] | 
|---|
|  |  |  | _this.$refs.agvStart.close() | 
|---|
|  |  |  | uni.showToast({ title: '启动成功!', icon: "success", position: 'top' }) | 
|---|
|  |  |  | setTimeout(()=> { | 
|---|
|  |  |  | _this.getOpenerEventChannel().emit('acceptDataFromOpenedPage', {data: 1}); | 
|---|
|  |  |  | uni.navigateBack({}) | 
|---|
|  |  |  | },1000) | 
|---|
|  |  |  | } else if (res.code == 403) { | 
|---|
|  |  |  | uni.showToast({ title: res.msg, icon: "error", position: 'top' }) | 
|---|
|  |  |  | setTimeout(() => { uni.reLaunch({ url: '../../login/login' }); }, 1000); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | uni.showToast({ title: res.msg, icon: "error", position: 'top' }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  | 
|---|
|  |  |  | font-size: 28px; | 
|---|
|  |  |  | font-weight: bold; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .popup { | 
|---|
|  |  |  | width: 80vw; | 
|---|
|  |  |  | min-height: 100rpx; | 
|---|
|  |  |  | background-color: #FFF; | 
|---|
|  |  |  | border-radius: 25rpx; | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .title { | 
|---|
|  |  |  | height: 100rpx; | 
|---|
|  |  |  | line-height: 100rpx; | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | color: #606266; | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | font-size: 16px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .popup-item { | 
|---|
|  |  |  | height: 80rpx; | 
|---|
|  |  |  | line-height: 80rpx; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | justify-content: center; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .popup-item-left { | 
|---|
|  |  |  | width: 16vw; | 
|---|
|  |  |  | padding-right: 20rpx; | 
|---|
|  |  |  | text-align: right; | 
|---|
|  |  |  | color: #606266; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .popup-item-right { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | width: 50vw; | 
|---|
|  |  |  | height: 50rpx; | 
|---|
|  |  |  | padding: 2px 5px; | 
|---|
|  |  |  | border: 1px solid #E4E7ED; | 
|---|
|  |  |  | border-radius: 5rpx; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .popup-item-right input{ | 
|---|
|  |  |  | color: #606266; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .btn { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | height: 90rpx; | 
|---|
|  |  |  | margin-top: 20rpx; | 
|---|
|  |  |  | border-top: 1px solid #DCDFE6; | 
|---|
|  |  |  | justify-content: center; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .btn-left { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | flex: 1; | 
|---|
|  |  |  | height: 100%; | 
|---|
|  |  |  | justify-content: center; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | color: #e2231a; | 
|---|
|  |  |  | border-right: 1px solid #DCDFE6; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .btn-right { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | flex: 1; | 
|---|
|  |  |  | justify-content: center; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | color: #409EFF; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|