zrg
2024-08-13 ba1fb184917b1651221a6decf1144911ff489f86
WebTM/views/²É¹º¹ÜÀí/²É¹º¶©µ¥/Cg_POOrderBillEdit.html
@@ -15,6 +15,7 @@
    <script src="../../../layuiadmin/Scripts/webConfig.js"></script>
    <script src="../../../layuiadmin/PubCustom.js"></script>
    <script src="../../../layuiadmin/zgqCustom/zgqCustom.js"></script>
    <script src="../../../layuiadmin/PageTitle.js"></script>
    <style type="text/css">
        .layui-form-item .layui-inline {
            margin-right: 0;
@@ -45,6 +46,7 @@
                    <div class="layui-card-header">
                        <div class="layui-btn-group">
                            <button type="button" id="add-btn" class="layui-btn layui-btn-normal layui-btn-radius" lay-submit="" lay-filter="set_SaveBill">保存</button>
                            <button type="button" id="print-btn" class="layui-btn layui-btn-normal layui-btn-radius layui-btn-disabled" lay-submit="" lay-filter="get_PrintReport" disabled>打印</button>
                            <button type="button" class="layui-btn layui-btn-normal layui-btn-radius" lay-submit="" lay-filter="Exit">退出</button>
                        </div>
                    </div>
@@ -60,15 +62,15 @@
                                <div class="layui-form-item" style="padding-top: 10px;">
                                    <div class="layui-row">
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">单据号</label>
                                            <label class="layui-form-label">单据号<label style="color:red"> * </label></label>
                                            <div class="layui-input-inline">
                                                <input type="text" class="layui-input" name="HBillNo" id="HBillNo" style="background-color:#efefef4d;" readonly>
                                                <input type="hidden" name="HInterID" id="HInterID" value="0">
                                                <input type="hidden" name="HSTOCKORGID" id="HSTOCKORGID" lay-verify="HSTOCKORGID">
                                                <input type="hidden" name="HSTOCKORGID" id="HSTOCKORGID" lay-verify="HSTOCKORGID" value="0">
                                            </div>
                                        </div>
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">日期</label>
                                            <label class="layui-form-label">日期<label style="color:red"> * </label></label>
                                            <div class="layui-input-inline">
                                                <input class="layui-input" name="HDate" id="HDate" autocomplete="off" model="datetime" dateFormat="yyyy-MM-dd" placeholder="yyyy-MM-dd">
                                            </div>
@@ -76,13 +78,23 @@
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">辅助字段</label>
                                            <div class="layui-input-inline">
                                                <input class="layui-input" name="HInnerBillNo" id="HInnerBillNo" autocomplete="off" readonly>
                                                <input class="layui-input" name="HInnerBillNo" id="HInnerBillNo" autocomplete="off" style="background-color:#efefef4d;" readonly>
                                            </div>
                                        </div>
                                    </div>
                                    <div class="layui-row">
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">币别</label>
                                    <div class="layui-row">
                                        <div class="layui-inline" >
                                            <label class="layui-form-label">供应商<label style="color:red"> * </label></label>
                                            <div class="layui-input-inline" style="width:440px">
                                                <input type="text" name="HSupName" id="HSupName" class="layui-input" value="" style="float:left;width:400px;">
                                                <input type="hidden" name="HSupID" id="HSupID" class="layui-input" value="0" style="float:left;width:400px;">
                                                <button type="button" lay-submit="" class="layui-btn" lay-filter="HSupList" style="width:40px;">
                                                    <i class="layui-icon layui-icon-search layuiadmin-button-btn" style="margin-left:-9px;"></i>
                                                </button>
                                            </div>
                                        </div>
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width:50px">币别<label style="color:red"> * </label></label>
                                            <div class="layui-input-inline">
                                                <input type="text" name="HCurName" id="HCurName" class="layui-input" value="" style="float:left;width:150px;">
                                                <input type="hidden" name="HCurID" id="HCurID" class="layui-input" value="0" style="float:left;width:150px;">
@@ -91,22 +103,17 @@
                                                </button>
                                            </div>
                                        </div>
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">汇率</label>
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="margin-left: 238px">汇率<label style="color:red"> * </label></label>
                                            <div class="layui-input-inline">
                                                <input class="layui-input" name="HExRate" id="HExRate" autocomplete="off" value="0">
                                                <input class="layui-input" name="HExRate" id="HExRate" autocomplete="off" value="0" style="background-color:#efefef4d;"readonlys>
                                            </div>
                                        </div>
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">交货地点</label>
                                            <div class="layui-input-inline">
                                                <input class="layui-input" name="HAddress" id="HAddress" autocomplete="off">
                                            </div>
                                        </div>
                                    </div>
                                    <div class="layui-row">
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">采购员</label>
                                            <label class="layui-form-label">采购员<label style="color:red"> * </label></label>
                                            <div class="layui-input-inline">
                                                <input type="text" name="HEmpName" id="HEmpName" class="layui-input" value="" style="float:left;width:150px;">
                                                <input type="hidden" name="HEmpID" id="HEmpID" class="layui-input" value="0" style="float:left;width:150px;">
@@ -116,7 +123,7 @@
                                            </div>
                                        </div>
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">采购部门</label>
                                            <label class="layui-form-label">采购部门<label style="color:red"> * </label></label>
                                            <div class="layui-input-inline">
                                                <input type="text" name="HDeptName" id="HDeptName" class="layui-input" value="" style="float:left;width:150px;">
                                                <input type="hidden" name="HDeptID" id="HDeptID" class="layui-input" value="0" style="float:left;width:150px;">
@@ -126,15 +133,16 @@
                                            </div>
                                        </div>
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">供应商</label>
                                            <label class="layui-form-label">采购方式<label style="color:red"> * </label></label>
                                            <div class="layui-input-inline">
                                                <input type="text" name="HSupName" id="HSupName" class="layui-input" value="" style="float:left;width:150px;">
                                                <input type="hidden" name="HSupID" id="HSupID" class="layui-input" value="0" style="float:left;width:150px;">
                                                <button type="button" lay-submit="" class="layui-btn" lay-filter="HSupList" style="width:40px;">
                                                <input type="text" name="HPSStyleName" id="HPSStyleName" class="layui-input" value="" style="float:left;width:150px;">
                                                <input type="hidden" name="HPSStyleID" id="HPSStyleID" class="layui-input" value="0" style="float:left;width:150px;">
                                                <button type="button" lay-submit="" class="layui-btn" lay-filter="HPSStyleList" style="width:40px;">
                                                    <i class="layui-icon layui-icon-search layuiadmin-button-btn" style="margin-left:-9px;"></i>
                                                </button>
                                            </div>
                                        </div>
                                        </div>
                                    </div>
                                    <div class="layui-row">
                                        <div class="layui-col-xs4 layui-inline">
@@ -148,17 +156,13 @@
                                            </div>
                                        </div>
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">采购方式</label>
                                            <label class="layui-form-label">交货地点</label>
                                            <div class="layui-input-inline">
                                                <input type="text" name="HPSStyleName" id="HPSStyleName" class="layui-input" value="" style="float:left;width:150px;">
                                                <input type="hidden" name="HPSStyleID" id="HPSStyleID" class="layui-input" value="0" style="float:left;width:150px;">
                                                <button type="button" lay-submit="" class="layui-btn" lay-filter="HPSStyleList" style="width:40px;">
                                                    <i class="layui-icon layui-icon-search layuiadmin-button-btn" style="margin-left:-9px;"></i>
                                                </button>
                                                <input class="layui-input" name="HAddress" id="HAddress" autocomplete="off">
                                            </div>
                                        </div>
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">结算方式</label>
                                            <label class="layui-form-label">结算方式<label style="color:red"> * </label></label>
                                            <div class="layui-input-inline">
                                                <input type="text" name="HSSName" id="HSSName" class="layui-input" value="" style="float:left;width:150px;">
                                                <input type="hidden" name="HSSID" id="HSSID" class="layui-input" value="0" style="float:left;width:150px;">
@@ -169,20 +173,20 @@
                                        </div>
                                    </div>
                                    <!--<div class="layui-row">
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">联系人</label>
                                            <div class="layui-input-inline">
                                                <input class="layui-input" name="HLinkMan" id="HLinkMan" autocomplete="off">
                                            </div>
                                        </div>
        <div class="layui-col-xs4 layui-inline">
            <label class="layui-form-label">联系人</label>
            <div class="layui-input-inline">
                <input class="layui-input" name="HLinkMan" id="HLinkMan" autocomplete="off">
            </div>
        </div>
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">联系电话</label>
                                            <div class="layui-input-inline">
                                                <input class="layui-input" name="HLinkPhone" id="HLinkPhone" autocomplete="off">
                                            </div>
                                        </div>
                                    </div>-->
        <div class="layui-col-xs4 layui-inline">
            <label class="layui-form-label">联系电话</label>
            <div class="layui-input-inline">
                <input class="layui-input" name="HLinkPhone" id="HLinkPhone" autocomplete="off">
            </div>
        </div>
    </div>-->
                                    <div class="layui-row">
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">结算日期</label>
@@ -190,10 +194,50 @@
                                                <input class="layui-input" name="HSSDate" id="HSSDate" autocomplete="off" model="datetime" dateFormat="yyyy-MM-dd" placeholder="yyyy-MM-dd">
                                            </div>
                                        </div>
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">项目编码</label>
                                            <div class="layui-input-inline">
                                                <input type="text" name="HProjectNumber" id="HProjectNumber" class="layui-input" value="" style="float: left; width: 150px; background-color: #efefef4d;" readonly>
                                                <input type="hidden" name="HProjectID" id="HProjectID" class="layui-input" value="0" style="float: left; width: 150px; background-color: #efefef4d;">
                                                <button type="button" lay-submit="" class="layui-btn" lay-filter="btnHProjectID" style="width:40px;">
                                                    <i class="layui-icon layui-icon-search layuiadmin-button-btn" style="margin-left:-9px;"></i>
                                                </button>
                                            </div>
                                        </div>
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">项目名称</label>
                                            <div class="layui-input-inline">
                                                <input class="layui-input" name="HProjectName" id="HProjectName" style="background-color:#efefef4d;" readonly autocomplete="off">
                                            </div>
                                        </div>
                                    </div>
                                    <div class="layui-row" style="margin-top:10px;">
                                        <div class="layui-col-xs4 layui-inline">
                                            <label class="layui-form-label">仓库</label>
                                            <div class="layui-input-inline">
                                                <input type="text" name="HWHName" id="HWHName" class="layui-input" value="" style="float: left; width: 150px; background-color: #efefef4d;" readonly>
                                                <input type="hidden" name="HWHID" id="HWHID" class="layui-input" value="0" style="float: left; width: 150px; background-color: #efefef4d;">
                                                <button type="button" lay-submit="" class="layui-btn" lay-filter="btnHWHID" style="width:40px;">
                                                    <i class="layui-icon layui-icon-search layuiadmin-button-btn" style="margin-left:-9px;"></i>
                                                </button>
                                            </div>
                                        </div>
                                    </div>
                                    <div class="layui-row" style="margin-top:10px;">
                                        <div class="layui-col-xs7 layui-inline">
                                            <label class="layui-form-label">备注</label>
                                            <div class="layui-input-block">
                                                <input class="layui-input" name="HRemark" id="HRemark" autocomplete="off">
                                            </div>
                                        </div>
                                    </div>
                                    <div class="layui-row" style="margin-top:10px;">
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width: 85px;">组织<label style="color:red"> * </label></label>
                                            <div class="layui-input-block" style="margin-left: 120px; width: 501px;">
                                                <select name="HOrgID" id="HOrgID" lay-verify="HOrgID">
                                                    <!--动态渲染组织-->
                                                </select>
                                            </div>
                                        </div>
                                    </div>
@@ -282,6 +326,8 @@
                        <div class="layui-btn-container">
                            <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-AddLine"><i class="layui-icon layui-icon-form"></i>增加一行</button>
                            <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-CopyLine"><i class="layui-icon layui-icon-form"></i>复制一行</button>
                            <button type="button" class="layui-btn layui-btn-sm" lay-event="get_Inventory" id="get_Inventory"><i class="layui-icon layui-icon-form"></i>库存查询</button>
                            <button type="button" class="layui-btn layui-btn-sm" lay-event="get_InOutSum" id="get_InOutSum"><i class="layui-icon layui-icon-form"></i>出入库记录查询</button>
                            <button type="button" class="layui-btn layui-btn-sm" lay-event="set_HideColumn"><i class="layui-icon layui-icon-form"></i>列设置</button>
                        </div>
                    </script>
@@ -323,81 +369,144 @@
            var allVal;
            //#endregion
            //记录组织的值
            var HOrgIDBar = 0;      //声明了一个名为 HOrgIDBar çš„变量,并将其初始化为 0
            //#region è¿›å…¥é¡µé¢å³åŠ è½½
            //判断是否登录 æœªç™»å½•则跳到登录页
            get_LoginIs();
            get_LoginIs();  //执行登入方法
            var HModuleType = "1102";
            //通过单据类型,从数据库动态获取单据模块命名
            var HPageTitle = "";
            get_PageTitle(HModuleType);
            //#region ã€åŠ¨æ€èŽ·å–æ¨¡å—åç§°ã€‘
            var HModuleType = "1102";       //定义一个字符串赋值  ç±»åž‹ç»™hmoduletype  å˜é‡
            //通过单据类型,从数据库动态获取单据模块命名,引用js文件 PageTitle.js
            var HPageTitle = get_PageTitle(HModuleType) == "" ? $("h1").html() : get_PageTitle(HModuleType);  //通过HModuleType  å•据类型获取并可能引用了一个名为 PageTitle.js çš„JavaScript文件根据get_PageTitle函数方法获取HModuleType
            $("h1").html('<b>' + HPageTitle + '</b>'); //值来显示h1页面
            //#endregion
            //获取页面跳转参数
            var params = get_UrlVars();
            var OperationType = params[params[0]]; //从参数中获取 æ•°æ®ç±»åž‹  1添加 ä¿å­˜  2复制  3 ç¼–辑
            var linterid = params[params[1]]; //从参数中获取 å•据内码
            $("#HUSEORGID").val(sessionStorage["OrganizationID"]);
            $("#HUSEORGID").val(sessionStorage["OrganizationID"]);  // èŽ·å– ä¸ºHUSEORGID的元素的值设置为当前会话中存储在sessionStorage中名为OrganizationID的值
            //#region åˆå§‹åŒ–组织
            Organ();     //执行登入方法
            //#endregion
            //#region èŽ·å–ç»„ç»‡
            function Organ() {
                //获取登录页组织列
                var Organization = '';  //定义一给参数设置为空字符串
                $.ajax({                //异步请求
                    type: "get",           //请求类型
                    url: GetWEBURL() + "/Web/GetOrganizations", // //请求路径地址
                    success: function (result) {    // å½“请求成功时,执行这个函数
                        if (result.count == 1) { // è¯´æ˜ŽéªŒè¯æˆåŠŸäº†ï¼Œ   // å¦‚果服务器返回的数据中的`count`字段等于1,这可能表示审核操作成功执行
                            var data = result.data;    //从响应数据中获取 data å±žæ€§  èµ‹å€¼ç»™å˜é‡
                            for (var i = 0; i < data.length; i++) {  //  // éåކ data æ•°ç»„
                      // å¯¹äºŽæ•°ç»„中的每一项,构建一个 <option> æ ‡ç­¾çš„ HTML å­—符串,并将其追加到 Organization å˜é‡ä¸­ã€‚这个 <option> æ ‡ç­¾åŒ…含组织的 ID ä½œä¸º value å’Œç»„织的名称作为显示文本,且文字颜色被设置为蓝色
                                Organization += '<option  style="color:blue;" value="' + data[i].ID + '">' + data[i].Name + '</option>';
                            }
                            $("#HOrgID").append(Organization);  //获取id为HOrgID字段 ä½¿ç”¨append æ–¹æ³•å°† Organization å˜é‡ä¸­çš„ HTML å­—符串添加到HOrgID
                            if (OperationType == 1 || OperationType == 4 || OperationType == null) {// // è¿™é‡Œæ£€æŸ¥ OperationType å˜é‡çš„值
                                HOrgIDBar = sessionStorage["OrganizationID"];  //从 sessionStorage ä¸­èŽ·å–åä¸º "OrganizationID" çš„项的值,赋值给变量
                            }
                            $("#HOrgID").val(HOrgIDBar);  //获取ID ä¸º HOrgID å…ƒç´ çš„选中项的值为 HOrgIDBar å˜é‡çš„值。。
                            form.render('select');  //渲染页面上的 select å…ƒç´ 
                        }
                        layer.closeAll("loading");  //关闭所有类型为 "loading" çš„ layer å¼¹å‡ºå±‚
                    }
                })
            }
            //#endregion
            //判断是否新增
            if (linterid == null || linterid == 0) {
            if (linterid == null || linterid == 0) {    //判断 linterid å˜é‡æ˜¯å¦ä¸ºç©ºæˆ–者等于0
                //获取最大单据号 new
                $("#HMaker").val(sessionStorage["HUserName"]);
                $("#HInterID").val("0");
                $("#HBillNo").val("");
                $.ajax({
                    url: GetWEBURL() + "/Web/GetMAXNum",
                    type: "GET",
                    data: { "HBillType": '1102' },
                    success: function (d) {
                OptionData = 1;  // å°†å˜é‡ OptionData è®¾ç½®ä¸º 1。这个变量可能用于控制某些逻辑或行为
                $("#HMaker").val(sessionStorage["HUserName"]);   //通过HMaker  id获取 å­˜å‚¨å™¨  sessionStorage中HUserName键对应的值
                $("#HInterID").val("0");                // å°è¯•获取id ä¸º HInterID的元素 å­—符串为‘’0‘’的值             å°† ID ä¸º HInterID çš„元素的值设置为 "0"
                $("#HBillNo").val("");                  // å°è¯•获取id ä¸º HBillNo的元素的值元素清空,即设置为空字符串。
                $.ajax({                            //异步请求
                    url: GetWEBURL() + "/Web/GetMAXNum",//请求地址
                    type: "GET",                    //请求类型
                    data: { "HBillType": '1102' },      //请求值 HBillType类型  è®¾ç½®å­—符串为1102   //请求参数  hbillteyp  å€¼ä¸º1100
                    success: function (d) {  // å®šä¹‰å½“请求成功时的回调函数。这个函数接受一个参数 d包含了服务器响应的数据
                        //console.log(d.data);
                        $("#HBillNo").val(d.data[0].HBillNo);
                        $("#HDate").val(Format(new Date(), "yyyy-MM-dd"));
                        $("#HInterID").val(d.data[0].HInterID);
                        $("#HSSDate").val(Format(new Date(), "yyyy-MM-dd")); //结算方式
                        $("#HBillNo").val(d.data[0].HBillNo);     //设置 ID ä¸º HBillNo çš„元素的值为响应数据中 data æ•°ç»„的第一个元素的 HBillNo å±žæ€§å€¼    é€šå¸¸ç”¨äºŽè‡ªåŠ¨å¡«å……æœ€å¤§å•æ®å·
                        $("#HDate").val(Format(new Date(), "yyyy-MM-dd"));//调用 Format çš„函数,将当前日期格式化为 "yyyy-MM-dd" æ ¼å¼ï¼Œå¹¶è®¾ç½® ID ä¸º HDate çš„元素的值。   ç”¨äºŽè‡ªåŠ¨å¡«å……å•æ®çš„æ—¥æœŸ
                        $("#HInterID").val(d.data[0].HInterID);             //更新 ID ä¸º HInterID çš„元素的值为响应数据中 data æ•°ç»„的第一个元素的 HInterID å±žæ€§å€¼ã€‚
                        $("#HSSDate").val(Format(new Date(), "yyyy-MM-dd")); //结算方式           å†æ¬¡è°ƒç”¨ Format å‡½æ•°å°†å½“前日期格式化为 "yyyy-MM-dd" æ ¼å¼ï¼Œå¹¶è®¾ç½® ID ä¸º HSSDate çš„元素的值
                    }
                });
                //页面初始化加载
                $("#HDeptID").val(sessionStorage["HDeptID"]);  // èŽ·å–é¡µé¢ä¸ŠID为"HDeptID"的元素的值设置为sessionStorage中"HDeptID"键对应的值
                $("#HDeptName").val(sessionStorage["HDept"]);  // èŽ·å–é¡µé¢ä¸ŠID为"HDeptName"的元素的值设置为sessionStorage中"HDeptName"键对应的值
                $("#HEmpName").val(sessionStorage["HUserName"]);   // èŽ·å–é¡µé¢ä¸ŠID为"HEmpName"的元素的值设置为sessionStorage中"HEmpName"键对应的值
                $("#HEmpID").val(sessionStorage["HEmpID"]);     // èŽ·å–é¡µé¢ä¸ŠID为"HEmpID"的元素的值设置为sessionStorage中"HEmpID"键对应的值
                //根据当前登录用户的部门 èŽ·å– ä¸»ç®¡
                if ($("#HDeptID").val() != 0) {       //  åˆ¤æ–­ èŽ·å–åˆ°id为hdeptid的值是为0
                    $.ajax({                          //异步请求
                        url: GetWEBURL() + "Gy_Department/list", //请求的地址
                        async: false,                   //是否异步
                        type: "GET",                        //请求类型
                        data: {         //定义发送到服务器的数据
                             //sWhere(用于筛选条件的字符串,基于HDeptID的值)、user(从sessionStorage中获取的当前用户名)、Organization(从sessionStorage中获取的当前组织信息)
                            "sWhere": "and HItemID = '" + $("#HDeptID").val() + "'", "user": sessionStorage["HUserName"], "Organization": sessionStorage["Organization"]//定义的类型有HItemID,user,Organization
                        },
                        success: function (result) {    //请求成功时的回调函数
                            $("#HManagerID").val(result.data[0].HEmpID);  // å°† ID ä¸º HManagerID çš„元素的值设置为响应数据中 data æ•°ç»„的第一个元素的 HEmpID å±žæ€§å€¼ã€‚
                            $("#HManagerName").val(result.data[0].负责人); // æ›´æ–°è¿”回数据第一个对象的负责人名称
                        }, error: function () {
                            layer.alert("发生错误!", { icon: 5 });   //提示发生错误  è­¦ç¤ºæ ‡å‡†ä¸º5的类型
                        }
                    });
                }
            } else {//如果修改则走下面 new
                $("#HInterID").val(linterid);
                RoadBillMain(linterid);
                $("#HInterID").val(linterid);   // å°† ID ä¸º HInterID çš„元素的值设置为变量 linterid çš„值。
                $('#print-btn').prop('disabled', false).removeClass('layui-btn-disabled');
                RoadBillMain(linterid);//调用一个名为RoadBillMain的函数,并将linterid作为参数传递
            }
            //#endregion
            var rowdata = [{
                "HMaterID": 0, "物料代码": "", "物料名称": "", "规格型号": "", "HUnitID": 0, "计量单位": "", "数量": "", "HRemark": ""
                , "HPrice": "0", "HTaxPrice": "0", "HMoney": "0", "HDiscountRate": "0", "HRelTaxPrice": "0", "HTaxRate": "0", "HTaxMoney": "0", "HlineTotal": "0", "HlineTotalBB": "0","HDate":"2022-12-05"
            }];
                "HMaterID": 0, "物料代码": "", "物料名称": "", "规格型号": "", "HUnitID": 0, "计量单位": "", "HWHID": 0, "HWHName": "", "HQty": "1", "HRemark": ""
                , "HPrice": "0", "HTaxPrice": "0", "HMoney": "0", "HDiscountRate": 1, "HRelTaxPrice": "0", "HTaxRate": 0, "HTaxMoney": "0", "HlineTotal": "0", "HlineTotalBB": "0", "HDate": Format(new Date, "yyyy- MM - dd"),
            }];  //定义一个包含数组  è®¾ç½®åˆå§‹åŒ–值  ä¸º â€˜0’, ç©ºï¼ŒçŠ¶æ€ä¸º1  è®¾ç½®æ—¶é—´ç±»åž‹yyyy-mm-dd
            // åˆå§‹åŒ–界
            set_InitGrid();
            set_InitGrid();//执行初始化界面方法
            //头工具栏事件
            table.on('toolbar(mainTable)', function (obj) {
                var checkStatus = table.checkStatus('mainTable')
                    , data = checkStatus.data;
            table.on('toolbar(mainTable)', function (obj) {   //监听mainTable表格上的工具栏事件 è§¦å‘回调函数obj参数
                var checkStatus = table.checkStatus('mainTable')  //  ç›‘听选中的的状态
                    , data = checkStatus.data;          //从选中状态中提取数据,这些数据是表格中被选中的行
                //新增行表格数据
                var NewRow = {
                    "HMaterID": 0, "物料代码": "", "物料名称": "", "规格型号": "", "HUnitID": 0, "计量单位": "", "数量": "", "HRemark": ""
                    , "HPrice": "0", "HTaxPrice": "0", "HMoney": "0", "HDiscountRate": "0", "HRelTaxPrice": "0", "HTaxRate": "0", "HTaxMoney": "0", "HlineTotal": "0", "HlineTotalBB": "0", "HDate": "2022-12-05"
                };
                switch (obj.event) {
                    case 'btn-AddLine':
                        table.cache["mainTable"].push(NewRow);
                        option.data = table.cache["mainTable"];
                    "HMaterID": 0, "物料代码": "", "物料名称": "", "规格型号": "", "HUnitID": 0, "计量单位": "", "HWHID": 0, "HWHName": "", "HQty": "1", "HRemark": ""
                    , "HPrice": "0", "HTaxPrice": "0", "HMoney": "0", "HDiscountRate": "1", "HRelTaxPrice": "0", "HTaxRate":0, "HTaxMoney": "0", "HlineTotal": "0", "HlineTotalBB": "0", "HDate": Format(new Date, "yyyy- MM - dd")
                };  ////定义 NewRow的对象,它包含了新行应该有的数据字段  è®¾ç½®å€¼ä¸ºç©ºæˆ–默认值
                switch (obj.event) { // switch (obj.event)用于根据obj.event的值来决定执行哪个case块
                    case 'btn-AddLine':   //当为新增
                        table.cache["mainTable"].push(NewRow);//将NewRow对象添加到table.cache["mainTable"]数组中,  æ•°ç»„存储了表格的所有行数据
                        option.data = table.cache["mainTable"];//更新option.data为新的数据数组显示到表格上  //将数据绑定到data上
                        table.render(option);
                        table.render(option);  //渲染表格
                        //刷新复选框
                        //checkRefresh();
                        break;
                    case 'btn-CopyLine':
                        var copydata = JSON.stringify(data);
                        if (data.length <= 0) {
                            layer.msg("请选择需要复制的一行!");
                    case 'btn-CopyLine':  //当为复制一行时
                        var copydata = JSON.stringify(data);  // æŠŠèŽ·å–åˆ°çš„data数据转为json类型 å¹¶èµ‹å€¼ç»™å˜é‡
                        if (data.length <= 0) {         //判断字符串的长度
                            layer.msg("请选择需要复制的一行!");  //提示请选择一行复制
                        }
                        else if (data.length > 1) {
                            layer.msg("只能选择复制一行!");
                        else if (data.length > 1) {   //当字符串的长度大于1时
                            layer.msg("只能选择复制一行!");//提醒  åªèƒ½é€‰æ‹©ä¸€è¡Œ
                        }
                        else {
                            var copydata2 = copydata.substring(1, copydata.length);//去除首行字符'['
@@ -408,6 +517,12 @@
                            //刷新复选框
                            //checkRefresh();
                        }
                        break;
                    //库存查询
                    case 'get_Inventory': get_Inventory();
                        break;
                    //出入库记录查询
                    case 'get_InOutSum': get_InOutSum();
                        break;
                    ////列设置
                    //case 'set_HideColumn':
@@ -422,16 +537,20 @@
            form.on('submit(Exit)', function () {
                Pub_Close(1);
            })
            //#region æ‰“印
            form.on('submit(get_PrintReport)', function (data) {
                get_PrintReport();
            });
            //#endregion
            //选择采购员按钮
            form.on('submit(HEmpList)', function () {
                get_checkEmp();
            });
            //选择客户按钮
            //选择供应商按钮
            form.on('submit(HSupList)', function () {
                get_checkSup();
            });
            //选择销售方式按钮
            //选择采购方式按钮
            form.on('submit(HPSStyleList)', function () {
                get_checkPSStyle();
            });
@@ -439,6 +558,17 @@
            form.on('submit(HSSList)', function () {
                get_checkSS();
            });
            //选择工程项目
            form.on('submit(btnHProjectID)', function () {
                get_btnHProjectID();
            });
            //选择仓库
            form.on('submit(btnHWHID)', function () {
                get_btnHWHID();
            });
            //选择币别按钮
            form.on('submit(HCurList)', function () {
                get_checkCur();
@@ -461,21 +591,21 @@
            });
            //行内事件
            table.on('tool(mainTable)', function (obj) {
            table.on('tool(mainTable)', function (obj) {   //监听mainTable2表格上的工具栏事件 è§¦å‘回调函数obj参数
                set_GridDelete(obj);   //行内删除
                set_GridCellCheck(obj); //行内快捷键筛选
                var data = obj.data;
                if (obj.event == 'HDate') {
                    var field = $(this).data('field');
                var data = obj.data;  //获取当前行的数据                //将obj.data å­—符串类型 èµ‹å€¼ç»™data
                if (obj.event == 'HDate') {    //判断接受到的数据字段  id是否为 Hdata
                    var field = $(this).data('field');//获取日期字段
                    laydate.render({
                        elem: this.firstChild
                        , show: true //直接显示
                        , closeStop: this
                        , done: function (nowDate) {
                        elem: this.firstChild        //将日期选择器绑定到触发事件的元素的第一个子元素
                        , show: true                //直接显示       æ—¥æœŸé€‰æ‹©å™¨ï¼Œè€Œä¸æ˜¯ç­‰å¾…用户点击
                        , closeStop: this           // åˆ¤æ–­ç‚¹å‡»æ—¥æœŸé€‰æ‹©å™¨å¤–部时是否关闭
                        , done: function (nowDate) {    //当日期选择完成时执行的回调函数
                            //时间选择完成,行数据更新
                            data[field] = nowDate;
                            obj.update(data);
                            data[field] = nowDate;  //data对象中的日期字段
                            obj.update(data);  //更新回调数据
                            //刷新复选框
                            //checkRefresh();
                        }
@@ -487,34 +617,34 @@
            //#region ç›‘听单元格编辑  å•元格编辑后 å˜æ›´
            table.on('edit(mainTable)', function (obj) {
            table.on('edit(mainTable)', function (obj) {  //监听mainTable表格上的工具栏事件 è§¦å‘回调函数obj参数
                //数值格式校验工具
                var ref = /^\d+(\.\d+)?$/;          //非负数正则表达式
                var temp = "";
                var temp = "";                         //定义一个空字符串变量 temp
                var Dec = getDecByMaterID(obj.data.HMaterID) //获取精度
                var HQtyDec = (Dec["HQtyDec"] == null || Dec["HQtyDec"] == 0) ? 4 : Dec["HQtyDec"];  //数量精度
                var HPriceDec = (Dec["HPriceDec"] == null || Dec["HPriceDec"] == 0) ? 4 : Dec["HPriceDec"];  //单价精度
                var HMoneyDec = (Dec["HMoneyDec"] == null || Dec["HMoneyDec"] == 0) ? 2 : Dec["HMoneyDec"];  //金额精度
                // å•元格编辑之前的值
                var oldText = $(this).prev().text();
                var value = obj.value //得到修改后的值
                    , data = obj.data //得到所在行所有键值
                    , field = obj.field; //得到字段
                //#endregion
                var oldText = $(this).prev().text();                         //获取当前的值赋值给oldtext           èŽ·å–å½“å‰å…ƒç´ ï¼ˆå¯èƒ½æ˜¯ä¸€ä¸ªè¡¨æ ¼å•å…ƒæ ¼ï¼‰çš„å‰ä¸€ä¸ªåŒçº§å…ƒç´ çš„æ–‡æœ¬å†…å®¹ï¼Œå¹¶å°†è¿™ä¸ªæ–‡æœ¬å†…å®¹å­˜å‚¨åœ¨å˜é‡oldText中
                var value = obj.value                   //得到修改后的值
                    , data = obj.data                   //得到所在行所有键值
                    , field = obj.field;                        //得到字段
                switch (field) {
                    case "HQty":                                         //数量
                        //数据格式校验
                        temp = value + "";
                        if (!ref.test(temp) || temp == 0) {
                        temp = value + "";                       //修改后的值 è½¬ä¸ºå­—符串 èµ‹å€¼ç»™  å˜é‡temp
                        if (!ref.test(temp) || temp == 0) { //使用表达式来判断字符串是否为0           // å®šä¹‰çš„æ­£åˆ™è¡¨è¾¾å¼ref(用于匹配非负数的字符串表示,但注意它不会匹配单独的0作为有效输入,因为.\d+部分是可选的,且前面没有允许0作为整数部分的单独情况)来测试temp字符串
                            //恢复数据到编辑前
                            obj.update({
                                HQty: oldText
                            obj.update({   //使用obj.update方法更新表格中某一行的数据
                                HQty: oldText    //将hqty字段恢复到保存单元格的值
                            });
                            table.render(option);
                            table.render(option);  //渲染表格
                            layer.msg("数量请输入大于0的数字!");
                            layer.msg("数量请输入大于0的数字!");  //提示数量请输入大于
                            return;
                        }
                        //数据校验合格,重算记录
                        var HQty = value * 1;                           //数量
                        var HPrice = obj.data.HPrice * 1;               //单价
@@ -526,25 +656,27 @@
                        var HlineTotalBB = Number(((HMoney + HTaxMoney) * HExRate).toFixed(4));      //本位币价税合计=(税额+金额)*汇率
                        //同步更新表格和缓存对应的值
                        obj.update({
                            HQty: HQty
                            , HPrice: HPrice
                            , HMoney: HMoney
                            , HTaxMoney: HTaxMoney
                            , HlineTotal: HlineTotal
                            , HlineTotalBB: HlineTotalBB
                        obj.update({     //更新表格数据                æ–¹æ³•是该对象提供的一个方法,用于更新其内部状态或与之关联的数据源
                            HQty: Number(HQty.toFixed(HQtyDec))                            //更新HQty字段,其值来自变量HQty
                            , HPrice: Number(HPrice.toFixed(HPriceDec))                             //更新HPrice字段,其值来自变量HPrice
                            , HMoney: Number(HMoney.toFixed(HMoneyDec))                         //更新HMoney字段,其值来自变量HMoney
                            , HTaxMoney: HTaxMoney                       //更新HTaxMoney字段,HTaxMoney
                            , HlineTotal: HlineTotal                         //更新HlineTotal字段,其值来自变量HlineTotal
                            , HlineTotalBB: HlineTotalBB                     //更新HlineTotalBB字段,其值来自变量HlineTotalBB
                        });
                        table.render(option)
                        break;
                    case "HPrice":                                         //单价
                        //数据格式校验
                        temp = value + "";
                        if (!ref.test(temp) || temp == 0) {
                        //数据格式校验
                        temp = value + "";     //修改后的值 è½¬ä¸ºå­—符串 èµ‹å€¼ç»™  å˜é‡temp
                      // ref很可能是一个正则表达式对象,用于匹配特定的字符串模式。ref.test(temp)会检查变量temp(即转换后的单价字符串)是否符合ref定义的模式。如果test方法返回false
                        if (!ref.test(temp)) { //检查单价字符串是否符合预期的格式
                            //恢复数据到编辑前
                            obj.update({
                                HPrice: oldText
                            obj.update({            //更新表格某一行数据
                                HPrice: oldText     //将hprice字段恢复到保存前的值
                            });
                            layer.msg("单价请输入大于0的数字!");
                            table.render(option);
                            layer.msg("单价请输入数字!");   //请输入单价的数值
                            return;
                        }
@@ -555,34 +687,35 @@
                        var HTaxRate = obj.data.HTaxRate * 0.01;           //税率 
                        var HTaxMoney = Number((HMoney * HTaxRate).toFixed(4));         //税额=金额*税率
                        var HlineTotal = HMoney + HTaxMoney;            //价税合计=金额+税额
                        var HTaxPrice = Number((HPrice * (1 + HTaxRate)).toFixed(4));        //含税单价=单价*(1+税率)
                        var HTaxPrice = Number((HPrice * (1 + HTaxRate)).toFixed(HPriceDec));        //含税单价=单价*(1+税率)
                        var HDiscountRate = obj.data.HDiscountRate * 1;   //折扣率
                        var HRelTaxPrice = Number((HTaxPrice * HDiscountRate).toFixed(4));   //实际含税单价=含税单价*折扣率
                        var HRelTaxPrice = Number((HTaxPrice * HDiscountRate).toFixed(HPriceDec));   //实际含税单价=含税单价*折扣率
                        var HExRate = $("#HExRate").val();                      //汇率
                        var HlineTotalBB = Number(((HMoney + HTaxMoney) * HExRate).toFixed(4));     //本位币价税合计=(税额+金额)*汇率
                        //同步更新表格和缓存对应的值
                        obj.update({
                            HQty: HQty
                            , HPrice: HPrice
                            , HMoney: HMoney
                            , HTaxMoney: HTaxMoney
                            , HlineTotal: HlineTotal
                            , HTaxPrice, HTaxPrice
                            , HRelTaxPrice: HRelTaxPrice
                            , HlineTotalBB: HlineTotalBB
                        obj.update({                    //更新表格数据                æ–¹æ³•是该对象提供的一个方法,用于更新其内部状态或与之关联的数据源
                            HQty: Number(HQty.toFixed(HQtyDec))                                //更新HQty字段,HQty
                            , HPrice: Number(HPrice.toFixed(HPriceDec))                       //更新HPrice字段,HPrice
                            , HMoney: Number(HMoney.toFixed(HMoneyDec))                      //更新HMoney字段,HMoney
                            , HTaxMoney: HTaxMoney                  //更新HTaxMoney字段,HTaxMoney
                            , HlineTotal: HlineTotal             //更新HlineTotal字段,HlineTotal
                            , HTaxPrice, HTaxPrice                   //更新HTaxPrice字段,HTaxPrice
                            , HRelTaxPrice: HRelTaxPrice            //更新HRelTaxPrice字段,其值来自变量HRelTaxPrice
                            , HlineTotalBB: HlineTotalBB              //更新HlineTotalBB字段,其值来自变量HlineTotalBB
                        });
                        table.render(option)
                        break;
                    case "HTaxRate":                                                       //数量
                    case "HTaxRate":                                                       //税率
                        //数据格式校验
                        temp = value + "";
                        if (!ref.test(temp)) {
                        temp = value + "";             //修改后的值 è½¬ä¸ºå­—符串 èµ‹å€¼ç»™  å˜é‡temp
                        if (!ref.test(temp)) {  //判断税率字符串是否符合预期格式
                            //恢复数据到编辑前
                            obj.update({
                                HTaxRate: oldText
                            obj.update({                //更新表格某一行数据
                                HTaxRate: oldText       //  å°†å­—段HTaxRate的数据恢复到更新之前的数据
                            });
                            layer.msg("税率请输入不小于0的数字!");
                            table.render(option);
                            layer.msg("税率请输入数字!"); //提示请输入税率的数值
                            return;
                        }
@@ -590,23 +723,22 @@
                        //数据校验合格,重算记录
                        var HTaxRate = obj.data.HTaxRate * 0.01;           //税率 
                        var HQty = obj.data.HQty * 1;                   //数量
                        var HPrice = obj.data.HPrice * 1;
                        var HPrice = obj.data.HPrice * 1;                   //单价
                        var HMoney = HQty * HPrice;                     //金额=数量*单价
                        var HTaxMoney = Number((HMoney * HTaxRate).toFixed(4));         //税额=金额*税率
                        var HTaxPrice = Number((HPrice * (1 + HTaxRate)).toFixed(4));        //含税单价=单价*(1+税率)
                        var HTaxPrice = Number((HPrice * (1 + HTaxRate)).toFixed(HPriceDec));        //含税单价=单价*(1+税率)
                        var HlineTotal = HMoney + HTaxMoney;            //价税合计=金额+税额
                        var HTaxPrice = Number((HPrice * (1 + HTaxRate)).toFixed(4));        //含税单价=单价*(1+税率)
                        var HDiscountRate = obj.data.HDiscountRate * 1;   //折扣率
                        var HRelTaxPrice = Number((HTaxPrice * HDiscountRate).toFixed(4));   //实际含税单价=含税单价*折扣率
                        var HRelTaxPrice = Number((HTaxPrice * HDiscountRate).toFixed(HPriceDec));   //实际含税单价=含税单价*折扣率
                        var HExRate = $("#HExRate").val();                       //汇率
                        var HlineTotalBB = Number(((HMoney + HTaxMoney) * HExRate).toFixed(4));       //本位币价税合计=(税额+金额)*汇率
                        //同步更新表格和缓存对应的值
                        obj.update({
                        obj.update({   //更新表格数据
                            HTaxRate: HTaxRate * 100
                            , HQty: HQty
                            , HPrice: HPrice
                            , HMoney: HMoney
                            , HQty: Number(HQty.toFixed(HQtyDec))
                            , HPrice: Number(HPrice.toFixed(HPriceDec))
                            , HMoney: Number(HMoney.toFixed(HMoneyDec))
                            , HTaxMoney: HTaxMoney
                            , HTaxPrice: HTaxPrice
                            , HlineTotal: HlineTotal
@@ -614,6 +746,7 @@
                            , HRelTaxPrice: HRelTaxPrice
                            , HlineTotalBB: HlineTotalBB
                        });
                        table.render(option)
                        break;
                    case "HDiscountRate":                                                       //数量
                        //数据格式校验
@@ -623,7 +756,7 @@
                            obj.update({
                                HDiscountRate: oldText
                            });
                            table.render(option);
                            layer.msg("折扣率请输入不小于0的数字!");
                            return;
                        }
@@ -635,24 +768,65 @@
                        var HPrice = obj.data.HPrice * 1;
                        var HMoney = HQty * HPrice;                     //金额=数量*单价
                        var HTaxMoney = Number((HMoney * HTaxRate).toFixed(4));         //税额=金额*税率
                        var HTaxPrice = Number((HPrice * (1 + HTaxRate)).toFixed(4));        //含税单价=单价*(1+税率)
                        var HTaxPrice = Number((HPrice * (1 + HTaxRate)).toFixed(HPriceDec));        //含税单价=单价*(1+税率)
                        var HDiscountRate = obj.data.HDiscountRate * 1;     //折扣率
                        var HRelTaxPrice = Number((HTaxPrice * HDiscountRate).toFixed(4));   //实际含税单价=含税单价*折扣率
                        var HRelTaxPrice = Number((HTaxPrice * HDiscountRate).toFixed(HPriceDec));   //实际含税单价=含税单价*折扣率
                        //同步更新表格和缓存对应的值
                        obj.update({
                            HTaxRate: HTaxRate * 100
                            , HQty: HQty
                            , HPrice: HPrice
                            , HMoney: HMoney
                            , HTaxMoney: HTaxMoney
                            , HTaxPrice: HTaxPrice
                            , HDiscountRate: HDiscountRate
                            , HRelTaxPrice: HRelTaxPrice
                            HTaxRate: HTaxRate * 100                //将HTaxRate属性的值乘以100,并更新为新的值    ç¨ŽçŽ‡ä¹˜100  ä»Žå°æ•°ç±»åž‹å˜ä¸ºæ•´æ•°æˆ–浮点型
                            , HQty: Number(HQty.toFixed(HQtyDec))                   //更新HQty字段,,其值来自变量HQty
                            , HPrice: Number(HPrice.toFixed(HPriceDec))                 //更新HPrice字段,其值来自变量HPrice
                            , HMoney: Number(HMoney.toFixed(HMoneyDec))                        //更新HMoney字段,其值来自变量HMoney
                            , HTaxMoney: HTaxMoney                  //更新HTaxMoney字段,其值来自变量HTaxMoney
                            , HTaxPrice: HTaxPrice                  //更新HTaxPrice字段,其值来自变量HTaxPrice
                            , HDiscountRate: HDiscountRate                  //更新HDiscountRate字段,其值来自变量HDiscountRate
                            , HRelTaxPrice: HRelTaxPrice                  //更新HRelTaxPrice字段,其值来自变量HRelTaxPrice
                        });
                        break;
                        table.render(option);
                    case "HTaxPrice":                                         //含税单价
                        //数据格式校验
                        temp = value + "";     //修改后的值 è½¬ä¸ºå­—符串 èµ‹å€¼ç»™  å˜é‡temp
                        // ref很可能是一个正则表达式对象,用于匹配特定的字符串模式。ref.test(temp)会检查变量temp(即转换后的单价字符串)是否符合ref定义的模式。如果test方法返回false
                        if (!ref.test(temp)) { //检查单价字符串是否符合预期的格式
                            //恢复数据到编辑前
                            obj.update({            //更新表格某一行数据
                                HTaxPrice: oldText     //将hprice字段恢复到保存前的值
                            });
                            table.render(option);
                            layer.msg("含税单价请输入数字!");   //请输入单价的数值
                            return;
                        }
                        //数据校验合格,重算记录
                        var HQty = obj.data.HQty * 1;                   //数量
                        var HTaxPrice = value * 1;                    //含税单价
                        var HTaxRate = obj.data.HTaxRate * 0.01;           //税率
                        var HPrice = Number((HTaxPrice / (1 + HTaxRate)).toFixed(HPriceDec));                         //单价 = å«ç¨Žå•ä»·/(1+税率)
                        var HMoney = HQty * HPrice;                     //金额=数量*单价
                        var HTaxMoney = Number((HMoney * HTaxRate).toFixed(4));         //税额=金额*税率
                        var HlineTotal = HMoney + HTaxMoney;            //价税合计=金额+税额
                        var HDiscountRate = obj.data.HDiscountRate * 1;   //折扣率
                        var HRelTaxPrice = Number((HTaxPrice * HDiscountRate).toFixed(HPriceDec));   //实际含税单价=含税单价*折扣率
                        var HExRate = $("#HExRate").val();                      //汇率
                        var HlineTotalBB = Number(((HMoney + HTaxMoney) * HExRate).toFixed(4));     //本位币价税合计=(税额+金额)*汇率
                        //同步更新表格和缓存对应的值
                        obj.update({                    //更新表格数据                æ–¹æ³•是该对象提供的一个方法,用于更新其内部状态或与之关联的数据源
                            HQty: Number(HQty.toFixed(HQtyDec))                                //更新HQty字段,HQty
                            , HPrice: HPrice                         //更新HPrice字段,HPrice
                            , HMoney: Number(HMoney.toFixed(HMoneyDec))                        //更新HMoney字段,HMoney
                            , HTaxMoney: HTaxMoney                  //更新HTaxMoney字段,HTaxMoney
                            , HlineTotal: HlineTotal             //更新HlineTotal字段,HlineTotal
                            , HTaxPrice :Number(HTaxPrice.toFixed(HPriceDec))                    //更新HTaxPrice字段,HTaxPrice
                            , HRelTaxPrice: HRelTaxPrice            //更新HRelTaxPrice字段,其值来自变量HRelTaxPrice
                            , HlineTotalBB: HlineTotalBB              //更新HlineTotalBB字段,其值来自变量HlineTotalBB
                        });
                        table.render(option)
                        break;
                    default:
                }
            });
@@ -661,373 +835,668 @@
            //#endregion
            //#region æ–‡æœ¬æ¡†ç›‘听
            $(document).ready(function () {
            $(document).ready(function () {  // å½“文档加载完成后执行的函数
                //#region æ±‡çŽ‡å¤±ç„¦äº‹ä»¶
                var oldHExRate = "";                          //修改前的值
                var newHExRate = "";                          //修改后的值
                $("#HExRate").on('focus', function (data) {
                    oldHExRate = $("#HExRate").val() * 1;   //汇率文本框获取焦点时获取修改前的值
                }).on('blur', function (data) {
                    newHExRate = $("#HExRate").val();       //汇率文本框失焦时获取修改后的值
                var oldHExRate = "";                          //修改前的值  åˆå§‹åŒ–为空字符串
                var newHExRate = "";                          //修改后的值 åˆå§‹åŒ–为空字符串
                $("#HExRate").on('focus', function (data) {    // å½“#HExRate元素获得焦点时,执行此函数
                    oldHExRate = $("#HExRate").val() * 1;    //汇率文本框获取焦点时获取修改前的值       èŽ·å–å½“å‰æ±‡çŽ‡å€¼å¹¶å°†å…¶è½¬æ¢ä¸ºæ•°å­—ï¼ˆä¹˜ä»¥1是一种常用的类型转换技巧)
                }).on('blur', function (data) {         // å½“#HExRate元素失去焦点时,执行此函数
                    newHExRate = $("#HExRate").val();       //汇率文本框失焦时获取修改后的值            èŽ·å–å¤±åŽ»ç„¦ç‚¹åŽçš„æ±‡çŽ‡å€¼ï¼ˆä»ç„¶æ˜¯å­—ç¬¦ä¸²
                    //判断输入的汇率是否合法
                    var ref = /^\d+(\.\d+)?$/;          //非负数正则表达式
                    if (!ref.test(newHExRate)) {
                        layer.msg("汇率请输入不小于0的数字!");
                        $("#HExRate").val(oldHExRate);
                    if (!ref.test(newHExRate)) {       // å¦‚果输入的汇率不匹配正则表达式,
                        layer.msg("汇率请输入不小于0的数字!");      // ä½¿ç”¨Layui的layer弹出层显示提示信息
                        $("#HExRate").val(oldHExRate);    //将汇率值恢复为修改前的值
                        return false;
                    }
                    //输入的汇率合法,重算
                    var HExRate = newHExRate * 1;                       //汇率
                    $("#HExRate").val(HExRate);
                    $("#HExRate").val(HExRate);                         //获取id为HExRate元素设置为 HExRate çš„值
                    for (var i = 0; i < option.data.length; i++) {
                        var HMoney = option.data[i].HMoney;
                        var HTaxMoney = option.data[i].HTaxMoney;
                        option.data[i].HlineTotalBB = (option.data[i].HMoney + option.data[i].HTaxMoney) * HExRate;
                    for (var i = 0; i < option.data.length; i++) { // éåŽ†è¡¨æ ¼æ•°æ®ï¼Œæ ¹æ®æ–°çš„æ±‡çŽ‡é‡æ–°è®¡ç®—æ¯è¡Œçš„æ€»é‡‘é¢
                        var HMoney = option.data[i].HMoney; // èŽ·å–å½“å‰è¡Œçš„HMoney值
                        var HTaxMoney = option.data[i].HTaxMoney;    // èŽ·å–å½“å‰è¡Œçš„HTaxMoney值
                        option.data[i].HlineTotalBB = (option.data[i].HMoney + option.data[i].HTaxMoney) * HExRate;    // è®¡ç®—新的行总金额(可能是不含税金额+税额)* æ±‡çއ
                    }
                    table.render(option);
                    table.render(option);  //渲染表格
                });
                //#endregion
            });
            //#endregion
            //#region æœ¬é¡µé¢æ‰€æœ‰è¢«è°ƒç”¨çš„æ–¹æ³•
            //#region èŽ·å–æ¨¡å—é¡µé¢æ ‡é¢˜
            function get_PageTitle(HModuleType) {
                $.ajax({
                    type: "GET",
                    async: false,
                    url: GetWEBURL() + "Web/GetModuleName", //方法所在页面和方法名
                    data: { "HModuleType": HModuleType },
                    success: function (result) {
                        if (result.count == 1) {
                            var data = result.data[0];
                            $("h1").html('<b>' + data.HName + '</b>');
                            HPageTitle = data.HName;
                        } else {
                            return "";
                        }
                    }, error: function () {
                        layer.alert("接口请求失败!", { icon: 5 });
                    }
                });
            }
            //#region æœ¬é¡µé¢æ‰€æœ‰è¢«è°ƒç”¨çš„æ–¹æ³•
            //#region åˆ¤æ–­æ˜¯å¦ç™»å½• æœªç™»å½•则跳到登录页
            function get_LoginIs() {
                if (sessionStorage.login != "login") {
                    layer.confirm("登录失效,请重新登录!", {
                        icon: 4, skin: 'layui-layer-lan', title: "温馨提示", closeBtn: 0, btn: ['重新登录']
                    }, function () { window.location.href = "../../user/login.html"; });
                // è¿™è¡Œä»£ç æ£€æŸ¥sessionStorage中的login项的值是否不等于字符串"login"
                if (sessionStorage.login != "login") {   // åˆ¤æ–­æ˜¯å¦
                    layer.confirm("登录失效,请重新登录!", {    //提示登入失败重新登入
                        icon: 4,            // å¼¹å‡ºå±‚的图标
                        skin: 'layui-layer-lan',  // å¼¹å‡ºå±‚的样式名
                        title: "温馨提示", // å¼¹å‡ºå±‚的标题
                        closeBtn: 0,   // æ˜¯å¦æ˜¾ç¤ºå…³é—­æŒ‰é’®ï¼Œ0表示不显示
                        btn: ['重新登录'] // è‡ªå®šä¹‰æŒ‰é’®ï¼Œè¿™é‡Œåªæœ‰ä¸€ä¸ªæŒ‰é’®ï¼ŒæŒ‰é’®ä¸Šçš„æ–‡å­—是“重新登录”
                    }, function () { window.location.href = "../../user/login.html"; }); //重新调用  ç™»å…¥é¡µé¢    // ç‚¹å‡»æŒ‰é’®æ—¶æ‰§è¡Œçš„函数
                }
            }
            //#endregion
            //#region  æ—¶é—´è½¬æ¢
            function formatDate(date) {
                var d = new Date(date),
                    month = '' + (d.getMonth() + 1),
                    day = '' + d.getDate(),
                    year = d.getFullYear();
            function formatDate(date) {
                var d = new Date(date),      //定义一个将date值转换为时间类型赋值给d     åˆ›å»ºä¸€ä¸ªæ–°çš„Date对象d,使用传入的date参数(字符串或时间戳)作为构造函数的参数
                    month = '' + (d.getMonth() + 1),  //从d对象中获取月份,将这个月份数字转换成字符串
                    day = '' + d.getDate(),             //从d对象中获取,将这个日字转换成字符串
                    year = d.getFullYear(); // ä»Žd对象中获取完整的年份
                if (month.length < 2) month = '0' + month;
                if (day.length < 2) day = '0' + day;
                if (month.length < 2) month = '0' + month;  //判断月份的长度是否小于2位数  å°äºŽè¿™åœ¨å‰åŠ ä¸ª0
                if (day.length < 2) day = '0' + day;        //判断天数长度是否小于2位数  å°äºŽè¿™åœ¨å‰åŠ ä¸ª0
                return [year, month, day].join('-');
                return [year, month, day].join('-'); //将年份、月份和日字符串放入一个数组中,并使用join方法将它们连接成一个字符串
            }
            //#endregion
            //#region æ‰“印
            function get_PrintReport() {
                layer.open({
                    type: 2
                    , area: ['50%', '50%']
                    , title: '打印模版选择'
                    , shade: 0.6 //遮罩透明度
                    , maxmin: false //允许全屏最小化
                    , anim: 0 //0-6的动画形式,-1不开启
                    , content: ['../../BaseSet/SRM_OpenTmpList.html?linterid=' + linterid.toString() + '&MyMsg=' + linterid.toString() + '&Type=HPOOrderBillByID', 'yes']
                    , resize: false
                })
            }
            //#endregion
            function set_InitGrid() {
                option = {
                    elem: '#mainTable'
                    , toolbar: '#toolbarDemo'
                    , totalRow: true
                    , limit: 500
                    , height: 500
                    , loading: false
                    elem: '#mainTable'      // ä½¿ç”¨#mainTable作为表格的DOM元素
                    , toolbar: '#toolbarDemo'        //加载tolbardemo这个表格
                    , totalRow: true               // æ˜¯å¦æ˜¾ç¤ºåˆè®¡è¡Œ
                    , limit: 500                //默认显示行数
                    , height: 500                  //高度
                    , loading: false                //是否显示加载状态
                    , cols: [[ //子表
                        { type: 'checkbox', fixed: 'left', totalRowText: '合计行' }
                        , { type: 'numbers', title: '序号', width: 100}
                        { type: 'checkbox', fixed: 'left', totalRowText: '合计行' , style: 'background-color:#efefef4d;'}
                        , { type: 'numbers', title: '序号', width: 100, style: 'background-color:#efefef4d;'}
                        , { field: 'HMaterID', title: 'HMaterID', width: 100, hide: true }
                        , { field: '物料代码', title: '物料代码', width: 150, edit: 'text', event: "HMaterID" }//f7
                        , { field: '物料名称', title: '物料名称', width: 150, }
                        , { field: '规格型号', title: '规格型号', width: 100, }
                        , { field: '物料名称', title: '物料名称', width: 150,  style: 'background-color:#efefef4d;'}
                        , { field: '规格型号', title: '规格型号', width: 100, style: 'background-color:#efefef4d;' }
                        , { field: 'HUnitID', title: 'HUnitID', width: 100, hide: true }
                        , { field: '计量单位', title: '计量单位', width: 100, edit: 'text', event: "HUnitID" }//f7
                        , { field: 'HWHID', title: 'HWHID', width: 100, hide: true }
                        , { field: 'HWHName', title: '仓库名称', width: 100, edit: 'text', event: "HWHID" }//f7
                        , { field: 'HQty', title: '数量', width: 100, edit: 'text', totalRow: true}
                        , { field: 'HPrice', title: '单价', width: 100, edit: 'text'}
                        , { field: 'HTaxPrice', title: '含税单价', width: 100, edit: 'text'}
                        , { field: 'HMoney', title: '金额', width: 100, totalRow: true }
                        , { field: 'HDiscountRate', title: '折扣率', width: 100, edit: 'text'}
                        , { field: 'HRelTaxPrice', title: '实际含税单价', width: 110, }
                        , { field: 'HMoney', title: '金额', width: 100, totalRow: true , style: 'background-color:#efefef4d;'}
                        , { field: 'HDiscountRate', title: '折扣率', width: 100, style: 'background-color:#efefef4d;'}
                        , { field: 'HRelTaxPrice', title: '实际含税单价', width: 110, style: 'background-color:#efefef4d;' }
                        , { field: 'HTaxRate', title: '税率', width: 100, edit: 'text' }
                        , { field: 'HTaxMoney', title: '税额', width: 100, }
                        , { field: 'HlineTotal', title: '价税合计', width: 100, edit: 'text' }
                        , { field: 'HlineTotalBB', title: '本位币价税合计', width: 120, }
                        , { field: 'HTaxMoney', title: '税额', width: 100, style: 'background-color:#efefef4d;'}
                        , { field: 'HlineTotal', title: '价税合计', width: 100, style: 'background-color:#efefef4d;' }
                        , { field: 'HlineTotalBB', title: '本位币价税合计', width: 120, style: 'background-color:#efefef4d;' }
                        , { field: 'HDate', title: '到货日期', width: 120, event: 'HDate'}
                        , { field: 'HRemark', title: '备注', width: 100, edit: 'text' }
                        , { fixed: 'right', title: '操作', toolbar: '#barDemo', width: 70 }
                    ]]
                }
                option.data = rowdata;
                table.render(option);
                option.data = rowdata;   //子表的值赋值给option.data   å‘option对象添加一个data属性,并将其设置为rowdata
                table.render(option);//渲界面
            }
            //#region åŠ è½½è¡¨å¤´
            function RoadBillMain(linterid) {
                //查询检验方案单是否存在
                var ajaxLoad = layer.load();
                $.ajax({
                    url: GetWEBURL() + "/Cg_POOrderBill/cx",
                    type: "GET",
                    data: {
                        "HInterID": linterid
                    },
                var ajaxLoad = layer.load();;//遮罩    æŠŠlayer.load è°ƒç”¨èµ‹å€¼ç»™å®šä¹‰å˜é‡ ajaxLoad
                $.ajax({                //异步请求
                    url: GetWEBURL() + "/Cg_POOrderBill/cx",  //请求地址
                    type: "GET",  //请求类型
                    data: { "HInterID": linterid },  // å°†linterid作为请求参数发送
                    success: function (result) {
                        if (result.code == 1) { // è¯´æ˜ŽéªŒè¯æˆåŠŸäº†ï¼Œ
                            var data = result.data[0];
                            allVal = result.data[0];
                            var data = result.data;   //声明data变量,并将其赋值为result对象中的data属性
                            allVal = result.data[0];  //result.data数组(或类数组对象)的第一个元素赋值给变量allVal
                            form.val("component-form-group", { //formTest å³ class="layui-form" æ‰€åœ¨å…ƒç´ å±žæ€§ lay-filter="" å¯¹åº”的值
                                "HBillNo": data.单据号
                                , "HDate": formatDate(data.日期)
                                , "HSSDate": formatDate(data.结算日期)
                                //, "HInnerBillNo": data.内部单据号
                                , "HAddress": data.交货地点
                                , "HDeptName": data.部门
                                , "HDeptID": data.HDeptID
                                , "HSupID": data.HSupID
                                , "HSupName": data.供应商
                                , "HEmpID": data.HEmpID
                                , "HEmpName": data.业务员
                                , "HCurID": data.HCurID
                                , "HCurName": data.币别
                                , "HExRate": data.汇率
                                , "HManagerName": data.主管
                                , "HManagerID": data.HManagerID
                                , "HPSStyleID": data.HPSStyleID
                                , "HPSStyleName": data.采购方式
                                , "HSSID": data.HSSID
                                , "HSSName": data.结算方式
                                , "HLinkMan": data.联系人
                                , "HLinkPhone": data.联系电话
                                , "HInnerBillNo": data.辅助字段
                                , "HRemark": data.表头备注
                                , "HMaker": data.制单人
                                , "HChecker": data.审核人
                                , "HCloseMan": data.关闭人
                                , "HMakeDate": data.制单日期
                                , "HCheckDate": data.审核日期
                                , "HCloseDate": data.关闭日期
                                , "HUpDateDate": data.修改日期
                                , "HDeleteDate": data.作废日期
                                "HBillNo": data[0].单据号   //设置单据号的第一个值为“HBillNo”字段的值是data[0].单据号`的值
                                , "HDate": formatDate(data[0].日期)   //设置“HDate”字段的值为`data[0].日期`经过`formatDate`函数处理后的格式
                                , "HSSDate": formatDate(data[0].结算日期) //但设置的是“结算日期”字段。
                                //, "HInnerBillNo": data.内部单据号
                                , "HAddress": data[0].交货地点  // è®¾ç½®â€œäº¤è´§åœ°ç‚¹â€å­—段的值。
                                , "HDeptName": data[0].部门// è®¾ç½®â€œéƒ¨é—¨â€åç§°å­—段的值。
                                , "HDeptID": data[0].HDeptID  // è®¾ç½®â€œHDeptID”名称字段的值。
                                , "HSupID": data[0].HSupID    // è®¾ç½®â€œHSupID”名称字段的值。
                                , "HSupName": data[0].供应商   // è®¾ç½®â€œä¾›åº”商”名称字段的值。
                                , "HEmpID": data[0].HEmpID
                                , "HEmpName": data[0].业务员  // è®¾ç½®â€œä¸šåŠ¡å‘˜â€åç§°å­—æ®µçš„å€¼ã€‚
                                , "HCurID": data[0].HCurID
                                , "HCurName": data[0].币别            // è®¾ç½®â€œå¸åˆ«â€åç§°å­—段的值。
                                , "HExRate": data[0].汇率         // è®¾ç½®â€œæ±‡çŽ‡â€åç§°å­—æ®µçš„å€¼ã€‚
                                , "HManagerName": data[0].主管        // è®¾ç½®â€œä¸»ç®¡â€åç§°å­—段的值。
                                , "HManagerID": data[0].HManagerID
                                , "HPSStyleID": data[0].HPSStyleID
                                , "HPSStyleName": data[0].采购方式       // è®¾ç½®â€œé‡‡è´­æ–¹å¼â€åç§°å­—段的值。
                                , "HSSID": data[0].HSSID
                                , "HSSName": data[0].结算方式       // è®¾ç½®â€œç»“算方式”名称字段的值。
                                , "HLinkMan": data[0].联系人       // è®¾ç½®â€œè”系人”名称字段的值。
                                , "HLinkPhone": data[0].联系电话       // è®¾ç½®â€œè”系电话”名称字段的值。
                                , "HInnerBillNo": data[0].辅助字段       // è®¾ç½®â€œè¾…助字段”名称字段的值。
                                , "HProjectID": data[0].HProjectID
                                , "HProjectNumber": data[0].项目代码       // è®¾ç½®â€œé¡¹ç›®ä»£ç â€åç§°å­—段的值。
                                , "HProjectName": data[0].项目名称       // è®¾ç½®â€œé¡¹ç›®åç§°â€åç§°å­—段的值。
                                , "HWHID": data[0].HWHID
                                , "HOrgID": data[0].HOrgID
                                , "HWHName": data[0].仓库       // è®¾ç½®â€œä»“库”名称字段的值。
                                , "HRemark": data[0].表头备注       // è®¾ç½®â€œè¡¨å¤´å¤‡æ³¨â€åç§°å­—段的值。
                                , "HMaker": data[0].制单人       // è®¾ç½®â€œåˆ¶å•人”名称字段的值。
                                , "HChecker": data[0].审核人       // è®¾ç½®â€œå®¡æ ¸äººâ€åç§°å­—段的值。
                                , "HCloseMan": data[0].关闭人       // è®¾ç½®â€œå…³é—­äººâ€åç§°å­—段的值。
                                , "HMakeDate": data[0].制单日期       // è®¾ç½®â€œåˆ¶å•日期”名称字段的值。
                                , "HCheckDate": data[0].审核日期       // è®¾ç½®â€œå®¡æ ¸æ—¥æœŸâ€åç§°å­—段的值。
                                , "HCloseDate": data[0].关闭日期       // è®¾ç½®â€œå…³é—­æ—¥æœŸâ€åç§°å­—段的值。
                                , "HUpDateDate": data[0].修改日期       // è®¾ç½®â€œä¿®æ”¹æ—¥æœŸâ€åç§°å­—段的值。
                                , "HDeleteDate": data[0].作废日期       // è®¾ç½®â€œä½œåºŸæ—¥æœŸâ€åç§°å­—段的值。
                            });
                           //组织的值HOrgID变化,重新渲染
                            HOrgIDBar = data.HOrgID; //修改变量赋值,确保从数组中获取HOrgID
                            //子表  èµ‹å€¼
                            var rowdata = [];
                            for (var i = 0; i < 1; i++) {
                                rowdata.push(
                            var rowdata = [];   //初始化一个空数组 rowdata,用于存储处理后的数据行
                            for (var i = 0; i < data.length; i++) {//开始一个循环,遍历 data æ•°ç»„中的每个元素。
                                rowdata.push(   // rowdata.push(...) å°†ä¸€ä¸ªæ–°å¯¹è±¡æ·»åŠ åˆ° rowdata æ•°ç»„中
                                    {
                                        "HMaterID": data.HMaterID, "物料代码": data.物料代码, "物料名称": data.物料名称
                                        , "规格型号": data.规格型号, "HUnitID": data.HUnitID
                                        , "计量单位": data.计量单位, "HQty": data.数量, "HRemark": data.表体备注
                                        , "HPrice": data.单价, "HMoney": data.金额, "HTaxRate": data.税率
                                        , "HTaxMoney": data.金额 * data.税率, "HlineTotal": data.金额 + data.税额, "HlineTotalBB": (data.金额 + data.税额) * data.汇率
                                        , "HTaxPrice": data.含税单价, "HDiscountRate": data.折扣率, "HRelTaxPrice": data.实际含税单价
                                        , "HDate": Format(new Date(data.交货日期), "yyyy-MM-dd")
                                        "HMaterID": data[i].HMaterID, "物料代码": data[i].物料代码, "物料名称": data[i].物料名称
                                        , "规格型号": data[i].规格型号, "HUnitID": data[i].HUnitID
                                        , "计量单位": data[i].计量单位, "HWHID": data[i].HWHID, "HWHName": data[i].仓库名称, "HQty": data[i].数量, "HRemark": data[i].表体备注
                                        , "HPrice": data[i].单价, "HMoney": data[i].金额, "HTaxRate": data[i].税率
                                        , "HTaxMoney": data[i].金额 * data[i].税率, "HlineTotal": data[i].金额 + data[i].税额, "HlineTotalBB": (data[i].金额 + data[i].税额) * data[i].汇率
                                        , "HTaxPrice": data[i].含税单价, "HDiscountRate": data[i].折扣率, "HRelTaxPrice": data[i].实际含税单价
                                        , "HDate": Format(new Date(data[i].交货日期), "yyyy-MM-dd")
                                    }
                                )
                            }
                            option.data = rowdata;
                            table.render(option);
                            form.render('select');
                            option.data = rowdata;  //将数组rowdata赋值 ç»™option.data的属性
                            table.render(option);       //渲染表格
                            form.render('select');  //用form.render方法,并指定'select'作为参数  ä¸ºç¡®è®¤æ•°æ®å˜åŒ–相关的选择框都被正确地更新或渲染
                            layer.close(ajaxLoad);
                            layer.close(ajaxLoad); //调用layer.close方法,并传入ajaxLoad作为参数关闭这个加载层     è¡¨æ˜Žå¼‚步请求已经完成并且数据已经被处理
                        } else {
                            layer.close(ajaxLoad);
                            layer.alert(result.msg, { icon: 5, btn: ['退出'], time: 100000, offset: 't' });
                            layer.close(ajaxLoad); //关闭加载层  åœ¨å¼‚步请求失败或返回了错误结果时执行。
                            layer.alert(result.msg, { icon: 5, btn: ['退出'], time: 100000, offset: 't' });//result.msg对象,提示弹窗 ç±»åž‹ä¸º5, æŒ‰é’®ï¼Œå’ŒæŒ‰é’®çš„名称为退出  æ—¶é—´ ä¸º100秒,以及偏移量(`offset: 't'
                        }
                    }, error: function () {
                        layer.close(ajaxLoad);
                        layer.alert("发生错误!", { icon: 5 });
                        layer.close(ajaxLoad);  //关闭
                        layer.alert("发生错误!", { icon: 5 });//提示发生错误 è­¦ç¤ºæ ‡å¿— 5
                    }
                });
            }
            //#endregion
            //#region ä¿å­˜æ–¹æ³•
            function set_SaveBill(data) {
            function set_SaveBill(data) { //set_SaveBill çš„函数,它接收一个参数 data
                if ($("#HCurID").val() == 0) {
                    layer.msg("请选择币别!", { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                    return;
                if ($("#HCurID").val() == 0) {  //检查页面上ID为HCurID的元素的值是否为0 å¦‚果为0  è¯´æ˜Žç”¨æˆ·æ²¡æœ‰é€‰æ‹©å¸åˆ«ï¼Œ
                    //提示请选择币别,警示标志为5,选择按钮及按钮名称 ï¼Œæ—¶é—´ä¸º100秒  ï¼Œoffset: 't'和skin: 'layui-layer-lan'分别用于调整消息框的位置和样式  æ ‡é¢˜ä¸ºâ€™æ¸©é¦¨æç¤ºâ€˜
                    layer.msg("请选择币别!", { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                    return; //return; é˜»æ­¢å‡½æ•°ç»§ç»­æ‰§è¡Œ
                }
                if ($("#HExRate").val() == 0) {
                     //提示请输入汇率,警示标志为5,选择按钮及按钮名称 ï¼Œæ—¶é—´ä¸º100秒  ï¼Œoffset: 't'和skin: 'layui-layer-lan'分别用于调整消息框的位置和样式  æ ‡é¢˜ä¸ºâ€™æ¸©é¦¨æç¤ºâ€˜
                    layer.msg("请输入汇率!", { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                    return;
                }
                if ($("#HEmpID").val() == 0) {
                     //提示请选择采购员,警示标志为5,选择按钮及按钮名称 ï¼Œæ—¶é—´ä¸º100秒  ï¼Œoffset: 't'和skin: 'layui-layer-lan'分别用于调整消息框的位置和样式  æ ‡é¢˜ä¸ºâ€™æ¸©é¦¨æç¤ºâ€˜
                    layer.msg("请选择采购员!", { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                    return;
                }
                if ($("#HDeptID").val() == 0) {
                     //提示请选择采购部门,警示标志为5,选择按钮及按钮名称 ï¼Œæ—¶é—´ä¸º100秒  ï¼Œoffset: 't'和skin: 'layui-layer-lan'分别用于调整消息框的位置和样式  æ ‡é¢˜ä¸ºâ€™æ¸©é¦¨æç¤ºâ€˜
                    layer.msg("请选择采购部门!", { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                    return;
                }
                if ($("#HSupID").val() == 0) {
                     //提示请选择供应商,警示标志为5,选择按钮及按钮名称 ï¼Œæ—¶é—´ä¸º100秒  ï¼Œoffset: 't'和skin: 'layui-layer-lan'分别用于调整消息框的位置和样式  æ ‡é¢˜ä¸ºâ€™æ¸©é¦¨æç¤ºâ€˜
                    layer.msg("请选择供应商!", { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                    return;
                }
                if ($("#HPSStyleID").val() == 0) {
                     //提示请选择采购方式,警示标志为5,选择按钮及按钮名称 ï¼Œæ—¶é—´ä¸º100秒  ï¼Œoffset: 't'和skin: 'layui-layer-lan'分别用于调整消息框的位置和样式  æ ‡é¢˜ä¸ºâ€™æ¸©é¦¨æç¤ºâ€˜
                    layer.msg("请选择采购方式!", { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                    return;
                }
                var num = [];
                for (var i = 0; i < table.cache["mainTable"].length; i++) {
                    if (table.cache["mainTable"][i] != "") {
                        table.cache["mainTable"][i].LAY_TABLE_INDEX = i;
                        num.push(table.cache["mainTable"][i])
                if ($("#HSSID").val() == 0) {
                     //提示请选择结算方式,警示标志为5,选择按钮及按钮名称 ï¼Œæ—¶é—´ä¸º100秒  ï¼Œoffset: 't'和skin: 'layui-layer-lan'分别用于调整消息框的位置和样式  æ ‡é¢˜ä¸ºâ€™æ¸©é¦¨æç¤ºâ€˜
                    layer.msg("请选择结算方式!", { icon: 5, btn: ['确认'], time: 100000, offset: 't', skin: 'layui-layer-lan', title: "温馨提示" });
                    return;
                }
                //子表数据检验简单表单验证
                //后续可用多个数组存储列名扩展
                for (var i = 0; i < option.data.length; i++) {//遍历option.data数组
                    //检查当前元素(option.data[i])是否不是对象、是否为null或是否为数组。                     è¿™æ˜¯å› ä¸ºä»£ç åŽç»­éƒ¨åˆ†å‡è®¾æ¯ä¸ªå…ƒç´ éƒ½æ˜¯ä¸€ä¸ªå¯¹è±¡ï¼Œç”¨äºŽæ£€æŸ¥å…¶å±žæ€§
                    if (typeof option.data[i] !== 'object' || option.data[i] === null || Array.isArray(option.data[i])) {
                        continue; // è·³è¿‡éžå¯¹è±¡é¡¹ï¼ˆå¦‚空数组)
                    }
                    var rowData = option.data[i];   //option.data[i]元素是一个有效的对象将其赋值给rowData变量
                    for (var col of Object.keys(rowData)) {  //遍历rowData对象的所有键  Object.keys(rowData)返回一个包含rowData所有自身属性键的数组
                        if (rowData[col] == "0" && (col == "HQty" || col =="HMaterID")) {  //检查当前属性的值是否等于"0",并且属性名不是"LAY_TABLE_INDEX"
                            layer.msg("第" + (i + 1) + "行:" + col + "不能为0!"); //提示第几行不能为0                          å¦‚果找到值为"0"的属性,并且该属性名不是"LAY_TABLE_INDEX",则通过layer.msg显示一个警告消息,指出哪个行和哪个列的值不能为0
                            return;
                        }
                    }
                }
                var num = [];  //定义一个 ç©ºæ•°ç»„
                for (var i = 0; i < table.cache["mainTable"].length; i++) {  //遍历 table.cache["mainTable"] æ•°ç»„
                    if (table.cache["mainTable"][i] != "") {            // æ£€æŸ¥å½“前元素(table.cache["mainTable"][i])是否不等于空字符串("")
                        table.cache["mainTable"][i].LAY_TABLE_INDEX = i; //如果当前元素非空,这行代码会给该元素添加一个名为 LAY_TABLE_INDEX çš„属性,并将其值设置为当前元素的索引 i
                        num.push(table.cache["mainTable"][i])//将当前元素(添加到之前声明的 num æ•°ç»„中。num æ•°ç»„最终将包含所有非空且已添加 LAY_TABLE_INDEX å±žæ€§çš„ table.cache["mainTable"] æ•°ç»„中的元素
                    }
                }
                var sMainStr = JSON.stringify(data.field);
                var sSubStr = JSON.stringify(num);
                var sAllStr = JSON.stringify(allVal);
                var sMainStr = JSON.stringify(data.field); //将data.field å¯¹è±¡è½¬æ¢æˆ JSON å­—符串,并存储在 sMainStr
                var sSubStr = JSON.stringify(num);      //将num å¯¹è±¡è½¬æ¢æˆ JSON å­—符串,并存储在 sSubStr
                var sAllStr = JSON.stringify(allVal); //将allVal å¯¹è±¡è½¬æ¢æˆ JSON å­—符串,并存储在 sAllStr
                //var hentryid = linteridSub;//子表 æŽ’序id
                var sMainSub = sMainStr + ';' + sSubStr + ';' + OperationType + ";" + sessionStorage["HUserName"] + ";" + sAllStr;
                //将前面三个 JSON å­—符串以及 OperationType å˜é‡å’Œ sessionStorage["HUserName"] çš„值通过分号拼接起来,形成了一个新的字符串 sMainSub
                var sMainSub = sMainStr + ';' + sSubStr + ';' + OperationType + ";" + sessionStorage["HUserName"] + ";" + sAllStr;
                $.ajax({
                    type: "POST",
                $.ajax({   //异步请求
                    type: "POST",  //请求类型
                    url: GetWEBURL() + "Cg_POOrderBill/POOrderBillEdit", //方法所在页面和方法名
                    async: true,
                    data: { "sMainSub": sMainSub },
                    dataType: "json",
                    success: function (data) {
                        if (data.count == 1) { // è¯´æ˜ŽéªŒè¯æˆåŠŸäº†ï¼Œ
                            layer.msg(data.Message, { icon: 1 });
                    async: true,            //是否异步进行请求
                    data: { "sMainSub": sMainSub },    // å°†hmaterid作为请求参数发送发送到服务器的数据
                    dataType: "json",              //类型为json
                    success: function (data) {// å½“请求成功时执行的回调函数
                        if (data.count == 1) { // è¯´æ˜ŽéªŒè¯æˆåŠŸäº†ï¼Œ   // æ£€æŸ¥è¿”回的数据中count属性的值是否为1,这可能表示操作成功
                            layer.msg(data.Message, { icon: 1 }); //使用layer插件显示一个消息,图标为1(通常表示成功)
                            $('#add-btn').addClass("layui-btn-disabled").attr("disabled", true);
                            $('#add-btn').addClass("layui-btn-disabled").attr("disabled", true);// ç¦ç”¨æ·»åŠ æŒ‰é’®ï¼Œé˜²æ­¢é‡å¤æäº¤
                            //保存后浏览
                            //ReRoadBillMain();
                        }
                        else {
                            layer.alert(data.Message, { icon: 5 });
                            layer.alert(data.Message, { icon: 5 });// å¦‚果操作未成功,显示一个包含错误信息的警告框,图标为5(通常表示错误)
                        }
                        layer.closeAll("loading");
                        layer.closeAll("loading");  //关闭所有正在显示的加载层
                    },
                    error: function (err) {
                        layer.alert("错误:" + err, { icon: 5 });
                        console.log("Reason" + sMainStr);
                    error: function (err) { // å½“请求失败时执行的回调函数
                        layer.alert("错误:" + err, { icon: 5 });  //示一个包含错误信息的警告框,图标为5
                        console.log("Reason" + sMainStr); //在控制台打印错误信息
                    }
                });
            }
            //#endregion
            //#region åº“存查询
            function get_Inventory() {
                var checkStatus = table.checkStatus('mainTable')
                    , data = checkStatus.data;
                if (checkStatus.data.length === 1 && data[0].HMaterID != 0 ) {
                    var HMaterID = data[0].HMaterID.toString();
                    //弹窗方法
                    layer.open({
                        type: 2//弹窗类型
                        , skin: 'layui-layer-rim' //加上边框
                        , area: ['90%', '90%']//大小
                        , title: '库存查询列表'//标题
                        , shift: 2//弹出动画
                        , content: ['../../仓存管理/条码报表/Kf_ICinventoryQueryReport.html?Type=1&HMaterID=' + HMaterID, 'yes']
                        , btn: ['取消']
                        , btn1: function (index, layero) {
                            layer.close(index);
                        }
                    })
                }
                else {
                    layer.msg('请选择一行有物料数据查询!');
                }
            }
            //#endregion
            //#region å‡ºå…¥åº“记录查询
            function get_InOutSum() {
                var checkStatus = table.checkStatus('mainTable')
                    , data = checkStatus.data;
                if (checkStatus.data.length === 1 && data[0].HMaterID != 0) {
                    var HMaterID = data[0].HMaterID.toString();
                    layer.open({
                        type: 2//弹窗类型
                        , skin: 'layui-layer-rim' //加上边框
                        , area: ['90%', '90%']//大小
                        , title: '出入库记录列表'//标题
                        , shift: 2//弹出动画
                        , content: ['../../仓存管理/条码报表/Kf_StockInOutSumQueryReport.html?Type=1&HMaterID=' + HMaterID, 'yes']
                        , btn: ['取消']
                        , btn1: function (index, layero) {
                            layer.close(index);
                        }
                    })
                }
                else {
                    layer.msg('请选择一行有物料数据查询!');
                }
            }
            //#endregion
            //行内快捷键筛选
            function set_GridCellCheck(obj) {
                $(document).off('keydown', ".layui-table-edit").on('keydown', '.layui-table-edit', function (e) {
                    if (event.key == "F7") {
            function set_GridCellCheck(obj) {       //定义了一个名为set_GridCellCheck的函数,它接受一个参数obj
                //使用$(document).off('keydown', ".layui-table-edit")来移除(如果存在的话)之前绑定到文档中所有.layui-table-edit类元素上的keydown事件监听器
                $(document).off('keydown', ".layui-table-edit").on('keydown', '.layui-table-edit', function (e) {
                    if (event.key == "F7") {//检查触发事件的键盘按键是否是F7键
                        //物料
                        if (obj.event == "HMaterID") {
                            layer.open({
                                type: 2
                        if (obj.event == "HMaterID") {//判断传入的obj对象的event属性是否等于字符串"HMaterID"
                            var HOrgID = $("#HOrgID").val();  //获取id="HOrgID"的元素中获取其值,并将该值存储在变量HOrgID中
                            layer.open({  //打开层
                                type: 2         // //表示弹出层的内容是一个 iframe       ç±»åž‹ä¸º2
                                , skin: "layui-layer-rim" //加上边框
                                , title: "物料列表"  //标题
                                , closeBtn: 1  //窗体右上角关闭 çš„ æ ·å¼
                                , shift: 2 //弹出动画
                                , area: ["90%", "90%"] //窗体大小
                                , maxmin: true //设置最大最小按钮是否显示
                                , content: ['../../Baseset/基础资料/Gy_MaterialList.html', 'yes']
                                , btn: ["确定", "取消"]
                                , btn1: function (index, laero) {
                                , content: ['../../基础资料/公用基础资料/Gy_Material.html?openType=2&HOrgID=' + HOrgID, 'yes']   //页面加载
                                , btn: ["确定", "取消"]  //属性定义了弹出层上的按钮数“确定”和“取消
                                , btn1: function (index, laero) { //当点击“确定”按钮时会被调用
                                    //按钮一  çš„回调
                                    var iframeWindow = window["layui-layer-iframe" + index];//获取弹框页面
                                    var checkStatus = iframeWindow.layui.table.checkStatus("mainTable");//获取选中的数据
                                    //if (checkStatus.data.length != 1) {
                                    //    return layer.msg("请选择一条数据");
                                    //}
                                    OptionData = checkStatus.data[0];  //把选中数据的第一条赋值给OptionData变量
                                    //选中多行时
                                    if (checkStatus.data.length > 1) {
                                        var rowIndex = $(obj.tr).attr("data-index") * 1;  //attr("data-index")用于获取该tr元素上data-index属性的值*1转换类型然后赋值给rowIndex
                                        for (var i = 0; i < checkStatus.data.length; i++) {  //判断选中的数据的长度  ç”¨äºŽéåކcheckStatus.data数组中的每个元素
                                            if (rowIndex + i >= option.data.length) {           //判断rowIndex + i的索引超出了option.data数组的长度,说明option.data数组需要扩展以包含更多行
                                                var NewRow = {
                                                    "HMaterID": 0, "物料代码": "", "物料名称": "", "规格型号": "", "HUnitID": 0, "计量单位": "", "HWHID": 0, "HWHName": "", "HQty": 1, "HRemark": ""
                                                    , "HPrice": "0", "HTaxPrice": "0", "HMoney": "0", "HDiscountRate": "1", "HRelTaxPrice": "0", "HTaxRate": "0", "HTaxMoney": "0", "HlineTotal": "0", "HlineTotalBB": "0", "HDate": Format(new Date, "yyyy- MM - dd")
                                                };  // åˆ›å»ºä¸€ä¸ªæ–°çš„包含数组   å…¶åˆå§‹å€¼ä¸ºç©ºæˆ–者0  æˆ–者是时间格式
                                                table.cache["mainTable"].push(NewRow);    //创建新的包含数组  ä¼ å…¥table.cache["mainTable"]数组
                                                option.data = table.cache["mainTable"];  //把传入 table.cache["mainTable"]数组的值赋值给option.data çš„属性
                                                table.render(option);//渲染界面
                                            }
                                    var rowIndex = $(obj.tr).attr("data-index") * 1;
                                    for (var i = 0; i < checkStatus.data.length; i++) {
                                        if (rowIndex + i >= option.data.length) {
                                            var NewRow = {
                                                "HMaterID": 0, "物料代码": "", "物料名称": "", "规格型号": "", "HUnitID": 0, "计量单位": "", "数量": "", "HRemark": ""
                                                , "HPrice": "0", "HTaxPrice": "0", "HMoney": "0", "HDiscountRate": "0", "HRelTaxPrice": "0", "HTaxRate": "0", "HTaxMoney": "0", "HlineTotal": "0", "HlineTotalBB": "0", "HDate": "2022-12-05"
                                            };
                                            table.cache["mainTable"].push(NewRow);
                                            option.data = table.cache["mainTable"];
                                            table.render(option);
                                            var HMaterID = checkStatus.data[i].HItemID; //checkStatus.data数组中的当前元素(索引为i)中获取HItemID属性的值 å¹¶èµ‹å€¼ç»™HMaterID
                                            var resultData = getMaterialByMaterID(HMaterID);  //使用HMaterID作为参数来调用getMaterialByMaterID函数来获取该物料的详细信息
                                            option.data[rowIndex + i].HMaterID = resultData.HMaterID;  //将option.data数组中对应行的HMaterID属性更新为从resultData对象中获取的物料ID
                                            option.data[rowIndex + i].物料代码 = resultData.HMaterNumber; //将option.data数组中对应行的 ç‰©æ–™ä»£ç  å±žæ€§æ›´æ–°ä¸ºä»ŽresultData对象中获取的物料ID
                                            option.data[rowIndex + i].物料名称 = resultData.HMaterName; //将option.data数组中对应行的  ç‰©æ–™åç§°  å±žæ€§æ›´æ–°ä¸ºä»ŽresultData对象中获取的物料ID
                                            option.data[rowIndex + i].规格型号 = resultData.HMaterModel; //将option.data数组中对应行的  è§„格型号  å±žæ€§æ›´æ–°ä¸ºä»ŽresultData对象中获取的物料ID
                                            option.data[rowIndex + i].HUnitID = resultData.HUnitID; //将option.data数组中对应行的 HUnitID å±žæ€§æ›´æ–°ä¸ºä»ŽresultData对象中获取的物料ID
                                            option.data[rowIndex + i].计量单位 = resultData.HUnitName; //将option.data数组中对应行的 è®¡é‡å•位 å±žæ€§æ›´æ–°ä¸ºä»ŽresultData对象中获取的物料ID   æ›´æ–°è®¡é‡å•位属性
                                            option.data[rowIndex + i].HQty = 1;  //将对应行的HQty属性(可能代表数量)设置为1。这表示对于每个选中的物料,其默认数量被设置为1
                                        }
                                        var HMaterID = checkStatus.data[i].HItemID;
                                        var resultData = getMaterialByMaterID(HMaterID);
                                        option.data[rowIndex + i].HMaterID = resultData.HMaterID;
                                        option.data[rowIndex + i].物料代码 = resultData.HMaterNumber;
                                        option.data[rowIndex + i].物料名称 = resultData.HMaterName;
                                        option.data[rowIndex + i].规格型号 = resultData.HMaterModel;
                                        option.data[rowIndex + i].HUnitID = resultData.HUnitID;
                                        option.data[rowIndex + i].计量单位 = resultData.HUnitName;
                                        table.render(option); //重新渲染表格以显示更新后的数据
                                    }
                                    table.render(option);
                                    layer.closeAll();
                                    layer.closeAll();  //关闭所有通过layer
                                    //layer.close(layer.index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                                }
                                , btn2: function (index, layero) {
                                , btn2: function (index, layero) {   //当点击“取消”按钮时会被调用
                                    //按钮【按钮二】的回调
                                    //return false å¼€å¯è¯¥ä»£ç å¯ç¦æ­¢ç‚¹å‡»è¯¥æŒ‰é’®å…³é—­
                                },
                                end: function () {
                                    //通过供应商id获取税率
                                    var HSupID = $("#HSupID").val();
                                    if (HSupID != 0) {
                                        $.ajax({
                                            url: GetWEBURL() + "/Gy_Supplier/xg",
                                            //url: "http://localhost:12761/Gy_Supplier/xg",
                                            type: "GET",
                                            data: {
                                                "HInterID": HSupID
                                            },
                                            success: function (d) {
                                                var HTaxRate = parseInt(d.data[0].增值税率)*0.01;
                                                var HExRate = $("#HExRate").val();                      //汇率
                                                //数据校验合格,重算记录
                                                var HQty = obj.data.HQty * 1;                           //数量
                                                var HPrice = obj.data.HPrice * 1;               //单价
                                                var HMoney = HQty * HPrice;                     //金额=数量*单价
                                                var HTaxMoney = Number((HMoney * HTaxRate).toFixed(4));         //税额=金额*税率
                                                var HlineTotal = HMoney + HTaxMoney;            //价税合计=金额+税额
                                                var HTaxPrice = Number((HPrice * (1 + HTaxRate)).toFixed(4));        //含税单价=单价*(1+税率)
                                                var HDiscountRate = obj.data.HDiscountRate * 1;   //折扣率
                                                var HRelTaxPrice = Number((HTaxPrice * HDiscountRate).toFixed(4));   //实际含税单价=含税单价*折扣率
                                                var HlineTotalBB = Number(((HMoney + HTaxMoney) * HExRate).toFixed(4));     //本位币价税合计=(税额+金额)*汇率
                                                obj.update({ //更新表格数据
                                                    "HMaterID": OptionData.HItemID             //设置HItemID的值为“HBillNo”字段的值HItemID`的值
                                                    , "物料代码": OptionData.物料代码
                                                    , "物料名称": OptionData.物料名称
                                                    , "规格型号": OptionData.规格型号
                                                    , "HUnitID": OptionData.HUnitID
                                                    , "计量单位": OptionData.计量单位名称
                                                    , "HTaxRate": HTaxRate*100
                                                    , HQty: HQty                               //更新HQty字段,HQty
                                                    , HPrice: HPrice                         //更新HPrice字段,HPrice
                                                    , HMoney: HMoney                      //更新HMoney字段,HMoney
                                                    , HTaxMoney: HTaxMoney                  //更新HTaxMoney字段,HTaxMoney
                                                    , HlineTotal: HlineTotal             //更新HlineTotal字段,HlineTotal
                                                    , HTaxPrice, HTaxPrice                   //更新HTaxPrice字段,HTaxPrice
                                                    , HRelTaxPrice: HRelTaxPrice            //更新HRelTaxPrice字段,其值来自变量HRelTaxPrice
                                                    , HlineTotalBB: HlineTotalBB              //更新HlineTotalBB字段,其值来自变量HlineTotalBB
                                                })
                                            }
                                        });
                                    } else {
                                        obj.update({ //更新表格数据
                                            "HMaterID": OptionData.HItemID             //设置HItemID的值为“HBillNo”字段的值HItemID`的值
                                            , "物料代码": OptionData.物料代码
                                            , "物料名称": OptionData.物料名称
                                            , "规格型号": OptionData.规格型号
                                            , "HUnitID": OptionData.HUnitID
                                            , "计量单位": OptionData.计量单位名称
                                        })
                                    }
                                    }
                                });
                        }
                        //计量单位
                        if (obj.event == "HUnitID") {
                        if (obj.event == "HUnitID") {  //判断  obj.event事件 æ˜¯å¦ç­‰äºŽå­—符串 'HUnitID'。如果等于,则执行if循环
                            layer.open({
                                type: 2
                                type: 2             //表示弹出层的内容是一个 iframe       ç±»åž‹ä¸º2
                                , skin: "layui-layer-rim"        //加上边框
                                , title: "计量单位列表"           //标题
                                , closeBtn: 1                    //窗体右上角关闭 çš„ æ ·å¼
                                , shift: 2                  //弹出动画
                                , area: ["90%", "90%"]          //窗体大小
                                , maxmin: true                  //设置最大最小按钮是否显示
                                , content: ['../../基础资料/公用基础资料/Gy_Unit.html', 'yes']   //设置 iframe çš„ URL,URL ä¸­åŒ…含了查询参数,来调用所需要的值
                                , btn: ["确定", "取消"]        //自定义选择按钮  å…¶æŒ‰é’®çš„名称为  ç¡®å®šï¼Œå–消
                                , btn1: function (index, laero) {  //按钮监听 è°ƒç”¨å›žè°ƒ
                                //按钮一  çš„回调
                                var iframeWindow = window["layui-layer-iframe" + index];//获取弹框页面
                                var checkStatus = iframeWindow.layui.table.checkStatus("mainTable");//获取选中的数据
                                if (checkStatus.data.length != 1) {  //判断选中的数据是否为一条
                                    return layer.msg("请选择一条数据");  //提示请选中一条
                                }
                                OptionData = checkStatus.data[0];
                                //更新表格缓存的数据
                                obj.update({
                                    "HUnitID": checkStatus.data[0].HItemID
                                    , "计量单位": checkStatus.data[0].计量单位名称
                                })
                                layer.close(index);//关闭弹窗
                            }
                            , end: function () {
                                obj.update({
                                    "HUnitID": OptionData.HItemID
                                    , "计量单位": OptionData.计量单位名称
                                })
                            }
                        })
                        }
                        //仓库
                        if (obj.event == "HWHID") {  //判断obj.event事件  çš„字符串是否==HWHID
                            layer.open({            //打开层
                                type: 2      //表示弹出层的内容是一个 iframe       ç±»åž‹ä¸º2
                                , skin: "layui-layer-rim" //加上边框
                                , title: "计量单位列表"  //标题
                                , closeBtn: 1  //窗体右上角关闭 çš„ æ ·å¼
                                , shift: 2 //弹出动画
                                , shift: 2   //弹出动画
                                , area: ["90%", "90%"] //窗体大小
                                , maxmin: true //设置最大最小按钮是否显示
                                , content: ['../../Baseset/基础资料/Gy_UnitList.html', 'yes']
                                , btn: ["确定", "取消"]
                                , btn1: function (index, laero) {
                                , content: ['../../基础资料/公用基础资料/Gy_Warehouse.html?type=Warehouse', 'yes']//设置 iframe çš„ URL,URL ä¸­åŒ…含了查询参数,来调用所需要的值
                                , btn: ["确定", "取消"]  //自定义选择按钮  å…¶æŒ‰é’®çš„名称为  ç¡®å®šï¼Œå–消
                                , btn1: function (index, laero) {  //当为为确认时
                                    //按钮一  çš„回调
                                    var iframeWindow = window["layui-layer-iframe" + index];//获取弹框页面
                                    var checkStatus = iframeWindow.layui.table.checkStatus("mainTable");//获取选中的数据
                                    if (checkStatus.data.length != 0) {
                                    if (checkStatus.data.length != 1) {
                                        return layer.msg("请选择一条数据");
                                    }
                                    OptionData = checkStatus.data[0];
                                    //更新表格缓存的数据
                                    obj.update({
                                        "计量单位": checkStatus.data[0].HName
                                        , "HUnitID": checkStatus.data[0].HItemID
                                        "HWHID": checkStatus.data[0].HItemID
                                        , "HWHName": checkStatus.data[0].仓库名称
                                    })
                                    layer.close(index);//关闭弹窗
                                }
                                , end: function () {
                                    obj.update({
                                        "HWHID": OptionData.HItemID
                                        , "HWHName": OptionData.仓库名称
                                    })
                                }
                            })
                        }
                        obj.event = "";
                        return false;
                    }
                    obj.event = ""; //把boj.event属性  åˆå§‹åŒ–为空
                    return false;
                }
                })
            }
                //双击
                $('.layui-table-box tbody td[data-field="物料代码"]').off('dblclick').on('dblclick', function () {
                    var HOrgID = $("#HOrgID").val();  //获取id="HOrgID"的元素中获取其值,并将该值存储在变量HOrgID中
                    layer.open({  //打开层
                        type: 2         // //表示弹出层的内容是一个 iframe       ç±»åž‹ä¸º2
                        , skin: "layui-layer-rim" //加上边框
                        , title: "物料列表"  //标题
                        , closeBtn: 1  //窗体右上角关闭 çš„ æ ·å¼
                        , shift: 2 //弹出动画
                        , area: ["90%", "90%"] //窗体大小
                        , maxmin: true //设置最大最小按钮是否显示
                        , content: ['../../基础资料/公用基础资料/Gy_Material.html?openType=2&HOrgID=' + HOrgID, 'yes']   //页面加载
                        , btn: ["确定", "取消"]  //属性定义了弹出层上的按钮数“确定”和“取消
                        , btn1: function (index, laero) { //当点击“确定”按钮时会被调用
                            //按钮一  çš„回调
                            var iframeWindow = window["layui-layer-iframe" + index];//获取弹框页面
                            var checkStatus = iframeWindow.layui.table.checkStatus("mainTable");//获取选中的数据
                            OptionData = checkStatus.data[0];  //把选中数据的第一条赋值给OptionData变量
                            //选中多行时
                            if (checkStatus.data.length > 1) {
                                var rowIndex = $(obj.tr).attr("data-index") * 1;  //attr("data-index")用于获取该tr元素上data-index属性的值*1转换类型然后赋值给rowIndex
                                for (var i = 0; i < checkStatus.data.length; i++) {  //判断选中的数据的长度  ç”¨äºŽéåކcheckStatus.data数组中的每个元素
                                    if (rowIndex + i >= option.data.length) {           //判断rowIndex + i的索引超出了option.data数组的长度,说明option.data数组需要扩展以包含更多行
                                        var NewRow = {
                                            "HMaterID": 0, "物料代码": "", "物料名称": "", "规格型号": "", "HUnitID": 0, "计量单位": "", "HWHID": 0, "HWHName": "", "HQty": 1, "HRemark": ""
                                            , "HPrice": "0", "HTaxPrice": "0", "HMoney": "0", "HDiscountRate": "1", "HRelTaxPrice": "0", "HTaxRate": "0", "HTaxMoney": "0", "HlineTotal": "0", "HlineTotalBB": "0", "HDate": Format(new Date, "yyyy- MM - dd")
                                        };  // åˆ›å»ºä¸€ä¸ªæ–°çš„包含数组   å…¶åˆå§‹å€¼ä¸ºç©ºæˆ–者0  æˆ–者是时间格式
                                        table.cache["mainTable"].push(NewRow);    //创建新的包含数组  ä¼ å…¥table.cache["mainTable"]数组
                                        option.data = table.cache["mainTable"];  //把传入 table.cache["mainTable"]数组的值赋值给option.data çš„属性
                                        table.render(option);//渲染界面
                                    }
                                    var HMaterID = checkStatus.data[i].HItemID; //checkStatus.data数组中的当前元素(索引为i)中获取HItemID属性的值 å¹¶èµ‹å€¼ç»™HMaterID
                                    var resultData = getMaterialByMaterID(HMaterID);  //使用HMaterID作为参数来调用getMaterialByMaterID函数来获取该物料的详细信息
                                    option.data[rowIndex + i].HMaterID = resultData.HMaterID;  //将option.data数组中对应行的HMaterID属性更新为从resultData对象中获取的物料ID
                                    option.data[rowIndex + i].物料代码 = resultData.HMaterNumber; //将option.data数组中对应行的 ç‰©æ–™ä»£ç  å±žæ€§æ›´æ–°ä¸ºä»ŽresultData对象中获取的物料ID
                                    option.data[rowIndex + i].物料名称 = resultData.HMaterName; //将option.data数组中对应行的  ç‰©æ–™åç§°  å±žæ€§æ›´æ–°ä¸ºä»ŽresultData对象中获取的物料ID
                                    option.data[rowIndex + i].规格型号 = resultData.HMaterModel; //将option.data数组中对应行的  è§„格型号  å±žæ€§æ›´æ–°ä¸ºä»ŽresultData对象中获取的物料ID
                                    option.data[rowIndex + i].HUnitID = resultData.HUnitID; //将option.data数组中对应行的 HUnitID å±žæ€§æ›´æ–°ä¸ºä»ŽresultData对象中获取的物料ID
                                    option.data[rowIndex + i].计量单位 = resultData.HUnitName; //将option.data数组中对应行的 è®¡é‡å•位 å±žæ€§æ›´æ–°ä¸ºä»ŽresultData对象中获取的物料ID   æ›´æ–°è®¡é‡å•位属性
                                    option.data[rowIndex + i].HQty = 1;  //将对应行的HQty属性(可能代表数量)设置为1。这表示对于每个选中的物料,其默认数量被设置为1
                                }
                            }
                            layer.closeAll();  //关闭所有通过layer
                            //layer.close(layer.index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                        }
                        , btn2: function (index, layero) {   //当点击“取消”按钮时会被调用
                            //按钮【按钮二】的回调
                            //return false å¼€å¯è¯¥ä»£ç å¯ç¦æ­¢ç‚¹å‡»è¯¥æŒ‰é’®å…³é—­
                        },
                        end: function () {
                            //通过供应商id获取税率
                            var HSupID = $("#HSupID").val();
                            if (HSupID != 0) {
                                $.ajax({
                                    url: GetWEBURL() + "/Gy_Supplier/xg",
                                    //url: "http://localhost:12761/Gy_Supplier/xg",
                                    type: "GET",
                                    data: {
                                        "HInterID": HSupID
                                    },
                                    success: function (d) {
                                        var HTaxRate = parseInt(d.data[0].增值税率)*0.01;
                                        var HExRate = $("#HExRate").val();                      //汇率
                                        //数据校验合格,重算记录
                                        var HQty = obj.data.HQty * 1;                           //数量
                                        var HPrice = obj.data.HPrice * 1;               //单价
                                        var HMoney = HQty * HPrice;                     //金额=数量*单价
                                        var HTaxMoney = Number((HMoney * HTaxRate).toFixed(4));         //税额=金额*税率
                                        var HlineTotal = HMoney + HTaxMoney;            //价税合计=金额+税额
                                        var HTaxPrice = Number((HPrice * (1 + HTaxRate)).toFixed(4));        //含税单价=单价*(1+税率)
                                        var HDiscountRate = obj.data.HDiscountRate * 1;   //折扣率
                                        var HRelTaxPrice = Number((HTaxPrice * HDiscountRate).toFixed(4));   //实际含税单价=含税单价*折扣率
                                        var HlineTotalBB = Number(((HMoney + HTaxMoney) * HExRate).toFixed(4));     //本位币价税合计=(税额+金额)*汇率
                                        obj.update({ //更新表格数据
                                            "HMaterID": OptionData.HItemID             //设置HItemID的值为“HBillNo”字段的值HItemID`的值
                                            , "物料代码": OptionData.物料代码
                                            , "物料名称": OptionData.物料名称
                                            , "规格型号": OptionData.规格型号
                                            , "HUnitID": OptionData.HUnitID
                                            , "计量单位": OptionData.计量单位名称
                                            , "HTaxRate": HTaxRate*100
                                            , HQty: HQty                               //更新HQty字段,HQty
                                            , HPrice: HPrice                         //更新HPrice字段,HPrice
                                            , HMoney: HMoney                      //更新HMoney字段,HMoney
                                            , HTaxMoney: HTaxMoney                  //更新HTaxMoney字段,HTaxMoney
                                            , HlineTotal: HlineTotal             //更新HlineTotal字段,HlineTotal
                                            , HTaxPrice, HTaxPrice                   //更新HTaxPrice字段,HTaxPrice
                                            , HRelTaxPrice: HRelTaxPrice            //更新HRelTaxPrice字段,其值来自变量HRelTaxPrice
                                            , HlineTotalBB: HlineTotalBB              //更新HlineTotalBB字段,其值来自变量HlineTotalBB
                                        })
                                    }
                                });
                            } else {
                                obj.update({ //更新表格数据
                                    "HMaterID": OptionData.HItemID             //设置HItemID的值为“HBillNo”字段的值HItemID`的值
                                    , "物料代码": OptionData.物料代码
                                    , "物料名称": OptionData.物料名称
                                    , "规格型号": OptionData.规格型号
                                    , "HUnitID": OptionData.HUnitID
                                    , "计量单位": OptionData.计量单位名称
                                })
                            }
                        }
                    });
                });
        }
            //行内删除
            function set_GridDelete(obj) {
@@ -1047,30 +1516,30 @@
                    });
                }
            }
            //采购员
            function get_checkEmp() {
                layer.open({
                layer.open({  //打开层
                    type: 2//弹窗类型
                    , skin: 'layui-layer-rim' //加上边框
                    , area: ['90%', '90%']//大小
                    , title: '采购员列表'//标题
                    , shift: 2//弹出动画
                    , content: ['../../Baseset/基础资料/Gy_EmployeeList.html?Type=HEmp', 'yes']
                    //, btn: ['确定', '取消']
                    //, btn1: function (index, layero) {//按钮【按钮一】的回调
                    //    var iframeWindow = window['layui-layer-iframe' + index]  //获取弹框页面
                    //    var checkStatus = iframeWindow.layui.table.checkStatus('mainTable');//获取table的elem:"#test"
                    //    if (checkStatus.data.length === 0) {
                    //        return layer.msg('请选择数据');
                    //    }
                    //    $("#HEmpName").val(checkStatus.data[0].HName);
                    //    $("#HEmpID").val(checkStatus.data[0].HItemID);
                    //    layer.close(index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                    //}
                    //, btn2: function (index, layero) { }
                    , content: ['../../基础资料/公用基础资料/Gy_EmployeeList.html?Type=HEmp', 'yes']  //设置 iframe çš„ URL,URL ä¸­åŒ…含了查询参数,来调用所需要的值
                    , btn: ['确定', '取消']   //自定义选择按钮 å…¶æŒ‰é’®çš„名称为  ç¡®å®šï¼Œå–消
                    , btn1: function (index, layero) {//按钮【按钮一】的回调
                        var iframeWindow = window['layui-layer-iframe' + index]  //获取弹框页面
                        var checkStatus = iframeWindow.layui.table.checkStatus('mainTable');//获取table的elem:"#test"
                        if (checkStatus.data.length === 0) {      //判断是否选择了数据
                            return layer.msg('请选择数据');          //提示请选择数据
                        }
                        $("#HEmpName").val(checkStatus.data[0].职员名称);
                        $("#HEmpID").val(checkStatus.data[0].HItemID);
                        layer.close(index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                    }
                    , btn2: function (index, layero) { }
                })
            }
            //供应商
            function get_checkSup() {
                layer.open({
                    type: 2//弹窗类型
@@ -1078,7 +1547,7 @@
                    , area: ['90%', '90%']//大小
                    , title: '供应商列表'//标题
                    , shift: 2//弹出动画
                    , content: ['../../基础资料/采购基础资料/Gy_Supplier.html', 'yes']
                    , content: ['../../基础资料/采购基础资料/Gy_Supplier.html?Type=HSup', 'yes']
                    , btn: ['确定', '取消']
                    , btn1: function (index, layero) {//按钮【按钮一】的回调
                        var iframeWindow = window['layui-layer-iframe' + index]  //获取弹框页面
@@ -1088,12 +1557,21 @@
                        }
                        $("#HSupName").val(checkStatus.data[0].供应商名称);
                        $("#HSupID").val(checkStatus.data[0].HItemID);
                        $("#HCurID").val(checkStatus.data[0].HCurID);
                        $("#HCurName").val(checkStatus.data[0].货币);
                        $("#HExRate").val(checkStatus.data[0].汇率);
                        $("#HSSID").val(checkStatus.data[0].HSSID);
                        $("#HSSName").val(checkStatus.data[0].结算方式);
                        $("#HAddress").val(checkStatus.data[0].地区);
                        $("#HPSStyleName").val(checkStatus.data[0].采购方式);
                        $("#HPSStyleID").val(checkStatus.data[0].HPSStyleID);
                        layer.close(index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                    }
                    , btn2: function (index, layero) { }
                })
            }
            //货币
            function get_checkCur() {
                layer.open({
                    type: 2//弹窗类型
@@ -1117,7 +1595,7 @@
                    , btn2: function (index, layero) { }
                })
            }
            //采购部门
            function get_checkDept() {
                layer.open({
                    type: 2//弹窗类型
@@ -1125,22 +1603,24 @@
                    , area: ['90%', '90%']//大小
                    , title: '采购部门列表'//标题
                    , shift: 2//弹出动画
                    , content: ['../../Baseset/基础资料/Gy_DepartmentList.html', 'yes']
                    //, btn: ['确定', '取消']
                    //, btn1: function (index, layero) {//按钮【按钮一】的回调
                    //    var iframeWindow = window['layui-layer-iframe' + index]  //获取弹框页面
                    //    var checkStatus = iframeWindow.layui.table.checkStatus('mainTable');//获取table的elem:"#test"
                    //    if (checkStatus.data.length === 0) {
                    //        return layer.msg('请选择数据');
                    //    }
                    //    $("#HDeptName").val(checkStatus.data[0].HName);
                    //    $("#HDeptID").val(checkStatus.data[0].HItemID);
                    //    layer.close(index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                    //}
                    //, btn2: function (index, layero) { }
                    , content: ['../../基础资料/公用基础资料/Gy_DepartmentList.html', 'yes']
                    , btn: ['确定', '取消']
                    , btn1: function (index, layero) {//按钮【按钮一】的回调
                       var iframeWindow = window['layui-layer-iframe' + index]  //获取弹框页面
                       var checkStatus = iframeWindow.layui.table.checkStatus('mainTable');//获取table的elem:"#test"
                       if (checkStatus.data.length === 0) {
                           return layer.msg('请选择数据');
                       }
                       $("#HDeptName").val(checkStatus.data[0].部门名称);
                        $("#HDeptID").val(checkStatus.data[0].HItemID);
                        $("#HManagerID").val(checkStatus.data[0].HEmpID);
                        $("#HManagerName").val(checkStatus.data[0].负责人);
                       layer.close(index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                   }
                   , btn2: function (index, layero) { }
                })
            }
            //主管
            function get_checkManager() {
                layer.open({
                    type: 2//弹窗类型
@@ -1148,22 +1628,22 @@
                    , area: ['90%', '90%']//大小
                    , title: '主管列表'//标题
                    , shift: 2//弹出动画
                    , content: ['../../Baseset/基础资料/Gy_EmployeeList.html?Type=HManager', 'yes']
                    //, btn: ['确定', '取消']
                    //, btn1: function (index, layero) {//按钮【按钮一】的回调
                    //    var iframeWindow = window['layui-layer-iframe' + index]  //获取弹框页面
                    //    var checkStatus = iframeWindow.layui.table.checkStatus('mainTable');//获取table的elem:"#test"
                    //    if (checkStatus.data.length === 0) {
                    //        return layer.msg('请选择数据');
                    //    }
                    //    $("#HManagerName").val(checkStatus.data[0].HName);
                    //    $("#HManagerID").val(checkStatus.data[0].HItemID);
                    //    layer.close(index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                    //}
                    //, btn2: function (index, layero) { }
                    , content: ['../../基础资料/公用基础资料/Gy_EmployeeList.html?Type=HManager', 'yes']
                    , btn: ['确定', '取消']
                    , btn1: function (index, layero) {//按钮【按钮一】的回调
                        var iframeWindow = window['layui-layer-iframe' + index]  //获取弹框页面
                        var checkStatus = iframeWindow.layui.table.checkStatus('mainTable');//获取table的elem:"#test"
                        if (checkStatus.data.length === 0) {
                            return layer.msg('请选择数据');
                        }
                        $("#HManagerName").val(checkStatus.data[0].职员名称);
                        $("#HManagerID").val(checkStatus.data[0].HItemID);
                        layer.close(index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                    }
                    , btn2: function (index, layero) { }
                })
            }
            //采购方式
            function get_checkPSStyle() {
                layer.open({
                    type: 2//弹窗类型
@@ -1171,7 +1651,7 @@
                    , area: ['90%', '90%']//大小
                    , title: '采购方式列表'//标题
                    , shift: 2//弹出动画
                    , content: ['../../Baseset/基础资料/Gy_PoStockStyle.html', 'yes']
                    , content: ['../../基础资料/公用基础资料/Gy_PoStockStyle.html', 'yes']
                    , btn: ['确定', '取消']
                    , btn1: function (index, layero) {//按钮【按钮一】的回调
                        var iframeWindow = window['layui-layer-iframe' + index]  //获取弹框页面
@@ -1179,14 +1659,14 @@
                        if (checkStatus.data.length === 0) {
                            return layer.msg('请选择数据');
                        }
                        $("#HPSStyleName").val(checkStatus.data[0].HName);
                        $("#HPSStyleName").val(checkStatus.data[0].采购方式名称);
                        $("#HPSStyleID").val(checkStatus.data[0].HItemID);
                        layer.close(index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                    }
                    , btn2: function (index, layero) { }
                })
            }
            //结算方式
            function get_checkSS() {
                layer.open({
                    type: 2//弹窗类型
@@ -1194,7 +1674,7 @@
                    , area: ['90%', '90%']//大小
                    , title: '结算方式列表'//标题
                    , shift: 2//弹出动画
                    , content: ['../../Baseset/基础资料/Gy_SettleStyle.html', 'yes']
                    , content: ['../../基础资料/基础资料/Gy_SettleStyle.html', 'yes']
                    , btn: ['确定', '取消']
                    , btn1: function (index, layero) {//按钮【按钮一】的回调
                        var iframeWindow = window['layui-layer-iframe' + index]  //获取弹框页面
@@ -1202,7 +1682,7 @@
                        if (checkStatus.data.length === 0) {
                            return layer.msg('请选择数据');
                        }
                        $("#HSSName").val(checkStatus.data[0].HName);
                        $("#HSSName").val(checkStatus.data[0].结算方式名称);
                        $("#HSSID").val(checkStatus.data[0].HItemID);
                        layer.close(index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                    }
@@ -1210,31 +1690,119 @@
                })
            }
            //工程项目
            function get_btnHProjectID() {
                layer.open({
                    type: 2//弹窗类型
                    , skin: 'layui-layer-rim' //加上边框
                    , area: ['90%', '90%']//大小
                    , title: '项目列表'//标题
                    , shift: 2//弹出动画
                    , content: ['../../项目管理/工程项目/PM_ProjectBillList.html', 'yes']
                    , btn: ['确定', '取消']
                    , btn1: function (index, layero) {//按钮【按钮一】的回调
                        var iframeWindow = window['layui-layer-iframe' + index]  //获取弹框页面
                        var checkStatus = iframeWindow.layui.table.checkStatus('mainTable');//获取table的elem:"#test"
                        if (checkStatus.data.length === 0) {
                            return layer.msg('请选择数据');
                        }
                        $("#HProjectName").val(checkStatus.data[0].项目名称);
                        $("#HProjectNumber").val(checkStatus.data[0].项目代码);
                        $("#HProjectID").val(checkStatus.data[0].HInterID);
                        layer.close(index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                    }
                    , btn2: function (index, layero) { }
                })
            }
            //仓库
            function get_btnHWHID() {
                layer.open({
                    type: 2//弹窗类型
                    , skin: 'layui-layer-rim' //加上边框
                    , area: ['90%', '90%']//大小
                    , title: '结算方式列表'//标题
                    , shift: 2//弹出动画
                    , content: ['../../基础资料/公用基础资料/Gy_Warehouse.html', 'yes']
                    , btn: ['确定', '取消']
                    , btn1: function (index, layero) {//按钮【按钮一】的回调
                        var iframeWindow = window['layui-layer-iframe' + index]  //获取弹框页面
                        var checkStatus = iframeWindow.layui.table.checkStatus('mainTable');//获取table的elem:"#test"
                        if (checkStatus.data.length === 0) {
                            return layer.msg('请选择数据');
                        }
                        $("#HWHName").val(checkStatus.data[0].仓库名称);
                        $("#HWHID").val(checkStatus.data[0].HItemID);
                        //if (option.data.length > 0) {
                        //    for (var i = 0; i < option.data.length; i++) {
                        //        if (option.data[i]["HWHID"] == 0) {
                        //            option.data[i]["HWHID"] = checkStatus.data[0].HItemID;
                        //            option.data[i]["HWHName"] = checkStatus.data[0].仓库名称;
                        //        }
                        //    }
                        //}
                        table.render(option);
                        layer.close(index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                    }
                    , btn2: function (index, layero) { }
                })
            }
            //#region æ ¹æ®ç‰©æ–™ID获取物料详细信息
            function getMaterialByMaterID(HMaterID) {
                var resultData = {};
                $.ajax({
                    url: GetWEBURL() + "Cg_POOrderBill/getMaterialByMaterID",
                    async: false,
                    type: "GET",
                    data: {
                        "HMaterID": HMaterID
                $.ajax({  // å¼‚步请求
                    url: GetWEBURL() + "Cg_POOrderBill/getMaterialByMaterID",  //请求地址
                    async: false,   //是否开启异步
                    type: "GET",   //请求类型
                    data: {   //定义发送到服务器的数据
                        "HMaterID": HMaterID     //  å°†hmaterid作为请求参数发送
                    },
                    success: function (result) {
                        if (result.code == 1) {
                            var data = result.data;
                            resultData = data[0];
                    success: function (result) {   // å½“请求成功时,执行这个函数
                        if (result.code == 1) { // å¦‚果服务器返回的数据中的`code字段等于1,这可能表示审核操作成功执行
                            var data = result.data; //声明data变量,并将其赋值为result对象中的data属性
                            resultData = data[0];   //将data数组(或类数组对象)的第一个元素赋值给变量resultData
                        } else {
                            layer.alert(result.msg, { icon: 5, btn: ['退出'], time: 100000, offset: 't' });
                            layer.alert(result.msg, { icon: 5, btn: ['退出'], time: 100000, offset: 't' }); //result.msg对象,提示弹窗 ç±»åž‹ä¸º5, æŒ‰é’®ï¼Œå’ŒæŒ‰é’®çš„名称为退出  æ—¶é—´ ä¸º100秒,以及偏移量(`offset: 't'
                        }
                    }, error: function () {
                        layer.alert("发生错误!", { icon: 5 });
                        layer.alert("发生错误!", { icon: 5 });  //提示弹窗 å‘生错误 ï¼Œè­¦ç¤ºæ ‡å¿—为5的
                    }
                });
                return resultData;
            }
            //#endregion
            //#region æ ¹æ®ç‰©æ–™ID获取精度
            function getDecByMaterID(HMaterID) {
                var resultData = {};
                $.ajax({  // å¼‚步请求
                    url: GetWEBURL() + "Gy_Material/getDecByID",  //请求地址
                    async: false,   //是否开启异步
                    type: "GET",   //请求类型
                    data: {   //定义发送到服务器的数据
                        "HMaterID": HMaterID     //  å°†hmaterid作为请求参数发送
                    },
                    success: function (result) {   // å½“请求成功时,执行这个函数
                        if (result.code == 1) { // å¦‚果服务器返回的数据中的`code字段等于1,这可能表示审核操作成功执行
                            var data = result.data; //声明data变量,并将其赋值为result对象中的data属性
                            resultData = data[0];   //将data数组(或类数组对象)的第一个元素赋值给变量resultData
                        }
                        //else {
                        //    layer.alert(result.Message, { icon: 5, btn: ['退出'], time: 100000, offset: 't' }); //result.msg对象,提示弹窗 ç±»åž‹ä¸º5, æŒ‰é’®ï¼Œå’ŒæŒ‰é’®çš„名称为退出  æ—¶é—´ ä¸º100秒,以及偏移量(`offset: 't'
                        //}
                    }, error: function () {
                        layer.alert("发生错误!", { icon: 5 });  //提示弹窗 å‘生错误 ï¼Œè­¦ç¤ºæ ‡å¿—为5的
                    }
                });
                return resultData;
            }
            //#endregion
            //#region ä¿å­˜åŽæµè§ˆæ–¹æ³•
            function ReRoadBillMain() {
                location.replace('Add_Edit_Cg_POInStockBillList.html?OperationType=4&linterid=' + linterid + '&HSouceBillType=');
@@ -1252,22 +1820,82 @@
       // åŸºç¡€èµ„料返回数据
       function GetHEmpValue(obj)  //返回采购员
       {
           $("#HEmpName").val(obj[0].HName);
           $("#HEmpName").val(obj[0].职员名称);
           $("#HEmpID").val(obj[0].HItemID);
       }
       function GetHDeptNameValue(obj)  //返回采购部门
       {
           $("#HDeptName").val(obj[0].HName);
           $("#HDeptName").val(obj[0].部门名称);
           $("#HDeptID").val(obj[0].HItemID);
        } 
        function GetHManagerValue(obj)  //返回主管
        {
            $("#HManagerName").val(obj[0].HName);
            $("#HManagerName").val(obj[0].职员名称);
            $("#HManagerID").val(obj[0].HItemID);
        }
       function GetHPSStyleNameValue(obj)  //返回采购方式
       {
            $("#HPSStyleName").val(obj[0].采购方式名称);
            $("#HPSStyleID").val(obj[0].HItemID);
        }
       function GetHSupNameValue(obj)  //返回供应商
       {
           $("#HSupName").val(obj[0].供应商名称);
           $("#HSupID").val(obj[0].HItemID);
           $("#HCurID").val(obj[0].HCurID);
           $("#HCurName").val(obj[0].货币);
           $("#HExRate").val(obj[0].汇率);
           $("#HSSID").val(obj[0].HSSID);
           $("#HSSName").val(obj[0].结算方式);
           $("#HAddress").val(obj[0].地区);
           $("#HPSStyleName").val(obj[0].采购方式);
           $("#HPSStyleID").val(obj[0].HPSStyleID);
        }
        function GetSettleStyleValue(obj)  //返回结算方式
        {
            $("#HSSName").val(obj[0].结算方式名称);
            $("#HSSID").val(obj[0].HItemID);
        }
        //双击返回计量单位
         function GetGyUnit(data) {
             OptionData = data
         }
            //双击返回物料
        function GetGyMaterial(data) {
             OptionData = data
        }
        //项目
        function GetProjectBillValue(data) {
            $("#HProjectName").val(data[0].项目名称);
            $("#HProjectNumber").val(data[0].项目代码);
            $("#HProjectID").val(data[0].HInterID);
        }
        //双击返回仓库
        function GetHWHValue(data) {
            $("#HWHName").val(data[0].仓库名称);
            $("#HWHID").val(data[0].HItemID);
            if (option.data.length > 0) {
                for (var i = 0; i < option.data.length; i++) {
                    if (option.data[i]["HWHID"] == 0) {
                        option.data[i]["HWHID"] = data[0].HItemID;
                        option.data[i]["HWHName"] = data[0].仓库名称;
                    }
                }
            }
            layui.table.render(option);
        }
        function GetGyWarehouse(data) {
            OptionData = data[0]
        }
    </script>
</body>
</html>