<template>
|
<view style="font-size: 13px;">
|
<view class="station station-wrk" v-if="station">
|
<view class="mt-flex">
|
<view class="station-title" style="flex: 4;">{{station.threeCode}}</view>
|
<view class="station-title" style="flex: 1;">
|
<button size="mini" @click="allChecked()">{{allCheckBtnTitle}}</button>
|
</view>
|
</view>
|
<view>调拨单号:{{station.orderNo}}</view>
|
<view>物料编号:{{station.matnr}}</view>
|
<view style="width: 100%;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;">物料名称:{{station.maktx}}</view>
|
<view style="display: flex;">
|
<view style="flex: 2;">调拨数量:{{station.anfme}}</view>
|
<view style="flex: 3;">库存数量:{{station.stock}}</view>
|
</view>
|
<view style="display: flex;">
|
<view style="flex: 2;">已调拨数量:{{station.qty}}</view>
|
<view style="flex: 3;">当前选择调拨数量:{{station.count ? station.count : 0}}</view>
|
</view>
|
</view>
|
<!-- 垫高 -->
|
<!-- <view style="height: 330rpx;text-align: center;color: #b9b9b9;">
|
</view> -->
|
<view class="list list-font-color" :class="orderDetl.color" v-for="(orderDetl,index) in dataList" :key="index">
|
<view class="list-left" style="display: flex;flex-direction: column;">
|
<!-- 上 -->
|
<view>
|
<view class="detl-locNo">{{orderDetl.locNo}}</view>
|
<view class="detl-locNo">货架码:{{orderDetl.suppCode}}</view>
|
</view>
|
<!-- 中 -->
|
<view style="display: flex;">
|
<view style="flex: 1;">
|
<view>库位状态:{{orderDetl.locSts$}}</view>
|
<view>库存数量:{{orderDetl.anfme}}</view>
|
</view>
|
</view>
|
<!-- 下 -->
|
</view>
|
<view class="list-right" @click="checkboxChange(orderDetl)">
|
<label >
|
<checkbox :value="orderDetl.orderNo" :checked="orderDetl.checked" v-show="orderDetl.locSts == 'F'" style="transform:scale(0.7)" /><text></text>
|
</label>
|
</view>
|
</view>
|
|
<!-- 垫高 -->
|
<view style="height: 160rpx;text-align: center;color: #b9b9b9;">
|
- 已经到底了 -
|
</view>
|
<!-- 选择楼层弹窗 -->
|
<view>
|
<uni-popup ref="filter" type="dialog">
|
<view class="filter-popup">
|
<!-- 标题 -->
|
<view class="title">调拨楼层</view>
|
<view class="popup-item" style="width: 100%;display: flex;justify-content: center;">
|
<view style="margin-top: 50rpx;width: 60%;">
|
<uni-combox :candidates="floorList" placeholder="请选择目标楼层" v-model="floor"></uni-combox>
|
</view>
|
</view>
|
<view class="btn filter-btn">
|
<button class="btn-right" @click="filterConfirm()" :disabled="isAutoDis">开始调拨</button>
|
</view>
|
</view>
|
</uni-popup>
|
</view>
|
<!-- 底部操作按钮 -->
|
<view class="buttom">
|
<button size="mini" @click="isAuto('unAuto')">手动</button>
|
<button size="mini" type="primary" @click="isAuto('auto')" >自动</button>
|
</view>
|
</view>
|
</template>
|
|
<script>
|
export default {
|
data() {
|
return {
|
baseUrl: '',
|
token: '',
|
dataList: [],
|
dbList: [],
|
count: 0,
|
containerType: '',
|
isOpen: true,
|
option: '',
|
selects: [],
|
orderId: '',
|
station: '',
|
allCheck: false,
|
allCheckBtnTitle: '全选',
|
floorList: ['2楼','3楼'],
|
floor: '',
|
moveType: '',
|
isAutoDis: false,
|
orderNo: ''
|
}
|
},
|
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.item);
|
data.item['count'] = 0
|
_this.station = data.item
|
_this.orderId = data.item.id
|
_this.orderNo = data.item.orderNo
|
_this.getLocDetl(data.item.orderNo,data.item.threeCode,data.item.matnr,data.item.id)
|
})
|
},
|
methods: {
|
getLocDetl(orderNo,threeCode,matnr,id) {
|
let _this = this
|
uni.request({
|
url: `${_this.baseUrl}/agvMobile/query/locDetl/v1`,
|
header: { 'token': uni.getStorageSync('token') },
|
data: {
|
orderNo: orderNo,
|
threeCode: threeCode ,
|
matnr: matnr,
|
floor: "F1"
|
},
|
method: 'POST',
|
success(res) {
|
res = res.data
|
console.log(res);
|
if (res.code === 200) {
|
for (let k of res.data) {
|
if (k.locSts == "F") {
|
k['color'] = 'order-sts-start'
|
} else if (k.locSts != "F") {
|
k['color'] = 'order-sts-working'
|
} else {
|
k['color'] = 'order-sts-end'
|
}
|
k['id'] = id
|
}
|
_this.dataList = res.data
|
} 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' })
|
}
|
}
|
})
|
},
|
pakoutPrive(item) {
|
let _this = this
|
console.log(item);
|
if (item.locSts != 'F') {
|
uni.showToast({ title: '当前库位不是在库状态!', icon: "error", position: 'top' })
|
return
|
}
|
uni.navigateTo({
|
url: "./orderCheck",
|
success: function(res) {
|
// 通过eventChannel向被打开页面传送数据 向另外一个页面传递值的
|
res.eventChannel.emit('mat', {
|
mat: item,
|
})
|
},
|
events: {
|
// 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据 另外一个页面传过来的
|
acceptDataFromOpenedPage: function(data) {
|
// _this.matnr = data.data
|
},
|
},
|
});
|
},
|
pakout(item) {
|
let _this = this
|
let items = [item]
|
uni.request({
|
url: `${_this.baseUrl}/out/pakout/auth`,
|
header: { 'token': uni.getStorageSync('token') },
|
data: items,
|
method: 'POST',
|
success(res) {
|
res = res.data
|
console.log(res);
|
if (res.code === 200) {
|
|
} 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' })
|
}
|
}
|
})
|
},
|
// 开启 / 关闭下拉框
|
toggleDropdown() {
|
this.isOpen = !this.isOpen
|
},
|
// 选择货架类型
|
selected(option) {
|
this.containerType = option
|
},
|
checkboxChange(e) {
|
console.log(e);
|
let items = this.dataList,
|
values = e.orderNo;
|
if (e.checked) {
|
this.$set(e,'checked',false)
|
} else {
|
if (e.locSts != "F") {
|
this.$set(e,'checked',false)
|
} else {
|
this.$set(e,'checked',true)
|
}
|
}
|
let num = 0
|
for (let k of items) {
|
if (k.checked) {
|
num++
|
}
|
if (num == items.length) {
|
this.allCheck = true
|
this.allCheckBtnTitle = '取消'
|
} else {
|
this.allCheck = false
|
this.allCheckBtnTitle = '全选'
|
}
|
}
|
this.upDateCount()
|
},
|
upDateCount() {
|
let num = 0
|
for (let k of this.dataList) {
|
if (k.checked) {
|
num = num + k.anfme
|
}
|
}
|
this.station.count = num
|
},
|
allChecked() {
|
if (this.allCheck) {
|
this.allCheck = false
|
this.allCheckBtnTitle = '全选'
|
} else {
|
this.allCheck = true
|
this.allCheckBtnTitle = '取消'
|
}
|
for (let item of this.dataList) {
|
if (this.allCheck) {
|
// if (item.locSts == "F")
|
if (item.locSts != "F") {
|
this.$set(item,'checked',false)
|
} else {
|
this.$set(item,'checked',true)
|
}
|
} else {
|
this.$set(item,'checked',false)
|
}
|
}
|
this.upDateCount()
|
},
|
isAuto(type) {
|
this.dbList = []
|
for (let k of this.dataList) {
|
if (k.checked) {
|
this.dbList.push(k)
|
}
|
}
|
if (this.dbList.length == 0) {
|
uni.showToast({ title: '请选择调拨库位', icon: "error", position: 'top' })
|
return
|
}
|
this.moveType = type
|
this.$refs.filter.open('bottom')
|
},
|
filterConfirm() {
|
this.isAutoDis = true
|
if (this.floor == '') {
|
uni.showToast({ title: '请选择调拨楼层', icon: "error", position: 'top' })
|
return
|
}
|
let _this = this
|
let param = {floor: this.floor,orderNo:this.orderNo,dbList: this.dbList,moveType: this.moveType}
|
uni.request({
|
url: `${_this.baseUrl}/agvMobile/agv/v2/locMove`,
|
header: {'token': uni.getStorageSync('token'),},
|
data: param,
|
method: 'POST',
|
success(res) {
|
_this.isAutoDis = false
|
console.log(res);
|
res = res.data
|
if (res.code === 200) {
|
uni.navigateBack({
|
delta: 1
|
});
|
} 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' })
|
}
|
},
|
fail(res) {
|
_this.isAutoDis = false
|
}
|
})
|
this.$refs.filter.close('bottom')
|
}
|
}
|
}
|
</script>
|
|
<style>
|
@import url('../../../static/css/common/order.css');
|
|
.station {
|
/* position: fixed; */
|
font-size: 18px;
|
width: 96%;
|
padding: 24rpx;
|
z-index: 999;
|
font-size: 14px;
|
}
|
.station-title {
|
font-size: 32px;
|
font-weight: bold;
|
/* padding: 2rpx 0; */
|
}
|
.station-barcode {
|
font-size: 24px;
|
font-weight: bold;
|
padding: 24rpx 0;
|
}
|
.station-wrk {
|
background-color: #ff7356;
|
color: #fff;
|
}
|
.station-nowrk {
|
background-color: #3eb689;
|
color: #fff;
|
}
|
.list-font-color {
|
color: #fff;
|
/* background-color: #33bb44; */
|
}
|
.order-sts-start {
|
background-color: #3eb689;
|
}
|
.order-sts-working {
|
background-color: #ff9d46;
|
}
|
.order-sts-end {
|
background-color: #ff7356;
|
}
|
.detl-threeCode {
|
font-size: 28px;
|
font-weight: bold;
|
}
|
.detl-locNo {
|
font-size: 20px;
|
font-weight: bold;
|
}
|
.out-btn {
|
background-color: #3e82ff;
|
height: 120rpx;
|
width: 120rpx;
|
line-height: 120rpx;
|
text-align: center;
|
border-radius: 50%;
|
margin-left: 20rpx;
|
margin-right: 20rpx;
|
}
|
.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 {
|
position: relative;
|
display: flex;
|
align-items: center;
|
font-size: 14px;
|
}
|
.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: #606266;
|
border-right: 1px solid #DCDFE6;
|
}
|
.btn-right {
|
display: flex;
|
flex: 1;
|
justify-content: center;
|
align-items: center;
|
color: #409EFF;
|
}
|
|
.dropdown {
|
position: relative;
|
display: flex;
|
width: 93%;
|
align-items: center;
|
padding: 0rpx 20rpx;
|
}
|
.dropdown-content {
|
position: absolute;
|
top: calc(100% + 15rpx);
|
left: 0;
|
width: calc(100% - 20rpx);
|
max-height: 300rpx;
|
background-color: #fff;
|
box-shadow: 0 0px 6px rgba(0, 0, 0, 0.3);
|
border-radius: 8rpx;
|
z-index: 10;
|
}
|
.dropdown-item {
|
padding: 12rpx;
|
line-height: 1.2;
|
font-size: 22px;
|
color: #3a3a3a;
|
}
|
.filter-popup {
|
width: 100%;
|
height: 40vh;
|
background-color: #FFF;
|
position: relative;
|
border-radius: 30rpx 30rpx 0rpx 0rpx;
|
}
|
.filter-popup-item {
|
height: 100%;
|
width: 100%;
|
background-color: #c9cdd5;
|
}
|
.filter-popup-item-left {
|
width: 30%;
|
height: 100%;
|
background-color: #DCDFE6;
|
|
}
|
.filter-btn {
|
position: absolute;
|
left: 0;
|
bottom: 0;
|
width: 100%;
|
background-color: #FFF;
|
}
|
|
|
</style>
|