1
chenhaozhe
2025-07-02 fe50d723e5d050113c4ecc493220e264f39d8e5f
WebTM/views/Éú²ú¹ÜÀí/ÈýÉýÅŲú/JIT_DayPlanPlatForm.html
@@ -7,8 +7,8 @@
    <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all">
    <link rel="stylesheet" href="../../../layuiadmin/ext/soulTable.css" media="all">
    <script src="../../../layuiadmin/layui/layui.js"></script>
    <script src="../../../layuiadmin/Scripts/json2.js"></script>
    <script src="../../../layuiadmin/Scripts/jquery-1.4.1.js"></script>
    <!--<script src="../../../layuiadmin/Scripts/json2.js"></script>-->
    <!--<script src="../../../layuiadmin/Scripts/jquery-1.4.1.js"></script>-->
    <script src="../../../layuiadmin/Scripts/webConfig.js"></script>
    <script src="../../../layuiadmin/PubCustom.js"></script>
    <script src="../../../layuiadmin/zgqCustom/zgqCustom.js"></script>
@@ -17,7 +17,7 @@
</head>
<body>
    <div class="layui-fluid">
        <div class="layui-col-md12">
        <div class="layui-col-md13">
            <div class="layui-card" style="padding: 1px">
                <div class="layui-card-body" style="padding: 1px;">
                    <form class="layui-form" action="" lay-filter="component-form-group">
@@ -29,8 +29,8 @@
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnSave" id="btnSave">保存</button>
                            <!--<button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnReady" id="btnReady">准备</button>-->
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnProPC" id="btnProPC">排产</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnLock" id="btnLock">锁定</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnUnlock" id="btnUnlock">解锁</button>
                            <!--<button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnLock" id="btnLock">锁定</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnUnlock" id="btnUnlock">解锁</button>-->
                            <!--<button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnLockRequest" id="btnLock">锁定申请</button>
    <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnUnlockRequest" id="btnUnlock">解锁申请</button>-->
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnLockOrder" id="btnLockOrder">锁定工单</button>
@@ -250,10 +250,10 @@
                            </div>
                        </div>
                        <div id="HProgressBar"></div>
                        <div class="layui-row" style="padding:10px 0">
                        <div class="layui-row" style="padding:0px 0">
                            <table class="" id="mainTable" lay-filter="mainTable"></table>
                        </div>
                        <div class="resizable-container layui-tab layui-tab-card" style="margin-top:40px;">
                        <div class="resizable-container layui-tab layui-tab-card" style="margin-top: 40px; display: none;">
                            <ul class="layui-tab-title">
                                <li class="layui-this">生产订单</li>
                                <li>缺料分析</li>
@@ -312,14 +312,14 @@
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_ReadyAsc"><i class="layui-icon layui-icon-delete"></i>准备排序</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_ReadyWorkQty"><i class="layui-icon layui-icon-delete"></i>准备(同步产能)</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_Souce"><i class="layui-icon layui-icon-delete"></i>选产线</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_Emp"><i class="layui-icon layui-icon-delete"></i>选操作工</button>
                                <!--<button type="button" class="layui-btn layui-btn-sm" lay-event="set_Emp"><i class="layui-icon layui-icon-delete"></i>选操作工</button>-->
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_HideColumn"><i class="layui-icon layui-icon-form"></i>列设置</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_Routing"><i class="layui-icon layui-icon-form"></i>工艺路线</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_Calendar"><i class="layui-icon layui-icon-form"></i>工厂日历</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="get_export" id="get_export"><i class="layui-icon layui-icon-export"></i>导出</button>
                            </div>
                        </script>
                        <script type="text/html" id="toolbarDemo2">
                        <!--<script type="text/html" id="toolbarDemo2">
                            <div class="layui-btn-container">
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_Arrangement"><i class="layui-icon layuiiconform"></i>排产</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_HideColumn_ICMO"><i class="layui-icon layuiiconform"></i>列设置</button>
@@ -331,7 +331,7 @@
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_HideColumn_Material"><i class="layui-icon layuiiconform"></i>列设置</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-Close"><i class="layui-icon layui-icon-logout"></i>退出</button>
                            </div>
                        </script>
                        </script>-->
                    </form>
                </div>
            </div>
@@ -351,7 +351,7 @@
    }).extend({
        index: 'lib/index', //主入口模块
        soulTable: 'soulTable'
    }).use(['tree', 'index', 'form', 'table', 'element', 'laypage', 'laydate', 'util', 'soulTable','jquery'], function () {
    }).use(['index', 'form', 'table', 'element', 'laydate', 'util', 'soulTable','jquery'], function () {
        //#region å…¬ç”¨å˜é‡
        var $ = layui.$
@@ -360,7 +360,6 @@
            , table = layui.table
            , form = layui.form
            , laydate = layui.laydate
            , excel = layui.excel
            , soulTable = layui.soulTable
            , element = layui.element;
        var ins;
@@ -431,25 +430,29 @@
                return layer.msg("拆单数量不能为0!");
            }
            if (SumHQty > (parseInt(obj.data["计划数量"]))) {
            if (SumHQty > (parseInt(obj.data["计划数量"])) && obj.field == "拆单数量") {
                obj.update({
                    "拆单数量": "0"
                    "拆单数量": $(this).prev().text()
                });
                obj.tr.find('td[data-field=拆单数量] input').val($(this).prev().text());  // è¿™å¥ä»£ç æ˜¯å¿…要的更新显示内容
                return layer.msg("拆单数量大于订单数量!");
            }
            var NowDate = obj.field;
            if (dateHQty > (parseInt(obj.data["计划数量"]))) {
            if (dateHQty > (parseInt(obj.data["拆单数量"]))) {
                obj.update({
                    "日计划数量总量": dateHQty - obj.value,
                    [NowDate]: 0
                });
                return layer.msg("排产数量大于订单数量!")
                obj.tr.find(`td[data-field=${NowDate}] input`).val(0);  // è¿™å¥ä»£ç æ˜¯å¿…要的更新显示内容
                return layer.msg("排产数量大于拆单数量!")
            }
            if (Date.parse(obj.field) > Date.parse(obj.data.计划结束日期)) {
                return layer.msg("排产日期超出计划结束日期!");
            }
            //if (Date.parse(obj.field) > Date.parse(obj.data.计划结束日期)) {
            //    return layer.msg("排产日期超出计划结束日期!");
            //}
            //修改数据
@@ -592,8 +595,21 @@
                    layer.confirm('你确定要执行操作吗,请先确保排产数据已保存?', {
                        btn: ['确定', '取消'] //按钮
                        , btn1: function (index, layero) {
                            get_btnReady(data);
                            layer.close(index);
                            // 1. èŽ·å–â€œç¡®å®šâ€æŒ‰é’®å¹¶æ·»åŠ åŠ è½½åŠ¨ç”»
                            var confirmBtn = $(layero).find('.layui-layer-btn0'); // ç¡®å®šæŒ‰é’®
                            confirmBtn.html('<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate"></i> å¤„理中...');
                            confirmBtn.prop('disabled', true);
                            if (data.length <= 0) {
                                layer.msg("请选择数据")
                                layer.close(index);
                            } else {
                                setTimeout(function () {
                                    get_btnReady(data);
                                    layer.close(index);
                                }, 5); // å»¶è¿Ÿæ‰§è¡Œç¡®ä¿æŒ‰é’®å›¾æ ‡æ¸²æŸ“完
                            }
                        }
                    })
                    break;
@@ -1073,7 +1089,8 @@
            //初始化表格
            set_InitGrid();
            get_FastQuery(2);
            get_FastQuery_ICMO();
            //生产订单查询
            /*get_FastQuery_ICMO();*/
        }
        //#region åˆå§‹åŒ–下拉列表 æŽ’产时间
        function setSelect_HArrangeProductDayQty() {
@@ -1094,9 +1111,10 @@
            $("#HArrangeProductDayQty").empty();
            $("#HArrangeProductDayQty").append(HArrangeProductDayQty_ArrayList);
            form.render('select');
            $("#HArrangeProductDayQty").val("40");
            form.render('select');
        }
        //#endregion
@@ -1676,7 +1694,7 @@
            columns.push({ field: '销售订单号', title: '销售订单号', width: 150, filter: true, sort: true});
            columns.push({ field: '生产订单号', title: '生产订单号', width: 150, style: 'background-color: #f9f9f9;', filter: true, sort: true });
            columns.push({ field: '客户订单号', title: '客户订单号', width: 150, style: 'background-color: #f9f9f9;', filter: true, sort: true });
            columns.push({ field: '生产组织', title: '生产组织', width: 150, filter: true, sort: true });
            columns.push({ field: '生产组织', title: '生产组织', width: 150, sort: true });
            columns.push({ field: '物料代码', title: '物料编码', width: 150, filter: true, sort: true});
            columns.push({ field: '物料名称', title: '物料名称', width: 150, filter: true, sort: true});
            columns.push({ field: '规格型号', title: '规格型号', width: 150, filter: true, sort: true });
@@ -1688,7 +1706,7 @@
            columns.push({ field: '生产订单日期', title: '生产订单日期', width: 150, templet: "<div>{{d.生产订单日期 ==null ?'':layui.util.toDateString(d.生产订单日期, 'yyyy-MM-dd')}}</div>", filter: true, sort: true });
            
            columns.push({ field: '计划结束日期', title: '计划结束日期', width: 150, templet: "<div>{{d.计划结束日期 ==null ?'':layui.util.toDateString(d.计划结束日期, 'yyyy-MM-dd')}}</div>", event: "HPlanEndDate", filter: true, sort: true });
            columns.push({ field: '订单可排数量', title: '订单可排数量', width: 150, filter: true, sort: true});
            columns.push({ field: '订单可排数量', title: '订单可排数量', width: 150, sort: true});
            columns.push({ field: '拆单数量', title: '拆单数量', width: 150, edit: 'text', filter: true, sort: true });
            columns.push({ field: '昨日数量', title: '昨日数量', filter: true, sort: true });
            columns.push({ field: '优先级', title: '优先级', width: 150, edit: 'text', filter: true, sort: true });
@@ -1715,7 +1733,7 @@
            columns.push({ field: '生产周期', title: '生产周期', width: 150 });
            columns.push({ field: '最迟开工日期', title: '最迟开工日期', width: 150, templet: "<div>{{d.最迟开工日期 =='' ?'':layui.util.toDateString(d.最迟开工日期, 'yyyy-MM-dd')}}</div>" });
            columns.push({ field: '最迟完工日期', title: '最迟完工日期', width: 150, templet: "<div>{{d.最迟完工日期 =='' ?'':layui.util.toDateString(d.最迟完工日期, 'yyyy-MM-dd')}}</div>" });
            columns.push({ field: '销售订单数量', title: '销售订单数量', width: 150, filter: true, sort: true });
            columns.push({ field: '销售订单数量', title: '销售订单数量', width: 150, sort: true });
            columns.push({ field: '生产车间', title: '生产车间', width: 150 });
            columns.push({ field: '源单主内码', title: '源单主内码', width: 150 });
            columns.push({ field: '源单子内码', title: '源单子内码', width: 150 });
@@ -1740,11 +1758,12 @@
            option = {
                elem: '#mainTable'
                , toolbar: '#toolbarDemo'
                , height: 'full-120'
                , title: "计划报表"
                , height: 'full-175'
                , page: false
                , cellMinWidth: 90
                , cols: [columns]
                , limit: Number.MAX_VALUE//默认显示全部
                , limit: 5000//默认显示全部
                , contextmenu: {
                    // è¡¨æ ¼å†…容右键菜单配置
                    body: [
@@ -1828,6 +1847,8 @@
                    //})
                }
            }
            table.render(option);
        }
        //缺料分析表格数据
@@ -1864,7 +1885,7 @@
            $.ajax({
                url: GetWEBURL() + '/JIT_DayPlanPlatFormBill/JIT_DayPlanPlatFormBillList',
                type: "GET",
                async: false,
                async: true,
                data: { "sWhere": sWhere, "user": sessionStorage["HUserName"] },
                success: function (data1) {
                    if (data1.count == 1) {
@@ -1878,7 +1899,7 @@
                        }
                        layer.close(ajaxLoad);
                        if (HinterID_S.length > 0) {
                            get_Display_1(HinterID_S);
                            /*get_Display_1(HinterID_S);*/
                            get_Display_2(HinterID_S);
                        }
@@ -2072,7 +2093,7 @@
                , area: ['100%', '100%']
                , title: 'Excel导入'
                , shift: 0//弹出动画
                , content: '../生产计划平台/JIT_DayPlanPlatFormImport.html?OperationType=1'
                , content: '../三升排产/JIT_DayPlanPlatFormImport_SS_Sec.html?OperationType=1'
                , end: function () {
                    //刷新页面,
                    location.reload();
@@ -2085,7 +2106,7 @@
                type: 2
                , skin: 'layui-layer-rim' //加上边框
                , area: ['100%', '100%']
                , title: 'Excel导入'
                , title: '交期导入'
                , shift: 0//弹出动画
                , content: '../三升排产/JIT_DayPlanPlatFormImport_SS.html?OperationType=1'
                , end: function () {
@@ -2837,7 +2858,7 @@
            });
            //根据车间删除没有锁定的数据
            var sql = "delete from Sc_WorkBillSortBillSub where HMasterDate>=convert(varchar(10) ,DATEADD(DAY," + HPlanDay + ",GETDATE()),20) and HInterID in(select  HInterID from Sc_WorkBillSortBillMain where HWorkShopID=" + HWorkShopID + " and HLockOrder != 1 )";
            var sql = "delete from Sc_WorkBillSortBillSub where HMasterDate>=convert(varchar(10) ,DATEADD(DAY," + HPlanDay + ",GETDATE()),20) and HInterID in(select  HInterID from Sc_WorkBillSortBillMain where HWorkShopID=" + HWorkShopID + " and HLockOrder != 1 ) or HMasterDate < CAST(GETDATE() AS DATE)";
            $.ajax({
                url: GetWEBURL() + '/Gy_SOPBillList/UpDelSQL',
                type: "GET",
@@ -3605,13 +3626,21 @@
            layer.confirm('你确定要执行优先级操作吗?', {
                btn: ['确定', '取消'] //按钮
                , btn1: function (index, layero) {
                    // 1. èŽ·å–â€œç¡®å®šâ€æŒ‰é’®å¹¶æ·»åŠ åŠ è½½åŠ¨ç”»
                    var confirmBtn = $(layero).find('.layui-layer-btn0'); // ç¡®å®šæŒ‰é’®
                    confirmBtn.html('<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate"></i> å¤„理中...');
                    confirmBtn.prop('disabled', true);
                    var data = table.cache["mainTable"];
                    for (var i = 0; i < data.length; i++) {
                        data[i]["优先级"] = ((i + 1) * 5);
                    }
                    option.data = data;
                    table.render(option);
                    layer.close(index);
                    setTimeout(function () {
                        table.reload('mainTable', { data: data });
                        layer.close(index);
                    }, 5); // å»¶è¿Ÿæ‰§è¡Œç¡®ä¿æŒ‰é’®å›¾æ ‡æ¸²æŸ“完
                }
            })
        }
@@ -3621,6 +3650,10 @@
            layer.confirm('你确定要执行排序操作吗?', {
                btn: ['确定', '取消'] //按钮
                , btn1: function (index, layero) {
                    // 1. èŽ·å–â€œç¡®å®šâ€æŒ‰é’®å¹¶æ·»åŠ åŠ è½½åŠ¨ç”»
                    var confirmBtn = $(layero).find('.layui-layer-btn0'); // ç¡®å®šæŒ‰é’®
                    confirmBtn.html('<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate"></i> å¤„理中...');
                    confirmBtn.prop('disabled', true);
                    if (option.data.length != 0) {
                        for (var i = 0; i < option.data.length - 1; i++) {
                            for (var j = 0; j < option.data.length - i - 1; j++) {
@@ -3651,12 +3684,16 @@
                                }
                            }
                        }
                        table.render(option);
                        setTimeout(function () {
                            table.reload('mainTable', { data: option.data });
                            layer.close(index);
                        }, 5); // å»¶è¿Ÿæ‰§è¡Œç¡®ä¿æŒ‰é’®å›¾æ ‡æ¸²æŸ“完
                    }
                    else {
                        return layer.msg("无数据!")
                        layer.close(index);
                    }
                    layer.close(index);
                }
            })
            
@@ -3682,10 +3719,14 @@
                        var iframeWindow = window["layui-layer-iframe" + index];//获取弹框页面
                        var checkStatus = iframeWindow.layui.table.checkStatus("mainTable");//获取选中的数据
                        if (checkStatus.data.length != 1) {
                        if (checkStatus.data.length == 1) {
                            OptionData[0] = checkStatus.data[0];
                        } else if (checkStatus.data.length == 0) {
                            //等于0时清空生产资源
                            OptionData[0] = { "HItemID": 0, "生产资源名称": "" };
                        } else {
                            return layer.msg("请选择一条数据");
                        }
                        OptionData[0] = checkStatus.data[0];
                        layer.close(index);//关闭弹窗
                    }
                    , end: function () {
@@ -3775,7 +3816,7 @@
                    if (parseFloat(table.cache["mainTable"][i]["拆单数量"]) == 0) {
                        return layer.msg("第" + (i + 1) + "行,拆产数量有误,请重新输入!");
                    }
                    if (parseFloat(table.cache["mainTable"][i]["拆单数量"]) - parseFloat(table.cache["mainTable"][i]["拆单汇报数量"]) < parseFloat(table.cache["mainTable"][i]["日计划数量总量"])) { // - å·²æ±‡æŠ¥æ•°é‡
                    if (parseFloat(table.cache["mainTable"][i]["拆单数量"]) > parseFloat(table.cache["mainTable"][i]["计划数量"])) { // - å·²æ±‡æŠ¥æ•°é‡
                        return layer.msg("第" + (i + 1) + "行,排产数量超出订单数量!");
                    }
                    table.cache["mainTable"][i].LAY_TABLE_INDEX = i;