import { useBpmnStore } from '/@bpmn/store/bpmn'; import { BpmnNodeKey } from '/@/enums/workflowEnum'; import { formPermissionList } from '/@bpmn/config/formPermission'; import { InfoId, InfoItem, InfoType } from '/@/model/workflow/bpmnConfig'; import { ChildNodeConfig, ProcessConfig } from '/@/model/workflow/workflowConfig'; import { FormConfigItem } from '/@/model/workflow/formSetting'; import { processConfig, defaultProperties, propertiesByType, nodeNameByType, } from './propertyConfig'; import { cloneDeep } from 'lodash-es'; import { useI18n } from '/@/hooks/web/useI18n'; const { t } = useI18n(); // 流程模板默认属性 export const getProcessConfig: ProcessConfig = processConfig; // 根据节点类型获取节点默认属性 export const getDefaultProperties = function (type: InfoType) { return propertiesByType.has(type) ? propertiesByType.get(type) : defaultProperties; }; // 根据节点类型获取节点名称 export const getNodeName = (type: InfoType) => { return nodeNameByType.has(type) ? nodeNameByType.get(type) : ''; }; // 根据节点类型获取节点名称加随机数 export const getLabelName = (type: InfoType) => { return getNodeName(type); // + 123; }; // 初始化开始节点信息 export const initStartProperties = () => { const bpmnStore = useBpmnStore(); initProperties(getStartNodeId, BpmnNodeKey.START, t('开始节点'), bpmnStore.processInfo.processId); initProperties('Activity_draft', BpmnNodeKey.USER, '发起审批', bpmnStore.processInfo.processId); }; // 修改流程属性 export const changeProcessProperties = async (processConfig: ProcessConfig) => { const bpmnStore = useBpmnStore(); if (processConfig.defaultFormList.length > 0) { const returnArr = await formPermissionList(processConfig.defaultFormList); setDefaultFormList(returnArr); } bpmnStore.setProcessInfo(processConfig); bpmnStore.setInfoId(processConfig.processId); }; // 是否可以初始化节点属性【没有相关节点信息】 export const CanInitializeProperties = (id: InfoId) => { return !hasProperties(id); }; // 是否有节点信息缓存 export const hasProperties = (id: InfoId) => { const bpmnStore = useBpmnStore(); return bpmnStore.hasProperties(id); }; // 设置节点信息缓存 export const setProperties = (id: InfoId, element: InfoItem) => { const bpmnStore = useBpmnStore(); bpmnStore.setProperties(id, element); }; // 初始化节点信息缓存 export const initProperties = (id: InfoId, type: InfoType, name: string, parentId: string) => { const bpmnStore = useBpmnStore(); const { defaultFormList, processInfo } = bpmnStore; const properties = cloneDeep(getDefaultProperties(type)); properties.id = id; properties.name = name; properties.type = type; properties.parentId = parentId; if (type == BpmnNodeKey.START || type == BpmnNodeKey.USER) { properties.formConfigs = cloneDeep(defaultFormList); } if (type == BpmnNodeKey.USER) { properties.autoAgreeRule = processInfo.autoAgreeRule; properties.noHandler = processInfo.noHandler; properties.isPrevChooseNext = processInfo.isPrevChooseNext; } if (id === 'Activity_draft') { // 将草稿节点的审批人设置为流程发起者 properties.approverConfigs = [{ checked:false, id: 'Event_start_node', memberType: 3, name: '开始节点' }]; properties.countersignConfig = { addOrRemove: 1, finishType: 0, multipleInstancesType: 0, percentage: 0, countersignList: [{ checked: false, id: 'Event_start_node', memberType: 3, name: '开始节点' }] } } setProperties(id, properties); }; // 移除节点信息缓存 export const removeProperties = (id: InfoId) => { const bpmnStore = useBpmnStore(); if (bpmnStore.hasProperties(id)) { bpmnStore.deleteProperties(id); } }; // 修改节点parentId export const changePropertiesByParentId = (id: InfoId, parentId: InfoId) => { const bpmnStore = useBpmnStore(); if (bpmnStore.hasProperties(id)) { const properties = bpmnStore.getProperties(id); if (properties) { properties.parentId = parentId; setProperties(id, properties); } } }; //设置默认表单列表 export const setDefaultFormList = (list: Array) => { const bpmnStore = useBpmnStore(); bpmnStore.setDefaultFormList(list); }; //根据默认表单设置,追加所有表单节点的表单配置 export const nodesAppendDefaultForm = (list: Array) => { const bpmnStore = useBpmnStore(); setDefaultFormList(cloneDeep(list)); const { info } = bpmnStore; for (const [key, value] of info) { if (value.type == BpmnNodeKey.START || value.type == BpmnNodeKey.USER) { const properties = bpmnStore.getProperties(key); if (properties) { properties.formConfigs = [...properties.formConfigs, ...cloneDeep(list)]; setProperties(key, properties); } } } }; // 设置childNodes属性 export const setChildNodesProperties = (childNodes: ChildNodeConfig) => { const bpmnStore = useBpmnStore(); if (childNodes.length > 0) { childNodes.forEach((element: InfoItem) => { if (element.id && !bpmnStore.hasProperties(element.id)) { setProperties(element.id, element); } }); } }; // 获取缓存所有节点信息 export const getBpmnJson = () => { const bpmnStore = useBpmnStore(); const { info, processInfo } = bpmnStore; const childNodeConfig = [...info.values()]; return { childNodeConfig, processConfig: processInfo }; }; export const getStartNodeId = 'Event_start_node'; export const getInitializeXml = (resourceId: string) => { return ` Flow_line_draft Flow_line_draft `; // return ` // // // // // // // // // // // // // // // // `; };