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
|