成人激情在线一区二区,天天操天天爽天天舔天天操一操,极品人妻少妇诱惑日本,美女视频黄A视频全免费,国产成人综合在线观看,国产成:a人亚洲y品,亚洲国产久久久一区二区三区,成人日韩一区二区在线观看,天天搞天天做天天操天天要

小程序模板網(wǎng)

小程序選人控件 - 仿企業(yè)微信實現(xiàn)多層級無規(guī)則嵌套

發(fā)布時間:2018-10-30 14:34 所屬欄目:小程序開發(fā)教程

在很多系統(tǒng)中都有選擇聯(lián)系人的需求,市面上也沒什么好的參照,產(chǎn)品經(jīng)理看企業(yè)微信的選人挺好用的,就說參照這個做一個吧。。。

 

 

算了,還是試著做吧,企業(yè)微信的選人的確做的挺好,不得不佩服。

先看看效果圖吧,多層級無規(guī)律的嵌套都能搞定

 

 

一、設(shè)計解讀

 

 

整個界面分為三部分:

  • 最上面的返回上一層按鈕
  • 中間的顯示部門、人員的列表
  • 最下面顯示和操作已選人員的 footer。

為什么加一個返回上一層按鈕呢?

我也覺得比較丑,但小程序無法直接控制左上角返回鍵(自定義 Title 貌似可以,沒試過),點左上角的返回箭頭的話就退出選人控件到上個頁面了。

我們的需求是點擊一個文件夾,通過刷新當(dāng)前列表進(jìn)入下一級目錄,感覺像是又進(jìn)了一個頁面,但其實并沒有,只是列表的數(shù)據(jù)變化了。由此實現(xiàn)不定層級、無規(guī)律的部門和人員嵌套的支持。

比如先點擊了首屏數(shù)據(jù)的第二個 item,它的 index 是 1 ,就將 1 存入 indexList ;返回上一層時將最后一個元素刪除。

當(dāng)勾選了某個人或部門時,會在底部的框中顯示所有已選人員或部門的名字,當(dāng)文字超過屏幕寬度時可以向右無限滑動,底部 footer 始終保持一行。

最終選擇的人以底部 footer 里顯示的為準(zhǔn),點擊確定時根據(jù)業(yè)務(wù)需要將已選人員數(shù)據(jù)發(fā)送給需要的界面。

二、功能邏輯分析

先看看數(shù)據(jù)格式

{
  id: TEACHER_ID,
  name: '教師',
  parentId: '',
  checked: false,
  isPeople: false,
  children: [
    {
      id: TEACHER_DEPARTMENT_ID,
      name: '部門',
      parentId: 'teacher',
      checked: false,
      isPeople: false,
      children: []
    },
    {
      id: TEACHER_SUBJECT_ID,
      name: '學(xué)科',
      parentId: 'teacher',
      checked: false,
      isPeople: false,
      children: []
    },
    {
      id: TEACHER_GRADECLASS_ID,
      name: '年級班級',
      parentId: 'teacher',
      checked: false,
      isPeople: false,
      children: []
    },
  ]
}

所有的數(shù)據(jù)組成一個數(shù)據(jù)樹,子節(jié)點嵌套在父節(jié)點下。

id, name 不說了,parentId 指明它的父節(jié)點,children 包含它的所有子節(jié)點,checked 用來判斷勾選狀態(tài),isPeople 判斷是部門還是人員,因為兩者的圖標(biāo)不一樣。

注意:

本控件采用了數(shù)據(jù)分步加載的模式,除了最上層固定的幾個分類,其他的每層數(shù)據(jù)都是點擊具體的部門后才去請求服務(wù)器加載本部門下的數(shù)據(jù)的,然后再拼接到原始數(shù)據(jù)樹上。這樣可以提高加載速度,提升用戶體驗。

我也試了一次性把所有數(shù)據(jù)都拉下來,一是太慢,得三五秒,二是數(shù)據(jù)量太大的話(我這里應(yīng)該是超過1000,閾值多少沒測過),setData() 的時候就會報錯:

 

 

超過最大長度了。。。所以只能分步加載數(shù)據(jù)。

當(dāng)然如果你的數(shù)據(jù)量小,幾十人或幾百人,也可以選擇一次性加載。

這個控件邏輯上還是比較復(fù)雜的,要考慮的細(xì)節(jié)太多……下面梳理一下主要的邏輯點

主要邏輯點

1. 需要一個數(shù)組存儲所有被點擊的部門在當(dāng)前列表的索引 index ,這里用 indexList 表示

點擊某個部門進(jìn)入下一層目錄時,將被點擊部門的 index 索引 push 進(jìn) indexList 中。點擊返回上一層按鈕時,刪除 indexList 中最后一個元素。

2. 要動態(tài)的更新當(dāng)前列表 currentList

每進(jìn)入新的一層,或返回上一層,都需要刷新 currentList 來實現(xiàn)頁面的更新。知道下一層數(shù)據(jù)很容易,直接取被點擊 item 的 children 賦值給 currentList 即可。

但如何還原上一層的數(shù)據(jù)呢?

第一點記錄的 indexList 就發(fā)揮作用了,原始數(shù)據(jù)樹為 originalList,循環(huán)遍歷 indexList ,根據(jù)索引依次取出每層的 currentList 直到 indexList 的最后一個元素,就得到了返回上一層需要顯示的數(shù)據(jù)。

3. 每一次勾選或取消選中都要更新原始的數(shù)據(jù)樹 originalList

頁面是根據(jù)每個 item 的 checked 屬性判斷是否選中的,所以每次改變勾選狀態(tài)都要設(shè)置被改變的 item 的 checked 屬性,然后更新 originalList。這樣即使返回上一層了,再進(jìn)到當(dāng)前層級選中狀態(tài)還會被保留,否則刷新 currentList 后已選狀態(tài)將丟失。

4. 列表中選擇狀態(tài)的改變與底部 footer 的雙聯(lián)動

我們期望的效果是,選中currentList 列表的某一項,底部 footer 會自動添加被選人的名字。取消選中,底部 footer 也會自動刪除。

也可以通過 footer 來刪除已選人,點擊 footer 中人名,會將此人從已選列表中刪除,currentList 列表中也會自動取消勾選狀態(tài)。

嗯,這個功能比較耗性能,每一次都需要大量的計算??紤]到性能和速度因素,本次只做了從 footer 刪除只更新 currentList 的勾選狀態(tài)。

什么意思呢?假如有兩層,A 和 B,B 是 A 的下一層數(shù)據(jù),即 A 是 B 的父節(jié)點。在 A 中選中了一個部門 校長室,點擊下一層到 B,在 B 中又選了兩個人 張三 和 李四,這時底部 footer 里顯示的應(yīng)該是三個: 校長室、 張三 、 李四。此時點擊 footer 的 張三 , footer 會把 張三 刪除,中間列表中 張三 會被置為未選中狀態(tài),這沒問題。但點擊 footer 的 校長室 , 在 footer 中是把 校長室 刪除了,但再返回到上一層時,中間列表中的 校長室 依然是勾選狀態(tài),因為此時沒有更新原始數(shù)據(jù)樹 originalList。如果覺得這是個 bug, 可以加個更新 originalList 的操作。這樣就要遍歷 originalList 的每個元素判斷與本次刪除的 id 是否相等,然后改變 checked 值,如果數(shù)據(jù)量很大,會非常慢。我做了妥協(xié)……

關(guān)鍵的邏輯就這四塊了,當(dāng)然還有很多小細(xì)節(jié),直接看代碼吧,注釋寫的也比較詳細(xì)。

三、代碼

目錄結(jié)構(gòu):

 

 

footer 文件夾下是抽離出的 footer 組件,userSelect 是選人控件的主要邏輯。把這幾個文件復(fù)制過去就可以用了。

把 userSelect.js 里網(wǎng)絡(luò)請求的代碼替換為你的請求代碼,注意數(shù)據(jù)的字段名是否一致。

userSelect 的代碼

userSelect.js


import API from '../../../utils/API.js'
import ArrayUtils from '../../../utils/ArrayUtils.js'
import EventBus from '../../../components/NotificationCenter/WxNotificationCenter.js'

let TEACHER_ID = 'teacher';
let TEACHER_DEPARTMENT_ID = 't_department';
let TEACHER_SUBJECT_ID = 't_subject';
let TEACHER_GRADECLASS_ID = 't_gradeclass';
let STUDENT_ID = 'student';
let PARENT_ID = 'parent'

let TEACHER = {
  id: TEACHER_ID,
  name: '教師',
  parentId: '',
  checked: false,
  isPeople: false,
  children: [
    {
      id: TEACHER_DEPARTMENT_ID,
      name: '部門',
      parentId: 'teacher',
      checked: false,
      isPeople: false,
      children: []
    },
    {
      id: TEACHER_SUBJECT_ID,
      name: '學(xué)科',
      parentId: 'teacher',
      checked: false,
      isPeople: false,
      children: []
    },
    {
      id: TEACHER_GRADECLASS_ID,
      name: '年級班級',
      parentId: 'teacher',
      checked: false,
      isPeople: false,
      children: []
    },
  ]
}
let STUDENT = {
  id: STUDENT_ID,
  name: '學(xué)生',
  parentId: '',
  checked: false,
  isPeople: false,
  children: []
}
let PARENT = {
  id: PARENT_ID,
  name: '家長',
  parentId: '',
  checked: false,
  isPeople: false,
  children: []
}
let ORIGINAL_DATA = [
  TEACHER, STUDENT, PARENT
]

Page({
  data: {
    currentList: [], //當(dāng)前展示的列表
    selectList: [],  //已選擇的元素列表
    originalList: [], //最原始的數(shù)據(jù)列表
    indexList: [],  //存儲目錄層級的數(shù)組,用于準(zhǔn)確的返回上一層
    selectList: [],  //已選中的人員列表
  },

  onLoad: function (options) {
    wx.setNavigationBarTitle({
      title: '選人控件'
    })
    this.init();
  },

  init(){
    //用戶的單位id
    this.unitId = getApp().globalData.userInfo.unitId;
    //用戶類型
    this.userType = 0;
    //上次選中的列表,用于判斷是不是取消選中了
    this.lastTimeSelect = []

    this.setData({
      currentList: ORIGINAL_DATA, //當(dāng)前展示的列表
      originalList: ORIGINAL_DATA, //最原始的數(shù)據(jù)列表
    })
  },

  clickItem(res){
    console.log(res)
    let index = res.currentTarget.id;
    let item = this.data.currentList[index]

    console.log("item", item)

    if (!item.isPeople) {
      //點擊教師,下一層數(shù)據(jù)是寫死的,不用請求接口
      if (item.id === TEACHER_ID) {
        this.userType = 2;
        this.setData({
          currentList: item.children
        })
      } else if (item.id === TEACHER_SUBJECT_ID) {
        if (item.children.length === 0){
          this._getTeacherSubjectData()
        }else{
          //children的長度不為0時,更新 currentList
          this.setData({
            currentList: item.children
          })
        }
      } else if (item.id === TEACHER_DEPARTMENT_ID) {
        if (item.children.length === 0) {
          this._getTeacherDepartmentData()
        } else {
          //children的長度不為0時,更新 currentList
          this.setData({
            currentList: item.children
          })
        }
      } else if (item.id === TEACHER_GRADECLASS_ID) {
        if (item.children.length === 0) {
          this._getTeacherGradeClassData()
        } else {
          //children的長度不為0時,更新 currentList
          this.setData({
            currentList: item.children
          })
        }
      } else if (item.id === STUDENT_ID) {
        this.userType = 1;
        if (item.children.length === 0) {
          this._getStudentGradeClassData()
        } else {
          //children的長度不為0時,更新 currentList
          this.setData({
            currentList: item.children
          })
        }
      } else if (item.id === PARENT_ID) {
        this.userType = 3;
        if (item.children.length === 0) {
          this._getParentGradeClassData()
        } else {
          //children的長度不為0時,更新 currentList
          this.setData({
            currentList: item.children
          })
        }
      } else{
        //children的長度為0時,請求服務(wù)器
        if(item.children.length === 0){
          this._getUserByGroup(item)
        }else{
          //children的長度不為0時,更新 currentList
          this.setData({
            currentList: item.children
          })
        }
      }

      //將當(dāng)前的索引存入索引目錄中。索引多一個表示目錄多一級
      let indexes = this.data.indexList
      indexes.push(index)
      //是目錄不是具體的用戶
      this.setData({
        indexList: indexes
      })
      //清空上次選中的元素列表,并設(shè)置上一層的選中狀態(tài)給lastTimeSelect
      this.setLastTimeSelectList();
    }
  },


  //返回按鈕
  goBack() {
    let indexList = this.data.indexList
    if (indexList.length > 0) {
      //返回時刪掉最后一個索引
      indexList.pop()
      if (indexList.length == 0) {
        //indexList長度為0說明回到了最頂層
        this.setData({
          currentList: this.data.originalList,
          indexList: indexList
        })
      } else {
        //循環(huán)將當(dāng)前索引的對應(yīng)數(shù)組賦值給currentList
        let list = this.data.originalList
        for (let i = 0; i < indexList.length; i++) {
          let index = indexList[i]
          list = list[index].children
        }
        this.setData({
          currentList: list,
          indexList: indexList
        })
      }
      //清空上次選中的元素列表,并設(shè)置上一層的選中狀態(tài)給lastTimeSelect
      this.setLastTimeSelectList();
    }
  },

  //清空上次選中的元素列表,并設(shè)置上一層的選中狀態(tài)給lastTimeSelect
  setLastTimeSelectList(){
    this.lastTimeSelect = []
    this.data.currentList.forEach(item => {
      if (item.checked) {
        this.lastTimeSelect.push(item)
      }
    })
  },

  //獲取教師部門數(shù)據(jù)
  _getTeacherDepartmentData() {
    this._commonRequestMethod(2, 'department')
  },

  //請求教師的學(xué)科數(shù)據(jù)
  _getTeacherSubjectData(){
    this._commonRequestMethod(2, 'subject')
  },

  //請求教師的年級班級
  _getTeacherGradeClassData() {
    this._commonRequestMethod(2, 'gradeclass')
  },

  //請求學(xué)生的年級班級
  _getStudentGradeClassData() {
    this._commonRequestMethod(1, 'gradeclass')
  },

  //請求家長的年級班級
  _getParentGradeClassData() {
    this._commonRequestMethod(3, 'gradeclass')
  },

  //根據(jù)部門查詢?nèi)?
  _getUserByGroup(item){
    let params = {
      userType: this.userType,
      unitId: this.unitId,
      groupType: item.type,
      groupId: item.id
    }
    console.log('params', params)
    getApp().get(API.selectUserByGroup(), params, result => {
      console.log('result', result)
      let list = this.transformData(result.data.data, item.id)
      this.setData({
        currentList: list
      })
      this.addList2DataTree()
      //清空上次選中的元素列表,并設(shè)置上一層的選中狀態(tài)給lastTimeSelect。寫在這里防止異步請求時執(zhí)行順序問題
      this.setLastTimeSelectList();
    })
  },

  //通用的請求部門方法
  _commonRequestMethod(userType, groupType){
    wx.showLoading({
      title: '',
    })
    let params = {
      userType: userType,
      unitId: this.unitId,
      groupType: groupType
    }
    console.log('params', params)
    getApp().get(API.selectUsersByUserGroupsTree(), params, result => {
      console.log('result', result)
      wx.hideLoading()
      let data = result.data.data
      this.setData({
        currentList: data
      })
      this.addList2DataTree();
      //清空上次選中的元素列表,并設(shè)置上一層的選中狀態(tài)給lastTimeSelect。寫在這里防止異步請求時執(zhí)行順序問題
      this.setLastTimeSelectList();
    })
  },

  //將請求的數(shù)據(jù)轉(zhuǎn)化為需要的格式
  transformData(list, parentId){
    //先將數(shù)據(jù)轉(zhuǎn)化為固定的格式
    let newList = []
    for(let i=0; i<list.length; i++){
      let item = list[i]
      newList.push({
        id: item.id,
        name: item.realName,
        parentId: parentId,
        checked: false,
        isPeople: true,
        userType: item.userType,
        gender: item.gender,
        children: []
      })
    }
    return newList;
  },

  //將當(dāng)前列表掛載在原數(shù)據(jù)樹上, 目前支持5層目錄,如需更多接著往下寫就好
  addList2DataTree(){
    let currentList = this.data.currentList;
    let originalList = this.data.originalList;
    let indexes = this.data.indexList
    switch (indexes.length){
      case 1: 
        originalList[indexes[0]].children = currentList
        break;
      case 2:
        originalList[indexes[0]].children[indexes[1]].children = currentList
        break;
      case 3:
        originalList[indexes[0]].children[indexes[1]].children[indexes[2]].children = currentList
        break;
      case 4:
        originalList[indexes[0]].children[indexes[1]].children[indexes[2]].children[indexes[3]].children = currentList
        break;
      case 5:
        originalList[indexes[0]].children[indexes[1]].children[indexes[2]].children[indexes[3]].children[indexes[4]].children = currentList
        break;
    }

    this.setData({
      originalList: originalList
    })
    console.log("originalList", originalList)
  },

  //選框變化回調(diào)
  checkChange(res){
    console.log(res)
    let values = res.detail.value
    let selectItems = []
    //將值取出拼接成 id,name 格式
    values.forEach(value => {
      let arrs = value.split(",")
      selectItems.push({id: arrs[0], name: arrs[1]})
    })
    console.log("selectItems", selectItems)
    console.log("lastTimeSelect", this.lastTimeSelect)
    
    //將本次選擇的與上次選擇的比對,本次比上次多說明新增了,本次比上次少說明刪除了,找出被刪除的那條數(shù)據(jù),在footer中也刪除
    if (selectItems.length > this.lastTimeSelect.length){
      //將 selectList 與 selectItems 拼接并去重
      let newList = this.data.selectList.concat(selectItems)
      newList = ArrayUtils.checkRepeat(newList)
      this.setData({
        selectList: newList
      })
    }else{
      //找出取消勾選的item,從selectList中刪除
      //比對出取消勾選的是哪個元素
      let diffItem = {}
      this.lastTimeSelect.forEach(item => {
        let flag = false;
        selectItems.forEach(item2 => {
          if(item.id === item2.id){
            flag = true
          }
        })
        if(!flag){
          diffItem = item
          console.log("diff=", item)
        }
      })
      //找出被刪除的元素在 selectList 中的位置
      let list = this.data.selectList
      let delIndex = 0;
      for(let i=0; i<list.length; i++){
        if (list[i].id === diffItem.id){
          delIndex = i;
          break;
        }
      }
      //從list中刪除這個元素
      list.splice(delIndex, 1)
      this.setData({
        selectList: list
      })
    }
    console.log("selectList", this.data.selectList)
    //更新 currentList 選中狀態(tài)并重新掛載在數(shù)據(jù)樹上,以保存選擇狀態(tài)
    this.updateCurrentList(this.data.currentList, this.data.selectList)
  },

  //footer點擊刪除回調(diào)
  footerDelete(res){
    console.log(res)
    this.setData({
      selectList: res.detail.selectList
    })

    console.log('selectList', this.data.selectList)
    this.updateCurrentList(this.data.currentList, res.detail.selectList)
  },

  //點擊 footer 的確定按鈕提交數(shù)據(jù)
  submitData(res){
    let selectList = this.data.selectList
    //通過 WxNotificationCenter 發(fā)送選擇的結(jié)果通知
    EventBus.postNotificationName("SelectPeopleDone", selectList)
    //將選擇結(jié)果存入 app.js 的 globalData
    getApp().globalData.selectPeopleList = selectList
    //返回
    wx.navigateBack({
      delta: 1
    })
    console.log("selectdone", selectList)
  },

  //更新 currentList 并將更新后的列表掛載在數(shù)據(jù)樹上
  updateCurrentList(currentList, selectList){
    let newList = []
    currentList.forEach(item => {
      let flag = false;
      selectList.forEach(item2 => {
        if (item.id === item2.id) {
          flag = true
        }
      })
      if (flag) {
        item.checked = true
      } else {
        item.checked = false
      }
      newList.push(item)
    })
    this.setData({
      currentList: newList
    })
    this.addList2DataTree()
    this.setLastTimeSelectList()
  }
})
復(fù)制代碼

userSelect.wxml

<view class='container'>
  <view class='btn-wrapper'>
    <button bindtap='goBack'>返回上一層</button>
  </view>

  <view class='people-wrapper'>
    <scroll-view scroll-y class='scrollview'>
      <checkbox-group bindchange="checkChange">
        <view class='item' wx:for='{{currentList}}' wx:key='{{item.id}}'>
          <checkbox checked='{{item.checked}}' value='{{item.id + "," + item.name}}'>
          </checkbox>
          <view id='{{index}}' class='item-content' bindtap='clickItem'>
            <image class='img' wx:if='{{!item.isPeople}}' src='../../../assets/file.png'></image>
            <image class='avatar' wx:if='{{item.isPeople}}' src='../../../assets/avatar.png'></image>
            <text class='itemtext'>{{item.name}}</text>
          </view>
        </view>
      </checkbox-group>
      <view class='no-data' wx:if='{{currentList.length===0}}'>暫無數(shù)據(jù)</view>
    </scroll-view>
  </view>
  <view class='footer'>
    <footer list='{{selectList}}' binddelete='footerDelete' bindsubmit="submitData"/>
  </view>
</view>
復(fù)制代碼
userSelect.wxss

.container {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  padding: 20rpx;
  overflow-x: hidden;
  box-sizing: border-box;
  background-color: #fff;
}

.btn-wrapper {
  width: 100%;
  padding: 0 20rpx;
  box-sizing: border-box;
}

.btn {
  font-size: 24rpx;
  width: 100%;
}

.people-wrapper {
  width: 100%;
  margin-top: 10rpx;
  margin-bottom: 100rpx;
}

.scrollview {
  width: 100%;
  display: flex;
  flex-direction: column;
}

.item {
  width: 100%;
  display: flex;
  flex-direction: row;
  align-items: center;
  padding: 30rpx 0;
  margin: 0 20rpx;
  border-bottom: 1rpx solid rgba(7, 17, 27, 0.1);
}

.item-content {
  width: 100%;
  display: flex;
  flex-direction: row;
  align-items: center;
  margin-left: 20rpx;
}

.itemtext {
  font-size: 36rpx;
  color: #333;
  margin-left: 20rpx;
  text-align: center;
}

.img {
  width: 50rpx;
  height: 40rpx;
}

.avatar {
  width: 50rpx;
  height: 50rpx;
}

.footer {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
}

.no-data{
  width: 100%;
  font-size: 32rpx;
  text-align: center;
  padding: 40rpx 0;
}

userSelect.json

{
  "usingComponents": {
    "footer": "footer/footer"
  }
}

footer 的代碼

footer.js


Component({
  /**
   * 組件的屬性列表
   */
  properties: {
    list: {
      type: Array
    }
  },

  /**
   * 組件的初始數(shù)據(jù)
   */
  data: {
    
  },

  /**
   * 組件的方法列表
   */
  methods: {
    delete(res){
      console.log(res)
      let index = res.currentTarget.id
      let list = this.data.list
      list.splice(index,1)
      this.setData({list: list})
      this.triggerEvent("delete", {selectList: list})
    },

    /**
     * 點擊確定按鈕
     */
    confirm(){
      this.triggerEvent("submit", "")
    }
  }
})
復(fù)制代碼

footer.wxml

<view class='container'>
  <view class='scroll-wrapper'>
    <scroll-view scroll-x style='scroll'>
      <text id='{{index}}' class='text' wx:for='{{list}}' wx:key='{{index}}' bindtap='delete'>{{item.name}}</text>
    </scroll-view>
  </view>
  <text class='btn' bindtap='confirm'>確定</text>
</view>

footer.wxss

.container {
  width: 100%;
  height: 100rpx;
  display: flex;
  flex-direction: row;
  padding: 20rpx;
  box-sizing: border-box;
  background-color: #fff;
  align-items: center;
  overflow-x: hidden;
  white-space: nowrap;
  border-top: 2rpx solid rgba(7, 17, 27, 0.1)
}

.scroll-wrapper {
  flex: 1;
  overflow-x: hidden;
  white-space: nowrap;
}

.scroll {
  width: 100%;

}

.text {
  font-size: 32rpx;
  color: #333;
  padding: 40rpx 20rpx;
  margin-right: 10rpx;
  background-color: #f5f5f5;
}

.btn {
  padding: 10rpx 20rpx;
  background-color: rgb(26, 173, 25);
  border-radius: 10rpx;
  font-size: 32rpx;
  color: #fff;
}
復(fù)制代碼

footer.json

{
  "component": true,
  "usingComponents": {}
}
復(fù)制代碼

再補一個用到的 ArrayUtils 的代碼

export default{

  /**
     * 給數(shù)組去重
     */
  checkRepeat(list) {
    let noRepList = [list[0]]
    for (let i = 0; i < list.length; i++) {
      let repeat = false
      for (let j = 0; j < noRepList.length; j++) {
        if (noRepList[j].id === list[i].id) {
          repeat = true
          break
        }
      }
      if (!repeat) {
        noRepList.push(list[i])
      }
    }
    return noRepList
  },

  //刪除list中id為 delId 的元素
  deleteItemById(list, delId){
    for (let i = 0; i < list.length; i++) {
      if (list[i].id == delId) {
        list.splice(i, 1)
        return list;
      }
    }
    return list;
  }

}
復(fù)制代碼

由于時間緊張,還沒有把這個控件單獨從項目中抽出來寫個 Demo,有時間了會給 github 地址的。

代碼還有很多可以優(yōu)化的地方,比如有幾個方法太長了,不符合單一職責(zé)原則等等,不想改了,以后再優(yōu)化吧。。

水平有限,各位大俠請輕噴~

有問題或發(fā)現(xiàn) Bug 請在評論區(qū)留言,畢竟剛寫完就分享出來了,還沒經(jīng)過嚴(yán)格的測試。不過應(yīng)該沒什么大的問題。。。有些細(xì)節(jié)可能沒注意到。



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://m.chqfk.com/wxmini/doc/course/24921.html 復(fù)制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢: 點擊咨詢
在線客服
易小優(yōu)
轉(zhuǎn)人工 ×
在线免费观看欧美激情视频| 欧洲野外激情性视频| 蜜桃一区二区17c| 日韩中文字幕免费大片| 狠狠操操操操操操操操操操| 亚洲欧洲另类小说图片| 日韩av免费福利在线观看| 日本熟妇丰满厨房55| av在线操亚洲图片| 亚洲天堂男人的天堂av| 中文在线字幕第一页| 国产精品啊啊啊不要在线观看| 亚洲中文字幕av在线播放| 亚洲中文有码一区二区| 精品欧美一亚洲精品午夜| 亚洲一区 成人在线| 99riav国产尤物蜜臀精品| 国产剧情星空无限传媒| 狠狠躁日日躁夜夜躁视频| 91久久精一区二区三区大全| 黄色av日韩免费在线观看| 精品熟女后入一区二区三区| 国产一区二区精品蜜臀av| 午夜精品福利一区二区三区p| 亚洲一区二区成人综合| 免费高清视频在线观看不卡男男| 成人免费视频国产免费麻豆下| 勾引小哥鸡巴操逼视频下载| 欧美精品乱码久久久久久| 天天色天天情天天透| 欧美 亚洲 激情 自拍| 久久亚洲伊人99精品影院| 国产一级免费黄色录像片| 欧美日韩aaaaa级黄片视频| 91表用白丝脚帮我脚交| 美女av网站在线观看| 日韩美女精品一在线观看| 日韩精品一区二区三区中文精| 香蕉久久av一区二区三区四区| 日韩av在线区二区| 狠狠操 在线视频 轻轻草| 黄色av免费下载软件| 玩弄放荡人妻少妇精品| 欧美激情在线观看新地址 | 国内精品视频久久久久| 国产精品亚洲综合视频| 亚洲国产精品美女久久久av| av网址大全在线播放 | 可以在线观看的黄色网页| 999久久久精品精品| 亚洲国产精品国自产拍a∨| 亚洲人成亚洲人成在线观看com| 久久三级片一区二区毛片| 国产成人啪精品视频免费| 亚洲自偷自拍另类18p| 午夜精选视频在线观看| 久久久久18精品国产乱码78m| 手机在线免费视频一区二区三区| 亚洲国产精品av久久久| 精品视频在线视频精品| 午夜国产福利视频一区二区| 超碰在线观看97视频| 日本中文字幕人妻一区二区| 人妻夜夜爽av性色大片| 一级黄色片美女吃春满| 999在线视频一区二区三区| 天堂网作爱视频在线播放| 日本老太婆老熟妇av| fc2精品成人免费观看| 欧美大长腿美女抽插网站| 日韩欧美亚洲一区第一| 中文字幕久久精品亚洲乱码| www久久久久久久99| 人人咪咪一区二区三区| 最新人妻熟女中文字幕| 可以直接在线观看的一区| 91老熟女连续高潮对白| 日本v片 中文字幕| 在线播放国产免费av| 国产盗摄女子私密保健视频| 勾引小哥鸡巴操逼视频下载| 大鸡巴爆操美女骚逼| 微拍一区二区在线观看| 青青视频青青成人免费| caoporn香蕉在线观看| 骚白虎插入在线观看| 亚洲免费观看高清在线| 97国产在线精品观看| 91精品午夜呻吟xxxx| 久久久久国产一毛片高清| 丝袜美腿国产在线观看| 91亚洲国产成人久久| 人妻少妇精品专区一二三| 免费熟女精品一区二区三区| 亚洲av欧美av在线播放| 亚洲欧洲自拍他拍av| 亚洲另类欧美在线观看| 自拍分享国产亚洲欧美| 成人麻豆免费视频精品区 | 偷拍自拍 中文字幕| 天天日……天天操……天天喷| 96人妻一区=区三区| 少妇高潮精品一区二区| 亚洲主要位于五带中的什么带? | 一区二区三区在线中国| 粉嫩av入口一区二区三区| 九九热在线这里只有精品| 午夜精品福利一区二区三区p| 91大神视频在线观看视频| 色欲天天天久久久综合| 黄色av日韩免费在线观看| 青青青青青青青青草青青| 天天色天天情天天透| r人人妻人人澡人人爽| 国产日韩欧美精品久久久一区二区| 在线观看高清日韩av| 熟女吧国产精品一区二区三区| 久久这里精品视频3| 欧美图色 亚洲图色| 亚洲妇熟xxxx妇色黄网站| 欧美xxxx视频在线| 色噜噜在线综合亚洲欧美| 91精品1080部在线播放| 亚洲情品中文字幕人妻久久久边| 啪啪啪在线播放视频| 爱人体-看人体人体摄影| 在线视频你懂的视频| 大鸡巴爆操美女骚逼| 免费观看视频一区,二区,三区| 日本黄色操碌缬巴| 超碰人妻中文字幕在线| 亚洲妇熟xxxx妇色黄网站| 91亚洲情色在线播放| 啪啪啪免费亚洲精品网站| 欧美精品综合第一页| 亚洲小说区图片另类春色 | 午夜性色福利视频自拍偷拍| 69精品人妻一区二区| 一区二区三区精品在线免费视频| 亚洲日本一区二区嫩草| 爆操性感美女性色av| 亚洲女同性同志熟女女同| 91精品国产自产在线大长腿| 亚洲真人性在线观看| 99久久精品国产欧美一区二区| 欧美精品黑人粗大破除| 成全视频免费观看在线下载| www国产精品久久久| 亚洲精品免费一二三区| 超碰超碰超碰超碰超碰超| 天天日……天天操……天天喷| 67194久久一区二区| 中文字幕 日韩在线播放| 96人妻一区=区三区| 一区二区三区四区免费福利视频| 91精品在线播放hd| 人操美女操美女操美女| 老鸭窝最新网址在线| 久久久老熟女一区二区| 香蕉久久av一区二区三区四区| 欧美成年性精品三级网站| 亚洲欧美日韩不卡人妻中文字幕| 乱一区二区三区在线播放| 中国熟妇丰满大乳大屁股| 国产精品爽黄69天堂ai蜜乳| 99久久香蕉国产线看| 天天色天天爱天天日| 国产又粗又长又硬又猛又黄的视频 | 99国国视频在线播放| 亚洲国产精品av久久久| 男人把女人捅爽动漫| 销魂少妇一区二区视频| 性感的人妻在线观看| 国产绿帽人妻精品系列| 十分钟在线观看视频| 性色av成年在线观看| 亚洲日本一区二区嫩草| 蜜桃av在线网址观看| 国产白丝美女在线网站| 草逼美女逼话多的视频出水| fc2精品成人免费观看| 操人妻视频在线免费观看| 99精品视频在线观看专区| 在线观看免费a亚洲| 一区二区中文字幕18| 亚洲av网站在线免费观看| 国产在线观看一区二区不卡| 欧美 日韩 中文 字幕| 青青草手机视频在线观看| 涩涩漫画网站在线观看| 东京热av在线播放| 欧美综合一二区在线| 久久这里精品视频3| 精品99久久久久久www| 久操av在线免费观看| 精品人人妻人人澡人人爽| 国产传媒网址在线观看| av一区二区二十四小时| 亚洲国产精品日日夜夜| 天天干天天操天天日天天射| 三级经典三级日本三级欧美| 免费一级黄色片麻豆系列| 成人福利电影免费网址| 2020精品国产自在现线官网| 一区二区中文字幕18| 亚洲国产精品日日夜夜| 91九色porny国产探花| 91国产精品久久久久麻豆| 欧洲日本亚洲一区二区| 99国产精品免费视频观看a| 久久精品亚洲国产一区二区| 欧美日韩综合在线免费观看 | www国产亚洲天堂| 办公室被吃奶好爽在线观看视频| 国产大神一区二区三区| 久久精品在线观看免费视频| 国内精品久久久久久久| 日本熟妇丰满厨房55| 日日爽夜夜爽夜夜爽精品视频| 草逼美女逼话多的视频出水| 日韩中文字幕免费大片| 国产国语露脸在线视频播放| 成人麻豆免费视频精品区 | 日本伦理在线免费视频| 国产传媒中文字幕在线| 亚洲成年人三级电影| 亚洲综合精品推荐69堂| 日本女护士久久精品| 三级黄色亚洲成人av| av一av一av中文字幕| 亚洲天堂精品区三区二区一区| 欧美视频精品免费观看| av网址在线观看日韩| 国产综合av一区二区| 日本美国亚洲一区二区| 五月天丁香婷久久爱| av精选一区二区久久| 欧美黑人性色黄在线视频| 天天射天天日天天干天天舔| 高清日本wwwcom| 可以免费看啪啪啪的网站| 亚洲天堂都市激情av| 日韩av卡一卡二卡三| 人人妻在线视频97| 人妻不卡一区二区三区| 亚洲国产aⅴ成人精品无吗| av中文字幕高清在线| 亚洲女同性同志熟女女同| 一区二区三区国产精选在线播放| 午夜国产福利视频一区二区| 婷婷色综合久久五月天| 日本五十路六十路中出| 日本v片 中文字幕| 亚洲在线一区二区三区免费| 91麻豆精品国产乱码久久久久久| 狠狠干狠狠操五月天| 草逼美女逼话多的视频出水| 久久这里精品视频3| 亚洲综合一区二区人妻| 日本老熟妇色狠狠一区| 隔壁放荡人妻bd完整版| 精品成人午夜免费看| 国产精品啪啪啪免费网站| 亚洲av午夜精品一老妈| 欧美熟妇搡bbbb水蜜桃| 亚洲自偷自拍另类性受不了| 亚洲天堂av插插插| 99精品国产自在现线观看| 欧美一区二区三区乱轮| 国产喷水在线免费观看| 在线观看免费黄片欧美| 日韩精品在线播放视频成年人| 老师让我插进去69AV| 9l九色自拍蝌蚪9l视频| 亚洲视频 中文字幕 人妻| 天天天天拍天天天天天天| 美女草草影院在线观看视频| 欧美xxxx视频在线| 欧美丝袜熟女日韩亚洲| 少妇人妻中文字幕专区视频| 免费观看视频一区,二区,三区| 一区二区三区在线 日韩| 北条麻妃制服丝袜在线播放| 久草视频免费在线视频观看| 偷拍自拍 中文字幕| 男生用大鸡巴捅女生的视频| 欧美激情自拍2020| 亚洲欧美国产其他二区| 伊人精品在线大香蕉| 亚洲精品综合视频自拍| 亚洲欧美另类图片88| 高清日本wwwcom| 国产高清免费在线视频| 成人大片精品在线观看| 国产av综合av国产精品| 男生的天堂亚洲男人| 国产mm视频在线观看| 无人码一区二区三区视频| 亚洲天堂精品区三区二区一区| 操人妻视频在线免费观看| av蜜桃网在线观看| 日本a爱视频二区三区| 日本av都是真做吗| 999久久久精品精品| av影视在线免费观看| 视频在线观看免费99| 3D美女高跟鞋插穴| 欧美成人a v在线| 91精品人人妻人人澡人人爽人人| 91精品人妻一区二区三区水蜜桃 | 88888欧美精品久久久| 日韩欧美在线一区二区在线| 亚洲国产久久久久久| 日本熟妇wxw日本人妻| 东游记中文字幕版哪里可以看到| 国产又粗又长又黄视频 | 欧美在线播放一二区不卡| 国产c片免费观看| 欧美图色 亚洲图色| 欧美一区二区三区乱轮| 91久久综合九色综合欧美98| 手机在线免费视频一区二区三区| 狂野黑人性猛交xxxxxx| 2020中文字幕在线播放| 国产原创成人av剧情在线播放| 欧美大黑硬鸡巴操骚肥湿逼| 色淫骚色色色色色色美女| 男人把女人捅爽动漫| 亚洲一区 成人在线| 国产综合av免费观看| 日本免费播放一区二区三区| 亚洲图片一区偷拍自拍| 99国国视频在线播放| 国产欧美精品va在线观看| 91大神视频在线观看视频| 日韩伦理一区二区三区有码| 四川熟女a一区二区三区| 高清日本欧美亚洲视频| 精产国品一二三产区999| 婷婷综合尤物精品国产| 天天操天天射天天综合网| 91精品人人妻人人澡人人爽人人| 亚洲天堂男人的天堂av| 色一伊人区二区亚洲最大| 成人午夜影视在线观看| 18人妻人碰人人做人人爽| 亚洲人体艺术二区三区视频| 日本公与妇电影三级| 午夜福利免费福利视频| 中文字幕看日韩精品视频 | 91亚洲情色在线播放| 欧美色一区二区三区在线观看| av 激情 开心 五月| 成人午夜伦理在线观看| 97色婷婷久久99国产视频| 亚洲av日韩一区二区三区四区| 午夜男女激情福利视频| 亚洲国产aⅴ成人精品无吗| 适合黄黑皮的显白发色| 亚洲免费国产在线日韩| 亚洲天堂精品区三区二区一区| 2012在线国语中文字幕| 狠狠躁日日躁夜夜躁视频| 免费人妻av一区二区| 亚洲女同性同志熟女女同| 老鸭窝在线观看免费观看高清版| 国产成人啪精品视频免费| 在线视频你懂的视频| 要看tv在线观看欧美日韩| 欧美一区,二区三区高清视频| 一级黄色片美女吃春满| 亚洲真人性在线观看| 女人张开双腿让男人捅视频| 欧美亚洲国产成人免费在线| 久re这里只有精品视频| 国产无遮挡精品视频观看| 男人把女人捅爽动漫| 亚洲免费国产在线日韩| 性色av一区二区三区观看| 啪啪男女日韩网站蜜桃| 99久久夜色精品国产亚洲软件| 日韩中文字幕免费大片| 97人妻人人做人碰人人爽一 | 亚洲国产精品美女久久久av| 日韩毛片综合在线观看网站| 伊人青操在线观看视频网站| 韩国一区二区三区在线观看| 无人码一区二区三区视频| 久草视频免费在线视频观看| 干 白虎 少妇 嫩 逼 视频| 亚洲一区二区视频在线免费观看| 久久久999精品在线| 公一区二区三区高清99| 国产av一区二区三区天堂| 一区二区三区国产欧美日韩| 精品99久久久久久www| 国产一级二级三级亚洲| 午夜啪啪啪免费视频网站| 成人教育 在线学习| 2020中文字幕在线播放| 国产欧美日韩一区91| 亚洲一区二区成人综合| 色视频免费在线观看视频| 97久久精品熟女超碰| 午夜在线看1000集| 亚洲综合久久综合网| 欧美精品第5页在线观看视频| 嗯嗯嗯啊啊啊不要好爽视频| 国产又黄又粗又硬又大又猛的视频| 91麻豆精品国产91久久久平台| 国产精品精品3d动漫| 少妇内射的视频一区二区| 中文字幕一区三区二区国产黄色 | 国产在线观看一区二区不卡| 久re这里只有精品视频| 久久91精品国产91久久分享| 97国产婷婷在线观看| 操白嫩人妻少妇真爽视频| 先锋资源在线观看国产精品| 久久躁夜夜躁日日躁狠狠躁| 亚洲一区二区成人综合| 视频你懂得在线观看| 亚洲欧美在线x视频| 男的扒开女的下面狂操视频| 4455vw在线观看| 成人免费视频国产免费麻豆下| 五月天丁香婷久久爱| 国产综合av一区二区| 操女人下阴黄色一级视频| 国产又黄又粗又硬又大又猛的视频| 五月色婷婷在线视频| 国产精品黄色自拍视频| 亚洲自偷自拍另类性受不了| 鸡巴操进我的小穴欧美国产 | 日韩av免费福利在线观看| 亚洲精品少妇蜜桃久久久| 91老熟女连续高潮对白| 欧美日韩国产在线观看了| 人妻熟女一区二区aⅴ佐佐木明希| 久久精品亚洲国产一区二区| 国产成人午夜精品视频| 久久99精品国产99久久6尤| 超碰chaopeng 国产| 91精品人妻一区二区三区水蜜桃| 91国内精品视频在线| 欧美精品第5页在线观看视频| 国产一区二区精品蜜臀av| 欧美一区二区蜜桃视频| 性感的人妻在线观看| 亚洲欧美另类激情综合区动漫| 日韩精选高清大片在线观看| 欧美一级黄片视频免费| 天天日天天色天天搞| julia 人妻中文字幕| 天天日天天色天天摸| 亚洲小说区图片另类春色| 亚洲伊人av 综合福利| 九月丁香婷婷中文字幕| 欧美亚洲天堂不卡视频| 青青草原x全国在线观看| 国产三级做爰高清在线| 中字av在线一区二区中字| 成人一级黄色片免费看| 9l九色自拍蝌蚪9l视频| 91久色porny视频在线| 99久久精品美女高潮喷水| 久久99精品久久久久久小说| 色噜噜在线综合亚洲欧美| 神乃麻美三级在线观看视频| 成av一区二区三区久久| 国产精品啪啪啪免费网站| 亚洲中文字幕av在线播放| www国产精品久久久| 欧美黑人性色黄在线视频| 部长侵犯人妻一区二区三区| 黄色成人激情福利在线影院| 亚洲精久久久久久久久久久久久 | 国产美女高清免费av| 狠狠操 在线视频 轻轻草| 精品国产9999久久久久| 欧美色一区二区三区在线观看| 亚洲欧美伦理一区二区| 美女 激情 欧美 日韩| 国产成人一区二区三区久| 青青草原x全国在线观看| 国产黄a三级三级三级三级三级| 亚洲 网友 在线 观看| 天天色天天操综合网| 久久精品国产二区AV无码| 青青草手机视频在线观看| 91亚洲国产成人久久| 精品一区二区三区四区激情| 久久精品亚洲国产| 日本av都是真做吗| 亚洲视频 中文字幕 人妻| 污污污污国产免费入口处| 91高清免费观看在线| 亚洲av男人的天堂久久久| 怡红院精彩视频在线观看| 97国产在线精品观看| 青青草原x全国在线观看| 日本电影高清一区二区| 亚洲国产中文字幕在线视频| 亚洲国产精彩中文乱码av| 91精品人妻中文字幕| 欧美最猛黑人xxxx黑人猛交文| 91精品久久久久久婷婷高清| 成人麻豆免费视频精品区| 日本av毛片在线播放| 中字av在线一区二区中字| 国自产拍偷拍福利精品免费观看| 大奶子美女免费操逼视频| 亚洲精久久久久久久久久久久久| 亚洲av好看xx站| 国产美女主播丝袜高潮白浆| 最新亚洲成人黄色片| 国产美女遭高潮免费视频| 精品少妇人妻av免费久久胖妇| 一级黄色片美女吃春满| 色男人的天堂一区二区三区| 91免费观看国产精品| 国内精品久久久久久久999| 五月天开心激情深爱激情| 超碰人妻中文字幕在线| 亚洲人成亚洲人成在线观看com| 亚洲免费淫网站在线观看| 人妻熟一区二区三区四区不卡| 亚洲图色熟女五月天| 亚洲精品综合视频自拍| 国产精品啪啪啪免费网站| 免费二区三区四区在线观看| 青青草原亚洲精品在线观看| 国产在线观看网站资源| 色淫骚色色色色色色美女| julia 人妻中文字幕| 成人激情在线一区二区| 国产精品午夜在线观看| 欧美熟妇搡bbbb水蜜桃| 亚洲妇熟xxxx妇色黄网站| www久久久久久久99| 婷婷视频在线观看一区的| 亚洲日本一区二区嫩草| 狂野小农民在线高清| av男人免费的天堂| 男生日女生逼的视频| 免费观看日本黄页网站| 微拍一区二区在线观看| 国产精品久久久久白浆| 天天天天拍天天天天天天| 成人18禁视频网站在线看| 手机能看的黄色av| 天天操天天摸天天摸| 女人样男人用大鸡巴操她的逼逼| lisaann在线观看| 亚洲欧美动漫卡通 另类| 偷拍自拍视频图片免费| 97免费人妻超碰97在线| 人妻中文字幕在线视频免费观看| 天天舔天天做天天爱| 风间由美亚洲一区二区三区| 天天日天天色天天搞| 精品人人妻人人澡人人爽| 免费观看视频一区二区三区| 国产熟女一区二区三区四| 亚洲日本欧洲一区二区| 97人妻碰碰碰久久久| 亚洲主要位于五带中的什么带?| 女人张开双腿让男人捅视频 | 女人扒开逼逼让男人操| 人妻a∨在线中文字幕| 午夜福利精品视频在线观看| 亚洲中文字幕在线观看黑人| 在线观看国产影片| 亚洲在线一区二区三区免费| 天堂av在线中文在线新版| 国产精品爽黄69天堂ai蜜乳| 日本系列变态另类一区二区三区| 97国产婷婷在线观看| 亚洲国产精品av久久久| 特黄特猛aaaaaaaaa片| 欧美丝袜熟女日韩亚洲| 成年女人毛片免费在线播放| 午夜在线小视频在线观看| 久久久久国产一毛片高清| 国产精品午夜在线观看| 啪啪啪在线播放视频| 超碰人妻中文字幕在线| 91av国产在线观看| 久久精品在线观看免费视频| 大香蕉人妻少妇av| 国产半推半就精品强推视频| 163黄页网在线观看,| 天天色天天爱天天舔| 日韩不伦高清一区二区三区| 变态另类97人妻av| 办公室被吃奶好爽在线观看视频| 大秀视频一区二区三区| 要看tv在线观看欧美日韩| 一区二区三区精品在线免费视频| 久久精品国产二区AV无码| 99久久久国产精品美女| 久久精品亚洲国产一区二区| 午夜福利免费福利视频| 欧美一级性生活片人与动物| 精品视频在线观看久久| 日韩高清av一区二区三区| 成全视频免费观看在线下载| 不卡黄色免费在线观看| 激情综合网激情俺她去| 天天日天天色天天搞| 成人18禁视频网站在线看| 午夜福利免费福利视频| 日韩av一区二区三区久久| 日本熟妇wxw日本人妻| 97超碰在线视频观看| 99精品热视频在线观看| 五月婷婷综合大香蕉五月天| 亚洲免费淫网站在线观看| 亚洲自拍偷拍清纯唯美| 适合黄黑皮的显白发色| 9l九色自拍蝌蚪9l视频| 2012在线国语中文字幕| 黄色av日韩免费在线观看| 国产精品久久久久白浆| av色哟哟国产精品| 欧美激情自拍2020| 啪啪啪免费亚洲精品网站| 销魂少妇一区二区视频| 99热6在线播放免费| 国产国产午夜全部视频| 91亚洲国产成人久久| 人操美女操美女操美女| 成人18禁视频网站在线看| 人妻夜夜爽av性色大片| 美女诱惑福利在线视频| 狠狠操 在线视频 轻轻草| 美女诱惑福利在线视频| 亚洲av福利片久久久久| 欧洲av,亚洲av| 亚洲精品1234区在线看| 欧美黑人性色黄在线视频| 日韩精品一区二区三区中文精| 适合黄黑皮的显白发色| 日本av都是真做吗| 色噜噜在线综合亚洲欧美| 欧美成年性精品三级网站| 五月婷婷免费在线观看视频| 欧美日韩国产在线观看了| 91高清免费观看在线| 涩涩漫画网站在线观看| 67194久久一区二区| 欧美福利视频一二三| 久久综合色——久久综合色88| 免费av区在线观看| 欧美熟妇搡bbbb水蜜桃| 精品一区二区三区在线免费播放| 亚洲男人天堂111117av| 欧洲av,亚洲av| 久草免费资源视频在线观看| 亚洲自偷自拍另类18p| 午夜男女激情福利视频| 精品国产9999久久久久| 成人18禁视频网站在线看| 天天射天天日天天干天天舔| 自拍分享国产亚洲欧美| 99精产国品一二三产区网站| 少妇高潮精品一区二区| 熟女人妻av中文字幕| 亚洲偷偷自拍视频网| 欧美亚洲国产校园春色| 男的扒开女的下面狂操视频| 国产精品爽黄69天堂ai蜜乳| 日本v片 中文字幕| 韩国一区二区三区在线观看| 超碰超碰超碰超碰超碰超| 成人免费视频国产免费麻豆下| 亚洲欧美精品tv久久久久久久久| 亚洲天堂av插插插| 啪啪小视频免费网站| 亚洲国产精彩中文乱码av| 国产在线观看一区二区不卡| 一区二区三区欧美高清| 男人天堂地址在线播放| 天天插天天摸天天爱| 人妻熟女免费一区二区萩原| 亚洲精品成人原创视频| suv精品一区二区6| 亚洲无码精品中的精品| 麻豆精品午夜福利在线| 勾引小哥鸡巴操逼视频下载| 综合另类小说欧美另类图片| 制服丝袜诱惑综合网| 超碰人妻中文字幕在线| 欧美综合一二区在线| 亚洲综合精品推荐69堂| 天天插天天爱天天日| av一av一av中文字幕| 亚洲一区二区成人综合| 日日夜夜夜操天天干| 国产伦精品三区精品国偷自产在线| 亚洲国产精品自拍视频在线观看| 国产专区视频在线观看免费| 人妻 日韩精品免费| 黄色免费2b网页18岁有声音| 亚洲av好看xx站| 偷拍自拍 中文字幕| av 在线 麻豆| 欧美熟妇搡bbbb水蜜桃| 免费直接观看的麻豆黄色| 午夜精品不卡视频在线观看| 教资是不是人人都可以考| 日本老太婆老熟妇av| 中文字幕亚洲日韩第一页| 蜜臀 av一区二区| 69精品人妻一区二区| 玩弄放荡人妻少妇精品| 狠狠操操操操操操操操操操| 国产三级av在线免费观看 | 亚洲国产精品美女久久久av| 最新天堂一区二区三区| 十八禁视频一区二区三区四区| 国产免费av不卡免费| 国产免费av不卡免费| 亚洲av福利片久久久久| 色欲天天天久久久综合| 日本免费播放一区二区三区| 日韩av免费福利在线观看| 国产超碰人人爽人人做夜色资源| 性色av成年在线观看| 免费在线观看视频色播| 大肉大捧一进一出免费视频网址| 内射一对幼嫩无毛妹| 亚洲 欧美在线视频| 91色porny 在线播放| 精品国产9999久久久久| 在线观看免费黄片欧美| av大片在线观看免费| 人妻 日韩精品免费| 亚洲精品成人a8198| 亚洲国产精品自拍视频在线观看| 青青青青青青青青青青青青青草| 日本v片 中文字幕| 日韩欧美亚洲一区第一| 91人妻人人做人人爽九色全集| 啪啪在线视频免费观看| 黄色污污污网站免费观看| 日韩av在线区二区| 成人午夜伦理在线观看| 97色婷婷久久99国产视频| 老师让我插进去69AV| 男人爽爽女人的视频一区二区三区 | 长久久久久一区二区高清| 日本av都是真做吗| 免费观看视频一区二区三区| 久久久亚洲精品熟妇少妇| 夜夜操夜夜操夜夜爽| 97精品在线观看视频| 蜜臀 av一区二区| 男人的坤插进女人的屁股里的视频| 亚洲三级伦理在线播放| 人人妻在线视频97| 国产精品午夜在线观看| 99热这里只有的精品666| 啪啪啪在线播放视频| 日本a爱视频二区三区| 免费无码专区毛片高潮喷水| 在线视频一视频二视频三| 天天日……天天操……天天喷| 日本免费播放一区二区三区| 亚洲欧美另类专区第一页| 国产传媒网址在线观看| 十八禁视频一区二区三区四区| 天天插天天爱天天日| 农村女人91熟女熟妇| 色噜噜在线综合亚洲欧美| av大片在线观看免费| 成人激情在线一区二区| 久久亚洲伊人99精品影院| 99久久99久久免费精品蜜臀| 漂亮人妻被强制中出| 变态另类97人妻av| 高清日本wwwcom| 在线高清视频你懂得| 操人妻免费视频观看| 五月激情丁香久久亚洲| 三级三级三级日本99| 91表用白丝脚帮我脚交| 亚洲精品专区一区二区| 欧美一级操逼啊啊啊哦哦哦| 国产乱子伦一区=区三区| 久久精精品久久久噜噜| Av资源站中文字幕| 日韩avapp在线| 国产国语露脸在线视频播放| 午夜三级影片免费播放| 亚洲美女乱1区2区3区| 亚洲卡一卡二卡三新区| heyzo久久综合色88| 国产午夜福利精品久久不卡| 色视频免费在线观看视频| 日本av高清免费观看| 欧美激情在线观看一区| 欧美色一区二区三区在线观看 | 免费观看黄色韩日av| 91高清免费观看在线| 亚洲人人妻一区二区三区| 亚洲,自拍,中文,另类| 人人玩精品人妻少妇性性色| 日日夜夜狠狠干干亚洲| 国产日视频在线观看| 日本成人午夜电影视频| 国产一级二级三级亚洲| 免费观看视频一区,二区,三区| 亚洲天堂 校园春色| 色婷婷亚洲久久97成人| 亚洲卡一卡二卡三新区| 在线91精品亚洲网站精品成人| 97视频人人人人人性| 67194久久一区二区| 欧美视频在线观看18| 亚洲久久久久久久久久久久久久| 亚洲自拍偷拍清纯唯美| 欧美亚洲综合偷拍另类| Av资源站中文字幕| 青青草精品视频在线免费观看| 国产免费av不卡免费| 日韩加勒比东京热二区| 在线看片1024你懂得| 久久人人爽人人爽人人亚洲| 99,九九,久久精品| 亚洲国产精品日日夜夜| 国产成人a一区二区| 国产伦精品一区二区黑人| 99久在线精品99re8热视频| 亚洲人成青青操免费观看| 人人妻人人妻人人妻精品| 嗯嗯嗯啊啊啊不要好爽视频| 亚洲激情视频免费在线| 国产麻豆在线av| 亚洲va欧美va人人爽午夜| 99精品国产免费久久久久久| 77777蜜臀精品久久综合| 亚洲免费观看高清在线| 亚洲一区二区三区免费| 最新人妻熟女中文字幕| 丰满的女教师bd视频| 中文字幕黄色av网址| 爆操嫩逼黑丝袜美女小骚逼| 亚洲综合欧美熟一区| 老男人久久青草av高清| 国内精品久久久久精品爽爽 | 在线看片1024你懂得| 97国产在线精品观看| 日韩毛片基地免费看| 99久久精品美女高潮喷水| 亚洲中文字幕av在线播放| 在线播放国产免费av| 性色av一区二区三区观看| 日本公与妇电影三级| 96h久久国产激情| 中文字幕日本一本二本三区| 国内精品视频久久久久| 欧美视频精品免费观看| 隔壁放荡人妻bd完整版| 日韩伦理一区二区三区有码| 亚洲欧美在线色图动态图| 天天操天天摸天天摸| 青青操视频在线免费| 日韩加勒比东京热二区| 精品欧美一亚洲精品午夜| 天天操天天色天天天| 亚洲中文字幕有码电影| 色吊最新在线视频免费观看| 日本公与妇电影三级| 浪荡人妻共32部分黑人| 啊啊啊操死我轮操视频免费| 国产喷水在线免费观看| 亚洲小说区图片另类春色| 可以在线观看的黄色网页| 亚洲永久av午夜福利| 亚洲在线一区二区三区免费| 人人妻人人妻人人妻人人妻人人人 | 国产熟女一区二区三区四| 一级白丝美女久久久久| 超碰在线观看97视频| 久久人人爽人人爽人人亚洲| 黑人熟女一区二区三区| 极品国模sm镣铐调教| 欧美亚洲三级色图网站| 男人天堂新在线电影| 勾引小哥鸡巴操逼视频下载| 正宗欧美在线观看一区二区| 亚洲天堂男人的天堂av| 东方av在线免费进入| 91嫩草精品少妇97九九| 亚洲图片一区偷拍自拍| 天天干天天日天天超| 黄片免费观看久久av| 东京热av在线播放| 成人黄色大全在线观看| 天天色天天爱天天日| 欧美142p极品服务| 欧美在线观看视频一区五区| 午夜福利精品视频在线观看| 筱田优在线播放一区二区三区| 91在线视频只有精品| 极品国模sm镣铐调教| 久久久老熟女一区二区| 91久久精品视频91| 最新人妻熟女中文字幕| 欧美综合一二区在线| 亚洲欧洲美洲无码在线| 欧美亚洲校园春色另类| 欧美丰满熟妇高潮xxxx| 亚洲国产精品国自产拍av在线| 日本片免费a在线观看| 超碰超碰超碰超碰超碰情侣| 久久精品在线观看免费视频| 起碰97视频在线播放| 美女诱惑福利在线视频| 98视频在线免费观看| 亚洲精品少妇蜜桃久久久| 77777蜜臀精品久久综合| 久久精品国产二区AV无码| 亚洲人成青青操免费观看| 亚洲激情视频免费在线| 日本少妇人妻久久中文| 一区二区人妻丝袜粉嫩| 国产白丝美女在线网站| 亚洲欧美一区二区精华液| 一区二区三区在线 日韩| 长久久久久一区二区高清| 国产91精品久久久久高潮| 大肉大捧一进一出免费视频网址| 国产成人一区二区三区久| 欧美va久久久噜噜噜久久| 欧美亚洲天堂不卡视频| 美女草草影院在线观看视频 | japanese五十路熟女熟妇| av一av一av中文字幕| 午夜国产福利视频一区二区| 日韩高清视频在线播放| 人妻天天爽夜夜爽麻豆av| 91九色porny国产探花| 国产乱子伦一区=区三区| 天天爱天天日天天干天天做| 要看tv在线观看欧美日韩| 欧美丝袜熟女日韩亚洲| 99精品视频在线观看专区| 亚洲激情视频免费在线| 国产精品午夜在线观看| yy111111少妇蜜桃| 天天日天天色天天搞| 精品欧美一亚洲精品午夜| 亚洲国产日韩欧美在线观看| 91人妻精品动漫一区二区三区| 韩国一区二区三区在线观看| 男生日女生逼的视频| 久草视频免费在线视频观看| 男女啪啪啪网站入口| 寂寞少妇一区二区三区| 顶级销魂极品少妇在线观看| 91表用白丝脚帮我脚交| 隔壁老王国产在线观看| 人妻中文字幕不卡av观看| 色噜噜在线综合亚洲欧美| 久re这里只有精品视频| 偷拍自拍视频图片免费| 搡四十路e五十路熟女av| 青青青青青青青青草青青| 日日夜夜夜操天天干| 黑人熟女一区二区三区| 中文字幕永久在线一区二区| 亚洲欧美 在线视频| av网址在线观看日韩| yy111111少妇蜜桃| 精品欧美一亚洲精品午夜| 国产剧情swag在线观看| 在线91精品亚洲网站精品成人| 天天操天天湿天天干| 特黄特色大片观看免费| 久久99精品国产99久久6尤| 日本少妇人妻久久中文| 97精品国产高清在线 | 国产精品亚洲综合av| 亚洲天堂欧美中文字幕| 大黑鸡巴 狂插 欧亚小嫩逼| 91精品人妻一区二区三区水蜜桃 | 亚洲国产精彩中文乱码av| 一区二区人妻丝袜粉嫩| 午夜在线看1000集| av 在线 麻豆| 妍强被迫伦姧惨叫123| 日本 久久久 香蕉| 日韩最新视频在线播放| 四川操bb操bb操b| 国产美女高清免费av| 最新日韩成人毛片在线| 五月婷婷综合大香蕉五月天| 蜜桃aⅴ噜噜一区二区三区网址 | 日本片免费a在线观看| 天天操天天摸天天摸| 精品人人妻人人澡人人爽| 最新人妻熟女中文字幕| 午夜精选视频在线观看| 爱人体-看人体人体摄影| 中文字幕永久在线一区二区| 老师让我插进去69AV| 国产美女主播丝袜高潮白浆| 涩涩网站在线观看视频| 色视频免费在线观看视频| 成人午夜伦理在线观看| 成人18禁视频网站在线看| 程嘉美日本全部三级| 日韩欧美一区久久久久久| 最新人妻熟女中文字幕| 亚洲国产日韩a在线欧美2020| 农村女人91熟女熟妇| 亚洲永久av午夜福利| 国产又黄又粗又硬又大又猛的视频| 国产黄色大片在线免费观看| 人妻寝取少妇乱中文字幕| 精品一区二区三区大全| 男人爽爽女人的视频一区二区三区 | 国产又黄又粗又硬又大又猛的视频| 一区二区三区亚洲蜜桃| 国产mm视频在线观看| 伊人大香线蕉亚洲五月天| 不卡精品国产_亚洲人成在线| 国产免费一级高清淫日本片| 久久精品视频全部视频在线| 成人大片精品在线观看| 亚洲综合精品推荐69堂| 1777中文字幕字幕在线播放| 91大屁股人妻porn| 精品人妻欧美一区二区| 天天插天天色天天透| 日韩国产亚洲在线视频| 国语对白xxxx乱大交| 手机能看的黄色av| 99久久香蕉国产线看| 久久精品国产9久久综合| 婷婷av一区二区三区7| 亚洲熟妇av一区二区蜜桃第1集| www国产亚洲天堂| 亚洲男人天堂111117av| 国产高清在线免费视频| 三上悠亚和黑人665番号| 黑人熟女一区二区三区| 极品国模sm镣铐调教| 日韩三级中文字幕熟女| av网站在线免费浏览| 亚洲精品乱码久久观看网| 欧美,日本中文高清视频| 黄色免费2b网页18岁有声音| 26uuu天堂在线青青在线视频 | 狂野小农民在线高清| 超碰超碰超碰超碰超碰超| 日韩加勒比东京热二区| 黄色av日韩免费在线观看| 思思91精品国产综合在线| 91久久香蕉国产熟女| 熟女免费在线观看视频 | av一av一av中文字幕| 偷拍自拍视频图片免费| 青青草成人免费电影| 日本少妇精品bbwbbw| 中文字幕黄色av网址| 伊人精品在线大香蕉| 亚洲成人一区二区三区av| 三上悠亚和黑人665番号| 国产欧美日韩经典一区| 9797人人妻人人澡| 男人天堂地址在线播放| 大香蕉大香蕉在线播放| 国产av综合av国产精品| 国产又黄又粗又硬又大又猛的视频 | 好吊视频一区二 区三区视频| 久re这里只有精品视频| 亚洲真人性在线观看| 亚洲精品 国产成人| 亚洲精品乱码久久观看网| 亚洲视频综合在线播放| 欧美一级操逼啊啊啊哦哦哦| 人人妻在线视频97| 亚洲日本一区二区嫩草| 亚洲国产图片小说一区二区| 4455vw在线观看| 精产国品一二三产区999| 精品人妻欧美一区二区| 国产熟妇一区二区三区av| 国产精品自拍亚洲春色| 99久久精品久久久久久清纯| 日韩最新视频在线播放| 日韩毛片综合在线观看网站| 操日本裸体美女骚逼| 日本性感黑丝美女一区二区| 成人福利视频一区二区| 久久99精品久久久久久小说| 天天插天天爱天天日| 三级三级三级日本99| 精品人妻欧美一区二区| 特黄特色大片观看免费| 亚洲天堂一二三四在线播放| 超碰在线97人人草| 成年人中文字幕视频网| 成全视频免费观看在线下载| 欧美在线播放一二区不卡| 五月婷婷综合久久久| 91精品国产自产在线大长腿| 欧美丝袜熟女日韩亚洲| 不卡一区二区啪啪视频| 性色av成年在线观看| 妍强被迫伦姧惨叫123| 91免费观看国产精品| 东京热av在线播放| 天天摸天天干天天插天天操| 少妇内射的视频一区二区| 最新日韩成人毛片在线| 二根鸡巴日一个穴视频| 亚洲人人妻一区二区三区| 成人熟女一区二区三区| xxxx在线免费观看视频| 午夜啪啪啪免费视频网站| 日韩无码成人电影一区二区| 成人大片精品在线观看| 国产国语露脸在线视频播放| 色噜噜在线综合亚洲欧美| 青青青青青青青青青青青青青草| 搡四十路e五十路熟女av| 日韩一区二区视频在线看| 欧美精品第5页在线观看视频| 天天色天天爱天天舔| 日本 久久久 香蕉| 久精彩视频免费观看| 成人大片免费看45分钟| 大肉大捧一进一出免费视频网址| 在线观看国产影片| 中文字幕亚洲日韩第一页| 最大最全av中文字幕网| 微拍一区二区在线观看| 91国产精品久久久久麻豆| 亚洲av综合久久久久久| 欧美av色香蕉一区二区小说| 啪啪啪在线播放视频| 天天干天天日天天超| 91亚洲国产成人久久| 99精品视频中文字幕| 亚洲情品中文字幕人妻久久久边| 18人妻人碰人人做人人爽| 99精品热视频在线观看| 亚洲 欧洲 国产 麻豆| 久久久久18精品国产乱码78m| 久久少妇精品一区二区免费| 亚洲国产日韩欧美高清片vr| 久久精品亚洲国产| 国产美女视频在线播放| 亚洲欧美精品tv久久久久久久久 | 免费高清视频在线观看不卡男男| 日韩欧美在线一区二区在线| 自拍偷拍 中文字幕 日韩| 国产欧美精品va在线观看| 亚洲va欧美va人人爽午夜 | 亚洲天堂都市激情av| 狂野黑人性猛交xxxxxx| 中文字幕精品av在线观看| 欧美激情自拍2020| 极品国模sm镣铐调教| 超级碰碰碰97免费视频97| 亚洲av好看xx站| 亚洲男人天堂111117av| 精产国品一二三产区999| 丝袜制服 亚洲 国产 91| 免费直接观看的麻豆黄色| 欧洲野外激情性视频| 日韩成人在线电影,| 亚州 欧美日韩人妻熟女| 青草视频在在线成人av| 亚洲日本一区二区嫩草| 欧美一区视频不卡高清| 国产一线女人天堂av| 日韩欧美亚洲在线第一页| 欧美在线观看视频一区五区| 男的扒开女的下面狂操视频| 国产一区三区四区五区| 日本性感黑丝美女一区二区| 狠狠躁日日躁夜夜躁2| 最新人妻熟女中文字幕| 国内人人人妻狠狠狠操操| 午夜精品久久久久久99| 欧美图色 亚洲图色|