duhe
2025-05-29 86ff0969ebf27dcac1ddbfd83cc3a2e0e2d09487
WebTM/views/²É¹º¹ÜÀí/²É¹º¶©µ¥/Cg_POOrderBillEdit.html
@@ -446,6 +446,11 @@
                OperationType = 1;//操作类型初始化
            }
            var rowdata = [{
                "HMaterID": 0, "物料代码": "", "物料名称": "", "规格型号": "", "HUnitID": 0, "计量单位": "", "HWHID": 0, "HWHName": "", "HQty": "0", "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();//执行初始化界面方法
@@ -460,7 +465,7 @@
                //根据用户绑定信息加载业务员、部门、主管
                setInitPageData();
                /*set_InitGrid();//执行初始化界面方法*/
            }
            else if (OperationType == 2) {                                              //复制
                //加载表体和表体数据
@@ -476,11 +481,6 @@
                RoadBillMain(linterid);//调用一个名为RoadBillMain的函数,并将linterid作为参数传递
            }
            //#endregion
            var rowdata = [{
                "HMaterID": 0, "物料代码": "", "物料名称": "", "规格型号": "", "HUnitID": 0, "计量单位": "", "HWHID": 0, "HWHName": "", "HQty": "0", "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
            //头工具栏事件
            table.on('toolbar(mainTable)', function (obj) {   //监听mainTable表格上的工具栏事件 è§¦å‘回调函数obj参数
@@ -1219,7 +1219,7 @@
                                        , "规格型号": 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].汇率
                                        , "HTaxMoney": data[i].税额, "HlineTotal": data[i].价税合计, "HlineTotalBB": data[i].本位币价税合计
                                        , "HTaxPrice": data[i].含税单价, "HDiscountRate": data[i].折扣率, "HRelTaxPrice": data[i].实际含税单价
                                        , "HDate": Format(new Date(data[i].交货日期), "yyyy-MM-dd")
                                    }
@@ -1764,6 +1764,221 @@
                            obj.event = ""; //把boj.event属性  åˆå§‹åŒ–为空
                            return false;
                        }
                        if (event.key == "F8") {//检查触发事件的键盘按键是否是F7键
                            //物料
                            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: ['../../基础资料/公用基础资料/Gy_Material.html?openType=2&HOrgID=' + HOrgID + '&openType2=POOrder', '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变量
                                        var TaxRate = getHTaxRateByHSupID();
                                        //选中多行时
                                        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.HPOUnitID; //将option.data数组中对应行的 HUnitID å±žæ€§æ›´æ–°ä¸ºä»ŽresultData对象中获取的物料ID
                                                option.data[rowIndex + i].计量单位 = resultData.HPOUnitName; //将option.data数组中对应行的 è®¡é‡å•位 å±žæ€§æ›´æ–°ä¸ºä»ŽresultData对象中获取的物料ID   æ›´æ–°è®¡é‡å•位属性
                                                option.data[rowIndex + i].HQty = 1;  //将对应行的HQty属性(可能代表数量)设置为1。这表示对于每个选中的物料,其默认数量被设置为1
                                                option.data[rowIndex + i].HTaxRate = TaxRate;
                                            }
                                            table.render(option); //重新渲染表格以显示更新后的数据
                                        }
                                        layer.closeAll();  //关闭所有通过layer
                                        //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(OptionData.HItemID) //获取精度
                                            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) {
                                                    if (d.code == 1) { // å¦‚果服务器返回的数据中的`code字段等于1,这可能表示审核操作成功执行
                                                        HTaxRate = 0;
                                                        if (typeof (d.data[0].增值税率) == undefined || d.data[0].增值税率 == null) {
                                                            layer.alert("发生错误数据库表增值税率字段有误!", { icon: 5 });
                                                        } else {
                                                            HTaxRate = parseInt(d.data[0].增值税率);
                                                        }
                                                        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));         //税额=金额*税率
                                                        var HlineTotal = HMoney + HTaxMoney;            //价税合计=金额+税额
                                                        var HTaxPrice = Number((HPrice * (1 + HTaxRate)));        //含税单价=单价*(1+税率)
                                                        var HDiscountRate = obj.data.HDiscountRate * 1;   //折扣率
                                                        var HRelTaxPrice = Number((HTaxPrice * HDiscountRate));   //实际含税单价=含税单价*折扣率
                                                        var HlineTotalBB = Number(((HMoney + HTaxMoney) * HExRate));     //本位币价税合计=(税额+金额)*汇率
                                                        //数字精度
                                                        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));
                                                        HTaxPrice = Number(HTaxPrice.toFixed(HPriceDec));
                                                        HRelTaxPrice = Number(HRelTaxPrice.toFixed(HPriceDec));
                                                        HlineTotalBB = Number(HlineTotalBB.toFixed(HMoneyDec));
                                                        obj.update({ //更新表格数据
                                                            "HMaterID": OptionData.HItemID             //设置HItemID的值为“HBillNo”字段的值HItemID`的值
                                                            , "物料代码": OptionData.物料代码
                                                            , "物料名称": OptionData.物料名称
                                                            , "规格型号": OptionData.规格型号
                                                            , "HUnitID": OptionData.HPOUnitID
                                                            , "计量单位": 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 {
                                                        layer.alert(result.Message, { icon: 5, btn: ['退出'], time: 100000, offset: 't' }); //result.msg对象,提示弹窗 ç±»åž‹ä¸º5, æŒ‰é’®ï¼Œå’ŒæŒ‰é’®çš„名称为退出  æ—¶é—´ ä¸º100秒,以及偏移量(`offset: 't'
                                                    }
                                                }
                                            });
                                        } else {
                                            obj.update({ //更新表格数据
                                                "HMaterID": OptionData.HItemID             //设置HItemID的值为“HBillNo”字段的值HItemID`的值
                                                , "物料代码": OptionData.物料代码
                                                , "物料名称": OptionData.物料名称
                                                , "规格型号": OptionData.规格型号
                                                , "HUnitID": OptionData.HPOUnitID
                                                , "计量单位": OptionData.采购计量单位
                                            })
                                        }
                                    }
                                });
                            }
                            //计量单位
                            if (obj.event == "HUnitID") {  //判断  obj.event事件 æ˜¯å¦ç­‰äºŽå­—符串 'HUnitID'。如果等于,则执行if循环
                                layer.open({
                                    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
                                var HOrgName = $('select[name="HOrgID"] option:selected').text();
                                layer.open({            //打开层
                                    type: 2      //表示弹出层的内容是一个 iframe       ç±»åž‹ä¸º2
                                    , skin: "layui-layer-rim" //加上边框
                                    , title: "计量单位列表"  //标题
                                    , closeBtn: 1  //窗体右上角关闭 çš„ æ ·å¼
                                    , shift: 2   //弹出动画
                                    , area: ["90%", "90%"] //窗体大小
                                    , maxmin: true //设置最大最小按钮是否显示
                                    , content: ['../../基础资料/公用基础资料/Gy_Warehouse.html?type=Warehouse&HOrgName=' + HOrgName, '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({
                                            "HWHID": checkStatus.data[0].HItemID
                                            , "HWHName": checkStatus.data[0].仓库名称
                                        })
                                        layer.close(index);//关闭弹窗
                                    }
                                    , end: function () {
                                        obj.update({
                                            "HWHID": OptionData.HItemID
                                            , "HWHName": OptionData.仓库名称
                                        })
                                    }
                                })
                            }
                            obj.event = ""; //把boj.event属性  åˆå§‹åŒ–为空
                            return false;
                        }
                        // å¤„理资源的代码
                    } catch (error) {
                        // å¤„理异常的代码
@@ -1787,7 +2002,7 @@
                            , shift: 2 //弹出动画
                            , area: ["90%", "90%"] //窗体大小
                            , maxmin: true //设置最大最小按钮是否显示
                            , content: ['../../基础资料/公用基础资料/Gy_Material.html?openType=2&HOrgID=' + HOrgID, 'yes']   //页面加载
                            , content: ['../../基础资料/公用基础资料/Gy_Material.html?openType=2&HOrgID=' + HOrgID + '&openType2=POOrder', 'yes']   //页面加载
                            , btn: ["确定", "取消"]  //属性定义了弹出层上的按钮数“确定”和“取消
                            , btn1: function (index, laero) { //当点击“确定”按钮时会被调用
                                //按钮一  çš„回调
@@ -1912,30 +2127,79 @@
                    
                });
                $('.layui-table-box tbody td[data-field="HWHName"]').off('dblclick').on('dblclick', function () {
                    try {
                        //手动失焦
                        var element = document.getElementById("HBillNo");
                        element.focus();
                        var HOrgName = $('select[name="HOrgID"] option:selected').text();
                        layer.open({            //打开层
                            type: 2      //表示弹出层的内容是一个 iframe       ç±»åž‹ä¸º2
                            , skin: "layui-layer-rim" //加上边框
                            , title: "计量单位列表"  //标题
                            , closeBtn: 1  //窗体右上角关闭 çš„ æ ·å¼
                            , shift: 2   //弹出动画
                            , area: ["90%", "90%"] //窗体大小
                            , maxmin: true //设置最大最小按钮是否显示
                            , content: ['../../基础资料/公用基础资料/Gy_Warehouse.html?type=Warehouse&HOrgName=' + HOrgName, '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({
                                    "HWHID": checkStatus.data[0].HItemID
                                    , "HWHName": checkStatus.data[0].仓库名称
                                })
                                layer.close(index);//关闭弹窗
                            }
                            , end: function () {
                                obj.update({
                                    "HWHID": OptionData.HItemID
                                    , "HWHName": OptionData.仓库名称
                                })
                            }
                        })
                        obj.event = "";
                    } catch (error) {
                        layer.alert("发生错误!" + error, { icon: 5 });
                    }
                });
                //物料表格下拉搜索框
                //tableSelect.render({
                //    elem: 'td[data-field="物料代码"] .layui-table-edit',
                //    checkedKey: 'HItemID',
                //    searchKey: '物料代码',
                //    sWhere: '',//table搜索sWhere条件
                //    table: {
                //        url: GetWEBURL() + 'Gy_Material/page',
                //        where: { user: '翁涛涛', Organization: '浙江智云迈思' },
                //        cols: [[
                //            { type: 'checkbox',fixed:'left' },
                //            { field: 'HItemID', title: 'HItemID' },
                //            { field: '物料代码', title: '物料代码' },
                //            { field: '物料名称', title: '物料名称' },
                //        ]],
                //        page: true,
                //        limit: 5,
                //        limits: [5]
                //    },
                //    done: function (elem, data) {
                //        $(".layui-table-edit").blur();//单元格失去焦点
                //        setTableByHMater(obj, data);
                //    }
                //})
                tableSelect.render({
                    elem: 'td[data-field="物料代码"] .layui-table-edit',
                    checkedKey: 'HItemID',
                    searchKey: '物料代码,物料名称',
                    sWhere: " and ç‰©æ–™å±žæ€§='外购'",//table搜索sWhere条件
                    table: {
                        url: GetWEBURL() + 'Gy_Material/page',
                        where: { user: sessionStorage["HUserName"], Organization: sessionStorage["Organization"] },
                        cols: [[
                            { type: 'checkbox',fixed:'left' },
                            { field: 'HItemID', title: 'HItemID' },
                            { field: '物料代码', title: '物料代码' },
                            { field: '物料名称', title: '物料名称' },
                        ]],
                        page: true,
                        limit: 5,
                        limits: [5]
                    },
                    done: function (elem, data) {
                        $(".layui-table-edit").blur();//单元格失去焦点
                        setTableByHMater(obj, data);
                    }
                })
            }
            //选择物料单选或多选改变表格信息
            function setTableByHMater(obj, data) {