Skip to content

Conversations 会话管理

使用import { Conversations } from 'vue-element-plus-x'
文档
编辑此页更新日志Issue 反馈

介绍

Conversations 是一个基于 Vue 3 和 Element Plus 开发的会话管理组件,支持分组展示、菜单交互、滚动加载、自定义样式等功能。适用于消息列表、文件管理、任务分组等场景,通过灵活的配置和插槽扩展,满足多样化的业务需求。

代码演示

基础使用

  • 今天的会话111111111111111111111111111
  • 今天的会话2
  • 昨天的会话1
  • 昨天的会话2
  • 一周前的会话
  • 一个月前的会话
  • 很久以前的会话

通过 @change 事件 获取选中的会话信息。 v-model:active 绑定当前选中的会话。

时间分组与吸顶效果

  • today
  • 今天的会话111111111111111111111111111
  • 今天的会话2
yesterday
  • 昨天的会话1
  • 未分组
  • 昨天的会话2
  • 一周前的会话
  • 一个月前的会话
  • 很久以前的会话
  • 时间分组与吸顶效果

    自动根据会话项的 group 字段分组,滚动时分组标题吸顶显示,提升导航体验。

    自定义分组排序

    • 📚 学习
    • 学习笔记1
    • 学习笔记2
    📊 工作
  • 工作文档1
  • 工作文档11111111111111111111111111111111111111111
  • 工作文档3
  • 工作文档4
  • 工作文档5
  • 工作文档6
  • 🏠 个人
  • 个人文档1
  • 📁 未分组
  • 未分组项目
  • 通过 groupable 属性传入排序函数,自定义分组顺序(如:学习 > 工作 > 个人 > 未分组)。

    内置下拉菜单

    • 菜单测试项目 1 - 长文本效果演示文本长度溢出效果测试菜单测试项目 1 - 长文本效果演示文本长度溢出效果测试
    • 菜单测试项目 2
    • 菜单测试项目 3
    • 菜单测试项目 4
    • 菜单测试项目 5
    • 菜单测试项目 6
    • 菜单测试项目 7
    • 菜单测试项目 8
    • 菜单测试项目 9
    • 菜单测试项目 10
    • 菜单测试项目 11
    • 菜单测试项目 12
    • 菜单测试项目 13
    • 菜单测试项目 14

    内置基础菜单功能(重命名、删除),支持菜单命令回调,轻松实现会话项的快捷操作。

    @menu-command 触发内置的菜单点击事件。

    内置下拉菜单按钮展示风格

    • 菜单测试项目 1 - 长文本效果演示文本长度溢出效果测试菜单测试项目 1 - 长文本效果演示文本长度溢出效果测试
    • 菜单测试项目 2
    • 菜单测试项目 3
    • 菜单测试项目 4
    • 菜单测试项目 5
    • 菜单测试项目 6
    • 菜单测试项目 7
    • 菜单测试项目 8
    • 菜单测试项目 9
    • 菜单测试项目 10
    • 菜单测试项目 11
    • 菜单测试项目 12
    • 菜单测试项目 13
    • 菜单测试项目 14

    使用 showBuiltInMenuType 属性,可以设置是否总是显示内置菜单按钮。

    showBuiltInMenuType 属性的可选值有:

    • hover:鼠标悬停时显示内置菜单按钮(默认)
    • always:总是显示内置菜单按钮

    自定义菜单交互

    • 菜单测试项目 1 - 长文本效果演示文本长度溢出效果测试菜单测试项目 1 - 长文本效果演示文本长度溢出效果测试
    • 菜单测试项目 2
    • 菜单测试项目 3
    • 菜单测试项目 4
    • 菜单测试项目 5
    • 菜单测试项目 6
    • 菜单测试项目 7
    • 菜单测试项目 8
    • 菜单测试项目 9
    • 菜单测试项目 10
    • 菜单测试项目 11
    • 菜单测试项目 12
    • 菜单测试项目 13
    • 菜单测试项目 14

    通过插槽扩展菜单内容,支持图标、文本及自定义命令,满足复杂业务逻辑。

    懒加载功能

    • 初始项目1
    • 初始项目2
    • 初始项目3
    • 初始项目1
    • 初始项目2
    • 初始项目3
    • 初始项目1
    • 初始项目2
    • 初始项目3

    滚动至底部时自动触发加载更多数据,支持加载状态显示,优化大数据量场景性能。

    自定义样式与分组标题

    • 📚 学习
    • 菜单测试项目 4
    • 菜单测试项目 5
    • 菜单测试项目 6
    • 菜单测试项目 7
    📊 工作
  • 菜单测试项目 1 - 长文本效果演示文本长度溢出效果测试菜单测试项目 1 - 长文本效果演示文本长度溢出效果测试
  • 菜单测试项目 2
  • 菜单测试项目 3
  • 🏠 个人
  • 菜单测试项目 8
  • 菜单测试项目 9
  • 菜单测试项目 10
  • 菜单测试项目 11
  • 📁 未分组
  • 菜单测试项目 12
  • 菜单测试项目 13
  • 菜单测试项目 14
  • 通过插槽和样式属性自定义会话项外观及分组标题图标,支持悬停、激活、菜单打开状态的样式定制。

    自定义主题

    通过 ConfigProvider.themeOverrides 覆盖 Conversations 的主题变量。完整变量表与可复制模板见:

    开启覆写后,可看到列表背景与条目高度变化。
    • 新对话
    • 需求讨论
    • 异常排查
    • 版本回归

    通过 ConfigProvider.themeOverrides 覆盖 Conversations--elx-* 变量(列表背景、标签高度等)。

    属性

    属性名类型是否必填默认值描述
    itemsConversationItem<T>[][]会话项数据列表,包含 labelgroupdisabled 等字段
    groupableboolean | GroupableOptionsfalse是否启用分组功能,传入对象可自定义分组排序(sort 函数)
    showBuiltInMenubooleanfalse是否显示内置菜单(重命名、删除)
    loadMore() => void-懒加载回调函数,滚动至底部时触发
    loadMoreLoadingbooleanfalse加载更多状态,控制加载动画显示
    showToTopBtnbooleanfalse是否显示返回顶部按钮
    labelKeystring'label'会话项标签字段名
    rowKeystring'id'会话项唯一标识字段名
    itemsStyleCSSProperties{}会话项默认样式
    itemsHoverStyleCSSProperties{}会话项悬停样式
    itemsActiveStyleCSSProperties{}会话项激活样式
    itemsMenuOpenedStyleCSSProperties{}会话项菜单打开时样式

    插槽

    插槽名参数描述
    #groupTitle{ group: GroupItem }自定义分组标题,支持添加图标或特殊样式
    #label{ item: ConversationItem<T> }自定义会话项标签内容,支持文本溢出处理或富文本
    #more-filled{ item, isHovered, isActive, isMenuOpened, isDisabled }会话项右侧附加内容,显示状态标识(如:禁用标记、操作图标)
    #menu{ item: ConversationItem<T>, handleOpen, handleClose }自定义菜单内容,支持按钮、图标或复杂交互组件,handleOpen用来手动控制下拉菜单的开启,handleClose用来手动控制下拉菜单的关闭.
    #header-容器头部插槽,用于添加搜索栏、筛选按钮等自定义内容
    #footer-容器底部插槽,用于添加分页、统计信息等自定义内容

    事件

    事件参数描述
    @menuCommand(command: ConversationMenuCommand, item: ConversationItem): void菜单命令回调,支持重命名、删除等操作。如果你选择自定义菜单,这个方法失效,需要自行处点击菜单的逻辑。
    :loadMore--绑定懒加载回调,滚动至底部时触发

    功能特性

    1. 灵活分组管理
    1. 丰富的交互支持
    1. 性能优化
    1. 高度可定制