Przeglądaj źródła

res_id?: string[];

visuddhinanda 2 lat temu
rodzic
commit
729e883639

+ 6 - 1
dashboard/src/components/api/Transfer.ts

@@ -6,7 +6,7 @@ import { TResType } from "../discussion/DiscussionListCard";
 export type ITransferStatus = "transferred" | "accept" | "refuse" | "cancel";
 export interface ITransferRequest {
   res_type?: TResType;
-  res_id?: string;
+  res_id?: string[];
   new_owner?: string;
   status?: ITransferStatus;
 }
@@ -23,6 +23,11 @@ export interface ITransferResponseData {
   created_at: string;
   updated_at: string;
 }
+export interface ITransferCreateResponse {
+  ok: boolean;
+  message: string;
+  data: number;
+}
 export interface ITransferResponse {
   ok: boolean;
   message: string;

+ 22 - 9
dashboard/src/components/article/ArticleList.tsx

@@ -96,7 +96,7 @@ const ArticleListWidget = ({
   const [activeKey, setActiveKey] = useState<React.Key | undefined>("my");
   const [myNumber, setMyNumber] = useState<number>(0);
   const [collaborationNumber, setCollaborationNumber] = useState<number>(0);
-  const [transfer, setTransfer] = useState<string>();
+  const [transfer, setTransfer] = useState<string[]>();
   const [transferName, setTransferName] = useState<string>();
   const [transferOpen, setTransferOpen] = useState(false);
   useEffect(() => {
@@ -334,7 +334,7 @@ const ArticleListWidget = ({
                           showDeleteConfirm(row.id, row.title);
                           break;
                         case "transfer":
-                          setTransfer(row.id);
+                          setTransfer([row.id]);
                           setTransferName(row.title);
                           setTransferOpen(true);
                           break;
@@ -389,13 +389,26 @@ const ArticleListWidget = ({
           onCleanSelected,
         }) => {
           return (
-            <AddToAnthology
-              studioName={studioName}
-              articleIds={selectedRowKeys.map((item) => item.toString())}
-              onFinally={() => {
-                onCleanSelected();
-              }}
-            />
+            <Space>
+              <Button
+                type="link"
+                onClick={() => {
+                  const resId = selectedRowKeys.map((item) => item.toString());
+                  setTransfer(resId);
+                  setTransferName(resId.length + "个文章");
+                  setTransferOpen(true);
+                }}
+              >
+                转让
+              </Button>
+              <AddToAnthology
+                studioName={studioName}
+                articleIds={selectedRowKeys.map((item) => item.toString())}
+                onFinally={() => {
+                  onCleanSelected();
+                }}
+              />
+            </Space>
           );
         }}
         request={async (params = {}, sorter, filter) => {

+ 2 - 2
dashboard/src/components/channel/ChannelTable.tsx

@@ -89,7 +89,7 @@ const ChannelTableWidget = ({
   const [myNumber, setMyNumber] = useState<number>(0);
   const [collaborationNumber, setCollaborationNumber] = useState<number>(0);
   const [collaborator, setCollaborator] = useState<string>();
-  const [transfer, setTransfer] = useState<string>();
+  const [transfer, setTransfer] = useState<string[]>();
   const [transferName, setTransferName] = useState<string>();
   const [transferOpen, setTransferOpen] = useState(false);
 
@@ -378,7 +378,7 @@ const ChannelTableWidget = ({
                           showDeleteConfirm(row.uid, row.title);
                           break;
                         case "transfer":
-                          setTransfer(row.uid);
+                          setTransfer([row.uid]);
                           setTransferName(row.title);
                           setTransferOpen(true);
                           break;

+ 9 - 4
dashboard/src/components/transfer/TransferCreate.tsx

@@ -2,7 +2,11 @@ import { ModalForm, ProForm } from "@ant-design/pro-components";
 import { Alert, Form, message, notification } from "antd";
 import { TResType } from "./TransferList";
 import { post } from "../../request";
-import { ITransferRequest, ITransferResponse } from "../api/Transfer";
+import {
+  ITransferCreateResponse,
+  ITransferRequest,
+  ITransferResponse,
+} from "../api/Transfer";
 import { useIntl } from "react-intl";
 import UserSelect from "../template/UserSelect";
 import { useEffect, useState } from "react";
@@ -10,7 +14,7 @@ import { useEffect, useState } from "react";
 interface IWidget {
   studioName?: string;
   resType: TResType;
-  resId?: string;
+  resId?: string[];
   resName?: string;
   open?: boolean;
   onOpenChange?: Function;
@@ -55,6 +59,7 @@ const TransferCreateWidget = ({
       onFinish={async (values) => {
         console.log(values);
         if (typeof resId === "undefined") {
+          console.error("res id is undefined");
           return;
         }
         const data = {
@@ -62,7 +67,7 @@ const TransferCreateWidget = ({
           res_id: resId,
           new_owner: values.studio,
         };
-        const res = await post<ITransferRequest, ITransferResponse>(
+        const res = await post<ITransferRequest, ITransferCreateResponse>(
           `/v2/transfer`,
           data
         );
@@ -70,7 +75,7 @@ const TransferCreateWidget = ({
           if (typeof onCreate === "undefined") {
             notification.open({
               message: strTransfer,
-              description: `${resType} ${resName} 已经转出。请等待对方确认。可以在转移管理中查看状态或取消。`,
+              description: `${resType} ${resName} 等 ${res.data} 个资源已经转出。请等待对方确认。可以在转移管理中查看状态或取消。`,
               duration: 0,
             });
           } else {