|
1 | 1 | <template> |
2 | 2 | <div class="abstract-wrapper"> |
3 | | - <div |
4 | | - v-for="(item, index) in data" |
5 | | - :key="item.path" |
6 | | - v-show="index >= (currentPage * 10 - 10) && index < currentPage * 10" |
7 | | - class="abstract-item"> |
8 | | - <div class="title"> |
9 | | - <router-link |
10 | | - :to="item.path">{{item.title}}</router-link> |
11 | | - </div> |
12 | | - <div class="abstract" v-html="item.excerpt"></div> |
13 | | - <hr> |
14 | | - <PageInfo :pageInfo="item" :hideAccessNumber="!(hideAccessNumber !== true)" :currentTag="currentTag"></PageInfo> |
| 3 | + <div v-if="listLoadType === 'sync'" key="sync"> |
| 4 | + <NoteAbstractItem |
| 5 | + v-for="(item, index) in data" |
| 6 | + :key="item.path" |
| 7 | + :item="item" |
| 8 | + :currentPage="currentPage" |
| 9 | + :currentTag="currentTag" |
| 10 | + :hideAccessNumber="hideAccessNumber" |
| 11 | + v-show="index >= (currentPage * 10 - 10) && index < currentPage * 10"/> |
| 12 | + </div> |
| 13 | + <div v-else-if="listLoadType === 'async'" key="async"> |
| 14 | + <NoteAbstractItem |
| 15 | + v-for="(item, index) in currentPageData" |
| 16 | + :key="item.path" |
| 17 | + :item="item" |
| 18 | + :currentPage="currentPage" |
| 19 | + :currentTag="currentTag" |
| 20 | + :hideAccessNumber="true" /> |
15 | 21 | </div> |
16 | 22 | </div> |
17 | 23 | </template> |
18 | 24 |
|
19 | 25 | <script> |
20 | | -import PageInfo from './PageInfo' |
| 26 | +import NoteAbstractItem from './NoteAbstractItem' |
21 | 27 |
|
22 | 28 | export default { |
23 | | - components: { PageInfo }, |
24 | | - props: ['data', 'currentPage', 'currentTag', 'hideAccessNumber'] |
| 29 | + components: { NoteAbstractItem }, |
| 30 | + props: ['data', 'currentPage', 'currentTag', 'hideAccessNumber'], |
| 31 | + computed: { |
| 32 | + listLoadType () { |
| 33 | + const valineConfig = this.$themeConfig.valineConfig |
| 34 | + if (valineConfig && !valineConfig.hideAccessNumber) { |
| 35 | + return 'sync' |
| 36 | + } else { |
| 37 | + return 'async' |
| 38 | + } |
| 39 | + }, |
| 40 | + currentPageData () { |
| 41 | + const start = this.currentPage * 10 - 10 |
| 42 | + const end = this.currentPage * 10 |
| 43 | + return this.data.slice(start, end) |
| 44 | + } |
| 45 | + } |
25 | 46 | } |
26 | 47 | </script> |
27 | 48 |
|
28 | 49 | <style lang="stylus" scoped> |
29 | | -@require '../styles/recoConfig.styl' |
30 | | -
|
31 | 50 | .abstract-wrapper |
32 | 51 | width 100% |
33 | | - .abstract-item |
34 | | - margin: 0 auto 20px; |
35 | | - padding: 16px 20px; |
36 | | - width 100% |
37 | | - overflow: hidden; |
38 | | - border-radius: $borderRadius |
39 | | - box-shadow: $boxShadow; |
40 | | - box-sizing: border-box; |
41 | | - transition all .3s |
42 | | - background-color $bgColor |
43 | | - &:hover |
44 | | - box-shadow: $boxShadowHover |
45 | | - .title |
46 | | - position: relative; |
47 | | - font-size: 1.28rem; |
48 | | - line-height: 36px; |
49 | | - display: inline-block; |
50 | | - :after |
51 | | - content: ""; |
52 | | - position: absolute; |
53 | | - width: 100%; |
54 | | - height: 2px; |
55 | | - bottom: 0; |
56 | | - left: 0; |
57 | | - background-color: $accentColor; |
58 | | - visibility: hidden; |
59 | | - -webkit-transform: scaleX(0); |
60 | | - transform: scaleX(0); |
61 | | - transition: .3s ease-in-out; |
62 | | - :hover:after |
63 | | - visibility visible |
64 | | - -webkit-transform: scaleX(1); |
65 | | - transform: scaleX(1); |
66 | | - .tags |
67 | | - .tag-item |
68 | | - cursor: pointer; |
69 | | - &.active |
70 | | - color $accentColor |
71 | | - &:hover |
72 | | - color $accentColor |
73 | | -
|
74 | | -@media (max-width: $MQMobile) |
75 | | - .tags |
76 | | - display block |
77 | | - margin-top 1rem; |
78 | | - margin-left: 0!important; |
79 | 52 | </style> |
0 commit comments