From e686aa2d96f4b9cbd8e31e5aef0c4cc92acd5630 Mon Sep 17 00:00:00 2001 From: xudan Date: Wed, 23 Jul 2025 13:50:15 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=A1=A8=E5=8D=95=E7=BB=84=E4=BB=B6=E7=9A=84=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E5=92=8C=E8=BE=93=E5=85=A5=E6=A0=B7=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BE=93=E5=85=A5=E5=AE=B9=E5=99=A8=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=EF=BC=8C=E6=9B=B4=E6=96=B0=E4=BB=BB=E5=8A=A1=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E9=A1=B5=E9=9D=A2=E4=BB=A5=E6=94=AF=E6=8C=81=E6=BB=9A?= =?UTF-8?q?=E5=8A=A8=E8=A7=86=E5=9B=BE=E5=92=8C=E5=8D=A1=E7=89=87=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/TaskForm.tsx | 24 +++++++++++++++++++++--- src/screens/TaskEditScreen.tsx | 21 ++++++++++++++------- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/components/TaskForm.tsx b/src/components/TaskForm.tsx index a5f0aa0..2ef3508 100644 --- a/src/components/TaskForm.tsx +++ b/src/components/TaskForm.tsx @@ -32,25 +32,36 @@ const TaskForm: React.FC = ({ task, onTaskChange }) => { const parameter = task.parameters?.[param.name]; const value = parameter?.value || param.defaultValue; + const label = ( + + {param.label} + {param.required && *} + + ); + switch (param.type.toLowerCase()) { case 'string': return ( handleParamChange(param.name, text)} placeholder={param.remark} + helperText={param.remark} + inputContainerStyle={styles.inputContainer} /> ); default: return ( handleParamChange(param.name, text)} placeholder={param.remark} + helperText={param.remark} + inputContainerStyle={styles.inputContainer} /> ); } @@ -62,6 +73,7 @@ const TaskForm: React.FC = ({ task, onTaskChange }) => { label="任务名称" value={task.name} onChangeText={text => onTaskChange({ ...task, name: text })} + inputContainerStyle={styles.inputContainer} /> {task.detail && task.detail.inputParams ? ( @@ -77,7 +89,7 @@ const TaskForm: React.FC = ({ task, onTaskChange }) => { const styles = StyleSheet.create({ container: { - padding: 16, + // padding: 16, // }, loadingContainer: { flex: 1, @@ -85,6 +97,12 @@ const styles = StyleSheet.create({ alignItems: 'center', padding: 20, }, + required: { + color: 'red', + }, + inputContainer: { + marginBottom: 10, + }, }); export default TaskForm; diff --git a/src/screens/TaskEditScreen.tsx b/src/screens/TaskEditScreen.tsx index 0d5f5a4..8938d0a 100644 --- a/src/screens/TaskEditScreen.tsx +++ b/src/screens/TaskEditScreen.tsx @@ -1,12 +1,12 @@ import React, { useState, useEffect } from 'react'; -import { View, StyleSheet, Alert } from 'react-native'; +import { View, StyleSheet, Alert, ScrollView } from 'react-native'; import { useRoute, useNavigation } from '@react-navigation/native'; import { RouteProp } from '@react-navigation/native'; import { useTasks } from '../context/TasksContext'; import TaskForm from '../components/TaskForm'; import BottomActionBar from '../components/BottomActionBar'; import { Task } from '../types/task'; -import { Dialog } from '@rneui/themed'; +import { Dialog, Card } from '@rneui/themed'; type RootStackParamList = { TaskEdit: { taskId: string }; @@ -19,7 +19,7 @@ export default function TaskEditScreen() { const navigation = useNavigation(); const { taskId } = route.params; - const { getTaskById, updateTask, runTask } = useTasks(); + const { getTaskById, updateTask, runTask, tasks } = useTasks(); const [task, setTask] = useState(null); const [originalTask, setOriginalTask] = useState(null); @@ -31,7 +31,7 @@ export default function TaskEditScreen() { setTask(taskData); setOriginalTask(taskData); } - }, [taskId, getTaskById]); + }, [taskId, getTaskById, tasks]); // Add tasks to dependency array const handleTaskChange = (updatedTask: Task) => { setTask(updatedTask); @@ -76,7 +76,11 @@ export default function TaskEditScreen() { return ( - + + + + +