npmapps 1.0.25 → 1.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/PUBLISH.md +268 -0
  2. package/app/.codegraph/daemon.pid +6 -0
  3. package/app/.eslintrc.js +19 -0
  4. package/app/README.md +24 -0
  5. package/app/babel.config.js +5 -0
  6. package/app/devtool-windows-amd64.zip +0 -0
  7. package/app/docs/superpowers/plans/2026-05-29-quill-editor.md +836 -0
  8. package/app/docs/superpowers/specs/2026-05-29-quill-editor-design.md +210 -0
  9. package/app/docs/superpowers/specs/2026-06-06-lazy-cascader-design.md +400 -0
  10. package/app/jsconfig.json +19 -0
  11. package/app/package-lock.json +21347 -0
  12. package/app/package.json +63 -0
  13. package/app/postcss.config.js +10 -0
  14. package/app/public/favicon.ico +0 -0
  15. package/app/public/index.html +17 -0
  16. package/app/public//344/270/200/351/224/256/351/273/221/346/232/227.html +136 -0
  17. package/app/src/App.vue +110 -0
  18. package/app/src/assets/bpmn-camunda.jpg +0 -0
  19. package/app/src/assets/css/diagram.less +17 -0
  20. package/app/src/assets/icon/Icon.less +31 -0
  21. package/app/src/assets/icon/font/app-codes.css +26 -0
  22. package/app/src/assets/icon/font/app.eot +0 -0
  23. package/app/src/assets/icon/font/app.svg +60 -0
  24. package/app/src/assets/icon/font/app.ttf +0 -0
  25. package/app/src/assets/icon/font/app.woff +0 -0
  26. package/app/src/assets/icon/font/app.woff2 +0 -0
  27. package/app/src/assets/icon/font/config.json +248 -0
  28. package/app/src/assets/icon/font/source/raw/align-bottom-tool.svg +30 -0
  29. package/app/src/assets/icon/font/source/raw/align-horizontal-center-tool.svg +85 -0
  30. package/app/src/assets/icon/font/source/raw/align-left-tool.svg +84 -0
  31. package/app/src/assets/icon/font/source/raw/align-right-tool.svg +80 -0
  32. package/app/src/assets/icon/font/source/raw/align-top-tool.svg +84 -0
  33. package/app/src/assets/icon/font/source/raw/align-vertical-center-tool.svg +89 -0
  34. package/app/src/assets/icon/font/source/raw/distribute-horizontally-tool.svg +95 -0
  35. package/app/src/assets/icon/font/source/raw/distribute-vertically-tool.svg +99 -0
  36. package/app/src/assets/icon/font/source/raw/set-color-tool.svg +111 -0
  37. package/app/src/assets/icon/font/source/symbols/align-bottom-tool.svg +30 -0
  38. package/app/src/assets/icon/font/source/symbols/align-horizontal-center-tool.svg +30 -0
  39. package/app/src/assets/icon/font/source/symbols/align-left-tool.svg +30 -0
  40. package/app/src/assets/icon/font/source/symbols/align-right-tool.svg +30 -0
  41. package/app/src/assets/icon/font/source/symbols/align-top-tool.svg +30 -0
  42. package/app/src/assets/icon/font/source/symbols/align-vertical-center-tool.svg +30 -0
  43. package/app/src/assets/icon/font/source/symbols/distribute-horizontally-tool.svg +30 -0
  44. package/app/src/assets/icon/font/source/symbols/distribute-vertically-tool.svg +30 -0
  45. package/app/src/assets/icon/font/source/symbols/set-color-tool.svg +63 -0
  46. package/app/src/assets/logo.png +0 -0
  47. package/app/src/components/EllTable/README.md +70 -0
  48. package/app/src/components/EllTable/article.md +184 -0
  49. package/app/src/components/EllTable/index.js +213 -0
  50. package/app/src/components/FormulaEditor/FunctionSelector.vue +123 -0
  51. package/app/src/components/FormulaEditor/OperatorSelector.vue +184 -0
  52. package/app/src/components/FormulaEditor/ParameterSelector.vue +123 -0
  53. package/app/src/components/FormulaEditor/api.js +69 -0
  54. package/app/src/components/FormulaEditor/index.vue +435 -0
  55. package/app/src/components/HelloWorld.vue +58 -0
  56. package/app/src/components/PageHeader/index.vue +158 -0
  57. package/app/src/components/Splitter/README.md +144 -0
  58. package/app/src/components/Splitter/example.vue +88 -0
  59. package/app/src/components/Splitter/index.vue +203 -0
  60. package/app/src/components/diagram/ToolBar.vue +357 -0
  61. package/app/src/components/diagram/customTranslate/customTranslate.js +12 -0
  62. package/app/src/components/diagram/customTranslate/translationsGerman.js +241 -0
  63. package/app/src/components/diagram/index.vue +261 -0
  64. package/app/src/components/diagram/xmlData.js +29 -0
  65. package/app/src/directives/filldown.js +155 -0
  66. package/app/src/directives/filldownTable.js +291 -0
  67. package/app/src/main.js +40 -0
  68. package/app/src/router/index.js +63 -0
  69. package/app/src/store/index.js +23 -0
  70. package/app/src/utils/winBox.js +23 -0
  71. package/app/src/views/Extend/A.vue +12 -0
  72. package/app/src/views/Extend/B.vue +10 -0
  73. package/app/src/views/Extend/MagicalComponentsForELFormItem.vue +87 -0
  74. package/app/src/views/Extend/index.vue +59 -0
  75. package/app/src/views/Extend/tableMouseHorizontalWheel.vue +193 -0
  76. package/app/src/views/Home.vue +37 -0
  77. package/app/src/views/RouterJump.vue +155 -0
  78. package/app/src/views/css.vue +57 -0
  79. package/app/src/views/cssComponents/EllipsisText.vue +83 -0
  80. package/app/src/views/cssComponents/HoverCard.vue +79 -0
  81. package/app/src/views/cssComponents/TableHover.vue +140 -0
  82. package/app/src/views/cssComponents/inputSlo.vue +52 -0
  83. package/app/src/views/cssComponents/tableFixed.vue +158 -0
  84. package/app/src/views/echarts/echart-dome.vue +82 -0
  85. package/app/src/views/echarts/index.vue +118 -0
  86. package/app/src/views/echarts/pei3d.vue +667 -0
  87. package/app/src/views/element/bpmn/index.vue +18 -0
  88. package/app/src/views/element/components/attendanceCycle/index.vue +131 -0
  89. package/app/src/views/element/components/attendanceGroup/index.vue +147 -0
  90. package/app/src/views/element/components/attendancePersonnel/index.vue +158 -0
  91. package/app/src/views/element/components/companyCalendar/index.vue +147 -0
  92. package/app/src/views/element/components/shift/index.vue +147 -0
  93. package/app/src/views/element/components/shiftRotationSystem/index.vue +147 -0
  94. package/app/src/views/element/elTableJsx/columnManagement.vue +340 -0
  95. package/app/src/views/element/elTableJsx/dialogInput.vue +71 -0
  96. package/app/src/views/element/elTableJsx/elTableJsx.vue +1826 -0
  97. package/app/src/views/element/elTableJsx/formTable.vue +598 -0
  98. package/app/src/views/element/elTableJsx/index.vue +29 -0
  99. package/app/src/views/element/elTableJsx/simpleTable.vue +192 -0
  100. package/app/src/views/element/elTableJsx.zip +0 -0
  101. package/app/src/views/element/index.vue +44 -0
  102. package/app/src/views/element/lazyCascader/LazyCascader.vue +302 -0
  103. package/app/src/views/element/lazyCascader/data.js +205 -0
  104. package/app/src/views/element/lazyCascader/index.vue +315 -0
  105. package/app/src/views/element/quillEditor/README.md +163 -0
  106. package/app/src/views/element/quillEditor/example.vue +314 -0
  107. package/app/src/views/element/quillEditor/index.vue +409 -0
  108. package/app/src/views/element/quillEditor/toolbar.js +122 -0
  109. package/app/vue.config.js +15 -0
  110. package/package.json +1 -1
  111. package/app/wujie-vue3-child/.claude/settings.local.json +0 -8
  112. package/app/wujie-vue3-child/.vscode/extensions.json +0 -3
  113. package/app/wujie-vue3-child/PROJECT_MEMORY.md +0 -427
  114. package/app/wujie-vue3-child/README.md +0 -5
  115. package/app/wujie-vue3-child/index.html +0 -13
  116. package/app/wujie-vue3-child/package-lock.json +0 -5744
  117. package/app/wujie-vue3-child/package.json +0 -28
  118. package/app/wujie-vue3-child/public/vite.svg +0 -1
  119. package/app/wujie-vue3-child/src/App.vue +0 -130
  120. package/app/wujie-vue3-child/src/assets/vue.svg +0 -1
  121. package/app/wujie-vue3-child/src/components/HelloWorld.vue +0 -43
  122. package/app/wujie-vue3-child/src/components/SmartAnchorTabs/index.jsx +0 -224
  123. package/app/wujie-vue3-child/src/components/SmartAnchorTabs/style.css +0 -154
  124. package/app/wujie-vue3-child/src/components/tags-view.vue +0 -193
  125. package/app/wujie-vue3-child/src/components/tags-view1.vue +0 -131
  126. package/app/wujie-vue3-child/src/directives/aiLoading.js +0 -182
  127. package/app/wujie-vue3-child/src/hooks/useClickOutside.js +0 -11
  128. package/app/wujie-vue3-child/src/hooks/useTableDragSort.js +0 -28
  129. package/app/wujie-vue3-child/src/main.js +0 -18
  130. package/app/wujie-vue3-child/src/router/index.js +0 -104
  131. package/app/wujie-vue3-child/src/store/tagsViewStroe.js +0 -34
  132. package/app/wujie-vue3-child/src/style.css +0 -171
  133. package/app/wujie-vue3-child/src/views/aiCoach/collapseExpand/index.jsx +0 -108
  134. package/app/wujie-vue3-child/src/views/aiCoach/collapseExpand/index.module.scss +0 -97
  135. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/README.md +0 -836
  136. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/REFLEX_EXAMPLES.md +0 -728
  137. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentPersonnelSelector.jsx +0 -687
  138. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentPersonnelSelector.module.scss +0 -560
  139. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentSelector.jsx +0 -570
  140. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentSelector.module.scss +0 -330
  141. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentSelectorV2.jsx +0 -378
  142. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentSelectorV2.module.scss +0 -228
  143. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/OptionsSelector.jsx +0 -399
  144. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/OptionsSelector.module.scss +0 -252
  145. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/PersonnelSelector.jsx +0 -585
  146. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/PersonnelSelector.module.scss +0 -331
  147. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/PopoverSelector.jsx +0 -392
  148. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/PopoverSelector.module.scss +0 -39
  149. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/README.md +0 -248
  150. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/SelectorTrigger.jsx +0 -194
  151. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/index.jsx +0 -1459
  152. package/app/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/mockData.js +0 -301
  153. package/app/wujie-vue3-child/src/views/aiCoach/dialogueSegment/index.jsx +0 -182
  154. package/app/wujie-vue3-child/src/views/aiCoach/dialogueSegment/index.module.scss +0 -28
  155. package/app/wujie-vue3-child/src/views/aiCoach/index.jsx +0 -375
  156. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/ChartsPanel/index.jsx +0 -121
  157. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/ChartsPanel/index.module.scss +0 -76
  158. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/DonutChart/index.jsx +0 -104
  159. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/PracticeTable/index.jsx +0 -75
  160. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/PracticeTable/index.module.scss +0 -12
  161. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankBarChart/index.jsx +0 -62
  162. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankBarChart/index.module.scss +0 -43
  163. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankingGroup/index.jsx +0 -29
  164. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankingGroup/index.module.scss +0 -5
  165. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankingList/index.jsx +0 -58
  166. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankingList/index.module.scss +0 -85
  167. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/ScriptStatsPanel/index.jsx +0 -92
  168. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/ScriptStatsPanel/index.module.scss +0 -56
  169. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/StatCardsRow/index.jsx +0 -40
  170. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/StatCardsRow/index.module.scss +0 -53
  171. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/echarts/EchartsDonut.jsx +0 -106
  172. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/echarts/EchartsRankBar.jsx +0 -132
  173. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/index.jsx +0 -176
  174. package/app/wujie-vue3-child/src/views/aiCoach/practiceStatus/index.module.scss +0 -96
  175. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/CoachReport/index.jsx +0 -162
  176. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/CoachReport/index.module.scss +0 -16
  177. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ComprehensiveEvaluation/index.jsx +0 -29
  178. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ComprehensiveEvaluation/index.module.scss +0 -25
  179. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DialogueBubble/index.jsx +0 -106
  180. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DialogueBubble/index.module.scss +0 -164
  181. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DialogueRecord/index.jsx +0 -182
  182. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DialogueRecord/index.module.scss +0 -203
  183. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DimensionDetail/index.jsx +0 -145
  184. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DimensionDetail/index.module.scss +0 -126
  185. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DimensionScores/index.jsx +0 -67
  186. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DimensionScores/index.module.scss +0 -105
  187. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ReportHeader/index.jsx +0 -81
  188. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ReportHeader/index.module.scss +0 -47
  189. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/RoleInfo/index.jsx +0 -64
  190. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/RoleInfo/index.module.scss +0 -85
  191. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ScoreBadge/index.jsx +0 -39
  192. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ScoreBadge/index.module.scss +0 -44
  193. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/SubDimensionItem/index.jsx +0 -83
  194. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/components/SubDimensionItem/index.module.scss +0 -101
  195. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/index.jsx +0 -50
  196. package/app/wujie-vue3-child/src/views/aiCoach/reportDetail/index.module.scss +0 -25
  197. package/app/wujie-vue3-child/src/views/aiCoach/scriptTable/index.jsx +0 -196
  198. package/app/wujie-vue3-child/src/views/aiCoach/scriptTable/index.module.scss +0 -41
  199. package/app/wujie-vue3-child/src/views/aiCoach/scriptTable/inputColumn/index.jsx +0 -183
  200. package/app/wujie-vue3-child/src/views/aiCoach/scriptTable/inputColumn/index.module.scss +0 -115
  201. package/app/wujie-vue3-child/src/views/child-to-parent.vue +0 -117
  202. package/app/wujie-vue3-child/src/views/home.vue +0 -53
  203. package/app/wujie-vue3-child/src/views/jsx/btnSelect/btnSelect.vue +0 -169
  204. package/app/wujie-vue3-child/src/views/jsx/btnSelect/index.vue +0 -69
  205. package/app/wujie-vue3-child/src/views/jsx/com.vue +0 -44
  206. package/app/wujie-vue3-child/src/views/jsx/dialog.jsx +0 -66
  207. package/app/wujie-vue3-child/src/views/jsx/index.vue +0 -72
  208. package/app/wujie-vue3-child/src/views/jsx/props.vue +0 -33
  209. package/app/wujie-vue3-child/src/views/parent-to-child.vue +0 -225
  210. package/app/wujie-vue3-child/src/views/phone-code.vue +0 -318
  211. package/app/wujie-vue3-child/src/views/router-jump.vue +0 -123
  212. package/app/wujie-vue3-child/src/views/test.vue +0 -192
  213. package/app/wujie-vue3-child/vite.config.js +0 -15
@@ -0,0 +1,357 @@
1
+ <template>
2
+ <div class="header-container">
3
+ <!-- <i title="创建 diagram" class="app-icon app-icon-new"></i> -->
4
+ <i title="打开 diagram" class="app-icon app-icon-open" @click="$refs.refFile.click()"></i>|
5
+ <i title="保存 diagram" class="app-icon app-icon-save" @click="saveXml"></i>
6
+ <i title="导出 diagram" class="app-icon app-icon-save-as" @click="saveBPMN"></i>|
7
+ <i title="复原" class="app-icon app-icon-undo" @click="redo"></i>
8
+ <i title="撤销" class="app-icon app-icon-redo" @click="undo"></i>|
9
+ <i title="导出为图片" class="app-icon app-icon-picture" @click="saveSVG"></i>|
10
+ <i :class="{open: isOpenColor}" title="设置元素颜色" class="app-icon app-icon-set-color-tool" @click="openColor">
11
+ <i class="el-icon-caret-bottom"></i>
12
+ <ul class="colorSelect" v-show="isOpenColor">
13
+ <li v-for="c in COLORS" :key="c.title">
14
+ <div class="colorBlock" :title="c.title" :style="{borderColor: c.stroke, backgroundColor: c.fill}" @click="setColor(c.fill, c.stroke)"></div>
15
+ </li>
16
+ </ul>
17
+ </i>|
18
+ <i title="元素左对齐" class="app-icon app-icon-align-left-tool" @click="alignElements('left')"></i>
19
+ <i title="元素垂直居中对齐" class="app-icon app-icon-align-center-tool" @click="alignElements('center')"></i>
20
+ <i title="元素右对齐" class="app-icon app-icon-align-right-tool" @click="alignElements('right')"></i>
21
+ <i title="元素顶部对齐" class="app-icon app-icon-align-top-tool" @click="alignElements('top')"></i>
22
+ <i title="元素水平居中对齐" class="app-icon app-icon-align-middle-tool" @click="alignElements('middle')"></i>
23
+ <i title="元素底部对齐" class="app-icon app-icon-distribute-vertical-tool" @click="alignElements('bottom')"></i>|
24
+ <i title="水平分布元素" class="app-icon app-icon-distribute-horizontal-tool" @click="distributeElements('horizontal')"></i>
25
+ <i title="垂直分布元素" class="app-icon app-icon-distribute-vertical-tool" @click="distributeElements('vertical')"></i>
26
+ |
27
+ <i title="放大" class="el-icon-zoom-in" @click="handlerZoom(0.1)"></i>
28
+ <i title="缩小" class="el-icon-zoom-out" @click="handlerZoom(-0.1)"></i>
29
+ <i title="复制" class="el-icon-document-copy" @click="execCopy"></i>
30
+ <i title="粘贴" class="el-icon-document-add" @click="execPaste"></i>
31
+
32
+ <input type="file" id="files" ref="refFile" style="display: none" @change="loadBPMN" />
33
+
34
+ </div>
35
+ </template>
36
+
37
+ <script>
38
+
39
+ const COLORS = [{
40
+ title: 'White',
41
+ fill: 'white',
42
+ stroke: 'black'
43
+ }, {
44
+ title: 'Blue',
45
+ fill: 'rgb(187, 222, 251)',
46
+ stroke: 'rgb(30, 136, 229)'
47
+ }, {
48
+ title: 'Orange',
49
+ fill: 'rgb(255, 224, 178)',
50
+ stroke: 'rgb(251, 140, 0)'
51
+ }, {
52
+ title: 'Green',
53
+ fill: 'rgb(200, 230, 201)',
54
+ stroke: 'rgb(67, 160, 71)'
55
+ }, {
56
+ title: 'Red',
57
+ fill: 'rgb(255, 205, 210)',
58
+ stroke: 'rgb(229, 57, 53)'
59
+ }, {
60
+ title: 'Purple',
61
+ fill: 'rgb(225, 190, 231)',
62
+ stroke: 'rgb(142, 36, 170)'
63
+ }]
64
+ export default {
65
+ props: {
66
+ bpmnModeler: Object,
67
+ xml: String,
68
+ elementSelector: Array,
69
+ scale: Number
70
+ },
71
+ data () {
72
+ return {
73
+ color: '',
74
+ isOpenColor: false,
75
+ activeName: 'first',
76
+ COLORS
77
+ }
78
+ },
79
+ methods: {
80
+ execCopy () {
81
+ if (!this.elementSelector.length) return this.$message.warning('请选择元素!')
82
+
83
+ const modeler = this.bpmnModeler
84
+ this.copy(modeler, this.elementSelector)
85
+ },
86
+ execPaste () {
87
+ const modeler = this.bpmnModeler
88
+ this.paste(modeler, 'Process_1', { x: 0, y: 0 })
89
+ },
90
+ redo () {
91
+ this.bpmnModeler.get('commandStack').redo()
92
+ },
93
+ undo () {
94
+ this.bpmnModeler.get('commandStack').undo()
95
+ },
96
+
97
+ openColor () {
98
+ this.isOpenColor = !this.isOpenColor
99
+ },
100
+
101
+ setColor (fill, stroke) {
102
+ if (!this.elementSelector.length) return this.$message.warning('请选择元素')
103
+ const modeling = this.bpmnModeler.get('modeling')
104
+ this.elementSelector.map(element => {
105
+ modeling.setColor(element, {
106
+ fill,
107
+ stroke
108
+ })
109
+ })
110
+ },
111
+
112
+ // left/top/right/bottom/cneter/middle
113
+ alignElements (position = 'center') {
114
+ if (!this.elementSelector.length) return this.$message.warning('请选择元素')
115
+ const alignElements = this.bpmnModeler.get('alignElements')
116
+ alignElements.trigger(this.elementSelector, position)
117
+ },
118
+
119
+ // horizontal/vertical
120
+ distributeElements (axis) {
121
+ if (!this.elementSelector.length) return this.$message.warning('请选择元素')
122
+ const alignElements = this.bpmnModeler.get('distributeElements')
123
+ alignElements.trigger(this.elementSelector, axis)
124
+ },
125
+
126
+ handlerZoom (radio) {
127
+ const newScale = !radio ? 1.0 : this.scale + radio
128
+ this.bpmnModeler.get('canvas').zoom(newScale)
129
+ this.$emit('scale', newScale)
130
+ },
131
+
132
+ async saveXml () {
133
+ const res = await this.bpmnModeler.saveXML({ format: true })
134
+ console.log(res);
135
+
136
+ this.$emit('updateXml', res.xml)
137
+ this.$message.success('保存成功')
138
+ },
139
+
140
+ async saveBPMN () {
141
+ try {
142
+ const result = await this.bpmnModeler.saveXML({ format: true })
143
+ const { xml } = result
144
+
145
+ const xmlBlob = new Blob([xml], {
146
+ type: 'application/bpmn20-xml;charset=UTF-8,'
147
+ })
148
+
149
+ const downloadLink = document.createElement('a')
150
+ downloadLink.download = `bpmn-${+new Date()}.bpmn`
151
+ downloadLink.innerHTML = 'Get BPMN SVG'
152
+ downloadLink.href = window.URL.createObjectURL(xmlBlob)
153
+ downloadLink.onclick = function (event) {
154
+ document.body.removeChild(event.target)
155
+ }
156
+ downloadLink.style.visibility = 'hidden'
157
+ document.body.appendChild(downloadLink)
158
+ downloadLink.click()
159
+ } catch (err) {
160
+ console.log(err)
161
+ }
162
+ },
163
+
164
+ async loadBPMN () {
165
+ const that = this
166
+ const file = this.$refs.refFile.files[0]
167
+
168
+ const reader = new FileReader()
169
+ reader.readAsText(file)
170
+ reader.onload = function () {
171
+ that.$emit('updateXml', this.result)
172
+ }
173
+ },
174
+
175
+ async saveSVG () {
176
+ try {
177
+ const result = await this.bpmnModeler.saveSVG()
178
+ const { svg } = result
179
+
180
+ const svgBlob = new Blob([svg], {
181
+ type: 'image/svg+xml'
182
+ })
183
+
184
+ const downloadLink = document.createElement('a')
185
+ downloadLink.download = `bpmn-${+new Date()}.SVG`
186
+ downloadLink.innerHTML = 'Get BPMN SVG'
187
+ downloadLink.href = window.URL.createObjectURL(svgBlob)
188
+ downloadLink.onclick = function (event) {
189
+ document.body.removeChild(event.target)
190
+ }
191
+ downloadLink.style.visibility = 'hidden'
192
+ document.body.appendChild(downloadLink)
193
+ downloadLink.click()
194
+ } catch (err) {
195
+ console.log(err)
196
+ }
197
+ },
198
+
199
+ /**
200
+ * For the given modeler, copy an element to
201
+ * localStorage.
202
+ *
203
+ * @param {BpmnModeler} modeler
204
+ * @param {Array} elements
205
+ * @param {String} target
206
+ * @param {Point} position
207
+ */
208
+ copy (modeler, elements) {
209
+ var clipboard = modeler.get('clipboard')
210
+ var copyPaste = modeler.get('copyPaste')
211
+
212
+ // get element to be copied
213
+
214
+ // copy!
215
+ copyPaste.copy(elements)
216
+
217
+ // retrieve clipboard contents
218
+ var copied = clipboard.get()
219
+
220
+ // persist in local storage, encoded as json
221
+ localStorage.setItem('bpmnClipboard', JSON.stringify(copied))
222
+ },
223
+
224
+ /**
225
+ * For the given modeler retrieved copied elements from
226
+ * localStorage and paste them onto the specified target.
227
+ *
228
+ * @param {BpmnModeler} modeler
229
+ * @param {String} target
230
+ * @param {Point} position
231
+ */
232
+ paste (modeler, targetId, position) {
233
+ var clipboard = modeler.get('clipboard')
234
+ var copyPaste = modeler.get('copyPaste')
235
+ var elementRegistry = modeler.get('elementRegistry')
236
+ var moddle = modeler.get('moddle')
237
+
238
+ // retrieve from local storage
239
+ var serializedCopy = localStorage.getItem('bpmnClipboard')
240
+
241
+ // parse tree, reinstantiating contained objects
242
+ var parsedCopy = JSON.parse(serializedCopy, this.createReviver(moddle))
243
+
244
+ // put into clipboard
245
+ clipboard.set(parsedCopy)
246
+
247
+ var pasteContext = {
248
+ element: elementRegistry.get(targetId),
249
+ point: position
250
+ }
251
+
252
+ // paste tree
253
+ copyPaste.paste(pasteContext)
254
+ },
255
+
256
+ /**
257
+ * A factory function that returns a reviver to be
258
+ * used with JSON#parse to reinstantiate moddle instances.
259
+ *
260
+ * @param {Moddle} moddle
261
+ *
262
+ * @return {Function}
263
+ */
264
+ createReviver (moddle) {
265
+ var elCache = {}
266
+ /**
267
+ * The actual reviewer that creates model instances
268
+ * for elements with a $type attribute.
269
+ *
270
+ * Elements with ids will be re-used, if already
271
+ * created.
272
+ *
273
+ * @param {String} key
274
+ * @param {Object} object
275
+ *
276
+ * @return {Object} actual element
277
+ */
278
+ return function (key, object) {
279
+ if (typeof object === 'object' && typeof object.$type === 'string') {
280
+ var objectId = object.id
281
+
282
+ if (objectId && elCache[objectId]) {
283
+ return elCache[objectId]
284
+ }
285
+
286
+ var type = object.$type
287
+ var attrs = Object.assign({}, object)
288
+
289
+ delete attrs.$type
290
+
291
+ var newEl = moddle.create(type, attrs)
292
+
293
+ if (objectId) {
294
+ elCache[objectId] = newEl
295
+ }
296
+
297
+ return newEl
298
+ }
299
+
300
+ return object
301
+ }
302
+ }
303
+ }
304
+ }
305
+ </script>
306
+
307
+ <style lang="less" scoped>
308
+ .header-container {
309
+ user-select: none;
310
+ .app-icon {
311
+ font-size: 14px;
312
+ padding: 5px;
313
+ margin-right: 4px;
314
+ width: 14px;
315
+ height: 16px;
316
+ cursor: pointer;
317
+ border: 1px solid rgba(1, 1, 1, 0);
318
+
319
+ &:hover {
320
+ background-color: #f8f8f8;
321
+ border: 1px solid #ccc;
322
+ }
323
+ }
324
+
325
+ .app-icon-set-color-tool {
326
+ position: relative;
327
+ .colorBlock {
328
+ margin: 4px;
329
+ width: 56px;
330
+ height: 16px;
331
+ border: 1px solid;
332
+ }
333
+
334
+ &.open {
335
+ background-color: #f8f8f8;
336
+ border: 1px solid #ccc;
337
+ }
338
+ }
339
+ .colorSelect {
340
+ z-index: 10;
341
+ position: absolute;
342
+ left: 0;
343
+ list-style: none;
344
+ transform: translateX(-50%);
345
+ }
346
+ }
347
+ i[class^='el-icon'] {
348
+ padding: 5px;
349
+
350
+ cursor: pointer;
351
+ border: 1px solid rgba(0, 0, 0, 0);
352
+ }
353
+ i[class^='el-icon']:hover {
354
+ background-color: #f8f8f8;
355
+ border: 1px solid #ccc;
356
+ }
357
+ </style>
@@ -0,0 +1,12 @@
1
+ import translations from './translationsGerman'
2
+ export default function customTranslate (template, replacements) {
3
+ replacements = replacements || {}
4
+ template = translations[template] || template
5
+ return template.replace(/{([^}]+)}/g, function (_, key) {
6
+ var str = replacements[key]
7
+ if (translations[replacements[key]] != null && translations[replacements[key]] !== 'undefined') {
8
+ str = translations[replacements[key]]
9
+ }
10
+ return str || '{' + key + '}'
11
+ })
12
+ }
@@ -0,0 +1,241 @@
1
+ export default {
2
+ // Labels
3
+ 'Activate the global connect tool': '激活全局连接工具',
4
+ 'Append {type}': '追加 {type}',
5
+ 'Append EndEvent': '追加 结束事件 ',
6
+ 'Append Task': '追加 任务',
7
+ 'Append Gateway': '追加 网关',
8
+ 'Append Intermediate/Boundary Event': '追加 中间/边界 事件',
9
+ 'Add Lane above': '在上面添加道',
10
+ 'Divide into two Lanes': '分割成两个道',
11
+ 'Divide into three Lanes': '分割成三个道',
12
+ 'Add Lane below': '在下面添加道',
13
+ 'Append compensation activity': '追加补偿活动',
14
+ 'Change type': '修改类型',
15
+ 'Connect using Association': '使用关联连接',
16
+ 'Connect using Sequence/MessageFlow or Association': '使用顺序/消息流或者关联连接',
17
+ 'Connect using DataInputAssociation': '使用数据输入关联连接',
18
+ Remove: '移除',
19
+ 'Activate the hand tool': '激活抓手工具',
20
+ 'Activate the lasso tool': '激活套索工具',
21
+ 'Activate the create/remove space tool': '激活创建/删除空间工具',
22
+ 'Create expanded SubProcess': '创建扩展子过程',
23
+ 'Create IntermediateThrowEvent/BoundaryEvent': '创建中间抛出事件/边界事件',
24
+ 'Create Pool/Participant': '创建池/参与者',
25
+ 'Parallel Multi Instance': '并行多重事件',
26
+ 'Sequential Multi Instance': '时序多重事件',
27
+ DataObjectReference: '数据对象参考',
28
+ DataStoreReference: '数据存储参考',
29
+ Loop: '循环',
30
+ 'Ad-hoc': '即席',
31
+ 'Create {type}': '创建 {type}',
32
+ 'Create Task': '创建任务',
33
+ 'Create StartEvent': '创建开始事件',
34
+ 'Create EndEvent': '创建结束事件',
35
+ 'Create Group': '创建组',
36
+ Task: '任务',
37
+ 'Send Task': '发送任务',
38
+ 'Receive Task': '接收任务',
39
+ 'User Task': '用户任务',
40
+ 'Manual Task': '手工任务',
41
+ 'Business Rule Task': '业务规则任务',
42
+ 'Service Task': '服务任务',
43
+ 'Script Task': '脚本任务',
44
+ 'Call Activity': '调用活动',
45
+ 'Sub Process (collapsed)': '子流程(折叠的)',
46
+ 'Sub Process (expanded)': '子流程(展开的)',
47
+ 'Start Event': '开始事件',
48
+ StartEvent: '开始事件',
49
+ 'Intermediate Throw Event': '中间事件',
50
+ 'End Event': '结束事件',
51
+ EndEvent: '结束事件',
52
+ 'Create Gateway': '创建网关',
53
+ GateWay: '网关',
54
+ 'Create Intermediate/Boundary Event': '创建中间/边界事件',
55
+ 'Message Start Event': '消息开始事件',
56
+ 'Timer Start Event': '定时开始事件',
57
+ 'Conditional Start Event': '条件开始事件',
58
+ 'Signal Start Event': '信号开始事件',
59
+ 'Error Start Event': '错误开始事件',
60
+ 'Escalation Start Event': '升级开始事件',
61
+ 'Compensation Start Event': '补偿开始事件',
62
+ 'Message Start Event (non-interrupting)': '消息开始事件(非中断)',
63
+ 'Timer Start Event (non-interrupting)': '定时开始事件(非中断)',
64
+ 'Conditional Start Event (non-interrupting)': '条件开始事件(非中断)',
65
+ 'Signal Start Event (non-interrupting)': '信号开始事件(非中断)',
66
+ 'Escalation Start Event (non-interrupting)': '升级开始事件(非中断)',
67
+ 'Message Intermediate Catch Event': '消息中间捕获事件',
68
+ 'Message Intermediate Throw Event': '消息中间抛出事件',
69
+ 'Timer Intermediate Catch Event': '定时中间捕获事件',
70
+ 'Escalation Intermediate Throw Event': '升级中间抛出事件',
71
+ 'Conditional Intermediate Catch Event': '条件中间捕获事件',
72
+ 'Link Intermediate Catch Event': '链接中间捕获事件',
73
+ 'Link Intermediate Throw Event': '链接中间抛出事件',
74
+ 'Compensation Intermediate Throw Event': '补偿中间抛出事件',
75
+ 'Signal Intermediate Catch Event': '信号中间捕获事件',
76
+ 'Signal Intermediate Throw Event': '信号中间抛出事件',
77
+ 'Message End Event': '消息结束事件',
78
+ 'Escalation End Event': '定时结束事件',
79
+ 'Error End Event': '错误结束事件',
80
+ 'Cancel End Event': '取消结束事件',
81
+ 'Compensation End Event': '补偿结束事件',
82
+ 'Signal End Event': '信号结束事件',
83
+ 'Terminate End Event': '终止结束事件',
84
+ 'Message Boundary Event': '消息边界事件',
85
+ 'Message Boundary Event (non-interrupting)': '消息边界事件(非中断)',
86
+ 'Timer Boundary Event': '定时边界事件',
87
+ 'Timer Boundary Event (non-interrupting)': '定时边界事件(非中断)',
88
+ 'Escalation Boundary Event': '升级边界事件',
89
+ 'Escalation Boundary Event (non-interrupting)': '升级边界事件(非中断)',
90
+ 'Conditional Boundary Event': '条件边界事件',
91
+ 'Conditional Boundary Event (non-interrupting)': '条件边界事件(非中断)',
92
+ 'Error Boundary Event': '错误边界事件',
93
+ 'Cancel Boundary Event': '取消边界事件',
94
+ 'Signal Boundary Event': '信号边界事件',
95
+ 'Signal Boundary Event (non-interrupting)': '信号边界事件(非中断)',
96
+ 'Compensation Boundary Event': '补偿边界事件',
97
+ 'Exclusive Gateway': '互斥网关',
98
+ 'Parallel Gateway': '并行网关',
99
+ 'Inclusive Gateway': '相容网关',
100
+ 'Complex Gateway': '复杂网关',
101
+ 'Event based Gateway': '事件网关',
102
+ Transaction: '转运',
103
+ 'Sub Process': '子流程',
104
+ 'Event Sub Process': '事件子流程',
105
+ 'Collapsed Pool': '折叠池',
106
+ 'Expanded Pool': '展开池',
107
+ // Errors
108
+ 'no parent for {element} in {parent}': '在{parent}里,{element}没有父类',
109
+ 'no shape type specified': '没有指定的形状类型',
110
+ 'flow elements must be children of pools/participants': '流元素必须是池/参与者的子类',
111
+ 'out of bounds release': 'out of bounds release',
112
+ 'more than {count} child lanes': '子道大于{count} ',
113
+ 'element required': '元素不能为空',
114
+ 'diagram not part of bpmn:Definitions': '流程图不符合bpmn规范',
115
+ 'no diagram to display': '没有可展示的流程图',
116
+ 'no process or collaboration to display': '没有可展示的流程/协作',
117
+ 'element {element} referenced by {referenced}#{property} not yet drawn': '由{referenced}#{property}引用的{element}元素仍未绘制',
118
+ 'already rendered {element}': '{element} 已被渲染',
119
+ 'failed to import {element}': '导入{element}失败',
120
+ // 属性面板的参数
121
+ Id: '编号',
122
+ Name: '名称',
123
+ General: '常规',
124
+ Details: '详情',
125
+ 'Message Name': '消息名称',
126
+ Message: '消息',
127
+ Initiator: '创建者',
128
+ 'Asynchronous Continuations': '持续异步',
129
+ 'Asynchronous Before': '异步前',
130
+ 'Asynchronous After': '异步后',
131
+ 'Job Configuration': '工作配置',
132
+ Exclusive: '排除',
133
+ 'Job Priority': '工作优先级',
134
+ 'Retry Time Cycle': '重试时间周期',
135
+ Documentation: '文档',
136
+ 'Element Documentation': '元素文档',
137
+ 'History Configuration': '历史配置',
138
+ 'History Time To Live': '历史的生存时间',
139
+ Forms: '表单',
140
+ 'Form Key': '表单key',
141
+ 'Form Fields': '表单字段',
142
+ 'Business Key': '业务key',
143
+ 'Form Field': '表单字段',
144
+ ID: '编号',
145
+ Type: '类型',
146
+ Label: '名称',
147
+ 'Default Value': '默认值',
148
+ Validation: '校验',
149
+ 'Add Constraint': '添加约束',
150
+ Config: '配置',
151
+ Properties: '属性',
152
+ 'Add Property': '添加属性',
153
+ Value: '值',
154
+ Add: '添加',
155
+ Values: '值',
156
+ 'Add Value': '添加值',
157
+ Listeners: '监听器',
158
+ 'Execution Listener': '执行监听',
159
+ 'Event Type': '事件类型',
160
+ 'Listener Type': '监听器类型',
161
+ 'Java Class': 'Java类',
162
+ Expression: '表达式',
163
+ 'Must provide a value': '必须提供一个值',
164
+ 'Delegate Expression': '代理表达式',
165
+ Script: '脚本',
166
+ 'Script Format': '脚本格式',
167
+ 'Script Type': '脚本类型',
168
+ 'Inline Script': '内联脚本',
169
+ 'External Script': '外部脚本',
170
+ Resource: '资源',
171
+ 'Field Injection': '字段注入',
172
+ Extensions: '扩展',
173
+ 'Input/Output': '输入/输出',
174
+ 'Input Parameters': '输入参数',
175
+ 'Output Parameters': '输出参数',
176
+ Parameters: '参数',
177
+ 'Output Parameter': '输出参数',
178
+ 'Timer Definition Type': '定时器定义类型',
179
+ 'Timer Definition': '定时器定义',
180
+ Date: '日期',
181
+ Duration: '持续',
182
+ Cycle: '循环',
183
+ Signal: '信号',
184
+ 'Signal Name': '信号名称',
185
+ Escalation: '升级',
186
+ Error: '错误',
187
+ 'Link Name': '链接名称',
188
+ Condition: '条件名称',
189
+ 'Variable Name': '变量名称',
190
+ 'Variable Event': '变量事件',
191
+ 'Specify more than one variable change event as a comma separated list.': '多个变量事件以逗号隔开',
192
+ 'Wait for Completion': '等待完成',
193
+ 'Activity Ref': '活动参考',
194
+ 'Version Tag': '版本标签',
195
+ Executable: '可执行文件',
196
+ 'External Task Configuration': '扩展任务配置',
197
+ 'Task Priority': '任务优先级',
198
+ External: '外部',
199
+ Connector: '连接器',
200
+ 'Must configure Connector': '必须配置连接器',
201
+ 'Connector Id': '连接器编号',
202
+ Implementation: '实现方式',
203
+ 'Field Injections': '字段注入',
204
+ Fields: '字段',
205
+ 'Result Variable': '结果变量',
206
+ Topic: '主题',
207
+ 'Configure Connector': '配置连接器',
208
+ 'Input Parameter': '输入参数',
209
+ Assignee: '代理人',
210
+ 'Candidate Users': '候选用户',
211
+ 'Candidate Groups': '候选组',
212
+ 'Due Date': '到期时间',
213
+ 'Follow Up Date': '跟踪日期',
214
+ Priority: '优先级',
215
+ // eslint-disable-next-line no-template-curly-in-string
216
+ 'The follow up date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)': '跟踪日期必须符合EL表达式,如: ${someDate} ,或者一个ISO标准日期,如:2015-06-26T09:54:00',
217
+ // eslint-disable-next-line no-template-curly-in-string
218
+ 'The due date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)': '跟踪日期必须符合EL表达式,如: ${someDate} ,或者一个ISO标准日期,如:2015-06-26T09:54:00',
219
+ Variables: '变量',
220
+ 'Candidate Starter Configuration': '候选开始配置',
221
+ 'Task Listener': '任务监听器',
222
+ 'Candidate Starter Groups': '候选开始组',
223
+ 'Candidate Starter Users': '候选开始用户',
224
+ 'Tasklist Configuration': '任务列表配置',
225
+ Startable: '启动',
226
+ 'Specify more than one group as a comma separated list.': '指定多个组,用逗号分隔',
227
+ 'Specify more than one user as a comma separated list.': '指定多个用户,用逗号分隔',
228
+ 'This maps to the process definition key.': '这会映射为流程定义的键',
229
+ 'CallActivity Type': '调用活动类型',
230
+ 'Condition Type': '条件类型',
231
+ 'Create UserTask': '创建用户任务',
232
+ 'Create CallActivity': '创建调用活动',
233
+ 'Called Element': '调用元素',
234
+ 'Create DataObjectReference': '创建数据对象引用',
235
+ 'Create DataStoreReference': '创建数据存储引用',
236
+ 'Multi Instance': '多实例',
237
+ 'Loop Cardinality': '实例数量',
238
+ Collection: '任务参与人列表',
239
+ 'Element Variable': '元素变量',
240
+ 'Completion Condition': '完成条件'
241
+ }