This commit is contained in:
ditiqi 2025-03-06 22:26:59 +08:00
parent d7750be126
commit a1d92de493
3 changed files with 49 additions and 17 deletions

View File

@ -49,7 +49,10 @@ export default function MindEditor({ id }: { id?: string }) {
const canEdit: boolean = useMemo(() => {
const isAuth = isAuthenticated && user?.id === post?.author?.id;
return !id || isAuth || hasSomePermissions(RolePerms.MANAGE_ANY_POST);
return (
isAuthenticated &&
(!id || isAuth || hasSomePermissions(RolePerms.MANAGE_ANY_POST))
);
}, [user]);
const navigate = useNavigate();
@ -60,14 +63,14 @@ export default function MindEditor({ id }: { id?: string }) {
const { handleFileUpload } = useTusUpload();
const [form] = Form.useForm();
const CustomLinkIconPlugin = (mind) => {
mind.bus.addListener('operation', async () => {
const hyperLinkElement = await document.querySelectorAll('.hyper-link');
console.log('hyperLinkElement', hyperLinkElement);
mind.bus.addListener("operation", async () => {
const hyperLinkElement =
await document.querySelectorAll(".hyper-link");
console.log("hyperLinkElement", hyperLinkElement);
hyperLinkElement.forEach((item) => {
const hyperLinkDom = createRoot(item)
hyperLinkDom.render(<LinkOutlined />)
const hyperLinkDom = createRoot(item);
hyperLinkDom.render(<LinkOutlined />);
});
});
};
useEffect(() => {
@ -89,8 +92,22 @@ export default function MindEditor({ id }: { id?: string }) {
title: post.title,
deptIds: deptIds,
};
// post.terms?.forEach((term) => {
// formData[term.taxonomyId] = term.id; // 假设 taxonomyName是您在 Form.Item 中使用的name
// });
// 按 taxonomyId 分组所有 terms
const termsByTaxonomy = {};
post.terms?.forEach((term) => {
formData[term.taxonomyId] = term.id; // 假设 taxonomyName是您在 Form.Item 中使用的name
if (!termsByTaxonomy[term.taxonomyId]) {
termsByTaxonomy[term.taxonomyId] = [];
}
termsByTaxonomy[term.taxonomyId].push(term.id);
});
// 将分组后的 terms 设置到 formData
Object.entries(termsByTaxonomy).forEach(([taxonomyId, termIds]) => {
formData[taxonomyId] = termIds;
});
form.setFieldsValue(formData);
}
@ -136,8 +153,8 @@ export default function MindEditor({ id }: { id?: string }) {
imgBlob,
async (result) => {
const termIds = taxonomies
.map((tax) => values[tax.id])
.filter((id) => id);
.flatMap((tax) => values[tax.id] || []) // 获取每个 taxonomy 对应的选中值并展平
.filter((id) => id); // 过滤掉空值
const deptIds = (values?.deptIds || []) as string[];
const { theme, ...data } = instance.getData();
try {
@ -187,7 +204,7 @@ export default function MindEditor({ id }: { id?: string }) {
}
console.log(result);
},
(error) => { },
(error) => {},
`mind-thumb-${new Date().toString()}`
);
};
@ -207,8 +224,10 @@ export default function MindEditor({ id }: { id?: string }) {
// rules={[{ required: true }]}
noStyle>
<TermSelect
maxTagCount={1}
multiple
disabled={!canEdit}
className=" w-48"
className=" w-56"
placeholder={`请选择${tax.name}`}
taxonomyId={tax.id}
/>
@ -264,4 +283,4 @@ export default function MindEditor({ id }: { id?: string }) {
)}
</div>
);
}
}

View File

@ -74,19 +74,30 @@ export function CourseFormProvider({
thumbnail: course?.meta?.thumbnail,
},
};
// 按 taxonomyId 分组所有 terms
const termsByTaxonomy = {};
course.terms?.forEach((term) => {
formData[term.taxonomyId] = term.id; // 假设 taxonomyName 是您在 Form.Item 中使用的 name
if (!termsByTaxonomy[term.taxonomyId]) {
termsByTaxonomy[term.taxonomyId] = [];
}
termsByTaxonomy[term.taxonomyId].push(term.id);
});
// 将分组后的 terms 设置到 formData
Object.entries(termsByTaxonomy).forEach(([taxonomyId, termIds]) => {
formData[taxonomyId] = termIds;
});
form.setFieldsValue(formData);
}
}, [course, form]);
const onSubmit = async (values: any) => {
const sections = values?.sections || [];
const deptIds = values?.deptIds || [];
const termIds = taxonomies
.map((tax) => values[tax.id]) // 获取每个 taxonomy 对应的选中值
.flatMap((tax) => values[tax.id] || []) // 获取每个 taxonomy 对应的选中值并展平
.filter((id) => id); // 过滤掉空值
const formattedValues = {
@ -153,7 +164,6 @@ export function CourseFormProvider({
}
};
return (
<CourseEditorContext.Provider
value={{
@ -164,6 +174,8 @@ export function CourseFormProvider({
form,
}}>
<Form
// requiredMark="optional"
variant="filled"
form={form}
onFinish={onSubmit}
initialValues={{

View File

@ -65,6 +65,7 @@ export function CourseBasicForm() {
name={tax.id}
key={index}>
<TermSelect
multiple
placeholder={`请选择${tax.name}`}
taxonomyId={tax.id}></TermSelect>
</Form.Item>