visuddhinanda před 2 roky
rodič
revize
bd68fabfb5
1 změnil soubory, kde provedl 75 přidání a 0 odebrání
  1. 75 0
      dashboard/src/components/discussion/QaList.tsx

+ 75 - 0
dashboard/src/components/discussion/QaList.tsx

@@ -0,0 +1,75 @@
+import { useEffect, useState } from "react";
+import { TResType } from "./DiscussionListCard";
+import { get } from "../../request";
+import { ICommentListResponse } from "../api/Comment";
+import DiscussionItem, { IComment } from "./DiscussionItem";
+
+interface IWidget {
+  resId?: string;
+  resType?: TResType;
+}
+const QaListWidget = ({ resId, resType }: IWidget) => {
+  const [data, setData] = useState<IComment[]>();
+
+  useEffect(() => {
+    if (!resType || !resType) {
+      return;
+    }
+    let url: string = `/v2/discussion?res_type=${resType}&view=res_id&id=${resId}`;
+    url += "&dir=asc&type=qa&status=close";
+    console.log("url", url);
+    get<ICommentListResponse>(url).then((json) => {
+      if (json.ok) {
+        console.debug("discussion fetch qa", json);
+        const items: IComment[] = json.data.rows.map((item, id) => {
+          return {
+            id: item.id,
+            resId: item.res_id,
+            resType: item.res_type,
+            type: item.type,
+            user: item.editor,
+            title: item.title,
+            parent: item.parent,
+            tplId: item.tpl_id,
+            content: item.content,
+            summary: item.summary,
+            status: item.status,
+            childrenCount: item.children_count,
+            createdAt: item.created_at,
+            updatedAt: item.updated_at,
+          };
+        });
+
+        setData(items);
+      }
+    });
+  }, []);
+  return (
+    <>
+      {data
+        ?.filter((value) => !value.parent)
+        .map((question, index) => {
+          return (
+            <div key={`div_${index}`}>
+              <DiscussionItem key={index} data={question} />
+              <div
+                style={{
+                  marginLeft: 16,
+                  borderLeft: "2px solid gray",
+                  padding: 4,
+                }}
+              >
+                {data
+                  ?.filter((value) => value.parent === question.id)
+                  .map((item, id) => {
+                    return <DiscussionItem key={id} data={item} />;
+                  })}
+              </div>
+            </div>
+          );
+        })}
+    </>
+  );
+};
+
+export default QaListWidget;