js 賬單列印並分頁

来源:https://www.cnblogs.com/Byme/archive/2018/03/22/8625917.html
-Advertisement-
Play Games

賬單列印 Ι 收據列印 返回賬單列表 列印 ... ...


 

 

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
    <%@include file="/webpage/inc/inc.jsp"%>
        <!doctype html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>賬單列印</title>
        </head>
         <body style="margin: 0;padding: 0;" ng-app="myApp" ng-controller="myCtrl">
        <div style="width: 950px;margin: 5px auto;padding: 10px 0px;border-bottom: 1px solid #eee;" id="headBox">
                    <span style="color:#32c5d2">Ι  </span>收據列印
                    <a onclick="_back()" style="color: #FFF;background-color: #32c5d2;border-color: #32c5d2;border: none;cursor: pointer;margin:0 10px;padding: 5px 10px;font-size: 12px;line-height: 1.5;float: right;">返回賬單列表</a>
                    <a href="javascript:printData()" target="_self" style="color: #FFF;background-color: #32c5d2;border-color: #32c5d2;border: none;;cursor: pointer;text-decoration: none;padding: 5px 10px;font-size: 12px;line-height: 1.5;margin-left: 20px;">列印</a>
        </div>
            <div id="divPrint" style="width: 960px;margin:0 auto;">
            <div id="div1"></div>
            <div id="div2">
                <table width="100%" border="1" cellspacing="0">
                    <thead>
                      <tr style="height: 40px;text-align: center;font-size: 30px;">
                        <td colspan="14">收&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;據</td>
                      </tr>
                      <tr>
                        <td style="text-align: center;width: 300px;"><span class="time_year">2017</span>年<span class="time_month">12</span>月<span class="time_day">11</span>日</td>
                        <td colspan="12" style="padding-left: 10px;">交款單位:<span class="customer" style="padding: 0 2px;"></span></td>
                        <td style="padding-left: 10px;">NO:<span class="code"></span></td>
                      </tr>
                     
                      <tr>
                        <td rowspan="2" style="text-align: center;">名稱</td>
                        <td rowspan="2" style="text-align: center;width:80px;">單位</td>
                        <td rowspan="2" style="text-align: center;width:50px;">數量</td>
                        <td rowspan="2" style="text-align: center;width:50px;">單價</td>
                        <td colspan="9" style="text-align: center;">金額</td>
                        <td style="text-align: center;">總金額<b>¥</b><b class="total"></b></td>
                      </tr>
                      <tr>
                        <td style="width: 30px;text-align: center;">佰</td>
                        <td style="width: 30px;text-align: center;">拾</td>
                        <td style="width: 30px;text-align: center;">萬</td>
                        <td style="width: 30px;text-align: center;">千</td>
                        <td style="width: 30px;text-align: center;">百</td>
                        <td style="width: 30px;text-align: center;">十</td>
                        <td style="width: 30px;text-align: center;">元</td>
                        <td style="width: 30px;text-align: center;">角</td>
                        <td style="width: 30px;text-align: center;">分</td>
                        <td style="text-align: center;">備註</td>
                        </tr>
                    </thead>
                    <tbody id="tbodyList">
                        <!-- <tr class="t_money_tr_0">
                            <td class="td_name_0" style="text-align: center;">{{items.name}}</td>
                            <td style="text-align: center;">&nbsp;</td>
                            <td style="text-align: center;">&nbsp;</td>
                            <td style="text-align: center;">&nbsp;</td>
                            <td class="hunbit_0" style="text-align: center;">&nbsp;</td>
                            <td class="debit_0" style="text-align: center;">&nbsp;</td>
                            <td class="myriabit_0" style="text-align: center;">&nbsp;</td>
                            <td class="kilbit_0" style="text-align: center;">&nbsp;</td>
                            <td class="hunders_0" style="text-align: center;">&nbsp;</td>
                            <td class="decade_0" style="text-align: center;">&nbsp;</td>
                            <td class="unit_0" style="text-align: center;">&nbsp;</td>
                            <td class="unitone_0" style="text-align: center;">&nbsp;</td>
                            <td class="unittwo_0" style="text-align: center;">&nbsp;</td>
                            <td class="td_remark_0" style="text-align: center;">&nbsp;</td>
                        </tr> -->
                    </tbody>
                    <tfoot>
                        <!-- <tr>
                            <td>合計人民幣(大寫)</td>
                            <td colspan="13">
                                <span class="money_num_text">
                            <i class="num_text_hunbit" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">X</i>佰<i class="num_text_debit" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">X</i>拾<i class="num_text_myriabit" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">X</i>萬<i class="num_text_kilbit" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">X</i>仟<i class="num_text_hunders" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">X</i>佰<i class="num_text_decade" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">X</i>拾<i class="num_text_unit" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">X</i>元<i class="num_text_unitone" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">零</i>角<i class="num_text_unittwo" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">零</i>分<b>¥</b><b class="mtotal"></b>
                                </span>
                            </td>
                        </tr> -->
                        <tr>
                            <td>主管</td>
                            <td colspan="6">會計</td>
                            <td colspan="7">收款人</td>
                        </tr>
                        <tr>
                            <td colspan="13" style="text-align: center;"><span> &nbsp;白1&nbsp;(存根)&nbsp;黃&nbsp;(收據)&nbsp;綠&nbsp;(記賬)&nbsp;藍&nbsp;(提貨)&nbsp;紅&nbsp;(核對)&nbsp;白2&nbsp;(確認) </span></td>
                            <td colspan="1">
                                <span tdata="pageNO" format="#" ><font color="#0000FF">#</font>張</span>
                                    <span tdata="pageCount" format="#"><font color="#0000FF">##</font>張</span>
                            </td>
                        </tr>
                    </tfoot>
                </table>
                </div>
            </div>
        </body>
        <script src="<%=staticServPath%>/static/assets/global/plugins/jquery.min.js" type="text/javascript"></script>
        <script src="<%=staticServPath%>/static/js/public.js" type="text/javascript"></script>
        <script src="<%=staticServPath%>/static/plug-in/ng/angular.min.js" type="text/javascript"></script>
        <script src="<%=staticServPath%>/static/plug-in/lodop/LodopFuncs.js" type="text/javascript"></script>
        <script>
        var app = angular.module('myApp', []);
        app.controller('myCtrl', function($scope, $http) {
            // var $scope = $scope;
            inputId = window.location.href.split('?')[1].split('&')[0].split('=')[1];
            //請求介面
            ajaxJson('GET', webroot + '/bill/printList?ids=' + inputId, '', function(err, rsp) {
                if (rsp.code == 200) {
                    $scope.aa = rsp.result;
                    $scope.data = rsp.result[0];
                    $scope.paymentDate = $scope.data.paymentDate.split('-');
                    $scope.customer = $scope.data.customer;
                    $scope.code = $scope.data.code;
                    $scope.total = $scope.data.total;
                    // $scope.total = 10000.99;
                    // $scope.items = $scope.data.items;
                    $scope.items = [{
                        money: 9,
                        remark: '備註1',
                        name: '01'
                    },{
                        money: 9,
                        remark: '備註1',
                        name: '01'
                    },{
                        money: 9,
                        remark: '備註1',
                        name: '01'
                    },{
                        money: 9,
                        remark: '備註1',
                        name: '01'
                    },{
                        money: 9,
                        remark: '備註1',
                        name: '01'
                    },{
                        money: 9,
                        remark: '備註1',
                        name: '01'
                    },{
                        money: 9,
                        remark: '備註1',
                        name: '01'
                    },{
                        money: 9,
                        remark: '備註1',
                        name: '01'
                    },{
                        money: 9,
                        remark: '備註1',
                        name: '01'
                    },{
                        money: 9,
                        remark: '備註1',
                        name: '01'
                    }];  
                    //年月日
                    $('.time_year').text($scope.paymentDate[0]);
                    $('.time_month').text($scope.paymentDate[1]);
                    $('.time_day').text($scope.paymentDate[2]);
                    $('.customer').text($scope.customer);
                    $('.code').text($scope.code);
                    $('.total').text($scope.total);
                    //數據總行數
                    var itemLen = $scope.items.length;
                    //迭代行數
                    var rowNum = itemLen + (6-itemLen%6);
                    //每頁累加合計金額(一行)
                    var sumMoney = 0;
                    function moneyTr (sum){
                        var DXhtml = moneyDX (sum);
                        var TotalMoneyTr = '<tr>'+
                                '<td>合計人民幣(大寫)</td>'+
                                '<td colspan="13">'+
                                '<span class="money_num_text">'+
                                //--------------
                                DXhtml+
                                //--------------
                                '<b>'+'¥'+sum+'</b>'+
                                '</span>'
                                '</tr>';
                        return TotalMoneyTr;
                    };
                    //列印控制項行處理
                    function rowNumTotal(){
                        for(var i = 1; i <=rowNum; i++){
                            if(i<=itemLen){
                                sumMoney += $scope.items[i-1].money;
                                addmoneyTr($scope.items[i-1]);
                            }else{
                                addmoneyTr(null);
                            }
                            if(i%6 == 0){
                                //添加合計行
                                $('#tbodyList').append(moneyTr(sumMoney));
                                moneyDX(sumMoney);
                                sumMoney = 0;
                            }
                        }
                    };
                    rowNumTotal();
                    //添加每個金額行
                    function addmoneyTr(obj){
                        var innerHtml ;
                        if(null==obj){
                            innerHtml = '<tr class="t_money_tr_">'+
                            '<td class="td_name_0" style="text-align: center;">&nbsp;</td>'+
                            '<td style="text-align: center;">&nbsp;</td>'+
                            '<td style="text-align: center;">&nbsp;</td>'+
                            '<td style="text-align: center;">&nbsp;</td>'+
                            '<td style="text-align: center;">&nbsp;</td>'+
                            '<td style="text-align: center;">&nbsp;</td>'+
                            '<td style="text-align: center;">&nbsp;</td>'+
                            '<td style="text-align: center;">&nbsp;</td>'+
                            '<td style="text-align: center;">&nbsp;</td>'+
                            '<td style="text-align: center;">&nbsp;</td>'+
                            '<td style="text-align: center;">&nbsp;</td>'+
                            '<td style="text-align: center;">&nbsp;</td>'+
                            '<td style="text-align: center;">&nbsp;</td>'+
                            '<td class="td_remark_0" style="text-align: center;">&nbsp;</td>'+      
                            '</tr>';
                        }else{
                            var mhtml = getMoneyHtml(obj.money) ;
                            innerHtml = '<tr class="t_money_tr_">'+
                                        '<td class="td_name_0" style="text-align: center;">'+(obj.name?obj.name:'/')+'</td>'+
                                        '<td style="text-align: center;">'+(obj.unitType?obj.unitType:'/')+'</td>'+
                                        '<td style="text-align: center;">'+(obj.quantity ?obj.quantity:'/')+'</td>'+
                                        '<td style="text-align: center;">'+(obj.price?obj.price:'/')+'</td>'+
                                        //---------------
                                        mhtml + 
                                        //---------------
                                        '<td class="td_remark_0" style="text-align: center;">&nbsp;</td>'+      
                                        '</tr>';
                        }
                        $('#tbodyList').append(innerHtml);
                    };
                    //小寫金額填入處理
                    function getMoneyHtml(m){
                        var m = m.toString();
                        if(m.indexOf(".") == -1){//整數補齊小數位數為00
                            m = m + ".00";
                        }
                        var money = m.split('.');
                        var money_1 = '¥'+money[0];//整數部分
                        if(Number(money[0]) >= 1000000){ //大於一百萬不顯示¥
                            var money_1 = money[0];
                        }
                        var money1_arr = money_1.split('')//轉換成數組
                        var mhtml = '' ;
                        var temp = money1_arr.length , j = 0 ;
                        // 整數部分
                        for(var i = 7;i>0;i--){
                            if(temp < i){
                                mhtml = mhtml + '<td class="hunbit_0" style="text-align: center;">&nbsp;</td>' ;
                            }else{
                                mhtml = mhtml + '<td class="hunbit_0" style="text-align: center;">' + money1_arr[j] + '</td>' ;
                                j++;
                            }
                        }
                        //小數部分
                        if(m.toString().indexOf(".") != -1){
                            var money_2 = money[1];
                            var money2_arr = money_2.split('');
                            var temp2 = money2_arr.length ;
                            for(var i = 0;i < 2; i++){
                                 mhtml = mhtml + '<td class="hunbit_0" style="text-align: center;">' + money2_arr[i] + '</td>' ;
                            }
                        }
                        return mhtml;
                    };
                    //處理大寫金額
                    function moneyDX (mtotal){
                        var DNum = {
                            '1': '壹',
                            '2': '貳',
                            '3': '叄',
                            '4': '肆',
                            '5': '伍',
                            '6': '陸',
                            '7': '柒',
                            '8': '捌',
                            '9': '玖',
                            '0': '零'
                        }

                        //取出各個位數的值
                        var total = mtotal.toString();
                        if(total.indexOf(".") == -1){//整數補齊小數位數為00
                            total = total + ".00";
                        }
                        var totalArr = total.split('.');
                        var totalArr1 = totalArr[0];
                        var text_unit = totalArr1[totalArr1.length - 1];
                        var text_decade = totalArr1[totalArr1.length - 2];
                        var text_hunders = totalArr1[totalArr1.length - 3];
                        var text_kilbit = totalArr1[totalArr1.length - 4];
                        var text_myriabit = totalArr1[totalArr1.length - 5];
                        var text_debit = totalArr1[totalArr1.length - 6];
                        var text_hunbit = totalArr1[totalArr1.length - 7];
                        //小數部分
                        if(total.indexOf(".") != -1){
                            var totalArr2 = totalArr[1].split('');
                            var text_unitone = totalArr2[0];
                            var text_unittwo = totalArr2[1];
                        } 
                        //賦值拼接
                        var DXhtml = '<i class="num_text_hunbit" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">'+(DNum[text_hunbit]?DNum[text_hunbit]:'X')+
                            '</i>佰<i class="num_text_debit" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">'+(DNum[text_debit]?DNum[text_debit]:'X')+
                            '</i>拾<i class="num_text_myriabit" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">'+(DNum[text_myriabit]?DNum[text_myriabit]:'X')+
                            '</i>萬<i class="num_text_kilbit" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">'+(DNum[text_kilbit]?DNum[text_kilbit]:'X')+
                            '</i>仟<i class="num_text_hunders" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">'+(DNum[text_hunders]?DNum[text_hunders]:'X')+
                            '</i>佰<i class="num_text_decade" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">'+(DNum[text_decade]?DNum[text_decade]:'X')+
                            '</i>拾<i class="num_text_unit" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">'+(DNum[text_unit]?DNum[text_unit]:'X')+
                            '</i>元<i class="num_text_unitone" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">'+(DNum[text_unitone]?DNum[text_unitone]:'X')+
                            '</i>角<i class="num_text_unittwo" style="font-style: normal;margin: 0 12px;display: inline-block;width: 12px;">'+(DNum[text_unittwo]?DNum[text_unittwo]:'X')+
                            '</i>分';
                        return DXhtml;
                    };
                    } else {
                    console.log(rsp.message);
                }
            });
        });
        //返回賬單列表
        function _back() {
            var url = webroot + '/bill/index';
            window.location.href = url;
        }
        //列印
        function printData(){
            var LODOP=getLodop();  
            LODOP.PRINT_INIT("列印賬單收據");
            LODOP.SET_PRINT_PAGESIZE(1,"21cm","13.5cm","LodopCustomPage")
            var strStyle="<style> table,td,th {border-width: 1px;border-style: solid;border-collapse: collapse}</style>"
            LODOP.ADD_PRINT_TABLE(128,"1%","96%","4.5cm", strStyle + document.getElementById("div2").innerHTML);
            LODOP.SET_PRINT_STYLEA(0,"Vorient",1);        
            LODOP.ADD_PRINT_HTM(26,"1%","98%","1cm",document.getElementById("div1").innerHTML);
            LODOP.SET_PRINT_STYLEA(0,"ItemType",1);
            LODOP.SET_PRINT_STYLEA(0,"LinkedItem",1);
            LODOP.PREVIEW();    
        };    
        </script>
        </html>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 解決方法: 製作好的framework在打包上傳至AppStore如果出現以下錯誤,則說明自建的這個SDK裡面包含了x86_64, i386 架構,當然這個AppStore是不允許的,所有會在上傳的時候報錯,解決辦法就是要這個SDK剔除掉x86_64, i386這兩個架構 解決辦法:TARGETS- ...
  • 自定義支持上拉載入更多,下拉刷新,支持自由切換狀態【載入中,載入成功,載入失敗,沒網路等狀態】的控制項,拓展功能[支持長按拖拽,側滑刪除]可以選擇性添加 。具體使用方法,可以直接參考demo。 輕量級側滑刪除菜單,支持recyclerView,listView,直接嵌套item佈局即可使用,整個側滑菜 ...
  • 最近要研究字體識別tesseract,才瞭解到brew,慚愧慚愧。 1、brew是一個軟體包管理工具,類似於centos下的yum或者ubuntu下的apt-get,非常方便,免去了自己手動編譯安裝的不便 brew 安裝目錄 /usr/local/Cellar brew 配置目錄 /usr/loca ...
  • 這個是基於three.js的全景插件 photo-sphere-viewer.js ———————————————————————————————————————— 1、能添加熱點; 2、能調用陀螺儀; 3、功能比較完善,能滿足大多數人的需求了; 4、最主要的是操作簡單,提供一長全景圖片即可(大多數 ...
  • 今天遇上個大麻煩,整個人心情都不怎麼好了。。。 編譯app.js報了這麼一大片錯。。。 我沒像老師一樣用sequelize建表,而是自己用SQL建的。 它找不到用sequelize建的對應欄位。。。 哎,真想好好學學怎麼調資料庫的數據,但是現在又沒有太多的時間。 只能說是把老師的項目跟著敲一遍。 並 ...
  • 在ECMAscript中,變數可以存放兩種類型的值,即原始值和引用值 原始值指的是代表原始數據類型的值,也叫基本數據類型,包括:Number、Stirng、Boolean、Null、Underfined 引用值指的是複合數據類型的值,包括:Object、Function、Array、Date、Reg ...
  • Q:什麼情況下會碰到跨域問題?有哪些解決方法? 跨域問題是這是瀏覽器為了安全實施的同源策略導致的,同源策略限制了來自不同源的document、腳本,同源的意思就是兩個URL的功能變數名稱、協議、埠要完全相同。 script標簽jsonp跨域、nginx反向代理、node.js中間件代理跨域、後端在頭部信息 ...
  • 一、兩者的區別 相等:先強制轉換變數類型,再比較 全等:不轉換類型,一旦類型不同,就是不全等。 二、相等和不相等的比較規則 1.操作符中有布爾值時: 比較前先將之轉換為數值 false = 0 , true = 1 2.字元串,另一個是數值: 字元串去將就數值 3.對象: object.valueO ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...