duhe
2024-03-22 068f266665b2dfb7f1d0c53645ba634fe8d606f3
销售出库明细报表:雏形
2个文件已修改
232 ■■■■ 已修改文件
WebTM/Properties/PublishProfiles/JFTM.pubxml.user 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/应收管理/报表分析/Kf_SellOutEntryReport.html 221 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/Properties/PublishProfiles/JFTM.pubxml.user
@@ -18,10 +18,10 @@
      <publishTime>01/28/2016 14:22:24</publishTime>
    </File>
    <File Include="bin/WebTM.dll">
      <publishTime>03/22/2024 12:09:04</publishTime>
      <publishTime>03/22/2024 13:59:05</publishTime>
    </File>
    <File Include="bin/WebTM.pdb">
      <publishTime>03/22/2024 12:09:04</publishTime>
      <publishTime>03/22/2024 13:59:05</publishTime>
    </File>
    <File Include="HtmlPage1.html">
      <publishTime>04/11/2023 16:34:42</publishTime>
@@ -794,6 +794,9 @@
    <File Include="layuiadmin/treeTable.js">
      <publishTime>04/11/2023 16:34:43</publishTime>
    </File>
    <File Include="layuiadmin/xlsx.full.min.js">
      <publishTime>03/22/2024 13:06:24</publishTime>
    </File>
    <File Include="layuiadmin/zgqCustom/zgqCustom.js">
      <publishTime>04/11/2023 16:34:43</publishTime>
    </File>
@@ -1545,7 +1548,7 @@
      <publishTime>12/15/2023 16:23:31</publishTime>
    </File>
    <File Include="views/index_QiaoYi.html">
      <publishTime>03/19/2024 16:09:23</publishTime>
      <publishTime>03/22/2024 13:22:11</publishTime>
    </File>
    <File Include="views/IpadIndex.html">
      <publishTime>03/11/2024 23:12:34</publishTime>
@@ -3423,7 +3426,7 @@
      <publishTime>03/05/2024 12:29:40</publishTime>
    </File>
    <File Include="views/应收管理/报表分析/Kf_SellOutEntryReport.html">
      <publishTime>03/20/2024 12:05:41</publishTime>
      <publishTime>03/22/2024 15:12:23</publishTime>
    </File>
    <File Include="views/应收管理/报表分析/Xs_CusBalanceReport.html">
      <publishTime>03/14/2024 11:19:06</publishTime>
WebTM/views/Ó¦ÊÕ¹ÜÀí/±¨±í·ÖÎö/Kf_SellOutEntryReport.html
@@ -3,7 +3,7 @@
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>销售出库明细报表</title>
    <meta name="renderer" content="webkit">
    <meta name="renderer" content="webkit" charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
@@ -15,6 +15,8 @@
    <script src="../../../layuiadmin/PubCustom.js"></script>
    <script src="../../../layuiadmin/zgqCustom/zgqCustom.js"></script>
    <script src="../../../layuiadmin/HideButton.js"></script>
    <!--<script src="../../../layuiadmin/xlsx.full.min.js"></script>-->
    <script src="https://cdn.bootcdn.net/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
</head>
<body>
    <div class="layui-fluid">
@@ -351,31 +353,7 @@
                    data: { "ModRightNameCheck": ModRightNameCheck, "user": sessionStorage["HUserName"] },
                    success: function (result) {
                        if (result.count == 1) {
                            var dataArray = [];
                            var HCusID = option.data[0]["HCusID"];
                            var HPieceQtySum = 0;
                            var HQtySum = 0;
                            var HTaxMoneySum = 0;
                            for (var i = 0; i < option.data.length; i++) {
                                if (HCusID != option.data[i]["HCusID"]) {
                                    dataArray.push({ "日期": "", "HCusID": "", "客户": "合计", "HMaterID": "", "物料名称": "", "件数": HPieceQtySum, "数量": HQtySum, "单价": "", "金额": HTaxMoneySum, "HEmpID": "", "业务员": "" });
                                    dataArray.push({ "日期": "", "HCusID": "", "客户": "", "HMaterID": "", "物料名称": "", "件数": "", "数量": "", "单价": "", "金额": "", "HEmpID": "", "业务员": "" });
                                    dataArray.push({ "日期": "", "HCusID": "", "客户": "", "HMaterID": "", "物料名称": "", "件数": "", "数量": "", "单价": "", "金额": "", "HEmpID": "", "业务员": "" });
                                    dataArray.push({ "日期": "", "HCusID": "", "客户": "", "HMaterID": "", "物料名称": "", "件数": "", "数量": "", "单价": "", "金额": "", "HEmpID": "", "业务员": "" });
                                    dataArray.push({ "日期": "", "HCusID": "", "客户": "客户", "HMaterID": "", "物料名称": "物料名称", "件数": "件数", "数量": "数量", "单价": "单价", "金额": "金额", "HEmpID": "", "业务员": "业务员" });
                                    HCusID = option.data[i]["HCusID"];
                                    HPieceQtySum = 0;
                                    HQtySum = 0;
                                    HTaxMoneySum = 0;
                                }
                                dataArray.push(option.data[i]);
                                HPieceQtySum += option.data[i]["件数"] * 1;
                                HQtySum += option.data[i]["数量"] * 1;
                                HTaxMoneySum += option.data[i]["金额"] * 1;
                            }
                            table.exportFile(ins.config.id, dataArray, "xls");
                            exportAll();
                        } else {
                            layer.alert("当前模块没有导出权限!", { icon: 5 });
                        }
@@ -544,6 +522,197 @@
                return res;
            }
            //#endregion
            //#region å¯¼å‡º
            function oneTable(option) {
                //获取表头数据
                var colsList = [];
                for (var i = 1; i < option.cols[0].length; i++) {
                    if (option.cols[0][i].hide != true) {
                        colsList.push(option.cols[0][i]);
                    }
                }
                //获取行数据
                var listData = [];                             //获取行数据
                var HCusID = option.data[0]["HCusID"];          //用于区分不同客户
                var HPieceQtySum = 0;                           //件数合计
                var HQtySum = 0;                                //数量合计
                var HTaxMoneySum = 0;                           //金额合计
                for (var i = 0; i < option.data.length; i++) {
                    if (HCusID != option.data[i]["HCusID"]) {
                        var sumTemp = { "客户": "合计", "物料名称": "", "件数": HPieceQtySum, "数量": HQtySum, "单价": "", "金额": HTaxMoneySum, "业务员": "" };
                        var emptyTemp = { "客户": "", "物料名称": "", "件数": "", "数量": "", "单价": "", "金额": "", "业务员": "" };
                        var titleTemp = { "客户": "客户", "物料名称": "物料名称", "件数": "件数", "数量": "数量", "单价": "单价", "金额": "金额", "业务员": "业务员" };
                        listData.push(sumTemp);
                        listData.push(emptyTemp);
                        listData.push(emptyTemp);
                        listData.push(titleTemp);
                        //记录新客户的内码
                        HCusID = option.data[i]["HCusID"];
                        //初始化件数合计、数量合计、金额合计
                        HPieceQtySum = 0;
                        HQtySum = 0;
                        HTaxMoneySum = 0;
                    }
                    listData.push(option.data[i]);
                    HPieceQtySum += option.data[i]["件数"] * 1;
                    HQtySum += option.data[i]["数量"] * 1;
                    HTaxMoneySum += option.data[i]["金额"] * 1;
                }
                //设置sheet中的数据
                let news = [[]];
                for (var i = 0; i < colsList.length; i++) {
                    news[0].push(colsList[i].title);
                }
                for (var i = 0; i < listData.length; i++) {
                    news.push([listData[i].客户, listData[i].物料名称, listData[i].件数, listData[i].数量, listData[i].单价, listData[i].金额, listData[i].业务员]);
                }
                //创建sheet
                const sheet = XLSX.utils.aoa_to_sheet(news);
                return sheet;
            }
            function twoTable(option) {
                //获取表头数据
                var colsList = [];
                for (var i = 1; i < option.cols[0].length; i++) {
                    if (option.cols[0][i].hide != true) {
                        colsList.push(option.cols[0][i]);
                    }
                }
                //获取行数据
                var listData = [];                             //获取行数据
                var HCusID = option.data[0]["HCusID"];          //用于区分不同客户
                var HPieceQtySum = 0;                           //件数合计
                var HQtySum = 0;                                //数量合计
                var HTaxMoneySum = 0;                           //金额合计
                for (var i = 0; i < option.data.length; i++) {
                    if (HCusID != option.data[i]["HCusID"]) {
                        var sumTemp = { "客户": "合计", "物料名称": "", "件数": HPieceQtySum, "数量": HQtySum, "单价": "", "金额": HTaxMoneySum, "业务员": "" };
                        var emptyTemp = { "客户": "", "物料名称": "", "件数": "", "数量": "", "单价": "", "金额": "", "业务员": "" };
                        var titleTemp = { "客户": "客户", "物料名称": "物料名称", "件数": "件数", "数量": "数量", "单价": "单价", "金额": "金额", "业务员": "业务员" };
                        listData.push(sumTemp);
                        listData.push(emptyTemp);
                        listData.push(emptyTemp);
                        listData.push(titleTemp);
                        //记录新客户的内码
                        HCusID = option.data[i]["HCusID"];
                        //初始化件数合计、数量合计、金额合计
                        HPieceQtySum = 0;
                        HQtySum = 0;
                        HTaxMoneySum = 0;
                    }
                    listData.push(option.data[i]);
                    HPieceQtySum += option.data[i]["件数"] * 1;
                    HQtySum += option.data[i]["数量"] * 1;
                    HTaxMoneySum += option.data[i]["金额"] * 1;
                }
                //设置sheet中的数据
                let news = [[]];
                for (var i = 0; i < colsList.length; i++) {
                    news[0].push(colsList[i].title);
                }
                for (var i = 0; i < listData.length; i++) {
                    news.push([listData[i].客户, listData[i].物料名称, listData[i].件数, listData[i].数量, listData[i].单价, listData[i].金额, listData[i].业务员]);
                }
                //创建sheet
                const sheet = XLSX.utils.aoa_to_sheet(news);
                return sheet;
            }
            function exportAll() {
                //获取sheet
                let sheet1 = oneTable(option);
                let sheet2 = twoTable(option);
                //创建excel文档
                const wb = XLSX.utils.book_new();
                XLSX.utils.book_append_sheet(wb, sheet1, "非羊毛");
                XLSX.utils.book_append_sheet(wb, sheet2, "羊毛");
                const workbookBlob = workbook2blob(wb);
                // å¯¼å‡ºæœ€åŽçš„æ€»è¡¨
                var ExcelName = "销售出库明细报表" + Format(new Date(), "yyyy-MM-dd") + ".xlsx";
                openDownloadDialog(workbookBlob, ExcelName);
                // å°†blob对象 åˆ›å»ºbloburl,然后用a标签实现弹出下载框
            }
            //#region è®¾ç½®å¯¼å‡ºå‚æ•°
            function workbook2blob(workbook) {
                // ç”Ÿæˆexcel的配置项
                var wopts = {
                    // è¦ç”Ÿæˆçš„æ–‡ä»¶ç±»åž‹
                    bookType: "xlsx",
                    // æ˜¯å¦ç”ŸæˆShared String Table, å®˜æ–¹è§£é‡Šæ˜¯, å¦‚果开启生成速度会下降, ä½†åœ¨ä½Žç‰ˆæœ¬IOS设备上有更好的兼容性
                    bookSST: false,
                    type: "binary"
                };
                var wbout = XLSX.write(workbook, wopts);
                // å°†å­—符串转ArrayBuffer
                function s2ab(s) {
                    var buf = new ArrayBuffer(s.length);
                    var view = new Uint8Array(buf);
                    for (var i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
                    return buf;
                }
                let buf = s2ab(wbout);
                var blob = new Blob([buf], {
                    type: "application/octet-stream"
                });
                return blob;
            }
            //#endregion
            //#region
            function openDownloadDialog(blob, fileName) {
                if (typeof blob === "object" && blob instanceof Blob) {
                    blob = URL.createObjectURL(blob); // åˆ›å»ºblob地址
                }
                var aLink = document.createElement("a");
                aLink.href = blob;
                // HTML5add的属性, æŒ‡å®šä¿å­˜æ–‡ä»¶å, å¯ä»¥ä¸è¦åŽç¼€, æ³¨æ„, æœ‰æ—¶å€™
                aLink.download = fileName || "";
                var event;
                if (window.MouseEvent) event = new MouseEvent("click");
                //   ç§»åŠ¨ç«¯
                else {
                    event = document.createEvent("MouseEvents");
                    event.initMouseEvent(
                        "click",
                        true,
                        false,
                        window,
                        0,
                        0,
                        0,
                        0,
                        0,
                        false,
                        false,
                        false,
                        false,
                        0,
                        null
                    );
                }
                aLink.dispatchEvent(event);
            }
            //#endregion
            //#endregion
        });
            //#endregion