92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

配合前端vue實現表格的增刪改查

2021-10-13    前端達人

前言:

        這個章節內容是比較多的,分為前端部分和后端部分。

目錄:

實現效果:增刪改查

 一、后端部分:

(1)數據庫:

        新建一張表user,設置幾個字段,效果如下:

 (2)egg邏輯部分:

提供的接口:http://localhost:7001/setUserList

 (3)egg具體實現步驟:

1、router.js中添加:

2、新建:app / controller / new / user.js

(1)查,模糊查詢 

(2)增

 (3)改

 (4)刪

 user.js 源碼:

3、引入mysql:點我

4、跨域問題解決:點我

 二、前端部分:

新建vue文件:testApi.vue

1、初始化查詢列表數據:頁面展示列表,列表數據mouted獲取

2、頁面點擊新增:展示彈框,并將彈框內容去除掉,點擊新增,將彈框內容發送給后端

 3、頁面點擊列表里面具體數據的編輯:彈框,并回填數據,修改將當前數據的id和表格數據傳給后端

4、刪除按鈕,點擊出現二次確認彈框,點擊確認將當前數據的id給后端就行 

 testApi.vue 源碼:


實現效果:增刪改查

 一、后端部分:

(1)數據庫:

        新建一張表user,設置幾個字段,效果如下:

 (2)egg邏輯部分:

提供的接口:http://localhost:7001/setUserList

  1. get 請求,獲取數據,支持模糊查詢
  2. post 請求,新增數據
  3. put 請求,給后端當前數據id,修改內容
  4. delete 請求,根據數據id刪除當前條數據

 (3)egg具體實現步驟:

1、router.js中添加:

 
  1. /**
  2. * 路由配置
  3. * @param app
  4. */
  5. module.exports = app => {
  6. const { router, controller } = app;
  7. //--------------------------------------------------
  8. // server接口
  9. //--------------------------------------------------
  10. app.get('/setUserList', controller.new.user.getUserList);
  11. app.post('/setUserList', controller.new.user.postUserList);
  12. app.put('/setUserList', controller.new.user.putUserList);
  13. app.delete('/setUserList', controller.new.user.deleteUserList);
  14. }

2、新建:app / controller / new / user.js

(1)查,模糊查詢 

select * from user where name like ? % 內容 %

(2)增

this.app.mysql.insert('表名',內容)

 (3)改

UPDATE loginlist SET `password` = 'Ad123456' WHERE id = 2

 (4)刪

delete from user where id = 1

 user.js 源碼:

 
  1. /**
  2. * 用戶信息路由
  3. * @param app
  4. * @returns {HomeController}
  5. */
  6. const Controller = require('egg').Controller;
  7. class NewsController extends Controller {
  8. async getUserList() {
  9. //查詢庫里的user表
  10. let params = this.ctx.query //獲取路徑后面的參數
  11. console.log('用戶的參數:');
  12. console.log(params);
  13. let sql = 'select * from user'
  14. let initSql = sql
  15. let content = [];//參數
  16. let isMore = false;//是否有多個查詢參數
  17. /**
  18. * @模糊查詢-量大的時候效率低
  19. * select * from user where name like ? % 內容 %
  20. * 在user表中全局查找name值 == 內容的
  21. * % 內容 % 全局查找內容
  22. * 內容 % 查找以 內容 開頭的數據
  23. * */
  24. if(params.name){
  25. sql += " where name like ?";
  26. content.push( "%"+params.name+"%" );
  27. isMore = true;
  28. }
  29. if(params.age){
  30. if(isMore){//true代表有多個參數
  31. sql += "and age LIKE ?";//and是兩個條件都必須滿足,or是或的關系
  32. }else{
  33. sql += " WHERE age LIKE ?";
  34. }
  35. content.push( "%"+params.age+"%" )
  36. isMore = true;
  37. }
  38. if(params.address){
  39. if(isMore){//true代表有多個參數
  40. sql += "and address LIKE ?";//and是兩個條件都必須滿足,or是或的關系
  41. }else{
  42. sql += " WHERE address LIKE ?";
  43. }
  44. content.push( "%"+params.address+"%" )
  45. isMore = true;
  46. }
  47. if(params.phone){
  48. if(isMore){//true代表有多個參數
  49. sql += "and phone LIKE ?";//and是兩個條件都必須滿足,or是或的關系
  50. }else{
  51. sql += " WHERE phone LIKE ?";
  52. }
  53. content.push( "%"+params.phone+"%" )
  54. }
  55. //開啟分頁
  56. if(params.page || params.pageSize){
  57. let current = params.page;//當前頁碼
  58. let pageSize = params.pageSize;//一頁展示多少條數據
  59. sql += " limit ?,?";
  60. content.push((current-1)*pageSize,parseInt(pageSize));
  61. }
  62. let allList = await this.app.mysql.query(initSql);
  63. let userList= await this.app.mysql.query(
  64. sql,content
  65. );
  66. this.ctx.body = {
  67. code:200,
  68. masg:'success',
  69. data: {
  70. list:userList,
  71. total:allList.length
  72. }
  73. };
  74. }
  75. /**
  76. * 新增用戶信息
  77. * INSERT INTO loginlist (aaa,bbb,ccc) VALUES ('"'+111+'","'+222+'","'+333+'"')
  78. * this.app.mysql.insert('表名',內容)
  79. * this.app.mysql.insert('表名',{
  80. * name:123,
  81. * age:1,
  82. * address:西安
  83. * })
  84. */
  85. //
  86. async postUserList() {
  87. console.log(this.ctx.request.body);
  88. //新增數據-user表
  89. let data = this.ctx.request.body
  90. data.id = parseInt(Math.random()*100000)
  91. let insertResult = await this.app.mysql.insert(
  92. 'user', data
  93. );
  94. this.ctx.body = {
  95. code:200,
  96. masg:'success',
  97. data:insertResult
  98. };
  99. }
  100. /**
  101. * 修改用戶信息
  102. * UPDATE loginlist SET `password` = 'Ad123456' WHERE id = 2(唯一值),修改一個
  103. * UPDATE loginlist SET username = 'admins', `password` = 'Ad123456' WHERE id = 2,修改多個
  104. */
  105. async putUserList(){
  106. //新增數據-user表
  107. let id = this.ctx.query.id //獲取路徑后面的參數
  108. let data = this.ctx.request.body
  109. let sql = 'update user set '
  110. let isMore = false;//是否有多個查詢參數
  111. if(!id){
  112. this.ctx.body = {
  113. code:200,
  114. masg:'warning',
  115. data:'id沒有傳'
  116. };
  117. return
  118. }
  119. //姓名
  120. if(data.name){
  121. sql += 'name = "'+data.name+'"'
  122. isMore = true
  123. }
  124. //年齡
  125. if(data.age){
  126. if(isMore){
  127. sql += ',age = "'+data.age+'"'
  128. }else{
  129. sql += 'age = "'+data.age+'"'
  130. }
  131. isMore = true
  132. }
  133. //地址
  134. if(data.address){
  135. if(isMore){
  136. sql += ',address = "'+data.address+'"'
  137. }else{
  138. sql += 'address = "'+data.address+'"'
  139. }
  140. isMore = true
  141. }
  142. //手機號
  143. if(data.phone){
  144. if(isMore){
  145. sql += ',phone = "'+data.phone+'"'
  146. }else{
  147. sql += 'phone = "'+data.phone+'"'
  148. }
  149. isMore = true
  150. }
  151. //郵箱地址
  152. if(data.email){
  153. if(isMore){
  154. sql += ',email = "'+data.email+'"'
  155. }else{
  156. sql += 'email = "'+data.email+'"'
  157. }
  158. }
  159. sql += ' where id = ' + id
  160. let insertResult = await this.app.mysql.query(sql)
  161. this.ctx.body = {
  162. code:200,
  163. masg:'success',
  164. data:insertResult
  165. };
  166. }
  167. /**
  168. * 注銷用戶接口
  169. * DELETE FROM loginlist WHERE username = 'superman'
  170. */
  171. async deleteUserList(){
  172. //查詢庫里的user表
  173. let params = this.ctx.query //獲取路徑后面的參數
  174. console.log('用戶的參數:');
  175. console.log(params);
  176. let sql = 'delete from user where id = '+ params.id
  177. let res = await this.app.mysql.query(
  178. sql
  179. );
  180. this.ctx.body = {
  181. code:200,
  182. masg:'success',
  183. data:res
  184. };
  185. }
  186. /**
  187. * 模糊查詢封裝方法
  188. * @params = auth
  189. * */
  190. async query( auth ) {
  191. const TABLE_NAME = 'user';
  192. const QUERY_STR = 'id, name, age, phone, address';
  193. let sql = `select ${QUERY_STR} from ${TABLE_NAME} where authName like "%${auth.authName}%"`;
  194. const row = await this.app.mysql.query(sql);
  195. return row;
  196. }
  197. }
  198. module.exports = NewsController;

3、引入mysql:點我

4、跨域問題解決:點我

 二、前端部分:

新建vue文件:testApi.vue

1、初始化查詢列表數據:頁面展示列表,列表數據mouted獲取

 
  1. <el-table
  2. :data="tableInfo.list"
  3. style="width: 100%">
  4. <el-table-column
  5. type="index"
  6. label="序號"
  7. align="center">
  8. </el-table-column>
  9. <el-table-column
  10. prop="name"
  11. label="姓名"
  12. align="center">
  13. </el-table-column>
  14. <el-table-column
  15. prop="age"
  16. label="年齡"
  17. align="center">
  18. </el-table-column>
  19. <el-table-column
  20. prop="address"
  21. label="地址">
  22. </el-table-column>
  23. <el-table-column
  24. prop="phone"
  25. label="手機號">
  26. </el-table-column>
  27. <el-table-column
  28. prop="email"
  29. label="郵箱">
  30. </el-table-column>
  31. <el-table-column
  32. label="操作"
  33. width="100">
  34. <template slot-scope="scope">
  35. <el-button type="text" size="small" @click="editFun(scope.row)">編輯</el-button>
  36. <el-button type="text" size="small" @click="deleteFun(scope.row)">刪除</el-button>
  37. </template>
  38. </el-table-column>
  39. </el-table>
 
  1. mounted(){
  2. this.initPage()
  3. },
  4. methods: {
  5. /***
  6. * 獲取列表數據
  7. */
  8. initPage() {
  9. let params = {
  10. page: this.tableInfo.page, //當前頁
  11. pageSize: this.tableInfo.pageSize //一頁展示多少條
  12. }
  13. this.$axios.get('http://localhost:7001/setUserList',{
  14. params
  15. }).then(res => {
  16. this.tableInfo.list = res.data.data.list
  17. this.tableInfo.total = res.data.data.total
  18. }).catch(error => {
  19. this.$message(error.data.message)
  20. })
  21. },
  22. }

2、頁面點擊新增:展示彈框,并將彈框內容去除掉,點擊新增,將彈框內容發送給后端

 3、頁面點擊列表里面具體數據的編輯:彈框,并回填數據,修改將當前數據的id和表格數據傳給后端

 

 

4、刪除按鈕,點擊出現二次確認彈框,點擊確認將當前數據的id給后端就行 

 testApi.vue 源碼:

 
  1. <template>
  2. <div class="pro_body">
  3. <el-button type='success' @click="addModal">新增</el-button>
  4. <el-table
  5. :data="tableInfo.list"
  6. style="width: 100%">
  7. <el-table-column
  8. type="index"
  9. label="序號"
  10. align="center">
  11. </el-table-column>
  12. <el-table-column
  13. prop="name"
  14. label="姓名"
  15. align="center">
  16. </el-table-column>
  17. <el-table-column
  18. prop="age"
  19. label="年齡"
  20. align="center">
  21. </el-table-column>
  22. <el-table-column
  23. prop="address"
  24. label="地址">
  25. </el-table-column>
  26. <el-table-column
  27. prop="phone"
  28. label="手機號">
  29. </el-table-column>
  30. <el-table-column
  31. prop="email"
  32. label="郵箱">
  33. </el-table-column>
  34. <el-table-column
  35. label="操作"
  36. width="100">
  37. <template slot-scope="scope">
  38. <el-button type="text" size="small" @click="editFun(scope.row)">編輯</el-button>
  39. <el-button type="text" size="small" @click="deleteFun(scope.row)">刪除</el-button>
  40. </template>
  41. </el-table-column>
  42. </el-table>
  43. <el-pagination
  44. class="work_pagination"
  45. background
  46. :layout="'total,prev, pager, next,sizes'"
  47. :total="tableInfo.total"
  48. :hide-on-single-page="false"
  49. :current-page="tableInfo.page"
  50. :page-size="tableInfo.pageSize"
  51. @current-change="pageChange"
  52. @size-change="pageSizeChange"
  53. >
  54. </el-pagination>
  55. <!--彈框部分-->
  56. <el-dialog
  57. custom-class="modalName"
  58. :visible.sync="modal.show"
  59. :width="modal.type === 'delete'? '470px' : '800px'">
  60. <h3 v-if="modal.type === 'add'" slot="title">新增</h3>
  61. <h3 v-if="modal.type === 'edit'" slot="title">修改</h3>
  62. <h3 v-if="modal.type === 'delete'" slot="title">提示</h3>
  63. <div v-if="modal.type !== 'delete'" class="editNameBody">
  64. <el-form class="editNameFrom" :model="modalFrom" label-width="120px" label-position="right">
  65. <el-form-item label="姓名:">
  66. <el-input v-model="modalFrom.name"></el-input>
  67. </el-form-item>
  68. <el-form-item label="年紀:">
  69. <el-input v-model="modalFrom.age"></el-input>
  70. </el-form-item>
  71. <el-form-item label="手機號:">
  72. <el-input v-model="modalFrom.phone"></el-input>
  73. </el-form-item>
  74. <el-form-item label="郵箱:">
  75. <el-input v-model="modalFrom.email"></el-input>
  76. </el-form-item>
  77. <el-form-item label="地址:">
  78. <el-input v-model="modalFrom.address" type="textarea"></el-input>
  79. </el-form-item>
  80. </el-form>
  81. </div>
  82. <div v-if="modal.type === 'delete'">
  83. <i class="el-icon-warning" style="margin-right:7px;color:#FFAA00;font-size: 16px;"></i>請確認是否刪除
  84. </div>
  85. <div slot="footer" class="dialog-footer">
  86. <el-button @click="modal.show = false">取 消</el-button>
  87. <el-button v-if="modal.type === 'add'" type="primary" @click="addUserList">新增</el-button>
  88. <el-button v-if="modal.type === 'edit'" type="primary" @click="editUserList">修改</el-button>
  89. <el-button v-if="modal.type === 'delete'" type="primary" @click="deleteUserList">確 認</el-button>
  90. </div>
  91. </el-dialog>
  92. </div>
  93. </template>
  94. <script>
  95. export default {
  96. data() {
  97. return {
  98. tableInfo:{
  99. columns:[
  100. {
  101. title: '序號',
  102. type: 'index',
  103. },{
  104. title: '姓名',
  105. prop: 'name',
  106. align: 'center'
  107. },
  108. {
  109. title: '年齡',
  110. prop: 'age',
  111. align: 'center'
  112. },{
  113. title: '地址',
  114. prop: 'address',
  115. align: 'center'
  116. },{
  117. title: '郵箱',
  118. prop: 'email',
  119. align: 'center'
  120. },{
  121. title: '手機號',
  122. prop: 'phone',
  123. align: 'center'
  124. },
  125. {//內容slot
  126. slot: 'operateT'
  127. }
  128. ],
  129. list:[],
  130. page:1,
  131. pageSize:10,
  132. total:0,
  133. },
  134. modal:{
  135. show:false,
  136. type:'add'
  137. },
  138. modalFrom:{
  139. name:'',
  140. age:'',
  141. phone:'',
  142. address:'',
  143. email:''
  144. }
  145. };
  146. },
  147. mounted(){
  148. this.initPage()
  149. },
  150. methods: {
  151. /***
  152. * 獲取列表數據
  153. */
  154. initPage() {
  155. let params = {
  156. page: this.tableInfo.page, //當前頁
  157. pageSize: this.tableInfo.pageSize //一頁展示多少條
  158. }
  159. this.$axios.get('http://localhost:7001/setUserList',{
  160. params
  161. }).then(res => {
  162. this.tableInfo.list = res.data.data.list
  163. this.tableInfo.total = res.data.data.total
  164. }).catch(error => {
  165. this.$message(error.data.message)
  166. })
  167. },
  168. /**
  169. * 當前頁發生改變
  170. * */
  171. pageChange(page) {
  172. this.tableInfo.page = page
  173. this.initPage() //刷新列表數據
  174. },
  175. /**
  176. * 當前第幾頁發生改變
  177. * */
  178. pageSizeChange(pageSize) {
  179. this.tableInfo.page = 1
  180. this.tableInfo.pageSize = pageSize
  181. this.initPage() //刷新列表數據
  182. },
  183. //新增彈框
  184. addModal(){
  185. this.modalFrom ={
  186. name:'',
  187. age:'',
  188. phone:'',
  189. address:'',
  190. email:''
  191. }
  192. this.modal.show = true
  193. this.modal.type = 'add'
  194. },
  195. //修改彈框
  196. editFun(row){
  197. this.modalFrom = row
  198. this.modal.show = true
  199. this.modal.type = 'edit'
  200. },
  201. //刪除彈框
  202. deleteFun(row){
  203. this.modalFrom = row
  204. this.modal.show = true
  205. this.modal.type = 'delete'
  206. },
  207. addUserList(){
  208. this.$axios({
  209. method:'post',
  210. url:'http://localhost:7001/setUserList',
  211. data:this.modalFrom
  212. }).then(res => {
  213. this.$message.success('新增成功')
  214. this.initPage() //刷新數據
  215. this.modal.show = false
  216. })
  217. },
  218. editUserList(){
  219. this.$axios({
  220. method:'put',
  221. url:'http://localhost:7001/setUserList',
  222. params:{
  223. id:this.modalFrom.id
  224. },
  225. data:this.modalFrom
  226. }).then(res => {
  227. this.$message.success('修改成功')
  228. this.initPage() //刷新數據
  229. this.modal.show = false
  230. })
  231. },
  232. deleteUserList(){
  233. this.$axios({
  234. method:'delete',
  235. url:'http://localhost:7001/setUserList',
  236. params:{
  237. id:this.modalFrom.id
  238. }
  239. }).then(res => {
  240. this.$message.success('刪除成功')
  241. this.initPage() //刷新數據
  242. this.modal.show = false
  243. })
  244. }
  245. }
  246. }
  247. </script>
  248. <style lang='scss'>
  249. .modalName{
  250. h3{
  251. padding:10px;
  252. }
  253. }
  254. </style>


藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請掃碼藍小助,報下信息,藍小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務合作,也請與我們聯系。

分享此文一切功德,皆悉回向給文章原作者及眾讀者.

轉自:csdn
免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。

藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務

日歷

鏈接

個人資料

藍藍設計的小編 http://m.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
国产精品一区二区中文字幕| 国产欧美一区二区三区米奇| 一本色道久久88亚洲综合88| 国产精品一区二区精品| 欧美+日本+国产+在线a∨观看| 久久电影tv| 欧美不卡视频一区发布| 不卡的av在线播放| 日本免费久久高清视频| 久久综合色之久久综合| 国产 日韩 欧美 综合 一区| 久久久噜久噜久久综合| xxxxx91麻豆| 日韩成人中文电影| 欧美日韩国产精品专区| 欧美三级华人主播| 在线观看视频一区| 高清欧美性猛交xxxx黑人猛交| 在线亚洲男人天堂| 日韩中文字幕av在线| 亚洲变态欧美另类捆绑| 色悠悠亚洲一区二区| 1024成人| 美女av一区二区三区| 欧美性生活一级片| 99久久亚洲一区二区三区青草| 91在线看国产| 国产中文欧美日韩在线| 2021年精品国产福利在线| 日本免费成人| 在线观看中文| 成人在线免费观看网站| 奇米影视首页 狠狠色丁香婷婷久久综合| 一区二区三区四区av| 成人午夜激情在线| 99这里有精品| 在线视频自拍| 欧美二区在线| 91九色在线视频| xxxcom在线观看| 国产激情在线观看| 里番精品3d一二三区| 91九色对白| 久久激情婷婷| 欧美色图首页| 亚洲人成7777| 亚洲最大在线视频| 日韩精品在线观看网站| 国产98色在线| 亚洲图片一区二区| 婷婷久久综合九色综合伊人色| 丁香影院在线| 精品久久久999| 欧美在线播放一区| 亚洲视频在线免费观看| 日韩视频中文字幕| 欧美精品一区二区三区国产精品| 国产目拍亚洲精品99久久精品| 成人动漫在线免费观看| 乱一区二区三区在线播放| www..com久久爱| 久久精品日韩| 中文无码日韩欧| 欧美久久久久久久久中文字幕| 欧洲一区二区三区在线| 亚洲欧美卡通另类91av| 国产一区精品福利| 国产午夜精品全部视频播放| 日韩欧美国产视频| 欧美一区二区观看视频| 亚洲欧洲国产日韩精品| 亚洲欧美日韩精品久久奇米色影视| 在线视频日韩| 欧美视频国产精品| 狂野欧美xxxx韩国少妇| 2020国产精品久久精品不卡| 91在线观看免费观看| 欧美一区二区视频免费观看| 欧美午夜在线播放| 国产成人av电影在线观看| 亚洲综合色激情五月| 久久久久久九九九九| 亚洲宅男网av| 中文字幕久久亚洲| 一本一本久久a久久综合精品| 国产精品另类一区| 日本高清成人vr专区| 91欧美国产| 免费的黄网站在线观看| 韩国一区二区电影| 2019日本中文字幕| 夜夜嗨网站十八久久| 丁香花高清在线观看完整版| 日韩电影在线观看电影| 国产不卡高清在线观看视频| 免费av在线播放| 天天做天天爱天天综合网| 精品日韩视频在线观看| 精品一区二区三区中文字幕在线| 国产亚洲在线观看| 国产精品第1页| 日韩一区二区三免费高清| 成人国产精品久久久久久亚洲| 欧洲成人一区| 日韩av一区在线| 亚洲bt欧美bt精品777| 欧美禁忌电影网| 亚洲国产毛片aaaaa无费看| 久久精品久久综合| 亚洲一区二区日本| 乱色588欧美| 五月天国产一区| 亚洲欧美综合一区| 欧美影视一区| 国产国语刺激对白av不卡| 国产精品日本一区二区| 日本高清久久一区二区三区| 久久久影视精品| 国产精品美女久久久久久免费| 无码国模国产在线观看| 亚洲欧洲综合另类在线| 最新国产精品精品视频| 你懂的网址一区二区三区| 日本一区福利在线| 亚洲黄色录像片| 91精品国产色综合久久不卡蜜臀| 九九国产精品视频| 亚洲精品久久久久久一区二区| 久久久久久久久久久9不雅视频| 亚洲精品电影在线| 日韩精品伦理第一区| 欧美日韩精品在线播放| 国产欧美一区在线| 欧美综合久久久| 东方欧美亚洲色图在线| 亚洲精品国产setv| 欧美成人有码| 国产精欧美一区二区三区| 午夜精品久久久久久久久久久久久| 99久久免费国| 四虎成人av| 色婷婷久久一区二区三区麻豆| 黄色成年人视频在线观看| 欧美老肥妇做.爰bbww| 999久久久国产精品| 国模精品视频| 国产一区视频在线看| 久久韩国免费视频| 91亚洲精品在看在线观看高清| 久久久久国产一区二区三区四区| 99蜜月精品久久91| 国产三级精品视频| 伊人久久婷婷| 91激情在线| 在线一区二区三区四区五区| 亚洲欧美成人网| 亚洲加勒比久久88色综合| 天堂资源在线中文精品| 成人精品国产免费网站| 51午夜精品视频| 99久久er热在这里只有精品15| 国产精品成人一区二区网站软件| 国产午夜精品在线观看| 日韩电影中文字幕在线|