¶Ô±ÈÐÂÎļþ |
| | |
| | | import showConfig from '../assets/showConfig'; |
| | | import type { ModdleElement } from 'bpmn'; |
| | | import useModelerStore from '@/store/modules/modeler'; |
| | | import { MultiInstanceTypeEnum } from '@/enums/bpmn/IndexEnums'; |
| | | interface Options { |
| | | element: ModdleElement; |
| | | } |
| | | |
| | | export default (ops: Options) => { |
| | | const { element } = ops; |
| | | const { getModeling, getModdle } = useModelerStore(); |
| | | const modeling = getModeling(); |
| | | const moddle = getModdle(); |
| | | |
| | | /** |
| | | * å½åèç¹ç±»å |
| | | */ |
| | | const elementType = computed(() => { |
| | | const bizObj = element.businessObject; |
| | | return bizObj.eventDefinitions ? bizObj.eventDefinitions[0].$type : bizObj.$type; |
| | | }); |
| | | |
| | | /** |
| | | * ç¨äºæ§å¶é¢æ¿å段æ¾ç¤ºä¸éèçé
ç½® |
| | | */ |
| | | const config = computed(() => showConfig[elementType.value] || {}); |
| | | |
| | | /** |
| | | * å建ä¸ä¸ªèç¹ |
| | | * @param elementType èç¹ç±»å |
| | | * @param properties 屿§ |
| | | * @param parent ç¶èç¹ |
| | | */ |
| | | const createModdleElement = (elementType: string, properties: any, parent: ModdleElement) => { |
| | | const element = moddle.create(elementType, properties); |
| | | parent && (element.$parent = parent); |
| | | return element; |
| | | }; |
| | | |
| | | /** |
| | | * è·åæ©å±å±æ§ï¼å¦æä¸åå¨ä¼èªå¨å建 |
| | | */ |
| | | const getExtensionElements = (create = true) => { |
| | | let extensionElements = element.businessObject.get<ModdleElement>('extensionElements'); |
| | | if (!extensionElements && create) { |
| | | extensionElements = createModdleElement('bpmn:ExtensionElements', { values: [] }, element.businessObject); |
| | | modeling.updateModdleProperties(element, element.businessObject, { extensionElements }); |
| | | } |
| | | return extensionElements; |
| | | }; |
| | | |
| | | /** |
| | | * è·åextensionElementsä¸çproperties |
| | | * @param extensionElements å¯éåæ°ï¼é»è®¤è·åå½åElementä¸çextensionElementsä¸çProperties |
| | | */ |
| | | const getPropertiesElements = (extensionElements?: ModdleElement) => { |
| | | if (!extensionElements) { |
| | | extensionElements = getExtensionElements(); |
| | | } |
| | | let propertiesElements = extensionElements.values.find((item) => item.$type === 'flowable:properties'); |
| | | if (!propertiesElements) { |
| | | propertiesElements = createModdleElement('flowable:properties', { values: [] }, extensionElements); |
| | | modeling.updateModdleProperties(element, extensionElements, { |
| | | values: [...extensionElements.get<[]>('values'), propertiesElements] |
| | | }); |
| | | } |
| | | return propertiesElements; |
| | | }; |
| | | |
| | | /** |
| | | * æ´æ°èç¹å±æ§ |
| | | * @param properties 屿§å¼ |
| | | */ |
| | | const updateProperties = (properties: any) => { |
| | | modeling.updateProperties(element, properties); |
| | | }; |
| | | |
| | | /** |
| | | * æ´æ°èç¹ä¿¡æ¯ |
| | | * @param updateElement éè¦æ´æ°çèç¹ |
| | | * @param properties 屿§ |
| | | */ |
| | | const updateModdleProperties = (updateElement, properties: any) => { |
| | | modeling.updateModdleProperties(element, updateElement, properties); |
| | | }; |
| | | |
| | | /** |
| | | * æ´æ°Property屿§ |
| | | * @param name keyå¼ |
| | | * @param value å¼ |
| | | */ |
| | | const updateProperty = (name: string, value: string) => { |
| | | const propertiesElements = getPropertiesElements(); |
| | | |
| | | let propertyElements = propertiesElements.values.find((item) => item.name === name); |
| | | if (!propertyElements) { |
| | | propertyElements = createModdleElement('flowable:property', { name: name, value: value }, propertiesElements); |
| | | modeling.updateModdleProperties(element, propertiesElements, { |
| | | values: [...propertiesElements.get('values'), propertyElements] |
| | | }); |
| | | } else { |
| | | propertyElements.name = name; |
| | | propertyElements.value = value; |
| | | } |
| | | return propertyElements; |
| | | }; |
| | | |
| | | const idChange = (newVal: string) => { |
| | | if (newVal) { |
| | | updateProperties({ id: newVal }); |
| | | } |
| | | }; |
| | | const nameChange = (newVal: string) => { |
| | | if (newVal) { |
| | | updateProperties({ name: newVal }); |
| | | } |
| | | }; |
| | | const formKeyChange = (newVal: string) => { |
| | | updateProperties({ formKey: newVal }); |
| | | }; |
| | | const constant = { |
| | | MultiInstanceType: [ |
| | | { id: '373d4b81-a0d1-4eb8-8685-0d2fb1b468e2', label: 'æ ', value: MultiInstanceTypeEnum.NONE }, |
| | | { id: 'b5acea7c-b7e5-46b0-8778-390db091bdab', label: '串è¡', value: MultiInstanceTypeEnum.SERIAL }, |
| | | { id: 'b4f0c683-1ccc-43c4-8380-e1b998986caf', label: 'å¹¶è¡', value: MultiInstanceTypeEnum.PARALLEL } |
| | | ] |
| | | }; |
| | | |
| | | return { |
| | | elementType, |
| | | constant, |
| | | showConfig: config, |
| | | |
| | | updateProperties, |
| | | updateProperty, |
| | | updateModdleProperties, |
| | | |
| | | createModdleElement, |
| | | idChange, |
| | | nameChange, |
| | | formKeyChange, |
| | | getExtensionElements, |
| | | getPropertiesElements |
| | | }; |
| | | }; |