duhe
2025-09-01 e57b2edbffff5a653ba9eda65eae100ceb2e7822
WebTM/views/²É¹º¹ÜÀí/²É¹ººÏͬ/Add_Edit_Cg_ContractBillList.html
@@ -197,25 +197,11 @@
                                    </div>
                                    <div class="layui-row">
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width: 85px;">修改人</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
                                                <input type="text" class="layui-input" name="HUpDater" id="HUpDater" style="background-color:#efefef4d;" readonly>
                                            </div>
                                        </div>
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width: 85px;">作废人</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
                                                <input type="text" class="layui-input" name="HDeleteMan " id="HDeleteMan " style="background-color:#efefef4d;" readonly>
                                            </div>
                                        </div>
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width: 85px;">制单日期</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
                                                <input type="text" class="layui-input" name="HMakeDate" id="HMakeDate" style="background-color:#efefef4d;" readonly>
                                            </div>
                                        </div>
                                    </div>
                                    <div class="layui-row">
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width: 85px;">审核日期</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
@@ -228,18 +214,32 @@
                                                <input type="text" class="layui-input" name="HCloseDate" id="HCloseDate" style="background-color:#efefef4d;" readonly>
                                            </div>
                                        </div>
                                    </div>
                                    <div class="layui-row">
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width: 85px;">修改人</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
                                                <input type="text" class="layui-input" name="HUpDater" id="HUpDater" style="background-color:#efefef4d;" readonly>
                                            </div>
                                        </div>
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width: 85px;">作废人</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
                                                <input type="text" class="layui-input" name="HDeleteMan" id="HDeleteMan" style="background-color:#efefef4d;" readonly>
                                            </div>
                                        </div>
                                    </div>
                                    <div class="layui-row">
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width: 85px;">修改日期</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
                                                <input type="text" class="layui-input" name="HUpDateDate" id="HUpDateDate" style="background-color:#efefef4d;" readonly>
                                            </div>
                                        </div>
                                        <div class="layui-row">
                                            <div class="layui-inline">
                                                <label class="layui-form-label" style="width: 85px;">作废日期</label>
                                                <div class="layui-input-block" style="margin-left: 120px;">
                                                    <input type="text" class="layui-input" name="HDeleteDate" id="HDeleteDate" style="background-color:#efefef4d;" readonly>
                                                </div>
                                        <div class="layui-inline">
                                            <label class="layui-form-label" style="width: 85px;">作废日期</label>
                                            <div class="layui-input-block" style="margin-left: 120px;">
                                                <input type="text" class="layui-input" name="HDeleteDate" id="HDeleteDate" style="background-color:#efefef4d;" readonly>
                                            </div>
                                        </div>
                                    </div>
@@ -260,6 +260,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>
@@ -321,7 +323,8 @@
            //记录组织的值
            var HOrgIDBar = 0;
            var HModName = "Add_Edit_Cg_ContractBillSub1"
            var HModName2 = "Add_Edit_Cg_ContractBillSub2"
            //#region è¿›å…¥é¡µé¢å³åŠ è½½
            //判断是否登录 æœªç™»å½•则跳到登录页
@@ -339,93 +342,95 @@
            var OperationType = params[params[0]]; //从参数中获取 æ•°æ®ç±»åž‹  1添加 ä¿å­˜  2复制  3 ç¼–辑
            var linterid = params[params[1]]; //从参数中获取 å•据内码
            $("#HUSEORGID").val(sessionStorage["OrganizationID"]);
            $("#HUSEORGID").val(sessionStorage["OrganizationID"]);// èŽ·å– ä¸ºHUSEORGID的元素的值设置为当前会话中存储在sessionStorage中名为OrganizationID的值
            //判断是否新增
            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": '1100' },
                    success: function (d) {
                        //console.log(d.data);
                        $("#HBillNo").val(d.data[0].HBillNo);
                        $("#HDate").val(Format(new Date(), "yyyy-MM-dd"));
                        $("#HContractDate").val(Format(new Date(), "yyyy-MM-dd"));
                        $("#HInterID").val(d.data[0].HInterID);
                $("#HMaker").val(sessionStorage["HUserName"]);     //通过HMaker  id获取 å­˜å‚¨å™¨  sessionStorage中HUserName键对应的值
                $("#HInterID").val("0");                        // å°è¯•获取id ä¸º HInterID的元素 å­—符串为‘’0‘’的值
                $("#HBillNo").val("");                           // å°è¯•获取id ä¸º HBillNo的元素的值元素清空,即设置为空字符串。
                $.ajax({                //请求服务器
                    url: GetWEBURL() + "/Web/GetMAXNum", //调用方法和调用地址
                    type: "GET",                    //请求方法
                    data: { "HBillType": '1100' },  //请求参数  hbillteyp  å€¼ä¸º1100
                    success: function (d) {     //success是一个回调函数,当请求成功并返回数据时执
                        //console.log(d.data);
                        $("#HBillNo").val(d.data[0].HBillNo);            //将HBillNo输入框的值设置为返回数据中第一个对象的HBillNo属性值。
                        $("#HDate").val(Format(new Date(), "yyyy-MM-dd"));   //获取  id  ä¸ºhdate元素的值  å°†å½“前日期格式化为"yyyy-MM-dd"格式,并设置为HDate输入框的值
                        $("#HContractDate").val(Format(new Date(), "yyyy-MM-dd"));  //获取  id  ä¸ºHContractDate元素的值  å°†å½“前日期格式化为"yyyy-MM-dd"格式,并设置为HDate输入框的值
                        $("#HInterID").val(d.data[0].HInterID);    //:更新HInterID输入框的值为返回数据中第一个对象的HInterID属性值
                    }
                });
                //页面初始化加载
                $("#HDeptID").val(sessionStorage["HDeptID"]);
                $("#HDeptName").val(sessionStorage["HDept"]);
                $("#HEmpName").val(sessionStorage["HUserName"]);
                $("#HEmpID").val(sessionStorage["HEmpID"]);
               // è¿™é€šå¸¸ç”¨äºŽè®¾ç½®å½“前用户所属的部门ID
                $("#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) {
                    $.ajax({
                        url: GetWEBURL() + "Gy_Department/list",
                        async: false,
                        type: "GET",
                        data: {
                            "sWhere": "and HItemID = '" + $("#HDeptID").val() + "'", "user": sessionStorage["HUserName"], "Organization": sessionStorage["Organization"]
                if ($("#HDeptID").val() != 0) {  //  åˆ¤æ–­ èŽ·å–åˆ°id为hdeptid的值是为0
                    $.ajax({                    //请求
                        url: GetWEBURL() + "Gy_Department/list",  //请求方法和路径地址
                        async: false,         // è¿™ä¸ªé€‰é¡¹æŒ‡å®šäº†è¯·æ±‚是否应该异步执行
                        type: "GET",           //请求方法为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);
                            $("#HManagerName").val(result.data[0].负责人);
                        success: function (result) {  //请求成功时的回调函数
                            $("#HManagerID").val(result.data[0].HEmpID);  // æ›´æ–°è¿”回数据第一个对象的id
                            $("#HManagerName").val(result.data[0].负责人); // æ›´æ–°è¿”回数据第一个对象的负责人名称
                        }, error: function () {
                            layer.alert("发生错误!", { icon: 5 });
                            layer.alert("发生错误!", { icon: 5 });  //弹窗提示 ç±»åž‹5
                        }
                    });
                }
            } else {//如果修改则走下面 new
                $("#HInterID").val(linterid);
                RoadBillMain(linterid);
                $("#HInterID").val(linterid);//设置页面上ID为HInterID的元素的变量linterid的值
                RoadBillMain(linterid); //调用一个名为RoadBillMain的函数,并将linterid作为参数传递
            }
            //#endregion
            //#region åˆå§‹åŒ–表格
            var rowdata = [{
            var rowdata = [{
                "HMaterID": 0, "物料代码": "", "物料名称": "", "规格型号": "", "HUnitID": 0, "计量单位": "", "HWHID": 0, "HWHName": "", "数量": "", "HRemark": ""
                , "HPrice": "", "HTaxPrice": "", "HMoney": "", "HDiscountRate": 1, "HRelTaxPrice": "", "HTaxRate": 1, "HTaxMoney": "", "HlineTotal": "", "HlineTotalBB": "", "HDate": Format(new Date, "yyyy- MM - dd"),
            }];
            }];  //定义包含数组1   ç”¨äºŽå­˜å‚¨æŸç§æ•°æ®è®°å½•(可能是库存、销售订单详情或类似的数据)的字段
            var rowdata2 = [{
                "HDate": Format(new Date, "yyyy-MM-dd"), "HMoney": "", "HCurID": 0, "HExRate": "" ,"货币名称":"",
            }];
            }]; ////定义包含数组 2
            // åˆå§‹åŒ–界
            set_InitGrid();
            set_InitGrid2();
            set_InitGrid();  //执行表格1
            set_InitGrid2();//执行表格2
            //物料明细头工具栏事件
            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')   //调用 table.checkStatus('mainTable') æ–¹æ³•获取名为 mainTable çš„表格的选中状态
                    , data = checkStatus.data;                   //从选中状态中提取数据,这些数据是表格中被选中的行
                
                //新增行表格数据
                var NewRow = {
                    "HMaterID": 0, "物料代码": "", "物料名称": "", "规格型号": "", "HUnitID": 0, "计量单位": "", "数量": "", "HRemark": ""
                    , "HPrice": "", "HMoney": "", "HTaxRate": 1, "HTaxMoney": "", "HlineTotal": ""
                };
                switch (obj.event) {
                    case 'btn-AddLine':
                        table.cache["mainTable"].push(NewRow);
                        option.data = table.cache["mainTable"];
                }; //定义 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) {  //判断字符串的长度是否小于等于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);//去除首行字符'['
@@ -437,6 +442,16 @@
                            //checkRefresh();
                        }
                        break;
                    //库存查询
                    case 'get_Inventory': get_Inventory();
                        break;
                    //出入库记录查询
                    case 'get_InOutSum': get_InOutSum();
                        break;
                    //列设置
                    case 'set_HideColumn':
                        get_HideColumn();
                        break;
                    //列设置
                    //case 'set_hidecolumn':
                    //    get_hidecolumn();
@@ -444,39 +459,43 @@
                }
            });
            //付款计划头工具栏事件
            table.on('toolbar(mainTable2)', function (obj) {
                var checkStatus = table.checkStatus('mainTable2')
                    , data = checkStatus.data;
            table.on('toolbar(mainTable2)', function (obj) {  //监听mainTable2表格上的工具栏事件 è§¦å‘回调函数obj参数
                var checkStatus = table.checkStatus('mainTable2')     //调用 table.checkStatus('mainTable2') æ–¹æ³•获取名为 mainTable2 çš„表格的选中状态
                    , data = checkStatus.data;                       //从选中状态中提取数据,这些数据是表格中被选中的行
                //新增行表格数据
                var NewRow = {
                    "HDate": Format(new Date, "yyyy-MM-dd"), "HMoney": "", "HCurID": 0, "HExRate": "","HRemark":"","货币名称":""
                };
                switch (obj.event) {
                    case 'btn-AddLine2':
                        table.cache["mainTable2"].push(NewRow);
                        option2.data = table.cache["mainTable2"];
                }; //定义 NewRow的对象,它包含了新行应该有的数据字段  è®¾ç½®å€¼ä¸ºç©ºæˆ–默认值  ä»¥åŠæ ¼å¼ä¸º
                switch (obj.event) {     // switch (obj.event)用于根据obj.event的值来决定执行哪个case块
                    case 'btn-AddLine2':  //按钮为新增行时
                        table.cache["mainTable2"].push(NewRow);  //将NewRow对象添加到table.cache["mainTable2"]数组中,  æ•°ç»„存储了表格的所有行数据
                        option2.data = table.cache["mainTable2"];  //将数据绑定到data上
                        table.render(option2);
                        table.render(option2); //渲染显示
                        //刷新复选框
                        //checkRefresh();
                        break;
                    case 'btn-CopyLine2':
                        var copyschemedata = JSON.stringify(data);
                        if (data.length <= 0) {
                            layer.msg("请选择需要复制的一行!");
                    case 'btn-CopyLine2':  //复制一行
                        var copyschemedata = JSON.stringify(data); //将data对象数据转为json类型赋值给变量
                        if (data.length <= 0) {  //判断  å­—符串长度是否<=0
                            layer.msg("请选择需要复制的一行!");  //提示
                        }
                        else if (data.length > 1) {
                            layer.msg("只能选择复制一行!");
                        else if (data.length > 1) { //判断字符串长度>1
                            layer.msg("只能选择复制一行!");  //提示
                        }
                        else {
                            var copyschemedata2 = copyschemedata.substring(1, copyschemedata.length);//去除首行字符'['
                            var copyschemerow = copyschemedata2.substring(0, copyschemedata2.length - 1);//去除末尾字符']'
                            table.cache["mainTable2"].push(JSON.parse(copyschemerow));//将复制的行强转成json追加到表格上
                            option2.data = table.cache["mainTable2"];//将数据绑定到data上
                            table.render(option2);//将数据渲染到表格上
                            table.render(option2);  //将数据渲染到表格上
                            //刷新复选框
                            //checkRefresh();
                        }
                        break;
                    //列设置
                    case 'set_HideColumn2':
                        get_HideColumn2();
                        break;
                    //列设置
                    //case 'set_hidecolumn':
@@ -522,21 +541,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) {
                            //时间选择完成,行数据更新
                            data[field] = nowDate;
                            obj.update(data);
                        elem: this.firstChild  //将日期选择器绑定到触发事件的元素的第一个子元素
                        , show: true            //直接显示日期选择器,而不是等待用户点击
                        , closeStop: this    //判断点击日期选择器外部时是否关闭
                        , done: function (nowDate) {  //当日期选择完成时执行的回调函数
                            //时间选择完成,行数据更新
                            data[field] = nowDate;  //data对象中的日期字段
                            obj.update(data);// æ›´æ–°å›žè°ƒæ•°æ®
                            //刷新复选框
                            //checkRefresh();
                        }
@@ -568,58 +587,66 @@
            //#region ç›‘听单元格编辑  å•元格编辑后 å˜æ›´
            table.on('edit(mainTable)', function (obj) {
            table.on('edit(mainTable)', function (obj) {     //监听mainTable2表格上的工具栏事件 è§¦å‘回调函数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; //得到字段
                var oldText = $(this).prev().text();     //获取当前的值赋值给oldtext           èŽ·å–å½“å‰å…ƒç´ ï¼ˆå¯èƒ½æ˜¯ä¸€ä¸ªè¡¨æ ¼å•å…ƒæ ¼ï¼‰çš„å‰ä¸€ä¸ªåŒçº§å…ƒç´ çš„æ–‡æœ¬å†…å®¹ï¼Œå¹¶å°†è¿™ä¸ªæ–‡æœ¬å†…å®¹å­˜å‚¨åœ¨å˜é‡oldText中
                var value = obj.value               //得到修改后的值
                    , data = obj.data               //得到所在行所有键值
                    , field = obj.field;               //得到字段
                switch (field) {
                    case "HQty":                                         //数量
                    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);
                            layer.msg("数量请输入大于0的数字!");
                            return;
                            table.render(option);  //重新渲染表格
                            layer.msg("数量请输入大于0的数字!");   //提示请输入大于0数字
                            return;
                        }
                        //数据校验合格,重算记录
                        var HQty = value * 1;                           //数量
                        var HPrice = obj.data.HPrice * 1;               //单价
                        var HMoney = HQty * HPrice;                     //金额=数量*单价
                        var HTaxRate = obj.data.HTaxRate * 0.01;           //税率
                        var HTaxMoney = Number((HMoney * HTaxRate).toFixed(4));         //税额=金额*税率
                        var HTaxMoney = Number((HMoney * HTaxRate));         //税额=金额*税率
                        var HlineTotal = HMoney + HTaxMoney;            //价税合计=金额+税额
                        var HExRate = $("#HExRate").val();                      //汇率
                        //数字精度
                        HQty = Number(HQty.toFixed(HQtyDec));
                        HPrice = Number(HPrice.toFixed(HPriceDec));
                        HMoney = Number(HMoney.toFixed(HMoneyDec));
                        HTaxMoney = Number(HTaxMoney.toFixed(HMoneyDec));
                        HlineTotal = Number(HlineTotal.toFixed(HMoneyDec));
                        //同步更新表格和缓存对应的值
                        obj.update({
                            HQty: HQty
                            , HPrice: HPrice
                            , HMoney: HMoney
                            , HTaxMoney: HTaxMoney
                            , HlineTotal: HlineTotal
                        obj.update({             //更新表格数据                æ–¹æ³•是该对象提供的一个方法,用于更新其内部状态或与之关联的数据源
                            HQty: HQty                    //   æ›´æ–°HQty字段,其值来自变量HQty
                            , HPrice: HPrice                //更新HPrice字段,其值来自变量HPrice
                            , HMoney: HMoney                //更新HMoney字段,其值来自变量HMoney
                            , HTaxMoney: HTaxMoney          //更新HMoney字段,其值来自变量HMoney
                            , HlineTotal: HlineTotal        //新HlineTotal字段,其值来自变量HlineTotal
                        });
                        table.render(option)
                        break;
                    case "HPrice":                                         //单价
                        //数据格式校验
                        temp = value + "";
                        if (!ref.test(temp) || temp == 0) {
                        temp = value + "";     //修改后的值 è½¬ä¸ºå­—符串 èµ‹å€¼ç»™  å˜é‡temp
                        if (!ref.test(temp) || temp == 0) {    //使用表达式来判断字符串是否为0
                            //恢复数据到编辑前
                            obj.update({
                                HPrice: oldText
                            obj.update({     //使用obj.update方法更新表格中某一行的数据
                                HPrice: oldText    //将HPrice字段恢复到保存单元格的值
                            });
                            layer.msg("单价请输入大于0的数字!");
                            table.render(option);  //重新渲染表格
                            layer.msg("单价请输入大于0的数字!");  //提示 å•价请输入大于0的数字!
                            return;
                        }
@@ -631,6 +658,12 @@
                        var HTaxMoney = Number((HMoney * HTaxRate).toFixed(4));         //税额=金额*税率
                        var HlineTotal = HMoney + HTaxMoney;            //价税合计=金额+税额
                        var HExRate = $("#HExRate").val();                      //汇率
                        //数字精度
                        HQty = Number(HQty.toFixed(HQtyDec));
                        HPrice = Number(HPrice.toFixed(HPriceDec));
                        HMoney = Number(HMoney.toFixed(HMoneyDec));
                        HTaxMoney = Number(HTaxMoney.toFixed(HMoneyDec));
                        HlineTotal = Number(HlineTotal.toFixed(HMoneyDec));
                        //同步更新表格和缓存对应的值
                        obj.update({
@@ -640,17 +673,18 @@
                            , HTaxMoney: HTaxMoney
                            , HlineTotal: HlineTotal
                        });
                        table.render(option)
                        break;
                    case "HTaxRate":                                                       //数量
                        //数据格式校验
                        temp = value + "";
                        if (!ref.test(temp)) {
                        if (!ref.test(temp)) {
                            //恢复数据到编辑前
                            obj.update({
                                HTaxRate: oldText
                            });
                            layer.msg("税率请输入不小于0的数字!");
                            table.render(option);  //重新渲染表格
                            return;
                        }
@@ -664,6 +698,13 @@
                        var HlineTotal = HMoney + HTaxMoney;            //价税合计=金额+税额
                        var HExRate = $("#HExRate").val();                       //汇率
                        //数字精度
                        HQty = Number(HQty.toFixed(HQtyDec));
                        HPrice = Number(HPrice.toFixed(HPriceDec));
                        HMoney = Number(HMoney.toFixed(HMoneyDec));
                        HTaxMoney = Number(HTaxMoney.toFixed(HMoneyDec));
                        HlineTotal = Number(HlineTotal.toFixed(HMoneyDec));
                        //同步更新表格和缓存对应的值
                        obj.update({
                            HTaxRate: HTaxRate * 100
@@ -674,40 +715,40 @@
                            , HlineTotal: HlineTotal
                        });
                        break;
                        table.render(option);
                    default:
                }
            });
            //#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);
                    var HExRate = newHExRate * 1;                       //汇率    // å°†æ±‡çŽ‡å€¼ä»Žå­—ç¬¦ä¸²è½¬æ¢ä¸ºæ•°å­—
                    $("#HExRate").val(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
@@ -718,25 +759,30 @@
            //#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(即月份是1到9之间),则在月份字符串前面添加一个'0
                if (day.length < 2) day = '0' + day;  // // åŒä¸Šï¼Œå¦‚果日字符串的长度小于2,则在日字符串前面添加一个'0'
                return [year, month, day].join('-');
                return [year, month, day].join('-'); //将年份、月份和日字符串放入一个数组中,并使用join方法将它们连接成一个字符串
            }
            //#endregion
@@ -751,7 +797,7 @@
                    , loading: false
                    , cols: [[ //子表
                        { type: 'checkbox', fixed: 'left', totalRowText: '合计行', style: 'background-color:#efefef4d;' }
                        , { type: 'numbers', title: '序号', width: 100, style: 'background-color:#efefef4d;' }
                        , { type: 'numbers', field: '序号', 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, style: 'background-color:#efefef4d;' }
@@ -763,14 +809,15 @@
                        , { field: 'HMoney', title: '金额', width: 100, totalRow: true, style: 'background-color:#efefef4d;' }
                        , { field: 'HTaxRate', title: '税率', width: 100, edit: 'text' }
                        , { field: 'HTaxMoney', title: '税额', width: 100, style: 'background-color:#efefef4d;' }
                        , { field: 'HlineTotal', title: '价税合计', width: 100, edit: 'text' }
                        , { field: 'HlineTotal', title: '价税合计', width: 100, style: 'background-color:#efefef4d;' }
                        , { field: 'HRemark', title: '备注', width: 100, edit: 'text' }
                        , { fixed: 'right', title: '操作', toolbar: '#barDemo', width: 70 }
                        , { fixed: 'right', field: '操作', title: '操作', toolbar: '#barDemo', width: 70 }
                    ]]
                }
                option.data = rowdata;
                table.render(option);
                DisPlay_HideColumn();
            }
            function set_InitGrid2() {
                option2 = {
@@ -782,19 +829,20 @@
                    , loading: false
                    , cols: [[ //子表
                        { type: 'checkbox', fixed: 'left', totalRowText: '合计行', style: 'background-color:#efefef4d;' }
                        , { type: 'numbers', title: '序号', width: 100, style: 'background-color:#efefef4d;' }
                        , { type: 'numbers', field: '序号', title: '序号', width: 100, style: 'background-color:#efefef4d;' }
                        , { field: 'HCurID', title: '货币代码', width: 100, hide: true }
                        , { field: '货币名称', title: '货币名称', width: 100, edit: 'text', event: "HCurID" }//f7
                        , { field: 'HExRate', title: '汇率', width: 100, totalRow: true, style: 'background-color:#efefef4d;' }
                        , { field: 'HMoney', title: '金额', width: 100, edit: 'text', totalRow: true }
                        , { field: 'HDate', title: '到货日期', width: 120, event: 'HDate' }
                        , { field: 'HRemark', title: '备注', width: 100, edit: 'text' }
                        , { fixed: 'right', title: '操作', toolbar: '#barDemo2', width: 70 }
                        , { fixed: 'right', field: '操作', title: '操作', toolbar: '#barDemo2', width: 70 }
                    ]]
                }
                option2.data = rowdata2;
                table.render(option2);
                DisPlay_HideColumn2();
            }
            //#endregion
            //#region åŠ è½½è¡¨å¤´
@@ -831,14 +879,15 @@
                                    , "HSSName": data[0].结算方式
                                    , "HInnerBillNo": 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].作废日期
                                    , "HMaker": data.制单人
                                    , "HUpDater": data.修改人
                                    , "HChecker": data.审核人
                                    , "HCloseMan": data.关闭人
                                    , "HMakeDate": data.制单日期 == null ? "" : Pub_Format(data.制单日期, "yyyy-MM-dd hh:mm:ss")
                                    , "HCheckDate": data.审核日期 == null ? "" : Pub_Format(data.审核日期, "yyyy-MM-dd hh:mm:ss")
                                    , "HCloseDate": data.关闭日期 == null ? "" : Pub_Format(data.关闭日期, "yyyy-MM-dd hh:mm:ss")
                                    , "HUpDateDate": data.修改日期 == null ? "" : Pub_Format(data.修改日期, "yyyy-MM-dd hh:mm:ss")
                                    , "HDeleteDate": data.作废日期 == null ? "" : Pub_Format(data.作废日期, "yyyy-MM-dd hh:mm:ss")
                                    , "HContractDate": formatDate(data[0].合同日期)
                                    , "HContractName": data[0].合同名称
                                });
@@ -999,6 +1048,56 @@
            }
            //#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
            //#region æŒ‰F7 å¼¹çª—功能
            //行内快捷键筛选
            function set_GridCellCheck(obj) {
@@ -1026,31 +1125,34 @@
                                    //    return layer.msg("请选择一条数据");
                                    //}
                                    OptionData = checkStatus.data[0];
                                    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, "计量单位": "", "HWHID": 0, "HWHName": "", "数量": "", "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")
                                            };
                                    var TaxRate = getHTaxRateByHSupID();
                                    if (checkStatus.data.length > 1) {
                                        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, "计量单位": "", "HWHID": 0, "HWHName": "", "数量": "", "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")
                                                };
                                            table.cache["mainTable"].push(NewRow);
                                            option.data = table.cache["mainTable"];
                                                table.cache["mainTable"].push(NewRow);
                                                option.data = table.cache["mainTable"];
                                            table.render(option);
                                                table.render(option);
                                            }
                                            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;
                                            option.data[rowIndex + i].HTaxRate = TaxRate;
                                        }
                                        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.close(layer.index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                                }
@@ -1059,14 +1161,60 @@
                                    //return false å¼€å¯è¯¥ä»£ç å¯ç¦æ­¢ç‚¹å‡»è¯¥æŒ‰é’®å…³é—­
                                },
                                end: function () {
                                    obj.update({
                                        "HMaterID": OptionData.HItemID
                                        , "物料代码": OptionData.物料代码
                                        , "物料名称": OptionData.物料名称
                                        , "规格型号": OptionData.规格型号
                                        , "HUnitID": OptionData.HUnitID
                                        , "计量单位": OptionData.计量单位名称
                                    })
                                    //通过供应商id获取税率
                                    var HSupID = $("#HSupID").val();
                                    if (HSupID != 0 && typeof (OptionData.HItemID) != "undefined") {
                                        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"];  //金额精度
                                        $.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 HQty = obj.data.HQty * 1;                           //数量
                                                var HPrice = obj.data.HPrice * 1;               //单价
                                                var HMoney = HQty * HPrice;                     //金额=数量*单价
                                                var HTaxMoney = Number((HMoney * HTaxRate));         //税额=金额*税率
                                                var HlineTotal = HMoney + HTaxMoney;            //价税合计=金额+税额
                                                //数字精度
                                                HQty = Number(HQty.toFixed(HQtyDec));
                                                HPrice = Number(HPrice.toFixed(HPriceDec));
                                                HMoney = Number(HMoney.toFixed(HMoneyDec));
                                                HTaxMoney = Number(HTaxMoney.toFixed(HMoneyDec));
                                                HlineTotal = Number(HlineTotal.toFixed(HMoneyDec));
                                                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
                                                })
                                            }
                                        });
                                    } else if (typeof (OptionData.HItemID) != "undefined") {
                                        obj.update({ //更新表格数据
                                            "HMaterID": OptionData.HItemID             //设置HItemID的值为“HBillNo”字段的值HItemID`的值
                                            , "物料代码": OptionData.物料代码
                                            , "物料名称": OptionData.物料名称
                                            , "规格型号": OptionData.规格型号
                                            , "HUnitID": OptionData.HUnitID
                                            , "计量单位": OptionData.计量单位名称
                                        })
                                    }
                                }
                            });
                        }
@@ -1145,6 +1293,121 @@
                    }
                })
                //双击
                $('.layui-table-box tbody td[data-field="物料代码"]').off('dblclick').on('dblclick', function () {
                    var HOrgID = $("#HOrgID").val();
                    layer.open({
                        type: 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");//获取选中的数据
                            //if (checkStatus.data.length != 1) {
                            //    return layer.msg("请选择一条数据");
                            //}
                            OptionData = checkStatus.data[0];
                            var TaxRate = getHTaxRateByHSupID();
                            if (checkStatus.data.length > 1) {
                                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, "计量单位": "", "HWHID": 0, "HWHName": "", "数量": "", "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")
                                        };
                                        table.cache["mainTable"].push(NewRow);
                                        option.data = table.cache["mainTable"];
                                        table.render(option);
                                    }
                                    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;
                                    option.data[rowIndex + i].HTaxRate = TaxRate;
                                }
                                table.render(option);
                            }
                            layer.closeAll();
                            //layer.close(layer.index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
                        }
                        , btn2: function (index, layero) {
                            //按钮【按钮二】的回调
                            //return false å¼€å¯è¯¥ä»£ç å¯ç¦æ­¢ç‚¹å‡»è¯¥æŒ‰é’®å…³é—­
                        },
                        end: function () {
                            //通过供应商id获取税率
                            var HSupID = $("#HSupID").val();
                            if (HSupID != 0 && typeof (OptionData.HItemID) != "undefined") {
                                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"];  //金额精度
                                $.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 HQty = obj.data.HQty * 1;                           //数量
                                        var HPrice = obj.data.HPrice * 1;               //单价
                                        var HMoney = HQty * HPrice;                     //金额=数量*单价
                                        var HTaxMoney = Number((HMoney * HTaxRate));         //税额=金额*税率
                                        var HlineTotal = HMoney + HTaxMoney;            //价税合计=金额+税额
                                        //数字精度
                                        HQty = Number(HQty.toFixed(HQtyDec));
                                        HPrice = Number(HPrice.toFixed(HPriceDec));
                                        HMoney = Number(HMoney.toFixed(HMoneyDec));
                                        HTaxMoney = Number(HTaxMoney.toFixed(HMoneyDec));
                                        HlineTotal = Number(HlineTotal.toFixed(HMoneyDec));
                                        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
                                        })
                                    }
                                });
                            } else if (typeof (OptionData.HItemID) != "undefined") {
                                obj.update({ //更新表格数据
                                    "HMaterID": OptionData.HItemID             //设置HItemID的值为“HBillNo”字段的值HItemID`的值
                                    , "物料代码": OptionData.物料代码
                                    , "物料名称": OptionData.物料名称
                                    , "规格型号": OptionData.规格型号
                                    , "HUnitID": OptionData.HUnitID
                                    , "计量单位": OptionData.计量单位名称
                                })
                            }
                        }
                    });
                });
            }
            //行内删除
@@ -1321,6 +1584,55 @@
            }
            //#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 é€šè¿‡ä¾›åº”商id获取税率
            function getHTaxRateByHSupID() {
                var HTaxRate;
                //通过供应商id获取税率
                var HSupID = $("#HSupID").val();
                if (HSupID != 0) {
                    $.ajax({
                        url: GetWEBURL() + "/Gy_Supplier/xg",
                        type: "GET",
                        async: false,
                        data: {
                            "HInterID": HSupID
                        },
                        success: function (d) {
                            HTaxRate = parseInt(d.data[0].增值税率);
                        }
                    });
                } else {
                    HTaxRate = 0;
                }
                return HTaxRate;
            }
            //#endregion
            //#region ä¿å­˜åŽæµè§ˆæ–¹æ³•
            function ReRoadBillMain() {
@@ -1331,7 +1643,229 @@
            //#endregion
            //#endregion
            //#region åˆ—设置1
            //隐藏列设置
            function get_HideColumn() {
                var colName = "";
                for (var i = 1; i < option.cols[0].length - 1; i++) {
                    colName += option.cols[0][i]["field"] + ",";
                }
                var colTitleName = "";
                for (var i = 1; i < option.cols[0].length - 1; i++) {
                    colTitleName += option.cols[0][i]["title"] + ",";
                }
                colName = encodeURI(colName.substring(0, colName.length - 1));//对 URI è¿›è¡Œç¼–码
                layer.open({
                    type: 2
                    , skin: "layui-layer-rim" //加上边框
                    , title: "隐藏列设置"  //标题
                    , closeBtn: 1  //窗体右上角关闭 çš„ æ ·å¼
                    , shift: 2 //弹出动画
                    , area: ["50%", "90%"] //窗体大小
                    , maxmin: true //设置最大最小按钮是否显示
                    , content: ['../../基础资料/隐藏列设置/Gy_GridView_Hide.html?HModName=' + HModName + '&colName=' + colName + '&colTitleName = ' + colTitleName, "yes"]
                    , btn: ["确定", "取消"]
                    , btn1: function (index, laero) {
                        //刷新表格数据
                        DisPlay_HideColumn();
                        //更新表格缓存的数据
                        layer.close(index);//关闭弹窗
                    }
                })
            }
            //显示列数据
            function DisPlay_HideColumn() {
                $.ajax({
                    url: GetWEBURL() + '/Xt_grdAlignment_WMES/grdAlignmentWMESList',
                    type: "GET",
                    async: false,
                    data: { "HModName": HModName, "user": sessionStorage["HUserName"] },
                    success: function (data1) {
                        if (data1.data.length != 0) {
                            var dataCol = [];//数据库查询出的列数据
                            var titleData = [];//不需要显示的字段 å¯æ‰©å±•
                            dataCol = data1.data[0].HGridString.split(',');
                            for (var i = 0; i < option.cols[0].length - 2; i++) {
                                var dataCols = dataCol[i].split('|');
                                //隐藏列
                                if (dataCols[1] == 1) {
                                    option.cols[0][i + 1]["hide"] = true;
                                }
                                //设置内容字体大小
                                if (data1.data[0].HFontSize != 0) {
                                    option.cols[0][i + 1]["style"] = "font-size:" + data1.data[0].HFontSize + "px;";
                                } else {
                                    option.cols[0][i + 1]["style"] = "font-size:100%";
                                }
                                //设置列宽
                                if (dataCols[3] > 0) {
                                    option.cols[0][i + 1]["width"] = dataCols[3];
                                }
                                //显示列
                                if (dataCols[1] == 0 && $.inArray(option.cols[0][i + 1]["title"], titleData) == -1) {
                                    option.cols[0][i + 1]["hide"] = false;
                                }
                                //字体所在位置(å·¦ å±…中 å³)
                                switch (dataCols[2]) {
                                    case "L":
                                        option.cols[0][i + 1]["align"] = "left";
                                        break;
                                    case "M":
                                        option.cols[0][i + 1]["align"] = "center";
                                        break;
                                    case "R":
                                        option.cols[0][i + 1]["align"] = "right";
                                        break;
                                }
                                //设置表格title属性显示别名
                                if (dataCols[4] != null && dataCols[4] != "") {
                                    option.cols[0][i + 1]["title"] = dataCols[4];
                                }
                            }
                            //取消冻结列
                            for (var i = 1; i < option.cols[0].length - 1; i++) {
                                if (option.cols[0][i]["fixed"] != null) {
                                    option.cols[0][i]["fixed"] = null;
                                }
                                else {
                                    break;
                                }
                            }
                            //冻结列
                            if (data1.data[0].HFixCols != 0) {
                                for (var i = 0; i < data1.data[0].HFixCols; i++) {
                                    if ($.inArray(option.cols[0][i + 1]["title"], titleData) != -1) {
                                        data1.data[0].HFixCols += 1;
                                    }
                                    option.cols[0][i + 1]["fixed"] = "left";
                                }
                            }
                            table.render(option);
                        } else {
                            table.render(option);
                        }
                    }, error: function () {
                        layer.alert("接口请求失败!", { icon: 5 });
                    }
                })
            }
            //#endregion
            //#region åˆ—设置2
            //隐藏列设置
            function get_HideColumn2() {
                var colName = "";
                for (var i = 1; i < option2.cols[0].length - 1; i++) {
                    colName += option2.cols[0][i]["field"] + ",";
                }
                var colTitleName = "";
                for (var i = 1; i < option2.cols[0].length - 1; i++) {
                    colTitleName += option2.cols[0][i]["title"] + ",";
                }
                colName = encodeURI(colName.substring(0, colName.length - 1));//对 URI è¿›è¡Œç¼–码
                layer.open({
                    type: 2
                    , skin: "layui-layer-rim" //加上边框
                    , title: "隐藏列设置"  //标题
                    , closeBtn: 1  //窗体右上角关闭 çš„ æ ·å¼
                    , shift: 2 //弹出动画
                    , area: ["50%", "90%"] //窗体大小
                    , maxmin: true //设置最大最小按钮是否显示
                    , content: ['../../基础资料/隐藏列设置/Gy_GridView_Hide.html?HModName=' + HModName2 + '&colName=' + colName + '&colTitleName = ' + colTitleName, "yes"]
                    , btn: ["确定", "取消"]
                    , btn1: function (index, laero) {
                        //刷新表格数据
                        DisPlay_HideColumn();
                        //更新表格缓存的数据
                        layer.close(index);//关闭弹窗
                    }
                })
            }
            //显示列数据
            function DisPlay_HideColumn2() {
                $.ajax({
                    url: GetWEBURL() + '/Xt_grdAlignment_WMES/grdAlignmentWMESList',
                    type: "GET",
                    async: false,
                    data: { "HModName": HModName, "user": sessionStorage["HUserName"] },
                    success: function (data1) {
                        if (data1.data.length != 0) {
                            var dataCol = [];//数据库查询出的列数据
                            var titleData = [];//不需要显示的字段 å¯æ‰©å±•
                            dataCol = data1.data[0].HGridString.split(',');
                            for (var i = 0; i < option2.cols[0].length - 2; i++) {
                                var dataCols = dataCol[i].split('|');
                                //隐藏列
                                if (dataCols[1] == 1) {
                                    option2.cols[0][i + 1]["hide"] = true;
                                }
                                //设置内容字体大小
                                if (data1.data[0].HFontSize != 0) {
                                    option2.cols[0][i + 1]["style"] = "font-size:" + data1.data[0].HFontSize + "px;";
                                } else {
                                    option2.cols[0][i + 1]["style"] = "font-size:100%";
                                }
                                //设置列宽
                                if (dataCols[3] > 0) {
                                    option2.cols[0][i + 1]["width"] = dataCols[3];
                                }
                                //显示列
                                if (dataCols[1] == 0 && $.inArray(option2.cols[0][i + 1]["title"], titleData) == -1) {
                                    option2.cols[0][i + 1]["hide"] = false;
                                }
                                //字体所在位置(å·¦ å±…中 å³)
                                switch (dataCols[2]) {
                                    case "L":
                                        option2.cols[0][i + 1]["align"] = "left";
                                        break;
                                    case "M":
                                        option2.cols[0][i + 1]["align"] = "center";
                                        break;
                                    case "R":
                                        option2.cols[0][i + 1]["align"] = "right";
                                        break;
                                }
                                //设置表格title属性显示别名
                                if (dataCols[4] != null && dataCols[4] != "") {
                                    option2.cols[0][i + 1]["title"] = dataCols[4];
                                }
                            }
                            //取消冻结列
                            for (var i = 1; i < option2.cols[0].length - 1; i++) {
                                if (option2.cols[0][i]["fixed"] != null) {
                                    option2.cols[0][i]["fixed"] = null;
                                }
                                else {
                                    break;
                                }
                            }
                            //冻结列
                            if (data1.data[0].HFixCols != 0) {
                                for (var i = 0; i < data1.data[0].HFixCols; i++) {
                                    if ($.inArray(option2.cols[0][i + 1]["title"], titleData) != -1) {
                                        data1.data[0].HFixCols += 1;
                                    }
                                    option2.cols[0][i + 1]["fixed"] = "left";
                                }
                            }
                            table.render(option2);
                        } else {
                            table.render(option2);
                        }
                    }, error: function () {
                        layer.alert("接口请求失败!", { icon: 5 });
                    }
                })
            }
            //#endregion
            //以上是layui模块