@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,1258 @@
1
+ <template>
2
+ <div class="visual-tool" v-if="!initializing">
3
+ <div class="visual-panel" v-if="currConfig">
4
+ <div class="visual-panel-item" v-if="currConfig === 'style'">
5
+ <div class="status-group">
6
+ <div class="label">状态</div>
7
+ <div class="button">
8
+ <ac-icon
9
+ iconId="018dca3b4707c4c43a2f"
10
+ size="14"
11
+ color="#bfbfbf"
12
+ style="cursor: pointer"
13
+ @click="addStyle"
14
+ />
15
+ </div>
16
+ </div>
17
+ <div v-if="(activatedNode.styleList || []).length > 1" class="status-box">
18
+ <div
19
+ class="status-item"
20
+ v-for="style in activatedNode.styleList || []"
21
+ :key="style.id"
22
+ >
23
+ <div class="label">
24
+ <ac-icon
25
+ v-if="style.id === currStyleId"
26
+ iconId="018dca412c4e207388f7"
27
+ size="14"
28
+ style="cursor: pointer"
29
+ />
30
+ <ac-icon
31
+ v-else
32
+ iconId="018f68cc34330101d11d"
33
+ size="14"
34
+ style="cursor: pointer"
35
+ @click="() => changeStyle(style.id)"
36
+ />
37
+ </div>
38
+ <div class="content">
39
+ <span v-if="style.name === '原始状态'">{{style.name}}</span>
40
+ <ac-input
41
+ v-else
42
+ v-model="style.name"
43
+ size="small"
44
+ />
45
+ </div>
46
+ <div
47
+ v-if="style.name !== '原始状态'"
48
+ class="button"
49
+ style="margin-left: 8px;"
50
+ >
51
+ <ac-icon
52
+ iconId="018dc9c3efd3a0502886"
53
+ size="14"
54
+ color="rgb(245,108,108)"
55
+ style="cursor: pointer"
56
+ title="删除"
57
+ @click="() => deleteStyle(style.id)"
58
+ />
59
+ </div>
60
+ </div>
61
+ </div>
62
+ <div class="style-box">
63
+ <el-collapse v-model="collapseNames">
64
+ <el-collapse-item
65
+ v-for="(group, index) in styleList"
66
+ :key="index"
67
+ :title="group.name"
68
+ :name="group.name"
69
+ >
70
+ <div
71
+ v-for="(style, index) in group.children"
72
+ :key="index"
73
+ class="style-item"
74
+ >
75
+ <el-tooltip
76
+ v-if="style.description"
77
+ placement="left"
78
+ :content="style.description"
79
+ popper-class="padding-10-15"
80
+ >
81
+ <span class="label">{{style.name}}:</span>
82
+ </el-tooltip>
83
+ <span v-else-if="style.name" class="label">{{style.name}}:</span>
84
+ <span class="content">
85
+ <Component
86
+ :is="'ac-' + style.fieldType"
87
+ v-model="currStyle[style.fieldName]"
88
+ v-bind="cleanProp(style)"
89
+ size="small"
90
+ />
91
+ </span>
92
+ </div>
93
+ </el-collapse-item>
94
+ </el-collapse>
95
+ </div>
96
+ </div>
97
+ <div class="visual-panel-item" v-if="currConfig === 'compStyle'">
98
+ <div class="status-group">
99
+ <div class="label">状态</div>
100
+ <div class="button">
101
+ <ac-icon
102
+ iconId="018dca3b4707c4c43a2f"
103
+ size="14"
104
+ color="#bfbfbf"
105
+ style="cursor: pointer"
106
+ @click="addStyle"
107
+ />
108
+ </div>
109
+ </div>
110
+ <div v-if="(activatedNode.styleList || []).length > 1" class="status-box">
111
+ <div
112
+ v-for="(style, index) in activatedNode.styleList || []"
113
+ :key="index"
114
+ class="status-item"
115
+ >
116
+ <div class="label">
117
+ <ac-icon
118
+ v-if="style.id === currStyleId"
119
+ iconId="018dca412c4e207388f7"
120
+ size="14"
121
+ style="cursor: pointer"
122
+ />
123
+ <ac-icon
124
+ v-else
125
+ iconId="018f68cc34330101d11d"
126
+ size="14"
127
+ style="cursor: pointer"
128
+ @click="() => changeStyle(style.id)"
129
+ />
130
+ </div>
131
+ <div class="content">
132
+ <span v-if="style.name === '原始状态'">{{style.name}}</span>
133
+ <ac-input
134
+ v-else
135
+ v-model="style.name"
136
+ size="small"
137
+ />
138
+ </div>
139
+ <div
140
+ v-if="style.name !== '原始状态'"
141
+ class="button"
142
+ style="margin-left: 8px;"
143
+ >
144
+ <ac-icon
145
+ iconId="018dc9c3efd3a0502886"
146
+ size="14"
147
+ color="rgb(245,108,108)"
148
+ style="cursor: pointer"
149
+ title="删除"
150
+ @click="() => deleteStyle(style.id)"
151
+ />
152
+ </div>
153
+ </div>
154
+ </div>
155
+ <div class="style-box">
156
+ <div class="style-item">
157
+ <span class="label">组件名称:</span>
158
+ <span class="content">
159
+ <ac-input size="small" v-model="activatedNode.name" />
160
+ </span>
161
+ </div>
162
+ <div
163
+ v-if="activatedNode.default"
164
+ class="style-item"
165
+ style="margin-bottom: 1px;"
166
+ >
167
+ <span class="label">
168
+ <span>默认值</span>
169
+ <span
170
+ v-if="!currCompStyle.defaultType || currCompStyle.defaultType === 'input'"
171
+ style="margin-left: 3px"
172
+ ><ac-default-value-tips @change="(value) => currCompStyle.defaultValue = value"/></span>
173
+ <span>:</span>
174
+ </span>
175
+ <div style="flex-grow: 1">
176
+ <ac-select
177
+ v-if="currCompStyle.defaultType === 'param'"
178
+ v-model="currCompStyle.defaultValue"
179
+ :options="inputParamOptions"
180
+ title="默认值"
181
+ size="small"
182
+ />
183
+ <ac-tree
184
+ v-else-if="currCompStyle.defaultType === 'script'"
185
+ v-model="currCompStyle.defaultValue"
186
+ data-url="/system/scriptGroovy/queryTree"
187
+ type-select="script"
188
+ size="small"
189
+ />
190
+ <ac-input
191
+ v-else
192
+ v-model="currCompStyle.defaultValue"
193
+ title="默认值"
194
+ size="small"
195
+ />
196
+ </div>
197
+ <div style="margin-left: 5px;flex-shrink: 0;width: 60px">
198
+ <ac-select
199
+ v-model="currCompStyle.defaultType"
200
+ placeholder="请选择"
201
+ :options="[
202
+ {key: 'input', value: '输入'},
203
+ {key: 'param', value: '参数'},
204
+ {key: 'script', value: '脚本'}
205
+ ]"
206
+ size="small"
207
+ />
208
+ </div>
209
+ </div>
210
+ <el-collapse v-model="collapseCompNames" v-if="compStyleList.length > 0">
211
+ <el-collapse-item
212
+ v-for="(group, index) in compStyleList"
213
+ :key="index"
214
+ :title="group.name"
215
+ :name="group.name"
216
+ >
217
+ <div v-if="group.type !== 'group'" class="style-item">
218
+ <span v-if="group.name" class="label">{{group.name}}:</span>
219
+ <span class="content">
220
+ <Component
221
+ :is="'ac-' + group.fieldType"
222
+ v-model="currStyle[group.fieldName]"
223
+ v-bind="cleanProp(group)"
224
+ v-bind:fieldList="getFieldList()"
225
+ size="small"
226
+ />
227
+ </span>
228
+ </div>
229
+ <div
230
+ v-else
231
+ v-for="(style, index) in group.children"
232
+ :key="index"
233
+ class="style-item"
234
+ >
235
+ <div
236
+ v-if="style.name"
237
+ class="label"
238
+ >
239
+ <el-tooltip
240
+ v-if="style.description"
241
+ placement="left"
242
+ :content="style.description"
243
+ popper-class="padding-10-15"
244
+ >
245
+ <span class="label-name">{{style.name}}</span>
246
+ </el-tooltip>
247
+ <span v-if="!style.description" class="label-name">{{style.name}}</span>
248
+ <span
249
+ v-if="style.name === '默认值'
250
+ && (style.fieldType === 'input'
251
+ || style.fieldType === 'script-input')"
252
+ style="margin-left: 3px;"
253
+ >
254
+ <ac-default-value-tips />
255
+ </span>
256
+ <span>:</span>
257
+ </div>
258
+ <span class="content" :style="{marginLeft: style.name ? '0' : '10px'}">
259
+ <Component
260
+ :is="'ac-' + (typeof style.fieldType === 'function'
261
+ ? style.fieldType(currCompStyle) : style.fieldType)"
262
+ v-model="currCompStyle[style.fieldName]"
263
+ v-bind="cleanProp(style)"
264
+ v-bind:fieldList="getFieldList()"
265
+ size="small"
266
+ />
267
+ </span>
268
+ </div>
269
+ </el-collapse-item>
270
+ </el-collapse>
271
+ </div>
272
+ </div>
273
+ <div class="visual-panel-item" v-show="currConfig === 'compData'">
274
+ <comp-data />
275
+ </div>
276
+ <div class="visual-panel-item" v-if="currConfig === 'compEvent'">
277
+ <comp-event type="移动端" :mobileId="mobileId" @change="eventChange" />
278
+ </div>
279
+ <div class="visual-panel-item tree" v-if="currConfig === 'compTree'">
280
+ <el-tree
281
+ ref="treeRef"
282
+ :data="[rootNode]"
283
+ :props="treeProps"
284
+ :expand-on-click-node="false"
285
+ :current-node-key="activatedNode.id"
286
+ default-expand-all
287
+ node-key="id"
288
+ @node-click="treeNodeClick"
289
+ ></el-tree>
290
+ </div>
291
+ <div class="visual-panel-item tpl" v-if="currConfig === 'tpl'">
292
+ <div class="tpl-box">
293
+ <div class="tpl-item-wrapper" v-for="(item, index) in tplList" :key="index">
294
+ <div class="tpl-item">
295
+ <div class="tpl-item-name" v-if="item.edit">
296
+ <ac-input v-model="item.name" @change="saveTpl(item)" @blur="item.edit = false" />
297
+ </div>
298
+ <div class="tpl-item-name border" v-else @dblclick="item.edit = true">{{item.name || '模板'}}</div>
299
+ <div class="tpl-item-add">
300
+ <ac-icon
301
+ iconId="018ece4f72d1bf69178b"
302
+ size="20"
303
+ color="#21D914FF"
304
+ style="cursor: pointer"
305
+ title="追加到当前节点"
306
+ @click="() => addTplToNode(item)"
307
+ />
308
+ </div>
309
+ <div class="tpl-item-delete">
310
+ <ac-icon
311
+ iconId="018dc9c3efd3a0502886"
312
+ size="16"
313
+ color="rgb(245,108,108)"
314
+ style="cursor: pointer"
315
+ title="删除"
316
+ @click="() => deleteTpl(item)"
317
+ />
318
+ </div>
319
+ </div>
320
+ </div>
321
+ </div>
322
+ </div>
323
+ <div class="visual-panel-item" v-if="currConfig === 'comp'">
324
+ <el-collapse v-model="compNames">
325
+ <el-collapse-item
326
+ v-for="(item, index) in compList"
327
+ :key="index"
328
+ :name="item.name"
329
+ :title="item.name"
330
+ >
331
+ <div class="component-group-item">
332
+ <vue-draggable
333
+ v-model="item.children"
334
+ item-key="type"
335
+ class="component-box"
336
+ :group="{name: 'nodeGroup', pull: 'clone', put: false}"
337
+ :clone="cloneComponent"
338
+ :sort="false"
339
+ @end="onDragEnd"
340
+ >
341
+ <template #item="{ element }">
342
+ <div
343
+ class="component-item"
344
+ :title="element.name.length > 6 ? element.name : ''"
345
+ >
346
+ <el-tooltip
347
+ v-if="element.img"
348
+ effect="light"
349
+ :enterable="false"
350
+ popper-class="padding-10-15-center"
351
+ >
352
+ <template #content>
353
+ <ac-local-img :img="element.img" :width="150" :height="112" />
354
+ </template>
355
+ <div style="width: 100%">{{element.name }}</div>
356
+ </el-tooltip>
357
+ <span v-else>{{ element.name }}</span>
358
+ </div>
359
+ </template>
360
+ </vue-draggable>
361
+ </div>
362
+ </el-collapse-item>
363
+ </el-collapse>
364
+ </div>
365
+ </div>
366
+ <div class="visual-menu">
367
+ <div class="menu-item" @click="autoSave = !autoSave">
368
+ <ac-icon
369
+ v-if="autoSave"
370
+ title="关闭自动保存"
371
+ iconId="018dc9c3efd289739df0"
372
+ color="#67C23A"
373
+ size="20"
374
+ :class="[autoSave ? 'spinner' : '']"
375
+ />
376
+ <ac-icon
377
+ v-else
378
+ title="开启自动保存"
379
+ iconId="018dc9c3efd289739df0"
380
+ color="#ddd"
381
+ size="20"
382
+ />
383
+ </div>
384
+ <div title="保存" class="menu-item" @click="save">
385
+ <ac-icon iconId="018ece4f68db3d9f13c1" color="#67C23A" size="20" />
386
+ </div>
387
+ <div title="退出" class="menu-item" @click="quit">
388
+ <ac-icon iconId="018ece4f732eee924b02" color="red" size="20" />
389
+ </div>
390
+ <!--
391
+ <div title="预览" class="menu-item" @click="preview">
392
+ <ac-icon iconId="018dc9c3efed3042d4d3" color="#ddd" size="20" />
393
+ </div>
394
+ -->
395
+ <div
396
+ title="样式"
397
+ :class="['menu-item', currConfig === 'style' ? 'is-active' : '']"
398
+ @click="() => changeConfig('style')"
399
+ >
400
+ <ac-icon iconId="018ece4f712124866f78" color="#ddd" size="20" />
401
+ </div>
402
+ <div
403
+ title="组件设置"
404
+ :class="['menu-item', currConfig === 'compStyle' ? 'is-active' : '']"
405
+ @click="() => changeConfig('compStyle')"
406
+ >
407
+ <ac-icon iconId="018ece4f775aa2fce122" color="#ddd" size="20" />
408
+ </div>
409
+ <div
410
+ title="数据"
411
+ :class="['menu-item', currConfig === 'compData' ? 'is-active' : '']"
412
+ @click="() => changeConfig('compData')"
413
+ >
414
+ <ac-icon iconId="018ece4f721bb04985f7" color="#ddd" size="20" />
415
+ </div>
416
+ <div
417
+ title="事件"
418
+ :class="['menu-item', currConfig === 'compEvent' ? 'is-active' : '']"
419
+ @click="() => changeConfig('compEvent')"
420
+ >
421
+ <ac-icon iconId="018ece4f70d7130088a7" color="#ddd" size="20" />
422
+ </div>
423
+ <div
424
+ title="组件树"
425
+ :class="['menu-item', currConfig === 'compTree' ? 'is-active' : '']"
426
+ @click="() => changeConfig('compTree')"
427
+ >
428
+ <ac-icon iconId="018ece4f71bb880f77dc" color="#ddd" size="20" />
429
+ </div>
430
+ <div
431
+ title="模板"
432
+ :class="['menu-item', currConfig === 'tpl' ? 'is-active' : '']"
433
+ @click="() => changeConfig('tpl')"
434
+ >
435
+ <ac-icon iconId="018ece4f7578ad8407e5" color="#ddd" size="20" />
436
+ </div>
437
+ <div
438
+ title="组件"
439
+ :class="['menu-item', currConfig === 'comp' ? 'is-active' : '']"
440
+ @click="() => changeConfig('comp')"
441
+ >
442
+ <ac-icon iconId="018ece4f775aa2fce122" color="#ddd" size="20" />
443
+ </div>
444
+ </div>
445
+ </div>
446
+ </template>
447
+
448
+ <script setup>
449
+ import { ref, watch, onMounted, nextTick, computed, inject } from 'vue';
450
+ import vueDraggable from 'vuedraggable';
451
+ import tool from '@/utils/tool';
452
+ import { useAdminVisualCompStore } from '@/admin/visual/js/visual-comp';
453
+ import { commonStyle } from '@/admin/visual/js/common.config';
454
+ import { components } from '@/admin/visual/js/component.config';
455
+ import visual from '@/visual/js/visual';
456
+ import CompEvent from '@/admin/visual/comp-event.vue';
457
+ import CompData from '@/admin/visual/comp-data.vue';
458
+ import { ElMessage, ElMessageBox } from 'element-plus';
459
+ import api from '@/http/api';
460
+
461
+ const emit = defineEmits(['preview', 'save', 'quit', 'change', 'activeNode']);
462
+ const props = defineProps({ type: String, mobileId: String });
463
+ const initializing = ref(true);
464
+ const autoSave = ref(true);
465
+ const autoSaveInterval = ref(null);
466
+ const compList = ref([]);
467
+ const visualComp = useAdminVisualCompStore();
468
+ const currStyleSeq = ref(1);
469
+ const currStyleId = ref('');
470
+ const currStyle = ref({});
471
+ const collapseNames = ref([]);
472
+ const currCompStyle = ref({});
473
+ const collapseCompNames = ref([]);
474
+ const currConfig = ref('style');
475
+ const rootNode = inject('rootNode');
476
+ const activatedNode = inject('activatedNode');
477
+ const nameIndex = inject('nameIndex');
478
+ const compConfigList = ref([]);
479
+ const compNames = ref([]);
480
+ const treeRef = ref();
481
+ const treeProps = {
482
+ children: 'children',
483
+ label: 'name',
484
+ };
485
+ const tplList = ref([]);
486
+ const pageParamList = inject('pageParamList');
487
+
488
+ const treeNodeClick = (node) => {
489
+ emit('activeNode', node);
490
+ };
491
+
492
+ const changeConfig = (config) => {
493
+ currConfig.value = config;
494
+ };
495
+
496
+ const addStyle = async() => {
497
+ currStyleId.value = tool.uuid();
498
+ currStyle.value = initStyle({});
499
+ currCompStyle.value = await initCompStyle({});
500
+ const style = {
501
+ id: currStyleId.value,
502
+ name: '状态' + currStyleSeq.value++,
503
+ style: currStyle.value,
504
+ compStyle: currCompStyle.value,
505
+ };
506
+
507
+ activatedNode.value.styleList.push(style);
508
+ activatedNode.value.currStyle = currStyle.value;
509
+ activatedNode.value.currCompStyle = currCompStyle.value;
510
+ };
511
+
512
+ const deleteStyle = (id) => {
513
+ ElMessageBox.confirm('请确认是否删除?', '提示', { type: 'warning' }).then(async() => {
514
+ const index = activatedNode.value.styleList.findIndex(item => item.id === id);
515
+ activatedNode.value.styleList.splice(index, 1);
516
+
517
+ if (currStyle.value.id === id) {
518
+ currStyleId.value = activatedNode.value.styleList[0].id;
519
+ currStyle.value = initStyle(activatedNode.value.styleList[0].style);
520
+ currCompStyle.value = await initCompStyle(activatedNode.value.styleList[0].compStyle);
521
+ activatedNode.value.currStyle = currStyle.value;
522
+ activatedNode.value.currCompStyle = currCompStyle.value;
523
+ }
524
+ }).catch(() => {});
525
+ };
526
+
527
+ const changeStyle = async(id) => {
528
+ currStyleId.value = id;
529
+ currStyle.value = initStyle((activatedNode.value.styleList.find(item => item.id === id) || {}).style);
530
+ currCompStyle.value = await initCompStyle((activatedNode.value.styleList.find(item => item.id === id) || {}).compStyle);
531
+
532
+ activatedNode.value.currStyle = currStyle.value;
533
+ activatedNode.value.currCompStyle = currCompStyle.value;
534
+ };
535
+
536
+ const initStyle = (style) => {
537
+ commonStyle.forEach(item => {
538
+ if (item.type !== 'group' && item.fieldName && typeof style[item.fieldName] === 'undefined') {
539
+ style[item.fieldName] = getValue(style[item.fieldName], item.default);
540
+ }
541
+ if (item.children && item.children.length > 0) {
542
+ initStyleByDefault(style, item.children);
543
+ }
544
+ });
545
+
546
+ return style;
547
+ };
548
+
549
+ const initStyleByDefault = (style, list) => {
550
+ list.forEach(item => {
551
+ if (item.type !== 'group' && item.fieldName && typeof style[item.fieldName] === 'undefined') {
552
+ style[item.fieldName] = getValue(style[item.fieldName], item.default);
553
+ }
554
+ if (item.children && item.children.length > 0) {
555
+ initStyleByDefault(style, item.children);
556
+ }
557
+ });
558
+ };
559
+
560
+ const initCompStyle = async(style) => {
561
+ (tool.deepClone(await getCompStyle()) || []).forEach(item => {
562
+ if (item.type !== 'group' && item.fieldName && typeof style[item.fieldName] === 'undefined') {
563
+ style[item.fieldName] = getValue(style[item.fieldName], item.default);
564
+ }
565
+ if (item.children && item.children.length > 0) {
566
+ initCompStyleByDefault(style, item.children);
567
+ }
568
+ });
569
+
570
+ return style;
571
+ };
572
+
573
+ const initCompStyleByDefault = (style, list) => {
574
+ list.forEach(item => {
575
+ if (item.type !== 'group' && item.fieldName && typeof style[item.fieldName] === 'undefined') {
576
+ style[item.fieldName] = getValue(style[item.fieldName], item.default);
577
+ }
578
+ if (item.children && item.children.length > 0) {
579
+ initCompStyleByDefault(style, item.children);
580
+ }
581
+ });
582
+ };
583
+
584
+ const getValue = (...args) => {
585
+ for (const item of args) {
586
+ if (item === 0 || item) {
587
+ return item;
588
+ }
589
+ }
590
+ return null;
591
+ };
592
+
593
+ const getFormItemOptions = () => {
594
+ const options = [];
595
+ tool.walkTree(rootNode.value, node => {
596
+ if (node.id && node.formItem === '1') {
597
+ options.push({ key: node.id, value: node.name });
598
+ }
599
+ });
600
+ return options;
601
+ };
602
+
603
+ const buildNameIndex = () => {
604
+ const regex = new RegExp('-\\d+$');
605
+ tool.walkTree(rootNode.value, node => {
606
+ if (node.name && node.name.match(regex)) {
607
+ const lastIndex = node.name.lastIndexOf('-');
608
+ const name = node.name.substring(0, lastIndex);
609
+ const maxIndex = parseInt(node.name.substring(lastIndex + 1));
610
+ if (!nameIndex.value[name] || nameIndex.value[name] < maxIndex) {
611
+ nameIndex.value[name] = maxIndex;
612
+ }
613
+ }
614
+ });
615
+ };
616
+
617
+ const getNodeName = (name) => {
618
+ if (!name) return '组件-01';
619
+
620
+ if (name.endsWith('-')) {
621
+ name = name.substr(0, name.length - 1);
622
+ }
623
+
624
+ if (!nameIndex.value[name]) {
625
+ buildNameIndex();
626
+ }
627
+
628
+ if (!nameIndex.value[name]) {
629
+ nameIndex.value[name] = 0;
630
+ }
631
+
632
+ const index = ++nameIndex.value[name];
633
+ return name + '-' + (index < 10 ? '0' : '') + index;
634
+ };
635
+
636
+ const cleanProp = (data) => {
637
+ const clone = tool.deepClone(data);
638
+ const result = {};
639
+ for (const p in clone) {
640
+ if (p !== 'name' &&
641
+ p !== 'fieldName' &&
642
+ p !== 'fieldType' &&
643
+ p !== 'default' &&
644
+ p !== 'description' &&
645
+ p !== 'show') {
646
+ if (typeof clone[p] === 'function') {
647
+ result[p] = clone[p](currCompStyle.value);
648
+ } else if (p === 'options' && clone[p] === 'formItemOptions') {
649
+ result[p] = getFormItemOptions();
650
+ } else {
651
+ result[p] = clone[p];
652
+ }
653
+ }
654
+ }
655
+ return result;
656
+ };
657
+
658
+ const getFieldList = () => {
659
+ const fieldList = activatedNode.value.compData?.fieldList || [];
660
+ return fieldList.map(item => item.name).filter(item => item).join(',');
661
+ };
662
+
663
+ const tempNode = ref();
664
+ const cloneComponent = (comp) => {
665
+ tempNode.value = visual.createNode(getNodeName(comp.name), comp)
666
+ return tempNode.value;
667
+ };
668
+
669
+ const onDragEnd = (event) => {
670
+ if (event.from !== event.to && tempNode.value) {
671
+ emit('activeNode', tempNode.value);
672
+ tempNode.value = null;
673
+ }
674
+ };
675
+
676
+ /* const preview = () => {
677
+ emit('preview');
678
+ }; */
679
+
680
+ const save = () => {
681
+ emit('save', true);
682
+ };
683
+
684
+ const quit = () => {
685
+ emit('quit');
686
+ };
687
+
688
+ const init = async() => {
689
+ if (!activatedNode.value) return;
690
+
691
+ currStyleSeq.value = 1;
692
+ for (const style of (activatedNode.value.styleList || [])) {
693
+ const matches = style.name.match(/(\d+)$/);
694
+ const index = parseInt(matches ? matches[1] : '0');
695
+ if (index > currStyleSeq.value) {
696
+ currStyleSeq.value = index;
697
+ }
698
+ }
699
+
700
+ currStyleId.value = activatedNode.value &&
701
+ activatedNode.value.styleList &&
702
+ activatedNode.value.styleList[0].id || '';
703
+
704
+ currStyle.value = initStyle(activatedNode.value &&
705
+ activatedNode.value.styleList &&
706
+ activatedNode.value.styleList[0].style || {});
707
+ activatedNode.value.currStyle = currStyle.value;
708
+
709
+ currCompStyle.value = await initCompStyle(activatedNode.value &&
710
+ activatedNode.value.styleList &&
711
+ activatedNode.value.styleList[0].compStyle || {});
712
+ activatedNode.value.currCompStyle = currCompStyle.value;
713
+
714
+ compNames.value = [];
715
+ collapseNames.value = [];
716
+ collapseCompNames.value = ['默认值'];
717
+
718
+ commonStyle.forEach(item => collapseNames.value.push(item.name));
719
+ compList.value = components.filter(comp => !props.type || !comp.scene || comp.scene.includes(props.type));
720
+ compList.value.forEach(item => compNames.value.push(item.name));
721
+ (await getCompStyle() || []).forEach(item => collapseCompNames.value.push(item.name));
722
+
723
+ treeRef.value && treeRef.value.setCurrentKey(activatedNode.value.id);
724
+ };
725
+
726
+ const createCompStyle = (data, children) => {
727
+ (children || []).forEach(item => {
728
+ if (item.type && item.styleList) {
729
+ const styleList = tool.deepClone(item.styleList)
730
+ data[item.type] = styleList;
731
+ if (item.defaultStyle) {
732
+ tool.walkTree({ children: styleList }, style => {
733
+ if (style.fieldName && style.fieldName && item.defaultStyle[style.fieldName]) {
734
+ style.default = item.defaultStyle[style.fieldName];
735
+ }
736
+ });
737
+ }
738
+ }
739
+ createCompStyle(data, item.children);
740
+ });
741
+ };
742
+
743
+ const styleList = computed(() => {
744
+ const list = tool.deepClone(commonStyle);
745
+ list.forEach(item => {
746
+ if (item.children) {
747
+ item.children = item.children.filter(item => !item.show || item.show(currStyle.value));
748
+ }
749
+ });
750
+ return list;
751
+ });
752
+
753
+ const inputParamOptions = computed(() => {
754
+ const options = [];
755
+ (pageParamList.value || []).forEach(param => {
756
+ options.push({ key: param.id || '', value: '[全局参数].' + (param.name || '参数名') });
757
+ });
758
+ return options;
759
+ });
760
+
761
+ const getCompStyle = async() => {
762
+ if (activatedNode.value.type) {
763
+ if (!compConfigList.value[activatedNode.value.type]) {
764
+ const comp = tool.deepClone(await visualComp.getVisualComp(activatedNode.value.type));
765
+ compConfigList.value[activatedNode.value.type] = comp && comp.styleList || [];
766
+ }
767
+ return tool.deepClone(compConfigList.value[activatedNode.value.type]) || [];
768
+ } else {
769
+ return [];
770
+ }
771
+ };
772
+
773
+ const addTplToNode = (data) => {
774
+ if (activatedNode.value && activatedNode.value.children && data.json) {
775
+ activatedNode.value.children.push(createNodeFromTpl(JSON.parse(data.json)));
776
+ } else {
777
+ ElMessage.error('请选择要添加的容器!');
778
+ }
779
+ };
780
+
781
+ const saveTpl = (data) => {
782
+ api.post('/system/pageVisualTemplate/save', data).then(res => {
783
+ if (res.code === '1') {
784
+ data.edit = false;
785
+ ElMessage.success('修改模板名称成功!');
786
+ loadVisualTpl();
787
+ }
788
+ });
789
+ };
790
+
791
+ const deleteTpl = (data) => {
792
+ ElMessageBox.confirm('请确认是否删除?', '提示', { type: 'warning' }).then(async() => {
793
+ api.post('/system/pageVisualTemplate/delete', data).then(res => {
794
+ if (res.code === '1') {
795
+ ElMessage.success('删除模板成功!');
796
+ loadVisualTpl();
797
+ }
798
+ });
799
+ }).catch(() => {});
800
+ };
801
+
802
+ const createNodeFromTpl = (tpl) => {
803
+ resetId(tpl);
804
+ tool.walkTree(tpl, item => {
805
+ resetId(item);
806
+ });
807
+ return tpl;
808
+ };
809
+
810
+ const resetId = (node) => {
811
+ if (node.id) {
812
+ node.id = tool.uuid();
813
+ }
814
+ if (node.name) {
815
+ const lastIndex = node.name.lastIndexOf('-');
816
+ const name = node.name.substring(0, lastIndex);
817
+ node.name = getNodeName(name);
818
+ }
819
+ (node.styleList || []).forEach(style => {
820
+ style.id = tool.uuid();
821
+ });
822
+ };
823
+
824
+ const loadVisualTpl = () => {
825
+ api.post('/system/pageVisualTemplate/queryList', { type: '普通' }).then(res => {
826
+ tplList.value = res && res.data || [];
827
+ });
828
+ };
829
+
830
+ const eventChange = () => {
831
+ emit('change');
832
+ };
833
+
834
+ watch(() => activatedNode.value.id, () => {
835
+ init();
836
+ });
837
+
838
+ watch(() => currStyle.value, (style) => {
839
+ activatedNode.value.currStyle = style;
840
+ emit('change');
841
+ }, { deep: true });
842
+
843
+ const compStyleList = ref();
844
+ watch(() => currCompStyle.value, async(compStyle) => {
845
+ const list = tool.deepClone(await getCompStyle() || []);
846
+ list.forEach(item => {
847
+ item.children = (item.children || []).filter(item => !item.show || item.show(compStyle));
848
+ });
849
+ compStyleList.value = list;
850
+ activatedNode.value.currCompStyle = compStyle;
851
+ emit('change');
852
+ }, { deep: true });
853
+
854
+ watch(() => autoSave.value, (value) => {
855
+ if (autoSaveInterval.value) {
856
+ clearInterval(autoSaveInterval.value);
857
+ }
858
+
859
+ if (value) {
860
+ autoSaveInterval.value = setInterval(() => {
861
+ emit('save', false);
862
+ }, 10 * 1000);
863
+ }
864
+ }, { immediate: true });
865
+
866
+ onMounted(() => {
867
+ initializing.value = true;
868
+ createCompStyle(compConfigList.value, components);
869
+ loadVisualTpl();
870
+ nextTick(() => initializing.value = false);
871
+ });
872
+
873
+ defineExpose({ loadVisualTpl });
874
+ </script>
875
+
876
+ <style scoped lang="scss">
877
+ .visual-tool {
878
+ height: 100%;
879
+ display: flex;
880
+ flex-direction: row;
881
+ .visual-panel {
882
+ height: 100%;
883
+ width: 1px;
884
+ flex-grow: 1;
885
+ display: flex;
886
+ flex-direction: column;
887
+ background: #555555;
888
+ .visual-panel-item {
889
+ height: 1px;
890
+ flex-grow: 1;
891
+ display: flex;
892
+ flex-direction: column;
893
+ overflow: auto;
894
+ :deep(.el-text) {
895
+ color: white;
896
+ }
897
+ }
898
+ :deep(.el-collapse) {
899
+ --el-collapse-border-color: unset!important;
900
+ --el-collapse-header-height: 35px;
901
+ --el-collapse-header-bg-color: #333!important;
902
+ --el-collapse-header-text-color: white;
903
+ --el-collapse-content-bg-color: #555555;
904
+ --el-collapse-content-text-color: white;
905
+ border-bottom: 1px solid #666666;
906
+ border-top: none!important;
907
+ .el-collapse-item {
908
+ border-bottom: 1px solid #444;
909
+ }
910
+ .el-collapse-item:last-child {
911
+ border-bottom: none;
912
+ }
913
+ .el-collapse-item__header {
914
+ text-indent: 20px;
915
+ }
916
+ .el-collapse-item__content {
917
+ padding-bottom: 0!important;
918
+ }
919
+ }
920
+ :deep(.el-tree) {
921
+ padding: 8px;
922
+ background: #555555;
923
+ color: #dcdcdc;
924
+ width: 100%;
925
+ --el-tree-node-content-height: 26px;
926
+ --el-tree-node-hover-bg-color: #333;
927
+ --el-tree-text-color: #dcdcdc;
928
+ --el-tree-expand-icon-color: #dcdcdc;
929
+ }
930
+ :deep(.el-tree-node.is-current)>.el-tree-node__content {
931
+ background: #333!important;
932
+ }
933
+ :deep(.el-input) {
934
+ --el-input-text-color: #dcdcdc;
935
+ --el-input-border-color: none;
936
+ --el-input-bg-color: #333;
937
+ --el-input-hover-border-color: none;
938
+ --el-disabled-bg-color: #333;
939
+ --el-disabled-border-color: none;
940
+ --el-text-color-placeholder: #666666;
941
+ .el-input__inner, .el-textarea__inner, .el-checkbox, .el-checkbox__label {
942
+ color: #cccccc !important;
943
+ }
944
+ }
945
+ :deep(.el-input).is-disabled {
946
+ --el-input-text-color: #dcdcdc;
947
+ --el-input-border-color: none;
948
+ --el-input-bg-color: #333;
949
+ --el-input-hover-border-color: none;
950
+ --el-disabled-bg-color: #333;
951
+ --el-disabled-border-color: none;
952
+ -webkit-text-fill-color: #cccccc;
953
+ .el-input__inner, .el-textarea__inner, .el-checkbox, .el-checkbox__label {
954
+ color: #cccccc !important;
955
+ -webkit-text-fill-color: #cccccc !important;
956
+ }
957
+ }
958
+ :deep(.el-textarea) .el-textarea__inner {
959
+ background: #333!important;
960
+ box-shadow: none;
961
+ color: #dcdcdc!important;
962
+ }
963
+ :deep(.el-select) .el-input__inner {
964
+ border: none!important;
965
+ }
966
+ :deep(.el-select) {
967
+ .el-select__wrapper {
968
+ background: #333;
969
+ color: #dcdcdc!important;
970
+ box-shadow: none;
971
+ }
972
+ .el-input__inner {
973
+ border-color: #666;
974
+ }
975
+ .el-select__placeholder {
976
+ border: none!important;
977
+ color: #dcdcdc!important;
978
+ }
979
+ }
980
+ :deep(.el-checkbox) {
981
+ margin-right: 15px;
982
+ .el-checkbox__label {
983
+ color: #dcdcdc!important;
984
+ }
985
+ .el-checkbox__input .el-checkbox__inner {
986
+ background: rgb(180, 180, 180);
987
+ border-color: rgb(180, 180, 180);
988
+ }
989
+ .el-checkbox__input.is-checked .el-checkbox__inner {
990
+ background: #333;
991
+ border-color: #333;
992
+ }
993
+ }
994
+ :deep(.el-radio) {
995
+ margin-right: 15px;
996
+ .el-radio__label {
997
+ color: #dcdcdc!important;
998
+ }
999
+ .el-radio__input .el-radio__inner {
1000
+ background: rgb(180, 180, 180);
1001
+ border-color: rgb(180, 180, 180);
1002
+ }
1003
+ .el-radio__input.is-checked .el-radio__inner {
1004
+ background: #333;
1005
+ border-color: #333;
1006
+ }
1007
+ }
1008
+ :deep(.icon-select) {
1009
+ border-color: #333;
1010
+ background: #333;
1011
+ color: #dcdcdc;
1012
+ }
1013
+ :deep(.el-switch) .el-switch__core {
1014
+ background: #b4b4b4;
1015
+ border-color: #b4b4b4;
1016
+ }
1017
+ :deep(.el-switch).is-checked .el-switch__core {
1018
+ background: #333;
1019
+ border-color: #333;
1020
+ }
1021
+ :deep(.el-input-number--small .el-input__wrapper) {
1022
+ padding-left: 5px!important;
1023
+ }
1024
+ :deep(.el-collapse-item__header) {
1025
+ box-sizing: border-box;
1026
+ }
1027
+ .status-group {
1028
+ flex-shrink: 0;
1029
+ height: 35px;
1030
+ text-indent: 20px;
1031
+ background: #333333;
1032
+ color: white;
1033
+ display: flex;
1034
+ flex-direction: row;
1035
+ align-items: center;
1036
+ border-bottom: 1px solid #444;
1037
+ .label {
1038
+ flex-shrink: 0;
1039
+ display: flex;
1040
+ flex-direction: row;
1041
+ align-items: center;
1042
+ }
1043
+ .button {
1044
+ flex-grow: 1;
1045
+ display: flex;
1046
+ flex-direction: row;
1047
+ align-items: center;
1048
+ justify-content: end;
1049
+ margin-right: 8px;
1050
+ }
1051
+ }
1052
+ .status-box {
1053
+ padding: 2px 4px;
1054
+ }
1055
+ .status-item {
1056
+ color: white;
1057
+ display: flex;
1058
+ flex-direction: row;
1059
+ align-items: center;
1060
+ padding: 2px 4px;
1061
+
1062
+ .label {
1063
+ flex-shrink: 0;
1064
+ text-align: right;
1065
+ display: flex;
1066
+ flex-direction: row;
1067
+ align-items: center;
1068
+ color: #dcdcdc;
1069
+ }
1070
+ .content {
1071
+ flex-grow: 1;
1072
+ margin-left: 8px;
1073
+ display: flex;
1074
+ flex-direction: row;
1075
+ align-items: center;
1076
+ font-size: 13px;
1077
+ :deep(.el-input) {
1078
+ .el-input__inner {
1079
+ color: #dcdcdc!important;
1080
+ font-size: 12px;
1081
+ }
1082
+ }
1083
+ }
1084
+ .button {
1085
+ display: flex;
1086
+ flex-direction: row;
1087
+ align-items: center;
1088
+ }
1089
+ }
1090
+ .style-box {
1091
+ flex-grow: 1;
1092
+ overflow: auto;
1093
+ :deep(.el-collapse-item__wrap) {
1094
+ padding: 2px 0;
1095
+ background: #555555!important;
1096
+ }
1097
+ }
1098
+ .style-item {
1099
+ color: white;
1100
+ display: flex;
1101
+ flex-direction: row;
1102
+ padding: 2px 3px;
1103
+ .label {
1104
+ width: 92px;
1105
+ height: 24px;
1106
+ flex-shrink: 0;
1107
+ color: #dcdcdc;
1108
+ display: flex;
1109
+ flex-direction: row;
1110
+ align-items: center;
1111
+ justify-content: flex-end;
1112
+ font-size: 13px;
1113
+ :deep(.label-name) {
1114
+ width: 90px;
1115
+ white-space: nowrap;
1116
+ overflow: hidden;
1117
+ text-overflow: ellipsis;
1118
+ text-align: right;
1119
+ display: block;
1120
+ }
1121
+ }
1122
+ .content {
1123
+ flex-grow: 1;
1124
+ display: flex;
1125
+ flex-direction: row;
1126
+ align-items: center;
1127
+ }
1128
+ :deep(.el-radio-button) {
1129
+ --el-radio-button-checked-bg-color: #555;
1130
+ --el-radio-button-checked-text-color: #dcdcdc;
1131
+ --el-radio-button-checked-border-color: #333;
1132
+ --el-radio-button-disabled-checked-fill: #333;
1133
+ }
1134
+ :deep(.el-radio-button) .el-radio-button__inner {
1135
+ color: #dcdcdc;
1136
+ background: #555555;
1137
+ border-right: 1px solid #333;
1138
+ border-top: 1px solid #333;
1139
+ border-bottom: 1px solid #333;
1140
+ padding: 5px 6px;
1141
+ }
1142
+ :deep(.el-radio-button:first-child) .el-radio-button__inner {
1143
+ border-left: 1px solid #333;
1144
+ }
1145
+ :deep(.el-radio-button).is-active .el-radio-button__inner {
1146
+ background: #333!important;
1147
+ }
1148
+ }
1149
+ .component-group {
1150
+ margin: 10px 0;
1151
+ height: 1px;
1152
+ flex-grow: 1;
1153
+ overflow-y: scroll;
1154
+ :deep(.el-collapse-item__content) {
1155
+ margin-bottom: 0!important;
1156
+ padding-bottom: 10px!important;
1157
+ }
1158
+ }
1159
+ .component-group-item {
1160
+ display: flex;
1161
+ flex-direction: column;
1162
+ }
1163
+ .component-box {
1164
+ display: grid;
1165
+ grid-template-columns: repeat(auto-fill, 145px);
1166
+ grid-gap: 5px 8px;
1167
+ justify-content: center;
1168
+ align-items: center;
1169
+ overflow-y: auto;
1170
+ padding: 5px 0;
1171
+ .component-item {
1172
+ background: rgb(66, 66, 66);
1173
+ padding: 0 12px;
1174
+ height: 32px;
1175
+ line-height: 32px;
1176
+ width: 120px;
1177
+ border: 1px solid #333;
1178
+ border-radius: 5px;
1179
+ color: #dcdcdc;
1180
+ overflow: hidden;
1181
+ text-overflow: ellipsis;
1182
+ white-space: nowrap;
1183
+ }
1184
+ .component-item:hover {
1185
+ cursor: move;
1186
+ border: 1px dashed #ccc;
1187
+ background: rgb(51,51,51);
1188
+ }
1189
+ }
1190
+ }
1191
+ .visual-menu {
1192
+ padding: 10px 0;
1193
+ width: 50px;
1194
+ flex-shrink: 0;
1195
+ display: flex;
1196
+ flex-direction: column;
1197
+ align-items: center;
1198
+ background: rgb(66, 66, 66);
1199
+ .menu-item {
1200
+ padding: 5px;
1201
+ display: flex;
1202
+ flex-direction: column;
1203
+ justify-content: center;
1204
+ align-items: center;
1205
+ cursor: pointer;
1206
+ margin-bottom: 10px;
1207
+ }
1208
+
1209
+ .menu-item.is-active {
1210
+ border-radius: 5px;
1211
+ background: rgb(121, 121, 121);
1212
+ }
1213
+
1214
+ .menu-item:hover {
1215
+ border-radius: 5px;
1216
+ background: rgb(121, 121, 121);
1217
+ }
1218
+ }
1219
+ :deep(.dark-drawer-box) {
1220
+ background: #555555;
1221
+ .el-drawer__body {
1222
+ padding: 0;
1223
+ background: rgb(85, 85, 85)!important;
1224
+ }
1225
+ .el-drawer__footer {
1226
+ border-top: 1px solid rgb(51, 51, 51)!important;
1227
+ padding: 8px;
1228
+ background: rgb(85, 85, 85)!important;
1229
+ }
1230
+ }
1231
+ .tpl-box {
1232
+ padding: 8px;
1233
+ .tpl-item {
1234
+ display: flex;
1235
+ flex-direction: row;
1236
+ align-items: center;
1237
+ margin-bottom: 8px;
1238
+ .tpl-item-name {
1239
+ width: 1px;
1240
+ flex-grow: 1;
1241
+ &.border {
1242
+ height: 30px;
1243
+ border: 1px solid #050505;
1244
+ border-radius: 5px;
1245
+ display: flex;
1246
+ flex-direction: row;
1247
+ align-items: center;
1248
+ color: #c0c0c0;
1249
+ text-indent: 10px;
1250
+ }
1251
+ }
1252
+ .tpl-item-add, .tpl-item-delete {
1253
+ margin-left: 5px;
1254
+ }
1255
+ }
1256
+ }
1257
+ }
1258
+ </style>