You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
2.6 KiB
TypeScript

import React, { useEffect, useState } from 'react';
import styles from './style/compGrid.module.less';
import CompNode from './compNode';
import { complexData } from './test/tempData';
import { Input, Grid, Pagination } from '@arco-design/web-react';
import { getMyFlowList, getPubFlowList } from '@/api/flow';
const InputSearch = Input.Search;
const Row = Grid.Row;
const Col = Grid.Col;
interface CompGridProps {
componentType: 'minePage' | 'publicList';
}
const CompGrid: React.FC<CompGridProps> = ({ componentType }) => {
const [compData, setCompData] = useState([]);
const [paginationData, setPaginationData] = useState({ totalCount: 0, currPage: 1, pageSize: 11 });
const [searchKeyword, setSearchKeyword] = useState('');
useEffect(() => {
if (componentType) getComponentData(componentType);
}, [componentType]);
const getComponentData = async (key: 'minePage' | 'publicList') => {
const apiList = {
minePage: getMyFlowList,
publicList: getPubFlowList
};
const res: any = await apiList[key]({
currPage: paginationData.currPage,
pageSize: paginationData.pageSize,
name: searchKeyword
});
if (res.code === 200) {
setCompData(res.data.list);
setPaginationData({
totalCount: res.data.totalCount,
currPage: res.data.currPage,
pageSize: res.data.pageSize
});
}
};
useEffect(() => {
getComponentData(componentType);
}, [paginationData.currPage, searchKeyword]);
const handleSearch = (value: string) => {
setSearchKeyword(value);
setPaginationData({
...paginationData,
currPage: 1
});
};
return (
<>
<div className={styles['comp-grid-container']}>
<InputSearch
searchButton="搜索"
placeholder="请输入名字"
style={{ width: 350 }}
onSearch={handleSearch}
allowClear
/>
<Row style={{ marginBottom: 16 }}>
{compData.map((v, i) => {
return (
<Col
xs={12}
sm={12}
md={12}
lg={6}
xl={6}
xxl={6}
key={i}>
<CompNode nodeData={v} />
</Col>
);
})}
</Row>
<div className={styles['comp-grid-footer']}>
<Pagination
total={paginationData.totalCount}
onChange={(number) => {
setPaginationData({
...paginationData,
currPage: number
});
}}
/>
</div>
</div>
</>
);
};
export default CompGrid;