diff --git a/src/app/task/four/layout.tsx b/src/app/task/four/layout.tsx index 70f2896..c1f3371 100644 --- a/src/app/task/four/layout.tsx +++ b/src/app/task/four/layout.tsx @@ -1,26 +1,13 @@ 'use client' -import SideNav from '@/app/ui/dashboard/sidenav'; import TreeTable from "@/app/ui/task/four/TreeTable"; import '@/app/ui/task/four/index.modules.css' -import {useContext, useEffect} from "react"; +import {useContext, useEffect, useState} from "react"; import LocalContext from "@/app/ui/LocalContent"; +import {useSearchParams} from "next/dist/client/components/navigation"; +import {getTaskTreeResult, taskStateList} from "@/app/lib/task/project/data"; +import {DataType, ResponseVO, ResultPage} from "@/app/lib/definitions"; export default function Layout({children}: { children: React.ReactNode }) { - // useEffect(() => { - // // @ts-ignore - // const divWidth = document.getElementById('myDiv').offsetWidth; - // // @ts-ignore - // document.getElementById('mySpan').style.fontSize = divWidth + 'px'; - // }, []); // 这里的空数组表示只在组件挂载时执行一次 - // - // return ( - // <> - //
- // Content - //
- // Content - // - // ) useEffect(() => { // @ts-ignore @@ -33,31 +20,48 @@ export default function Layout({children}: { children: React.ReactNode }) { const divHeight = document.getElementById('left').offsetHeight; // @ts-ignore document.getElementById('tenLeft').style.fontSize = divHeight/6*4 + 'px'; - }, []); + refreshDate() + }, [useContext(LocalContext)]); const data = useContext(LocalContext); - console.log('data-data.taskState',data.taskState,); - const leftUp = [{name:"priority",value:"3",operateType:"="}]; - const rightUp =[{name:"priority",value:"2",operateType:"="}]; - const leftDown = [{name:"priority",value:"1",operateType:"="}]; - const rightDown = [{name:"priority",value:"0",operateType:"="}]; - if (data.taskState.length>0){ - leftUp.push({name:"state",value:data.taskState,operateType:"IN"}); - rightUp.push({name:"state",value:data.taskState,operateType:"IN"}); - leftDown.push({name:"state",value:data.taskState,operateType:"IN"}); - rightDown.push({name:"state",value:data.taskState,operateType:"IN"}); + const leftUp:{name:string,operateType:string,value:string|number|boolean}[] = [] + var pid = useSearchParams().get('pid'); + // 如果有pid,在前端过滤(防止中间数据不满足条件,导致子数据丢失), + // 无pid在后端过滤(防止数据量过大)。 + console.log('data',data); + console.log('pid!=null',pid!=null); + if (pid!=null) { + leftUp.push({name:"pid",value:pid,operateType:"="},{name:'TREE',value:"false",operateType: "TREE"}); + }else { + if (data.taskState.length>0){ + leftUp.push({name:"state",value:data.taskState,operateType:"IN"}); + } + if (data.expectedStartTime.length>0){ + const parse = JSON.parse(data.expectedStartTime); + leftUp.push(...parse); + } } - if (data.expectedStartTime.length>0){ - const parse = JSON.parse(data.expectedStartTime); - leftUp.push(...parse); - rightUp.push(...parse); - leftDown.push(...parse); - rightDown.push(...parse); + + const [resultDataTypeList, setResultDataTypeList] = useState([]); + const refreshDate = (): void => { + getTaskTreeResult(JSON.stringify({ + pageSize:1000, + pageNumber:1, + data: leftUp + })).then((result: ResponseVO>) => { + if (result.status.success) { + // recursionActionChild(result.data.content); + result.data.content.forEach(dataType=>{ + dataType.state=taskStateList.find(taskState=>taskState.code===dataType.state+'')?.name + }) + setResultDataTypeList(result.data.content) + } + }) } return (
- +
@@ -65,7 +69,7 @@ export default function Layout({children}: { children: React.ReactNode }) {
- +
@@ -73,14 +77,14 @@ export default function Layout({children}: { children: React.ReactNode }) {
- +
向上重要
{/*
{children}
*/}
- +
diff --git a/src/app/task/layout.tsx b/src/app/task/layout.tsx index 03e5a41..7627050 100644 --- a/src/app/task/layout.tsx +++ b/src/app/task/layout.tsx @@ -10,12 +10,18 @@ export default function Layout({children}: { children: React.ReactNode }) { expectStartTimeList.push({'name':"expectedStartTime",'value':dayjs().subtract(7,'day'),'operateType':">="}); expectStartTimeList.push({'name':"expectedStartTime",'value':dayjs().add(7,'day'),'operateType':"<"}) const [expectedStartTime, setExpectedStartTime] = React.useState(JSON.stringify(expectStartTimeList)) + const [refreshDataFlag, setRefreshDataFlag] = React.useState(true) + function refreshData() { + setRefreshDataFlag(!refreshDataFlag) + } + console.log('taskState,expectedStartTime,refreshDataFlag',taskState,expectedStartTime,refreshDataFlag) return (
- - + + + {children} -
+ ); } diff --git a/src/app/task/project/page.tsx b/src/app/task/project/page.tsx index ba15d26..189c361 100644 --- a/src/app/task/project/page.tsx +++ b/src/app/task/project/page.tsx @@ -1,11 +1,9 @@ -import TreeTable from "@/app/ui/task/four/TreeTable"; import TreeTablePro from "@/app/ui/task/project/TreeTablePro"; const Page: React.FC = () => { return ( <> - {/**/} ); }; diff --git a/src/app/ui/LocalContent.tsx b/src/app/ui/LocalContent.tsx index 3ea2f10..fba12a4 100644 --- a/src/app/ui/LocalContent.tsx +++ b/src/app/ui/LocalContent.tsx @@ -1,5 +1,5 @@ import React from 'react'; -const LocalContext = React.createContext({'taskState':'','expectedStartTime':''}); +const LocalContext = React.createContext({'taskState':'','expectedStartTime':'','refreshData':true}); export default LocalContext; diff --git a/src/app/ui/task/OperationButton.tsx b/src/app/ui/task/OperationButton.tsx index e061828..f8c5f5d 100644 --- a/src/app/ui/task/OperationButton.tsx +++ b/src/app/ui/task/OperationButton.tsx @@ -10,12 +10,12 @@ export interface OperationButtonProps { pid: number, pPid: number, operationId?: string, - refreshDate?: () => void + refreshDate?: () => void, } interface OperationModelProps { operationId: number | undefined, - pPid:number, + pPid: number, pid: number, openModal: boolean } @@ -60,8 +60,7 @@ class OperationButton extends React.Component { this.setState({openModal: true, operationId: OPERATION_BUTTON_TYPE.UPDATE}) }}>修改任务, - } - , + }, { key: OPERATION_BUTTON_TYPE.DELETE, label: 四象限显示子任务, + label: 四象限显示子任务, } ]; return diff --git a/src/app/ui/task/RequestDateType.tsx b/src/app/ui/task/RequestDateType.tsx new file mode 100644 index 0000000..78ceda4 --- /dev/null +++ b/src/app/ui/task/RequestDateType.tsx @@ -0,0 +1,5 @@ +export interface RequestDateType { + name:string, + value:string|number|boolean, + operateType:string +} diff --git a/src/app/ui/task/TitleOperation.tsx b/src/app/ui/task/TitleOperation.tsx index 07db0e2..834ede2 100644 --- a/src/app/ui/task/TitleOperation.tsx +++ b/src/app/ui/task/TitleOperation.tsx @@ -1,36 +1,47 @@ -import React from "react"; +import React, {useContext} from "react"; import {Button, DatePicker, Flex, Select, Space} from "antd"; import {usePathname, useRouter} from "next/navigation"; import {DetailModelForm} from "@/app/ui/task/project/DetailModelForm"; import {OPERATION_BUTTON_TYPE, taskStateList} from "@/app/lib/task/project/data"; import '@/app/ui/task/TitleOperation.modules.css' -import dayjs from "dayjs"; +import LocalContext from "@/app/ui/LocalContent"; +import {RequestDateType} from "@/app/ui/task/RequestDateType"; +import dayjs, {Dayjs} from "dayjs"; +import {element} from "prop-types"; interface TitleOperationProps { setTaskState: (value: string) => void; setExpectedStartTime: (value: string) => void; + refreshData: () => void; } - export const TitleOperation: React.FC = ({ setTaskState, - setExpectedStartTime + setExpectedStartTime, + refreshData }: TitleOperationProps) => { const {replace} = useRouter(); - const [currentPath, setCurrentPath] = React.useState(usePathname()); + console.log('usePathname()', usePathname()); + const data = useContext(LocalContext); const {RangePicker} = DatePicker; + const expectStartTimeParseResult:RequestDateType[] = data.expectedStartTime.length>0?JSON.parse(data.expectedStartTime):[undefined,undefined] + expectStartTimeParseResult.map(item => item&&item.value ? dayjs(item.value.toString()) : undefined) + const defaultExpectStartTime:[start: Dayjs | null | undefined, end: Dayjs | null | undefined] = [ + expectStartTimeParseResult[0]&&expectStartTimeParseResult[0].value ? dayjs(expectStartTimeParseResult[0].value.toString()) : undefined, + expectStartTimeParseResult[1]&&expectStartTimeParseResult[1].value ? dayjs(expectStartTimeParseResult[1].value.toString()) : undefined + ]; return - - {currentPath.startsWith("/task/project") ? + + {usePathname().startsWith("/task/project") ? <> : <> 任务状态: - name='name' label="任务名称" rules={[{ required: true, message: '任务名称不能为空' }]}> + name='name' label="任务名称" + rules={[{required: true, message: '任务名称不能为空'}]}> name='description' label="任务描述">