visuddhinanda 3 лет назад
Родитель
Сommit
d9bd349a10
1 измененных файлов с 56 добавлено и 22 удалено
  1. 56 22
      dashboard/src/components/term/TermCreate.tsx

+ 56 - 22
dashboard/src/components/term/TermCreate.tsx

@@ -8,16 +8,21 @@ import {
 } from "@ant-design/pro-components";
 import { PlusOutlined } from "@ant-design/icons";
 
-import { ITermResponse, ITermCreateResponse } from "../api/Term";
-import { get } from "../../request";
+import {
+  ITermResponse,
+  ITermCreateResponse,
+  ITermDataRequest,
+} from "../api/Term";
+import { get, post, put } from "../../request";
 
 import TermEditInner from "./TermEditInner";
 
 interface IFormData {
+  id?: string;
   word: string;
   tag: string;
   meaning: string;
-  meaning2: string;
+  meaning2: string[];
   note: string;
   channel: string;
   lang: string;
@@ -30,6 +35,7 @@ export interface IWidgetDictCreate {
   word?: string;
   channel?: string;
   type?: "inline" | "modal";
+  onUpdate?: Function;
 }
 const Widget = ({
   studio,
@@ -38,18 +44,11 @@ const Widget = ({
   word,
   channel,
   type = "modal",
+  onUpdate,
 }: IWidgetDictCreate) => {
   const intl = useIntl();
   const [form] = Form.useForm<IFormData>();
   const formRef = useRef<ProFormInstance>();
-  console.log("term render");
-  const waitTime = (time: number = 100) => {
-    return new Promise((resolve) => {
-      setTimeout(() => {
-        resolve(true);
-      }, time);
-    });
-  };
   const editTrigger = (
     <span>
       {intl.formatMessage({
@@ -66,19 +65,50 @@ const Widget = ({
   );
 
   const onFinish = async (values: IFormData) => {
-    await waitTime(2000);
     console.log(values.word);
-    message.success("提交成功");
+    const newValue = {
+      id: values.id,
+      word: values.word,
+      tag: values.tag,
+      meaning: values.meaning,
+      other_meaning: values.meaning2.join(),
+      note: values.note,
+      channal: values.channel,
+      studioName: studio,
+      language: values.lang,
+    };
+    console.log(newValue);
+    let res: ITermResponse;
+    if (typeof values.id === "undefined") {
+      console.log("post", values);
+      res = await post<ITermDataRequest, ITermResponse>(`/v2/terms`, newValue);
+    } else {
+      console.log("put", values);
+
+      res = await put<ITermDataRequest, ITermResponse>(
+        `/v2/terms/${values.id}`,
+        newValue
+      );
+    }
+    console.log(res);
+    if (res.ok) {
+      message.success("提交成功");
+      if (typeof onUpdate !== "undefined") {
+        onUpdate();
+      }
+    } else {
+      message.error(res.message);
+    }
+
     return true;
   };
   const request = async () => {
-    console.log("request");
     let url: string;
     let data: IFormData = {
       word: "",
       tag: "",
       meaning: "",
-      meaning2: "",
+      meaning2: [],
       note: "",
       lang: "",
       channel: "",
@@ -86,14 +116,19 @@ const Widget = ({
     if (typeof isCreate !== "undefined" && isCreate === false) {
       // 如果是编辑,就从服务器拉取数据。
       url = "/v2/terms/" + (isCreate ? "" : wordId);
-      console.log(url);
+      console.log("url", url);
       const res = await get<ITermResponse>(url);
-      console.log(res);
+      console.log("request", res);
+      let meaning2: string[] = [];
+      if (res.data.other_meaning) {
+        meaning2 = res.data.other_meaning.split(",");
+      }
       return {
+        id: res.data.guid,
         word: res.data.word,
         tag: res.data.tag,
         meaning: res.data.meaning,
-        meaning2: res.data.other_meaning,
+        meaning2: meaning2,
         note: res.data.note,
         lang: res.data.language,
         channel: res.data.channal,
@@ -107,10 +142,10 @@ const Widget = ({
         word: res.data.word,
         tag: "",
         meaning: "",
-        meaning2: "",
+        meaning2: [],
         note: "",
         lang: res.data.language,
-        channel: "",
+        channel: channel,
       };
       return data;
     } else if (typeof studio !== "undefined") {
@@ -121,7 +156,7 @@ const Widget = ({
         word: "",
         tag: "",
         meaning: "",
-        meaning2: "",
+        meaning2: [],
         note: "",
         lang: "",
         channel: "",
@@ -165,7 +200,6 @@ const Widget = ({
             trigger={isCreate ? createTrigger : editTrigger}
             modalProps={{
               destroyOnClose: true,
-              onCancel: () => console.log("run"),
             }}
             submitTimeout={2000}
             {...formProps}