@arkxos/arkos-system 0.1.0

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 (494) hide show
  1. package/README.md +36 -0
  2. package/ark_dist/664d11f069eab128.css +2 -0
  3. package/ark_dist/ArkOsConfig.js +136 -0
  4. package/ark_dist/ark-meta.json +92 -0
  5. package/ark_dist/ark_userChunk_1.js +3 -0
  6. package/ark_dist/ark_userChunk_2.js +5 -0
  7. package/ark_dist/ark_userChunk_3.js +49 -0
  8. package/ark_dist/config.js +75 -0
  9. package/ark_dist/css/views/views-flow-flow.ca26b106.css +5784 -0
  10. package/ark_dist/favicon.ico +0 -0
  11. package/ark_dist/fonts/bpmn.5d33bee4.eot +0 -0
  12. package/ark_dist/fonts/bpmn.67058807.woff2 +0 -0
  13. package/ark_dist/fonts/bpmn.b5c9250d.ttf +0 -0
  14. package/ark_dist/fonts/bpmn.e9e7d076.woff +0 -0
  15. package/ark_dist/img/404.png +0 -0
  16. package/ark_dist/img/auth_banner.jpg +0 -0
  17. package/ark_dist/img/avatar.jpg +0 -0
  18. package/ark_dist/img/avatar2.gif +0 -0
  19. package/ark_dist/img/avatar3.gif +0 -0
  20. package/ark_dist/img/bpmn.74eea12b.svg +224 -0
  21. package/ark_dist/img/loginbg.svg +1 -0
  22. package/ark_dist/img/logo-r.png +0 -0
  23. package/ark_dist/img/logo.png +0 -0
  24. package/ark_dist/img/mobile-bg.d055fadc.png +0 -0
  25. package/ark_dist/img/no-widgets.svg +57 -0
  26. package/ark_dist/img/tasks-example.png +0 -0
  27. package/ark_dist/img/ver.svg +236 -0
  28. package/ark_dist/index.html +118 -0
  29. package/ark_dist/js/app.e39a548a.js +1 -0
  30. package/ark_dist/js/views/views-flow-flow.84dc5300.js +3 -0
  31. package/ark_dist/js/views/views-flow-flow.84dc5300.js.LICENSE.txt +182 -0
  32. package/ark_dist/js/views/views-flow-flow.84dc5300.js.map +1 -0
  33. package/ark_proxy/entry.js +28 -0
  34. package/ark_proxy_es/entry.js +16 -0
  35. package/package.json +173 -0
  36. package/scripts/check.js +13 -0
  37. package/scripts/meta.js +21 -0
  38. package/scripts/prepublishOnly.js +28 -0
  39. package/src/admin/App.vue +13 -0
  40. package/src/admin/bpmn/custom/context-pad.js +405 -0
  41. package/src/admin/bpmn/custom/index.js +8 -0
  42. package/src/admin/bpmn/custom/palette.js +159 -0
  43. package/src/admin/bpmn/properties-panel/PropertiesView.vue +620 -0
  44. package/src/admin/bpmn/translate.js +23 -0
  45. package/src/admin/bpmn/translations.js +211 -0
  46. package/src/admin/components/affix/index.vue +385 -0
  47. package/src/admin/components/area-select/index.vue +52 -0
  48. package/src/admin/components/buttons/index.vue +47 -0
  49. package/src/admin/components/checkbox/index.vue +83 -0
  50. package/src/admin/components/code/code.js +149 -0
  51. package/src/admin/components/code/index.vue +450 -0
  52. package/src/admin/components/color/index.vue +30 -0
  53. package/src/admin/components/color-picker/index.vue +57 -0
  54. package/src/admin/components/color-scheme/index.vue +234 -0
  55. package/src/admin/components/condition-list/index.vue +170 -0
  56. package/src/admin/components/date/index.vue +29 -0
  57. package/src/admin/components/datetime/index.vue +45 -0
  58. package/src/admin/components/default-value-tips/index.vue +44 -0
  59. package/src/admin/components/dict-buttons/index.vue +53 -0
  60. package/src/admin/components/dict-checkbox/index.vue +45 -0
  61. package/src/admin/components/dict-radio/index.vue +68 -0
  62. package/src/admin/components/dict-select/index.vue +93 -0
  63. package/src/admin/components/dict-selects/index.vue +105 -0
  64. package/src/admin/components/dict-switch/index.vue +64 -0
  65. package/src/admin/components/dict-tree/index.vue +17 -0
  66. package/src/admin/components/dm-tree/index.vue +224 -0
  67. package/src/admin/components/edit-table/index.vue +171 -0
  68. package/src/admin/components/employee-tree/index.vue +247 -0
  69. package/src/admin/components/employees-tree/index.vue +80 -0
  70. package/src/admin/components/entp-tree/index.vue +266 -0
  71. package/src/admin/components/file/index.vue +310 -0
  72. package/src/admin/components/form/index.vue +141 -0
  73. package/src/admin/components/icon/index.vue +77 -0
  74. package/src/admin/components/icon-buttons/index.vue +52 -0
  75. package/src/admin/components/icon-select/index.vue +140 -0
  76. package/src/admin/components/image/index.vue +207 -0
  77. package/src/admin/components/index.js +16 -0
  78. package/src/admin/components/input/index.vue +41 -0
  79. package/src/admin/components/local-img/index.vue +49 -0
  80. package/src/admin/components/multiple-input/index.vue +64 -0
  81. package/src/admin/components/multiple-number/index.vue +70 -0
  82. package/src/admin/components/number/index.vue +134 -0
  83. package/src/admin/components/organization/index.vue +303 -0
  84. package/src/admin/components/organization-tree/index.vue +269 -0
  85. package/src/admin/components/page/index.vue +149 -0
  86. package/src/admin/components/password/index.vue +21 -0
  87. package/src/admin/components/radio/index.vue +46 -0
  88. package/src/admin/components/region-tree/index.vue +269 -0
  89. package/src/admin/components/remote-select/index.vue +315 -0
  90. package/src/admin/components/rich-editor/index.vue +152 -0
  91. package/src/admin/components/role-select/index.vue +58 -0
  92. package/src/admin/components/script-input/index.vue +97 -0
  93. package/src/admin/components/select/index.vue +105 -0
  94. package/src/admin/components/selects/index.vue +100 -0
  95. package/src/admin/components/style-list/index.vue +500 -0
  96. package/src/admin/components/switch/index.vue +54 -0
  97. package/src/admin/components/table/index.vue +920 -0
  98. package/src/admin/components/textarea/index.vue +28 -0
  99. package/src/admin/components/tree/index.vue +247 -0
  100. package/src/admin/components/tree-selects/index.vue +66 -0
  101. package/src/admin/components/unit-tree/index.vue +269 -0
  102. package/src/admin/console/index.vue +122 -0
  103. package/src/admin/layout/console/index.vue +15 -0
  104. package/src/admin/layout/fullscreen/index.vue +32 -0
  105. package/src/admin/layout/home/index.vue +11 -0
  106. package/src/admin/layout/index.vue +139 -0
  107. package/src/admin/layout/menu/index.vue +102 -0
  108. package/src/admin/layout/personnel/index.vue +166 -0
  109. package/src/admin/layout/search/index.vue +78 -0
  110. package/src/admin/main.js +30 -0
  111. package/src/admin/pinia/router.js +179 -0
  112. package/src/admin/router.js +91 -0
  113. package/src/admin/visual/comp-data.vue +1107 -0
  114. package/src/admin/visual/comp-event.vue +1677 -0
  115. package/src/admin/visual/components/app/list/goods/double.vue +184 -0
  116. package/src/admin/visual/components/app/list/nav/image.vue +114 -0
  117. package/src/admin/visual/components/app/list/nav/text.vue +130 -0
  118. package/src/admin/visual/components/button/index.vue +58 -0
  119. package/src/admin/visual/components/container/index.vue +37 -0
  120. package/src/admin/visual/components/custom-list/index.vue +127 -0
  121. package/src/admin/visual/components/data/index.vue +46 -0
  122. package/src/admin/visual/components/data-table/index.vue +203 -0
  123. package/src/admin/visual/components/echarts/annular.vue +140 -0
  124. package/src/admin/visual/components/echarts/bar.vue +115 -0
  125. package/src/admin/visual/components/echarts/funnel.vue +115 -0
  126. package/src/admin/visual/components/echarts/gauge.vue +158 -0
  127. package/src/admin/visual/components/echarts/line.vue +110 -0
  128. package/src/admin/visual/components/echarts/map.vue +150 -0
  129. package/src/admin/visual/components/echarts/pie.vue +114 -0
  130. package/src/admin/visual/components/echarts/radar.vue +145 -0
  131. package/src/admin/visual/components/echarts/scatter.vue +106 -0
  132. package/src/admin/visual/components/edit-table/index.vue +71 -0
  133. package/src/admin/visual/components/form/affix.vue +107 -0
  134. package/src/admin/visual/components/form/area.vue +76 -0
  135. package/src/admin/visual/components/form/buttons.vue +90 -0
  136. package/src/admin/visual/components/form/checkbox.vue +85 -0
  137. package/src/admin/visual/components/form/date-range.vue +61 -0
  138. package/src/admin/visual/components/form/date.vue +59 -0
  139. package/src/admin/visual/components/form/datetime.vue +59 -0
  140. package/src/admin/visual/components/form/employee-tree.vue +88 -0
  141. package/src/admin/visual/components/form/employees-tree.vue +6 -0
  142. package/src/admin/visual/components/form/image.vue +103 -0
  143. package/src/admin/visual/components/form/index.vue +59 -0
  144. package/src/admin/visual/components/form/input.vue +84 -0
  145. package/src/admin/visual/components/form/item.vue +68 -0
  146. package/src/admin/visual/components/form/number.vue +130 -0
  147. package/src/admin/visual/components/form/organization-tree.vue +88 -0
  148. package/src/admin/visual/components/form/password.vue +74 -0
  149. package/src/admin/visual/components/form/radio.vue +87 -0
  150. package/src/admin/visual/components/form/rate.vue +66 -0
  151. package/src/admin/visual/components/form/region-tree.vue +88 -0
  152. package/src/admin/visual/components/form/rich-editor.vue +94 -0
  153. package/src/admin/visual/components/form/select.vue +156 -0
  154. package/src/admin/visual/components/form/switch.vue +85 -0
  155. package/src/admin/visual/components/form/textarea.vue +62 -0
  156. package/src/admin/visual/components/form/unit-tree.vue +88 -0
  157. package/src/admin/visual/components/icon/index.vue +65 -0
  158. package/src/admin/visual/components/image/index.vue +170 -0
  159. package/src/admin/visual/components/index.js +44 -0
  160. package/src/admin/visual/components/list/block.vue +160 -0
  161. package/src/admin/visual/components/list/button.vue +80 -0
  162. package/src/admin/visual/components/list/card.vue +101 -0
  163. package/src/admin/visual/components/list/custom.vue +150 -0
  164. package/src/admin/visual/components/list/image.vue +116 -0
  165. package/src/admin/visual/components/list/news.vue +138 -0
  166. package/src/admin/visual/components/page/index.vue +88 -0
  167. package/src/admin/visual/components/page-comp/index.vue +110 -0
  168. package/src/admin/visual/components/portal-menu/index.vue +92 -0
  169. package/src/admin/visual/components/qrcode/index.vue +77 -0
  170. package/src/admin/visual/components/router-view/index.vue +12 -0
  171. package/src/admin/visual/components/row/index.vue +139 -0
  172. package/src/admin/visual/components/search/index.vue +40 -0
  173. package/src/admin/visual/components/tabs/index.vue +125 -0
  174. package/src/admin/visual/components/text/index.vue +64 -0
  175. package/src/admin/visual/components/video/index.vue +41 -0
  176. package/src/admin/visual/draggable.vue +49 -0
  177. package/src/admin/visual/editor.vue +602 -0
  178. package/src/admin/visual/js/app-form.config.js +1301 -0
  179. package/src/admin/visual/js/app.config.js +86 -0
  180. package/src/admin/visual/js/common.config.js +687 -0
  181. package/src/admin/visual/js/component.config.js +741 -0
  182. package/src/admin/visual/js/echarts.config.js +2440 -0
  183. package/src/admin/visual/js/form.config.js +2837 -0
  184. package/src/admin/visual/js/list.config.js +578 -0
  185. package/src/admin/visual/js/menu.config.js +62 -0
  186. package/src/admin/visual/js/visual-comp.js +48 -0
  187. package/src/admin/visual/tool.vue +1223 -0
  188. package/src/assets/images/background.jpg +0 -0
  189. package/src/assets/images/login-bg.jpg +0 -0
  190. package/src/assets/images/mobile-bg.png +0 -0
  191. package/src/assets/images/no-data.png +0 -0
  192. package/src/assets/style/base.css +48 -0
  193. package/src/assets/style/business.css +5 -0
  194. package/src/assets/style/code.css +36 -0
  195. package/src/assets/style/codeless.css +195 -0
  196. package/src/assets/style/flow.css +12 -0
  197. package/src/assets/style/global/blue.css +83 -0
  198. package/src/assets/style/global/default.css +71 -0
  199. package/src/assets/style/global/green.css +83 -0
  200. package/src/assets/style/global/purple.css +83 -0
  201. package/src/assets/style/global/red.css +83 -0
  202. package/src/assets/style/main.css +608 -0
  203. package/src/assets/style/menu/black.css +9 -0
  204. package/src/assets/style/menu/default.css +9 -0
  205. package/src/assets/style/menu/grey.css +9 -0
  206. package/src/assets/style/visual.css +204 -0
  207. package/src/auto-imports.d.ts +307 -0
  208. package/src/business/App.vue +131 -0
  209. package/src/business/components/dict-select/index.vue +88 -0
  210. package/src/business/components/index.js +13 -0
  211. package/src/business/components/input/index.vue +38 -0
  212. package/src/business/components/table/index.vue +928 -0
  213. package/src/business/home/index.vue +45 -0
  214. package/src/business/iframe/index.vue +63 -0
  215. package/src/business/layout/aside/history/history.vue +518 -0
  216. package/src/business/layout/aside/index.vue +116 -0
  217. package/src/business/layout/aside/menu/index.vue +47 -0
  218. package/src/business/layout/aside/menu/menuItem.vue +83 -0
  219. package/src/business/layout/aside/menu/submenu.vue +88 -0
  220. package/src/business/layout/fullscreen/index.vue +41 -0
  221. package/src/business/layout/header/index.vue +81 -0
  222. package/src/business/layout/header/menu/index.vue +47 -0
  223. package/src/business/layout/header/menu/menuItem.vue +43 -0
  224. package/src/business/layout/header/menu/submenu.vue +34 -0
  225. package/src/business/layout/home/index.vue +20 -0
  226. package/src/business/layout/index.vue +330 -0
  227. package/src/business/layout/message/index.vue +250 -0
  228. package/src/business/layout/personnel/index.vue +549 -0
  229. package/src/business/layout/search/index.vue +75 -0
  230. package/src/business/layout/subsystem/index.vue +124 -0
  231. package/src/business/main.js +36 -0
  232. package/src/business/pinia/menuBadge.js +58 -0
  233. package/src/business/pinia/router.js +190 -0
  234. package/src/business/router.js +98 -0
  235. package/src/choose/App.vue +203 -0
  236. package/src/choose/main.js +22 -0
  237. package/src/choose/router.js +33 -0
  238. package/src/codeless/components/affix/index.vue +393 -0
  239. package/src/codeless/components/affix-view/index.vue +244 -0
  240. package/src/codeless/components/buttons/index.vue +59 -0
  241. package/src/codeless/components/checkbox/index.vue +107 -0
  242. package/src/codeless/components/date/index.vue +105 -0
  243. package/src/codeless/components/datetime/index.vue +65 -0
  244. package/src/codeless/components/dialog-select/index.vue +170 -0
  245. package/src/codeless/components/dict-buttons/index.vue +97 -0
  246. package/src/codeless/components/dict-radio/index.vue +94 -0
  247. package/src/codeless/components/dict-select/index.vue +181 -0
  248. package/src/codeless/components/dict-selects/index.vue +145 -0
  249. package/src/codeless/components/dict-switch/index.vue +94 -0
  250. package/src/codeless/components/dict-tree/index.vue +116 -0
  251. package/src/codeless/components/edit-table/index.vue +160 -0
  252. package/src/codeless/components/employee-tree/index.vue +254 -0
  253. package/src/codeless/components/employees-tree/index.vue +87 -0
  254. package/src/codeless/components/entp-tree/index.vue +261 -0
  255. package/src/codeless/components/entps-tree/index.vue +93 -0
  256. package/src/codeless/components/icon/index.vue +65 -0
  257. package/src/codeless/components/image/index.vue +298 -0
  258. package/src/codeless/components/index.js +16 -0
  259. package/src/codeless/components/input/index.vue +63 -0
  260. package/src/codeless/components/number/index.vue +150 -0
  261. package/src/codeless/components/organization-tree/index.vue +262 -0
  262. package/src/codeless/components/organizations-tree/index.vue +79 -0
  263. package/src/codeless/components/password/index.vue +42 -0
  264. package/src/codeless/components/radio/index.vue +57 -0
  265. package/src/codeless/components/region-tree/index.vue +262 -0
  266. package/src/codeless/components/remote-distinct/index.vue +354 -0
  267. package/src/codeless/components/remote-select/index.vue +363 -0
  268. package/src/codeless/components/rich-editor/index.vue +159 -0
  269. package/src/codeless/components/roles/index.vue +68 -0
  270. package/src/codeless/components/select/index.vue +95 -0
  271. package/src/codeless/components/selects/index.vue +116 -0
  272. package/src/codeless/components/show-dict/index.vue +52 -0
  273. package/src/codeless/components/show-employees/index.vue +29 -0
  274. package/src/codeless/components/show-organizations/index.vue +29 -0
  275. package/src/codeless/components/show-roles/index.vue +45 -0
  276. package/src/codeless/components/signature-pad/index.vue +224 -0
  277. package/src/codeless/components/switch/index.vue +56 -0
  278. package/src/codeless/components/textarea/index.vue +37 -0
  279. package/src/codeless/components/tree/index.vue +244 -0
  280. package/src/codeless/components/unit-tree/index.vue +262 -0
  281. package/src/codeless/components/units-tree/index.vue +93 -0
  282. package/src/codeless/components/video/index.vue +255 -0
  283. package/src/codeless/components/video-view/index.vue +130 -0
  284. package/src/codeless/js/codeless.js +47 -0
  285. package/src/codeless/view/form-auto.vue +192 -0
  286. package/src/codeless/view/form-custom.vue +10 -0
  287. package/src/codeless/view/form-model.vue +421 -0
  288. package/src/codeless/view/form-query.vue +171 -0
  289. package/src/codeless/view/form.vue +575 -0
  290. package/src/codeless/view/page-comp.vue +1318 -0
  291. package/src/codeless/view/page.vue +280 -0
  292. package/src/codeless/view/table-edit-item.vue +184 -0
  293. package/src/codeless/view/table-edit.vue +490 -0
  294. package/src/codeless/view/table.vue +1606 -0
  295. package/src/codeless/view/tree.vue +431 -0
  296. package/src/configs/subApp.ts +9 -0
  297. package/src/directives/collapse/index.js +123 -0
  298. package/src/directives/drag/index.js +43 -0
  299. package/src/directives/index.js +9 -0
  300. package/src/directives/resize/index.js +23 -0
  301. package/src/entrance/libProperties.ts +24 -0
  302. package/src/entrance/libTypes.ts +26 -0
  303. package/src/error/404.vue +23 -0
  304. package/src/flow/chart.vue +130 -0
  305. package/src/flow/deal.vue +776 -0
  306. package/src/flow/signature.vue +216 -0
  307. package/src/flow/start.vue +18 -0
  308. package/src/http/api.js +192 -0
  309. package/src/http/request.js +81 -0
  310. package/src/login/App.vue +421 -0
  311. package/src/login/main.js +30 -0
  312. package/src/login/router.js +33 -0
  313. package/src/main.ts +20 -0
  314. package/src/mobile/App.vue +51 -0
  315. package/src/mobile/home/index.vue +34 -0
  316. package/src/mobile/main.js +26 -0
  317. package/src/mobile/router.js +101 -0
  318. package/src/mobile/view/page.vue +99 -0
  319. package/src/pinia/index.js +5 -0
  320. package/src/pinia/modules/dataField.js +77 -0
  321. package/src/pinia/modules/dataForm.js +46 -0
  322. package/src/pinia/modules/dataTable.js +46 -0
  323. package/src/pinia/modules/dictionary.js +66 -0
  324. package/src/pinia/modules/employee.js +46 -0
  325. package/src/pinia/modules/icon.js +46 -0
  326. package/src/pinia/modules/keepAlive.js +35 -0
  327. package/src/pinia/modules/organization.js +189 -0
  328. package/src/pinia/modules/page.js +46 -0
  329. package/src/pinia/modules/pageButton.js +44 -0
  330. package/src/pinia/modules/pageComp.js +46 -0
  331. package/src/pinia/modules/role.js +46 -0
  332. package/src/pinia/modules/setting.js +56 -0
  333. package/src/pinia/modules/subsystem.js +64 -0
  334. package/src/pinia/modules/user.js +177 -0
  335. package/src/plugins/index.ts +24 -0
  336. package/src/portal/App.vue +27 -0
  337. package/src/portal/home/index.vue +52 -0
  338. package/src/portal/main.js +31 -0
  339. package/src/portal/page/index.vue +39 -0
  340. package/src/portal/pinia/router.js +176 -0
  341. package/src/portal/router.js +86 -0
  342. package/src/router/constantRoutes.ts +13 -0
  343. package/src/router/loadComponent.ts +29 -0
  344. package/src/router/readme.txt +21 -0
  345. package/src/sso/sso.js +19 -0
  346. package/src/sso/sso.vue +138 -0
  347. package/src/types/axios.d.ts +13 -0
  348. package/src/types/func.ts +14 -0
  349. package/src/types/global.d.ts +108 -0
  350. package/src/types/layout.d.ts +59 -0
  351. package/src/types/mitt.d.ts +40 -0
  352. package/src/types/pinia.d.ts +93 -0
  353. package/src/types/views.d.ts +27 -0
  354. package/src/types/window.d.ts +8 -0
  355. package/src/utils/aes.js +75 -0
  356. package/src/utils/browser.js +13 -0
  357. package/src/utils/bus.js +4 -0
  358. package/src/utils/cache.js +6 -0
  359. package/src/utils/codeless.js +92 -0
  360. package/src/utils/color.js +274 -0
  361. package/src/utils/date.js +180 -0
  362. package/src/utils/loading.js +22 -0
  363. package/src/utils/page.js +36 -0
  364. package/src/utils/progress.js +19 -0
  365. package/src/utils/system.js +92 -0
  366. package/src/utils/theme.js +79 -0
  367. package/src/utils/tool.js +431 -0
  368. package/src/utils/websocket.js +124 -0
  369. package/src/views/codeless/appVersion.vue +593 -0
  370. package/src/views/codeless/dataFormEdit.vue +1463 -0
  371. package/src/views/codeless/dataModel.vue +2584 -0
  372. package/src/views/codeless/dataModelPage.vue +535 -0
  373. package/src/views/codeless/dataTableEdit.vue +1678 -0
  374. package/src/views/codeless/datasource.vue +308 -0
  375. package/src/views/codeless/interface.vue +833 -0
  376. package/src/views/codeless/interfaceToken.vue +255 -0
  377. package/src/views/codeless/page.vue +752 -0
  378. package/src/views/codeless/pageButton.vue +255 -0
  379. package/src/views/codeless/pageCompEdit.vue +2330 -0
  380. package/src/views/codeless/pageEdit.vue +661 -0
  381. package/src/views/codeless/relationPage.vue +349 -0
  382. package/src/views/codeless/scriptGroovy.vue +736 -0
  383. package/src/views/codeless/scriptGroovyEdit.vue +248 -0
  384. package/src/views/codeless/scriptGroovyExecute.vue +212 -0
  385. package/src/views/codeless/scriptGroovySimple.vue +1057 -0
  386. package/src/views/codeless/scriptTool.vue +563 -0
  387. package/src/views/codeless/subsystem.vue +309 -0
  388. package/src/views/codeless/template.vue +739 -0
  389. package/src/views/codeless/variable.vue +727 -0
  390. package/src/views/codeless/view.vue +738 -0
  391. package/src/views/codeless/viewEdit.vue +244 -0
  392. package/src/views/codeless/viewSimple.vue +1034 -0
  393. package/src/views/collect/task.vue +898 -0
  394. package/src/views/collect/taskLog.vue +238 -0
  395. package/src/views/dictionary/dictionary.vue +866 -0
  396. package/src/views/employee/employee.vue +355 -0
  397. package/src/views/flow/flow.vue +369 -0
  398. package/src/views/flow/flowInst.vue +73 -0
  399. package/src/views/flow/flowLineBranch.vue +406 -0
  400. package/src/views/flow/flowNodeMan.vue +426 -0
  401. package/src/views/flow/flowOpinion.vue +188 -0
  402. package/src/views/icon/icon.vue +242 -0
  403. package/src/views/log/loginLog.vue +41 -0
  404. package/src/views/log/operatorLog.vue +176 -0
  405. package/src/views/menu/menu.vue +883 -0
  406. package/src/views/menu/menuList.vue +858 -0
  407. package/src/views/message/message.vue +299 -0
  408. package/src/views/mobile/editor.vue +1100 -0
  409. package/src/views/mobile/mobile.vue +568 -0
  410. package/src/views/mobile/tool.vue +1258 -0
  411. package/src/views/monitor/database.vue +11 -0
  412. package/src/views/monitor/details-diskspace.vue +56 -0
  413. package/src/views/monitor/details-gc.vue +93 -0
  414. package/src/views/monitor/details-memory.vue +143 -0
  415. package/src/views/monitor/details-process.vue +132 -0
  416. package/src/views/monitor/details-threads.vue +106 -0
  417. package/src/views/monitor/line-chart.vue +93 -0
  418. package/src/views/monitor/mem-chart.vue +22 -0
  419. package/src/views/monitor/panel.vue +90 -0
  420. package/src/views/monitor/performance.vue +36 -0
  421. package/src/views/monitor/threads-chart.vue +16 -0
  422. package/src/views/operation/backup.vue +593 -0
  423. package/src/views/operation/center.vue +420 -0
  424. package/src/views/operation/restore.vue +94 -0
  425. package/src/views/organization/organization.vue +366 -0
  426. package/src/views/role/role.vue +502 -0
  427. package/src/views/schedule/schedule.vue +338 -0
  428. package/src/views/schedule/scheduleLog.vue +40 -0
  429. package/src/views/sequence/sequence.vue +283 -0
  430. package/src/views/setting/setting.vue +371 -0
  431. package/src/visual/components/app/list/goods/double.vue +241 -0
  432. package/src/visual/components/app/list/nav/image.vue +135 -0
  433. package/src/visual/components/app/list/nav/text.vue +159 -0
  434. package/src/visual/components/button/index.vue +95 -0
  435. package/src/visual/components/container/index.vue +128 -0
  436. package/src/visual/components/data/index.vue +60 -0
  437. package/src/visual/components/data-table/index.vue +260 -0
  438. package/src/visual/components/echarts/annular.vue +173 -0
  439. package/src/visual/components/echarts/bar.vue +172 -0
  440. package/src/visual/components/echarts/funnel.vue +167 -0
  441. package/src/visual/components/echarts/gauge.vue +186 -0
  442. package/src/visual/components/echarts/line.vue +172 -0
  443. package/src/visual/components/echarts/map.vue +206 -0
  444. package/src/visual/components/echarts/pie.vue +158 -0
  445. package/src/visual/components/echarts/radar.vue +196 -0
  446. package/src/visual/components/echarts/scatter.vue +153 -0
  447. package/src/visual/components/edit-table/index.vue +71 -0
  448. package/src/visual/components/form/affix.vue +440 -0
  449. package/src/visual/components/form/area.vue +134 -0
  450. package/src/visual/components/form/buttons.vue +120 -0
  451. package/src/visual/components/form/checkbox.vue +126 -0
  452. package/src/visual/components/form/date-range.vue +97 -0
  453. package/src/visual/components/form/date.vue +88 -0
  454. package/src/visual/components/form/datetime.vue +87 -0
  455. package/src/visual/components/form/employee-tree.vue +300 -0
  456. package/src/visual/components/form/employees-tree.vue +91 -0
  457. package/src/visual/components/form/image.vue +440 -0
  458. package/src/visual/components/form/index.vue +85 -0
  459. package/src/visual/components/form/input.vue +116 -0
  460. package/src/visual/components/form/item.vue +68 -0
  461. package/src/visual/components/form/number.vue +157 -0
  462. package/src/visual/components/form/organization-tree.vue +300 -0
  463. package/src/visual/components/form/password.vue +103 -0
  464. package/src/visual/components/form/radio.vue +122 -0
  465. package/src/visual/components/form/rate.vue +93 -0
  466. package/src/visual/components/form/region-tree.vue +300 -0
  467. package/src/visual/components/form/rich-editor.vue +114 -0
  468. package/src/visual/components/form/select.vue +172 -0
  469. package/src/visual/components/form/switch.vue +105 -0
  470. package/src/visual/components/form/textarea.vue +91 -0
  471. package/src/visual/components/form/unit-tree.vue +300 -0
  472. package/src/visual/components/icon/index.vue +73 -0
  473. package/src/visual/components/image/index.vue +445 -0
  474. package/src/visual/components/index.js +26 -0
  475. package/src/visual/components/list/block.vue +234 -0
  476. package/src/visual/components/list/button.vue +123 -0
  477. package/src/visual/components/list/card.vue +129 -0
  478. package/src/visual/components/list/custom.vue +214 -0
  479. package/src/visual/components/list/image.vue +182 -0
  480. package/src/visual/components/list/news.vue +174 -0
  481. package/src/visual/components/page-comp/index.vue +67 -0
  482. package/src/visual/components/portal-menu/index.vue +191 -0
  483. package/src/visual/components/qrcode/index.vue +98 -0
  484. package/src/visual/components/router-view/index.vue +51 -0
  485. package/src/visual/components/row/index.vue +175 -0
  486. package/src/visual/components/search/index.vue +96 -0
  487. package/src/visual/components/tabs/index.vue +103 -0
  488. package/src/visual/components/text/index.vue +111 -0
  489. package/src/visual/components/video/index.vue +93 -0
  490. package/src/visual/js/echarts.js +220 -0
  491. package/src/visual/js/event.js +476 -0
  492. package/src/visual/js/visual-comp.js +48 -0
  493. package/src/visual/js/visual.js +508 -0
  494. package/src/visual/view/page.vue +357 -0
@@ -0,0 +1,1677 @@
1
+ <template>
2
+ <div
3
+ v-if="activatedNode.compEventList.length > 0"
4
+ class="event-box"
5
+ >
6
+ <div
7
+ v-for="(event, index) in activatedNode.compEventList"
8
+ :key="index"
9
+ class="event-item"
10
+ >
11
+ <div class="event-item-name">{{event.name}}</div>
12
+ <div class="event-item-operate">
13
+ <ac-icon
14
+ iconId="018dca6db20c6a3aaf68"
15
+ title="编辑"
16
+ style="margin-right: 8px"
17
+ @click="editEvent(event)"
18
+ />
19
+ <ac-icon
20
+ iconId="018dc9c3efd3a0502886"
21
+ title="删除"
22
+ color="red"
23
+ @click="deleteEvent(index)"
24
+ />
25
+ </div>
26
+ </div>
27
+ </div>
28
+ <div class="event-add-box" v-if="currEventList.length > 0">
29
+ <div class="event-add" @click="addEvent">
30
+ <ac-icon iconId="018dca3b4707c4c43a2f" />
31
+ <span style="margin-left: 5px;font-size:13px">添加事件</span>
32
+ </div>
33
+ </div>
34
+ <div v-else class="not-support">此组件不支持事件</div>
35
+
36
+ <el-drawer
37
+ v-model="dialogVisible"
38
+ size="370px"
39
+ title="事件编辑"
40
+ class="dark-drawer-box"
41
+ :close-on-click-modal="false"
42
+ :with-header="false"
43
+ destroy-on-close
44
+ >
45
+ <div class="common-box">
46
+ <div class="common-item">
47
+ <span class="label">事件名称:</span>
48
+ <span class="content">
49
+ <ac-select v-model="currCompEvent.name" :options="currEventList" size="small" />
50
+ </span>
51
+ </div>
52
+ </div>
53
+ <el-row v-if="currCompEvent.actionList.length > 0">
54
+ <el-col :span="24">
55
+ <el-collapse v-model="actionNames">
56
+ <el-collapse-item
57
+ v-for="(action, index) in currCompEvent.actionList"
58
+ :key="index"
59
+ :name="index"
60
+ :title="action.name"
61
+ >
62
+ <template #title>
63
+ <div class="collapse-item-header">
64
+ <span>{{action.name}}</span>
65
+ <span style="display: flex;">
66
+ <ac-icon
67
+ v-if="index > 0"
68
+ iconId="018fa3973ded010d7ef2"
69
+ title="上移"
70
+ color="#cccccc"
71
+ style="margin-right: 10px"
72
+ @click.stop="upAction(index)"
73
+ />
74
+ <ac-icon
75
+ v-if="index < currCompEvent.actionList.length - 1"
76
+ iconId="018fa397630c01052d7e"
77
+ title="下移"
78
+ color="#cccccc"
79
+ style="margin-right: 10px"
80
+ @click.stop="downAction(index)"
81
+ />
82
+ <ac-icon
83
+ iconId="018dc9c3efd3a0502886"
84
+ title="删除"
85
+ color="red"
86
+ style="margin-right: 10px"
87
+ @click.stop="deleteAction(index)"
88
+ />
89
+ </span>
90
+ </div>
91
+ </template>
92
+ <div class="common-box">
93
+ <div class="common-item">
94
+ <span class="label">动作名称:</span>
95
+ <span class="content">
96
+ <ac-select
97
+ v-model="action.name"
98
+ size="small"
99
+ :options="compActionList"
100
+ @change="changeAction(action)"
101
+ />
102
+ </span>
103
+ </div>
104
+ </div>
105
+ <div class="common-box">
106
+ <div class="common-item">
107
+ <span class="label">判断条件:</span>
108
+ <span class="content">
109
+ <ac-switch
110
+ v-model="action.condition"
111
+ :options="[
112
+ {key: true, value: ''},
113
+ {key: false, value: ''},
114
+ ]"
115
+ size="small"
116
+ />
117
+ </span>
118
+ </div>
119
+ </div>
120
+ <div v-if="action.condition" class="common-box">
121
+ <div
122
+ class="common-list"
123
+ v-for="(condition, index) in action.conditionList || []"
124
+ :key="index"
125
+ >
126
+ <div class="common-item" >
127
+ <span class="label">
128
+ <el-tooltip content="同分组为and,不同分组间为or">
129
+ <span>分组<ac-icon iconId="018dca8ec9890493be26" style="margin-left: 5px"/>:</span>
130
+ </el-tooltip>
131
+ </span>
132
+ <span class="content">
133
+ <el-input v-model="condition.group" size="small" />
134
+ <ac-icon
135
+ v-if="index > 0 && index < (action.conditionList || []).length"
136
+ iconId="018fa3973ded010d7ef2"
137
+ title="上移"
138
+ style="margin-left: 10px"
139
+ @click="moveConditionUp(index, action.conditionList)"
140
+ />
141
+ <ac-icon
142
+ v-if="index < (action.conditionList || []).length - 1"
143
+ iconId="018fa397630c01052d7e"
144
+ title="下移"
145
+ style="margin-left: 10px"
146
+ @click="moveConditionDown(index, action.conditionList)"
147
+ />
148
+ <ac-icon
149
+ iconId="018dc9c3efd3a0502886"
150
+ title="删除条件"
151
+ color="red"
152
+ style="margin-left: 10px"
153
+ @click="deleteCondition(index, action.conditionList)"
154
+ />
155
+ </span>
156
+ </div>
157
+ <div class="common-item">
158
+ <span class="label">条件:</span>
159
+ <span class="content">
160
+ <ac-select
161
+ v-model="condition.condition"
162
+ size="small"
163
+ :options="getNodeOptions()"
164
+ />
165
+ </span>
166
+ </div>
167
+ <div class="common-item">
168
+ <span class="label">类型:</span>
169
+ <span class="content">
170
+ <ac-select
171
+ v-model="condition.type"
172
+ size="small"
173
+ options="等于,不等于,包含,不包含,大于,大于等于,小于,小于等于"
174
+ />
175
+ </span>
176
+ </div>
177
+ <div class="common-item">
178
+ <span class="label">条件值:</span>
179
+ <span class="content">
180
+ <Component
181
+ :is="'ac-' + getFieldType(condition.condition)"
182
+ v-model="condition.value"
183
+ v-bind:compStyle="getFieldProp(condition.condition)"
184
+ size="small"
185
+ />
186
+ </span>
187
+ </div>
188
+ </div>
189
+ <div class="event-add-box">
190
+ <div class="event-add" @click="addCondition(action.conditionList)">
191
+ <ac-icon iconId="018dca3b4707c4c43a2f" />
192
+ <span style="margin-left: 5px;font-size:13px">添加条件</span>
193
+ </div>
194
+ </div>
195
+ </div>
196
+ <div v-if="action.name === '切换状态'" class="comp-box">
197
+ <div style="margin-bottom: 5px">
198
+ <el-input
199
+ v-model="filterStyleNodeName"
200
+ placeholder="组件搜索"
201
+ size="small"
202
+ >
203
+ <template #suffix>
204
+ <ac-icon iconId="018dc9c3efe489a7d117" />
205
+ </template>
206
+ </el-input>
207
+ </div>
208
+ <div
209
+ v-for="node in getStyleNodeList(filterStyleNodeName)"
210
+ :key="node.id"
211
+ class="comp-list"
212
+ >
213
+ <div
214
+ :style='action.styleList && action.styleList[node.id] ? "color: #79bbff" : ""'
215
+ class="comp-item" @click="toggleNodeStyle(action, node.id)"
216
+ >
217
+ <ac-icon
218
+ v-if="action.styleList && action.styleList[node.id]"
219
+ iconId="018ece4f6bf7915ea331"
220
+ />
221
+ <ac-icon
222
+ v-else
223
+ iconId="018f9ae7fa11010b3641"
224
+ />
225
+ <span>{{node.name}}</span>
226
+ </div>
227
+ <div v-if="action.styleList && action.styleList[node.id]" class="style-box">
228
+ <span
229
+ v-for="style in node.styleList"
230
+ :key="style.id"
231
+ class="style-list"
232
+ @click="toggleChangeStyle(action, node, style.id)"
233
+ :style='action.styleList && action.styleList[node.id] === style.id ? "color: #79bbff" : ""'
234
+ >
235
+ <ac-icon
236
+ v-if="action.styleList[node.id] === style.id"
237
+ iconId="018dca412c4e207388f7"
238
+ />
239
+ <ac-icon
240
+ v-else
241
+ iconId="018f68cc34330101d11d"
242
+ />
243
+ <span style="margin-right: 10px;font-size: 13px;">{{style.name}}</span>
244
+ </span>
245
+ </div>
246
+ </div>
247
+ </div>
248
+ <div v-if="action.name === '表单校验'" class="comp-box">
249
+ <div class="comp-list">
250
+ <div
251
+ v-for="node in getFormList()"
252
+ :key="node.id"
253
+ class="comp-item"
254
+ @click="toggleForm(action, node.id)"
255
+ >
256
+ <ac-icon
257
+ v-if="action.formList && action.formList.indexOf(node.id) >= 0"
258
+ iconId="018ece4f6bf7915ea331"
259
+ color="#409eff"
260
+ />
261
+ <ac-icon v-else iconId="018f9ae7fa11010b3641" />
262
+ <span
263
+ :style='action.formList && action.formList.indexOf(node.id) >= 0 ? "color: #79bbff" : ""'
264
+ >{{node.name}}</span>
265
+ </div>
266
+ </div>
267
+ </div>
268
+ <div v-if="action.name === '传递参数'" class="comp-box">
269
+ <div style="margin-bottom: 5px">
270
+ <el-input
271
+ v-model="filterParamNodeName"
272
+ placeholder="组件搜索"
273
+ size="small"
274
+ >
275
+ <template #suffix>
276
+ <ac-icon iconId="018dc9c3efe489a7d117" />
277
+ </template>
278
+ </el-input>
279
+ </div>
280
+ <div class="comp-list">
281
+ <div
282
+ v-for="node in getParamNodeList(filterParamNodeName)"
283
+ :key="node.id"
284
+ class="comp-item-column"
285
+ >
286
+ <div class="comp-item-label">
287
+ <ac-icon
288
+ v-if="action.paramList && action.paramList[node.id]"
289
+ iconId="018ece4f6bf7915ea331"
290
+ color="#409eff"
291
+ />
292
+ <ac-icon v-else iconId="018f9ae7fa11010b3641" />
293
+ <span
294
+ :style='action.paramList && action.paramList[node.id] >= 0 ? "color: #79bbff" : ""'
295
+ @click="toggleParam(action, node)"
296
+ >{{node.name}}</span>
297
+ </div>
298
+ <div class="content-list" v-if="action.paramList && action.paramList[node.id]">
299
+ <div
300
+ class="param-item"
301
+ v-for="(param, index) in action.paramList[node.id]"
302
+ :key="index"
303
+ >
304
+ <div class="param-field">
305
+ <el-input
306
+ v-if="param.input"
307
+ v-model="param.fieldName"
308
+ size="small"
309
+ :disabled="param.empty"
310
+ />
311
+ <ac-select
312
+ v-else
313
+ v-model="param.fieldName"
314
+ size="small"
315
+ :options="getEventOption()"
316
+ :disabled="param.empty"
317
+ />
318
+ </div>
319
+ <div class="param-split"><ac-icon iconId="018eecae20bd010c2adf" /></div>
320
+ <div class="param-page">
321
+ <el-input v-model="param.name" size="small" disabled />
322
+ </div>
323
+ <div class="param-empty">
324
+ <ac-switch
325
+ v-model="param.empty"
326
+ title="是否传空值"
327
+ :options="[{key: true, value: ''}, {key: false, value: ''}]"
328
+ size="small"
329
+ />
330
+ <ac-switch
331
+ v-if="!param.empty"
332
+ v-model="param.input"
333
+ title="是否手动输入"
334
+ style="margin-left: 5px;"
335
+ :options="[{key: true, value: ''}, {key: false, value: ''}]"
336
+ size="small"
337
+ />
338
+ </div>
339
+ </div>
340
+ </div>
341
+ </div>
342
+ </div>
343
+ </div>
344
+ <div v-if="action.name === '刷新组件'" class="comp-box">
345
+ <div style="margin-bottom: 5px">
346
+ <el-input
347
+ v-model="filterName"
348
+ placeholder="组件搜索"
349
+ size="small"
350
+ >
351
+ <template #suffix>
352
+ <ac-icon iconId="018dc9c3efe489a7d117" />
353
+ </template>
354
+ </el-input>
355
+ </div>
356
+ <div class="comp-list">
357
+ <div
358
+ v-for="node in getNodeList(filterName)"
359
+ :key="node.id"
360
+ class="comp-item"
361
+ @click="toggleRefresh(action, node.id)"
362
+ >
363
+ <ac-icon
364
+ v-if="action.refreshList && action.refreshList.indexOf(node.id) >= 0"
365
+ iconId="018ece4f6bf7915ea331"
366
+ color="#409eff"
367
+ />
368
+ <ac-icon v-else iconId="018f9ae7fa11010b3641" />
369
+ <span
370
+ :style='action.refreshList && action.refreshList.indexOf(node.id) >= 0 ? "color: #79bbff" : ""'
371
+ >{{node.name}}</span>
372
+ </div>
373
+ </div>
374
+ </div>
375
+ <div v-if="action.name === '调用脚本'" class="common-box">
376
+ <div class="common-item">
377
+ <span class="label">显示确认框:</span>
378
+ <span class="content">
379
+ <ac-switch
380
+ v-model="action.confirm"
381
+ :options="[
382
+ {key: true, value: ''},
383
+ {key: false, value: ''},
384
+ ]"
385
+ size="small"
386
+ />
387
+ </span>
388
+ </div>
389
+ <div class="common-item" v-if="action.confirm">
390
+ <span class="label">确认框标题:</span>
391
+ <span class="content">
392
+ <el-input v-model="action.confirmTitle" size="small" />
393
+ </span>
394
+ </div>
395
+ <div class="common-item" v-if="action.confirm">
396
+ <span class="label">确认框内容:</span>
397
+ <span class="content">
398
+ <el-input v-model="action.confirmContent" size="small" />
399
+ </span>
400
+ </div>
401
+ <div class="common-item">
402
+ <span class="label">调用脚本:</span>
403
+ <span class="content">
404
+ <ac-tree
405
+ v-model="action.scriptId"
406
+ data-url="/system/scriptGroovy/queryTree"
407
+ type-select="script"
408
+ size="small"
409
+ />
410
+ </span>
411
+ </div>
412
+ <div class="param-box">
413
+ <div
414
+ class="param-list"
415
+ v-for="(param, index) in action.paramList || []"
416
+ :key="index"
417
+ >
418
+ <div class="param-item">
419
+ <div style="width: 120px;margin-right: 5px;flex-shrink: 0">
420
+ <el-input v-model="param.name" placeholder="参数名" size="small" />
421
+ </div>
422
+ <div v-if="param.input" style="flex-grow: 1">
423
+ <el-input v-model="param.fieldName" title="参数值" size="small" />
424
+ </div>
425
+ <div v-else style="flex-grow: 1">
426
+ <ac-select
427
+ v-model="param.fieldName"
428
+ size="small"
429
+ :options="getNodeOptions()"
430
+ title="参数值"
431
+ />
432
+ </div>
433
+ <div style="margin-left: 5px;flex-shrink: 0">
434
+ <ac-switch
435
+ v-model="param.input"
436
+ :options="[{key: true, value: ''}, {key: false, value: ''}]"
437
+ title="是否手动输入"
438
+ size="small"
439
+ />
440
+ </div>
441
+ <div class="icon">
442
+ <ac-icon
443
+ iconId="018dc9c3efd3a0502886"
444
+ title="删除"
445
+ color="red"
446
+ @click="action.paramList.splice(index, 1)"
447
+ />
448
+ </div>
449
+ </div>
450
+ </div>
451
+ <div class="middle-row">
452
+ <ac-icon iconId="018dca3b4707c4c43a2f" />
453
+ <span style="font-size: 13px" @click="addParam(action)">添加参数</span>
454
+ <ac-icon style="margin-left: 15px" iconId="018ece4f72d1bf69178b" />
455
+ <span style="font-size: 13px" @click="addAllParam(action)">一键添加</span>
456
+ </div>
457
+ </div>
458
+ </div>
459
+ <div v-if="action.name === '操作数据'" class="common-box">
460
+ <div class="common-item">
461
+ <span class="label">显示确认框:</span>
462
+ <span class="content">
463
+ <ac-switch
464
+ v-model="action.confirm"
465
+ :options="[
466
+ {key: true, value: ''},
467
+ {key: false, value: ''},
468
+ ]"
469
+ size="small"
470
+ />
471
+ </span>
472
+ </div>
473
+ <div class="common-item" v-if="action.confirm">
474
+ <span class="label">确认框标题:</span>
475
+ <span class="content">
476
+ <el-input v-model="action.confirmTitle" size="small" />
477
+ </span>
478
+ </div>
479
+ <div class="common-item" v-if="action.confirm">
480
+ <span class="label">确认框内容:</span>
481
+ <span class="content">
482
+ <el-input v-model="action.confirmContent" size="small" />
483
+ </span>
484
+ </div>
485
+ <div class="common-item">
486
+ <span class="label">调用脚本:</span>
487
+ <span class="content">
488
+ <ac-tree
489
+ v-model="action.scriptId"
490
+ data-url="/system/scriptGroovy/queryTree"
491
+ type-select="script"
492
+ size="small"
493
+ />
494
+ </span>
495
+ </div>
496
+ <div class="param-box">
497
+ <div
498
+ class="param-list"
499
+ v-for="(param, index) in action.paramList || []"
500
+ :key="index"
501
+ >
502
+ <div class="param-item">
503
+ <div style="width: 120px;margin-right: 5px;flex-shrink: 0">
504
+ <el-input v-model="param.name" placeholder="参数名" size="small" />
505
+ </div>
506
+ <div v-if="param.input" style="flex-grow: 1">
507
+ <el-input v-model="param.fieldName" title="参数值" size="small" />
508
+ </div>
509
+ <div v-else style="flex-grow: 1">
510
+ <ac-select v-model="param.fieldName" :options="getNodeOptions()" title="参数值" size="small" />
511
+ </div>
512
+ <div style="margin-left: 5px;flex-shrink: 0">
513
+ <ac-switch
514
+ v-model="param.input"
515
+ :options="[{key: true, value: ''}, {key: false, value: ''}]"
516
+ title="是否手动输入"
517
+ size="small"
518
+ />
519
+ </div>
520
+ <div class="icon">
521
+ <ac-icon
522
+ iconId="018dc9c3efd3a0502886"
523
+ title="删除"
524
+ color="red"
525
+ @click="action.paramList.splice(index, 1)"
526
+ />
527
+ </div>
528
+ </div>
529
+ </div>
530
+ <div class="middle-row">
531
+ <ac-icon iconId="018dca3b4707c4c43a2f" />
532
+ <span style="font-size: 13px" @click="addParam(action)">添加参数</span>
533
+ <ac-icon style="margin-left: 15px" iconId="018ece4f72d1bf69178b" />
534
+ <span style="font-size: 13px" @click="addAllParam(action)">一键添加</span>
535
+ </div>
536
+ </div>
537
+ </div>
538
+ <div v-if="action.name === '链接页面'" class="common-box">
539
+ <div class="common-item">
540
+ <span class="label">链接页面:</span>
541
+ <span class="content">
542
+ <ac-tree
543
+ v-model="action.linkPageId"
544
+ data-url="/system/page/queryTree"
545
+ typeSelect="page"
546
+ size="small"
547
+ @change="() => changePage(action)"
548
+ />
549
+ </span>
550
+ </div>
551
+ <div
552
+ v-if="'链接页面'.indexOf(action.name) >= 0
553
+ && action.linkPageId
554
+ && action.paramList
555
+ && action.paramList.length > 0"
556
+ class="common-item"
557
+ >
558
+ <span class="label" style="align-self: flex-start">出参配置:</span>
559
+ <div class="content-list">
560
+ <div
561
+ class="param-item"
562
+ v-for="(param, index) in action.paramList"
563
+ :key="index"
564
+ >
565
+ <div class="param-field">
566
+ <el-input
567
+ v-if="param.input"
568
+ v-model="param.value"
569
+ size="small"
570
+ />
571
+ <ac-select
572
+ v-else
573
+ v-model="param.fieldName"
574
+ size="small"
575
+ :options="getNodeOptions()"
576
+ />
577
+ </div>
578
+ <div class="param-split"><ac-icon iconId="018eecae20bd010c2adf" /></div>
579
+ <div class="param-page">
580
+ <el-input v-model="param.pageParamName" size="small" disabled />
581
+ </div>
582
+ <div style="margin-left: 5px;flex-shrink: 0">
583
+ <ac-switch
584
+ v-model="param.input"
585
+ :options="[{key: true, value: ''}, {key: false, value: ''}]"
586
+ title="是否手动输入"
587
+ size="small"
588
+ />
589
+ </div>
590
+ </div>
591
+ </div>
592
+ </div>
593
+ <div class="common-item">
594
+ <span class="label">链接方式:</span>
595
+ <span class="content">
596
+ <ac-buttons v-model="action.linkType" options="弹窗,抽屉" size="small" />
597
+ </span>
598
+ </div>
599
+ <div class="common-item">
600
+ <span class="label">可否编辑:</span>
601
+ <span class="content">
602
+ <ac-switch
603
+ v-model="action.canEdit"
604
+ :options="[{key: true, value: ''}, {key: false, value: ''}]"
605
+ size="small"
606
+ />
607
+ </span>
608
+ </div>
609
+ <div v-if="action.linkType !== '跳转'">
610
+ <div class="common-item">
611
+ <span class="label">显示标题:</span>
612
+ <span class="content">
613
+ <ac-switch
614
+ v-model="action.showTitle"
615
+ :options="[{key: true, value: ''}, {key: false, value: ''}]"
616
+ size="small"
617
+ />
618
+ </span>
619
+ </div>
620
+ <div class="common-item" v-if="action.showTitle">
621
+ <span class="label">标题名称:</span>
622
+ <span class="content">
623
+ <el-input v-model="action.title" size="small" />
624
+ </span>
625
+ </div>
626
+ <div class="common-item">
627
+ <span class="label">是否全屏:</span>
628
+ <span class="content">
629
+ <ac-switch
630
+ v-model="action.fullscreen"
631
+ :options="[{key: true, value: ''}, {key: false, value: ''}]"
632
+ size="small"
633
+ />
634
+ </span>
635
+ </div>
636
+ <div class="common-item" v-if="!action.fullscreen">
637
+ <span class="label">窗口宽度:</span>
638
+ <span class="content">
639
+ <ac-input v-model="action.showWidth" size="small" />
640
+ </span>
641
+ </div>
642
+ <div class="common-item">
643
+ <span class="label" title="点击遮罩层关闭">点击遮罩层关闭:</span>
644
+ <span class="content">
645
+ <ac-switch
646
+ v-model="action.closeOnClickModal"
647
+ :options="[{key: true, value: ''}, {key: false, value: ''}]"
648
+ size="small"
649
+ />
650
+ </span>
651
+ </div>
652
+ <div class="common-item">
653
+ <span class="label">显示页脚:</span>
654
+ <span class="content">
655
+ <ac-switch
656
+ v-model="action.showFooter"
657
+ :options="[{key: true, value: ''}, {key: false, value: ''}]"
658
+ size="small"
659
+ />
660
+ </span>
661
+ </div>
662
+ </div>
663
+ </div>
664
+ <div v-if="action.name === '跳转菜单'" class="common-box">
665
+ <div class="common-item">
666
+ <span class="label">跳转菜单:</span>
667
+ <span class="content">
668
+ <ac-tree
669
+ v-model="action.gotoMenuId"
670
+ dataUrl="/system/menu/querySubsystemTree"
671
+ :leafSelect="true"
672
+ size="small"
673
+ />
674
+ </span>
675
+ </div>
676
+ <div class="common-item">
677
+ <span class="label">跳转方式:</span>
678
+ <span class="content">
679
+ <ac-buttons v-model="action.gotoType" options="本页跳转,新页面" size="small" />
680
+ </span>
681
+ </div>
682
+ <div class="param-box">
683
+ <div
684
+ class="param-list"
685
+ v-for="(param, index) in action.paramList || []"
686
+ :key="index"
687
+ >
688
+ <div class="param-item">
689
+ <div style="width: 120px;margin-right: 5px;flex-shrink: 0">
690
+ <el-input v-model="param.name" placeholder="参数名" size="small" />
691
+ </div>
692
+ <div v-if="param.input" style="flex-grow: 1">
693
+ <el-input v-model="param.fieldName" title="参数值" size="small" />
694
+ </div>
695
+ <div v-else style="flex-grow: 1">
696
+ <ac-select
697
+ v-model="param.fieldName"
698
+ size="small"
699
+ :options="getNodeOptions()"
700
+ title="参数值"
701
+ />
702
+ </div>
703
+ <div style="margin-left: 5px;flex-shrink: 0">
704
+ <ac-switch
705
+ v-model="param.input"
706
+ :options="[{key: true, value: ''}, {key: false, value: ''}]"
707
+ title="是否手动输入"
708
+ size="small"
709
+ />
710
+ </div>
711
+ <div class="icon">
712
+ <ac-icon
713
+ iconId="018dc9c3efd3a0502886"
714
+ title="删除"
715
+ color="red"
716
+ @click="action.paramList.splice(index, 1)"
717
+ />
718
+ </div>
719
+ </div>
720
+ </div>
721
+ <div class="middle-row">
722
+ <ac-icon iconId="018dca3b4707c4c43a2f" />
723
+ <span style="font-size: 13px" @click="addParam(action)">添加参数</span>
724
+ <ac-icon style="margin-left: 15px" iconId="018ece4f72d1bf69178b" />
725
+ <span style="font-size: 13px" @click="addAllParam(action)">一键添加</span>
726
+ </div>
727
+ </div>
728
+ </div>
729
+ <div v-if="action.name === '关闭页面'" class="common-box">
730
+ <div class="common-item">
731
+ <span class="label">关闭方式:</span>
732
+ <span class="content">
733
+ <ac-buttons v-model="action.closeType" options="当前窗口,当前页签" size="small" />
734
+ </span>
735
+ </div>
736
+ </div>
737
+ <div v-if="action.name === '跳转页面'" class="common-box">
738
+ <div class="common-item">
739
+ <span class="label">跳转页面:</span>
740
+ <span class="content">
741
+ <ac-tree
742
+ v-model="action.gotoPageId"
743
+ data-url="/system/mobilePage/queryTree"
744
+ typeSelect="2"
745
+ :query="{mobileId: mobileId}"
746
+ @change="() => changeMobilePage(action, action.gotoPageId)"
747
+ size="small"
748
+ />
749
+ </span>
750
+ </div>
751
+ <div
752
+ v-if="type === '移动端'"
753
+ class="content-list"
754
+ style="padding-left: 18px"
755
+ >
756
+ <div
757
+ class="param-item"
758
+ v-for="(param, index) in action.paramList"
759
+ :key="index"
760
+ >
761
+ <div class="param-field">
762
+ <el-input
763
+ v-if="param.input"
764
+ v-model="param.fieldName"
765
+ size="small"
766
+ :disabled="param.empty"
767
+ />
768
+ <ac-select
769
+ v-else
770
+ v-model="param.fieldName"
771
+ size="small"
772
+ :options="getEventOption()"
773
+ :disabled="param.empty"
774
+ />
775
+ </div>
776
+ <div class="param-split"><ac-icon iconId="018eecae20bd010c2adf" /></div>
777
+ <div class="param-page">
778
+ <el-input v-model="param.text" size="small" disabled />
779
+ </div>
780
+ <div class="param-empty">
781
+ <ac-switch
782
+ v-model="param.empty"
783
+ title="是否传空值"
784
+ :options="[{key: true, value: ''}, {key: false, value: ''}]"
785
+ size="small"
786
+ />
787
+ <ac-switch
788
+ v-if="!param.empty"
789
+ v-model="param.input"
790
+ title="是否手动输入"
791
+ style="margin-left: 5px;"
792
+ :options="[{key: true, value: ''}, {key: false, value: ''}]"
793
+ size="small"
794
+ />
795
+ </div>
796
+ </div>
797
+ </div>
798
+ <div v-if="type === '移动端'" class="common-item">
799
+ <span class="label">禁止返回:</span>
800
+ <span class="content">
801
+ <ac-switch
802
+ v-model="action.forbidBack"
803
+ :options="[{key: true, value: ''}, {key: false, value: ''}]"
804
+ size="small"
805
+ />
806
+ </span>
807
+ </div>
808
+ </div>
809
+ <div v-if="action.name === '系统登录'" class="common-box">
810
+ <div class="param-box">
811
+ <div
812
+ class="param-list"
813
+ v-for="(param, index) in action.paramList || []"
814
+ :key="index"
815
+ >
816
+ <div class="param-item">
817
+ <div style="width: 120px;margin-right: 5px;flex-shrink: 0">
818
+ <el-input v-model="param.name" placeholder="参数名" size="small" />
819
+ </div>
820
+ <div v-if="param.input" style="flex-grow: 1">
821
+ <el-input v-model="param.fieldName" title="参数值" size="small" />
822
+ </div>
823
+ <div v-else style="flex-grow: 1">
824
+ <ac-select
825
+ v-model="param.fieldName"
826
+ size="small"
827
+ :options="getNodeOptions()"
828
+ title="参数值"
829
+ />
830
+ </div>
831
+ <div style="margin-left: 5px;flex-shrink: 0">
832
+ <ac-switch
833
+ v-model="param.input"
834
+ :options="[{key: true, value: ''}, {key: false, value: ''}]"
835
+ title="是否手动输入"
836
+ size="small"
837
+ />
838
+ </div>
839
+ <div class="icon">
840
+ <ac-icon
841
+ iconId="018dc9c3efd3a0502886"
842
+ title="删除"
843
+ color="red"
844
+ @click="action.paramList.splice(index, 1)"
845
+ />
846
+ </div>
847
+ </div>
848
+ </div>
849
+ <div class="middle-row">
850
+ <ac-icon iconId="018dca3b4707c4c43a2f" />
851
+ <span style="font-size: 13px" @click="addParam(action)">添加参数</span>
852
+ <ac-icon style="margin-left: 15px" iconId="018ece4f72d1bf69178b" />
853
+ <span style="font-size: 13px" @click="addAllParam(action)">一键添加</span>
854
+ </div>
855
+ </div>
856
+ </div>
857
+ </el-collapse-item>
858
+ </el-collapse>
859
+ </el-col>
860
+ </el-row>
861
+ <div class="action-add-box">
862
+ <div class="action-add" @click="addAction">
863
+ <ac-icon iconId="018dca3b4707c4c43a2f" />
864
+ <span style="margin-left: 5px;font-size:13px">添加动作</span>
865
+ </div>
866
+ </div>
867
+ <template #footer>
868
+ <el-button
869
+ size="default"
870
+ type="info"
871
+ @click="dialogVisible=false"
872
+ >取消</el-button>
873
+ <el-button
874
+ type="primary"
875
+ size="default"
876
+ @click="submitEventForm"
877
+ >确定</el-button>
878
+ </template>
879
+ </el-drawer>
880
+ </template>
881
+
882
+ <script setup>
883
+ import { ref, watch, onMounted, inject } from 'vue';
884
+ import { useAdminVisualCompStore } from '@/admin/visual/js/visual-comp';
885
+ import { components } from './js/component.config';
886
+ import tool from '@/utils/tool';
887
+ import { ElMessage, ElMessageBox } from 'element-plus';
888
+ import api from '@/http/api';
889
+
890
+ const emit = defineEmits(['change']);
891
+ const props = defineProps({
892
+ type: String,
893
+ mobileId: String
894
+ });
895
+ const rootNode = inject('rootNode');
896
+ const visualComp = useAdminVisualCompStore();
897
+ const activatedNode = inject('activatedNode');
898
+ const compEventList = ref([]);
899
+ const currEventList = ref([]);
900
+ const compActionList = ref('切换状态,传递参数,刷新组件,调用脚本,操作数据,链接页面,跳转菜单,关闭页面,系统登录');
901
+
902
+ const dialogVisible = ref(false);
903
+ const currCompEvent = ref({});
904
+ const actionNames = ref([0]);
905
+ const filterName = ref('');
906
+ const filterParamNodeName = ref('');
907
+ const filterStyleNodeName = ref('');
908
+
909
+ const addEvent = () => {
910
+ const event = { id: tool.uuids(), actionList: [] };
911
+ currCompEvent.value = tool.deepClone(event);
912
+ dialogVisible.value = true;
913
+ };
914
+
915
+ const editEvent = (event) => {
916
+ currCompEvent.value = tool.deepClone(event);
917
+ dialogVisible.value = true;
918
+ };
919
+
920
+ const deleteEvent = (index) => {
921
+ ElMessageBox.confirm('请确认是否删除?', '提示', { type: 'warning' }).then(() => {
922
+ activatedNode.value.compEventList.splice(index, 1);
923
+ emit('change');
924
+ }).catch(() => {});
925
+ };
926
+
927
+ const addAction = () => {
928
+ currCompEvent.value.actionList.push({
929
+ condition: false,
930
+ conditionList: [{}],
931
+ linkType: '弹窗',
932
+ showTitle: true,
933
+ showFooter: true,
934
+ fullscreen: true,
935
+ showWidth: '800px',
936
+ gotoType: '本页跳转',
937
+ closeType: '当前窗口'
938
+ });
939
+ actionNames.value.push(currCompEvent.value.actionList.length - 1);
940
+ };
941
+
942
+ const upAction = (index) => {
943
+ if (index <= 0) return;
944
+ const currAction = currCompEvent.value.actionList[index - 1];
945
+ currCompEvent.value.actionList[index - 1] = currCompEvent.value.actionList[index];
946
+ currCompEvent.value.actionList[index] = currAction;
947
+ };
948
+
949
+ const downAction = (index) => {
950
+ if (index >= currCompEvent.value.actionList.length) return;
951
+ const currAction = currCompEvent.value.actionList[index + 1];
952
+ currCompEvent.value.actionList[index + 1] = currCompEvent.value.actionList[index];
953
+ currCompEvent.value.actionList[index] = currAction;
954
+ };
955
+
956
+ const deleteAction = (index) => {
957
+ ElMessageBox.confirm('请确认是否删除?', '提示', { type: 'warning' }).then(() => {
958
+ currCompEvent.value.actionList.splice(index, 1);
959
+ }).catch(() => {});
960
+ };
961
+
962
+ const changeAction = (action) => {
963
+ if (action.name === '系统登录') {
964
+ if (!action.paramList || action.paramList.length === 0) {
965
+ action.paramList = [];
966
+ action.paramList.push({ name: 'username' });
967
+ action.paramList.push({ name: 'password' });
968
+ }
969
+ }
970
+ };
971
+
972
+ const addCondition = (list) => {
973
+ list.push({});
974
+ };
975
+
976
+ const deleteCondition = (index, list) => {
977
+ ElMessageBox.confirm('请确认是否删除?', '提示', { type: 'warning' }).then(() => {
978
+ list.splice(index, 1);
979
+ }).catch(() => {});
980
+ };
981
+
982
+ const moveConditionUp = (index, list) => {
983
+ const curr = list[index];
984
+ list[index] = list[index - 1];
985
+ list[index - 1] = curr;
986
+ };
987
+
988
+ const moveConditionDown = (index, list) => {
989
+ const curr = list[index];
990
+ list[index] = list[index + 1];
991
+ list[index + 1] = curr;
992
+ };
993
+
994
+ const submitEventForm = () => {
995
+ if (!currCompEvent.value.name) {
996
+ ElMessage.error('事件名称不能为空!');
997
+ return;
998
+ }
999
+ if (!currCompEvent.value.actionList || currCompEvent.value.actionList.length === 0) {
1000
+ ElMessage.error('请先添加动作!');
1001
+ return;
1002
+ }
1003
+ for (const action of currCompEvent.value.actionList) {
1004
+ if (!action.name) {
1005
+ ElMessage.error('动作名称不能为空!');
1006
+ return;
1007
+ }
1008
+ }
1009
+
1010
+ const index = activatedNode.value.compEventList.findIndex(item => item.id === currCompEvent.value.id);
1011
+ if (index >= 0) {
1012
+ activatedNode.value.compEventList[index] = currCompEvent.value;
1013
+ } else {
1014
+ activatedNode.value.compEventList.push(currCompEvent.value);
1015
+ }
1016
+
1017
+ dialogVisible.value = false;
1018
+ emit('change');
1019
+ };
1020
+
1021
+ const getCompEventList = async(type) => {
1022
+ if (type) {
1023
+ if (!compEventList.value[type]) {
1024
+ const comp = await visualComp.getVisualComp(type);
1025
+ compEventList.value[type] = comp && comp.eventList || [];
1026
+ }
1027
+ return tool.deepClone(compEventList.value[type]);
1028
+ } else {
1029
+ return [];
1030
+ }
1031
+ };
1032
+
1033
+ const createCompEvent = (data, children) => {
1034
+ (children || []).forEach(item => {
1035
+ if (item.type && item.eventList) data[item.type] = item.eventList;
1036
+ createCompEvent(data, item.children);
1037
+ });
1038
+ };
1039
+
1040
+ const toggleNodeStyle = (item, nodeId) => {
1041
+ if (!item.styleList) {
1042
+ item.styleList = {};
1043
+ }
1044
+
1045
+ if (item.styleList[nodeId]) {
1046
+ delete item.styleList[nodeId];
1047
+ } else {
1048
+ item.styleList[nodeId] = '--';
1049
+ }
1050
+ };
1051
+
1052
+ const toggleChangeStyle = (item, node, styleId) => {
1053
+ if (!item.styleList) {
1054
+ item.styleList = {};
1055
+ }
1056
+
1057
+ item.styleList[node.id] = styleId
1058
+ };
1059
+
1060
+ const toggleForm = (item, nodeId) => {
1061
+ if (!item.formList) {
1062
+ item.formList = [];
1063
+ }
1064
+
1065
+ const index = item.formList.findIndex(id => id === nodeId);
1066
+ if (index >= 0) {
1067
+ item.formList.splice(index, 1);
1068
+ } else {
1069
+ item.formList.push(nodeId);
1070
+ }
1071
+ };
1072
+
1073
+ const toggleRefresh = (item, nodeId) => {
1074
+ if (!item.refreshList) {
1075
+ item.refreshList = [];
1076
+ }
1077
+
1078
+ const index = item.refreshList.findIndex(id => id === nodeId);
1079
+ if (index >= 0) {
1080
+ item.refreshList.splice(index, 1);
1081
+ } else {
1082
+ item.refreshList.push(nodeId);
1083
+ }
1084
+ };
1085
+
1086
+ const toggleParam = (item, node) => {
1087
+ if (!item.paramList) {
1088
+ item.paramList = {};
1089
+ }
1090
+
1091
+ if (item.paramList[node.id]) {
1092
+ delete item.paramList[node.id];
1093
+ return;
1094
+ } else {
1095
+ item.paramList[node.id] = [];
1096
+ }
1097
+
1098
+ const paramList = [];
1099
+ node.compData.inputParamList.forEach(param => {
1100
+ const find = item.paramList[node.id].find(it => it.id === param.id);
1101
+ if (find) {
1102
+ paramList.push(find);
1103
+ } else {
1104
+ paramList.push(tool.deepClone(param));
1105
+ }
1106
+ });
1107
+ item.paramList[node.id] = paramList;
1108
+ };
1109
+
1110
+ const addParam = (item) => {
1111
+ if (!item) return;
1112
+ if (!item.paramList || !Array.isArray(item.paramList)) {
1113
+ item.paramList = [];
1114
+ }
1115
+
1116
+ item.paramList.push({ input: false, name: '', value: '' });
1117
+ };
1118
+
1119
+ const addAllParam = (item) => {
1120
+ if (!item) return;
1121
+ if (!item.paramList || !Array.isArray(item.paramList)) {
1122
+ item.paramList = [];
1123
+ }
1124
+
1125
+ (getNodeOptions() || []).forEach(option => {
1126
+ item.paramList.push({
1127
+ input: false,
1128
+ name: option.value && option.value.indexOf('.') ? option.value.split('.')[0] : option.value,
1129
+ fieldName: option.key
1130
+ });
1131
+ });
1132
+ };
1133
+
1134
+ const getStyleNodeList = (filter) => {
1135
+ const list = [];
1136
+ tool.walkTree(rootNode.value, (node) => {
1137
+ if (node.styleList && node.styleList.length > 1 && (!filter || node.name.indexOf(filter) >= 0)) {
1138
+ list.push(node);
1139
+ }
1140
+ });
1141
+ return list;
1142
+ };
1143
+
1144
+ const getNodeList = (filter) => {
1145
+ const list = [];
1146
+ tool.walkTree(rootNode.value, (node) => {
1147
+ if (node.id && node.builtin !== true && (!filter || node.name.indexOf(filter) >= 0)) {
1148
+ list.push(node);
1149
+ }
1150
+ });
1151
+ return list.sort((a, b) => a.name.localeCompare(b.name));
1152
+ };
1153
+
1154
+ const getFormList = () => {
1155
+ const list = [];
1156
+ tool.walkTree(rootNode.value, (node) => {
1157
+ if (node.id && node.type === 'form') {
1158
+ list.push(node);
1159
+ }
1160
+ });
1161
+ return list.sort((a, b) => a.name.localeCompare(b.name));
1162
+ };
1163
+
1164
+ const getNode = (nodeId, tree) => {
1165
+ for (const node of tree.children || []) {
1166
+ if (node.id && node.id === nodeId) {
1167
+ return node;
1168
+ }
1169
+
1170
+ const result = getNode(nodeId, node);
1171
+ if (result) return result;
1172
+ }
1173
+ };
1174
+
1175
+ const changePage = (action) => {
1176
+ if (!action.linkPageId) {
1177
+ action.paramList = [];
1178
+ return;
1179
+ }
1180
+
1181
+ api.post('/system/pageParam/queryList', { pageId: action.linkPageId }).then(res => {
1182
+ const pageParamList = res.data || [];
1183
+ let paramList = action.paramList || [];
1184
+ pageParamList.forEach(pageParam => {
1185
+ const fieldParam = paramList.find(item => item.pageParamId === pageParam.id);
1186
+ if (fieldParam) {
1187
+ fieldParam.pageParamName = pageParam.name;
1188
+ } else {
1189
+ paramList.push({ pageParamId: pageParam.id, pageParamName: pageParam.name });
1190
+ }
1191
+ });
1192
+
1193
+ paramList = paramList.filter(param => pageParamList.find(item => item.id === param.pageParamId));
1194
+ action.paramList = paramList;
1195
+ });
1196
+ };
1197
+
1198
+ const getEventOption = () => {
1199
+ const options = getEventData();
1200
+ options.push(...getInputOptions());
1201
+ options.push(...getNodeOptions());
1202
+ return options;
1203
+ };
1204
+
1205
+ const changeMobilePage = (action, pageId) => {
1206
+ if (!pageId) return;
1207
+ action.paramList = [];
1208
+
1209
+ api.post('/system/mobilePage/queryBy', { id: pageId }).then(res => {
1210
+ if (res && res.data && res.data.jsonText) {
1211
+ const json = JSON.parse(res.data.jsonText);
1212
+ (json?.compData?.inputParamList || []).forEach(param => {
1213
+ action.paramList.push({ fieldName: '', name: param.id, text: param.name });
1214
+ });
1215
+ }
1216
+ });
1217
+ };
1218
+
1219
+ const getInputOptions = () => {
1220
+ const options = [];
1221
+ (activatedNode.value.compData.inputParamList || []).forEach(param => {
1222
+ options.push({
1223
+ key: 'inputParam.' + param.id,
1224
+ value: '[组件入参].' + param.name
1225
+ });
1226
+ });
1227
+ return options;
1228
+ };
1229
+
1230
+ const getNodeOptions = () => {
1231
+ const options = [];
1232
+ tool.walkTree(rootNode.value, (node) => {
1233
+ if (node.builtin) return;
1234
+ if (node.currCompStyle && node.currCompStyle.columnList) {
1235
+ options.push({ key: node.id + '.col', value: node.name + '.点击列' });
1236
+ options.push({ key: node.id + '.row.value', value: node.name + '.点击行.值' });
1237
+ node.currCompStyle.columnList.forEach(column => {
1238
+ options.push({
1239
+ key: node.id + '.row.value.' + column.label,
1240
+ value: node.name + '.点击行.' + column.label + '.值'
1241
+ });
1242
+ });
1243
+ } else if (node.type.endsWith('-list') && node.compData && node.compData.fieldList) {
1244
+ options.push({ key: node.id + '.row.value', value: node.name + '.点击项.值' });
1245
+ node.compData.fieldList.forEach(column => {
1246
+ options.push({
1247
+ key: node.id + '.row.value.' + column.name,
1248
+ value: node.name + '.点击项.' + column.name + '.值'
1249
+ });
1250
+ });
1251
+ options.push({ key: node.id + '.value', value: node.name + '.值' });
1252
+ } else {
1253
+ if (!node.type || node.type === 'form-item' || !node.type.startsWith('form-')) return;
1254
+ options.push({ key: node.id + '.value', value: node.name + '.值' });
1255
+ }
1256
+ });
1257
+ return options.sort((a, b) => a.value.localeCompare(b.value));
1258
+ };
1259
+
1260
+ const getEventData = () => {
1261
+ const result = getFieldDataNames();
1262
+ if (currCompEvent.value.name === '点击条目事件' ||
1263
+ currCompEvent.value.name === '点击坐标轴事件' ||
1264
+ currCompEvent.value.name === '点击数据项事件') {
1265
+ result.push({ key: 'event.data.系列名', value: '[事件数据].系列名' });
1266
+ result.push({ key: 'event.data.系列值', value: '[事件数据].系列值' });
1267
+ }
1268
+ return result;
1269
+ };
1270
+
1271
+ const getFieldDataNames = () => {
1272
+ if (activatedNode.value.compData && activatedNode.value.compData.fieldList) {
1273
+ const result = [];
1274
+ activatedNode.value.compData.fieldList.forEach(field => {
1275
+ result.push({ key: 'event.data.' + field.name, value: '[事件数据].' + field.name + '.值' });
1276
+ });
1277
+ return result;
1278
+ }
1279
+ return []
1280
+ };
1281
+
1282
+ const getParamNodeList = (filter) => {
1283
+ const paramNodeList = [];
1284
+ tool.walkTree(rootNode.value, (node) => {
1285
+ if (node.compData &&
1286
+ node.compData.inputParamList &&
1287
+ node.compData.inputParamList.length > 0 &&
1288
+ (!filter || node.name.indexOf(filter) >= 0)) {
1289
+ paramNodeList.push(node);
1290
+ }
1291
+ });
1292
+ return paramNodeList.sort((a, b) => a.name.localeCompare(b.name));
1293
+ };
1294
+
1295
+ const getFieldType = (nodeId) => {
1296
+ if (!nodeId) return 'input';
1297
+
1298
+ return (getNode(nodeId, rootNode.value) || {}).type || 'input';
1299
+ };
1300
+
1301
+ const getFieldProp = (nodeId) => {
1302
+ if (!nodeId) return {};
1303
+
1304
+ if (nodeId.indexOf('.') >= 0) {
1305
+ nodeId = nodeId.split('.')[0];
1306
+ }
1307
+ return cleanProp((getNode(nodeId, rootNode.value) || {}).styleList[0].compStyle);
1308
+ };
1309
+
1310
+ const cleanProp = (data) => {
1311
+ const clone = tool.deepClone(data);
1312
+ const result = {};
1313
+ for (const p in clone) {
1314
+ if (p !== 'name' &&
1315
+ p !== 'fieldName' &&
1316
+ p !== 'fieldType' &&
1317
+ p !== 'default' &&
1318
+ p !== 'description' &&
1319
+ p !== 'show' &&
1320
+ typeof clone[p] !== 'function') {
1321
+ if (p === 'options' && clone[p] === 'formItemOptions') {
1322
+ result[p] = getFormItemOptions();
1323
+ } else {
1324
+ result[p] = clone[p];
1325
+ }
1326
+ }
1327
+ }
1328
+ return result;
1329
+ };
1330
+
1331
+ const getFormItemOptions = () => {
1332
+ const options = [];
1333
+ tool.walkTree(rootNode.value, node => {
1334
+ if (node.id && node.formItem === '1') {
1335
+ options.push({ key: node.id, value: node.name });
1336
+ }
1337
+ });
1338
+ return options;
1339
+ };
1340
+
1341
+ const init = () => {
1342
+ if (props.type && props.type === '移动端') {
1343
+ compActionList.value = '切换状态,表单校验,传递参数,刷新组件,调用脚本,操作数据,跳转页面,系统登录,退出登录';
1344
+ } else {
1345
+ compActionList.value = '切换状态,表单校验,传递参数,刷新组件,调用脚本,操作数据,链接页面,跳转菜单,关闭页面';
1346
+ }
1347
+
1348
+ getCompEventList(activatedNode.value.type).then(res => {
1349
+ currEventList.value = res || [];
1350
+ });
1351
+ };
1352
+
1353
+ watch(() => activatedNode.value.id, () => {
1354
+ init();
1355
+ });
1356
+
1357
+ onMounted(() => {
1358
+ createCompEvent(compEventList.value, components);
1359
+ init();
1360
+ });
1361
+ </script>
1362
+
1363
+ <style scoped lang="scss">
1364
+ .not-support {
1365
+ color: #dcdcdc;
1366
+ padding: 8px;
1367
+ text-align: center;
1368
+ width: 100%;
1369
+ }
1370
+ .event-box {
1371
+ display: flex;
1372
+ flex-direction: column;
1373
+ margin: 8px;
1374
+ .event-item {
1375
+ display: flex;
1376
+ flex-direction: row;
1377
+ justify-content: space-between;
1378
+ padding: 8px;
1379
+ margin: 5px;
1380
+ color: #dcdcdc;
1381
+ border: 1px solid rgb(31, 31, 31);
1382
+ border-radius: 5px;
1383
+ .ac-icon {
1384
+ cursor: pointer;
1385
+ }
1386
+ }
1387
+ }
1388
+ .event-add-box {
1389
+ display: flex;
1390
+ flex-direction: row;
1391
+ justify-content: center;
1392
+ align-items: center;
1393
+ padding: 5px 8px;
1394
+ color: #dcdcdc;
1395
+ height: 30px;
1396
+ .event-add {
1397
+ display: flex;
1398
+ flex-direction: row;
1399
+ justify-content: center;
1400
+ align-items: center;
1401
+ cursor: pointer;
1402
+ }
1403
+ }
1404
+ .common-box {
1405
+ flex-grow: 1;
1406
+ overflow: auto;
1407
+ margin: 5px;
1408
+ :deep(.el-collapse-item__wrap) {
1409
+ padding: 2px 0;
1410
+ background: #555555!important;
1411
+ }
1412
+ .common-list {
1413
+ padding-bottom: 5px;
1414
+ margin-bottom: 5px;
1415
+ border-bottom: 1px solid rgb(51, 51, 51);
1416
+ &:nth-last-child(2) {
1417
+ padding-bottom: 0;
1418
+ margin-bottom: 0;
1419
+ border-bottom: none;
1420
+ }
1421
+ }
1422
+ .ac-icon {
1423
+ flex-shrink: 0;
1424
+ cursor: pointer;
1425
+ }
1426
+ }
1427
+ .common-item {
1428
+ color: white;
1429
+ display: flex;
1430
+ flex-direction: row;
1431
+ align-items: center;
1432
+ padding: 2px 3px;
1433
+ .label {
1434
+ font-size: 13px;
1435
+ width: 80px;
1436
+ color: #dcdcdc;
1437
+ overflow: hidden;
1438
+ text-overflow: ellipsis;
1439
+ white-space: nowrap;
1440
+ text-align: right;
1441
+ :deep(.label-name) {
1442
+ width: 90px;
1443
+ white-space: nowrap;
1444
+ overflow: hidden;
1445
+ text-overflow: ellipsis;
1446
+ text-align: right;
1447
+ display: block;
1448
+ }
1449
+ }
1450
+ .content {
1451
+ flex-grow: 1;
1452
+ display: flex;
1453
+ flex-direction: row;
1454
+ align-items: center;
1455
+ }
1456
+ :deep(.el-radio-button) {
1457
+ --el-radio-button-checked-bg-color: #555;
1458
+ --el-radio-button-checked-text-color: #dcdcdc;
1459
+ --el-radio-button-checked-border-color: #333;
1460
+ --el-radio-button-disabled-checked-fill: #333;
1461
+ }
1462
+ :deep(.el-radio-button) .el-radio-button__inner {
1463
+ color: #dcdcdc;
1464
+ background: #555555;
1465
+ border-right: 1px solid #333;
1466
+ border-top: 1px solid #333;
1467
+ border-bottom: 1px solid #333;
1468
+ padding: 5px 6px;
1469
+ }
1470
+ :deep(.el-radio-button:first-child) .el-radio-button__inner {
1471
+ border-left: 1px solid #333;
1472
+ }
1473
+ :deep(.el-radio-button).is-active .el-radio-button__inner {
1474
+ background: #333!important;
1475
+ }
1476
+ }
1477
+ .content-list {
1478
+ flex-grow: 1;
1479
+ display: flex;
1480
+ flex-direction: column;
1481
+ .param-item {
1482
+ display: flex;
1483
+ flex-direction: row;
1484
+ .param-field {
1485
+ width: 1px;
1486
+ flex-grow: 1;
1487
+ }
1488
+ .param-split {
1489
+ width: 35px;
1490
+ display: flex;
1491
+ justify-content: center;
1492
+ align-items: center;
1493
+ font-size: 16px;
1494
+ }
1495
+ .param-page {
1496
+ width: 90px;
1497
+ flex-shrink: 1;
1498
+ }
1499
+ .param-empty {
1500
+ width: 65px;
1501
+ margin-left: 5px;
1502
+ }
1503
+ }
1504
+ .param-item+.param-item {
1505
+ margin-top: 5px;
1506
+ }
1507
+ }
1508
+ .collapse-item-header {
1509
+ width: 100%;
1510
+ display: flex;
1511
+ flex-direction: row;
1512
+ justify-content: space-between;
1513
+ align-items: center;
1514
+ font-size: 13px;
1515
+ }
1516
+ .comp-box {
1517
+ padding: 5px 10px 5px 30px;
1518
+ color: #dcdcdc;
1519
+ .ac-icon {
1520
+ margin-right: 5px;
1521
+ }
1522
+ .comp-list {
1523
+ display: flex;
1524
+ flex-direction: column;
1525
+ max-height: 350px;
1526
+ overflow: auto;
1527
+ .comp-item {
1528
+ display: flex;
1529
+ flex-direction: row;
1530
+ flex-grow: 1;
1531
+ align-items: center;
1532
+ cursor: pointer;
1533
+ width: fit-content;
1534
+ font-size: 13px;
1535
+ .content-list {
1536
+ flex-grow: 1;
1537
+ display: flex;
1538
+ flex-direction: column;
1539
+ align-items: center;
1540
+ .param-item {
1541
+ display: flex;
1542
+ flex-direction: row;
1543
+ .param-field {
1544
+ flex-grow: 1;
1545
+ }
1546
+ .param-split {
1547
+ width: 35px;
1548
+ display: flex;
1549
+ justify-content: center;
1550
+ align-items: center;
1551
+ font-size: 16px;
1552
+ }
1553
+ .param-page {
1554
+ width: 100px;
1555
+ }
1556
+ .param-empty {
1557
+ width: 70px;
1558
+ margin-left: 5px;
1559
+ }
1560
+ }
1561
+ .param-item+.param-item {
1562
+ margin-top: 5px;
1563
+ }
1564
+ }
1565
+ }
1566
+ .comp-item-column {
1567
+ display: flex;
1568
+ flex-direction: column;
1569
+ flex-grow: 1;
1570
+ cursor: pointer;
1571
+ .comp-item-label {
1572
+ display: flex;
1573
+ flex-direction: row;
1574
+ align-items: center;
1575
+ font-size: 13px;
1576
+ }
1577
+ .content-list {
1578
+ flex-grow: 1;
1579
+ display: flex;
1580
+ flex-direction: column;
1581
+ .param-item {
1582
+ display: flex;
1583
+ flex-direction: row;
1584
+ .param-field {
1585
+ width: 115px;
1586
+ }
1587
+ .param-split {
1588
+ width: 35px;
1589
+ display: flex;
1590
+ justify-content: center;
1591
+ align-items: center;
1592
+ font-size: 16px;
1593
+ }
1594
+ .param-page {
1595
+ max-width: 80px;
1596
+ flex-grow: 1;
1597
+ }
1598
+ .param-empty {
1599
+ width: 65px;
1600
+ margin-left: 5px;
1601
+ }
1602
+ }
1603
+ .param-item+.param-item {
1604
+ margin-top: 5px;
1605
+ }
1606
+ }
1607
+ }
1608
+ .style-box {
1609
+ margin-left: 20px;
1610
+ .style-list {
1611
+ cursor: pointer;
1612
+ white-space: nowrap;
1613
+ display: inline-flex;
1614
+ flex-direction: row;
1615
+ align-items: center;
1616
+ }
1617
+ }
1618
+ }
1619
+ }
1620
+ .param-box {
1621
+ padding: 5px 8px 5px 10px;
1622
+ color: #dcdcdc;
1623
+ .ac-icon {
1624
+ margin-right: 5px;
1625
+ }
1626
+ .param-list {
1627
+ display: flex;
1628
+ flex-direction: column;
1629
+ margin-bottom: 5px;
1630
+ .param-item {
1631
+ display: flex;
1632
+ flex-direction: row;
1633
+ align-items: center;
1634
+ cursor: pointer;
1635
+ div {
1636
+ flex-shrink: 1;
1637
+ }
1638
+ .icon {
1639
+ margin-left: 8px;
1640
+ display: flex;
1641
+ flex-direction: column;
1642
+ justify-content: center;
1643
+ align-items: center;
1644
+ .ac-icon {
1645
+ margin-right: 0;
1646
+ }
1647
+ }
1648
+ }
1649
+ }
1650
+ }
1651
+ .action-add-box {
1652
+ display: flex;
1653
+ flex-direction: row;
1654
+ justify-content: center;
1655
+ align-items: center;
1656
+ padding: 5px 8px;
1657
+ color: #dcdcdc;
1658
+ height: 30px;
1659
+ .action-add {
1660
+ display: flex;
1661
+ flex-direction: row;
1662
+ justify-content: center;
1663
+ align-items: center;
1664
+ cursor: pointer;
1665
+ }
1666
+ }
1667
+ .middle-row {
1668
+ height: 30px;
1669
+ display: flex;
1670
+ flex-direction: row;
1671
+ align-items: center;
1672
+ justify-content: center;
1673
+ span {
1674
+ cursor: pointer;
1675
+ }
1676
+ }
1677
+ </style>