|
|
@@ -1,14 +1,34 @@
|
|
|
<template>
|
|
|
<PlayfulCard elevation="1">
|
|
|
<view class="container">
|
|
|
+ <!-- 批量操作栏 -->
|
|
|
+ <view class="batch-bar" v-if="batchMode">
|
|
|
+ <checkbox :checked="isAllSelected" @click="toggleSelectAll" />
|
|
|
+ <text class="batch-label">全选</text>
|
|
|
+ <view class="batch-actions">
|
|
|
+ <button class="batch-btn complete" @click="batchComplete" :disabled="selectedTasks.length === 0">批量完成</button>
|
|
|
+ <button class="batch-btn delete" @click="batchDelete" :disabled="selectedTasks.length === 0">批量删除</button>
|
|
|
+ </view>
|
|
|
+ <button class="batch-exit" @click="exitBatchMode">退出</button>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- 正常模式顶部栏 -->
|
|
|
+ <view class="header-bar" v-else>
|
|
|
+ <text class="header-title">今日任务</text>
|
|
|
+ <button class="btn-batch" @click="enterBatchMode" v-if="tasks.length > 0">批量操作</button>
|
|
|
+ </view>
|
|
|
+
|
|
|
<!-- 任务列表 -->
|
|
|
<view class="task-list" v-if="tasks.length > 0">
|
|
|
<view
|
|
|
v-for="task in tasks"
|
|
|
:key="task.id"
|
|
|
class="task-item"
|
|
|
- :class="{ completed: task.status === 'completed' }"
|
|
|
+ :class="{ completed: task.status === 'completed', selected: selectedTasks.includes(task.id) }"
|
|
|
>
|
|
|
+ <view class="task-checkbox" v-if="batchMode" @click="toggleTaskSelect(task.id)">
|
|
|
+ <checkbox :checked="selectedTasks.includes(task.id)" />
|
|
|
+ </view>
|
|
|
<view class="task-left">
|
|
|
<view class="task-title">
|
|
|
{{ task.title }}
|
|
|
@@ -19,7 +39,7 @@
|
|
|
<text class="deadline">截止 {{ formatTime(task.deadline) }}</text>
|
|
|
</view>
|
|
|
</view>
|
|
|
- <view class="task-right">
|
|
|
+ <view class="task-right" v-if="!batchMode">
|
|
|
<button
|
|
|
v-if="task.status === 'pending'"
|
|
|
class="btn-complete"
|
|
|
@@ -38,7 +58,7 @@
|
|
|
|
|
|
<!-- 家长模式:添加任务按钮 -->
|
|
|
<button
|
|
|
- v-if="isParent"
|
|
|
+ v-if="isParent && !batchMode"
|
|
|
class="btn-primary add-btn"
|
|
|
@click="showAddModal = true"
|
|
|
>
|
|
|
@@ -170,7 +190,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { getTodayTasks, completeTask as completeTaskApi, createTask as createTaskApi, getChildren, getTodayParentTasks, completeParentTask as completeParentTaskApi } from '../../utils/api.js'
|
|
|
+import { getTodayTasks, completeTask as completeTaskApi, createTask as createTaskApi, getChildren, getTodayParentTasks, completeParentTask as completeParentTaskApi, batchCompleteTasks, batchDeleteTasks } from '../../utils/api.js'
|
|
|
import PlayfulCard from '@/components/PlayfulCard.vue'
|
|
|
|
|
|
export default {
|
|
|
@@ -185,6 +205,8 @@ export default {
|
|
|
taskTemplates: [], // 任务模板
|
|
|
selectedTemplate: null,
|
|
|
showAddModal: false,
|
|
|
+ batchMode: false,
|
|
|
+ selectedTasks: [],
|
|
|
newTask: {
|
|
|
title: '',
|
|
|
description: '',
|