安陆网站开发香水网站设计网页
2026/4/18 12:44:35 网站建设 项目流程
安陆网站开发,香水网站设计网页,苏州有啥好玩的地方,简述网站与网页的区别第11篇:任务管理与提醒系统 教程目标 通过本篇教程,你将学会: 理解任务数据模型设计实现任务的增删改查创建任务列表页面创建添加任务页面实现任务详情与编辑功能理解任务自动生成机制管理任务状态与优先级 完成本教程后,你将拥有完整的任务管理和提醒功能。 一、任务数据模…第11篇:任务管理与提醒系统教程目标通过本篇教程,你将学会:理解任务数据模型设计实现任务的增删改查创建任务列表页面创建添加任务页面实现任务详情与编辑功能理解任务自动生成机制管理任务状态与优先级完成本教程后,你将拥有完整的任务管理和提醒功能。一、任务数据模型在实现任务管理功能之前,我们需要了解任务数据模型的结构。任务服务已在TaskService.ets中实现。1.1 查看任务数据模型文件位置:entry/src/main/ets/services/TaskService.ets(第13-86行)操作说明:打开entry/src/main/ets/services/TaskService.ets查看任务相关的接口和枚举定义/** * 任务类型 */exportenumTaskType{WATERINGwatering,// 浇水FERTILIZINGfertilizing,// 施肥PRUNINGpruning,// 修剪PEST_CONTROLpest_control,// 病虫害防治HARVESTINGharvesting,// 收获PLANTINGplanting,// 种植SOIL_PREPsoil_prep,// 整地INSPECTIONinspection,// 巡查OTHERother// 其他}/** * 任务状态 */exportenumTaskStatus{PENDINGpending,// 待完成COMPLETEDcompleted,// 已完成OVERDUEoverdue,// 已过期CANCELLEDcancelled// 已取消}/** * 任务优先级 */exportenumTaskPriority{LOWlow,MEDIUMmedium,HIGHhigh,URGENTurgent}/** * 任务信息 */exportinterfaceTaskInfo{id:string;type:TaskType;title:string;description?:string;status:TaskStatus;priority:TaskPriority;dueDate:number;// 截止日期时间戳completedDate?:number;// 完成日期时间戳// 关联对象relatedType?:plant|field;// 关联对象类型relatedId?:string;// 关联对象IDrelatedName?:string;// 关联对象名称// 任务详情estimatedDuration?:number;// 预计耗时(分钟)notes?:string;// 备注// 自动生成标记isAutoGenerated:boolean;// 是否自动生成createdAt:number;updatedAt:number;}/** * 任务统计 */exportinterfaceTaskStats{total:number;pending:number;completed:number;overdue:number;todayTasks:number;weekTasks:number;}模型设计要点:设计要点说明枚举类型使用枚举定义任务类型、状态、优先级,保证数据一致性关联对象支持关联植物或地块,实现任务与业务实体的绑定自动生成isAutoGenerated标记区分手动创建和自动生成的任务时间管理使用时间戳存储截止日期和完成日期,便于比较和排序可选字段使用?标记非必填字段,提供灵活性1.2 任务数据关系说明TaskInfo(任务信息) ├── relatedType: plant | field // 关联类型 ├── relatedId: string // 关联对象ID └── isAutoGenerated: boolean // 是否自动生成 关联关系: - 家庭园艺模式: 任务关联到 PlantInfo(植物) - 专业农业模式: 任务关联到 FieldInfo(地块)任务独立存储的好处是:跨实体查询,可以获取所有待办任务任务状态独立管理,不影响原始数据支持手动创建和自动生成两种来源便于实现任务提醒和日历功能二、任务服务TaskService提供了完整的任务管理功能,包括基础CRUD、筛选查询和自动生成任务。2.1 TaskService核心方法文件位置:entry/src/main/ets/services/TaskService.ets基础CRUD方法:/** * 获取所有任务 * 会自动更新过期任务的状态 */asyncgetAllTasks():PromiseTaskInfo[]/** * 根据ID获取任务 */asyncgetTaskById(taskId:string):PromiseTaskInfo|null/** * 添加任务 */asyncaddTask(task:TaskInfo):Promiseboolean/** * 更新任务 */asyncupdateTask(taskId:string,updates:PartialTaskInfo):Promiseboolean/** * 删除任务 */asyncdeleteTask(taskId:string):Promiseboolean/** * 完成任务 * 完成任务会自动更新关联的植物或地块记录 */asynccompleteTask(taskId:string,notes?:string):Promiseboolean/** * 取消任务 */asynccancelTask(taskId:string):Promiseboolean筛选查询方法:/** * 获取今日任务 */asyncgetTodayTasks():PromiseTaskInfo[]/** * 获取本周任务 */asyncgetWeekTasks():PromiseTaskInfo[]/** * 获取过期任务 */asyncgetOverdueTasks():PromiseTaskInfo[]/** * 根据类型获取任务 */asyncgetTasksByType(type:TaskType):PromiseTaskInfo[]/** * 根据关联对象获取任务 */asyncgetTasksByRelated(relatedType:plant|field,relatedId:string):PromiseTaskInfo[]/** * 获取任务统计 */asyncgetTaskStats():PromiseTaskStats自动生成方法:/** * 自动生成植物相关任务 * 根据植物的浇水、施肥记录自动生成提醒任务 */asyncgeneratePlantTasks():Promisenumber/** * 自动生成地块相关任务 * 根据作物生长阶段自动生成农事任务 */asyncgenerateFieldTasks():Promisenumber2.2 任务自动生成机制TaskService提供了智能的任务自动生成功能:植物任务自动生成逻辑:// 浇水任务生成条件:// 1. 距离上次浇水时间 浇水频率// 2. 没有相同类型的待完成任务privateasyncgenerateWateringTask(plant:PlantInfo):PromiseTaskInfo|null// 施肥任务生成条件:// 1. 距离上次施肥超过7天// 2. 没有相同类型的待完成任务privateasyncgenerateFertilizingTask(plant:PlantInfo):PromiseTaskInfo|null地块任务自动生成逻辑:// 收获任务生成条件:// 1. 作物距离预期收获日期 7天// 2. 没有相同类型的待完成任务privateasyncgenerateCropTasks(field:FieldInfo):PromiseTaskInfo[]服务设计要点:功能点实现方式单例模式使用getInstance()确保全局唯一实例数据持久化通过StorageUtil保存到本地存储状态自动更新获取任务时自动将过期的待完成任务标记为过期关联记录更新完成任务时自动更新植物的浇水/施肥记录智能生成基于业务规则自动生成任务,避免重复三、创建任务列表页面任务列表页面用于展示和管理所有任务,支持按状态筛选和快速操作。3.1 创建TaskListPage.ets文件位置:entry/src/main/ets/pages/Management/TaskListPage.ets操作步骤:在entry/src/main/ets/pages/Management/目录下创建新文件命名为TaskListPage.ets输入以下代码注意:由于第11篇教程内容较长,完整代码已准备好,请参考第10篇教程的写作风格和代码注释质量。页面核心功能:功能实现方式任务统计顶部展示总数、待完成、已完成、逾期数量多条件筛选支持全部、待完成、已完成、逾期、今日、本周快速完成复选框直接完成任务,自动更新关联记录优先级展示不同优先级使用不同颜色的标签智能日期显示今天“明天”3天后等易读格式自动生成标记显示自动标识自动生成的任务空状态无数据时显示友好提示四、创建添加任务页面添加任务页面允许用户手动创建任务,并可选择关联到植物或地块。4.1 页面功能设计表单字段:任务类型(必填): 9种预定义类型,九宫格布局任务标题(必填): 文本输入任务描述(可选): 多行文本输入优先级(必填): 低/中/高/紧急四个级别截止日期(必填): 提供快捷选择按钮关联对象(可选): 可选择关联植物或地块预计耗时(可选): 数字输入(分钟)备注(可选): 多行文本输入交互设计:选择任务类型后自动填充标题模板截止日期提供今天“明天”“3天后”1周后快捷按钮关联对象支持从已有植物/地块列表中选择表单验证后才能保存五、创建任务详情页面任务详情页面用于查看任务信息并支持编辑和删除操作。5.1 页面功能设计展示内容:任务基本信息(类型、标题、描述、状态)时间信息(创建时间、截止时间、完成时间)优先级和关联对象自动生成标记完成备注(如果已完成)操作按钮:完成任务(待完成状态)编辑任务删除任务取消任务六、任务自动生成实践6.1 手动触发自动生成在应用中可以提供手动触发按钮来生成任务:/** * 生成植物相关任务 */asyncgeneratePlantTasks():Promisevoid{try{constcountawaitthis.taskService.generatePlantTasks();promptAction.showToast({message:已自动生成${count}个植物任务,duration:2000});awaitthis.loadData();}catch(error){console.error(Failed to generate plant tasks:,error);}}/** * 生成地块相关任务 */asyncgenerateFieldTasks():Promisevoid{try{constcountawaitthis.taskService.generateFieldTasks();promptAction.showToast({message:已自动生成${count}个农事任务,duration:2000});awaitthis.loadData();}catch(error){console.error(Failed to generate field tasks:,error);}}6.2 定时自动生成可以在应用启动时或特定时机触发自动生成:/** * 应用启动时检查并生成任务 */asynccheckAndGenerateTasks():Promisevoid{// 获取上次生成时间constlastGenTimeawaitStorageUtil.getNumber(lastTaskGenTime,0);constnowDate.now();constoneDayMs24*60*60*1000;// 如果距离上次生成超过1天,重新生成if(now-lastGenTimeoneDayMs){awaitthis.taskService.generatePlantTasks();awaitthis.taskService.generateFieldTasks();awaitStorageUtil.setNumber(lastTaskGenTime,now);}}七、配置页面路由在main_pages.json中添加任务管理相关页面的路由。文件位置:entry/src/main/resources/base/profile/main_pages.json{src:[pages/WelcomePage,pages/Index,pages/Map/FieldMapPage,pages/Management/FieldManagementPage,pages/Management/AddFieldPage,pages/Management/EditFieldPage,pages/Management/FieldDetailPage,pages/Management/FarmOperationPage,pages/Management/AddFarmOperationPage,pages/Management/EditFarmOperationPage,pages/Management/TaskListPage,pages/Management/AddTaskPage,pages/Management/TaskDetailPage,pages/Management/CropManagementPage,pages/Management/AddCropPage,pages/Management/CropDetailPage,pages/OnboardingFlow/ModeSelectionPage,pages/OnboardingFlow/LocationPage,pages/OnboardingFlow/GoalsPage]}八、运行与测试8.1 测试步骤启动应用点击运行按钮或按Shift F10等待应用编译并安装到模拟器进入任务列表页面从主页进入任务管理查看任务统计信息添加手动任务点击右上角 添加按钮选择任务类型填写任务信息设置优先级和截止日期选择关联对象(可选)点击保存测试任务筛选使用顶部筛选器切换不同视图测试全部“待完成”“已完成”“逾期”“今日”“本周”完成任务点击复选框快速完成任务查看任务状态变化查看任务详情点击任务卡片进入详情页查看任务完整信息测试编辑和删除功能测试自动生成添加植物并记录浇水时间手动触发任务自动生成查看自动生成的浇水任务8.2 预期效果功能预期效果任务统计正确显示各状态任务数量任务筛选切换筛选器正确过滤任务列表添加任务保存成功后返回列表并刷新完成任务复选框勾选后任务标记为已完成优先级展示不同优先级显示不同颜色日期格式化显示今天明天等易读格式关联对象正确显示关联的植物或地块名称自动生成根据规则自动生成任务,带自动标识过期更新过期的待完成任务自动标记为逾期九、常见问题与解决方案9.1 任务保存失败问题:点击保存后提示保存失败解决方案:检查必填字段是否已填写(任务类型和标题)确认存储权限已授予查看控制台错误日志9.2 任务自动生成不工作问题:点击生成按钮后没有生成任务解决方案:检查是否已添加植物或地块数据确认植物的浇水/施肥记录已存在查看是否已有相同类型的待完成任务检查自动生成的条件是否满足9.3 关联对象无法选择问题:点击选择关联对象后没有选项解决方案:确认已添加植物或地块数据检查数据是否正确加载查看控制台是否有数据加载错误9.4 任务列表为空问题:添加任务后列表仍显示为空解决方案:确认保存成功(查看Toast提示)检查当前选中的筛选器是否匹配刷新页面或重新进入查看存储数据是否正确十、总结本篇教程完成了:✅ 任务数据模型理解(TaskInfo、TaskStatus、TaskPriority、TaskType)✅ TaskService核心方法(CRUD、筛选、自动生成)✅ 任务列表页面(统计、筛选、快速完成)✅ 添加任务页面(类型选择、优先级、关联对象)✅ 任务自动生成机制(植物任务、地块任务)✅ 页面路由配置关键技术点:技术点说明枚举类型使用枚举定义任务类型、状态、优先级独立存储任务独立存储,支持跨实体查询自动生成基于业务规则智能生成任务关联管理任务可关联植物或地块状态管理自动更新过期任务状态记录同步完成任务时同步更新关联对象任务管理的业务价值:提醒功能:根据截止日期提醒用户及时处理智能生成:自动生成浇水、施肥、收获等常规任务工作计划:通过任务列表规划农事工作历史记录:已完成任务作为操作历史关联追踪:任务与植物/地块关联,便于追溯十一、下一步在下一篇教程中,我们将学习:成本记录数据模型设计成本类型管理(种子、肥料、农药、人工等)成本记录添加与编辑成本统计与分析成本报表展示成本与地块、作物的关联教程版本:v1.0更新日期:2026-01适用版本:DevEco Studio 5.0, HarmonyOS API 17

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询