123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- <template>
- <div class="app-container">
- <!-- 流程设计器,负责绘制流程等 -->
- <!-- <myProcessDesigner -->
- <MyProcessDesigner
- :key="`designer-${reloadIndex}`"
- v-if="xmlString !== undefined"
- v-model="xmlString"
- :value="xmlString"
- v-bind="controlForm"
- keyboard
- ref="processDesigner"
- @init-finished="initModeler"
- :additionalModel="controlForm.additionalModel"
- @save="save"
- />
- <!-- 流程属性器,负责编辑每个流程节点的属性 -->
- <!-- <MyProcessPalette -->
- <MyProcessPenal
- :key="`penal-${reloadIndex}`"
- :bpmnModeler="modeler"
- :prefix="controlForm.prefix"
- class="process-panel"
- :model="model"
- />
- </div>
- </template>
- <script setup lang="ts">
- import { MyProcessDesigner, MyProcessPenal } from '@/components/bpmnProcessDesigner/package'
- // import { translations } from '@/components/bpmnProcessDesigner/src/translations'
- // 自定义元素选中时的弹出菜单(修改 默认任务 为 用户任务)
- import CustomContentPadProvider from '@/components/bpmnProcessDesigner/package/designer/plugins/content-pad'
- // 自定义左侧菜单(修改 默认任务 为 用户任务)
- import CustomPaletteProvider from '@/components/bpmnProcessDesigner/package/designer/plugins/palette'
- // import xmlObj2json from "./utils/xml2json";
- // import myProcessDesigner from '@/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue'
- // import MyProcessPalette from '@/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue'
- import { createModelApi, getModelApi, updateModelApi, ModelVO } from '@/api/bpm/model'
- defineOptions({ name: 'BpmModelEditor' })
- const router = useRouter()
- const message = useMessage()
- // 自定义侧边栏
- // import MyProcessPanel from "../package/process-panel/ProcessPanel";
- const xmlString = ref(undefined) // BPMN XML
- const modeler = ref(null)
- const reloadIndex = ref(0)
- // const controlDrawerVisible = ref(false)
- // const translationsSelf = translations
- const controlForm = ref({
- simulation: true,
- labelEditing: false,
- labelVisible: false,
- prefix: 'flowable',
- headerButtonSize: 'mini',
- additionalModel: [CustomContentPadProvider, CustomPaletteProvider]
- })
- // const addis = ref({
- // CustomContentPadProvider,
- // CustomPaletteProvider
- // })
- // 流程模型的信息
- const model = ref<ModelVO>()
- onMounted(() => {
- // 如果 modelId 非空,说明是修改流程模型
- const modelId = router.currentRoute.value.query && router.currentRoute.value.query.modelId
- // console.log(modelId, 'modelId')
- if (modelId) {
- // let data = '4b4909d8-97e7-11ec-8e20-862bc1a4a054'
- getModelApi(modelId as unknown as number).then((data) => {
- // console.log(data, 'response')
- xmlString.value = data.bpmnXml
- model.value = {
- ...data,
- bpmnXml: undefined // 清空 bpmnXml 属性
- }
- // this.controlForm.processId = data.key
- // xmlString.value =
- // '<?xml version="1.0" encoding="UTF-8"?>\n<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="diagram_Process_1645980650311" targetNamespace="http://activiti.org/bpmn"><bpmn2:process id="flowable_01" name="flowable测试" isExecutable="true"><bpmn2:startEvent id="Event_1iruxim"><bpmn2:outgoing>Flow_0804gmo</bpmn2:outgoing></bpmn2:startEvent><bpmn2:userTask id="task01" name="task01"><bpmn2:incoming>Flow_0804gmo</bpmn2:incoming><bpmn2:outgoing>Flow_0cx479x</bpmn2:outgoing></bpmn2:userTask><bpmn2:sequenceFlow id="Flow_0804gmo" sourceRef="Event_1iruxim" targetRef="task01" /><bpmn2:endEvent id="Event_1mdsccz"><bpmn2:incoming>Flow_0cx479x</bpmn2:incoming></bpmn2:endEvent><bpmn2:sequenceFlow id="Flow_0cx479x" sourceRef="task01" targetRef="Event_1mdsccz" /></bpmn2:process><bpmndi:BPMNDiagram id="BPMNDiagram_1"><bpmndi:BPMNPlane id="flowable_01_di" bpmnElement="flowable_01"><bpmndi:BPMNEdge id="Flow_0cx479x_di" bpmnElement="Flow_0cx479x"><di:waypoint x="440" y="350" /><di:waypoint x="492" y="350" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="Flow_0804gmo_di" bpmnElement="Flow_0804gmo"><di:waypoint x="288" y="350" /><di:waypoint x="340" y="350" /></bpmndi:BPMNEdge><bpmndi:BPMNShape id="Event_1iruxim_di" bpmnElement="Event_1iruxim"><dc:Bounds x="252" y="332" width="36" height="36" /></bpmndi:BPMNShape><bpmndi:BPMNShape id="task01_di" bpmnElement="task01"><dc:Bounds x="340" y="310" width="100" height="80" /></bpmndi:BPMNShape><bpmndi:BPMNShape id="Event_1mdsccz_di" bpmnElement="Event_1mdsccz"><dc:Bounds x="492" y="332" width="36" height="36" /></bpmndi:BPMNShape></bpmndi:BPMNPlane></bpmndi:BPMNDiagram></bpmn2:definitions>'
- // model.value = {
- // key: 'flowable_01',
- // name: 'flowable测试',
- // description: 'ooxx',
- // category: '1',
- // formType: 10,
- // formId: 11,
- // formCustomCreatePath: null,
- // formCustomViewPath: null,
- // id: '4b4909d8-97e7-11ec-8e20-862bc1a4a054',
- // createTime: 1645978019795,
- // bpmnXml: undefined // 清空 bpmnXml 属性
- // }
- // console.log(modeler.value, 'modeler11111111')
- })
- }
- })
- const initModeler = (item) => {
- setTimeout(() => {
- modeler.value = item
- // console.log(item, 'initModeler方法modeler')
- // console.log(modeler.value, 'initModeler方法modeler')
- // controlForm.value.prefix = '2222'
- }, 10)
- }
- const save = (bpmnXml) => {
- const data: ModelVO = {
- ...(model.value ?? ({} as ModelVO)),
- bpmnXml: bpmnXml // bpmnXml 只是初始化流程图,后续修改无法通过它获得
- }
- // console.log(data, 'data')
- // 修改的提交
- if (data.id) {
- updateModelApi(data).then(() => {
- // console.log(response, 'response')
- message.success('修改成功')
- // 跳转回去
- close()
- })
- return
- }
- // 添加的提交
- createModelApi(data).then(() => {
- // console.log(response, 'response1')
- message.success('保存成功')
- // 跳转回去
- close()
- })
- }
- /** 关闭按钮 */
- const close = () => {
- router.push({ path: '/bpm/manager/model' })
- }
- </script>
- <style lang="scss">
- //body {
- // overflow: hidden;
- // margin: 0;
- // box-sizing: border-box;
- //}
- //.app {
- // width: 100%;
- // height: 100%;
- // box-sizing: border-box;
- // display: inline-grid;
- // grid-template-columns: 100px auto max-content;
- //}
- .demo-control-bar {
- position: fixed;
- right: 8px;
- bottom: 8px;
- z-index: 1;
- .open-control-dialog {
- width: 48px;
- height: 48px;
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: 4px;
- font-size: 32px;
- background: rgba(64, 158, 255, 1);
- color: #ffffff;
- cursor: pointer;
- }
- }
- // TODO 芋艿:去掉多余的 faq
- //.info-tip {
- // position: fixed;
- // top: 40px;
- // right: 500px;
- // z-index: 10;
- // color: #999999;
- //}
- .control-form {
- .el-radio {
- width: 100%;
- line-height: 32px;
- }
- }
- .element-overlays {
- box-sizing: border-box;
- padding: 8px;
- background: rgba(0, 0, 0, 0.6);
- border-radius: 4px;
- color: #fafafa;
- }
- .my-process-designer {
- height: calc(100vh - 84px);
- }
- .process-panel__container {
- position: absolute;
- right: 0;
- top: 55px;
- height: calc(100vh - 84px);
- }
- </style>
|