1
duhe
2025-03-27 2eea07efd133fed07a82a12c544f537cf018c5c6
WebTM/views/Éú²ú¹ÜÀí/Ç·ÁÏÔËËã/JIT_MaterialLevelShorAnalysisDetailReport.html
@@ -3,7 +3,7 @@
<head>
    <meta charset="utf-8" />
    <title>欠料报表</title>
    <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui2.10.0.css" media="all">
    <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all">
    <link rel="stylesheet" href="../../../layuiadmin/ext/soulTable.css" media="all">
    <script src="../../../layuiadmin/zgqCustom/zgqCustom.js"></script>
@@ -36,50 +36,50 @@
                                    </div>
                                </div>
                                <!--<div class="layui-inline" style="display:none">
                                    <label class="layui-form-label" style="width: 85px;">组织</label>
                                    <div class="layui-input-block" style="margin-left: 120px; width: 185px;">
                                        <select name="HORGID" id="HORGID" lay-verify="HORGID">-->
                                            <!--动态渲染组织-->
                                        <!--</select>
                                    </div>
                                </div>-->
                <label class="layui-form-label" style="width: 85px;">组织</label>
                <div class="layui-input-block" style="margin-left: 120px; width: 185px;">
                    <select name="HORGID" id="HORGID" lay-verify="HORGID">-->
                                <!--动态渲染组织-->
                                <!--</select>
                </div>
            </div>-->
                                <!--<div class="layui-inline">
                                    <label class="layui-form-label" style="width: 85px;padding: 9px 18px;">生产车间</label>
                                    <div class="layui-input-block" style="margin-left: 77px;">
                                        <input type="hidden" class="layui-input" lay-verify="HWorkShopID" name="HWorkShopID" id="HWorkShopID" value="0" style="background-color:#efefef4d;width: 60%;display: inline-block;" readonly>
                                        <input type="text" class="layui-input" lay-verify="HWorkShopIDName" name="HWorkShopIDName" id="HWorkShopIDName" value="" style="background-color:#efefef4d;width: 60%;display: inline-block;">
                                        <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnHWorkShopID" id="btnHWorkShopID" style="padding: 0 10px;float: right;margin-right: 3px;">
                                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                                        </button>
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label" style="width: 85px;padding: 9px 18px;">产品编码</label>
                                    <div class="layui-input-block" style="margin-left: 77px;">
                                        <input type="hidden" class="layui-input" lay-verify="HMATERIALID" name="HMATERIALID" id="HMATERIALID" value="0" style="background-color:#efefef4d;width: 60%;display: inline-block;" readonly>
                                        <input type="text" class="layui-input" lay-verify="HMATERIALNAME" name="HMATERIALNAME" id="HMATERIALNAME" value="" style="background-color:#efefef4d;width: 60%;display: inline-block;" readonly>
                                        <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnHMATERIALID" id="btnHMATERIALID" style="padding: 0 10px;float: right;margin-right: 3px;">
                                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                                        </button>
                                    </div>
                                </div>-->
                                    <!--<div class="layui-inline">
                                <label class="layui-form-label" style="width: 85px;">齐套类型</label>
                                <div class="layui-input-block" style="margin-left: 120px; width: 185px;">
                                    <select name="HType" id="HType" lay-verify="HType">
                                        <option value="齐套" selected="selected">齐套</option>
                                        <option value="未齐套">未齐套</option>-->
                                                        <!--<option value="采购订单">采购订单</option> æš‚时没有-->
                                                        <!--</select>
                                </div>
                            </div>-->
                                <div class="layui-inline">
                <label class="layui-form-label" style="width: 85px;padding: 9px 18px;">生产车间</label>
                <div class="layui-input-block" style="margin-left: 77px;">
                    <input type="hidden" class="layui-input" lay-verify="HWorkShopID" name="HWorkShopID" id="HWorkShopID" value="0" style="background-color:#efefef4d;width: 60%;display: inline-block;" readonly>
                    <input type="text" class="layui-input" lay-verify="HWorkShopIDName" name="HWorkShopIDName" id="HWorkShopIDName" value="" style="background-color:#efefef4d;width: 60%;display: inline-block;">
                    <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnHWorkShopID" id="btnHWorkShopID" style="padding: 0 10px;float: right;margin-right: 3px;">
                        <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                    </button>
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" style="width: 85px;padding: 9px 18px;">产品编码</label>
                <div class="layui-input-block" style="margin-left: 77px;">
                    <input type="hidden" class="layui-input" lay-verify="HMATERIALID" name="HMATERIALID" id="HMATERIALID" value="0" style="background-color:#efefef4d;width: 60%;display: inline-block;" readonly>
                    <input type="text" class="layui-input" lay-verify="HMATERIALNAME" name="HMATERIALNAME" id="HMATERIALNAME" value="" style="background-color:#efefef4d;width: 60%;display: inline-block;" readonly>
                    <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnHMATERIALID" id="btnHMATERIALID" style="padding: 0 10px;float: right;margin-right: 3px;">
                        <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                    </button>
                </div>
            </div>-->
                                <!--<div class="layui-inline">
            <label class="layui-form-label" style="width: 85px;">齐套类型</label>
            <div class="layui-input-block" style="margin-left: 120px; width: 185px;">
                <select name="HType" id="HType" lay-verify="HType">
                    <option value="齐套" selected="selected">齐套</option>
                    <option value="未齐套">未齐套</option>-->
                                <!--<option value="采购订单">采购订单</option> æš‚时没有-->
                                <!--</select>
                </div>
            </div>-->
                                <div class="layui-inline" style="display:none">
                                    <label class="layui-form-label" style="width: 85px;">欠料日期</label>
                                    <div class="layui-input-block" style="margin-left: 120px;">
                                        <input type="date" class="layui-input" lay-verify="HBEGINDATE" name="HBEGINDATE" id="HBEGINDATE" style="padding-left: 78px;">
                                    </div>
                                </div>
                                <div class="layui-inline">
                                <div class="layui-inline" style="display:none">
                                    <label class="layui-form-label" style="width: 85px;">至:</label>
                                    <div class="layui-input-block" style="margin-left: 120px;">
                                        <input type="date" class="layui-input" lay-verify="HENDDATE" name="HENDDATE" id="HENDDATE" style="padding-left: 78px;">
@@ -90,27 +90,44 @@
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnExport" id="btnExport">导出</button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="bthHideColumn" id="bthHideColumn">列设置</button>
                                <!--<div class="layui-colla-content" style="padding: 0px; margin-left: 6%;">
        <div class="layui-row" style="margin-top:10px;">
            <div class="layui-inline">
                <label class="layui-form-label" style="width: 85px;padding: 9px 18px;">产品编码</label>
                <div class="layui-input-block" style="margin-left: 77px;">
                    <input type="hidden" class="layui-input" lay-verify="HMATERIALID" name="HMATERIALID" id="HMATERIALID" value="0" style="background-color:#efefef4d;width: 60%;display: inline-block;" readonly>
                    <input type="text" class="layui-input" lay-verify="HMATERIALNAME" name="HMATERIALNAME" id="HMATERIALNAME" value="" style="background-color:#efefef4d;width: 60%;display: inline-block;" readonly>
                    <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnHMATERIALID" id="btnHMATERIALID" style="padding: 0 10px;float: right;margin-right: 3px;">
                        <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                    </button>
                <div class="layui-row" style="margin-top:10px;">
                    <div class="layui-inline">
                        <label class="layui-form-label" style="width: 85px;padding: 9px 18px;">产品编码</label>
                        <div class="layui-input-block" style="margin-left: 77px;">
                            <input type="hidden" class="layui-input" lay-verify="HMATERIALID" name="HMATERIALID" id="HMATERIALID" value="0" style="background-color:#efefef4d;width: 60%;display: inline-block;" readonly>
                            <input type="text" class="layui-input" lay-verify="HMATERIALNAME" name="HMATERIALNAME" id="HMATERIALNAME" value="" style="background-color:#efefef4d;width: 60%;display: inline-block;" readonly>
                            <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnHMATERIALID" id="btnHMATERIALID" style="padding: 0 10px;float: right;margin-right: 3px;">
                                <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                            </button>
                        </div>
                    </div>
                    <div class="layui-inline">
                        <label class="layui-form-label" style="width: 85px;">生产订单号</label>
                        <div class="layui-input-block" style="margin-left: 120px;">
                            <input type="text" class="layui-input" name="HMOBILLNO" id="HMOBILLNO">
                        </div>
                    </div>
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" style="width: 85px;">生产订单号</label>
                <div class="layui-input-block" style="margin-left: 120px;">
                    <input type="text" class="layui-input" name="HMOBILLNO" id="HMOBILLNO">
                </div>
            </div>
        </div>
    </div>-->
            </div>-->
                            </div>
                        </div>
                        <div class="layui-tab layui-tab-card" lay-filter="table">
                            <ul class="layui-tab-title">
                                <li class="layui-this">下查</li>
                                <li>上查</li>
                            </ul>
                            <div class="layui-tab-content" style="">
                                <div class="layui-tab-item layui-show">
                                    <table class="" id="mainTable" lay-filter="mainTable"></table>
                                </div>
                                <div class="layui-tab-item ">
                                    <table class="" id="mainTable2" lay-filter="mainTable2"></table>
                                </div>
                            </div>
                        </div>
                        <table class="" id="mainTable" lay-filter="mainTable"></table>
                    </form>
                </div>
@@ -152,6 +169,8 @@
        var HMaterID = 0;
        var HWorkShopID = 0;
        var HOrgID = 0;
        var HExportData = "";//导出数据
        var HExportData2 = "";//导出数据
        //#endregion
        //#region è¿›å…¥é¡µé¢å³åŠ è½½
@@ -162,18 +181,6 @@
        //#endregion
        //#region è§¦å‘事件:包括form.on(){}格式的所有点击事件、选择事件等
        //#region äº§å“ç¼–码
        form.on('submit(btnHMATERIALID)', function (data) {
            btnHMATERIALID();
        });
        //#endregion
        //#region  ç”Ÿäº§è½¦é—´
        form.on('submit(btnHWorkShopID)', function (data) {
            btnHWorkShopID();
        });
        //#endregion
        //#region é‡ç½®æŒ‰é’®
        form.on('submit(btnReSearch)', function (data) {
@@ -205,54 +212,14 @@
        //#region åˆå§‹åŒ–界面
        function set_ClearBill() {
            //部门输入框
            tableSelect.render({
                elem: '#HWorkShopIDName',//输入框dom选择
                searchKey: '部门名称,HItemID',//查询的列名
                sWhere: '',//table搜索sWhere条件 //默认筛选项
                ajaxSelect: function (sWhere) {
                    var data = '';
                    $.ajax({
                        url: GetWEBURL() + '/Gy_Department/list',
                        type: "GET",
                        data: { "sWhere": sWhere, "user": sessionStorage["HMaker"], "Organization": sessionStorage["Organization"] },
                        async: false,
                        success: function (data1) {
                            if (data1.count == 1) {
                                data = data1.data
                            }
                        },
                        error: function () {
                            layer.alert('获取列表失败!', { icon: 15, title: '通信错误' });
                        }
                    });
                    return data;
                },//设置前端分页时可以设置的
                table: {
                    //url: GetWEBURL() + 'Gy_Supplier/page',
                    //where: { user: '翁涛涛', Organization: '浙江智云迈思' },
                    cols: [[
                        { type: 'radio', fixed: 'left' },//需要加这个fixed属性不然点击checkbox会触发行点击导致无法正确点击
                        { field: 'HItemID', title: 'HItemID' },
                        { field: '部门名称', title: '部门名称' },
                    ]],
                    page: true,
                    limit: 5,
                    limits: [5]
                },
                done: function (elem, data) {
                    if (data != []) {
                        $("#HWorkShopIDName").val(data.data[0]['部门名称']);
                        $("#HWorkShopID").val(data.data[0]['HItemID']);
                    }
                }
            })
            //初始化日期
            $("#HBEGINDATE").val(Format(new Date(new Date()), "yyyy-MM-dd"));//欠料日期
            $("#HENDDATE").val(Format(new Date($("#HBEGINDATE").val()).setDate(new Date($("#HBEGINDATE").val()).getDate() + 30), "yyyy-MM-dd"));//至
            addSWhereByOpenType()
            //初始化表格
            set_InitGrid();
            //设置页码
            DisPlay_HideColumn_GetPageSize(HModName, sessionStorage["HUserName"], option)
            //设置页码
            DisPlay_HideColumn_GetPageSize(HModName, sessionStorage["HUserName"], option2)
            //快速过滤
            get_FastQuery();
        }
@@ -262,68 +229,72 @@
        function set_InitGrid() {
            var columns = [];
            columns.push({ type: 'checkbox', fixed: 'left', sort: true });
            columns.push({ field: '需求车间ID', title: '需求车间ID', sort: true, filter: true });
            columns.push({ field: '需求车间编码', title: '需求车间编码', sort: true, filter: true });
            columns.push({ field: '需求车间名称', title: '需求车间名称', sort: true, filter: true });
            columns.push({ field: '物料ID', title: '物料ID', sort: true, filter: true });
            columns.push({ field: '物料编码', title: '物料编码', sort: true, filter: true });
            columns.push({ field: '物料名称', title: '物料名称', sort: true, filter: true });
            columns.push({ field: '物料属性', title: '物料属性', sort: true, filter: true });
            columns.push({ field: '供货车间ID', title: '供货车间ID', sort: true, filter: true  });
            columns.push({ field: '供货车间编码', title: '供货车间编码', sort: true,  filter: true  });
            columns.push({ field: '供货车间名称', title: '供货车间名称', sort: true, filter: true });
            columns.push({ field: 'HMainICMOInterID', title: 'HMainICMOInterID', sort: true, filter: true });
            columns.push({ field: 'HMainICMOEntryID', title: 'HMainICMOEntryID', sort: true, filter: true });
            columns.push({ field: 'HMainICMOBillNo', title: 'HMainICMOBillNo', sort: true, filter: true });
            columns.push({ field: 'HICMOInterID', title: 'HICMOInterID', sort: true, filter: true });
            columns.push({ field: 'HICMOEntryID', title: 'HICMOEntryID', sort: true, filter: true });
            columns.push({ field: 'HICMOBillNo', title: 'HICMOBillNo', sort: true, filter: true });
            columns.push({ field: '是否匹配到订单', title: '是否匹配到订单', sort: true, filter: true, templet: function (d) { return d.是否匹配到订单 ? '否' : '是'; }  });
            //columns.push({ field: 'HPOOrderBillRemark', title: '摘要' });
            //columns.push({ field: 'HPOOrderBillNote', title: '备注' });
            //columns.push({ field: '采购员', title: '采购员' });
            columns.push({ field: '是否匹配到要料计划信息', title: '是否匹配到要料计划信息', sort: true, filter: true, templet: function (d) { return d.是否匹配到要料计划信息 ? '否' : '是'; } });
            columns.push({ field: '层级', title: '层级', sort: true, filter: true });
            //columns.push({ field: '计量单位名称', title: '计量单位', sort: true, filter: true });
            //columns.push({ field: 'TQSUM', title: '欠料拖期数量', sort: true, totalRow: true, filter: true });
            //获取两个月期之间的相差
            var time1 = Date.parse(new Date($("#HBEGINDATE").val()));//开始时间
            var time2 = Date.parse(new Date($("#HENDDATE").val()));//结束时间
            var Days = Math.abs(parseInt((time2 - time1) / 1000 / 3600 / 24));
            //获取年
            var yyyy = new Date($("#HBEGINDATE").val()).getFullYear();
            //获取月份
            var MM = new Date($("#HBEGINDATE").val()).getMonth() + 1;
            //获取开始月份的最大天数
            var SumMonth = new Date(yyyy, MM, 0).getDate(); //动态两月之差
            //获取开始日期的天数
            var HBEGINDATE = new Date(new Date($("#HBEGINDATE").val())).getDate(); //获取开始日期天数
            //columns.push({ type: 'checkbox', fixed: 'left', sort: true });
            //columns.push({ field: '需求车间ID', title: '需求车间ID', sort: true, filter: true });
            //columns.push({ field: '需求车间编码', title: '需求车间编码', sort: true, filter: true });
            //columns.push({ field: '需求车间名称', title: '需求车间名称', sort: true, filter: true });
            //columns.push({ field: '物料ID', title: '物料ID', sort: true, filter: true });
            //columns.push({ field: '物料编码', title: '物料编码', sort: true, filter: true });
            //columns.push({ field: '物料名称', title: '物料名称', sort: true, filter: true });
            //columns.push({ field: '物料属性', title: '物料属性', sort: true, filter: true });
            //columns.push({ field: '供货车间ID', title: '供货车间ID', sort: true, filter: true  });
            //columns.push({ field: '供货车间编码', title: '供货车间编码', sort: true,  filter: true  });
            //columns.push({ field: '供货车间名称', title: '供货车间名称', sort: true, filter: true });
            //columns.push({ field: 'HMainICMOInterID', title: 'HMainICMOInterID', sort: true, filter: true });
            //columns.push({ field: 'HMainICMOEntryID', title: 'HMainICMOEntryID', sort: true, filter: true });
            //columns.push({ field: 'HMainICMOBillNo', title: 'HMainICMOBillNo', sort: true, filter: true });
            //columns.push({ field: 'HICMOInterID', title: 'HICMOInterID', sort: true, filter: true });
            //columns.push({ field: 'HICMOEntryID', title: 'HICMOEntryID', sort: true, filter: true });
            //columns.push({ field: 'HICMOBillNo', title: 'HICMOBillNo', sort: true, filter: true });
            //columns.push({ field: '是否匹配到订单', title: '是否匹配到订单', sort: true, filter: true, templet: function (d) { return d.是否匹配到订单 ? '否' : '是'; }  });
            ////columns.push({ field: 'HPOOrderBillRemark', title: '摘要' });
            ////columns.push({ field: 'HPOOrderBillNote', title: '备注' });
            ////columns.push({ field: '采购员', title: '采购员' });
            //columns.push({ field: '是否匹配到要料计划信息', title: '是否匹配到要料计划信息', sort: true, filter: true, templet: function (d) { return d.是否匹配到要料计划信息 ? '否' : '是'; } });
            //columns.push({ field: '即时库存数量', title: '即时库存数量', sort: true, filter: true });
            //columns.push({ field: '占用数量', title: '占用数量', sort: true, filter: true });
            //columns.push({ field: '领料数量', title: '领料数量', sort: true, filter: true });
            //columns.push({ field: '日计划需求数量', title: '日计划需求数量', sort: true, filter: true });
            //columns.push({ field: '层级', title: '层级', sort: true, filter: true });
            ////columns.push({ field: '计量单位名称', title: '计量单位', sort: true, filter: true });
            ////columns.push({ field: 'TQSUM', title: '欠料拖期数量', sort: true, totalRow: true, filter: true });
            ////获取两个月期之间的相差
            //var time1 = Date.parse(new Date($("#HBEGINDATE").val()));//开始时间
            //var time2 = Date.parse(new Date($("#HENDDATE").val()));//结束时间
            //var Days = Math.abs(parseInt((time2 - time1) / 1000 / 3600 / 24));
            ////获取年
            //var yyyy = new Date($("#HBEGINDATE").val()).getFullYear();
            ////获取月份
            //var MM = new Date($("#HBEGINDATE").val()).getMonth() + 1;
            ////获取开始月份的最大天数
            //var SumMonth = new Date(yyyy, MM, 0).getDate(); //动态两月之差
            ////获取开始日期的天数
            //var HBEGINDATE = new Date(new Date($("#HBEGINDATE").val())).getDate(); //获取开始日期天数
            var k = 0;//收集循环次数
            for (var j = 0; j <= (Days - k); j++) {
                columns.push({ field: Format(yyyy + '/' + MM + '/' + (HBEGINDATE + j), 'yyyy-MM-dd'), title: Format(yyyy + '/' + MM + '/' + (HBEGINDATE + j), 'MM.dd'), width: 70, totalRow: true, filter: true })
                //跨年的话 ä¼šä»Žä¸€æœˆä¸€å·å¼€å§‹
                if (MM == 12 && (HBEGINDATE + j) == 31) {
                    yyyy += 1;
                    MM = 1;
                    SumMonth = new Date(yyyy, MM, 0).getDate();
                    HBEGINDATE = 0;
                    k += j;
                    j = 0;
                } else if ((HBEGINDATE + j) == SumMonth) { //跨月 æœˆæ•°åР䏀  å¤©æ•°ä»Žä¸€å¼€å§‹
                    HBEGINDATE = 0;
                    MM += 1;
                    SumMonth = new Date(yyyy, MM, 0).getDate();
                    k += j;
                    j = 0;
                }
            }
            /*columns.push({ field: '欠料计划合计', title: '欠料计划合计', filter: true  });*/
            //var k = 0;//收集循环次数
            //for (var j = 0; j <= (Days - k); j++) {
            //    columns.push({ field: Format(yyyy + '/' + MM + '/' + (HBEGINDATE + j), 'yyyy-MM-dd'), title: Format(yyyy + '/' + MM + '/' + (HBEGINDATE + j), 'MM-dd'), width: 70, totalRow: true, filter: true })
            //    //跨年的话 ä¼šä»Žä¸€æœˆä¸€å·å¼€å§‹
            //    if (MM == 12 && (HBEGINDATE + j) == 31) {
            //        yyyy += 1;
            //        MM = 1;
            //        SumMonth = new Date(yyyy, MM, 0).getDate();
            //        HBEGINDATE = 0;
            //        k += j;
            //        j = 0;
            //    } else if ((HBEGINDATE + j) == SumMonth) { //跨月 æœˆæ•°åР䏀  å¤©æ•°ä»Žä¸€å¼€å§‹
            //        HBEGINDATE = 0;
            //        MM += 1;
            //        SumMonth = new Date(yyyy, MM, 0).getDate();
            //        k += j;
            //        j = 0;
            //    }
            //}
            //columns.push({ field: 'Total', title: '欠料计划合计', filter: true  });
            option = {
                elem: '#mainTable'
                //, toolbar: '#toolbarDemo'
                /*, toolbar: '#toolbarDemo'*/
                , height: 'full-50'
                , tree: {
                    customName: {
@@ -338,7 +309,27 @@
                , loading: false
                , cols: [columns]
                , done: function (res, curr, count) {
                    /*soulTable.render(this);*/
                    soulTable.render(this);
                }
            };
            option2 = {
                elem: '#mainTable2'
                //, toolbar: '#toolbarDemo'
                , height: 'full-50'
                , tree: {
                    customName: {
                        name: '物料名称',
                    }
                }
                , page: true
                , cellMinWidth: 90
                , limit: 1000
                , limits: [50, 500, 1000, 2000]
                , totalRow: true
                , loading: false
                , cols: [columns]
                , done: function (res, curr, count) {
                    soulTable.render(this);
                }
            };
        }
@@ -347,9 +338,10 @@
        //#region æŸ¥è¯¢
        function get_Display() {
            var ajaxLoad = layer.load();
            var HBEGINDATE = $("#HBEGINDATE").val();//欠料日期
            var HENDDATE = $("#HENDDATE").val();//至
            var sql = "exec h_p_JIT_MaterialLevelShorDetailsList " + HOrgID + "," + HMaterID + "," + HWorkShopID + ",'" + HBEGINDATE + "','" + HENDDATE + "'";
            var HBEGINDATE = $("#HBEGINDATE").val();
            var HENDDATE = $("#HENDDATE").val();
            //下查
            var sql = "exec h_p_JIT_MaterialLevelShorDetailsList " + HOrgID + "," + HMaterID + "," + HWorkShopID + ",'" + HBEGINDATE + "','" + HENDDATE + "'," + "1";
            $.ajax({
                url: GetWEBURL() + '/Gy_SOPBillList/WindowPrintList',
                type: "GET",
@@ -357,25 +349,150 @@
                data: { "sWhere": sql },
                success: function (data1) {
                    if (data1.count == 1) {
                        var firstdata = data1.data;
                        var treedata = firstdata.map(function (father) {
                            father.children = [];
                            if (father.HMainICMOEntryID == 0) {
                                for (var obj of firstdata) {
                                    if (obj.HMainICMOEntryID == father.HICMOEntryID) {
                                        father.children.push(obj);
                                        father.isParent = true
                                    }
                                }
                                return father;
                        var data = [];//列字段数据
                        var col = [];
                        var totalArray = [];
                        var titleData = [];
                        //给空的数组赋值
                        for (var key in data1.list) {//循序遍历数组
                            data.push({ "id": data1.list[key].ColmCols, "name": data1.list[key].ColmCols, "Type": data1.list[key].ColmType });//从每个对象中提取数据
                        }
                        //在列表左边添加勾选框
                        col.push({ type: 'checkbox', fixed: 'left', totalRowText: '合计' });
                        for (var i = 0; i < data.length; i++) {//遍历data数组重的数据
                            // if (data[i].name == 'HInterID' || data[i].name == 'HBillType' || data[i].name == 'hmainid') {
                            if ($.inArray(data[i].name, titleData) > -1) {//检查data【i】.name是否在数组中  //计算列
                                col.push({ field: data[i].id, title: data[i].name, align: 'center', hide: true }); //隐藏id列
                            }
                        })
                        console.log(treedata)
                        option.data = treedata;
                            else if ($.inArray(data[i].name, totalArray) > -1) { //计算列
                                col.push({ field: data[i].id, title: data[i].name, align: 'center', sort: true, totalRow: true, width: 120 });
                            } else if (data[i].name == '是否匹配到订单') {
                                col.push({ field: '是否匹配到订单', title: '是否匹配到订单', sort: true, filter: true, templet: function (d) { return d.是否匹配到订单 ? '否' : '是'; } });
                            }
                            else if (data[i].name == '是否匹配到要料计划信息') {
                                col.push({ field: '是否匹配到要料计划信息', title: '是否匹配到要料计划信息', sort: true, filter: true, templet: function (d) { return d.是否匹配到要料计划信息 ? '否' : '是'; } });
                            } else if (isValidDate(data[i].name)) {
                                col.push({ field: data[i].name, title: Format(data[i].name, 'MM.dd'), width: 70, totalRow: true, filter: true })
                            }
                            else {
                                switch (data[i].Type) {
                                    //int
                                    case 'DateTime':
                                        col.push({ field: data[i].id, title: data[i].name, align: 'center', sort: true, templet: "<div>{{d." + (data[i].name == "行关闭日期" ? "行关闭人" : data[i].name) + " ==''?'':layui.util.toDateString(d." + data[i].name + ", 'yyyy-MM-dd HH:mm:ss')}}</div>", width: 200 });
                                        break;
                                    default:
                                        col.push({ field: data[i].id, title: data[i].name, align: 'center', sort: true, width: 200 });
                                }
                            }
                        }
                        option.cols = [col];
                        HExportData = data1.data;
                        var firstdata = data1.data;
                        let itemMap = new Map();//
                        let maxLevel = firstdata[0].层级;
                        // ä½¿ç”¨ Map å­˜å‚¨å¯¹è±¡å¼•用,以处理可能的 Hitemid é‡å¤
                        //把相同的HICMOEntryID放到同一个对象数组里
                        firstdata.forEach(item => {
                            if (!itemMap.has(item.HICMOEntryID)) {
                                itemMap.set(item.HICMOEntryID, []);
                            }
                            itemMap.get(item.HICMOEntryID).push(item);
                        });
                        let root = [];
                        // éåŽ†æ¯ä¸ªå¯¹è±¡ï¼ŒåŠ¨æ€æ·»åŠ  isParent å’Œ children å±žæ€§
                        firstdata.forEach(item => {
                            item.isParent = false; // é»˜è®¤æ‰€æœ‰èŠ‚ç‚¹çš„ isParent ä¸º false
                            item.children = [];
                        });
                        // ç¬¬äºŒæ¬¡éåŽ†ï¼Œæž„å»ºå±‚æ¬¡ç»“æž„å¹¶è®¾ç½® isParent
                        firstdata.forEach(item => {
                            if (item.层级 === maxLevel) {
                                root.push(item);
                            } else {
                                const parentList = itemMap.get(item.HMainICMOEntryID);
                                if (parentList) {
                                    parentList.forEach(parent => {
                                        //只有匹配到订单的才有上层
                                        if (parent.是否匹配到订单 == 0 && item.生产物料ID == parent.物料ID) {
                                            parent.children.push(item);
                                        }
                                        // å¦‚果父节点有子节点,则设置其 flag ä¸º true
                                        if (parent.children.length > 0) {
                                            parent.isParent = true;
                                        }
                                    });
                                }
                            }
                        });
                        option.data = root;
                        //列设置
                        DisPlay_HideColumnForPlan(HModName, sessionStorage["HUserName"], option);
                        ins = treeTable.render(option);
                    } else {
                        layer.alert(data1.code + data1.Message, { icon: 5 });
                        layer.close(ajaxLoad);
                    }
                }, error: function () {
                    layer.alert("接口请求失败!", { icon: 5 });
                    layer.close(ajaxLoad);
                }
            });
            var sql = "exec h_p_JIT_MaterialLevelShorDetailsList " + HOrgID + "," + HMaterID + "," + HWorkShopID + ",'" + HBEGINDATE + "','" + HENDDATE + "'," + "2";
            $.ajax({
                url: GetWEBURL() + '/Gy_SOPBillList/WindowPrintList',
                type: "GET",
                async: false,
                data: { "sWhere": sql },
                success: function (data1) {
                    if (data1.count == 1) {
                        HExportData2 = data1.data;
                        var firstdata = data1.data;
                        let itemMap = new Map();//
                        let maxLevel = firstdata[firstdata.length-1].层级;
                        // ä½¿ç”¨ Map å­˜å‚¨å¯¹è±¡å¼•用,以处理可能的 Hitemid é‡å¤
                        //把相同的HICMOEntryID放到同一个对象数组里
                        firstdata.forEach(item => {
                            if (!itemMap.has(item.HMainICMOEntryID)) {
                                itemMap.set(item.HMainICMOEntryID, []);
                            }
                            itemMap.get(item.HMainICMOEntryID).push(item);
                        });
                        let root = [];
                        // éåŽ†æ¯ä¸ªå¯¹è±¡ï¼ŒåŠ¨æ€æ·»åŠ  isParent å’Œ children å±žæ€§
                        firstdata.forEach(item => {
                            item.isParent = false; // é»˜è®¤æ‰€æœ‰èŠ‚ç‚¹çš„ isParent ä¸º false
                            item.children = [];
                        });
                        // ç¬¬äºŒæ¬¡éåŽ†ï¼Œæž„å»ºå±‚æ¬¡ç»“æž„å¹¶è®¾ç½® isParent
                        firstdata.forEach(item => {
                            if (item.层级 === maxLevel) {
                                root.push(item);
                            } else {
                                const parentList = itemMap.get(item.HICMOEntryID);
                                if (parentList) {
                                    parentList.forEach(parent => {
                                        //只有匹配到订单的才有上层
                                        if (item.物料ID == parent.生产物料ID) {
                                            parent.children.push(item);
                                        }
                                        // å¦‚果父节点有子节点,则设置其 flag ä¸º true
                                        if (parent.children.length > 0) {
                                            parent.isParent = true;
                                        }
                                    });
                                }
                            }
                        });
                        option2.cols = option.cols;
                        option2.data = root;
                        //列设置
                        DisPlay_HideColumnForPlan(HModName, sessionStorage["HUserName"], option2);
                        ins = treeTable.render(option2);
                        layer.close(ajaxLoad);
                    } else {
                        layer.alert(data1.code + data1.Message, { icon: 5 });
@@ -388,11 +505,37 @@
            });
        }
        // ç­›é€‰å‡½æ•°ï¼šæ£€æŸ¥å­—符串是否符合格式筛选日期
        function isValidDate(dateStr) {
            // æ­£åˆ™è¡¨è¾¾å¼éªŒè¯æ ¼å¼
            const formatRegex = /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;
            if (!formatRegex.test(dateStr)) return false;
            // åˆ†å‰²å¹´æœˆæ—¥å¹¶è½¬æ¢ä¸ºæ•°å€¼
            const [year, month, day] = dateStr.split('-').map(Number);
            // åˆ›å»ºDate对象(月份从0开始)
            const date = new Date(year, month - 1, day);
            // æ£€æŸ¥æ—¥æœŸæ˜¯å¦æœ‰æ•ˆï¼ˆä¸Žè¾“入的年月日一致)
            return (
                date.getFullYear() === year &&
                date.getMonth() === month - 1 &&
                date.getDate() === day
            );
        }
        //#endregion
        //#region èŽ·å–å¯¼å‡ºæ•°æ®
        function getExportData() {
            var data = option.data;
            var tableId = $('.layui-tab-item.layui-show table').attr('id');
            var data = HExportData;
            if (tableId == "mainTable2") {
                data = HExportData2;
            }
            data.forEach((item) => {
                for (let itemobj in item) {
                    if (item[itemobj] == null) {
@@ -403,18 +546,17 @@
                    }
                }
            });
            table.exportFile(ins.config.id, data, "xls");
            table.exportFile(tableId, data, "xls");
        }
        //#endregion
        //#region å¿«é€Ÿè¿‡æ»¤
        function get_FastQuery() {
            var HBEGINDATE = $("#HBEGINDATE").val();//欠料日期
            var HENDDATE = $("#HENDDATE").val();//至
            if (HBEGINDATE > HENDDATE) {
                return layer.msg("开始日期不能小于结束日期!");
            }
            //var HBEGINDATE = $("#HBEGINDATE").val();//欠料日期
            //var HENDDATE = $("#HENDDATE").val();//至
            //if (HBEGINDATE > HENDDATE) {
            //    return layer.msg("开始日期不能小于结束日期!");
            //}
            //if (HORGID != "") {
            //    sWhere += " and T1.HStockORGID= " + HORGID+" ";
@@ -428,7 +570,7 @@
            //if (HMATERIALID!=0) {
            //    sWhere += " and T1.HMaterID= " + HMATERIALID+" ";
            //}
            addSWhereByOpenType();
            /*addSWhereByOpenType();*/
            get_Display();
            sWhere = "";//调用接口后清空sWhere缓存
        }
@@ -436,9 +578,9 @@
        //#region é‡ç½®è¿‡æ»¤æ¡ä»¶æ–¹æ³•
        function set_ClearQuery() {
            $("#HORGID").val(sessionStorage["OrganizationID"]);//组织
            $("#HBEGINDATE").val(Format(new Date(new Date()), "yyyy-MM-dd"));//欠料日期
            $("#HENDDATE").val(Format(new Date($("#HBEGINDATE").val()).setDate(new Date($("#HBEGINDATE").val()).getDate() + 30), "yyyy-MM-dd"));//至
           /* $("#HORGID").val(sessionStorage["OrganizationID"]);//组织*/
            //$("#HBEGINDATE").val(Format(new Date(new Date()), "yyyy-MM-dd"));//欠料日期
            //$("#HENDDATE").val(Format(new Date($("#HBEGINDATE").val()).setDate(new Date($("#HBEGINDATE").val()).getDate() + 30), "yyyy-MM-dd"));//至
            //$("#HMATERIALID").val("");//物料/产品
            //$("#HMATERIALNAME").val("");
            //$("#HWorkShopID").val("");
@@ -447,59 +589,6 @@
            sWhere = "";
        }
        //#endregion
        //物料列表
        function btnHMATERIALID() {
            layer.open({
                type: 2 //类型
                , skin: 'layui-layer-rim'//加上边框
                , area: ['90%', '90%']//大小
                , title: '物料列表'//标题
                , shift: 2//弹出动画
                , content: ['../../基础资料/公用基础资料/Gy_Material.html', 'yes']
                , btn: ['确定', '取消']
                , btn1: function (index, layero) {//按钮【按钮一】的回调
                    var iframeWindow = window['layui-layer-iframe' + index]  //获取弹框页面
                    var checkStatus = iframeWindow.layui.table.checkStatus('mainTable');//获取table的elem:"#test"
                    if (checkStatus.data.length === 0) {
                        return layer.msg('请选择数据');
                    }
                    //获取数据
                    $("#HMATERIALID").val(checkStatus.data[0].HItemID);
                    $("#HMATERIALNAME").val(checkStatus.data[0].物料名称);
                    layer.close(index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                }
                , btn2: function (index, layero) { }
            })
        }
        //#region é€‰æ‹©ç”Ÿäº§è½¦é—´
        function btnHWorkShopID() {
            var HOrgName = $(".layui-form-select input").val();
            layer.open({
                type: 2 //类型
                , skin: 'layui-layer-rim'//加上边框
                , area: ['90%', '90%']//大小
                , title: '生产车间列表'//标题
                , shift: 2//弹出动画
                , content: ['../../基础资料/公用基础资料/Gy_DepartmentList.html?Type=2&HOrgName=' + HOrgName, 'yes']
                , btn: ['确定', '取消']
                , btn1: function (index, layero) {//按钮【按钮一】的回调
                    var iframeWindow = window['layui-layer-iframe' + index]  //获取弹框页面
                    var checkStatus = iframeWindow.layui.table.checkStatus('mainTable');//获取table的elem:"#test"
                    if (checkStatus.data.length === 0) {
                        return layer.msg('请选择数据');
                    }
                    //获取数据
                    $("#HWorkShopID").val(checkStatus.data[0].HItemID);//车间id
                    $("#HWorkShopIDName").val(checkStatus.data[0].部门名称);//车间名称
                    /*get_WriteConfigFile();*/
                    layer.close(index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                }
                , btn2: function (index, layero) { }
            })
        }
            //#endregion
        //#region èŽ·å–å‚æ•°
        function getUrlVars() {
@@ -521,11 +610,15 @@
            var HOrgID2 = params[params[1]];
            var HMaterID2 = params[params[2]];
            var HWorkShopID2 = params[params[3]];
            var HBEGINDATE2 = params[params[4]];//欠料日期
            var HENDDATE2 = params[params[5]];//至
            var addSWhere = "";
            if (openType == 2) {
                HMaterID = HMaterID2;
                HWorkShopID = HWorkShopID2;
                HOrgID = HOrgID2;
                $("#HBEGINDATE").val(HBEGINDATE2);
                $("#HENDDATE").val(HENDDATE2);
            }
            return addSWhere;
        }