add
This commit is contained in:
parent
741ff22489
commit
5a68eabbfd
|
@ -22,7 +22,11 @@ export default function PostCommentCard({
|
||||||
}) {
|
}) {
|
||||||
return (
|
return (
|
||||||
<motion.div
|
<motion.div
|
||||||
className="bg-white rounded-lg shadow-sm border border-slate-200 p-4"
|
className={` rounded-xl shadow-sm border p-4 ${
|
||||||
|
isReceiverComment
|
||||||
|
? "border-primary border-2 bg-primary-50"
|
||||||
|
: "border-slate-200 bg-white"
|
||||||
|
}`}
|
||||||
layout>
|
layout>
|
||||||
<div className="flex items-start space-x-2 gap-2">
|
<div className="flex items-start space-x-2 gap-2">
|
||||||
<div className="flex-shrink-0">
|
<div className="flex-shrink-0">
|
||||||
|
@ -45,11 +49,9 @@ export default function PostCommentCard({
|
||||||
)}
|
)}
|
||||||
</span>
|
</span>
|
||||||
{isReceiverComment && (
|
{isReceiverComment && (
|
||||||
<div className=" ">
|
<span className=" text-sm text-primary font-bold">
|
||||||
<span className=" py-0.5 px-2 text-xs rounded-full bg-blue-100 text-blue-800">
|
官方回复
|
||||||
官方回复
|
</span>
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
{/* 添加有帮助按钮 */}
|
{/* 添加有帮助按钮 */}
|
||||||
|
|
|
@ -30,6 +30,13 @@ export default function Header() {
|
||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
<div className="space-y-1">
|
<div className="space-y-1">
|
||||||
|
<Space className="mr-4">
|
||||||
|
<SendOutlined className="text-white" />
|
||||||
|
<span className="text-white">发件人:</span>
|
||||||
|
<Text className="text-white" strong>
|
||||||
|
{post?.author?.showname || "匿名用户"}
|
||||||
|
</Text>
|
||||||
|
</Space>
|
||||||
{/* 收件人信息行 */}
|
{/* 收件人信息行 */}
|
||||||
<Space className="mr-4">
|
<Space className="mr-4">
|
||||||
<MailOutlined className="text-white" />
|
<MailOutlined className="text-white" />
|
||||||
|
@ -44,13 +51,7 @@ export default function Header() {
|
||||||
</Text>
|
</Text>
|
||||||
))}
|
))}
|
||||||
</Space>
|
</Space>
|
||||||
<Space className="mr-4">
|
|
||||||
<SendOutlined className="text-white" />
|
|
||||||
<span className="text-white">发件人:</span>
|
|
||||||
<Text className="text-white" strong>
|
|
||||||
{post?.author?.showname || "匿名用户"}
|
|
||||||
</Text>
|
|
||||||
</Space>
|
|
||||||
{/* Date Info Badge */}
|
{/* Date Info Badge */}
|
||||||
<Space className="mr-4">
|
<Space className="mr-4">
|
||||||
<CalendarOutlined className="text-white" />
|
<CalendarOutlined className="text-white" />
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
import { Form, Input, Button, Checkbox, Select } from "antd";
|
import { Form, Input, Button, Checkbox, Select, Tabs } from "antd";
|
||||||
import { useLetterEditor } from "../context/LetterEditorContext";
|
import { useLetterEditor } from "../context/LetterEditorContext";
|
||||||
import { SendOutlined } from "@ant-design/icons";
|
import { SendOutlined } from "@ant-design/icons";
|
||||||
import QuillEditor from "@web/src/components/common/editor/quill/QuillEditor";
|
import QuillEditor from "@web/src/components/common/editor/quill/QuillEditor";
|
||||||
import { TusUploader } from "@web/src/components/common/uploader/TusUploader";
|
import { TusUploader } from "@web/src/components/common/uploader/TusUploader";
|
||||||
import StaffSelect from "../../../staff/staff-select";
|
import StaffSelect from "../../../staff/staff-select";
|
||||||
import TermSelect from "../../../term/term-select";
|
import TermSelect from "../../../term/term-select";
|
||||||
|
import TabPane from "antd/es/tabs/TabPane";
|
||||||
|
|
||||||
export function LetterBasicForm() {
|
export function LetterBasicForm() {
|
||||||
const { onSubmit, receiverId, termId, form } = useLetterEditor();
|
const { onSubmit, receiverId, termId, form } = useLetterEditor();
|
||||||
|
@ -66,31 +67,40 @@ export function LetterBasicForm() {
|
||||||
/>
|
/>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
{/* Content Editor */}
|
<Tabs defaultActiveKey="1">
|
||||||
<Form.Item
|
{/* Content Editor */}
|
||||||
name="content"
|
<TabPane tab="正文" key="1">
|
||||||
rules={[{ required: true, message: "请输入内容" }]}
|
<Form.Item
|
||||||
required={false}>
|
name="content"
|
||||||
<div className="rounded-lg border border-gray-200 bg-white shadow-sm">
|
rules={[{ required: true, message: "请输入内容" }]}
|
||||||
<QuillEditor
|
required={false}>
|
||||||
maxLength={10000}
|
<div className="rounded-lg border border-gray-200 bg-white shadow-sm">
|
||||||
placeholder="请输入内容"
|
<QuillEditor
|
||||||
minRows={16}
|
maxLength={10000}
|
||||||
onChange={(content) =>
|
placeholder="请输入内容"
|
||||||
form.setFieldValue("content", content)
|
minRows={16}
|
||||||
}
|
onChange={(content) =>
|
||||||
/>
|
form.setFieldValue("content", content)
|
||||||
</div>
|
}
|
||||||
</Form.Item>
|
/>
|
||||||
<Form.Item name="resources" required={false}>
|
</div>
|
||||||
<div className="rounded-lg border border-gray-200 bg-white shadow-sm">
|
</Form.Item>
|
||||||
<TusUploader
|
</TabPane>
|
||||||
onChange={(resources) =>
|
<TabPane tab="附件" key="2">
|
||||||
form.setFieldValue("resources", resources)
|
<Form.Item name="resources" required={false}>
|
||||||
}
|
<div className="rounded-lg border border-gray-200 bg-white shadow-sm">
|
||||||
/>
|
<TusUploader
|
||||||
</div>
|
onChange={(resources) =>
|
||||||
</Form.Item>
|
form.setFieldValue(
|
||||||
|
"resources",
|
||||||
|
resources
|
||||||
|
)
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Form.Item>
|
||||||
|
</TabPane>
|
||||||
|
</Tabs>
|
||||||
{/* Footer Actions */}
|
{/* Footer Actions */}
|
||||||
<div className="flex flex-col-reverse sm:flex-row items-center justify-between gap-4 mt-6">
|
<div className="flex flex-col-reverse sm:flex-row items-center justify-between gap-4 mt-6">
|
||||||
<Form.Item name="isPublic" valuePropName="checked">
|
<Form.Item name="isPublic" valuePropName="checked">
|
||||||
|
|
Loading…
Reference in New Issue