Appearance
CoRenderCtor
init
将渲染器挂载至页面。
类型
tsinterface CoRenderCtor { init(root: HTMLElement): this }
interface CoRenderCtor { init(root: HTMLElement): this }
示例
ts// 创建 CoRender 实例 const render = new CoRenderCtor() // 将 render 挂载在 id 为 `root` 的元素上 render.init(document.querySelector('#root'))
// 创建 CoRender 实例 const render = new CoRenderCtor() // 将 render 挂载在 id 为 `root` 的元素上 render.init(document.querySelector('#root'))
setForm
表单挂载 init
成功后,通过 setForm
打开表单。
类型
tsinterface CoRenderCtor { setForm: (options: OptionProps) => this } type OptionProps = ( | { name: string } | { code: number } ) & { /** * 表单所在业务编号 */ busi: number /** * 表单名称 (可用 code 替代) */ name?: string /** * 表单编号 (可用 name 替代) */ code?: number | string /** * 用于填充到表单控件上的数据 */ parm?: { [key: string]: unknown } | string /** * 状态参数,用于控制权限 */ stat?: string /** * 表单主键参数 */ pkey?: string /** * 默认值主键参数 */ dkey?: string /** * 表单大小 */ size?: string }
interface CoRenderCtor { setForm: (options: OptionProps) => this } type OptionProps = ( | { name: string } | { code: number } ) & { /** * 表单所在业务编号 */ busi: number /** * 表单名称 (可用 code 替代) */ name?: string /** * 表单编号 (可用 name 替代) */ code?: number | string /** * 用于填充到表单控件上的数据 */ parm?: { [key: string]: unknown } | string /** * 状态参数,用于控制权限 */ stat?: string /** * 表单主键参数 */ pkey?: string /** * 默认值主键参数 */ dkey?: string /** * 表单大小 */ size?: string }
详细信息
各参数中,
busi
为必须,name
及code
二选一传入即可。stat
为各项组合拼接而成的字符串,具体格式为:[BUSI].[ROLE].[USER].[STAT].[TACH].[FLOW].[FORM].[PREV]
它们代表了
BUSI
业务编号ROLE
角色编号USER
用户编号STAT
业务状态(与流程状态编号不同)TACH
环节编号FLOW
流程编号FORM
表单编号(当前所在表单)PREV
父表单编号(由哪一个表单打开)
如果你需要控制流程中表单权限,你应该拿到当前流程状态并根据上述格式进行拼接。
例:我们先通过
getOption
或其他方式获取到流程状态0.1043.1.1025.3.110004
,之后你需要在该流程110004
的表单11001
中打开表单21001
,那么你需要拼接成新的状态:0.1043.1.1025.3.110004.21001.11001
示例
ts
// render 内部除了获取值方法外,其余方法均会返回当前实例,支持链式调用
new CoRenderCtor().init(document.querySelector('#root')).setForm({
name: '收件箱',
busi: 0,
stat: '0.1043.1.1025.3.110004.11001.21001',
})
// render 内部除了获取值方法外,其余方法均会返回当前实例,支持链式调用
new CoRenderCtor().init(document.querySelector('#root')).setForm({
name: '收件箱',
busi: 0,
stat: '0.1043.1.1025.3.110004.11001.21001',
})
setDisabled
表单挂载 init
成功后,通过 setDisabled
来设置表单可用性。
类型
tsinterface CoRenderCtor { setDisabled: (disabled: boolean) => this }
interface CoRenderCtor { setDisabled: (disabled: boolean) => this }
示例
tsnew CoRenderCtor().init(document.querySelector('#root')).setDisabled(true)
new CoRenderCtor().init(document.querySelector('#root')).setDisabled(true)
可用时点
setDisabled
只可适用于render.init
生命周期后,否则设置可能不生效。
openForm
表单挂载 init
成功后, 通过 openForm
来打开相应表单窗口。
类型
tsinterface CoRenderCtor { openForm: (option: FormOption) => this } type FormOption = { code: number size: string dkey: string pkey: string parm: string name: string busi: number }
interface CoRenderCtor { openForm: (option: FormOption) => this } type FormOption = { code: number size: string dkey: string pkey: string parm: string name: string busi: number }
详细信息
需要参数与 表单参数 相同,用于获取窗口内部表单。
size
为窗口大小,800,600
代表窗口初始窗口为宽 800px, 高 600px
, 如果size
属性缺失,平台将赋予表单窗口默认宽高。示例
tsconst render = new CoRenderCtor().init(document.querySelector('#root')) render.openForm({ name: '收件箱', busi: 0, size: '800,600', })
const render = new CoRenderCtor().init(document.querySelector('#root')) render.openForm({ name: '收件箱', busi: 0, size: '800,600', })
onFormClosed
注册表单窗口的关闭回调事件。
类型
tsinterface CoRenderCtor { /** * @param callback 注册回调,并在执行时传入当前表单实例 */ onFormClosed: (callback: (render: CoRender) => void) => this }
interface CoRenderCtor { /** * @param callback 注册回调,并在执行时传入当前表单实例 */ onFormClosed: (callback: (render: CoRender) => void) => this }
示例
tsCoRenderCtor.onFormClosed((render) => { // run your callback code })
CoRenderCtor.onFormClosed((render) => { // run your callback code })
openFlow
表单挂载init
成功后, 通过 openFlow
来打开相应流程窗口, 用于发起流程或打开已发起流程。
类型
tsinterface CoRenderCtor { openFlow: (option: FlowOption) => Promise<boolean> } type FlowOption = { inst: string // 流程实例编号 task?: string // 任务编号 默认为 0 flow: string // 流程编号 }
interface CoRenderCtor { openFlow: (option: FlowOption) => Promise<boolean> } type FlowOption = { inst: string // 流程实例编号 task?: string // 任务编号 默认为 0 flow: string // 流程编号 }
详细信息
我们注意到
openFlow
最终返回一个包裹在 Promise 的布尔值,它代表了启动的流程最终发送与否,如果打开的流程最终被发送、退回等那么接收到的返回值则为true
,其他情况则为false
。ts// 定义变量接收返回值 const result = await render.openFlow({ /* 参数 */ }) if (result) { // 该件已被成功发送,通常执行从列表中移除的操作 } else { // 未被发送... }
// 定义变量接收返回值 const result = await render.openFlow({ /* 参数 */ }) if (result) { // 该件已被成功发送,通常执行从列表中移除的操作 } else { // 未被发送... }
示例
tsconst render = new CoRenderCtor().init(document.querySelector('#root')) render.openFlow({ inst: '2020113010', task: '1', flow: '20010', })
const render = new CoRenderCtor().init(document.querySelector('#root')) render.openFlow({ inst: '2020113010', task: '1', flow: '20010', })
viewFlow
打开只能浏览而不能操作的流程 (readonly-flow
)。
类型
tsinterface CoRenderCtor { viewFlow: (option: FlowOption) => void } type FlowOption = { inst: string // 流程实例编号 task?: string // 任务编号 默认为 0 flow: string // 流程编号 }
interface CoRenderCtor { viewFlow: (option: FlowOption) => void } type FlowOption = { inst: string // 流程实例编号 task?: string // 任务编号 默认为 0 flow: string // 流程编号 }
示例
tsconst render = new CoRenderCtor().init(document.querySelector('#root')) // 参数与打开流程 openFlow 一致 render.viewFlow({ form: '', inst: 'XZGL202107060002', // 流程实例编号 task: '0', // 任务编号,默认传 '0' flow: '', })
const render = new CoRenderCtor().init(document.querySelector('#root')) // 参数与打开流程 openFlow 一致 render.viewFlow({ form: '', inst: 'XZGL202107060002', // 流程实例编号 task: '0', // 任务编号,默认传 '0' flow: '', })
onFlowClosed
注册流程窗口的关闭回调事件(同时适用于只读与可操作流程)。
类型
tsinterface CoRenderCtor { onFlowClosed: (callback: (render: CoRender) => void) => void }
interface CoRenderCtor { onFlowClosed: (callback: (render: CoRender) => void) => void }
示例
tsCoRenderCtor.onFlowClosed((render) => { // run your callback code })
CoRenderCtor.onFlowClosed((render) => { // run your callback code })
addTab
新增标签页并打开。
类型
tsinterface CoRender { addTab: (options: TabOptions) => void } type TabOptions = { id: number // 标签编号 text: string // 标签名称 icon?: string // 标签图标 form: string // 表单名 }
interface CoRender { addTab: (options: TabOptions) => void } type TabOptions = { id: number // 标签编号 text: string // 标签名称 icon?: string // 标签图标 form: string // 表单名 }
详细信息
若已打开标签页中已存在该 id,当前操作将不会执行,因为该标签已被打开。
标签 id 最优应与导航栏内 id 一致,平台会将菜单中 id 与选中标签 id 一致的导航高亮。
示例
tsrender.addTab({ id: 10010, text: '新增标签页', icon: '/images/tab.png', form: '收件箱', })
render.addTab({ id: 10010, text: '新增标签页', icon: '/images/tab.png', form: '收件箱', })
openLayout
在组件内手动切换 平台布局。
类型
tsinterface CoRenderCtor { /** * @param name 布局名 * @param module 模块名 * @param nav 导航名 */ openLayout: (name: string, module?: string, nav?: string) => Promise<void> }
interface CoRenderCtor { /** * @param name 布局名 * @param module 模块名 * @param nav 导航名 */ openLayout: (name: string, module?: string, nav?: string) => Promise<void> }
示例
ts// 切换到名为 layoutA 的布局,并且菜单加载全部导航。 CoRenderCtor.openLayout('layoutA')
// 切换到名为 layoutA 的布局,并且菜单加载全部导航。 CoRenderCtor.openLayout('layoutA')
如果需要在切换到指定布局后,同时加载某模块(非全部导航),则需要配置 module 参数 。
ts// 切换到名为 layoutB 的布局,并且菜单加载业务办理模块。 CoRenderCtor.openLayout('layoutB', '业务办理')
// 切换到名为 layoutB 的布局,并且菜单加载业务办理模块。 CoRenderCtor.openLayout('layoutB', '业务办理')
平台会在加载全部或指定模块时默认打开首个能打开的导航当作默认导航,如果需要指定默认导航则配置 nav 参数。
ts// 切换到名为 layoutC 的布局,并且菜单加载业务办理模块的同时打开收件箱导航。 CoRenderCtor.openLayout('layoutC', '业务办理', '收件箱')
// 切换到名为 layoutC 的布局,并且菜单加载业务办理模块的同时打开收件箱导航。 CoRenderCtor.openLayout('layoutC', '业务办理', '收件箱')
导航重名
因为平台允许导航名称重复,在使用 nav 时若目标存在重名则将打开排序靠前的导航。
openCommonWord
打开/关闭常用词窗口。
类型
tsinterface CoRenderCtor { openCommonWord: (options: CommonWordOptions) => void } type CommonWordOptions = { x: number // 水平坐标 y: number // 垂直坐标 showCommonWord: boolean // 打开/关闭常用词列表 callback: (word: string) => void // 选中回调, word 为当前选中常用词 }
interface CoRenderCtor { openCommonWord: (options: CommonWordOptions) => void } type CommonWordOptions = { x: number // 水平坐标 y: number // 垂直坐标 showCommonWord: boolean // 打开/关闭常用词列表 callback: (word: string) => void // 选中回调, word 为当前选中常用词 }
示例
tsrender.openCommonWord({ x: event.clientX, y: event.clientY, showCommonWord: true, callback: (word) => { console.log(`选择了常用词 ${word}.`) }, })
render.openCommonWord({ x: event.clientX, y: event.clientY, showCommonWord: true, callback: (word) => { console.log(`选择了常用词 ${word}.`) }, })
参考: CoRenderCtor
指南