import { PlusOutlined } from '@ant-design/icons'; import { ModalForm, ProForm, ProFormDateRangePicker, ProFormDateTimeRangePicker, ProFormSelect, ProFormText, ProFormTextArea, ProFormTreeSelect, } from '@ant-design/pro-components'; import { Button, Form, message } from 'antd'; import React, {useEffect, useState} from "react"; import { addTask, getTask, getTaskTreeResult, OPERATION_BUTTON_TYPE, taskPriorityList, taskStateList } from "@/lib/task/project/data"; import {DataType} from "@/lib/definitions"; import dayjs, {Dayjs} from "dayjs"; export type DetailModelFormProps={ // 当前内容id itemId?: number, // 父任务id pPid?:number, // 操作id operationId: number, // 标题描述 description:string, // 是否打开界面,用于非按钮操作 open:boolean, // 使用按钮操作 haveButton:boolean, expectedStartTime?:Dayjs, expectedEndTime?:Dayjs, // 重新加载数据 reloadData?: () => void } export type PidSelectTree= { label: string; value: number;pPid:number; children?: PidSelectTree[] } export const DetailModelForm: React.FC = (props) => { console.log("DetailModelForm:props:",props,props.itemId!=undefined&&( props.operationId === OPERATION_BUTTON_TYPE.DETAIL || props.operationId === OPERATION_BUTTON_TYPE.UPDATE)) const [form] = Form.useForm(); const [pPid, setPPid] = useState(0); useEffect(() => { if (props.itemId!=undefined&&( props.operationId === OPERATION_BUTTON_TYPE.DETAIL || props.operationId === OPERATION_BUTTON_TYPE.UPDATE)) { getTask(props.itemId).then(task => { console.log('DetailModelForm:getTask(props.itemId)', props.itemId, task); if (task.status.success) { // setTaskMessage(task.data) task.data.state = taskStateList.find(taskState => taskState.code === task.data.state?.toString())?.name; task.data.priority = taskPriorityList.find(taskPriority => taskPriority.code === task.data.priority?.toString())?.name; task.data.actualTimeRange = [task.data.actualStartTime ? dayjs(task.data.actualStartTime) : undefined, task.data.actualEndTime ? dayjs(task.data.actualEndTime) : undefined]; task.data.expectedTimeRange = [task.data.expectedStartTime ? dayjs(task.data.expectedStartTime) : undefined, task.data.expectedEndTime ? dayjs(task.data.expectedEndTime) : undefined]; form.setFieldsValue(task.data) } else { message.error(task.status.message); props.reloadData?.() } }) }else if(props.operationId === OPERATION_BUTTON_TYPE.ADD|| props.operationId === OPERATION_BUTTON_TYPE.ADD_CHILD){ let data={'expectedTimeRange':[props.expectedStartTime?props.expectedStartTime:dayjs(), props.expectedEndTime]}; form.setFieldsValue(data) } }, [props]) function childReduce(child:DataType[]):PidSelectTree[]{ const result:PidSelectTree[] = []; child.map(data=> { const resultData:PidSelectTree = {label:data.name,value:data.id,pPid:data.pPid}; if (data.children){ resultData.children=childReduce(data.children); } result.push(resultData); }) return result; } // 如果不是添加任务需要回显 return ( title={props.description} open={props.open&&!props.haveButton} trigger={props.haveButton? :undefined } form={form} autoFocusFirstInput modalProps={{ destroyOnClose: true, onCancel: () => { console.log('run'); props.reloadData?.(); }, }} onFinish={async (values) => { console.log('Received values of form: ', values); if (values.pid===undefined){ values.pid=0 } if (values.expectedTimeRange?.[0]!=undefined) { values.expectedStartTime=dayjs(values.expectedTimeRange[0]).toDate() } if (values.expectedTimeRange?.[1]!=undefined) { values.expectedEndTime=dayjs(values.expectedTimeRange[1]).toDate() } if (values.actualTimeRange?.[0]!=undefined) { values.actualStartTime=dayjs(values.actualTimeRange[0]).toDate() } if (values.actualTimeRange?.[1]!=undefined) { values.actualEndTime=dayjs(values.actualTimeRange[1]).toDate() } values.pPid=pPid; var result:boolean=false; await addTask(values).then(response => { console.log('response', response) if (response.status.success) { message.success("添加任务成功:" + response.data) // 树任务重新刷新 // 四象限任务重新刷新 // 如果可以直接更新列表而不请求。。。。。。 console.log('props.reloadData?.()',props.reloadData) props.reloadData?.() result= true }else { message.error(response.status.message) result= false } } ); return result; }} >