EOS Low-Code Platform 8 EOS Low-Code Platform 8
产品简介
学习指南
更新说明
安装与集成
上线指南
初见EOS
低代码开发手册
专业代码开发手册
智能体开发手册
专题场景实战
公共服务框架
应用运行治理
运维指南
  • 平台组件扩展
  • 一、功能说明
  • 二、核心价值
  • 三、适用场景(以日期选择组件为例)
  • 1. 新增快捷选项
  • 2. 快捷选项详细说明
  • 四、完整操作流程
  • 1. 准备扩展组件框架
  • 2. 复制系统原生组件代码
  • 3. 自定义修改组件
  • 4. 组件配置 config.js
  • 5. 注册组件
  • 6. 打包扩展组件
  • 7. 上传扩展组件
  • 8. 验证效果
  • 五、关键注意事项
  • 六、流程极简总结
  • 七、常见问题排查
  • 八、补充说明

# 平台组件扩展

# 一、功能说明

在低代码平台中,无需修改平台源码、无需重新搭建页面,仅需开发一个与系统组件同名的扩展组件,上传后即可自动替换平台默认组件,实现全局统一自定义(如修改样式、增加业务逻辑等)。

补充说明:扩展组件仅替换系统默认组件的展示和功能,不改变平台底层运行逻辑,所有基于该组件的现有配置均不受影响。

# 二、核心价值

  • 全局替换:一次开发修改,所有页面中使用该组件的地方自动生效。
  • 零侵入:不影响平台原生能力,删除扩展组件后,自动恢复为系统默认组件。
  • 兼容原有配置:组件的原有属性、事件绑定、数据关联完全保留,无需重新配置现有页面。
  • 双端独立替换:支持PC端和移动端分别开发扩展组件,可单独替换某一端的组件,互不影响(例:仅修改PC端日期组件,移动端保持默认)。

# 三、适用场景(以日期选择组件为例)

核心场景:增强组件功能但不改动原有页面,适配业务个性化需求

# 1. 新增快捷选项

给日期组件新增“最近一年”“最近三年”的快捷选项,用户点击即可快速选择时间范围,无需手动选择日期。

# 2. 快捷选项详细说明

  • 定义:快捷选项是日期选择器中预设的常用时间范围,系统默认包含“本周”“上月”“最近一周”等基础选项。
  • 自定义价值:可添加业务场景专属的时间范围(如“本季度”“近半年”“近五年”),适配不同业务的筛选需求。
  • 生效范围:新增的快捷选项会自动同步到所有使用该日期组件的页面。
  • 适配场景:数据筛选、报表查询、统计分析等需要频繁选择时间范围的业务场景(如财务报表、业务数据汇总)。

# 四、完整操作流程

# 1. 准备扩展组件框架

  • 操作:下载扩展组件开发框架扩展组件开发框架(components-ext),下载后无需修改框架本身。
  • 关键要求:确保框架目录结构规范,不可随意修改目录层级,标准结构如下:
src/
  └── components/
       └── 组件名(如datepicker,必须与系统组件名一致)/
            ├── pc.vue        # PC端组件(必选,若仅修改移动端可空,但建议保留)
            ├── mobile.vue     # 移动端组件(必选,若仅修改PC端可空,但建议保留)
            └── config.js      # 组件配置(必选,无此文件无法上传成功)

补充:若仅需修改单端(如仅PC端),另一端的vue文件可保留空内容,但不可删除该文件,否则会导致打包失败。

# 2. 复制系统原生组件代码

  • 操作:联系平台工作人员,申请获取系统组件库(名称:primeton-form-components),获取后从中复制要替换的组件完整目录。
  • 示例:若要替换日期选择组件,需复制“src/components/datepicker”整个目录。
  • 关键提醒:

① 复制时需将该组件的所有依赖文件一同复制(如组件引用的页面、样式文件等),缺失会导致组件报错;

② 复制后粘贴到扩展组件框架的 src/components/ 目录下,文件夹名称可与系统组件名称不同,但需确保后续注册组件时使用的路径与实际文件夹名称保持一致;

③ 目的:基于官方原生组件进行修改。

# 3. 自定义修改组件

操作:打开扩展组件目录下的“pc.vue”(修改移动端则打开“mobile.vue”),找到快捷选项配置代码,在原有代码后添加自定义快捷项。

// 系统原有快捷项(无需修改,保留原样)
week: { text: "本周", ... },
lastWeek: { text: "上周", ...},
nextWeek: { text: "下周", ...},
month: { text: "本月", ...},
lastMonth: { text: "上月", ...},
nextMonth: { text: "下月", ...},
recentWeek: { text: "最近一周", ...},
recentTwoWeeks: { text: "最近两周", ...},
recentMonth: { text: "最近一个月", ...},

// 新增的自定义快捷项(直接复制粘贴,可修改text和时间范围)
recentYear: {
  text: "最近一年", // 快捷项显示名称,可自定义(如“近一年”)
  getRange: () => ({
    start: new Date(Date.now() - 3600 * 1000 * 24 * 365), // 开始时间:当前时间减365天
    end: new Date() // 结束时间:当前时间
  })
},
recentThreeYears: {
  text: "最近三年",
  getRange: () => ({
    start: new Date(Date.now() - 3600 * 1000 * 24 * 365 * 3), // 开始时间:当前时间减3年
    end: new Date()
  })
}

补充说明:

① 若需修改其他功能(如组件样式、点击事件),可在对应vue文件中修改,修改后需保存文件;

② 新增快捷项的text可自定义(如“近1年”“近3年”),时间范围可调整;

③ 修改时不要删除系统原有快捷项,避免影响原有功能。

# 4. 组件配置 config.js

每个扩展组件必须包含config.js文件,用于告诉平台该组件对应的系统组件,配置内容需与系统组件保持一致,最少配置如下(可直接复制使用):

export default {
  __config__: {
    label: '日期选择', // 组件显示名称,建议与系统组件一致,可修改为其他名称
    tag: 'date-picker', // 组件标识,必须与系统组件完全一致(无需添加 pm- 前缀)
    tagIcon: 'date' // 选填,图标路径:src/icons/svg/date.svg(无图标可删除该配置)
  }
};
  • 获取方式:联系平台工作人员获取“primeton-form-designer”组件设计库,从该库中找到对应组件的配置文件,复制config内容后修改(更稳妥,避免手动输入出错)。
  • 关键提醒:

① tag属性必须与系统组件一致(如日期组件为date-picker),大小写敏感,否则平台无法识别,无法完成替换;

② 配置文件路径参考:src/components/generator/config/index.ts(不同平台版本路径可能不同,可通过全局搜索组件名称“date-picker”找到对应配置文件);

③ 不可删除__config__外层包裹,否则配置无效。

# 5. 注册组件

需分别注册PC端和移动端组件(仅修改单端也需注册对应端,另一端可保持默认注册代码),注册名称必须与系统原生组件完全一致。

# (1)注册 PC 端

打开扩展框架中的“src/entry.js”文件,添加如下代码(复制即可,修改组件名对应部分):

// 格式:Vue.component('系统组件名', () => import('组件路径'))
Vue.component('pm-date-picker', () => import('./components/datepicker/pc.vue'));

# (2)注册 移动端

打开扩展框架中的“src/mobile_entry.js”文件,添加如下代码:

Vue.component('pm-date-picker', () => import('./components/datepicker/mobile.vue'));

关键规则:

① 组件注册名称格式为“pm-组件名称”(如pm-date-picker),必须与系统原生组件名完全一致,多一个字符、少一个字符或大小写错误,都会导致注册失败;

② 组件路径需正确(如./components/datepicker/pc.vue),若路径错误,会导致组件加载失败;

③ 若仅修改单端(如仅PC端),另一端的注册代码无需修改。

# 6. 打包扩展组件

  • 执行打包命令:npm run build:prod:zip。
  • 结果:打包成功后,会在框架根目录生成一个ext.zip格式的压缩包,该压缩包即为可上传到平台的文件。

# 7. 上传扩展组件

  1. 进入【应用中心】→【业务组件】→【页面组件】页面;
  2. 点击“新建分组”,上传扩展组件包
  3. 上传成功后,扩展组件列表会显示该组件(如date-picker)。

# 8. 验证效果

  1. 先刷新低代码IDE页面,确保平台加载最新的扩展组件;
  2. 打开任意一个使用了日期选择组件的视图界面,添加筛选条件,将筛选条件的控件设置为“日期选择器”,并将日期选择规则设置为“介于”(只有“介于”模式才会显示快捷选项);
  3. 点击日期选择组件,弹出选择面板,若能看到新增的“最近一年”“最近三年”快捷选项,即为替换成功;
  4. 双端验证:若修改了移动端组件,需在平台切换到移动端预览模式,重复步骤2-3,确认移动端也显示新增快捷选项。

# 五、关键注意事项

  • 组件名完全一致:扩展组件的目录名称、config.js中的tag属性、组件注册名称,必须与系统原生组件完全一致(大小写敏感,如datepicker不可写为DatePicker),否则无法替换。
  • 必含config.js:每个扩展组件必须有config.js文件,且配置正确,无此文件会导致上传失败或无法生效。
  • 无需删除旧组件:上传扩展组件后,平台会自动用扩展组件覆盖默认组件,无需手动删除系统原生组件。
  • 恢复默认方式:若需恢复为平台默认组件,直接在“扩展组件”页面删除该扩展组件即可,删除后所有页面自动恢复,无需其他操作。
  • 依赖文件齐全:复制系统组件时,必须同步复制所有依赖文件,缺失依赖会导致组件报错、无法加载。
  • 打包命令正确:必须执行“npm run build:prod:zip”命令,不可修改命令,否则无法生成正确的.zip包。

# 六、流程极简总结

  1. 获取扩展框架 + 系统组件库,复制目标组件到扩展框架对应目录;
  2. 在vue文件中按需求自定义修改(如新增快捷项);
  3. 配置config.js(确保tag与系统组件一致);
  4. 在entry.js/mobile_entry.js中注册同名组件;
  5. 执行打包命令生成.zip包;
  6. 上传到平台扩展组件页面,刷新IDE验证效果,完成自动替换。

# 七、常见问题排查

问题 排查方法
上传扩展组件后,刷新IDE仍未看到修改效果? ① 组件注册名称是否为“pm-组件名”,与系统组件一致;② config.js的tag属性是否正确;③ 重新打包并上传,刷新页面后重试。
打包失败,提示依赖缺失? 重新复制系统组件的完整目录,确保所有依赖文件(如引入页面、样式文件)都已复制,确认后再打包。
日期组件看不到新增的快捷选项? ① 日期选择规则是否设置为“介于”(只有范围选择才显示快捷项);② 移动端修改后是否切换到移动端预览模式;③ 检查vue文件中新增快捷项的代码是否正确,有无语法错误。
删除扩展组件后,组件无法恢复默认? 刷新IDE页面,若仍未恢复,退出平台重新登录。

# 八、补充说明

  1. 调试组件:若修改后组件报错,可参考文档组件扩展;
  2. 其他组件扩展:本文以日期选择组件为例,其他组件(如下拉框、输入框)的扩展流程完全一致,只需替换对应组件名称及修改内容即可;

← 流程组件扩展 前端源码开发 →