|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <view> | 
|---|
|  |  |  | <view style="padding: 16rpx 32rpx;font-size: 20px;font-weight: bold;"> | 
|---|
|  |  |  | <view>当前库位号:{{locNo}}</view> | 
|---|
|  |  |  | <view>当前货架码:{{barcode}}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="list list-font-color" :class="locDetl.color" v-for="(locDetl,index) in dataList" :key="index"> | 
|---|
|  |  |  | <view class="list-left"> | 
|---|
|  |  |  | <view>销售订单号:{{locDetl.threeCode}}</view> | 
|---|
|  |  |  | <view>主订单号:{{locDetl.orderNo}}</view> | 
|---|
|  |  |  | <view>商品编码:{{locDetl.matnr}}</view> | 
|---|
|  |  |  | <view>商品名称:{{locDetl.maktx}}</view> | 
|---|
|  |  |  | <view>库存:{{locDetl.anfme}}</view> | 
|---|
|  |  |  | <view>调整库存为:{{locDetl.barcode}}</view> | 
|---|
|  |  |  | <view>库存:{{locDetl.count}}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="list-right" @click="goToLocDetl(locDetl)"> | 
|---|
|  |  |  | <uni-icons type="right" size="25"  color="#fff"></uni-icons> | 
|---|
|  |  |  | <view class="list-right" @click="chageDetl(index)"> | 
|---|
|  |  |  | <uni-icons type="settings" size="25"  color="#fff"></uni-icons> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view style="height: 100rpx;display: flex;align-items: center;justify-content: center;" @click="add()"> | 
|---|
|  |  |  | <uni-icons type="folder-add" size="25"  color="#000" style="padding-right: 20rpx;"></uni-icons> 添加物料 | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!-- 弹窗 --> | 
|---|
|  |  |  | <view> | 
|---|
|  |  |  | <uni-popup ref="chageDetl" type="dialog"> | 
|---|
|  |  |  | <view class="popup"> | 
|---|
|  |  |  | <!-- 标题 --> | 
|---|
|  |  |  | <view class="title">商品信息</view> | 
|---|
|  |  |  | <view class="popup-item"> | 
|---|
|  |  |  | <view>订单号</view> | 
|---|
|  |  |  | <view style="margin-left: 20rpx;border-bottom: 1px solid #d8d8d8;"> <input type="text" v-model="orderNo"> </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="popup-item"> | 
|---|
|  |  |  | <view>销售单号</view> | 
|---|
|  |  |  | <view style="margin-left: 20rpx;border-bottom: 1px solid #d8d8d8;"> <input type="text" v-model="threeCode"> </view> | 
|---|
|  |  |  | </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 class="buttom"> | 
|---|
|  |  |  | <button size="mini" type="primary" @click="agvStart('warn')">添加物料</button> | 
|---|
|  |  |  | <button size="mini" type="primary" @click="adjust('warn')">调整库存</button> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | baseUrl: '', | 
|---|
|  |  |  | token: '', | 
|---|
|  |  |  | dataList: [] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | dataList: [], | 
|---|
|  |  |  | count: '', | 
|---|
|  |  |  | index: 0, | 
|---|
|  |  |  | locNo: '', | 
|---|
|  |  |  | barcode: '', | 
|---|
|  |  |  | orderNo: '', | 
|---|
|  |  |  | threeCode: '' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onShow() { | 
|---|
|  |  |  | 
|---|
|  |  |  | // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据 | 
|---|
|  |  |  | eventChannel.on('item', function(data) { | 
|---|
|  |  |  | console.log(data); | 
|---|
|  |  |  | _this.locNo = data.item.locNo | 
|---|
|  |  |  | _this.barcode = data.item.barcode | 
|---|
|  |  |  | for (let k of data.item.data) { | 
|---|
|  |  |  | k['count'] = k.anfme | 
|---|
|  |  |  | } | 
|---|
|  |  |  | _this.dataList = data.item.data | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | events: { | 
|---|
|  |  |  | matList: function(data) { | 
|---|
|  |  |  | data.data.suppCode = _this.barcode | 
|---|
|  |  |  | _this.checkMat(data.data) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | for (var i = 0; i < len; i++) { | 
|---|
|  |  |  | if (mat.matnr == this.dataList[i].matnr) { | 
|---|
|  |  |  | for (var j = 0; j < len; j++) { | 
|---|
|  |  |  | if (mat.batch == this.dataList[j].batch) { | 
|---|
|  |  |  | if (mat.threeCode == this.dataList[j].threeCode) { | 
|---|
|  |  |  | sameItem = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 相同物料 不同批号  新加列表 | 
|---|
|  |  |  | if (mat.batch != this.dataList[i].batch) { | 
|---|
|  |  |  | if (mat.threeCode != this.dataList[i].threeCode) { | 
|---|
|  |  |  | this.$forceUpdate() // 强制刷新 | 
|---|
|  |  |  | if (sameItem) { | 
|---|
|  |  |  | add = false | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | // 相同物料相同批号 数量累加 | 
|---|
|  |  |  | this.dataList[i].anfme += mat.anfme | 
|---|
|  |  |  | this.dataList[i].count += mat.count | 
|---|
|  |  |  | this.$forceUpdate() // 强制刷新 | 
|---|
|  |  |  | add = false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | if (add) { | 
|---|
|  |  |  | this.dataList.unshift(mat) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | chageDetl(index) { | 
|---|
|  |  |  | this.index = index | 
|---|
|  |  |  | this.count = this.dataList[index].count | 
|---|
|  |  |  | this.threeCode = this.dataList[index].threeCode | 
|---|
|  |  |  | this.orderNo = this.dataList[index].orderNo | 
|---|
|  |  |  | this.$refs.chageDetl.open() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 修改数量 | 
|---|
|  |  |  | changeCount() { | 
|---|
|  |  |  | this.dataList[this.index].count = this.count | 
|---|
|  |  |  | this.dataList[this.index].threeCode = this.threeCode | 
|---|
|  |  |  | this.dataList[this.index].orderNo = this.orderNo | 
|---|
|  |  |  | this.$forceUpdate() // 强制刷新 | 
|---|
|  |  |  | this.$refs.chageDetl.close() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 移除物料 | 
|---|
|  |  |  | remove() { | 
|---|
|  |  |  | this.dataList.splice(this.index, 1) | 
|---|
|  |  |  | this.$refs.chageDetl.close() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | adjust() { | 
|---|
|  |  |  | let _this = this | 
|---|
|  |  |  | let param = { | 
|---|
|  |  |  | locNo: _this.locNo, | 
|---|
|  |  |  | list: _this.dataList | 
|---|
|  |  |  | } | 
|---|
|  |  |  | uni.request({ | 
|---|
|  |  |  | url: `${_this.baseUrl}/agv/locDdetl/adjust/start`, | 
|---|
|  |  |  | header: {'token': uni.getStorageSync('token')}, | 
|---|
|  |  |  | data: param, | 
|---|
|  |  |  | method: 'POST', | 
|---|
|  |  |  | success(res) { | 
|---|
|  |  |  | res = res.data | 
|---|
|  |  |  | if (res.code == 200) { | 
|---|
|  |  |  | uni.showToast({ title: res.msg, icon: "success", position: 'top' }) | 
|---|
|  |  |  | _this.$refs.chageDetl.close() | 
|---|
|  |  |  | _this.getOpenerEventChannel().emit('acceptDataFromOpenedPage', {data: this.mat}); | 
|---|
|  |  |  | setTimeout(()=> { | 
|---|
|  |  |  | 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' }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | changeValue(value) { | 
|---|
|  |  |  | this.count = value | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <style> | 
|---|
|  |  |  | @import url('../../../static/css/common/order.css'); | 
|---|
|  |  |  | .list-font-color { | 
|---|
|  |  |  | color: #fff; | 
|---|
|  |  |  | background-color: #2299ff; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .order-sts-start { | 
|---|
|  |  |  | background-color: #3eb689; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .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> | 
|---|