From 1a22404f19ff0e25579521f0c3baed995d2da040 Mon Sep 17 00:00:00 2001 From: quantulr <35954003+quantulr@users.noreply.github.com> Date: Wed, 1 Nov 2023 17:27:06 +0800 Subject: [PATCH] update --- .env.production.local | 2 + .gitignore | 2 +- .../academic-events/[articleId]/layout.tsx | 19 ++ .../academic-events/[articleId]/page.tsx | 23 +++ .../pages/[pageIndex]/config.ts | 6 + .../pages/[pageIndex]/layout.tsx | 28 +++ .../pages/[pageIndex]/page.tsx | 18 ++ .../announcements/[articleId]/layout.tsx | 6 +- .../announcements/[articleId]/page.tsx | 15 +- .../pages/[pageIndex]/layout.tsx | 20 +- .../announcements/pages/[pageIndex]/page.tsx | 31 +--- .../general-news/[articleId]/layout.tsx | 19 ++ .../general-news/[articleId]/page.tsx | 24 +++ .../general-news/pages/[pageIndex]/layout.tsx | 21 +++ .../general-news/pages/[pageIndex]/page.tsx | 23 +++ .../recruitment/[articleId]/layout.tsx | 19 ++ .../recruitment/[articleId]/page.tsx | 24 +++ .../recruitment/pages/[pageIndex]/layout.tsx | 20 ++ .../recruitment/pages/[pageIndex]/page.tsx | 22 +++ .../research-progress/[articleId]/layout.tsx | 19 ++ .../research-progress/[articleId]/page.tsx | 29 ++- .../pages/[pageIndex]/layout.tsx | 20 ++ .../pages/[pageIndex]/page.tsx | 18 ++ .../[articleId]/layout.tsx | 19 ++ .../[articleId]/page.tsx | 24 +++ .../pages/[pageIndex]/layout.tsx | 20 ++ .../pages/[pageIndex]/page.tsx | 18 ++ .../achievements-transformation/config.ts | 24 +++ .../government-policy/layout.tsx | 21 +++ .../government-policy/page.tsx | 19 ++ .../industry-docking/layout.tsx | 21 +++ .../industry-docking/page.tsx | 19 ++ .../intellectual-property-services/layout.tsx | 24 +++ .../intellectual-property-services/page.tsx | 22 +++ .../intelligence-services/layout.tsx | 24 +++ .../intelligence-services/page.tsx | 26 +++ .../investment-and-financing/layout.tsx | 24 +++ .../investment-and-financing/page.tsx | 18 ++ .../achievements-transformation/layout.tsx | 13 ++ .../layout.tsx | 24 +++ .../page.tsx | 23 +++ .../technology-assessment/layout.tsx | 24 +++ .../technology-assessment/page.tsx | 17 ++ app/(introduce)/contact-us/layout.tsx | 20 ++ app/(introduce)/contact-us/page.tsx | 24 +++ .../func-dep/asset-finance/page.tsx | 8 +- .../func-dep/general-office/page.tsx | 10 +- .../func-dep/industry/page.tsx | 6 +- .../func-dep/personnel/page.tsx | 6 +- .../func-dep/technology/page.tsx | 6 +- .../(generally)/architecture/page.tsx | 10 +- .../organization/(generally)/config.ts | 10 + .../(generally)/dean-speech/page.tsx | 14 +- .../(generally)/joint-laboratory/page.tsx | 8 +- .../(generally)/joint-venture/page.tsx | 8 +- .../organization/(generally)/layout.tsx | 12 +- .../(generally)/overview/page.tsx | 12 +- .../(generally)/research-platform/page.tsx | 8 +- .../organization/(generally)/stidc/page.tsx | 8 +- app/(introduce)/talents/academician/page.tsx | 10 +- app/(introduce)/talents/config.ts | 6 + app/(introduce)/talents/layout.tsx | 8 +- app/(introduce)/talents/overview/page.tsx | 9 +- app/(introduce)/talents/researcher/page.tsx | 9 +- .../talents/vice-researcher/page.tsx | 7 +- app/assets/pin.png | Bin 0 -> 63568 bytes app/components/AnhuiSwiper.tsx | 171 ++++++++++++++++++ app/components/ArticleBlock.tsx | 24 ++- app/components/ArticleHeading.tsx | 9 + app/components/ArticleLayout.tsx | 4 +- .../ArticleList.module.scss} | 0 app/components/ArticleList.tsx | 44 +++++ .../{ArticleContent.tsx => ArticleRender.tsx} | 10 +- app/components/ArticleWithBreadcrumb.tsx | 19 ++ app/components/Breadcrumb.tsx | 12 +- app/components/FriendLinks.module.scss | 3 + app/components/FriendLinks.tsx | 77 ++++++++ app/components/LatestNews.tsx | 62 +++++++ app/components/LeftNav.tsx | 8 +- app/components/MainNav.tsx | 80 +++++++- app/components/Pagination.tsx | 33 ++-- app/lib/request.ts | 3 +- app/page.tsx | 45 +++-- app/types/album.ts | 6 + next.config.js | 3 +- package.json | 6 +- pnpm-lock.yaml | 110 +++++++++++ 87 files changed, 1604 insertions(+), 196 deletions(-) create mode 100644 .env.production.local create mode 100644 app/(articles)/academic-exchange/academic-events/[articleId]/layout.tsx create mode 100644 app/(articles)/academic-exchange/academic-events/[articleId]/page.tsx create mode 100644 app/(articles)/academic-exchange/academic-events/pages/[pageIndex]/config.ts create mode 100644 app/(articles)/academic-exchange/academic-events/pages/[pageIndex]/layout.tsx create mode 100644 app/(articles)/academic-exchange/academic-events/pages/[pageIndex]/page.tsx create mode 100644 app/(articles)/general-news/[articleId]/layout.tsx create mode 100644 app/(articles)/general-news/[articleId]/page.tsx create mode 100644 app/(articles)/general-news/pages/[pageIndex]/layout.tsx create mode 100644 app/(articles)/general-news/pages/[pageIndex]/page.tsx create mode 100644 app/(articles)/recruitment/[articleId]/layout.tsx create mode 100644 app/(articles)/recruitment/[articleId]/page.tsx create mode 100644 app/(articles)/recruitment/pages/[pageIndex]/layout.tsx create mode 100644 app/(articles)/recruitment/pages/[pageIndex]/page.tsx create mode 100644 app/(articles)/research-progress/[articleId]/layout.tsx create mode 100644 app/(articles)/research-progress/pages/[pageIndex]/layout.tsx create mode 100644 app/(articles)/research-progress/pages/[pageIndex]/page.tsx create mode 100644 app/(articles)/technological-achievements/[articleId]/layout.tsx create mode 100644 app/(articles)/technological-achievements/[articleId]/page.tsx create mode 100644 app/(articles)/technological-achievements/pages/[pageIndex]/layout.tsx create mode 100644 app/(articles)/technological-achievements/pages/[pageIndex]/page.tsx create mode 100644 app/(introduce)/achievements-transformation/config.ts create mode 100644 app/(introduce)/achievements-transformation/government-policy/layout.tsx create mode 100644 app/(introduce)/achievements-transformation/government-policy/page.tsx create mode 100644 app/(introduce)/achievements-transformation/industry-docking/layout.tsx create mode 100644 app/(introduce)/achievements-transformation/industry-docking/page.tsx create mode 100644 app/(introduce)/achievements-transformation/intellectual-property-services/layout.tsx create mode 100644 app/(introduce)/achievements-transformation/intellectual-property-services/page.tsx create mode 100644 app/(introduce)/achievements-transformation/intelligence-services/layout.tsx create mode 100644 app/(introduce)/achievements-transformation/intelligence-services/page.tsx create mode 100644 app/(introduce)/achievements-transformation/investment-and-financing/layout.tsx create mode 100644 app/(introduce)/achievements-transformation/investment-and-financing/page.tsx create mode 100644 app/(introduce)/achievements-transformation/layout.tsx create mode 100644 app/(introduce)/achievements-transformation/scientific-research-project-declaration/layout.tsx create mode 100644 app/(introduce)/achievements-transformation/scientific-research-project-declaration/page.tsx create mode 100644 app/(introduce)/achievements-transformation/technology-assessment/layout.tsx create mode 100644 app/(introduce)/achievements-transformation/technology-assessment/page.tsx create mode 100644 app/(introduce)/contact-us/layout.tsx create mode 100644 app/(introduce)/contact-us/page.tsx create mode 100644 app/(introduce)/organization/(generally)/config.ts create mode 100644 app/(introduce)/talents/config.ts create mode 100644 app/assets/pin.png create mode 100644 app/components/AnhuiSwiper.tsx create mode 100644 app/components/ArticleHeading.tsx rename app/{(articles)/announcements/pages/[pageIndex]/styles.module.scss => components/ArticleList.module.scss} (100%) create mode 100644 app/components/ArticleList.tsx rename app/components/{ArticleContent.tsx => ArticleRender.tsx} (78%) create mode 100644 app/components/ArticleWithBreadcrumb.tsx create mode 100644 app/components/FriendLinks.module.scss create mode 100644 app/components/FriendLinks.tsx create mode 100644 app/components/LatestNews.tsx create mode 100644 app/types/album.ts diff --git a/.env.production.local b/.env.production.local new file mode 100644 index 0000000..d9f669d --- /dev/null +++ b/.env.production.local @@ -0,0 +1,2 @@ +NEXT_PUBLIC_ADMIN_BASE_URL=/admin-api +NEXT_PUBLIC_FRONT_BASE_URL=/front-api diff --git a/.gitignore b/.gitignore index fd3dbb5..99a16cc 100644 --- a/.gitignore +++ b/.gitignore @@ -26,7 +26,7 @@ yarn-debug.log* yarn-error.log* # local env files -.env*.local +.env.development.local # vercel .vercel diff --git a/app/(articles)/academic-exchange/academic-events/[articleId]/layout.tsx b/app/(articles)/academic-exchange/academic-events/[articleId]/layout.tsx new file mode 100644 index 0000000..c53bc9a --- /dev/null +++ b/app/(articles)/academic-exchange/academic-events/[articleId]/layout.tsx @@ -0,0 +1,19 @@ +import { ReactNode } from "react"; +import ArticleLayout from "@/app/components/ArticleLayout"; + +const Layout = ({ + children, +}: { + children: ReactNode; + params: { + articleId: string; + }; +}) => { + return ( + + {children} + + ); +}; + +export default Layout; diff --git a/app/(articles)/academic-exchange/academic-events/[articleId]/page.tsx b/app/(articles)/academic-exchange/academic-events/[articleId]/page.tsx new file mode 100644 index 0000000..256f544 --- /dev/null +++ b/app/(articles)/academic-exchange/academic-events/[articleId]/page.tsx @@ -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 ( + <> + + + + + ); +}; + +export default Page; diff --git a/app/(articles)/academic-exchange/academic-events/pages/[pageIndex]/config.ts b/app/(articles)/academic-exchange/academic-events/pages/[pageIndex]/config.ts new file mode 100644 index 0000000..b8341e1 --- /dev/null +++ b/app/(articles)/academic-exchange/academic-events/pages/[pageIndex]/config.ts @@ -0,0 +1,6 @@ +export const navigations = [ + { + title: "学术活动", + href: "/academic-exchange/academic-events/pages/1", + }, +]; diff --git a/app/(articles)/academic-exchange/academic-events/pages/[pageIndex]/layout.tsx b/app/(articles)/academic-exchange/academic-events/pages/[pageIndex]/layout.tsx new file mode 100644 index 0000000..6bccbd2 --- /dev/null +++ b/app/(articles)/academic-exchange/academic-events/pages/[pageIndex]/layout.tsx @@ -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 ( + + + {children} + + + ); +}; + +export default Layout; diff --git a/app/(articles)/academic-exchange/academic-events/pages/[pageIndex]/page.tsx b/app/(articles)/academic-exchange/academic-events/pages/[pageIndex]/page.tsx new file mode 100644 index 0000000..75c2d64 --- /dev/null +++ b/app/(articles)/academic-exchange/academic-events/pages/[pageIndex]/page.tsx @@ -0,0 +1,18 @@ +import ArticleList from "@/app/components/ArticleList"; + +const Page = ({ + params, +}: { + params: { + pageIndex: string; + }; +}) => { + const { pageIndex } = params; + return ( + <> + + + ); +}; + +export default Page; diff --git a/app/(articles)/announcements/[articleId]/layout.tsx b/app/(articles)/announcements/[articleId]/layout.tsx index d8efd89..c53bc9a 100644 --- a/app/(articles)/announcements/[articleId]/layout.tsx +++ b/app/(articles)/announcements/[articleId]/layout.tsx @@ -1,6 +1,5 @@ import { ReactNode } from "react"; import ArticleLayout from "@/app/components/ArticleLayout"; -import Breadcrumb from "@/app/components/Breadcrumb"; const Layout = ({ children, @@ -12,10 +11,7 @@ const Layout = ({ }) => { return ( -
- -
{children}
-
+ {children}
); }; diff --git a/app/(articles)/announcements/[articleId]/page.tsx b/app/(articles)/announcements/[articleId]/page.tsx index 24a679b..e5bf816 100644 --- a/app/(articles)/announcements/[articleId]/page.tsx +++ b/app/(articles)/announcements/[articleId]/page.tsx @@ -1,5 +1,6 @@ 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({ params, @@ -9,5 +10,15 @@ export default async function Article({ }; }) { const data = await articleDetail({ id: params.articleId }); - return ; + return ( + + + + ); } diff --git a/app/(articles)/announcements/pages/[pageIndex]/layout.tsx b/app/(articles)/announcements/pages/[pageIndex]/layout.tsx index e440bff..659c3c0 100644 --- a/app/(articles)/announcements/pages/[pageIndex]/layout.tsx +++ b/app/(articles)/announcements/pages/[pageIndex]/layout.tsx @@ -1,19 +1,19 @@ import { ReactNode } from "react"; 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 }) => { return ( -
- -
{children}
-
+ + {children} +
); }; diff --git a/app/(articles)/announcements/pages/[pageIndex]/page.tsx b/app/(articles)/announcements/pages/[pageIndex]/page.tsx index 82a2506..b73c803 100644 --- a/app/(articles)/announcements/pages/[pageIndex]/page.tsx +++ b/app/(articles)/announcements/pages/[pageIndex]/page.tsx @@ -1,8 +1,4 @@ -import { listArticles } from "@/app/api/articles"; -import { Fragment } from "react"; -import styles from "./styles.module.scss"; -import Link from "next/link"; -import Pagination from "@/app/components/Pagination"; +import ArticleList from "@/app/components/ArticleList"; const Page = async ({ params, @@ -11,31 +7,10 @@ const Page = async ({ pageIndex: string; }; }) => { - const data = await listArticles({ - cid: "3", - pageNo: params.pageIndex, - pageSize: 20, - }); + const { pageIndex } = params; return (
-

公告通知

-
    - {data.lists.map((article, index) => ( -
  • - - {article.title} - -
  • - ))} -
- +
); }; diff --git a/app/(articles)/general-news/[articleId]/layout.tsx b/app/(articles)/general-news/[articleId]/layout.tsx new file mode 100644 index 0000000..c53bc9a --- /dev/null +++ b/app/(articles)/general-news/[articleId]/layout.tsx @@ -0,0 +1,19 @@ +import { ReactNode } from "react"; +import ArticleLayout from "@/app/components/ArticleLayout"; + +const Layout = ({ + children, +}: { + children: ReactNode; + params: { + articleId: string; + }; +}) => { + return ( + + {children} + + ); +}; + +export default Layout; diff --git a/app/(articles)/general-news/[articleId]/page.tsx b/app/(articles)/general-news/[articleId]/page.tsx new file mode 100644 index 0000000..2c2bf36 --- /dev/null +++ b/app/(articles)/general-news/[articleId]/page.tsx @@ -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 ( + + + + ); +} diff --git a/app/(articles)/general-news/pages/[pageIndex]/layout.tsx b/app/(articles)/general-news/pages/[pageIndex]/layout.tsx new file mode 100644 index 0000000..6776561 --- /dev/null +++ b/app/(articles)/general-news/pages/[pageIndex]/layout.tsx @@ -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 ( + + + {children} + + + ); +}; + +export default Layout; diff --git a/app/(articles)/general-news/pages/[pageIndex]/page.tsx b/app/(articles)/general-news/pages/[pageIndex]/page.tsx new file mode 100644 index 0000000..393dc74 --- /dev/null +++ b/app/(articles)/general-news/pages/[pageIndex]/page.tsx @@ -0,0 +1,23 @@ +import React from "react"; +import ArticleList from "@/app/components/ArticleList"; + +const Page = ({ + params, +}: { + params: { + pageIndex: string; + }; +}) => { + const { pageIndex } = params; + return ( + <> + + + ); +}; + +export default Page; diff --git a/app/(articles)/recruitment/[articleId]/layout.tsx b/app/(articles)/recruitment/[articleId]/layout.tsx new file mode 100644 index 0000000..40aab04 --- /dev/null +++ b/app/(articles)/recruitment/[articleId]/layout.tsx @@ -0,0 +1,19 @@ +import { ReactNode } from "react"; +import ArticleLayout from "@/app/components/ArticleLayout"; + +const Layout = ({ + children, +}: { + children: ReactNode; + params: { + articleId: string; + }; +}) => { + return ( + + {children} + + ); +}; + +export default Layout; diff --git a/app/(articles)/recruitment/[articleId]/page.tsx b/app/(articles)/recruitment/[articleId]/page.tsx new file mode 100644 index 0000000..f1bbbbf --- /dev/null +++ b/app/(articles)/recruitment/[articleId]/page.tsx @@ -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 ( + + + + ); +} diff --git a/app/(articles)/recruitment/pages/[pageIndex]/layout.tsx b/app/(articles)/recruitment/pages/[pageIndex]/layout.tsx new file mode 100644 index 0000000..5c4bea6 --- /dev/null +++ b/app/(articles)/recruitment/pages/[pageIndex]/layout.tsx @@ -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 ( + + + {children} + + + ); +}; + +export default Layout; diff --git a/app/(articles)/recruitment/pages/[pageIndex]/page.tsx b/app/(articles)/recruitment/pages/[pageIndex]/page.tsx new file mode 100644 index 0000000..d9cdaf8 --- /dev/null +++ b/app/(articles)/recruitment/pages/[pageIndex]/page.tsx @@ -0,0 +1,22 @@ +import ArticleList from "@/app/components/ArticleList"; + +const Page = ({ + params, +}: { + params: { + pageIndex: string; + }; +}) => { + const { pageIndex } = params; + return ( + <> + + + ); +}; + +export default Page; diff --git a/app/(articles)/research-progress/[articleId]/layout.tsx b/app/(articles)/research-progress/[articleId]/layout.tsx new file mode 100644 index 0000000..c53bc9a --- /dev/null +++ b/app/(articles)/research-progress/[articleId]/layout.tsx @@ -0,0 +1,19 @@ +import { ReactNode } from "react"; +import ArticleLayout from "@/app/components/ArticleLayout"; + +const Layout = ({ + children, +}: { + children: ReactNode; + params: { + articleId: string; + }; +}) => { + return ( + + {children} + + ); +}; + +export default Layout; diff --git a/app/(articles)/research-progress/[articleId]/page.tsx b/app/(articles)/research-progress/[articleId]/page.tsx index 5d04e1a..52571fb 100644 --- a/app/(articles)/research-progress/[articleId]/page.tsx +++ b/app/(articles)/research-progress/[articleId]/page.tsx @@ -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 = () => { - return
; -}; - -export default ResearchProgress; +export default async function ResearchProgress({ + params, +}: { + params: { + articleId: string; + }; +}) { + const data = await articleDetail({ id: params.articleId }); + return ( + + + + ); +} diff --git a/app/(articles)/research-progress/pages/[pageIndex]/layout.tsx b/app/(articles)/research-progress/pages/[pageIndex]/layout.tsx new file mode 100644 index 0000000..7b283c4 --- /dev/null +++ b/app/(articles)/research-progress/pages/[pageIndex]/layout.tsx @@ -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 ( + + + {children} + + + ); +}; + +export default Layout; diff --git a/app/(articles)/research-progress/pages/[pageIndex]/page.tsx b/app/(articles)/research-progress/pages/[pageIndex]/page.tsx new file mode 100644 index 0000000..aa06f0a --- /dev/null +++ b/app/(articles)/research-progress/pages/[pageIndex]/page.tsx @@ -0,0 +1,18 @@ +import ArticleList from "@/app/components/ArticleList"; + +const Page = ({ + params, +}: { + params: { + pageIndex: string; + }; +}) => { + const { pageIndex } = params; + return ( + <> + + + ); +}; + +export default Page; diff --git a/app/(articles)/technological-achievements/[articleId]/layout.tsx b/app/(articles)/technological-achievements/[articleId]/layout.tsx new file mode 100644 index 0000000..c53bc9a --- /dev/null +++ b/app/(articles)/technological-achievements/[articleId]/layout.tsx @@ -0,0 +1,19 @@ +import { ReactNode } from "react"; +import ArticleLayout from "@/app/components/ArticleLayout"; + +const Layout = ({ + children, +}: { + children: ReactNode; + params: { + articleId: string; + }; +}) => { + return ( + + {children} + + ); +}; + +export default Layout; diff --git a/app/(articles)/technological-achievements/[articleId]/page.tsx b/app/(articles)/technological-achievements/[articleId]/page.tsx new file mode 100644 index 0000000..e164e4e --- /dev/null +++ b/app/(articles)/technological-achievements/[articleId]/page.tsx @@ -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 ( + + + + ); +} diff --git a/app/(articles)/technological-achievements/pages/[pageIndex]/layout.tsx b/app/(articles)/technological-achievements/pages/[pageIndex]/layout.tsx new file mode 100644 index 0000000..f10ad01 --- /dev/null +++ b/app/(articles)/technological-achievements/pages/[pageIndex]/layout.tsx @@ -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 ( + + + {children} + + + ); +}; + +export default Layout; diff --git a/app/(articles)/technological-achievements/pages/[pageIndex]/page.tsx b/app/(articles)/technological-achievements/pages/[pageIndex]/page.tsx new file mode 100644 index 0000000..af405c7 --- /dev/null +++ b/app/(articles)/technological-achievements/pages/[pageIndex]/page.tsx @@ -0,0 +1,18 @@ +import ArticleList from "@/app/components/ArticleList"; + +const Page = ({ + params, +}: { + params: { + pageIndex: string; + }; +}) => { + const { pageIndex } = params; + return ( + <> + + + ); +}; + +export default Page; diff --git a/app/(introduce)/achievements-transformation/config.ts b/app/(introduce)/achievements-transformation/config.ts new file mode 100644 index 0000000..2d35ff3 --- /dev/null +++ b/app/(introduce)/achievements-transformation/config.ts @@ -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", + }, +]; diff --git a/app/(introduce)/achievements-transformation/government-policy/layout.tsx b/app/(introduce)/achievements-transformation/government-policy/layout.tsx new file mode 100644 index 0000000..0e4f39f --- /dev/null +++ b/app/(introduce)/achievements-transformation/government-policy/layout.tsx @@ -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 ( + + {children} + + ); +}; + +export default Layout; diff --git a/app/(introduce)/achievements-transformation/government-policy/page.tsx b/app/(introduce)/achievements-transformation/government-policy/page.tsx new file mode 100644 index 0000000..1de31bd --- /dev/null +++ b/app/(introduce)/achievements-transformation/government-policy/page.tsx @@ -0,0 +1,19 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + +const Page = () => { + return ( + <> + +
    +
  1. 帮助企业对接政府普惠政策,争取一事一议政策
  2. +
  3. 帮助企业享受专项政策
  4. +
  5. 帮助企业争取落地政策
  6. +
  7. 帮助企业争取政府投资
  8. +
  9. 帮助企业争取市场及应用场景支持
  10. +
  11. 帮助企业跨区域争取政府支持
  12. +
+ + ); +}; + +export default Page; diff --git a/app/(introduce)/achievements-transformation/industry-docking/layout.tsx b/app/(introduce)/achievements-transformation/industry-docking/layout.tsx new file mode 100644 index 0000000..d7afb19 --- /dev/null +++ b/app/(introduce)/achievements-transformation/industry-docking/layout.tsx @@ -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 ( + + {children} + + ); +}; + +export default Layout; diff --git a/app/(introduce)/achievements-transformation/industry-docking/page.tsx b/app/(introduce)/achievements-transformation/industry-docking/page.tsx new file mode 100644 index 0000000..94de6d7 --- /dev/null +++ b/app/(introduce)/achievements-transformation/industry-docking/page.tsx @@ -0,0 +1,19 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + +const Page = () => { + return ( + <> + +
    +
  1. 对接政府资源
  2. +
  3. 对接行业资源
  4. +
  5. 对接中科院科技资源
  6. +
  7. 对接投融资资源
  8. +
  9. 对接产业链资源
  10. +
  11. 对接一带一路市场资源
  12. +
+ + ); +}; + +export default Page; diff --git a/app/(introduce)/achievements-transformation/intellectual-property-services/layout.tsx b/app/(introduce)/achievements-transformation/intellectual-property-services/layout.tsx new file mode 100644 index 0000000..e2aa51e --- /dev/null +++ b/app/(introduce)/achievements-transformation/intellectual-property-services/layout.tsx @@ -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 ( + + {children} + + ); +}; + +export default Layout; diff --git a/app/(introduce)/achievements-transformation/intellectual-property-services/page.tsx b/app/(introduce)/achievements-transformation/intellectual-property-services/page.tsx new file mode 100644 index 0000000..81d2a01 --- /dev/null +++ b/app/(introduce)/achievements-transformation/intellectual-property-services/page.tsx @@ -0,0 +1,22 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + +const Page = () => { + return ( + <> + +

+ 知识产权服务内容: +

+
    +
  1. 知识产权申报
  2. +
  3. 知识产权运营
  4. +
  5. 知识产权交易
  6. +
  7. 知识产权贷款
  8. +
  9. 知识产权布局
  10. +
  11. 知识产权维护
  12. +
+ + ); +}; + +export default Page; diff --git a/app/(introduce)/achievements-transformation/intelligence-services/layout.tsx b/app/(introduce)/achievements-transformation/intelligence-services/layout.tsx new file mode 100644 index 0000000..b11a389 --- /dev/null +++ b/app/(introduce)/achievements-transformation/intelligence-services/layout.tsx @@ -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 ( + + {children} + + ); +}; + +export default Layout; diff --git a/app/(introduce)/achievements-transformation/intelligence-services/page.tsx b/app/(introduce)/achievements-transformation/intelligence-services/page.tsx new file mode 100644 index 0000000..5e2af32 --- /dev/null +++ b/app/(introduce)/achievements-transformation/intelligence-services/page.tsx @@ -0,0 +1,26 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + +const Page = () => { + return ( + <> + +
    +
  1. + 科技战略研究与决策咨询(战略情报)偏宏观。战略,规划,计划,布局,资源,政策。 +
  2. +
  3. + 学科数据挖掘与知识分析(学科情报)偏微观。前沿,方向,突破;学术影响力,科研竞争力。 +
  4. +
  5. + 区域与产业发展决策咨询(竞争情报)中微观。科技;经济,社会;技术,市场;财政,金融。 +
  6. +
  7. 帮助企业进行技术情报分析(含竞争对手)
  8. +
  9. 帮助企业进行专利布局
  10. +
  11. 帮助政府制定产业规划方案
  12. +
  13. 帮助企业对接技术需求,科技成果
  14. +
+ + ); +}; + +export default Page; diff --git a/app/(introduce)/achievements-transformation/investment-and-financing/layout.tsx b/app/(introduce)/achievements-transformation/investment-and-financing/layout.tsx new file mode 100644 index 0000000..f463b48 --- /dev/null +++ b/app/(introduce)/achievements-transformation/investment-and-financing/layout.tsx @@ -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 ( + + {children} + + ); +}; + +export default Layout; diff --git a/app/(introduce)/achievements-transformation/investment-and-financing/page.tsx b/app/(introduce)/achievements-transformation/investment-and-financing/page.tsx new file mode 100644 index 0000000..cec833d --- /dev/null +++ b/app/(introduce)/achievements-transformation/investment-and-financing/page.tsx @@ -0,0 +1,18 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + +const Page = () => { + return ( + <> + +
    +
  1. 帮助企业对接科技银行提供信用贷款
  2. +
  3. 帮助企业对接投融资机构
  4. +
  5. 帮助企业对接产业资本助力上市
  6. +
  7. 帮助企业对接券商上市辅导
  8. +
  9. 帮助企业对接政府产业引导基金,协助企业落地
  10. +
+ + ); +}; + +export default Page; diff --git a/app/(introduce)/achievements-transformation/layout.tsx b/app/(introduce)/achievements-transformation/layout.tsx new file mode 100644 index 0000000..42c50c4 --- /dev/null +++ b/app/(introduce)/achievements-transformation/layout.tsx @@ -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 ( + + {children} + + ); +}; + +export default Layout; diff --git a/app/(introduce)/achievements-transformation/scientific-research-project-declaration/layout.tsx b/app/(introduce)/achievements-transformation/scientific-research-project-declaration/layout.tsx new file mode 100644 index 0000000..e1fcb47 --- /dev/null +++ b/app/(introduce)/achievements-transformation/scientific-research-project-declaration/layout.tsx @@ -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 ( + + {children} + + ); +}; + +export default Layout; diff --git a/app/(introduce)/achievements-transformation/scientific-research-project-declaration/page.tsx b/app/(introduce)/achievements-transformation/scientific-research-project-declaration/page.tsx new file mode 100644 index 0000000..249c26a --- /dev/null +++ b/app/(introduce)/achievements-transformation/scientific-research-project-declaration/page.tsx @@ -0,0 +1,23 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + +const Page = () => { + return ( + <> + +
    +
  1. 帮助企业申报国家级、省、市、区科技研发项目
  2. +
  3. 联合企业申报国家级、省、市、区科研项目
  4. +
  5. + 联合企业申报科研平台(工程中心、重点实验室、研发中心、设计中心、技术中心) +
  6. +
  7. + 联合企业共建中国科学院重庆绿色智能技术研究院合肥分院研发中心或实验室 +
  8. +
  9. 帮助高层次人才或团队申报人才项目
  10. +
  11. 科研项目转化
  12. +
+ + ); +}; + +export default Page; diff --git a/app/(introduce)/achievements-transformation/technology-assessment/layout.tsx b/app/(introduce)/achievements-transformation/technology-assessment/layout.tsx new file mode 100644 index 0000000..a32da9d --- /dev/null +++ b/app/(introduce)/achievements-transformation/technology-assessment/layout.tsx @@ -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 ( + + {children} + + ); +}; + +export default Layout; diff --git a/app/(introduce)/achievements-transformation/technology-assessment/page.tsx b/app/(introduce)/achievements-transformation/technology-assessment/page.tsx new file mode 100644 index 0000000..18d4485 --- /dev/null +++ b/app/(introduce)/achievements-transformation/technology-assessment/page.tsx @@ -0,0 +1,17 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + +const Page = () => { + return ( + <> + +
    +
  1. 科技成果的技术水平,经济效益和价值的评估
  2. +
  3. 产业和地区的科技进步和绩效
  4. +
  5. 科技机构的综合实力和运营水平
  6. +
  7. 科技政策的研究和制定效果评价
  8. +
+ + ); +}; + +export default Page; diff --git a/app/(introduce)/contact-us/layout.tsx b/app/(introduce)/contact-us/layout.tsx new file mode 100644 index 0000000..0238e8a --- /dev/null +++ b/app/(introduce)/contact-us/layout.tsx @@ -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 ( + +
+ +
{children}
+
+
+ ); +}; + +export default Layout; diff --git a/app/(introduce)/contact-us/page.tsx b/app/(introduce)/contact-us/page.tsx new file mode 100644 index 0000000..46da347 --- /dev/null +++ b/app/(introduce)/contact-us/page.tsx @@ -0,0 +1,24 @@ +const Page = () => { + return ( + <> +

+ 信息公开联系方式 +

+

+ 机构名称:中国科学院重庆绿色智能技术研究院合肥分院 +

+

+ 工作时间:8:30-18:00(节假日除外) +

+

+ 联系电话:18156053255 18156054143 +

+

+ 通信地址:安徽省合肥市高新区创新产业园D1 7楼 +

+

邮政编码:230022

+ + ); +}; + +export default Page; diff --git a/app/(introduce)/organization/(functional-departments)/func-dep/asset-finance/page.tsx b/app/(introduce)/organization/(functional-departments)/func-dep/asset-finance/page.tsx index e7c0be6..743b9f0 100644 --- a/app/(introduce)/organization/(functional-departments)/func-dep/asset-finance/page.tsx +++ b/app/(introduce)/organization/(functional-departments)/func-dep/asset-finance/page.tsx @@ -1,10 +1,10 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + const Page = () => { return ( <> -

- 资产财务处 -

-

+ +

负责院财务管理、国有资产管理等工作,主要职责为:

  1. diff --git a/app/(introduce)/organization/(functional-departments)/func-dep/general-office/page.tsx b/app/(introduce)/organization/(functional-departments)/func-dep/general-office/page.tsx index 576084e..a81def0 100644 --- a/app/(introduce)/organization/(functional-departments)/func-dep/general-office/page.tsx +++ b/app/(introduce)/organization/(functional-departments)/func-dep/general-office/page.tsx @@ -1,12 +1,10 @@ -import React from "react"; +import ArticleHeading from "@/app/components/ArticleHeading"; const Page = () => { return ( <> -

    - 综合办公室 -

    -

    + +

    负责院党建与创新文化建设、综合行政管理、科学传播与信息化建设等工作,主要职责为:

    1. @@ -34,7 +32,7 @@ const Page = () => {
    2. 承担院领导安排的其他工作。

    -

    +

    监察审计室挂靠综合办公室,承担院纪委日常工作(含科研道德委员会日常工作),负责院纪检、监察、审计等工作,协助党委做好党风廉政建设及反腐败工作。

    diff --git a/app/(introduce)/organization/(functional-departments)/func-dep/industry/page.tsx b/app/(introduce)/organization/(functional-departments)/func-dep/industry/page.tsx index 91e62d4..7828581 100644 --- a/app/(introduce)/organization/(functional-departments)/func-dep/industry/page.tsx +++ b/app/(introduce)/organization/(functional-departments)/func-dep/industry/page.tsx @@ -1,8 +1,10 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + const Page = () => { return ( <> -

    产业处

    -

    + +

    负责院科技成果转移转化与产业化工作,主要职责为:

    1. 负责产业化项目的申报和管理。
    2. diff --git a/app/(introduce)/organization/(functional-departments)/func-dep/personnel/page.tsx b/app/(introduce)/organization/(functional-departments)/func-dep/personnel/page.tsx index deb38bf..478f5c0 100644 --- a/app/(introduce)/organization/(functional-departments)/func-dep/personnel/page.tsx +++ b/app/(introduce)/organization/(functional-departments)/func-dep/personnel/page.tsx @@ -1,8 +1,10 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + const Page = () => { return ( <> -

      人事处

      -

      + +

      负责院人才队伍建设、人事管理等工作,主要职责为:

      1. 组织制定、修订院人力资源战略,编制人力资源发展规划。
      2. diff --git a/app/(introduce)/organization/(functional-departments)/func-dep/technology/page.tsx b/app/(introduce)/organization/(functional-departments)/func-dep/technology/page.tsx index 414ae11..4bfb4f0 100644 --- a/app/(introduce)/organization/(functional-departments)/func-dep/technology/page.tsx +++ b/app/(introduce)/organization/(functional-departments)/func-dep/technology/page.tsx @@ -1,8 +1,10 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + const Page = () => { return ( <> -

        科技处

        -

        + +

        负责院科技发展规划、学科体系建设、重大科技任务组织、科技管理、国际交流等工作,主要职责为:

          diff --git a/app/(introduce)/organization/(generally)/architecture/page.tsx b/app/(introduce)/organization/(generally)/architecture/page.tsx index ec23752..5f7f466 100644 --- a/app/(introduce)/organization/(generally)/architecture/page.tsx +++ b/app/(introduce)/organization/(generally)/architecture/page.tsx @@ -1,12 +1,12 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + const Page = () => { return ( <> -

          - 组织架构 -

          + ); diff --git a/app/(introduce)/organization/(generally)/config.ts b/app/(introduce)/organization/(generally)/config.ts new file mode 100644 index 0000000..775e698 --- /dev/null +++ b/app/(introduce)/organization/(generally)/config.ts @@ -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" }, +]; diff --git a/app/(introduce)/organization/(generally)/dean-speech/page.tsx b/app/(introduce)/organization/(generally)/dean-speech/page.tsx index d446c62..28ca7c1 100644 --- a/app/(introduce)/organization/(generally)/dean-speech/page.tsx +++ b/app/(introduce)/organization/(generally)/dean-speech/page.tsx @@ -1,20 +1,20 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + const Page = () => { return ( <> -

          - 院长致辞 -

          -

          + +

          世界处于百年未有之大变局,第四次工业革命方兴未艾,人工智能、机器人技术、虚拟现实以及量子科技等蓬勃发展,将深度改变人类生产和生活方式,对国际格局的发展产生重要影响。中国要强大、民族要复兴、人民要幸福,科技强国梦就必须要实现。

          -

          +

          合肥分院的设立,是响应中科院支持合肥国家科学中心建设的号召,中科院重庆绿色智能技术研究院在合肥设立的独立法人事业单位。主要从事绿色智能科技研发与科技成果转化。合肥分院秉持“市场为魂,创新为本”的理念。按照“院企共建、源头创新、科技共享、产业集聚”模式建设。以服务好科技工作者,服务好合作企业,服务好区域产业创新升级为宗旨。

          -

          +

          合肥分院积极探索政、产、学、研、用紧密结合的机制,以合肥产业发展重大科技需求为牵引在人工智能、精准医疗、5G物联网等领域进行科技布局,集聚中科院体系内绿色智能科技人才与科技成果,重点开展产业关键核心技术与前沿技术创新、技术集成创新、工程化研发和科技成果转移转化工作,与技术创新体系和区域产业体系紧密结合,提升合肥创新发展能力。 把合肥分院建设成为产业技术源头创新基地、技术集成创新与育成基地、高层次创新创业人才培养基地和科技与产业对接的重要平台。合肥分院坚持立足合肥、辐射安徽,坚持技术立院、应用立院,坚持需求牵引、创新驱动、院企共建,按照“地方政府满意、合作企业满意、科学家满意”的检验标准。

          -

          +

          合肥分院希望能走出一条开放、包容、协作、创新的新型科研院所的道路。竭诚欢迎海内外英才,共创大业,实现科技强国梦!

          diff --git a/app/(introduce)/organization/(generally)/joint-laboratory/page.tsx b/app/(introduce)/organization/(generally)/joint-laboratory/page.tsx index 9f6e17a..2749065 100644 --- a/app/(introduce)/organization/(generally)/joint-laboratory/page.tsx +++ b/app/(introduce)/organization/(generally)/joint-laboratory/page.tsx @@ -1,10 +1,10 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + const Page = () => { return ( <> -

          - 研究中心 -

          -

          建设中...

          + +

          建设中...

          ); }; diff --git a/app/(introduce)/organization/(generally)/joint-venture/page.tsx b/app/(introduce)/organization/(generally)/joint-venture/page.tsx index 4cba07d..6a24ac7 100644 --- a/app/(introduce)/organization/(generally)/joint-venture/page.tsx +++ b/app/(introduce)/organization/(generally)/joint-venture/page.tsx @@ -1,10 +1,10 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + const Page = () => { return ( <> -

          - 合作企业 -

          -

          对接中...

          + +

          对接中...

          ); }; diff --git a/app/(introduce)/organization/(generally)/layout.tsx b/app/(introduce)/organization/(generally)/layout.tsx index d39ef8f..45f7c13 100644 --- a/app/(introduce)/organization/(generally)/layout.tsx +++ b/app/(introduce)/organization/(generally)/layout.tsx @@ -1,16 +1,6 @@ import ArticleLayout from "@/app/components/ArticleLayout"; import { ReactNode } from "react"; - -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" }, -]; +import { navigations } from "@/app/(introduce)/organization/(generally)/config"; const Layout = ({ children }: { children: ReactNode }) => { return ( diff --git a/app/(introduce)/organization/(generally)/overview/page.tsx b/app/(introduce)/organization/(generally)/overview/page.tsx index 3528cf4..8942b4e 100644 --- a/app/(introduce)/organization/(generally)/overview/page.tsx +++ b/app/(introduce)/organization/(generally)/overview/page.tsx @@ -1,16 +1,16 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + const Page = () => { return ( <> -

          - 中国科学院重庆绿色智能技术研究院合肥分院 -

          -

          + +

          中国科学院重庆绿色智能技术研究院合肥分院(以下简称“合肥分院”)是在响应中科院号召支持合肥国家科学中心建设的前提下,中国科学院重庆绿色智能技术研究院与合肥市共建的直属事业法人科研机构。2018年2月20号在中科院与安徽省共建领导小组会议上正式签约筹建,2018年12月20日,正式获得事业法人登记证书。

          -

          +

          合肥分院设立科技咨询委员会和产业咨询委员会,设人工智能、精准医疗、5G物联、绿色环保等研究单元。主要从事绿色智能科技研发与科技成果转化。

          -

          +

          合肥分院秉持重庆研究院“市场为魂,创新为本”的理念。按照“院企共建、源头创新、科技共享、产业集聚”模式建设。以服务好科技工作者,服务好合作企业为宗旨。开展形式多样的成果转移转化,加快科研成果落地。

          diff --git a/app/(introduce)/organization/(generally)/research-platform/page.tsx b/app/(introduce)/organization/(generally)/research-platform/page.tsx index 2de9c10..a24829e 100644 --- a/app/(introduce)/organization/(generally)/research-platform/page.tsx +++ b/app/(introduce)/organization/(generally)/research-platform/page.tsx @@ -1,10 +1,10 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + const Page = () => { return ( <> -

          - 科研平台 -

          -

          筹建中...

          + +

          筹建中...

          ); }; diff --git a/app/(introduce)/organization/(generally)/stidc/page.tsx b/app/(introduce)/organization/(generally)/stidc/page.tsx index b5b8fa3..afc16ce 100644 --- a/app/(introduce)/organization/(generally)/stidc/page.tsx +++ b/app/(introduce)/organization/(generally)/stidc/page.tsx @@ -1,10 +1,10 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + const Page = () => { return ( <> -

          - 科技产业发展委员会 -

          -

          筹备中...

          + +

          筹备中...

          ); }; diff --git a/app/(introduce)/talents/academician/page.tsx b/app/(introduce)/talents/academician/page.tsx index 8d11512..494731f 100644 --- a/app/(introduce)/talents/academician/page.tsx +++ b/app/(introduce)/talents/academician/page.tsx @@ -1,16 +1,14 @@ import Image from "next/image"; +import ArticleHeading from "@/app/components/ArticleHeading"; const Page = () => { return ( <> - {" "} -

          - 两院院士 -

          -

          中科院院士

          + +

          中科院院士

          {"张景中"}

          diff --git a/app/(introduce)/talents/config.ts b/app/(introduce)/talents/config.ts new file mode 100644 index 0000000..dfc9b29 --- /dev/null +++ b/app/(introduce)/talents/config.ts @@ -0,0 +1,6 @@ +export const navigations = [ + { title: "人才概览", href: "/talents/overview" }, + { title: "两院院士", href: "/talents/academician" }, + { title: "研究员", href: "/talents/researcher" }, + { title: "副研究员", href: "/talents/vice-researcher" }, +]; diff --git a/app/(introduce)/talents/layout.tsx b/app/(introduce)/talents/layout.tsx index 5b691ad..adc0ddc 100644 --- a/app/(introduce)/talents/layout.tsx +++ b/app/(introduce)/talents/layout.tsx @@ -1,12 +1,6 @@ import ArticleLayout from "@/app/components/ArticleLayout"; import { ReactNode } from "react"; - -const navigations = [ - { title: "人才概览", href: "/talents/overview" }, - { title: "两院院士", href: "/talents/academician" }, - { title: "研究员", href: "/talents/researcher" }, - { title: "副研究员", href: "/talents/vice-researcher" }, -]; +import { navigations } from "@/app/(introduce)/talents/config"; const Layout = ({ children }: { children: ReactNode }) => { return ( diff --git a/app/(introduce)/talents/overview/page.tsx b/app/(introduce)/talents/overview/page.tsx index 40ee328..2080f0f 100644 --- a/app/(introduce)/talents/overview/page.tsx +++ b/app/(introduce)/talents/overview/page.tsx @@ -1,10 +1,11 @@ +import ArticleHeading from "@/app/components/ArticleHeading"; + const Page = () => { return ( <> -

          - 人才概况 -

          -

          + + +

          截止2017年10月底,重庆研究院全院共有员工333人,包括正高级40人,副高级61人,中级136人,初级21人。具有环境科学与工程、光学工程两个一级学科博士学位培养点,截止2017年10月底,共有博士生导师25人,硕士生导师38人,在读研究生117,其中博士39人,硕士73 人,留学生5人。

          diff --git a/app/(introduce)/talents/researcher/page.tsx b/app/(introduce)/talents/researcher/page.tsx index d276746..3356f52 100644 --- a/app/(introduce)/talents/researcher/page.tsx +++ b/app/(introduce)/talents/researcher/page.tsx @@ -1,5 +1,6 @@ import styles from "./page.module.scss"; import Link from "next/link"; +import ArticleHeading from "@/app/components/ArticleHeading"; const academicians = [ { @@ -49,16 +50,16 @@ const academicians = [ const Page = () => { return ( <> -

          研究员

          -
          + +
          {academicians.map((academician) => (
          {academician.name}
          diff --git a/app/(introduce)/talents/vice-researcher/page.tsx b/app/(introduce)/talents/vice-researcher/page.tsx index 3f1b82b..2e2c9c7 100644 --- a/app/(introduce)/talents/vice-researcher/page.tsx +++ b/app/(introduce)/talents/vice-researcher/page.tsx @@ -1,4 +1,5 @@ import Link from "next/link"; +import ArticleHeading from "@/app/components/ArticleHeading"; const academicians = [ { @@ -18,8 +19,8 @@ const academicians = [ const Page = () => { return ( <> -

          研究员

          -
          + +
          {academicians.map((academician) => (
          { > {academician.name}
          diff --git a/app/assets/pin.png b/app/assets/pin.png new file mode 100644 index 0000000000000000000000000000000000000000..b479dbfccd882dd3c99ce35c13c289fd53bf67ba GIT binary patch literal 63568 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 Rybk_TQ_@m=cGT*^{{ik=%U%Eg literal 0 HcmV?d00001 diff --git a/app/components/AnhuiSwiper.tsx b/app/components/AnhuiSwiper.tsx new file mode 100644 index 0000000..d27f88d --- /dev/null +++ b/app/components/AnhuiSwiper.tsx @@ -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([]); + // useEffect(() => { + // request + // .get>>(`/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 ( +
          +
          + 安徽风采 +
          +
          + {/* @ts-ignore*/} + + {/* @ts-ignore*/} + {albums.map((el) => ( + // @ts-ignore + + + {/*@ts-ignore*/} + + ))} + {/* @ts-ignore */} + +
          +
          + ); +}; + +export default AnhuiSwiper; diff --git a/app/components/ArticleBlock.tsx b/app/components/ArticleBlock.tsx index e45c99a..211c8a9 100644 --- a/app/components/ArticleBlock.tsx +++ b/app/components/ArticleBlock.tsx @@ -4,6 +4,7 @@ import styles from "@/app/assets/page.module.css"; import Link from "next/link"; import request from "@/app/lib/request"; import { listArticles } from "@/app/api/articles"; +import dayjs from "dayjs"; interface ArticleLink { title: string; @@ -17,12 +18,14 @@ const ArticleBlock = async ({ height, category, linkPrefix, + showDate, }: { title: string; height?: number | string; width?: number | string; category: string; linkPrefix: string; + showDate?: boolean; }) => { const data = await listArticles({ cid: category }); return ( @@ -31,23 +34,34 @@ const ArticleBlock = async ({ width, height, }} - className={"flex flex-col"} + className={"flex flex-col overflow-hidden"} >
          {"trumpet {title} + + 更多+ +
            {data.lists.map((article) => ( -
          • +
          • - {article.title} + {article.title} + {showDate && ( + {dayjs(article.createTime).format("YYYY-MM-DD")} + )}
          • ))} diff --git a/app/components/ArticleHeading.tsx b/app/components/ArticleHeading.tsx new file mode 100644 index 0000000..fa6caf4 --- /dev/null +++ b/app/components/ArticleHeading.tsx @@ -0,0 +1,9 @@ +const ArticleHeading = ({ text }: { text: string }) => { + return ( +

            + {text} +

            + ); +}; + +export default ArticleHeading; diff --git a/app/components/ArticleLayout.tsx b/app/components/ArticleLayout.tsx index 1461f89..6dac388 100644 --- a/app/components/ArticleLayout.tsx +++ b/app/components/ArticleLayout.tsx @@ -7,7 +7,7 @@ const ArticleLayout = ({ leftNavTitle, }: { children: ReactNode; - navigations: any[]; + navigations?: any[]; leftNavTitle: string; }) => { return ( @@ -15,7 +15,7 @@ const ArticleLayout = ({
            -
            {children}
            +
            {children}
          ); }; diff --git a/app/(articles)/announcements/pages/[pageIndex]/styles.module.scss b/app/components/ArticleList.module.scss similarity index 100% rename from app/(articles)/announcements/pages/[pageIndex]/styles.module.scss rename to app/components/ArticleList.module.scss diff --git a/app/components/ArticleList.tsx b/app/components/ArticleList.tsx new file mode 100644 index 0000000..43897cd --- /dev/null +++ b/app/components/ArticleList.tsx @@ -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 ( + <> +

          {title}

          +
            + {data.lists.map((article, index) => ( +
          • + + {article.title} + {dayjs(article.createTime).format("YYYY-MM-DD")} + +
          • + ))} +
          + + + ); +}; + +export default ArticleList; diff --git a/app/components/ArticleContent.tsx b/app/components/ArticleRender.tsx similarity index 78% rename from app/components/ArticleContent.tsx rename to app/components/ArticleRender.tsx index 44bc2c2..28a48e0 100644 --- a/app/components/ArticleContent.tsx +++ b/app/components/ArticleRender.tsx @@ -1,13 +1,11 @@ -import React from "react"; import { ArticleDetail } from "@/app/types/article"; import Link from "next/link"; +import ArticleHeading from "@/app/components/ArticleHeading"; -const ArticleContent = ({ article }: { article: ArticleDetail }) => { +const ArticleRender = ({ article }: { article: ArticleDetail }) => { return (
          -

          - {article.title} -

          +
          @@ -33,4 +31,4 @@ const ArticleContent = ({ article }: { article: ArticleDetail }) => { ); }; -export default ArticleContent; +export default ArticleRender; diff --git a/app/components/ArticleWithBreadcrumb.tsx b/app/components/ArticleWithBreadcrumb.tsx new file mode 100644 index 0000000..c33f665 --- /dev/null +++ b/app/components/ArticleWithBreadcrumb.tsx @@ -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 ( +
          + +
          {children}
          +
          + ); +}; + +export default ArticleWithBreadcrumb; diff --git a/app/components/Breadcrumb.tsx b/app/components/Breadcrumb.tsx index 99c667d..6eec076 100644 --- a/app/components/Breadcrumb.tsx +++ b/app/components/Breadcrumb.tsx @@ -1,23 +1,27 @@ import { Fragment } from "react"; import Link from "next/link"; -interface BreadcrumbItem { +export interface BreadcrumbItem { href: string; title: string; } const Breadcrumb = ({ navigations }: { navigations: BreadcrumbItem[] }) => { return ( -
          +
          当前位置: {navigations.map((navigation, index) => { if (index === navigations.length - 1) { - return
          {navigation.title}
          ; + return ( + + {navigation.title} + + ); } else { return ( {navigation.title} -
          /
          + /
          ); } diff --git a/app/components/FriendLinks.module.scss b/app/components/FriendLinks.module.scss new file mode 100644 index 0000000..c72a313 --- /dev/null +++ b/app/components/FriendLinks.module.scss @@ -0,0 +1,3 @@ +.titleBar { + background: linear-gradient(160deg, rgba(151, 193, 233, 1) 44.73684210526316%, rgba(15, 111, 202, 1) 100%);; +} \ No newline at end of file diff --git a/app/components/FriendLinks.tsx b/app/components/FriendLinks.tsx new file mode 100644 index 0000000..4ae0c48 --- /dev/null +++ b/app/components/FriendLinks.tsx @@ -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 ( +
          +
          + {"trumpet + 友情链接 +
          +
            + {links.map((link) => ( +
          • + + • {link.title} + +
          • + ))} +
          +
          + ); +}; + +export default FriendLinks; diff --git a/app/components/LatestNews.tsx b/app/components/LatestNews.tsx new file mode 100644 index 0000000..6447bc1 --- /dev/null +++ b/app/components/LatestNews.tsx @@ -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 ( +
          + + {""} + +
          + + {article.title} + + + {content} + + + 更多新闻内容>> + +
          +
          + ); +}; + +export default LatestNews; diff --git a/app/components/LeftNav.tsx b/app/components/LeftNav.tsx index a436d3e..452ad18 100644 --- a/app/components/LeftNav.tsx +++ b/app/components/LeftNav.tsx @@ -1,5 +1,5 @@ "use client"; -import React from "react"; + import Image from "next/image"; import circle from "@/app/assets/circle.png"; import styles from "./LeftNav.module.scss"; @@ -10,7 +10,7 @@ const LeftNav = ({ navigations, title, }: { - navigations: any[]; + navigations?: any[]; title: string; }) => { const pathname = usePathname(); @@ -24,12 +24,12 @@ const LeftNav = ({ {"circle {title}
          - {navigations.length > 0 && ( + {(navigations?.length ?? 0) > 0 && (
            - {navigations.map((navigation) => ( + {navigations?.map((navigation) => (
          • { @@ -25,13 +49,24 @@ const isActive = (link: string, current: string): boolean => { const MainNav = () => { const pathname = usePathname(); + const [activePopup, setActivePopup] = useState(-1); return (