|
@@ -1,4 +1,4 @@
|
|
|
-import React, { useState } from "react";
|
|
|
+import React, { useEffect, useRef, useState } from "react";
|
|
|
import { ProTable, PageContainer } from "@ant-design/pro-components";
|
|
|
import {
|
|
|
Card,
|
|
@@ -12,28 +12,57 @@ import {
|
|
|
Modal,
|
|
|
Tree,
|
|
|
Dropdown,
|
|
|
+ message,
|
|
|
} from "antd";
|
|
|
-import { useRequest } from "umi";
|
|
|
-import { AppstoreOutlined, MenuOutlined } from "@ant-design/icons";
|
|
|
-import { FlowchartMindMapList } from "@/api/systemDesigner";
|
|
|
+import type { MenuProps } from "antd";
|
|
|
+import { Icon, useRequest } from "umi";
|
|
|
+import {
|
|
|
+ AppstoreOutlined,
|
|
|
+ MenuOutlined,
|
|
|
+ MoreOutlined,
|
|
|
+} from "@ant-design/icons";
|
|
|
+import {
|
|
|
+ FlowchartMindMapList,
|
|
|
+ AddFolder,
|
|
|
+ EditFolder,
|
|
|
+ DeleteFolder,
|
|
|
+ Move,
|
|
|
+} from "@/api/systemDesigner";
|
|
|
import ProjectCard from "./ProjectCard";
|
|
|
import { graphOptions } from "./data";
|
|
|
import { GraphType } from "@/enum";
|
|
|
+import DragItem from "./DragItem";
|
|
|
+import DropItem from "./DropItem";
|
|
|
+import { createNew } from "@/utils";
|
|
|
|
|
|
-export default function All() {
|
|
|
+type BreadcrumbItem = {
|
|
|
+ title: React.ReactNode;
|
|
|
+ index: number;
|
|
|
+ id: string;
|
|
|
+ onClick: () => void;
|
|
|
+};
|
|
|
+export default function All({
|
|
|
+ onChangeCurrentFolder,
|
|
|
+}: {
|
|
|
+ onChangeCurrentFolder: (id: string) => void;
|
|
|
+}) {
|
|
|
const [display, setDisplay] = useState("card");
|
|
|
+ const [folderData, setFolderData] = useState<any[]>([]);
|
|
|
const [dataSource, setDataSource] = useState<any[]>([]);
|
|
|
const [total, setTotal] = useState(0);
|
|
|
const [searchName, setSearchName] = useState("");
|
|
|
const [currentPage, setCurrentPage] = useState(1);
|
|
|
+ const [pageSize, setPageSize] = useState(12);
|
|
|
const [open, setOpen] = useState(false);
|
|
|
- const [currentFolder, setCurrentFolder] = useState("root");
|
|
|
+ const currentFolder = useRef("root");
|
|
|
+ const { confirm } = Modal;
|
|
|
+ const moveSource = useRef<{ id: string; type: "folder" | "chart" }>();
|
|
|
|
|
|
const { loading, run, refresh } = useRequest(FlowchartMindMapList, {
|
|
|
defaultParams: [
|
|
|
{
|
|
|
currentPage,
|
|
|
- pageSize: 12,
|
|
|
+ pageSize,
|
|
|
filters: [
|
|
|
{
|
|
|
name: "name",
|
|
@@ -41,17 +70,73 @@ export default function All() {
|
|
|
},
|
|
|
{
|
|
|
name: "folderId",
|
|
|
- value: currentFolder
|
|
|
- }
|
|
|
+ value: currentFolder.current,
|
|
|
+ },
|
|
|
],
|
|
|
},
|
|
|
],
|
|
|
onSuccess: (res) => {
|
|
|
- setDataSource(res?.result?.model || []);
|
|
|
- setTotal(res?.result?.totalCount || 0);
|
|
|
+ const result = res?.result || {};
|
|
|
+ setDataSource(result?.pageList?.model || []);
|
|
|
+ setFolderData(result?.folders || []);
|
|
|
+ setTotal(result?.pageList?.totalCount || 0);
|
|
|
},
|
|
|
});
|
|
|
|
|
|
+ useEffect(() => {
|
|
|
+ onChangeCurrentFolder(currentFolder.current);
|
|
|
+ }, [currentFolder.current]);
|
|
|
+
|
|
|
+ // 面包屑点击
|
|
|
+ const handleBreadcrumbClick = (index: number) => {
|
|
|
+ const folderItem = breadcrumbDataRef.current[index];
|
|
|
+ if (currentFolder.current === folderItem.id) return;
|
|
|
+ currentFolder.current = folderItem.id;
|
|
|
+
|
|
|
+ const newData = breadcrumbDataRef.current.slice(0, index + 1);
|
|
|
+ setBreadcrumbData(newData);
|
|
|
+ breadcrumbDataRef.current = newData;
|
|
|
+
|
|
|
+ updateCurrentFolderAndGetData(folderItem.id);
|
|
|
+ };
|
|
|
+ const defultData = [
|
|
|
+ {
|
|
|
+ title: (
|
|
|
+ <span className="ant-breadcrumb-link">
|
|
|
+ <a>我的文件</a>
|
|
|
+ </span>
|
|
|
+ ),
|
|
|
+ index: 0,
|
|
|
+ id: "root",
|
|
|
+ onClick: () => {
|
|
|
+ handleBreadcrumbClick(0);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ];
|
|
|
+
|
|
|
+ const [breadcrumbData, setBreadcrumbData] =
|
|
|
+ useState<BreadcrumbItem[]>(defultData);
|
|
|
+ const breadcrumbDataRef = useRef<BreadcrumbItem[]>(breadcrumbData);
|
|
|
+
|
|
|
+ const getData = (page: number, pageSize: number) => {
|
|
|
+ setCurrentPage(page);
|
|
|
+ setPageSize(pageSize);
|
|
|
+ run({
|
|
|
+ currentPage: page,
|
|
|
+ pageSize: pageSize,
|
|
|
+ filters: [
|
|
|
+ {
|
|
|
+ name: "searchText",
|
|
|
+ value: searchName,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "folderId",
|
|
|
+ value: currentFolder.current,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
const FolderIcon = function () {
|
|
|
return (
|
|
|
<svg className="icon" aria-hidden="true">
|
|
@@ -79,51 +164,143 @@ export default function All() {
|
|
|
},
|
|
|
];
|
|
|
|
|
|
+ const contextMenu: MenuProps["items"] = [
|
|
|
+ {
|
|
|
+ key: "1",
|
|
|
+ label: <span className="ml-4px">文件夹</span>,
|
|
|
+ icon: <FolderIcon />,
|
|
|
+ onClick: () => {
|
|
|
+ let name = "";
|
|
|
+ confirm({
|
|
|
+ title: "添加文件夹",
|
|
|
+ centered: true,
|
|
|
+ icon: <></>,
|
|
|
+ content: (
|
|
|
+ <Input
|
|
|
+ defaultValue={name}
|
|
|
+ onChange={(e) => {
|
|
|
+ name = e.target.value;
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ ),
|
|
|
+ onOk: async () => {
|
|
|
+ await AddFolder({
|
|
|
+ parentId: currentFolder.current,
|
|
|
+ name,
|
|
|
+ });
|
|
|
+ message.success("添加成功");
|
|
|
+ refresh();
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
+ { type: "divider" },
|
|
|
+ {
|
|
|
+ key: "2",
|
|
|
+ label: <span className="ml-4px">流程图</span>,
|
|
|
+ icon: <Icon icon="local:flow" width="22px" />,
|
|
|
+ onClick: () => {
|
|
|
+ createNew(GraphType.flowchart, currentFolder.current);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: "3",
|
|
|
+ label: <span className="ml-4px">思维导图</span>,
|
|
|
+ icon: <Icon icon="local:mind" width="22px" />,
|
|
|
+ onClick: () => {
|
|
|
+ createNew(GraphType.mindmap, currentFolder.current);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ ];
|
|
|
+
|
|
|
+ // 更新当前文件夹并获取数据
|
|
|
+ const updateCurrentFolderAndGetData = (folderId: string) => {
|
|
|
+ currentFolder.current = folderId;
|
|
|
+ getData(1, pageSize);
|
|
|
+ };
|
|
|
+
|
|
|
// 打开文件夹
|
|
|
- const handleOpenFolder = () => {};
|
|
|
+ const handleOpenFolder = (folderItem: { id: string; name: string }) => {
|
|
|
+ const newData = [
|
|
|
+ ...breadcrumbData,
|
|
|
+ {
|
|
|
+ title: (
|
|
|
+ <span className="ant-breadcrumb-link">
|
|
|
+ <a>{folderItem.name}</a>
|
|
|
+ </span>
|
|
|
+ ),
|
|
|
+ index: breadcrumbData.length,
|
|
|
+ id: folderItem.id,
|
|
|
+ onClick: () => {
|
|
|
+ handleBreadcrumbClick(breadcrumbData.length);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ setBreadcrumbData(newData);
|
|
|
+ breadcrumbDataRef.current = newData;
|
|
|
+ updateCurrentFolderAndGetData(folderItem.id);
|
|
|
+ };
|
|
|
|
|
|
// 搜索文件
|
|
|
const handleSearch = () => {
|
|
|
setCurrentPage(1);
|
|
|
- run({
|
|
|
- currentPage: 1,
|
|
|
- pageSize: 12,
|
|
|
- filters: [
|
|
|
- {
|
|
|
- name: "name",
|
|
|
- value: searchName,
|
|
|
- },
|
|
|
- ],
|
|
|
- });
|
|
|
+ getData(1, pageSize);
|
|
|
};
|
|
|
|
|
|
// 搜索图形类型
|
|
|
- const setSearchGraphType = (type: GraphType) => {
|
|
|
-
|
|
|
- }
|
|
|
+ const setSearchGraphType = (type: GraphType) => {};
|
|
|
|
|
|
- const handleOpenFolderModal = (id: string) => {
|
|
|
+ const handleOpenFolderModal = (id: string, type: "folder" | "chart") => {
|
|
|
+ moveSource.current = {
|
|
|
+ id,
|
|
|
+ type,
|
|
|
+ };
|
|
|
setOpen(true);
|
|
|
};
|
|
|
|
|
|
+ const setMoveSource = (id: string, type: "folder" | "chart") => {
|
|
|
+ moveSource.current = {
|
|
|
+ id,
|
|
|
+ type,
|
|
|
+ };
|
|
|
+ };
|
|
|
+
|
|
|
+ const handleMove = (targetFolderId: string) => {
|
|
|
+ if (!moveSource.current || targetFolderId === moveSource.current?.id) return;
|
|
|
+ Move({
|
|
|
+ fileType: moveSource.current.type,
|
|
|
+ fileId: moveSource.current.id,
|
|
|
+ targetFolderId,
|
|
|
+ }).then(() => {
|
|
|
+ message.success("移动成功");
|
|
|
+ refresh();
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ const clearMoveSource = () => {
|
|
|
+ moveSource.current = undefined;
|
|
|
+ };
|
|
|
+
|
|
|
return (
|
|
|
<>
|
|
|
<PageContainer
|
|
|
extra={[
|
|
|
- <Dropdown key="1" menu={{ items: graphOptions.map(item => {
|
|
|
- return {
|
|
|
- key: item.key,
|
|
|
- label: item.label,
|
|
|
- value: item.value,
|
|
|
- onClick: () => {
|
|
|
- setSearchGraphType(item.value);
|
|
|
- }
|
|
|
- }
|
|
|
- }) }}>
|
|
|
- <Button
|
|
|
- key="1"
|
|
|
- icon={<i className="iconfont icon-shaixuan" />}
|
|
|
- />
|
|
|
+ <Dropdown
|
|
|
+ key="1"
|
|
|
+ menu={{
|
|
|
+ items: graphOptions.map((item) => {
|
|
|
+ return {
|
|
|
+ key: item.key,
|
|
|
+ label: item.label,
|
|
|
+ value: item.value,
|
|
|
+ onClick: () => {
|
|
|
+ setSearchGraphType(item.value);
|
|
|
+ },
|
|
|
+ };
|
|
|
+ }),
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <Button key="1" icon={<i className="iconfont icon-shaixuan" />} />
|
|
|
</Dropdown>,
|
|
|
<Button
|
|
|
key="2"
|
|
@@ -135,7 +312,7 @@ export default function All() {
|
|
|
]}
|
|
|
title={
|
|
|
<Input
|
|
|
- placeholder="搜索文件/文件夹"
|
|
|
+ placeholder="搜索文件"
|
|
|
prefix={<i className="iconfont icon-chazhao" />}
|
|
|
value={searchName}
|
|
|
onChange={(e) => {
|
|
@@ -146,132 +323,217 @@ export default function All() {
|
|
|
}
|
|
|
footer={[]}
|
|
|
>
|
|
|
- <Breadcrumb
|
|
|
- items={[
|
|
|
- {
|
|
|
- title: "我的文件",
|
|
|
- },
|
|
|
- {
|
|
|
- title: "文件夹",
|
|
|
- },
|
|
|
- ]}
|
|
|
- ></Breadcrumb>
|
|
|
- {display === "card" ? (
|
|
|
- <>
|
|
|
- <div className="text-12px color-#999 my-8px">文件夹</div>
|
|
|
- <div className="flex gap-12px flex-wrap">
|
|
|
- {new Array(2).fill(0).map((item, index) => {
|
|
|
- return (
|
|
|
- <Card
|
|
|
- hoverable
|
|
|
- bordered
|
|
|
- className="w-240px"
|
|
|
- onClick={() => handleOpenFolder()}
|
|
|
- key={index}
|
|
|
- >
|
|
|
- <Card.Meta
|
|
|
- title={
|
|
|
- <span>
|
|
|
- <svg className="icon" aria-hidden="true">
|
|
|
- <use xlinkHref="#icon-weibiaoti-_huabanfuben"></use>
|
|
|
- </svg>
|
|
|
- <span className="ml-8px">文件夹</span>
|
|
|
- </span>
|
|
|
- }
|
|
|
- />
|
|
|
- </Card>
|
|
|
- );
|
|
|
- })}
|
|
|
- </div>
|
|
|
- <div className="text-12px color-#999 my-8px">文件</div>
|
|
|
- <Row gutter={[8, 16]}>
|
|
|
- {dataSource.map((item, index) => {
|
|
|
- return (
|
|
|
- <Col xs={12} sm={8} md={6} lg={6} xl={6} xxl={6} key={index}>
|
|
|
- <ProjectCard
|
|
|
- record={item}
|
|
|
- onFresh={refresh}
|
|
|
- onDelete={refresh}
|
|
|
- onChangeLocation={handleOpenFolderModal}
|
|
|
- />
|
|
|
- </Col>
|
|
|
- );
|
|
|
- })}
|
|
|
- </Row>
|
|
|
- <div className="flex justify-end py-16px">
|
|
|
- <Pagination
|
|
|
- total={total}
|
|
|
- current={currentPage}
|
|
|
- pageSize={12}
|
|
|
- pageSizeOptions={["12", "24", "36"]}
|
|
|
- onChange={(page, pageSize) => {
|
|
|
- setCurrentPage(page);
|
|
|
- run({
|
|
|
- currentPage: page,
|
|
|
- pageSize: pageSize,
|
|
|
- filters: [
|
|
|
- {
|
|
|
- name: "name",
|
|
|
- value: searchName,
|
|
|
- },
|
|
|
- {
|
|
|
- name: "folderId",
|
|
|
- value: currentFolder
|
|
|
- }
|
|
|
- ],
|
|
|
- });
|
|
|
+ <Breadcrumb items={breadcrumbData} />
|
|
|
+ <Dropdown
|
|
|
+ menu={{
|
|
|
+ items: contextMenu,
|
|
|
+ }}
|
|
|
+ trigger={["contextMenu"]}
|
|
|
+ >
|
|
|
+ <div>
|
|
|
+ {display === "card" ? (
|
|
|
+ <>
|
|
|
+ {folderData.length ? (
|
|
|
+ <>
|
|
|
+ <div className="text-12px color-#999 my-8px">文件夹</div>
|
|
|
+ <div className="flex gap-12px flex-wrap">
|
|
|
+ {folderData.map((item, index) => {
|
|
|
+ return (
|
|
|
+ <DragItem
|
|
|
+ key={index}
|
|
|
+ title={item.name}
|
|
|
+ onDragStart={() => {
|
|
|
+ setMoveSource(item.id, "folder");
|
|
|
+ }}
|
|
|
+ onDragEnd={() => {
|
|
|
+ clearMoveSource();
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <DropItem
|
|
|
+ onDrop={() => {
|
|
|
+ handleMove(item.id);
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <Card
|
|
|
+ hoverable
|
|
|
+ bordered
|
|
|
+ className="w-240px"
|
|
|
+ onClick={() => handleOpenFolder(item)}
|
|
|
+ key={index}
|
|
|
+ >
|
|
|
+ <Card.Meta
|
|
|
+ title={
|
|
|
+ <span className="flex justify-between items-center group/item">
|
|
|
+ <span>
|
|
|
+ <svg
|
|
|
+ className="icon"
|
|
|
+ aria-hidden="true"
|
|
|
+ >
|
|
|
+ <use xlinkHref="#icon-weibiaoti-_huabanfuben"></use>
|
|
|
+ </svg>
|
|
|
+ <span className="ml-8px">
|
|
|
+ {item.name}
|
|
|
+ </span>
|
|
|
+ </span>
|
|
|
+ <Dropdown
|
|
|
+ menu={{
|
|
|
+ items: [
|
|
|
+ {
|
|
|
+ key: "1",
|
|
|
+ label: "重命名",
|
|
|
+ onClick: () => {
|
|
|
+ let name = item.name;
|
|
|
+ confirm({
|
|
|
+ title: "重命名",
|
|
|
+ centered: true,
|
|
|
+ icon: <></>,
|
|
|
+ content: (
|
|
|
+ <Input
|
|
|
+ defaultValue={name}
|
|
|
+ onChange={(e) => {
|
|
|
+ name = e.target.value;
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ ),
|
|
|
+ onOk: async () => {
|
|
|
+ await EditFolder({
|
|
|
+ id: item.id,
|
|
|
+ name,
|
|
|
+ });
|
|
|
+ refresh();
|
|
|
+ message.success(
|
|
|
+ "重命名成功"
|
|
|
+ );
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: "2",
|
|
|
+ label: "移动或复制",
|
|
|
+ onClick: () => {
|
|
|
+ handleOpenFolderModal(item.id, 'folder');
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: "3",
|
|
|
+ label: "删除",
|
|
|
+ onClick: () => {
|
|
|
+ confirm({
|
|
|
+ title: "删除",
|
|
|
+ content: "确定删除该文件夹?",
|
|
|
+ centered: true,
|
|
|
+ onOk: async () => {
|
|
|
+ await DeleteFolder({
|
|
|
+ id: item.id,
|
|
|
+ });
|
|
|
+ message.success("删除成功");
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ onClick: (e) => {
|
|
|
+ e.domEvent.stopPropagation();
|
|
|
+ },
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <MoreOutlined className="hidden group-hover/item:inline-block" onClick={(e) => e.stopPropagation()} />
|
|
|
+ </Dropdown>
|
|
|
+ </span>
|
|
|
+ }
|
|
|
+ />
|
|
|
+ </Card>
|
|
|
+ </DropItem>
|
|
|
+ </DragItem>
|
|
|
+ );
|
|
|
+ })}
|
|
|
+ </div>
|
|
|
+ </>
|
|
|
+ ) : null}
|
|
|
+ <div className="text-12px color-#999 my-8px">文件</div>
|
|
|
+ <Row gutter={[8, 16]}>
|
|
|
+ {dataSource.map((item, index) => {
|
|
|
+ return (
|
|
|
+ <Col
|
|
|
+ xs={12}
|
|
|
+ sm={8}
|
|
|
+ md={6}
|
|
|
+ lg={6}
|
|
|
+ xl={6}
|
|
|
+ xxl={6}
|
|
|
+ key={index}
|
|
|
+ >
|
|
|
+ <DragItem
|
|
|
+ title={item.name}
|
|
|
+ onDragStart={() => {
|
|
|
+ setMoveSource(item.id, "chart");
|
|
|
+ }}
|
|
|
+ onDragEnd={() => {
|
|
|
+ clearMoveSource();
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <ProjectCard
|
|
|
+ record={item}
|
|
|
+ onFresh={refresh}
|
|
|
+ onDelete={refresh}
|
|
|
+ onChangeLocation={() => handleOpenFolderModal(item.id, 'chart')}
|
|
|
+ />
|
|
|
+ </DragItem>
|
|
|
+ </Col>
|
|
|
+ );
|
|
|
+ })}
|
|
|
+ </Row>
|
|
|
+ <div className="flex justify-end py-16px">
|
|
|
+ <Pagination
|
|
|
+ total={total}
|
|
|
+ current={currentPage}
|
|
|
+ pageSize={12}
|
|
|
+ pageSizeOptions={["12", "24", "36"]}
|
|
|
+ onChange={(page, pageSize) => {
|
|
|
+ getData(page, pageSize);
|
|
|
+ }}
|
|
|
+ hideOnSinglePage
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ {dataSource.length == 0 ? (
|
|
|
+ <Empty description="暂无数据" />
|
|
|
+ ) : null}
|
|
|
+ </>
|
|
|
+ ) : (
|
|
|
+ <ProTable
|
|
|
+ loading={loading}
|
|
|
+ columns={[
|
|
|
+ {
|
|
|
+ title: "名称",
|
|
|
+ dataIndex: "name",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "类型",
|
|
|
+ dataIndex: "type",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "修改时间",
|
|
|
+ dataIndex: "updatedTime",
|
|
|
+ sorter: (a, b) => a.updateTime - b.updateTime,
|
|
|
+ },
|
|
|
+ ]}
|
|
|
+ dataSource={dataSource}
|
|
|
+ rowKey={"id"}
|
|
|
+ search={false}
|
|
|
+ pagination={{
|
|
|
+ total: total,
|
|
|
+ pageSize: 12,
|
|
|
+ current: currentPage,
|
|
|
+ pageSizeOptions: ["12", "24", "36"],
|
|
|
+ onChange: (page, pageSize) => {
|
|
|
+ getData(page, pageSize);
|
|
|
+ },
|
|
|
}}
|
|
|
- hideOnSinglePage
|
|
|
/>
|
|
|
- </div>
|
|
|
- {dataSource.length == 0 ? <Empty description="暂无数据" /> : null}
|
|
|
- </>
|
|
|
- ) : (
|
|
|
- <ProTable
|
|
|
- loading={loading}
|
|
|
- columns={[
|
|
|
- {
|
|
|
- title: "名称",
|
|
|
- dataIndex: "name",
|
|
|
- },
|
|
|
- {
|
|
|
- title: "类型",
|
|
|
- dataIndex: "type",
|
|
|
- },
|
|
|
- {
|
|
|
- title: "修改时间",
|
|
|
- dataIndex: "updatedTime",
|
|
|
- sorter: (a, b) => a.updateTime - b.updateTime,
|
|
|
- },
|
|
|
- ]}
|
|
|
- dataSource={dataSource}
|
|
|
- rowKey={"id"}
|
|
|
- search={false}
|
|
|
- pagination={{
|
|
|
- total: total,
|
|
|
- pageSize: 12,
|
|
|
- current: currentPage,
|
|
|
- pageSizeOptions: ["12", "24", "36"],
|
|
|
- onChange: (page, pageSize) => {
|
|
|
- setCurrentPage(page);
|
|
|
- run({
|
|
|
- currentPage: page,
|
|
|
- pageSize: pageSize,
|
|
|
- filters: [
|
|
|
- {
|
|
|
- name: "name",
|
|
|
- value: searchName,
|
|
|
- },
|
|
|
- {
|
|
|
- name: "folderId",
|
|
|
- value: ""
|
|
|
- }
|
|
|
- ],
|
|
|
- });
|
|
|
- },
|
|
|
- }}
|
|
|
- />
|
|
|
- )}
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ </Dropdown>
|
|
|
</PageContainer>
|
|
|
|
|
|
<Modal
|