diff --git a/src/app/lib/task/project/data.tsx b/src/app/lib/task/project/data.tsx index 6449612..d45db1a 100644 --- a/src/app/lib/task/project/data.tsx +++ b/src/app/lib/task/project/data.tsx @@ -209,21 +209,21 @@ export const taskStateList: DictType[] = [ code: '7', name: '完成', order: 7, - color: 'red' + color: 'GREEN' }, { id: 8, code: '8', name: '新建', order: 8, - color: 'red' + color: 'RED' }, { id: 9, code: '9', name: '进行中', order: 9, - color: 'red' + color: 'YELLOW' } ] export enum OPERATION_BUTTON_TYPE { diff --git a/src/app/task/four/layout.tsx b/src/app/task/four/layout.tsx index ee5137f..70f2896 100644 --- a/src/app/task/four/layout.tsx +++ b/src/app/task/four/layout.tsx @@ -1,6 +1,6 @@ 'use client' import SideNav from '@/app/ui/dashboard/sidenav'; -import TreeTable from "@/app/ui/task/project/TreeTable"; +import TreeTable from "@/app/ui/task/four/TreeTable"; import '@/app/ui/task/four/index.modules.css' import {useContext, useEffect} from "react"; import LocalContext from "@/app/ui/LocalContent"; diff --git a/src/app/task/layout.tsx b/src/app/task/layout.tsx index 35ccd81..03e5a41 100644 --- a/src/app/task/layout.tsx +++ b/src/app/task/layout.tsx @@ -1,7 +1,7 @@ 'use client' import React from "react"; import {TitleOperation} from "@/app/ui/task/TitleOperation"; -import LocalContext from "../ui/LocalContent"; +import LocalContext from "@/app/ui/LocalContent"; import dayjs from "dayjs"; export default function Layout({children}: { children: React.ReactNode }) { diff --git a/src/app/task/list/page.tsx b/src/app/task/list/page.tsx deleted file mode 100644 index e9e36c9..0000000 --- a/src/app/task/list/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import TreeTable from "@/app/ui/task/project/TreeTable"; -import TreeTablePro from "@/app/ui/task/project/TreeTablePro"; - -const Page: React.FC = () => { - return ( - <> - - - ); -}; - -export default Page; diff --git a/src/app/task/project/page.tsx b/src/app/task/project/page.tsx index f3b69de..ba15d26 100644 --- a/src/app/task/project/page.tsx +++ b/src/app/task/project/page.tsx @@ -1,4 +1,4 @@ -import TreeTable from "@/app/ui/task/project/TreeTable"; +import TreeTable from "@/app/ui/task/four/TreeTable"; import TreeTablePro from "@/app/ui/task/project/TreeTablePro"; const Page: React.FC = () => { diff --git a/src/app/ui/task/AdvancedSearchForm.tsx b/src/app/ui/task/AdvancedSearchForm.tsx index 1900010..4ffa937 100644 --- a/src/app/ui/task/AdvancedSearchForm.tsx +++ b/src/app/ui/task/AdvancedSearchForm.tsx @@ -1,10 +1,6 @@ 'use client' import {Button, Col, Form, Input, Row, Select, Space, theme} from "antd"; import React, {useState} from "react"; -import {DownOutlined} from "@ant-design/icons"; -import {OperationButtonProps} from "@/app/ui/task/project/OperationButton"; -import {Span} from "next/dist/server/lib/trace/tracer"; -import CustomSearchForm from "@/app/ui/task/CustomSearchForm"; const AdvancedSearchForm = () => { const { token } = theme.useToken(); diff --git a/src/app/ui/task/project/OperationButton.tsx b/src/app/ui/task/OperationButton.tsx similarity index 98% rename from src/app/ui/task/project/OperationButton.tsx rename to src/app/ui/task/OperationButton.tsx index a004239..e061828 100644 --- a/src/app/ui/task/project/OperationButton.tsx +++ b/src/app/ui/task/OperationButton.tsx @@ -1,7 +1,7 @@ import React, {Fragment} from "react"; import {Button, Dropdown, MenuProps, message, Modal, Popconfirm, Space} from "antd"; import {DownOutlined, QuestionCircleOutlined} from "@ant-design/icons"; -import {DetailForm} from "@/app/ui/task/project/DetailForm"; +import {DetailForm} from "@/app/ui/task/four/DetailForm"; import {deleteTask, OPERATION_BUTTON_TYPE} from "@/app/lib/task/project/data"; import Link from "next/link"; diff --git a/src/app/ui/task/TitleOperation.tsx b/src/app/ui/task/TitleOperation.tsx index 1262e8e..07db0e2 100644 --- a/src/app/ui/task/TitleOperation.tsx +++ b/src/app/ui/task/TitleOperation.tsx @@ -3,89 +3,80 @@ 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 './TitleOperation.modules.css' +import '@/app/ui/task/TitleOperation.modules.css' import dayjs from "dayjs"; + interface TitleOperationProps { setTaskState: (value: string) => void; - setExpectedStartTime:(value:string)=>void; + setExpectedStartTime: (value: string) => void; } -export const TitleOperation: React.FC = ({setTaskState,setExpectedStartTime}: TitleOperationProps) => { +export const TitleOperation: React.FC = ({ + setTaskState, + setExpectedStartTime + }: TitleOperationProps) => { const {replace} = useRouter(); const [currentPath, setCurrentPath] = React.useState(usePathname()); const {RangePicker} = DatePicker; - return - - {currentPath.startsWith("/task/project") ? - <> - - - : - currentPath.startsWith("/task/list") ? - <> - - - : <> - - - - } - {/**/} - 任务状态: - { + console.log('onChange') + setTaskState(value.join(',')) + }} + options={taskStateList.map(item => { + return {label: item.name, value: item.code} + })} /> - - {/**/} + 期望开始时间范围: + { + console.log('onChange:', dates, dateStrings); + if (!dates) { + setExpectedStartTime('') + return + } + let expectStartTimeList = []; + if (dates[0]) { + expectStartTimeList.push({ + 'name': "expectedStartTime", + 'value': dates[0], + 'operateType': ">=" + }); + } + if (dates[1]) { + expectStartTimeList.push({ + 'name': "expectedStartTime", + 'value': dates[1].add(1, 'day'), + 'operateType': "<" + }) + } + setExpectedStartTime(JSON.stringify(expectStartTimeList)) + }} + /> + + } + } diff --git a/src/app/ui/task/project/DetailForm.tsx b/src/app/ui/task/four/DetailForm.tsx similarity index 99% rename from src/app/ui/task/project/DetailForm.tsx rename to src/app/ui/task/four/DetailForm.tsx index b84b5f9..fc77b1c 100644 --- a/src/app/ui/task/project/DetailForm.tsx +++ b/src/app/ui/task/four/DetailForm.tsx @@ -1,6 +1,6 @@ 'use client' import React, {useEffect, useState} from 'react'; -import '@/app/ui/task/project/detailForm.modules.css' +import '@/app/ui/task/four/detailForm.modules.css' import {PlusOutlined} from '@ant-design/icons'; import { Button, diff --git a/src/app/ui/task/project/TreeTable.tsx b/src/app/ui/task/four/TreeTable.tsx similarity index 94% rename from src/app/ui/task/project/TreeTable.tsx rename to src/app/ui/task/four/TreeTable.tsx index 9bd0ac3..f70556f 100644 --- a/src/app/ui/task/project/TreeTable.tsx +++ b/src/app/ui/task/four/TreeTable.tsx @@ -4,9 +4,9 @@ import {ConfigProvider, Table} from 'antd'; import type {TableColumnsType, TableProps} from 'antd'; import {getTaskTreeResult, taskPriorityList, taskStateList, taskTreeResult} from "@/app/lib/task/project/data"; import {DataType, ResponseVO, ResultPage} from "@/app/lib/definitions"; -import OperationButton from "@/app/ui/task/project/OperationButton"; +import OperationButton from "@/app/ui/task/OperationButton"; import dayjs from "dayjs"; -import "@/app/ui/task/project/detailForm.modules.css" +import "@/app/ui/task/four/detailForm.modules.css" type TableRowSelection = TableProps['rowSelection']; @@ -113,7 +113,6 @@ const TreeTable: React.FC = (props) => { } }) } - console.log('taskPriorityList.find((item)=>item.code===props.priority)?.color',props.priority,taskPriorityList.find((item)=>item.code===props.search.priority)?.color) useEffect(() => { refreshDate(); }, [props.search]); diff --git a/src/app/ui/task/project/detailForm.modules.css b/src/app/ui/task/four/detailForm.modules.css similarity index 100% rename from src/app/ui/task/project/detailForm.modules.css rename to src/app/ui/task/four/detailForm.modules.css diff --git a/src/app/ui/task/project/DetailModelForm.tsx b/src/app/ui/task/project/DetailModelForm.tsx index a8e6578..0a5dd38 100644 --- a/src/app/ui/task/project/DetailModelForm.tsx +++ b/src/app/ui/task/project/DetailModelForm.tsx @@ -4,12 +4,13 @@ import { ProForm, ProFormDateRangePicker, ProFormSelect, - ProFormText, + ProFormText, ProFormTextArea, ProFormTreeSelect, } from '@ant-design/pro-components'; import { Button, Form, message } from 'antd'; import React from "react"; -import {DetailFormProps} from "@/app/ui/task/project/DetailForm"; -import {OPERATION_BUTTON_TYPE} from "@/app/lib/task/project/data"; +import {getTaskTreeResult, OPERATION_BUTTON_TYPE, taskPriorityList, taskStateList} from "@/app/lib/task/project/data"; +import {DataType} from "@/app/lib/definitions"; +import {string} from "prop-types"; const waitTime = (time: number = 100) => { return new Promise((resolve) => { @@ -25,14 +26,22 @@ export type DetailModelFormProps={ description:string, handleCancel?: () => void } - +export type PidSelectTree= { label: string; value: number; children?: PidSelectTree[] } export const DetailModelForm: React.FC = (props) => { - const [form] = Form.useForm<{ name: string; company: string }>(); + const [form] = Form.useForm(); + function childReduce(child:DataType[]):PidSelectTree[]{ + const result:PidSelectTree[] = []; + child.map(data=> { + const resultData:PidSelectTree = {label:data.name,value:data.id}; + if (data.children){ + resultData.children=childReduce(data.children); + } + result.push(resultData); + }) + return result; + } return ( - + title={ props.operationId === OPERATION_BUTTON_TYPE.DETAIL ? "任务详情": props.operationId === OPERATION_BUTTON_TYPE.ADD?"添加任务": @@ -50,7 +59,7 @@ export const DetailModelForm: React.FC = (props) => { destroyOnClose: true, onCancel: () => console.log('run'), }} - submitTimeout={2000} + // submitTimeout={2000} onFinish={async (values) => { await waitTime(2000); console.log(values.name); @@ -58,69 +67,79 @@ export const DetailModelForm: React.FC = (props) => { return true; }} > +