dengjunjie
2024-12-30 595770fb0359d0425a103fb6e2106cecffe2c90b
PDA添加组盘入库WMS系统,不上传上游系统
已修改10个文件
已添加2个文件
738 ■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfo.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/淮安PDA/pages.json 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/淮安PDA/pages/stash/boxing.vue 514 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/淮安PDA/static/iconfont.css 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Core.DB.Models;
namespace WIDESEAWCS_Model.Models
{
    public class Dt_Task_Hty : Dt_Task, IBaseHistoryEntity
    {
        public int SourceId { get; set; }
        public string OperateType { get; set; }
        public DateTime InsertTime { get; set; }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfo.js
@@ -17,6 +17,7 @@
    methods: {
       //下面这些方法可以保留也可以删除
      onInit() {  
      },
      onInited() {
        //框架初始化配置后
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs
@@ -23,14 +23,8 @@
        [Description("组盘暂存")]
        ç»„盘暂存 = 1,
        [Description("组盘撤销")]
        ç»„盘撤销 = 2,
        [Description("入库确认")]
        å…¥åº“确认 = 3,
        [Description("入库撤销")]
        å…¥åº“撤销 = 4,
        [Description("入库完成")]
        å…¥åº“完成 = 6,
@@ -49,5 +43,17 @@
        [Description("退库")]
        é€€åº“ = 11,
        [Description("手动组盘暂存")]
        æ‰‹åŠ¨ç»„ç›˜æš‚å­˜ = 12,
        [Description("手动组盘入库确认")]
        æ‰‹åŠ¨ç»„ç›˜å…¥åº“ç¡®è®¤ = 13,
        [Description("组盘撤销")]
        ç»„盘撤销 = 99,
        [Description("入库撤销")]
        å…¥åº“撤销 = 199,
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs
@@ -61,7 +61,7 @@
                    ms.Position = 0;
                    await ms.CopyToAsync(originalBody);
                    if (!((context.Request.Path.Value?.Contains("get")) ?? true) && !((context.Request.Path.Value?.Contains("Get")) ?? true) && !((context.Request.Path.Value?.Contains("query")) ?? true) && !((context.Request.Path.Value?.Contains("Query")) ?? true))
                    if (!((context.Request.Path.Value?.Contains("get")) ?? true) && !((context.Request.Path.Value?.Contains("Get")) ?? true) && !((context.Request.Path.Value?.Contains("query")) ?? true) && !((context.Request.Path.Value?.Contains("Query")) ?? true) && !((context.Request.Path.Value?.Contains("DownLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("downLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("UploadApp")) ?? true) && !((context.Request.Path.Value?.Contains("uploadApp")) ?? true))
                        Logger.Add(requestParam, responseParam);
                }
                catch (Exception ex)
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs
@@ -20,7 +20,7 @@
        WebResponseContent GetInboundOrders(SaveModel saveModel);
        WebResponseContent MaterielGroup(int inboundOrderId, string palletCode, string serNum);
        WebResponseContent MaterielGroup(int inboundOrderId, string palletCode, List<string> serNums);
        WebResponseContent MaterielGroup(string palletCode, int Initiallife, int warehouseId, List<string> serNums);
        WebResponseContent FeedbackInboundOrder(int id);
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs
@@ -1,5 +1,6 @@
using AutoMapper;
using HslCommunication.WebSocket;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Newtonsoft.Json;
using SqlSugar;
using System;
@@ -415,31 +416,16 @@
            return content;
        }
        public WebResponseContent MaterielGroup(int inboundOrderId, string palletCode, List<string> serNums)
        public WebResponseContent MaterielGroup(string palletCode, int Initiallife, int warehouseId, List<string> serNums)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_InboundOrder inboundOrder = BaseDal.Db.Queryable<Dt_InboundOrder>().Where(x => x.Id == inboundOrderId).Includes(x => x.Details).First();
                if (inboundOrder == null)
                Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseId == warehouseId);
                if (warehouse == null)
                {
                    return WebResponseContent.Instance.Error($"未找到入库单信息");
                    return WebResponseContent.Instance.Error($"未找到该仓库信息");
                }
                if (inboundOrder.Details == null || inboundOrder.Details.Count <= 0)
                {
                    return WebResponseContent.Instance.Error($"未找到入库单明细信息");
                }
                Dt_ReceiveOrder receiveOrder = _inboundRepository.ReceiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == inboundOrder.UpperOrderNo).Includes(x => x.Details).First();
                if (receiveOrder == null)
                {
                    return WebResponseContent.Instance.Error($"未找到对应的收货单");
                }
                if (receiveOrder.Details == null || receiveOrder.Details.Count <= 0)
                {
                    return WebResponseContent.Instance.Error($"未找到对应的收货单明细");
                }
                List<string> purchaseOrderNos = receiveOrder.Details.Select(x => x.PurchaseOrderNo).ToList();
                List<MatSerNumAnalysisModel> models = CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, serNums);
@@ -455,17 +441,6 @@
                    return WebResponseContent.Instance.Error($"未找到该物料的信息");
                }
                List<Dt_InboundOrderDetail> inboundOrderDetails = inboundOrder.Details.Where(x => x.MaterielCode == materielCode).ToList();
                if (inboundOrderDetails == null || inboundOrderDetails.Count <= 0)
                {
                    return WebResponseContent.Instance.Error($"未在入库单明细中找到该物料信息");
                }
                if (receiveOrder.Details.FirstOrDefault(x => x.MaterielCode == materielCode) == null)
                {
                    return WebResponseContent.Instance.Error($"未在收货单明细中找到该物料信息");
                }
                float beforeQuantity = 0;
                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
@@ -474,50 +449,43 @@
                    stockInfo = new Dt_StockInfo()
                    {
                        PalletCode = palletCode,
                        StockStatus = StockStatusEmun.组盘暂存.ObjToInt(),
                        WarehouseId = inboundOrder.WarehouseId,
                        StockStatus = StockStatusEmun.手动组盘暂存.ObjToInt(),
                        WarehouseId = warehouse.WarehouseId,
                        PalletType = PalletTypeEnum.SmallPallet.ObjToInt(),
                        Details = new List<Dt_StockInfoDetail>()
                    };
                }
                else
                {
                    if (stockInfo.StockStatus != StockStatusEmun.组盘暂存.ObjToInt())
                    if (stockInfo.StockStatus != StockStatusEmun.组盘暂存.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.手动组盘暂存.ObjToInt())
                    {
                        return WebResponseContent.Instance.Error($"托盘号重复");
                    }
                    beforeQuantity = stockInfo.Details.Sum(x => x.StockQuantity);
                }
                if (warehouse.WarehouseCode == WarehouseEnum.HA64.ToString())
                {
                    stockInfo.Remark = Initiallife.ToString();
                }
                List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>();
                List<int> detailKeys = new List<int>();
                foreach (var model in models)
                {
                    if (purchaseOrderNos.FirstOrDefault(x => x == model.PurchaseOrderNo) == null)
                    {
                        return WebResponseContent.Instance.Error($"未在收货单明细中找到该采购单");
                    }
                    Dt_InboundOrderDetail? notGroupDetail = inboundOrderDetails.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt() && x.OrderQuantity == model.Quantity && !detailKeys.Contains(x.Id) && x.OrderQuantity > x.ReceiptQuantity).FirstOrDefault();
                    if (notGroupDetail == null)
                    {
                        return WebResponseContent.Instance.Error($"该物料在该入库单中已全部组盘完成");
                    }
                    detailKeys.Add(notGroupDetail.Id);
                    Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
                    {
                        BatchNo = model.LotNo,
                        MaterielCode = materielInfo.MaterielCode,
                        MaterielName = materielInfo.MaterielName,
                        OrderNo = inboundOrder.InboundOrderNo,
                        OrderNo = "",
                        SerialNumber = model.SerialNumber,
                        StockQuantity = model.Quantity,
                        OutboundQuantity = 0,
                        Status = StockStatusEmun.组盘暂存.ObjToInt(),
                        ProductionDate = model.ProductionDate,
                        EffectiveDate = model.EffectiveDate,
                        InboundOrderRowNo = notGroupDetail.RowNo,
                        InboundOrderRowNo = 0,
                    };
                    if (stockInfo.Id > 0)
@@ -527,14 +495,9 @@
                    stockInfo.Details.Add(stockInfoDetail);
                    stockInfoDetails.Add(stockInfoDetail);
                    notGroupDetail.ReceiptQuantity = model.Quantity;
                    notGroupDetail.OrderDetailStatus = OrderDetailStatusEnum.GroupAndInbound.ObjToInt();
                }
                float totalQuantity = stockInfo.Details.Sum(x => x.StockQuantity);
                inboundOrder.OrderStatus = InOrderStatusEnum.入库中.ObjToInt();
                _unitOfWorkManage.BeginTran();
                if (stockInfo.Id == 0)
@@ -545,19 +508,18 @@
                {
                    _stockRepository.StockInfoRepository.Db.UpdateNav(stockInfo).Include(x => x.Details, new UpdateNavOptions() { OneToManyInsertOrUpdate = true }).ExecuteCommand();
                }
                _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetails);
                _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder);
                _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfoDetails, beforeQuantity, totalQuantity, StockChangeTypeEnum.MaterielGroup);
                _unitOfWorkManage.CommitTran();
                return WebResponseContent.Instance.OK();
                content.OK();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                return WebResponseContent.Instance.Error(ex.Message);
                content.Error(ex.Message);
            }
            return content;
        }
        /// <summary>
        /// å…¥åº“完成上报ERP
        /// </summary>
@@ -575,13 +537,13 @@
                {
                    return WebResponseContent.Instance.Error($"入库单据已完成");
                }
                Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseId == stockInfo.WarehouseId);
                if (warehouse == null)
                {
                    return WebResponseContent.Instance.Error($"未找到仓库信息");
                }
                ERPInboundModel model = new ERPInboundModel()
                {
                    Code = inboundOrder.InboundOrderNo,
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -163,7 +163,7 @@
                LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus;
                locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId);
                stockInfo.LocationCode = locationInfo.LocationCode;
                Dt_InboundOrder? inboundOrder = _inboundRepository.InboundOrderRepository.Db.Queryable<Dt_InboundOrder>().Where(x => x.InboundOrderNo == stockInfo.Details.FirstOrDefault().OrderNo).Includes(x => x.Details).First();
                List<Dt_InboundOrderDetail> inboundOrderDetails = new List<Dt_InboundOrderDetail>();
@@ -176,7 +176,7 @@
                    }
                    List<ERPInboundDetailModel> detailModels = new List<ERPInboundDetailModel>();
                    foreach (var item in stockInfo.Details)
                    {
                        Dt_InboundOrderDetail? inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.RowNo == item.InboundOrderRowNo);
@@ -213,13 +213,13 @@
                    {
                        inboundOrder.OrderStatus = InOrderStatusEnum.入库完成.ObjToInt();
                    }
                    if (!_inboundOrderService.FeedbackInboundOrder(stockInfo, inboundOrder, detailModels).Status)
                    if (!_inboundOrderService.FeedbackInboundOrder(stockInfo, inboundOrder, detailModels).Status)//todo ä¿®æ”¹å¤„理
                    {
                        return WebResponseContent.Instance.Error($"入库同步Erp失败");
                    }
                }
                //测试架入库库存状态
                if (task.TaskType == TaskTypeEnum.Inbound.ObjToInt() && warehouse.WarehouseCode == WarehouseEnum.HA64.ToString())
                if (task.TaskType == TaskTypeEnum.Inbound.ObjToInt() && warehouse.WarehouseCode == WarehouseEnum.HA64.ToString() && stockInfo.StockStatus != StockStatusEmun.手动组盘入库确认.ObjToInt())
                {
                    stockInfo.StockStatus = StockStatusEmun.入库完成未建出库单.ObjToInt();
                }
@@ -239,8 +239,11 @@
                _stockRepository.StockInfoDetailRepository.UpdateData(stockInfo.Details);
                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationChangeType.InboundCompleted);
                _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfo.Details, stockInfo.Details.Sum(x => x.StockQuantity), stockInfo.Details.Sum(x => x.StockQuantity), StockChangeTypeEnum.Inbound, taskNum);
                _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetails);
                _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder);
                if (inboundOrder != null)
                {
                    _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetails);
                    _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder);
                }
                _unitOfWorkManage.CommitTran();
                return WebResponseContent.Instance.OK();
            }
@@ -301,7 +304,7 @@
                        }
                    }
                }
                if (warehouse.WarehouseCode != WarehouseEnum.HA64.ToString())
                {
                    //推送出库完成
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs
@@ -44,7 +44,7 @@
                {
                    return WebResponseContent.Instance.Error($"未找到组盘信息");
                }
                if (stockInfo.StockStatus != StockStatusEmun.组盘暂存.ObjToInt())
                if (stockInfo.StockStatus != StockStatusEmun.组盘暂存.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.手动组盘暂存.ObjToInt())
                {
                    return WebResponseContent.Instance.Error($"该托盘状态不正确,不可申请入库");
                }
@@ -71,10 +71,17 @@
                    WarehouseId = stockInfo.WarehouseId,
                    PalletType = stockInfo.PalletType
                };
                stockInfo.StockStatus = StockStatusEmun.入库确认.ObjToInt();
                _unitOfWorkManage.BeginTran();
                if (stockInfo.StockStatus == StockStatusEmun.手动组盘暂存.ObjToInt())
                {
                    stockInfo.StockStatus = StockStatusEmun.手动组盘入库确认.ObjToInt();
                }
                else
                {
                    stockInfo.StockStatus = StockStatusEmun.入库确认.ObjToInt();
                }
                    _unitOfWorkManage.BeginTran();
                int taskId = BaseDal.AddData(newTask);
                newTask.TaskId = taskId;
                _stockRepository.StockInfoRepository.UpdateData(stockInfo);
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs
@@ -75,5 +75,11 @@
        {
            return Service.FeedbackInboundOrder(id);
        }
        [HttpPost, HttpGet, Route("ManualMaterielGroup")]
        public WebResponseContent MaterielGroup(string palletCode, int initiallife, int warehouseId, [FromBody] List<string> serNums)
        {
            return Service.MaterielGroup(palletCode, initiallife, warehouseId, serNums);
        }
    }
}
´úÂë¹ÜÀí/»´°²PDA/pages.json
@@ -43,6 +43,14 @@
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/stash/boxing",
            "style": {
                "navigationBarTitleText": "WMS入库",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/stash/pickingMat",
            "style": {
´úÂë¹ÜÀí/»´°²PDA/pages/stash/boxing.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,514 @@
<template>
    <view>
        <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem">
        </uni-segmented-control>
        <view class="content">
            <view v-if="current === 0" class="headerstyle">
                <view class="itemstyle">
                    <uni-forms label-width="180">
                        <uni-forms-item label="托盘条码:">
                            <uni-easyinput type="text" placeholder="请扫描托盘条码" ref='midInput' :focus="!focus"
                                v-model="barcode" @input="barcodeInput" />
                        </uni-forms-item>
                        <uni-forms-item label="内箱标签:">
                            <uni-easyinput type="text" placeholder="请扫描内箱标签" ref='midInput' :focus="focus"
                                v-model="materSn" @input="snInput" />
                        </uni-forms-item>
                        <uni-forms-item label="初始寿命:" v-if="Test">
                            <uni-easyinput type="text" placeholder="请输入初始寿命" ref='midInput' v-model="Initiallife" />
                        </uni-forms-item>
                        <!-- <uni-forms-item>
                            <checkbox checked="check">是否满盘</checkbox>
                        </uni-forms-item> -->
                        <uni-forms-item>
                            <button @click="submit" type="primary" size="default" style="margin-top: 2%;">组盘</button>
                        </uni-forms-item>
                    </uni-forms>
                    <uni-list>
                        <!-- <uni-list-item direction="column" v-for="item in matTotal" :key="item.matCode">
                            <template v-slot:body>
                                <view class="uni-list-box">
                                    <view class="uni-content">
                                        <view class="uni-title-sub uni-ellipsis-2">物料编码:{{item.matCode}}</view>
                                        <view class="uni-title-sub uni-ellipsis-2">数量:{{item.matQuantity}}</view>
                                    </view>
                                </view>
                            </template>
                        </uni-list-item> -->
                        <uni-list-item direction="column" v-for="(item,index) in matInfos" :key="index">
                            <template v-slot:body>
                                <view class="uni-list-box">
                                    <uni-icons type="trash" size="22" style="position: absolute;right: 5%;"
                                        @click="deleteList(index)">
                                    </uni-icons>
                                    <view class="uni-content">
                                        <view class="uni-title-sub uni-ellipsis-2">采购单号:{{item.purchaseOrderNo}}</view>
                                        <view class="uni-note">物料编码:{{item.materielCode}}</view>
                                        <view class="uni-note">批次号:{{item.lotNo}}</view>
                                        <view class="uni-note">数量:{{item.quantity}}</view>
                                        <view class="uni-note">生产日期:{{item.productionDate}}</view>
                                        <view class="uni-note">有效期:{{item.effectiveDate}}</view>
                                    </view>
                                </view>
                            </template>
                        </uni-list-item>
                    </uni-list>
                </view>
            </view>
            <view v-if="current === 1" class="headerstyle">
                <view class="itemstyle">
                    <uni-forms label-width="120">
                        <uni-forms-item label="托盘条码">
                            <uni-easyinput type="text" :focus="!addressFocus" v-model="inboundBarcode"
                                placeholder="请扫描托盘条码" ref='midInput' @input="inputChangebarcode" />
                        </uni-forms-item>
                        <uni-forms-item label="地址条码">
                            <uni-easyinput type="text" v-model="address" placeholder="请扫描地址条码" ref='midInput'
                                :focus="addressFocus" />
                        </uni-forms-item>
                        <uni-forms-item>
                            <button @click="inbound" type="primary" size="default" style="margin-top: 2%;">入库确认</button>
                        </uni-forms-item>
                    </uni-forms>
                </view>
            </view>
            <view v-if="current === 2" class="headerstyle">
                <view class="itemstyle">
                    <uni-list :border="true">
                        <uni-list-item direction="column" v-for="(item,index) in orderInfo" :key="index">
                            <template v-slot:body>
                                <view class="uni-list-box">
                                    <view class="uni-content">
                                        <view style="font-size: 18px;">单据号:{{orderNo}}</view>
                                        <view style="font-size: 18px;">物料编码:{{item.materielCode}}</view>
                                        <!-- <view style="font-size: 18px;">物料名称:{{item.matName}}</view> -->
                                        <view style="font-size: 18px;">数量:{{item.orderQuantity}}</view>
                                        <view style="font-size: 18px;">单位:{{item.unit}}</view>
                                        <view style="font-size: 18px;">组盘数量:{{item.receiptQuantity}}</view>
                                    </view>
                                </view>
                            </template>
                        </uni-list-item>
                    </uni-list>
                </view>
            </view>
            <view v-if="current === 3" class="headerstyle">
                <view class="itemstyle">
                    <uni-forms label-width="120">
                        <uni-forms-item>
                            <uni-easyinput type="text" @input="releaseboxInput" v-model="value" placeholder="请扫码"
                                ref='midInput' :focus="true" />
                        </uni-forms-item>
                        <uni-forms-item>
                            <button @click="releasebox" type="primary" size="default">解盘</button>
                        </uni-forms-item>
                    </uni-forms>
                    <uni-list>
                        <uni-list-item direction="column" v-if="value2">
                            <template v-slot:body>
                                <view class="uni-list-box">
                                    <view class="uni-content">
                                        <view class="uni-title-sub uni-ellipsis-2">托盘号:{{value2}}</view>
                                    </view>
                                </view>
                            </template>
                        </uni-list-item>
                        <uni-list-item direction="column" v-for="item in matTotal" :key="item.matCode">
                            <template v-slot:body>
                                <view class="uni-list-box">
                                    <view class="uni-content">
                                        <view class="uni-title-sub uni-ellipsis-2">物料编码:{{item.matCode}}</view>
                                        <view class="uni-title-sub uni-ellipsis-2">数量:{{item.matQuantity}}</view>
                                    </view>
                                </view>
                            </template>
                        </uni-list-item>
                        <uni-list-item direction="column" v-for="(item,index) in matInfo" :key="index">
                            <template v-slot:body>
                                <view class="uni-list-box">
                                    <view class="uni-content">
                                        <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;">
                                            ç‰©æ–™ç¼–码:{{item.matCode}}
                                        </view>
                                        <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;">
                                            ç‰©æ–™åç§°ï¼š{{item.matName}}
                                        </view>
                                        <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;">
                                            æ•°é‡ï¼š{{item.matQty}}
                                        </view>
                                    </view>
                                </view>
                            </template>
                        </uni-list-item>
                    </uni-list>
                </view>
            </view>
        </view>
        <u-toast ref="uToast" />
    </view>
</template>
<script>
    const innerAudioContext = uni.createInnerAudioContext();
    export default {
        data() {
            return {
                items: ['组盘', '入库'], //, '单据信息', '解盘'
                current: 0,
                matTotal: [],
                matInfos: [],
                orderNo: "",
                label: "",
                orderInfo: [],
                focus: false,
                barcode: "",
                materSn: "",
                Initiallife: 1000,
                sns: [],
                addressFocus: false,
                inboundBarcode: "",
                address: "",
                check: true,
                value: "",
                matInfo: [],
                value2: "",
                matTotals: [],
                warehouseId: "",
                Test: false,
                Testcheck: false,
            }
        },
        onShow() {},
        onLoad(res) {
            this.focus = false;
            this.addressFocus = false;
            this.orderNo = res.orderNo;
            this.warehouseId = res.warehouseId;
            this.Test = this.warehouseId == 6; //测试架仓库区ID
            this.label = "单据编号:" + this.orderNo;
            this.getData();
        },
        methods: {
            voiceSpeech(src) {
                innerAudioContext.src = src; // '../../static/success.mp3';
                innerAudioContext.play();
            },
            //解盘
            releasebox() {
                if (this.value.length == 0) {
                    this.$refs.uToast.show({
                        title: "请扫码",
                        type: "error"
                    })
                    return;
                }
                var param;
                var matInfo = this.value.split('|');
                if (matInfo.length == 7) {
                    param = {
                        MainData: {
                            "innerCode": this.value
                        }
                    }
                } else {
                    param = {
                        MainData: {
                            "barcode": this.value
                        }
                    }
                }
                this.$u.post('/api/StockOperate/ReleaseAllBox', param).then(resdt => {
                    if (resdt.status) {
                        uni.$showMsg('解盘成功!')
                        this.value = "";
                        this.matInfo = [];
                        this.matTotals = [];
                        this.value2 = "";
                    } else {
                        this.$refs.uToast.show({
                            title: resdt.message,
                            type: "error"
                        })
                    }
                })
            },
            releaseboxInput() {
                this.$nextTick(() => {
                    if (this.value.length == 0) {
                        return;
                    }
                    var matInfo = this.value.split('|');
                    this.matInfo = [];
                    if (matInfo.length == 7) {
                        this.$u.post('/api/StockOperate/GetStockInfoByInnerCode', {
                            MainData: {
                                "innerCode": this.value
                            }
                        }).then(res => {
                            if (res.status) {
                                this.matInfo = res.data.stockInfo;
                                this.matTotals = res.data.stockTotal;
                                this.value2 = res.data.barcode;
                            } else {
                                this.$refs.uToast.show({
                                    title: res.message,
                                    type: "error"
                                })
                            }
                        })
                    } else {
                        this.$u.post('/api/StockOperate/GetStockInfoByBarcode', {
                            MainData: {
                                "barcode": this.value
                            }
                        }).then(res => {
                            if (res.status) {
                                this.matInfo = res.data.stockInfo;
                                this.matTotals = res.data.stockTotal;
                                this.value2 = res.data.barcode;
                            } else {
                                this.$refs.uToast.show({
                                    title: res.message,
                                    type: "error"
                                })
                            }
                        })
                    }
                })
            },
            updateFocus() {
                debugger
                this.$nextTick(() => {
                    this.materSn = '';
                    if (!this.focus) {
                        this.focus = true;
                    }
                });
            },
            barcodeFocus() {
                debugger
                this.barcode = '';
                if (this.focus) {
                    this.focus = false;
                }
            },
            getData() {
                var postData = {
                    MainData: {
                        orderNo: this.orderNo
                    },
                }
                this.$u.post('/api/InboundOrderDetail/GetInboundOrderDetails', postData).then((res) => {
                    if (res.status) {
                        this.orderInfo = res.data;
                        if (this.orderInfo.length > 3) {
                            this.loadVisible = true;
                        }
                    }
                })
            },
            onClickItem(e) {
                this.focus = false;
                this.addressFocus = false;
                if (this.current !== e.currentIndex) {
                    this.current = e.currentIndex;
                    if (this.current == 2) {
                        this.getData();
                    }
                }
            },
            barcodeInput() {
                this.$nextTick(function(x) {
                    if (this.barcode.length > 0) {
                        // if (this.barcode.substring(0, 1) == 'A' || this.barcode.substring(0, 2) == 'TP') {
                        this.focus = true;
                        // } else {
                        //     this.$refs.uToast.show({
                        //         title: "扫码错误,请扫描托盘码",
                        //         type: "error"
                        //     })
                        // }
                    }
                })
            },
            snInput() {
                this.$nextTick(() => {
                    if (this.materSn != "") {
                        this.focus = false;
                        var matSn = this.materSn;
                        setTimeout(() => {
                            this.materSn = "";
                        }, 10);
                        this.$u.post('/api/MaterielInfo/CodeAnalysis?serNum=' + matSn, {}).then((res) => {
                            this.Testcheck = false;
                            if (res.status) {
                                // debugger
                                // this.matTotal.push({
                                //     matCode: res.data.materielCode,
                                //     matQuantity: parseInt(res.data.quantity)
                                // });
                                this.sns.push(res.data.serialNumber);
                                // this.matInfos.splice(0, this.matInfos.length);
                                this.matInfos.push(res.data);
                                if (res.message) {
                                    this.$refs.uToast.show({
                                        title: res.message,
                                        type: "error"
                                    })
                                    // setTimeout(this.updateFocus,200);
                                    setTimeout(() => {
                                        this.voiceSpeech('../../static/fail.mp3');
                                    }, 100);
                                    return;
                                }
                                // setTimeout(this.updateFocus,200);
                                setTimeout(() => {
                                    this.voiceSpeech('../../static/success.mp3');
                                }, 100);
                            } else {
                                // this.innerCode = "";
                                this.$refs.uToast.show({
                                    title: res.message,
                                    type: "error"
                                })
                                // setTimeout(this.updateFocus,200);
                                setTimeout(() => {
                                    this.voiceSpeech('../../static/fail.mp3');
                                }, 100);
                            }
                        })
                    }
                })
            },
            inbound() {
                if (this.inboundBarcode == "") {
                    this.$refs.uToast.show({
                        title: "请扫描托盘条码",
                        type: "error"
                    })
                    return;
                }
                if (this.address == "") {
                    this.$refs.uToast.show({
                        title: "请扫描地址条码",
                        type: "error"
                    })
                    return;
                }
                var postData = {
                    MainData: {
                        "barcode": this.inboundBarcode,
                        "startPoint": this.address,
                        "warehouseId": this.warehouseId
                    }
                }
                this.$u.post('/api/Task/RequestInboundTask', postData).then(res => {
                    if (res.status) {
                        uni.$showMsg(res.message);
                        this.inboundBarcode = "";
                        this.address = "";
                        setTimeout(() => {
                            this.addressFocus = false;
                        }, 200);
                    } else {
                        this.$refs.uToast.show({
                            title: res.message,
                            type: "error"
                        })
                    }
                }).catch(err => {
                    this.$refs.uToast.show({
                        title: err.message,
                        type: "error"
                    })
                })
            },
            inputChangebarcode() {
                this.addressFocus = false;
                this.$nextTick(function(x) {
                    if (this.inboundBarcode != '') {
                        this.addressFocus = true;
                    }
                })
            },
            deleteList(res) {
                this.matInfos.splice(res, 1);
                this.sns.splice(res, 1);
            },
            submit() {
                if (this.barcode == "") {
                    this.$refs.uToast.show({
                        title: "请扫描托盘条码",
                        type: 'error'
                    })
                    return;
                }
                if (this.matInfos.length == 0) {
                    this.$refs.uToast.show({
                        title: "请扫描内箱标签",
                        type: 'error'
                    })
                    return;
                }
                if (this.Test) {
                    if (!this.Testcheck) {
                        this.Testcheck = true;
                        this.$refs.uToast.show({
                            title: "请确认初始寿命",
                            type: 'error'
                        })
                        return;
                    }
                }
                let url = 'palletCode=' + this.barcode + '&initiallife=' + this.Initiallife + '&warehouseId=' + this.warehouseId;
                this.$u.post('/api/InboundOrder/ManualMaterielGroup?' + url, this.sns).then(res => {
                    this.Testcheck = false;
                    if (res.status) {
                        this.$refs.uToast.show({
                            title: "组盘成功",
                            type: "success"
                        })
                        this.focus = false;
                        this.barcode = "";
                        this.matInfos = [];
                        this.sns = [];
                        this.matTotal = [];
                    } else {
                        this.$refs.uToast.show({
                            title: res.message,
                            type: "error"
                        })
                    }
                })
            }
        }
    }
</script>
<style lang="scss">
    @import '@/common/uni-ui.scss';
    .content {
        display: flex;
        height: 150px;
    }
    .content-text {
        font-size: 14px;
        color: #666;
    }
    .itemstyle {
        margin-top: 30px;
        margin-left: 5%;
    }
    .headerstyle {
        width: 90%;
    }
</style>
´úÂë¹ÜÀí/»´°²PDA/static/iconfont.css
@@ -1,77 +1,82 @@
@font-face {
    font-family: "custom-icon";
    src:
        url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2');
  font-family: "custom-icon";
  src:
       url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2');
}
.custom-icon {
    font-family: "custom-icon" !important;
    font-size: 16px;
    font-style: normal;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  font-family: "custom-icon" !important;
  font-size: 16px;
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.custom-icon-_WMS_rukuyewu:before {
  content: "\e70f";
}
.custom-icon-chuku:before {
    content: "\e602";
  content: "\e602";
}
.custom-icon-ruku:before {
    content: "\e606";
  content: "\e606";
}
.custom-icon-zhijin:before {
    content: "\e652";
  content: "\e652";
}
.custom-icon-shouhuo:before {
    content: "\e60f";
  content: "\e60f";
}
.custom-icon-kucunpandian-:before {
    content: "\e646";
  content: "\e646";
}
.custom-icon-ppt:before {
    content: "\e734";
  content: "\e734";
}
.custom-icon-chengpinchuku:before {
    content: "\e62f";
  content: "\e62f";
}
.custom-icon-jianxuandan:before {
    content: "\e62b";
  content: "\e62b";
}
.custom-icon-kucunchaxun:before {
    content: "\e681";
  content: "\e681";
}
.custom-icon-zhuangxiangruku1:before {
    content: "\e601";
  content: "\e601";
}
.custom-icon-chanpin-youmotuliao:before {
    content: "\e682";
  content: "\e682";
}
.custom-icon-bancaiwuliao:before {
    content: "\e676";
  content: "\e676";
}
.custom-icon-ceshijiaguanli:before {
    content: "\e678";
  content: "\e678";
}
.custom-icon-lingliaozupan:before {
    content: "\e77d";
  content: "\e77d";
}
.custom-icon-chengpincangku:before {
    content: "\e6f9";
  content: "\e6f9";
}
.custom-icon-fuliaocangku:before {
    content: "\e6fa";
}
  content: "\e6fa";
}