yusijie
2025-01-21 2e18256c630d0a12cf11e38f029b5d17c82950cc
缝纫排产
2个文件已修改
336 ■■■■■ 已修改文件
WebTM/views/生产管理/生产计划平台/JIT_DayPlanPlatForm_TK.html 323 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/系统管理/快捷方式自定义/Xt_UserFastMenu_IconSet.html 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/Éú²ú¹ÜÀí/Éú²ú¼Æ»®Æ½Ì¨/JIT_DayPlanPlatForm_TK.html
@@ -28,12 +28,14 @@
                            <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="btnCompleteSetAnalysis" id="btnCompleteSetAnalysis">齐套分析</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnTLYS" id="btnTLYS">提料运算</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnICMOBill" id="btnICMOBill">生产订单选单</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnICMOBill" id="btnICMOBill">生产订单选单</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnRoutEdit" id="btnRoutEdit">工艺路线</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnAddICMO" id="btnAddICMO">添加订单</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnProZZPC" id="btnProZZPC">组装排产</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnLockOrder" id="btnLockOrder">锁定工单</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnUnlockOrder" id="btnUnlockOrder">解锁工单</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnGetCompletionDate" id="btnGetCompletionDate">获取完工日期</button>
                            <button class="layui-btn layui-btn-normal" style="margin-left: 0px" type="button" lay-submit="" lay-filter="btnGetEarlyDate" id="btnGetEarlyDate">获取最早开工日期</button>
                        </div>
                        <div class="layui-collapse resizable-container">
                            <div class="layui-colla-item">
@@ -71,9 +73,7 @@
                                </div>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnSearch" id="btnSearch">查询</button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnReSearch" id="btnReSearch">重置</button>
                                <div class="layui-progress layui-progress-big" lay-showpercent="true" lay-filter="demo">
                                    <div class="layui-progress-bar layui-bg-primary" lay-percent="0%"></div>
                                </div>
                                <div class="layui-colla-content" style="padding: 0px; margin-left: 6%;">
                                    <div class="layui-row" style="margin-top:10px;">
                                        <div class="layui-inline">
@@ -251,7 +251,7 @@
                            <ul class="layui-tab-title">
                                <li class="layui-this">生产订单</li>
                                <li>缺料分析</li>
                            </ul>
                            </ul>
                            <div class="layui-tab-content">
                                <div class="layui-tab-item layui-show">
                                    <div class="layui-inline">
@@ -287,7 +287,7 @@
                                    <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnSearch_ICMO" id="btnSearch_ICMO">查询</button>
                                    <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnReSearch_ICMO" id="btnReSearch_ICMO">重置</button>
                                    <!--待排订单-->
                                    <table class="layui-hide" id="mainTable_ICMO" lay-filter="mainTable_ICMO"></table>
                                    <table class="layui-hide" id="mainTable_ICMO" lay-filter="mainTable_ICMO"></table>
                                </div>
                                <div class="layui-tab-item">
                                    <table class="layui-hide" id="mainTable_Material" lay-filter="mainTable_Material"></table>
@@ -297,7 +297,7 @@
                        <script type="text/html" id="toolbarDemo">
                            <div class="layui-btn-container">
                                <!--<button type="button" class="layui-btn layui-btn-sm" lay-event="set_BatchFill"><i class="layui-icon layui-icon-file-b"></i>批量填充</button>
    <button type="button" class="layui-btn layui-btn-sm" lay-event="set_ShowBill"><i class="layui-icon layui-icon-form"></i>编辑</button>-->
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_ShowBill"><i class="layui-icon layui-icon-form"></i>编辑</button>-->
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-CopyLine"><i class="layui-icon layui-icon-form"></i>复制行</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_DeleteBill"><i class="layui-icon layui-icon-delete"></i>删除行</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_MoverUp"><i class="layui-icon layui-icon-delete"></i>上移</button>
@@ -581,7 +581,7 @@
                //选操作工
                case 'set_Emp':
                    set_Emp(data);
                    break;
                    break;
                //查看工艺路线
                case 'set_Routing':
                    set_Routing();
@@ -730,7 +730,7 @@
        //添加生产订单
        form.on('submit(btnAddICMO)', function (data) {
            get_btnAddICMO();
        })
        })
        //准备
        form.on('submit(btnReady)', function (data) {
@@ -781,7 +781,7 @@
                    layer.close(index);
                }, 1000)
            }
        })
        })
        //工艺路线编辑
        form.on('submit(btnRoutEdit)', function (data) {
@@ -811,6 +811,20 @@
                });
            }
            //最早开工日期
            if (obj.event == 'HEarlyDate') {
                var field = $(this).data('field');
                laydate.render({
                    elem: this.firstChild
                    , show: true //直接显示
                    , closeStop: this
                    , done: function (nowDate) {
                        //时间选择完成,行数据更新
                        data[field] = nowDate;
                        obj.update(data);
                    }
                });
            }
            //#endregion
        });
@@ -835,7 +849,7 @@
                get_btnUnlock(HWorkShopID);
            }
        })
        //锁定工单
        form.on('submit(btnLockOrder)', function (data) {
            get_btnLockOrder();
@@ -845,6 +859,16 @@
        form.on('submit(btnUnlockOrder)', function (data) {
            get_btnUnlockOrder();
        })
        //获取完工日期
        form.on('submit(btnGetCompletionDate)', function (data) {
            get_btnGetCompletionDate();
        })
        //获取最早开工日期
        form.on('submit(btnGetCompletionDate)', function (data) {
            get_btnGetEarlyDate();
        })
        //#endregion
@@ -899,7 +923,7 @@
            var myDate = new Date();
            var oneday = 1000 * 60 * 60 * 24;
            columns.push({ type: 'checkbox', fixed: 'left', sort: true });
             columns.push({ type: 'checkbox', fixed: 'left', sort: true });
            columns.push({ type: 'numbers', field: '序号', title: '序号', sort: true, filter: true });
            columns.push({ field: '单据号', title: '单据号', hide: true, sort: true, filter: true});
            columns.push({ field: '销售订单号', title: '销售订单号', width: 150, sort: true, filter: true });
@@ -912,171 +936,192 @@
            columns.push({ field: '小时产能', title: '小时产能', width: 150, sort: true, edit: 'text', filter: true });
            columns.push({ field: '计划数量', title: '生产订单数量', width: 150, sort: true, filter: true });//0
            columns.push({ field: '日计划数量总量', title: '日计划数量总量', width: 150, sort: true, filter: true});//0
            columns.push({ field: '今日之前日计划数量', title: '今日之前日计划数量', width: 150, sort: true, filter: true });//0
            columns.push({ field: '计划开始日期', title: '预计开工日期', width: 150, templet: "<div>{{d.计划开始日期 ==null ?'':layui.util.toDateString(d.计划开始日期, 'yyyy-MM-dd')}}</div>", sort: true, filter: { type: 'date[yyyy-MM-dd HH:mm:ss]' } });
            columns.push({ field: '计划结束日期', title: '计划结束日期', width: 150, templet: "<div>{{d.计划结束日期 ==null ?'':layui.util.toDateString(d.计划结束日期, 'yyyy-MM-dd')}}</div>", event: "HPlanEndDate", sort: true, filter: { type: 'date[yyyy-MM-dd HH:mm:ss]' } });
            columns.push({ field: '订单可排数量', title: '订单可排数量', width: 150, filter: true});
            columns.push({ field: '拆单数量', title: '拆单数量', width: 150, edit: 'text', filter: true});
            columns.push({ field: '昨日数量', title: '昨日数量', filter: true});
            columns.push({ field: '优先级', title: '优先级', width: 150, edit: 'text', sort: true, filter: true });
            columns.push({ field: '生产资源', title: '生产资源', width: 150, edit: 'text', event: "HSourceID", filter: true });
            columns.push({ field: '最早开工日期', title: '最早开工日期', width: 150, templet: "<div>{{d.最早开工日期 ==null ?'':layui.util.toDateString(d.最早开工日期, 'yyyy-MM-dd')}}</div>", sort: true, filter: { type: 'date[yyyy-MM-dd HH:mm:ss]' } });
            columns.push({ field: '最早开工日期', title: '最早开工日期', width: 150, templet: "<div>{{d.最早开工日期 ==null ?'':layui.util.toDateString(d.最早开工日期, 'yyyy-MM-dd')}}</div>", event: "HEarlyDate", sort: true, filter: { type: 'date[yyyy-MM-dd HH:mm:ss]' } });
            columns.push({
                field: Format(myDate.getTime() + 0 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 0 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + (-3) * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + (-3) * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + (-3) * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + (-3) * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + (-3) * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + (-2) * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + (-2) * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + (-2) * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + (-2) * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + (-2) * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + (-1) * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + (-1) * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + (-1) * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + (-1) * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + (-1) * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 0 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 0 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 0 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 0 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 0 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 1 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 1 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 1 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 1 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 1 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 1 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 1 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 2 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 2 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 2 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 2 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 2 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 2 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 2 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 3 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 3 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 3 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 3 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 3 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 3 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 3 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 4 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 4 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 4 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 4 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 4 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 4 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 4 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 5 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 5 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 5 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 5 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 5 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 5 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 5 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 6 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 6 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 6 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 6 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 6 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 6 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 6 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 7 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 7 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 7 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 7 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 7 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 7 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 7 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 8 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 8 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 8 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 8 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 8 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 8 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 8 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 9 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 9 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 9 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 9 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 9 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 9 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 9 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 10 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 10 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 10 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 10 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 10 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 10 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 10 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 11 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 11 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 11 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 11 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 11 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 11 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 11 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 12 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 12 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 12 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 12 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 12 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 12 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 12 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 13 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 13 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 13 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 13 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 13 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 13 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 13 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 14 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 14 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 14 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 14 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 14 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 14 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 14 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 15 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 15 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 15 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 15 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 15 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 15 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 15 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 16 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 16 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 16 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 16 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 16 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 16 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 16 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 17 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 17 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 17 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 17 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 17 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 17 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 17 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 18 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 18 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 18 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 18 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 18 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 18 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 18 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 19 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 19 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 19 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 19 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 19 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 19 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 19 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 20 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 20 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 20 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 20 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 20 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 20 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 20 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 21 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 21 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 21 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 21 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 21 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 21 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 21 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 22 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 22 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 22 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 22 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 22 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 22 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 22 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 23 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 23 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 23 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 23 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 23 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 23 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 23 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 24 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 24 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 24 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 24 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 24 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 24 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 24 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 25 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 25 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 25 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 25 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 25 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 25 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 25 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 26 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 26 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 26 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 26 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 26 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 26 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 26 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 27 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 27 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 27 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 27 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 27 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 27 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 27 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 28 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 28 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 28 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 28 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 28 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 28 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 28 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 29 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 29 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 29 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 29 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 29 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 29 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 29 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            columns.push({
                field: Format(myDate.getTime() + 30 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 30 * oneday, 'MM.dd'), edit: 'text', width: 70, filter: true, templet: function (d) {
                field: Format(myDate.getTime() + 30 * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + 30 * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                    return DayColor(d[Format(myDate.getTime() + 30 * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + 30 * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + 30 * oneday, 'yyyy-MM-dd'));
                }
            })//0
            for (var i = 31; i < 180;i++) {
                columns.push({
                    field: Format(myDate.getTime() + i * oneday, 'yyyy-MM-dd'), title: Format(myDate.getTime() + i * oneday, 'MM.dd'), edit: 'text', width: 90, filter: true, templet: function (d) {
                        return DayColor(d[Format(myDate.getTime() + i * oneday, 'yyyy/MM/dd')], d[Format(myDate.getTime() + i * oneday, 'yyyy-MM-dd')], d, Format(myDate.getTime() + i * oneday, 'yyyy-MM-dd'));
                    }
                })//0
            }
            columns.push({ field: '生产订单明细行号', title: '生产订单明细行号', width: 150, sort: true, filter: true });
            columns.push({ field: 'T31', title: 'T31', width: 70, filter: true});//0
            columns.push({ field: '订单类型', title: '订单类型', width: 150, sort: true, filter: true });
@@ -1111,6 +1156,10 @@
            columns.push({ field: 'HEmpID', title: 'HEmpID', hide: true });
            columns.push({ field: '拆单汇报数量', title: '拆单汇报数量', width: 150, edit: 'text', sort: true });
            columns.push({ field: '销售订单数量', title: '销售订单数量', width: 150, sort: true, filter: true });//0
            columns.push({ field: '今日之前日计划数量', title: '今日之前日计划数量', width: 150, sort: true, filter: true });//0
            columns.push({ field: '计划开始日期', title: '预计开工日期', width: 150, templet: "<div>{{d.计划开始日期 ==null ?'':layui.util.toDateString(d.计划开始日期, 'yyyy-MM-dd')}}</div>", sort: true, filter: { type: 'date[yyyy-MM-dd HH:mm:ss]' } });
            columns.push({ field: '计划结束日期', title: '计划结束日期', width: 150, templet: "<div>{{d.计划结束日期 ==null ?'':layui.util.toDateString(d.计划结束日期, 'yyyy-MM-dd')}}</div>", event: "HPlanEndDate", sort: true, filter: { type: 'date[yyyy-MM-dd HH:mm:ss]' } });
            columns.push({ field: '销售订单审核日期', title: '销售订单审核日期', width: 150, templet: "<div>{{d.销售订单审核日期 ==null ?'':layui.util.toDateString(d.销售订单审核日期, 'yyyy-MM-dd')}}</div>",sort: true, filter: { type: 'date[yyyy-MM-dd HH:mm:ss]' } });
            columns.push({ field: '操作工', title: '操作工', width: 150, edit: 'text', event: "HEmpID" });
            columns.push({ fixed: 'right', title: '操作', toolbar: '#barDemo' });
            option_columns = columns;
@@ -1124,7 +1173,7 @@
                , limit: 500//默认显示全部
                , limits: [500,1000,1500,3000,5000,10000,20000]
                , done: function (res, page, count) {
                    $('.layui-table thead').on('click', 'th', function () {
                        // èŽ·å–ç‚¹å‡»çš„è¡¨å¤´çš„ field å€¼
                        var field = $(this).data('field');
@@ -1164,7 +1213,7 @@
                    //for (var i = 0; i < HBackgroundColorIndex.length;i++) {
                    //    $("tr[data-index='" + i + "']").attr({ "style": "background:#F74848;color:black;" });
                    //}
                    //}
                    soulTable.render(this)
                }
            }
@@ -1686,7 +1735,7 @@
            $("#ColName2").val("0");
            $("#Comparator2").val("0");
            form.render('select');
            sWhere = "";
            sWhere = "";
        }
        //重置
@@ -1799,7 +1848,7 @@
                , btn2: function (index, layero) { }
            })
        }
        //添加生产订单
        function get_btnAddICMO() {
            var HDeptID = $("#HWorkShopID").val() == "" ? 0 : $("#HWorkShopID").val();
@@ -2361,7 +2410,7 @@
        }
        //组装排产
        function get_btnProZZPC(HWorkShopID) {
        function get_btnProZZPC(HWorkShopID) {
            var JDTLen = 0;
            var lMainID = 0;
            var sICMOBillNo = "";
@@ -2389,7 +2438,7 @@
            var HDelData = 0;
            JDTLen = (100 / option.data.length).toFixed(2);
            var HJDLen = 0;
            var HReportQty = 0;
            var HReportQty = 0;
            //如果锁定计划,则不需要再排程
            //查询本车间是否有锁定计划的数据
@@ -2449,8 +2498,10 @@
            //get_FastQuery(2);
            //为防止用户手动篡改优先级,重新根据优先级排序数组
            option.data.sort(function (a, b) { return a.优先级 - b.优先级 });
            option.data.sort(function (a, b) {
                return a.优先级 - b.优先级
            });
            window.HPCDate = Format(new Date().toLocaleDateString().replaceAll('/', '-'), 'yyyy/MM/dd') //当前排产日期
            window.HArrIndex = []; //用于存储因为当前日期不满足最早开工日期而未能排产的订单下标
            window.HArrIndex_PC = [];//用于存储已经排产的订单下标
@@ -2458,29 +2509,28 @@
            var HDataLen = option.data.length;//总排产订单长度
            var HProgress = parseInt(100 / HDataLen);
            var HCount = 0;
            //按任务单优先级 å¾ªçޝ
            for (var i = 0; i < HDataLen; i++) {
                var timer = setInterval(function () {
                    if ((i + 1) * HProgress > 100) {
                        clearInterval(timer);
                    }
                    element.progress('demo', Math.round(Math.random() * 100) + '%')
                },  500);
            for (var i = 0; i < HDataLen; i++) {
                HCount++;
                if (HCount > 50000) {
                    break;
                }
                var old_date = new Date();
                //element.progress('demo', (i + 1) * HProgress + '%')
                //判断数组长度是否发生变化,是则重置数组长度
                if (HDataLen != option.data.length) {
                    HDataLen = option.data.length;
                    if (i == option.data.length) {
                        i = option.data.length - 1;
                    }
                }
                //console.log("1.开始排产第" + (i + 1) + "行订单:" + option.data[i].生产订单号 + ",当前排产日期:" + HPCDate + ",最早开工日期:" + option.data[i].最早开工日期);
                    }
                }
                console.log("1.开始排产第" + (i + 1) + "行订单:" + option.data[i].生产订单号 + ",当前排产日期:" + HPCDate + ",最早开工日期:" + option.data[i].最早开工日期);
                //排产最后一笔订单(若本次为最后一笔订单排产,但当前排产日期还不满足最早开工日期,则当前日期进行累加,直到满足最早开工日期为止)
                if (HArrIndex_PC.length == option.data.length - 1 && HArrIndex.length > 0 && Format(option.data[HArrIndex[0]].最早开工日期, 'yyyy/MM/dd') > HPCDate) {
                    for (var k = 0; k < 100; k++) {
                        //排产日期往后推一天
                        //排产日期往后推一天
                        var dateTime = new Date(HPCDate);
                        HPCDate = Format(new Date(dateTime.setDate(dateTime.getDate() + 1)), 'yyyy/MM/dd');
                        //当前排产日期满足最早开工日期,终止累加
@@ -2491,16 +2541,16 @@
                }
                //判断是否有未排产的订单,若有则补排
                if (HArrIndex.length > 0 && HIsPriority == false) {//(HIsPriority == false || HArrIndex.length >= 2)
               if (HArrIndex.length > 0 && (HIsPriority == false || HArrIndex.length + HArrIndex_PC.length == option.data.length)){//(HIsPriority == false || HArrIndex.length >= 2)
                    //获取之前排产时未能排产的订单
                    i = HArrIndex[0];
                    var index = 0;
                    //如果存在多个之前未能排产的订单,则看哪个订单能够优先满足最早开工日期,优先排产
                    if (HArrIndex.length > 1) {
                        //排产日期往后推一天
                        //排产日期往后推一天
                        var dateTime = new Date(HPCDate);
                        HPCDate = Format(new Date(dateTime.setDate(dateTime.getDate() + 1)), 'yyyy/MM/dd');
                        HPCDate = Format(new Date(dateTime.setDate(dateTime.getDate() + 1)), 'yyyy/MM/dd');
                        for (var j = 0; j < HArrIndex.length; j++) {
                            //匹配到满足最早开工日期的订单,把这个订单优先拿去排产,并终止循环匹配
                            if (Format(option.data[HArrIndex[j]].最早开工日期, 'yyyy/MM/dd') <= HPCDate) {
@@ -2516,7 +2566,7 @@
                    HArrIndex.splice(index, 1)
                }
                //如果当前订单的最早开工日期不满足当前排产日期(最早开工日期 > å½“前排产日期),则跳出当前订单的排产,先排下一个订单
                //如果当前订单的最早开工日期不满足当前排产日期(最早开工日期 > å½“前排产日期),则跳出当前订单的排产,先排下一个订单
                if (Format(option.data[i].最早开工日期, 'yyyy/MM/dd') > HPCDate) {
                    if (HArrIndex.indexOf(i) == -1) {
@@ -2527,7 +2577,6 @@
                    if (HArrIndex.length > 0 && i == HDataLen - 1) {
                        HDataLen = HDataLen + 1;
                    }
                    continue;
                }
                //如果当前行订单已经排产过,则跳出当前订单排产,接着下一行订单的排产
@@ -2536,6 +2585,7 @@
                }
                //记录已经排产的订单下标
                HArrIndex_PC.push(i);
                //console.log("2.开始排产第" + (i + 1) + "行订单:" + option.data[i].生产订单号 + ",当前排产日期:" + HPCDate + ",最早开工日期:" + option.data[i].最早开工日期);
                //如果本次最后一笔订单排产,但还存在因最早开工日期不满足的而排产不了的订单则加长循环长度
@@ -2577,7 +2627,7 @@
                }
                else {
                    sLeftProdTimes = iLeftQty / sWorkQty;
                }
                }
                //若本任务单已有安排资源(上次排程或者手工排程) åˆ™ä¸å†å¯»æ‰¾èµ„源,直接排程
                if (option.data[i]["HSourceID"] != 0 && option.data[i]["生产资源"] != "") {
                    //获取该生产资源的剩余工时进行排程。
@@ -2603,9 +2653,9 @@
                    });
                }
                else //没有资源则 è‡ªåŠ¨æ‰¾åˆ°èµ„æº
                {
                {
                    //查询生产资源的剩余工时进行排程。
                    var sql = "exec h_p_Sc_ICMOGetWorkSource_TK " + lMaterID + ",'" + dEndDate + "'," + sProdTimes;
                    var sql = "exec h_p_Sc_ICMOGetWorkSource_TK " + lMaterID + ",'" + dEndDate + "'," + sProdTimes;
                    $.ajax({
                        url: GetWEBURL() + '/Gy_SOPBillList/WindowPrintList',
                        type: "GET",
@@ -2613,7 +2663,7 @@
                        data: { "sWhere": sql },
                        success: function (data1) {
                            if (data1.count == 1) {
                                ds = data1.data
                                ds = data1.data
                            } else {
                                layer.alert(data1.code + data1.Message, { icon: 5 });
                            }
@@ -2669,13 +2719,11 @@
                                });
                                if (dsSub == null || dsSub.length == 0) {
                                    console.log("i值1:::" + (i + 1));
                                    get_HFData(1, i);
                                    continue;//如果没有剩余则 æ‰§è¡Œä¸‹ä¸€ä¸ªç”Ÿäº§è®¢å•
                                }
                                if (dsSub != null)//不加班排程
                                {
                                    console.log("i值2:::" + (i + 1));
                                    iRow = i + 1;
                                    //将数据排到网格中
                                    SetInfoToGrid(option, dsSub, null, (iRow - 1), iLeftQty, sWorkQty, false, HPlanDay);
@@ -2689,8 +2737,16 @@
                        } else {
                            get_HFData(1, i);
                        }
                    }
                }
                    }
                }
                var new_date = new Date();
                var difftime = (new_date - old_date) / 1000; //计算时间差,并把毫秒转换成秒
                var days = parseInt(difftime / 86400); // å¤©  24*60*60*1000
                var hours = parseInt(difftime / 3600) - 24 * days;    // å°æ—¶ 60*60 æ€»å°æ—¶æ•°-过去的小时数=现在的小时数
                var minutes = parseInt(difftime % 3600 / 60); // åˆ†é’Ÿ -(day*24) ä»¥60秒为一整份 å–ä½™ å‰©ä¸‹ç§’æ•° ç§’æ•°/60 å°±æ˜¯åˆ†é’Ÿæ•°
                var seconds = parseInt(difftime % 60);  // ä»¥60秒为一整份 å–ä½™ å‰©ä¸‹ç§’æ•°
                console.log("时间差是: " + days + "天, " + hours + "小时, " + minutes + "分钟, " + seconds + "秒");
            }
            table.render(option);
            get_FastQuery(2);
@@ -2713,19 +2769,25 @@
            //判断当前生产资源已经排产到哪个日期了,当前生产资源还有产能的最近日期与当前订单的排产日期不符,则重置当前排产日期
            if (Format(ds[0]["日期"], 'yyyy/MM/dd') != Format(HPCDate, 'yyyy/MM/dd')) {
                //当前生产资源剩余产能最近的日期满足最早开工日期,则重置排产日期为当前生产资源剩余产能最近的日期
                if (Format(ds[0]["日期"], 'yyyy/MM/dd') >= Format(grd.data[iRow]['最早开工日期'], 'yyyy/MM/dd') || HArrIndex_PC.length == option.data.length) {
                    HPCDate = Format(ds[0]["日期"], 'yyyy/MM/dd');
                if (Format(ds[0]["日期"], 'yyyy/MM/dd') >= Format(grd.data[iRow]['最早开工日期'], 'yyyy/MM/dd') || HArrIndex_PC.length == option.data.length || HArrIndex.length + HArrIndex_PC.length == option.data.length) {
                    if (HArrIndex.length + HArrIndex_PC.length == option.data.length) {
                        HPCDate = Format(grd.data[iRow]['最早开工日期'], 'yyyy/MM/dd');
                    } else {
                        HPCDate = Format(ds[0]["日期"], 'yyyy/MM/dd');
                    }
                    //如果是最后一笔订单在排产,则重置排产日期为最早开工日期(下方会判断,不会超产能排产)
                    if (HArrIndex_PC.length == option.data.length) {
                        HPCDate = Format(grd.data[iRow]['最早开工日期'], 'yyyy/MM/dd');
                    }
                } else { //当前日期不符合订单的最早开工日期,则把订单重新加入待排产列表
                    //将下标加入未排产订单数组
                    if (HArrIndex.indexOf(iRow) == -1) {
                        HArrIndex.push(iRow);
                    }
                    //从已排产订单数组中移除本次订单下标
                    var index = HArrIndex_PC.indexOf(iRow);
                    if (index !== -1) {
@@ -2846,12 +2908,12 @@
            else {
                for (var i = 0; i < ds.length; i++) {
                    //找到对应的列
                    for (var j = 22; j < 53; j++) {
                    for (var j = 22; j < 201; j++) {
                        //如果订单的剩余排产数量大于0,则接着进行排产
                        if (sLeftQty > 0) {
                            //排产日期满足最早开工日期才能进行排产
                            if (ds[i]["日期"] == grd.cols[0][j].field && Format(grd.cols[0][j].field, 'yyyy/MM/dd') >= Format(grd.data[iRow]['最早开工日期'], 'yyyy/MM/dd')) {
                                //如果时间被 ä¸Šé“余量占用 åˆ™ è·³è¿‡
                                b = false;
                                //if (dsPre != null && dsPre.Tables[0].Rows.Count > 0) {
@@ -2915,7 +2977,7 @@
                                            dayWorkQty = parseInt(Numzu[0]);
                                        }
                                        //订单剩余未排产数量 > å½“日剩余产能
                                        if (sLeftQty > dayWorkQty) {
                                        if (sLeftQty > dayWorkQty) {
                                            grd.data[iRow][grd.cols[0][j].field] = dayWorkQty;
                                            sLeftQty = sLeftQty - dayWorkQty;
                                            //oSub = new ClsGridValues();
@@ -2955,7 +3017,6 @@
                }
            }
            console.log("i值3:::" + (iRow + 1));
        }
        //查询生产订单
@@ -3163,8 +3224,29 @@
        function set_Priority() {
            var data = table.cache["mainTable"];
            //根据计划开工日期排序数组
            data.sort(function (a, b) { return Format(a.计划开始日期, 'yyyy/MM/dd') - Format(b.计划开始日期, 'yyyy/MM/dd') });
            if ($("#HWorkShopIDName").val().indexOf("组装") !== -1) {
                //根据计划开工日期排序数组
                data.sort(function (a, b) {
                    // é»˜è®¤æ ¹æ®æœ€æ—©å¼€å·¥æ—¥æœŸæŽ’序,最早开工日期相同则按照销售订单审核日期排序
                    if (Format(a.最早开工日期, 'yyyy/MM/dd') == Format(b.最早开工日期, 'yyyy/MM/dd')) {
                        return Format(a.销售订单审核日期, 'yyyy/MM/dd') - Format(b.销售订单审核日期, 'yyyy/MM/dd')
                    }
                    return Format(a.最早开工日期, 'yyyy/MM/dd') - Format(b.最早开工日期, 'yyyy/MM/dd')
                });
            } else {
                //根据计划结束日期排序数组
                data.sort(function (a, b) {
                    // é»˜è®¤æ ¹æ®è®¡åˆ’结束日期排序,计划结束日期相同则按照销售订单审核日期排序
                    if (Format(a.计划结束日期, 'yyyy/MM/dd') == Format(b.计划结束日期, 'yyyy/MM/dd')) {
                        return Format(a.销售订单审核日期, 'yyyy/MM/dd') - Format(b.销售订单审核日期, 'yyyy/MM/dd')
                    }
                    return Format(a.计划结束日期, 'yyyy/MM/dd') - Format(b.计划结束日期, 'yyyy/MM/dd')
                });
            }
            for (var i = 0; i < data.length; i++) {
                data[i]["优先级"] = ((i + 1) * 5);
@@ -3266,7 +3348,7 @@
                return layer.msg("请选择数据!")
            }
        }
        //选操作工
        function set_Emp(data) {
            if (data != 0) {
@@ -3372,7 +3454,7 @@
            var sSubStr = "["+JSON.stringify(num)+"]";
            var sMainSub = sSubStr + "&和" + sessionStorage["HUserName"];
            var index = layer.load();
            //var index = layer.load();
            $.ajax({
                type: "POST",
                url: GetWEBURL() + "/JIT_DayPlanPlatFormBill/JIT_DayPlanPlatFormBill_btnSave",
@@ -3381,20 +3463,19 @@
                dataType: "json",
                success: function (data) {
                    if (data.count == 1) {
                        layer.msg("保存成功");
                        layer.close(index);
                        //layer.msg("保存成功");
                        //layer.close(index);
                    }
                    else {
                        layer.close(index);
                        //layer.close(index);
                        layer.msg(data.Message, { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                    }
                },
                error: function (err) {
                    layer.close(index);
                    //layer.close(index);
                    layer.msg("错误:" + err, { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                }
            });
            console.log("i值4:::");
        }
        //行内快捷键
@@ -3584,7 +3665,7 @@
                });
            }
        }
        //锁定工单
        function get_btnLockOrder() {
            var checkStatus = table.checkStatus('mainTable')
@@ -3621,7 +3702,7 @@
                layer.msg('请选择你要锁定的工单!');
            }
        }
        //解锁工单
        function get_btnUnlockOrder() {
            var checkStatus = table.checkStatus('mainTable')
@@ -3659,6 +3740,48 @@
            }
        }
        //获取完工日期
        function get_btnGetCompletionDate() {
            var HDeptID = $("#HWorkShopID").val() == "" ? 0 : $("#HWorkShopID").val();
            $.ajax({
                url: GetWEBURL() + '/JIT_DayPlanPlatFormBill/GetICMOCompletionDate',
                type: "GET",
                data: { "HDeptID": HDeptID },
                success: function (data1) {
                    if (data1.count == 1) {
                        //刷新表格数据
                        get_Display();
                    } else {
                        layer.alert(data1.Message, { icon: 5 });
                    }
                }, error: function () {
                    layer.alert("接口请求失败!", { icon: 5 });
                }
            });
        }
        //获取最早开工日期
        function get_btnGetEarlyDate() {
            var HDeptID = $("#HWorkShopID").val() == "" ? 0 : $("#HWorkShopID").val();
            $.ajax({
                url: GetWEBURL() + '/JIT_DayPlanPlatFormBill/GetICMOEarlyDate',
                type: "GET",
                data: { "HDeptID": HDeptID },
                success: function (data1) {
                    if (data1.count == 1) {
                        //刷新表格数据
                        get_Display();
                    } else {
                        layer.alert(data1.Message, { icon: 5 });
                    }
                }, error: function () {
                    layer.alert("接口请求失败!", { icon: 5 });
                }
            });
        }
        //查询未排产的生产订单
        function get_Display2(sWhere_ICMO) {
            var ajaxLoad = layer.load();
WebTM/views/ϵͳ¹ÜÀí/¿ì½Ý·½Ê½×Ô¶¨Òå/Xt_UserFastMenu_IconSet.html
@@ -199,13 +199,16 @@
                    table.render(option);
                    //页面多选框 é‡æ–°æ¸²æŸ“
                    for (var i = 0; i < IconList.length; i++) {
                        if (IconList[i] == data1.data[0]["HPicNum"]) {
                            $("#selected" + (i + 1)).attr("checked", true);
                            table.cache["mainTable"][i].selected = true;
                            break;
                    if (data1.data.length > 0) {
                        for (var i = 0; i < IconList.length; i++) {
                            if (IconList[i] == data1.data[0]["HPicNum"]) {
                                $("#selected" + (i + 1)).attr("checked", true);
                                table.cache["mainTable"][i].selected = true;
                                break;
                            }
                        }
                    }
                    form.render('checkbox');
                    layer.close(ajaxLoad);
                }, error: function () {