1
wangyi
2025-12-17 a16d0d40755d4da86242ef12472aed2d1a8b2ffb
1
19个文件已修改
3个文件已添加
1022 ■■■■■ 已修改文件
WebTM/WebTM.csproj 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/WebTM.csproj.user 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/layuiadmin/Scripts/webConfig.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/基础资料/公用基础资料/HBarPlanPrint.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/基础资料/公用基础资料/xmlLBM_HGy_BarCodeBill_MiddleBox.aspx 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/基础资料/公用基础资料/xmlLBM_HGy_BarCodeBill_MiddleBox.aspx.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/基础资料/公用基础资料/xmlLBM_HGy_BarCodeBill_MiddleBox.aspx.designer.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/基础资料/基础资料/Gy_ConkReasonEdit.html 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/基础资料/基础资料/Gy_RepairEdit.html 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/基础资料/生产基础资料/Add_Edit_Gy_BadReason.html 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/模治具管理/模治具管理/Gy_BarCodeBillList.html 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/质量管理/工序检验单/QC_ProcessCheckBillList2.html 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/质量管理/检验方案单/QC_Add_CheckProject.html 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/质量管理/首件检验单/QC_FirstPieceCheckBillList2.html 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/车间管理/单品过站_小卫/Cj_ProcessItemStationPlatform_KeyElement_Sec.html 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/车间管理/单品过站_小卫/Cj_ProcessItemStationPlatform_UnbindList.html 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/车间管理/单品过站_小卫/Cj_ProcessItemStationPlatform_batch.html 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/车间管理/单品过站_小卫/Cj_ProcessItemStationPlatform_batchKeyElement.html 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/车间管理/单品过站_小卫/Cj_ProcessItemStationPlatform_checkPackage_Sec.html 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/车间管理/单品过站_小卫/Cj_ProcessItemStationPlatform_checkSN.html 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/车间管理/单品过站_小卫/Cj_ProcessItemStationPlatform_generateSNCode.html 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/项目管理/工作任务/PM_WorkTaskBillList.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/WebTM.csproj
@@ -472,6 +472,7 @@
    <Content Include="views\基础资料\公用基础资料\Gy_MaterialPackingRelation_Edit.html" />
    <Content Include="views\基础资料\公用基础资料\Gy_ItemMoney.html" />
    <Content Include="views\基础资料\公用基础资料\Cg_ContractTransportBillList.html" />
    <Content Include="views\基础资料\公用基础资料\xmlLBM_HGy_BarCodeBill_MiddleBox.aspx" />
    <Content Include="views\基础资料\公用基础资料\xmlLBM_Sc_ProcessExchangeBillList_stock.aspx" />
    <Content Include="views\基础资料\公用基础资料\xmlzuotuo_xiaowei.aspx" />
    <Content Include="views\基础资料\公用基础资料\xmlLBM_HGy_BarCodeBill_XinDa.aspx" />
@@ -624,8 +625,8 @@
    <Content Include="views\工资管理\工资运算\Pay_SalaryCalculate_New.html" />
    <Content Include="views\工资管理\技能考核\HR_EmployeeSkillExamBill.html" />
    <Content Include="views\工资管理\技能考核\HR_EmployeeSkillExamBillList.html" />
    <Content Include="views\工资管理\阶梯工价系数\Gy_SteppedPriceCoefficientBillList.html" />
    <Content Include="views\工资管理\阶梯工价系数\Gy_SteppedPriceCoefficientBillEdit.html" />
    <Content Include="views\工资管理\阶梯工价系数\Gy_SteppedPriceCoefficientBillList.html" />
    <Content Include="views\应收管理\报表分析\Xs_CusShouGongChaoBaoSumReport.html" />
    <Content Include="views\应收管理\报表分析\Xs_CusShouGongChaoBaoReport.html" />
    <Content Include="views\应收管理\报表分析\Kf_SellOutEntryReport_YP.html" />
@@ -2693,6 +2694,13 @@
    <Compile Include="App_Data\MssqlReportData.cs" />
    <Compile Include="App_Data\ReportData.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="views\基础资料\公用基础资料\xmlLBM_HGy_BarCodeBill_MiddleBox.aspx.cs">
      <DependentUpon>xmlLBM_HGy_BarCodeBill_MiddleBox.aspx</DependentUpon>
      <SubType>ASPXCodeBehind</SubType>
    </Compile>
    <Compile Include="views\基础资料\公用基础资料\xmlLBM_HGy_BarCodeBill_MiddleBox.aspx.designer.cs">
      <DependentUpon>xmlLBM_HGy_BarCodeBill_MiddleBox.aspx</DependentUpon>
    </Compile>
    <Compile Include="views\基础资料\公用基础资料\xmlLBM_Sc_ProcessExchangeBillList_stock.aspx.cs">
      <DependentUpon>xmlLBM_Sc_ProcessExchangeBillList_stock.aspx</DependentUpon>
      <SubType>ASPXCodeBehind</SubType>
WebTM/WebTM.csproj.user
@@ -2,31 +2,5 @@
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
    <NameOfLastUsedPublishProfile>D:\gz\MES-WEB-TM\MES-WEB-LayUI\WebTM\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
  </PropertyGroup>
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
        <WebProjectProperties>
          <StartPageUrl>
          </StartPageUrl>
          <StartAction>CurrentPage</StartAction>
          <AspNetDebugging>True</AspNetDebugging>
          <SilverlightDebugging>False</SilverlightDebugging>
          <NativeDebugging>False</NativeDebugging>
          <SQLDebugging>False</SQLDebugging>
          <ExternalProgram>
          </ExternalProgram>
          <StartExternalURL>
          </StartExternalURL>
          <StartCmdLineArguments>
          </StartCmdLineArguments>
          <StartWorkingDirectory>
          </StartWorkingDirectory>
          <EnableENC>True</EnableENC>
          <AlwaysStartWebServerOnDebug>False</AlwaysStartWebServerOnDebug>
        </WebProjectProperties>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>
WebTM/layuiadmin/Scripts/webConfig.js
@@ -7,12 +7,18 @@
    //var WEBURL = "http://localhost:8082/LuBaoAPI/";    //杨乐本地配置
   /*  var WEBURL = "http://localhost:8082/API/";    //杜贺本地配置*/
    //var WEBURL = "http://localhost:8082/API/";    //张瑞广本地配置
<<<<<<< HEAD
    var WEBURL = "http://localhost:8080/API/";    //王仪本地配置
    //var WEBURL = "http://localhost:81/API/"    //翁涛涛本地配置
/*    var WEBURL = "http://localhost:81/API/"    //翁涛涛本地配置*/
=======
    var WEBURL = "http://localhost:8080/API/";    //王仪本地配置
    //var WEBURL = "http://localhost:81/API/"    //翁涛涛本地配置
    var WEBURL = "http://localhost:81/API/"    //翁涛涛本地配置
>>>>>>> a12e0abce941275b1d4295790546c673e556cd89
    //var WEBURL = "http://localhost:8082/LuBaoAPI/";    //杨乐本地配置
    //var WEBURL = "http://47.96.97.237/API/";          //智云服务器
    /*var WEBURL = "http://localhost:8082/LuBaoAPI/";*/  //余思杰本地配置
WebTM/views/»ù´¡×ÊÁÏ/¹«Óûù´¡×ÊÁÏ/HBarPlanPrint.html
@@ -170,6 +170,9 @@
            case "HGy_BarCodeBill_JiaNan_BarCode_Pack"://条码打印_迦南
                CreateDisplayViewerEx("100%", "100%", "../../grf/" + OpenTmp + ".grf", "xmlLBM_HGy_BarCodeBill.aspx?linterid=" + value, true, "");
                break;
            case "HGy_BarCodeBill_MiddleBox"://中箱条码打印(小卫)
                CreateDisplayViewerEx("100%", "100%", "../../grf/" + OpenTmp + ".grf", "xmlLBM_HGy_BarCodeBill_MiddleBox.aspx?linterid=" + value, true, "");
                break;
            case "HIcmoBill"://生产订单打印
                CreateDisplayViewerEx("100%", "100%", "../../grf/" + OpenTmp + ".grf", "xmlLBM_Sc_ICMOBillList.aspx?linterid=" + value, true, "");
                break;
WebTM/views/»ù´¡×ÊÁÏ/¹«Óûù´¡×ÊÁÏ/xmlLBM_HGy_BarCodeBill_MiddleBox.aspx
New file
@@ -0,0 +1,29 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="xmlLBM_HGy_BarCodeBill_MiddleBox.aspx.cs" Inherits="WebTM.views.基础资料.公用基础资料.xmlLBM_HGy_BarCodeBill_MiddleBox" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            //★特别提示★:
            //不同的数据库应该选用不同的报表XML数据生成类,SQL Server数据库用SqlXMLReportData,Oracle数据库用OracleXMLReportData
            //OledbXMLReportData适合于Access等本地数据库,为了演示方便,这里从Grid++Report的Access例子数据库中获取报表数据
            //OledbXMLReportData.GenOneRecordset(this, "select * from Customers order by CustomerID");
            //SqlXMLReportData.GenOneRecordset(this, "select * from h_v_Kf_POStockInBillList_K3 where hmainid=1781");
            //SqlXMLReportData.GenOneRecordset(this, "select * from h_v_IF_BarCodeBillList where hmainid in(" + Request.Params["linterid"]+ ") order by hmainid desc");
            SqlXMLReportData.GenOneRecordset(this, "exec h_p_Gy_GetCaseCodeInfo '" + Request.Params["linterid"]+ "'");
        }
</script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
        </div>
    </form>
</body>
</html>
WebTM/views/»ù´¡×ÊÁÏ/¹«Óûù´¡×ÊÁÏ/xmlLBM_HGy_BarCodeBill_MiddleBox.aspx.cs
New file
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebTM.views.基础资料.公用基础资料
{
    public partial class xmlLBM_HGy_BarCodeBill_MiddleBox : System.Web.UI.Page
    {
        //protected void Page_Load(object sender, EventArgs e)
        //{
        //}
    }
}
WebTM/views/»ù´¡×ÊÁÏ/¹«Óûù´¡×ÊÁÏ/xmlLBM_HGy_BarCodeBill_MiddleBox.aspx.designer.cs
New file
@@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <自动生成>
//     æ­¤ä»£ç ç”±å·¥å…·ç”Ÿæˆã€‚
//
//     å¯¹æ­¤æ–‡ä»¶çš„æ›´æ”¹å¯èƒ½å¯¼è‡´ä¸æ­£ç¡®çš„行为,如果
//     é‡æ–°ç”Ÿæˆä»£ç ï¼Œåˆ™æ‰€åšæ›´æ”¹å°†ä¸¢å¤±ã€‚
// </自动生成>
//------------------------------------------------------------------------------
namespace WebTM.views.基础资料.公用基础资料
{
    public partial class xmlLBM_HGy_BarCodeBill_MiddleBox
    {
        /// <summary>
        /// form1 æŽ§ä»¶ã€‚
        /// </summary>
        /// <remarks>
        /// è‡ªåŠ¨ç”Ÿæˆçš„å­—æ®µã€‚
        /// è‹¥è¦è¿›è¡Œä¿®æ”¹ï¼Œè¯·å°†å­—段声明从设计器文件移到代码隐藏文件。
        /// </remarks>
        protected global::System.Web.UI.HtmlControls.HtmlForm form1;
    }
}
WebTM/views/»ù´¡×ÊÁÏ/»ù´¡×ÊÁÏ/Gy_ConkReasonEdit.html
@@ -228,11 +228,13 @@
            //判断操作类型
            if (OperationType == 1) {//无源单
                set_AddFNew();
                $('#audit-btn').addClass("layui-btn-disabled").attr("disabled", true);
            }
            else if (OperationType == 2) {//复制
                set_AddFNew();
                //复制状态时,根据内码,获取信息并写入界面
                set_EditForm(linterid);
                $('#audit-btn').addClass("layui-btn-disabled").attr("disabled", true);
            }
            else if (OperationType == 3) {//编辑
                set_EditFromGrid();
WebTM/views/»ù´¡×ÊÁÏ/»ù´¡×ÊÁÏ/Gy_RepairEdit.html
@@ -264,7 +264,7 @@
            if (OperationType == 1) {   //新增
                linterid = 0;
                $("#HMakeEmp").val(sessionStorage["HUserName"]);
                $('#audit-btn').addClass("layui-btn-disabled").attr("disabled", true);
            } else if (OperationType == 2) {
                RoadBillMain(linterid);
                $("#HMakeEmp").val(sessionStorage["HUserName"]);
@@ -277,6 +277,7 @@
                $("#HCheckTime").val("");
                $("#HNumber").val("");
                $("#HItemID").val(0);
                $('#audit-btn').addClass("layui-btn-disabled").attr("disabled", true);
            } else if (OperationType == 3) {
                RoadBillMain(linterid);
            }
WebTM/views/»ù´¡×ÊÁÏ/Éú²ú»ù´¡×ÊÁÏ/Add_Edit_Gy_BadReason.html
@@ -241,12 +241,14 @@
            //#region è¿›å…¥é¡µé¢å³åŠ è½½
            //判断操作类型
            if (OperationType == 1) {//无源单
                set_AddFNew();
                set_AddFNew();
                $('#add-btn1').addClass("layui-btn-disabled").attr("disabled", true);
            }
            else if (OperationType == 2) {//复制
                set_AddFNew();
                //复制状态时,根据内码,获取信息并写入界面
                set_EditForm(linterid);
                $('#add-btn1').addClass("layui-btn-disabled").attr("disabled", true);
            }
            else if (OperationType == 3) {//编辑
                set_EditFromGrid();
@@ -474,9 +476,9 @@
                    success: function (result) {
                        if (result.code == 1) { // è¯´æ˜ŽéªŒè¯æˆåŠŸäº†ï¼Œ
                            var data = result.data.h_v_IF_Edit_BadReasonList[0];
                            $("#HNumber").val(data.不良缺陷代码);//代码
                            $("#HNumber").val(data.不良原因代码);//代码
                            $("#HItemID").val(OperationType == 2 ? 0 : data.HItemID);//代码ID
                            $("#HName").val(data.不良缺陷名称);//名称
                            $("#HName").val(data.不良原因名称);//名称
                            $("#HHelpCode").val(data.助记代码);//助记代码
                            $("#HDeptNumber").val(data.部门代码);//默认部门代码
                            $("#HDeptName").val(data.部门名称);//默认部门
WebTM/views/Ä£Öξ߹ÜÀí/Ä£Öξ߹ÜÀí/Gy_BarCodeBillList.html
@@ -230,6 +230,7 @@
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" id="btn-reload" lay-event="btn-reload"><i class="layui-icon layui-icon-refresh"></i>刷新</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" id="btn-view" lay-event="btn-view"><i class="layui-icon layui-icon-tips"></i>预览</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" id="btn-print" lay-event="btn-print"><i class="layui-icon layui-icon-print"></i>打印</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" id="btn-print-zx" lay-event="btn-print-zx"><i class="layui-icon layui-icon-print"></i>中箱标签打印</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" lay-event="set_Drop" id="set_Drop"><i class="layui-icon layui-icon-radio"></i>作废</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" lay-event="set_DeDrop" id="set_DeDrop"><i class="layui-icon layui-icon-radio"></i>反作废</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" id="btn-Delete" lay-event="btn-Delete"><i class="layui-icon layui-icon-delete"></i>删除</button>
@@ -375,6 +376,9 @@
                                }
                            }
                        });
                        break;
                    case 'btn-print-zx':
                        PrintZX();
                        break;
                    //刷新
                    case 'btn-reload':
@@ -818,6 +822,47 @@
            }
            //#endregion
            //#region
            function PrintZX() {
                var checkStatus = table.checkStatus('mainTable')
                    , data = checkStatus.data;
                var ModRightName = 'Gy_BarCodeBillList_Print';
                $.ajax({
                    url: GetWEBURL() + '/Gy_BarCodeBillList/GetBarCodeBillPermission',
                    type: "GET",
                    async: false,
                    data: { "user": sessionStorage["HUserName"] },
                    success: function (res) {
                        if (res.data == 1) {
                            if (checkStatus.data.length > 0) {
                                var rows = '';
                                for (var i = 0; i < data.length; i++) {
                                    rows += data[i].中箱码.toString() + ',';
                                }
                                rows = rows.substring(rows.length - 1, 0);
                                layer.open({
                                    type: 2
                                    , area: ['40%', '80%']
                                    , title: '打印模版选择'
                                    , shade: 0.6 //遮罩透明度
                                    , maxmin: false //允许全屏最小化
                                    , anim: 0 //0-6的动画形式,-1不开启
                                    , content: ['../../BaseSet/SRM_OpenTmpList.html?linterid=' + rows + '&MyMsg=' + rows + '&Type=HGy_BarCodeBill_MiddleBox', 'yes']
                                    , resize: false
                                })
                            }
                            else {
                                layer.msg(get_MessageError('[0000-1-016]请选择数据打印!', sessionStorage["HTranSlate"]));
                            }
                        }
                        else {
                            layer.alert(get_MessageError("无打印权限!", sessionStorage["HTranSlate"]), { icon: 5 });
                        }
                    }
                });
            }
            //#endregion
            //#endregion
            //进入页面显示的缓存列表
            function get_Display(sWhere) {
WebTM/views/ÖÊÁ¿¹ÜÀí/¹¤Ðò¼ìÑéµ¥/QC_ProcessCheckBillList2.html
@@ -226,6 +226,11 @@
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" id="set_DeleteBill" lay-event="set_DeleteBill"><i class="layui-icon layui-icon-delete"></i>删除</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" lay-event="btn-Audit" id="AuditButton"><i class="layui-icon layui-icon-radio"></i>审核</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" lay-event="btn-DeAudit" id="DeAuditButton"><i class="layui-icon layui-icon-circle"></i>反审核</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_startCheckBill" id="set_startCheckBill"><i class="layui-icon layui-icon-form"></i>发起审批</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="get_CheckFlowInfo" id="get_CheckFlowInfo"><i class="layui-icon layui-icon-form"></i>查看审批进度</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_CheckBill_Flow" id="CheckBill_Flow"><i class="layui-icon layui-icon-form"></i>多级审核</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_AbandonCheck_Flow" id="AbandonCheck_Flow"><i class="layui-icon layui-icon-form"></i>多级反审核</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_RejectCheck_Flow" id="RejectCheck_Flow"><i class="layui-icon layui-icon-form"></i>驳回</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" lay-event="btn-Close" id="btn-Close"><i class="layui-icon layui-icon-radio"></i>关闭</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" lay-event="btn-DeClose" id="btn-DeClose"><i class="layui-icon layui-icon-radio"></i>反关闭</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" lay-event="btn-Drop" id="btn-Drop"><i class="layui-icon layui-icon-radio"></i>作废</button>
@@ -331,6 +336,21 @@
                    //反审核按钮
                    case 'btn-DeAudit':
                        set_CheckBill(1);
                        break;
                    //发起审批
                    case 'set_startCheckBill': set_startCheckBill();
                        break;
                    //查看审批进度
                    case 'get_CheckFlowInfo': get_CheckFlowInfo();
                        break;
                    //多级审核
                    case 'set_CheckBill_Flow': set_CheckBill_Flow(0);
                        break;
                    //多级反审核
                    case 'set_AbandonCheck_Flow': set_CheckBill_Flow(1);
                        break;
                    //驳回
                    case 'set_RejectCheck_Flow': set_RejectCheck_Flow();
                        break;
                    //关闭按钮        ï¼ˆ1:关闭、2:反关闭)
                    case 'btn-Close':
@@ -1029,6 +1049,151 @@
                }
            }
            //#region å‘起审批
            function set_startCheckBill() {
                var checkStatus = table.checkStatus('mainTable')
                    , data = checkStatus.data;
                if (checkStatus.data.length === 1) {
                    var InterID = data[0].hmainid.toString();
                    //逻辑审核方法
                    $.ajax({
                        type: "GET",
                        url: GetWEBURL() + "/QC_ProcessCheckBill/StartCheckFlow", //方法所在页面和方法名
                        data: { "HInterID": InterID, "CurUserName": sessionStorage["HUserName"] },
                        success: function (result) {
                            if (result.count == 1) {
                                layer.msg(result.Message, { time: 1 * 1000, icon: 1 }, function () {
                                    // å¾—到frame索引
                                    var index = layer.getFrameIndex(window.name);
                                    //关闭当前frame
                                    layer.close(index);
                                    $("#btnSearch").trigger('click');
                                });
                            } else {
                                layer.alert(result.code + result.Message, { icon: 5 });
                            }
                        }, error: function () {
                            layer.alert("接口请求失败!", { icon: 5 });
                        }
                    });
                    //修改为功后刷新界面
                    $("#btnSearch").trigger('click');
                }
                else {
                    layer.msg('请选择一行数据审核!');
                }
            }
            //#endregion
            //#region æŸ¥çœ‹å®¡æ‰¹è¿›åº¦
            function get_CheckFlowInfo() {
                var checkStatus = table.checkStatus('mainTable')
                    , data = checkStatus.data;
                if (checkStatus.data.length === 1) {
                    var hID = data[0].hmainid.toString();
                    layer.open({
                        type: 2
                        , area: ['70%', '70%']
                        , title: '单据审批进度'
                        , closeBtn: 1
                        , shade: 0.6 //遮罩透明度
                        , maxmin: true //允许全屏最小化
                        , anim: 0 //0-6的动画形式,-1不开启
                        , content: '../../系统管理/多级审批/审批进度/Xt_CheckFlowProgressList.html?linterid=' + hID + '&HSouceBillType=' + 7505
                        , resize: false,
                        end: function () {
                            ////修改为功后刷新界面
                            //if (get_needClose_Bar == 0) {
                            //    $("#btnSearch").trigger('click');
                            //} else if (get_needClose_Bar == 1) {
                            //    $("#get_needClose").trigger('click');
                            //}
                        }
                        , cancel: function () {
                        }
                    })
                } else {
                    layer.msg('请选择一行数据查看!');
                }
            }
            //#endregion
            //#region å¤šçº§ åå®¡æ ¸/审核数据
            function set_CheckBill_Flow(num) {
                var checkStatus = table.checkStatus('mainTable')
                    , data = checkStatus.data;
                if (checkStatus.data.length === 1) {
                    var InterID = data[0].hmainid.toString();
                    //逻辑审核方法
                    $.ajax({
                        type: "GET",
                        url: GetWEBURL() + "/QC_ProcessCheckBill/AuditFlow", //方法所在页面和方法名
                        data: { "HInterID": InterID, "IsAudit": num, "CurUserName": sessionStorage["HUserName"], "CurUserID": sessionStorage["Czybm"] },
                        success: function (result) {
                            if (result.count == 1) {
                                layer.msg(result.Message, { time: 1 * 1000, icon: 1 }, function () {
                                    // å¾—到frame索引
                                    var index = layer.getFrameIndex(window.name);
                                    //关闭当前frame
                                    layer.close(index);
                                    //修改为功后刷新界面
                                    $("#btnSearch").trigger('click');
                                });
                            } else {
                                layer.alert(result.code + result.Message, { icon: 5 });
                            }
                        }, error: function () {
                            layer.alert("接口请求失败!", { icon: 5 });
                        }
                    });
                }
                else {
                    layer.msg('请选择一行数据审核!');
                }
            }
            //#endregion
            //#region é©³å›ž
            function set_RejectCheck_Flow(num) {
                var checkStatus = table.checkStatus('mainTable')
                    , data = checkStatus.data;
                if (checkStatus.data.length === 1) {
                    var InterID = data[0].hmainid.toString();
                    //逻辑审核方法
                    $.ajax({
                        type: "GET",
                        url: GetWEBURL() + "/QC_ProcessCheckBill/RejectCheckFlow", //方法所在页面和方法名
                        data: { "HInterID": InterID, "CurUserID": sessionStorage["Czybm"] },
                        success: function (result) {
                            if (result.count == 1) {
                                layer.msg(result.Message, { time: 1 * 1000, icon: 1 }, function () {
                                    // å¾—到frame索引
                                    var index = layer.getFrameIndex(window.name);
                                    //关闭当前frame
                                    layer.close(index);
                                });
                                //修改为功后刷新界面
                                $("#btnSearch").trigger('click');
                            } else {
                                layer.alert(result.code + result.Message, { icon: 5 });
                            }
                        }, error: function () {
                            layer.alert("接口请求失败!", { icon: 5 });
                        }
                    });
                }
                else {
                    layer.msg('请选择一行数据审核!');
                }
            }
            //#endregion
            //#region åå…³é—­/关闭数据
            function set_CloseBill(num) {
                var checkStatus = table.checkStatus('mainTable')
WebTM/views/ÖÊÁ¿¹ÜÀí/¼ìÑé·½°¸µ¥/QC_Add_CheckProject.html
@@ -872,6 +872,16 @@
                                            HQCCheckItemID: checkStatus.data[0].HItemID,
                                            HQCCheckItemNumber: checkStatus.data[0].代码,
                                            HQCCheckItemName: checkStatus.data[0].名称,
                                            ////
                                            HInspectMethodID: checkStatus.data[0].检验方法ID,
                                            HInspectMethodName: checkStatus.data[0].检验方法,
                                            HInspectInstruMentID: checkStatus.data[0].检验仪器ID,
                                            HInspectInstruMentName: checkStatus.data[0].检验仪器,
                                            HInspectBasisID: checkStatus.data[0].检验依据ID,
                                            HInspectBasisName: checkStatus.data[0].检验依据,
                                            HSampleSchemeID: checkStatus.data[0].抽样方案ID,
                                            HSampleSchemeName: checkStatus.data[0].抽样方案,
                                            HAnalysisMethod: checkStatus.data[0].分析方法,
                                        });
                                        layer.close(layer.index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                                    }
@@ -907,13 +917,26 @@
                                    //return false å¼€å¯è¯¥ä»£ç å¯ç¦æ­¢ç‚¹å‡»è¯¥æŒ‰é’®å…³é—­
                                },
                                end: function () {
                                    if (OptionData[0].禁用标记 !='Y' || OptionData[0].审核人 != "") {
                                    if (OptionData[0].审核人 != "") {
                                        //更新表格缓存的数据
                                        obj.update({
                                            "HQCCheckItemID": OptionData[0].HItemID
                                            , "HQCCheckItemNumber": OptionData[0].代码
                                            , "HQCCheckItemName": OptionData[0].名称
                                            , "HInspectBasisID": OptionData[0].检验依据
                                            , "HInspectBasisName": OptionData[0].检验依据
                                            , "HInspectMethodID": OptionData[0].检验方法ID
                                            , "HInspectMethodName": OptionData[0].检验方法
                                            , "HInspectInstruMentID": OptionData[0].检验仪器ID
                                            , "HInspectInstruMentName": OptionData[0].检验仪器
                                            , "HSampleSchemeID": OptionData[0].抽样方案ID
                                            , "HSampleSchemeName": OptionData[0].抽样方案
                                            , "HAnalysisMethod": OptionData[0].分析方法
                                        })
                                        $('#HAnalysisMethod').find("option[value='" + (OptionData[0].分析方法) + "']").attr("selected", true);
                                        form.render('select');
                                    } else {
                                        layer.msg("该检验项目已禁用未审核,请重新选择!");
                                    }
WebTM/views/ÖÊÁ¿¹ÜÀí/Ê×¼þ¼ìÑéµ¥/QC_FirstPieceCheckBillList2.html
@@ -221,13 +221,18 @@
                        <table class="" id="mainTable" lay-filter="mainTable"></table>
                        <div id="page" style="position: relative; bottom: 0;"></div>
                        <script type="text/html" id="toolbarDemo">
                            <div class="layui-btn-container"  id="toolbarDemo_ButtonSet">
                            <div class="layui-btn-container" id="toolbarDemo_ButtonSet">
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" lay-event="btn_Export" id="btn_Export"><i class="layui-icon layui-icon-export"></i>导出</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" id="btn-Add" lay-event="btn-Add"><i class="layui-icon layui-icon-form"></i>新增</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" id="btn-Edit" lay-event="btn-Edit"><i class="layui-icon layui-icon-form"></i>编辑</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" id="btn-Delete" lay-event="btn-Delete"><i class="layui-icon layui-icon-form"></i>删除</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" lay-event="btn-Audit" id="AuditButton"><i class="layui-icon layui-icon-radio"></i>审核</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" lay-event="btn-DeAudit" id="DeAuditButton"><i class="layui-icon layui-icon-circle"></i>反审核</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_startCheckBill" id="set_startCheckBill"><i class="layui-icon layui-icon-form"></i>发起审批</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="get_CheckFlowInfo" id="get_CheckFlowInfo"><i class="layui-icon layui-icon-form"></i>查看审批进度</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_CheckBill_Flow" id="CheckBill_Flow"><i class="layui-icon layui-icon-form"></i>多级审核</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_AbandonCheck_Flow" id="AbandonCheck_Flow"><i class="layui-icon layui-icon-form"></i>多级反审核</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="set_RejectCheck_Flow" id="RejectCheck_Flow"><i class="layui-icon layui-icon-form"></i>驳回</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" lay-event="btn-Close" id="btn-Close"><i class="layui-icon layui-icon-radio"></i>关闭</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" lay-event="btn-DeClose" id="btn-DeClose"><i class="layui-icon layui-icon-radio"></i>反关闭</button>
                                <button type="button" class="layui-btn layui-btn-sm" style="display:none;" lay-event="btn-Drop" id="btn-Drop"><i class="layui-icon layui-icon-radio"></i>作废</button>
@@ -396,6 +401,21 @@
                    //反审核按钮
                    case 'btn-DeAudit':
                        set_CheckBill(1);
                        break;
                    //发起审批
                    case 'set_startCheckBill': set_startCheckBill();
                        break;
                    //查看审批进度
                    case 'get_CheckFlowInfo': get_CheckFlowInfo();
                        break;
                    //多级审核
                    case 'set_CheckBill_Flow': set_CheckBill_Flow(0);
                        break;
                    //多级反审核
                    case 'set_AbandonCheck_Flow': set_CheckBill_Flow(1);
                        break;
                    //驳回
                    case 'set_RejectCheck_Flow': set_RejectCheck_Flow();
                        break;
                    //关闭按钮        ï¼ˆ1:关闭、2:反关闭)
                    case 'btn-Close':
@@ -1033,6 +1053,150 @@
            }
            //#endregion
            //#region å‘起审批
            function set_startCheckBill() {
                var checkStatus = table.checkStatus('mainTable')
                    , data = checkStatus.data;
                if (checkStatus.data.length === 1) {
                    var InterID = data[0].hmainid.toString();
                    //逻辑审核方法
                    $.ajax({
                        type: "GET",
                        url: GetWEBURL() + "/QC_FirstPieceCheckBill/StartCheckFlow", //方法所在页面和方法名
                        data: { "HInterID": InterID, "CurUserName": sessionStorage["HUserName"] },
                        success: function (result) {
                            if (result.count == 1) {
                                layer.msg(result.Message, { time: 1 * 1000, icon: 1 }, function () {
                                    // å¾—到frame索引
                                    var index = layer.getFrameIndex(window.name);
                                    //关闭当前frame
                                    layer.close(index);
                                    $("#btnSearch").trigger('click');
                                });
                            } else {
                                layer.alert(result.code + result.Message, { icon: 5 });
                            }
                        }, error: function () {
                            layer.alert("接口请求失败!", { icon: 5 });
                        }
                    });
                    //修改为功后刷新界面
                    $("#btnSearch").trigger('click');
                }
                else {
                    layer.msg('请选择一行数据审核!');
                }
            }
            //#endregion
            //#region æŸ¥çœ‹å®¡æ‰¹è¿›åº¦
            function get_CheckFlowInfo() {
                var checkStatus = table.checkStatus('mainTable')
                    , data = checkStatus.data;
                if (checkStatus.data.length === 1) {
                    var hID = data[0].hmainid.toString();
                    layer.open({
                        type: 2
                        , area: ['70%', '70%']
                        , title: '单据审批进度'
                        , closeBtn: 1
                        , shade: 0.6 //遮罩透明度
                        , maxmin: true //允许全屏最小化
                        , anim: 0 //0-6的动画形式,-1不开启
                        , content: '../../系统管理/多级审批/审批进度/Xt_CheckFlowProgressList.html?linterid=' + hID + '&HSouceBillType=' + 7507
                        , resize: false,
                        end: function () {
                            ////修改为功后刷新界面
                            //if (get_needClose_Bar == 0) {
                            //    $("#btnSearch").trigger('click');
                            //} else if (get_needClose_Bar == 1) {
                            //    $("#get_needClose").trigger('click');
                            //}
                        }
                        , cancel: function () {
                        }
                    })
                } else {
                    layer.msg('请选择一行数据查看!');
                }
            }
            //#endregion
            //#region å¤šçº§ åå®¡æ ¸/审核数据
            function set_CheckBill_Flow(num) {
                var checkStatus = table.checkStatus('mainTable')
                    , data = checkStatus.data;
                if (checkStatus.data.length === 1) {
                    var InterID = data[0].hmainid.toString();
                    //逻辑审核方法
                    $.ajax({
                        type: "GET",
                        url: GetWEBURL() + "/QC_FirstPieceCheckBill/AuditFlow", //方法所在页面和方法名
                        data: { "HInterID": InterID, "IsAudit": num, "CurUserName": sessionStorage["HUserName"], "CurUserID": sessionStorage["Czybm"] },
                        success: function (result) {
                            if (result.count == 1) {
                                layer.msg(result.Message, { time: 1 * 1000, icon: 1 }, function () {
                                    // å¾—到frame索引
                                    var index = layer.getFrameIndex(window.name);
                                    //关闭当前frame
                                    layer.close(index);
                                    //修改为功后刷新界面
                                    $("#btnSearch").trigger('click');
                                });
                            } else {
                                layer.alert(result.code + result.Message, { icon: 5 });
                            }
                        }, error: function () {
                            layer.alert("接口请求失败!", { icon: 5 });
                        }
                    });
                }
                else {
                    layer.msg('请选择一行数据审核!');
                }
            }
            //#endregion
            //#region é©³å›ž
            function set_RejectCheck_Flow(num) {
                var checkStatus = table.checkStatus('mainTable')
                    , data = checkStatus.data;
                if (checkStatus.data.length === 1) {
                    var InterID = data[0].hmainid.toString();
                    //逻辑审核方法
                    $.ajax({
                        type: "GET",
                        url: GetWEBURL() + "/QC_FirstPieceCheckBill/RejectCheckFlow", //方法所在页面和方法名
                        data: { "HInterID": InterID, "CurUserID": sessionStorage["Czybm"] },
                        success: function (result) {
                            if (result.count == 1) {
                                layer.msg(result.Message, { time: 1 * 1000, icon: 1 }, function () {
                                    // å¾—到frame索引
                                    var index = layer.getFrameIndex(window.name);
                                    //关闭当前frame
                                    layer.close(index);
                                });
                                //修改为功后刷新界面
                                $("#btnSearch").trigger('click');
                            } else {
                                layer.alert(result.code + result.Message, { icon: 5 });
                            }
                        }, error: function () {
                            layer.alert("接口请求失败!", { icon: 5 });
                        }
                    });
                }
                else {
                    layer.msg('请选择一行数据审核!');
                }
            }
            //#endregion
            //#region åå…³é—­/关闭数据
            function set_CloseBill(num) {
                var checkStatus = table.checkStatus('mainTable')
WebTM/views/³µ¼ä¹ÜÀí/µ¥Æ·¹ýÕ¾_СÎÀ/Cj_ProcessItemStationPlatform_KeyElement_Sec.html
@@ -80,6 +80,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;">追溯单号</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
                                                <input type="text" class="layui-input" name="HBillNo" lay-verify="HBillNo" id="HBillNo" style="background-color:#EDEDED;" readonly>
@@ -294,6 +300,7 @@
        var option = [];
        var option2 = [];
        var rowarr = [];//关键件清单
        var previousHBarCode = "";
        //#endregion
        //#region è¿›å…¥é¡µé¢å³åŠ è½½
@@ -341,6 +348,9 @@
                if ($('#HProcExchBillNo').val() == "") {
                    $('#HBarCode_SN').val("");
                    return layer.alert("请先选择流转卡")
                }
                if (!checkHSNAndDate(HBarCode_SN)) {
                    return
                }
@@ -708,7 +718,74 @@
            });
            return result;
        }
        //校验 äº§å“å’Œå¹´æœˆ
        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;
        }
        //加载历史过站清单信息
WebTM/views/³µ¼ä¹ÜÀí/µ¥Æ·¹ýÕ¾_СÎÀ/Cj_ProcessItemStationPlatform_UnbindList.html
@@ -500,16 +500,19 @@
                    sWhere += " and " + ColName2 + " " + com2;
                }
                if (HICMOBillNo) {
                    sWhere += " and ç”Ÿäº§è®¢å•号 like '%" + HICMOBillNo + "%'";
                    sWhere += " and å·¥å•编号 like '%" + HICMOBillNo + "%'";
                }
                if (HBarcode_SN) {
                    sWhere += " and DSN like '%" + HBarcode_SN + "%'";
                }
                if (HBarcode_ZB) {
                    sWhere += "and  ç®¡åˆ¶åºå· like 'P%' and ç®¡åˆ¶åºå· like '%XXX' and ç®¡åˆ¶åºå·='" + HBarcode_ZB+"'";
                    sWhere += "and  æ ˆæ¿ç  like '%" + HBarcode_ZB + "%'";
                }
                if (HBarcode_ZX) {
                    sWhere += "and ç®¡åˆ¶åºå· like 'MZXH%' and ç®¡åˆ¶åºå·='" + HBarcode_ZX+"'";
                    sWhere += "and  ä¸­ç®±ç  like '%" + HBarcode_ZX + "%'";
                }
                get_Display(sWhere);
@@ -550,7 +553,7 @@
                            item[itemobj] = "";
                        }
                        if (item[itemobj].length > 0) {  // å‡è®¾å­—段名为field
                            item[itemobj] = item[itemobj].toString().replaceALL(/[\r\n]+/g, '');  // å°†æ¢è¡Œç¬¦æ›¿æ¢ä¸ºç©ºå­—符串
                            item[itemobj] = item[itemobj].toString().replace(/[\r\n]+/g, '').replace(/[\r\n]+/g, '').replace(/[\r\n]+/g, '');  // å°†æ¢è¡Œç¬¦æ›¿æ¢ä¸ºç©ºå­—符串
                        }
                    }
                });
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>
@@ -237,6 +243,7 @@
        var params = get_UrlVars();
        var HModName = "Cj_ProcessItemStationPlatform_batch";
        var option = [];
        var previousHBarCode = "";
        //#endregion
        //#region è¿›å…¥é¡µé¢å³åŠ è½½
@@ -281,6 +288,9 @@
                if ($("#HBarCode_Batch").val() == "" || $("#HBarCode_Batch").val() == null) {
                    layer.msg("未扫批次码请先扫码");
                    $("#HBarCode_Batch").focus();
                    return
                }
                if (!checkHSNAndDate(HBarCode_SN)) {
                    return
                }
                if (HBarCode_SN) {
@@ -530,6 +540,75 @@
            });
        }
        //校验 äº§å“å’Œå¹´æœˆ
        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')
WebTM/views/³µ¼ä¹ÜÀí/µ¥Æ·¹ýÕ¾_СÎÀ/Cj_ProcessItemStationPlatform_batchKeyElement.html
@@ -64,11 +64,17 @@
                                                <input type="text" class="layui-input" name="HBarCode_BatchSec" lay-verify="HBarCode_BatchSec" id="HBarCode_BatchSec" style="background-color:#efefef4d;" readonly>
                                            </div>
                                        </div>
                                        <div class="layui-inline">
                                        <div class="layui-inline" style="display: none">
                                            <label class="layui-form-label" style="width: 85px;">追溯单号</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
                                                <input type="text" class="layui-input" name="HBillNo" lay-verify="HBillNo" id="HBillNo" style="background-color:#EDEDED;" readonly>
                                                <input type="hidden" name="HInterID" id="HInterID" lay-verify="HInterID">
                                            </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">
@@ -288,6 +294,7 @@
        var HModName2 = "Cj_ProcessItemStationPlatform_batchKeyElement2";
        var option = [];
        var option2 = [];
        var previousHBarCode = "";
        //#endregion
        //#region è¿›å…¥é¡µé¢å³åŠ è½½
@@ -365,6 +372,9 @@
                if ($("#HBarCode_Batch").val() == "" || $("#HBarCode_Batch").val() == null) {
                    layer.msg("未扫批次码请先扫码");
                    $("#HBarCode_Batch").focus();
                    return
                }
                if (!checkHSNAndDate(HBarCode_SN)) {
                    return
                }
                if (HBarCode_SN) {
@@ -862,6 +872,74 @@
        }
        //#endregion
        //校验 äº§å“å’Œå¹´æœˆ
        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();
WebTM/views/³µ¼ä¹ÜÀí/µ¥Æ·¹ýÕ¾_СÎÀ/Cj_ProcessItemStationPlatform_checkPackage_Sec.html
@@ -80,6 +80,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;">追溯单号</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
                                                <input type="text" class="layui-input" name="HBillNo" lay-verify="HBillNo" id="HBillNo" style="background-color:#EDEDED;" readonly>
@@ -294,6 +300,7 @@
        var option = [];
        var option2 = [];
        var rowarr = [];//关键件清单
        var previousHBarCode = "";
        //#endregion
        //#region è¿›å…¥é¡µé¢å³åŠ è½½
@@ -342,7 +349,9 @@
                    $('#HBarCode_SN').val("");
                    return layer.alert("请先选择流转卡")
                }
                if (!checkHSNAndDate(HBarCode_SN)) {
                    return
                }
                if (HBarCode_SN) {
                    txtHBarCodeSN_KeyDown(HBarCode_SN);
@@ -709,7 +718,74 @@
            return result;
        }
        //校验 äº§å“å’Œå¹´æœˆ
        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 = '') {
WebTM/views/³µ¼ä¹ÜÀí/µ¥Æ·¹ýÕ¾_СÎÀ/Cj_ProcessItemStationPlatform_checkSN.html
@@ -86,6 +86,12 @@
                                                <input type="text" class="layui-input" name="HSNNo" lay-verify="HSNNo" id="HSNNo" style="background-color:#efefef4d;" readonly>
                                            </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">
                                            <label class="layui-form-label" style="width: 85px; color: red; ">打印模板</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
@@ -273,6 +279,7 @@
        var HModName = "Cj_ProcessItemStationPlatform_checkSN";
        //var HModName2 = "Cj_ProcessItemStationPlatform_batch2";
        var option = [];
        var previousHBarCode = "";
        //var option2 = [];
        //#endregion
@@ -304,6 +311,9 @@
        $('#HBarCode_SN').on('keydown', function (event) {
            var HBarCode = $('#HBarCode_SN').val();
            if (event.keyCode == 13) {
                if (!checkHSNAndDate(HBarCode)) {
                    return
                }
                //如果镭雕码不为空
                if (HBarCode) {
                    txtHBarCode_KeyDown(HBarCode);
@@ -563,6 +573,74 @@
            });
        }
        //校验 äº§å“å’Œå¹´æœˆ
        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 = '') {
WebTM/views/³µ¼ä¹ÜÀí/µ¥Æ·¹ýÕ¾_СÎÀ/Cj_ProcessItemStationPlatform_generateSNCode.html
@@ -84,6 +84,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">
                                            <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"
@@ -270,6 +276,7 @@
        var HModName = "Cj_ProcessItemStationPlatform_generateSN";
        //var HModName2 = "Cj_ProcessItemStationPlatform_batch2";
        var option = [];
        var previousHBarCode = "";
        //var option2 = [];
        //#endregion
@@ -328,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);
@@ -632,6 +643,75 @@
        }
        //校验 äº§å“å’Œå¹´æœˆ
        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();
WebTM/views/ÏîÄ¿¹ÜÀí/¹¤×÷ÈÎÎñ/PM_WorkTaskBillList.html
@@ -655,10 +655,10 @@
            //#region å¿«é€Ÿè¿‡æ»¤
            function get_FastQuery(number) {
                //获取登录账户对应职员名称
                var HUserName = getHEmpByHUserName();
                if (HUserName != "" && HUserName != null) {
                    sWhere += " and (派单人 = '" + HUserName + "' or æŽ¥å•人 = '" + HUserName + "' or æŠ„送人 like '%" + HUserName + "%') ";
                }
                //var HUserName = getHEmpByHUserName();
                //if (HUserName != "" && HUserName != null) {
                //    sWhere += " and (派单人 = '" + HUserName + "' or æŽ¥å•人 = '" + HUserName + "' or æŠ„送人 like '%" + HUserName + "%') ";
                //}
                var HOrgID = "";
                var HBillNo = $("#HBillNo").val();  //单据号