llj
2026-02-05 555f562385913f405eeafac19b89a942cfe52cba
生产领料单,生产退料单
2个文件已修改
376 ■■■■■ 已修改文件
WebTM/views/领料发货/生产领料/Kf_ProductReceiveMaterialBillEdit.html 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/领料发货/领料出库/Kf_MateOutBackBillEdit.html 223 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/ÁìÁÏ·¢»õ/Éú²úÁìÁÏ/Kf_ProductReceiveMaterialBillEdit.html
@@ -68,7 +68,16 @@
                                            <div class="layui-input-inline">
                                                <input type="text" class="layui-input" name="HBillNo" id="HBillNo" style="background-color:#efefef4d;">
                                                <input type="hidden" name="HInterID" id="HInterID" value="0">
                                                <input type="hidden" name="HBillSubType" id="HBillSubType" value="">
                                                <!--<input type="hidden" name="HBillSubType" id="HBillSubType" value="">-->
                                            </div>
                                        </div>
                                        <div class="layui-inline">
                                            <label class="layui-form-label">单据类型</label>
                                            <div class="layui-input-inline">
                                                <select name="HBillSubType" lay-filter="HBillSubType" id="HBillSubType">
                                                    <option value="标准领料" selected="selected">标准领料</option>
                                                    <option value="白坯领料" >白坯领料</option>
                                                </select>
                                            </div>
                                        </div>
                                        <div class="layui-inline">
@@ -100,6 +109,26 @@
                                            </div>
                                        </div>
                                    </div>
                                    <div class="layui-inline">
                                        <label class="layui-form-label">源单类型</label>
                                        <div class="layui-input-inline">
                                            <select name="HSourceBillType" lay-filter="HSourceBillType" id="HSourceBillType">
                                                <option value="3710" selected="selected">生产订单</option>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="layui-inline">
                                        <label class="layui-form-label">选单号</label>
                                        <div class="layui-input-inline">
                                            <input type="text" name="HSourceBillNo" id="HSourceBillNo" readonly class="layui-input" value="" style="float:left;width:150px;">
                                            <input type="hidden" name="HSourceInterID" id="HSourceInterID" class="layui-input" value="" style="float:left;width:150px;">
                                            <input type="hidden" name="HSourceEntryID" id="HSourceEntryID" class="layui-input" value="0" style="float:left;width:150px;">
                                            <button type="button" lay-submit="" class="layui-btn" lay-filter="HMainSource" style="width:40px;">
                                                <i class="layui-icon layui-icon-search layuiadmin-button-btn" style="margin-left:-9px;"></i>
                                            </button>
                                        </div>
                                    </div>
                                </div>
                                    <div class="layui-row">
                                        <div class="layui-inline">
                                            <label class="layui-form-label">仓管</label>
@@ -377,7 +406,11 @@
                get_checkDept();
            });
            //#endregion
            //#region é€‰æ‹©æºå•按钮
            form.on('submit(HMainSource)', function () {
                get_checkMainSource();
            });
            //#endregion
            //#region é€‰æ‹©ä¸»ç®¡æŒ‰é’®
            form.on('submit(HManagerList)', function () {
                get_checkManager();
@@ -520,7 +553,122 @@
                }
            }
            //#endregion
            //#region é€‰æ‹©æºå•
            function get_checkMainSource() {
                var HOrgID = $("#HOrgID").val();
                var url = "../../生产管理/生产任务单/Sc_ICMOBillList.html?openType=2&HOrgID=" + HOrgID;
                layer.open({
                    type: 2//弹窗类型
                    , skin: 'layui-layer-rim' //加上边框
                    , area: ['90%', '90%']//大小
                    , title: '源单列表'//标题
                    , shift: 2//弹出动画
                    , content: [url, '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('请选择数据');
                        }
                        $("#HSourceInterID").val(checkStatus.data[0]["hmainid"]);
                        $("#HSourceEntryID").val(checkStatus.data[0]["hsubid"]);
                        $("#HSourceBillNo").val(checkStatus.data[0]["单据号"]);
                        $("#HSourceBillType").val(checkStatus.data[0]["HBillType"]);
                        appendInitByICMOBill(checkStatus.data);
                        layer.close(index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                    }
                    , btn2: function (index, layero) { }
                })
            }
            //#endregion
            //#region é€‰æ‹©æºå•-生产订单
            function appendInitByICMOBill(selectedData) {
                if (!selectedData || selectedData.length === 0) {
                    layer.msg('未选择有效数据');
                    return;
                }
                // èŽ·å–å½“å‰è¡¨æ ¼æ•°æ®
                var currentData = table.cache["mainTable"] || [];
                var firstRowIsEmpty = true;
                if (currentData.length > 0) {
                    var firstRow = currentData[0];
                    if (firstRow.HMaterID !== "0" && firstRow.HMaterID !== 0) {
                        firstRowIsEmpty = false;
                    }
                    if (firstRow["物料代码"] && firstRow["物料代码"].trim() !== "") {
                        firstRowIsEmpty = false;
                    }
                    if (firstRow["物料名称"] && firstRow["物料名称"].trim() !== "") {
                        firstRowIsEmpty = false;
                    }
                }
                if (firstRowIsEmpty) {
                    currentData = [];
                    table.cache["mainTable"] = currentData;
                }
                for (var i = 0; i < selectedData.length; i++) {
                    var rowData = selectedData[i];
                    if (!rowData.HMaterID || rowData.HMaterID === 0) {
                        continue;
                    }
                    var newRow = {
                        "HMaterID": rowData.HMaterID || rowData["hsubid"] || "0",
                        "物料代码": rowData["产品代码"] || rowData["物料代码"] || "",
                        "物料名称": rowData["产品名称"] || rowData["物料名称"] || "",
                        "规格型号": rowData["规格型号"] || "",
                        "HUnitID": rowData.HUnitID || "0",
                        "计量单位": rowData["计量单位"] || "",
                        "HQtyMust": parseFloat(rowData["生产任务单数量"] || rowData["计划生产数量"] || 0),
                        "HQty": parseFloat(rowData["生产任务单数量"] || rowData["计划生产数量"] || 0),
                        "HWHID": "0",
                        "发货仓库": "",
                        "HRemark": rowData["底部备注"] || rowData["表头备注"] || "",
                        // æºå•信息
                        "HSourceInterID": rowData.hmainid || rowData["hmainid(1)"] || "0",
                        "HSourceEntryID": rowData.hsubid || rowData["hsubid(1)"] || "0",
                        "HSourceBillNo": rowData["单据号"] || "",
                        "HSourceBillType": "3710",
                        // å…¶ä»–字段保持默认
                        "HRelationQty": parseFloat(rowData["未关联数量"] || rowData["生产任务单数量"] || 0),
                        "HRelationMoney": "0",
                        'HSPID': "0",
                        'HSPName': "",
                        'HSPGroupID': "0",
                        "HSPGroupName": "",
                        'HSCWHID': "0",
                        'HSCWHName': "",
                        'HSCSPID': "0",
                        'HSCSPName': "",
                        'HBatchNo': rowData["批号"] || rowData["批次"] || "",
                        'HPropertyID': rowData.HAuxPropID || "0",
                        'HPropertyName': rowData["辅助属性"] || "",
                        'HSecUnitID': "0",
                        'HSecUnitName': ""
                    };
                    currentData.push(newRow);
                }
                table.cache["mainTable"] = currentData;
                option.data = currentData;
                table.render(option);
                setTimeout(function () {
                    var $tableBody = $('#mainTable').next('.layui-table-view').find('.layui-table-body');
                    $tableBody.scrollTop($tableBody[0].scrollHeight);
                }, 100);
                layer.msg('成功添加' + selectedData.length + '行数据');
            }
            //#region è¡Œå†…事件
            table.on('tool(mainTable)', function (obj) {
                set_GridDelete(obj);   //行内删除
@@ -935,6 +1083,7 @@
                                "HBillNo": data.单据号
                                , "HDate": formatDate(data.日期)
                                , "HDeptID": data.HDeptID
                                , "HBillSubType": data.HBillSubType
                                , "HDeptName": data.部门
                                , "HEmpID": data.HEmpID
                                , "HEmpName": data.业务员
WebTM/views/ÁìÁÏ·¢»õ/ÁìÁϳö¿â/Kf_MateOutBackBillEdit.html
@@ -57,6 +57,15 @@
                                                </div>
                                            </div>
                                            <div class="layui-inline">
                                                <label class="layui-form-label">单据类型</label>
                                                <div class="layui-input-inline">
                                                    <select name="HBillSubType" lay-filter="HBillSubType" id="HBillSubType">
                                                        <option value="标准领料" selected="selected">标准领料</option>
                                                        <option value="白坯领料">白坯领料</option>
                                                    </select>
                                                </div>
                                            </div>
                                            <div class="layui-inline">
                                                <label class="layui-form-label">日期</label>
                                                <div class="layui-input-inline">
                                                    <input class="layui-input" name="HDate" id="HDate" autocomplete="off" model="datetime" dateFormat="yyyy-MM-dd" placeholder="yyyy-MM-dd">
@@ -121,6 +130,7 @@
                                                <div class="layui-input-inline">
                                                    <select name="HSourceBillType" lay-filter="HSourceBillType" id="HSourceBillType">
                                                        <option value="3720" selected="selected">生产用料清单</option>
                                                        <option value="3710">生产订单</option>
                                                    </select>
                                                </div>
                                            </div>
@@ -548,42 +558,179 @@
            });
            //表头源单弹窗
            form.on('submit(HSourceInterList)', function () {
                //页面层-自定义
                layer.open({
                    type: 2,
                    skin: 'layui-layer-rim', //加上边框
                    title: '生产用料列表',
                    closeBtn: 1,
                    shift: 2,
                    area: ['80%', '80%'],
                    maxmin: true,
                    content: ['../../生产管理/生产投料单/Sc_PPBomBillList.html', 'yes'],
                    btn: ['确定', '取消']
                    , btn1: function (index, layero) {
                var sourceBillType = $("#HSourceBillType").val();
                var url = '';
                var title = '';
                        //按钮【按钮一】的回调
                        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('请选择数据');
                if (sourceBillType == '3720') {
                    url = '../../生产管理/生产投料单/Sc_PPBomBillList.html';
                    title = '生产用料列表';
                    layer.open({
                        type: 2,
                        skin: 'layui-layer-rim', //加上边框
                        title: title,
                        closeBtn: 1,
                        shift: 2,
                        area: ['80%', '80%'],
                        maxmin: true,
                        content: [url, '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('请选择数据');
                            }
                            $("#HSourceBillNo").val(checkStatus.data[0].单据号);
                            $("#HSourceInterID").val(checkStatus.data[0].hmainid);
                            layer.close(layer.index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                        }
                        $("#HSourceBillNo").val(checkStatus.data[0].单据号);
                        $("#HSourceInterID").val(checkStatus.data[0].hmainid);
                        layer.close(layer.index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                    }
                    , btn2: function (index, layero) {
                        //按钮【按钮二】的回调
                        //return false å¼€å¯è¯¥ä»£ç å¯ç¦æ­¢ç‚¹å‡»è¯¥æŒ‰é’®å…³é—­
                    },
                    end: function () {
                        , btn2: function (index, layero) {
                            //按钮【按钮二】的回调
                            //return false å¼€å¯è¯¥ä»£ç å¯ç¦æ­¢ç‚¹å‡»è¯¥æŒ‰é’®å…³é—­
                        },
                        end: function () {
                        },
                        success: function (layero, index) {
                        }
                    });
                }
                else if (sourceBillType == '3710') {
                    // ç”Ÿäº§è®¢å•(多选追加到子表)
                    url = '../../生产管理/生产任务单/Sc_ICMOBillList.html?openType=2';
                    title = '生产订单列表';
                    },
                    success: function (layero, index) {
                    layer.open({
                        type: 2,
                        skin: 'layui-layer-rim', //加上边框
                        title: title,
                        closeBtn: 1,
                        shift: 2,
                        area: ['90%', '90%'],
                        maxmin: true,
                        content: [url, '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('请选择数据');
                            }
                    }
                });
                            // æ¸…空表头源单信息(因为是按行追加)
                            $("#HSourceBillNo").val(checkStatus.data[0].单据号);
                            $("#HSourceInterID").val(checkStatus.data[0].hmainid);
                            // è°ƒç”¨å‡½æ•°å°†é€‰ä¸­çš„æ•°æ®è¿½åŠ åˆ°å­è¡¨
                            appendICMODataToTable(checkStatus.data);
                            layer.close(layer.index); //关闭弹窗
                        }
                        , btn2: function (index, layero) {
                            //按钮【按钮二】的回调
                            //return false å¼€å¯è¯¥ä»£ç å¯ç¦æ­¢ç‚¹å‡»è¯¥æŒ‰é’®å…³é—­
                        },
                        end: function () {
                        },
                        success: function (layero, index) {
                        }
                    });
                }
                else {
                    layer.msg('未知的源单类型');
                }
            });
            //#region ç”Ÿäº§è®¢å•数据追加到子表
            function appendICMODataToTable(selectedData) {
                if (!selectedData || selectedData.length === 0) {
                    layer.msg('未选择有效数据');
                    return;
                }
                // èŽ·å–å½“å‰è¡¨æ ¼æ•°æ®
                var currentData = table.cache["mainTable"] || [];
                // æ£€æŸ¥ç¬¬ä¸€è¡Œæ˜¯å¦æ˜¯ç©ºè¡Œï¼ˆæ‰€æœ‰å…³é”®å­—段都是空或0)
                var firstRowIsEmpty = true;
                if (currentData.length > 0) {
                    var firstRow = currentData[0];
                    if (firstRow.HMaterID !== 0 && firstRow.HMaterID !== "0") {
                        firstRowIsEmpty = false;
                    }
                    if (firstRow.HMaterCode && firstRow.HMaterCode.trim() !== "") {
                        firstRowIsEmpty = false;
                    }
                    if (firstRow.HMaterName && firstRow.HMaterName.trim() !== "") {
                        firstRowIsEmpty = false;
                    }
                }
                // å¦‚果第一行是空行,则先清空表格数据
                if (firstRowIsEmpty) {
                    currentData = [];
                    table.cache["mainTable"] = currentData;
                }
                var addedCount = 0;
                // éåŽ†æ‰€æœ‰é€‰ä¸­çš„è¡Œ
                for (var i = 0; i < selectedData.length; i++) {
                    var rowData = selectedData[i];
                    // ç¡®ä¿æ•°æ®æœ‰æ•ˆæ€§
                    if (!rowData.HMaterID || rowData.HMaterID === 0) {
                        // å¦‚果行数据中没有HMaterID,尝试使用其他字段
                        if (!rowData.产品代码 || rowData.产品代码.trim() === "") {
                            continue; // è·³è¿‡æ— æ•ˆæ•°æ®
                        }
                    }
                    // æž„造子表行数据
                    var newRow = {
                        "HMaterID": rowData.HMaterID || 0,
                        "HMaterCode": rowData["产品代码"] || rowData["物料代码"] || "",
                        "HMaterName": rowData["产品名称"] || rowData["物料名称"] || "",
                        "HMaterSpec": rowData["规格型号"] || "",
                        "HUnitID": rowData.HUnitID || 0,
                        "HUnitCode": rowData["计量单位代码"] || "",
                        "HUnitName": rowData["计量单位"] || "",
                        "HQtyMust": parseFloat(rowData["生产任务单数量"] || rowData["计划生产数量"] || 0),
                        "HQty": parseFloat(rowData["生产任务单数量"] || rowData["计划生产数量"] || 0), // é»˜è®¤å®žå‘数量等于应发数量
                        "HPrice": 0,
                        "HMoney": 0,
                        "HWHID": $("#HWHID").val() || 0,
                        "HWHCode": "",
                        "HWHName": $("#HWHName").val() || "",
                        "HRemark": rowData["底部备注"] || rowData["表头备注"] || "",
                        // å¯ä»¥æ·»åŠ æºå•ä¿¡æ¯å­—æ®µ
                        "HSourceInterID": rowData.hmainid || 0,
                        "HSourceEntryID": rowData.hsubid || 0,
                        "HSourceBillNo": rowData["单据号"] || "",
                        "HSourceBillType": "3710"
                    };
                    // å°†æ–°è¡Œè¿½åŠ åˆ°å­è¡¨
                    currentData.push(newRow);
                    addedCount++;
                }
                // æ›´æ–°è¡¨æ ¼ç¼“存和数据
                table.cache["mainTable"] = currentData;
                option.data = currentData;
                // é‡æ–°æ¸²æŸ“表格
                table.render(option);
                // æ»šåŠ¨åˆ°åº•éƒ¨æ˜¾ç¤ºæ–°æ·»åŠ çš„è¡Œ
                setTimeout(function () {
                    var $tableBody = $('#mainTable').next('.layui-table-view').find('.layui-table-body');
                    $tableBody.scrollTop($tableBody[0].scrollHeight);
                }, 100);
                layer.msg('成功添加' + addedCount + '行数据');
            }
            //保存
            form.on('submit(Saver)', function (data) {
                var refSav = "";
@@ -597,7 +744,7 @@
                var sMainStr = JSON.stringify(data.field);
                var sSubStr = JSON.stringify(table.cache['mainTable']);
                var sMainSub = sMainStr + ';' + sSubStr + ';' + refSav + ';' + sessionStorage["HUserName"];
                console.log("源单类型", $("#HBillSubType").val());
                if (!AllowLoadData(sSubStr))//数据验证
                {
                    return false;
@@ -780,6 +927,8 @@
                    , { field: 'HWHCode', title: '发料仓库代码', edit: 'text', event: 'HWHCode', width: 120 }
                    , { field: 'HWHName', title: '发料仓库名称', edit: 'text', width: 120 }
                    , { field: 'HRemark', title: '备注', edit: 'text', width: 100 }
                    , { field: 'HSourceBillNo', title: '源单号', width: 100 }
                    , { field: 'HSourceInterID', title: 'HSourceInterID', width: 100, hide: true }
                    , { fixed: 'right', title: '操作', toolbar: '#barDemo' }
                ];
                option = {
@@ -794,12 +943,15 @@
                    , done: function (res, curr, count) {
                    }
                };
                option.data = [];
                table.render(option);
            }
            //无源单新增
            function set_AddFNew() {
                //获取最大单据号
                get_MAXNum();
                option.data = [{ "HMaterID": 0, "HMaterCode": "", "HMaterName": "", "HMaterSpec": "", "HUnitID": 0, "HUnitCode": "", "HUnitName": "", "HQtyMust": 0, "HQty": 0, "HPrice": 0, "HMoney": 0, "HWHID": 0, "HWHCode": "", "HWHName": "", "HRemark": "" }];
                option.data = [];
                //option.data = [{ "HMaterID": 0, "HMaterCode": "", "HMaterName": "", "HMaterSpec": "", "HUnitID": 0, "HUnitCode": "", "HUnitName": "", "HQtyMust": 0, "HQty": 0, "HPrice": 0, "HMoney": 0, "HWHID": 0, "HWHCode": "", "HWHName": "", "HRemark": "" }];
                table.render(option);
            }
            //获取最大单据号
@@ -824,7 +976,7 @@
            function set_EditFromGrid(linterid) {
                set_EditForm(linterid);  //编辑获取表头
                set_EditGrid(linterid);  //编辑获取表体
                option.data = [{ "HMaterID": 0, "HMaterCode": "", "HMaterName": "", "HMaterSpec": "", "HUnitID": 0, "HUnitCode": "", "HUnitName": "", "HQtyMust": 0, "HQty": 0, "HPrice": 0, "HMoney": 0, "HWHID": 0, "HWHCode": "", "HWHName": "", "HRemark": "" }];
                //option.data = [{ "HMaterID": 0, "HMaterCode": "", "HMaterName": "", "HMaterSpec": "", "HUnitID": 0, "HUnitCode": "", "HUnitName": "", "HQtyMust": 0, "HQty": 0, "HPrice": 0, "HMoney": 0, "HWHID": 0, "HWHCode": "", "HWHName": "", "HRemark": "" }];
                table.render(option);
            }
            //编辑获取表头
@@ -844,7 +996,10 @@
                                , "HDate": formatDate(data[0]["日期"])
                                //, "HInnerBillNo": data.内部单据号
                                , "HWHID": data[0]["HWHIDMain"]                    //仓库ID
                                , "HSourceInterID": data[0]["HSourceInterID"]                    //仓库ID
                                , "HSourceBillNo": data[0]["HSourceBillNo"]                    //仓库ID
                                , "HWHName": data[0]["仓库"]                   //仓库名称
                                , "HBillSubType": data[0]["HBillSubType"]                   //仓库名称
                                , "HSecManagerID": data[0]["hsecmanagerid"]    //验收员ID
                                , "HSecManagerName": data[0]["领料员"]         //验收员名称
                                , "HKeeperID": data[0]["hkeeperid"]            //保管员ID
@@ -853,7 +1008,7 @@
                                , "HMangerName": data[0]["主管"]             //保管员名称
                                , "HDeptID": data[0]["HDeptID"]                 //部门ID
                                , "HDeptName": data[0]["部门"]                  //部门名称
                                , "HSourceBillType": data[0]["源单类型"]        //源单类型
                                , "HSourceBillType": data[0]["HSourceBillType"]        //源单类型
                                , "XDH": ""                               //选单号
                                , "HRemark": data[0]["表头备注"]                    //备注
                            });