diff --git a/src/api/workflow/model/index.ts b/src/api/workflow/model/index.ts index dcfd76c..f58cdd3 100644 --- a/src/api/workflow/model/index.ts +++ b/src/api/workflow/model/index.ts @@ -15,6 +15,18 @@ export const listModel = (query: ModelQuery): AxiosPromise => { }); }; +/** + * 查询模型信息 + * @param query + * @returns {*} + */ +export const getInfo = (id: string): AxiosPromise => { + return request({ + url: '/workflow/model/getInfo/'+id, + method: 'get' + }); +}; + /** * 新增模型 * @param data @@ -22,12 +34,38 @@ export const listModel = (query: ModelQuery): AxiosPromise => { */ export const addModel = (data: ModelForm): AxiosPromise => { return request({ - url: '/workflow/model/rest/models', + url: '/workflow/model/save', method: 'post', data: data }); }; +/** + * 修改模型信息 + * @param data + * @returns {*} + */ +export function update(data: ModelForm): AxiosPromise { + return request({ + url: '/workflow/model/update', + method: 'put', + data: data + }); +} + +/** + * 修改模型信息 + * @param data + * @returns {*} + */ +export function editModelXml(data: ModelForm): AxiosPromise { + return request({ + url: '/workflow/model/editModelXml', + method: 'put', + data: data + }); +} + /** * 按id删除模型 * @returns {*} diff --git a/src/api/workflow/model/types.ts b/src/api/workflow/model/types.ts index ff0c987..40a0faa 100644 --- a/src/api/workflow/model/types.ts +++ b/src/api/workflow/model/types.ts @@ -1,7 +1,10 @@ export interface ModelForm { + id: string, name: string; key: string; categoryCode: string; + xml:string, + svg:string, description: string; } diff --git a/src/components/BpmnDesign/index.vue b/src/components/BpmnDesign/index.vue index fee7fd3..9098f79 100644 --- a/src/components/BpmnDesign/index.vue +++ b/src/components/BpmnDesign/index.vue @@ -7,7 +7,7 @@
- 保 存 + 保 存 预 览 - - - - @@ -99,15 +95,13 @@ const modelerStore = useModelerStore(); const { proxy } = getCurrentInstance() as ComponentInternalInstance; const dialog = reactive({ - visible: true, + visible: false, title: '编辑流程' }); const panelFlag = ref(false); const showPanel = ref(true); -const xmlUploadRef = ref(); - const canvas = ref(); const panel = ref(); @@ -122,7 +116,7 @@ const svgData = ref(''); onMounted(() => { nextTick(() => { initCanvas(); - initDiagram(); + //initDiagram(null); initModel(); }); }); @@ -135,13 +129,6 @@ const panelBarClick = () => { }, 100); }; -/** - * 从文件加载xml - */ -const loadXML = () => { - xmlUploadRef.value.$el.querySelector('input').click(); -}; - /** * 初始化Canvas */ @@ -179,13 +166,26 @@ const initModel = () => { */ const newDiagram = async () => { await proxy?.$modal.confirm('是否确认新建'); - initDiagram(); + initDiagram(null); }; /** * 初始化 */ -const initDiagram = () => { - bpmnModeler.value.importXML(diagramXML); +const initDiagram = (xml) => { + if(xml){ + nextTick(async () => { + + console.log("xml") + dialog.visible = true + bpmnModeler.value.importXML(xml); + }) + }else{ + nextTick(async () => { + + console.log("diagramXML") + bpmnModeler.value.importXML(diagramXML); + }) + } }; /** @@ -288,6 +288,31 @@ const getProcessElement = () => { if (rootElements[i].$type === 'bpmn:Process') return rootElements[i]; } }; + +const getProcess = () => { + const element = getProcessElement() + return { + id: element.id, + name: element.name + } +}; + +const saveXml = async () => { + const { xml } = await bpmnModeler.value.saveXML({ format: true }); + const { svg } = await bpmnModeler.value.saveSVG(); + const process = getProcess() + console.log(xml) + console.log(svg) + console.log(process) +}; + +/** + * 对外暴露子组件方法 + */ + defineExpose({ + initDiagram, + saveXml +}); diff --git a/src/views/workflow/model/index.vue b/src/views/workflow/model/index.vue index a5552ca..5af303c 100644 --- a/src/views/workflow/model/index.vue +++ b/src/views/workflow/model/index.vue @@ -44,6 +44,9 @@ 新增 + + 修改 + 删除 @@ -102,10 +105,10 @@ - + - + - +