1
duhe
2026-01-08 deaa392c6292c96b90bf59cf1e7dfbb7363538c4
WebTM/views/³µ¼ä¹ÜÀí/µ¥Æ·¹ýÕ¾_СÎÀ/Cj_ProcessItemStationPlatform_generateSNCode.html
@@ -18,6 +18,7 @@
    <script src="../../../layuiadmin/MESLanguage.js"></script>
    <script src="../../../layuiadmin/SetColumn.js"></script>
    <script src="../../../layuiadmin/PubCustom.js"></script>
    <script src="../../../layuiadmin/grwebapp.js"></script>
</head>
<body>
    <div class="layui-fluid" style="padding: 0;">
@@ -83,11 +84,17 @@
                                            </div>
                                        </div>
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width: 85px; color: red; ">打印模板</label>
                                            <label class="layui-form-label" style="width: 85px;" id="">校验年月:</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
                                                <select name="HPrintTemplate" id="HPrintTemplate" lay-filter="HPrintTemplate" >
                                                    <option>打印模板1</option>
                                                    <option>打印模板2</option>
                                                <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">
                                            <label class="layui-form-label">模板名称</label>
                                            <div class="layui-input-block" style="margin-left: 120px; width: 185px;">
                                                <select name="HPrintTemplate" id="HPrintTemplate" class="ForFilteringSchemes" lay-filter="HPrintTemplate"
                                                        lay-verify="HPrintTemplate">
                                                    <!--动态渲染组织-->
                                                </select>
                                            </div>
                                        </div>
@@ -269,6 +276,7 @@
        var HModName = "Cj_ProcessItemStationPlatform_generateSN";
        //var HModName2 = "Cj_ProcessItemStationPlatform_batch2";
        var option = [];
        var previousHBarCode = "";
        //var option2 = [];
        //#endregion
@@ -281,6 +289,21 @@
        //#endregion
        //#region è§¦å‘事件:包括form.on(){}格式的所有点击事件、选择事件等
        form.on('select(HPrintTemplate)', function (data) {
            // 2. èŽ·å–é€‰ä¸­çš„å€¼
            const selectedValue = data.value;
            // 3. ä¿å­˜åˆ° localStorage(键名为 "BlueToothselectedTemplate")
            localStorage.setItem('SNselectedTemplate', selectedValue);
            // å¦‚果需要会话级存储(浏览器关闭后清除),改用 sessionStorage:
            // sessionStorage.setItem('selectedTemplate', selectedValue);
            console.log('已保存选择的模板:', selectedValue);
        });
        //头工具栏事件
        table.on('toolbar(mainTable)', function (obj) {
            switch (obj.event) {
@@ -312,6 +335,10 @@
            if (event.keyCode == 13) {
                var HBarCode = $('#HBarCode_SN').val();
                if (event.keyCode == 13) {
                    if (!checkHSNAndDate(HBarCode)) {
                        return
                    }
                    //如果镭雕码不为空
                    if (HBarCode) {
                        txtHBarCode_KeyDown(HBarCode);
@@ -365,6 +392,31 @@
        //#region æ­¤é¡µé¢æ‰€æœ‰çš„æ–¹æ³•
        //#region èŽ·å–æ‰“å°æ¨¡æ¿
        function getTem() {
            //获取登录页组织列
            $.ajax({
                type: "get",
                async: false,
                url: GetWEBURL() + "/Open_PrintTem/GetOpenTmpList_Json",
                data: { "HNumber": "HGy_BarCodeBill" },
                success: function (result) {
                    var template = "";
                    if (result.count == 1) { // è¯´æ˜ŽéªŒè¯æˆåŠŸäº†ï¼Œ
                        var data = result.data;
                        for (var i = 0; i < data.length; i++) {
                            template += '<option  style="color:blue;" value="' + data[i].HName + '">' + data[i].HName + '</option>';
                        }
                        $("#HPrintTemplate").append(template);
                        $("#HPrintTemplate").val(localStorage.getItem('SNselectedTemplate'))
                        form.render('select');
                    }
                    layer.closeAll("loading");
                }
            })
        }
            //#endregion
        //初始化界面
        function set_ClearBill() {
            //进入页面默认光标在流转卡上
@@ -378,6 +430,8 @@
            set_InitGrid();
            //
            get_Display();
            getTem();
        }
        //#region é€šè¿‡ç™»å½•用户获取默认值
@@ -423,7 +477,7 @@
                , totalRow: true
                , cellMinWidth: 120
                , data: []
                , height: 400
                , height: 550
                , limit: 10
                , cols: [[
                    { type: 'numbers', title: '序号' }
@@ -498,7 +552,7 @@
                "field": {
                    "HProcID": $("#HProcID").val(), "HBatchNo": "",
                    "HGroupID": $("#HGroupID").val(), "HSourceID": $("#HSourceID").val(),
                    "HProdOrgID": sessionStorage["OrganizationID"],
                    "HPRDOrgID": sessionStorage["OrganizationID"],
                    "HEmpID": $("#HEmpID").val(), "HDeptID": $("#HDeptID").val()
                }
            };
@@ -520,6 +574,8 @@
                        $("#HBarCode_SN").focus();
                        $("#HReturnMessage").text("成功扫码一个:" + HBarCode);
                        //自动打印
                        dy_PL(HBarCode);
                        get_Display();
                    }
                    else {
@@ -537,6 +593,125 @@
            });
        }
        //批量打印
        function dy_PL(HBarCode) {
            var sWhere = "select Top 1 * from h_v_IF_BarCodeBillList with(nolock) where æ¡ç ç¼–号 = '" + HBarCode + "'"
            $.ajax({
                type: "GET",
                url: GetWEBURL() + "/Gy_SOPBillList/WindowPrintList", //方法所在页面和方法名
                async: false,
                data: { "sWhere": sWhere },
                success: function (data) {
                    if (data.count == 1) { // è¯´æ˜ŽéªŒè¯æˆåŠŸäº†ï¼Œ
                        if (data.data.length != 0) {
                            var Customer = {
                                "Table": data.data
                            }
                            var args = {
                                type: "print",//打印模式
                                //type: "preview",//预览模式
                                showOptionDlg: false, //如果不显示打印对话框而直接打印,将此行注释去掉即可
                                report: urlAddRandomNo("../../grf/" + $("#HPrintTemplate").val()+".grf"),
                                data: Customer
                            };
                            console.log(data.data[0].条码编号);
                            //var args = {
                            //    report: urlAddRandomNo("../../grf/cs10.grf"),
                            //    data: Customer
                            //};
                            webapp_ws_ajax_run(args);
                        } else {
                            layer.msg("查无数据!");
                        }
                    }
                    else {
                        layer.msg(data.Message, { icon: 5 });
                    }
                    layer.closeAll("loading");
                },
                error: function (err) {
                    layer.msg("错误:" + err, { icon: 5 });
                }
            })
        }
        //校验 äº§å“å’Œå¹´æœˆ
        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 get_Display(sWhere = '') {
            var ajaxLoad = layer.load();