|
@@ -34,15 +34,22 @@
|
|
|
import BpmnModeler from "bpmn-js/lib/Modeler";
|
|
|
import xmlStr from "./mock/xmlStr"; // 这里是直接引用了xml字符串
|
|
|
// 工具栏相关
|
|
|
-import {
|
|
|
- BpmnPropertiesPanelModule,
|
|
|
- BpmnPropertiesProviderModule,
|
|
|
-} from "bpmn-js-properties-panel";
|
|
|
-
|
|
|
+import propertiesPanelModule from "bpmn-js-properties-panel";
|
|
|
+import propertiesProviderModule from "bpmn-js-properties-panel/lib/provider/camunda";
|
|
|
import camundaModdleDescriptor from "camunda-bpmn-moddle/resources/camunda";
|
|
|
+
|
|
|
+// 自定义panel
|
|
|
+// import propertiesProviderModule from "@/views/system/bpmn/components/properties-panel-extension/provider/authority/index";
|
|
|
+// import authorityModdleDescriptor from "@/views/system/bpmn/components/properties-panel-extension/descriptors/authority.json";
|
|
|
+// 网格插件
|
|
|
+import GridLineModule from "diagram-js-grid-bg";
|
|
|
+import ContextPadModule from "diagram-js-context-pad"; //上下文优化
|
|
|
// 汉化
|
|
|
import customTranslate from "./mock/customTranslate";
|
|
|
|
|
|
+import minimapModule from "diagram-js-minimap"; //导入小地图
|
|
|
+import "./mock/minimap.css"; //自定义小地图样式
|
|
|
+
|
|
|
export default {
|
|
|
name: "",
|
|
|
components: {},
|
|
@@ -76,18 +83,24 @@ export default {
|
|
|
},
|
|
|
additionalModules: [
|
|
|
// 工具栏模块
|
|
|
- BpmnPropertiesPanelModule,
|
|
|
- BpmnPropertiesProviderModule,
|
|
|
+ propertiesPanelModule,
|
|
|
+ propertiesProviderModule,
|
|
|
// 汉化模块
|
|
|
customTranslateModule,
|
|
|
+ GridLineModule, //网格
|
|
|
+ minimapModule, //小地图
|
|
|
],
|
|
|
moddleExtensions: {
|
|
|
camunda: camundaModdleDescriptor,
|
|
|
+ // authority: authorityModdleDescriptor,
|
|
|
+ },
|
|
|
+ contextPad: {
|
|
|
+ beauty: true,
|
|
|
},
|
|
|
});
|
|
|
- this.createNewDiagram();
|
|
|
+ this.createNewDiagram(xmlStr);
|
|
|
},
|
|
|
- async createNewDiagram() {
|
|
|
+ async createNewDiagram(xmlStr) {
|
|
|
try {
|
|
|
await this.bpmnModeler.importXML(xmlStr);
|
|
|
this.success();
|
|
@@ -96,6 +109,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
success() {
|
|
|
+ console.log(this.bpmnModeler);
|
|
|
console.log("创建成功!");
|
|
|
},
|
|
|
newDiagram() {
|
|
@@ -103,31 +117,35 @@ export default {
|
|
|
},
|
|
|
|
|
|
// 文件操作相关方法
|
|
|
- async downloadBpmn() {
|
|
|
- try {
|
|
|
- let resXML = await this.bpmnModeler.saveXML();
|
|
|
- const name = `${this.getFilename(xmlStr)}.bpmn`;
|
|
|
- // 将文件名以及数据交给下载方法
|
|
|
- this.download({ name: name, data: resXML });
|
|
|
- } catch (error) {
|
|
|
- console.log(error);
|
|
|
- this.$modal.msgError("文件导出失败,请稍后再试");
|
|
|
- }
|
|
|
- },
|
|
|
- async downloadSvg() {
|
|
|
- try {
|
|
|
- let resXML = await this.bpmnModeler.saveXML();
|
|
|
- const name = `${this.getFilename(xmlStr)}.svg`;
|
|
|
- // 从建模器画布中提取svg图形标签
|
|
|
- let context = "";
|
|
|
- const djsGroupAll = this.$refs.canvas.querySelectorAll(".djs-group");
|
|
|
- for (let item of djsGroupAll) {
|
|
|
- context += item.innerHTML;
|
|
|
+ downloadBpmn() {
|
|
|
+ this.bpmnModeler.saveXML({ format: true }, (err, xml) => {
|
|
|
+ if (!err) {
|
|
|
+ // 获取文件名
|
|
|
+ const name = `${this.getFilename(xml)}.bpmn`;
|
|
|
+ // 将文件名以及数据交给下载方法
|
|
|
+ this.download({ name: name, data: xml });
|
|
|
}
|
|
|
- // 获取svg的基本数据,长宽高
|
|
|
- const viewport = this.$refs.canvas.querySelector(".viewport").getBBox();
|
|
|
- // 将标签和数据拼接成一个完整正常的svg图形
|
|
|
- const svg = `
|
|
|
+ });
|
|
|
+ },
|
|
|
+ downloadSvg() {
|
|
|
+ this.bpmnModeler.saveXML({ format: true }, (err, xml) => {
|
|
|
+ if (!err) {
|
|
|
+ // 获取文件名
|
|
|
+ const name = `${this.getFilename(xml)}.svg`;
|
|
|
+
|
|
|
+ // 从建模器画布中提取svg图形标签
|
|
|
+ let context = "";
|
|
|
+ const djsGroupAll = this.$refs.canvas.querySelectorAll(".djs-group");
|
|
|
+ for (let item of djsGroupAll) {
|
|
|
+ context += item.innerHTML;
|
|
|
+ }
|
|
|
+ // 获取svg的基本数据,长宽高
|
|
|
+ const viewport = this.$refs.canvas
|
|
|
+ .querySelector(".viewport")
|
|
|
+ .getBBox();
|
|
|
+
|
|
|
+ // 将标签和数据拼接成一个完整正常的svg图形
|
|
|
+ const svg = `
|
|
|
<svg
|
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
@@ -139,13 +157,12 @@ export default {
|
|
|
${context}
|
|
|
</svg>
|
|
|
`;
|
|
|
- // 将文件名以及数据交给下载方法
|
|
|
- this.download({ name: name, data: svg });
|
|
|
- } catch (error) {
|
|
|
- console.log(error);
|
|
|
- this.$modal.msgError("文件导出失败,请稍后再试");
|
|
|
- }
|
|
|
+ // 将文件名以及数据交给下载方法
|
|
|
+ this.download({ name: name, data: svg });
|
|
|
+ }
|
|
|
+ });
|
|
|
},
|
|
|
+
|
|
|
openBpmn(file) {
|
|
|
const reader = new FileReader();
|
|
|
// 读取File对象中的文本信息,编码格式为UTF-8
|
|
@@ -156,6 +173,7 @@ export default {
|
|
|
};
|
|
|
return false;
|
|
|
},
|
|
|
+
|
|
|
getFilename(xml) {
|
|
|
let start = xml.indexOf("process");
|
|
|
let filename = xml.substr(start, xml.indexOf(">"));
|
|
@@ -186,7 +204,7 @@ export default {
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
.wrapper {
|
|
|
- height: 100vh;
|
|
|
+ height: calc(100vh - 173px);
|
|
|
}
|
|
|
.container {
|
|
|
position: relative;
|