wtt
2025-11-10 1c3ca496cc700359ea7b85fc4eae9b20be52cb80
WebTM/views/°¸Àý´úÂë/»ªÔ¶/HY_HistogramReport.html
@@ -15,6 +15,26 @@
    <script src="../../../layuiadmin/PubCustom.js"></script>
    <script src="../../../layuiadmin/zgqCustom/zgqCustom.js"></script>
    <script src="../../../layuiadmin/HideButton.js"></script>
    <style>
        .loader {
            border: 8px solid #f3f3f3; /* Light grey */
            border-top: 8px solid #3498db; /* Blue */
            border-radius: 50%;
            width: 50px;
            height: 50px;
            animation: spin 2s linear infinite;
        }
        @keyframes spin {
            0% {
                transform: rotate(0deg);
            }
            100% {
                transform: rotate(360deg);
            }
        }
    </style>
</head>
<body>
    <div class="layui-fluid">
@@ -41,10 +61,17 @@
                                        <input type="text" class="layui-input" name="HBarCode_Set" id="HBarCode_Set">
                                    </div>
                                </div>
                                <div class="layui-inline">
                                <div class="layui-inline" style="display:none;">
                                    <div class="layui-input-block" style="margin-left: 0px;">
                                        <input type="checkbox" name="checkbox_isAVI" id="checkbox_isAVI" lay-skin="primary" lay-filter="checkbox_isAVI" checked title="AVI">
                                        <input type="hidden" value="true" name="isAVI" id="isAVI" lay-verify="isAVI">
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <div class="layui-input-block" style="margin-left: 0px;">
                                        <input type="checkbox" name="checkbox_HBatchDeleteFlag" id="checkbox_HBatchDeleteFlag" lay-skin="primary" lay-filter="checkbox_HBatchDeleteFlag" title="批量划废启动标记">
                                        <input type="hidden" value="false" name="HBatchDeleteFlag" id="HBatchDeleteFlag" lay-verify="HBatchDeleteFlag">
                                        <button type="button" id="HBatchDelete_submit" class="layui-btn layui-btn-normal layui-btn-radius" lay-submit="" lay-filter="HBatchDelete_submit">批量划废</button>
                                    </div>
                                </div>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnSearch" id="btnSearch">
@@ -52,6 +79,8 @@
                                </button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnReSearch" id="btnReSearch" style="padding:0 5px">重置</button>
                            </div>
                        </div>
                        <div id="HBadLabelNameList">
                        </div>
                        <div id="HistogramReport" style = "background-color: black; height: 2000px; width: 100%; display: flex; flex-direction: column; align-items:center;">
@@ -81,6 +110,14 @@
            var HBarCode_PNL_Note = "";                             //记录查询后的PNL条码编号
            var HLayOut_PNL = [];                                   //PNL布局信息数据
            var HPCSNoList = [];                                    //记录布局上已经加入的PCS号
            var HBatchDeletePCSList = [];                           //批量划废PCS列表
            var HBadLabelNameList = ["AOI1", "AOI2", "AOI3", "AOI4", "AVI", "MRB", "电测"];                           //检验站别标签名称数组
            var HBadInfo = {};                                                                                        //检验站别对应不良数量
            for (var i = 0; i < HBadLabelNameList.length; i++) {
                HBadInfo[HBadLabelNameList[i]] = 0;
            }
            //#endregion
            //#region è¿›å…¥é¡µé¢å³åŠ è½½
@@ -102,22 +139,45 @@
            });
            //#endregion
            //#region æ‰¹é‡åˆ’废
            form.on('submit(HBatchDelete_submit)', function (data) {
                batchDelete();
            });
            //#endregion
            //#region AVI复选框
            form.on('checkbox(checkbox_isAVI)', function (data) {
                $("#isAVI").val(data.elem.checked);
            });
            //#endregion
            //#region æœ¬é¡µé¢æ‰€æœ‰è¢«è°ƒç”¨çš„æ–¹æ³•
            //#region æ‰¹é‡åˆ’废启动标记 å¤é€‰æ¡†
            form.on('checkbox(checkbox_HBatchDeleteFlag)', function (data) {
                $("#HBatchDeleteFlag").val(data.elem.checked);
                if (data.elem.checked) {
                    $('#HBatchDelete_submit').removeClass("layui-btn-disabled").attr("disabled", false);
                } else {
                    HBatchDeletePCSList = [];
                    $("#btnSearch").trigger('click');
                    $('#HBatchDelete_submit').addClass("layui-btn-disabled").attr("disabled", true);
                }
            });
            //#endregion
            //#endregion
            //#region æœ¬é¡µé¢æ‰€æœ‰è¢«è°ƒç”¨çš„æ–¹æ³•
            //#region åˆå§‹åŒ–界面
            function set_ClearBill() {
                //查询
                get_FastQuery(1);
                //Organ();
                $('#HBatchDelete_submit').addClass("layui-btn-disabled").attr("disabled", true);
            }
            //#endregion
            //#endregion
            //#region æŸ¥è¯¢
            function get_Display(sql) {
                var ModRightNameCheck = "";
@@ -182,6 +242,9 @@
                //清空PNL布局数据
                HLayOut_PNL = [];
                //清空批量划废PCS清单
                HBatchDeletePCSList = [];
                //关闭加载遮罩
                layer.close(ajaxLoad);
@@ -293,6 +356,13 @@
                                        //将列索引容器添加到set容器对象中
                                        HContainerElement_Set.appendChild(HContainerElement_RowIndex);
                                    }
                                    if (j == data.length - 1) {
                                        var HBrElement_PCS = document.createElement('br');
                                        HContainerElement_Set.appendChild(HBrElement_PCS);
                                        break;
                                    }
                                } else {
                                    var HBrElement_PCS = document.createElement('br');
                                    HContainerElement_Set.appendChild(HBrElement_PCS);
@@ -350,6 +420,11 @@
                        if (data[i]["HIsBadFlag"] == "1") {
                            HButtonElement_PCS.style = "background-image: url('" + HIconUrl + "'); background-size: cover; background-position: center; background-repeat: no-repeat;background-color:" + data[i]["HPCSColor"] + ";";
                            //统计检验站别对应不良数量
                            if (typeof (HBadInfo[data[i]["HCheckProcName"]]) != "undefined") {
                                HBadInfo[data[i]["HCheckProcName"]] += 1;
                            }
                        } else {
                            HButtonElement_PCS.style = "background-image: url('" + HIconUrl + "'); background-size: cover; background-position: center; background-repeat: no-repeat;background-color:black;";
                        }
@@ -381,6 +456,9 @@
                        HPosition_x = data[i]["HPosition_x"];
                    }
                };
                //设置 æ£€éªŒç«™åˆ«æ ‡ç­¾
                setBadInfoLabel();
            }
            //#endregion
@@ -401,6 +479,7 @@
                        if (element == null) {
                            continue;
                        } else {
                            // ä¸ºå…ƒç´ æ·»åŠ contextmenu å·¦å‡» äº‹ä»¶ç›‘听器
                            element.addEventListener('click', function (event) {
                                var PCSNo_Button = event.currentTarget.id;                                                  //获取触发事件的元素的ID
                                var PCSElement_Button = document.getElementById(PCSNo_Button);                              //获取PCS按钮元素
@@ -411,23 +490,24 @@
                                var title = "PNL条码编号:" + HBarCode_PNL_Note + ";set号:" + SetNo + ";PCS号:" + PCSNo;
                                var isAVI = $("#isAVI").val();
                                var HBatchDeleteFlag = $("#HBatchDeleteFlag").val();
                                if (isAVI=="true") {
                                    layer.open({
                                        type: 2,
                                        skin: 'layui-layer-rim', //加上边框
                                        title: 'AVI新增(' + title + ')',
                                        closeBtn: 1,
                                        shift: 2,
                                        area: ['100%', '100%'],
                                        maxmin: true,
                                        content: '../../质量管理/PNL检验信息/QC_CheckNote_PNL_TempEdit.html?OperationType=6&linterid=&HSouceBillType=10004&HBarCode_PNL=' + HBarCode_PNL_Note + "&HSetNo=" + SetNo + "&HPCSNo=" + PCSNo,
                                        end: function () {
                                            //刷新页面,
                                            get_FastQuery();
                                if (HBatchDeleteFlag == "true") {
                                    var temp = {
                                        "HBarCode": HBarCode_PNL_Note
                                        , "HSetNo": SetNo
                                        , "HPCSNo": PCSNo
                                        , "title": "PNL条码编号:" + HBarCode_PNL_Note + ";set号:" + SetNo + ";PCS号:" + PCSNo
                                    }
                                    for (var i = 0; i < HBatchDeletePCSList.length; i++) {
                                        if (temp.title == HBatchDeletePCSList[i].title) {
                                            HBatchDeletePCSList.splice(i, 1);
                                            $('#' + PCSNo_Button).removeClass("layui-btn-disabled");
                                            return;
                                        }
                                    });
                                    }
                                    HBatchDeletePCSList.push(temp);
                                    $('#' + PCSNo_Button).addClass("layui-btn-disabled");
                                } else {
                                    layer.open({
                                        type: 2
@@ -444,16 +524,350 @@
                                    })
                                }
                            });
                            // ä¸ºå…ƒç´ æ·»åŠ contextmenu å³å‡» äº‹ä»¶ç›‘听器
                            element.addEventListener('contextmenu', function (event) {
                                // é˜»æ­¢é»˜è®¤çš„上下文菜单显示
                                event.preventDefault();
                                var PCSNo_Button = event.currentTarget.id;                                                  //获取触发事件的元素的ID
                                var PCSElement_Button = document.getElementById(PCSNo_Button);                              //获取PCS按钮元素
                                var PCSElement_Div = PCSElement_Button.parentElement;                                       //获取PCS按钮元素所在的PCS容器元素
                                var SetElement_Div = PCSElement_Div.parentElement;                                          //获取PCS容器元素所在的set容器元素
                                var PCSNo = PCSElement_Div.id;                                                              //PCS号
                                var SetNo = SetElement_Div.id;                                                              //set号
                                var title = "PNL条码编号:" + HBarCode_PNL_Note + ";set号:" + SetNo + ";PCS号:" + PCSNo;
                                //多次右击时,去除上一次的select组件
                                var HSelectElement_old = document.getElementById("HBadReason");
                                if (HSelectElement_old != null) {
                                    document.body.removeChild(HSelectElement_old);
                                }
                                // ä¾‹å¦‚,创建一个自定义菜单
                                var HSelectElement = document.createElement('select');
                                HSelectElement.style.width = "100px";
                                HSelectElement.style.height = "20px";
                                HSelectElement.style.position = 'absolute';
                                HSelectElement.style.left = event.pageX + 'px';
                                HSelectElement.style.top = event.pageY + 'px';
                                HSelectElement.id = "HBadReason";
                                HSelectElement.name = "HBadReason";
                                HSelectElement.setAttribute('lay-filter', 'HBadReason');
                                HSelectElement.className = "layui-fluid layui-col-md12 layui-card-body layui-form layui-collapse layui-colla-item ayui-input-inline";
                                document.body.appendChild(HSelectElement);
                                setInitSelect_BadReason();
                                //不良原因选择控件 å€¼å˜åŒ–监听
                                const selectElement = document.getElementById('HBadReason');
                                selectElement.addEventListener('change', function () {
                                    var HBadReason = $("#HBadReason").val();
                                    if (HBadReason == "") {
                                        var HSelectElement = document.getElementById("HBadReason");
                                        if (HSelectElement != null) {
                                            document.body.removeChild(HSelectElement);
                                        }
                                        return;
                                    }
                                    if (!judgeRepeatDataByPNLAndPCS(HBarCode_PNL_Note, PCSNo)) {
                                        layer.msg("该PCS已经存在不良记录,禁止重复标记!!", { icon: 5 });
                                        var HSelectElement = document.getElementById("HBadReason");
                                        if (HSelectElement != null) {
                                            document.body.removeChild(HSelectElement);
                                        }
                                        return;
                                    }
                                    layer.open({
                                        type: 2,
                                        skin: 'layui-layer-rim', //加上边框
                                        title: 'AVI新增(' + title + ')',
                                        closeBtn: 1,
                                        shift: 2,
                                        area: ['100%', '100%'],
                                        maxmin: true,
                                        content: '../../质量管理/PNL检验信息/QC_CheckNote_PNL_TempEdit.html?OperationType=7&linterid=&HSouceBillType=10004&HBarCode_PNL=' + HBarCode_PNL_Note + "&HSetNo=" + SetNo + "&HPCSNo=" + PCSNo + "&HBadReason=" + encodeURIComponent(HBadReason),
                                        end: function () {
                                            //刷新页面,
                                            get_FastQuery();
                                        }
                                    });
                                    var HSelectElement = document.getElementById("HBadReason");
                                    if (HSelectElement != null) {
                                        document.body.removeChild(HSelectElement);
                                    }
                                });
                                //不良原因选择控件 å¤±ç„¦æ—¶ç§»é™¤æŽ§ä»¶
                                selectElement.focus();
                                selectElement.addEventListener('blur', function () {
                                    var HSelectElement = document.getElementById("HBadReason");
                                    if (HSelectElement != null) {
                                        document.body.removeChild(HSelectElement);
                                    }
                                });
                            });
                        }
                    }
                }
            }
//#endregion
        });
            //#endregion
            //#region è®¾ç½®ä¸è‰¯æ ‡ç­¾
            function setBadInfoLabel() {
                //获取标签容器
                var HBadLabelNameListElement = document.getElementById("HBadLabelNameList");
                if (HBadLabelNameListElement != null) {
                    // éåŽ†æ ‡ç­¾å®¹å™¨å¯¹è±¡ä¸­çš„æ‰€æœ‰å­å…ƒç´ å¹¶ä»ŽDOM中移除
                    while (HBadLabelNameListElement.firstChild) {
                        HBadLabelNameListElement.removeChild(HBadLabelNameListElement.firstChild);
                    }
                    for (var i = 0; i < HBadLabelNameList.length; i++) {
                        //set容器
                        var labelElement= document.createElement('div');                                        //标签
                        labelElement.id = HBadLabelNameList[i];                                                 //标签的id
                        labelElement.style = "font-size: 20px; color: red;margin-left:50px;display: inline;";
                        labelElement.innerHTML = HBadLabelNameList[i] + ":" + HBadInfo[HBadLabelNameList[i]];
                        //将标签添加到标签容器对象中
                        HBadLabelNameListElement.appendChild(labelElement);
                    }
                }
                for (var i = 0; i < HBadLabelNameList.length; i++) {
                    HBadInfo[HBadLabelNameList[i]] = 0;
                }
            }
            //#endregion
            //#region ä¸è‰¯åŽŸå› ä¸‹æ‹‰åˆ—è¡¨åˆå§‹åŒ–
            function setInitSelect_BadReason() {
                //获取登录页组织列
                var ModRightNameCheck = "";
                var sql = "select * from Gy_BadReason where HCheckEmp <> '' and ISNULL(HStopEmp,'') = '' ";
                $.ajax({
                    url: GetWEBURL() + '/CommonModel/searchMethod',
                    async: false,
                    type: "GET",
                    data: { "sql": sql, "user": sessionStorage["HUserName"], "ModRightNameCheck": ModRightNameCheck },
                    success: function (result) {
                        if (result.count == 1) { // è¯´æ˜ŽéªŒè¯æˆåŠŸäº†ï¼Œ
                            var data = result.data;
                            var Organization = "";
                            Organization += '<option  style="color:blue;" value=""></option>';
                            for (var i = 0; i < data.length; i++) {
                                Organization += '<option  style="color:blue;" value="' + data[i].HName + '">' + data[i].HName + '</option>';
                            }
                            $("#HBadReason").append(Organization);
                            form.render('select');
                        }
                        layer.closeAll("loading");
                    }
                });
            }
        //#endregion
            //#region æ‰¹é‡åˆ’废
            function batchDelete() {
                if (HBatchDeletePCSList.length > 0) {
                    ////多次批量划废时,去除上一次的select组件
                    //var HSelectElement_old = document.getElementById("HBadReason");
                    //if (HSelectElement_old != null) {
                    //    document.body.removeChild(HSelectElement_old);
                    //}
                    // ä¾‹å¦‚,创建一个自定义菜单
                    var HSelectElement = document.createElement('select');
                    HSelectElement.style.width = "100px";
                    HSelectElement.style.height = "20px";
                    HSelectElement.style.position = 'absolute';
                    HSelectElement.style.left = event.pageX + 'px';
                    HSelectElement.style.top = event.pageY + 'px';
                    HSelectElement.id = "HBadReason";
                    HSelectElement.name = "HBadReason";
                    HSelectElement.setAttribute('lay-filter', 'HBadReason');
                    HSelectElement.className = "layui-fluid layui-col-md12 layui-card-body layui-form layui-collapse layui-colla-item ayui-input-inline";
                    document.body.appendChild(HSelectElement);
                    setInitSelect_BadReason();
                    //不良原因选择控件 å€¼å˜åŒ–监听
                    const selectElement = document.getElementById('HBadReason');
                    selectElement.addEventListener('change', function () {
                        var HBadReason = $("#HBadReason").val();
                        if (HBadReason == "") {
                            var HSelectElement = document.getElementById("HBadReason");
                            if (HSelectElement != null) {
                                document.body.removeChild(HSelectElement);
                            }
                            layer.alert("批量作废失败,未选择不良项目!!!", { icon: 5 });
                            return;
                        }
                        for (var i = 0; i < HBatchDeletePCSList.length; i++) {
                            var HBarCode_PNL_Note = HBatchDeletePCSList[i].HBarCode;
                            var PCSNo = HBatchDeletePCSList[i].HPCSNo;
                            if (!judgeRepeatDataByPNLAndPCS(HBarCode_PNL_Note, PCSNo)) {
                                layer.msg("PCS【" + PCSNo + "】已经存在不良记录,禁止重复标记!!", { icon: 5 });
                                var HSelectElement = document.getElementById("HBadReason");
                                if (HSelectElement != null) {
                                    document.body.removeChild(HSelectElement);
                                }
                                return;
                            }
                        }
                        //获取需要上传的检验信息列表
                        var HDataList_submit = [];
                        for (var i = 0; i < HBatchDeletePCSList.length; i++) {
                            var title = HBatchDeletePCSList[i].title;
                            var HBarCode_PNL_Note = HBatchDeletePCSList[i].HBarCode;
                            var SetNo = HBatchDeletePCSList[i].HSetNo;
                            var PCSNo = HBatchDeletePCSList[i].HPCSNo;
                            var data = {
                                HBarCode: HBarCode_PNL_Note
                                , HSetNo: SetNo
                                , HPCSNo: PCSNo
                                , HCheckProc: "MRB"
                                , HPageIndex: "L4"
                                , HBadReason: HBadReason
                                , HPosition_x: "0"
                                , HPosition_y: "0"
                                , HItemID: "0"
                                , HMakeDate: Format(new Date(), "yyyy-MM-dd")
                                , HMaker: sessionStorage["HUserName"]
                            }
                            HDataList_submit.push(data);
                        }
                        batchDelete_Submit(HDataList_submit);
                        HBatchDeletePCSList = [];
                        $("#btnSearch").trigger('click');
                        var HSelectElement = document.getElementById("HBadReason");
                        if (HSelectElement != null) {
                            document.body.removeChild(HSelectElement);
                        }
                    });
                    //不良原因选择控件 å¤±ç„¦æ—¶ç§»é™¤æŽ§ä»¶
                    selectElement.focus();
                    selectElement.addEventListener('blur', function () {
                        var HSelectElement = document.getElementById("HBadReason");
                        if (HSelectElement != null) {
                            document.body.removeChild(HSelectElement);
                        }
                    });
                } else {
                    layer.alert("当前未选中需要划废的PCS!!!", { icon: 5 });
                }
            }
            //#endregion
            //#region æ‰¹é‡åˆ’废-上传检验信息记录
            function batchDelete_Submit(HDataList_submit) {
                var msg = "";                                               //返回信息
                //遍历上传
                var submitList = [];                                        //上传数据列表
                var submitCount = 100;                                      //单次可上传数量+1
                for (var i = 0; i < HDataList_submit.length; i++) {
                    if ((i + 1) % submitCount > 0 && i + 1 != HDataList_submit.length) {
                        submitList.push(HDataList_submit[i]);
                    } else {
                        //打开加载遮罩
                        var index = layer.open({
                            type: 1, // page å±‚类型
                            area: ['20%', '20%'],
                            shade: 0.6, // é®ç½©é€æ˜Žåº¦
                            shadeClose: false, // ç‚¹å‡»é®ç½©åŒºåŸŸï¼Œä¸å…³é—­å¼¹å±‚
                            maxmin: false, // ä¸å…è®¸å…¨å±æœ€å°åŒ–
                            anim: 0, // 0-6 çš„动画形式,-1 ä¸å¼€å¯
                            content: '<div style="padding: 12px;">正在运算,请耐心等待!!!<div class="loader" style="height:10px;width:10px;"></div></div>'
                        });
                        submitList.push(HDataList_submit[i]);
                        var sMainStr = JSON.stringify(submitList) + ';' + sessionStorage["HUserName"];
                        $.ajax({
                            type: "POST",
                            url: GetWEBURL() + "/QC_CheckNote_PNL_TempController/BatchAddBill", //方法所在页面和方法名
                            async: false,
                            data: { "oMain": sMainStr },
                            dataType: "json",
                            success: function (data) {
                                if (data.count == 1) {
                                    //关闭加载遮罩
                                    layer.close(index);
                                }
                                else {
                                    for (var j = 0; j < submitList.length; j++) {
                                        msg += "【" + submitList.HPCSNo + "】";
                                    }
                                    msg += "上传失败,原因:" + data.Message + ";";
                                    //关闭加载遮罩
                                    layer.close(index);
                                }
                            },
                            error: function (err) {
                                for (var j = 0; j < submitList.length; j++) {
                                    msg += "【" + submitList.HPCSNo + "】";
                                }
                                msg += "上传失败,原因:" + err.Message + ";";
                                //关闭加载遮罩
                                layer.close(index);
                            }
                        });
                        submitList = [];
                    }
                }
                if (msg.length > 0) {
                    layer.alert(msg, { icon: 5 });
                    return false;
                } else {
                    return true;
                }
            }
            //#endregion
            //#region åˆ¤æ–­è¯¥PNL下的该PCS是否已经存在不良记录。若存在,则不允许继续生成。
            function judgeRepeatDataByPNLAndPCS(HBarCode_Temp, HPCSNo_Temp) {
                var flag = true;
                var sql = "select HBarCode from QC_CheckNote_PNL_Temp where HBarCode = '" + HBarCode_Temp + "' and HPCSNo = '" + HPCSNo_Temp + "' ";
                sql += " union select HBarCode from QC_CheckNote_PNL_His where HBarCode = '" + HBarCode_Temp + "' and HPCSNo = '" + HPCSNo_Temp + "' ";
                var ModRightNameCheck = "";
                $.ajax({
                    url: GetWEBURL() + '/CommonModel/searchMethod',
                    async: false,
                    type: "GET",
                    data: { "sql": sql, "user": sessionStorage["HUserName"], "ModRightNameCheck": ModRightNameCheck },
                    success: function (data1) {
                        if (data1.count == 1) {
                            if (data1.data.length > 0) {
                                flag = false;
                            }
                        } else {
                            flag = false;
                        }
                    }, error: function (e) {
                        flag = false;
                    }
                });
                return flag;
            }
            //#endregion
            //#endregion
        });
    </script>
</body>