chat-pc/src/components/x-naive-ui
Phoenix 2c1ae41c3e feat(theme): 将主色调从#1890ff更改为#462AA0
统一修改多处UI组件的主色调,从蓝色(#1890ff)变更为紫色(#462AA0),以保持视觉一致性。同时优化了文件上传逻辑和滚动到底部功能。

refactor(dom): 提取滚动相关操作为工具函数
将滚动到底部逻辑封装为可复用的工具函数,并在多处调用位置进行替换,提高代码复用性。

fix(upload): 修复上传中文件点击打开问题
增加上传状态判断,避免在上传过程中点击文件时打开新窗口。

chore(deps): 更新依赖包版本
升级@types/node和watchpack等依赖包版本。
2025-05-28 11:29:13 +08:00
..
x-address-select 迁入ERP的组织结构树组件,作为通讯录的组织结构;接入相关依赖组件,调整通讯录入口及相关样式 2025-05-12 13:55:14 +08:00
x-n-data-table 完成通讯录功能的员工通讯录tab,接入对应的接口、交互组件等 2025-05-12 17:00:56 +08:00
x-n-modal 迁入ERP的组织结构树组件,作为通讯录的组织结构;接入相关依赖组件,调整通讯录入口及相关样式 2025-05-12 13:55:14 +08:00
x-n-upload feat(theme): 将主色调从#1890ff更改为#462AA0 2025-05-28 11:29:13 +08:00
x-preview-img 在package.json和pnpm-lock.yaml中添加viewerjs库,版本为1.11.7,以支持图像查看功能。同时删除了x-preview-img组件的相关代码。 2025-05-16 16:49:04 +08:00
x-search-form 调整通讯录中员工通讯录的按姓名搜索对应人员功能,调整对应样式 2025-05-13 14:08:20 +08:00
README.md 迁入ERP的组织结构树组件,作为通讯录的组织结构;接入相关依赖组件,调整通讯录入口及相关样式 2025-05-12 13:55:14 +08:00

@x-naive-ui 组件库

基于 Naive UI 的二次封装组件库,旨在提供更高层级的抽象和更便捷的使用方式,同时保持足够的灵活性。

@x-naive-ui 的设计理念是在易用性和灵活性之间找到平衡点,通过合理的默认值和可配置项,能够快速开发出高质量的页面,同时保留足够的扩展空间应对特殊需求。

如发现文档与实际使用有出入或者不完善 可提交修改

设计理念

1. 易用性与灵活性的平衡

  • 约定优于配置:提供合理的默认值,减少基础使用时的配置量
  • 保持原有能力:通过属性透传,保留 Naive UI 原组件的所有功能
  • 渐进式配置:简单场景可以快速使用,复杂场景仍可深度定制

2. 通用性与特殊性的权衡

  • 场景覆盖:优先覆盖 80% 的常见业务场景
  • 扩展机制:为剩余 20% 的特殊场景预留扩展接口

3.避免过度封装:不追求完美覆盖所有场景,保持组件的可维护性

组件列表

x-n-data-table

数据表格组件,增强了以下能力:

  • 拖拽排序(支持整行/手柄模式)
  • 列级别的插槽系统
  • 🎯 统一的样式和交互

权衡点

  • 牺牲了一定的性能来换取更好的开发体验
  • 固化了部分样式以确保视觉一致性

x-n-modal

模态框组件,预设了常用配置:

  • 统一的挂载点管理
  • 预设的关闭行为
  • 🎯 居中布局和统一样式

权衡点

  • 限制了一些灵活性以确保使用的一致性
  • 强制了某些最佳实践(如挂载点)

x-n-upload

文件上传组件,增强了以下功能:

  • 统一的文件处理逻辑
  • 内置预览能力
  • 🎯 更友好的类型支持

权衡点

  • 上传接口格式固定,需要后端配合
  • 为了通用性,部分特殊格式需要额外处理

x-search-form

搜索表单组件,提供了:

  • 声明式配置
  • 自动布局
  • 🎯 统一的搜索重置行为

权衡点

  • 牺牲了一些布局灵活性换取使用便利性
  • 配置项相对复杂,但换来了更好的复用性

最佳实践

1. 组件使用建议

<!-- 推荐使用声明式配置 -->
<x-search-form
  :search-config="searchConfig"
  :cols="4"
  @change="handleSearch"
/>

<!-- 不推荐内联复杂配置 -->
<x-search-form
  :search-config="[
    { type: 'input', key: 'name', label: '姓名' },
    { type: 'select', key: 'status', label: '状态' }
  ]"
/>

2. 配置管理建议

// 推荐:将配置抽离到单独的配置文件
import { searchConfig } from './config'
import { tableConfig } from './config'

// 不推荐在组件内部直接定义<E5AE9A><E4B989><EFBFBD>杂配置
const searchConfig = [
  // ... 大量配置
]

注意事项

  1. 性能考虑

    • 大数据量场景下,优先使用原生组件
    • 合理使用 shallowRefmarkRaw
    • 避免不必要的响应式转换
  2. 扩展性保证

    • 使用 v-bind 透传原组件属性
    • 预留合理的插槽接口
    • 导出必要的类型定义
  3. 代码质量

    • 统一的错误处理机制
    • 完善的类型声明
    • 详细的文档注释

未来规划

  1. 组件增强

    • 添加更多常用预设
    • 优化性能表现
    • 增加更多定制选项
  2. 文档完善

    • 补充更多使用示例
    • 添加在线演示
    • 完善类型声明
  3. 工具支持

    • 提供配置生成器
    • 添加主题定制能力
    • 集成表单验证工具

贡献指南

  1. 组件开发原则

    • 保持简单性
    • 关注通用性
    • 预留扩展性
  2. 代码规范

    • 遵循项目 ESLint 配置
    • 编写单元测试
    • 提供完整文档