Notes · 2025.07.26
智链 3.0 的列表筛选
校级大模型创新实践平台。
筛选条件勾到第四个,表格变成空白。空白如果只是一张白页,老师会以为系统挂了。教育部信息网络工程研究中心,我从 2025 年 7 月起做前端实习。智链 3.0,Vue3 + TypeScript + Vite,校级立项评分 90.00,官网 ilink.bupt.edu.cn。我做的是关键页面、列表筛选、结果呈现、接口联调。空白必须被画成空状态。
用户是老师和同学
校级平台的用户不是演示评委。评委会原谅一次转圈。老师每天进来找自己的项目、学生、版本,筛选一多,空和错比动画重要。动画在立项材料里好看。好看解决不了「为什么我什么都看不见」。看不见的原因可能是条件互斥,可能是接口 500,可能是权限不够。三种原因如果都显示同一张白页,值班的人只能重载。
我把空状态写成三种句子。一种说当前条件下没有记录,并提供清筛选。一种说请求失败,并留下可复制的错误信息。一种说没有权限。句子土,值班时能用。能用比「暂无数据」四个字宽。四个字太宽,什么原因都装得下,也就什么原因都说不清。
筛选条件存在地址栏还是只存在组件状态,会决定刷新之后人还在不在现场。老师习惯刷新。刷新把条件吃掉,他会以为自己记错了。我把关键筛选同步到查询参数。同步之后,联调时后端也看得见同一份条件。看得见,才谈得上是接口问题还是前端问题。看不见,两边对喊。
联调比画表格久
列表页看起来像一张表。表后面是分页、排序、筛选、版本号。版本迭代在智链里是真需求:同一条记录会留下不同版本,呈现必须标明看的是哪一版。标不明,讨论会变成两拨人盯着两个时间点的数据吵架。吵架看起来像产品问题,根子经常是页面没把版本画出来。
我不是产品负责人。校级立项 90.00 不是我的分数,是项目的分数。我的工作是把页面和接口对上。对上的意思是:筛选字段名和后端一致,空列表和错误码一致,分页总数和当前页一致。不一致的时候,先改自己这边的假设,再提接口变更。变更要同步。不同步,筛选会在某个条件组合下静默丢数据。静默丢数据比报错可怕。
Vite 热更新在改筛选的下午很有用。改一个条件回显,秒出。秒出会让人少做一次整包检查。演示前我仍会整包重来一次。热更新骗过人:某个状态只在热替换后存在,冷启动没有。冷启动才是老师明天打开的那个。明天打开的那个,才算数。
结果呈现要经得住追问
呈现不是把 JSON 铺开。铺开是联调技巧。给老师看的列要少,少到能在笔记本屏幕上对得上。对得上之后,点进去才是详情。详情里再放版本、日志、相关接口返回。列表阶段信息一多,筛选的人会对着横向滚动条放弃。放弃之后,他会要你导出。导出来的如果和筛选不一致,信任一次用完。
我跟的是前端。后端字段怎么定,我参与联调,不假装拍板。拍板权不在实习生这侧。能做的是:把不一致复现出来,写成可重放的请求,交给接口的人。可重放比「有时候会空」有用。有时候会空,永远排不上号。排不上号的 bug,会一直躺在老师的白页里。
官网能打开,和筛选在复杂条件下仍诚实,是两件事。和 textguard.site 那次一样,解析成功只证明名字。智链的名字在校内已经很熟。熟,用户更不容忍白页。白页在熟的系统里会被理解成退步。退步的体验,立项分数救不回来。
实习生不写产品叙事
我收到的限制写在工位上:前端实习生把列表筛选、空状态、接口联调做扎实,不要把智链 3.0 写成「我做的平台」。平台是中心的,评分是立项的,官网是 ilink.bupt.edu.cn。我交出的是页面还在条件很多时也说得出为什么空。说得出,老师才肯继续用筛选,而不是每次都把全表拉下来自己找。
空状态比动画先做
筛选条件一多,结果列表经常是空的。空的时候要告诉人是「没有匹配」还是「接口挂了」。这两句在校级平台里比过渡动画重要。用户是老师和同学,会刷新、会改条件、会把空列表截去问。问的时候我得指到请求和返回,不能指到设计稿。