完成rss订阅配置
This commit is contained in:
12
src/api/Rss.ts
Normal file
12
src/api/Rss.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import Request from '@/utils/request'
|
||||
import { Rss } from '@/types/rss';
|
||||
|
||||
// 获取订阅数据列表
|
||||
export const getRssListAPI = (pagination?: Page) => {
|
||||
if (pagination) {
|
||||
const { page, size } = pagination
|
||||
return Request<Paginate<Rss[]>>("GET", `/rss?page=${page}&size=${size}`);
|
||||
} else {
|
||||
return Request<Rss[]>("GET", `/rss/all`);
|
||||
}
|
||||
};
|
||||
@@ -4,6 +4,8 @@ import SidebarLinkGroup from './SidebarLinkGroup';
|
||||
import Logo from '../../images/logo/logo.svg';
|
||||
import { BiEditAlt, BiFolderOpen, BiHomeSmile, BiSliderAlt } from "react-icons/bi";
|
||||
import { BiCategoryAlt } from "react-icons/bi";
|
||||
import { LiaRssSolid } from "react-icons/lia";
|
||||
|
||||
|
||||
interface SidebarProps {
|
||||
sidebarOpen: boolean;
|
||||
@@ -273,7 +275,7 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => {
|
||||
className={`${sidebarItemSty} ${pathname.includes('chart') && 'bg-graydark dark:bg-meta-4'
|
||||
}`}
|
||||
>
|
||||
<BiFolderOpen className='text-[22px]' />
|
||||
<LiaRssSolid className='text-[22px]' />
|
||||
订阅中心
|
||||
</NavLink>
|
||||
</li>
|
||||
|
||||
@@ -7,28 +7,14 @@ import ChatCard from '../../components/Chat/ChatCard';
|
||||
import MapOne from '../../components/Maps/MapOne';
|
||||
import TableOne from '../../components/Tables/TableOne';
|
||||
|
||||
import { IoStatsChartSharp } from "react-icons/io5";
|
||||
|
||||
const ECommerce: React.FC = () => {
|
||||
return (
|
||||
<>
|
||||
<div className="grid grid-cols-1 gap-4 md:grid-cols-2 md:gap-6 xl:grid-cols-4 2xl:gap-7.5">
|
||||
<CardDataStats title="Total views" total="$3.456K" rate="0.43%" levelUp>
|
||||
<svg
|
||||
className="fill-primary dark:fill-white"
|
||||
width="22"
|
||||
height="16"
|
||||
viewBox="0 0 22 16"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M11 15.1156C4.19376 15.1156 0.825012 8.61876 0.687512 8.34376C0.584387 8.13751 0.584387 7.86251 0.687512 7.65626C0.825012 7.38126 4.19376 0.918762 11 0.918762C17.8063 0.918762 21.175 7.38126 21.3125 7.65626C21.4156 7.86251 21.4156 8.13751 21.3125 8.34376C21.175 8.61876 17.8063 15.1156 11 15.1156ZM2.26876 8.00001C3.02501 9.27189 5.98126 13.5688 11 13.5688C16.0188 13.5688 18.975 9.27189 19.7313 8.00001C18.975 6.72814 16.0188 2.43126 11 2.43126C5.98126 2.43126 3.02501 6.72814 2.26876 8.00001Z"
|
||||
fill=""
|
||||
/>
|
||||
<path
|
||||
d="M11 10.9219C9.38438 10.9219 8.07812 9.61562 8.07812 8C8.07812 6.38438 9.38438 5.07812 11 5.07812C12.6156 5.07812 13.9219 6.38438 13.9219 8C13.9219 9.61562 12.6156 10.9219 11 10.9219ZM11 6.625C10.2437 6.625 9.625 7.24375 9.625 8C9.625 8.75625 10.2437 9.375 11 9.375C11.7563 9.375 12.375 8.75625 12.375 8C12.375 7.24375 11.7563 6.625 11 6.625Z"
|
||||
fill=""
|
||||
/>
|
||||
</svg>
|
||||
<CardDataStats title="总访客" total="8,765" rate="0.43%" levelUp>
|
||||
<IoStatsChartSharp className="fill-primary dark:fill-white" />
|
||||
</CardDataStats>
|
||||
|
||||
<CardDataStats title="Total Profit" total="$45,2K" rate="4.35%" levelUp>
|
||||
@@ -74,7 +60,7 @@ const ECommerce: React.FC = () => {
|
||||
/>
|
||||
</svg>
|
||||
</CardDataStats>
|
||||
|
||||
|
||||
<CardDataStats title="Total Users" total="3.456" rate="0.95%" levelDown>
|
||||
<svg
|
||||
className="fill-primary dark:fill-white"
|
||||
|
||||
@@ -1,15 +1,69 @@
|
||||
import { useEffect } from 'react';
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import { MessageOutlined } from '@ant-design/icons';
|
||||
import { Avatar, Card, List, Space, Spin } from 'antd';
|
||||
import Title from '@/components/Title';
|
||||
import { getRssListAPI } from '@/api/Rss';
|
||||
import { Rss } from '@/types/rss';
|
||||
import { BiCategory } from "react-icons/bi";
|
||||
import { LuTimer } from "react-icons/lu";
|
||||
import dayjs from 'dayjs';
|
||||
|
||||
const IconText = ({ icon, text }: { icon: React.FC; text: string }) => (
|
||||
<Space>
|
||||
{React.createElement(icon)} {text}
|
||||
</Space>
|
||||
);
|
||||
|
||||
const RssPage = () => {
|
||||
const [list, setList] = useState<Rss[]>([]);
|
||||
const [loading, setLoading] = useState<boolean>(true);
|
||||
|
||||
const getRssList = async () => {
|
||||
setLoading(true);
|
||||
const { data } = await getRssListAPI();
|
||||
setList(data as Rss[]);
|
||||
setLoading(false);
|
||||
};
|
||||
|
||||
const RSSFeed = () => {
|
||||
useEffect(() => {
|
||||
|
||||
getRssList();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h1>RSS Feed</h1>
|
||||
</div>
|
||||
<>
|
||||
<Title value='订阅中心' />
|
||||
|
||||
<Card className='mt-2'>
|
||||
<Spin spinning={loading}>
|
||||
<List
|
||||
dataSource={list}
|
||||
size="large"
|
||||
itemLayout="vertical"
|
||||
pagination={{
|
||||
align: "center",
|
||||
pageSize: 8
|
||||
}}
|
||||
renderItem={(item: Rss) => (
|
||||
<List.Item
|
||||
key={item.title}
|
||||
actions={[
|
||||
<IconText icon={BiCategory} text={item.type} key="list-vertical-star-o" />,
|
||||
<IconText icon={LuTimer} text={dayjs(+item.createTime!).format('YYYY-MM-DD HH:mm:ss')} key="list-vertical-like-o" />,
|
||||
]}
|
||||
// extra={<img alt="logo" src="https://gw.alipayobjects.com/zos/rmsportal/mqaQswcyDLcXyDKnZfES.png" className='h-30' />}
|
||||
>
|
||||
<List.Item.Meta
|
||||
avatar={<Avatar src={item.image} className='w-15 h-15 mr-2' />}
|
||||
title={<a href={item.url} target='_blank'>{item.title}</a>}
|
||||
description={item.description}
|
||||
/>
|
||||
</List.Item>
|
||||
)}
|
||||
/>
|
||||
</Spin>
|
||||
</Card>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default RSSFeed;
|
||||
export default RssPage;
|
||||
@@ -79,7 +79,7 @@ const LinkPage = () => {
|
||||
await editLinkDataAPI({ ...link, ...values });
|
||||
message.success('🎉 编辑网站成功');
|
||||
} else {
|
||||
await addLinkDataAPI(values);
|
||||
await addLinkDataAPI({ ...values, createTime: new Date().getTime().toString() });
|
||||
message.success('🎉 新增网站成功');
|
||||
}
|
||||
|
||||
|
||||
5
src/types/rss.d.ts
vendored
Normal file
5
src/types/rss.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
import { Web } from "./web";
|
||||
|
||||
export interface Rss extends Omit<Web, "id" | "type" | "typeId" | "rss"> {
|
||||
type: string
|
||||
}
|
||||
Reference in New Issue
Block a user