parent
a761ea3d0d
commit
72c4fa2c77
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,76 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
Typography,
|
||||
Card,
|
||||
Table,
|
||||
Form,
|
||||
Grid,
|
||||
Input,
|
||||
Select,
|
||||
Button,
|
||||
Space,
|
||||
DatePicker,
|
||||
} from '@arco-design/web-react';
|
||||
import type { TableProps } from '@arco-design/web-react';
|
||||
import styles from './style/index.module.less';
|
||||
|
||||
export interface SearchTableProps extends TableProps {
|
||||
searchFields: any[];
|
||||
}
|
||||
|
||||
const { Item: FormItem, useForm } = Form;
|
||||
const { Row, Col } = Grid;
|
||||
const { RangePicker } = DatePicker;
|
||||
|
||||
function SearchTable(props?: SearchTableProps) {
|
||||
const { columns, data, searchFields } = props || {};
|
||||
const [form] = useForm();
|
||||
|
||||
const handleSearch = () => {
|
||||
//
|
||||
};
|
||||
|
||||
const handleReset = () => {
|
||||
form.resetFields();
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
{searchFields && searchFields.length > 0 && (
|
||||
<Form form={form} className={styles.mb24}>
|
||||
<Row gutter={12}>
|
||||
{searchFields.map((item) => {
|
||||
return (
|
||||
<Col flex={item.width || '200px'} key={item.field}>
|
||||
<FormItem field={item.field} noStyle>
|
||||
{item.ele}
|
||||
</FormItem>
|
||||
</Col>
|
||||
);
|
||||
})}
|
||||
<Col flex={1} className={styles.alignRight}>
|
||||
<Space size={12}>
|
||||
<Button type="primary" onClick={handleSearch}>
|
||||
查询
|
||||
</Button>
|
||||
<Button onClick={handleReset}>重置</Button>
|
||||
</Space>
|
||||
</Col>
|
||||
</Row>
|
||||
</Form>
|
||||
)}
|
||||
<Table
|
||||
columns={columns}
|
||||
data={data}
|
||||
rowSelection={{
|
||||
type: 'checkbox',
|
||||
checkAll: true,
|
||||
}}
|
||||
border={false}
|
||||
pagePosition="bl"
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default SearchTable;
|
@ -0,0 +1,11 @@
|
||||
.mb24 {
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.w200 {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.alignRight {
|
||||
text-align: right;
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
import React from 'react';
|
||||
import { Typography, Card } from '@arco-design/web-react';
|
||||
|
||||
function AlbumWorks() {
|
||||
return (
|
||||
<Card>
|
||||
<Typography.Title heading={6}>这是专辑作品</Typography.Title>
|
||||
<Typography.Text>You can add content here :)</Typography.Text>
|
||||
</Card>
|
||||
);
|
||||
}
|
||||
|
||||
export default AlbumWorks;
|
@ -0,0 +1,146 @@
|
||||
import React, { useState } from 'react';
|
||||
import {
|
||||
Input,
|
||||
Select,
|
||||
Button,
|
||||
Avatar,
|
||||
Space,
|
||||
DatePicker,
|
||||
} from '@arco-design/web-react';
|
||||
import { useAsyncEffect } from 'ahooks';
|
||||
import { IconDelete } from '@arco-design/web-react/icon';
|
||||
import SearchTable from '@/components/SearchTable';
|
||||
|
||||
const { RangePicker } = DatePicker;
|
||||
|
||||
const columns = [
|
||||
{
|
||||
title: '名称',
|
||||
dataIndex: 'name',
|
||||
render: (name) => {
|
||||
return (
|
||||
<Space size={8}>
|
||||
<Avatar size={24} />
|
||||
<span>{name}</span>
|
||||
</Space>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '类型',
|
||||
dataIndex: 'type',
|
||||
},
|
||||
{
|
||||
title: '粉丝数',
|
||||
dataIndex: 'fans',
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: '专辑数',
|
||||
dataIndex: 'album',
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: '歌曲数',
|
||||
dataIndex: 'song',
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: '加入时间',
|
||||
dataIndex: 'time',
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'operation',
|
||||
render: (_, record) => (
|
||||
<>
|
||||
<Button type="text">编辑</Button>
|
||||
<Button type="text">权限</Button>
|
||||
<Button type="text" status="danger" icon={<IconDelete />}>
|
||||
删除
|
||||
</Button>
|
||||
</>
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
const defaultData = [
|
||||
{
|
||||
key: '1',
|
||||
name: 'Jane Doe',
|
||||
type: '个人',
|
||||
fans: '1.2万',
|
||||
album: '2张',
|
||||
song: '30首',
|
||||
time: '2024.05.26',
|
||||
},
|
||||
{
|
||||
key: '2',
|
||||
name: 'Jane Doe',
|
||||
type: '个人',
|
||||
fans: '1.2万',
|
||||
album: '2张',
|
||||
song: '30首',
|
||||
time: '2024.05.26',
|
||||
},
|
||||
{
|
||||
key: '3',
|
||||
name: 'Jane Doe',
|
||||
type: '个人',
|
||||
fans: '1.2万',
|
||||
album: '2张',
|
||||
song: '30首',
|
||||
time: '2024.05.26',
|
||||
},
|
||||
{
|
||||
key: '4',
|
||||
name: 'Jane Doe',
|
||||
type: '个人',
|
||||
fans: '1.2万',
|
||||
album: '2张',
|
||||
song: '30首',
|
||||
time: '2024.05.26',
|
||||
},
|
||||
{
|
||||
key: '5',
|
||||
name: 'Jane Doe',
|
||||
type: '个人',
|
||||
fans: '1.2万',
|
||||
album: '2张',
|
||||
song: '30首',
|
||||
time: '2024.05.26',
|
||||
},
|
||||
];
|
||||
|
||||
const options = [
|
||||
{ label: '个人', value: 0 },
|
||||
{ label: '团体', value: 1 },
|
||||
];
|
||||
const searchFields = [
|
||||
{
|
||||
field: 'q',
|
||||
ele: <Input placeholder="输入搜索内容" allowClear />,
|
||||
},
|
||||
{
|
||||
field: 'q2',
|
||||
ele: <Select placeholder="请选择" options={options} allowClear />,
|
||||
},
|
||||
{
|
||||
field: 'q3',
|
||||
ele: <RangePicker mode="month" allowClear />,
|
||||
},
|
||||
];
|
||||
|
||||
function Artists() {
|
||||
const [data, setData] = useState<any>();
|
||||
|
||||
useAsyncEffect(async () => {
|
||||
setData(defaultData);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<SearchTable searchFields={searchFields} columns={columns} data={data} />
|
||||
);
|
||||
}
|
||||
|
||||
export default Artists;
|
@ -0,0 +1,13 @@
|
||||
import React from 'react';
|
||||
import { Typography, Card } from '@arco-design/web-react';
|
||||
|
||||
function Index() {
|
||||
return (
|
||||
<Card>
|
||||
<Typography.Title heading={6}>这是首页</Typography.Title>
|
||||
<Typography.Text>You can add content here :)</Typography.Text>
|
||||
</Card>
|
||||
);
|
||||
}
|
||||
|
||||
export default Index;
|
Loading…
Reference in new issue