hwh
2024-07-17 cfe19c291c3c8362372c60a10f1d5a11927639f8
Merge branch 'hwh'
5个文件已修改
1788 ■■■■■ 已修改文件
HTML/views/HouseWithinSetting/StockCheck.html 1396 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs 355 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.Entity/LogEntity/LogTask.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IBllCheckServer/IStockCheckServer.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/DownApiController.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HTML/views/HouseWithinSetting/StockCheck.html
@@ -1,157 +1,163 @@
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>盘点单据列表</title>
        <meta name="renderer" content="webkit">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
        <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
        <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
        <link rel="stylesheet" href="../../css/public.css" media="all">
        <style>
            .layui-table-tool-panel{
                top: auto;
                bottom: 29px;
            }
            .layui-table-tool{
                padding-left: 5px;
            }
            /* 表格下拉小箭头隐藏 */
            .layui-table-grid-down {
                display: none;
            }
        </style>
        <script>
            // 这里是需要在页面渲染之前执行的代码
            document.addEventListener("DOMContentLoaded", function() {
                //获取table默认显示数
                pageCntFirst();
                //判断是否开启table列表列宽调整功能。
                GetIsSetColW();
            });
          </script>
    </head>
    <body  id="body">
        <div class="layui-fluid" style="padding-bottom: 0;">
            <div class="layui-card">
                <div class="layui-form layui-card-header layuiadmin-card-header-auto" id="top">
                    <div class="layui-form-item">
                        <div class="layui-inline">
                            <label class="layui-form-label" style="width: 60px;">盘点单号</label>
                            <div class="layui-input-inline">
                                <input type="text" id="CRNo" name="CRNo" placeholder="盘点单号" autocomplete="off"
                                    class="layui-input">
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label" style="width: 60px;">执行状态</label>
                            <div class="layui-input-inline">
                                <select name="Status" id="Status" lay-filter="Status" lay-search>
                                    <option value=""></option>
                                    <option value="0">等待执行</option>
                                    <option value="1">正在执行</option>
                                    <option value="2">盘点完成</option>
                                    <option value="3">生成调整</option>
                                </select>
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label" style="width: 60px;">托盘条码</label>
                            <div class="layui-input-inline">
                                <input type="text" id="PalletNo" name="PalletNo" placeholder="托盘条码" autocomplete="off"
                                    class="layui-input">
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label" style="width: 60px;">物品编码</label>
                            <div class="layui-input-inline">
                                <input type="text" id="SkuNo" name="SkuNo" placeholder="物品编码"
                                    autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label" style="width: 60px;">物品名称</label>
                            <div class="layui-input-inline">
                                <input type="text" id="SkuName" name="SkuName" placeholder="物品名称" autocomplete="off"
                                    class="layui-input">
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label" style="width: 60px;">批次</label>
                            <div class="layui-input-inline">
                                <input type="text" id="LotNo" name="LotNo" placeholder="批次" autocomplete="off"
                                    class="layui-input">
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label" style="width: 60px;">开始日期</label>
                            <div class="layui-input-inline">
                                <input type="text" autocomplete="off" name="StartTime" id="StartTime" class="layui-input"
                                    placeholder="开始日期">
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label" style="width: 60px;">结束日期</label>
                            <div class="layui-input-inline">
                                <input type="text" autocomplete="off" name="EndTime" id="EndTime" class="layui-input"
                                    placeholder="结束日期">
                            </div>
                        </div>
                        <div class="layui-inline" id="divPickingArea" style="display: none; padding-top: 10px;">
                            <label class="layui-form-label">出库口</label>
                            <div class="layui-input-inline">
                                <select name="PickingArea" id="PickingArea" lay-search>
                                    <option value=""></option>
                                    <option value="1">1</option>
                                    <option value="2">2</option>
                                    <option value="3">3</option>
                                    <option value="4">4</option>
                                </select>
                            </div>
                        </div>
                        <div class="layui-inline">
                            <button class="layui-btn layui-btn-sm layuiadmin-btn-list" lay-submit
                                lay-filter="LAY-app-contlist-search">
                                <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>搜索
                            </button>
                        </div>
                        <!-- 维护备注弹框 -->
                        <div class="layui-inline" id="divEditDemo" style="display: none; padding-top: 10px;">
                            <label class="layui-form-label">备注</label>
                            <div class="layui-input-inline" style="width: 300px;height: 100%;">
                                <textarea placeholder="请输入内容" id="NoticeDemo" name="NoticeDemo" class="layui-textarea"></textarea>
                            </div>
<head>
    <meta charset="utf-8">
    <title>盘点单据列表</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport"
        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
    <link rel="stylesheet" href="../../css/public.css" media="all">
    <style>
        .layui-table-tool-panel {
            top: auto;
            bottom: 29px;
        }
        .layui-table-tool {
            padding-left: 5px;
        }
        /* 表格下拉小箭头隐藏 */
        .layui-table-grid-down {
            display: none;
        }
    </style>
    <script>
        // 这里是需要在页面渲染之前执行的代码
        document.addEventListener("DOMContentLoaded", function () {
            //获取table默认显示数
            pageCntFirst();
            //判断是否开启table列表列宽调整功能。
            GetIsSetColW();
        });
    </script>
</head>
<body id="body">
    <div class="layui-fluid" style="padding-bottom: 0;">
        <div class="layui-card">
            <div class="layui-form layui-card-header layuiadmin-card-header-auto" id="top">
                <div class="layui-form-item">
                    <div class="layui-inline">
                        <label class="layui-form-label" style="width: 60px;">盘点单号</label>
                        <div class="layui-input-inline">
                            <input type="text" id="CRNo" name="CRNo" placeholder="盘点单号" autocomplete="off"
                                class="layui-input">
                        </div>
                    </div>
                    <div class="layui-inline">
                        <label class="layui-form-label" style="width: 60px;">执行状态</label>
                        <div class="layui-input-inline">
                            <select name="Status" id="Status" lay-filter="Status" lay-search>
                                <option value=""></option>
                                <option value="0">等待执行</option>
                                <option value="1">正在执行</option>
                                <option value="2">盘点完成</option>
                                <option value="3">生成调整</option>
                            </select>
                        </div>
                    </div>
                    <div class="layui-inline">
                        <label class="layui-form-label" style="width: 60px;">托盘条码</label>
                        <div class="layui-input-inline">
                            <input type="text" id="PalletNo" name="PalletNo" placeholder="托盘条码" autocomplete="off"
                                class="layui-input">
                        </div>
                    </div>
                    <div class="layui-inline">
                        <label class="layui-form-label" style="width: 60px;">物品编码</label>
                        <div class="layui-input-inline">
                            <input type="text" id="SkuNo" name="SkuNo" placeholder="物品编码" autocomplete="off"
                                class="layui-input">
                        </div>
                    </div>
                    <div class="layui-inline">
                        <label class="layui-form-label" style="width: 60px;">物品名称</label>
                        <div class="layui-input-inline">
                            <input type="text" id="SkuName" name="SkuName" placeholder="物品名称" autocomplete="off"
                                class="layui-input">
                        </div>
                    </div>
                    <div class="layui-inline">
                        <label class="layui-form-label" style="width: 60px;">批次</label>
                        <div class="layui-input-inline">
                            <input type="text" id="LotNo" name="LotNo" placeholder="批次" autocomplete="off"
                                class="layui-input">
                        </div>
                    </div>
                    <div class="layui-inline">
                        <label class="layui-form-label" style="width: 60px;">开始日期</label>
                        <div class="layui-input-inline">
                            <input type="text" autocomplete="off" name="StartTime" id="StartTime" class="layui-input"
                                placeholder="开始日期">
                        </div>
                    </div>
                    <div class="layui-inline">
                        <label class="layui-form-label" style="width: 60px;">结束日期</label>
                        <div class="layui-input-inline">
                            <input type="text" autocomplete="off" name="EndTime" id="EndTime" class="layui-input"
                                placeholder="结束日期">
                        </div>
                    </div>
                    <div class="layui-inline" id="divPickingArea" style="display: none; padding-top: 10px;">
                        <label class="layui-form-label">出库口</label>
                        <div class="layui-input-inline">
                            <select name="PickingArea" id="PickingArea" lay-search>
                                <option value=""></option>
                                <option value="1">1</option>
                                <option value="2">2</option>
                                <option value="3">3</option>
                                <option value="4">4</option>
                            </select>
                        </div>
                    </div>
                    <div class="layui-inline">
                        <button class="layui-btn layui-btn-sm layuiadmin-btn-list" lay-submit
                            lay-filter="LAY-app-contlist-search">
                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>搜索
                        </button>
                    </div>
                    <!-- 维护备注弹框 -->
                    <div class="layui-inline" id="divEditDemo" style="display: none; padding-top: 10px;">
                        <label class="layui-form-label">备注</label>
                        <div class="layui-input-inline" style="width: 300px;height: 100%;">
                            <textarea placeholder="请输入内容" id="NoticeDemo" name="NoticeDemo"
                                class="layui-textarea"></textarea>
                        </div>
                    </div>
                </div>
                <div id="center"></div>
                <div class="layui-card-body">
                    <div class="position-relative">
                        <table id="LAY-app-content-list" lay-filter="LAY-app-content-list" ></table>
                        <!--#region 自定义表头 -->
                        <div class="headerSetIcon">
                            <button class="layui-btn layui-btn-primary layui-btn-sm" data-type="customCols">
                                <i class="layui-icon">&#xe610;</i>
                            </button>
                        </div>
                        <!-- #endregion -->
            </div>
            <div id="center"></div>
            <div class="layui-card-body">
                <div class="position-relative">
                    <table id="LAY-app-content-list" lay-filter="LAY-app-content-list"></table>
                    <!--#region 自定义表头 -->
                    <div class="headerSetIcon">
                        <button class="layui-btn layui-btn-primary layui-btn-sm" data-type="customCols">
                            <i class="layui-icon">&#xe610;</i>
                        </button>
                    </div>
                    <!-- #endregion -->
                </div>
                <div class="position-relative">
                    <table id="LAY-app-content-list2" lay-filter="LAY-app-content-list2"></table>
                    <!--#region 自定义表头 -->
                    <div class="headerSetIcon">
                        <button class="layui-btn layui-btn-primary layui-btn-sm" data-type="customCols2">
                            <i class="layui-icon">&#xe610;</i>
                        </button>
                    </div>
                    <div class="position-relative">
                        <table id="LAY-app-content-list2" lay-filter="LAY-app-content-list2" ></table>
                        <!--#region 自定义表头 -->
                        <div class="headerSetIcon">
                            <button class="layui-btn layui-btn-primary layui-btn-sm" data-type="customCols2">
                                <i class="layui-icon">&#xe610;</i>
                            </button>
                        </div>
                        <!-- #endregion -->
                    </div>
                    <script type="text/html" id="table-content-list">
                    <!-- #endregion -->
                </div>
                <script type="text/html" id="table-content-list">
                        {{# 
                                var html = ''; 
                                 
@@ -163,6 +169,9 @@
                                            </a>`;                                   
                                }
                                if(d.Status == 0 || d.Status == 1){
                                    html += `<a class="layui-btn layui-btn-xs checkOut" lay-event="vision">
                                        <i class="layui-icon layui-icon-ok"></i>视觉盘点
                                    </a>`;
                                    html += `<a class="layui-btn layui-btn-xs checkOut" lay-event="outbound"> 
                                        <i class="layui-icon layui-icon-ok"></i>出库
                                    </a>`;
@@ -179,9 +188,9 @@
                        }}
                         
                    </script>
                    <script type="text/html" id="toolbarDemo">
                <script type="text/html" id="toolbarDemo">
                        <button class="layui-btn layuiadmin-btn-list layui-btn-sm  addClass" lay-event="add">
                            <i class="layui-icon">&#xe654;</i>添加
                        </button> 
@@ -190,8 +199,8 @@
                        </button> 
                    </script>
                    <!-- 总单来源 -->
                    <script type="text/html" id="OriginzongButton">
                <!-- 总单来源 -->
                <script type="text/html" id="OriginzongButton">
                        {{#  if(d.Origin=='0'){ }}
                            <p>操作人创建</p>
                        {{#  } else if(d.Origin=='1'){ }}
@@ -199,8 +208,8 @@
                        {{#  } }}
                    </script>
                    <!-- 总单是否复盘 -->
                    <script type="text/html" id="IsDoubleCheckButton">
                <!-- 总单是否复盘 -->
                <script type="text/html" id="IsDoubleCheckButton">
                        {{#  if(d.AuditStatusNo=='0'){ }}
                            <p>否</p>
                        {{#  } else if(d.AuditStatusNo=='1'){ }}
@@ -208,8 +217,8 @@
                        {{#  } }}
                    </script>
                    <!-- 总单审核状态 -->
                    <script type="text/html" id="AuditStatusButton">
                <!-- 总单审核状态 -->
                <script type="text/html" id="AuditStatusButton">
                        {{#  if(d.AuditStatusNo=='0'){ }}
                            <p>待审核</p>
                        {{#  } else if(d.AuditStatusNo=='9'){ }}
@@ -217,8 +226,8 @@
                        {{#  } }}
                    </script>
                    <!-- 总单执行状态 -->
                    <script type="text/html" id="StatuszongButton">
                <!-- 总单执行状态 -->
                <script type="text/html" id="StatuszongButton">
                        {{# 
                            var html = ``;
                            if(d.Status=='0'){ 
@@ -237,43 +246,43 @@
                        }}
                    </script>
                    <!-- 总单开始时间 -->
                    <script type="text/html" id="CheckDateButton">
                <!-- 总单开始时间 -->
                <script type="text/html" id="CheckDateButton">
                        {{#
                            return formatDate(d.CheckDate);
                        }}
                    </script>
                    <!-- 总单完成时间 -->
                    <script type="text/html" id="CompleteDateButtom">
                <!-- 总单完成时间 -->
                <script type="text/html" id="CompleteDateButtom">
                        {{#
                            return formatDate(d.CompleteDate);
                        }}
                    </script>
                    <!-- 总单审核时间 -->
                    <script type="text/html" id="AuditTimeButton">
                <!-- 总单审核时间 -->
                <script type="text/html" id="AuditTimeButton">
                        {{#
                            return formatDate(d.AuditTime);
                        }}
                    </script>
                    <!-- 创建时间 -->
                    <script type="text/html" id="CreateTimeButton">
                <!-- 创建时间 -->
                <script type="text/html" id="CreateTimeButton">
                        {{#
                            return formatDate(d.CreateTime);
                        }}
                    </script>
                    <!-- 修改时间 -->
                    <script type="text/html" id="UpdateTimeButton">
                <!-- 修改时间 -->
                <script type="text/html" id="UpdateTimeButton">
                        {{#
                            return formatDate(d.UpdateTime);
                        }}
                    </script>
                    <!-- 明细执行状态 -->
                    <script type="text/html" id="StatusmingButton">
                <!-- 明细执行状态 -->
                <script type="text/html" id="StatusmingButton">
                        {{# 
                            var html = ``;
                            if(d.Status=='0'){ 
@@ -294,8 +303,8 @@
                        }}
                    </script>
                    <!-- 明细盘点结果 -->
                    <script type="text/html" id="CheckResultButton">
                <!-- 明细盘点结果 -->
                <script type="text/html" id="CheckResultButton">
                        {{# 
                            var html = ``;
                            if(d.CheckResult=='0'){ 
@@ -314,533 +323,574 @@
                        }}
                    </script>
                </div>
            </div>
        </div>
        <script src="../../layuiadmin/layui/layui.js"></script>
        <script src="../../js/jquery-3.5.1.min.js"></script>
        <script src="../../js/jquery.cookie.js"></script>
        <script src="../../js/public.js"></script>
        <script>
            layui.config({
                base: '../../layuiadmin/' //静态资源所在路径
            }).extend({
                index: 'lib/index' //主入口模块
            }).use(['index', 'table', 'laypage', 'layer', 'laydate'], function() {
                var table = layui.table,
                    form = layui.form,
                    laypage = layui.laypage,
                    layer = layui.layer;
                    laydate = layui.laydate;
                var $ = layui.$;
                var h1 = GetTableTopHeight();
                var h2 = GetTableBottomHeight();
                laydate.render({
                    elem: '#StartTime'
                    , format: 'yyyy-MM-dd' //可任意组合
                });
                laydate.render({
                    elem: '#EndTime'
                    , format: 'yyyy-MM-dd' //可任意组合
                });
                var isChongFu = true;
                var xqid = "kong";
    </div>
                //总单
                var TotalColsArrz =
                    [[
                        {field:'',title: '序号', type: 'numbers', width: 65, fixed: 'left', "disabled": true, },
                        {field: 'CrNo', title: '盘点单号', align: 'center', fixed: 'left', width: 165, },
                        {field: 'Origin',title: '来源',align: 'center', templet: '#OriginzongButton', },
                        {field: 'Status',title: '执行状态',align: 'center', templet: '#StatuszongButton', },
                        {field: 'CheckDate',title: '开始时间',align: 'center', templet: '#CheckDateButton', },
                        {field: 'CompleteDate',title: '完成时间',align: 'center', templet: '#CompleteDateButtom',  },
                        {field: 'Demo',title: '备注',align: 'center',width: 180},
                        {field: 'AuditStatusNo',title: '审核状态',align: 'center',width: 130,hide:true, templet: '#AuditStatusButton', },
                        {field: 'IsDoubleCheck', title: '是否复盘', align: 'center', width: 180, hide:true, templet: '#IsDoubleCheckButton', },
                        {field: 'AuditUserName',title: '审核人',align: 'center',width: 180,hide:true},
                        {field: 'AuditTime',title: '审核时间',align: 'center',width: 95,hide:true , templet: '#AuditTimeButton', },
                        {field: 'CreateUserName', title:'创建人', align:'center',  },
                        {field: 'CreateTime',title: '创建时间',align: 'center', templet: '#CreateTimeButton', },
                        {field: 'UpdateUserName',title: '修改人',align: 'center',width: 120,hide:true},
                        {field: 'UpdateTime',title: '修改时间',align: 'center',width: 160,hide:true, templet: '#UpdateTimeButton',  },
                        {field:'caozuo',title: '操作',fixed: 'right',align: 'center',toolbar: '#table-content-list',width: 240 }
                    ]];
                var TotalColsSysArrz=encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArrz)))//将表头数据进行url编码
    <script src="../../layuiadmin/layui/layui.js"></script>
    <script src="../../js/jquery-3.5.1.min.js"></script>
    <script src="../../js/jquery.cookie.js"></script>
    <script src="../../js/public.js"></script>
    <script>
                //明细
                var TotalColsArrm =
                    [[
                            {field:'',title:'序号', type:'numbers', width:65, fixed:'left', "disabled": true, },
                            {field:'CrNo', title:'盘点单号', align:'center', fixed:'left', width: 165, },
                            {field:'PalletNo', title:'托盘号', align:'center', fixed:'left', width: 165, },
                            {field:'Qty', title:'库存数量', align:'center', fixed:'left', width: 105, },
                            {field:'RealQty', title:'实际数量', align:'center', width: 105, },
                            {field:'Status', title:'执行状态', align:'center', width: 105, templet : '#StatusmingButton', },
                            {field:'CheckResult', title:'盘点结果', align:'center', width:105,  templet : '#CheckResultButton', },
                            {field:'SkuNo', title:'物料编码', align:'center', width:105, },
                            {field:'SkuName', title:'物料名称', align:'center', width:125, },
                            {field:'Standard', title:'规格', align:'center', width:225, },
                            {field:'LotNo', title:'批次号', align:'center', width:105, },
                            {field:'LotText', title:'批次描述', align:'center', width:105, },
                            {field:'SupplierLot', title:'供货批次', align:'center', width:105, },
                            {field: 'CreateUserName', title:'创建人', align:'center', width:100, },
                            {field: 'CreateTime',title: '创建时间',align: 'center',width: 160,  templet: '#CreateTimeButton',},
                            {field: 'UpdateUserName',title: '修改人',align: 'center',width: 120,hide:true},
                            {field: 'UpdateTime',title: '修改时间',align: 'center',width: 160,hide:true, templet: '#UpdateTimeButton',},
                    ]];
                var TotalColsSysArrm=encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArrm)))//将表头数据进行url编码
                refreshTable();
                var colsJsonz;
                var colsJsonm;
        layui.config({
            base: '../../layuiadmin/' //静态资源所在路径
        }).extend({
            index: 'lib/index' //主入口模块
        }).use(['index', 'table', 'laypage', 'layer', 'laydate'], function () {
            var table = layui.table,
                form = layui.form,
                laypage = layui.laypage,
                layer = layui.layer;
            laydate = layui.laydate;
            var $ = layui.$;
            var h1 = GetTableTopHeight();
            var h2 = GetTableBottomHeight();
            laydate.render({
                elem: '#StartTime'
                , format: 'yyyy-MM-dd' //可任意组合
            });
            laydate.render({
                elem: '#EndTime'
                , format: 'yyyy-MM-dd' //可任意组合
            });
            var isChongFu = true;
            var xqid = "kong";
            //总单
            var TotalColsArrz =
                [[
                    { field: '', title: '序号', type: 'numbers', width: 65, fixed: 'left', "disabled": true, },
                    { field: 'CrNo', title: '盘点单号', align: 'center', fixed: 'left', width: 165, },
                    { field: 'Origin', title: '来源', align: 'center', templet: '#OriginzongButton', },
                    { field: 'Status', title: '执行状态', align: 'center', templet: '#StatuszongButton', },
                    { field: 'CheckDate', title: '开始时间', align: 'center', templet: '#CheckDateButton', },
                    { field: 'CompleteDate', title: '完成时间', align: 'center', templet: '#CompleteDateButtom', },
                    { field: 'Demo', title: '备注', align: 'center', width: 180 },
                    { field: 'AuditStatusNo', title: '审核状态', align: 'center', width: 130, hide: true, templet: '#AuditStatusButton', },
                    { field: 'IsDoubleCheck', title: '是否复盘', align: 'center', width: 180, hide: true, templet: '#IsDoubleCheckButton', },
                    { field: 'AuditUserName', title: '审核人', align: 'center', width: 180, hide: true },
                    { field: 'AuditTime', title: '审核时间', align: 'center', width: 95, hide: true, templet: '#AuditTimeButton', },
                    { field: 'CreateUserName', title: '创建人', align: 'center', },
                    { field: 'CreateTime', title: '创建时间', align: 'center', templet: '#CreateTimeButton', },
                    { field: 'UpdateUserName', title: '修改人', align: 'center', width: 120, hide: true },
                    { field: 'UpdateTime', title: '修改时间', align: 'center', width: 160, hide: true, templet: '#UpdateTimeButton', },
                    { field: 'caozuo', title: '操作', fixed: 'right', align: 'center', toolbar: '#table-content-list', width: 240 }
                ]];
            var TotalColsSysArrz = encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArrz)))//将表头数据进行url编码
            //明细
            var TotalColsArrm =
                [[
                    { field: '', title: '序号', type: 'numbers', width: 65, fixed: 'left', "disabled": true, },
                    { field: 'CrNo', title: '盘点单号', align: 'center', fixed: 'left', width: 165, },
                    { field: 'PalletNo', title: '托盘号', align: 'center', fixed: 'left', width: 165, },
                    { field: 'Qty', title: '库存数量', align: 'center', fixed: 'left', width: 105, },
                    { field: 'RealQty', title: '实际数量', align: 'center', width: 105, },
                    { field: 'Status', title: '执行状态', align: 'center', width: 105, templet: '#StatusmingButton', },
                    { field: 'CheckResult', title: '盘点结果', align: 'center', width: 105, templet: '#CheckResultButton', },
                    { field: 'SkuNo', title: '物料编码', align: 'center', width: 105, },
                    { field: 'SkuName', title: '物料名称', align: 'center', width: 125, },
                    { field: 'Standard', title: '规格', align: 'center', width: 225, },
                    { field: 'LotNo', title: '批次号', align: 'center', width: 105, },
                    { field: 'LotText', title: '批次描述', align: 'center', width: 105, },
                    { field: 'SupplierLot', title: '供货批次', align: 'center', width: 105, },
                    { field: 'CreateUserName', title: '创建人', align: 'center', width: 100, },
                    { field: 'CreateTime', title: '创建时间', align: 'center', width: 160, templet: '#CreateTimeButton', },
                    { field: 'UpdateUserName', title: '修改人', align: 'center', width: 120, hide: true },
                    { field: 'UpdateTime', title: '修改时间', align: 'center', width: 160, hide: true, templet: '#UpdateTimeButton', },
                ]];
            var TotalColsSysArrm = encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArrm)))//将表头数据进行url编码
            refreshTable();
            var colsJsonz;
            var colsJsonm;
            // refreshTablemx(xqid);
            //渲染盘点总单
            function refreshTable() {
                var param1 = {
                    // Href:'QualityControl/QualityInformation'
                    Href: 'BllCheck/GetStockCheckList'
                };
                sendData(IP + "/Sys/GetTableColsByUserId", param1, 'post', function (res) {
                    if (res.code == 0) {
                        if (res.data == '' || res.data == undefined || res.data == null) {
                            console.log(1)
                            colsJsonz = TotalColsArrz
                        } else {
                            console.log(2)
                            colsJsonz = eval(res.data);
                        }
                    } else {
                        colsJsonz = TotalColsArrz
                    }
                    // tableclass(LotNo,SkuNo,SkuName,IsQualified);
                    var param = {
                        CrNo: $("#CRNo").val(),
                        Status: $("#Status").val(),
                        PalletNo: $("#PalletNo").val(),
                        SkuNo: $("#SkuNo").val(),
                        SkuName: $("#SkuName").val(),
                        LotNo: $("#LotNo").val(),
                        StartTime: $("#StartTime").val(),
                        EndTime: $("#EndTime").val(),
                    };
                    table.render({
                        elem: '#LAY-app-content-list',
                        url: IP + "/BllCheck/GetStockCheckList",
                        method: 'post',
                        height: h1,//'full-'+hei1
                        id: 'LAY-app-content-list',
                        where: param,
                        contentType: 'application/json',
                        // toolbar: '#toolbarDemo',
                        defaultToolbar: [], //'filter','print', 'exports'
                        headers: { ToKen: $.cookie('token') },
                        page: true,
                        even: true,
                        limit: pageCnt,
                        limits: pageLimits,
                        cellMinWidth: 60, //全局定义常规单元格的最小宽度,layui 2.2.1 新增
                        done: function (res) {
                            initMenu();
                            var soCode = "res.data[0].SONo";
                            if (res.data.length != 0) {
                                soCode = res.data[0].SONo;
                            }
                            refreshTablemx(soCode)
                            //自定义列宽
                            SetTableColW('LAY-app-content-list', 'BllCheck/GetStockCheckList', TotalColsSysArrz);
                        },
                        cols: colsJsonz
                    });
                    // table.render({
                    //     elem: '#LAY-app-content-list',
                    //     url: IP+"/BllCheck/GetStockCheckList",
                    //     method: 'POST',
                    //     height: h1 ,//'full-'+hei1
                    //     id: 'LAY-app-content-list',
                    //     where: param,
                    //     contentType: 'application/json',
                    //     headers:{ToKen:$.cookie('token')},
                    //     page: true,
                    //     even: true,
                    //     limit: pageCnt,
                    //     limits: pageLimits,
                    //     cellMinWidth: 60, //全局定义常规单元格的最小宽度,layui 2.2.1 新增
                    //     done: function(res){
                    //         initMenu();
                    //         var soCode = "res.data[0].SONo";
                    //         if (res.data.length != 0) {
                    //             soCode = res.data[0].SONo;
                    //         }
                    //         refreshTablemx(soCode)
                    //     },
                    //     cols: [
                    //     [
                    //         {title: '序号', type: 'numbers', width: 65, fixed: 'left', },
                    //         {field: 'CrNo', title: '盘点单号', align: 'center', fixed: 'left', width: 165, },
                    //         {field: 'Origin',title: '来源',align: 'center', templet: '#OriginzongButton', },
                    //         {field: 'Status',title: '执行状态',align: 'center', templet: '#StatuszongButton', },
                    //         {field: 'CheckDate',title: '开始时间',align: 'center', templet: '#CheckDateButton', },
                    //         {field: 'CompleteDate',title: '完成时间',align: 'center', templet: '#CompleteDateButtom',  },
                    //         {field: 'AuditStatusNo',title: '审核状态',align: 'center',width: 130,hide:true, templet: '#AuditStatusButton', },
                    //         {field: 'IsDoubleCheck', title: '是否复盘', align: 'center', width: 180, hide:true, templet: '#IsDoubleCheckButton', },
                    //         {field: 'AuditUserName',title: '审核人',align: 'center',width: 180,hide:true},
                    //         {field: 'AuditTime',title: '审核时间',align: 'center',width: 95,hide:true , templet: '#AuditTimeButton', },
                    //         {field: 'CreateUserName', title:'创建人', align:'center',  },
                    //         {field: 'CreateTime',title: '创建时间',align: 'center', templet: '#CreateTimeButton', },
                    //         {field: 'UpdateUserName',title: '修改人',align: 'center',width: 120,hide:true},
                    //         {field: 'UpdateTime',title: '修改时间',align: 'center',width: 160,hide:true, templet: '#UpdateTimeButton',  },
                    //         {title: '操作',fixed: 'right',align: 'center',toolbar: '#table-content-list',width: 240 }
                    //     ]]
                    // });
                });
            }
            //渲染出库单明细
            function refreshTablemx(crNo) {
                var param1 = {
                    // Href:'QualityControl/QualityInformation'
                    Href: 'BllCheck/GetStockCheckDetailList'
                };
                sendData(IP + "/Sys/GetTableColsByUserId", param1, 'post', function (res) {
                    if (res.code == 0) {
                        if (res.data == '' || res.data == undefined || res.data == null) {
                            colsJsonm = TotalColsArrm
                        } else {
                            colsJsonm = eval(res.data);
                        }
                    } else {
                        colsJsonm = TotalColsArrm
                    }
                    var param = {
                        CrNo: crNo,
                    };
                    table.render({
                        elem: '#LAY-app-content-list2',
                        url: IP + "/BllCheck/GetStockCheckDetailList",
                        method: 'post',
                        height: h2,//'full-'+hei1
                        id: 'LAY-app-content-list2',
                        where: param,
                        contentType: 'application/json',
                        toolbar: '#toolbarDemo',
                        defaultToolbar: [], //'filter','print', 'exports'
                        headers: { ToKen: $.cookie('token') },
                        page: true,
                        even: true,
                        limit: pageCnt,
                        limits: pageLimits,
                        cellMinWidth: 60, //全局定义常规单元格的最小宽度,layui 2.2.1 新增
                        done: function (res) {
                            initMenu();
                            //自定义列宽
                            SetTableColW('LAY-app-content-list2', 'BllCheck/GetStockCheckDetailList', TotalColsSysArrm);
                        },
                        cols: colsJsonm
                    });
                    // var param = {
                    //     CrNo: crNo,
                    // };
                    // table.render({
                    //     elem: '#LAY-app-content-list2',
                    //     url: IP + "/BllCheck/GetStockCheckDetailList",
                    //     method: 'POST',
                    //     height: h2,
                    //     id: 'LAY-app-content-list2',
                    //     where: param,
                    //     contentType: 'application/json',
                    //     headers:{ToKen:$.cookie('token')},
                    //     toolbar:'#toolbarDemo',
                    //     defaultToolbar:  ['filter'], //'print', 'exports'
                    //     page: true,
                    //     limit: pageCnt,
                    //     limits: pageLimits,
                    //     cellMinWidth: 60, //全局定义常规单元格的最小宽度,layui 2.2.1 新增
                    //     done: function(){
                    //         initMenu();
                    //     },
                    //     cols: [
                    //     [
                    //         {title:'序号', type:'numbers', width:65, fixed:'left', },
                    //         {field:'CrNo', title:'盘点单号', align:'center', fixed:'left', width: 165, },
                    //         {field:'PalletNo', title:'托盘号', align:'center', fixed:'left', width: 165, },
                    //         {field:'Qty', title:'库存数量', align:'center', fixed:'left', width: 105, },
                    //         {field:'RealQty', title:'实际数量', align:'center', width: 105, },
                    //         {field:'Status', title:'执行状态', align:'center', width: 105, templet : '#StatusmingButton', },
                    //         {field:'CheckResult', title:'盘点结果', align:'center', width:105,  templet : '#CheckResultButton', },
                    //         {field:'SkuNo', title:'物料编码', align:'center', width:105, },
                    //         {field:'SkuName', title:'物料名称', align:'center', width:125, },
                    //         {field:'Standard', title:'规格', align:'center', width:225, },
                    //         {field:'LotNo', title:'批次号', align:'center', width:105, },
                    //         {field:'LotText', title:'批次描述', align:'center', width:105, },
                    //         {field:'SupplierLot', title:'供货批次', align:'center', width:105, },
                    //         {field: 'CreateUserName', title:'创建人', align:'center', width:100, },
                    //         {field: 'CreateTime',title: '创建时间',align: 'center',width: 160,  templet: '#CreateTimeButton',},
                    //         {field: 'UpdateUserName',title: '修改人',align: 'center',width: 120,hide:true},
                    //         {field: 'UpdateTime',title: '修改时间',align: 'center',width: 160,hide:true, templet: '#UpdateTimeButton',},
                    //     ]]
                    // });
                });
            }
            //搜索
            form.on('submit(LAY-app-contlist-search)', function (data) {
                refreshTable();
                // refreshTablemx(xqid);
                //渲染盘点总单
                function refreshTable() {
                    var param1={
                        // Href:'QualityControl/QualityInformation'
                        Href:'BllCheck/GetStockCheckList'
                    };
                    sendData(IP + "/Sys/GetTableColsByUserId", param1, 'post', function(res) {
                        if (res.code == 0){
                            if(res.data=='' || res.data==undefined || res.data==null){
                                console.log(1)
                                colsJsonz=TotalColsArrz
                            }else{
                                console.log(2)
                                colsJsonz= eval(res.data);
                            }
                        }else{
                            colsJsonz=TotalColsArrz
                        }
                        // tableclass(LotNo,SkuNo,SkuName,IsQualified);
                        var param = {
                            CrNo: $("#CRNo").val(),
                            Status: $("#Status").val(),
                            PalletNo: $("#PalletNo").val(),
                            SkuNo: $("#SkuNo").val(),
                            SkuName: $("#SkuName").val(),
                            LotNo: $("#LotNo").val(),
                            StartTime: $("#StartTime").val(),
                            EndTime: $("#EndTime").val(),
                        };
                        table.render({
                            elem: '#LAY-app-content-list',
                            url: IP + "/BllCheck/GetStockCheckList",
                            method: 'post',
                            height: h1 ,//'full-'+hei1
                            id: 'LAY-app-content-list',
                            where: param,
                            contentType: 'application/json',
                            // toolbar: '#toolbarDemo',
                            defaultToolbar: [], //'filter','print', 'exports'
                            headers: { ToKen: $.cookie('token') },
                            page: true,
                            even: true,
                            limit: pageCnt,
                            limits: pageLimits,
                            cellMinWidth: 60, //全局定义常规单元格的最小宽度,layui 2.2.1 新增
                            done: function (res) {
                                initMenu();
                                var soCode = "res.data[0].SONo";
                                if (res.data.length != 0) {
                                    soCode = res.data[0].SONo;
                                }
                                refreshTablemx(soCode)
                                //自定义列宽
                                SetTableColW('LAY-app-content-list','BllCheck/GetStockCheckList',TotalColsSysArrz);
                            },
                            cols: colsJsonz
                        });
                        // table.render({
                        //     elem: '#LAY-app-content-list',
                        //     url: IP+"/BllCheck/GetStockCheckList",
                        //     method: 'POST',
                        //     height: h1 ,//'full-'+hei1
                        //     id: 'LAY-app-content-list',
                        //     where: param,
                        //     contentType: 'application/json',
                        //     headers:{ToKen:$.cookie('token')},
                        //     page: true,
                        //     even: true,
                        //     limit: pageCnt,
                        //     limits: pageLimits,
                        //     cellMinWidth: 60, //全局定义常规单元格的最小宽度,layui 2.2.1 新增
                        //     done: function(res){
                        //         initMenu();
                        //         var soCode = "res.data[0].SONo";
                        //         if (res.data.length != 0) {
                        //             soCode = res.data[0].SONo;
                        //         }
                        //         refreshTablemx(soCode)
                        //     },
                        //     cols: [
                        //     [
                        //         {title: '序号', type: 'numbers', width: 65, fixed: 'left', },
                        //         {field: 'CrNo', title: '盘点单号', align: 'center', fixed: 'left', width: 165, },
                        //         {field: 'Origin',title: '来源',align: 'center', templet: '#OriginzongButton', },
                        //         {field: 'Status',title: '执行状态',align: 'center', templet: '#StatuszongButton', },
                        //         {field: 'CheckDate',title: '开始时间',align: 'center', templet: '#CheckDateButton', },
                        //         {field: 'CompleteDate',title: '完成时间',align: 'center', templet: '#CompleteDateButtom',  },
                        //         {field: 'AuditStatusNo',title: '审核状态',align: 'center',width: 130,hide:true, templet: '#AuditStatusButton', },
                        //         {field: 'IsDoubleCheck', title: '是否复盘', align: 'center', width: 180, hide:true, templet: '#IsDoubleCheckButton', },
                        //         {field: 'AuditUserName',title: '审核人',align: 'center',width: 180,hide:true},
                        //         {field: 'AuditTime',title: '审核时间',align: 'center',width: 95,hide:true , templet: '#AuditTimeButton', },
                        //         {field: 'CreateUserName', title:'创建人', align:'center',  },
                        //         {field: 'CreateTime',title: '创建时间',align: 'center', templet: '#CreateTimeButton', },
                        //         {field: 'UpdateUserName',title: '修改人',align: 'center',width: 120,hide:true},
                        //         {field: 'UpdateTime',title: '修改时间',align: 'center',width: 160,hide:true, templet: '#UpdateTimeButton',  },
                        //         {title: '操作',fixed: 'right',align: 'center',toolbar: '#table-content-list',width: 240 }
                        //     ]]
                        // });
                    });
                }
                //渲染出库单明细
                function refreshTablemx(crNo) {
                    var param1={
                        // Href:'QualityControl/QualityInformation'
                        Href:'BllCheck/GetStockCheckDetailList'
                    };
                    sendData(IP + "/Sys/GetTableColsByUserId", param1, 'post', function(res) {
                        if (res.code == 0){
                            if(res.data=='' || res.data==undefined || res.data==null){
                                colsJsonm=TotalColsArrm
                            }else{
                                colsJsonm= eval(res.data);
                            }
                        }else{
                            colsJsonm=TotalColsArrm
                        }
                        var param = {
                            CrNo: crNo,
                        };
                        table.render({
                            elem: '#LAY-app-content-list2',
                            url: IP + "/BllCheck/GetStockCheckDetailList",
                            method: 'post',
                            height: h2 ,//'full-'+hei1
                            id: 'LAY-app-content-list2',
                            where: param,
                            contentType: 'application/json',
                            toolbar: '#toolbarDemo',
                            defaultToolbar: [], //'filter','print', 'exports'
                            headers: { ToKen: $.cookie('token') },
                            page: true,
                            even: true,
                            limit: pageCnt,
                            limits: pageLimits,
                            cellMinWidth: 60, //全局定义常规单元格的最小宽度,layui 2.2.1 新增
                            done: function (res) {
                                initMenu();
                                //自定义列宽
                                SetTableColW('LAY-app-content-list2','BllCheck/GetStockCheckDetailList',TotalColsSysArrm);
                            },
                            cols: colsJsonm
                        });
                        // var param = {
                        //     CrNo: crNo,
                        // };
                        // table.render({
                        //     elem: '#LAY-app-content-list2',
                        //     url: IP + "/BllCheck/GetStockCheckDetailList",
                        //     method: 'POST',
                        //     height: h2,
                        //     id: 'LAY-app-content-list2',
                        //     where: param,
                        //     contentType: 'application/json',
                        //     headers:{ToKen:$.cookie('token')},
                        //     toolbar:'#toolbarDemo',
                        //     defaultToolbar:  ['filter'], //'print', 'exports'
                        //     page: true,
                        //     limit: pageCnt,
                        //     limits: pageLimits,
                        //     cellMinWidth: 60, //全局定义常规单元格的最小宽度,layui 2.2.1 新增
                        //     done: function(){
                        //         initMenu();
                        //     },
                        //     cols: [
                        //     [
                        //         {title:'序号', type:'numbers', width:65, fixed:'left', },
                        //         {field:'CrNo', title:'盘点单号', align:'center', fixed:'left', width: 165, },
                        //         {field:'PalletNo', title:'托盘号', align:'center', fixed:'left', width: 165, },
                        //         {field:'Qty', title:'库存数量', align:'center', fixed:'left', width: 105, },
                        //         {field:'RealQty', title:'实际数量', align:'center', width: 105, },
                        //         {field:'Status', title:'执行状态', align:'center', width: 105, templet : '#StatusmingButton', },
                        //         {field:'CheckResult', title:'盘点结果', align:'center', width:105,  templet : '#CheckResultButton', },
                        //         {field:'SkuNo', title:'物料编码', align:'center', width:105, },
                        //         {field:'SkuName', title:'物料名称', align:'center', width:125, },
                        //         {field:'Standard', title:'规格', align:'center', width:225, },
                        //         {field:'LotNo', title:'批次号', align:'center', width:105, },
                        //         {field:'LotText', title:'批次描述', align:'center', width:105, },
                        //         {field:'SupplierLot', title:'供货批次', align:'center', width:105, },
                        //         {field: 'CreateUserName', title:'创建人', align:'center', width:100, },
                        //         {field: 'CreateTime',title: '创建时间',align: 'center',width: 160,  templet: '#CreateTimeButton',},
                        //         {field: 'UpdateUserName',title: '修改人',align: 'center',width: 120,hide:true},
                        //         {field: 'UpdateTime',title: '修改时间',align: 'center',width: 160,hide:true, templet: '#UpdateTimeButton',},
                        //     ]]
                        // });
                    });
                }
                //搜索
                form.on('submit(LAY-app-contlist-search)', function(data) {
                    refreshTable();
                    // refreshTablemx(xqid);
            });
            //权限
            function initMenu() {
                $(function () {
                    $(".addClass").hide();
                    $(".editClass").hide();
                    $(".delClass").hide();
                    $(".checkOut").hide();
                    $(".addAdjust").hide();
                    $(".editDemoClass").hide();//备注
                });
                //权限
                function initMenu() {
                    $(function() {
                        $(".addClass").hide();
                        $(".editClass").hide();
                        $(".delClass").hide();
                        $(".checkOut").hide();
                        $(".addAdjust").hide();
                        $(".editDemoClass").hide();//备注
                    });
                    sendData(IP + "/Basis/GetRoleRightList", {}, 'get', function(res) {
                        if (res.code == 0) { //成功
                            for (var k = 0; k < res.data.length; k++) {
                                if (res.data[k].MenuName == "添加盘点单") {
                                    $(function() {
                                        $(".addClass").show();
                                    });
                                }
                                if (res.data[k].MenuName == "编辑盘点单") {
                                    $(function() {
                                        $(".editClass").show();
                                    });
                                }
                                if (res.data[k].MenuName == "删除盘点单") {
                                    $(function() {
                                        $(".delClass").show();
                                    });
                                }
                                if (res.data[k].MenuName == "盘点出库") {
                                    $(function() {
                                        $(".checkOut").show();
                                    });
                                }
                                if (res.data[k].MenuName == "调整库存") {
                                    $(function() {
                                        $(".addAdjust").show();
                                    });
                                }
                                if (res.data[k].MenuName == "维护盘点单备注") {
                                    $(function() {
                                        $(".editDemoClass").show();
                                    });
                                }
                sendData(IP + "/Basis/GetRoleRightList", {}, 'get', function (res) {
                    if (res.code == 0) { //成功
                        for (var k = 0; k < res.data.length; k++) {
                            if (res.data[k].MenuName == "添加盘点单") {
                                $(function () {
                                    $(".addClass").show();
                                });
                            }
                        } else { //不成功
                            layer.msg('获取权限信息失败', {
                                icon: 2,
                                time: 2000 //2秒关闭(如果不配置,默认是3秒)
                            }, function() {});
                            if (res.data[k].MenuName == "编辑盘点单") {
                                $(function () {
                                    $(".editClass").show();
                                });
                            }
                            if (res.data[k].MenuName == "删除盘点单") {
                                $(function () {
                                    $(".delClass").show();
                                });
                            }
                            if (res.data[k].MenuName == "盘点出库") {
                                $(function () {
                                    $(".checkOut").show();
                                });
                            }
                            if (res.data[k].MenuName == "调整库存") {
                                $(function () {
                                    $(".addAdjust").show();
                                });
                            }
                            if (res.data[k].MenuName == "维护盘点单备注") {
                                $(function () {
                                    $(".editDemoClass").show();
                                });
                            }
                        }
                    });
                }
                //触发行单击事件
                table.on('row(LAY-app-content-list)', function(obj) {
                    refreshTablemx(obj.data.CrNo);
                    xqid = "obj.data.CrNo";
                });
                //--------------------------------------------------------------------------------------------
                //头工具栏事件
                table.on('toolbar(LAY-app-content-list2)', function(obj){
                    var checkStatus = table.checkStatus(obj.config.id);
                    if (obj.event == "add") {
                        layer.open({
                            type: 2,
                            title: '添加盘点单',
                            content: 'StockCheckFrom.html',
                            maxmin: true,
                            area: ['1200px', '90%'],
                        });
                    } else { //不成功
                        layer.msg('获取权限信息失败', {
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        }, function () { });
                    }
                });
                //监听数据操作
                table.on('tool(LAY-app-content-list)', function(obj) {
                    var data = obj.data;
                    console.log(data);
                    Id = data.Id;
                    CrNo = data.CrNo;
                    if (obj.event === 'del') {//删除
                        layer.confirm('确定删除此单据吗?', function(index) {
                            var param = {
                                Id: parseInt(Id),
                            };
                            sendData(IP + "/BllCheck/DelStockCheck", param, 'post', function(res) {
                                console.log(res);
                                if (res.code == 0) { //成功
                                    layer.msg(res.msg, {
                                        icon: 1,
                                        time: 1000 //1秒关闭(如果不配置,默认是3秒)
                                    }, function() {
                                        refreshTable();
                                    });
                                } else { //不成功
                                    layer.msg(res.msg, {
                                        icon: 2,
                                        time: 2000 //2秒关闭(如果不配置,默认是3秒)
                                    }, function() {});
                                }
                            });
                        });
                    } else if (obj.event === 'finish') {//生成调整单
                        layer.confirm('确定调整库存吗?', function(index) {
                            var param = {
                                Id: parseInt(Id),
                                Origin:data.Origin
                            };
                            sendData(IP + "/UpApi/FinishCr", param, 'post', function(res) {
                                console.log(res);
                                if (res.code == 0) { //成功
                                    layer.msg(res.msg, {
                                        icon: 1,
                                        time: 1000 //1秒关闭(如果不配置,默认是3秒)
                                    }, function() {
                                        refreshTable();
                                    });
                                } else { //不成功
                                    layer.msg(res.msg, {
                                        icon: 2,
                                        time: 2000 //2秒关闭(如果不配置,默认是3秒)
                                    }, function() {
                                        refreshTable();
                                    });
                                }
                            });
                        });
                    }else if(obj.event === 'edit'){//编辑
                        layer.open({
                            type: 2,
                            title: '编辑盘点单',
                            content: 'StockCheckFrom.html?crNo='+CrNo,
                            maxmin: true,
                            area: ['1200px', '90%'],
                        });
                    }else if(obj.event === 'outbound'){
                        layer.open({
                            type: 1,
                            title: '确认出库口',
                            content: $('#divPickingArea'),
                            maxmin: true,
                            area: ['300px','265px'],
                            btn: ['确定', '取消'],
                            yes: function(index, layero) {
                                var pa = $('#PickingArea').val();
                                if (isChongFu== true) {
                                    isChongFu= false;
                                    var param = {
                                        crNo: data.CrNo,
                                        outMode: pa,
                                    };
                                    sendData(IP + "/DownApi/CheckOutHouse", param, 'get', function(res) {
                                        console.log(res);
                                        if (res.code == 0) { //成功
                                            layer.msg(res.msg, {
                                                icon: 1,
                                                time: 3000 //1秒关闭(如果不配置,默认是3秒)
                                            }, function() {
                                                refreshTable();
                                                isChongFu= true;
                                            });
                                        } else { //不成功
                                            layer.msg(res.msg, {
                                                icon: 2,
                                                time: 3000 //2秒关闭(如果不配置,默认是3秒)
                                            }, function() {
                                                refreshTable();
                                                isChongFu= true;
                                            });
                                        }
                                        layer.close(index);
                                    });
                                }else{
                                    layer.msg("请勿重复点击", {
                                        icon: 2,
                                        time: 2000 //2秒关闭(如果不配置,默认是3秒)
                                    });
                                }
            }
            //触发行单击事件
            table.on('row(LAY-app-content-list)', function (obj) {
                refreshTablemx(obj.data.CrNo);
                xqid = "obj.data.CrNo";
            });
            //--------------------------------------------------------------------------------------------
            //头工具栏事件
            table.on('toolbar(LAY-app-content-list2)', function (obj) {
                var checkStatus = table.checkStatus(obj.config.id);
                if (obj.event == "add") {
                    layer.open({
                        type: 2,
                        title: '添加盘点单',
                        content: 'StockCheckFrom.html',
                        maxmin: true,
                        area: ['1200px', '90%'],
                    });
                }
            });
            //监听数据操作
            table.on('tool(LAY-app-content-list)', function (obj) {
                var data = obj.data;
                console.log(data);
                Id = data.Id;
                CrNo = data.CrNo;
                if (obj.event === 'del') {//删除
                    layer.confirm('确定删除此单据吗?', function (index) {
                        var param = {
                            Id: parseInt(Id),
                        };
                        sendData(IP + "/BllCheck/DelStockCheck", param, 'post', function (res) {
                            console.log(res);
                            if (res.code == 0) { //成功
                                layer.msg(res.msg, {
                                    icon: 1,
                                    time: 1000 //1秒关闭(如果不配置,默认是3秒)
                                }, function () {
                                    refreshTable();
                                });
                            } else { //不成功
                                layer.msg(res.msg, {
                                    icon: 2,
                                    time: 2000 //2秒关闭(如果不配置,默认是3秒)
                                }, function () { });
                            }
                        });
                    }else if(obj.event === 'editDemo'){//编辑备注
                        $('#NoticeDemo').val(data.Demo);
                        layer.open({
                            type: 1,
                            title: '维护备注',
                            content: $('#divEditDemo'),
                            maxmin: false,
                            area: ['420px','260px'],
                            btn: ['确定', '取消'],
                            yes: function(index, layero) {
                                var demo = $('#NoticeDemo').val();
                        });
                    });
                } else if (obj.event === 'finish') {//生成调整单
                    layer.confirm('确定调整库存吗?', function (index) {
                        var param = {
                            Id: parseInt(Id),
                            Origin: data.Origin
                        };
                        sendData(IP + "/UpApi/FinishCr", param, 'post', function (res) {
                            console.log(res);
                            if (res.code == 0) { //成功
                                layer.msg(res.msg, {
                                    icon: 1,
                                    time: 1000 //1秒关闭(如果不配置,默认是3秒)
                                }, function () {
                                    refreshTable();
                                });
                            } else { //不成功
                                layer.msg(res.msg, {
                                    icon: 2,
                                    time: 2000 //2秒关闭(如果不配置,默认是3秒)
                                }, function () {
                                    refreshTable();
                                });
                            }
                        });
                    });
                } else if (obj.event === 'edit') {//编辑
                    layer.open({
                        type: 2,
                        title: '编辑盘点单',
                        content: 'StockCheckFrom.html?crNo=' + CrNo,
                        maxmin: true,
                        area: ['1200px', '90%'],
                    });
                } else if (obj.event === 'outbound') {
                    layer.open({
                        type: 1,
                        title: '确认出库口',
                        content: $('#divPickingArea'),
                        maxmin: true,
                        area: ['300px', '265px'],
                        btn: ['确定', '取消'],
                        yes: function (index, layero) {
                            var pa = $('#PickingArea').val();
                            if (isChongFu == true) {
                                isChongFu = false;
                                var param = {
                                    id: data.Id,
                                    demo: demo,
                                    crNo: data.CrNo,
                                    outMode: pa,
                                };
                                sendData(IP + "/BllCheck/EditNoticeDemo", param, 'get', function(res) {
                                sendData(IP + "/DownApi/CheckOutHouse", param, 'get', function (res) {
                                    console.log(res);
                                    if (res.code == 0) { //成功
                                        refreshTable();
                                        layer.msg(res.msg, {
                                            icon: 1,
                                            time: 1500 //1秒关闭(如果不配置,默认是3秒)
                                        }, function() {
                                            time: 3000 //1秒关闭(如果不配置,默认是3秒)
                                        }, function () {
                                            refreshTable();
                                            isChongFu = true;
                                        });
                                    } else { //不成功
                                        layer.msg(res.msg, {
                                            icon: 2,
                                            time: 3000 //2秒关闭(如果不配置,默认是3秒)
                                        }, function() {
                                        }, function () {
                                            refreshTable();
                                            isChongFu = true;
                                        });
                                    }
                                    layer.close(index);
                                });
                            } else {
                                layer.msg("请勿重复点击", {
                                    icon: 2,
                                    time: 2000 //2秒关闭(如果不配置,默认是3秒)
                                });
                            }
                        });
                    }
                });
                var $ = layui.$,
                    active = {
                        customCols: function(){
                            layer.open({
                                type: 2,
                                title: '自定义列',
                                content: '../SystemSettings/HeaderSetting.html?Href=BllCheck/GetStockCheckList&ColsSysArr='+TotalColsSysArrz,
                                maxmin: false,
                                resize: false,
                                area: ['970px', '650px']
                        }
                    });
                } else if (obj.event === 'vision') {
                    layer.confirm('确定视觉盘点', function () {
                        if (isChongFu == true) {
                            isChongFu = false;
                            var param = {
                                crNo: data.CrNo
                            };
                            sendData(IP + "/DownApi/CheckVision", param, 'get', function (res) {
                                console.log(res);
                                if (res.code == 0) { //成功
                                    layer.msg(res.msg, {
                                        icon: 1,
                                        time: 3000 //1秒关闭(如果不配置,默认是3秒)
                                    }, function () {
                                        refreshTable();
                                        isChongFu = true;
                                    });
                                } else { //不成功
                                    layer.msg(res.msg, {
                                        icon: 2,
                                        time: 3000 //2秒关闭(如果不配置,默认是3秒)
                                    }, function () {
                                        refreshTable();
                                        isChongFu = true;
                                    });
                                }
                                layer.close(index);
                            });
                        },
                        customCols2: function(){
                            layer.open({
                                type: 2,
                                title: '自定义列',
                                content: '../SystemSettings/HeaderSetting.html?Href=BllCheck/GetStockCheckDetailList&ColsSysArr='+TotalColsSysArrm,
                                maxmin: false,
                                resize: false,
                                area: ['970px', '650px']
                        } else {
                            layer.msg("请勿重复点击", {
                                icon: 2,
                                time: 2000 //2秒关闭(如果不配置,默认是3秒)
                            }, function () {
                                isChongFu = true
                            });
                        }
                    };
                $('.layui-btn').on('click', function() {
                    var type = $(this).data('type');
                    active[type] ? active[type].call(this) : '';
                });
                    }, function () {
                    });
                } else if (obj.event === 'editDemo') {//编辑备注
                    $('#NoticeDemo').val(data.Demo);
                    layer.open({
                        type: 1,
                        title: '维护备注',
                        content: $('#divEditDemo'),
                        maxmin: false,
                        area: ['420px', '260px'],
                        btn: ['确定', '取消'],
                        yes: function (index, layero) {
                            var demo = $('#NoticeDemo').val();
                            var param = {
                                id: data.Id,
                                demo: demo,
                            };
                            sendData(IP + "/BllCheck/EditNoticeDemo", param, 'get', function (res) {
                                if (res.code == 0) { //成功
                                    refreshTable();
                                    layer.msg(res.msg, {
                                        icon: 1,
                                        time: 1500 //1秒关闭(如果不配置,默认是3秒)
                                    }, function () {
                                    });
                                } else { //不成功
                                    layer.msg(res.msg, {
                                        icon: 2,
                                        time: 3000 //2秒关闭(如果不配置,默认是3秒)
                                    }, function () {
                                        refreshTable();
                                    });
                                }
                                layer.close(index);
                            });
                        }
                    });
                }
            });
        </script>
    </body>
</html>
            var $ = layui.$,
                active = {
                    customCols: function () {
                        layer.open({
                            type: 2,
                            title: '自定义列',
                            content: '../SystemSettings/HeaderSetting.html?Href=BllCheck/GetStockCheckList&ColsSysArr=' + TotalColsSysArrz,
                            maxmin: false,
                            resize: false,
                            area: ['970px', '650px']
                        });
                    },
                    customCols2: function () {
                        layer.open({
                            type: 2,
                            title: '自定义列',
                            content: '../SystemSettings/HeaderSetting.html?Href=BllCheck/GetStockCheckDetailList&ColsSysArr=' + TotalColsSysArrm,
                            maxmin: false,
                            resize: false,
                            area: ['970px', '650px']
                        });
                    }
                };
            $('.layui-btn').on('click', function () {
                var type = $(this).data('type');
                active[type] ? active[type].call(this) : '';
            });
        });
    </script>
</body>
</html>
Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs
@@ -909,7 +909,7 @@
            {
                throw Oops.Bah("需配置盘点方式");
            }
            var list = await Db.Queryable<BllStockCheckDetail>().Where(a => a.IsDel == "0" && a.CRNo == crNo && a.Status == 0).ToListAsync();
            var list = await Db.Queryable<BllStockCheckDetail>().Where(a => a.IsDel == "0" && a.CRNo == crNo && (a.Status == 0 || a.Status == 1 || a.Status == 2)).ToListAsync();
            if (list.Count == 0) //判断是否有需要下发的盘点明细
            {
                throw Oops.Bah("当前盘点单据无需要下发的托盘");
@@ -921,6 +921,10 @@
                    throw Oops.Bah("已有正在出库或待盘点的数据,请完成盘点后再出库");
                }
                list = new List<BllStockCheckDetail>() { list.FirstOrDefault() };
            }
            else
            {
                list = list.Where(s => s.Status == 0).ToList();
            }
            #region 
            //要出库的托盘集合
@@ -1182,11 +1186,11 @@
            }
            if (flagList.Count(m => m == 3) > 0)
            {
                str += "4.储位损坏不能出库、";
                str += "3.储位损坏不能出库、";
            }
            if (flagList.Count(m => m == 4) > 0)
            {
                str += "3.要出库的托盘正在入库、";
                str += "4.要出库的托盘正在入库、";
            }
            if (flagList.Count(m => m == 5) > 0)
            {
@@ -1222,7 +1226,352 @@
            return outDtoList;
            #endregion
        }
        /// <summary>
        /// 视觉盘点
        /// </summary>
        /// <param name="crNo"></param>
        /// <param name="url"></param>
        /// <param name="str"></param>
        /// <returns></returns>
        public async Task<List<OutCommandDto>> CheckVision(string crNo, string url, string str)
        {
            #region 集合
            var outDtoList = new List<OutCommandDto>(); //出库数据的集合
                                                        //记录错误信息的集合
            var flagList = new List<int>();//1:当前要出库的储位正在移出、2 出库的托盘储位信息错误(在储位表中未查询到)、3储位损坏不能出库、4 要出库的托盘正在入库
            #endregion
            var com = new Common();
            //assign.IsHavePyTask();
            var notice = await Db.Queryable<BllStockCheck>().FirstAsync(m => m.CRNo == crNo && m.IsDel == "0");
            if (notice == null)
            {
                throw Oops.Bah($"未找到{crNo}盘点单信息");
            }
            //所有要出库的盘点明细信息(等待的信息和待拣货的信息)
            var funSetting = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetNo == "InventoryCheckMethod");
            if (funSetting == null || funSetting.IsEnable == "OFF")
            {
                throw Oops.Bah("需配置盘点方式");
            }
            var list = await Db.Queryable<BllStockCheckDetail>().Where(a => a.IsDel == "0" && a.CRNo == crNo && (a.Status == 0 || a.Status == 1 || a.Status == 2)).ToListAsync();
            if (list.Count == 0) //判断是否有需要下发的盘点明细
            {
                throw Oops.Bah("当前盘点单据无需要下发的托盘");
            }
            if (funSetting.SetValue == "once")
            {
                if (list.Any(s => s.Status == 1 || s.Status == 2))
                {
                    throw Oops.Bah("已有正在出库或待盘点的数据,请完成盘点后再出库");
                }
                list = new List<BllStockCheckDetail>() { list.FirstOrDefault() };
            }
            else
            {
                list = list.Where(s => s.Status == 0).ToList();
            }
            #region
            //要出库的托盘集合
            var outLpnList = list.Select(m => m.PalletNo).Distinct().ToList();
            //要出库的明细集合
            var outStockDetail = await Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToListAsync();
            var outStockBox = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToListAsync();
            //获取物料信息
            var skuNo = await Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.Type == "4").Select(a => a.SkuNo).ToListAsync();
            var time = DateTime.Now;
            //Db.BeginTran();
            //循环盘点明细的信息生成出库任务
            foreach (var item in list)
            {
                if (item.Status == 0)
                {
                    var logList = new List<BllStockCheckLog>();
                    //判断是否为无码物料
                    if (skuNo.Contains(item.SkuNo))
                    {
                        var de = outStockDetail.First(m => m.IsDel == "0" &&
                        m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo);
                        var checkLog = new BllStockCheckLog()
                        {
                            CRNo = item.CRNo,
                            PalletNo = item.PalletNo,
                            BoxNo = "",
                            BoxNo2 = "",
                            BoxNo3 = "",
                            Qty = (int?)de.Qty,
                            SkuNo = de.SkuNo,
                            SkuName = de.SkuName,
                            Standard = de.Standard,
                            LotNo = de.LotNo,
                            LotText = de.LotText,
                            SupplierLot = de.SupplierLot,
                            CreateUser = _userManager.UserId,
                            CreateTime = time
                        };
                        logList.Add(checkLog);
                    }
                    else
                    {
                        var de = outStockDetail.Where(m =>
                        m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo).Select(m => m.Id).ToList();
                        var bo = outStockBox.Where(m => de.Contains(m.StockDetailId)).ToList();
                        foreach (var b in bo)
                        {
                            var checkLog = new BllStockCheckLog()
                            {
                                CRNo = item.CRNo,
                                PalletNo = item.PalletNo,
                                BoxNo = b.BoxNo,
                                BoxNo2 = b.BoxNo2,
                                BoxNo3 = b.BoxNo3,
                                Qty = b.Qty,
                                SkuNo = b.SkuNo,
                                SkuName = b.SkuName,
                                Standard = b.Standard,
                                LotNo = b.LotNo,
                                LotText = b.LotText,
                                SupplierLot = b.SupplierLot,
                                CreateUser = _userManager.UserId,
                                CreateTime = time
                            };
                            logList.Add(checkLog);
                        }
                    }
                    //生成盘点记录
                    await Db.Insertable(logList).ExecuteCommandAsync();
                }
                // 储位号
                var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo && m.SkuNo == item.SkuNo && m.LotNo == item.LotNo).LocatNo;
                #region 判断
                //判断托盘是否在库内
                if (string.IsNullOrWhiteSpace(locateNo))
                {
                    var de = outStockDetail.First(m => m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo);
                    //判断是否是零箱库,当前明细信息直接更新出库完成
                    if (de != null && de.WareHouseNo == "W02")
                    {
                        //盘点明细状态改为待盘点
                        item.Status = 2;
                        await Db.Updateable(item).ExecuteCommandAsync();
                        //盘点信息修改
                        if (notice.Status == 0)
                        {
                            notice.CheckDate = DateTime.Now;
                            notice.Status = 1;
                            notice.UpdateUser = _userManager.UserId;
                            notice.UpdateTime = time;
                            await Db.Updateable(notice).ExecuteCommandAsync();
                        }
                        //库存中当前托盘的信息
                        var stockDetail = await Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == item.PalletNo).ToListAsync();
                        foreach (var s in stockDetail)
                        {
                            s.LocatNo = "";//储位更改(改为空)
                            s.WareHouseNo = "";//所属仓库更改(改为空)
                            s.RoadwayNo = "";//所属巷道更改(改为空)
                            s.AreaNo = "";//所属区域更改(改为空)
                            await Db.Updateable(s).ExecuteCommandAsync();
                        }
                        flagList.Add(5);
                        continue;
                    }
                    //判断托盘是否在入库中
                    var imBl = com.GetImTask(item.PalletNo);
                    if (imBl != null)
                    {
                        flagList.Add(4);
                        continue;
                    }
                    //判断是否是已经出过库又回库(状态为待拣货的 1)
                    if (item.Status == 0)
                    {
                        //如果不在仓库内,当前明细信息直接更新出库完成
                        item.Status = 2;//状态
                        await Db.Updateable(item).ExecuteCommandAsync();
                        if (notice.Status == 0)
                        {
                            notice.CheckDate = DateTime.Now;
                            notice.Status = 1;
                            notice.UpdateUser = _userManager.UserId;
                            notice.UpdateTime = time;
                            await Db.Updateable(notice).ExecuteCommandAsync();
                        }
                    }
                    continue;
                }
                //当前出库的储位信息
                var locate = await Db.Queryable<SysStorageLocat>().FirstAsync(m => m.LocatNo == locateNo && m.IsDel == "0");
                if (locate == null)
                {
                    flagList.Add(2);
                    continue;
                }
                //判断储位标志是否为损坏
                if (locate.Flag == "2")
                {
                    flagList.Add(3);
                    continue;
                }
                #endregion
                if (locate.Status == "1") //有物品
                {
                    #region 添加出库任务
                    var taskNo = new Common().GetMaxNo("TK");
                    //添加出库任务
                    var exTask = new LogTask
                    {
                        TaskNo = taskNo,
                        Sender = "WMS",
                        Receiver = "WCS",
                        IsSuccess = 0, //是否下发成功 0失败 1成功
                        StartLocat = locate.LocatNo,//起始位置
                        //EndLocat = outMode,//目标位置
                        PalletNo = item.PalletNo,//托盘码
                        IsSend = 1,//是否可再次下发
                        IsCancel = 1,//是否可取消
                        IsFinish = 1,//是否可完成
                        Type = "1",//任务类型 0 入库任务 1 出库任务  2 移库任务
                        Status = "0",//任务状态0:等待执行1正在执行2执行完成
                        OrderType = "4",//0 入库单 1 出库单  2 盘点单  3 移库单 4视觉盘点
                        CreateTime = time
                    };
                    await Db.Insertable(exTask).ExecuteCommandAsync();
                    outDtoList.Add(new OutCommandDto()
                    {
                        PalletNo = item.PalletNo,//托盘号
                        StartLocate = locate.LocatNo, // 起始位置
                        StartRoadway = locate.RoadwayNo,
                        EndLocate = "", // 目标位置
                        TaskNo = exTask.TaskNo, // 任务号
                        TaskType = "1",// 任务类型 (出库)
                        OutMode = "",  //目标地址
                        Order = 1
                    });
                    #endregion
                    #region 改变数据
                    if (item.Status == 0)//判断托盘是否下发过
                    {
                        if (notice.Status == 0)
                        {
                            notice.CheckDate = DateTime.Now;
                            notice.Status = 1;
                            notice.UpdateUser = _userManager.UserId;
                            notice.UpdateTime = time;
                            await Db.Updateable(notice).ExecuteCommandAsync();
                        }
                    }
                    locate.Status = "3"; //要出库的储位改变状态 正在出库
                    await Db.Updateable(locate).ExecuteCommandAsync();
                    item.TaskNo = exTask.TaskNo; // 出库分配信息中更新任务号
                    item.Status = 1; // 出库分配信息状态改为正在执行
                    await Db.Updateable(item).ExecuteCommandAsync();
                    #endregion
                    flagList.Add(0);
                }
                else if (locate.Status == "3") //出库中
                {
                    #region 改变数据
                    //判断是否是已经出过库又回库(状态为待拣货的 1)
                    if (item.Status == 0)
                    {
                        if (notice.Status == 0)
                        {
                            notice.CheckDate = DateTime.Now;
                            notice.Status = 1;
                            notice.UpdateUser = _userManager.UserId;
                            notice.UpdateTime = time;
                            await Db.Updateable(notice).ExecuteCommandAsync();
                        }
                    }
                    var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "2" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo);
                    item.TaskNo = taskNo.TaskNo;
                    item.Status = 1; // 出库分配信息状态改为正在执行
                    await Db.Updateable(item).ExecuteCommandAsync();
                    #endregion
                }
                else if (locate.Status == "5") //移出中
                {
                    flagList.Add(1);
                }
            }
            //添加操作日志记录
            //var k = new OperationCrServer().AddLogOperationCr("库内作业", "盘点单据", crNo, "出库", $"点击出库按钮盘点单号为:{crNo}的盘点单", userId);
            await _operation.AddLogOperationCr(new OperationInputVm()
            {
                ParentName = "库内作业",
                MenuName = "盘点单据",
                FkNo = crNo,
                TypeName = "出库",
                Msg = $"点击出库按钮盘点单号为:{crNo}的盘点单"
            });
            //Db.CommitTran();
            str = string.Empty;
            if (flagList.Count(m => m == 1) > 0)
            {
                str += "1.当前要出库的储位正在移出、";
            }
            if (flagList.Count(m => m == 2) > 0)
            {
                str += "2.出库的托盘储位信息错误(在储位表中未查询到)、";
            }
            if (flagList.Count(m => m == 3) > 0)
            {
                str += "3.储位损坏不能出库、";
            }
            if (flagList.Count(m => m == 4) > 0)
            {
                str += "4.要出库的托盘正在入库、";
            }
            if (flagList.Count(m => m == 5) > 0)
            {
                str += "5.要出库的托盘在零箱库、";
            }
            if (!string.IsNullOrEmpty(str))
                throw Oops.Bah(str);
            if (outDtoList.Count > 0)
            {
                // 正式运行程序放开
                var list2 = outDtoList.Select(m => m.TaskNo).ToList();
                var jsonData = JsonConvert.SerializeObject(outDtoList);
                string response = "";
                var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss")
                                         //response = HttpHelper.DoPost(url, jsonData, "下发给WCS出库命令", "WCS"); //正式版本放开
                var time2 = DateTime.Now;//返回时间 .ToString("yyyy-MM-dd HH:mm:ss")
                ////解析返回数据
                //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
                //if (wcsModel.StatusCode == 0)
                //{
                //    //更改任务的发送返回时间//
                //    new TaskServer().EditTaskIssueOk(list2, time1, time2);
                //    str += "下发成功";
                //}
                //if (wcsModel.StatusCode == -1)
                //{
                //    new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
                //    throw Oops.Bah(wcsModel.Msg);
                //}
            }
            return outDtoList;
            #endregion
        }
        //盘点出库完成
        public async Task CheckSuccess(string taskNo, int userId)
        {
Wms/WMS.Entity/LogEntity/LogTask.cs
@@ -128,7 +128,7 @@
        public int? IsFinish {get;set;}
        /// <summary>
        /// Desc:单据类型 0 入库单 1 出库单  2 盘点单  3 移库单
        /// Desc:单据类型 0 入库单 1 出库单  2 盘点单  3 移库单 4视觉盘点
        /// Default:
        /// Nullable:True
        /// </summary>           
Wms/WMS.IBLL/IBllCheckServer/IStockCheckServer.cs
@@ -104,6 +104,14 @@
        /// <param name="str"></param>
        /// <returns></returns>
        Task<List<OutCommandDto>> CheckOutHouse(string crNo, string outMode, string url, string str);
        /// <summary>
        /// 视觉盘点
        /// </summary>
        /// <param name="crNo"></param>
        /// <param name="url"></param>
        /// <param name="str"></param>
        /// <returns></returns>
        Task<List<OutCommandDto>> CheckVision(string crNo, string url, string str);
        /// <summary>
        /// 盘点出库完成
Wms/Wms/Controllers/DownApiController.cs
@@ -194,7 +194,34 @@
            return Ok(new { code = 0, msg = str, data = list });
        }
        /// <summary>
        /// 指令下发(视觉盘点)
        /// </summary>
        /// <param name="crNo"></param>
        /// <param name="outMode"></param>
        /// <returns></returns>
        [Authorize]
        [HttpGet]
        [UnitOfWork]
        public async Task<IActionResult> CheckVision(string crNo)
        {
            //获取当前登录的用户ID
            var claimsIdentity = this.User.Identity as ClaimsIdentity;
            if (claimsIdentity == null)
            {
                return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
            }
            var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
            if (string.IsNullOrWhiteSpace(userId))
            {
                return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
            }
            string str = "";
            var list = await _crCheckSvc.CheckVision(crNo, _config.WcsHost + _config.IssueComApiUrl, str);
            return Ok(new { code = 0, msg = str, data = list });
        }
        /// <summary>
        /// 重新下发盘点任务
        /// </summary>