Authored by yyq

Merge branch 'feature/0530' into release/6.9.5

@@ -25,6 +25,7 @@ @@ -25,6 +25,7 @@
25 :add-type="1" 25 :add-type="1"
26 :user="parentComment.userName" 26 :user="parentComment.userName"
27 :column-type="columnType" 27 :column-type="columnType"
  28 + :share="share"
28 @on-comment="onReply"> 29 @on-comment="onReply">
29 {{parentComment.content}} 30 {{parentComment.content}}
30 </CommentPlaceholder> 31 </CommentPlaceholder>
@@ -39,6 +40,7 @@ @@ -39,6 +40,7 @@
39 :add-type="1" 40 :add-type="1"
40 :user="reply.userName" 41 :user="reply.userName"
41 :column-type="columnType" 42 :column-type="columnType"
  43 + :share="share"
42 @on-comment="onReplyChildren"> 44 @on-comment="onReplyChildren">
43 <span class="reply-user">{{reply.userName}}</span> 45 <span class="reply-user">{{reply.userName}}</span>
44 <template v-if="reply.parentUserName"> 46 <template v-if="reply.parentUserName">
@@ -68,6 +70,7 @@ export default { @@ -68,6 +70,7 @@ export default {
68 type: Number, 70 type: Number,
69 default: 1001 71 default: 1001
70 }, 72 },
  73 + share: Boolean,
71 posId: Number, 74 posId: Number,
72 articleId: Number 75 articleId: Number
73 }, 76 },
@@ -147,51 +147,53 @@ export default { @@ -147,51 +147,53 @@ export default {
147 } 147 }
148 } 148 }
149 149
  150 + if (!get(result, 'data.total')) {
  151 + this.empty = true;
  152 + } else {
  153 + this.empty = false;
  154 + }
  155 +
150 return result; 156 return result;
151 }, 157 },
152 async fetchComments(pre) { 158 async fetchComments(pre) {
153 const result = await this.fetchCommentsAsync(pre); 159 const result = await this.fetchCommentsAsync(pre);
154 - let dirty = false; 160 + let dirty = true;
155 161
156 if (result.code === 200) { 162 if (result.code === 200) {
157 const comments = get(result, 'data.commentInfos', []); 163 const comments = get(result, 'data.commentInfos', []);
158 164
159 - if (!get(result, 'data.total')) {  
160 - this.empty = true;  
161 - } else {  
162 - if (comments.length) {  
163 - this.empty = false;  
164 - this.$emit('on-page-change', {  
165 - page: result.data.page,  
166 - size: result.data.total  
167 - }); 165 + if (comments.length) {
  166 + this.$emit('on-page-change', {
  167 + page: result.data.page,
  168 + size: result.data.total
  169 + });
168 170
169 - if (pre) {  
170 - this.commentPreList.unshift(comments);  
171 - this.$nextTick(() => {  
172 - this.loadPreComment();  
173 - });  
174 - } else {  
175 - if (this.page <= 2) {  
176 - this.commentList = comments;  
177 -  
178 - // 将评论滚动到可视区域  
179 - if (this.commentId) {  
180 - setTimeout(() => {  
181 - let scrollHeight = this.$refs.scroll.$el.offsetHeight;  
182 - let dom = this.$refs.commentList.getElementsByClassName('comment-' + this.commentId);  
183 -  
184 - if (scrollHeight && dom.length && (dom[0].offsetHeight + dom[0].offsetTop > scrollHeight)) {  
185 - this.$refs.scroll.scrollTo(0, scrollHeight - this.$refs.commentList.offsetHeight);  
186 - }  
187 - }, 500);  
188 - }  
189 - } else {  
190 - this.commentList = this.commentList.concat(comments); 171 + if (pre) {
  172 + this.commentPreList.unshift(comments);
  173 + this.$nextTick(() => {
  174 + this.loadPreComment();
  175 + });
  176 + } else {
  177 + if (this.page <= 2) {
  178 + this.commentList = comments;
  179 +
  180 + // 将评论滚动到可视区域
  181 + if (this.commentId) {
  182 + setTimeout(() => {
  183 + let scrollHeight = this.$refs.scroll.$el.offsetHeight;
  184 + let dom = this.$refs.commentList.getElementsByClassName('comment-' + this.commentId);
  185 +
  186 + if (scrollHeight && dom.length && (dom[0].offsetHeight + dom[0].offsetTop > scrollHeight)) {
  187 + this.$refs.scroll.scrollTo(0, scrollHeight - this.$refs.commentList.offsetHeight);
  188 + }
  189 + }, 500);
191 } 190 }
  191 + } else {
  192 + this.commentList = this.commentList.concat(comments);
192 } 193 }
193 - dirty = true;  
194 } 194 }
  195 + } else {
  196 + dirty = false;
195 } 197 }
196 198
197 this.firstLoading = false; 199 this.firstLoading = false;
@@ -89,6 +89,10 @@ export default { @@ -89,6 +89,10 @@ export default {
89 }, 89 },
90 methods: { 90 methods: {
91 onClick(e) { 91 onClick(e) {
  92 + if (this.share) {
  93 + return this.$links.toDownloadApp();
  94 + }
  95 +
92 if (e.timeStamp - this._lastTime < 1200) { 96 if (e.timeStamp - this._lastTime < 1200) {
93 return; 97 return;
94 } 98 }
  1 +<template>
  2 + <ArticleDetail :share="true" :set-share-data="setShareData"></ArticleDetail>
  3 +</template>
  4 +
  5 +<script>
  6 +import Share from 'plugins/share';
  7 +import {getDetailShareData} from 'utils/share-handler';
  8 +import ArticleDetail from './article-detail';
  9 +
  10 +export default {
  11 + name: 'ArticleDetailShare',
  12 + mounted() {
  13 + if (!this.$yoho.isApp) {
  14 + Share.init();
  15 + }
  16 + },
  17 + methods: {
  18 + setShareData(article) {
  19 + if (!article) {
  20 + return;
  21 + }
  22 +
  23 + let shareData = getDetailShareData(article);
  24 +
  25 + document && (document.title = shareData.title);
  26 +
  27 + if (!this.$yoho.isApp) {
  28 + Share.setShareInfo(shareData);
  29 + }
  30 + }
  31 + },
  32 + components: {
  33 + ArticleDetail
  34 + }
  35 +};
  36 +</script>
  37 +
  38 +<style lang="scss" scoped>
  39 +/deep/ {
  40 + .article-detail-header {
  41 + display: none;
  42 + }
  43 +}
  44 +</style>
@@ -2,8 +2,30 @@ @@ -2,8 +2,30 @@
2 <Layout class="article-detail"> 2 <Layout class="article-detail">
3 <RecycleScrollReveal :size="10" ref="scroll" @scroll="onScroll" :offset="2000" :on-fetch="onFetch" :manual-init="true"> 3 <RecycleScrollReveal :size="10" ref="scroll" @scroll="onScroll" :offset="2000" :on-fetch="onFetch" :manual-init="true">
4 <template v-slot:eternalTop> 4 <template v-slot:eternalTop>
5 - <ArticleDeatilLong v-if="articleInfo.sort == 2" ref="detailLong" :data="articleInfo" :scroll-top="scrollTop" :list-title="listTitle" :scroll-to="scrollTo" :pos-id="posId" @on-show-more="onShowMore" @on-follow="onFollowAuthor"></ArticleDeatilLong>  
6 - <ArticleDeatilNote v-else ref="detailNote" :data="articleInfo" :scroll-top="scrollTop" :list-title="listTitle" :scroll-to="scrollTo" :pos-id="posId" @on-show-more="onShowMore" @on-follow="onFollowAuthor"></ArticleDeatilNote> 5 + <ArticleDeatilLong
  6 + v-if="articleInfo.sort == 2"
  7 + ref="detailLong"
  8 + :data="articleInfo"
  9 + :scroll-top="scrollTop"
  10 + :list-title="listTitle"
  11 + :scroll-to="scrollTo"
  12 + :share="share"
  13 + :pos-id="posId"
  14 + @on-show-more="onShowMore"
  15 + @on-follow="onFollowAuthor">
  16 + </ArticleDeatilLong>
  17 + <ArticleDeatilNote
  18 + v-else
  19 + ref="detailNote"
  20 + :data="articleInfo"
  21 + :scroll-top="scrollTop"
  22 + :list-title="listTitle"
  23 + :scroll-to="scrollTo"
  24 + :share="share"
  25 + :pos-id="posId"
  26 + @on-show-more="onShowMore"
  27 + @on-follow="onFollowAuthor">
  28 + </ArticleDeatilNote>
7 </template> 29 </template>
8 <template class="article-item" #item="{ data }"> 30 <template class="article-item" #item="{ data }">
9 <ArticleItem2 31 <ArticleItem2
@@ -38,12 +60,15 @@ const {mapState, mapActions, mapMutations} = createNamespacedHelpers('article'); @@ -38,12 +60,15 @@ const {mapState, mapActions, mapMutations} = createNamespacedHelpers('article');
38 60
39 export default { 61 export default {
40 name: 'ArticleDetailPage', 62 name: 'ArticleDetailPage',
  63 + props: {
  64 + share: Boolean,
  65 + setShareData: Function
  66 + },
41 data() { 67 data() {
42 return { 68 return {
43 id: 0, 69 id: 0,
44 scrollTop: 0, 70 scrollTop: 0,
45 scrolling: false, 71 scrolling: false,
46 - share: false,  
47 listTitle: '', 72 listTitle: '',
48 colWidthForTwo: 370, 73 colWidthForTwo: 370,
49 posId: YAS.scene.newsDetail 74 posId: YAS.scene.newsDetail
@@ -119,9 +144,13 @@ export default { @@ -119,9 +144,13 @@ export default {
119 if (this.$refs.scroll) { 144 if (this.$refs.scroll) {
120 this.listTitle = ''; 145 this.listTitle = '';
121 146
122 - this.$nextTick(() => { 147 + setTimeout(() => {
123 this.$refs.scroll.init(); 148 this.$refs.scroll.init();
124 - }); 149 + }, 500);
  150 + }
  151 +
  152 + if (this.share && this.setShareData) {
  153 + this.setShareData(get(res, 'data.detailList[0]', this.articleInfo));
125 } 154 }
126 }); 155 });
127 }, 156 },
@@ -150,6 +150,10 @@ export default { @@ -150,6 +150,10 @@ export default {
150 }, 150 },
151 async praiseArticle(e) { 151 async praiseArticle(e) {
152 if (e.timeStamp - this._preTimeStamp < dblclickDdelay) { 152 if (e.timeStamp - this._preTimeStamp < dblclickDdelay) {
  153 + if (this.share) {
  154 + return this.$links.toDownloadApp();
  155 + }
  156 +
153 const user = await this.$sdk.getUser(); 157 const user = await this.$sdk.getUser();
154 158
155 if (user && user.uid) { 159 if (user && user.uid) {
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 <span class="name">{{data.authorName}}</span> 14 <span class="name">{{data.authorName}}</span>
15 </div> 15 </div>
16 <div class="fav"> 16 <div class="fav">
17 - <WidgetFav :articleId="data.articleId" :num="data.praiseCount" :option="favOption"></WidgetFav> 17 + <WidgetFav :articleId="data.articleId" :num="data.praiseCount" :share="share" :option="favOption"></WidgetFav>
18 </div> 18 </div>
19 </div> 19 </div>
20 </div> 20 </div>
@@ -78,8 +78,10 @@ export default { @@ -78,8 +78,10 @@ export default {
78 return get(get(this.data, 'blockList', []).filter(block => block.templateKey === 'text'), '[0].contentData', this.data.content); 78 return get(get(this.data, 'blockList', []).filter(block => block.templateKey === 'text'), '[0].contentData', this.data.content);
79 }, 79 },
80 actionUrl() { 80 actionUrl() {
81 - if (this.data.sort === 3) {  
82 - return this.data.actionUrl; 81 + if (!this.share) {
  82 + if (this.data.sort === 3) {
  83 + return this.data.actionUrl;
  84 + }
83 } 85 }
84 86
85 return ''; 87 return '';
@@ -94,12 +96,6 @@ export default { @@ -94,12 +96,6 @@ export default {
94 } 96 }
95 }, 97 },
96 methods: { 98 methods: {
97 - onFollow(follow) {  
98 - this.$emit('on-follow', follow);  
99 - },  
100 - onPraise() {  
101 - this.$refs.articleIntro.onPraise();  
102 - },  
103 toUserPage() { 99 toUserPage() {
104 if (this.share) { 100 if (this.share) {
105 return this.$links.toDownloadApp(); 101 return this.$links.toDownloadApp();
@@ -2,9 +2,9 @@ @@ -2,9 +2,9 @@
2 <div class="article-footer-wrapper"> 2 <div class="article-footer-wrapper">
3 <slot name="before"></slot> 3 <slot name="before"></slot>
4 <div class="tool-bar"> 4 <div class="tool-bar">
5 - <WidgetIconBtn ref="favIcon" class="item" type="fav" :pos-id="sceneId" :text="praiseCount" :articleId="articleId" :option="optionPraise"></WidgetIconBtn>  
6 - <WidgetIconBtn class="item" type="star" :pos-id="sceneId" :text="favoriteCount" :articleId="articleId" :option="optionFav" ></WidgetIconBtn>  
7 - <WidgetIconBtn class="item" type="msg" :text="commentCount" :option="optionComment" @click="onComment"></WidgetIconBtn> 5 + <WidgetIconBtn ref="favIcon" class="item" type="fav" :pos-id="sceneId" :text="praiseCount" :articleId="articleId" :option="optionPraise" :share="share"></WidgetIconBtn>
  6 + <WidgetIconBtn class="item" type="star" :pos-id="sceneId" :text="favoriteCount" :articleId="articleId" :option="optionFav" :share="share"></WidgetIconBtn>
  7 + <WidgetIconBtn class="item" type="msg" :text="commentCount" :option="optionComment" :share="share" @click="onComment"></WidgetIconBtn>
8 </div> 8 </div>
9 <slot name="after"> 9 <slot name="after">
10 <div class="close ml20" @click="onClose">收起</div> 10 <div class="close ml20" @click="onClose">收起</div>
@@ -18,7 +18,7 @@ import YAS from 'utils/yas-constants'; @@ -18,7 +18,7 @@ import YAS from 'utils/yas-constants';
18 18
19 export default { 19 export default {
20 name: 'ArticleFooter', 20 name: 'ArticleFooter',
21 - props: ['favoriteCount', 'praiseCount', 'commentCount', 'hasFavor', 'hasPraise', 'articleId'], 21 + props: ['favoriteCount', 'praiseCount', 'commentCount', 'hasFavor', 'hasPraise', 'articleId', 'share'],
22 data() { 22 data() {
23 return { 23 return {
24 optionComment: { 24 optionComment: {
1 <template> 1 <template>
2 <div class="article-detail-long"> 2 <div class="article-detail-long">
3 - <ArticleDetailHeader ref="header" :data="data" :step="headerAnimateStep" :title-step="headerTitleAnimateStep"> 3 + <ArticleDetailHeader ref="header" class="article-detail-header" :data="data" :step="headerAnimateStep" :title-step="headerTitleAnimateStep">
4 <div v-if="data.articleId && !data.empty" class="title-main"> 4 <div v-if="data.articleId && !data.empty" class="title-main">
5 <div class="title-info" :style="`transform: translate3d(0, ${viewMoreArticles ? '-50%' : '0'}, 0)`"> 5 <div class="title-info" :style="`transform: translate3d(0, ${viewMoreArticles ? '-50%' : '0'}, 0)`">
6 <ArticleItemHeader class="title-info-author" :share="share" :data="authorData" :lazy="lazy" :more="showMoreOpt" @on-follow="onFollowAuthor"></ArticleItemHeader> 6 <ArticleItemHeader class="title-info-author" :share="share" :data="authorData" :lazy="lazy" :more="showMoreOpt" @on-follow="onFollowAuthor"></ArticleItemHeader>
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
24 24
25 <div v-if="recomendProduct.length"> 25 <div v-if="recomendProduct.length">
26 <LayoutTitle class="rec-goods-title">推荐商品</LayoutTitle> 26 <LayoutTitle class="rec-goods-title">推荐商品</LayoutTitle>
27 - <ProductGroup :data="recomendProduct" model="2"></ProductGroup> 27 + <ProductGroup :data="recomendProduct" :share="share" model="2"></ProductGroup>
28 </div> 28 </div>
29 29
30 <LayoutTitle v-if="listTitle" class="rec-article-title">{{listTitle}}</LayoutTitle> 30 <LayoutTitle v-if="listTitle" class="rec-article-title">{{listTitle}}</LayoutTitle>
@@ -42,6 +42,7 @@ @@ -42,6 +42,7 @@
42 :popup="true" 42 :popup="true"
43 :article-id="data.articleId" 43 :article-id="data.articleId"
44 :commentCount="articleState.commentCount" 44 :commentCount="articleState.commentCount"
  45 + :share="share"
45 :pos-id="posId" 46 :pos-id="posId"
46 @on-close="onCloseComment" 47 @on-close="onCloseComment"
47 @on-comment="onActionComment"></Comment> 48 @on-comment="onActionComment"></Comment>
@@ -203,7 +204,8 @@ export default { @@ -203,7 +204,8 @@ export default {
203 commentCount: this.articleState.commentCount, 204 commentCount: this.articleState.commentCount,
204 hasFavor: this.articleState.hasFavor, 205 hasFavor: this.articleState.hasFavor,
205 hasPraise: this.articleState.hasPraise, 206 hasPraise: this.articleState.hasPraise,
206 - articleId: this.data.articleId 207 + articleId: this.data.articleId,
  208 + share: this.share
207 }; 209 };
208 }, 210 },
209 lazy() { 211 lazy() {
1 <template> 1 <template>
2 <div class="article-detail-notes"> 2 <div class="article-detail-notes">
3 - <ArticleDetailHeader ref="header" :data="data" :step="100" :title-step="100"> 3 + <ArticleDetailHeader ref="header" class="article-detail-header" :data="data" :step="100" :title-step="100">
4 <div v-if="data.articleId && !data.empty" class="title-main"> 4 <div v-if="data.articleId && !data.empty" class="title-main">
5 <div class="title-info" :style="`transform: translate3d(0, ${viewMoreArticles ? '-50%' : '0'}, 0)`"> 5 <div class="title-info" :style="`transform: translate3d(0, ${viewMoreArticles ? '-50%' : '0'}, 0)`">
6 <ArticleItemHeader class="title-info-author" :share="share" :data="authorData" :lazy="lazy" :more="false" @on-follow="onFollowAuthor"></ArticleItemHeader> 6 <ArticleItemHeader class="title-info-author" :share="share" :data="authorData" :lazy="lazy" :more="false" @on-follow="onFollowAuthor"></ArticleItemHeader>
@@ -9,7 +9,9 @@ @@ -9,7 +9,9 @@
9 </div> 9 </div>
10 </ArticleDetailHeader> 10 </ArticleDetailHeader>
11 11
12 - <LayoutHeader style="visibility: hidden;"></LayoutHeader> 12 + <ArticleItemHeader v-if="share" :share="share" :data="authorData" :lazy="lazy" :more="false" @on-follow="onFollowAuthor"></ArticleItemHeader>
  13 + <LayoutHeader v-else style="visibility: hidden;"></LayoutHeader>
  14 +
13 <div v-if="data.empty" class="article-empty"> 15 <div v-if="data.empty" class="article-empty">
14 {{data.emptyTip || '文章不存在或文章被删除'}} 16 {{data.emptyTip || '文章不存在或文章被删除'}}
15 </div> 17 </div>
@@ -22,11 +24,11 @@ @@ -22,11 +24,11 @@
22 24
23 <div class="publish-time"> 25 <div class="publish-time">
24 <span>{{publishTime}}</span> 26 <span>{{publishTime}}</span>
25 - <div v-if="data.articleId" class="more-wrap"> 27 + <div v-if="data.articleId && !share" class="more-wrap">
26 <i class="iconfont icon-more1" @click="onMore"></i> 28 <i class="iconfont icon-more1" @click="onMore"></i>
27 </div> 29 </div>
28 </div> 30 </div>
29 - <ArticleDetailCommentList ref="commentList" v-if="data.articleId && !thumb" :article-id="data.articleId" :comment-count="articleState.commentCount"></ArticleDetailCommentList> 31 + <ArticleDetailCommentList ref="commentList" v-if="data.articleId && !thumb" :article-id="data.articleId" :share="share" :comment-count="articleState.commentCount"></ArticleDetailCommentList>
30 </div> 32 </div>
31 33
32 <div v-if="listTitle" class="rec-article-title"> 34 <div v-if="listTitle" class="rec-article-title">
@@ -156,7 +158,8 @@ export default { @@ -156,7 +158,8 @@ export default {
156 commentCount: this.articleState.commentCount, 158 commentCount: this.articleState.commentCount,
157 hasFavor: this.articleState.hasFavor, 159 hasFavor: this.articleState.hasFavor,
158 hasPraise: this.articleState.hasPraise, 160 hasPraise: this.articleState.hasPraise,
159 - articleId: this.data.articleId 161 + articleId: this.data.articleId,
  162 + share: this.share
160 }; 163 };
161 }, 164 },
162 publishTime() { 165 publishTime() {
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@
11 :parent-comment="comment.parentComment" 11 :parent-comment="comment.parentComment"
12 :children-comments="comment.childrenComments" 12 :children-comments="comment.childrenComments"
13 :column-type="columnType" 13 :column-type="columnType"
  14 + :share="share"
14 :pos-id="0" 15 :pos-id="0"
15 :article-id="articleId" 16 :article-id="articleId"
16 @on-reply="onReply"> 17 @on-reply="onReply">
@@ -7,18 +7,26 @@ export default [{ @@ -7,18 +7,26 @@ export default [{
7 keepAlive: true 7 keepAlive: true
8 } 8 }
9 },{ 9 },{
  10 + path: '/article/share/:id',
  11 + name: 'article.share',
  12 + alias: '/article/share/:id',
  13 + component: () => import(/* webpackChunkName: "article" */ './article-detail-share'),
  14 + meta: {
  15 + keepAlive: true
  16 + }
  17 +}, {
10 path: '/article/list/:id', 18 path: '/article/list/:id',
11 - name: 'article.list', 19 + name: 'articlelist',
12 alias: '/article/list/:id', 20 alias: '/article/list/:id',
13 - component: () => import(/* webpackChunkName: "article" */ './article'), 21 + component: () => import(/* webpackChunkName: "article-list" */ './article'),
14 meta: { 22 meta: {
15 keepAlive: true 23 keepAlive: true
16 } 24 }
17 }, { 25 }, {
18 - path: '/article/share/:id',  
19 - name: 'article.share',  
20 - alias: '/article/share/:id',  
21 - component: () => import(/* webpackChunkName: "article" */ './article-share'), 26 + path: '/article/list/share/:id',
  27 + name: 'articlelist.share',
  28 + alias: '/article/list/share/:id',
  29 + component: () => import(/* webpackChunkName: "article-list" */ './article-share'),
22 meta: { 30 meta: {
23 keepAlive: true 31 keepAlive: true
24 } 32 }
@@ -26,7 +34,7 @@ export default [{ @@ -26,7 +34,7 @@ export default [{
26 path: '/article/detail/:id', 34 path: '/article/detail/:id',
27 name: 'article.detail', 35 name: 'article.detail',
28 alias: '/article/detail/:id', 36 alias: '/article/detail/:id',
29 - component: () => import(/* webpackChunkName: "article-detail" */ './article-detail'), 37 + component: () => import(/* webpackChunkName: "article" */ './article-detail'),
30 meta: { 38 meta: {
31 keepAlive: true 39 keepAlive: true
32 } 40 }
@@ -34,7 +42,7 @@ export default [{ @@ -34,7 +42,7 @@ export default [{
34 path: '/article/:id/user/:type/:authorType/:authorUid', 42 path: '/article/:id/user/:type/:authorType/:authorUid',
35 name: 'article.user', 43 name: 'article.user',
36 alias: '/article/:id/user/:type/:authorType/:authorUid', 44 alias: '/article/:id/user/:type/:authorType/:authorUid',
37 - component: () => import(/* webpackChunkName: "article" */ './user-article'), 45 + component: () => import(/* webpackChunkName: "article-list" */ './user-article'),
38 meta: { 46 meta: {
39 keepAlive: true 47 keepAlive: true
40 } 48 }
@@ -42,7 +50,7 @@ export default [{ @@ -42,7 +50,7 @@ export default [{
42 path: '/topic/share/:topicId', 50 path: '/topic/share/:topicId',
43 alias: '/topic/share/:topicId', 51 alias: '/topic/share/:topicId',
44 name: 'topic.share', 52 name: 'topic.share',
45 - component: () => import(/* webpackChunkName: "article" */ './topic'), 53 + component: () => import(/* webpackChunkName: "topic" */ './topic'),
46 meta: { 54 meta: {
47 keepAlive: true 55 keepAlive: true
48 } 56 }
@@ -50,7 +58,7 @@ export default [{ @@ -50,7 +58,7 @@ export default [{
50 path: '/topic/:topicId', 58 path: '/topic/:topicId',
51 alias: '/topic/:topicId', 59 alias: '/topic/:topicId',
52 name: 'topic', 60 name: 'topic',
53 - component: () => import(/* webpackChunkName: "article" */ './topic'), 61 + component: () => import(/* webpackChunkName: "topic" */ './topic'),
54 meta: { 62 meta: {
55 keepAlive: true, 63 keepAlive: true,
56 statusBarColor: 'white' 64 statusBarColor: 'white'