1
wtt
2025-12-29 3425237a2b54ca28fc3e3c5f7c35a7fbef4e15fa
WebTM/views/³µ¼ä¹ÜÀí/µ¥Æ·¹ýÕ¾_СÎÀ/Cj_ProcessItemStationPlatform_batch.html
@@ -55,6 +55,12 @@
                                            </div>
                                        </div>
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width: 85px;" id="">校验年月:</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
                                                <input type="text" class="layui-input" name="HCheckDate" lay-verify="HCheckDate" id="HCheckDate" style="background-color:#efefef4d;" placeholder="请输入年月格式如2501(共四位前两位代表年份后两位代表月份)">
                                            </div>
                                        </div>
                                        <div class="layui-inline" style="display:none">
                                            <label class="layui-form-label" style="width: 85px;" id="">当前批次:</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
                                                <input type="text" class="layui-input" name="HBatchNo" lay-verify="HBatchNo" id="HBatchNo" style="background-color:#efefef4d;" readonly>
@@ -83,7 +89,7 @@
                                            <label class="layui-form-label" style="width: 85px;" id="BT_HMaterNumber">物料编码</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
                                                <input type="text" class="layui-input" lay-verify="HMaterNumber" name="HMaterNumber" id="HMaterNumber" style="background-color:#efefef4d;" readonly>
                                                <input type="hidden" class="layui-input" lay-verify="HMaterID" name="HMaterID" id="HMaterID">
                                                <input type="hidden" class="layui-input" lay-verify="HMaterID" name="HMaterID" id="HMaterID" value="0">
                                            </div>
                                        </div>
                                        <div class="layui-inline">
@@ -205,8 +211,9 @@
                    
                    <script type="text/html" id="toolbarDemo">
                        <div class="layui-btn-container">
                            <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-Delete"><i class="layui-icon layui-icon-form"></i>解绑</button>
                            <!--<button type="button" class="layui-btn layui-btn-sm" lay-event="btn-Delete"><i class="layui-icon layui-icon-form"></i>解绑</button>-->
                            <button type="button" class="layui-btn layui-btn-sm" lay-event="set_HideColumn" id="HideColumn"><i class="layui-icon layui-icon-form"></i>列设置</button>
                            <button type="button" class="layui-btn layui-btn-sm" lay-event="refresh" id="refresh"><i class="layui-icon layui-icon-form"></i>刷新</button>
                        </div>
                    </script>
                </form>
@@ -233,9 +240,10 @@
            , element = layui.element;
        //定义全局变量
        var params = getUrlVars();
        var params = get_UrlVars();
        var HModName = "Cj_ProcessItemStationPlatform_batch";
        var option = [];
        var previousHBarCode = "";
        //#endregion
        //#region è¿›å…¥é¡µé¢å³åŠ è½½
@@ -251,68 +259,44 @@
        table.on('toolbar(mainTable)', function (obj) {
            switch (obj.event) {
                //删除按钮
                case 'btn-Delete': set_DeleteBill();
                case 'btn-Delete': btn_Delete();
                    break;
                //列设置
                case 'set_HideColumn': get_HideColumnNoPage(HModName, sessionStorage["HUserName"], option, get_Display);
                    break;
                //刷新
                case 'refresh': get_Display();
                    break;
            };
        });
        //批次码回车方法
        $('#HBarCode_Batch').on('keydown', function (event) {
            var HBarCode = $('#HBarCodeSN').val();
            var HBardCodeProcExchBillNo = $('#HBardCodeProcExchBillNo').val();
            var HBarCode = $('#HBarCode_Batch').val();
            if (event.keyCode == 13) {
                if (!HBardCodeProcExchBillNo) {
                    layer.msg(get_MessageError("[0000-2-034]请先扫流转卡!", sessionStorage["HTranSlate"]))
                    return;
                } else {
                    HBarCode = HBarCode.toUpperCase();
                    if (!HBarCode) {
                        layer.msg(get_MessageError("[0000-2-019]条形码不能为空!", sessionStorage["HTranSlate"]))
                        return;
                    } else {
                        if (HBarCode.length != 29 && HBarCode.length != 50) {
                            layer.alert(get_MessageError("[3791-2-012]子件条码长度不为29位或50位!", sessionStorage["HTranSlate"]), { icon: 5, btn: [get_MessageError('[0000-2-035]退出', sessionStorage["HTranSlate"])], time: 100000, offset: 't' });
                            return;
                        }
                        if (HBarCode.match(/[^\x00-\xff]/g) != null) {
                            layer.alert(get_MessageError("[3791-2-013]必须是半角字符!", sessionStorage["HTranSlate"]), { icon: 5, btn: [get_MessageError('[0000-2-035]退出', sessionStorage["HTranSlate"])], time: 100000, offset: 't' });
                            return;
                        }
                    }
                //如果镭雕码不为空
                if (HBarCode) {
                    txtHBarCode_KeyDown(HBarCode);
                }
                for (var i = 0; i < option.data.length; i++) {
                    if (option.data[i]["HBatchNo"] == "") {
                        layer.msg(get_MessageError("[3791-2-014]当前工序批次不能为空!", sessionStorage["HTranSlate"]))
                        return;
                    }
                }
                txtHBarCode_KeyDown(HBarCode);
            }
        });
      
        //镭雕码回车方法
        $('#HBarCode_SN').on('keydown', function (event) {
            var HBarCode = $('#HBardCodeProcExchBillNo').val();
            var HBarCode_SN = $('#HBarCode_SN').val();
            if (event.keyCode == 13) {
                if (!HBarCode) {
                    layer.msg(get_MessageError("[0000-1-057]流转卡不能为空!", sessionStorage["HTranSlate"]))
                    return;
                if ($("#HBarCode_Batch").val() == "" || $("#HBarCode_Batch").val() == null) {
                    layer.msg("未扫批次码请先扫码");
                    $("#HBarCode_Batch").focus();
                    return
                }
                setIntervalIndex = setInterval(setIntervalList, 30000);
                get_BomList(HBarCode);
                //if (option.data != 0) {
                //    //保存到临时表
                //    get_AddBomTempList();
                //}
                //查询不良记录
                get_BadRecords();
                //查询合格记录
                get_HGRecords();
                if (!checkHSNAndDate(HBarCode_SN)) {
                    return
                }
                if (HBarCode_SN) {
                    txtHBarCodeSN_KeyDown(HBarCode_SN);
                }
            }
        });
@@ -341,7 +325,20 @@
        form.on('submit(btnHProc)', function () {
            btnHProc();
        });
        //变更
        form.on('submit(btnChange)', function (data) {
            $("#HBarCode_Batch").val("");
            $("#HBarCode_Batch").prop("readonly", false);
            $("#HBarCode_BatchSec").val("");
            $("#HBatchNo").val("");
            $("#HMaterNumber").val("");
            $("#HMaterName").val("");
            $("#HMaterModel").val("");
            $("#HSupID").val(0)
            $("#HSupName").val(0)
            //进入页面默认光标在流转卡上
            $("#HBarCode_Batch").focus();
        });
        //退出
        form.on('submit(btnExit)', function (data) {
@@ -360,7 +357,7 @@
        //初始化界面
        function set_ClearBill() {
            //进入页面默认光标在流转卡上
            $("#HBardCodeProcExchBillNo").focus();
            $("#HBarCode_Batch").focus();
            //制单人
            $("#HMaker").val(sessionStorage["HUserName"]);
            $("#HMakeDate").val(Format(new Date(), "yyyy-MM-dd"));
@@ -369,7 +366,7 @@
            //初始化表格
            set_InitGrid();
            //
            //get_Display();
            get_Display();
        }
        //#region é€šè¿‡ç™»å½•用户获取默认值
@@ -439,57 +436,42 @@
            table.render(option);
        }
        /**
         * æ‰«æ‰¹æ¬¡ç 
         * @param HBarCode
         */
        //条码回车查询
        function txtHBarCode_KeyDown(HBarCode) {
            var HProcExchBillNo = $("#HProcExchBillNo").val();
            var indexs = layer.load();
            $.ajax({
                type: "GET",
                url: GetWEBURL() + "/Cj_SingleStation/SNHBardCodeList",
                url: GetWEBURL() + "/Cj_SingleStation/checkHBarCode_Batch",
                async: false,
                data: { "HBarCode": HBarCode, "HProcExchBillNo": HProcExchBillNo, "user": sessionStorage["HUserName"], "HOrgID": sessionStorage["OrganizationID"] },
                data: { "HBarCode": HBarCode,"user": sessionStorage["HUserName"], "HOrgID": sessionStorage["OrganizationID"] },
                dataType: "json",
                success: function (data1) {
                    if (data1.count == 1) {
                        layer.close(indexs);
                        var index = layer.load();
                        $("#HBarCode_BatchSec").val(HBarCode);
                        const parts = HBarCode.split('@');
                        $("#HBatchNo").val(parts[2]);
                        $("#HMaterNumber").val(data1.data[0]["HMaterNumber"])
                        $("#HMaterName").val(data1.data[0]["HMaterName"])
                        $("#HMaterModel").val(data1.data[0]["HMaterModel"])
                        $("#HSupID").val(data1.data[0]["HSupID"])
                        $("#HSupName").val(data1.data[0]["HSupName"])
                        $("#HBarCode_Batch").prop("readonly", true);
                        $.ajax({
                            type: "GET",
                            url: GetWEBURL() + "/Cj_SingleStation/HBardCodeSNList",
                            async: false,
                            data: { "HBarCode": HBarCode, "user": sessionStorage["HUserName"] },
                            dataType: "json",
                            success: function (data1) {
                                if (data1.count == 1) {
                                    layer.close(index);
                                    $("#HBarCode_P").val(HBarCode);
                                    if (AllowLoadData()) {
                                        //保存数据
                                        set_AddAssemblyBill();
                                    }
                                }
                                else {
                                    layer.close(index);
                                    layer.msg(get_MessageError(data1.Message, sessionStorage["HTranSlate"]), { icon: 5, btn: [get_MessageError('[0000-2-008]确认', sessionStorage["HTranSlate"])], time: 100000, offset: 't', skin: 'layui-layer-lan', title: get_MessageError("[0000-2-009]温馨提示", sessionStorage["HTranSlate"]) });
                                }
                                $("#HBarCodeSN").val("");
                            },
                            error: function (err) {
                                layer.close(index);
                                layer.msg(get_MessageError("错误:" + err, sessionStorage["HTranSlate"]), { icon: 5, btn: [get_MessageError('[0000-2-008]确认', sessionStorage["HTranSlate"])], time: 100000, offset: 't', skin: 'layui-layer-lan', title: get_MessageError("[0000-2-009]温馨提示", sessionStorage["HTranSlate"]) });
                            }
                        });
                        //光标在镭雕码上
                        $("#HBarCode_SN").focus();
                    }
                    else {
                        layer.close(indexs);
                        layer.msg(get_MessageError(data1.Message, sessionStorage["HTranSlate"]));
                        layer.msg(data1.Message);
                    }
                    //光标跳转到SN条码文本框上
                    //$("#HBarCodeSN").focus();
                    $("#HBarCodeSN").val("");
                },
                error: function (err) {
                    layer.close(indexs);
@@ -497,15 +479,179 @@
                }
            });
        }
        /**
         * æ‰«é•­é›•码
         * @param HBarCode
         */
        //镭雕码回车查询
        function txtHBarCodeSN_KeyDown(HBarCode) {
            //var data = {
            //    "field": {
            //        "HMaterID": $("#HMaterID").val(), "HProcID": $("#HProcID").val(), "HBatchNo": $("#HBarCode_Batch").val(),
            //        "HGroupID": $("#HGroupID").val(), "HSourceID": $("#HSourceID").val(),
            //        "HICMOInterID": $("#HICMOInterID").val(), "HICMOEntryID": $("#HICMOEntryID").val(),
            //        "HICMOBillNo": $("#HICMOBillNo").val(),
            //        "HProdOrgID": sessionStorage["OrganizationID"],
            //        "HEmpID": $("#HEmpID").val(), "HProcExchBillNo": $("#HProcExchBillNo").val(),
            //        "HProcExchInterID": $("#HProcExchInterID").val(), "HProcExchEntryID": $("#HProcExchEntryID").val(),
            //        "HDeptID": $("#HDeptID").val()
            //    }
            //};
            var data = {
                "field": {
                    "HProcID": $("#HProcID").val(), "HBatchNo": $("#HBarCode_Batch").val(),
                    "HGroupID": $("#HGroupID").val(), "HSourceID": $("#HSourceID").val(),
                    "HPRDOrgID": sessionStorage["OrganizationID"],
                    "HEmpID": $("#HEmpID").val(), "HDeptID": $("#HDeptID").val()
                }
            };
            var sMainStr = JSON.stringify(data.field);
            var sSubStr = HBarCode;
            var sMainSub = sMainStr + ';' + sSubStr + ';' + sessionStorage["HUserName"] ;
            var indexs = layer.load();
            $.ajax({
                type: "POST",
                url: GetWEBURL() + "/Cj_SingleStation/AddStationOutBillList",
                async: false,
                data: { "sMainSub": sMainSub },
                dataType: "json",
                success: function (data1) {
                    if (data1.count == 1) {
                        layer.close(indexs);
                        //光标在镭雕码上
                        $("#HBarCode_SN").val("");
                        $("#HBarCode_SN").focus();
                        $("#HReturnMessage").text("成功扫码一个:" + HBarCode);
                        get_Display();
                    }
                    else {
                        $("#HBarCode_SN").val("");
                        layer.close(indexs);
                        layer.msg(data1.Message, { icon: 5, btn: ["确认"], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "出现错误" });
                    }
                },
                error: function (err) {
                    $("#HBarCode_SN").val("");
                    layer.close(indexs);
                    layer.msg(get_MessageError("错误:" + err, sessionStorage["HTranSlate"]), { icon: 5, btn: [get_MessageError('[0000-2-008]确认', sessionStorage["HTranSlate"])], time: 100000, offset: 't', skin: 'layui-layer-lan', title: get_MessageError("[0000-2-009]温馨提示", sessionStorage["HTranSlate"]) });
                }
            });
        }
        //校验 äº§å“å’Œå¹´æœˆ
        function checkHSNAndDate(HBarCode) {
            // 1. æ ¡éªŒHBarCode长度
            if (!HBarCode || HBarCode.length < 20) {
                layer.confirm("HBarCode长度不足20位");
                return false;
            }
            // 2. è§£æžHBarCode的年月日
            const yearLastDigit = HBarCode[12]; // ç¬¬13位(索引12),年份最后一位
            const monthCode = HBarCode[13].toUpperCase(); // ç¬¬14位,月份(N-Z)
            // è®¡ç®—年份(假设当前世纪,如2020-2029)
            const year = yearLastDigit;
            // è®¡ç®—月份(N=1, ..., Z=12)
            const validChars = "NPQRSTUVWXYZ";
            if (!validChars.includes(monthCode)) {
                layer.confirm("字符必须是 N, P-Z ä¹‹ä¸€ï¼ˆè·³è¿‡ O)");
                return false;
            }
            // è®¡ç®—月份:N=1, P=2, ..., Z=12
            const month = validChars.indexOf(monthCode) + 1;
            // 3. èŽ·å–è¾“å…¥æ¡†çš„å¹´æœˆï¼ˆæ ¼å¼NNMM,如2307表示2023å¹´7月)
            const checkDateInput = document.getElementById("HCheckDate");
            if (!checkDateInput) {
                layer.confirm("找不到HCheckDate输入框");
                return false;
            }
            const inputValue = checkDateInput.value.trim();
            if (!/^\d{4}$/.test(inputValue)) {
                layer.confirm("输入框格式错误(必须是NNMM,如2307)");
                return false;
            }
            const inputYear = inputValue.substring(1, 2); // NN(如23)
            const inputMonth = parseInt(inputValue.substring(2, 4), 10); // MM(如07)
            // 4. æ ¡éªŒå¹´æœˆæ˜¯å¦ä¸€è‡´
            if (year !== inputYear || month !== inputMonth) {
                layer.confirm(
                    `年月不匹配:HBarCode=${year}å¹´${month}月,输入框=${inputYear}å¹´${inputMonth}月`
                );
                return false;
            }
            // 5. æ ¡éªŒå‰äº”位是否与上一次一致
            const currentFirstFive = HBarCode.substring(0, 5);
            if (previousHBarCode) {
                const previousFirstFive = previousHBarCode.substring(0, 5);
                if (currentFirstFive !== previousFirstFive) {
                    layer.confirm(
                        `前五位不一致:当前=${currentFirstFive},上一次=${previousFirstFive}`
                    );
                    return false;
                }
            }
            // 6. æ›´æ–°ä¸Šä¸€æ¬¡çš„HBarCode
            previousHBarCode = HBarCode;
            $("#HCheckDate").prop("readonly", true);
            console.log("校验通过");
            return true;
        }
        //删除单据
        function btn_Delete() {
            var checkStatus = table.checkStatus('mainTable')
                , data = checkStatus.data;
            if (checkStatus.data.length === 1) {
                layer.confirm(get_MessageError('[0000-1-003]确定删除' + data[0].单据号 + '吗?', sessionStorage["HTranSlate"]), function (index) {
                    var ajaxLoad = layer.load();
                    //逻辑删除方法
                    $.ajax({
                        url: GetWEBURL() + '/Cj_StationOutBill/del_StationOutBill',
                        type: "GET",
                        data: { "HInterID": data[0].hmainid, "HDeleteMan": sessionStorage["HUserName"], "HBillSubType": "3791" },
                        success: function (result) {
                            if (result.count == 1) {
                                get_Display();
                                layer.close(ajaxLoad);
                            } else {
                                layer.close(ajaxLoad);
                                layer.alert(get_MessageError(result.Message, sessionStorage["HTranSlate"]) + result.Message, { icon: 5 });
                            }
                        }, error: function () {
                            layer.close(ajaxLoad);
                            layer.alert(get_MessageError("[0000-1-002]接口请求失败!", sessionStorage["HTranSlate"]), { icon: 5 });
                        }
                    });
                    layer.close(index);
                });
            } else {
                layer.msg(get_MessageError('[0000-1-001]请选择一行数据编辑!', sessionStorage["HTranSlate"]));
            }
        }
        //加载网格
        function get_Display() {
        function get_Display(sWhere='') {
            var ajaxLoad = layer.load();
            var HProcID = $("#HProcID").val();
            var HSourceID = $("#HSourceID").val();
            sWhere += ` and HProcID = ${HProcID} and HSourceID = ${HSourceID}`
            $.ajax({
                url: GetWEBURL() + '/Cg_POOrderBill/list',
                url: GetWEBURL() + '/Cj_SingleStation/SingleStationOutBillList',
                async: false,
                type: "GET",
                data: { "sWhere": '', "user": sessionStorage["HUserName"] },
                data: { "sWhere": sWhere, "user": sessionStorage["HUserName"] },
                success: function (data1) {
                    if (data1.count == 1) {
                        var data = [];//列字段数据