自使用高度 瀑布流加载

This commit is contained in:
WangHao
2020-10-02 11:44:36 +08:00
parent 35da92f42c
commit d35593e8e9
3 changed files with 623 additions and 550 deletions

View File

@ -6,6 +6,7 @@
<meta name="renderer" content="webkit"> <meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> <link rel="icon" href="<%= BASE_URL %>favicon.ico">
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<title><%= webpackConfig.name %></title> <title><%= webpackConfig.name %></title>
<style> <style>
html, html,

View File

@ -34,6 +34,7 @@
} }
} }
/* >>> md*/ /* >>> md*/
@ -65,7 +66,9 @@
.addbookmarkurl-input { .addbookmarkurl-input {
width: 73%!important; width: 73%!important;
} }
.classification {
margin-left: 0px!important;
}
} }
/* iphone6 7 8 plus */ /* iphone6 7 8 plus */

View File

@ -1,5 +1,3 @@
<template> <template>
<div> <div>
@ -68,18 +66,25 @@
</div> </div>
<div class="bookmarklist" :style="datalist" v-loading="loading" v-if="showbookmark" v-infinite-scroll="load"
infinite-scroll-disabled="disabled" style="overflow:auto;" infinite-scroll-immediate="false">
<div class="bookmarklist" v-loading="loading" v-if="showbookmark" >
<el-row> <el-row>
<hr class="bookamrk-hr"/> <hr class="bookamrk-hr"/>
<el-col :span="24" v-for="bm in bookmarkList"> <el-col :span="24" v-for="bm in bookmarkList">
<div class="editBookamrk"> <div class="editBookamrk">
<div class="editlist"> <div class="editlist">
<div> <el-button plain size="small" @click="handleUpdate(bm.bookmarkId)">修改</el-button></div> <div>
<div> <el-button plain size="small" @click="handleDelete(bm.bookmarkId)">删除</el-button></div> <el-button plain size="small" @click="handleUpdate(bm.bookmarkId)">修改</el-button>
<div> <el-button plain size="small">笔记</el-button></div> </div>
<div> <el-button plain size="small">分享</el-button></div> <div>
<el-button plain size="small" @click="handleDelete(bm.bookmarkId)">删除</el-button>
</div>
<div>
<el-button plain size="small">笔记</el-button>
</div>
<div>
<el-button plain size="small">分享</el-button>
</div>
</div> </div>
</div> </div>
@ -93,11 +98,17 @@
<div class="info"> <div class="info">
<div class="bookmark-icon"> <div class="bookmark-icon">
<!-- <img :err-src='bm.icon' :ng-src="bm.icon" :src="bm.icon" />--> <!-- <img :err-src='bm.icon' :ng-src="bm.icon" :src="bm.icon" />-->
<img :ng-src="'https://favicon.lucq.fun/?url=http://'+bm.urls" :src="'https://favicon.lucq.fun/?url=http://'+bm.urls" onerror="this.src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAmVJREFUSMftlG1IU2EUx8+5jRHzg+5OiD64WTBBjSY5ZybUJMaMiIUICUKFIGmoIIogYWKFBmtDxN1tBKIWvlS6SR+iLFDBXqSMgmzbvQ7fkAjcINmQ5u7pQwyCiOvWx/p/fPj9/5znnPM8AP+VolRTjjHhTlmZipzEk9GYao4sVaMYxXp62NgIdpLBCuLP05mZZHOYZA3p5KgMjBcUwCmw4PfVVYiBGmbW1zMzOU4QCgtTvdAeRESEyNZyJbx+dDTjVv/9YFSjSScnfabsbPYMF+AbxsYS3F5TfwPZAacpMNfUBEAljK24mMJwlLIUClTAdfwok9FXWBTtc3Phzqv7c/RWa8KnrHZM8VltbRjC92AxGkEPRpSJInjJQPpIBJoZC6nn50M19dM5J/v6/lhRxgXXDX9Qp1POcmHh2sTEQbfbvVmrUCTbr4RPaeMe8Q0eTyI36VkrW50mftjrPWCyDn9oSUuTdj4Y/1Qpl7NdzkNC98iIqsIxHdQVFaU8eWW1U1guLy1lr3Acr3O7pXi227EhDLpcCZ8UL/kK8LIYjxtDIRhEP8xGIlI8bcAKvY3FGB/zYvf81pYUL/0PvGTKoTUvjzbgCx5ZWlJq3a5lQa1Ge3yTWnp64ASYqVcUoXn3Jtja2/EpRtHj89FF8Tb25ufDOwCo8/lSL0BF/eDPzcVXeA7WDAa6J9rES1VVdJqx41JHBwCE8BgA3JU9B+3AACziMwjv7MAaPQb/wgIAnP2rDpCWtpkncjm+Ro34bWgo3FkX0O6bnARARCT6hSR6YzazXa7DfLyigo7TNtObxNb/s/oB7V8JFvW/8IQAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMDItMDJUMTg6MTE6NTgrMDg6MDCoc6tpAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTAyLTAyVDE4OjExOjU4KzA4OjAw2S4T1QAAAGd0RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fNWhyOG55Nmo1bWMvamluZ2RpYW5hbmxpX2tvbmd3dWppYW94aW5nX3Nob3VjYW5nLnN2Z4/vilwAAAAASUVORK5CYII='" alt="" ng-show="bm.urls"> <img :ng-src="'https://favicon.lucq.fun/?url=http://'+bm.urls"
:src="'https://favicon.lucq.fun/?url=http://'+bm.urls"
onerror="this.src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAmVJREFUSMftlG1IU2EUx8+5jRHzg+5OiD64WTBBjSY5ZybUJMaMiIUICUKFIGmoIIogYWKFBmtDxN1tBKIWvlS6SR+iLFDBXqSMgmzbvQ7fkAjcINmQ5u7pQwyCiOvWx/p/fPj9/5znnPM8AP+VolRTjjHhTlmZipzEk9GYao4sVaMYxXp62NgIdpLBCuLP05mZZHOYZA3p5KgMjBcUwCmw4PfVVYiBGmbW1zMzOU4QCgtTvdAeRESEyNZyJbx+dDTjVv/9YFSjSScnfabsbPYMF+AbxsYS3F5TfwPZAacpMNfUBEAljK24mMJwlLIUClTAdfwok9FXWBTtc3Phzqv7c/RWa8KnrHZM8VltbRjC92AxGkEPRpSJInjJQPpIBJoZC6nn50M19dM5J/v6/lhRxgXXDX9Qp1POcmHh2sTEQbfbvVmrUCTbr4RPaeMe8Q0eTyI36VkrW50mftjrPWCyDn9oSUuTdj4Y/1Qpl7NdzkNC98iIqsIxHdQVFaU8eWW1U1guLy1lr3Acr3O7pXi227EhDLpcCZ8UL/kK8LIYjxtDIRhEP8xGIlI8bcAKvY3FGB/zYvf81pYUL/0PvGTKoTUvjzbgCx5ZWlJq3a5lQa1Ge3yTWnp64ASYqVcUoXn3Jtja2/EpRtHj89FF8Tb25ufDOwCo8/lSL0BF/eDPzcVXeA7WDAa6J9rES1VVdJqx41JHBwCE8BgA3JU9B+3AACziMwjv7MAaPQb/wgIAnP2rDpCWtpkncjm+Ro34bWgo3FkX0O6bnARARCT6hSR6YzazXa7DfLyigo7TNtObxNb/s/oB7V8JFvW/8IQAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMDItMDJUMTg6MTE6NTgrMDg6MDCoc6tpAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTAyLTAyVDE4OjExOjU4KzA4OjAw2S4T1QAAAGd0RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fNWhyOG55Nmo1bWMvamluZ2RpYW5hbmxpX2tvbmd3dWppYW94aW5nX3Nob3VjYW5nLnN2Z4/vilwAAAAASUVORK5CYII='"
alt="" ng-show="bm.urls">
</div> </div>
<div class="bookmark-official">{{bm.urls}}&nbsp;·&nbsp;</div><div class="bookmark-time">{{bm.createTime|changeTime}}</div> <div class="bookmark-official">{{bm.urls}}&nbsp;·&nbsp;</div>
<div class="bookmark-time">{{bm.createTime|changeTime}}</div>
<div class="bookmark-time" v-for="t in bm.sqTags"> <div class="bookmark-time" v-for="t in bm.sqTags">
<el-tag class="bookmark-list-tag" data-bookmarkId="t.bookmarkId" data-tagId="t.tagId}" size="mini">{{t.name}}</el-tag> <el-tag class="bookmark-list-tag" data-bookmarkId="t.bookmarkId" data-tagId="t.tagId}" size="mini">
{{t.name}}
</el-tag>
</div> </div>
@ -105,10 +116,11 @@
</div> </div>
</div> </div>
</div> </div>
<el-divider class="bookmark-hr"></el-divider>
</el-col> </el-col>
</el-row>
</el-row>
<p v-if="listloading" class="listhint"><i class="el-icon-loading"></i>加载中...</p>
<p v-if="noMore" class="listhint">没有更多了</p>
</div> </div>
@ -162,24 +174,20 @@
<el-form-item label="选择状态" prop="start"> <el-form-item label="选择状态" prop="start">
<el-radio-group v-model="form.start" size="medium"> <el-radio-group v-model="form.start" size="medium">
<el-radio v-for="(item, index) in bookmarkstatus" :key="index" :label="item.value" <el-radio v-for="(item, index) in bookmarkstatus" :key="index" :label="item.value"
:disabled="item.disabled">{{item.name}}</el-radio> :disabled="item.disabled">{{item.name}}
</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<!-- 1.未读稍后再看 2 已读 2.續看--> <!-- 1.未读稍后再看 2 已读 2.續看-->
<el-form-item label="选择类型" prop="type"> <el-form-item label="选择类型" prop="type">
<el-radio-group v-model="form.type" size="medium"> <el-radio-group v-model="form.type" size="medium">
<el-radio v-for="(item, index) in bookmarktype" :key="index" :label="item.value" <el-radio v-for="(item, index) in bookmarktype" :key="index" :label="item.value"
:disabled="item.disabled">{{item.name}}</el-radio> :disabled="item.disabled">{{item.name}}
</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button> <el-button type="primary" @click="submitForm"> </el-button>
@ -188,18 +196,22 @@
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { selectBymenuIdUserID,selectBydelete,selectByUseridList, getBookmark, delBookmark, addBookmark, updateBookmark, exportBookmark } from "@/api/bookmark/bookmark"; import {
selectBymenuIdUserID,
selectBydelete,
selectByUseridList,
getBookmark,
delBookmark,
addBookmark,
updateBookmark,
exportBookmark
} from "@/api/bookmark/bookmark";
import {format} from 'timeago.js'; import {format} from 'timeago.js';
export default { export default {
@ -215,6 +227,7 @@
title: "", title: "",
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
busy: false,
showbookmark: true, showbookmark: true,
showimg: false, showimg: false,
loading: false, loading: false,
@ -242,8 +255,7 @@
// 表单参数 // 表单参数
form: {}, form: {},
// 表单校验 // 表单校验
rules: { rules: {},
},
bookmarkstatus: [{ bookmarkstatus: [{
"name": "公开", "name": "公开",
"value": 1 "value": 1
@ -261,6 +273,11 @@
"name": "待续读", "name": "待续读",
"value": 3 "value": 3
}], }],
datalist: {
height: "",
},
listloading: false,//滚动加载提示
datalistcount:500,
} }
}, },
@ -272,6 +289,23 @@
return format(time, 'zh_CN'); //转换成类似于几天前的格式 return format(time, 'zh_CN'); //转换成类似于几天前的格式
} }
}, },
mounted() {
// document.querySelector("#datalist").addEventListener('scroll', this.handleScroll)
},
computed:{
/**list加载完毕就禁止滚动**/
noMore() {
console.log(this.bookmarkList.length)
console.log(this.datalistcount)
// return this.bookmarkList.length >= this.datalistcount;
//TRUE 不滑动了
return false;
},
/**是否禁用滚动**/
disabled(){
return this.listloading || this.noMore
}
},
created() { created() {
var that = this; var that = this;
var routedata = that.$route.query.menuId; var routedata = that.$route.query.menuId;
@ -294,9 +328,12 @@
this.getList(); this.getList();
} }
//自动获取高度
window.addEventListener('resize', this.getHeight);
this.getHeight()
}, },
mounted() { mounted() {
//初始化
this.newBookmark(); this.newBookmark();
}, },
methods: { methods: {
@ -306,6 +343,22 @@
document.getElementsByClassName("classification")[0].classList.add("classification-click"); document.getElementsByClassName("classification")[0].classList.add("classification-click");
}, },
/**自动获取高度**/
getHeight() {
// if (window.innerHeight<=750) {
// this.asideHeight.height=='750px';
// return;
// }
this.datalist.height = (window.innerHeight - (window.innerHeight / 7.5)) + 'px';
},
/**滚动监控**/
load() {
this.listloading = true
this.bookmarkList = this.bookmarkList.concat(this.bookmarkList, this.bookmarkList);
this.listloading = false
},
/**切换显示 全部 网页 文本 其他**/ /**切换显示 全部 网页 文本 其他**/
showopen(e) { showopen(e) {
@ -412,7 +465,8 @@
}).then(() => { }).then(() => {
this.getList(); this.getList();
this.msgSuccess("删除成功"); this.msgSuccess("删除成功");
}).catch(function() {}); }).catch(function () {
});
}, },
// 取消按钮 // 取消按钮
cancel() { cancel() {
@ -487,7 +541,6 @@
window.open(url); window.open(url);
}, },
}, },
@ -496,7 +549,6 @@
</script> </script>
<style scoped> <style scoped>
@ -504,6 +556,7 @@
.el-tag + .el-tag { .el-tag + .el-tag {
margin-left: 10px; margin-left: 10px;
} }
.button-new-tag { .button-new-tag {
margin-left: 10px; margin-left: 10px;
height: 32px; height: 32px;
@ -511,6 +564,7 @@
padding-top: 0; padding-top: 0;
padding-bottom: 0; padding-bottom: 0;
} }
.input-new-tag { .input-new-tag {
width: 90px; width: 90px;
margin-left: 10px; margin-left: 10px;
@ -520,11 +574,6 @@
/**编辑标签 结束**/ /**编辑标签 结束**/
.filler-tag span { .filler-tag span {
font-size: 12px; font-size: 12px;
margin-left: 5px; margin-left: 5px;
@ -537,6 +586,7 @@
background-color: #E8F3FC; background-color: #E8F3FC;
color: #1988E0; color: #1988E0;
} }
.bookamrk-hr { .bookamrk-hr {
margin-top: 0; margin-top: 0;
} }
@ -546,14 +596,17 @@
box-shadow: 0 2px 15px 0 rgba(0, 0, 0, .2) !important; box-shadow: 0 2px 15px 0 rgba(0, 0, 0, .2) !important;
font-weight: 600 !important; font-weight: 600 !important;
} }
.filter-sort-dropdown div { .filter-sort-dropdown div {
display: none !important; display: none !important;
} }
.nullbookmark { .nullbookmark {
display: flex; display: flex;
flex-flow: column; flex-flow: column;
margin-top: 10%; margin-top: 10%;
} }
.nullbookmark-img { .nullbookmark-img {
margin: 0 auto; margin: 0 auto;
width: 250px; width: 250px;
@ -572,6 +625,7 @@
color: #D4D4D4 !important; color: #D4D4D4 !important;
} }
.editBookamrk { .editBookamrk {
width: 270px; width: 270px;
height: 70px; height: 70px;
@ -580,6 +634,7 @@
right: 0; right: 0;
display: none; display: none;
} }
.editlist { .editlist {
display: flex; display: flex;
width: 100%; width: 100%;
@ -587,6 +642,7 @@
flex-flow: wrap; flex-flow: wrap;
align-items: center; align-items: center;
} }
.editlist div { .editlist div {
margin-left: 10px; margin-left: 10px;
width: 50px; width: 50px;
@ -594,6 +650,7 @@
align-content: center; align-content: center;
} }
.bookmarktag { .bookmarktag {
margin-right: 5px; margin-right: 5px;
} }
@ -617,11 +674,13 @@
align-items: center; align-items: center;
} }
.setUpThe { .setUpThe {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.filter-content { .filter-content {
margin-left: 18px; margin-left: 18px;
@ -632,17 +691,18 @@
justify-content: center; justify-content: center;
font-size: 18px; font-size: 18px;
} }
.dropdownList i { .dropdownList i {
margin-right: 4px; margin-right: 4px;
font-weight: 600; font-weight: 600;
} }
.dropdownList span { .dropdownList span {
line-height: initial; line-height: initial;
font-size: 17px; font-size: 17px;
} }
.classification { .classification {
width: 60px; width: 60px;
height: 27px; height: 27px;
@ -651,6 +711,7 @@ margin-right: 4px;
line-height: 26px; line-height: 26px;
color: #a4a4a4; color: #a4a4a4;
} }
.classification-click { .classification-click {
border-radius: 19px; border-radius: 19px;
background: #606c88; /* fallback for old browsers */ background: #606c88; /* fallback for old browsers */
@ -659,10 +720,18 @@ margin-right: 4px;
color: #FFFFFF; color: #FFFFFF;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.4) box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.4)
} }
.bookmark-list-tag { .bookmark-list-tag {
margin-left: 4px; margin-left: 4px;
color: #5094d5; color: #5094d5;
background-color: #fff; background-color: #fff;
} }
.listhint {
width: 100%;
text-align: center;
background: #dcdfe682;
font-weight: 600;
}
</style> </style>