HarmonyOS_ArkTs_API(8)
本文介绍了基于鸿蒙HarmonyOS ArkTS构建的任务管理系统,该系统是梦想生活规划师应用的核心组件。系统通过任务实体模型实现梦想分解,提供任务检索、状态管理、梦想关联等功能,并包含多种UI组件。核心特点包括优先级系统、安全删除机制以及与首页的集成,帮助用户将抽象目标转化为可执行任务,实现持续进步。系统采用TypeScript接口定义任务数据结构,通过API实现任务管理操作,并包含错误处理机制
·
HarmonyOS_ArkTs_API(8)
概述
任务管理系统是梦想生活规划师应用的关键组成部分,为用户提供了将更大目标(梦想)分解为可管理、可执行任务的工具。基于鸿蒙HarmonyOS ArkTS构建,该系统实现了对任务的高效跟踪、组织和完成,这些任务最终会引导用户实现梦想。任务管理功能包括截止日期跟踪、优先级分配、状态更新以及与更大的梦想框架的集成。
核心数据模型
任务实体结构设计捕捉了可执行项的所有必要方面:
export interface Task {
id: number;
dreamId: number;
title: string;
description: string;
status: number;
priority: number;
deadline: string;
createdAt: string;
updatedAt: string;
completionDate: string;
notes: string;
}
核心功能
任务检索与过滤
系统提供了各种基于不同标准检索和组织任务的方法:
// 获取今日任务
export function getTodayTasks(userId: number, page: number = 0, size: number = 5): Promise<PageResponse<Task>> {
const params: RequestData = { page, size };
try {
return request<PageResponse<Task>>(
RequestMethod.GET,
`/tasks/user/${userId}/today`,
params as QueryParams
);
} catch (error) {
console.error(`获取今日任务列表失败: ${error instanceof Error ? error.message : String(error)}`);
throw new Error(`获取今日任务列表失败: ${error instanceof Error ? error.message : String(error)}`);
}
}
// 获取即将到期任务
export function getUpcomingTasks(userId: number, days: number = 7, page: number = 0, size: number = 5): Promise<PageResponse<Task>> {
const params: RequestData = { days, page, size };
try {
return request<PageResponse<Task>>(
RequestMethod.GET,
`/tasks/user/${userId}/upcoming`,
params as QueryParams
);
} catch (error) {
console.error(`获取即将到期任务列表失败: ${error instanceof Error ? error.message : String(error)}`);
throw new Error(`获取即将到期任务列表失败: ${error instanceof Error ? error.message : String(error)}`);
}
}
状态管理
一个重要功能是能够更新任务状态,这会影响整体梦想完成率:
export function updateTaskStatus(taskId: number, status: number): Promise<Task> {
try {
return request<Task>(RequestMethod.PUT, `/tasks/${taskId}/status/${status}`);
} catch (error) {
console.error(`更新任务状态失败: ${error instanceof Error ? error.message : String(error)}`);
throw new Error(`更新任务状态失败: ${error instanceof Error ? error.message : String(error)}`);
}
}
梦想关联
任务与特定梦想相关联,允许用户查看与特定目标相关的所有任务:
export function getTasksByDreamId(dreamId: number): Promise<Task[]> {
try {
console.info(`获取梦想任务列表,dreamId: ${dreamId}`);
return request<Task[]>(RequestMethod.GET, `/tasks/dream/${dreamId}`);
} catch (error) {
const errorMsg = `获取梦想任务列表失败: ${error instanceof Error ? error.message : String(error)}`;
console.error(errorMsg);
throw new Error(errorMsg);
}
}
UI组件
任务管理界面包含几个专门的组件:
- TaskListComponent:以列表格式显示任务,提供排序和过滤选项
- TaskCardComponent:单个任务的可视化表示,带有状态指示器
- TaskEditForm:用于添加和编辑任务详情的表单
- TaskCalendarView:按截止日期的任务日历可视化
- TaskStatusToggle:标记任务完成/未完成的快速状态更新控制
高级功能
任务优先级系统
任务实现了优先级系统,帮助用户关注最重要的项目:
enum TaskPriority {
LOW = 0,
MEDIUM = 1,
HIGH = 2,
URGENT = 3
}
// 优先级显示的组件实现
@Component
struct TaskPriorityIndicator {
@Prop priority: number;
build() {
Row() {
if (this.priority === TaskPriority.URGENT) {
Image($r('app.media.ic_priority_urgent'))
.width(24)
.height(24)
Text('紧急')
.fontColor('#FF4757')
} else if (this.priority === TaskPriority.HIGH) {
Image($r('app.media.ic_priority_high'))
.width(24)
.height(24)
Text('高')
.fontColor('#FF8C42')
}
// 其他优先级级别...
}
}
}
删除机制
任务删除过程包含安全确认对话框,防止意外数据丢失:
showDeleteConfirmDialog(): void {
const dialogOptions: promptAction.ShowDialogOptions = {
title: '确认删除',
message: '确定要删除这个任务吗?此操作无法撤销。',
buttons: [
{ text: '取消', color: '#666666' },
{ text: '删除', color: '#FF4757' }
]
};
promptAction.showDialog(dialogOptions)
.then((result: DialogResultType) => {
if (result.index === 1) {
this.confirmDeleteTask(); // 执行删除
}
});
}
与首页集成
任务系统与首页集成,向用户显示他们最紧迫的任务:
export function getHomePageData(userId: number): Promise<HomePageData> {
console.info(`请求首页数据,userId: ${userId}`);
try {
return request<HomePageData>(RequestMethod.GET, `/home/${userId}`);
} catch (error) {
console.error(`获取首页数据失败: ${(error instanceof Error ? error.message : String(error))}`);
throw new Error(`获取首页数据失败: ${error instanceof Error ? error.message : String(error)}`);
}
}
任务管理系统在将抽象梦想转化为具体行动方面发挥着至关重要的作用,为用户提供了通过有组织和优先排序的任务跟踪实现目标持续进步所需的工具。
更多推荐



所有评论(0)