diff --git a/apps/server/src/models/term/term.router.ts b/apps/server/src/models/term/term.router.ts
index 43afff5..548526c 100755
--- a/apps/server/src/models/term/term.router.ts
+++ b/apps/server/src/models/term/term.router.ts
@@ -69,7 +69,7 @@ export class TermRouter {
const { staff } = ctx;
return await this.termService.getParentSimpleTree(staff, input);
}),
- getTreeData: this.trpc.protectProcedure
+ getTreeData: this.trpc.procedure
.input(TermMethodSchema.getTreeData)
.query(async ({ input }) => {
return await this.termService.getTreeData(input);
diff --git a/apps/web/src/app/main/courses/components/FilterSection.tsx b/apps/web/src/app/main/courses/components/FilterSection.tsx
index 2c754e4..f7a6ced 100755
--- a/apps/web/src/app/main/courses/components/FilterSection.tsx
+++ b/apps/web/src/app/main/courses/components/FilterSection.tsx
@@ -5,86 +5,26 @@ import { TaxonomySlug, TermDto } from "@nice/common";
import { useEffect, useMemo } from "react";
import { api } from "@nice/client";
import { useSearchParams } from "react-router-dom";
-import TermTree from "@web/src/components/models/term/term-tree";
import TermSelect from "@web/src/components/models/term/term-select";
-interface FilterSectionProps {
- selectedCategory: string;
- selectedLevel: string;
- onCategoryChange: (category: string) => void;
- onLevelChange: (level: string) => void;
-}
-
-interface GetTaxonomyProps {
- categories: string[];
- isLoading: boolean;
-}
-
-function useGetTaxonomy({ type }): GetTaxonomyProps {
- const { data, isLoading }: { data: TermDto[]; isLoading: boolean } =
- api.term.findMany.useQuery({
- where: {
- taxonomy: {
- //TaxonomySlug.CATEGORY
- slug: type,
- },
- },
- include: {
- children: true,
- },
- take: 10, // 只取前10个
- orderBy: {
- createdAt: "desc", // 按创建时间降序排列
- },
- });
- const categories = useMemo(() => {
- const allCategories = isLoading
- ? []
- : data?.map((course) => course.name);
- return [...Array.from(new Set(allCategories))];
- }, [data]);
- return { categories, isLoading };
-}
-
-export default function FilterSection({
- selectedCategory,
- selectedLevel,
- onCategoryChange,
- onLevelChange,
-}: FilterSectionProps) {
- const gateGory: GetTaxonomyProps = useGetTaxonomy({
- type: TaxonomySlug.CATEGORY,
- });
- const levels: GetTaxonomyProps = useGetTaxonomy({
- type: TaxonomySlug.LEVEL,
- });
-
- const [searchParams, setSearchParams] = useSearchParams();
- useEffect(() => {
- if (searchParams.get("category"))
- onCategoryChange(searchParams.get("category"));
- }, [searchParams.get("category")]);
-
+export default function FilterSection() {
const { data: taxonomies } = api.taxonomy.getAll.useQuery({});
return (
-
- {taxonomies?.map((tax) => {
+
+ {taxonomies?.map((tax, index) => {
return (
- <>
-
-
- {tax?.name}
-
-
-
- >
+
+
+ {tax?.name}
+
+
+ {index < taxonomies.length - 1 && (
+
+ )}
+
);
})}
-
-
);
}
diff --git a/apps/web/src/app/main/courses/layout/AllCoursesLayout.tsx b/apps/web/src/app/main/courses/layout/AllCoursesLayout.tsx
new file mode 100644
index 0000000..b3089f1
--- /dev/null
+++ b/apps/web/src/app/main/courses/layout/AllCoursesLayout.tsx
@@ -0,0 +1,27 @@
+import { useMainContext } from "../../layout/MainProvider";
+import CourseList from "../components/CourseList";
+import FilterSection from "../components/FilterSection";
+
+export function AllCoursesLayout() {
+ const { searchValue, setSearchValue } = useMainContext();
+ return (
+ <>
+
+ >
+ );
+}
+export default AllCoursesLayout;
diff --git a/apps/web/src/app/main/courses/page.tsx b/apps/web/src/app/main/courses/page.tsx
index 803b372..0b0fb43 100755
--- a/apps/web/src/app/main/courses/page.tsx
+++ b/apps/web/src/app/main/courses/page.tsx
@@ -11,24 +11,16 @@ import {
import { useSearchParams } from "react-router-dom";
import { set } from "idb-keyval";
import { useMainContext } from "../layout/MainProvider";
+import AllCoursesLayout from "./layout/AllCoursesLayout";
interface paginationData {
items: CourseDto[];
totalPages: number;
}
export default function CoursesPage() {
- const { searchValue, setSearchValue } = useMainContext();
-
return (
<>
-
+
>
);
}
diff --git a/apps/web/src/components/models/term/term-select.tsx b/apps/web/src/components/models/term/term-select.tsx
index ce5d9be..07b4741 100755
--- a/apps/web/src/components/models/term/term-select.tsx
+++ b/apps/web/src/components/models/term/term-select.tsx
@@ -10,8 +10,6 @@ interface TermSelectProps {
onChange?: (value: string | string[]) => void;
placeholder?: string;
multiple?: boolean;
- // rootId?: string;
- // domain?: boolean;
taxonomyId?: string;
disabled?: boolean;
className?: string;
@@ -27,9 +25,7 @@ export default function TermSelect({
multiple = false,
taxonomyId,
domainId,
- // rootId = null,
disabled = false,
- // domain = undefined,
}: TermSelectProps) {
const utils = api.useUtils();
const [listTreeData, setListTreeData] = useState<
@@ -125,20 +121,9 @@ export default function TermSelect({
};
const handleExpand = async (keys: React.Key[]) => {
- // console.log(keys);
try {
const allKeyIds =
keys.map((key) => key.toString()).filter(Boolean) || [];
- // const expandedNodes = await Promise.all(
- // keys.map(async (key) => {
- // return await utils.department.getChildSimpleTree.fetch({
- // deptId: key.toString(),
- // domain,
- // });
- // })
- // );
- //
- //上面那样一个个拉会拉爆,必须直接拉deptIds
const expandedNodes = await utils.term.getChildSimpleTree.fetch({
termIds: allKeyIds,
taxonomyId,
@@ -154,7 +139,6 @@ export default function TermSelect({
console.error("Error expanding nodes with keys", keys, ":", error);
}
};
-
const handleDropdownVisibleChange = async (open: boolean) => {
if (open) {
// This will attempt to expand all nodes and fetch their children when the dropdown opens
@@ -162,7 +146,6 @@ export default function TermSelect({
await handleExpand(allKeys);
}
};
-
return (