fix: 工作台 待办事项卡片
This commit is contained in:
@@ -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">
|
||||
|
||||
@@ -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',
|
||||
/** 任务项容器 */
|
||||
|
||||
Reference in New Issue
Block a user