- {/* Main Content */}
-
- {/* Navigation */}
-
-
-
- {NAV_ITEMS.map((item) => (
- `
- group relative px-4 py-3 rounded-md
- transition-all duration-300 ease-out
- outline-none
- ${isActive ? 'text-white font-medium' : 'text-[#8EADD4]'}
- `}
- >
- {({ isActive }) => (
- <>
-
- {item.label}
-
-
-
- >
- )}
-
- ))}
-
-
-
+
);
diff --git a/apps/web/src/components/layout/main/constants.tsx b/apps/web/src/components/layout/main/constants.tsx
index f075f25..3deda80 100644
--- a/apps/web/src/components/layout/main/constants.tsx
+++ b/apps/web/src/components/layout/main/constants.tsx
@@ -1,7 +1 @@
-export const NAV_ITEMS = [
- { to: "/write-letter", label: "Write Letter" },
- { to: "/search-letter", label: "Search Letters" },
- { to: "/public-letters", label: "Public Letters" },
- { to: "/announcements", label: "Announcements" },
- { to: "/guidelines", label: "Guidelines" },
-] as const;
+export { }
\ No newline at end of file
diff --git a/apps/web/src/components/layout/main/navigation.tsx b/apps/web/src/components/layout/main/navigation.tsx
new file mode 100644
index 0000000..e883965
--- /dev/null
+++ b/apps/web/src/components/layout/main/navigation.tsx
@@ -0,0 +1,41 @@
+import { NavLink } from "react-router-dom";
+import { useNavItem } from "./useNavItem";
+
+export default function Navigation() {
+ const { navItems } = useNavItem()
+ return
+
+
+ {navItems.map((item) => (
+ `
+ group relative px-4 py-3
+ transition-all duration-300 ease-out
+
+ ${isActive ? 'text-white font-medium' : 'text-[#8EADD4]'}
+ `}
+ >
+ {({ isActive }) => (
+ <>
+
+ {item.label}
+
+
+ >
+ )}
+
+ ))}
+
+
+
+}
\ No newline at end of file
diff --git a/apps/web/src/components/layout/main/useNavItem.ts b/apps/web/src/components/layout/main/useNavItem.ts
new file mode 100644
index 0000000..959c568
--- /dev/null
+++ b/apps/web/src/components/layout/main/useNavItem.ts
@@ -0,0 +1,38 @@
+import { api } from "@nice/client";
+import { TaxonomySlug } from "@nice/common";
+import { useMemo } from "react";
+// export const NAV_ITEMS = [
+
+// { to: "/write-letter", label: "咨询求助" },
+// { to: "/write-letter", label: "解难帮困" },
+// { to: "/write-letter", label: "需求提报" },
+// { to: "/write-letter", label: "意见建议" },
+// { to: "/write-letter", label: "问题反映" },
+// { to: "/write-letter", label: "举报投诉" },
+
+// ] as const;
+
+export function useNavItem() {
+ const { data } = api.term.findMany.useQuery({
+ where: {
+ taxonomy: { slug: TaxonomySlug.CATEGORY }
+ }
+ });
+
+ const navItems = useMemo(() => {
+ const defaultItems = [
+ { to: "/letter-list", label: "公开信件" },
+ { to: "/letter-progress", label: "进度查询" },
+ { to: "/help", label: "使用帮助" },
+ ];
+
+ if (!data) return defaultItems;
+
+ return data.reduce((items, term) => {
+ items.push({ to: `/write-letter?category=${term.id}`, label: term.name });
+ return items;
+ }, [{ to: "/letter-list", label: "公开信件" }].concat(defaultItems.slice(1)));
+ }, [data]);
+
+ return { navItems };
+}
\ No newline at end of file
diff --git a/apps/web/src/providers/theme-provider.tsx b/apps/web/src/providers/theme-provider.tsx
index 226a47c..e352aac 100644
--- a/apps/web/src/providers/theme-provider.tsx
+++ b/apps/web/src/providers/theme-provider.tsx
@@ -19,67 +19,11 @@ export const useAppTheme = () => useContext(AppThemeContext);
export default function ThemeProvider({ children }: { children: ReactNode }) {
const { token } = theme.useToken();
-
const applyTheme = (tailwindTheme: TailwindTheme) => {
for (let key in tailwindTheme) {
document.documentElement.style.setProperty(key, tailwindTheme[key]);
}
};
-
- // const agTheme = useMemo(
- // () =>
- // themeQuartz.withPart(iconSetQuartzLight).withParams({
- // accentColor: token.colorPrimary,
- // backgroundColor: token.colorBgContainer,
- // borderColor: token.colorBorderSecondary,
- // // borderRadius: 2,
- // browserColorScheme: "light",
- // cellHorizontalPaddingScale: 0.7,
-
- // fontSize: token.fontSize,
- // foregroundColor: token.colorText,
- // headerBackgroundColor: token.colorFillQuaternary,
- // headerFontSize: token.fontSize,
- // headerFontWeight: 600,
- // headerTextColor: token.colorPrimary,
- // rowBorder: true,
- // rowVerticalPaddingScale: 0.9,
- // sidePanelBorder: true,
- // spacing: 6,
- // oddRowBackgroundColor: token.colorFillQuaternary,
- // wrapperBorder: true,
- // wrapperBorderRadius: 0,
-
- // // headerRowBorder: true,
- // // columnBorder: true,
- // // headerRowBorder: true,
- // pinnedRowBorder: true
- // }),
- // [token]
- // );
- // const subTableTheme = useMemo(
- // () =>
- // themeQuartz.withPart(iconSetQuartzLight).withParams({
- // accentColor: token.colorTextSecondary, // 可以使用不同的强调色
- // backgroundColor: token.colorBgLayout,
- // borderColor: token.colorBorderSecondary,
- // fontSize: token.fontSizeSM, // 可以使用不同的字体大小
- // foregroundColor: token.colorTextSecondary,
- // headerBackgroundColor: token.colorFillSecondary,
- // headerFontSize: token.fontSizeSM,
- // headerFontWeight: 500, // 可以使用不同的字体粗细
- // headerTextColor: token.colorTextTertiary,
- // rowBorder: false, // 可以选择不显示行边框
- // rowVerticalPaddingScale: 0.6,
- // sidePanelBorder: false,
- // spacing: 4,
- // oddRowBackgroundColor: token.colorFillQuaternary,
- // wrapperBorder: false,
- // wrapperBorderRadius: 0,
- // columnBorder: false,
- // }),
- // [token]
- // );
const tailwindTheme: TailwindTheme = useMemo(
() => ({
"--color-primary": token.colorPrimary,
diff --git a/apps/web/src/routes/index.tsx b/apps/web/src/routes/index.tsx
index 02fa67b..67c5c6b 100755
--- a/apps/web/src/routes/index.tsx
+++ b/apps/web/src/routes/index.tsx
@@ -11,7 +11,6 @@ import TermAdminPage from "../app/admin/term/page";
import StaffAdminPage from "../app/admin/staff/page";
import RoleAdminPage from "../app/admin/role/page";
import WithAuth from "../components/utils/with-auth";
-import LoginPage from "../app/login";
import BaseSettingPage from "../app/admin/base-setting/page";
import { MainLayout } from "../components/layout/main/MainLayout";
import HomePage from "../app/main/home/page";
@@ -22,6 +21,9 @@ import CourseSettingForm from "../components/models/course/editor/form/CourseSet
import CourseEditorLayout from "../components/models/course/editor/layout/CourseEditorLayout";
import WriteLetterPage from "../app/main/letter/write/page";
import LetterListPage from "../app/main/letter/list/page";
+import LetterProgressPage from "../app/main/letter/progress/page";
+import HelpPage from "../app/main/help/page";
+import AuthPage from "../app/auth/page";
interface CustomIndexRouteObject extends IndexRouteObject {
name?: string;
@@ -69,10 +71,17 @@ export const routes: CustomRouteObject[] = [
element:
,
},
{
- path: "list",
+ path: "letter-list",
element:
}
-
+ , {
+ path: 'letter-progress',
+ element:
+ },
+ {
+ path: 'help',
+ element:
+ }
],
},
{
@@ -213,9 +222,9 @@ export const routes: CustomRouteObject[] = [
],
},
{
- path: "/login",
+ path: "/auth",
breadcrumb: "登录",
- element:
,
+ element:
,
},
];
diff --git a/packages/client/src/api/hooks/useTerm.ts b/packages/client/src/api/hooks/useTerm.ts
index b32447c..23a3f96 100755
--- a/packages/client/src/api/hooks/useTerm.ts
+++ b/packages/client/src/api/hooks/useTerm.ts
@@ -20,8 +20,6 @@ export function useTerm() {
},
});
-
-
const update = api.term.update.useMutation({
onSuccess: (result) => {
queryClient.invalidateQueries({ queryKey });
@@ -61,11 +59,9 @@ export function useTerm() {
};
return {
create,
-
update,
softDeleteByIds,
getTerm,
- upsertTags,
-
+ upsertTags
};
}
diff --git a/packages/common/src/constants.ts b/packages/common/src/constants.ts
index d6c8e08..a57be2b 100755
--- a/packages/common/src/constants.ts
+++ b/packages/common/src/constants.ts
@@ -60,15 +60,7 @@ export const InitTaxonomies: { name: string; slug: string }[] = [
{
name: "分类",
slug: TaxonomySlug.CATEGORY,
- },
- {
- name: "研判单元",
- slug: TaxonomySlug.UNIT,
- },
- {
- name: "标签",
- slug: TaxonomySlug.TAG,
- },
+ }
];
export const InitAppConfigs: Prisma.AppConfigCreateInput[] = [
{