assistant-todo/src/app/ui/task/project/TreeTablePro.tsx

147 lines
4.6 KiB
TypeScript
Raw Normal View History

2024-04-17 22:38:47 -04:00
'use client'
2024-04-22 02:47:08 -04:00
import {EllipsisOutlined, PlusOutlined} from '@ant-design/icons';
import type {ActionType, ProColumns} from '@ant-design/pro-components';
import {ProTable, TableDropdown} from '@ant-design/pro-components';
import {Button, Dropdown, Space, Tag} from 'antd';
import React, {useRef} from 'react';
2024-04-17 22:38:47 -04:00
import {DataType} from "@/app/lib/definitions";
2024-04-19 05:44:44 -04:00
import {OPERATION_BUTTON_TYPE, taskPriorityList, taskStateList, taskTreeResult} from "@/app/lib/task/project/data";
import {DetailModelForm} from "@/app/ui/task/project/DetailModelForm";
2024-04-22 02:47:08 -04:00
2024-04-17 22:38:47 -04:00
const columns: ProColumns<DataType>[] = [
{
title: '任务编码',
dataIndex: 'code',
width: '10%',
},
{
title: '任务名称',
dataIndex: 'name',
width: '15%',
copyable: true,
ellipsis: true,
tooltip: '标题过长会自动收缩',
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
},
{
title: '任务描述',
dataIndex: 'description',
},
{
2024-04-22 02:47:08 -04:00
title: '任务优先级',
dataIndex: 'priority',
2024-04-17 22:38:47 -04:00
valueType: 'select',
2024-04-22 02:47:08 -04:00
fieldProps: {
options: taskPriorityList.map(item => {
return {label: item.name, value: item.code}
})
},
// renderFormItem: (_, { defaultRender }) => {
// return defaultRender(_);
// },
render: (_, record) => (
<Space>
{
<Tag color={taskPriorityList.find(item => item.code === record.priority?.toString())?.color}
key={taskPriorityList.find(item => item.code === record.priority?.toString())?.code}>
{taskPriorityList.find(item => item.code === record.priority?.toString())?.name}
</Tag>
}
</Space>
),
2024-04-17 22:38:47 -04:00
},
{
2024-04-22 02:47:08 -04:00
title: '任务状态',
dataIndex: 'state',
2024-04-17 22:38:47 -04:00
valueType: 'select',
2024-04-22 02:47:08 -04:00
fieldProps: {
options: taskStateList.map(item => {
return {label: item.name, value: item.code}
})
},
// renderFormItem: (_, { defaultRender }) => {
// return defaultRender(_);
// },
2024-04-17 22:38:47 -04:00
render: (_, record) => (
<Space>
{
2024-04-22 02:47:08 -04:00
<Tag color={taskStateList.find(item => item.code === record.state?.toString())?.color}
key={taskStateList.find(item => item.code === record.state?.toString())?.code}>
{taskStateList.find(item => item.code === record.state?.toString())?.name}
2024-04-17 22:38:47 -04:00
</Tag>
}
</Space>
),
},
{
title: '期望开始时间',
dataIndex: 'expectedStartTime',
valueType: 'date',
2024-04-19 05:44:44 -04:00
},
{
title: '期望结束时间',
dataIndex: 'expectedEndTime',
valueType: 'date',
},
{
title: '实际开始时间',
dataIndex: 'actualStartTime',
valueType: 'date',
},
{
title: '期望结束时间',
dataIndex: 'actualEndTime',
valueType: 'date',
2024-04-17 22:38:47 -04:00
},
2024-04-22 02:47:08 -04:00
2024-04-17 22:38:47 -04:00
];
2024-04-22 02:47:08 -04:00
const TreeTablePro: React.FC = () => {
// const actionRef = useRef<ActionType>();
2024-04-17 22:38:47 -04:00
return (
<ProTable<DataType>
columns={columns}
2024-04-22 02:47:08 -04:00
// actionRef={actionRef}
2024-04-17 22:38:47 -04:00
cardBordered
request={async (params, sort, filter) => {
2024-04-22 02:47:08 -04:00
console.log('request',params,sort, filter);
2024-04-17 22:38:47 -04:00
const response = await taskTreeResult()
return {
2024-04-22 02:47:08 -04:00
data: response.data.content,
2024-04-17 22:38:47 -04:00
success: response.status.success,
}
}}
editable={{
type: 'multiple',
}}
columnsState={{
persistenceKey: 'pro-table-singe-demos',
persistenceType: 'localStorage',
defaultValue: {
2024-04-22 02:47:08 -04:00
option: {fixed: 'right', disable: true},
2024-04-17 22:38:47 -04:00
},
2024-04-22 02:47:08 -04:00
// onChange(value) {
// console.log('value: ', value);
// },
2024-04-17 22:38:47 -04:00
}}
rowKey="id"
pagination={{
pageSize: 5,
onChange: (page) => console.log(page),
}}
dateFormatter="string"
headerTitle="任务管理"
toolBarRender={() => [
2024-04-19 05:44:44 -04:00
<DetailModelForm operationId={OPERATION_BUTTON_TYPE.ADD} description='添加主线任务'/>,
2024-04-17 22:38:47 -04:00
]}></ProTable>
);
};
export default TreeTablePro