erp管理系統軟件

erp項目實施方案-第30章 外掛程序

作者: admin 來源: erp系統 日期: 2021-07-21 14:19:55 人氣: - 評論: 0

30.1 外掛程序介紹

外掛程序作用:擴充ERP功能。滿足企業的行業化、個性化需求。

外掛程序接口特點:

? 無需系統程序源碼。外掛程序集成到ERP中,并且會把登錄的用戶ID傳遞給外掛程序;

? 多種編程語言支持??捎?/span>.NET平臺任一編程語言,只需指定文件名、類名、方法名即可;

? 外掛程序分門別類。所有外掛程序放置目錄固定,都在ERP根目錄下的“外掛程序”子目錄下,并且子目錄與子系統一一對應,比如:“W1.采購系統”外掛程序的目錄如下:

ERP根目錄\外掛程序\W1\

外掛程序集成在幣加德ERP的菜單欄中,如圖30-1。

 

30-1 外掛程序接口及系統集成位置

30.2 外掛程序實戰

本節使用Visual Studio 2013(速成版、社區版、專業版、高級版、旗艦版都可以,前面2個版本是免費的)來開發外掛程序,如果你使用的是其他版本的Visual Studio,也可以參照學習,大同小異。本節先用完整詳細的步驟介紹一個最簡單的外掛程序的開發,通過此外掛的學習,可以完全掌握外掛的開發方法。然后用較簡潔的步驟介紹如何開發報表外掛,這個案例很實用,企業的程序開發人員或ERP代理服務商經常需要從企業ERP中取數,開發分析報表或開發定制格式的打印單據。

30.2.1 一個簡單的外掛程序

1)編寫外掛程序

①打開Visual Studio 2013,點【文件】/【新建】/【項目】,如圖30-2。

 

30-2 新建項目

“新建項目”窗口,選擇【Visual C#】/【Windows 窗體應用程序】,名稱為“W1”,如圖30-3。

 

30-3 選擇Windows 窗體應用程序

“工具箱”中拖一個Label到窗體設計界面,如圖30-4。

 

30-4 拖一個標簽到設計面板

雙擊設計面板,打開代碼編輯窗口,輸入以下代碼,如圖30-5

public string _userID = "";     //登錄用戶ID

public void ShowMe(string userID, string serverIP, string dbName, string saPassword, string curDir)//鉤子方法

{

    _userID = userID;           //傳遞用戶登錄ID

    label1.Text = "登錄用戶ID:" + _userID;//標簽顯示

    base.Show();//顯示窗體

}

 

30-5 寫程序代碼

提醒:不管寫什么類型的外掛程序,都需要上面的代碼,相當于ERP與外掛程序之間約定的一種協議,目的在于把ERP系統當前的登錄用戶ID傳遞給外掛程序,并打開外掛程序的主窗體。除此之外,外掛程序與普通的Windows窗體程序沒有任何區別。

外掛程序可以查詢ERP的后臺數據表,但千萬別修改(刪除)數據,這是一個基本的原則。否則出錯后無法核查是ERP的問題,還是外掛程序的問題。

鼠標右鍵項目名稱,在上下文菜單中選【屬性】,在打開的窗口中,“目標框架”選擇“.NET Framework 2.0”(為了兼容老電腦),“輸出類型”選“類庫”(如果選“Windows應用程序”,用戶可以越過權限設置,直接運行外掛程序),如圖30-6。

 

30-6 設置項目屬性

再次點【啟動】,系統會報錯(因上一步中改變了目標框架),修正錯誤,如圖30-7

 

30-7 修改錯誤

再次點【啟動】,系統會彈出無法直接啟動類庫項目的錯誤,這正是所要的,如圖30-8。

 

30-8 彈出無法直接啟動類庫項目的錯誤

打開外掛程序的輸出目錄(參見“圖30-3 選擇Windows 窗體應用程序”選定的位置),并把外掛程序復制到ERP的外掛程序目錄,如圖30-9。

 

 

30-9 拷貝外掛程序至ERP外掛目錄

2)接口定義

打開【系統設置】/【外掛程序接口】,選擇子系統,配置外掛程序接口參數,測試是否可以正常打開外掛程序,最后點【保存并應用】,如圖30-10。

外掛程序接口參數:

? 模塊代碼:外掛子系統代碼 + 3位流水碼。

? 模塊名稱:最簡潔的文字介紹外掛程序。“模塊代碼、模板名稱”會顯示在ERP系統的外掛菜單中,參見“30-1 外掛程序接口及系統集成位置”。

? 文件名稱:不含路徑,含擴展名。

? 類名稱:類名稱必須是“命名空間.類名”。

? 方法名稱:方法名稱必須是公有的,否則無法正常調用。

? 備注:較詳盡的文字介紹外掛程序。

 

30-10 外掛程序接口

提醒:外掛程序 + ERP數據字典 = 無限擴展 ERP 功能!

(無需“幣加德ERP”源代碼)

 

30.2.2 開發復雜的報表外掛(使用VS自帶的.rdlc報表)

建議使用Visual Studio 2013專業版、高級版或旗艦版,不要使用速成版或社區版(沒有集成報表開發功能)。最終效果如圖30-11。

 

30-11 復雜報表外掛最終效果

此復雜報表外掛具有如下特點:

? 幣加德ERP自動把當前登錄的用戶ID、數據庫服務器IP、賬套對應的后臺數據庫名稱、登錄賬號、登錄密碼傳遞給外掛程序,所以不僅僅可以開發報表外掛,充滿想象;

? 無需幣加德ERP的源代碼;

? 外掛可以使用不同的開發語言和平臺(幣加德ERP使用C#語言,.NET 2.0),外掛使用C#語言,.NET 3.5(不可以使用.NET 2.0,因為沒有報表功能;也不可以使用.NET 4.0及以上,因為架構與.NET 2.0不兼容??梢允褂肰B.NET語言);

? 外掛程序需要引用幣加德ERP的任何.dll文件,外掛程序可以獨立運行,為了防止用戶直接運行,可以編譯成.dll動態鏈接庫文件,由ERP調用;

? 外掛程序的代碼量非常小,基礎框架已經搭好,只需要依葫蘆畫瓢,重點在于取數SQL語句和報表格式調整(這是個細致且費時間的活兒);

? 此報表外掛案例,包含了報表設計中常用的功能:頁面大小的設置、頁頭、頁尾、分組匯總、每頁重復顯示列頭、公司LOGO、簽章透明、分頁等,報表加入圖片的功能很容易擴展到加入條碼、二維碼。報表可以導出到Excel/PDF/Word。

1準備SQL查詢語句。按前面“第29章 自定義報表/29.1 SQL命令行工具”介紹的方法,準備查詢SQL語句,如圖30-12。

 

30-12 使用SQL命令行工具準備SQL查詢語句

2寫外掛程序。

按上一節介紹的方法建立項目W2,在W2上右鍵鼠標,在彈出菜單中選【添加】/【新建項】,如圖30-13。

 

30-13 添加數據集(默認名稱不要更改)

在打開的DataSet1.xsd面板中,右鍵鼠標,如30-14。

 

30-14 添加TableAdapter

在彈出的“添加連接”窗口,錄入數據庫服務器相關信息,如30-15。

? 服務器名。精簡數據庫如圖進行填寫,如果是企業版數據庫,請填寫“.”(點表示本地,如果不是遠程連接到ERP服務器寫外掛程序,則需要把點改為ERP服務器的IP地址);

? 登錄到服務器。精簡數據庫的密碼是“17312319729@bijiade.cn”,企業版數據庫的密碼是在系統安裝配置的時候自己設置的。

? 連接到數據庫。選bdERP開頭的任意一個就行,外掛程序運行時會根據賬套自動切換。

 

30-15 連接數據庫

根據TableAdapter配置向導進行配置,如30-16~圖30-18。

 

30-16 不要在連接字符串中包含敏感數據

 

30-17 默認下一步

 

30-18 默認下一步

粘貼準備好的查詢SQL語句,點【完成】,如圖30-19。

 

30-19 粘貼準備好的查詢SQL語句

執行查詢SQL語句所得的數據表字段,如圖30-20。

 

30-20 查詢所得的數據表字段

W2上右鍵鼠標,在彈出菜單中選【添加】/【新建項】,如圖30-21

 

30-21 添加報表文件(默認名稱不要更改)

在打開的報表文件界面,右鍵“數據集”,選擇剛剛配置的數據集,如圖30-22。

 

30-22 選擇數據集

在報表設計界面,右鍵鼠標,可以插入文本框等等,也可以把左側的數據集下面的字段拖放到報表設計界面,如圖30-23

 

30-23 報表設計

報表設計是最繁瑣最費時間的事情,最終設計結果,如圖30-24。

 

30-24 報表設計結果

打開Form1窗體,從工具箱拖放一個ReportViewer報表查看器到窗體,如圖30-25。

 

30-25 把報表查看器添加到窗體

雙擊Form1窗體,如圖30-26,清空窗體中所有的代碼,并把下面的代碼復制粘貼進去。

 

30-26 Form1代碼窗口

using Microsoft.Reporting.WinForms;

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace W2

{

    public partial class Form1 : Form

    {

        public string _userID = "";              //登錄用戶ID

        public string _serverIP = @".\_MSSQL2005"; //服務器IP(如果是SQL企業版,則為“.”)

        public string _dbName = "bdERP";                      //數據庫名稱

        public string _saPassword = "17312319729@bijiade.cn"; //sa密碼

public string _curDir = @"..\..\";                    //當前目錄

 

        public Form1(){ InitializeComponent(); }

 

        public void ShowMe(string userID, string serverIP, string dbName, string saPassword, string curDir)//鉤子方法

        {

            _userID = userID;           //傳遞用戶登錄ID

            _serverIP = serverIP;       //服務器IP

            _dbName = dbName;           //數據庫名稱

            _saPassword = saPassword;   //sa密碼

_curDir = curDir;           //當前目錄

MessageBox.Show("用戶ID:" + _userID + "\n數據庫服務器IP:" + _serverIP + "\n數據庫名稱:" + _dbName + "\nsa密碼:" + _saPassword + "\n當前目錄:" + _curDir, "提示");

            base.Show();//顯示窗體

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

            //1.SQL查詢語句

            string sql = @"

SELECT

a.c010 單號, a.c020 日期, a.c200 銷售類型, a.c210 客戶單號,

a.c030 客戶代碼, c.c020 客戶名稱,

a.c090 聯系人, a.c091 聯系電話,

a.c070 交貨方式, a.c080 交貨地點,  a.c100 備注, a.c110 業務員,

b.c020 項次, b.c029 客戶料號, b.c030 貨品代碼,

b.c050 品名規格, b.c060 單位, b.c069 含稅, b.c070 單價, b.c071 含稅單價,

b.c080 數量, b.c090 金額, b.c100 稅率, b.c101 稅額, b.c110 價稅合計,

b.c150 摘要

FROM SAL020 a

LEFT JOIN SAL021 b ON b.c010=a.c010

LEFT JOIN BAS010 c ON c.c010=a.c030

WHERE 1=1 AND a.c061<>'Y'

AND a.c010='XCK-21060001'

";

            //2.報表文件名如果報表文件與外掛程序在同一目錄,直接寫報表名稱即可

            string reportName = _curDir + @"Report1.rdlc";

 

            //3.綁定

            Bind(sql, reportName);

        }

        /// <summary>

        /// 工具方法,執行SQL查詢獲取數據,并綁定到指定報表。

        /// </summary>

        /// <param name="sql">SQL查詢語句</param>

        /// <param name="reportName">報表文件名</param>

        private void Bind(string sql, string reportName)

        {

            DataTable data = new DataTable();                           //數據

            try

            {

                //執行SQL查詢獲取數據

                string connStr = "Data Source=" + _serverIP + @";Initial Catalog=" + _dbName + ";Persist Security Info=True;" +

                        "User ID=sa;Password=" + _saPassword;

                using (SqlConnection conn = new SqlConnection())

                {

                    conn.ConnectionString = connStr;

                    conn.Open();                      //打開數據庫連接

                    SqlDataAdapter adapt = new SqlDataAdapter(sql, conn);//實例化適配器                

                    adapt.Fill(data);                                    //獲取數據

                    conn.Close();                                       //關閉數據庫連接

                }

                //綁定到指定報表

                ReportDataSource rds = new ReportDataSource();

                rds.Name = "DataSet1";                  //要與數據集屬性數據集名稱要一致

                rds.Value = data;

                this.reportViewer1.LocalReport.DataSources.Clear();

                this.reportViewer1.LocalReport.DataSources.Add(rds);

                this.reportViewer1.LocalReport.ReportPath = reportName;  //報表文件名  

                this.reportViewer1.RefreshReport();

            }

            catch (Exception ex) { MessageBox.Show("出錯了:\n" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); }

        }

    }

}

以上代碼已經在注釋中進行了講解,看不懂也沒有關系,只要依葫蘆畫瓢,要改2個地方(上面代碼已說明):其一是SQL查詢語句;其二是報表文件名稱(注意路徑)。如圖30-27。

 

30-27 代碼關鍵點(SQL查詢語句、報表文件名)

3配置外掛程序。

鼠標右鍵W2,在彈出菜單中選【屬性】,目標框架選.NET 3.5,如圖30-28。

 

30-28 .NET Framework 3.5

提醒:這里輸出類型保持默認,為了便于測試。測試正常后,可以改為“類庫”。

拷貝外掛程序到ERP的外掛目錄下,并確認運行正常,如圖30-29。

 

30-29 拷貝外掛程序到ERP的外掛目錄下

打開【系統設置】/【外掛程序接口】,選擇子系統,配置外掛程序接口參數,測試是否可以正常打開外掛程序,最后點【保存并應用】,如圖30-30。

 

30-30 外掛程序接口

4最后總結。

報表外掛的意義。幣加德ERP系統的單據打印都是基于Excel的(參見“第23章 單據打印格式設計”),一般情況下無需開發.rdlc報表,除非現有報表滿足不了業務需求。這里以開發.rdlc報表為例,不僅僅為了說明報表開發本身,而且可以學習到如何集成ERP中的用戶ID、賬套數據庫等,無需另外配置數據庫連接和建立賬戶體系。

幣加德ERP外掛接口規范。會傳遞如下這些參數給外掛程序,外掛程序可以不使用,或者部分使用,但是不能缺少這些參數,順序也不能改變。

/// <summary>

/// 鉤子方法。

/// </summary>

/// <param name="userID">用戶登錄ID</param>

/// <param name="serverIP">服務器IP</param>

/// <param name="dbName">數據庫名稱</param>

/// <param name="saPassword">sa密碼</param>

/// <param name="curDir">當前目錄</param>

public void ShowMe(string userID, string serverIP, string dbName, string saPassword, string curDir)//鉤子方法

{

    _userID = userID;           //傳遞用戶登錄ID

    label1.Text = "登錄用戶ID:" + _userID;//標簽顯示

    base.Show();//顯示窗體

}

使用Visual Studio 2013開發.rdlc報表的關鍵是準備SQL查詢語句、報表設計(最費時間)。報表設計有如下特點(注意點),如30-31。

1)拖放設計。數據字段按照SQL查詢語句的順序列示,直接拖放進行報表設計,簡單直觀。

2)設計時可以調整紙張大小。報表默認大小是A4縱向(可以更改),寬度不能超過“紙張寬度+邊距”,否則打印預覽時多出了很多空白頁(如果拉窄了寬度后,打印預覽時還是有空白頁,則需要把“報表”的“ConsumeContainerWhitesapce”屬性值改為True,此屬性意思“指使在容器中的內容增長時,是占用還是保留容器中的最小空白。只要內容右側和下方的空白受到影響。”)??v向不用留空間,在打印時根據數據行數自動拉高。

3)數據表是一個整體。當在設計時插入表格,表格是一個整體,但是列頭在多頁時重復顯示功能時不時卡殼(tablixTablix2”具有無效的 TablixMember。TablixColumnHierarchy 中所有 TablixMember 元素的 RepeatOnNewPage 屬性必須設置為 false。),所以建議把標題欄刪除,手工增加文本框代替,放在頁眉處,這樣每頁都會顯示。

4)數據區可多級分組。報表的核心在于數據區,可以分組匯總等。

5)頁眉/頁腳。頁腳可以插入頁碼,加上印章(透明處理參見第23章)等。

提醒:如果報表外掛程序在集成到ERP前運行得好好的,集成后出錯,最大的可能性有2種:其一如果提示“此程序集的運行時比當前加載的運行時新,無法加載此程序集”,則是因為選錯了.NET版本(參見“30-28 .NET Framework 3.5”);其二如果報表無法顯示,則是因為報表路徑錯了,或者報表文件Report1.rdlc沒有和外掛程序一起復制到ERP的外掛程序目錄中。

 

30-31 報表設計特點(注意點)

 

30-32 “報表”的“ConsumeContainerWhitesapce”屬性值改為True


分享到:


發表評論
更多 網友評論0 條評論)
暫無評論

© 2021-2035 蘇州幣加德軟件研發有限公司
聯系電話/微信號:173 1231 9729 陳生

蘇ICP備2022028458號-2    回到頂部
常熟ERP,常熟ERP軟件,常熟ERP軟件開發,常熟ERP量身定制

欧美一级久久久久久久久大| 精品一区二区在线观看视频| 欧美日韩国产免费观看视频| 午夜国产在线视频| 欧美三级日韩三级国产三级| 黄色欧美日韩| 欧美 日韩 国产在线| 欧美日韩日本视频| 欧美亚洲国产日韩2020| 亚洲综合欧美在线| 午夜少妇久久久久久久久| 久久精品久久精品国产大片| 国产欧亚日韩视频| 中文字幕五月天| 91亚洲欧美| 日韩精品在线免费播放| 亚洲美女视频一区| 国产在线拍偷自揄拍精品| 国产一区深夜福利| 国产黄色一级片| 欧美一级久久| 日韩.欧美.亚洲| 一级片在线免费看| 欧美高清一区| 日韩亚洲欧美中文在线| 成片免费观看| 久久精品女人| 二区视频在线观看| 国产高清视频一区二区| 欧美日韩精品不卡| 91精品国产经典在线观看| 91精品国产综合久久福利| 中文字幕在线看精品乱码| 亚洲黄在线观看| 国产免费永久在线观看| 亚洲成人7777| 丰满少妇一区| 91www成人久久| 91精品国产91| 中文字幕亚洲在| 日韩网站中文字幕| 久草中文在线观看| 日韩一级免费在线观看| 久久久99久久| 国产综合成人久久大片91| 国产黄在线看| 男人的天堂网av| 欧美中文字幕视频在线观看 | 精品全国在线一区二区| 91精品国产综合久久久久久漫画| 欧美日韩一二三四| 国产激情在线观看| 国产 欧美 在线| 欧美日韩免费不卡视频一区二区三区| 欧美一卡2卡3卡4卡| 欧美日韩第一区日日骚| 中文字幕欧美亚洲| 91精品国产综合久久香蕉最新版| 国产h片在线观看| www.狠狠| 91精品国产自产在线丝袜啪| 精品日本视频| 日韩精品在线看| 国产欧美日韩不卡免费| 91精品国产丝袜白色高跟鞋| 欧美三级日韩三级| 中文字幕在线观看欧美| 欧美乱大交xxxxx另类| 最新中文字幕在线| 日韩国产在线不卡视频| 国产一区在线精品| 日韩专区中文字幕| 亚洲小说春色综合另类网蜜桃| 国产在线黄色| 精品视频—区二区三区免费| 欧美中文字幕在线视频| 国产91久久久久| 中文在线不卡视频| 欧美成人二区| 日韩在线视频一区二区三区| 中文字幕精品在线播放| 中文字幕精品一区二| 欧美在线观看视频一区| 精品国产99久久久久久| 欧美日韩精品中文字幕| 精品国产网站在线观看| 国产一级一片免费播放| 欧美亚洲国产日韩2020| 欧美日韩在线观看首页| 国产成人精品综合久久久| 91精品久久久久久久久久| 在线欧美一级视频| 精品久久久91| 欧美日韩亚洲91| 国产一级视频| 欧美久久在线观看| 欧美日韩一二三| 中文在线视频观看| 午夜国产在线视频| 亚洲免费视频一区| 欧美日韩中文字幕在线| 日韩精品一级| 亚洲深夜福利| 国产免费一级| 韩日中文字幕第一页| 国产绿帽一区二区三区| 91精品久久久久久久91蜜桃| 国产美女主播视频一区| 精品日本视频| 久久99蜜桃精品| 精品视频123区在线观看| 日韩国产欧美| 青青国产91久久久久久| 精品九九久久| 亚洲免费福利视频| 午夜影院在线观看欧美| 欧美三级日韩在线| 欧美在线视频第一页| 黄色片网站在线| 免费看黄资源大全高清| 中文字幕 欧美日韩| 亚洲国产综合久久| 欧美日韩精品区| 综合图区亚洲白拍在线 | 国产黄色一区| 欧美91精品| 日韩国产在线观看一区| 精品国产乱码久久久久久蜜臀 | 日韩中文字幕在线观看视频| 久久视频免费看| 精品免费久久久| 国产91大片| 国产网站欧美日韩免费精品在线观看 | 国产h片在线观看| 日韩不卡一二三区| www.eeuss影院| 精品av中文字幕在线毛片| 久久久久久99精品| 最近中文字幕日韩精品| 国产在线二区| 成人欧美亚洲| 亚洲专区一区| 亚洲综合在线视频| 91精品国产91久久| 99综合精品久久| 久久久久久99精品| 国产99在线|亚洲| 国产 欧美在线| 午夜黄色小视频| 精品福利一区二区三区| 日本不卡高清视频一区| 在线中文免费视频| 欧美日韩精品免费在线观看视频| 久久久精品网| 欧美婷婷久久| 精品视频—区二区三区免费| 中文字幕欧美人妻精品一区蜜臀| 日韩精品在线免费观看视频| 中文在线第一页| 欧美日韩国产一中文字不卡| 亚洲福利一区二区三区| 日韩三级精品| 日韩视频在线免费播放| 国产丝袜一区| 亚洲羞羞网站| 99视频在线看| 热久久精品国产| 亚洲一区精品在线| 在线观看一区日韩| 精品国产1区2区3区| 91亚洲国产| 国产乱码午夜在线视频| 中文字幕国产欧美| 精品在线91| 快she精品国产999| 久久久精品国产免费观看同学| 久久视频在线免费观看| 日韩一二三四区| 国产午夜精品视频| av一区二区高清| 国产黄色片大全| 久久中文免费视频| 国产三级第一页| 国产在成人精品线拍偷自揄拍| 欧美日韩高清不卡| 亚洲va韩国va欧美va精品| 久久久精品国产99久久精品芒果| 精品福利二区三区| 亚洲欧洲综合另类| 精品日韩欧美| 一区二区日韩视频| 91精品国产综合久久久蜜臀粉嫩 | 久久电影国产免费久久电影| 亚洲欧美伊人| 影音先锋一区二区资源站| 91极品视频在线观看| 亚洲福利在线看| 国产午夜精品全部视频播放| 91久久视频| 日本黄色一区二区| 日韩欧美99| 亚洲久草视频| 欧美日韩精品高清| 国产欧美日韩精品在线观看| 欧美日韩在线观看一区| 国产天堂素人系列在线视频| 日韩a一区二区| 欧美日韩精品免费| 日韩精品中文字幕第1页| 久久久99免费| √新版天堂资源在线资源| 国产欧美日韩亚洲| 日韩视频不卡中文| 久久精品不卡| 在线国产99| 欧美日韩国产区| 91精品国产91久久久久青草| 国产超级va在线视频| 日韩欧美一二三| 亚洲狠狠婷婷综合久久久久图片| 高清在线一区| www.老鸭窝.com| 精品国产乱码一区二区| 中文字幕亚洲区| 国产不卡一区| 亚洲专区一区| 日韩一级精品| 一级片在线免费看| 日韩中文字幕观看| 国产99对白在线播放| 91精品国产综合久久久久久漫画 | 欧美日韩精品中文字幕| 成年人看的羞羞网站| 午夜精品免费视频| www日韩在线观看| 国产高清不卡av| 欧美日韩国产中文| 欧美日韩在线不卡一区| 欧美三级日本三级少妇99| 中文字幕在线精品| 91精品国产综合久久精品| 亚洲一区精品电影| 国产黄色网页| 精品一二线国产| 欧美在线日韩精品| 国产不卡在线| 日韩精品在线视频观看| 精品日韩视频在线观看| 91精品国产高清91久久久久久| 国产欧美日韩视频| 国产一卡2卡3卡4卡网站免费| 亚洲小说春色综合另类网蜜桃| 另类专区欧美| 欧美日韩中文字幕综合视频| 久久精品黄色片| 国产欧美一级| 国产欧美 在线欧美| 亚洲福利精品| 欧美专区中文字幕| 不卡一区2区| 欧美日韩国产一级片| 天堂√8在线中文| 国产欧美日韩最新| 日韩视频精品在线观看| 91精品国产丝袜白色高跟鞋| www中文字幕| 亚洲第一精品在线| 中文字幕伊人| 国产在线观看91| 中文字幕亚洲一区在线观看| 国产欧美日韩亚洲| 亚洲福利在线看| 久艹在线视频| 欧美日韩中文字幕一区| 一区在线视频观看| 免费高清特黄a大片| 欧美日韩国产高清一区| 日韩在线a电影| 欧美 日韩 综合| 日韩区欧美区| 天天摸日日摸狠狠添| 欧美三级日韩三级| 日韩av一区在线| 精品视频久久| 精品国产99| 国产高清精品二区| 伊人www22综合色| 亚洲图片小说综合| 欧美日韩在线视频免费观看 | 国产劲爆久久| 亚洲国产福利视频| 欧美 日韩 国产在线观看| 久久99精品久久久久婷婷| 日韩精品免费观看视频| 成人久久久久| 欧美国产三级| 国产欧美自拍一区| 高清日韩中文字幕| 一区二区三区在线播放欧美| 日韩欧美国产午夜精品| 日韩专区视频网站| 激情五月综合| 日韩中文字幕视频网| 日韩av二区| 亚洲欧美中文字幕在线一区| 中文字幕精品在线| 欧美一级欧美三级在线观看| 欧美亚洲视频在线看网址| 91久久精品国产91性色69| 国产黄色在线免费观看| 久久蜜桃精品| 一区二区高清在线| 久久精品日韩无码| 欧美日韩第一| 亚洲电影中文字幕在线观看| 国产欧美久久久精品影院| 精品国产1区2区3区| 一区二区三区中文字幕在线观看| 精品久久久视频| 欧美变态tickling挠脚心| 国产不卡一区| 91精品国产91久久久久久久久| 国产欧美日韩中文字幕| 精品极品三级久久久久| 国产一区久久久| 91精品国产自产| 中文国产字幕在线观看| 在线免费91| 欧美三级三级三级爽爽爽| 在线中文字幕视频| 日韩中文字幕国产| 91精品在线视频观看| 最新中文在线视频| 国产成人一二三区| 91欧美日韩| 久久精品黄色片| 亚洲成在线观看| 亚洲成av人片一区二区密柚| 欧洲精品在线视频| 久久精品网站免费观看| 黄色在线播放网站| 99在线国产| 国产区高清在线| 日本黄色一区二区| 亚洲一级网站| 伊人永久在线| 中文字幕在线视频网| 中文字幕 亚洲一区| 欧洲精品久久久| 欧美专区中文字幕| 欧美 日韩 国产在线观看| 91精品免费观看| 色猫猫国产区一区二在线视频| 99热最新网址| 天堂在线中文| 欧美高清一区| 精品在线网站观看| 欧美精品一区二区三区在线播放| 中文字幕2020第一页| 不卡在线视频| 亚洲男女av一区二区| 欧美日韩91| 欧美日韩国产综合视频在线观看| 国产在线视频一区二区| 国产在线不卡一区| 一区二区在线高清视频| 亚洲人成欧美中文字幕| 久久久精品国产免费观看同学| 日韩欧中文字幕| 91精品在线看V| 刘玥91精选国产在线观看| 中文字幕线观看| 日韩福利视频导航| 不卡视频一区二区三区| 人成在线免费视频| 精品无人国产偷自产在线| 国产又粗又猛又爽又黄91精品| 久久99久久久欧美国产| 91久久精品国产91性色69| 色国产在线视频| 日韩欧美一二三| 狠狠色综合色区| 日韩精品视频在线免费观看 | 欧美日韩午夜在线视频| 欧美日韩色综合| 欧美国产综合视频| 久久久精品日韩| 欧洲精品在线视频| 亚洲深夜福利| 中文字幕五月天| 一区二区三区免费看视频 | 国产三级免费观看| 中文字幕日韩免费视频| 韩国v欧美v日本v亚洲| 深夜福利亚洲| 国产在线二区| 日韩在线视频免费观看| 亚洲日本欧美日韩高观看| 国产欧美 在线欧美| 日韩欧美在线视频|