New file |
| | |
| | | <template> |
| | | <view> |
| | | <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.batch}}</view> |
| | | <view>总数量:{{orderDetl.anfme}}</view> |
| | | <view>入库数量:{{orderDetl.pakinQty}}</view> |
| | | </view> |
| | | <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"> |
| | | <!-- <view class="popup-item-left">入库数量:</view> --> |
| | | <view class="popup-item-right" style="border: none;"><uni-number-box :value="count" :step='0.01' :max="9999999" color="#747474" @change="changeValue" /></view> |
| | | |
| | | </view> |
| | | <!-- <view class="popup-item"> |
| | | <view class="popup-item-left">批号:</view> |
| | | <view class="popup-item-right"><input type="text" v-model="batch"></view> |
| | | </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="popup-item"> |
| | | <view class="popup-item-left">目标楼层:</view> |
| | | <view class="popup-item-right" style="border: none;"> |
| | | <uni-combox style="height: 50rpx;" :candidates="floorList" placeholder="请选择目标楼层" v-model="floor"> |
| | | </uni-combox></view> |
| | | </view> |
| | | <view class="btn"> |
| | | <button class="btn-left" @click="agvStartClose()">取消</button> |
| | | <button class="btn-right" @click="agvStartConfirm()" :disabled="agvStartDis">入库</button> |
| | | </view> |
| | | </view> |
| | | </uni-popup> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | // todo: 购物车优化,存储购物车内容,退出页面再进后购物车还在 |
| | | export default { |
| | | data() { |
| | | return { |
| | | orderCarList: [], |
| | | batch: '', |
| | | count: 0, |
| | | index: 0, |
| | | barcode: '', |
| | | agvDevp: '', |
| | | agvStartDis: false, |
| | | floorList:['二厂','三厂'], |
| | | floor: '', |
| | | } |
| | | }, |
| | | 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) { |
| | | _this.orderCarList = data.item |
| | | for (let k of _this.orderCarList) { |
| | | if (k.threeCode) { |
| | | if (k.threeCode.includes("B")) { |
| | | _this.floor = '二厂' |
| | | } else if (k.threeCode.includes("G")) { |
| | | _this.floor = '三厂' |
| | | } else { |
| | | _this.floor = '' |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | methods: { |
| | | chageDetl(index) { |
| | | this.index = index |
| | | this.count = this.orderCarList[index].pakinQty |
| | | this.batch = this.orderCarList[index].batch |
| | | 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.orderCarList[this.index].batch = this.batch |
| | | 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() { |
| | | this.barcode = this.barcode.replace(/\s+/g, '') |
| | | this.agvDevp = this.agvDevp.replace(/\s+/g, '') |
| | | 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,processSts: item.processSts} |
| | | combMat.combMats.push(combM) |
| | | combMats.push({...combMat}) |
| | | } |
| | | this.comb(combMats) |
| | | |
| | | }, |
| | | comb(combMats) { |
| | | let _this = this; |
| | | let factor = '' |
| | | if (!this.floor) { |
| | | uni.showToast({ title: '请选择楼层', icon: "error", position: 'top' }) |
| | | return |
| | | } |
| | | if (this.floor == '二厂') { |
| | | factor = 'B' |
| | | } else if (this.floor == '三厂') { |
| | | factor = 'G' |
| | | } |
| | | this.agvStartDis = true |
| | | uni.request({ |
| | | url: _this.baseUrl + '/agvMobile/start/pakin/auth/v2', |
| | | data: JSON.stringify({ |
| | | barcode: _this.barcode, |
| | | containerCode: _this.barcode, |
| | | devNo: _this.agvDevp, |
| | | combParams: combMats, |
| | | factory: factor |
| | | }), |
| | | method: 'POST', |
| | | header: { |
| | | 'token': uni.getStorageSync('token') |
| | | }, |
| | | success(result) { |
| | | var res = result.data |
| | | _this.agvStartDis = false |
| | | 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({delta:2}) |
| | | },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' }) |
| | | } |
| | | }, |
| | | fail(res) { |
| | | _this.agvStartDis = false |
| | | } |
| | | }); |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | @import url('../../../static/css/common/order.css'); |
| | | .shop-car { |
| | | background-color: #2299ff; |
| | | color: #fff; |
| | | } |
| | | .detl-threeCode { |
| | | 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 { |
| | | max-width: 20vw; |
| | | 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> |