@@ -2,7 +2,7 @@ import { useEffect, useState, useRef } from 'react';
22import styles from '@/styles/article.module.scss' ;
33import NavHeader from "@/components/navHeader" ;
44import APP_CONF from "@/data/config" ;
5- import { Dropdown , Space , Menu , Spin , BackTop } from "antd" ;
5+ import { Dropdown , Space , Menu , Spin , BackTop , Button } from "antd" ;
66import { OpenOriginUrl , seo } from "@/data/doc" ;
77import { CaretDownOutlined , VerticalAlignTopOutlined } from '@ant-design/icons' ;
88import Head from "next/head" ;
@@ -18,6 +18,8 @@ const Article = (data) => {
1818 const [ tag_type , setTagType ] = useState ( '' ) ;
1919 const [ articleList , setArticleList ] = useState ( [ ] ) ;
2020 const [ spinning , setSpinning ] = useState ( false ) ;
21+ const [ isAdmin , setIsAdmin ] = useState ( false ) ;
22+ const [ updating , setUpdating ] = useState ( false ) ;
2123 const [ clearArticle , setClearArticle ] = useState ( false ) ;
2224 const [ hasMore , setHasMore ] = useState ( false ) ;
2325 const firstUpdate = useRef ( true ) ;
@@ -34,6 +36,15 @@ const Article = (data) => {
3436
3537 useEffect ( ( ) => {
3638 setMobile ( isMobile ( window ) ) ;
39+ setIsAdmin ( window . localStorage . getItem ( "is-admin" ) === 'true' ) ;
40+ getTagList ( )
41+ } , [ ] )
42+
43+ useEffect ( ( ) => {
44+ getArticleList ( ) ;
45+ } , [ tag_id , sort_type , page ] )
46+
47+ const getTagList = ( ) => {
3748 fetch ( `${ fetchUrl } /api/getTagList` )
3849 . then ( res => res . json ( ) )
3950 . then ( res => {
@@ -47,11 +58,7 @@ const Article = (data) => {
4758 setTagType ( tagList ?. [ 0 ] . key ) ;
4859 setTagList ( tagList || [ ] ) ;
4960 } )
50- } , [ ] )
51-
52- useEffect ( ( ) => {
53- getArticleList ( ) ;
54- } , [ tag_id , sort_type , page ] )
61+ }
5562
5663 // 处理文章数据
5764 const handleArticleList = ( obj ) => {
@@ -64,6 +71,7 @@ const Article = (data) => {
6471 setClearArticle ( false )
6572 }
6673
74+ // 获取文章列表
6775 const getArticleList = ( ) => {
6876 if ( firstUpdate . current ) {
6977 handleArticleList ( data )
@@ -87,6 +95,16 @@ const Article = (data) => {
8795 } )
8896 }
8997
98+ // 更新数据库中的文章数据
99+ const updateArticleList = ( ) => {
100+ setUpdating ( true )
101+ fetch ( `${ fetchUrl } /api/updateArticleList` )
102+ . finally ( ( ) => {
103+ setUpdating ( false )
104+ window . location . reload ( )
105+ } )
106+ }
107+
90108 const handleSelectSortType = ( sort_type ) => {
91109 setPage ( '1' )
92110 setSortType ( sort_type )
@@ -142,6 +160,14 @@ const Article = (data) => {
142160 < div className = { styles . leftBox } >
143161 < div className = { styles . sortBox } >
144162 < div className = { styles . title } > 文章列表</ div >
163+ < div className = { styles . updateTime } >
164+ { isAdmin ? (
165+ < Button loading = { updating } onClick = { updateArticleList } >
166+ 更新文章数据库
167+ </ Button >
168+ ) : null }
169+ < span > 文章数据更新时间:{ articleList [ 0 ] ?. createTime } </ span >
170+ </ div >
145171 < div className = { styles . sortElement } >
146172 < Dropdown
147173 overlay = {
@@ -194,7 +220,17 @@ const Article = (data) => {
194220 < div className = { styles . row } >
195221 < div > { article . create_date } { mobile ? '' : article . create_time } </ div >
196222 < a className = { styles . username } href = { 'https://juejin.cn/user/2137106333053912' } target = '_blank' rel = "nofollow noopener noreferrer" > { article . user_name } </ a >
197- < div className = { styles . viewCount } > < img src = { `${ APP_CONF . IMAGE_DOMAIN } /UEDLanding/Article/eye.svg` } alt = "" /> { article . view_count } </ div >
223+
224+ < div className = { styles . countBox } >
225+ < div >
226+ < img src = { `${ APP_CONF . IMAGE_DOMAIN } /UEDLanding/Article/eye.svg` } alt = "" />
227+ { article . view_count }
228+ </ div >
229+ < div >
230+ < img src = { `${ APP_CONF . IMAGE_DOMAIN } /UEDLanding/Article/liked.svg` } alt = "" />
231+ { article . digg_count }
232+ </ div >
233+ </ div >
198234 </ div >
199235 </ div >
200236 )
0 commit comments