返回 AiToEarn
replyWorks.tsx
1 import { toolsApi } from '@/api/tools';
2 import { icpCreateComment, WorkData } from '@/icp/replyother';
3 import { Button, Form, Input, message, Modal, Tooltip, Space } from 'antd';
4 import { forwardRef, useImperativeHandle, useState } from 'react';
5 import logoAi from '@/assets/logoAi.png';
6 import { SendOutlined } from '@ant-design/icons';
7
8 export interface ReplyWorksRef {
9 init: (accountId: number, inWorkData: WorkData) => Promise<void>;
10 }
11
12 interface FormData {
13 content: string;
14 }
15
16 const Com = forwardRef<ReplyWorksRef>((props: any, ref) => {
17 const [isModalOpen, setIsModalOpen] = useState(false);
18 const [accountId, setAccountId] = useState<number>(0);
19 const [workData, setWorkData] = useState<WorkData | null>(null);
20 const [form] = Form.useForm<FormData>();
21
22 async function init(accountId: number, inWorkData: WorkData) {
23 setAccountId(accountId);
24 console.log('------ init-inWorkData', inWorkData);
25 setWorkData(inWorkData);
26 setIsModalOpen(true);
27 }
28
29 useImperativeHandle(ref, () => ({
30 init: init,
31 }));
32
33 function handleCancel() {
34 setIsModalOpen(false);
35 }
36
37 /**
38 * 创建评论
39 */
40 async function createComment(content: string) {
41 const res = await icpCreateComment(
42 accountId,
43 workData!.dataId,
44 // '67d624a2000000001d02c637',
45 content,
46 workData!.authorId,
47 );
48 console.log('----- res', res);
49 if (
50 res.status_code == 0 ||
51 res.data.code == 0 ||
52 res.data.visionAddComment?.commentId
53 ) {
54 message.success('评论成功');
55 setIsModalOpen(false);
56 form.resetFields();
57 } else {
58 message.error('评论失败');
59 }
60 }
61
62 async function onFinish(values: FormData) {
63 createComment(values.content);
64 }
65
66 async function onFinishFailed(errorInfo: any) {
67 console.log('Failed:', errorInfo);
68 }
69
70 async function getAiContent() {
71 if (!workData?.coverUrl) return;
72 const res = await toolsApi.apiReviewImgAi({
73 imgUrl: workData?.coverUrl,
74 });
75
76 console.log('----- res', res);
77
78 form.setFieldsValue({
79 content: res,
80 });
81 }
82
83 return (
84 <>
85 <Modal
86 title="作品评论"
87 open={isModalOpen}
88 onCancel={handleCancel}
89 footer={null}
90 width={500}
91 className="reply-works-modal"
92 >
93 <div className="p-6">
94 <Form
95 form={form}
96 name="basic"
97 layout="vertical"
98 initialValues={{ remember: true }}
99 onFinish={onFinish}
100 onFinishFailed={onFinishFailed}
101 autoComplete="off"
102 >
103 <Form.Item
104 label="评论内容"
105 name="content"
106 rules={[{ required: true, message: '请输入评论!' }]}
107 >
108 <Input.TextArea rows={4} />
109 </Form.Item>
110
111 <div className="flex justify-end items-center gap-4">
112 <Tooltip title="获取AI建议">
113 <img
114 src={logoAi}
115 alt="logo"
116 width={32}
117 onClick={getAiContent}
118 className="cursor-pointer hover:opacity-80 transition-opacity"
119 />
120 </Tooltip>
121
122 <Tooltip title="发送">
123 <Button
124 type="primary"
125 shape="circle"
126 htmlType="submit"
127 icon={<SendOutlined />}
128 className="flex items-center justify-center"
129 />
130 </Tooltip>
131 </div>
132 </Form>
133 </div>
134 </Modal>
135 </>
136 );
137 });
138 export default Com;
139
139 lines Plain Text