add
This commit is contained in:
parent
c45cfe7644
commit
cd449f43d8
|
@ -24,7 +24,12 @@ export const LectureItem: React.FC<LectureItemProps> = ({
|
||||||
}, [lectureId, lecture]);
|
}, [lectureId, lecture]);
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className="w-full flex items-center gap-4 p-4 hover:bg-gray-200 text-left transition-colors cursor-pointer"
|
className={`w-full flex items-center gap-4 p-4 text-left transition-colors cursor-pointer
|
||||||
|
${
|
||||||
|
isReading
|
||||||
|
? "bg-blue-50 border-l-4 border-blue-500 hover:bg-blue-50"
|
||||||
|
: "hover:bg-gray-200"
|
||||||
|
}`}
|
||||||
onClick={() => onClick(lecture.id)}>
|
onClick={() => onClick(lecture.id)}>
|
||||||
{lecture?.meta?.type === LectureType.VIDEO && (
|
{lecture?.meta?.type === LectureType.VIDEO && (
|
||||||
<div className="text-blue-500 flex items-center">
|
<div className="text-blue-500 flex items-center">
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { createContext, useContext, ReactNode, useEffect } from "react";
|
import { createContext, useContext, ReactNode, useEffect } from "react";
|
||||||
import { Form, FormInstance, message } from "antd";
|
import { Form, FormInstance, message } from "antd";
|
||||||
import {
|
import {
|
||||||
|
courseDetailSelect,
|
||||||
CourseDto,
|
CourseDto,
|
||||||
CourseMeta,
|
CourseMeta,
|
||||||
CourseStatus,
|
CourseStatus,
|
||||||
|
@ -48,9 +49,7 @@ export function CourseFormProvider({
|
||||||
const { data: course }: { data: CourseDto } = api.post.findFirst.useQuery(
|
const { data: course }: { data: CourseDto } = api.post.findFirst.useQuery(
|
||||||
{
|
{
|
||||||
where: { id: editId },
|
where: { id: editId },
|
||||||
include: {
|
select: courseDetailSelect,
|
||||||
terms: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
{ enabled: Boolean(editId) }
|
{ enabled: Boolean(editId) }
|
||||||
);
|
);
|
||||||
|
@ -65,10 +64,12 @@ export function CourseFormProvider({
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (course) {
|
if (course) {
|
||||||
|
const deptIds = (course?.depts || [])?.map((dept) => dept.id);
|
||||||
const formData = {
|
const formData = {
|
||||||
title: course.title,
|
title: course.title,
|
||||||
subTitle: course.subTitle,
|
subTitle: course.subTitle,
|
||||||
content: course.content,
|
content: course.content,
|
||||||
|
deptIds: deptIds,
|
||||||
meta: {
|
meta: {
|
||||||
thumbnail: course?.meta?.thumbnail,
|
thumbnail: course?.meta?.thumbnail,
|
||||||
},
|
},
|
||||||
|
@ -91,7 +92,10 @@ export function CourseFormProvider({
|
||||||
const formattedValues = {
|
const formattedValues = {
|
||||||
...values,
|
...values,
|
||||||
meta: {
|
meta: {
|
||||||
|
...((course?.meta as CourseMeta) || {}),
|
||||||
|
...(values?.meta?.thumbnail !== undefined && {
|
||||||
thumbnail: values?.meta?.thumbnail,
|
thumbnail: values?.meta?.thumbnail,
|
||||||
|
}),
|
||||||
},
|
},
|
||||||
terms: {
|
terms: {
|
||||||
connect: termIds.map((id) => ({ id })), // 转换成 connect 格式
|
connect: termIds.map((id) => ({ id })), // 转换成 connect 格式
|
||||||
|
@ -106,12 +110,9 @@ export function CourseFormProvider({
|
||||||
});
|
});
|
||||||
delete formattedValues.sections;
|
delete formattedValues.sections;
|
||||||
delete formattedValues.deptIds;
|
delete formattedValues.deptIds;
|
||||||
if (course) {
|
|
||||||
formattedValues.meta = {
|
console.log(course.meta);
|
||||||
...(course?.meta as CourseMeta),
|
console.log(formattedValues?.meta);
|
||||||
thumbnail: values?.meta?.thumbnail,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
if (editId) {
|
if (editId) {
|
||||||
const result = await update.mutateAsync({
|
const result = await update.mutateAsync({
|
||||||
|
|
|
@ -69,6 +69,9 @@ export const SortableSection: React.FC<SortableSectionProps> = ({
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
result = await update.mutateAsync({
|
result = await update.mutateAsync({
|
||||||
|
where: {
|
||||||
|
id: field?.id,
|
||||||
|
},
|
||||||
data: {
|
data: {
|
||||||
title: values?.title,
|
title: values?.title,
|
||||||
},
|
},
|
||||||
|
|
|
@ -4,6 +4,7 @@ import { useEffect } from "react";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
import { CourseStatus, CourseStatusLabel } from "@nice/common";
|
import { CourseStatus, CourseStatusLabel } from "@nice/common";
|
||||||
import { useCourseEditor } from "../context/CourseEditorContext";
|
import { useCourseEditor } from "../context/CourseEditorContext";
|
||||||
|
import { useAuth } from "@web/src/providers/auth-provider";
|
||||||
|
|
||||||
const { Title } = Typography;
|
const { Title } = Typography;
|
||||||
|
|
||||||
|
@ -16,6 +17,7 @@ const courseStatusVariant: Record<CourseStatus, string> = {
|
||||||
|
|
||||||
export default function CourseEditorHeader() {
|
export default function CourseEditorHeader() {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
const {} = useAuth();
|
||||||
const { onSubmit, course, form } = useCourseEditor();
|
const { onSubmit, course, form } = useCourseEditor();
|
||||||
|
|
||||||
const handleSave = () => {
|
const handleSave = () => {
|
||||||
|
@ -34,7 +36,13 @@ export default function CourseEditorHeader() {
|
||||||
<div className="flex items-center space-x-3">
|
<div className="flex items-center space-x-3">
|
||||||
<Button
|
<Button
|
||||||
icon={<ArrowLeftOutlined />}
|
icon={<ArrowLeftOutlined />}
|
||||||
onClick={() => navigate(-1)}
|
onClick={() => {
|
||||||
|
if (course?.id) {
|
||||||
|
navigate(`/course/${course?.id}/detail`);
|
||||||
|
} else {
|
||||||
|
navigate("/");
|
||||||
|
}
|
||||||
|
}}
|
||||||
type="text"
|
type="text"
|
||||||
/>
|
/>
|
||||||
<div className="flex items-center space-x-2">
|
<div className="flex items-center space-x-2">
|
||||||
|
|
Loading…
Reference in New Issue