diff --git a/src/App.js b/src/App.js index 3f5f77f..43d4b10 100644 --- a/src/App.js +++ b/src/App.js @@ -4,12 +4,13 @@ import Map from './pages/Map'; import Index from './pages/Index' import './pages/Bottom/index.css' import CityList from './pages/CityList'; -import { PersonalCenter} from './pages/Bottom' +import {PersonalCenter} from './pages/Bottom' import ToDoList from "./pages/ToDoList"; import DetailForm from "./components/DetailForm"; import {NavBar} from "antd-mobile"; import DetailNavBar from "./components/DetailNavBar"; import DetailSearchContext from "./pages/DetailSearchContext"; +import ToDoCal from "./pages/ToDoCal"; function App() { return ( @@ -20,12 +21,14 @@ function App() { */} {/*
*/} - {/* }> - */} - }> - }/> - }> - }> + }> + + + }> + }/> + }> + }/> + }> }> }> diff --git a/src/components/DetailSearchBar/index.js b/src/components/DetailSearchBar/index.js index 14982e0..9f0ba80 100644 --- a/src/components/DetailSearchBar/index.js +++ b/src/components/DetailSearchBar/index.js @@ -10,14 +10,17 @@ const DetailSearchBar = (props) => { // const location = useLocation(); // const searchUpdate = location.state?.search; // 父子传值从搜索框传来的search - const {search,updateSearch} = props; - console.log("DetailSearchBar.search", search) + const {search,updateSearch,pName} = props; + console.log("DetailSearchBar.search", search.data) const [tags, setTags] = useState([]); useEffect(() => { if (search && search.data) { Promise.all( search.data.map(async (searchObj) => { - if (searchObj.name === "state") { + console.log("DetailSearchContext.search", searchObj) + if (searchObj.name === "pid") { + return {pName} + }else if (searchObj.name === "state") { const dictionary = await getDictionary("2"); const items = searchObj.value.split(','); const itemPromises = items.map((item) => { @@ -25,6 +28,16 @@ const DetailSearchBar = (props) => { return dict ? {dict.itemName} : null; }); return Promise.all(itemPromises); + }else if (searchObj.name === "priority"){ + const dictionary = await getDictionary("1"); + const items = searchObj.value.split(','); + const itemPromises = items.map((item) => { + const dict = dictionary.get(item); + return dict ? {dict.itemName} : null; + }); + return Promise.all(itemPromises); + }else if (searchObj.name === "todoDay"){ + return {searchObj.value}; } }) ).then((results) => { diff --git a/src/pages/Bottom/index.js b/src/pages/Bottom/index.js index 714e4c4..547c400 100644 --- a/src/pages/Bottom/index.js +++ b/src/pages/Bottom/index.js @@ -9,23 +9,22 @@ import { AddOutline, } from 'antd-mobile-icons' import "./index.css" -import DetailForm from "../../components/DetailForm"; const tabs = [ { - key: '/home', + key: '/home/treeTask', title: '树状任务', icon: , badge: '1', }, { - key: '/home/todo', + key: '/home/listTask', title: '列表任务', icon: , badge: '2', }, { - key: '/home/message', + key: '/home/calTask', title: '日历任务', icon: , badge: '3', diff --git a/src/pages/DetailSearchContext/index.js b/src/pages/DetailSearchContext/index.js index 846aa6d..db93a71 100644 --- a/src/pages/DetailSearchContext/index.js +++ b/src/pages/DetailSearchContext/index.js @@ -1,30 +1,78 @@ import {Button, Checkbox, DatePicker, Form, Input, Space, Switch, Tag} from "antd-mobile"; import ParentTask from "../../components/ParentTask"; -import React from "react"; +import React, {useEffect} from "react"; import dayjs from "dayjs"; import {CloseCircleFill} from "antd-mobile-icons"; import {useLocation, useNavigate, useOutletContext} from "react-router-dom"; -const now = new Date() +import {getDictionary} from "../../utils/dictUtil"; +import {getTaskById} from "../../utils"; + const DetailSearchContext = () => { - // 使用Outlet,传值修改标题 - const {setTitle} = useOutletContext(); - setTitle("搜索查询") const navigate = useNavigate(); const [form] = Form.useForm(); const [visible, setVisible] = React.useState(false); const location = useLocation(); - console.log("DetailSearchContext",location); - const {search,updateSearch} = location.state; - console.log("DetailSearchContext.search",search) + console.log("DetailSearchContext", location); + const {search} = location?.state || undefined; + console.log("DetailSearchContext.search", search) + const [stateList, setStateList] = React.useState([]); + const [priorityList, setPriorityList] = React.useState([]); + // 使用Outlet,传值修改标题 + const {setTitle} = useOutletContext(); + useEffect(() => { + // 使用Outlet,传值修改标题 + setTitle("搜索查询") + initDate() + }, []) + + async function initDate() { + let stateDictionary = await getDictionary("2"); + let priorityDictionary = await getDictionary("1"); + setStateList(Array.from(stateDictionary.values())); + setPriorityList(Array.from(priorityDictionary.values())); + if (!search) { + return + } + let searchMap = new Map(search.data.map(searchObj => [searchObj.name, searchObj])); + if (searchMap.has("pid")) { + let task = await getTaskById(searchMap.get("pid")); + // form.setFieldValue(task.name); + } + if (searchMap.has("state")) { + form.setFieldValue("state", searchMap.get("state").value.split(',')) + } + if (searchMap.has("priority")) { + form.setFieldValue("priority", searchMap.get("priority").value.split(',')) + } + if (searchMap.has("todoDay")) { + form.setFieldValue("todoDay", searchMap.get("todoDay").value) + } + } + return (
{ - // navigate("/home/todo", { state: { search: values } }) - // 根据values处理search - // updateSearch() - navigate("/home/todo") + onFinish={(values) => { + console.log(values) + let searchCondition = []; + const {pidArray, name, priority, state, todoDay} = values; + if (pidArray && pidArray.length !== 0) { + searchCondition.push({"name": "name", "value": pidArray[pidArray.length - 1], "operateType": "="}) + } + if (name && name !== "") { + searchCondition.push({"name": "name", "value": name, "operateType": "LIKE"}) + } + if (priority && priority.length !== 0) { + searchCondition.push({"name": "priority", "value": priority.join(","), "operateType": "IN"}) + } + if (state && state.length !== 0) { + searchCondition.push({"name": "state", "value": state.join(","), "operateType": "IN"}) + } + if (todoDay !== undefined) { + searchCondition.push({"name": "todoDay", "value": todoDay, "operateType": "IN"}) + } + navigate("/home/listTask", {state: {search: JSON.stringify(searchCondition)}}) }} footer={