|
|
@@ -0,0 +1,98 @@
|
|
|
+import React, { useState, useEffect } from 'react'
|
|
|
+import { List, Avatar, Tag, Skeleton, Divider } from 'antd'
|
|
|
+import InfiniteScroll from 'react-infinite-scroll-component'
|
|
|
+import { queryMessage } from '@/services/staff'
|
|
|
+import consts from '@/consts'
|
|
|
+
|
|
|
+const Notification = () => {
|
|
|
+ const msgTypeEnum = {
|
|
|
+ message: '通知',
|
|
|
+ notification: '消息'
|
|
|
+ }
|
|
|
+ const [state, setState] = useState({
|
|
|
+ loading: false,
|
|
|
+ message: [],
|
|
|
+ hasMore: true,
|
|
|
+ current: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ total: 0
|
|
|
+ })
|
|
|
+ setState()
|
|
|
+ // const loadMoreData = () => {
|
|
|
+ // if (state.message.length >= 500) {
|
|
|
+ // setState({ hasMore: false })
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // setTimeout(() => {
|
|
|
+ // setState({
|
|
|
+ // message: state.message.concat()
|
|
|
+ // })
|
|
|
+ // }, 500)
|
|
|
+ // }
|
|
|
+ const initData = async () => {
|
|
|
+ setState({ ...state, loading: true })
|
|
|
+ const {
|
|
|
+ data: { message = [] },
|
|
|
+ code = -1
|
|
|
+ } = await queryMessage()
|
|
|
+ if (code === consts.RET_CODE.SUCCESS) {
|
|
|
+ setState({ ...state, message, loading: false })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ useEffect(() => {
|
|
|
+ initData()
|
|
|
+ }, [])
|
|
|
+ console.log(state.message.length)
|
|
|
+ const loadMoreData = () => {
|
|
|
+ if (state.total === state.message.length) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ setState(
|
|
|
+ {
|
|
|
+ loading: true,
|
|
|
+ current: state.current + 1
|
|
|
+ },
|
|
|
+ () => {
|
|
|
+ initData()
|
|
|
+ }
|
|
|
+ )
|
|
|
+ }
|
|
|
+ return (
|
|
|
+ <div className="bg-[#ffffff] rounded-md px-6 pb-6">
|
|
|
+ <div id="scrollableDiv" style={{ height: 700, overflow: 'auto' }}>
|
|
|
+ <InfiniteScroll
|
|
|
+ dataLength={state.message.length}
|
|
|
+ next={loadMoreData}
|
|
|
+ hasMore={state.hasMore}
|
|
|
+ loader={<Skeleton avatar paragraph={{ rows: 1 }} active />}
|
|
|
+ endMessage={<Divider plain>别再滚啦,已是尽头</Divider>}
|
|
|
+ scrollableTarget="scrollableDiv">
|
|
|
+ <List
|
|
|
+ header={<div>信息中心</div>}
|
|
|
+ itemLayout="horizontal"
|
|
|
+ // pagination={{ pageSize: 5 }}
|
|
|
+ dataSource={state.message}
|
|
|
+ renderItem={item => (
|
|
|
+ <List.Item key={item.id}>
|
|
|
+ <List.Item.Meta
|
|
|
+ avatar={<Avatar src={item.avatar} />}
|
|
|
+ title={<a href="#">{item.title}</a>}
|
|
|
+ description={[
|
|
|
+ <div className="mb-1">
|
|
|
+ <Tag color="purple">{msgTypeEnum[item.msgType]}</Tag> '发布于',
|
|
|
+ <span className="ml-2">全公司</span>
|
|
|
+ </div>
|
|
|
+ ]}
|
|
|
+ />
|
|
|
+ {item.content}
|
|
|
+ <div className="mt-1 text-hex-aaa">{item.createTime}</div>
|
|
|
+ </List.Item>
|
|
|
+ )}
|
|
|
+ />
|
|
|
+ </InfiniteScroll>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+}
|
|
|
+
|
|
|
+export default Notification
|