update
This commit is contained in:
2
.env.production.local
Normal file
2
.env.production.local
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
NEXT_PUBLIC_ADMIN_BASE_URL=/admin-api
|
||||||
|
NEXT_PUBLIC_FRONT_BASE_URL=/front-api
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -26,7 +26,7 @@ yarn-debug.log*
|
|||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
|
|
||||||
# local env files
|
# local env files
|
||||||
.env*.local
|
.env.development.local
|
||||||
|
|
||||||
# vercel
|
# vercel
|
||||||
.vercel
|
.vercel
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
import { ReactNode } from "react";
|
||||||
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
|
|
||||||
|
const Layout = ({
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
children: ReactNode;
|
||||||
|
params: {
|
||||||
|
articleId: string;
|
||||||
|
};
|
||||||
|
}) => {
|
||||||
|
return (
|
||||||
|
<ArticleLayout leftNavTitle={"新闻详情"} navigations={[]}>
|
||||||
|
{children}
|
||||||
|
</ArticleLayout>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
@ -0,0 +1,23 @@
|
|||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
import ArticleRender from "@/app/components/ArticleRender";
|
||||||
|
import { articleDetail } from "@/app/api/articles";
|
||||||
|
|
||||||
|
const Page = async ({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: {
|
||||||
|
articleId: string;
|
||||||
|
};
|
||||||
|
}) => {
|
||||||
|
const { articleId } = params;
|
||||||
|
const data = await articleDetail({ id: articleId });
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ArticleWithBreadcrumb breadcrumb={[]}>
|
||||||
|
<ArticleRender article={data} />
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Page;
|
@ -0,0 +1,6 @@
|
|||||||
|
export const navigations = [
|
||||||
|
{
|
||||||
|
title: "学术活动",
|
||||||
|
href: "/academic-exchange/academic-events/pages/1",
|
||||||
|
},
|
||||||
|
];
|
@ -0,0 +1,28 @@
|
|||||||
|
import { ReactNode } from "react";
|
||||||
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
|
import { BreadcrumbItem } from "@/app/components/Breadcrumb";
|
||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
import { navigations } from "@/app/(articles)/academic-exchange/academic-events/pages/[pageIndex]/config";
|
||||||
|
|
||||||
|
const breadcrumb: BreadcrumbItem[] = [
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{
|
||||||
|
title: "学术交流",
|
||||||
|
href: "/academic-exchange/academic-events/pages/1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "学术活动",
|
||||||
|
href: "/academic-exchange/academic-events/pages/1",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<ArticleLayout navigations={navigations} leftNavTitle={"学术交流"}>
|
||||||
|
<ArticleWithBreadcrumb breadcrumb={breadcrumb}>
|
||||||
|
{children}
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
</ArticleLayout>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
@ -0,0 +1,18 @@
|
|||||||
|
import ArticleList from "@/app/components/ArticleList";
|
||||||
|
|
||||||
|
const Page = ({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: {
|
||||||
|
pageIndex: string;
|
||||||
|
};
|
||||||
|
}) => {
|
||||||
|
const { pageIndex } = params;
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ArticleList title={"学术活动"} cid={"6"} pageNo={parseInt(pageIndex)} />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Page;
|
@ -1,6 +1,5 @@
|
|||||||
import { ReactNode } from "react";
|
import { ReactNode } from "react";
|
||||||
import ArticleLayout from "@/app/components/ArticleLayout";
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
import Breadcrumb from "@/app/components/Breadcrumb";
|
|
||||||
|
|
||||||
const Layout = ({
|
const Layout = ({
|
||||||
children,
|
children,
|
||||||
@ -12,10 +11,7 @@ const Layout = ({
|
|||||||
}) => {
|
}) => {
|
||||||
return (
|
return (
|
||||||
<ArticleLayout leftNavTitle={"新闻详情"} navigations={[]}>
|
<ArticleLayout leftNavTitle={"新闻详情"} navigations={[]}>
|
||||||
<div className={"flex flex-col h-full"}>
|
{children}
|
||||||
<Breadcrumb navigations={[]} />
|
|
||||||
<div className={"bg-white px-5 py-4 flex-1 mt-2"}>{children}</div>
|
|
||||||
</div>
|
|
||||||
</ArticleLayout>
|
</ArticleLayout>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { articleDetail } from "@/app/api/articles";
|
import { articleDetail } from "@/app/api/articles";
|
||||||
import ArticleContent from "@/app/components/ArticleContent";
|
import ArticleRender from "@/app/components/ArticleRender";
|
||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
|
||||||
export default async function Article({
|
export default async function Article({
|
||||||
params,
|
params,
|
||||||
@ -9,5 +10,15 @@ export default async function Article({
|
|||||||
};
|
};
|
||||||
}) {
|
}) {
|
||||||
const data = await articleDetail({ id: params.articleId });
|
const data = await articleDetail({ id: params.articleId });
|
||||||
return <ArticleContent article={data} />;
|
return (
|
||||||
|
<ArticleWithBreadcrumb
|
||||||
|
breadcrumb={[
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{ title: "公告通知", href: "/announcements/pages/1" },
|
||||||
|
{ title: data.title, href: `/announcements/${data.id}` },
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
<ArticleRender article={data} />
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
import { ReactNode } from "react";
|
import { ReactNode } from "react";
|
||||||
import ArticleLayout from "@/app/components/ArticleLayout";
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
import Breadcrumb from "@/app/components/Breadcrumb";
|
import { BreadcrumbItem } from "@/app/components/Breadcrumb";
|
||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
|
||||||
|
const breadcrumb: BreadcrumbItem[] = [
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{ title: "公告通知", href: "/announcements/pages/1" },
|
||||||
|
];
|
||||||
|
|
||||||
const Layout = ({ children }: { children: ReactNode }) => {
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
return (
|
return (
|
||||||
<ArticleLayout navigations={[]} leftNavTitle={"公告通知"}>
|
<ArticleLayout navigations={[]} leftNavTitle={"公告通知"}>
|
||||||
<div className={"flex flex-col h-full"}>
|
<ArticleWithBreadcrumb breadcrumb={breadcrumb}>
|
||||||
<Breadcrumb
|
{children}
|
||||||
navigations={[
|
</ArticleWithBreadcrumb>
|
||||||
{ title: "首页", href: "/" },
|
|
||||||
{ title: "公告通知", href: "/announcements/pages/1" },
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
<div className={"bg-white px-5 py-4 flex-1 mt-2"}>{children}</div>
|
|
||||||
</div>
|
|
||||||
</ArticleLayout>
|
</ArticleLayout>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
import { listArticles } from "@/app/api/articles";
|
import ArticleList from "@/app/components/ArticleList";
|
||||||
import { Fragment } from "react";
|
|
||||||
import styles from "./styles.module.scss";
|
|
||||||
import Link from "next/link";
|
|
||||||
import Pagination from "@/app/components/Pagination";
|
|
||||||
|
|
||||||
const Page = async ({
|
const Page = async ({
|
||||||
params,
|
params,
|
||||||
@ -11,31 +7,10 @@ const Page = async ({
|
|||||||
pageIndex: string;
|
pageIndex: string;
|
||||||
};
|
};
|
||||||
}) => {
|
}) => {
|
||||||
const data = await listArticles({
|
const { pageIndex } = params;
|
||||||
cid: "3",
|
|
||||||
pageNo: params.pageIndex,
|
|
||||||
pageSize: 20,
|
|
||||||
});
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<h2 className={"text-[#0f6fca] text-sm"}>公告通知</h2>
|
<ArticleList title={"公告通知"} cid={"3"} pageNo={parseInt(pageIndex)} />
|
||||||
<ul className={`${styles.articles} mt-5`}>
|
|
||||||
{data.lists.map((article, index) => (
|
|
||||||
<li className={`${styles.article}`} key={article.id}>
|
|
||||||
<Link
|
|
||||||
className={"flex h-8 text-sm text-[#666666] items-center"}
|
|
||||||
href={`/announcements/${article.id}`}
|
|
||||||
>
|
|
||||||
{article.title}
|
|
||||||
</Link>
|
|
||||||
</li>
|
|
||||||
))}
|
|
||||||
</ul>
|
|
||||||
<Pagination
|
|
||||||
page={parseInt(params.pageIndex)}
|
|
||||||
total={data.count}
|
|
||||||
perPage={20}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
19
app/(articles)/general-news/[articleId]/layout.tsx
Normal file
19
app/(articles)/general-news/[articleId]/layout.tsx
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import { ReactNode } from "react";
|
||||||
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
|
|
||||||
|
const Layout = ({
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
children: ReactNode;
|
||||||
|
params: {
|
||||||
|
articleId: string;
|
||||||
|
};
|
||||||
|
}) => {
|
||||||
|
return (
|
||||||
|
<ArticleLayout leftNavTitle={"新闻详情"} navigations={[]}>
|
||||||
|
{children}
|
||||||
|
</ArticleLayout>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
24
app/(articles)/general-news/[articleId]/page.tsx
Normal file
24
app/(articles)/general-news/[articleId]/page.tsx
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import { articleDetail } from "@/app/api/articles";
|
||||||
|
import ArticleRender from "@/app/components/ArticleRender";
|
||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
|
||||||
|
export default async function Article({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: {
|
||||||
|
articleId: string;
|
||||||
|
};
|
||||||
|
}) {
|
||||||
|
const data = await articleDetail({ id: params.articleId });
|
||||||
|
return (
|
||||||
|
<ArticleWithBreadcrumb
|
||||||
|
breadcrumb={[
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{ title: "综合新闻", href: "/general-news/pages/1" },
|
||||||
|
{ title: data.title, href: `/general-news/${data.id}` },
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
<ArticleRender article={data} />
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
);
|
||||||
|
}
|
21
app/(articles)/general-news/pages/[pageIndex]/layout.tsx
Normal file
21
app/(articles)/general-news/pages/[pageIndex]/layout.tsx
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import { ReactNode } from "react";
|
||||||
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
|
import { BreadcrumbItem } from "@/app/components/Breadcrumb";
|
||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
|
||||||
|
const breadcrumb: BreadcrumbItem[] = [
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{ title: "综合新闻", href: "/general-news/pages/1" },
|
||||||
|
];
|
||||||
|
|
||||||
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<ArticleLayout navigations={[]} leftNavTitle={"综合新闻"}>
|
||||||
|
<ArticleWithBreadcrumb breadcrumb={breadcrumb}>
|
||||||
|
{children}
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
</ArticleLayout>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
23
app/(articles)/general-news/pages/[pageIndex]/page.tsx
Normal file
23
app/(articles)/general-news/pages/[pageIndex]/page.tsx
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import React from "react";
|
||||||
|
import ArticleList from "@/app/components/ArticleList";
|
||||||
|
|
||||||
|
const Page = ({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: {
|
||||||
|
pageIndex: string;
|
||||||
|
};
|
||||||
|
}) => {
|
||||||
|
const { pageIndex } = params;
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ArticleList
|
||||||
|
title={"综合新闻"}
|
||||||
|
cid={"4"}
|
||||||
|
pageNo={parseInt(pageIndex)}
|
||||||
|
></ArticleList>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Page;
|
19
app/(articles)/recruitment/[articleId]/layout.tsx
Normal file
19
app/(articles)/recruitment/[articleId]/layout.tsx
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import { ReactNode } from "react";
|
||||||
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
|
|
||||||
|
const Layout = ({
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
children: ReactNode;
|
||||||
|
params: {
|
||||||
|
articleId: string;
|
||||||
|
};
|
||||||
|
}) => {
|
||||||
|
return (
|
||||||
|
<ArticleLayout leftNavTitle={"研究院招聘"} navigations={[]}>
|
||||||
|
{children}
|
||||||
|
</ArticleLayout>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
24
app/(articles)/recruitment/[articleId]/page.tsx
Normal file
24
app/(articles)/recruitment/[articleId]/page.tsx
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import { articleDetail } from "@/app/api/articles";
|
||||||
|
import ArticleRender from "@/app/components/ArticleRender";
|
||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
|
||||||
|
export default async function Article({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: {
|
||||||
|
articleId: string;
|
||||||
|
};
|
||||||
|
}) {
|
||||||
|
const data = await articleDetail({ id: params.articleId });
|
||||||
|
return (
|
||||||
|
<ArticleWithBreadcrumb
|
||||||
|
breadcrumb={[
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{ title: "研究院招聘", href: "/recruitment/pages/1" },
|
||||||
|
{ title: data.title, href: `/recruitment/${data.id}` },
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
<ArticleRender article={data} />
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
);
|
||||||
|
}
|
20
app/(articles)/recruitment/pages/[pageIndex]/layout.tsx
Normal file
20
app/(articles)/recruitment/pages/[pageIndex]/layout.tsx
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import { ReactNode } from "react";
|
||||||
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
|
import Breadcrumb, { BreadcrumbItem } from "@/app/components/Breadcrumb";
|
||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
|
||||||
|
const breadcrumb: BreadcrumbItem[] = [
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{ title: "研究院招聘", href: "/recruitment/pages/1" },
|
||||||
|
];
|
||||||
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<ArticleLayout navigations={[]} leftNavTitle={"研究院招聘"}>
|
||||||
|
<ArticleWithBreadcrumb breadcrumb={breadcrumb}>
|
||||||
|
{children}
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
</ArticleLayout>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
22
app/(articles)/recruitment/pages/[pageIndex]/page.tsx
Normal file
22
app/(articles)/recruitment/pages/[pageIndex]/page.tsx
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import ArticleList from "@/app/components/ArticleList";
|
||||||
|
|
||||||
|
const Page = ({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: {
|
||||||
|
pageIndex: string;
|
||||||
|
};
|
||||||
|
}) => {
|
||||||
|
const { pageIndex } = params;
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ArticleList
|
||||||
|
title={"研究院招聘"}
|
||||||
|
cid={"12"}
|
||||||
|
pageNo={parseInt(pageIndex)}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Page;
|
19
app/(articles)/research-progress/[articleId]/layout.tsx
Normal file
19
app/(articles)/research-progress/[articleId]/layout.tsx
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import { ReactNode } from "react";
|
||||||
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
|
|
||||||
|
const Layout = ({
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
children: ReactNode;
|
||||||
|
params: {
|
||||||
|
articleId: string;
|
||||||
|
};
|
||||||
|
}) => {
|
||||||
|
return (
|
||||||
|
<ArticleLayout leftNavTitle={"新闻详情"} navigations={[]}>
|
||||||
|
{children}
|
||||||
|
</ArticleLayout>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
@ -1,7 +1,24 @@
|
|||||||
import React from "react";
|
import { articleDetail } from "@/app/api/articles";
|
||||||
|
import ArticleRender from "@/app/components/ArticleRender";
|
||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
|
||||||
const ResearchProgress = () => {
|
export default async function ResearchProgress({
|
||||||
return <div></div>;
|
params,
|
||||||
};
|
}: {
|
||||||
|
params: {
|
||||||
export default ResearchProgress;
|
articleId: string;
|
||||||
|
};
|
||||||
|
}) {
|
||||||
|
const data = await articleDetail({ id: params.articleId });
|
||||||
|
return (
|
||||||
|
<ArticleWithBreadcrumb
|
||||||
|
breadcrumb={[
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{ title: "科研进展", href: "/general-news/pages/1" },
|
||||||
|
{ title: data.title, href: `/general-news/${data.id}` },
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
<ArticleRender article={data} />
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
import { ReactNode } from "react";
|
||||||
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
|
import Breadcrumb, { BreadcrumbItem } from "@/app/components/Breadcrumb";
|
||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
|
||||||
|
const breadcrumb: BreadcrumbItem[] = [
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{ title: "科研进展", href: "/research-progress/pages/1" },
|
||||||
|
];
|
||||||
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<ArticleLayout navigations={[]} leftNavTitle={"科研进展"}>
|
||||||
|
<ArticleWithBreadcrumb breadcrumb={breadcrumb}>
|
||||||
|
{children}
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
</ArticleLayout>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
18
app/(articles)/research-progress/pages/[pageIndex]/page.tsx
Normal file
18
app/(articles)/research-progress/pages/[pageIndex]/page.tsx
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import ArticleList from "@/app/components/ArticleList";
|
||||||
|
|
||||||
|
const Page = ({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: {
|
||||||
|
pageIndex: string;
|
||||||
|
};
|
||||||
|
}) => {
|
||||||
|
const { pageIndex } = params;
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ArticleList title={"科研进展"} cid={"9"} pageNo={parseInt(pageIndex)} />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Page;
|
@ -0,0 +1,19 @@
|
|||||||
|
import { ReactNode } from "react";
|
||||||
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
|
|
||||||
|
const Layout = ({
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
children: ReactNode;
|
||||||
|
params: {
|
||||||
|
articleId: string;
|
||||||
|
};
|
||||||
|
}) => {
|
||||||
|
return (
|
||||||
|
<ArticleLayout leftNavTitle={"新闻详情"} navigations={[]}>
|
||||||
|
{children}
|
||||||
|
</ArticleLayout>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
@ -0,0 +1,24 @@
|
|||||||
|
import { articleDetail } from "@/app/api/articles";
|
||||||
|
import ArticleRender from "@/app/components/ArticleRender";
|
||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
|
||||||
|
export default async function Page({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: {
|
||||||
|
articleId: string;
|
||||||
|
};
|
||||||
|
}) {
|
||||||
|
const data = await articleDetail({ id: params.articleId });
|
||||||
|
return (
|
||||||
|
<ArticleWithBreadcrumb
|
||||||
|
breadcrumb={[
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{ title: "科技成果", href: "/general-news/pages/1" },
|
||||||
|
{ title: data.title, href: `/general-news/${data.id}` },
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
<ArticleRender article={data} />
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
|
import Breadcrumb, { BreadcrumbItem } from "@/app/components/Breadcrumb";
|
||||||
|
import { ReactNode } from "react";
|
||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
|
||||||
|
const breadcrumb: BreadcrumbItem[] = [
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{ title: "科技成果", href: "/technological-achievements/pages/1" },
|
||||||
|
];
|
||||||
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<ArticleLayout navigations={[]} leftNavTitle={"科研进展"}>
|
||||||
|
<ArticleWithBreadcrumb breadcrumb={breadcrumb}>
|
||||||
|
{children}
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
</ArticleLayout>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
@ -0,0 +1,18 @@
|
|||||||
|
import ArticleList from "@/app/components/ArticleList";
|
||||||
|
|
||||||
|
const Page = ({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: {
|
||||||
|
pageIndex: string;
|
||||||
|
};
|
||||||
|
}) => {
|
||||||
|
const { pageIndex } = params;
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ArticleList title={"科技成果"} cid={"7"} pageNo={parseInt(pageIndex)} />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Page;
|
24
app/(introduce)/achievements-transformation/config.ts
Normal file
24
app/(introduce)/achievements-transformation/config.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
export const navigations = [
|
||||||
|
{ title: "政府政策", href: "/achievements-transformation/government-policy" },
|
||||||
|
{
|
||||||
|
title: "投融资",
|
||||||
|
href: "/achievements-transformation/investment-and-financing",
|
||||||
|
},
|
||||||
|
{ title: "产业对接", href: "/achievements-transformation/industry-docking" },
|
||||||
|
{
|
||||||
|
title: "科技评估",
|
||||||
|
href: "/achievements-transformation/technology-assessment",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "情报服务",
|
||||||
|
href: "/achievements-transformation/intelligence-services",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "科研项目申报",
|
||||||
|
href: "/achievements-transformation/scientific-research-project-declaration",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "知识产权服务",
|
||||||
|
href: "/achievements-transformation/intellectual-property-services",
|
||||||
|
},
|
||||||
|
];
|
@ -0,0 +1,21 @@
|
|||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
import { ReactNode } from "react";
|
||||||
|
import { BreadcrumbItem } from "@/app/components/Breadcrumb";
|
||||||
|
|
||||||
|
const breadcrumb: BreadcrumbItem[] = [
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{
|
||||||
|
title: "成果转化服务",
|
||||||
|
href: "/achievements-transformation/government-policy",
|
||||||
|
},
|
||||||
|
{ title: "政府政策", href: "/achievements-transformation/government-policy" },
|
||||||
|
];
|
||||||
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<ArticleWithBreadcrumb breadcrumb={breadcrumb}>
|
||||||
|
{children}
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
@ -0,0 +1,19 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
|
const Page = () => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ArticleHeading text={"政府政策"} />
|
||||||
|
<ol className={"list-decimal list-inside indent-8"}>
|
||||||
|
<li>帮助企业对接政府普惠政策,争取一事一议政策</li>
|
||||||
|
<li>帮助企业享受专项政策</li>
|
||||||
|
<li>帮助企业争取落地政策</li>
|
||||||
|
<li>帮助企业争取政府投资</li>
|
||||||
|
<li>帮助企业争取市场及应用场景支持</li>
|
||||||
|
<li>帮助企业跨区域争取政府支持</li>
|
||||||
|
</ol>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Page;
|
@ -0,0 +1,21 @@
|
|||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
import { ReactNode } from "react";
|
||||||
|
import { BreadcrumbItem } from "@/app/components/Breadcrumb";
|
||||||
|
|
||||||
|
const breadcrumb: BreadcrumbItem[] = [
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{
|
||||||
|
title: "成果转化服务",
|
||||||
|
href: "/achievements-transformation/government-policy",
|
||||||
|
},
|
||||||
|
{ title: "产业对接", href: "/achievements-transformation/industry-docking" },
|
||||||
|
];
|
||||||
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<ArticleWithBreadcrumb breadcrumb={breadcrumb}>
|
||||||
|
{children}
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
@ -0,0 +1,19 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
|
const Page = () => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ArticleHeading text={"产业对接"} />
|
||||||
|
<ol className={"list-decimal list-inside indent-8"}>
|
||||||
|
<li>对接政府资源</li>
|
||||||
|
<li>对接行业资源</li>
|
||||||
|
<li>对接中科院科技资源</li>
|
||||||
|
<li>对接投融资资源</li>
|
||||||
|
<li>对接产业链资源</li>
|
||||||
|
<li>对接一带一路市场资源</li>
|
||||||
|
</ol>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Page;
|
@ -0,0 +1,24 @@
|
|||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
import { ReactNode } from "react";
|
||||||
|
import { BreadcrumbItem } from "@/app/components/Breadcrumb";
|
||||||
|
|
||||||
|
const breadcrumb: BreadcrumbItem[] = [
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{
|
||||||
|
title: "成果转化服务",
|
||||||
|
href: "/achievements-transformation/government-policy",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "知识产权服务",
|
||||||
|
href: "/achievements-transformation/scientific-research-project-declaration",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<ArticleWithBreadcrumb breadcrumb={breadcrumb}>
|
||||||
|
{children}
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
@ -0,0 +1,22 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
|
const Page = () => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ArticleHeading text={"知识产权服务"} />
|
||||||
|
<p className={"text-base indent-8 my-1 text-center"}>
|
||||||
|
知识产权服务内容:
|
||||||
|
</p>
|
||||||
|
<ol className={"list-decimal list-inside indent-8 text-center"}>
|
||||||
|
<li>知识产权申报</li>
|
||||||
|
<li>知识产权运营</li>
|
||||||
|
<li>知识产权交易</li>
|
||||||
|
<li>知识产权贷款</li>
|
||||||
|
<li>知识产权布局</li>
|
||||||
|
<li>知识产权维护</li>
|
||||||
|
</ol>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Page;
|
@ -0,0 +1,24 @@
|
|||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
import { ReactNode } from "react";
|
||||||
|
import { BreadcrumbItem } from "@/app/components/Breadcrumb";
|
||||||
|
|
||||||
|
const breadcrumb: BreadcrumbItem[] = [
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{
|
||||||
|
title: "成果转化服务",
|
||||||
|
href: "/achievements-transformation/government-policy",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "情报服务",
|
||||||
|
href: "/achievements-transformation/intelligence-services",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<ArticleWithBreadcrumb breadcrumb={breadcrumb}>
|
||||||
|
{children}
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
@ -0,0 +1,26 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
|
const Page = () => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ArticleHeading text={"情报服务"} />
|
||||||
|
<ol className={"list-decimal list-inside indent-8"}>
|
||||||
|
<li>
|
||||||
|
科技战略研究与决策咨询(战略情报)偏宏观。战略,规划,计划,布局,资源,政策。
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
学科数据挖掘与知识分析(学科情报)偏微观。前沿,方向,突破;学术影响力,科研竞争力。
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
区域与产业发展决策咨询(竞争情报)中微观。科技;经济,社会;技术,市场;财政,金融。
|
||||||
|
</li>
|
||||||
|
<li>帮助企业进行技术情报分析(含竞争对手)</li>
|
||||||
|
<li>帮助企业进行专利布局</li>
|
||||||
|
<li>帮助政府制定产业规划方案</li>
|
||||||
|
<li>帮助企业对接技术需求,科技成果</li>
|
||||||
|
</ol>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Page;
|
@ -0,0 +1,24 @@
|
|||||||
|
import React, { ReactNode } from "react";
|
||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
import { BreadcrumbItem } from "@/app/components/Breadcrumb";
|
||||||
|
|
||||||
|
const breadcrumb: BreadcrumbItem[] = [
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{
|
||||||
|
title: "成果转化服务",
|
||||||
|
href: "/achievements-transformation/government-policy",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "投融资",
|
||||||
|
href: "/achievements-transformation/investment-and-financing",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<ArticleWithBreadcrumb breadcrumb={breadcrumb}>
|
||||||
|
{children}
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
@ -0,0 +1,18 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
|
const Page = () => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ArticleHeading text={"投融资"} />
|
||||||
|
<ol className={"list-decimal list-inside indent-8"}>
|
||||||
|
<li>帮助企业对接科技银行提供信用贷款</li>
|
||||||
|
<li>帮助企业对接投融资机构</li>
|
||||||
|
<li>帮助企业对接产业资本助力上市</li>
|
||||||
|
<li>帮助企业对接券商上市辅导</li>
|
||||||
|
<li>帮助企业对接政府产业引导基金,协助企业落地</li>
|
||||||
|
</ol>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Page;
|
13
app/(introduce)/achievements-transformation/layout.tsx
Normal file
13
app/(introduce)/achievements-transformation/layout.tsx
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
|
import { ReactNode } from "react";
|
||||||
|
import { navigations } from "@/app/(introduce)/achievements-transformation/config";
|
||||||
|
|
||||||
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<ArticleLayout leftNavTitle={"成果转化服务"} navigations={navigations}>
|
||||||
|
{children}
|
||||||
|
</ArticleLayout>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
@ -0,0 +1,24 @@
|
|||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
import { ReactNode } from "react";
|
||||||
|
import { BreadcrumbItem } from "@/app/components/Breadcrumb";
|
||||||
|
|
||||||
|
const breadcrumb: BreadcrumbItem[] = [
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{
|
||||||
|
title: "成果转化服务",
|
||||||
|
href: "/achievements-transformation/government-policy",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "科研项目申报",
|
||||||
|
href: "/achievements-transformation/scientific-research-project-declaration",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<ArticleWithBreadcrumb breadcrumb={breadcrumb}>
|
||||||
|
{children}
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
@ -0,0 +1,23 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
|
const Page = () => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ArticleHeading text={"科研项目申报"} />
|
||||||
|
<ol className={"list-decimal list-inside indent-8"}>
|
||||||
|
<li>帮助企业申报国家级、省、市、区科技研发项目</li>
|
||||||
|
<li>联合企业申报国家级、省、市、区科研项目</li>
|
||||||
|
<li>
|
||||||
|
联合企业申报科研平台(工程中心、重点实验室、研发中心、设计中心、技术中心)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
联合企业共建中国科学院重庆绿色智能技术研究院合肥分院研发中心或实验室
|
||||||
|
</li>
|
||||||
|
<li>帮助高层次人才或团队申报人才项目</li>
|
||||||
|
<li>科研项目转化</li>
|
||||||
|
</ol>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Page;
|
@ -0,0 +1,24 @@
|
|||||||
|
import ArticleWithBreadcrumb from "@/app/components/ArticleWithBreadcrumb";
|
||||||
|
import { ReactNode } from "react";
|
||||||
|
import { BreadcrumbItem } from "@/app/components/Breadcrumb";
|
||||||
|
|
||||||
|
const breadcrumb: BreadcrumbItem[] = [
|
||||||
|
{ title: "首页", href: "/" },
|
||||||
|
{
|
||||||
|
title: "成果转化服务",
|
||||||
|
href: "/achievements-transformation/government-policy",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "科技评估",
|
||||||
|
href: "/achievements-transformation/technology-assessment",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<ArticleWithBreadcrumb breadcrumb={breadcrumb}>
|
||||||
|
{children}
|
||||||
|
</ArticleWithBreadcrumb>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
@ -0,0 +1,17 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
|
const Page = () => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ArticleHeading text={"科技评估"} />
|
||||||
|
<ol className={"list-decimal list-inside indent-8"}>
|
||||||
|
<li>科技成果的技术水平,经济效益和价值的评估</li>
|
||||||
|
<li>产业和地区的科技进步和绩效</li>
|
||||||
|
<li>科技机构的综合实力和运营水平</li>
|
||||||
|
<li>科技政策的研究和制定效果评价</li>
|
||||||
|
</ol>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Page;
|
20
app/(introduce)/contact-us/layout.tsx
Normal file
20
app/(introduce)/contact-us/layout.tsx
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
|
import React, { ReactNode } from "react";
|
||||||
|
import Breadcrumb from "@/app/components/Breadcrumb";
|
||||||
|
|
||||||
|
const breadcrumb = [
|
||||||
|
{ href: "/", title: "首页" },
|
||||||
|
{ href: "/contact-us", title: "联系我们" },
|
||||||
|
];
|
||||||
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<ArticleLayout leftNavTitle={"联系我们"}>
|
||||||
|
<div className={"flex flex-col h-full"}>
|
||||||
|
<Breadcrumb navigations={breadcrumb} />
|
||||||
|
<div className={"bg-white px-5 py-4 flex-1 mt-2"}>{children}</div>
|
||||||
|
</div>
|
||||||
|
</ArticleLayout>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
24
app/(introduce)/contact-us/page.tsx
Normal file
24
app/(introduce)/contact-us/page.tsx
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
const Page = () => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<h2 className={"text-center text-lg font-bold text-[#054786] mb-8"}>
|
||||||
|
信息公开联系方式
|
||||||
|
</h2>
|
||||||
|
<p className={"text-base indent-8 my-1"}>
|
||||||
|
机构名称:中国科学院重庆绿色智能技术研究院合肥分院
|
||||||
|
</p>
|
||||||
|
<p className={"text-base indent-8 my-1"}>
|
||||||
|
工作时间:8:30-18:00(节假日除外)
|
||||||
|
</p>
|
||||||
|
<p className={"text-base indent-8 my-1"}>
|
||||||
|
联系电话:18156053255 18156054143
|
||||||
|
</p>
|
||||||
|
<p className={"text-base indent-8 my-1"}>
|
||||||
|
通信地址:安徽省合肥市高新区创新产业园D1 7楼
|
||||||
|
</p>
|
||||||
|
<p className={"text-base indent-8 my-1"}>邮政编码:230022</p>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Page;
|
@ -1,10 +1,10 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>
|
<ArticleHeading text={"资产财务处"} />
|
||||||
资产财务处
|
<p className={"text-base indent-8 my-1"}>
|
||||||
</h2>
|
|
||||||
<p className={"text-base indent-8 mt-8"}>
|
|
||||||
负责院财务管理、国有资产管理等工作,主要职责为:
|
负责院财务管理、国有资产管理等工作,主要职责为:
|
||||||
<ol className={"list-decimal list-inside"}>
|
<ol className={"list-decimal list-inside"}>
|
||||||
<li>
|
<li>
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
import React from "react";
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>
|
<ArticleHeading text={"综合办公室"} />
|
||||||
综合办公室
|
<p className={"text-base indent-8 my-1"}>
|
||||||
</h2>
|
|
||||||
<p className={"text-base indent-8 mt-8"}>
|
|
||||||
负责院党建与创新文化建设、综合行政管理、科学传播与信息化建设等工作,主要职责为:
|
负责院党建与创新文化建设、综合行政管理、科学传播与信息化建设等工作,主要职责为:
|
||||||
<ol className={"list-decimal list-inside"}>
|
<ol className={"list-decimal list-inside"}>
|
||||||
<li>
|
<li>
|
||||||
@ -34,7 +32,7 @@ const Page = () => {
|
|||||||
<li>承担院领导安排的其他工作。</li>
|
<li>承担院领导安排的其他工作。</li>
|
||||||
</ol>
|
</ol>
|
||||||
</p>
|
</p>
|
||||||
<p className={"text-base indent-8 mt-8"}>
|
<p className={"text-base indent-8 my-1"}>
|
||||||
监察审计室挂靠综合办公室,承担院纪委日常工作(含科研道德委员会日常工作),负责院纪检、监察、审计等工作,协助党委做好党风廉政建设及反腐败工作。
|
监察审计室挂靠综合办公室,承担院纪委日常工作(含科研道德委员会日常工作),负责院纪检、监察、审计等工作,协助党委做好党风廉政建设及反腐败工作。
|
||||||
</p>
|
</p>
|
||||||
</>
|
</>
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>产业处</h2>
|
<ArticleHeading text={"产业处"} />
|
||||||
<p className={"text-base indent-8 mt-8"}>
|
<p className={"text-base indent-8 my-1"}>
|
||||||
负责院科技成果转移转化与产业化工作,主要职责为:
|
负责院科技成果转移转化与产业化工作,主要职责为:
|
||||||
<ol className={"list-decimal list-inside"}>
|
<ol className={"list-decimal list-inside"}>
|
||||||
<li>负责产业化项目的申报和管理。</li>
|
<li>负责产业化项目的申报和管理。</li>
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>人事处</h2>
|
<ArticleHeading text={"人事处"} />
|
||||||
<p className={"text-base indent-8 mt-8"}>
|
<p className={"text-base indent-8 my-1"}>
|
||||||
负责院人才队伍建设、人事管理等工作,主要职责为:
|
负责院人才队伍建设、人事管理等工作,主要职责为:
|
||||||
<ol className={"list-decimal list-inside"}>
|
<ol className={"list-decimal list-inside"}>
|
||||||
<li>组织制定、修订院人力资源战略,编制人力资源发展规划。</li>
|
<li>组织制定、修订院人力资源战略,编制人力资源发展规划。</li>
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>科技处</h2>
|
<ArticleHeading text={"科技处"} />
|
||||||
<p className={"text-base indent-8 mt-8"}>
|
<p className={"text-base indent-8 my-1"}>
|
||||||
负责院科技发展规划、学科体系建设、重大科技任务组织、科技管理、国际交流等工作,主要职责为:
|
负责院科技发展规划、学科体系建设、重大科技任务组织、科技管理、国际交流等工作,主要职责为:
|
||||||
</p>
|
</p>
|
||||||
<ol className={"list-decimal list-inside indent-8"}>
|
<ol className={"list-decimal list-inside indent-8"}>
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>
|
<ArticleHeading text={"组织架构"} />
|
||||||
组织架构
|
|
||||||
</h2>
|
|
||||||
<img
|
<img
|
||||||
className={"w-full mt-8"}
|
className={"w-full"}
|
||||||
src={`${process.env.NEXT_ADMIN_BASE_URL}/uploads/image/20231030/5c0b98dc-cf76-49c3-a510-f2f197f7dd09.jpeg`}
|
src={`${process.env.NEXT_PUBLIC_ADMIN_BASE_URL}/uploads/image/20231030/5c0b98dc-cf76-49c3-a510-f2f197f7dd09.jpeg`}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
10
app/(introduce)/organization/(generally)/config.ts
Normal file
10
app/(introduce)/organization/(generally)/config.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
export const navigations = [
|
||||||
|
{ title: "机构简介", href: "/organization/overview" },
|
||||||
|
{ title: "院长致辞", href: "/organization/dean-speech" },
|
||||||
|
{ title: "科技产业发展委员会", href: "/organization/stidc" },
|
||||||
|
{ title: "组织架构", href: "/organization/architecture" },
|
||||||
|
{ title: "职能部门", href: "/organization/func-dep/general-office" },
|
||||||
|
{ title: "研究中心联合实验室", href: "/organization/joint-laboratory" },
|
||||||
|
{ title: "合作企业", href: "/organization/joint-venture" },
|
||||||
|
{ title: "科研平台", href: "/organization/research-platform" },
|
||||||
|
];
|
@ -1,20 +1,20 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>
|
<ArticleHeading text={"院长致辞"} />
|
||||||
院长致辞
|
<p className={"text-base indent-8 my-1"}>
|
||||||
</h2>
|
|
||||||
<p className={"text-base indent-8 mt-8"}>
|
|
||||||
世界处于百年未有之大变局,第四次工业革命方兴未艾,人工智能、机器人技术、虚拟现实以及量子科技等蓬勃发展,将深度改变人类生产和生活方式,对国际格局的发展产生重要影响。中国要强大、民族要复兴、人民要幸福,科技强国梦就必须要实现。
|
世界处于百年未有之大变局,第四次工业革命方兴未艾,人工智能、机器人技术、虚拟现实以及量子科技等蓬勃发展,将深度改变人类生产和生活方式,对国际格局的发展产生重要影响。中国要强大、民族要复兴、人民要幸福,科技强国梦就必须要实现。
|
||||||
</p>
|
</p>
|
||||||
<p className={"text-base indent-8 mt-8"}>
|
<p className={"text-base indent-8 my-1"}>
|
||||||
合肥分院的设立,是响应中科院支持合肥国家科学中心建设的号召,中科院重庆绿色智能技术研究院在合肥设立的独立法人事业单位。主要从事绿色智能科技研发与科技成果转化。合肥分院秉持“市场为魂,创新为本”的理念。按照“院企共建、源头创新、科技共享、产业集聚”模式建设。以服务好科技工作者,服务好合作企业,服务好区域产业创新升级为宗旨。
|
合肥分院的设立,是响应中科院支持合肥国家科学中心建设的号召,中科院重庆绿色智能技术研究院在合肥设立的独立法人事业单位。主要从事绿色智能科技研发与科技成果转化。合肥分院秉持“市场为魂,创新为本”的理念。按照“院企共建、源头创新、科技共享、产业集聚”模式建设。以服务好科技工作者,服务好合作企业,服务好区域产业创新升级为宗旨。
|
||||||
</p>
|
</p>
|
||||||
<p className={"text-base indent-8 mt-8"}>
|
<p className={"text-base indent-8 my-1"}>
|
||||||
合肥分院积极探索政、产、学、研、用紧密结合的机制,以合肥产业发展重大科技需求为牵引在人工智能、精准医疗、5G物联网等领域进行科技布局,集聚中科院体系内绿色智能科技人才与科技成果,重点开展产业关键核心技术与前沿技术创新、技术集成创新、工程化研发和科技成果转移转化工作,与技术创新体系和区域产业体系紧密结合,提升合肥创新发展能力。
|
合肥分院积极探索政、产、学、研、用紧密结合的机制,以合肥产业发展重大科技需求为牵引在人工智能、精准医疗、5G物联网等领域进行科技布局,集聚中科院体系内绿色智能科技人才与科技成果,重点开展产业关键核心技术与前沿技术创新、技术集成创新、工程化研发和科技成果转移转化工作,与技术创新体系和区域产业体系紧密结合,提升合肥创新发展能力。
|
||||||
把合肥分院建设成为产业技术源头创新基地、技术集成创新与育成基地、高层次创新创业人才培养基地和科技与产业对接的重要平台。合肥分院坚持立足合肥、辐射安徽,坚持技术立院、应用立院,坚持需求牵引、创新驱动、院企共建,按照“地方政府满意、合作企业满意、科学家满意”的检验标准。
|
把合肥分院建设成为产业技术源头创新基地、技术集成创新与育成基地、高层次创新创业人才培养基地和科技与产业对接的重要平台。合肥分院坚持立足合肥、辐射安徽,坚持技术立院、应用立院,坚持需求牵引、创新驱动、院企共建,按照“地方政府满意、合作企业满意、科学家满意”的检验标准。
|
||||||
</p>
|
</p>
|
||||||
<p className={"text-base indent-8 mt-8"}>
|
<p className={"text-base indent-8 my-1"}>
|
||||||
合肥分院希望能走出一条开放、包容、协作、创新的新型科研院所的道路。竭诚欢迎海内外英才,共创大业,实现科技强国梦!
|
合肥分院希望能走出一条开放、包容、协作、创新的新型科研院所的道路。竭诚欢迎海内外英才,共创大业,实现科技强国梦!
|
||||||
</p>
|
</p>
|
||||||
</>
|
</>
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>
|
<ArticleHeading text={"研究中心"} />
|
||||||
研究中心
|
<p className={"text-base indent-8 my-1"}>建设中...</p>
|
||||||
</h2>
|
|
||||||
<p className={"text-base indent-8 mt-8"}>建设中...</p>
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>
|
<ArticleHeading text={"合作企业"} />
|
||||||
合作企业
|
<p className={"text-base indent-8 my-1"}>对接中...</p>
|
||||||
</h2>
|
|
||||||
<p className={"text-base indent-8 mt-8"}>对接中...</p>
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -1,16 +1,6 @@
|
|||||||
import ArticleLayout from "@/app/components/ArticleLayout";
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
import { ReactNode } from "react";
|
import { ReactNode } from "react";
|
||||||
|
import { navigations } from "@/app/(introduce)/organization/(generally)/config";
|
||||||
const navigations = [
|
|
||||||
{ title: "机构简介", href: "/organization/overview" },
|
|
||||||
{ title: "院长致辞", href: "/organization/dean-speech" },
|
|
||||||
{ title: "科技产业发展委员会", href: "/organization/stidc" },
|
|
||||||
{ title: "组织架构", href: "/organization/architecture" },
|
|
||||||
{ title: "职能部门", href: "/organization/func-dep/general-office" },
|
|
||||||
{ title: "研究中心联合实验室", href: "/organization/joint-laboratory" },
|
|
||||||
{ title: "合作企业", href: "/organization/joint-venture" },
|
|
||||||
{ title: "科研平台", href: "/organization/research-platform" },
|
|
||||||
];
|
|
||||||
|
|
||||||
const Layout = ({ children }: { children: ReactNode }) => {
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
return (
|
return (
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>
|
<ArticleHeading text={"中国科学院重庆绿色智能技术研究院合肥分院"} />
|
||||||
中国科学院重庆绿色智能技术研究院合肥分院
|
<p className={"text-base indent-8 my-1"}>
|
||||||
</h2>
|
|
||||||
<p className={"text-base indent-8 mt-8"}>
|
|
||||||
中国科学院重庆绿色智能技术研究院合肥分院(以下简称“合肥分院”)是在响应中科院号召支持合肥国家科学中心建设的前提下,中国科学院重庆绿色智能技术研究院与合肥市共建的直属事业法人科研机构。2018年2月20号在中科院与安徽省共建领导小组会议上正式签约筹建,2018年12月20日,正式获得事业法人登记证书。
|
中国科学院重庆绿色智能技术研究院合肥分院(以下简称“合肥分院”)是在响应中科院号召支持合肥国家科学中心建设的前提下,中国科学院重庆绿色智能技术研究院与合肥市共建的直属事业法人科研机构。2018年2月20号在中科院与安徽省共建领导小组会议上正式签约筹建,2018年12月20日,正式获得事业法人登记证书。
|
||||||
</p>
|
</p>
|
||||||
<p className={"text-base indent-8 mt-8"}>
|
<p className={"text-base indent-8 my-1"}>
|
||||||
合肥分院设立科技咨询委员会和产业咨询委员会,设人工智能、精准医疗、5G物联、绿色环保等研究单元。主要从事绿色智能科技研发与科技成果转化。
|
合肥分院设立科技咨询委员会和产业咨询委员会,设人工智能、精准医疗、5G物联、绿色环保等研究单元。主要从事绿色智能科技研发与科技成果转化。
|
||||||
</p>
|
</p>
|
||||||
<p className={"text-base indent-8 mt-8"}>
|
<p className={"text-base indent-8 my-1"}>
|
||||||
合肥分院秉持重庆研究院“市场为魂,创新为本”的理念。按照“院企共建、源头创新、科技共享、产业集聚”模式建设。以服务好科技工作者,服务好合作企业为宗旨。开展形式多样的成果转移转化,加快科研成果落地。
|
合肥分院秉持重庆研究院“市场为魂,创新为本”的理念。按照“院企共建、源头创新、科技共享、产业集聚”模式建设。以服务好科技工作者,服务好合作企业为宗旨。开展形式多样的成果转移转化,加快科研成果落地。
|
||||||
</p>
|
</p>
|
||||||
</>
|
</>
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>
|
<ArticleHeading text={"科研平台"} />
|
||||||
科研平台
|
<p className={"text-base indent-8 my-1"}>筹建中...</p>
|
||||||
</h2>
|
|
||||||
<p className={"text-base indent-8 mt-8"}>筹建中...</p>
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>
|
<ArticleHeading text={"科技产业发展委员会"} />
|
||||||
科技产业发展委员会
|
<p className={"text-base indent-8 my-1"}>筹备中...</p>
|
||||||
</h2>
|
|
||||||
<p className={"text-base indent-8 mt-8"}>筹备中...</p>
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -1,16 +1,14 @@
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{" "}
|
<ArticleHeading text={"两院院士"} />
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>
|
<p className={"text-base text-center"}>中科院院士</p>
|
||||||
两院院士
|
|
||||||
</h2>
|
|
||||||
<p className={"text-base mt-8 text-center"}>中科院院士</p>
|
|
||||||
<p className={"flex justify-center mt-2"}>
|
<p className={"flex justify-center mt-2"}>
|
||||||
<img
|
<img
|
||||||
src={`${process.env.NEXT_ADMIN_BASE_URL}/uploads/image/20231030/8d05e613-e2c6-47d1-81a9-08bd70b8ba73.jpeg`}
|
src={`${process.env.NEXT_PUBLIC_ADMIN_BASE_URL}/uploads/image/20231030/8d05e613-e2c6-47d1-81a9-08bd70b8ba73.jpeg`}
|
||||||
alt={"张景中"}
|
alt={"张景中"}
|
||||||
/>
|
/>
|
||||||
</p>
|
</p>
|
||||||
|
6
app/(introduce)/talents/config.ts
Normal file
6
app/(introduce)/talents/config.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
export const navigations = [
|
||||||
|
{ title: "人才概览", href: "/talents/overview" },
|
||||||
|
{ title: "两院院士", href: "/talents/academician" },
|
||||||
|
{ title: "研究员", href: "/talents/researcher" },
|
||||||
|
{ title: "副研究员", href: "/talents/vice-researcher" },
|
||||||
|
];
|
@ -1,12 +1,6 @@
|
|||||||
import ArticleLayout from "@/app/components/ArticleLayout";
|
import ArticleLayout from "@/app/components/ArticleLayout";
|
||||||
import { ReactNode } from "react";
|
import { ReactNode } from "react";
|
||||||
|
import { navigations } from "@/app/(introduce)/talents/config";
|
||||||
const navigations = [
|
|
||||||
{ title: "人才概览", href: "/talents/overview" },
|
|
||||||
{ title: "两院院士", href: "/talents/academician" },
|
|
||||||
{ title: "研究员", href: "/talents/researcher" },
|
|
||||||
{ title: "副研究员", href: "/talents/vice-researcher" },
|
|
||||||
];
|
|
||||||
|
|
||||||
const Layout = ({ children }: { children: ReactNode }) => {
|
const Layout = ({ children }: { children: ReactNode }) => {
|
||||||
return (
|
return (
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>
|
<ArticleHeading text={"人才概况"} />
|
||||||
人才概况
|
|
||||||
</h2>
|
<p className={"text-base indent-8 my-1"}>
|
||||||
<p className={"text-base indent-8 mt-8"}>
|
|
||||||
截止2017年10月底,重庆研究院全院共有员工333人,包括正高级40人,副高级61人,中级136人,初级21人。具有环境科学与工程、光学工程两个一级学科博士学位培养点,截止2017年10月底,共有博士生导师25人,硕士生导师38人,在读研究生117,其中博士39人,硕士73
|
截止2017年10月底,重庆研究院全院共有员工333人,包括正高级40人,副高级61人,中级136人,初级21人。具有环境科学与工程、光学工程两个一级学科博士学位培养点,截止2017年10月底,共有博士生导师25人,硕士生导师38人,在读研究生117,其中博士39人,硕士73
|
||||||
人,留学生5人。
|
人,留学生5人。
|
||||||
</p>
|
</p>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import styles from "./page.module.scss";
|
import styles from "./page.module.scss";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const academicians = [
|
const academicians = [
|
||||||
{
|
{
|
||||||
@ -49,16 +50,16 @@ const academicians = [
|
|||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>研究员</h2>
|
<ArticleHeading text={"研究员"} />
|
||||||
<div className={`${styles.academicians} flex flex-wrap mt-8`}>
|
<div className={`${styles.academicians} flex flex-wrap`}>
|
||||||
{academicians.map((academician) => (
|
{academicians.map((academician) => (
|
||||||
<div
|
<div
|
||||||
key={academician.name}
|
key={academician.name}
|
||||||
className={`${styles.academician} flex flex-col items-center w-1/5 mt-4`}
|
className={`${styles.academician} flex flex-col items-center w-1/5 mb-4`}
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
className={"h-[138px]"}
|
className={"h-[138px]"}
|
||||||
src={`${process.env.NEXT_ADMIN_BASE_URL}${academician.picture}`}
|
src={`${process.env.NEXT_PUBLIC_ADMIN_BASE_URL}${academician.picture}`}
|
||||||
/>
|
/>
|
||||||
<Link href={academician.link}>{academician.name}</Link>
|
<Link href={academician.link}>{academician.name}</Link>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const academicians = [
|
const academicians = [
|
||||||
{
|
{
|
||||||
@ -18,8 +19,8 @@ const academicians = [
|
|||||||
const Page = () => {
|
const Page = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className={"text-center text-lg font-bold text-[#054786]"}>研究员</h2>
|
<ArticleHeading text={"副研究员"} />
|
||||||
<div className={`flex mt-8 justify-around`}>
|
<div className={`flex justify-around`}>
|
||||||
{academicians.map((academician) => (
|
{academicians.map((academician) => (
|
||||||
<div
|
<div
|
||||||
key={academician.name}
|
key={academician.name}
|
||||||
@ -27,7 +28,7 @@ const Page = () => {
|
|||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
className={"h-[138px]"}
|
className={"h-[138px]"}
|
||||||
src={`${process.env.NEXT_ADMIN_BASE_URL}${academician.picture}`}
|
src={`${process.env.NEXT_PUBLIC_ADMIN_BASE_URL}${academician.picture}`}
|
||||||
/>
|
/>
|
||||||
<Link href={academician.link}>{academician.name}</Link>
|
<Link href={academician.link}>{academician.name}</Link>
|
||||||
</div>
|
</div>
|
||||||
|
BIN
app/assets/pin.png
Normal file
BIN
app/assets/pin.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 62 KiB |
171
app/components/AnhuiSwiper.tsx
Normal file
171
app/components/AnhuiSwiper.tsx
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
"use client";
|
||||||
|
import React, { useEffect, useState } from "react";
|
||||||
|
import { register } from "swiper/element/bundle";
|
||||||
|
import axios from "axios";
|
||||||
|
import request from "@/app/lib/request";
|
||||||
|
import { BaseResponse, PageData } from "@/app/types/base";
|
||||||
|
import { Album } from "@/app/types/album";
|
||||||
|
|
||||||
|
register();
|
||||||
|
|
||||||
|
const albums = [
|
||||||
|
{
|
||||||
|
id: 28,
|
||||||
|
cid: 3,
|
||||||
|
name: "ah9.jpeg",
|
||||||
|
path: "/uploads/image/20231101/99c2f8c3-aba8-4872-a9b9-dfbcf128c062.jpeg",
|
||||||
|
uri: "http://localhost:8082/api/uploads/image/20231101/99c2f8c3-aba8-4872-a9b9-dfbcf128c062.jpeg",
|
||||||
|
ext: "jpeg",
|
||||||
|
size: "40KB",
|
||||||
|
createTime: "2023-11-01 10:40:15",
|
||||||
|
updateTime: "2023-11-01 10:40:15",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 27,
|
||||||
|
cid: 3,
|
||||||
|
name: "ah7.jpeg",
|
||||||
|
path: "/uploads/image/20231101/aba2a38f-ee62-4730-af7a-5b8933ed7497.jpeg",
|
||||||
|
uri: "http://localhost:8082/api/uploads/image/20231101/aba2a38f-ee62-4730-af7a-5b8933ed7497.jpeg",
|
||||||
|
ext: "jpeg",
|
||||||
|
size: "4KB",
|
||||||
|
createTime: "2023-11-01 10:40:15",
|
||||||
|
updateTime: "2023-11-01 10:40:15",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 26,
|
||||||
|
cid: 3,
|
||||||
|
name: "ah8.jpeg",
|
||||||
|
path: "/uploads/image/20231101/63523f59-9b59-40d1-a654-c4678f8a1913.jpeg",
|
||||||
|
uri: `http://localhost:8082/api/uploads/image/20231101/63523f59-9b59-40d1-a654-c4678f8a1913.jpeg`,
|
||||||
|
ext: "jpeg",
|
||||||
|
size: "29KB",
|
||||||
|
createTime: "2023-11-01 10:40:15",
|
||||||
|
updateTime: "2023-11-01 10:40:15",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 25,
|
||||||
|
cid: 3,
|
||||||
|
name: "ah2.jpeg",
|
||||||
|
path: "/uploads/image/20231101/5bedf085-841a-48cc-bca2-9c9b2c751b48.jpeg",
|
||||||
|
uri: `http://localhost:8082/api/uploads/image/20231101/5bedf085-841a-48cc-bca2-9c9b2c751b48.jpeg`,
|
||||||
|
ext: "jpeg",
|
||||||
|
size: "26KB",
|
||||||
|
createTime: "2023-11-01 10:40:15",
|
||||||
|
updateTime: "2023-11-01 10:40:15",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 24,
|
||||||
|
cid: 3,
|
||||||
|
name: "ah5.jpeg",
|
||||||
|
path: "/uploads/image/20231101/2f19a501-89f7-4f78-9487-096a3799736d.jpeg",
|
||||||
|
uri: "http://localhost:8082/api/uploads/image/20231101/2f19a501-89f7-4f78-9487-096a3799736d.jpeg",
|
||||||
|
ext: "jpeg",
|
||||||
|
size: "22KB",
|
||||||
|
createTime: "2023-11-01 10:40:15",
|
||||||
|
updateTime: "2023-11-01 10:40:15",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 23,
|
||||||
|
cid: 3,
|
||||||
|
name: "ah6.jpeg",
|
||||||
|
path: "/uploads/image/20231101/70f4bea2-77a4-4595-a3a5-5c60711afae6.jpeg",
|
||||||
|
uri: "http://localhost:8082/api/uploads/image/20231101/70f4bea2-77a4-4595-a3a5-5c60711afae6.jpeg",
|
||||||
|
ext: "jpeg",
|
||||||
|
size: "22KB",
|
||||||
|
createTime: "2023-11-01 10:40:15",
|
||||||
|
updateTime: "2023-11-01 10:40:15",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 22,
|
||||||
|
cid: 3,
|
||||||
|
name: "ah3.jpeg",
|
||||||
|
path: "/uploads/image/20231101/82309b4a-22e8-4b06-8e9d-d2b114ef3aad.jpeg",
|
||||||
|
uri: "http://localhost:8082/api/uploads/image/20231101/82309b4a-22e8-4b06-8e9d-d2b114ef3aad.jpeg",
|
||||||
|
ext: "jpeg",
|
||||||
|
size: "14KB",
|
||||||
|
createTime: "2023-11-01 10:40:15",
|
||||||
|
updateTime: "2023-11-01 10:40:15",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 21,
|
||||||
|
cid: 3,
|
||||||
|
name: "ah1.jpeg",
|
||||||
|
path: "/uploads/image/20231101/5e3a02dc-2c7c-4671-9151-79315a53a3d2.jpeg",
|
||||||
|
uri: "http://localhost:8082/api/uploads/image/20231101/5e3a02dc-2c7c-4671-9151-79315a53a3d2.jpeg",
|
||||||
|
ext: "jpeg",
|
||||||
|
size: "9KB",
|
||||||
|
createTime: "2023-11-01 10:40:15",
|
||||||
|
updateTime: "2023-11-01 10:40:15",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 20,
|
||||||
|
cid: 3,
|
||||||
|
name: "ah4.jpeg",
|
||||||
|
path: "/uploads/image/20231101/106409ac-e454-47f2-a383-8ea572718b3d.jpeg",
|
||||||
|
uri: "http://localhost:8082/api/uploads/image/20231101/106409ac-e454-47f2-a383-8ea572718b3d.jpeg",
|
||||||
|
ext: "jpeg",
|
||||||
|
size: "31KB",
|
||||||
|
createTime: "2023-11-01 10:40:15",
|
||||||
|
updateTime: "2023-11-01 10:40:15",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const AnhuiSwiper = () => {
|
||||||
|
// const [albums, setAlbums] = useState<Album[]>([]);
|
||||||
|
// useEffect(() => {
|
||||||
|
// request
|
||||||
|
// .get<never, BaseResponse<PageData<Album>>>(`/albums/albumList`, {
|
||||||
|
// // baseURL: `${process.env.NEXT_PUBLIC_ADMIN_BASE_URL}`,
|
||||||
|
// baseURL: `http://localhost:8082/api}`,
|
||||||
|
// params: {
|
||||||
|
// cid: 3,
|
||||||
|
// },
|
||||||
|
// })
|
||||||
|
// .then((res) => {
|
||||||
|
// setAlbums(() => res.data.lists);
|
||||||
|
// });
|
||||||
|
// }, []);
|
||||||
|
return (
|
||||||
|
<div className={"h-[205px] bg-white flex flex-col"}>
|
||||||
|
<div
|
||||||
|
className={
|
||||||
|
"bg-[#1f87e8] text-white h-[30px] pl-[5px] flex items-center"
|
||||||
|
}
|
||||||
|
>
|
||||||
|
安徽风采
|
||||||
|
</div>
|
||||||
|
<div className={"flex-1 h-0"}>
|
||||||
|
{/* @ts-ignore*/}
|
||||||
|
<swiper-container
|
||||||
|
effect={"coverflow"}
|
||||||
|
autoplay
|
||||||
|
slides-per-view="3"
|
||||||
|
loop
|
||||||
|
style={{
|
||||||
|
height: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{/* @ts-ignore*/}
|
||||||
|
{albums.map((el) => (
|
||||||
|
// @ts-ignore
|
||||||
|
<swiper-slide
|
||||||
|
key={el.id}
|
||||||
|
style={{
|
||||||
|
display: "flex",
|
||||||
|
alignItems: "center",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
src={`${process.env.NEXT_PUBLIC_ADMIN_BASE_URL}${el.path}`}
|
||||||
|
/>
|
||||||
|
{/*@ts-ignore*/}
|
||||||
|
</swiper-slide>
|
||||||
|
))}
|
||||||
|
{/* @ts-ignore */}
|
||||||
|
</swiper-container>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default AnhuiSwiper;
|
@ -4,6 +4,7 @@ import styles from "@/app/assets/page.module.css";
|
|||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import request from "@/app/lib/request";
|
import request from "@/app/lib/request";
|
||||||
import { listArticles } from "@/app/api/articles";
|
import { listArticles } from "@/app/api/articles";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
|
||||||
interface ArticleLink {
|
interface ArticleLink {
|
||||||
title: string;
|
title: string;
|
||||||
@ -17,12 +18,14 @@ const ArticleBlock = async ({
|
|||||||
height,
|
height,
|
||||||
category,
|
category,
|
||||||
linkPrefix,
|
linkPrefix,
|
||||||
|
showDate,
|
||||||
}: {
|
}: {
|
||||||
title: string;
|
title: string;
|
||||||
height?: number | string;
|
height?: number | string;
|
||||||
width?: number | string;
|
width?: number | string;
|
||||||
category: string;
|
category: string;
|
||||||
linkPrefix: string;
|
linkPrefix: string;
|
||||||
|
showDate?: boolean;
|
||||||
}) => {
|
}) => {
|
||||||
const data = await listArticles({ cid: category });
|
const data = await listArticles({ cid: category });
|
||||||
return (
|
return (
|
||||||
@ -31,23 +34,34 @@ const ArticleBlock = async ({
|
|||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
}}
|
}}
|
||||||
className={"flex flex-col"}
|
className={"flex flex-col overflow-hidden"}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className={`title-bar flex items-center px-2 ${styles.articleBlockTitleBar}`}
|
className={`title-bar text-white flex items-center px-2 font-bold ${styles.articleBlockTitleBar} relative`}
|
||||||
>
|
>
|
||||||
<Image width={30} height={30} src={trumpetIcon} alt={"trumpet icon"} />
|
<Image width={30} height={30} src={trumpetIcon} alt={"trumpet icon"} />
|
||||||
<span className={"ml-2 text-[14px]"}>{title}</span>
|
<span className={"ml-2 text-[14px]"}>{title}</span>
|
||||||
|
<Link
|
||||||
|
className={"absolute right-3 text-white text-xs"}
|
||||||
|
href={`${linkPrefix}/pages/1`}
|
||||||
|
>
|
||||||
|
更多+
|
||||||
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
<div className={`${styles.articlesList} bg-[#e1f1fd] flex-1`}>
|
<div className={`${styles.articlesList} bg-[#e1f1fd] flex-1`}>
|
||||||
<ul>
|
<ul>
|
||||||
{data.lists.map((article) => (
|
{data.lists.map((article) => (
|
||||||
<li className={"h-7 px-1 flex items-center"} key={article.id}>
|
<li className={"h-8"} key={article.id}>
|
||||||
<Link
|
<Link
|
||||||
className={"w-full truncate text-xs"}
|
className={
|
||||||
|
"w-full px-1 h-full flex items-center text-xs justify-between"
|
||||||
|
}
|
||||||
href={`${linkPrefix}/${article.id}`}
|
href={`${linkPrefix}/${article.id}`}
|
||||||
>
|
>
|
||||||
{article.title}
|
<span className={"flex-1 truncate"}>{article.title}</span>
|
||||||
|
{showDate && (
|
||||||
|
<span>{dayjs(article.createTime).format("YYYY-MM-DD")}</span>
|
||||||
|
)}
|
||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
|
9
app/components/ArticleHeading.tsx
Normal file
9
app/components/ArticleHeading.tsx
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
const ArticleHeading = ({ text }: { text: string }) => {
|
||||||
|
return (
|
||||||
|
<h2 className={"text-center text-lg font-bold text-[#054786] mb-8"}>
|
||||||
|
{text}
|
||||||
|
</h2>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ArticleHeading;
|
@ -7,7 +7,7 @@ const ArticleLayout = ({
|
|||||||
leftNavTitle,
|
leftNavTitle,
|
||||||
}: {
|
}: {
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
navigations: any[];
|
navigations?: any[];
|
||||||
leftNavTitle: string;
|
leftNavTitle: string;
|
||||||
}) => {
|
}) => {
|
||||||
return (
|
return (
|
||||||
@ -15,7 +15,7 @@ const ArticleLayout = ({
|
|||||||
<div className={"left-side w-[325px]"}>
|
<div className={"left-side w-[325px]"}>
|
||||||
<LeftNav navigations={navigations} title={leftNavTitle} />
|
<LeftNav navigations={navigations} title={leftNavTitle} />
|
||||||
</div>
|
</div>
|
||||||
<div className={"flex-1 ml-3"}>{children}</div>
|
<div className={"flex-1 ml-3 w-0"}>{children}</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
44
app/components/ArticleList.tsx
Normal file
44
app/components/ArticleList.tsx
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import React from "react";
|
||||||
|
import { listArticles } from "@/app/api/articles";
|
||||||
|
import styles from "./ArticleList.module.scss";
|
||||||
|
import Link from "next/link";
|
||||||
|
import Pagination from "@/app/components/Pagination";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
|
||||||
|
const ArticleList = async ({
|
||||||
|
cid,
|
||||||
|
pageNo,
|
||||||
|
title,
|
||||||
|
}: {
|
||||||
|
title: string;
|
||||||
|
cid: string;
|
||||||
|
pageNo: number;
|
||||||
|
}) => {
|
||||||
|
const data = await listArticles({
|
||||||
|
pageNo,
|
||||||
|
cid,
|
||||||
|
pageSize: 20,
|
||||||
|
sort: "new",
|
||||||
|
});
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<h2 className={"text-[#0f6fca] text-sm"}>{title}</h2>
|
||||||
|
<ul className={`${styles.articles} mt-5`}>
|
||||||
|
{data.lists.map((article, index) => (
|
||||||
|
<li className={`${styles.article}`} key={article.id}>
|
||||||
|
<Link
|
||||||
|
className={"flex h-8 text-sm text-[#666666] items-center"}
|
||||||
|
href={`../${article.id}`}
|
||||||
|
>
|
||||||
|
<span className={"flex-1 w-0 truncate"}>{article.title}</span>
|
||||||
|
<span>{dayjs(article.createTime).format("YYYY-MM-DD")}</span>
|
||||||
|
</Link>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
<Pagination page={pageNo} total={data.count} perPage={20} />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ArticleList;
|
@ -1,13 +1,11 @@
|
|||||||
import React from "react";
|
|
||||||
import { ArticleDetail } from "@/app/types/article";
|
import { ArticleDetail } from "@/app/types/article";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import ArticleHeading from "@/app/components/ArticleHeading";
|
||||||
|
|
||||||
const ArticleContent = ({ article }: { article: ArticleDetail }) => {
|
const ArticleRender = ({ article }: { article: ArticleDetail }) => {
|
||||||
return (
|
return (
|
||||||
<div className={"h-full"}>
|
<div className={"h-full"}>
|
||||||
<h1 className={"text-[18px] text-[#054786] text-center font-bold"}>
|
<ArticleHeading text={article.title} />
|
||||||
{article.title}
|
|
||||||
</h1>
|
|
||||||
<div dangerouslySetInnerHTML={{ __html: article.content }}></div>
|
<div dangerouslySetInnerHTML={{ __html: article.content }}></div>
|
||||||
<div className={"bottom-nav mt-[27px] mb-[50px]"}>
|
<div className={"bottom-nav mt-[27px] mb-[50px]"}>
|
||||||
<div className={"prev"}>
|
<div className={"prev"}>
|
||||||
@ -33,4 +31,4 @@ const ArticleContent = ({ article }: { article: ArticleDetail }) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default ArticleContent;
|
export default ArticleRender;
|
19
app/components/ArticleWithBreadcrumb.tsx
Normal file
19
app/components/ArticleWithBreadcrumb.tsx
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import React, { ReactNode } from "react";
|
||||||
|
import Breadcrumb, { BreadcrumbItem } from "@/app/components/Breadcrumb";
|
||||||
|
|
||||||
|
const ArticleWithBreadcrumb = ({
|
||||||
|
breadcrumb,
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
breadcrumb: BreadcrumbItem[];
|
||||||
|
children: ReactNode;
|
||||||
|
}) => {
|
||||||
|
return (
|
||||||
|
<div className={"flex flex-col h-full"}>
|
||||||
|
<Breadcrumb navigations={breadcrumb} />
|
||||||
|
<div className={"bg-white px-5 py-4 flex-1 mt-2"}>{children}</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ArticleWithBreadcrumb;
|
@ -1,23 +1,27 @@
|
|||||||
import { Fragment } from "react";
|
import { Fragment } from "react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
|
||||||
interface BreadcrumbItem {
|
export interface BreadcrumbItem {
|
||||||
href: string;
|
href: string;
|
||||||
title: string;
|
title: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Breadcrumb = ({ navigations }: { navigations: BreadcrumbItem[] }) => {
|
const Breadcrumb = ({ navigations }: { navigations: BreadcrumbItem[] }) => {
|
||||||
return (
|
return (
|
||||||
<div className={"flex text-xs text-[#13426e]"}>
|
<div className={"flex text-xs text-[#13426e] truncate"}>
|
||||||
<span className={"mr-2"}>当前位置:</span>
|
<span className={"mr-2"}>当前位置:</span>
|
||||||
{navigations.map((navigation, index) => {
|
{navigations.map((navigation, index) => {
|
||||||
if (index === navigations.length - 1) {
|
if (index === navigations.length - 1) {
|
||||||
return <div key={navigation.href}>{navigation.title}</div>;
|
return (
|
||||||
|
<span className={"overflow-hidden truncate"} key={navigation.href}>
|
||||||
|
{navigation.title}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
return (
|
return (
|
||||||
<Fragment key={navigation.href}>
|
<Fragment key={navigation.href}>
|
||||||
<Link href={navigation.href}>{navigation.title}</Link>
|
<Link href={navigation.href}>{navigation.title}</Link>
|
||||||
<div className={"mx-2"}>/</div>
|
<span className={"mx-2"}>/</span>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
3
app/components/FriendLinks.module.scss
Normal file
3
app/components/FriendLinks.module.scss
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.titleBar {
|
||||||
|
background: linear-gradient(160deg, rgba(151, 193, 233, 1) 44.73684210526316%, rgba(15, 111, 202, 1) 100%);;
|
||||||
|
}
|
77
app/components/FriendLinks.tsx
Normal file
77
app/components/FriendLinks.tsx
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
import Image from "next/image";
|
||||||
|
import Link from "next/link";
|
||||||
|
import pin from "@/app/assets/pin.png";
|
||||||
|
import styles from "./FriendLinks.module.scss";
|
||||||
|
|
||||||
|
const links = [
|
||||||
|
{
|
||||||
|
title: "中国科学院",
|
||||||
|
href: "https://www.cas.cn/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "国家发改委",
|
||||||
|
href: "https://www.ndrc.gov.cn/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "国家科技部",
|
||||||
|
href: "http://www.most.gov.cn/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "安徽省发改委",
|
||||||
|
href: "http://fzggw.ah.gov.cn/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "安徽省科技厅",
|
||||||
|
href: "http://kjt.ah.gov.cn/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "中科院重庆研究院",
|
||||||
|
href: "http://www.cigit.cas.cn/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "中科院成都文献情报中心",
|
||||||
|
href: "http://www.clas.ac.cn/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "中国技术交易所",
|
||||||
|
href: "http://us.ctex.cn/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "合肥市高新区",
|
||||||
|
href: "http://gxq.hefei.gov.cn/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "合肥市发改委",
|
||||||
|
href: "http://hfdrc.hefei.gov.cn/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "汇桔网",
|
||||||
|
href: "https://www.wtoip.com/",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const FriendLinks = () => {
|
||||||
|
return (
|
||||||
|
<div className={"h-[360px] bg-white"}>
|
||||||
|
<div
|
||||||
|
className={`title-bar text-black flex items-center px-2 font-bold ${styles.titleBar} relative`}
|
||||||
|
>
|
||||||
|
<Image width={30} height={30} src={pin} alt={"trumpet icon"} />
|
||||||
|
<span className={"ml-2 text-[14px]"}>友情链接</span>
|
||||||
|
</div>
|
||||||
|
<ul className={"p-4"}>
|
||||||
|
{links.map((link) => (
|
||||||
|
<li key={link.href} className={"flex"}>
|
||||||
|
<Link
|
||||||
|
href={link.href}
|
||||||
|
className={"flex items-center text-xs hover:underline h-7"}
|
||||||
|
>
|
||||||
|
• {link.title}
|
||||||
|
</Link>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default FriendLinks;
|
62
app/components/LatestNews.tsx
Normal file
62
app/components/LatestNews.tsx
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
import { articleDetail, listArticles } from "@/app/api/articles";
|
||||||
|
import Link from "next/link";
|
||||||
|
import Image from "next/image";
|
||||||
|
import { htmlToText } from "html-to-text";
|
||||||
|
|
||||||
|
const LatestNews = async () => {
|
||||||
|
const { lists } = await listArticles({
|
||||||
|
pageNo: 1,
|
||||||
|
cid: "4",
|
||||||
|
pageSize: 1,
|
||||||
|
sort: "new",
|
||||||
|
});
|
||||||
|
if (!lists.length) {
|
||||||
|
return <></>;
|
||||||
|
}
|
||||||
|
const { id } = lists[0];
|
||||||
|
const article = await articleDetail({
|
||||||
|
id: `${id}`,
|
||||||
|
});
|
||||||
|
|
||||||
|
// const text = window.document.createElement("div");
|
||||||
|
// text.innerHTML = article.content;
|
||||||
|
const content = htmlToText(article.content, {
|
||||||
|
// baseElements:{
|
||||||
|
// selectors:['p']
|
||||||
|
// }
|
||||||
|
selectors: [{ selector: "img", format: "skip" }],
|
||||||
|
});
|
||||||
|
// const content = text.innerText;
|
||||||
|
return (
|
||||||
|
<div className={"h-[180px] bg-white p-2 flex"}>
|
||||||
|
<Link
|
||||||
|
href={`general-news/${lists[0].id}`}
|
||||||
|
className={"article-cover w-[207px]"}
|
||||||
|
>
|
||||||
|
<Image src={article.image} alt={""} />
|
||||||
|
</Link>
|
||||||
|
<div className={"w-0 flex-1 ml-1 relative"}>
|
||||||
|
<Link
|
||||||
|
href={`general-news/${lists[0].id}`}
|
||||||
|
className={"title block truncate text-[#186ab6] text-base"}
|
||||||
|
>
|
||||||
|
{article.title}
|
||||||
|
</Link>
|
||||||
|
<Link
|
||||||
|
href={`general-news/${lists[0].id}`}
|
||||||
|
className={"content text-xs line-clamp-4 leading-7"}
|
||||||
|
>
|
||||||
|
{content}
|
||||||
|
</Link>
|
||||||
|
<Link
|
||||||
|
href={"/general-news/pages/1"}
|
||||||
|
className={"text-xs text-[#ffc001] absolute left-0 bottom-0"}
|
||||||
|
>
|
||||||
|
更多新闻内容>>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default LatestNews;
|
@ -1,5 +1,5 @@
|
|||||||
"use client";
|
"use client";
|
||||||
import React from "react";
|
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import circle from "@/app/assets/circle.png";
|
import circle from "@/app/assets/circle.png";
|
||||||
import styles from "./LeftNav.module.scss";
|
import styles from "./LeftNav.module.scss";
|
||||||
@ -10,7 +10,7 @@ const LeftNav = ({
|
|||||||
navigations,
|
navigations,
|
||||||
title,
|
title,
|
||||||
}: {
|
}: {
|
||||||
navigations: any[];
|
navigations?: any[];
|
||||||
title: string;
|
title: string;
|
||||||
}) => {
|
}) => {
|
||||||
const pathname = usePathname();
|
const pathname = usePathname();
|
||||||
@ -24,12 +24,12 @@ const LeftNav = ({
|
|||||||
<Image src={circle} alt={"circle icon"} height={16} width={16} />
|
<Image src={circle} alt={"circle icon"} height={16} width={16} />
|
||||||
<span className={"pl-2"}>{title}</span>
|
<span className={"pl-2"}>{title}</span>
|
||||||
</div>
|
</div>
|
||||||
{navigations.length > 0 && (
|
{(navigations?.length ?? 0) > 0 && (
|
||||||
<div
|
<div
|
||||||
className={`${styles.navContent} mt-3 mx-3 rounded-lg px-2.5 py-[5px]`}
|
className={`${styles.navContent} mt-3 mx-3 rounded-lg px-2.5 py-[5px]`}
|
||||||
>
|
>
|
||||||
<ul className={styles.navItems}>
|
<ul className={styles.navItems}>
|
||||||
{navigations.map((navigation) => (
|
{navigations?.map((navigation) => (
|
||||||
<li key={navigation.href}>
|
<li key={navigation.href}>
|
||||||
<Link
|
<Link
|
||||||
className={`text-sm px-[9px] h-[34px] flex items-center font-bold transition-all hover:text-[#fff176] hover:text-xs ${
|
className={`text-sm px-[9px] h-[34px] flex items-center font-bold transition-all hover:text-[#fff176] hover:text-xs ${
|
||||||
|
@ -1,18 +1,42 @@
|
|||||||
"use client";
|
"use client";
|
||||||
import React from "react";
|
import { navigations as orgNavigations } from "@/app/(introduce)/organization/(generally)/config";
|
||||||
|
import { navigations as achieveNavigations } from "@/app/(introduce)/achievements-transformation/config";
|
||||||
|
import { navigations as talentsNavigations } from "@/app/(introduce)/talents/config";
|
||||||
|
import { navigations as academyNavigations } from "@/app/(articles)/academic-exchange/academic-events/pages/[pageIndex]/config";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { usePathname } from "next/navigation";
|
import { usePathname } from "next/navigation";
|
||||||
|
import { useState } from "react";
|
||||||
|
|
||||||
const navigations = [
|
const navigations = [
|
||||||
{ title: "首页", href: "/" },
|
{ title: "首页", href: "/" },
|
||||||
{ title: "机构设置", href: "/organization/overview" },
|
{
|
||||||
{ title: "人才队伍", href: "/talents/overview" },
|
title: "机构设置",
|
||||||
{ title: "科研进展", href: "#" },
|
href: "/organization/overview",
|
||||||
{ title: "科技成果", href: "#" },
|
children: orgNavigations,
|
||||||
{ title: "学术交流", href: "#" },
|
},
|
||||||
{ title: "成果转化服务", href: "#" },
|
{
|
||||||
{ title: "中科院科技资源共享平台", href: "#" },
|
title: "人才队伍",
|
||||||
{ title: "联系我们", href: "#" },
|
href: "/talents/overview",
|
||||||
|
children: talentsNavigations,
|
||||||
|
},
|
||||||
|
{ title: "科研进展", href: "/research-progress/pages/1" },
|
||||||
|
{ title: "科技成果", href: "/technological-achievements/pages/1" },
|
||||||
|
{
|
||||||
|
title: "学术交流",
|
||||||
|
href: "/academic-exchange/academic-events/pages/1",
|
||||||
|
children: academyNavigations,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "成果转化服务",
|
||||||
|
href: "/achievements-transformation/government-policy",
|
||||||
|
children: achieveNavigations,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "中科院科技资源共享平台",
|
||||||
|
href: "https://casshare.com/experts/index.jsp",
|
||||||
|
target: "_blank",
|
||||||
|
},
|
||||||
|
{ title: "联系我们", href: "/contact-us" },
|
||||||
];
|
];
|
||||||
|
|
||||||
const isActive = (link: string, current: string): boolean => {
|
const isActive = (link: string, current: string): boolean => {
|
||||||
@ -25,13 +49,24 @@ const isActive = (link: string, current: string): boolean => {
|
|||||||
|
|
||||||
const MainNav = () => {
|
const MainNav = () => {
|
||||||
const pathname = usePathname();
|
const pathname = usePathname();
|
||||||
|
const [activePopup, setActivePopup] = useState(-1);
|
||||||
return (
|
return (
|
||||||
<nav className={"main-nav bg-[#1958a7] h-[38px]"}>
|
<nav className={"main-nav bg-[#1958a7] h-[38px]"}>
|
||||||
<ul className={"w-full h-full flex"}>
|
<ul className={"w-full h-full flex"}>
|
||||||
{navigations.map((navigation, index) => (
|
{navigations.map((navigation, index) => (
|
||||||
<li key={navigation.title + index}>
|
<li
|
||||||
|
className={"relative"}
|
||||||
|
onMouseOver={() => {
|
||||||
|
setActivePopup(() => index);
|
||||||
|
}}
|
||||||
|
onMouseLeave={() => {
|
||||||
|
setActivePopup(() => -1);
|
||||||
|
}}
|
||||||
|
key={navigation.title + index}
|
||||||
|
>
|
||||||
<Link
|
<Link
|
||||||
href={navigation.href}
|
href={navigation.href}
|
||||||
|
target={navigation.target}
|
||||||
className={`${
|
className={`${
|
||||||
isActive(navigation.href, pathname)
|
isActive(navigation.href, pathname)
|
||||||
? "text-[#dedede]"
|
? "text-[#dedede]"
|
||||||
@ -40,6 +75,31 @@ const MainNav = () => {
|
|||||||
>
|
>
|
||||||
{navigation.title}
|
{navigation.title}
|
||||||
</Link>
|
</Link>
|
||||||
|
{index === activePopup && navigation.children?.length && (
|
||||||
|
<div
|
||||||
|
className={`z-40 popup-menu min-w-[120px] absolute top-full left-1/2 -translate-x-1/2`}
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className={
|
||||||
|
"w-0 h-0 mx-auto border-b-[12px] border-l-[12px] border-r-[12px] border-b-[#b0d3eb] border-l-transparent border-r-transparent"
|
||||||
|
}
|
||||||
|
></div>
|
||||||
|
<ul className={"whitespace-nowrap bg-[#b0d3eb]"}>
|
||||||
|
{navigation.children.map((child) => (
|
||||||
|
<li key={child.href}>
|
||||||
|
<Link
|
||||||
|
className={
|
||||||
|
"h-10 flex justify-center items-center text-[13px] px-2 hover:text-[#fe5722]"
|
||||||
|
}
|
||||||
|
href={child.href}
|
||||||
|
>
|
||||||
|
{child.title}
|
||||||
|
</Link>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -15,24 +15,33 @@ const Pagination = ({
|
|||||||
className={"w-full flex justify-center mt-2.5 h-10 items-center text-sm"}
|
className={"w-full flex justify-center mt-2.5 h-10 items-center text-sm"}
|
||||||
>
|
>
|
||||||
{page <= 1 ? (
|
{page <= 1 ? (
|
||||||
<div className={"prev mx-3"}>上一页</div>
|
<div className={"prev mx-3 text-gray-500 cursor-not-allowed"}>
|
||||||
|
上一页
|
||||||
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<Link className={"next block mx-3"} href={`./${page - 1}`}>
|
<Link className={"next block mx-3"} href={`./${page - 1}`}>
|
||||||
上一页
|
上一页
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
{[...Array(pageCount)].map((el, index) => (
|
{[...Array(pageCount)].map((el, index) =>
|
||||||
<div
|
page === index + 1 ? (
|
||||||
key={index}
|
<div key={index} className={`page-item mx-3 text-[#009fe9]`}>
|
||||||
className={`page-item mx-3 ${
|
{index + 1}
|
||||||
page === index + 1 ? "text-[#009fe9]" : "text-[#666666]"
|
</div>
|
||||||
}`}
|
) : (
|
||||||
>
|
<Link
|
||||||
{index + 1}
|
className={"page-item mx-3 text-[#666666]"}
|
||||||
</div>
|
key={index}
|
||||||
))}
|
href={`./${index + 1}`}
|
||||||
|
>
|
||||||
|
{index + 1}
|
||||||
|
</Link>
|
||||||
|
),
|
||||||
|
)}
|
||||||
{page >= pageCount ? (
|
{page >= pageCount ? (
|
||||||
<div className={"next mx-3"}>下一页</div>
|
<div className={"next mx-3 text-gray-500 cursor-not-allowed"}>
|
||||||
|
下一页
|
||||||
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<Link className={"next block mx-3"} href={`./${page + 1}`}>
|
<Link className={"next block mx-3"} href={`./${page + 1}`}>
|
||||||
下一页
|
下一页
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
|
|
||||||
const axiosInstance = axios.create({
|
const axiosInstance = axios.create({
|
||||||
baseURL: "http://localhost:8084/api",
|
// baseURL: "http://localhost:8084/api",
|
||||||
|
baseURL: process.env.NEXT_PUBLIC_FRONT_BASE_URL,
|
||||||
});
|
});
|
||||||
|
|
||||||
axiosInstance.interceptors.response.use((response) => {
|
axiosInstance.interceptors.response.use((response) => {
|
||||||
|
45
app/page.tsx
45
app/page.tsx
@ -1,10 +1,14 @@
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import leftBanner from "./assets/left-banner.jpg";
|
import leftBanner from "./assets/left-banner.jpg";
|
||||||
import ArticleBlock from "@/app/components/ArticleBlock";
|
import ArticleBlock from "@/app/components/ArticleBlock";
|
||||||
|
import { register } from "swiper/element/bundle";
|
||||||
|
import AnhuiSwiper from "@/app/components/AnhuiSwiper";
|
||||||
|
import LatestNews from "@/app/components/LatestNews";
|
||||||
|
import FriendLinks from "@/app/components/FriendLinks";
|
||||||
|
|
||||||
export default async function Home() {
|
export default async function Home() {
|
||||||
return (
|
return (
|
||||||
<main className={"flex justify-between bg-[#f5fafe]"}>
|
<main className={"flex justify-between bg-[#f5fafe] mt-1"}>
|
||||||
<div className={"left-side w-[222px]"}>
|
<div className={"left-side w-[222px]"}>
|
||||||
<Image
|
<Image
|
||||||
src={leftBanner}
|
src={leftBanner}
|
||||||
@ -78,47 +82,51 @@ export default async function Home() {
|
|||||||
</map>
|
</map>
|
||||||
</div>
|
</div>
|
||||||
<div className={"main-content w-[540px]"}>
|
<div className={"main-content w-[540px]"}>
|
||||||
<div className={"h-[180px] bg-white"}></div>
|
<LatestNews />
|
||||||
<div className={"mt-1"}>
|
<div className={"mt-1"}>
|
||||||
<ArticleBlock
|
<ArticleBlock
|
||||||
height={218}
|
height={221}
|
||||||
title={"综合新闻"}
|
title={"综合新闻"}
|
||||||
category={"4"}
|
category={"4"}
|
||||||
linkPrefix={"/general-news"}
|
linkPrefix={"/general-news"}
|
||||||
|
showDate={true}
|
||||||
></ArticleBlock>
|
></ArticleBlock>
|
||||||
</div>
|
</div>
|
||||||
<div className={"flex justify-between mt-1"}>
|
<div className={"flex justify-between mt-1"}>
|
||||||
<ArticleBlock
|
<ArticleBlock
|
||||||
width={250}
|
width={"49.5%"}
|
||||||
height={218}
|
height={221}
|
||||||
title={"科研进展"}
|
title={"科研进展"}
|
||||||
category={"5"}
|
category={"9"}
|
||||||
linkPrefix={"/research-progress"}
|
linkPrefix={"/research-progress"}
|
||||||
></ArticleBlock>
|
></ArticleBlock>
|
||||||
<ArticleBlock
|
<ArticleBlock
|
||||||
width={250}
|
width={"49.5%"}
|
||||||
height={218}
|
height={221}
|
||||||
title={"学术活动"}
|
title={"学术活动"}
|
||||||
category={"6"}
|
category={"6"}
|
||||||
linkPrefix={"/academic-events"}
|
linkPrefix={"/academic-exchange/academic-events"}
|
||||||
></ArticleBlock>
|
></ArticleBlock>
|
||||||
</div>
|
</div>
|
||||||
<div className={"flex justify-between mt-1"}>
|
<div className={"flex justify-between mt-1"}>
|
||||||
<ArticleBlock
|
<ArticleBlock
|
||||||
width={250}
|
width={"49.5%"}
|
||||||
height={218}
|
height={221}
|
||||||
title={"科技成果"}
|
title={"科技成果"}
|
||||||
category={"7"}
|
category={"7"}
|
||||||
linkPrefix={"/technological-achievements"}
|
linkPrefix={"/technological-achievements"}
|
||||||
></ArticleBlock>
|
></ArticleBlock>
|
||||||
<ArticleBlock
|
<ArticleBlock
|
||||||
width={250}
|
width={"49.5%"}
|
||||||
height={218}
|
height={221}
|
||||||
title={"媒体扫描"}
|
title={"媒体扫描"}
|
||||||
category={"8"}
|
category={"8"}
|
||||||
linkPrefix={"/media-scan"}
|
linkPrefix={"/media-scan"}
|
||||||
></ArticleBlock>
|
></ArticleBlock>
|
||||||
</div>
|
</div>
|
||||||
|
<div className={"mt-1"}>
|
||||||
|
<AnhuiSwiper />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className={"right-side w-[225px]"}>
|
<div className={"right-side w-[225px]"}>
|
||||||
<ArticleBlock
|
<ArticleBlock
|
||||||
@ -127,6 +135,17 @@ export default async function Home() {
|
|||||||
height={275}
|
height={275}
|
||||||
title={"公告通知"}
|
title={"公告通知"}
|
||||||
></ArticleBlock>
|
></ArticleBlock>
|
||||||
|
<div className={"mt-1"}>
|
||||||
|
<ArticleBlock
|
||||||
|
linkPrefix={"/recruitment"}
|
||||||
|
category={"12"}
|
||||||
|
height={275}
|
||||||
|
title={"研究院招聘"}
|
||||||
|
></ArticleBlock>
|
||||||
|
</div>
|
||||||
|
<div className={"mt-1"}>
|
||||||
|
<FriendLinks />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
);
|
);
|
||||||
|
6
app/types/album.ts
Normal file
6
app/types/album.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
export interface Album {
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
path: string;
|
||||||
|
uri: string;
|
||||||
|
}
|
@ -1,4 +1,5 @@
|
|||||||
/** @type {import('next').NextConfig} */
|
/** @type {import('next').NextConfig} */
|
||||||
const nextConfig = {}
|
const nextConfig = {
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = nextConfig
|
module.exports = nextConfig
|
||||||
|
@ -11,11 +11,15 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.6.0",
|
"axios": "^1.6.0",
|
||||||
|
"dayjs": "^1.11.10",
|
||||||
|
"html-to-text": "^9.0.5",
|
||||||
"next": "14.0.0",
|
"next": "14.0.0",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0"
|
"react-dom": "^18.2.0",
|
||||||
|
"swiper": "^11.0.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/html-to-text": "^9.0.3",
|
||||||
"@types/node": "^20.8.9",
|
"@types/node": "^20.8.9",
|
||||||
"@types/react": "^18.2.33",
|
"@types/react": "^18.2.33",
|
||||||
"@types/react-dom": "^18.2.14",
|
"@types/react-dom": "^18.2.14",
|
||||||
|
110
pnpm-lock.yaml
generated
110
pnpm-lock.yaml
generated
@ -8,6 +8,12 @@ dependencies:
|
|||||||
axios:
|
axios:
|
||||||
specifier: ^1.6.0
|
specifier: ^1.6.0
|
||||||
version: 1.6.0
|
version: 1.6.0
|
||||||
|
dayjs:
|
||||||
|
specifier: ^1.11.10
|
||||||
|
version: 1.11.10
|
||||||
|
html-to-text:
|
||||||
|
specifier: ^9.0.5
|
||||||
|
version: 9.0.5
|
||||||
next:
|
next:
|
||||||
specifier: 14.0.0
|
specifier: 14.0.0
|
||||||
version: 14.0.0(react-dom@18.2.0)(react@18.2.0)(sass@1.69.5)
|
version: 14.0.0(react-dom@18.2.0)(react@18.2.0)(sass@1.69.5)
|
||||||
@ -17,8 +23,14 @@ dependencies:
|
|||||||
react-dom:
|
react-dom:
|
||||||
specifier: ^18.2.0
|
specifier: ^18.2.0
|
||||||
version: 18.2.0(react@18.2.0)
|
version: 18.2.0(react@18.2.0)
|
||||||
|
swiper:
|
||||||
|
specifier: ^11.0.3
|
||||||
|
version: 11.0.3
|
||||||
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
'@types/html-to-text':
|
||||||
|
specifier: ^9.0.3
|
||||||
|
version: 9.0.3
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: ^20.8.9
|
specifier: ^20.8.9
|
||||||
version: 20.8.9
|
version: 20.8.9
|
||||||
@ -279,12 +291,23 @@ packages:
|
|||||||
resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==}
|
resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@selderee/plugin-htmlparser2@0.11.0:
|
||||||
|
resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==}
|
||||||
|
dependencies:
|
||||||
|
domhandler: 5.0.3
|
||||||
|
selderee: 0.11.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@swc/helpers@0.5.2:
|
/@swc/helpers@0.5.2:
|
||||||
resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==}
|
resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib: 2.6.2
|
tslib: 2.6.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/@types/html-to-text@9.0.3:
|
||||||
|
resolution: {integrity: sha512-ImzcLdHN3+zghCoZcA+vWd/t0GhM10S7lnvSq9YA6lbo4HGK10WIJ7n+NI7mbeVZeUtgrmK5fXM66kZcws1oHA==}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@types/json5@0.0.29:
|
/@types/json5@0.0.29:
|
||||||
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
|
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
|
||||||
dev: true
|
dev: true
|
||||||
@ -713,6 +736,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
|
resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/dayjs@1.11.10:
|
||||||
|
resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/debug@3.2.7:
|
/debug@3.2.7:
|
||||||
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
|
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -740,6 +767,11 @@ packages:
|
|||||||
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
|
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/deepmerge@4.3.1:
|
||||||
|
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/define-data-property@1.1.1:
|
/define-data-property@1.1.1:
|
||||||
resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==}
|
resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
@ -797,6 +829,33 @@ packages:
|
|||||||
esutils: 2.0.3
|
esutils: 2.0.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/dom-serializer@2.0.0:
|
||||||
|
resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
|
||||||
|
dependencies:
|
||||||
|
domelementtype: 2.3.0
|
||||||
|
domhandler: 5.0.3
|
||||||
|
entities: 4.5.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/domelementtype@2.3.0:
|
||||||
|
resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/domhandler@5.0.3:
|
||||||
|
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
|
||||||
|
engines: {node: '>= 4'}
|
||||||
|
dependencies:
|
||||||
|
domelementtype: 2.3.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/domutils@3.1.0:
|
||||||
|
resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==}
|
||||||
|
dependencies:
|
||||||
|
dom-serializer: 2.0.0
|
||||||
|
domelementtype: 2.3.0
|
||||||
|
domhandler: 5.0.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
/electron-to-chromium@1.4.569:
|
/electron-to-chromium@1.4.569:
|
||||||
resolution: {integrity: sha512-LsrJjZ0IbVy12ApW3gpYpcmHS3iRxH4bkKOW98y1/D+3cvDUWGcbzbsFinfUS8knpcZk/PG/2p/RnkMCYN7PVg==}
|
resolution: {integrity: sha512-LsrJjZ0IbVy12ApW3gpYpcmHS3iRxH4bkKOW98y1/D+3cvDUWGcbzbsFinfUS8knpcZk/PG/2p/RnkMCYN7PVg==}
|
||||||
dev: true
|
dev: true
|
||||||
@ -813,6 +872,11 @@ packages:
|
|||||||
tapable: 2.2.1
|
tapable: 2.2.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/entities@4.5.0:
|
||||||
|
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
|
||||||
|
engines: {node: '>=0.12'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/es-abstract@1.22.3:
|
/es-abstract@1.22.3:
|
||||||
resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==}
|
resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
@ -1463,6 +1527,26 @@ packages:
|
|||||||
function-bind: 1.1.2
|
function-bind: 1.1.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/html-to-text@9.0.5:
|
||||||
|
resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==}
|
||||||
|
engines: {node: '>=14'}
|
||||||
|
dependencies:
|
||||||
|
'@selderee/plugin-htmlparser2': 0.11.0
|
||||||
|
deepmerge: 4.3.1
|
||||||
|
dom-serializer: 2.0.0
|
||||||
|
htmlparser2: 8.0.2
|
||||||
|
selderee: 0.11.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/htmlparser2@8.0.2:
|
||||||
|
resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==}
|
||||||
|
dependencies:
|
||||||
|
domelementtype: 2.3.0
|
||||||
|
domhandler: 5.0.3
|
||||||
|
domutils: 3.1.0
|
||||||
|
entities: 4.5.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/ignore@5.2.4:
|
/ignore@5.2.4:
|
||||||
resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
|
resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
|
||||||
engines: {node: '>= 4'}
|
engines: {node: '>= 4'}
|
||||||
@ -1739,6 +1823,10 @@ packages:
|
|||||||
language-subtag-registry: 0.3.22
|
language-subtag-registry: 0.3.22
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/leac@0.6.0:
|
||||||
|
resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/levn@0.4.1:
|
/levn@0.4.1:
|
||||||
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
|
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
|
||||||
engines: {node: '>= 0.8.0'}
|
engines: {node: '>= 0.8.0'}
|
||||||
@ -2004,6 +2092,13 @@ packages:
|
|||||||
callsites: 3.1.0
|
callsites: 3.1.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/parseley@0.12.1:
|
||||||
|
resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==}
|
||||||
|
dependencies:
|
||||||
|
leac: 0.6.0
|
||||||
|
peberminta: 0.9.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/path-exists@4.0.0:
|
/path-exists@4.0.0:
|
||||||
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
|
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@ -2028,6 +2123,10 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/peberminta@0.9.0:
|
||||||
|
resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/picocolors@1.0.0:
|
/picocolors@1.0.0:
|
||||||
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
|
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
|
||||||
|
|
||||||
@ -2282,6 +2381,12 @@ packages:
|
|||||||
loose-envify: 1.4.0
|
loose-envify: 1.4.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/selderee@0.11.0:
|
||||||
|
resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==}
|
||||||
|
dependencies:
|
||||||
|
parseley: 0.12.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/semver@6.3.1:
|
/semver@6.3.1:
|
||||||
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
|
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@ -2447,6 +2552,11 @@ packages:
|
|||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/swiper@11.0.3:
|
||||||
|
resolution: {integrity: sha512-MyV9ooQsriAe2EibeamqewLjgCfSvl2xoyratl6S3ln5BXDL4BzlO6mxcbLMCzQL6Z60b/u0AS/nKrepL0+TAg==}
|
||||||
|
engines: {node: '>= 4.7.0'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/tailwindcss@3.3.5:
|
/tailwindcss@3.3.5:
|
||||||
resolution: {integrity: sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==}
|
resolution: {integrity: sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
|
Reference in New Issue
Block a user