Agent Skills
返回列表
Sortable 拖拽排序

Sortable 拖拽排序

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f1b049da/sortable-lane-schedule。

技能介绍

要解决什么问题

意向池、线索池或待办列表里,用户希望拖一下就能改优先级;看板或多阶段流程里,卡片要在不同泳道之间移动,同时列内顺序也要对。若只改 DOM、不同步数组,Vue 重渲染或刷新后顺序会乱;若在拖拽过程中频繁打 API,交互会卡;整卡可拖还会和按钮、链接抢点击。

技能如何工作

本技能围绕 SortableJS(常见依赖 sortablejs)约定两类场景:

  • 意向池优先级:单列表纵向拖拽,更新 priority / sort(语义需在项目内统一,例如数值越小越靠前)。
  • 看板泳道排程:每条泳道一个容器,共享同一 group(如 kanban)才能跨列互拖;跨列时更新 laneId 与源列、目标列内的 sort / order。

推荐在 onEnd 里用索引精确改同一份 board 状态(如 moveCard + persist()),避免「读 DOM 猜顺序」。复杂卡片用 .drag-handle 配合 filter / handle;组件卸载前对实例调用 sortable.destroy(),多泳道可用 Map 统一管理。

适用边界与注意点

| 维度 | 意向池 | 看板泳道 |
|------|--------|----------|
| 容器 | 1 | 每泳道 1 个,group 必须一致 |
| 写入字段 | priority / sort | laneId + 列内顺序 |

硬约束:数据源是真相,拖完必须落库或可撤销,禁止静默只改本地;空泳道需 min-height 与 emptyInsertThreshold 等配置。更多选项与 Vue 模板见技能附带的 reference.md 与 templates/vue-pool-and-board.md。

使用场景

  • CRM 意向池列表里,销售用纵向拖拽调整线索跟进优先级,松手后把新的 sort 写回接口
  • 多阶段看板上,把卡片从「待处理」泳道拖到「进行中」,同时更新 laneId 与两列内顺序
  • 待办/线索池单列表场景,用拖拽改 priority,且刷新页面后顺序与数据库一致
  • Vue 3 页面里多条泳道并排,卡片跨列互拖排程,空列也要能接住拖入的卡片

适合人员

  • 做 CRM/线索系统的前端,要在意向池实现「拖一下改优先级」且不能只做 DOM 排序
  • 负责项目看板或迭代流程页的工程师,需要跨泳道拖卡片并同步 laneId 与列内 order
  • 用 Vue 3 维护复杂卡片(按钮、链接多)的开发者,想用 drag-handle 避免拖拽抢点击
  • 接入 SortableJS 后遇到刷新乱序或重复绑定的维护者,需要对齐 onEnd 落库与 destroy 生命周期