精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于React/Vue搭建一個通用的表單管理配置平臺

開發 前端
由于實現該案例還是有一定復雜度的,筆者沒有將所有組件都一一寫出來,希望為大家提供一個思考空間,后續筆者將會把該平臺整合到筆者的開源CMS系統中,供大家學習使用。有關nodejs部分的內容,由于筆者后期會陸續整理,如果有其他疑問,可以和筆者多交流。

前言

熟悉我的朋友可能會知道,我一向是不寫熱點的。為什么不寫呢?是因為我不關注熱點嗎?其實也不是。有些事件我還是很關注的,也確實有不少想法和觀點。但我一直奉行一個原則,就是:要做有生命力的內容。

這篇文章是一篇應用性極強的文章,我們通過一個實際的應用場景,去解決某一類的問題,提供一種或者幾種解決方案,來探索技術的魅力。接下來筆者主要分析表單定制平臺的實現思路和技術方案,來實現一個類似于金數據或者問卷星一樣的表單配置平臺,大家也可以基于此方案,擴展出功能更加強大的可視化平臺。

為什么要做一個這樣的平臺呢?一方面是因為筆者多年來一直服務于B端產品,對于動態表單以及配置化表單有一定的項目積累,并且深知配置化表單的價值所在。舉一個很傳統的B端表單配置化的例子:傳統2B企業在提供saas服務時,為了滿足不同企業的定制化需求,往往會給企業客戶提供定制化或者自由配置的功能,如下圖:

圖片圖片

對于saas系統而言,軟件即服務,在提供基礎服務的同時,同樣要滿足用戶個性化需求,所以傳統的saas軟件提供商往往會提供給客戶自由配置的空間,這種自由配置的橋梁就是通過表單,舉一個簡單的例子:

圖片圖片

通過這種方法就可以定制不同風格的企業產品,這里只是舉了個比較簡單的例子,往往實際項目中會更加復雜,可能會有幾十個配置項,當然這種模式是比較傳統的配置化方案,也僅僅是saas軟件提供的很小的一個服務模塊。目前主流的做法是采用可視化方案,而且國內也有非常成熟的方案,但基本的思想是一致的,只不過后者的體驗更好,操作難度更低。

筆者簡單介紹一下saas,方便大家更容易理解其模式:

saas(軟件即服務)是一種云計算產品,為用戶提供對供應商云端軟件的訪問。用戶無需在其本地設備上安裝應用。相反,應用駐留在遠程云網絡中,通過 Web 或 API 進行訪問。通過應用,用戶可以存儲和分析數據,并可進行項目協作。

類似的云計算產品也有很多,比如Paas(平臺即服務),Iaas(基礎架構即服務)等,感興趣的朋友可以學習了解一下。

以上介紹更多的是為了讓大家理解筆者設計這套平臺的基本背景,我們還可以舉個更實際的例子就是金數據或者問卷星的表單配置模式,用戶可以在管理后臺定制自己的表單,并生成一個可訪問的鏈接來向目標用戶發放問卷,填寫信息,收集信息,最后實現數據分析的目的。

本文介紹的表單定制平臺,也同樣支持表單管理,表單數據分析, 表單數據收集, 表單定制等功能, 筆者將采用比較熟悉的技術棧react以及第三方ui庫antd4.0來開發, 后端采用node + koa來設計路由接口.

設計思路

圖片圖片

實現效果與分析

1. 表單定制管理列表

圖片圖片

管理列表主要用來查看我們配置的表單模板,分析不同表單模板收集的數據,對表單模板進行編輯刪除等操作.

2. 表單定制頁面

圖片圖片

圖片圖片

由上圖可知表單定制頁面主要用來編輯自定義表單模板,我們可以添加表單標題,表單字段等,目前提供了幾種自定義表單控件如下:

  • 文本框
  • 多行文本框
  • 下拉框
  • 單選框
  • 復選框
  • 文件上傳控件

基本涵蓋了我們所需要的所有表單業務場景.由上圖可知我們可以在任意位置插入自定義字段,同時可以編輯修改刪除表單字段.如果想象力再大一點,我們可以基于它來實現不僅僅是表單問卷型應用,還可以實現答題,發布內容等場景.(后期可支持富文本控件)

3. 草稿管理

圖片圖片

草稿箱設計的目的是方便使用者在配置表單的過程中不確定是否符合需求或者由于某種臨時性舉動而無法繼續配置,這個時候可以將以配置好的內容存入草稿箱,下次繼續編輯,所以筆者專門設計了草稿箱管理列表,一旦用戶存在草稿,會在管理頁面通知用戶并顯示草稿的數量.作為一個追求體驗的技術人,這一塊的設計還是相當有必要的.

4. 生成前臺表單訪問鏈接

圖片圖片

當我們配置好表單之后,我們點擊保存, 會生成一個前臺訪問地址,實時訪問表單信息,如下圖為點擊鏈接之后的頁面:

圖片圖片

我們也可以根據自己的風格,設計自己的表單錄入頁面, 具體如何實現這樣的過程, 后面我會詳細介紹.

5. 查看用戶已有數據錄入

圖片圖片

圖片圖片

我們可以通過點擊"查看數據"來訪問收集到的表單數據,并通過可視化的工具對數據做分析比較,同時我們也可以在數據列表中刪除數據,來控制我們數據展示的純凈.


6. 表單數據分析

圖片圖片

圖片圖片

圖片圖片

收集到數據只有,我們會自動集成幾個可視化組件來分析表單數據,以上是筆者列出的幾個可視化組件,基于antv G2來封裝.

應用場景

以上主要介紹了自定義表單定制平臺的一些功能和交互效果, 我們可以利用該平臺做很多有意思的事情.因為表單的抽象是數據,我們拿到定制化的表單json數據之后,我們可以有不同的展現形式,比如用戶的問卷調查網站平臺的投票答題頁面發布動態等功能,如下圖配置:

圖片圖片

圖片圖片

以上配置可以實現類似于微信的發布朋友圈的功能, 然后我們可以通過前端的手段根據用戶發表的數據渲染成一個朋友圈列表.


如果我們再打開自己的腦洞,我們可以這樣配置,配置一個這樣的表單,表單包括一個文件上傳控件和n個文本輸入控件,如下圖:

圖片圖片

將這樣的表單配置到H5管理模塊,我們只需要上傳三張圖,然后填寫好對應的配文,然后利用市面上成熟的H5全屏滾動插件,就能輕松的定制各種H5活動頁面了。該方案已被筆者的很多子系統使用,效果還是非常好的。

當然基于該平臺甚至能直接配置小型的宣傳網站,還有更多想象空間,期待大家去挖掘。

代碼實現

要想開發這樣一個表單定制平臺, 核心在于如何實現表單動態配置的機制.這里筆者將其劃分為兩部分:基礎表單物料表單編輯生成器, 如下圖所示拆分圖:

圖片圖片

接下來我們一步步實現以上兩個核心模塊。


1. 基礎表單物料

基礎表單物料主要是為了用戶選擇自定義表單控件使用,我們常用的表單動態渲染有map循環+條件判斷和單層map+對象法,前者如果要渲染一個動態表單,可能實現如下:

{
    list.map((item, i) => {
        return <React.Fragment key={i}>
            {
               item.type === 'input' && <Input />
            }
            {
               item.type === 'radio' && <Radio />
            }
            // ...
        </React.Fragment>
    })
}

但是這樣做有個明顯的缺點就是會產生很多沒必要的判斷,如果對于復雜表單,性能往往很低,所以筆者采用后者來實現,復雜度可以降到O(n).我們先來做配置模版:

// 基礎模版數據
const tpl = [
  {
    label: '文本框',
    placeholder: '請輸入內容',
    type: 'text',
    value: '',
    index: uuid(5)
  },
  {
    label: '單選框',
    type: 'radio',
    option: [{label: '男', value: 0}, {label: '女', value: 1}],
    index: uuid(5)
  },
  {
    label: '復選框',
    type: 'checkbox',
    option: [{label: '男', value: 0}, {label: '女', value: 1}],
    index: uuid(5)
  },
  {
    label: '多行文本',
    placeholder: '請輸入內容',
    type: 'textarea',
    index: uuid(5)
  },
  {
    label: '選擇框',
    placeholder: '請選擇',
    type: 'select',
    option: [{label: '中國', value: 0}, {label: '俄羅斯', value: 1}],
    index: uuid(5)
  },
  {
    label: '文件上傳',
    type: 'upload',
    index: uuid(5)
  }
]

// 模版渲染組件
const tplMap = {
  text: {
    component: (props) => {
      const { placeholder, label } = props
      return <div className={styles.fieldOption}><span className={styles.fieldLabel}>{label}:</span><Input placeholder={placeholder} /></div>
    }
  },
  textarea: {
    component: (props) => {
      const { placeholder, label } = props
      return <div className={styles.fieldOption}><span className={styles.fieldLabel}>{label}:</span><TextArea placeholder={placeholder} /></div>
    }
  },
  radio: {
    component: (props) => {
      const { option, label } = props
      return <div className={styles.fieldOption}>
              <span className={styles.fieldLabel}>{label}:</span>
              <Radio.Group>
                {
                  option && option.map((item, i) => {
                    return <Radio style={radioStyle} value={item.value} key={item.label}>
                      { item.label }
                    </Radio>
                  })
                }
            </Radio.Group>
        </div>
    }
  },
  checkbox: {
    component: (props) => {
      const { option, label } = props
      return <div className={styles.fieldOption}>
              <span className={styles.fieldLabel}>{label}:</span>
              <Checkbox.Group>
                <Row>
                  {
                    option && option.map(item => {
                      return <Col span={16} key={item.label}>
                              <Checkbox value={item.value} style={{ lineHeight: '32px' }}>
                                { item.label }
                              </Checkbox>
                            </Col>
                    })
                  }
                </Row>
            </Checkbox.Group>
        </div>
    }
  },
  select: {
    component: (props) => {
      const { placeholder, option, label } = props
      return <div className={styles.fieldOption}>
              <span className={styles.fieldLabel}>{label}:</span>
              <Select placeholder={placeholder} style={{width: '100%'}}>
                {
                  option && option.map(item => {
                    return <Option value={item.value} key={item.label}>{item.label}</Option>
                  })
                }
            </Select>
        </div>
    }
  },
  upload: {
    component: (props) => {
      return <div className={styles.fieldOption}>
              <span className={styles.fieldLabel}>{props.label}:</span>
              <Upload
              listType="picture-card"
              className="avatar-uploader"
              showUploadList={false}
              actinotallow="https://www.mocky.io/v2/5cc8019d300000980a055e76"
            >
              <div>+</div>
            </Upload>
        </div>
    }
  }
}

export {
  tpl,
  tplMap
}

基礎物料在下圖所示中使用:

圖片圖片

當我們要添加一個表單項時,我們就可以在左邊預覽操作區看到添加的項,并可以基于表單編輯生成器來編輯表單字段。


2. 表單編輯生成器

表單編輯生成器分為2部分, 第一部分是用來生成表單項的容器組件,封裝了添加,刪除,編輯操作功能,代碼如下:

// 表單容器組件
const BaseFormEl = (props) => {
  const {isEdit, onEdit, onDel, onAdd} = props
  const handleEdit = (v) => {
    onEdit && onEdit(v)
  }
  return <div className={styles.formControl}>
    <div className={styles.formItem}>{ props.children }</div>
    <div className={styles.actionBar}>
      <span className={styles.actionItem} onClick={onDel}><MinusCircleOutlined /></span>
      <span className={styles.actionItem} onClick={onAdd}><PlusCircleOutlined /></span>
      <span className={styles.actionItem} onClick={handleEdit}><EditOutlined /></span>
    </div>
  </div>
}

第二部分主要用來渲染操作區模版,基于BaseFormEl包裝不同類型的表單組件, 這里舉一個比較復雜的select來說明,其他表單控件類似:

const formMap = {
  title: {},
  text: {},
  textarea: {},
  radio: {},
  checkbox: {},
  select: {
    component: (props) => {
      const { onDel, onAdd, onEdit, curIndex, index, type, label, placeholder, required, message, option } = props
      return <BaseFormEl 
        onDel={onDel.bind(this, index)}
        onAdd={onAdd.bind(this, index)}
        onEdit={onEdit.bind(this, {index, type, placeholder, label, option, required})}
        isEdit={curIndex === index}
      >
        <Form.Item name={label} label={label} rules={[{ message, required }]}>
          <Select placeholder={placeholder}>
            {
              option && option.map(item => {
                return <Option value={item.value} key={item.label}>{item.label}</Option>
              })
            }
          </Select>
        </Form.Item>
      </BaseFormEl>
    },
    editAttrs: [
      {
        title: '字段名稱',
        key: 'label'
      },
      {
        title: '選項',
        key: 'option'
      },
      {
        title: '提示文本',
        key: 'placeholder'
      },
      {
        title: '是否必填',
        key: 'required'
      },
    ]
  },
  upload: {}
}

editAttrs主要用來渲染編輯列表,說明哪些表單項可以編輯,這部分代碼比較簡單,這里直接用圖舉例:

圖片圖片

最后我們來渲染表單生成器組件:

export default (props) => {
  const {
    formData,
    handleDelete,
    handleAdd,
    handleEdit,
    curEditRowIdx
  } = props
  return <Form name="customForm">
            {
              formData && formData.map(item => {
                let CP = formMap[item.type].component
                return <CP {...item} key={item.index}
                  onDel={handleDelete} 
                  onAdd={handleAdd}
                  onEdit={handleEdit}
                  curIndex={curEditRowIdx}
                />
              })
            }
         </Form>
}

至此,基本功能模塊已經開發完成,我們只需要將這些物料和組件導入到編輯頁面,基于業務來操作和請求即可。由于實現該案例還是有一定復雜度的,筆者沒有將所有組件都一一寫出來,希望為大家提供一個思考空間,后續筆者將會把該平臺整合到筆者的開源CMS系統中,供大家學習使用。有關nodejs部分的內容,由于筆者后期會陸續整理,如果有其他疑問,可以和筆者多交流。

責任編輯:武曉燕 來源: 趣談前端
相關推薦

2021-08-08 21:17:18

管理配置平臺

2023-01-18 07:49:42

2024-07-22 07:05:00

nodejs爬蟲管理平臺爬蟲框架

2023-03-06 10:42:45

2013-06-18 09:51:52

PomeloPomelo平臺搭建平臺

2024-12-09 00:00:03

Vue3項目表單

2010-03-08 17:20:56

搭建私有云

2009-07-24 11:29:33

WinForm表單窗體

2023-09-14 08:46:50

ReactVue

2021-04-25 08:58:00

Go拍照云盤

2017-04-25 16:12:49

2021-04-26 18:48:48

微應用React

2021-03-31 08:01:24

React Portareactcss3

2022-04-25 10:49:12

RuoYi-Vue管理系統

2023-07-14 07:23:21

ReactuseEffect

2018-01-02 16:08:00

AndroidiOSReact Nativ

2010-03-02 13:35:59

Fedora apac

2023-10-20 09:49:46

AI技術

2017-02-06 10:30:13

iOS表單正確姿勢

2023-04-28 09:30:40

vuereact
點贊
收藏

51CTO技術棧公眾號

波多野结衣办公室33分钟| 亚洲精品看片| 美女网站在线免费欧美精品| 91麻豆精品国产综合久久久久久| 久久久999国产| 国产黄色激情视频| 日韩三级一区二区| 伊人精品综合| 久久免费电影网| 欧美人与性动交| 午夜视频你懂的| 91视频免费网址| av小次郎在线| 台湾色综合娱乐中文网| 亚洲欧美日韩一区二区| 国产精品久久97| 欧美做受喷浆在线观看| 亚洲h片在线看| 精品一区二区三区免费播放| 亚洲男人天堂久| 日韩国产一级片| 99久久99久久久精品棕色圆| 国产亚洲电影| 日韩欧美国产激情| 国产麻豆日韩| 国产一级在线播放| 麻豆精品国产| 日韩理论片网站| 欧美大陆一区二区| 国产精品麻豆免费版现看视频| 涩涩涩在线视频| 成av人片一区二区| 久久久中精品2020中文| 无码国产精品一区二区免费式直播 | 日本wwwxxxx| 国产精品www994| 日韩三级视频在线看| 穿情趣内衣被c到高潮视频| 在线免费观看av片| 91精品国产91久久久久久黑人| 欧美亚洲高清一区| 精品在线视频一区二区三区| 精品在线视频观看| 少妇精品导航| 亚洲第一免费网站| 欧美精品自拍视频| 日本伦理一区二区| 亚洲欧美欧美一区二区三区| 99久久无色码| www.99re7.com| 女生裸体视频一区二区三区| 亚洲福利小视频| 免费黄色av网址| 第一av在线| 99热在这里有精品免费| 国产成人精品电影久久久| 日本欧美一区二区三区不卡视频| 欧美特黄色片| 亚洲美女视频一区| 黄色高清视频网站| 日本xxxx人| 成人动漫一区二区三区| 国产精品自拍首页| 手机av在线免费观看| 日韩中文字幕不卡| 欧美成人剧情片在线观看| 一起草在线视频| 欧美videos粗暴| 欧美日韩高清不卡| 欧美精品自拍视频| 日本在线高清| 欧美伊人久久久久久久久影院| 男人的天堂日韩| 免费高清在线观看| 9l国产精品久久久久麻豆| 国内成+人亚洲| 亚洲一区二区三区网站| 精品在线视频一区| 亚洲一区二区免费在线| 无码人妻丰满熟妇奶水区码| 久久国产免费| 欧美成人国产va精品日本一级| 97成人资源站| 日韩成人午夜| 亚洲一区二区黄| 国产精品99精品无码视亚| 成人av激情人伦小说| 欧美三级中文字幕在线观看| 人妻久久久一区二区三区| 天堂资源在线中文| 久久久久久久久久久久久女国产乱 | 波多野结衣不卡视频| 亚洲视频免费| 国产成人极品视频| 国产又粗又猛又爽又黄91| 亚洲少妇在线| 欧美激情二区三区| 亚洲一二三四五六区| 欧美成人日韩| 欧美一区二区三区艳史| 久久r这里只有精品| 精品国产1区| 日韩毛片在线看| 亚洲精品久久一区二区三区777 | 日韩欧美中字| 日韩电影中文字幕av| 性生活一级大片| 欧洲av一区二区| 午夜久久久久久久久| 7777在线视频| 范冰冰一级做a爰片久久毛片| 亚洲国产一区二区三区青草影视| 久久久国产精华液999999| 国产三级在线观看| 91丨九色丨尤物| 国产中文一区二区| 欧美精品日韩少妇| 精品久久久久久久久久ntr影视| 米仓穗香在线观看| 97超碰资源站在线观看| 中文字幕一区二区三区乱码在线 | 中文字幕一区不卡| 成人在线免费观看av| 女同一区二区免费aⅴ| 亚洲免费观看视频| 妺妺窝人体色www在线观看| 国产精品zjzjzj在线观看| 亚洲第一福利网| 波多野结衣欲乱| 久久久久久黄| 精品久久中出| 啦啦啦中文在线观看日本| 欧美年轻男男videosbes| 99九九99九九九99九他书对| 91精品福利观看| 日韩午夜精品电影| 亚洲图片第一页| 亚洲久久久久| 欧美激情中文网| 国产手机在线视频| 免费视频久久| 国产一区私人高清影院| 亚洲精品一区二三区| 麻豆视频网站在线观看| 日韩极品在线| 色哟哟网站入口亚洲精品| 四虎国产精品永久免费观看视频| 嫩呦国产一区二区三区av| 日韩中文字幕免费看| 日韩视频中文字幕在线观看| 蜜臀久久久久久久| 日韩妆和欧美的一区二区| 天堂影院在线| 久久久国产一区二区三区四区小说| 久久成人福利视频| 色老太综合网| 777亚洲妇女| 天堂网av2018| 久久精品国产色蜜蜜麻豆| 99c视频在线| 操你啦视频在线| 欧美一区二区日韩| 亚洲av无码一区二区三区网址| 黄色成人在线网址| 国产伦理一区二区三区| 少妇淫片在线影院| 精品爽片免费看久久| 久久夜色精品国产噜噜亚洲av| 青青青爽久久午夜综合久久午夜| 91精品综合视频| 五月婷婷狠狠干| 国产精品萝li| 欧美精品一区免费| av在线亚洲一区| 超碰精品一区二区三区乱码| av图片在线观看| 国产视频视频一区| 国产一级片91| 黑色丝袜福利片av久久| 精品国产区一区二区三区在线观看 | 美女av免费在线观看| 国产成人1区| 国产在线视频2019最新视频| 亚洲精品白浆| 亚洲国产欧美一区二区三区同亚洲| 欧美特黄一区二区三区| 亚洲高清资源在线观看| 国产91精品入口17c| 在线观看黄av| 色婷婷综合久色| 中文字幕在线国产| 美女尤物久久精品| 一区二区冒白浆视频| 26uuu亚洲电影| 色偷偷噜噜噜亚洲男人| 老牛影视av牛牛影视av| 亚洲欧美激情小说另类| 三级视频网站在线观看| 欧美福利专区| 精品国产_亚洲人成在线| 桃色一区二区| 久热在线中文字幕色999舞| 天天射,天天干| 欧美日韩国产综合一区二区三区| 精品无码一区二区三区电影桃花 | 欧美精品一区二区视频| 不卡一区视频| 日韩av免费网站| 你懂的在线观看视频网站| 亚洲图片欧美视频| 亚洲高潮女人毛茸茸| 成人免费视频播放| 日本免费成人网| 日韩中文字幕一区二区高清99| 久久精品亚洲精品| 四虎精品在线| 欧美一级爆毛片| 真实新婚偷拍xxxxx| 国产欧美va欧美不卡在线| 日本三级免费网站| 欧美在线资源| 亚洲人成人77777线观看| 日本午夜精品| 日本精品视频网站| 污影院在线观看| 丝袜亚洲欧美日韩综合| 青青草娱乐在线| 91国偷自产一区二区三区成为亚洲经典 | 亚洲变态欧美另类捆绑| 青青草手机在线视频| 高清国产一区二区| 久久av综合网| 婷婷六月综合| av资源一区二区| 日本免费一区二区三区等视频| 精品国产区一区二区三区在线观看| 三区在线视频| 亚洲国内精品在线| 亚洲第一精品网站| 亚洲成人自拍一区| 九色porny自拍视频| 国产91丝袜在线观看| 一卡二卡三卡四卡五卡| 久久99久久99精品免视看婷婷| 无码人妻精品一区二区三区66| 国产亚洲综合精品| 亚洲熟妇av日韩熟妇在线| 亚洲国产1区| 免费亚洲一区二区| 日韩a级大片| 久久久av水蜜桃| 成人免费在线观看视频| 久久精视频免费在线久久完整在线看 | 精品在线一区二区三区| 奇米影视四色在线| 欧美精品一级| 欧美日韩成人一区二区三区 | 天天综合狠狠精品| 欧洲激情综合| 亚洲精品成人三区| 欧美午夜在线播放| 91视频99| 蜜桃精品在线| 国产精品日韩在线| 国产黄色大片在线观看| 欧美激情精品久久久久久免费印度| 色呦呦在线免费观看| 久久久久久久久91| 午夜影院在线播放| 欧美不卡视频一区发布| 手机在线免费av| 欧美亚州一区二区三区| 欧美精品高清| 成人av资源在线播放| 伊人成综合网站| 国产成一区二区| 欧美天堂一区二区| 国产99午夜精品一区二区三区| 欧美激情网址| 日韩欧美手机在线| 亚洲五月综合| av7777777| 日韩成人午夜电影| 九九九久久久久久久| www.日韩精品| 人妻无码一区二区三区免费| 一区二区三区四区中文字幕| 亚洲精品乱码久久久久久久久久久久| 国产精品1024| 一区二区成人网| 国产模特精品视频久久久久| 成年人黄色片视频| 伊人久久婷婷| 欧美日韩在线免费播放| 国产乱一区二区| 亚洲天堂国产视频| 日韩成人免费电影| 日本人dh亚洲人ⅹxx| 337p粉嫩大胆色噜噜噜噜亚洲| 国产又粗又长又黄的视频| 亚洲一区二区三区中文字幕在线| 欧美性猛交bbbbb精品| 亚洲国产成人91porn| 69xxxx国产| 欧美变态tickling挠脚心| av中文在线观看| 91麻豆精品91久久久久久清纯| 女人18毛片水真多18精品| 一道本无吗dⅴd在线播放一区 | 日韩精品手机在线观看| 小嫩嫩精品导航| 亚洲精品久久久久久| 国产精品视频九色porn| 免费一级特黄特色大片| 欧美日本一区二区| 青春有你2免费观看完整版在线播放高清 | 午夜精品偷拍| 成年网站在线播放| 97精品国产露脸对白| 国产 xxxx| 亚洲欧洲日韩综合一区二区| 欧美色视频一区二区三区在线观看| 国产精品丝袜一区| 特级西西人体高清大胆| 日韩欧亚中文在线| 亚洲美女性生活| 欧美成人一区在线| 亚洲91在线| 亚洲第一在线综合在线| 亚洲欧美久久| 国产亚洲色婷婷久久99精品91| 亚洲乱码国产乱码精品精的特点 | 久久99精品久久久久久青青日本 | 成人三级毛片| 国产精品久久久影院| 麻豆国产精品视频| 日本乱子伦xxxx| 国产精品日韩精品欧美在线| 欧美三级午夜理伦| 欧美精品一区二区不卡| 污的网站在线观看| 69堂成人精品视频免费| 欧美wwwww| 国产日韩欧美中文| 日日狠狠久久偷偷综合色| 国产日韩欧美精品在线观看| 国产传媒欧美日韩成人| 在线免费日韩av| 欧美一区二区三区在| www.欧美日本韩国| 91免费的视频在线播放| 99久久精品国产亚洲精品| 天天操天天干天天做| 中文字幕一区二区三区四区| 国产精品久久影视| 日韩中文字幕网| 豆花视频一区| 国产传媒一区| 激情亚洲网站| 国产又黄又粗又猛又爽的视频| 天天影视涩香欲综合网| 水中色av综合| 国产成人小视频在线观看| 欧美色女视频| 免费看毛片的网址| 不卡的看片网站| 中文字幕激情小说| 亚洲色图偷窥自拍| 中文字幕中文字幕在线中高清免费版| 成人免费看黄网站| 欧美全黄视频| 星空大象在线观看免费播放| 欧美性生活大片免费观看网址| 毛片免费在线观看| 国产欧美一区二区三区久久人妖| 亚洲91精品| 欧美熟妇精品一区二区蜜桃视频| 欧美日韩一区二区三区 | 爽好久久久欧美精品| 国产又粗又猛大又黄又爽| 亚洲国产日韩在线一区模特| 亚洲欧美自偷自拍| 国产精品久久久久久久久男 | 亚洲人成无码网站久久99热国产 | 日韩一级大片在线观看| sis001亚洲原创区| 成人免费视频a| 亚洲黄色影院| 国产在线综合视频| 日韩一二三四区| 涩涩视频在线播放| 在线成人性视频| 波波电影院一区二区三区| 一区二区乱子伦在线播放| 日韩精品中文字幕久久臀| 黑人一区二区三区| 久久99中文字幕| 国产精品久久久久精k8| 四虎永久在线精品免费网址| 国产精品一区久久久|