<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.processSts$}}</view>
|
<view>库存:{{locDetl.count}}</view>
|
</view>
|
<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 style="width: 70px;">订单号</view>
|
<view style="margin-left: 20rpx;border-bottom: 1px solid #d8d8d8;"> <input type="text" v-model="orderNo"> </view>
|
</view>
|
<view class="popup-item">
|
<view style="width: 70px;">销售单号</view>
|
<view style="margin-left: 20rpx;border-bottom: 1px solid #d8d8d8;"> <input type="text" v-model="threeCode"> </view>
|
</view>
|
<view class="popup-item">
|
<view style="width: 70px;">工序</view>
|
<uni-combox style="height: 20px;" :candidates="processSts$List" placeholder="请选择工序" v-model="processSts$"></uni-combox>
|
</view>
|
<view class="popup-item">
|
<uni-number-box :value="count" :step='0.01' :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="adjust('warn')">调整库存</button>
|
</view>
|
</view>
|
</template>
|
|
<script>
|
export default {
|
data() {
|
return {
|
baseUrl: '',
|
token: '',
|
dataList: [],
|
count: '',
|
index: 0,
|
locNo: '',
|
barcode: '',
|
orderNo: '',
|
threeCode: '',
|
processSts$: '',
|
type: '',
|
processSts$List: ['待加工','已加工','无需加工']
|
}
|
},
|
onShow() {
|
let _this = this
|
this.baseUrl = uni.getStorageSync('baseUrl');
|
this.token = uni.getStorageSync('token');
|
// const eventChannel = this.$scope.eventChannel; // 兼容APP-NVUE
|
const eventChannel = this.getOpenerEventChannel();
|
// 监听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
|
// })
|
eventChannel.on('baseInfo', function(data) {
|
_this.getLocDetl(data.info.locNo,data.info.barcode)
|
_this.locNo = data.info.locNo
|
_this.barcode = data.info.barcode
|
_this.type = data.info.type
|
})
|
},
|
methods: {
|
getLocDetl(locNo,barcode) {
|
let _this = this
|
let param = {locNo:locNo,containerCode: barcode}
|
uni.request({
|
url: `${_this.baseUrl}/agvMobile/check/detl/v1`,
|
header: {'token': uni.getStorageSync('token')},
|
data: param,
|
method: 'POST',
|
success(res) {
|
res = res.data
|
if (res.code === 200) {
|
if (_this.type == 'con') {
|
_this.dataList = res.data.containerCode
|
} else {
|
_this.dataList = res.data.locNo
|
}
|
// for (let k of _this.dataList) {
|
// k['count'] = k.anfme
|
// }
|
} 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' })
|
}
|
}
|
})
|
},
|
add() {
|
let _this = this
|
uni.navigateTo({
|
url: "../mat/mat",
|
events: {
|
// 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据 另外一个页面传过来的
|
acceptDataFromOpenedPage: function(data) {
|
console.log(data.data);
|
setTimeout(()=> {
|
_this.findMat(data.data)
|
},100)
|
}
|
},
|
});
|
},
|
findMat(mat) {
|
let _this = this
|
uni.navigateTo({
|
url: "../mat/matSelected",
|
success: function(res) {
|
// 通过eventChannel向被打开页面传送数据 向另外一个页面传递值的
|
res.eventChannel.emit('item', {
|
item: mat
|
})
|
},
|
events: {
|
matList: function(data) {
|
data.data.suppCode = _this.barcode
|
_this.checkMat(data.data)
|
},
|
},
|
});
|
},
|
checkMat(mat) {
|
var len = this.dataList.length
|
var add = true ,sameItem = false
|
for (var i = 0; i < len; i++) {
|
if (mat.matnr == this.dataList[i].matnr) {
|
for (var j = 0; j < len; j++) {
|
if (mat.threeCode == this.dataList[j].threeCode) {
|
sameItem = true
|
}
|
}
|
// 相同物料 不同批号 新加列表
|
if (mat.threeCode != this.dataList[i].threeCode) {
|
this.$forceUpdate() // 强制刷新
|
if (sameItem) {
|
add = false
|
} else {
|
add = true
|
}
|
|
} else {
|
// 相同物料相同批号 数量累加
|
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.processSts$ = this.dataList[index].processSts$
|
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.dataList[this.index].processSts$ = this.processSts$
|
switch(this.processSts$) {
|
case '待加工':
|
this.dataList[this.index].processSts = 1
|
break;
|
case '已加工':
|
this.dataList[this.index].processSts = 2
|
break;
|
case '无需加工':
|
this.dataList[this.index].processSts = 3
|
break;
|
}
|
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>
|