mirror of
https://gitee.com/hhyykk/ipms-sjy-ui.git
synced 2025-08-09 23:51:52 +08:00
初始化项目,自 v1.7.1 版本开始
This commit is contained in:
76
src/components/bpmnProcessDesigner/package/utils.ts
Normal file
76
src/components/bpmnProcessDesigner/package/utils.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
import { toRaw } from 'vue'
|
||||
// 创建监听器实例
|
||||
export function createListenerObject(options, isTask, prefix) {
|
||||
const listenerObj = Object.create(null)
|
||||
listenerObj.event = options.event
|
||||
isTask && (listenerObj.id = options.id) // 任务监听器特有的 id 字段
|
||||
switch (options.listenerType) {
|
||||
case 'scriptListener':
|
||||
listenerObj.script = createScriptObject(options, prefix)
|
||||
break
|
||||
case 'expressionListener':
|
||||
listenerObj.expression = options.expression
|
||||
break
|
||||
case 'delegateExpressionListener':
|
||||
listenerObj.delegateExpression = options.delegateExpression
|
||||
break
|
||||
default:
|
||||
listenerObj.class = options.class
|
||||
}
|
||||
// 注入字段
|
||||
if (options.fields) {
|
||||
listenerObj.fields = options.fields.map((field) => {
|
||||
return createFieldObject(field, prefix)
|
||||
})
|
||||
}
|
||||
// 任务监听器的 定时器 设置
|
||||
if (isTask && options.event === 'timeout' && !!options.eventDefinitionType) {
|
||||
const timeDefinition = window.bpmnInstances.moddle.create('bpmn:FormalExpression', {
|
||||
body: options.eventTimeDefinitions
|
||||
})
|
||||
const TimerEventDefinition = window.bpmnInstances.moddle.create('bpmn:TimerEventDefinition', {
|
||||
id: `TimerEventDefinition_${uuid(8)}`,
|
||||
[`time${options.eventDefinitionType.replace(/^\S/, (s) => s.toUpperCase())}`]: timeDefinition
|
||||
})
|
||||
listenerObj.eventDefinitions = [TimerEventDefinition]
|
||||
}
|
||||
return window.bpmnInstances.moddle.create(
|
||||
`${prefix}:${isTask ? 'TaskListener' : 'ExecutionListener'}`,
|
||||
listenerObj
|
||||
)
|
||||
}
|
||||
|
||||
// 创建 监听器的注入字段 实例
|
||||
export function createFieldObject(option, prefix) {
|
||||
const { name, fieldType, string, expression } = option
|
||||
const fieldConfig = fieldType === 'string' ? { name, string } : { name, expression }
|
||||
return window.bpmnInstances.moddle.create(`${prefix}:Field`, fieldConfig)
|
||||
}
|
||||
|
||||
// 创建脚本实例
|
||||
export function createScriptObject(options, prefix) {
|
||||
const { scriptType, scriptFormat, value, resource } = options
|
||||
const scriptConfig =
|
||||
scriptType === 'inlineScript' ? { scriptFormat, value } : { scriptFormat, resource }
|
||||
return window.bpmnInstances.moddle.create(`${prefix}:Script`, scriptConfig)
|
||||
}
|
||||
|
||||
// 更新元素扩展属性
|
||||
export function updateElementExtensions(element, extensionList) {
|
||||
const extensions = window.bpmnInstances.moddle.create('bpmn:ExtensionElements', {
|
||||
values: extensionList
|
||||
})
|
||||
window.bpmnInstances.modeling.updateProperties(toRaw(element), {
|
||||
extensionElements: extensions
|
||||
})
|
||||
}
|
||||
|
||||
// 创建一个id
|
||||
export function uuid(length = 8, chars) {
|
||||
let result = ''
|
||||
const charsString = chars || '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||
for (let i = length; i > 0; --i) {
|
||||
result += charsString[Math.floor(Math.random() * charsString.length)]
|
||||
}
|
||||
return result
|
||||
}
|
Reference in New Issue
Block a user