<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    wuxiren123

    2017年3月21日 #

    FineReport中樹(shù)數(shù)據(jù)集如何實(shí)現(xiàn)組織樹(shù)報(bào)表

    組織樹(shù)報(bào)表中由id與父id來(lái)實(shí)現(xiàn)組織樹(shù)報(bào)表,若層級(jí)數(shù)較多時(shí),對(duì)每個(gè)單元格設(shè)置過(guò)濾條件和形態(tài)會(huì)比較繁瑣,因此FineReport提供了一種特殊的數(shù)據(jù)集——樹(shù)數(shù)據(jù)集,只需要簡(jiǎn)單的設(shè)置就能自動(dòng)遞歸出層級(jí),方便的實(shí)現(xiàn)如下圖組織樹(shù)報(bào)表:

    圖一

    圖二


    構(gòu)建樹(shù)

    • 新建報(bào)表,添加數(shù)據(jù)集

    新建工作薄,添加數(shù)據(jù)集ds1取出原始數(shù)據(jù),SQL語(yǔ)句為SELECT * FROM 公司部門。

    • 定義樹(shù)數(shù)據(jù)集

    1)根據(jù)父字段構(gòu)建樹(shù)

    使用情形:原始表結(jié)構(gòu)中符合ID、parentID結(jié)構(gòu),我們可以通過(guò)父ID這個(gè)字段生成樹(shù),添加樹(shù)數(shù)據(jù)集,如下圖:

     

    2)根據(jù)數(shù)據(jù)長(zhǎng)度構(gòu)建樹(shù)

    使用情形:原始表結(jié)構(gòu)中所有ID都在一列中,且沒(méi)有父ID字段,但是ID是有規(guī)律的,每組的長(zhǎng)度相同,且子級(jí)的前N位就是父級(jí)編號(hào),添加樹(shù)數(shù)據(jù)集,如下圖:

     

     

    •  預(yù)覽數(shù)據(jù)

    預(yù)覽樹(shù)數(shù)據(jù)集,可看到已自動(dòng)生成遞歸樹(shù)數(shù)據(jù),F(xiàn)R_GEN_0為最高層,依次往下,如下:

    縱向組織樹(shù)編輯

    按照下圖所示將對(duì)應(yīng)的數(shù)據(jù)列拖入到單元格中,并將A2單元格的左父格設(shè)置為A1,A3單元格的左父格設(shè)置為A2:

      

    • 條件屬性

    有上面預(yù)覽數(shù)據(jù)可以看到從二層FR_GEN_1開(kāi)始,就會(huì)有空白數(shù)據(jù),這是因?yàn)閿?shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)有上一級(jí)部門本身的部門名稱和部門ID,其上一級(jí)部門的部門級(jí)數(shù)會(huì)低一級(jí),比如說(shuō)上述數(shù)據(jù)的第一行為總部,雖然總部下面有子部門,但是數(shù)據(jù)庫(kù)中還是要存儲(chǔ)總部這個(gè)部門的部門名稱和部門ID的,總部對(duì)應(yīng)的級(jí)數(shù)為一級(jí),那么其對(duì)應(yīng)的數(shù)據(jù)記錄行里面就只有FR_GEN_0層,下面的FR_GEN_1和FR_GEN_2這兩層就會(huì)沒(méi)有數(shù)據(jù),顯示為空白。

    在模板制作過(guò)程中,從第二層級(jí)開(kāi)始就會(huì)有空白數(shù)據(jù),需要將空白數(shù)據(jù)隱藏掉,選中A2和A3單元格,添加條件屬性,當(dāng)數(shù)據(jù)為空時(shí)隱藏該行,如下圖: 

    如果組織結(jié)構(gòu)的層級(jí)結(jié)構(gòu)不確定,即有的層級(jí)有子層,有的層級(jí)沒(méi)有子層時(shí),其組織樹(shù)報(bào)表的實(shí)現(xiàn)方式請(qǐng)查看不規(guī)范組織樹(shù)報(bào)表

    • 其它設(shè)置

    由于自動(dòng)生成的字段是編碼,可以使用數(shù)據(jù)字典將其轉(zhuǎn)為對(duì)應(yīng)的部門名稱,如下圖:

     

    • 保存與預(yù)覽

    保存模板,點(diǎn)擊分頁(yè)預(yù)覽,效果如圖一。

    橫向組織樹(shù)編輯

    按照下圖所示將對(duì)應(yīng)的數(shù)據(jù)列拖入到單元格中,在右側(cè)單元格屬性表-擴(kuò)展屬性中將B1、C1單元格的擴(kuò)展方向設(shè)為橫向,

    并將B1單元格的左父格設(shè)置為A1,C1單元格的左父格設(shè)置為B1:

     

    • 條件屬性

    有上面預(yù)覽數(shù)據(jù)可以看到從二層FR_GEN_1開(kāi)始,就會(huì)有空白數(shù)據(jù),這是因?yàn)閿?shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)有上一級(jí)部門本身的部門名稱和部門ID,其上一級(jí)部門的部門級(jí)數(shù)會(huì)低一級(jí),比如說(shuō)上述數(shù)據(jù)的第一列為總部,雖然總部下面有子部門,但是數(shù)據(jù)庫(kù)中還是要存儲(chǔ)總部這個(gè)部門的部門名稱和部門ID的,總部對(duì)應(yīng)的級(jí)數(shù)為一級(jí),那么其對(duì)應(yīng)的數(shù)據(jù)記錄列里面就只有FR_GEN_0層,下面的FR_GEN_1和FR_GEN_2這兩層就會(huì)沒(méi)有數(shù)據(jù),顯示為空白。

    在模板制作過(guò)程中,從第二層級(jí)開(kāi)始就會(huì)有空白數(shù)據(jù),需要將空白數(shù)據(jù)隱藏掉,選中B1和C1單元格,添加條件屬性,當(dāng)數(shù)據(jù)為空時(shí)隱藏該列,如下圖:

    如果組織結(jié)構(gòu)的層級(jí)結(jié)構(gòu)不確定,即有的層級(jí)有子層,有的層級(jí)沒(méi)有子層時(shí),其組織樹(shù)報(bào)表的實(shí)現(xiàn)方式請(qǐng)查看不規(guī)則組織樹(shù)報(bào)表

    • 其它設(shè)置

    由于自動(dòng)生成的字段是編碼,可以使用數(shù)據(jù)字典將其轉(zhuǎn)為對(duì)應(yīng)的部門名稱,如下圖:

     

    • 保存與預(yù)覽

    保存模板,點(diǎn)擊分頁(yè)預(yù)覽,效果如圖二。

    posted @ 2017-04-06 15:56 喝水居然長(zhǎng)肉 閱讀(127) | 評(píng)論 (0)編輯 收藏

    FineReport中如何自定義登錄界面

    在登錄平臺(tái)時(shí),不希望使用FR默認(rèn)的內(nèi)置登錄界面,想通過(guò)自定義登錄界面實(shí)現(xiàn)登錄操作,內(nèi)置登錄界面如下圖:



     

    登錄界面,獲取到用戶名和密碼的值,發(fā)送到報(bào)表系統(tǒng),報(bào)表服務(wù)帶著這兩個(gè)參數(shù)訪問(wèn)認(rèn)證地址進(jìn)行認(rèn)證。

    自定義登錄界面

    登錄界面設(shè)置

    自定義html登錄頁(yè)面:命名為login.html,并保存在%FR_HOME%\WebReport下,代碼如下:

    <html>  
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="ReportServer?op=emb&resource=finereport.js"></script>  
    <script type="text/javascript">  
    function doSubmit() {  
        
    var username = FR.cjkEncode(document.getElementById("username").value); //獲取輸入的用戶名  
        var password = FR.cjkEncode(document.getElementById("password").value);  //獲取輸入的參數(shù)  
        jQuery.ajax({  
         url:
    "http://localhost:8075/WebReport/ReportServer?op=fs_load&cmd=sso",//單點(diǎn)登錄的管理平臺(tái)報(bào)表服務(wù)器  
         dataType:"jsonp",//跨域采用jsonp方式  
         data:{"fr_username":username,"fr_password":password},//獲取用戶名密碼  
         jsonp:"callback",  
         timeout:
    5000,//超時(shí)時(shí)間(單位:毫秒)  
         success:function(data) {  
                
    if (data.status === "success"
        window.location
    =data.url;//認(rèn)證成功跳轉(zhuǎn)頁(yè)面,因?yàn)閍jax不支持重定向所有需要跳轉(zhuǎn)的設(shè)置 
                      //登錄成功     
                }
     else if (data.status === "fail"){  
                     alert(
    "用戶名或密碼錯(cuò)誤");//登錄失?。ㄓ脩裘蛎艽a錯(cuò)誤)  
                }
      
         }
    ,  
         error:
    function(){  
               alert(
    "超時(shí)或服務(wù)器其他錯(cuò)誤");// 登錄失敗(超時(shí)或服務(wù)器其他錯(cuò)誤)  
         }
      
    }
    ); 
    }
      
    </script>  
    </head>  
    <body>  
    <p>請(qǐng)登錄</p>  
    <form name="login" method="POST">  
        
    <p>  
            用戶名:  
            
    <input id="username" type="text" />  
        
    </p>  
        
    <p>  
            密 碼:  
            
    <input id="password" type="password" />  
        
    </p>  
        
    <input type="button" value="登錄" onclick="doSubmit()"/>  
    </form>  
    </body>  
    </html>

     Dosubmit()是主要的邏輯判斷,實(shí)現(xiàn)的是將對(duì)應(yīng)的值傳給報(bào)表服務(wù)的邏輯實(shí)現(xiàn)過(guò)程。

    調(diào)用登錄界面

    登錄系統(tǒng),選擇管理系統(tǒng)>外觀配置,在登錄頁(yè)選項(xiàng)中選擇設(shè)置登錄網(wǎng)頁(yè),并輸入自定義登錄頁(yè)面的路徑:login.html,如下圖所示:



     

    總結(jié)

    比如說(shuō)若用戶有自己的系統(tǒng),將FR繼承到自己已有系統(tǒng)中,該系統(tǒng)有自己的登錄界面,希望登錄自己系統(tǒng)的同時(shí)也登錄報(bào)表(即將輸入的用戶名密碼也發(fā)送到報(bào)表服務(wù)進(jìn)行認(rèn)證),從而訪問(wèn)報(bào)表時(shí)不需要再次登錄即單點(diǎn)登錄,步驟如下:

    1、找到您系統(tǒng)登錄頁(yè)面如login.jsp;

    2、在login.jsp頁(yè)面head中引入finereport.js;

    3、在login.jsp頁(yè)面JavaScript中定義function如dosubmit,在dosubmit中獲取到輸入的用戶名密碼,并通過(guò)iframe方式或者ajax方式進(jìn)行認(rèn)證。

    4、在FineReport平臺(tái)系統(tǒng)中設(shè)置自定義登錄頁(yè)面地址為您系統(tǒng)的登錄地址。

    若是OA系統(tǒng)或者報(bào)表系統(tǒng)和項(xiàng)目系統(tǒng)不再同一個(gè)服務(wù)器上,可以進(jìn)行ajax跨域異步單點(diǎn)登錄。

    Session傳值

    對(duì)于java系統(tǒng)來(lái)說(shuō),可將用戶名與密碼放在session中,把報(bào)表集成在同一環(huán)境下面,報(bào)表可自動(dòng)獲取到用戶名和密碼的值進(jìn)行驗(yàn)證。

    還原默認(rèn)登錄界面

    如果在決策系統(tǒng)修改了登錄界面后,希望還原成系統(tǒng)默認(rèn)登錄界面,應(yīng)該如何實(shí)現(xiàn)呢?

    1)打開(kāi)安裝目錄%FR_HOME%\WebReport\WEB-INF\resources,找到fsconfig.xml



     

    2)刪除loginUrl屬性

    右擊fsconfig.xml文件,選擇編輯器打開(kāi),刪除文件中的loginUrl屬性,如下,刪除login.htm:



     

    此時(shí)請(qǐng)務(wù)必關(guān)閉設(shè)計(jì)器,重新開(kāi)啟,再次進(jìn)入數(shù)據(jù)決策系統(tǒng),即可回到默認(rèn)的登錄界面。

    還原到默認(rèn)的登錄界面后,如果再需要設(shè)置登錄界面,可以用管理員賬戶登錄,進(jìn)行設(shè)置即可。

    posted @ 2017-03-21 16:58 喝水居然長(zhǎng)肉 閱讀(113) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 野花高清在线观看免费3中文| 亚洲天堂2017无码中文| 天天看免费高清影视| 久久成人a毛片免费观看网站| 国产亚洲精品美女久久久久| 亚洲日本国产乱码va在线观看| 亚洲热线99精品视频| 免费一级毛片清高播放| 日韩精品无码区免费专区| 99久久精品国产免费| 拍拍拍无挡免费视频网站| 黄色毛片视频免费| 亚洲a∨国产av综合av下载| 亚洲国产av高清无码| 亚洲欧洲国产日韩精品| 亚洲精品乱码久久久久久自慰| 亚洲精品国产日韩无码AV永久免费网| 国产成人精品123区免费视频| 久久不见久久见免费影院| 91福利视频免费观看| 国产va在线观看免费| 在线毛片片免费观看| 中文字幕在线视频免费| 一级毛片aa高清免费观看| 国产天堂亚洲精品| 无码天堂va亚洲va在线va| 亚洲午夜精品一区二区麻豆| 亚洲中文字幕AV在天堂| 国产精品亚洲四区在线观看| 亚洲天堂一区二区三区| 亚洲第一成年人网站| 亚洲成a人片在线网站| 亚洲精品在线视频观看| 久久亚洲精品无码aⅴ大香| 久久亚洲日韩看片无码| 亚洲国产精品久久丫| 亚洲区精品久久一区二区三区| 亚洲ts人妖网站| 亚洲日韩国产AV无码无码精品| 亚洲国产欧美日韩精品一区二区三区 | 日本免费人成视频播放|