Header.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <template>
  2. <div>
  3. <el-button-group>
  4. <el-tooltip class="item" effect="dark" content="保存并发布" placement="bottom">
  5. <el-button type="primary" size="small" @click="save"><i class="fa fa-save"> 保存</i></el-button>
  6. </el-tooltip>
  7. <el-tooltip class="item" effect="dark" content="打开流程文件" placement="bottom">
  8. <el-button type="primary" size="small" @click="importXml"><i class="fa fa-folder-open"></i></el-button>
  9. </el-tooltip>
  10. <el-tooltip class="item" effect="dark" content="创建新流程图" placement="bottom">
  11. <el-button type="primary" size="small" @click="reset"><i class="fa fa-plus-circle"></i></el-button>
  12. </el-tooltip>
  13. <el-tooltip class="item" effect="dark" content="下载流程图" placement="bottom">
  14. <el-button type="primary" size="small" @click="downloadSvg"><i class="fa fa-picture-o"></i></el-button>
  15. </el-tooltip>
  16. <el-tooltip class="item" effect="dark" content="下载流程文件" placement="bottom">
  17. <el-button type="primary" size="small" @click="downloadBpmn"><i class="fa fa-download"></i></el-button>
  18. </el-tooltip>
  19. <el-tooltip class="item" effect="dark" content="撤销" placement="bottom">
  20. <el-button size="small"><i class="fa fa-rotate-left" @click="undo"></i></el-button>
  21. </el-tooltip>
  22. <el-tooltip class="item" effect="dark" content="恢复" placement="bottom">
  23. <el-button size="small"><i class="fa fa-rotate-right" :class="!canRedo?'default-undo':''"
  24. @click="redo"></i></el-button>
  25. </el-tooltip>
  26. <el-tooltip class="item" effect="dark" content="放大" placement="bottom">
  27. <el-button size="small" @click="zoom(0.05)"><i class="fa fa-search-plus"></i></el-button>
  28. </el-tooltip>
  29. <el-tooltip class="item" effect="dark" content="缩小" placement="bottom">
  30. <el-button size="small" @click="zoom(-0.05)"><i class="fa fa-search-minus"></i></el-button>
  31. </el-tooltip>
  32. <el-tooltip class="item" effect="dark" content="重置大小" placement="bottom">
  33. <el-button size="small" @click="zoom(0)"><i class="fa fa-arrows"></i></el-button>
  34. </el-tooltip>
  35. </el-button-group>
  36. <div class="closeClass" @click="beforeClose()"><i class="el-icon-close"></i></div>
  37. </div>
  38. </template>
  39. <script>
  40. export default {
  41. name: "ViewerHeader",
  42. data() {
  43. return {
  44. scale: 1.0,
  45. canRedo: false
  46. }
  47. },
  48. props: {
  49. processData: {
  50. type: Object
  51. },
  52. modeler: {
  53. type: Object
  54. }
  55. },
  56. components: {},
  57. methods: {
  58. deploy() {
  59. let that = this;
  60. let _xml;
  61. let _svg;
  62. this.modeler.saveXML((err, xml) => {
  63. if (err) {
  64. console.error(err)
  65. }
  66. _xml = xml;
  67. })
  68. this.modeler.saveSVG((err, svg) => {
  69. if (err) {
  70. console.error(err)
  71. }
  72. _svg = svg;
  73. })
  74. // that.post(this.Apis.deployProcess, {
  75. // processKey: "s1111",
  76. // processName: "阿达达",
  77. // resourceName: "test01",
  78. // xml: _xml,
  79. // svg: _svg
  80. // }, function (data) {
  81. // console.log(data)
  82. // });
  83. },
  84. save(){
  85. let that = this;
  86. let _xml;
  87. let _svg;
  88. this.modeler.saveXML((err, xml) => {
  89. if (err) {
  90. console.error(err)
  91. }
  92. _xml = xml;
  93. })
  94. this.modeler.saveSVG((err, svg) => {
  95. if (err) {
  96. console.error(err)
  97. }
  98. _svg = svg;
  99. })
  100. that.$emit("processSave",{"xmlStr":_xml,"svgStr":_svg});
  101. },
  102. reset() {
  103. this.$emit('restart')
  104. },
  105. importXml() {
  106. this.$emit('importXml')
  107. },
  108. downloadSvg() {
  109. this.$emit("handleExportSvg")
  110. },
  111. downloadBpmn() {
  112. this.$emit("handleExportBpmn");
  113. },
  114. undo() {
  115. this.modeler.get('commandStack').undo();
  116. this.canRedo = this.modeler.get('commandStack').canRedo();
  117. },
  118. redo() {
  119. if (!this.canRedo) {
  120. return;
  121. }
  122. this.modeler.get('commandStack').redo()
  123. this.canRedo = this.modeler.get('commandStack').canRedo();
  124. },
  125. zoom(val) {
  126. let newScale = !val ? 1.0 : ((this.scale + val) <= 0.2) ? 0.2 : (this.scale + val);
  127. this.modeler.get('canvas').zoom(newScale);
  128. this.scale = newScale;
  129. },
  130. beforeClose(val) {
  131. this.$emit("beforeClose");
  132. }
  133. }
  134. }
  135. </script>
  136. <style scoped>
  137. .closeClass{
  138. float: right;
  139. width: 50px;
  140. height: 50px;
  141. font-size: 20px;
  142. }
  143. .closeClass:hover{
  144. cursor:pointer;
  145. }
  146. </style>