#
whycq
2024-03-27 2e25e96baa73c7a26c71f3af1a14431b52ebf805
#
1个文件已添加
4个文件已修改
379 ■■■■■ 已修改文件
pages.json 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/AGV/AGVPakin3.vue 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/order/orderList.vue 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/phyz/order/preview.vue 265 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/css/common/order.css 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages.json
@@ -514,6 +514,14 @@
                "navigationBarTitleText" : "组托入库",
                "enablePullDownRefresh" : false
            }
        },
        {
            "path" : "pages/phyz/order/preview",
            "style" :
            {
                "navigationBarTitleText" : "出库预览",
                "enablePullDownRefresh" : false
            }
        }
        
        
pages/phyz/AGV/AGVPakin3.vue
@@ -6,8 +6,17 @@
                    @input="findOrder()">
            </view>
            <view class="item">
                <input type="text" placeholder=" 扫码 / 输入 料箱码" v-model="barcode" :focus="barcodeFocus"
                <input type="text" placeholder=" 扫码 / 输入 货架码" v-model="barcode" :focus="barcodeFocus"
                    @input="barcodeInput()">
            </view>
            <view class="item">
                <view class="dropdown" @click="toggleDropdown()">
                    <input type="text" style="width: 650rpx;" v-model="containerType">
                    <uni-icons :type="isOpen ? 'top' : 'bottom'" color="#c1c1c1" style="margin-left: 10rpx;"></uni-icons>
                    <scroll-view scroll-y="ture" class="dropdown-content" v-if="isOpen">
                        <view class="dropdown-item" v-for="option in selects" @click="selected(option)">{{option}}</view>
                    </scroll-view>
                </view>
            </view>
            <view class="item">
                <input type="text" placeholder=" 扫码 / 输入 暂存位" v-model="stationCode" :focus="stationCodeFocus"
@@ -150,6 +159,7 @@
                barcode: '',
                orderNo: '',
                stationCode: '',
                containerType: '',
                dataList: [],
                count: 0,
                rowNum: '',
@@ -171,7 +181,9 @@
                flag: 0,
                tempOrderInfo: {csocode: '',isoseq: ''},
                hide: true,
                hidebg: 'kb-bgtr'
                hidebg: 'kb-bgtr',
                isOpen: false,
                selects: ['1号','2号']
            }
        },
        onLoad() {
@@ -210,6 +222,12 @@
                } else {
                    this.hidebg = 'kb-bgfa'
                }
            },
            toggleDropdown() {
                this.isOpen = !this.isOpen
            },
            selected(option) {
                this.containerType = option
            },
            findOrder() {
                let that = this
@@ -689,7 +707,6 @@
        /* font-family: PingFang SC; uniapp 默认字体不居中 */
        font-size: 36upx;
        font-family: PingFang SC;
        width: 55vw;
    }
@@ -716,4 +733,27 @@
        text-align: center;
        box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.5);
    }
    .dropdown {
        position: relative;
        display: flex;
        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: 12rpx;
        color: #3a3a3a;
    }
</style>
pages/phyz/order/orderList.vue
@@ -30,9 +30,15 @@
        <view style="height: 100rpx;"></view>
        
        <!-- 底部操作按钮 -->
        <view class="buttom">
        <view class="buttom" v-if="orderType == 'in'">
            <button size="mini" @click="reset('warn')">重置</button>
            <button size="mini" type="primary" @click="combConfirm('warn')">去组托</button>
        </view>
        <!-- 底部操作按钮 -->
        <view class="buttom" v-if="orderType == 'out'">
            <button size="mini" @click="reset('warn')">重置</button>
            <button size="mini" type="primary" @click="combConfirm2('warn')">去出库</button>
        </view>
        
    </view>
@@ -53,6 +59,7 @@
                newDataList: [],
                allCheck: false,
                allCheckBtnTitle: '全选',
                orderType: 'out'
            }
        },
        onLoad() {
@@ -72,17 +79,18 @@
                    
                })
                that.getOrderDetl(data.item.id)
                that.orderType = 'in'
            })
            eventChannel.on('item1', function(data) {
                console.log(data);
                that.orderId = data.item.orderId 
                console.log(data.item.id);
                uni.setNavigationBarTitle({
                    title: data.item.orderNo,
                    
                })
                that.getOrderDetl(data.item.id)
                that.orderType = 'out'
            })
        },
        onShow() {
@@ -205,6 +213,28 @@
                    },
                });
            },
            combConfirm2(type) {
                let _this = this
                let combList = []
                for (let k of _this.dataList) {
                    if (k.checked) {
                        combList.push(k)
                    }
                }
                if (combList.length == 0) {
                    uni.showToast({ title: '请选择出库商品', icon: "error", position: 'top'})
                    return
                }
                uni.navigateTo({
                    url: "./preview",
                    success: function(res) {
                        // 通过eventChannel向被打开页面传送数据   向另外一个页面传递值的
                        res.eventChannel.emit('mats', {
                            mats: combList
                        })
                    },
                });
            },
        }
    }
</script>
pages/phyz/order/preview.vue
New file
@@ -0,0 +1,265 @@
<template>
    <view>
        <view class="code">
            <!-- <uni-search-bar :focus="matFocus" v-model="matnr"  @input="matInput()" ma
                maxlength="500" ancel="cancel" @clear="clear" placeholder="输入 / 扫描商品">
            </uni-search-bar> -->
            <view class="code-title">
                <view></view>
                <view>商品列表</view>
                <view @click="allChecked">{{allCheckBtnTitle}}</view>
            </view>
        </view>
        <view class="list" v-for="(item,i) in dataList">
            <view class="list-left">
                <view>编号:{{item.matnr}}</view>
                <view>名称:{{item.maktx}}</view>
                <view>规格:{{item.specs}}</view>
                <view>批号:{{item.batch}}</view>
                <view class="list-anfme">数量:{{item.anfme}}</view>
                <view class="list-qty-1" v-if="item.anfme > item.qty">作业数量:{{item.qty}}</view>
                <view class="list-qty-2" v-if="item.anfme <= item.qty">作业数量:{{item.qty}}</view>
                <view class="card-id">{{i + 1}}</view>
                <view>货位:{{item.locNo}}</view>
                <view style="display: flex;">出库站:
                    <view class="dropdown" @click="toggleDropdown(item)">
                        <input type="text" style="width: 270rpx;" v-model="item.agvStaNo">
                        <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">
                            <view class="dropdown-item" v-for="option in selects" @click="selected(option,item)">{{option.value}}</view>
                        </scroll-view>
                    </view>
                </view>
            </view>
            <view class="list-right" @click="checkboxChange(item)">
                <label >
                    <checkbox :value="item.orderNo" :checked="item.checked" color="" :disabled="item.anfme <= item.qty" style="transform:scale(0.7)" /><text></text>
                </label>
            </view>
        </view>
        <view style="height: 100rpx;"></view>
        <!-- 底部操作按钮 -->
        <view class="buttom">
            <button size="mini" @click="reset('warn')">稍后处理</button>
            <button size="mini" type="primary" @click="combConfirm('warn')">立即出库</button>
        </view>
    </view>
</template>
<script>
    export default {
        data() {
            return {
                baseUrl: '',
                token: '',
                orderId: '',
                matFocus: true,
                matnr: '',
                checck: true,
                dataList: [{}],
                oldDataList: [],
                newDataList: [],
                allCheck: false,
                allCheckBtnTitle: '全选',
                orderType: 'out',
                ids: [],
                isOpen: false,
                selects: [
                    {value: "CS-101-001-01@1"},
                    {value: "CS-101-001-02@1"},
                    {value: "CS-101-001-03@1"},
                    {value: "CS-101-002-01@1"},
                    {value: "CS-101-002-02@1"},
                    {value: "CS-101-002-03@1"},
                ]
            }
        },
        onLoad() {
            let that = 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('mats', function(data) {
                console.log(data);
                for (let item of data.mats) {
                    that.ids.push(item.id)
                }
                that.getPakoutList(that.ids)
            })
        },
        onShow() {
            if (this.dataList.length > 0) {
                this.oldDataList = [...this.dataList]
            }
        },
        methods: {
            toggleDropdown(item) {
                item.isOpen = !item.isOpen;
            },
            selected(option,item) {
                item.agvStaNo = option.value
            },
            // 订单明细
            getPakoutList(ids) {
                let _this = this
                uni.request({
                    url: `${_this.baseUrl}/out/pakout/preview/auth`,
                    header: {'token': uni.getStorageSync('token')},
                    data: ids,
                    method: 'POST',
                    success(res) {
                        res = res.data
                        if (res.code === 200) {
                            for (let k of res.data) {
                                k['isOpen'] = false
                            }
                            _this.dataList = res.data
                            _this.oldDataList = [..._this.dataList]
                        }
                    }
                })
            },
            matInput() {
                let count = 0
                let sign = 0
                if (this.oldDataList.length > 0) {
                    this.dataList = [...this.oldDataList]
                }
                this.newDataList = []
                for (let k in this.dataList) {
                    if (!this.dataList[k].matnr.includes(this.matnr)) {
                        count++;
                    } else {
                        this.newDataList.push(this.dataList[k])
                    }
                }
                if (this.matnr != '') {
                    for (let j in this.dataList) {
                        if (!this.dataList[j].maktx.includes(this.matnr)) {
                        } else {
                            for (let i in this.newDataList) {
                                if (this.newDataList[i].matnr ==  this.dataList[j].matnr) {
                                    sign++
                                }
                            }
                            if (sign == 0) {
                                this.newDataList.push(this.dataList[j])
                            }
                        }
                    }
                }
                this.dataList = this.newDataList
            },
            checkboxChange(e) {
                let items = this.dataList,
                values = e.orderNo;
                if (e.checked) {
                    this.$set(e,'checked',false)
                } else {
                    if (e.anfme == e.qty) {
                        this.$set(e,'checked',false)
                    } else {
                        this.$set(e,'checked',true)
                    }
                }
            },
            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.anfme == item.qty) {
                            this.$set(item,'checked',false)
                        } else {
                            this.$set(item,'checked',true)
                        }
                    } else {
                        this.$set(item,'checked',false)
                    }
                }
            },
            clear() {
                this.matnr = ''
                this.dataList = [...this.oldDataList]
            },
            combConfirm(type) {
                let _this = this
                let combList = []
                for (let k of _this.dataList) {
                    if (k.checked) {
                        if (k.agvStaNo == null) {
                            uni.showToast({ title: `${k.locNo}当前货位没有选择出库站`, icon: "error", position: 'top'})
                            return
                        } else {
                            combList.push(k)
                        }
                    }
                }
                if (combList.length == 0) {
                    uni.showToast({ title: '请选择出库商品', icon: "error", position: 'top'})
                    return
                }
                uni.request({
                    url: `${_this.baseUrl}/out/pakout/auth`,
                    header: {'token': uni.getStorageSync('token')},
                    data: combList,
                    method: 'POST',
                    success(res) {
                        res = res.data
                        console.log(res);
                    }
                })
            },
            combConfirm2(type) {
                let _this = this
                let combList = []
                for (let k of _this.dataList) {
                    if (k.checked) {
                        combList.push(k)
                    }
                }
                if (combList.length == 0) {
                    uni.showToast({ title: '请选择出库商品', icon: "error", position: 'top'})
                    return
                }
                uni.navigateTo({
                    url: "../AGV/AGVPakin2",
                    success: function(res) {
                        // 通过eventChannel向被打开页面传送数据   向另外一个页面传递值的
                        res.eventChannel.emit('mats', {
                            mats: combList
                        })
                    },
                });
            },
        }
    }
</script>
<style>
    @import url('../../../static/css/common/order.css');
    .list-anfme {
        color: #0082ff;
        font-weight: bold;
    }
    .list-qty-1 {
        color: #33ba43;
        font-weight: bold;
    }
    .list-qty-2 {
        color: #e2231a;
        font-weight: bold;
    }
</style>
static/css/common/order.css
@@ -93,4 +93,28 @@
        background-color: #e6f7ff;
        border: 1px solid #91d5ff;
        border-radius: 6rpx;
    }
    .dropdown {
        position: relative;
        display: flex;
        align-items: center;
        border-bottom: 1px solid #333;
        padding: 0rpx 20rpx;
    }
    .dropdown-content {
        position: absolute;
        top: calc(100% + 15rpx);
        left: 0;
        width: calc(100%);
        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: 12rpx;
        color: #3a3a3a;
    }