zhou zhou
2026-03-26 687cf225be540a32222f5761a105b05eab1c13c4
#成品直送
2个文件已修改
350 ■■■■ 已修改文件
pages/outbound/matDirectDelivery.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/outbound/productDirectDelivery.vue 349 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/outbound/matDirectDelivery.vue
@@ -39,7 +39,6 @@
                        v-model="whAreaId"
                        :localdata="range"
                        placement="bottom"
                        @change="selChange"
                    ></uni-data-select>
                </view>
            </view>
pages/outbound/productDirectDelivery.vue
@@ -2,52 +2,94 @@
    <view class="has-foot">
        <form>
            <view class="cu-form-group margin-top">
                <view class="title">订单号</view>
                <input
                    placeholder="请选择订单编码"
                    v-model="orderNo"
                    @input="getOrderItemList"
                />
            </view>
            <view class="cu-form-group">
                <view class="title">接驳站点</view>
                <input placeholder="请扫描接驳站点条码" v-model="barcode" ></input>
                <!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
                <input
                    placeholder="请扫描接驳站点条码"
                    v-model="barcode"
                    @input="checkAgvStation"
                />
            </view>
            <view
                class="cu-form-group"
                v-if="agvStationName"
            >
                <view class="title">站点编码</view>
                <text>{{ agvStationName }}</text>
            </view>    
            <view class="cu-form-group">
                <view class="title">容器号</view>
                <input placeholder="请扫描容器编码" v-model="barcode" ></input>
                <text class='cuIcon-search text-blue' @click="search"></text>
            </view>
<!--             <view class="flex solid-bottom padding-sm justify-between">
                <view class="text-blue margin-left">容器码:{{container}}</view>
            </view> -->
            <view class="cu-form-group">
                <view class="title">订单号</view>
                <input placeholder="请选择订单编码" v-model="barcode" ></input>
                <text class='cuIcon-search text-blue' @click="search"></text>
                <input
                    placeholder="请扫描容器编码"
                    v-model="container"
                />
            </view>    
            <view class="cu-form-group">
                <view class="title">目标站点</view>
                <view style="width: 75%;">
                    <uni-data-select style="min-width: 50%; max-width: 100%;" v-model="whAreaId" :localdata="range"
                        placement="bottom" @change="selChange"></uni-data-select>
                <view class="title">目标站区</view>
                <view style="width: 75%">
                    <uni-data-select
                        style="min-width: 50%; max-width: 100%"
                        v-model="whAreaId"
                        :localdata="range"
                        placement="bottom"
                    ></uni-data-select>
                </view>
            </view>
            <view class="flex solid-bottom padding-sm justify-between">
                <view class="text-blue">物料种类:{{ list.length }}</view>
            </view>
        </form>
        <view class="cu-list det menu sm-border  padding">
            <block v-for="(item, index) in list" :key="index">
                <view class="cu-bar bg-white solid-bottom margin-top-sm">
        <view
            class="padding-lr margin-top-sm"
            style="padding-bottom: 120upx"
        >
            <block
                v-for="(item, index) in list"
                :key="index"
            >
                <view
                    class="cu-list det menu sm-border margin-bottom-sm"
                    :class="[item.trackCode === barcode && 'act']"
                    :ref="item.trackCode + 'ref'"
                >
                    <view class="cu-bar bg-white solid-bottom">
                    <view class="action">
                        <view class="index">
                            {{index+1}}
                        </view>
                        <view class="text-blue">
                            {{`${item.maktx}`}}
                                物料编码:
                                {{ `${item.matnrCode}` }}
                        </view>
                    </view>
                    <!--     <view class="action" >
                        <text @click="remove(index)" class="cuIcon-close text-red" style="font-size: 24px;"></text>
                    </view> -->
                        <view
                            class="action"
                            v-if="!isconfirm"
                        >
                            <text
                                @click="remove(index)"
                                class="cuIcon-close text-red"
                                style="font-size: 24px"
                            ></text>
                </view>
                    </view>
                <view class="cu-item">
                    <view class="content">
                        <text class="text-black">ASN:</text>
                            <text class="text-black">物料名称:</text>
                            <text class="text-grey">{{ item.maktx }}</text>
                        </view>
                    </view>
                    <view class="cu-item">
                        <view class="content">
                            <text class="text-black">单据编码:</text>
                    </view>
                    <view class="action">
                        <text class="text-grey ">{{item.asnCode}}</text>
@@ -55,50 +97,103 @@
                </view>
                <view class="cu-item">
                    <view class="content">
                            <text class="text-black">计划跟踪号:</text>
                        </view>
                        <view class="action">
                            <text class="text-grey">
                                {{ item.platWorkCode }}
                            </text>
                        </view>
                    </view>
                    <view class="cu-item">
                        <view class="content">
                        <text class="text-black">批次:</text>
                    </view>
                    <view class="action">
                        <text class="text-grey ">{{item.batch}}</text>
                            <text class="text-grey">{{ item.splrBatch }}</text>
                    </view>
                </view>
                <view class="cu-item">
                    <view class="content">
                        <text class="text-black">收货数量:</text>
                            <text class="text-black">
                                单位:
                                <text class="text-grey">
                                    {{ item.stockUnit }}
                                </text>
                            </text>
                    </view>
                    <view class="action">
                        <view class="content">
                            <text class="text-black">
                                收货数量:
                        <text class="text-grey ">{{item.anfme}}</text>
                            </text>
                        </view>
                        <!-- <view class="content">
                            <text class="text-black">已上架数量: <text
                                    class="text-grey ">{{item.workQty + item.qty}}</text></text>
                        </view> -->
                    </view>
                    <view class="cu-item">
                        <view class="content">
                            <text class="text-black">
                                需求数量:
                                <text class="text-grey">
                                    {{ item.ableQty }}
                                </text>
                            </text>
                    </view>
                </view>
                    <view class="cu-item">
                        <view class="content">
                            <view class="cu-form-group padding-lr-0">
                                <view class="title text-blue">
                                    <text
                                        class="text-red text-xl vertical-middle"
                                    >
                                        *
                                    </text>
                                    数量:
                                </view>
                                <uni-number-box
                                    style="width: 70%"
                                    :min="0"
                                    :max="item.ableQty"
                                    :decimal="2"
                                    :step="0.01"
                                    v-model="item.demandQty"
                                ></uni-number-box>
                            </view>
                        </view>
                    </view>
                </view>
            </block>
        </view>
        <view class="cu-bar btn-group foot">
            <button class="cu-btn text-blue line-blue shadow" @click="clear">清空</button>
            <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">运送</button>
            <button
                class="cu-btn text-blue line-blue shadow"
                @click="clear"
            >
                清空
            </button>
            <button
                class="cu-btn bg-blue shadow-blur"
                :disabled="repeatClick"
                @click="check"
            >
                运送
            </button>
        </view>
    </view>
</template>
<script>
    import {
        request
    } from '../../common/request.js'
    import {
        mapState,
        mapMutations,
        mapActions,
        mapGetters
    } from 'vuex';
import { request } from '../../common/request.js'
import { mapState, mapMutations, mapActions, mapGetters } from 'vuex'
    export default {
        data() {
            return {
            orderNo: '',
                barcode: '',
                areaName: '',
                locCode: '',
@@ -108,27 +203,88 @@
                curCode: '',
                whAreaId:'',
                repeatClick: false,
            isconfirm: false,
            agvStationName: ''
            }
        },
        computed: {
            ...mapState('user', ['dynamicFields']),
        ...mapState('user', ['dynamicFields'])
        },
        mounted() {
            this.getRece()
            this.whAreaId = uni.getStorageSync('whAreaId')
        },
        methods: {    
        async checkAgvStation() {
            const that = this
            if (this.barcode === '' || this.barcode === null) {
                uni.showToast({
                    title: '容器码为空',
                    icon: 'none',
                    position: 'top'
                })
                return
            }
            const { code, data, msg } = await request('/check/agvStation', {
                transferStationNo: this.barcode
            })
            if (code === 200) {
                this.agvStationName = data.stationId
            } else {
                uni.showToast({
                    title: msg,
                    icon: 'none',
                    position: 'top'
                })
                setTimeout(function () {
                    that.agvStationName = ''
                    that.barcode = ''
                }, 200)
            }
        },
        async getOrderItemList() {
            const that = this
            if (this.orderNo === '' || this.orderNo === null) {
                uni.showToast({
                    title: '订单号为空',
                    icon: 'none',
                    position: 'top'
                })
                return
            }
            const { code, data, msg } = await request(
                '/orderOut/getOrderItem',
                {
                    orderNo: this.orderNo
                }
            )
            if (code === 200) {
                if (data.length > 0) {
                    this.list = data
                } else {
                    uni.showToast({
                        title: '该订单可执行行数为空',
                        icon: 'none',
                        position: 'top'
                    })
                }
            } else {
                uni.showToast({
                    title: msg,
                    icon: 'none',
                    position: 'top'
                })
                setTimeout(function () {
                    that.orderNo = ''
                }, 200)
            }
        },
            selChange(val) {
                uni.setStorageSync('whAreaId', val)
            },
            async search() {
                let that = this
                const {
                    code,
                    data,
                    msg
                } = await request('/staBind/list', {
            const { code, data, msg } = await request('/staBind/list', {
                    sta: this.barcode
                })
                if (code === 200) {    
@@ -136,21 +292,21 @@
                        that.container = data.barcode                        
                        that.list = data.list
                    }
                    that.range = data.warehouseAreasList.map(item => ({
                that.range = data.warehouseAreasList.map((item) => ({
                        value: item.id,
                        text: item.name
                    }));
                }))
                    that.whAreaId = data.area
                } else {
                    uni.showToast({
                        title: msg,
                        icon: "none",
                    icon: 'none'
                    })
                }
            },
            remove(index) {
                this.list.splice(index, 1);
            this.list.splice(index, 1)
            },
            clear() {
                this.list = []
@@ -173,31 +329,56 @@
            itemChange(el) {
                this.curCode = el
            },
            async confirm() {
        check() {
                if(this.barcode === '' || this.barcode ===null){
                    uni.showToast({
                        title: "接驳站点不能为空",
                        icon: "none",
                    title: '接驳站点不能为空',
                    icon: 'none'
                    })
                    return ;
                return
            }
            if (this.orderNo === '' || this.orderNo === null) {
                uni.showToast({
                    title: '订单号不能为空',
                    icon: 'none'
                })
                return
            }
            if (this.container === '' || this.container === null) {
                uni.showToast({
                    title: '容器号不能为空',
                    icon: 'none'
                })
                return
                }
                if(this.whAreaId === '' || this.whAreaId ===null){
                    uni.showToast({
                        title: "目标库区不能为空",
                        icon: "none",
                    title: '目标库区不能为空',
                    icon: 'none'
                    })
                    return ;
                return
                } 
            if (this.list.length === 0) {
                uni.showToast({
                    title: '明细项不能为空',
                    icon: 'none'
                })
                return
            }
            this.confirm()
        },
        async confirm() {
                this.repeatClick = true
                const {
                    code,
                    data,
                    msg
                } = await request('/AGV/task/start',{
                        sta: this.barcode,
                        area: this.whAreaId
                    }
            const { code, data, msg } = await request(
                '/orderOut/productionDirectDelivery',
                {
                    orderNo: this.orderNo,
                    containerNo: this.container,
                    sta1: this.barcode,
                    stationAreaId: this.whAreaId,
                    wkOrderItems: this.list
                },
                'POST'
                )
                if (code === 200) {
                    uni.showToast({
@@ -207,25 +388,24 @@
                } else {
                    uni.showToast({
                        title: msg,
                        icon: "none",
                    icon: 'none'
                    })
                }
                this.repeatClick = false
            },
            
            async getRece() {                
                const {
                    code,
                    data,
                    msg
                } = await request('/areas/receipt', {}, 'get')
            const { code, data, msg } = await request(
                '/orderOut/getStationArea',
                {}
            )
                if (code === 200) {
                    this.range = data.map(item => ({
                this.range = data.map((item) => ({
                        value: item.id,
                        text: item.warehouseId$ + "-- " + item.name
                    }));
                    text: item.stationAreaName
                }))
                }
            },
        }
        }
    }
</script>
@@ -246,7 +426,6 @@
    .text-blue {
        color: #0081ff !important;
    }
    .item {