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

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

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

    wuxiren123

    2017年3月8日 #

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

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

    圖一

    圖二


    構(gòu)建樹

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

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

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

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

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

     

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

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

     

     

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

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

    縱向組織樹編輯

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

      

    • 條件屬性

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

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

    如果組織結(jié)構(gòu)的層級結(jié)構(gòu)不確定,即有的層級有子層,有的層級沒有子層時,其組織樹報表的實現(xiàn)方式請查看不規(guī)范組織樹報表

    • 其它設(shè)置

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

     

    • 保存與預(yù)覽

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

    橫向組織樹編輯

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

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

     

    • 條件屬性

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

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

    如果組織結(jié)構(gòu)的層級結(jié)構(gòu)不確定,即有的層級有子層,有的層級沒有子層時,其組織樹報表的實現(xiàn)方式請查看不規(guī)則組織樹報表

    • 其它設(shè)置

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

     

    • 保存與預(yù)覽

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

    posted @ 2017-04-06 15:56 喝水居然長肉 閱讀(129) | 評論 (0)編輯 收藏

    FineReport中如何自定義登錄界面

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



     

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

    自定義登錄界面

    登錄界面設(shè)置

    自定義html登錄頁面:命名為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",//單點登錄的管理平臺報表服務(wù)器  
         dataType:"jsonp",//跨域采用jsonp方式  
         data:{"fr_username":username,"fr_password":password},//獲取用戶名密碼  
         jsonp:"callback",  
         timeout:
    5000,//超時時間(單位:毫秒)  
         success:function(data) {  
                
    if (data.status === "success"
        window.location
    =data.url;//認(rèn)證成功跳轉(zhuǎn)頁面,因為ajax不支持重定向所有需要跳轉(zhuǎn)的設(shè)置 
                      //登錄成功     
                }
     else if (data.status === "fail"){  
                     alert(
    "用戶名或密碼錯誤");//登錄失?。ㄓ脩裘蛎艽a錯誤)  
                }
      
         }
    ,  
         error:
    function(){  
               alert(
    "超時或服務(wù)器其他錯誤");// 登錄失?。ǔ瑫r或服務(wù)器其他錯誤)  
         }
      
    }
    ); 
    }
      
    </script>  
    </head>  
    <body>  
    <p>請登錄</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()是主要的邏輯判斷,實現(xiàn)的是將對應(yīng)的值傳給報表服務(wù)的邏輯實現(xiàn)過程。

    調(diào)用登錄界面

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



     

    總結(jié)

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

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

    2、在login.jsp頁面head中引入finereport.js;

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

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

    若是OA系統(tǒng)或者報表系統(tǒng)和項目系統(tǒng)不再同一個服務(wù)器上,可以進行ajax跨域異步單點登錄。

    Session傳值

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

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

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

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



     

    2)刪除loginUrl屬性

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



     

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

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

    posted @ 2017-03-21 16:58 喝水居然長肉 閱讀(115) | 評論 (0)編輯 收藏

    Linux之FineBI集群部署

    在企業(yè)應(yīng)用中,通常單個計算機的配置是有限的,而企業(yè)應(yīng)用又是高并發(fā)的需求,這個時候會通過計算機集群的方式來提高并發(fā)數(shù),從而提高整體應(yīng)用服務(wù)的性能。集群是將多臺計算機作為一個整體來提供相關(guān)應(yīng)用的服務(wù)。FineBI支持多計算機服務(wù)的集群部署,通過集群部署利用有限的計算機資源來有效提高整體應(yīng)用的并發(fā)性能。本文主要介紹整體FineBI集群的思路。

    FineBI采用負(fù)載均衡集群的模式,將多臺服務(wù)器創(chuàng)建為一個集群服務(wù)器。這里碰到這幾個問題:1)web工程的存儲問題:FineBI在集群中,由于自身的問題需要多臺服務(wù)器讀取同一個web工程。因此要實現(xiàn)web工程分享。2)系統(tǒng)數(shù)據(jù)一致性:在FineBI的運行過程中,存在讀寫的操作,同時有部分的數(shù)據(jù)的配置文件要寫入數(shù)據(jù)庫。需要保證集群的情況下,系統(tǒng)數(shù)據(jù)的一致性。3)負(fù)載均衡:一方面通過負(fù)載均衡來處理session的問題,另一方面達成負(fù)載均衡的集群環(huán)境,使用代理服務(wù)器可以將請求轉(zhuǎn)發(fā)給集群內(nèi)部的服務(wù)器,可以將負(fù)載均衡和代理服務(wù)器的高速緩存技術(shù)結(jié)合在一起,提供有益的性能。4)FS平臺集群:如FineBI使用FS平臺,則FS平臺的各種配置也需要進行集群配置。

    如下圖是一個FineBI進去的架構(gòu)的案例示意圖,這種方式通過NFS文件共享來處理web工程。



     

    Web工程存儲問題

    Web工程的存儲,我們要解決的是多個服務(wù)器保證讀取同一個web工程。我們可以通過ceph做到多塊物理硬盤組件一塊邏輯硬盤,從而實現(xiàn)所有節(jié)點都是在訪問同一地址;也可以通過linux本身帶有的nfs共享文件服務(wù)來達成訪問同一web工程。無論使用哪一種方式,我們要保證:

    <!--[if !supportLists]-->1)<!--[endif]-->訪問同一web工程

    <!--[if !supportLists]-->2)<!--[endif]-->Cube存儲地址是一致的

    因為同一個web工程下,要求cube的存儲地址是一致的,因此要求cube存儲地址一定要一樣。

    而真正使用的時候,ceph的實現(xiàn)需要至少三臺計算機來實現(xiàn),而實際企業(yè)應(yīng)用中,比較少使用三臺;而nfs均可以且是linux本身的,因此使用“nfs”方案。

    系統(tǒng)數(shù)據(jù)配置

    單節(jié)點的情況下,利用緩存和通過操作系統(tǒng)的文件系統(tǒng)來保存數(shù)據(jù)的方式,在集群模式下不再合適。主要原因在于數(shù)據(jù)的一致性問題,多個節(jié)點可能進行同時讀寫,更改系統(tǒng)數(shù)據(jù),最終勢必會造成整體數(shù)據(jù)不一致。最好的解決方案是系統(tǒng)配置數(shù)據(jù)全部交給MySQL等關(guān)系型數(shù)據(jù)庫來管理。但由于這樣工程量好大,更主要的原因為許多代碼缺少維護,貿(mào)然更改可能帶來意想不到的bug。于是我們采用一種折中的做法。在集群中選出一臺幾點作為主節(jié)點,簡稱M。其余節(jié)點擔(dān)當(dāng)子節(jié)點,簡稱S。當(dāng)S上所有與更改系統(tǒng)配置相關(guān)的操作,全部發(fā)送到M上進行處理。M負(fù)責(zé)來更改系統(tǒng)狀態(tài),維護整個系統(tǒng)到底一致的狀態(tài)。S節(jié)點放棄全部的緩存數(shù)據(jù),讀取狀態(tài)的時候,不再通過讀取自身數(shù)據(jù),而是通過向M發(fā)送讀取請求,獲得M上的數(shù)據(jù)。M節(jié)點自身可以存在緩存數(shù)據(jù)。其他數(shù)據(jù)S節(jié)點與M節(jié)點時等同的,不存在從屬關(guān)系。



     

    因此按上述原由我們提供如下解決方案:

    <!--[if !supportLists]-->1)<!--[endif]-->mysql數(shù)據(jù)庫:原web工程中存在finedb的配置信息轉(zhuǎn)存到mysql數(shù)據(jù)庫中。因為finedb數(shù)據(jù)庫只能有一個連接,無法多節(jié)點同時讀取,而mysql數(shù)據(jù)庫則不存在。Logdb也需遷移;

    <!--[if !supportLists]-->2)<!--[endif]-->主子節(jié)點:我們使用主子節(jié)點的方式來配置集群,系統(tǒng)數(shù)據(jù)的更改均在主節(jié)點上進行,子節(jié)點只讀取主節(jié)點上的數(shù)據(jù);

    <!--[if !supportLists]-->3)<!--[endif]-->Zookeeper:為了保證讀寫情況下,主子節(jié)點保證數(shù)據(jù)一致性,還需要zookeeper進行通信,充當(dāng)文件鎖的功能。

    負(fù)載均衡

    在FineBI的集群環(huán)境中,我們可以使用任何支持負(fù)載均衡的服務(wù)器來完成輪發(fā)的任務(wù),并保證session粘滯。此處我們使用的是nginx反向代理,使用IP標(biāo)識輪發(fā),保證同一個用戶在同一個session。(在一個服務(wù)器一個節(jié)點的情況下,同一個IP就保證session粘滯)。

    FS平臺集群

    使用FS平臺集群插件,將FS平臺配置能夠滿足集群需求。在FS平臺集群中,F(xiàn)S平臺的所有操作都是發(fā)到主節(jié)點上來操作;子節(jié)點只是作計算服務(wù)器。

    posted @ 2017-03-20 11:30 喝水居然長肉 閱讀(141) | 評論 (0)編輯 收藏

    如何將釘釘集成到FineReport插件中

    報表服務(wù)器

    安裝釘釘管理插件后,打開報表管理平臺,管理系統(tǒng)下會增加釘釘管理節(jié)點,釘釘相關(guān)的配置管理都將會放在這個節(jié)點中去配置:

     

    同時,設(shè)置定時任務(wù)的最后一步輸出設(shè)置中,會增加推送釘釘消息:

     

    釘釘企業(yè)應(yīng)用

    管理員登錄釘釘企業(yè)號,進入微應(yīng)用設(shè)置,需要關(guān)注的信息有:

    CorpID:是企業(yè)在釘釘中的標(biāo)識,每個企業(yè)擁有一個唯一的CorpID;

    CorpSecret:是企業(yè)每個應(yīng)用的憑證密鑰

     

    •  釘釘管理

    登錄FineReport管理平臺,點擊管理系統(tǒng)>釘釘管理節(jié)點:將釘釘中的CorpID和CorpSecret分別填到釘釘企業(yè)號ID和管理組憑證密碼中,設(shè)置Token獲取路徑,可以自定義獲取的url,如果不寫則采用內(nèi)置的方式獲取,保存,如下圖:

     

    • 釘釘插件自定義token獲取

    釘釘提供的獲取token接口本身有缺陷:

    1)釘釘提供的接口,使用corpid和secret獲取token,默認(rèn)不會緩存,但是釘釘提倡做token緩存,2小時內(nèi)可以重復(fù)使用,這樣減少對釘釘服務(wù)器的訪問,以免出現(xiàn)問題;

    2)釘釘中集成多個應(yīng)用的話,如果多個應(yīng)用都會用到corpid和secret獲取token,如果某個應(yīng)用緩存了token,就會沖突

    例如:應(yīng)用a,做了緩存,第一次訪問后獲取到token1,應(yīng)用b使用會重新取token2,此時應(yīng)用a還是用的token就無法訪問了。

    針對這種情況,處理方式是所有應(yīng)用統(tǒng)一到一個地方去取token,此時需要設(shè)置自定義token的獲取地址

    在釘釘插件中,釘釘管理>基本信息>設(shè)置Token獲取路徑,可以自定義獲取的url,如果不寫則采用內(nèi)置的方式獲取

     

    Token獲取接口規(guī)則:返回json類型的數(shù)據(jù),{access_token:"xxxxx", jsapi_ticket:"xxxxx"} 

    釘釘管理后臺創(chuàng)建FineReport報表微應(yīng)用時,例如http://www.finereporthelp.com:8181/app2/ReportServer?op=fs&corpid=$CORPID$,后面要加上參數(shù)&corpid=$CORPID$,這樣后臺會獲取到cropid,然后取到釘釘userid,做單點登錄;

     

    • 釘釘用戶與報表用戶關(guān)聯(lián)

    按照釘釘提供的方法,讀取釘釘通訊錄的成員,需要的字段有uesrid,name,department進入FineReport報表管理平臺fs,點擊釘釘管理節(jié)點,除了基本信息外,增加了釘釘成員管理,點擊效果如下:

     

    表格中會自動讀取釘釘企業(yè)號通訊錄中的所有成員,并且在每次打開該頁面時刷新為最新的;默認(rèn)釘釘成員與報表用戶相同,因為大部分情況下,釘釘成員名和報表用戶名是統(tǒng)一的;

    如果您的釘釘成員名與報表用戶名是不一樣的,此時,可以取消勾選釘釘成員與報表用戶相同設(shè)置,此時報表用戶名,可以將釘釘成員與報表用戶進行關(guān)聯(lián),如下圖:

     

    • 單點登錄

    釘釘提供免登服務(wù),與微信類似,通過code可以獲取當(dāng)前取號的userid,獲取到userid后,通過關(guān)聯(lián)關(guān)系自動登錄報表后臺

    • 消息推送

    開發(fā)服務(wù)器可以主動的發(fā)送消息給企業(yè)成員,比如使用FineReport定時器生成報表后,發(fā)送消息給相應(yīng)的人員進行查看。進入FineReport管理平臺,添加定時任務(wù):

     

     

    到輸出設(shè)置這步,比如我們將定時生成的結(jié)果掛在其他這個目錄下面,并且命名為釘釘文檔測試:

     

    通知與存檔選擇推送釘釘消息,企業(yè)應(yīng)用(AgentID)需要根據(jù)釘釘管理里的進行填寫,例如下設(shè)置,這樣定時任務(wù)結(jié)束后,這個釘釘成員可以收到消息

     

    定時生成結(jié)果的文件名:對應(yīng)發(fā)送消息的標(biāo)題名

    企業(yè)應(yīng)用AgentID:發(fā)消息至哪個應(yīng)用

    釘釘用戶:發(fā)消息給哪些成員,下拉框中會自動讀取釘釘通訊錄中的所有成員,多個成員之間用|分割,比如Jane|Saber

    部門ID:發(fā)消息給某個部門的所有成員,該屬性與釘釘用戶是并的關(guān)系,不同部門之間也用|分割

    消息內(nèi)容:定義消息的正文內(nèi)容

    定時結(jié)果訪問連接:勾選的話會在消息正文最后加上定時生成的結(jié)果連接,點擊后就可以直接打開定時結(jié)果;不選的話則只發(fā)送純文本消息。

    定時任務(wù)設(shè)置好后,比如任務(wù)每天都會執(zhí)行,每次執(zhí)行后就會推送消息給對應(yīng)的成員,效果如下:

     

    點擊連接,就可以看到定時生成的結(jié)果。

    posted @ 2017-03-14 11:21 喝水居然長肉 閱讀(168) | 評論 (0)編輯 收藏

    JS實現(xiàn)點擊參數(shù)面板按鈕顯示或隱藏數(shù)據(jù)

    當(dāng)報表中列出數(shù)據(jù)太多時,想通過顯示按鈕隱藏明細(xì)數(shù)據(jù)只顯示統(tǒng)計數(shù)據(jù)。如下圖示例,那么該如何實現(xiàn)呢?本文以FineReport為例,來講述JS如何實現(xiàn)點擊參數(shù)面板按鈕顯示或隱藏數(shù)據(jù)。


     

    打開報表

    在參數(shù)面板添加一個標(biāo)簽控件,控件名為lable,設(shè)置標(biāo)簽控件不可見,控件值為“顯示”。


     

    在參數(shù)面板添加一個按鈕控件,控件名為button,控件值為“只顯示合計數(shù)據(jù)”,并添加點擊事件。


     

    編輯點擊事件,添加下面的JavaScript代碼:

    /*獲取隱藏的標(biāo)簽控件的值*/
    var label= this.options.form.getWidgetByName("label").getValue();

    /*判斷標(biāo)簽控件的值*/
    if(label=='顯示')
    {
        /*當(dāng)標(biāo)簽控件的值為顯示時,則改為隱藏,并修改按鈕名稱為顯示所有數(shù)據(jù)*/
        this.options.form.getWidgetByName("label").setValue("隱藏");
        this.options.form.getWidgetByName("button").setValue("顯示所有數(shù)據(jù)");
    }
    else
    {
        /*當(dāng)標(biāo)簽控件的值不為顯示時,則改為顯示,并修改按鈕名稱為只顯示合計數(shù)據(jù)*/
        this.options.form.getWidgetByName("label").setValue("顯示");        
        this.options.form.getWidgetByName("button").setValue("只顯示合計數(shù)據(jù)");
    }

    /*執(zhí)行查詢*/
    _g().parameterCommit();

    點擊參數(shù)面板空白處,將“點擊查詢前不顯示報表內(nèi)容”屬性的勾去掉。


     

    回到報表設(shè)計界面,右鍵B3單元格,添加條件屬性,設(shè)置行高為0毫米,添加公式條件為$label = '隱藏'。


     

    保存模板,點擊分頁預(yù)覽即可看到上圖的效果。

    posted @ 2017-03-08 10:36 喝水居然長肉 閱讀(217) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲人成黄网在线观看| 免费一级毛片女人图片| 16女性下面无遮挡免费| 久久午夜夜伦鲁鲁片免费无码| aa级女人大片喷水视频免费| eeuss免费影院| 国产免费黄色无码视频 | 亚洲AV永久无码精品一区二区国产| 夭天干天天做天天免费看| 好吊妞视频免费视频| 日韩在线免费看网站| 免费一区二区视频| 亚洲国产专区一区| 亚洲高清无码专区视频| 国产成人亚洲精品91专区手机| 久久精品亚洲福利| 亚洲AV日韩精品久久久久| 亚洲色图视频在线观看| 成人亚洲国产va天堂| 亚洲av无码专区亚洲av不卡| 污网站免费在线观看| 中文字幕免费视频精品一| 久草福利资源网站免费| 免费专区丝袜脚调教视频| 成年美女黄网站18禁免费| 四虎永久在线精品视频免费观看| 婷婷亚洲天堂影院| 亚洲成Av人片乱码色午夜| 亚洲午夜电影在线观看高清| 亚洲狠狠婷婷综合久久| 高清免费久久午夜精品| 久热免费在线视频| 最近中文字幕免费mv视频7| 一区二区三区亚洲视频| 亚洲爆乳无码专区| 亚洲粉嫩美白在线| 九九久久国产精品免费热6| 嫩草在线视频www免费观看 | av网站免费线看| 午夜免费福利小电影| 亚洲特级aaaaaa毛片|