优化日程管理功能
This commit is contained in:
@@ -18,21 +18,32 @@
|
||||
<div class="stats-row">
|
||||
<div class="stat-card">
|
||||
<div class="stat-label">今日待办</div>
|
||||
<div class="stat-value">{{ stats.today_total || 0 }}</div>
|
||||
<div class="stat-sub">已完成 {{ stats.today_done || 0 }}</div>
|
||||
<div class="stat-value is-green">{{ todayPending }}</div>
|
||||
<div class="stat-sub">
|
||||
共 {{ stats.today_total || 0 }} 项 · 已完成
|
||||
{{ stats.today_done || 0 }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-label">本周日程</div>
|
||||
<div class="stat-value">{{ stats.week_total || 0 }}</div>
|
||||
<div class="stat-value is-blue">{{ weekPending }}</div>
|
||||
<div class="stat-sub">
|
||||
共 {{ stats.week_total || 0 }} 项 · 已完成
|
||||
{{ stats.week_done || 0 }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-label">本月日程</div>
|
||||
<div class="stat-value">{{ stats.month_total || 0 }}</div>
|
||||
<div class="stat-sub">已完成 {{ stats.month_done || 0 }}</div>
|
||||
<div class="stat-value is-orange">{{ monthPending }}</div>
|
||||
<div class="stat-sub">
|
||||
共 {{ stats.month_total || 0 }} 项 · 已完成
|
||||
{{ stats.month_done || 0 }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="stat-card" :class="{ danger: (stats.overdue || 0) > 0 }">
|
||||
<div class="stat-label">逾期未完成</div>
|
||||
<div class="stat-value">{{ stats.overdue || 0 }}</div>
|
||||
<div class="stat-value is-red">{{ stats.overdue || 0 }}</div>
|
||||
<div class="stat-sub">项待处理</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -406,6 +417,18 @@ import {
|
||||
const viewMode = ref("calendar");
|
||||
const stats = ref({});
|
||||
|
||||
// 今日剩余待办(未完成)= 今日总任务 - 今日已完成
|
||||
const todayPending = computed(
|
||||
() => (stats.value.today_total || 0) - (stats.value.today_done || 0)
|
||||
);
|
||||
// 本周 / 本月剩余未完成数量
|
||||
const weekPending = computed(
|
||||
() => (stats.value.week_total || 0) - (stats.value.week_done || 0)
|
||||
);
|
||||
const monthPending = computed(
|
||||
() => (stats.value.month_total || 0) - (stats.value.month_done || 0)
|
||||
);
|
||||
|
||||
// ---------- 待办分类 tabs ----------
|
||||
// all-全部 today-今日 pending-未完成 done-已完成
|
||||
// 注:后端仍支持 ongoing(进行中 = 跨天延期中的任务),当前不启用;
|
||||
@@ -829,6 +852,21 @@ function reloadAll() {
|
||||
return Promise.all(tasks);
|
||||
}
|
||||
|
||||
// 数据刷新后用最新对象回同步 detailItem,避免备注保存 / 图片变更后
|
||||
// detailItem 仍指向旧对象(其 content 未更新),导致编辑时回显旧内容
|
||||
watch([calendarItems, listData], () => {
|
||||
if (!detailVisible.value || !detailItem.value) {
|
||||
return;
|
||||
}
|
||||
const id = detailItem.value.id;
|
||||
const fresh =
|
||||
calendarItems.value.find(i => i.id === id) ||
|
||||
listData.value.find(i => i.id === id);
|
||||
if (fresh) {
|
||||
detailItem.value = fresh;
|
||||
}
|
||||
});
|
||||
|
||||
// ---------- 展示辅助 ----------
|
||||
// YYYY-MM-DD -> M月D日,用于"已顺延至"标签
|
||||
function shortDate(value) {
|
||||
@@ -968,6 +1006,17 @@ onMounted(() => {
|
||||
margin: 4px 0 2px;
|
||||
}
|
||||
|
||||
/* 统计卡片大数字按分类配色:今日绿 / 本周蓝 / 本月橙 / 逾期红 */
|
||||
.stat-value.is-green {
|
||||
color: #67c23a;
|
||||
}
|
||||
.stat-value.is-blue {
|
||||
color: #409eff;
|
||||
}
|
||||
.stat-value.is-orange {
|
||||
color: #e6a23c;
|
||||
}
|
||||
.stat-value.is-red,
|
||||
.stat-card.danger .stat-value {
|
||||
color: #f56c6c;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user