|
|
@@ -1,18 +1,19 @@
|
|
|
import React, { useState, useEffect } from 'react';
|
|
|
import { Modal, Form, Input, Button, message } from 'antd';
|
|
|
import type { ModalProps } from 'antd';
|
|
|
+import type { DictResult } from '../apis/dicts';
|
|
|
import type { WordResult } from '../apis/words';
|
|
|
import { useCreateWord, useUpdateWord } from '../apis/words';
|
|
|
|
|
|
interface WordModalProps extends ModalProps {
|
|
|
- dictID: number;
|
|
|
+ dict: DictResult;
|
|
|
initialWord?: WordResult;
|
|
|
refresh: () => void;
|
|
|
onCancel: () => void;
|
|
|
}
|
|
|
|
|
|
const WordModal: React.FC<WordModalProps> = ({
|
|
|
- dictID,
|
|
|
+ dict,
|
|
|
initialWord,
|
|
|
refresh,
|
|
|
...props
|
|
|
@@ -43,16 +44,24 @@ const WordModal: React.FC<WordModalProps> = ({
|
|
|
wrapperCol={{ span: 18 }}
|
|
|
form={form}
|
|
|
preserve={false}
|
|
|
- onFinish={(values: { value: string; meaning: string; extra: string }) =>
|
|
|
+ onFinish={(values: {
|
|
|
+ value: string;
|
|
|
+ meaning: string;
|
|
|
+ extra?: string;
|
|
|
+ }) =>
|
|
|
void (async () => {
|
|
|
try {
|
|
|
setLoading(true);
|
|
|
if (initialWord) {
|
|
|
- await updateWord({ ...initialWord, ...values });
|
|
|
+ await updateWord({
|
|
|
+ id: initialWord.id,
|
|
|
+ ...values,
|
|
|
+ star: initialWord.star,
|
|
|
+ });
|
|
|
void message.success('更新成功');
|
|
|
props.onCancel();
|
|
|
} else {
|
|
|
- await createWord({ ...values, dictID });
|
|
|
+ await createWord({ ...values, dictID: dict.id });
|
|
|
void message.success('创建成功');
|
|
|
form.resetFields();
|
|
|
}
|
|
|
@@ -68,24 +77,26 @@ const WordModal: React.FC<WordModalProps> = ({
|
|
|
}
|
|
|
>
|
|
|
<Form.Item
|
|
|
- label="单词"
|
|
|
name="value"
|
|
|
- rules={[{ required: true, message: '请输入单词' }]}
|
|
|
+ label={dict.valueTitle}
|
|
|
+ rules={[{ required: true, message: `请输入${dict.valueTitle}` }]}
|
|
|
validateTrigger="onBlur"
|
|
|
>
|
|
|
- <Input placeholder="请输入单词(如:good)" />
|
|
|
+ <Input placeholder={`请输入${dict.valueTitle}`} />
|
|
|
</Form.Item>
|
|
|
<Form.Item
|
|
|
- label="词义"
|
|
|
name="meaning"
|
|
|
- rules={[{ required: true, message: '请输入词义' }]}
|
|
|
+ label={dict.meaningTitle}
|
|
|
+ rules={[{ required: true, message: `请输入${dict.meaningTitle}` }]}
|
|
|
validateTrigger="onBlur"
|
|
|
>
|
|
|
- <Input placeholder="请输入词义(如:好的)" />
|
|
|
- </Form.Item>
|
|
|
- <Form.Item label="附加" name="extra">
|
|
|
- <Input placeholder="请输入附加(如:[ɡʊd])" />
|
|
|
+ <Input placeholder={`请输入${dict.meaningTitle}`} />
|
|
|
</Form.Item>
|
|
|
+ {dict.extraTitle && (
|
|
|
+ <Form.Item name="extra" label={dict.extraTitle}>
|
|
|
+ <Input placeholder={`请输入${dict.extraTitle}`} />
|
|
|
+ </Form.Item>
|
|
|
+ )}
|
|
|
<Form.Item label=" " colon={false}>
|
|
|
<Button htmlType="submit" type="primary" loading={loading}>
|
|
|
{initialWord ? '更新' : '创建'}
|