| pages.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| pages/phyz/bcp/orderCar.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| pages/phyz/comOrder/checkOut.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| pages/phyz/order/preview.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| pages/phyz/orderOut/orderCheck.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| pages/phyz/processOrder/orderCheck.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
pages.json
@@ -323,6 +323,14 @@ "enablePullDownRefresh" : false } }, { "path" : "pages/phyz/bcp/orderCar", "style" : { "navigationBarTitleText" : "待组托列表", "enablePullDownRefresh" : false } }, { "path" : "pages/home/locMastManage", "style" : pages/phyz/bcp/orderCar.vue
New file @@ -0,0 +1,310 @@ <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> pages/phyz/comOrder/checkOut.vue
@@ -1,6 +1,6 @@ <template> <view> <view class="list shop-car" v-for="item in dataList"> <view class="list shop-car" v-for="(item,index) in dataList" :key="index"> <view class="list-left"> <view class="detl-threeCode" style="padding: 16rpx 0;">{{item.csocode}}</view> <view>库位:{{item.locNo}}</view> @@ -18,13 +18,14 @@ </view> <view class="detl-threeCode" style="display: flex;padding: 0 0 32rpx 0;font-size: 24px;">出库站: <view class="dropdown" @click="toggleDropdown(item)"> <!-- @click="toggleDropdown(item)" --> <view class="dropdown" > <!-- <view style="height: 100%;width: 100%; position: fixed;background-color: rgba(0,0,0,.4);left:0;top:0" v-if = "item.isOpen"></view> --> <input type="text" style="width: 270rpx;font-size: 20px;" v-model="item.agvStaNo" placeholder="请选择出库站" placeholder-style="color: #fff"> <input @input="staInput(item.agvStaNo,item.agvStaNos,index)" type="text" style="width: 270rpx;font-size: 20px;" v-model="item.agvStaNo" placeholder="请选择出库站" placeholder-style="color: #fff"> <uni-icons :type="item.isOpen ? 'top' : 'bottom'" color="#fff" style="margin-left: 10rpx;"></uni-icons> <scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen"> <!-- <scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen"> <view class="dropdown-item" v-for="option in options" @click="selected(option,item)">{{option}}</view> </scroll-view> </scroll-view> --> </view> </view> <button @click="combConfirm(item)" :disabled="combDis">立即出库</button> @@ -115,6 +116,18 @@ selected(option,item) { item.agvStaNo = option }, staInput(item,items,index) { var flag = false for (let k of items) { if (k == item) flag = true } if(!flag) { uni.showToast({ title: '当前站点无法使用,已复位', icon: "error", position: 'top' }) setTimeout(() => { this.dataList[index].agvStaNo = '' }, 100); } }, // 订单明细 getPakoutList(ids,locNo) { let _this = this @@ -130,6 +143,7 @@ if (k.locNo != null) { k['isOpen'] = false k['count'] = k.anfme k.agvStaNo = '' k.anfme = 0 if (_this.orderType == 'bcp') { if (k.locNo.substring(k.locNo.length - 1, k.locNo.length) == 1) { pages/phyz/order/preview.vue
@@ -22,7 +22,7 @@ <view class="card-id">{{i + 1}}</view> <view>货位:{{item.locNo}}</view> <view style="display: flex;">出库站: <view class="dropdown" @click="toggleDropdown(item)"> <view class="dropdown" > <input type="text" style="width: 270rpx;" v-model="item.agvStaNo" placeholder="请选择出库站"> <uni-icons :type="item.isOpen ? 'top' : 'bottom'" color="#c1c1c1" style="margin-left: 10rpx;"></uni-icons> <scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen"> pages/phyz/orderOut/orderCheck.vue
@@ -1,6 +1,6 @@ <template> <view> <view class="list shop-car" v-for="item in dataList"> <view class="list shop-car" v-for="(item,index) in dataList" :key="index"> <view class="list-left"> <view class="detl-threeCode" style="padding: 16rpx 0;">{{item.csocode}}</view> <view>库位:{{item.locNo}}</view> @@ -18,13 +18,14 @@ </view> <view class="detl-threeCode" style="display: flex;padding: 0 0 32rpx 0;font-size: 24px;">出库站: <view class="dropdown" @click="toggleDropdown(item)"> <!-- @click="toggleDropdown(item)" --> <view class="dropdown" > <!-- <view style="height: 100%;width: 100%; position: fixed;background-color: rgba(0,0,0,.4);left:0;top:0" v-if = "item.isOpen"></view> --> <input type="text" style="width: 270rpx;font-size: 20px;" v-model="item.agvStaNo" placeholder="请选择出库站" placeholder-style="color: #fff"> <input @input="staInput(item.agvStaNo,item.agvStaNos,index)" type="text" style="width: 270rpx;font-size: 20px;" v-model="item.agvStaNo" placeholder="请选择出库站" placeholder-style="color: #fff"> <uni-icons :type="item.isOpen ? 'top' : 'bottom'" color="#fff" style="margin-left: 10rpx;"></uni-icons> <scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen"> <!-- <scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen"> <view class="dropdown-item" v-for="option in options" @click="selected(option,item)">{{option}}</view> </scroll-view> </scroll-view> --> </view> </view> <button @click="combConfirm(item)" :disabled="combDis">立即出库</button> @@ -120,6 +121,18 @@ selected(option,item) { item.agvStaNo = option }, staInput(item,items,index) { var flag = false for (let k of items) { if (k == item) flag = true } if(!flag) { uni.showToast({ title: '当前站点无法使用,已复位', icon: "error", position: 'top' }) setTimeout(() => { this.dataList[index].agvStaNo = '' }, 100); } }, // 订单明细 getPakoutList(ids,bcp) { let _this = this @@ -135,6 +148,7 @@ if (k.locNo != null) { k['isOpen'] = false k['count'] = k.anfme k.agvStaNo = '' k.anfme = 0 if (_this.orderType == 'bcp') { if (k.locNo.substring(k.locNo.length - 1, k.locNo.length) == 1) { pages/phyz/processOrder/orderCheck.vue
@@ -1,6 +1,6 @@ <template> <view> <view class="list shop-car" v-for="item in dataList"> <view class="list shop-car" v-for="(item,index) in dataList" :key="index"> <view class="list-left"> <view class="detl-threeCode" style="padding: 16rpx 0;">{{item.csocode}}</view> <view>库位:{{item.locNo}}</view> @@ -18,13 +18,14 @@ </view> <view class="detl-threeCode" style="display: flex;padding: 0 0 32rpx 0;font-size: 24px;">出库站: <view class="dropdown" @click="toggleDropdown(item)"> <!-- @click="toggleDropdown(item)" --> <view class="dropdown" > <!-- <view style="height: 100%;width: 100%; position: fixed;background-color: rgba(0,0,0,.4);left:0;top:0" v-if = "item.isOpen"></view> --> <input type="text" style="width: 270rpx;font-size: 20px;" v-model="item.agvStaNo" placeholder="请选择出库站" placeholder-style="color: #fff"> <input @input="staInput(item.agvStaNo,item.agvStaNos,index)" type="text" style="width: 270rpx;font-size: 20px;" v-model="item.agvStaNo" placeholder="请选择出库站" placeholder-style="color: #fff"> <uni-icons :type="item.isOpen ? 'top' : 'bottom'" color="#fff" style="margin-left: 10rpx;"></uni-icons> <scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen"> <!-- <scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen"> <view class="dropdown-item" v-for="option in options" @click="selected(option,item)">{{option}}</view> </scroll-view> </scroll-view> --> </view> </view> <button @click="combConfirm(item)" :disabled="combDis">立即出库</button> @@ -115,6 +116,18 @@ selected(option,item) { item.agvStaNo = option }, staInput(item,items,index) { var flag = false for (let k of items) { if (k == item) flag = true } if(!flag) { uni.showToast({ title: '当前站点无法使用,已复位', icon: "error", position: 'top' }) setTimeout(() => { this.dataList[index].agvStaNo = '' }, 100); } }, // 订单明细 getPakoutList(ids,locNo) { let _this = this @@ -130,6 +143,7 @@ if (k.locNo != null) { k['isOpen'] = false k['count'] = k.anfme k.agvStaNo = '' k.anfme = 0 if (_this.orderType == 'bcp') { if (k.locNo.substring(k.locNo.length - 1, k.locNo.length) == 1) {