fix: 工作台 待办事项卡片

This commit is contained in:
lzh
2026-02-10 23:32:58 +08:00
parent 79d886f91b
commit 4c2874bfd0
2688 changed files with 4537 additions and 2272 deletions

View File

@@ -4,7 +4,7 @@ import { computed, onMounted, onUnmounted, ref } from 'vue';
import { GlassCard } from '@vben/common-ui';
import { IconifyIcon } from '@vben/icons';
import { Button, Dropdown, message, Modal, Tag } from 'ant-design-vue';
import { Button, message, Modal, Tag } from 'ant-design-vue';
import {
getTrafficRealtime,
@@ -153,7 +153,6 @@ async function loadData() {
}
// --- 筛选和交互状态 ---
const priorityFilter = ref<'all' | 'P0' | 'P1' | 'P2'>('all');
const showCompleted = ref(false);
const selectedTask = ref<null | Task>(null);
const taskDetailVisible = ref(false);
@@ -162,11 +161,6 @@ const taskDetailVisible = ref(false);
const filteredTasks = computed(() => {
let tasks = urgentTasks.value;
// 按优先级筛选
if (priorityFilter.value !== 'all') {
tasks = tasks.filter((task) => task.priority === priorityFilter.value);
}
// 按状态筛选
if (!showCompleted.value) {
tasks = tasks.filter((task) => task.status !== 'completed');
@@ -254,10 +248,6 @@ function handleStatCardClick(stat: StatItem) {
message.info(`查看${stat.label}详情`);
}
function handleFilterChange(value: 'all' | 'P0' | 'P1' | 'P2') {
priorityFilter.value = value;
}
function getPriorityConfig(priority: string) {
const configs = {
P0: {
@@ -338,34 +328,8 @@ onUnmounted(() => {
<div :class="taskListClasses.header">
<h3 :class="taskListClasses.title">
<span :class="taskListClasses.titleDot"></span>
紧急待办事项
待办事项
</h3>
<Dropdown>
<Button type="text" size="small" :class="taskListClasses.filterButton">
筛选
<IconifyIcon icon="ant-design:filter-outlined" class="ml-1 text-xs" />
</Button>
<template #overlay>
<div :class="taskListClasses.filterMenu">
<div
v-for="option in [
{ label: '全部', value: 'all' },
{ label: 'P0 紧急', value: 'P0' },
{ label: 'P1 重要', value: 'P1' },
{ label: 'P2 普通', value: 'P2' },
]"
:key="option.value"
:class="[
taskListClasses.filterMenuItem,
priorityFilter === option.value && taskListClasses.filterMenuItemActive,
]"
@click="handleFilterChange(option.value as any)"
>
{{ option.label }}
</div>
</div>
</template>
</Dropdown>
</div>
<div :class="taskListClasses.listContainer">

View File

@@ -49,11 +49,11 @@ export const taskListClasses = {
/** 筛选菜单项激活状态 */
filterMenuItemActive: 'bg-orange-50 text-orange-600',
/** 任务列表容器 */
listContainer: 'flex-1 overflow-y-auto px-2',
listContainer: 'flex flex-1 flex-col overflow-y-auto px-2',
/** 空状态容器 */
emptyState: 'flex h-full items-center justify-center text-slate-400',
/** 空状态内容 */
emptyContent: 'text-center',
emptyContent: 'flex flex-col items-center text-center',
/** 空状态图标 */
emptyIcon: 'mb-2 text-4xl',
/** 任务项容器 */