#
whycq
2025-02-07 bff91e27a649216ee4bbc7a2b321984c054e973e
#
1个文件已添加
310 ■■■■■ 已修改文件
pages/phyz/bcp/orderCar.vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>