- 1. 简介
- 1.1 功能简介
- 1.2 使用场景
- 2. 二次开发/自定义展示集成方式
- 2.1 安装依赖
- 2.2 使用页面渲染模版
- 2.3 表单页面渲染模版通用服务
- 2.4 表单列表页面入参说明
- 2.5 表单详情页入参说明
- 2.6 高级列表页面入参说明
- 3. 业务系统挂载集成方式
- 3.1 安装依赖
- 3.2 目录结构及别名工程改造
- 3.3 工程接入资源中心
- 3.4 集成渲染模版代码
- 3.4.1 表单详情渲染模版
- 3.4.2 表单列表渲染模版
- 3.4.2.1 资源接入的方式
- 3.4.2.2 npm包接入的方式
- 3.4.3 高级列表渲染模版
- 3.4.3.1 资源接入的方式
- 3.4.3.2 npm包接入的方式
- 3.4.4 远程资源渲染模版
- 3.4.4.1 资源接入的方式
- 3.4.4.2 npm包接入的方式
- 3.5 CSB系统配置渲染模版页面
- 3.5.1 通用渲染模版页面
- 3.5.2 远程资源渲染模版页面
1. 简介
1.1 功能简介
使用天舟云生成的视图页面/表单列表页面/表单详情页面/资源页面。
1.2 使用场景
- 二次开发表单:需要对天舟云生成的页面做一些额外的集成开发
- 自定义展示:需要对天舟云生成的页面做展示方式的自定义
- 业务系统挂载:需要在非CSB系统菜单中挂载天舟云生成的页面
2. 二次开发/自定义展示集成方式
2.1 安装依赖
npm包方式引入
在需要集成天舟云页面的工程下安装最新版本的@cvte/cir-lcp-sdk
npm i @cvte/cir-lcp-sdk
# 或
yarn add @cvte/cir-lcp-sdk
资源中心方式引入
在需要集成天舟云页面的业务系统工程下安装最新版本的@cvte/resource-center-sdk
rc i dp/tz-render
详细情况资源接入
2.2 使用页面渲染模版
模版根据页面类型会有不同的文件
高级列表页面:LCPPageTemplate
表单列表页面:LCPListTemplate
表单详情页面:LCPDetailTemplate
资源页面:LCPResourceTemplate
以视图页面为例
方式一:npm包引入
import { LCPPageTemplate } from '@cvte/cir-lcp-sdk'
方式二:资源引入
import Loader, { ILoaderResourceEnv, ReactRemoteLoaderComponent } from '@cvte/resource-center-sdk';
const LCPPageTemplate = ReactRemoteLoaderComponent(
new Loader({
appName: '资源宿主对应在资源中心中的资源名称',
name: 'tz-render',
env: `${document.getElementById('ENV')?.getAttribute('value') as ILoaderResourceEnv}`,
}),
'LCPPageTemplate',
{
useShared: true,
mode: 'page',
}
);
调用方式
<LCPPageTemplate {...props} />
2.3 表单页面渲染模版通用服务
服务名称 | 使用方式 | 应用场景 |
---|---|---|
Register |
import { Register } from '@cvte/cir-lcp-sdk'; |
需要使用到全局注册器注入自定义事件或自定义组件 |
Message |
import { Message } from '@cvte/cir-lcp-sdk'; |
需要使用到消息通信模块完成事件触发和消息通信 |
Cache |
import { Cache } from '@cvte/cir-lcp-sdk'; |
需要使用到页面的缓存进行操作管理;const MemoryCache = new Cache({ storage: 'memory' }); 管理当前页面的内存缓存const LocalCache = new Cache({ storage: 'localStorage' }); 管理浏览器本地缓存const SessionCache = new Cache({ storage: 'sessionStorage' }); 管理当前页面的会话缓存 |
2.4 表单列表页面入参说明
参数 | 数据类型 | 说明 |
---|---|---|
ref |
ICsbListRef |
GlobalContext 上下文对象Context 上下文类FormUtils 表单渲染器工具库getRef() 获取当前表格参考对象refresh 执行表格刷新 |
pageCode |
string |
页面配置中的页面编码必填 动态菜单引入场景下antdFrame会传入该参数组件 静态模块引入场景下必须从外部传入 如果上层模块非动态模块,即没有该参数 则需要在系统管理的页面配置中新增菜单并将页面编码的值传入该参数 |
appId |
string |
应用ID 必填 |
tenantId |
string |
租户ID 必填 |
classId |
string |
表单分类Id 必填 |
pageType |
string |
页面类型枚举:WORK_BENCH , LCP_VIEW 用于区分工作台模式和数据列表模式 |
metaConfig |
axios?: AxiosRequestConfig 全局axios参数,组件销毁后参数复原serverApiConfig?: IMainMetaServerApiConfig node服务代理地址apiConfig?: IMainMetaApiConfig 业务渲染器api自定义配置viewConfig?: IListMetaConfigViewConfig 视图列表自定义参数配置 |
自定义参数配置 |
tzHeaders |
Record<string, string> |
列表渲染模版中请求实例所使用的请求头配置,如果自定义会覆盖原有请求头中相同字段内容 |
inject |
components?: IRegisterComponent[] 需要注入的组件列表events?: IRegisterEvent[] 需要注入的事件列表 |
初始注入项 |
onCreate |
() => void |
行创建按钮回调 |
onEdit |
(record) => void |
列编辑按钮回调 |
onDelete |
(record, params?: any) => void |
列删除按钮回调 |
onInit |
() => void | Promise<void> |
当列表组件第一次加载时回调 |
onTargetChanged |
(target?:{ classId: string; apiName: string; name: string; }, ref?: ICsbListRef) => void | Promise<void> |
target.classId 当前传入的表单分类idtarget.apiName 当前传入的表单视图编码target.name 当前传入的表单分类名称ref 当前视图的参考对象 |
onSelect |
(selectedRecord: Record<string, any>[], selected: string[], isSelect: boolean, extra?: { originSelectedRecord?: Record<string, any>[]; }) => void |
行选择的事件回调 selectedRecord 当前触发选择行数据 selected 当前列表所有选中行的key集合 isSelect 当前行是否为选中状态 extra?.originSelectedRecord 为当前被选择行的原始未翻译数据,如果在ES模式的简单列表下没有该参数 |
2.5 表单详情页入参说明
参数 | 数据类型 | 说明 |
---|---|---|
ref |
any |
参考对象 |
appId |
string |
应用ID 必填 |
tenantId |
string |
租户ID 必填 |
classId |
string |
表单分类ID 必填 |
pageId |
string |
表单详情ID |
apiName |
string |
表单视图编码 |
itemNumber |
string |
变更编码 |
designId |
string |
设计方案ID |
designApi |
string |
设计方案编码 |
versionId |
string |
版本号 |
configs |
IConfigs |
表单元数据 |
metaConfig |
axios?: AxiosRequestConfig 全局axios参数,组件销毁后参数复原serverApiConfig?: IMainMetaServerApiConfig node服务代理地址apiConfig?: IMainMetaApiConfig 业务渲染器api自定义配置 formDefaultData?: Record<string, any> 表单详情传入的默认表单数据 contextData?: Record<string, any> 表单详情在公式计算或其他渲染时需要的上下文数据对象 compParams?: Record<string, any> key为组件code,value为要传入的配置,底层cir-form-generator会用compParams接收入参 |
自定义参数配置 |
inject |
components?: IRegisterComponent[] 需要注入的组件列表events?: IRegisterEvent[] 需要注入的事件列表 |
初始注入项 |
onInit |
(props: IMain) => Promise<IMain> | IMain |
初始化渲染引擎,若无返回则使用默认流程 |
onLoadData |
(data: IMain) => Promise<IConfigs> | IConfigs |
渲染引擎加载数据,若无返回则使用默认流程 |
onInitData |
(data: IConfigs) => Promise<IConfigs> | IConfigs |
初始化渲染数据,若无返回则使用默认流程 |
onRenderMounted |
(data: IConfigs) => Promise<void> | void |
渲染内核组件被挂载时 |
onRenderUpdated |
(data: IConfigs) => Promise<void> | void |
渲染内核组件开始渲染或页面更新触发渲染时 |
onRenderStart |
(data: IConfigs) => Promise<void> | void |
渲染内核组件开始工作;⚠️即将废弃 ,请在天舟云1.8 及其以后版本中换用 onRenderUpdated 事件进行监听 |
onRenderEnd |
(data: IConfigs) => Promise<void> | void |
渲染内核组件被销毁时 |
onDestroy |
(data: IConfigs) => Promise<any> | any |
渲染引擎销毁 |
onError |
(error: IMainErrorDetailObject, ...args: any[]) => Promise<void> | void |
错误异常捕获 |
onClick |
(globalConfig: IConfigs, globalRef: Record<string, any>, handler: any, initParams: any, ...args: any[]) => Promise<any> | any |
全局点击事件 |
onSelect |
(globalConfig: IConfigs, globalRef: Record<string, any>, handler: any, initParams: any, ...args: any[]) => Promise<any> | any |
全局选中事件 |
onChange |
(globalConfig: IConfigs, globalRef: Record<string, any>, handler: any, initParams: any, ...args: any[]) => Promise<any> | any |
全局改变值事件 |
onFocus |
(globalConfig: IConfigs, globalRef: Record<string, any>, handler: any, initParams: any, ...args: any[]) => Promise<any> | any |
全局获得焦点事件 |
onBlur |
(globalConfig: IConfigs, globalRef: Record<string, any>, handler: any, initParams: any, ...args: any[]) => Promise<any> | any |
全局失去焦点事件 |
2.6 高级列表页面入参说明
参数 | 数据类型 | 说明 |
---|---|---|
ref |
any |
参考对象 |
appId |
string |
应用ID 必填 |
tenantId |
string |
租户ID 必填 |
pageCode |
string |
高级列表配置中的视图页面编码 必填 动态菜单引入场景下antdFrame会传入该参数组件 静态模块引入场景下必须从外部传入 如果上层模块非动态模块,即没有该参数 则需要在系统管理的页面配置中新增菜单并将页面编码的值传入该参数 |
configs |
IConfigs |
列表配置数据内容 |
metaConfig |
axios?: AxiosRequestConfig 全局axios参数,组件销毁后参数复原serverApiConfig?: IMainMetaServerApiConfig node服务代理地址apiConfig?: IMainMetaApiConfig 业务渲染器api自定义配置 formDefaultData?: Record<string, any> 表单详情传入的默认表单数据 contextData?: Record<string, any> 表单详情在公式计算或其他渲染时需要的上下文数据对象 compParams?: Record<string, any> key为组件code,value为要传入的配置,底层cir-form-generator会用compParams接收入参 |
自定义参数配置 |
inject |
components?: IRegisterComponent[] 需要注入的组件列表events?: IRegisterEvent[] 需要注入的事件列表 |
初始注入项 |
onInit |
(props: IMain) => Promise<IMain> | IMain |
初始化渲染引擎,若无返回则使用默认流程 |
onLoadData |
(data: IMain) => Promise<IConfigs> | IConfigs |
渲染引擎加载数据,若无返回则使用默认流程 |
onInitData |
(data: IConfigs) => Promise<IConfigs> | IConfigs |
初始化渲染数据,若无返回则使用默认流程 |
onRenderStart |
(data: IConfigs) => Promise<void> | void |
渲染开始 |
onRenderEnd |
(data: IConfigs) => Promise<void> | void |
渲染结束 |
onDestroy |
(data: IConfigs) => Promise<any> | any |
渲染引擎销毁 |
onError |
(error: IMainErrorDetailObject, ...args: any[]) => Promise<void> | void |
错误异常捕获 |
3. 业务系统挂载集成方式
3.1 安装依赖
npm包方式引入
在需要集成天舟云页面的工程下安装最新版本的@cvte/cir-lcp-sdk
npm i @cvte/cir-lcp-sdk
# 或
yarn add @cvte/cir-lcp-sdk
资源中心方式引入
在需要集成天舟云页面的业务系统工程下安装最新版本的@cvte/resource-center-sdk
rc i dp/tz-render
详细情况资源接入
3.2 目录结构及别名工程改造
如果业务系统是CSB工程,则创建目录/app/modules/FormTemplate
如果业务系统非CSB工程,请联系我们「黄允桢」、「袁子涵」
同时需要确保该工程下的webpack
版本>=5.0
增加webpack
对该目录「FormTemplate
」的别名指向
// webpack_override.js
if (!config.resolve.alias['~csbApp']) {
config.resolve.alias['~csbApp'] = path.join(__dirname, './app');
}
3.3 工程接入资源中心
须需要按照资源接入-CSB工程接入的步骤说明去改造当前业务系统的CSB工程
3.4 集成渲染模版代码
3.4.1 表单详情渲染模版
文件路径/app/modules/FormTemplate/Detail.tsx
文件内容
// 资源接入的方式
import Loader, { ReactRemoteLoaderComponent, ILoaderResourceEnv } from '@cvte/resource-center-sdk';
const CSBDetail = ReactRemoteLoaderComponent(
new Loader({
appName: '这里必须填写业务系统在资源中心上的资源名称',
name: 'tz-render',
env: `${document.getElementById('ENV')?.getAttribute('value') as ILoaderResourceEnv}`,
}),
'LCPDetailTemplate',
{
useShared: true,
mode: 'page',
}
);
export default CSBDetail;
// npm包接入的方式
import { LCPDetailTemplate } from '@cvte/cir-lcp-sdk'
export default LCPDetailTemplate;
3.4.2 表单列表渲染模版
文件路径/app/modules/FormTemplate/List.tsx
文件内容
3.4.2.1 资源接入的方式
import Loader, { ReactRemoteLoaderComponent, ILoaderResourceEnv } from '@cvte/resource-center-sdk';
const CSBList = ReactRemoteLoaderComponent(
new Loader({
appName: '这里必须填写业务系统在资源中心上的资源名称',
name: 'tz-render',
env: `${document.getElementById('ENV')?.getAttribute('value') as ILoaderResourceEnv}`,
}),
'LCPListTemplate',
{
useShared: true,
mode: 'page',
}
);
export default CSBList;
3.4.2.2 npm包接入的方式
import { LCPListTemplate } from '@cvte/cir-lcp-sdk'
export default LCPListTemplate;
3.4.3 高级列表渲染模版
文件路径/app/modules/FormTemplate/Page.tsx
文件内容
3.4.3.1 资源接入的方式
import Loader, { ILoaderResourceEnv, ReactRemoteLoaderComponent } from '@cvte/resource-center-sdk';
const List = ReactRemoteLoaderComponent(
new Loader({
appName: '这里必须填写业务系统在资源中心上的资源名称',
name: 'tz-render',
env: `${document.getElementById('ENV')?.getAttribute('value') as ILoaderResourceEnv}`,
}),
'LCPPageTemplate',
{
useShared: true,
mode: 'page',
}
);
export default List;
3.4.3.2 npm包接入的方式
import { LCPPageTemplate } from '@cvte/cir-lcp-sdk'
export default LCPPageTemplate;
3.4.4 远程资源渲染模版
文件路径/app/modules/FormTemplate/Resource.tsx
文件内容
3.4.4.1 资源接入的方式
import Loader, { ReactRemoteLoaderComponent, ILoaderResourceEnv } from '@cvte/resource-center-sdk';
const Resource = ReactRemoteLoaderComponent(
new Loader({
appName: '这里必须填写业务系统在资源中心上的资源名称',
name: 'tz-render',
env: `${document.getElementById('ENV')?.getAttribute('value') as ILoaderResourceEnv}`,
}),
'LCPResourceTemplate',
{
useShared: true,
mode: 'page',
}
);
export default Resource;
3.4.4.2 npm包接入的方式
import { LCPResourceTemplate } from '@cvte/cir-lcp-sdk'
export default LCPResourceTemplate;
3.5 CSB系统配置渲染模版页面
3.5.1 通用渲染模版页面
进入CSB系统的「页面配置」模块
在页面的「基本信息」标签中,选择「动态组件」类型,并将「动态组件路径」填写为本地接入对应渲染模版的文件路径(后缀.tsx
不需填写);
表单列表渲染模版
动态组件路径:modules/FormTemplate/List
(须根据CSB系统下渲染模版在本地文件路径的实际地址填写)
路由参数:appId=表单所在天舟云的应用ID&tenantId=表单所在天舟云的租户ID&classId=表单分类ID&apiName=表单编码
路由参数示例:appId=6b7905752faa40518a1da1bc5c8931de&tenantId=c518f53d-b405-4111-afe1-5c082b284971&classId=c3515f85f3304a069c37fcd8044750ab&apiName=T_STOCK_LIST
表单详情渲染模版
动态组件路径:modules/FormTemplate/Detail
(须根据CSB系统下渲染模版在本地文件路径的实际地址填写)
路由参数:appId=表单所在天舟云的应用ID&tenantId=表单所在天舟云的租户ID&classId=表单分类ID&apiName=表单编码
路由参数示例:appId=802b609c0e0a402398cbafe78e4e205d&tenantId=c518f53d-b405-4111-afe1-5c082b284971&classId=392f1867c929451380c5dafe87d37492&apiName=T_PROJECT
高级列表渲染模版
选择「动态组件、开启视图配置」类型
动态组件路径:modules/FormTemplate/Page
(须根据CSB系统下渲染模版在本地文件路径的实际地址填写)
路由参数:pageCode=页面资源的编码
路由参数示例:pageCode=bsm_resource_rc_manager_detail
3.5.2 远程资源渲染模版页面
在页面的「基本信息」标签中,同时选择「动态组件、资源组件」类型,并将「动态组件路径」填写为modules/FormTemplate/Resource
;
表单详情渲染模版
动态组件路径:modules/FormTemplate/Resource
(须根据CSB系统下渲染模版在本地文件路径的实际地址填写)
路由参数传入的信息全部会透传给资源组件作为入参
并填写「资源名、导出键名」信息,资源版本默认为「latest」,以获取最新资源
最后编辑:袁子涵 更新时间:2024-12-11 10:09