当前位置: 首页 > article >正文

第 29 课:任务页筛选方案预设与快捷视图

第 29 课任务页筛选方案预设与快捷视图这一课我们继续沿着任务管理页主线往下走把它从“能筛选”推进到“能复用工作台”让用户把当前筛选条件保存成方案以后可以一键切回。这一步很像真实后台系统里常见的我的待处理待评审优先处理高优先级任务池本周跟进项很多初学者会把这类功能理解成“多存几组条件”但真正重要的是哪些是当前页面的临时状态哪些是用户想长期复用的工作台它们应该怎么和 URL、localStorage 一起协同这一课一句话在做什么这一课我们完成了 6 件事给任务页增加“筛选方案预设”本地持久化。允许把当前关键字、状态、优先级和排序保存成一条命名方案。支持应用已保存方案并自动回到第一页。支持删除方案并在删除最后一条时清空本地存储。补了“回到默认工作视图”动作让临时筛选能一键复位。补上单元测试、E2E 和文档。这一课最重要的设计结论这一课最重要的结论是临时筛选状态不等于可复用工作台。为什么1. 临时筛选状态是“当前这次页面访问”例如你现在临时把任务页切成状态待开始优先级高排序截止日期从近到远这更像当前页面状态当前正在看的结果适合写进 URL因为它需要刷新恢复链接分享浏览器前进后退保留2. 筛选方案是“以后还想反复使用的工作台”如果你觉得这套筛选条件以后经常会用到那它就不再只是当前场景而是一个可复用视图一个工作台入口一个个人习惯所以它更适合放进localStorage而不是只停留在当前 URL 里。3. 应用筛选方案后当前真实页面状态仍然要同步回 URL这也是这一课特别值得记住的一点。筛选方案本身是本地偏好但一旦你点击“应用方案”它就变成了当前页面真实生效的筛选状态所以应用方案后页面仍然要把keywordstatusprioritysort继续同步进 URL。这和上一课“默认排序偏好”的原则是完全一致的。这一课在useTasksPage里做了什么文件src/composables/useTasksPage.ts这一课的核心依然在任务页组合式函数里。因为筛选方案本质上是页面级用户偏好它依赖当前筛选状态它还要和默认工作视图、分页、URL 同步一起配合这些逻辑不适合丢进单个组件里各自维护。新增了筛选方案的类型和本地存储 key这次新增了TaskFilterPresetTASK_TABLE_FILTER_PRESETS_STORAGE_KEY方案里保存的是一整套筛选快照keywordstatusFilterpriorityFiltersortOption这里要注意没有把页码存进去也没有把分页大小、显示列存进去为什么因为这一课聚焦的是筛选与排序工作台而页码是当前浏览位置分页大小、显示列属于另外两种个人偏好它们虽然都和“列表体验”有关但不是同一层语义。新增了标准化和比较函数这一课补了几类重要辅助函数关键字标准化状态筛选标准化优先级筛选标准化方案名称标准化方案快照比较函数本地方案恢复与写回函数这类函数的意义不是“为了代码看起来高级”而是不要直接相信 localStorage 里的数据永远干净。只要是本地存储就要默认考虑下面这些情况老版本数据结构用户手动改过异常写入重复名称空名称所以这一课继续延续我们前面反复练的模式先读 - 再校验 - 再标准化 - 再使用把“当前筛选快照”和“已保存方案”明确分开这一课新增了一个很关键的概念currentTaskFilterPresetSnapshot它表示当前页面正在使用的这一组筛选条件而taskFilterPresets表示用户已经保存下来的可复用方案列表这两者不能混在一起。因为当前快照是实时状态已保存方案是持久化工作台只有分开后面我们才能判断当前是不是命中了某条已保存方案当前是不是默认工作视图同名保存时应该更新还是新增新增了几个真正有业务语义的动作函数例如saveCurrentTaskFilterAsPreset()applyTaskFilterPreset()deleteTaskFilterPreset()resetTaskFiltersToDefaultView()这几个函数非常值得你注意。因为它们已经不是单纯的“改一个 ref”而是在表达真实的业务动作保存一套工作台切换到一套工作台删除一套工作台回到默认工作台这说明你的composable已经越来越像页面领域层而不只是“顺手抽几个函数”。为什么“回到默认工作视图”很重要这一课除了筛选方案本身还补了一个非常真实的后台动作回到默认工作视图这个动作背后的设计是关键字清空状态回到全部优先级回到全部排序恢复成当前defaultSortOption页码回到第一页这一步非常关键因为它把第 28 课和第 29 课真正串起来了第 28 课定义了“默认工作视图”的排序偏好第 29 课开始让页面具备“工作台切换”能力这样一来“默认工作视图”就不再只是说明文字而是一个真实可回退的页面状态。这一课在界面层做了什么文件src/components/tasks/TaskFilterPresetsPanel.vuesrc/views/TasksView.vue这一课新增了一个独立组件TaskFilterPresetsPanel为什么单独拆因为如果继续把这块逻辑塞进TaskFilterBar它会越来越像一个“大而全”的超级组件。而现在分开后TaskFilterBar负责临时筛选输入TaskFilterPresetsPanel负责工作台方案管理TasksView负责消息提示和确认框useTasksPage负责真正的状态和行为这就是一套比较清晰的分层。页面层负责什么这一课里页面层主要负责弹出“保存筛选方案”输入框弹出“删除筛选方案”确认框给出成功/失败消息提示这和我们前面处理删除任务、批量删除、恢复默认排序时的策略是一致的页面层负责交互反馈组合式函数负责业务状态这一课补了哪些测试1.useTasksPage.spec.ts新增覆盖从localStorage恢复筛选方案非法和重复方案清理保存当前筛选为方案同名方案更新应用方案后恢复筛选与排序应用方案后页码回到第一页回到默认工作视图删除最后一条方案后清空本地存储这一层测试主要在验证状态边界本地持久化边界方案比较与更新规则2.e2e/app.spec.ts新增覆盖设置状态筛选、优先级筛选和排序保存筛选方案回到默认工作视图再次应用方案验证 URL 查询参数同步验证真实任务结果变化重新进入干净任务页地址后方案仍然存在删除方案后从界面中消失这一层测试主要在验证Element Plus 下拉框真实交互方案面板真实点击流程localStorage 持久化是否真的生效这一课改了哪些文件src/types/task.tssrc/composables/useTasksPage.tssrc/components/tasks/TaskFilterPresetsPanel.vuesrc/views/TasksView.vuesrc/composables/__tests__/useTasksPage.spec.tse2e/pages/TasksPage.tse2e/app.spec.tsdocs/29-task-filter-presets-and-quick-views.mddocs/README.md这一课最值得你真正学会什么如果你只记住“多了一个保存筛选方案的按钮”那还不够。你更应该记住下面这 6 点当前页面筛选状态和可复用工作台不是一回事。临时状态更适合进 URL可复用方案更适合放在本地持久化。方案保存的是“筛选快照”不是所有列表偏好都往里塞。同名方案更新、非法数据清理、重复项去重都是本地持久化里很常见的真实工程问题。应用方案后当前真实页面状态仍然要同步到 URL。页面层和组合式函数的职责分层决定了这类复杂交互能不能长期维护。这一课的验证结果这一课相关改动完成后应至少通过npm run test:unit -- --runnpm run type-checknpm run lintnpm run test:e2e -- --projectchromium

相关文章:

第 29 课:任务页筛选方案预设与快捷视图

第 29 课:任务页筛选方案预设与快捷视图 这一课,我们继续沿着任务管理页主线往下走,把它从“能筛选”推进到“能复用工作台”: 让用户把当前筛选条件保存成方案,以后可以一键切回。 这一步很像真实后台系统里常见的&am…...

别只盯着main.c!揭秘TI C2000 DSP启动时,那些“看不见”的库文件(boot28.asm/args_main.c)都干了啥

别只盯着main.c!揭秘TI C2000 DSP启动时,那些“看不见”的库文件都干了啥 当你第一次在CCS中创建一个TI C2000 DSP工程时,映入眼帘的往往只有熟悉的main.c和链接脚本。但你是否好奇过,芯片上电后究竟是如何从冷启动状态一步步跳转…...

Bilibili下载器:如何解锁4K大会员视频的本地保存方案

Bilibili下载器:如何解锁4K大会员视频的本地保存方案 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 你是否曾为无法离线观…...

别再重启了!Surface Pro蓝牙失灵,试试这个PowerShell命令(Win10/Win11通用)

Surface Pro蓝牙失灵急救指南:5条PowerShell命令快速恢复连接 每次打开Surface Pro发现蓝牙图标神秘消失时,那种焦躁感我深有体会。作为常年携带Surface Pro出差的设计师,我经历过太多次演示前鼠标突然断连的尴尬。经过两年反复试验&#xff…...

如何快速制作专业级LRC歌词:免费开源工具歌词滚动姬终极指南

如何快速制作专业级LRC歌词:免费开源工具歌词滚动姬终极指南 【免费下载链接】lrc-maker 歌词滚动姬|可能是你所能见到的最好用的歌词制作工具 项目地址: https://gitcode.com/gh_mirrors/lr/lrc-maker 制作精准同步的LRC歌词文件,是每…...

XHS-Downloader深度解析:如何用开源工具高效采集小红书内容

XHS-Downloader深度解析:如何用开源工具高效采集小红书内容 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接…...

Winhance

链接:https://pan.quark.cn/s/828a0feaa168Winhance是一个C#应用程序,旨在卸载,优化和自定义您的Windows体验。从软件管理到系统优化和自定义,Winhance提供了增强Windows 10和11系统所需的一切。软件管理:可以管理Wind…...

别再死记硬背了!用‘点火公式’Wallis快速搞定高次幂三角积分(附Python验证脚本)

高次幂三角积分速算秘籍:Wallis点火公式实战指南 第一次遇到∫sin⁶xdx这样的积分时,我盯着题目发了半小时呆。传统的分部积分法需要反复套用公式,计算过程堪比俄罗斯套娃。直到发现Wallis公式——这个被学生们戏称为"点火公式"的神…...

别再死记硬背链式法则了!用一张图+三个例子彻底搞懂多元复合函数求导

多元复合函数求导:用计算图破解链式法则的思维困局 第一次看到多元复合函数的链式法则时,大多数人的反应都是"这公式怎么长得像化学方程式"。当教科书上突然抛出$\frac{\partial z}{\partial s}\frac{\partial z}{\partial x}\frac{\partial x…...

别再只用单一颜色了!ArcGIS地图符号化保姆级教程:从标记、线型到填充,手把手教你做出专业地图

ArcGIS地图符号化实战:从基础操作到视觉叙事的高级技巧 1. 地图符号化的艺术与科学 当我们面对一张城市设施分布图时,第一眼吸引注意力的往往不是数据本身,而是那些跳跃的色彩、精致的图标和流畅的线条。这正是地图符号化的魔力——它将冰冷的…...

你的神经网络真的在看对的地方吗?用Grad-CAM++和ScoreCAM给你的模型做个“视力检查”

神经网络视觉诊断:用Grad-CAM和ScoreCAM揭示模型注意力机制 当我们在医院接受视力检查时,医生会通过一系列测试判断我们的视觉系统是否存在问题。同样地,作为算法工程师,我们也需要一套可靠的诊断工具来检查神经网络的"视力&…...

为什么OpenAI、DeepMind、中科院脑智卓越中心同时缺席2026奇点大会主论坛?(意识伦理红线白皮书内部版泄露)

第一章:2026奇点智能技术大会:AGI与意识问题 2026奇点智能技术大会(https://ml-summit.org) AGI系统中的现象学建模挑战 本届大会首次设立“人工现象学”专题轨道,聚焦AGI是否可能具备第一人称体验(qualia)的实证路径…...

基于安卓的课堂互动与学情分析系统毕设

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在设计并实现一种基于安卓平台的课堂互动与学情分析系统,以解决传统课堂教学中师生互动不足、学生学习状态难以量化评估以及教学反馈滞后等问…...

React Native 中 Button 组件未定义的解决方案

在 React Native 项目中使用 Button 组件时出现 “Button is not defined” 错误,根本原因是 React Native 核心库已移除默认导出的 Button,需改用 TouchableOpacity Text 或显式导入 react-navigation/elements 中的按钮组件。 在 react native 项…...

基于Python的私人西服定制系统毕设源码

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在开发一套基于Python的私人西服定制系统,以满足个性化定制需求,提高客户满意度,并优化西服生产流程。具体研究目的如…...

从BlueCMS v1.6的LFI漏洞看早期CMS的代码安全设计缺陷与审计思路

从BlueCMS v1.6漏洞透视早期PHP系统的安全设计困局 十年前的地方门户网站建设黄金期,BlueCMS这类开源系统以"快速上线"为卖点席卷市场。如今回看v1.6版本的本地文件包含漏洞,本质上是早期PHP开发范式集体失语的缩影——当include/payment/.$_P…...

别再只用QMutex了!用QSemaphore搞定Qt多线程资源池(附生产者消费者完整代码)

解锁Qt多线程新姿势:QSemaphore在资源池与生产者-消费者模型中的实战 在Qt多线程编程中,开发者常常陷入QMutex的舒适区,却忽略了更强大的并发控制工具QSemaphore。想象一下这样的场景:你的应用需要同时下载100张图片,但…...

5毛钱的芯片能做啥?用NE555定时器做个呼吸灯和延时开关(附完整电路图)

5毛钱的芯片玩转电子魔法:NE555呼吸灯与延时开关实战指南 在电子爱好者的世界里,NE555定时器就像是一把瑞士军刀——简单、便宜却功能强大。这款诞生于1971年的芯片至今仍是创客们的最爱,批量采购单价不到5毛钱,却能实现从定时控制…...

ROS Noetic下Gazebo 11仿真避坑实录:从‘模型能动’到‘控制丝滑’的进阶配置

ROS Noetic下Gazebo 11仿真避坑实录:从‘模型能动’到‘控制丝滑’的进阶配置 当你终于让机械臂模型在Gazebo中动起来的那一刻,那种成就感简直难以言表。但很快你会发现,让模型动起来只是万里长征的第一步——真正让机械臂按照预期轨迹精准运…...

告别FreeGLUT!用Qt QOpenGLWidget 和 Assimp 库轻松加载多种3D模型(STL/OBJ/FBX)

现代Qt 3D开发实战:基于QOpenGLWidget与Assimp的多格式模型加载引擎 在工业设计、医疗成像和游戏开发领域,3D模型可视化一直是核心技术痛点。传统方案如FreeGLUT不仅需要处理繁琐的窗口上下文管理,对多种模型格式的支持更是捉襟见肘。本文将展…...

用FreeSWITCH + UniMRCP Server搭建一个能‘听懂话’的智能语音测试环境(含Lua脚本详解)

从零构建智能语音交互测试环境:FreeSWITCH与UniMRCP深度整合实战 在智能客服和语音交互系统开发中,快速验证语音识别(ASR)功能的准确性至关重要。本文将带你搭建一个完整的测试环境,通过FreeSWITCH与UniMRCP Server的协同工作,实现…...

ABAQUS网格划分实战:从Hex到Tet,手把手教你搞定复杂模型的网格(附算法选择避坑指南)

ABAQUS网格划分实战:从Hex到Tet,手把手教你搞定复杂模型的网格(附算法选择避坑指南) 在有限元分析的浩瀚海洋中,网格划分就像是为数学模型搭建的骨架——它既要精确捕捉结构的力学行为,又要兼顾计算效率。对…...

别再手动调参了!用Python+K-means为你的YOLOv5/V8数据集自动生成最佳Anchor Boxes

用K-means聚类为YOLO模型自动生成最佳Anchor Boxes的完整实践指南 在目标检测任务中,Anchor Boxes的设计直接影响着模型的检测精度和训练效率。本文将带你从零开始,通过Python实现一个完整的自动化流程,使用K-means聚类算法为你的YOLOv5/v8数…...

手把手教你配置STM32的QSPI外设:以读写W25Q256JV Flash为例(含完整代码)

STM32 QSPI外设深度实战:W25Q256JV Flash高速存储全解析 第一次接触STM32的QSPI外设时,我被官方手册里密密麻麻的寄存器描述弄得晕头转向。直到在真实项目中用它驱动W25Q256JV Flash芯片,才真正理解这个外设的精妙之处——它不仅仅是SPI的&qu…...

我的停车场项目翻车了:MaixCAM车牌识别中的串口通信与数据滤波避坑指南

MaixCAM车牌识别实战:从数据抖动到稳定通信的工程化解决方案 停车场闸机突然放行了一辆错误车辆,而正确识别的车牌却在系统里重复计费三次——这是我在最近一个智能停车场项目中遇到的真实灾难。当MaixCAM作为视觉协处理器与主控单片机通信时&#xff0c…...

STM32无源蜂鸣器音乐盒:用PWM实现《小星星》完整曲谱(附CubeMX配置)

STM32无源蜂鸣器音乐盒:用PWM实现《小星星》完整曲谱(附CubeMX配置) 当无源蜂鸣器遇上STM32的PWM功能,简单的电子元件就能变身微型音乐合成器。本文将带你从音乐编程的角度,探索如何用定时器精准控制每个音符的频率和时…...

从求π到验证支付金额:揭秘‘乘基取整’算法在真实项目中的三种高频应用

从求π到验证支付金额:揭秘‘乘基取整’算法在真实项目中的三种高频应用 第一次接触"乘基取整"算法时,我正为一个金融项目焦头烂额——系统频繁出现0.01元的金额误差。直到偶然翻到大学时的算法笔记,这个看似简单的数学技巧竟成了解…...

专业NCM文件解密指南:高效解锁网易云音乐加密音频的完整解决方案

专业NCM文件解密指南:高效解锁网易云音乐加密音频的完整解决方案 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 项目概述与技术原理 NCMDump是一款专注于解密网易云音乐NCM加密格式的专业工具,它能够将受版…...

SITS2026 AGI原型系统性能数据全曝光,98.7%任务自闭环率,为什么传统评估基准已失效?

第一章:SITS2026 AGI原型系统性能数据全曝光 2026奇点智能技术大会(https://ml-summit.org) SITS2026 AGI原型系统于2026年3月在ML Summit实验室完成全栈基准测试,覆盖推理延迟、多模态对齐精度、长程记忆检索吞吐及能源效率四大核心维度。所有测试均在…...

**BERT模型在中文文本分类中的实战优化与性能提升策略**在自然语言处理(NLP)领域,**BERT**(Bi

BERT模型在中文文本分类中的实战优化与性能提升策略 在自然语言处理(NLP)领域,BERT(Bidirectional Encoder Representations from Transformers)已成为主流预训练模型之一。尤其对于中文任务而言,其双向上下…...