+
+
+
+
diff --git a/apps/web/src/components/models/post/detail/PostHeader.tsx b/apps/web/src/components/models/post/detail/PostHeader.tsx
index 8daf65d..63c6ba0 100644
--- a/apps/web/src/components/models/post/detail/PostHeader.tsx
+++ b/apps/web/src/components/models/post/detail/PostHeader.tsx
@@ -87,9 +87,12 @@ export default function PostHeader() {
收件人:
-
- {post?.receivers?.map((receiver) => receiver?.showname)}
-
+
+ {post?.receivers?.map((receiver, index) => (
+
+ {receiver?.showname}
+
+ ))}
{/* First Row - Basic Info */}
@@ -133,18 +136,19 @@ export default function PostHeader() {
{/* Second Row - Term and Tags */}
-
- {/* Tags Badges */}
- {post?.meta?.tags &&
- post.meta.tags.length > 0 &&
- post.meta.tags.map((tag, index) => (
-
-
-
- ))}
-
+ {post?.meta?.tags?.length > 0 && (
+
+ {/* Tags Badges */}
+ {post.meta.tags.length > 0 &&
+ post.meta.tags.map((tag, index) => (
+
+
+
+ ))}
+
+ )}
{/* Content Section */}
@@ -158,6 +162,7 @@ export default function PostHeader() {
dangerouslySetInnerHTML={{ __html: post?.content || "" }}
/>
+
{/* Stats Section */}
diff --git a/apps/web/src/components/models/post/editor/context/LetterEditorContext.tsx b/apps/web/src/components/models/post/editor/context/LetterEditorContext.tsx
index 4a3f103..04db8a8 100644
--- a/apps/web/src/components/models/post/editor/context/LetterEditorContext.tsx
+++ b/apps/web/src/components/models/post/editor/context/LetterEditorContext.tsx
@@ -9,6 +9,8 @@ export interface LetterFormData {
title: string;
content: string;
resources?: string[];
+ receivers?: string[];
+ terms?: string[];
isPublic?: boolean;
signature?: string;
meta: {
@@ -43,23 +45,30 @@ export function LetterFormProvider({
const onSubmit = async (data: LetterFormData) => {
try {
console.log("data", data);
+ const receivers = data?.receivers;
+ const terms = data?.terms;
+ delete data.receivers;
+ delete data.terms;
const result = await create.mutateAsync({
data: {
+ ...data,
type: PostType.POST,
terms: {
- connect: [termId].filter(Boolean).map((id) => ({
+ connect: (terms || [])?.filter(Boolean).map((id) => ({
id,
})),
},
receivers: {
- connect: [receiverId].filter(Boolean).map((id) => ({
- id,
- })),
+ connect: (receivers || [])
+ ?.filter(Boolean)
+ .map((id) => ({
+ id,
+ })),
},
state: PostState.PENDING,
isPublic: data?.isPublic,
- ...data,
+
resources: data.resources?.length
? {
connect: (
diff --git a/apps/web/src/components/models/post/editor/form/LetterBasicForm.tsx b/apps/web/src/components/models/post/editor/form/LetterBasicForm.tsx
index 0edcefc..ae05eea 100644
--- a/apps/web/src/components/models/post/editor/form/LetterBasicForm.tsx
+++ b/apps/web/src/components/models/post/editor/form/LetterBasicForm.tsx
@@ -1,184 +1,114 @@
import { Form, Input, Button, Checkbox, Select } from "antd";
-import { useState } from "react";
import { useLetterEditor } from "../context/LetterEditorContext";
-import { api } from "@nice/client";
-import {
- UserOutlined,
- FolderOutlined,
- TagOutlined,
- FileTextOutlined,
-} from "@ant-design/icons";
-
+import { SendOutlined } from "@ant-design/icons";
import QuillEditor from "@web/src/components/common/editor/quill/QuillEditor";
import { PostBadge } from "../../detail/badge/PostBadge";
import { TusUploader } from "@web/src/components/common/uploader/TusUploader";
+import StaffSelect from "../../../staff/staff-select";
+import TermSelect from "../../../term/term-select";
export function LetterBasicForm() {
const { onSubmit, receiverId, termId, form } = useLetterEditor();
- const { data: receiver } = api.staff.findFirst.useQuery(
- {
- where: {
- id: receiverId,
- },
- },
- {
- enabled: !!receiverId,
- }
- );
- const { data: term } = api.term.findFirst.useQuery(
- {
- where: { id: termId },
- },
- { enabled: !!termId }
- );
-
const handleFinish = async (values: any) => {
await onSubmit(values);
};
-
return (
-