Merge branch 'main' of http://113.45.157.195:3003/insiinc/re-mooc
This commit is contained in:
commit
ec049f01bc
|
@ -36,7 +36,7 @@ export class AppConfigRouter {
|
||||||
.mutation(async ({ input }) => {
|
.mutation(async ({ input }) => {
|
||||||
return await this.appConfigService.deleteMany(input);
|
return await this.appConfigService.deleteMany(input);
|
||||||
}),
|
}),
|
||||||
findFirst: this.trpc.protectProcedure
|
findFirst: this.trpc.procedure
|
||||||
.input(AppConfigFindFirstArgsSchema)
|
.input(AppConfigFindFirstArgsSchema)
|
||||||
.query(async ({ input }) => {
|
.query(async ({ input }) => {
|
||||||
return await this.appConfigService.findFirst(input);
|
return await this.appConfigService.findFirst(input);
|
||||||
|
|
|
@ -1,31 +1,37 @@
|
||||||
import { Menu } from 'antd';
|
import { Menu } from "antd";
|
||||||
import { useNavigate, useLocation } from 'react-router-dom';
|
import { useNavigate, useLocation } from "react-router-dom";
|
||||||
|
|
||||||
const menuItems = [
|
const menuItems = [
|
||||||
{ key: 'home', path: '/', label: '首页' },
|
{ key: "home", path: "/", label: "首页" },
|
||||||
{ key: 'courses', path: '/courses', label: '全部课程' },
|
{ key: "courses", path: "/courses", label: "全部课程" },
|
||||||
{ key: 'paths', path: '/paths', label: '学习路径' }
|
{ key: "paths", path: "/paths", label: "学习路径" },
|
||||||
];
|
];
|
||||||
|
|
||||||
export const NavigationMenu = () => {
|
export const NavigationMenu = () => {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const { pathname } = useLocation();
|
const { pathname } = useLocation();
|
||||||
const selectedKey = menuItems.find(item => item.path === pathname)?.key || '';
|
const selectedKey =
|
||||||
return (
|
menuItems.find((item) => item.path === pathname)?.key || "";
|
||||||
<Menu
|
return (
|
||||||
mode="horizontal"
|
<Menu
|
||||||
className="border-none font-medium"
|
mode="horizontal"
|
||||||
selectedKeys={[selectedKey]}
|
className="border-none font-medium"
|
||||||
onClick={({ key }) => {
|
selectedKeys={[selectedKey]}
|
||||||
const selectedItem = menuItems.find(item => item.key === key);
|
onClick={({ key }) => {
|
||||||
if (selectedItem) navigate(selectedItem.path);
|
const selectedItem = menuItems.find((item) => item.key === key);
|
||||||
}}
|
if (selectedItem) navigate(selectedItem.path);
|
||||||
>
|
window.scrollTo({
|
||||||
{menuItems.map(({ key, label }) => (
|
top: 0,
|
||||||
<Menu.Item key={key} className="text-gray-600 hover:text-blue-600">
|
behavior: "smooth",
|
||||||
{label}
|
});
|
||||||
</Menu.Item>
|
}}>
|
||||||
))}
|
{menuItems.map(({ key, label }) => (
|
||||||
</Menu>
|
<Menu.Item
|
||||||
);
|
key={key}
|
||||||
|
className="text-gray-600 hover:text-blue-600">
|
||||||
|
{label}
|
||||||
|
</Menu.Item>
|
||||||
|
))}
|
||||||
|
</Menu>
|
||||||
|
);
|
||||||
};
|
};
|
|
@ -72,7 +72,7 @@ export default function TermSelect({
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[utils]
|
[utils, value]
|
||||||
);
|
);
|
||||||
|
|
||||||
const fetchTerms = useCallback(async () => {
|
const fetchTerms = useCallback(async () => {
|
||||||
|
@ -139,25 +139,35 @@ export default function TermSelect({
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleExpand = async (keys: React.Key[]) => {
|
const handleExpand = useCallback(
|
||||||
try {
|
async (keys: React.Key[]) => {
|
||||||
const allKeyIds =
|
try {
|
||||||
keys.map((key) => key.toString()).filter(Boolean) || [];
|
const allKeyIds =
|
||||||
const expandedNodes = await utils.term.getChildSimpleTree.fetch({
|
keys.map((key) => key.toString()).filter(Boolean) || [];
|
||||||
termIds: allKeyIds,
|
const expandedNodes = await utils.term.getChildSimpleTree.fetch(
|
||||||
taxonomyId,
|
{
|
||||||
domainId,
|
termIds: allKeyIds,
|
||||||
});
|
taxonomyId,
|
||||||
const flattenedNodes = expandedNodes.flat();
|
domainId,
|
||||||
const newItems = getUniqueItems(
|
}
|
||||||
[...listTreeData, ...flattenedNodes],
|
);
|
||||||
"id"
|
const flattenedNodes = expandedNodes.flat();
|
||||||
);
|
const newItems = getUniqueItems(
|
||||||
setListTreeData(newItems);
|
[...listTreeData, ...flattenedNodes],
|
||||||
} catch (error) {
|
"id"
|
||||||
console.error("Error expanding nodes with keys", keys, ":", error);
|
);
|
||||||
}
|
setListTreeData(newItems);
|
||||||
};
|
} catch (error) {
|
||||||
|
console.error(
|
||||||
|
"Error expanding nodes with keys",
|
||||||
|
keys,
|
||||||
|
":",
|
||||||
|
error
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[value]
|
||||||
|
);
|
||||||
const handleDropdownVisibleChange = async (open: boolean) => {
|
const handleDropdownVisibleChange = async (open: boolean) => {
|
||||||
if (open) {
|
if (open) {
|
||||||
// This will attempt to expand all nodes and fetch their children when the dropdown opens
|
// This will attempt to expand all nodes and fetch their children when the dropdown opens
|
||||||
|
|
Loading…
Reference in New Issue