@epxing/designer 0.0.0-stage → 5.3.0-beta.1

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 (491) hide show
  1. package/API.md +159 -0
  2. package/README.md +44 -2
  3. package/dist/_virtual/_plugin-vue_export-helper.js +10 -0
  4. package/dist/_virtual/preload-helper.js +88 -0
  5. package/dist/assets/default-icon-2193FMjv.png +0 -0
  6. package/dist/assets/technology_bg-oWIS2awO.jpg +0 -0
  7. package/dist/assets/theme_black-Ctdygcr4.png +0 -0
  8. package/dist/assets/theme_technology-DJk-2e7g.png +0 -0
  9. package/dist/assets/theme_white-uMQ6JYml.png +0 -0
  10. package/dist/src/assets/images/dashboard/theme_black.png.js +4 -0
  11. package/dist/src/assets/images/dashboard/theme_technology.png.js +4 -0
  12. package/dist/src/assets/images/dashboard/theme_white.png.js +4 -0
  13. package/dist/src/assets/images/default-icon.png.js +4 -0
  14. package/dist/src/index.js +52 -0
  15. package/dist/src/page-designer/PageConfigPreview.js +101 -0
  16. package/dist/src/page-designer/PageDesigner.js +843 -0
  17. package/dist/src/page-designer/designer.js +1119 -0
  18. package/dist/src/page-designer/index.js +51 -0
  19. package/dist/src/page-designer/mixins/dragSourceMixin.js +94 -0
  20. package/dist/src/page-designer/page-variable-panel/JsonEditor.js +105 -0
  21. package/dist/src/page-designer/page-variable-panel/PageVariablePanel.js +938 -0
  22. package/dist/src/page-designer/page-variable-panel/index.js +6 -0
  23. package/dist/src/page-designer/page-variable-panel/jsonlint.js +229 -0
  24. package/dist/src/page-designer/previews/add-form/Preview.js +7 -0
  25. package/dist/src/page-designer/previews/add-form/Preview.vue.js +328 -0
  26. package/dist/src/page-designer/previews/add-form-item/Preview.js +193 -0
  27. package/dist/src/page-designer/previews/button/Preview.js +29 -0
  28. package/dist/src/page-designer/previews/card/Preview.js +86 -0
  29. package/dist/src/page-designer/previews/carousel/CarouselItemPreview.js +32 -0
  30. package/dist/src/page-designer/previews/carousel/Preview.js +60 -0
  31. package/dist/src/page-designer/previews/collapse/CollapseItemPreview.js +117 -0
  32. package/dist/src/page-designer/previews/collapse/Preview.js +34 -0
  33. package/dist/src/page-designer/previews/dropdown/Preview.js +67 -0
  34. package/dist/src/page-designer/previews/entity-list/Preview.js +521 -0
  35. package/dist/src/page-designer/previews/entity-sub-list/Preview.js +351 -0
  36. package/dist/src/page-designer/previews/entity-virtual-list/Preview.js +10 -0
  37. package/dist/src/page-designer/previews/form-field/preview/Checkbox.js +90 -0
  38. package/dist/src/page-designer/previews/form-field/preview/Date.js +76 -0
  39. package/dist/src/page-designer/previews/form-field/preview/Input.js +73 -0
  40. package/dist/src/page-designer/previews/form-field/preview/InputNumber.js +73 -0
  41. package/dist/src/page-designer/previews/form-field/preview/Object.js +76 -0
  42. package/dist/src/page-designer/previews/form-field/preview/Radio.js +145 -0
  43. package/dist/src/page-designer/previews/form-field/preview/Select.js +77 -0
  44. package/dist/src/page-designer/previews/form-field/preview/Textarea.js +77 -0
  45. package/dist/src/page-designer/previews/grid/Preview.js +138 -0
  46. package/dist/src/page-designer/previews/html/Preview.js +17 -0
  47. package/dist/src/page-designer/previews/icon/Preview.js +19 -0
  48. package/dist/src/page-designer/previews/image/Preview.js +35 -0
  49. package/dist/src/page-designer/previews/index.js +73 -0
  50. package/dist/src/page-designer/previews/layout/ColumnPreview.js +46 -0
  51. package/dist/src/page-designer/previews/layout/Preview.js +109 -0
  52. package/dist/src/page-designer/previews/num/Preview.js +131 -0
  53. package/dist/src/page-designer/previews/page-tabs/Preview.js +74 -0
  54. package/dist/src/page-designer/previews/step/Preview.js +206 -0
  55. package/dist/src/page-designer/previews/tabs/Preview.js +94 -0
  56. package/dist/src/page-designer/previews/tabs/tab-pane/Preview.js +32 -0
  57. package/dist/src/page-designer/previews/text/Preview.js +37 -0
  58. package/dist/src/page-designer/previews/text-editor/Preview.js +22 -0
  59. package/dist/src/page-designer/previews/video/Preview.js +9 -0
  60. package/dist/src/page-designer/setting-panel/Advance.js +280 -0
  61. package/dist/src/page-designer/setting-panel/CodeEditor.js +93 -0
  62. package/dist/src/page-designer/setting-panel/Property.js +164 -0
  63. package/dist/src/page-designer/setting-panel/Setting.js +295 -0
  64. package/dist/src/page-designer/setting-panel/Style.js +1590 -0
  65. package/dist/src/page-designer/setting-panel/css-editor/CssEditor.js +97 -0
  66. package/dist/src/page-designer/setting-panel/css-editor/css-hint.js +83 -0
  67. package/dist/src/page-designer/setting-panel/index.js +10 -0
  68. package/dist/src/page-designer/template-attribute-panel/TemplateAttributePanel.js +486 -0
  69. package/dist/src/page-designer/template-attribute-panel/index.js +4 -0
  70. package/dist/src/page-designer/template-library/Library.js +218 -0
  71. package/dist/src/page-designer/template-library/index.js +4 -0
  72. package/dist/src/page-designer/widget-library/Base.js +169 -0
  73. package/dist/src/page-designer/widget-library/Library.js +212 -0
  74. package/dist/src/page-designer/widget-library/index.js +6 -0
  75. package/dist/src/page-designer/widget-preview/Container.js +79 -0
  76. package/dist/src/page-designer/widget-preview/DragGhost.js +53 -0
  77. package/dist/src/page-designer/widget-preview/DropZoneOverlay.js +41 -0
  78. package/dist/src/page-designer/widget-preview/HoverOverlay.js +60 -0
  79. package/dist/src/page-designer/widget-preview/Mixin.js +259 -0
  80. package/dist/src/page-designer/widget-preview/Placeholder.js +27 -0
  81. package/dist/src/page-designer/widget-preview/Preview.js +276 -0
  82. package/dist/src/page-designer/widget-preview/PreviewItem.js +82 -0
  83. package/dist/src/page-designer/widget-preview/SelectedOverlay.js +331 -0
  84. package/dist/src/page-designer/widget-preview/Template.js +65 -0
  85. package/dist/src/page-designer/widget-preview/WidgetWrapper.js +169 -0
  86. package/dist/src/page-designer/widget-preview/directive.js +158 -0
  87. package/dist/src/page-designer/widget-preview/dropPosition.js +49 -0
  88. package/dist/src/page-designer/widget-preview/index.js +22 -0
  89. package/dist/src/page-designer/widget-preview/overlayPositionMixin.js +86 -0
  90. package/dist/src/page-designer/widget-preview/resolvePreviewName.js +31 -0
  91. package/dist/src/page-designer/widget-tree/Item.js +579 -0
  92. package/dist/src/page-designer/widget-tree/Tree.js +854 -0
  93. package/dist/src/page-designer/widget-tree/index.js +6 -0
  94. package/dist/src/visual/AddForm.js +171 -0
  95. package/dist/src/visual/AddFormItem.js +479 -0
  96. package/dist/src/visual/AppIndex.js +242 -0
  97. package/dist/src/visual/ApplyForm.js +134 -0
  98. package/dist/src/visual/AttributeList.js +343 -0
  99. package/dist/src/visual/BasePage.js +76 -0
  100. package/dist/src/visual/Button.js +4 -0
  101. package/dist/src/visual/Button.vue.js +89 -0
  102. package/dist/src/visual/CardNum.js +73 -0
  103. package/dist/src/visual/CategoryList.js +568 -0
  104. package/dist/src/visual/Chart.js +26 -0
  105. package/dist/src/visual/ChartNew.js +4 -0
  106. package/dist/src/visual/ChartNew.vue.js +54 -0
  107. package/dist/src/visual/CheckForm.js +109 -0
  108. package/dist/src/visual/ClientList.js +40 -0
  109. package/dist/src/visual/CodeManage.js +112 -0
  110. package/dist/src/visual/Component.js +5 -0
  111. package/dist/src/visual/Component.vue.js +1332 -0
  112. package/dist/src/visual/ComponentList.js +279 -0
  113. package/dist/src/visual/Config.js +7 -0
  114. package/dist/src/visual/Config.vue.js +862 -0
  115. package/dist/src/visual/ConfigItem.js +7 -0
  116. package/dist/src/visual/ConfigItem.vue.js +192 -0
  117. package/dist/src/visual/ConfigSelectItems.js +7 -0
  118. package/dist/src/visual/ConfigSelectItems.vue.js +260 -0
  119. package/dist/src/visual/CreatePage.js +388 -0
  120. package/dist/src/visual/DashboardDiv.js +57 -0
  121. package/dist/src/visual/DashboardTabs.js +8 -0
  122. package/dist/src/visual/DashboardTabs.vue.js +127 -0
  123. package/dist/src/visual/DashboardWidget.js +4 -0
  124. package/dist/src/visual/DashboardWidget.vue.js +62 -0
  125. package/dist/src/visual/DblogList.js +81 -0
  126. package/dist/src/visual/EntityAddPage.js +48 -0
  127. package/dist/src/visual/EntityApplyPage.js +53 -0
  128. package/dist/src/visual/EntityCardList.js +454 -0
  129. package/dist/src/visual/EntityCheckPage.js +65 -0
  130. package/dist/src/visual/EntityFindPage.js +44 -0
  131. package/dist/src/visual/EntityList.js +5 -0
  132. package/dist/src/visual/EntityList.vue.js +1221 -0
  133. package/dist/src/visual/EntityListPage.js +42 -0
  134. package/dist/src/visual/EntityNoSubmitSubList.js +266 -0
  135. package/dist/src/visual/EntityRightSubList.js +28 -0
  136. package/dist/src/visual/EntitySubAdd.js +9 -0
  137. package/dist/src/visual/EntitySubGridItem.js +65 -0
  138. package/dist/src/visual/EntitySubList.js +433 -0
  139. package/dist/src/visual/EntityTreeFindPage.js +31 -0
  140. package/dist/src/visual/EntityTreeManage.js +48 -0
  141. package/dist/src/visual/EntityTreePage.js +41 -0
  142. package/dist/src/visual/ExcelPreview.js +9 -0
  143. package/dist/src/visual/FormField.js +4 -0
  144. package/dist/src/visual/FormField.vue.js +121 -0
  145. package/dist/src/visual/HeaderNew.js +160 -0
  146. package/dist/src/visual/Html.js +7 -0
  147. package/dist/src/visual/Html.vue.js +109 -0
  148. package/dist/src/visual/Import.js +52 -0
  149. package/dist/src/visual/InterfaceSubList.js +20 -0
  150. package/dist/src/visual/ListFirst.js +703 -0
  151. package/dist/src/visual/MEntityAddPage.js +65 -0
  152. package/dist/src/visual/MEntityList.js +484 -0
  153. package/dist/src/visual/MEntityListPage.js +39 -0
  154. package/dist/src/visual/MEntitySubList.js +236 -0
  155. package/dist/src/visual/MetaList.js +22 -0
  156. package/dist/src/visual/ModuleIndexPage.js +66 -0
  157. package/dist/src/visual/ModuleList.js +46 -0
  158. package/dist/src/visual/NavAddForm.js +172 -0
  159. package/dist/src/visual/NavFormCatalogItem.js +43 -0
  160. package/dist/src/visual/NumItem.js +69 -0
  161. package/dist/src/visual/NumStatistic.js +5 -0
  162. package/dist/src/visual/NumStatistic.vue.js +81 -0
  163. package/dist/src/visual/OrgChart.js +106 -0
  164. package/dist/src/visual/PageCatalog.js +26 -0
  165. package/dist/src/visual/PageConfig.js +222 -0
  166. package/dist/src/visual/PageTabs.js +48 -0
  167. package/dist/src/visual/Progress.js +39 -0
  168. package/dist/src/visual/ProgressItem.js +43 -0
  169. package/dist/src/visual/SystemManager.js +76 -0
  170. package/dist/src/visual/Title.js +44 -0
  171. package/dist/src/visual/TodoList.js +13 -0
  172. package/dist/src/visual/UserFormItem.js +40 -0
  173. package/dist/src/visual/UserManage.js +34 -0
  174. package/dist/src/visual/chart/CircularPie.js +8 -0
  175. package/dist/src/visual/chart/Column.js +69 -0
  176. package/dist/src/visual/chart/HoriColumn.js +8 -0
  177. package/dist/src/visual/chart/Line.js +8 -0
  178. package/dist/src/visual/chart/Pie.js +8 -0
  179. package/dist/src/visual/config/Background.js +525 -0
  180. package/dist/src/visual/config/Chart.js +153 -0
  181. package/dist/src/visual/config/Checkbox.js +62 -0
  182. package/dist/src/visual/config/Color.js +40 -0
  183. package/dist/src/visual/config/DesignReport.js +23 -0
  184. package/dist/src/visual/config/Event.js +303 -0
  185. package/dist/src/visual/config/Field.js +519 -0
  186. package/dist/src/visual/config/Font.js +201 -0
  187. package/dist/src/visual/config/FormItem.js +22 -0
  188. package/dist/src/visual/config/Function.js +113 -0
  189. package/dist/src/visual/config/Html.js +110 -0
  190. package/dist/src/visual/config/Image.js +101 -0
  191. package/dist/src/visual/config/Input.js +176 -0
  192. package/dist/src/visual/config/Input.vue.js +479 -0
  193. package/dist/src/visual/config/LazyDialog.js +40 -0
  194. package/dist/src/visual/config/List.js +64 -0
  195. package/dist/src/visual/config/ListField.js +2079 -0
  196. package/dist/src/visual/config/MField.js +732 -0
  197. package/dist/src/visual/config/Number.js +36 -0
  198. package/dist/src/visual/config/Object.js +167 -0
  199. package/dist/src/visual/config/Operate.js +1108 -0
  200. package/dist/src/visual/config/OperateItem.js +1185 -0
  201. package/dist/src/visual/config/Options.js +7 -0
  202. package/dist/src/visual/config/Options.vue.js +278 -0
  203. package/dist/src/visual/config/OrderField.js +504 -0
  204. package/dist/src/visual/config/Page.js +75 -0
  205. package/dist/src/visual/config/Params.js +352 -0
  206. package/dist/src/visual/config/Radio.js +126 -0
  207. package/dist/src/visual/config/Row.js +103 -0
  208. package/dist/src/visual/config/Scope.js +349 -0
  209. package/dist/src/visual/config/Select.js +94 -0
  210. package/dist/src/visual/config/Switch.js +36 -0
  211. package/dist/src/visual/config/Textarea.js +174 -0
  212. package/dist/src/visual/config/Textarea.vue.js +507 -0
  213. package/dist/src/visual/config/Tree.js +137 -0
  214. package/dist/src/visual/config/remote-cache.js +29 -0
  215. package/dist/src/visual/config/show-condition.js +19 -0
  216. package/dist/src/visual/config/variable-sources.js +26 -0
  217. package/dist/src/visual/config/wait-ref.js +18 -0
  218. package/dist/src/visual/config-page/ComponentLibrary.js +169 -0
  219. package/dist/src/visual/config-page/ComponentLibraryDialog.js +249 -0
  220. package/dist/src/visual/config-page/ComponentList.js +8 -0
  221. package/dist/src/visual/config-page/ComponentList.vue.js +292 -0
  222. package/dist/src/visual/config-page/ComponentPreview.js +7 -0
  223. package/dist/src/visual/config-page/ComponentPreview.vue.js +151 -0
  224. package/dist/src/visual/config-page/ConfigOption.js +12 -0
  225. package/dist/src/visual/config-page/ConfigPanel.js +301 -0
  226. package/dist/src/visual/config-page/Dashboard.js +2159 -0
  227. package/dist/src/visual/config-page/DashboardDesign.js +605 -0
  228. package/dist/src/visual/config-page/DashboardGlobalConfig.js +5 -0
  229. package/dist/src/visual/config-page/DashboardGlobalConfig.vue.js +292 -0
  230. package/dist/src/visual/config-page/DashboardMobile.js +1114 -0
  231. package/dist/src/visual/config-page/DashboardSetting.js +85 -0
  232. package/dist/src/visual/config-page/PagePreview.js +7 -0
  233. package/dist/src/visual/config-page/PagePreview.vue.js +72 -0
  234. package/dist/src/visual/config-page/StyleConfig.js +978 -0
  235. package/dist/src/visual/config-page/VisualConfigPage.js +644 -0
  236. package/dist/src/visual/config-page/dashboard-theme-setting/Background.js +179 -0
  237. package/dist/src/visual/config-page/dashboard-theme-setting/Border.js +313 -0
  238. package/dist/src/visual/config-page/dashboard-theme-setting/Font.js +191 -0
  239. package/dist/src/visual/config-page/dashboard-theme-setting/Index.js +544 -0
  240. package/dist/src/visual/config-page/dashboard-theme-setting/Shadow.js +173 -0
  241. package/dist/src/visual/config-page/index.js +89 -0
  242. package/dist/src/visual/index.js +150 -0
  243. package/dist/src/visual/mixins/innerGridMixin.js +121 -0
  244. package/dist/src/visual/search/Filter.js +48 -0
  245. package/dist/src/visual/step/Index.js +7 -0
  246. package/dist/src/visual/step/Index.vue.js +485 -0
  247. package/dist/src/visual/step/Item.js +138 -0
  248. package/dist/src/visual/widgets/CardFormItemVisual.js +44 -0
  249. package/dist/src/visual/widgets/CarouselVisual.js +7 -0
  250. package/dist/src/visual/widgets/CarouselVisual.vue.js +303 -0
  251. package/dist/src/visual/widgets/CollapseVisual.js +7 -0
  252. package/dist/src/visual/widgets/CollapseVisual.vue.js +202 -0
  253. package/dist/src/visual/widgets/DropdownVisual.js +7 -0
  254. package/dist/src/visual/widgets/DropdownVisual.vue.js +955 -0
  255. package/dist/src/visual/widgets/LayoutConfig.js +7 -0
  256. package/dist/src/visual/widgets/LayoutConfig.vue.js +168 -0
  257. package/dist/src/visual/widgets/ListVisual.js +348 -0
  258. package/dist/src/visual/widgets/MEntityListFindVisual.js +75 -0
  259. package/dist/src/visual/widgets/ProcessFormItemVisual.js +4 -0
  260. package/dist/src/visual/widgets/ProcessFormItemVisual.vue.js +45 -0
  261. package/dist/src/visual/widgets/TabsConfig.js +7 -0
  262. package/dist/src/visual/widgets/TabsConfig.vue.js +343 -0
  263. package/dist/style.css +9907 -0
  264. package/package.json +103 -3
  265. package/src/index.js +27 -0
  266. package/src/page-designer/PageConfigPreview.vue +103 -0
  267. package/src/page-designer/PageDesigner.vue +1017 -0
  268. package/src/page-designer/designer.js +1299 -0
  269. package/src/page-designer/index.js +38 -0
  270. package/src/page-designer/mixins/dragSourceMixin.js +113 -0
  271. package/src/page-designer/page-variable-panel/JsonEditor.vue +109 -0
  272. package/src/page-designer/page-variable-panel/PageVariablePanel.vue +781 -0
  273. package/src/page-designer/page-variable-panel/index.js +6 -0
  274. package/src/page-designer/page-variable-panel/jsonlint.js +2 -0
  275. package/src/page-designer/previews/add-form/Preview.vue +331 -0
  276. package/src/page-designer/previews/add-form-item/Preview.vue +167 -0
  277. package/src/page-designer/previews/button/Preview.vue +27 -0
  278. package/src/page-designer/previews/card/Preview.vue +78 -0
  279. package/src/page-designer/previews/carousel/CarouselItemPreview.vue +32 -0
  280. package/src/page-designer/previews/carousel/Preview.vue +36 -0
  281. package/src/page-designer/previews/collapse/CollapseItemPreview.vue +136 -0
  282. package/src/page-designer/previews/collapse/Preview.vue +28 -0
  283. package/src/page-designer/previews/dropdown/Preview.vue +21 -0
  284. package/src/page-designer/previews/entity-list/Preview.vue +382 -0
  285. package/src/page-designer/previews/entity-sub-list/Preview.vue +283 -0
  286. package/src/page-designer/previews/entity-virtual-list/Preview.vue +14 -0
  287. package/src/page-designer/previews/form-field/preview/Checkbox.vue +57 -0
  288. package/src/page-designer/previews/form-field/preview/Date.vue +56 -0
  289. package/src/page-designer/previews/form-field/preview/Input.vue +53 -0
  290. package/src/page-designer/previews/form-field/preview/InputNumber.vue +53 -0
  291. package/src/page-designer/previews/form-field/preview/Object.vue +53 -0
  292. package/src/page-designer/previews/form-field/preview/Radio.vue +69 -0
  293. package/src/page-designer/previews/form-field/preview/Select.vue +55 -0
  294. package/src/page-designer/previews/form-field/preview/Textarea.vue +57 -0
  295. package/src/page-designer/previews/grid/Preview.vue +156 -0
  296. package/src/page-designer/previews/html/Preview.vue +11 -0
  297. package/src/page-designer/previews/icon/Preview.vue +12 -0
  298. package/src/page-designer/previews/image/Preview.vue +37 -0
  299. package/src/page-designer/previews/index.js +74 -0
  300. package/src/page-designer/previews/layout/ColumnPreview.vue +89 -0
  301. package/src/page-designer/previews/layout/Preview.vue +96 -0
  302. package/src/page-designer/previews/num/Preview.vue +100 -0
  303. package/src/page-designer/previews/page-tabs/Preview.vue +53 -0
  304. package/src/page-designer/previews/step/Preview.vue +190 -0
  305. package/src/page-designer/previews/tabs/Preview.vue +66 -0
  306. package/src/page-designer/previews/tabs/tab-pane/Preview.vue +32 -0
  307. package/src/page-designer/previews/text/Preview.vue +26 -0
  308. package/src/page-designer/previews/text-editor/Preview.vue +14 -0
  309. package/src/page-designer/previews/video/Preview.vue +9 -0
  310. package/src/page-designer/setting-panel/Advance.vue +175 -0
  311. package/src/page-designer/setting-panel/CodeEditor.vue +88 -0
  312. package/src/page-designer/setting-panel/Property.vue +163 -0
  313. package/src/page-designer/setting-panel/Setting.vue +271 -0
  314. package/src/page-designer/setting-panel/Style.vue +1096 -0
  315. package/src/page-designer/setting-panel/css-editor/CssEditor.vue +93 -0
  316. package/src/page-designer/setting-panel/css-editor/css-hint.js +58 -0
  317. package/src/page-designer/setting-panel/index.js +10 -0
  318. package/src/page-designer/template-attribute-panel/TemplateAttributePanel.vue +383 -0
  319. package/src/page-designer/template-attribute-panel/index.js +2 -0
  320. package/src/page-designer/template-library/Library.vue +153 -0
  321. package/src/page-designer/template-library/index.js +4 -0
  322. package/src/page-designer/widget-library/Base.vue +156 -0
  323. package/src/page-designer/widget-library/Library.vue +282 -0
  324. package/src/page-designer/widget-library/index.js +6 -0
  325. package/src/page-designer/widget-preview/Container.vue +89 -0
  326. package/src/page-designer/widget-preview/DragGhost.vue +83 -0
  327. package/src/page-designer/widget-preview/DropZoneOverlay.vue +51 -0
  328. package/src/page-designer/widget-preview/HoverOverlay.vue +85 -0
  329. package/src/page-designer/widget-preview/Mixin.js +285 -0
  330. package/src/page-designer/widget-preview/Placeholder.vue +22 -0
  331. package/src/page-designer/widget-preview/Preview.vue +322 -0
  332. package/src/page-designer/widget-preview/PreviewItem.vue +162 -0
  333. package/src/page-designer/widget-preview/SelectedOverlay.vue +340 -0
  334. package/src/page-designer/widget-preview/Template.vue +77 -0
  335. package/src/page-designer/widget-preview/WidgetWrapper.vue +197 -0
  336. package/src/page-designer/widget-preview/directive.js +258 -0
  337. package/src/page-designer/widget-preview/dropPosition.js +51 -0
  338. package/src/page-designer/widget-preview/index.js +23 -0
  339. package/src/page-designer/widget-preview/overlayPositionMixin.js +88 -0
  340. package/src/page-designer/widget-preview/resolvePreviewName.js +33 -0
  341. package/src/page-designer/widget-tree/Item.vue +719 -0
  342. package/src/page-designer/widget-tree/Tree.vue +995 -0
  343. package/src/page-designer/widget-tree/index.js +6 -0
  344. package/src/visual/AddForm.vue +172 -0
  345. package/src/visual/AddFormItem.vue +482 -0
  346. package/src/visual/AppIndex.vue +245 -0
  347. package/src/visual/ApplyForm.vue +140 -0
  348. package/src/visual/AttributeList.vue +344 -0
  349. package/src/visual/BasePage.vue +76 -0
  350. package/src/visual/Button.vue +80 -0
  351. package/src/visual/CardNum.vue +73 -0
  352. package/src/visual/CategoryList.vue +563 -0
  353. package/src/visual/Chart.vue +29 -0
  354. package/src/visual/ChartNew.vue +49 -0
  355. package/src/visual/CheckForm.vue +106 -0
  356. package/src/visual/ClientList.vue +42 -0
  357. package/src/visual/CodeManage.vue +116 -0
  358. package/src/visual/Component.vue +1342 -0
  359. package/src/visual/ComponentList.vue +280 -0
  360. package/src/visual/Config.vue +881 -0
  361. package/src/visual/ConfigItem.vue +218 -0
  362. package/src/visual/ConfigSelectItems.vue +445 -0
  363. package/src/visual/CreatePage.vue +389 -0
  364. package/src/visual/DashboardDiv.vue +197 -0
  365. package/src/visual/DashboardTabs.vue +118 -0
  366. package/src/visual/DashboardWidget.vue +55 -0
  367. package/src/visual/DblogList.vue +84 -0
  368. package/src/visual/EntityAddPage.vue +52 -0
  369. package/src/visual/EntityApplyPage.vue +57 -0
  370. package/src/visual/EntityCardList.vue +449 -0
  371. package/src/visual/EntityCheckPage.vue +69 -0
  372. package/src/visual/EntityFindPage.vue +55 -0
  373. package/src/visual/EntityList.vue +838 -0
  374. package/src/visual/EntityListPage.vue +97 -0
  375. package/src/visual/EntityNoSubmitSubList.vue +273 -0
  376. package/src/visual/EntityRightSubList.vue +32 -0
  377. package/src/visual/EntitySubAdd.vue +11 -0
  378. package/src/visual/EntitySubGridItem.vue +67 -0
  379. package/src/visual/EntitySubList.vue +440 -0
  380. package/src/visual/EntityTreeFindPage.vue +36 -0
  381. package/src/visual/EntityTreeManage.vue +50 -0
  382. package/src/visual/EntityTreePage.vue +45 -0
  383. package/src/visual/ExcelPreview.vue +11 -0
  384. package/src/visual/FormField.vue +113 -0
  385. package/src/visual/HeaderNew.vue +176 -0
  386. package/src/visual/Html.vue +104 -0
  387. package/src/visual/Import.vue +55 -0
  388. package/src/visual/InterfaceSubList.vue +23 -0
  389. package/src/visual/ListFirst.vue +614 -0
  390. package/src/visual/MEntityAddPage.vue +71 -0
  391. package/src/visual/MEntityList.vue +488 -0
  392. package/src/visual/MEntityListPage.vue +46 -0
  393. package/src/visual/MEntitySubList.vue +237 -0
  394. package/src/visual/MetaList.vue +24 -0
  395. package/src/visual/ModuleIndexPage.vue +70 -0
  396. package/src/visual/ModuleList.vue +46 -0
  397. package/src/visual/NavAddForm.vue +177 -0
  398. package/src/visual/NavFormCatalogItem.vue +47 -0
  399. package/src/visual/NumItem.vue +69 -0
  400. package/src/visual/NumStatistic.vue +242 -0
  401. package/src/visual/OrgChart.vue +113 -0
  402. package/src/visual/PageCatalog.vue +26 -0
  403. package/src/visual/PageConfig.vue +278 -0
  404. package/src/visual/PageTabs.vue +55 -0
  405. package/src/visual/Progress.vue +39 -0
  406. package/src/visual/ProgressItem.vue +43 -0
  407. package/src/visual/SystemManager.vue +80 -0
  408. package/src/visual/Title.vue +44 -0
  409. package/src/visual/TodoList.vue +18 -0
  410. package/src/visual/UserFormItem.vue +49 -0
  411. package/src/visual/UserManage.vue +36 -0
  412. package/src/visual/chart/CircularPie.vue +7 -0
  413. package/src/visual/chart/Column.vue +73 -0
  414. package/src/visual/chart/HoriColumn.vue +7 -0
  415. package/src/visual/chart/Line.vue +7 -0
  416. package/src/visual/chart/Pie.vue +7 -0
  417. package/src/visual/config/Background.vue +398 -0
  418. package/src/visual/config/Chart.vue +139 -0
  419. package/src/visual/config/Checkbox.vue +64 -0
  420. package/src/visual/config/Color.vue +40 -0
  421. package/src/visual/config/DesignReport.vue +20 -0
  422. package/src/visual/config/Event.vue +220 -0
  423. package/src/visual/config/Field.vue +597 -0
  424. package/src/visual/config/Font.vue +149 -0
  425. package/src/visual/config/FormItem.vue +25 -0
  426. package/src/visual/config/Function.vue +78 -0
  427. package/src/visual/config/Html.vue +98 -0
  428. package/src/visual/config/Image.vue +132 -0
  429. package/src/visual/config/Input.vue +712 -0
  430. package/src/visual/config/LazyDialog.vue +44 -0
  431. package/src/visual/config/List.vue +68 -0
  432. package/src/visual/config/ListField.vue +1714 -0
  433. package/src/visual/config/MField.vue +601 -0
  434. package/src/visual/config/Number.vue +41 -0
  435. package/src/visual/config/Object.vue +177 -0
  436. package/src/visual/config/Operate.vue +1083 -0
  437. package/src/visual/config/OperateItem.vue +917 -0
  438. package/src/visual/config/Options.vue +330 -0
  439. package/src/visual/config/OrderField.vue +587 -0
  440. package/src/visual/config/Page.vue +45 -0
  441. package/src/visual/config/Params.vue +228 -0
  442. package/src/visual/config/Radio.vue +93 -0
  443. package/src/visual/config/Row.vue +78 -0
  444. package/src/visual/config/Scope.vue +363 -0
  445. package/src/visual/config/Select.vue +93 -0
  446. package/src/visual/config/Switch.vue +36 -0
  447. package/src/visual/config/Textarea.vue +754 -0
  448. package/src/visual/config/Tree.vue +135 -0
  449. package/src/visual/config/remote-cache.js +35 -0
  450. package/src/visual/config/show-condition.js +21 -0
  451. package/src/visual/config/variable-sources.js +27 -0
  452. package/src/visual/config/wait-ref.js +17 -0
  453. package/src/visual/config-page/ComponentLibrary.vue +220 -0
  454. package/src/visual/config-page/ComponentLibraryDialog.vue +262 -0
  455. package/src/visual/config-page/ComponentList.vue +580 -0
  456. package/src/visual/config-page/ComponentPreview.vue +206 -0
  457. package/src/visual/config-page/ConfigOption.vue +16 -0
  458. package/src/visual/config-page/ConfigPanel.vue +301 -0
  459. package/src/visual/config-page/Dashboard.vue +2331 -0
  460. package/src/visual/config-page/DashboardDesign.vue +656 -0
  461. package/src/visual/config-page/DashboardGlobalConfig.vue +158 -0
  462. package/src/visual/config-page/DashboardMobile.vue +1118 -0
  463. package/src/visual/config-page/DashboardSetting.vue +47 -0
  464. package/src/visual/config-page/PagePreview.vue +105 -0
  465. package/src/visual/config-page/StyleConfig.vue +656 -0
  466. package/src/visual/config-page/VisualConfigPage.vue +746 -0
  467. package/src/visual/config-page/dashboard-theme-setting/Background.vue +98 -0
  468. package/src/visual/config-page/dashboard-theme-setting/Border.vue +185 -0
  469. package/src/visual/config-page/dashboard-theme-setting/Font.vue +101 -0
  470. package/src/visual/config-page/dashboard-theme-setting/Index.vue +471 -0
  471. package/src/visual/config-page/dashboard-theme-setting/Shadow.vue +102 -0
  472. package/src/visual/config-page/index.js +93 -0
  473. package/src/visual/index.js +23 -0
  474. package/src/visual/mixins/innerGridMixin.js +128 -0
  475. package/src/visual/search/Filter.vue +50 -0
  476. package/src/visual/step/Index.vue +361 -0
  477. package/src/visual/step/Item.vue +140 -0
  478. package/src/visual/widgets/CardFormItemVisual.vue +46 -0
  479. package/src/visual/widgets/CarouselVisual.vue +291 -0
  480. package/src/visual/widgets/CollapseVisual.vue +203 -0
  481. package/src/visual/widgets/DropdownVisual.vue +541 -0
  482. package/src/visual/widgets/LayoutConfig.vue +186 -0
  483. package/src/visual/widgets/ListVisual.vue +349 -0
  484. package/src/visual/widgets/MEntityListFindVisual.vue +77 -0
  485. package/src/visual/widgets/ProcessFormItemVisual.vue +58 -0
  486. package/src/visual/widgets/TabsConfig.vue +266 -0
  487. package/types/index.d.ts +22 -0
  488. package/types/page-designer.d.ts +3 -0
  489. package/types/visual-component.d.ts +1 -0
  490. package/types/visual-entity-list.d.ts +1 -0
  491. package/types/visual-entity-sub-list.d.ts +1 -0
@@ -0,0 +1,2159 @@
1
+ import { __vitePreload as __epxPackagePreload } from "../../../_virtual/preload-helper.js";
2
+ import __cjsReq0 from "../../assets/images/dashboard/theme_white.png.js";
3
+ import __cjsReq1 from "../../assets/images/dashboard/theme_black.png.js";
4
+ import __cjsReq2 from "../../assets/images/dashboard/theme_technology.png.js";
5
+ import DashboardThemeSetting from "./dashboard-theme-setting/Index.js";
6
+ import { selectableChartTypes } from "@epxing/utils/src/chart-registry";
7
+ import DashboardMobile from "./DashboardMobile.js";
8
+ import DashboardPreview from "@epxing/dashboard/src/Dashboard.vue";
9
+ import { DEFAULT_DASHBOARD_THEME, removeDashboardItem, createDashboardConfig, getDashboardDesignTarget } from "@epxing/dashboard/src/design-target";
10
+ import { indexDashboardItems } from "@epxing/dashboard/src/mobile-design";
11
+ import { mapGetters, mapState } from "vuex";
12
+ import { stripDashboardConfig, mergeGridConfigs, rescaleItemsToColNum, normalizeDashboardConfig, CONFIG_VERSION } from "@epxing/dashboard/src/grid/model";
13
+ import { resolveComponent, resolveDirective, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, createBlock, withCtx, createTextVNode, createCommentVNode, Fragment, renderList, createVNode, withModifiers, withDirectives, vShow, resolveDynamicComponent, normalizeStyle } from "vue";
14
+ /* empty css */
15
+ import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.js";
16
+ function ensureGridItemKey(items) {
17
+ if (!Array.isArray(items)) return items;
18
+ items.forEach((item) => {
19
+ if (item && typeof item === "object") {
20
+ if (item.contentType && item.i == null && item.id != null) item.i = item.id;
21
+ if (Array.isArray(item.items)) ensureGridItemKey(item.items);
22
+ }
23
+ });
24
+ return items;
25
+ }
26
+ const _sfc_main = {
27
+ name: "epx-visual-config-dashboard",
28
+ $componentType: "component",
29
+ components: {
30
+ DashboardThemeSetting,
31
+ DashboardMobile,
32
+ DashboardPreview
33
+ },
34
+ navConfigs: {
35
+ flag: false
36
+ },
37
+ provide() {
38
+ const { id } = this.$query;
39
+ return {
40
+ pageMetaId: this.currentMetaId,
41
+ pageId: id,
42
+ pageConfigs: this.page_config,
43
+ getAllComponentList: () => this.componentList,
44
+ getItemConfigs: () => this.allComponentConfigs,
45
+ // 当前 items 树(含容器子项):属性面板「布局」分组按 id 找真实 item 读初值
46
+ getComponentItems: () => this.selectComponentList,
47
+ getDefaultContainerItems: () => this.defaultContainerItems,
48
+ setContainerDefaultItems: this.setContainerDefaultItems,
49
+ changeItemConfigs: this.changeItemConfigs,
50
+ getPageMetaId: () => {
51
+ return this.currentMetaId;
52
+ }
53
+ };
54
+ },
55
+ props: {
56
+ newWindow: Boolean
57
+ },
58
+ data() {
59
+ return {
60
+ // 页面配置版本:加载时经 normalizeDashboardConfig 升到 v3(补 grid / 容器 grid),保存时写回;这是 '3.0' 唯一的写入点
61
+ version: CONFIG_VERSION,
62
+ configReady: false,
63
+ chooseDesignTarget: false,
64
+ choosingDesignTarget: false,
65
+ mobileDirty: false,
66
+ mobileSaving: false,
67
+ mobileRevision: 0,
68
+ mobileAddParent: null,
69
+ mobilePreviewVisible: false,
70
+ previewSuspended: false,
71
+ previewPopupTimer: null,
72
+ previewViewportWidth: window.innerWidth,
73
+ previewViewportHeight: window.innerHeight,
74
+ styleType: "presets",
75
+ componentList: [],
76
+ selectComponentList: [],
77
+ selectComponent: null,
78
+ showPanel: "componentLibrary",
79
+ pageGlobalConfigs: {},
80
+ allComponentConfigs: {},
81
+ pageMetaId: null,
82
+ upCompId: null,
83
+ relationList: [],
84
+ pageParams: [],
85
+ scopeConfigs: {},
86
+ addReportDialog: false,
87
+ addComponentDialog: false,
88
+ copyComponentDialog: false,
89
+ pageSettingDrawer: false,
90
+ activeTheme: DEFAULT_DASHBOARD_THEME,
91
+ themeStyles: null,
92
+ themeMobilePreview: false,
93
+ // 主题面板处于"移动端"编辑态:设计器加 .is-mobile-preview 预览移动端覆盖
94
+ themeList: [
95
+ { key: "light", name: "经典白", preview: __cjsReq0 },
96
+ { key: "dark", name: "经典黑", preview: __cjsReq1 },
97
+ { key: "technology", name: "科幻大屏", preview: __cjsReq2 }
98
+ ],
99
+ reportList: [],
100
+ selectedReportList: [],
101
+ currentReportPage: 1,
102
+ reportTotal: 0,
103
+ dashboardList: [],
104
+ selectedDashboardCompList: [],
105
+ currentDashboardPage: 1,
106
+ dashboardTotal: 0,
107
+ foldDashboardMap: {},
108
+ reportIconMap: {
109
+ 1: "epx-icon-tongjibiao",
110
+ pie: "epx-icon-bingzhuangtu",
111
+ line: "epx-icon-zhexiantu",
112
+ column: "epx-icon-zhuzhuangtu",
113
+ funnel: "epx-icon-loudoutu"
114
+ },
115
+ selectedReportDataList: [],
116
+ selectedDashboardCompDataList: [],
117
+ reportScopeParams: [],
118
+ dashboardScopeParams: [],
119
+ reportLoading: true,
120
+ dashboardLoading: true,
121
+ addReportForm: {},
122
+ reportTypeList: [
123
+ ...selectableChartTypes.map(({ type, text, icon }) => ({ icon, text, type: type === "table" ? "1" : "2", chartType: type === "table" ? "" : type })),
124
+ { icon: "epx-icon-a-numbercard", text: "数字统计", type: "numStatistic" },
125
+ { icon: "epx-icon-dianzibiaodan", text: "电子表单", type: "form" },
126
+ { icon: "epx-icon-biaoti", text: "标题", type: "dashboardTitle" },
127
+ { icon: "epx-icon-container", text: "容器", type: "dashboardDiv" }
128
+ ],
129
+ reportMap: {},
130
+ saveThemeDialog: false,
131
+ themeFormData: {},
132
+ editTheme: null
133
+ };
134
+ },
135
+ computed: {
136
+ isMobileDashboard() {
137
+ return getDashboardDesignTarget(this.pageGlobalConfigs) === "mobile";
138
+ },
139
+ mobileCanvasWidth() {
140
+ return Number(this.pageGlobalConfigs.mobileCanvasWidth) || 375;
141
+ },
142
+ mobilePreviewPhoneHeight() {
143
+ return Math.round(this.mobileCanvasWidth * 812 / 375) + 12;
144
+ },
145
+ mobilePreviewScale() {
146
+ return Math.max(0.1, Math.min(1, (this.previewViewportWidth - 80) / (this.mobileCanvasWidth + 12), (this.previewViewportHeight - 160) / this.mobilePreviewPhoneHeight));
147
+ },
148
+ mobileDesignSource() {
149
+ return { componentList: this.selectComponentList, itemConfigs: this.allComponentConfigs, globalConfigs: this.pageGlobalConfigs, theme: this.activeTheme, themeStyles: this.themeStyles };
150
+ },
151
+ ...mapState({
152
+ showMenu: (state) => state.config.showMenu,
153
+ showAppNav: (state) => state.config.showAppNav
154
+ }),
155
+ ...mapGetters([
156
+ "getMeta",
157
+ "getPageById"
158
+ ]),
159
+ $meta() {
160
+ if (this.$metaId) {
161
+ const meta = this.getMeta(this.$metaId);
162
+ return meta;
163
+ } else {
164
+ return null;
165
+ }
166
+ },
167
+ $metaKey() {
168
+ if (this.$meta) {
169
+ return this.$meta.getKey() || "ID";
170
+ } else {
171
+ return "ID";
172
+ }
173
+ },
174
+ currentPage() {
175
+ const page = this.getPageById(this.$query.id);
176
+ return page || {};
177
+ },
178
+ currentMetaId() {
179
+ return this.$query.entityId || this.pageMetaId;
180
+ },
181
+ currentMeta() {
182
+ return this.metas[this.currentMetaId] || null;
183
+ },
184
+ page_config() {
185
+ const { config = "{}" } = this.$query;
186
+ if (typeof config === "string") {
187
+ try {
188
+ return eval("(" + config + ")");
189
+ } catch (error) {
190
+ return {};
191
+ }
192
+ }
193
+ return config;
194
+ },
195
+ pageComponentConfigs() {
196
+ const configs = { ...this.pageGlobalConfigs };
197
+ if (configs.title) {
198
+ configs.componentName = configs.title;
199
+ }
200
+ return configs;
201
+ },
202
+ title() {
203
+ const { title } = this.pageGlobalConfigs;
204
+ return title || this.currentPage.title || this.$query.title;
205
+ },
206
+ isDashboardSelectAll() {
207
+ return (dashboard) => {
208
+ return dashboard.children.every((item) => this.selectedDashboardCompList.includes(dashboard.ID + "-" + item.id));
209
+ };
210
+ },
211
+ isDashboardSelect() {
212
+ return (dashboard) => {
213
+ return !dashboard.children.every((item) => this.selectedDashboardCompList.includes(dashboard.ID + "-" + item.id)) && dashboard.children.some((item) => this.selectedDashboardCompList.includes(dashboard.ID + "-" + item.id));
214
+ };
215
+ },
216
+ compTitle() {
217
+ return (comp) => {
218
+ if (comp.contentType === "report-chart") {
219
+ const report = this.reportMap[comp.configs.id] || {};
220
+ return report.NAME || comp.title;
221
+ }
222
+ return comp.title;
223
+ };
224
+ },
225
+ compIcon() {
226
+ return (comp) => {
227
+ if (comp.contentType === "report-chart") {
228
+ const report = this.reportMap[comp.configs.id] || {};
229
+ return this.reportIconMap[report.CHART_TYPE || report.TYPE] || "epx-icon-component";
230
+ }
231
+ return "epx-icon-component";
232
+ };
233
+ },
234
+ showConfigPanel: {
235
+ get() {
236
+ return !!this.selectComponent;
237
+ },
238
+ set() {
239
+ this.selectComponent = null;
240
+ }
241
+ },
242
+ themeFields() {
243
+ return this.$route.params.system === "epxing-frame" ? ["CODE", "NAME", "THUMBNAIL", "SCOPE"] : ["CODE", "NAME", "THUMBNAIL"];
244
+ }
245
+ },
246
+ methods: {
247
+ async selectDesignTarget(target) {
248
+ var _a, _b;
249
+ if (this.choosingDesignTarget || this.selectComponentList.length) return;
250
+ this.choosingDesignTarget = true;
251
+ if (this.timer) {
252
+ clearTimeout(this.timer);
253
+ this.timer = null;
254
+ }
255
+ const previous = this.pageGlobalConfigs;
256
+ try {
257
+ const firstChoice = !["pc", "mobile"].includes((_b = (_a = this.currentPage) == null ? void 0 : _a.config) == null ? void 0 : _b.designTarget);
258
+ const grid = firstChoice ? { ...previous.grid, colNum: 24 } : previous.grid;
259
+ const configs = createDashboardConfig({ ...previous, grid, items: [] }, target);
260
+ delete configs.items;
261
+ if (target === "pc" && previous.designTarget === "mobile") {
262
+ configs.grid = { ...normalizeDashboardConfig({}).grid, colNum: 24 };
263
+ configs.autoHeight = configs.grid.rowHeight === "auto";
264
+ }
265
+ this.pageGlobalConfigs = mergeGridConfigs(configs).configs;
266
+ await this.$nextTick();
267
+ if (await this.saveConfigs() !== true) {
268
+ this.pageGlobalConfigs = previous;
269
+ return;
270
+ }
271
+ this.$store.commit("DELETE_PAGE", { pageId: this.$query.id });
272
+ this.mobileDirty = false;
273
+ this.chooseDesignTarget = false;
274
+ } catch (e) {
275
+ this.pageGlobalConfigs = previous;
276
+ this.$message.error(e.message || "保存设计端失败,请重试");
277
+ } finally {
278
+ await this.$nextTick();
279
+ this.choosingDesignTarget = false;
280
+ }
281
+ },
282
+ addMobileInto(item) {
283
+ this.mobileAddParent = item.id;
284
+ this.addComponentDialog = true;
285
+ },
286
+ selectMobileItem(item, tab) {
287
+ if (!item) return;
288
+ const info = this.componentList.find((component) => component.CODE === item.contentType) || { CODE: item.contentType };
289
+ const configs = { ...item, ...item.configs, ...this.allComponentConfigs[item.id] };
290
+ this.clickComponent(item.id, info, configs, void 0, tab);
291
+ },
292
+ editMobileData(item) {
293
+ this.selectMobileItem(item);
294
+ const configs = { ...item.configs, ...this.allComponentConfigs[item.id] };
295
+ const callback = () => {
296
+ const owner = this.selectComponentList.find((root) => indexDashboardItems([root]).has(String(item.id))) || item;
297
+ this.$refs.dashboardDesign.reloadComponent[owner.id] = true;
298
+ this.$nextTick(() => {
299
+ this.$refs.dashboardDesign.reloadComponent[owner.id] = false;
300
+ });
301
+ };
302
+ if (item.contentType === "report-chart") {
303
+ this.goPage({ openMode: "2", component: "report-design", params: { defaultFullscreen: true, withHeader: false, id: configs.id, callback } });
304
+ return;
305
+ }
306
+ if (item.contentType === "report-html") {
307
+ if (!configs.id) return;
308
+ return this.$http.get({ entityId: "FM_FORM", id: configs.id }).then((result) => this.goPage({ component: result.data.TYPE === "excelReport" ? "excel-design" : "form-design", metaId: "FM_FORM", params: { id: configs.id, callback } })).catch((e) => this.$message.error(e.message || "打开报表设计失败"));
309
+ }
310
+ if (item.contentType !== "chart") return;
311
+ this.$createPage({
312
+ metaId: "FM_REPORT_BASE",
313
+ openType: "2",
314
+ defaultFullscreen: true,
315
+ withHeader: false,
316
+ component: "chart-design",
317
+ chartConfigs: configs,
318
+ setChartConfig: (configs2) => {
319
+ this.changeItemConfigs(item.id, this.$_.cloneDeep(configs2), null, "cover");
320
+ callback();
321
+ }
322
+ });
323
+ },
324
+ async deleteMobileItem(item) {
325
+ try {
326
+ await this.$confirm("删除该组件及其内部组件?", "删除组件", { type: "warning" });
327
+ } catch (e) {
328
+ return;
329
+ }
330
+ removeDashboardItem(this.selectComponentList, item.id, this.allComponentConfigs);
331
+ this.selectComponent = null;
332
+ this.$refs.dashboardDesign.selectComponent = null;
333
+ },
334
+ async saveMobileDashboard() {
335
+ if (this.mobileSaving) return false;
336
+ this.mobileSaving = true;
337
+ const revision = this.mobileRevision;
338
+ try {
339
+ const saved = await this.saveConfigs();
340
+ if (saved) {
341
+ if (revision === this.mobileRevision) this.mobileDirty = false;
342
+ this.$store.commit("DELETE_PAGE", { pageId: this.$query.id });
343
+ this.$message.success("移动端看板已保存");
344
+ }
345
+ return saved;
346
+ } catch (e) {
347
+ this.$message.error(e.message || "保存移动端看板失败");
348
+ return false;
349
+ } finally {
350
+ this.mobileSaving = false;
351
+ }
352
+ },
353
+ warnUnsavedMobile(event) {
354
+ if (this.isMobileDashboard && this.mobileDirty) {
355
+ event.preventDefault();
356
+ event.returnValue = "";
357
+ }
358
+ },
359
+ async confirmLeaveMobile() {
360
+ if (!this.isMobileDashboard || !this.mobileDirty) return true;
361
+ try {
362
+ await this.$confirm("移动端看板有未保存的修改,是否离开?", "未保存修改", { confirmButtonText: "离开", cancelButtonText: "继续设计", type: "warning", customClass: "dashboard-leave-confirm", closeOnClickModal: false });
363
+ return true;
364
+ } catch (e) {
365
+ return false;
366
+ }
367
+ },
368
+ $refesh() {
369
+ if (this.$refs.dashboardDesign) this.$refs.dashboardDesign.$refesh();
370
+ },
371
+ getPageInfo() {
372
+ return this.getPageId().then((page) => {
373
+ const { metaId } = page;
374
+ if (metaId) this.pageMetaId = metaId;
375
+ this.getMetaId().then(() => {
376
+ this.getDefaultConfig();
377
+ this.getThemeList().then(() => {
378
+ this.getConfigThemeStyles();
379
+ });
380
+ this.loadConfig = true;
381
+ });
382
+ return page;
383
+ });
384
+ },
385
+ getPageId() {
386
+ if (!this.$query.id || !this.$_.isEmpty(this.currentPage)) {
387
+ return Promise.resolve(this.currentPage);
388
+ }
389
+ return this.$store.dispatch({
390
+ type: "ADD_PAGE",
391
+ pageId: this.$query.id
392
+ });
393
+ },
394
+ getMetaId() {
395
+ if (!this.currentMetaId || this.currentMeta) {
396
+ return Promise.resolve(this.currentMeta);
397
+ } else {
398
+ return this.$store.dispatch({
399
+ type: "ADD_META",
400
+ metaId: this.currentMetaId
401
+ });
402
+ }
403
+ },
404
+ getComponetName(component) {
405
+ if (component && component.PATH) {
406
+ let project = "frame";
407
+ let pathName = "";
408
+ const pagePath = component.PATH;
409
+ const rootMatch = pagePath.match(/^@\/\w+\//);
410
+ if (rootMatch) {
411
+ project = rootMatch[0].replace(/[@|/]/g, "");
412
+ pathName = pagePath.split(rootMatch)[1].replace(".vue", "");
413
+ }
414
+ const componentPath = pathName.replace("views/", "").replace("components/", "").replace("packages/", "").replace(/\//g, "-").replace(/(\w)([A-Z])/g, "$1-$2").toLowerCase();
415
+ const componentName = (project === "frame" ? "" : project + "-") + componentPath;
416
+ return componentName;
417
+ }
418
+ return null;
419
+ },
420
+ getVisualComponent(component) {
421
+ if (component && component.VISUAL_CONFIG_PATH) {
422
+ let pathName = "";
423
+ const pagePath = component.VISUAL_CONFIG_PATH;
424
+ const rootMatch = pagePath.match(/^@\/(frame\/|product\/|project\/)?/);
425
+ if (rootMatch) {
426
+ pathName = pagePath.split(rootMatch[0])[1].replace(".vue", "");
427
+ }
428
+ const componentPath = pathName.replace("views/", "").replace("components/", "").replace("packages/", "").replace(/\//g, "-").replace(/(\w)([A-Z])/g, "$1-$2").toLowerCase();
429
+ const componentName = componentPath;
430
+ return componentName;
431
+ }
432
+ return null;
433
+ },
434
+ getComponentList() {
435
+ this.$http.list({
436
+ entityId: "FM_PAGE",
437
+ "scope.TYPE": "01",
438
+ order_field: "ORDER_NUM",
439
+ order_mode: "asc"
440
+ }).then((data) => {
441
+ const componentList = data.entitys;
442
+ componentList.forEach((item) => {
443
+ item.componentName = item.CODE;
444
+ if (item.COMPONENT_TYPE === "page") {
445
+ const componentName = this.getComponetName(item);
446
+ item.componentName = componentName;
447
+ }
448
+ const visualComponentName = this.getVisualComponent(item);
449
+ item.visualComponentName = visualComponentName;
450
+ });
451
+ this.componentList = [...componentList];
452
+ });
453
+ },
454
+ getDefaultConfig() {
455
+ const { dashboardType, compId, componentInfo = {}, itemConfigs: queryItemConfigs = {} } = this.$query;
456
+ const { config: pageConfigs = {} } = this.currentPage || {};
457
+ this.chooseDesignTarget = dashboardType !== "component" && !(pageConfigs.items || []).length && !["pc", "mobile"].includes(pageConfigs.designTarget);
458
+ if (dashboardType === "component") {
459
+ this.upCompId = compId;
460
+ const { config: config2 = {} } = componentInfo;
461
+ const { items = [], ...globalConfigs } = normalizeDashboardConfig({ ...config2, ...queryItemConfigs[compId] || {} });
462
+ this.selectComponentList = ensureGridItemKey(items);
463
+ this.pageGlobalConfigs = mergeGridConfigs(globalConfigs).configs;
464
+ this.allComponentConfigs = this.$_.cloneDeep(queryItemConfigs);
465
+ } else {
466
+ const { itemConfigs = {}, items = [], ...globalConfigs } = normalizeDashboardConfig(pageConfigs);
467
+ this.selectComponentList = ensureGridItemKey(items);
468
+ this.pageGlobalConfigs = mergeGridConfigs(globalConfigs).configs;
469
+ this.allComponentConfigs = itemConfigs;
470
+ if (pageConfigs.version !== this.version) {
471
+ this.upgradePageConfig();
472
+ }
473
+ }
474
+ if (!this.pageGlobalConfigs.theme) this.pageGlobalConfigs.theme = DEFAULT_DASHBOARD_THEME;
475
+ this.getScopeConfigs();
476
+ this.getEntityRelation();
477
+ this.$nextTick(() => {
478
+ this.configReady = true;
479
+ });
480
+ },
481
+ upgradePageConfig() {
482
+ const ids = [];
483
+ const upgradeWidget = (arr, parentId) => {
484
+ arr.forEach((item) => {
485
+ const oldId = item.id;
486
+ if (parentId) {
487
+ while (ids.includes(item.id)) {
488
+ const code = item.contentType.replace(/-/g, "_");
489
+ item.id = code + "_" + this.$util.genId();
490
+ }
491
+ ids.push(item.id);
492
+ item.i = item.id;
493
+ const oldWidgetConifg = this.allComponentConfigs[parentId + "-" + oldId];
494
+ if (oldWidgetConifg) {
495
+ delete this.allComponentConfigs[parentId + "-" + oldId];
496
+ this.allComponentConfigs = { ...this.allComponentConfigs, [item.id]: { ...oldWidgetConifg } };
497
+ }
498
+ }
499
+ if (item.items) {
500
+ upgradeWidget(item.items, parentId ? parentId + "-" + oldId : oldId);
501
+ }
502
+ });
503
+ };
504
+ upgradeWidget(this.selectComponentList);
505
+ this.pageGlobalConfigs.version = this.version;
506
+ },
507
+ getReportList() {
508
+ this.reportLoading = true;
509
+ this.$http.list({
510
+ entityId: "FM_REPORT_BASE",
511
+ "scope.SYSTEM": this.SYSTEM,
512
+ scopeParams: JSON.stringify(this.reportScopeParams),
513
+ page: this.currentReportPage,
514
+ limit: 20
515
+ }).then((data) => {
516
+ this.reportList = data.entitys;
517
+ this.reportTotal = data.total;
518
+ this.reportList.forEach((item) => this.reportMap[item.ID] = item);
519
+ setTimeout(() => {
520
+ this.reportLoading = false;
521
+ }, 300);
522
+ }).catch((err) => {
523
+ this.reportLoading = false;
524
+ this.$message.error(err.message);
525
+ });
526
+ },
527
+ getThemeList() {
528
+ return this.$http.list({
529
+ entityId: "FM_CHART_THEME",
530
+ order_field: "SCOPE,ORDER_NUM",
531
+ order_mode: "desc,asc",
532
+ scopeParams: [
533
+ { field: "SCOPE", values: "frame", link: "or" },
534
+ { field: "CLIENT", values: this.CLIENT }
535
+ ]
536
+ }).then((data) => {
537
+ this.themeList = data.entitys;
538
+ return this.themeList;
539
+ });
540
+ },
541
+ savePreset() {
542
+ this.saveThemeDialog = true;
543
+ const themeItem = this.themeList.find((item) => item.CODE === this.activeTheme);
544
+ this.themeFormData = {
545
+ STYLE: themeItem == null ? void 0 : themeItem.STYLE
546
+ };
547
+ },
548
+ saveTheme() {
549
+ const formData = {
550
+ SCOPE: "client"
551
+ };
552
+ for (const key in this.themeFormData) {
553
+ if (!key.includes("#")) {
554
+ formData[key] = this.themeFormData[key];
555
+ }
556
+ }
557
+ if (!this.isEditTheme || !this.themeFormData.ID) formData.CONTENT = JSON.stringify(this.themeStyles);
558
+ const params = {
559
+ entityId: "FM_CHART_THEME",
560
+ bean: {
561
+ ...formData,
562
+ CLIENT: this.CLIENT,
563
+ SYSTEM: this.SYSTEM
564
+ }
565
+ };
566
+ if (this.themeFormData.ID) {
567
+ params.action = "update";
568
+ }
569
+ return this.$http.save(params).then(() => {
570
+ this.$message.success(this.$t("save successfully"));
571
+ this.isEditTheme = false;
572
+ this.saveThemeDialog = false;
573
+ this.getThemeList();
574
+ }).catch((err) => {
575
+ this.$message.error(err.message || this.$t("fail to save"));
576
+ });
577
+ },
578
+ themeHandleCommand(theme, command) {
579
+ if (command === "edit") {
580
+ this.saveThemeDialog = true;
581
+ this.isEditTheme = true;
582
+ this.themeFormData = { ...theme };
583
+ } else if (command === "remove") {
584
+ this.$confirm("是否删除该预设?", "提示", {
585
+ confirmButtonText: "确定",
586
+ cancelButtonText: "取消",
587
+ type: "warning"
588
+ }).then(() => {
589
+ this.$http.removeMulti({
590
+ entityId: "FM_CHART_THEME",
591
+ ids: theme.ID
592
+ }).then(() => {
593
+ this.$message.success(this.$t("delete successfully"));
594
+ this.getThemeList();
595
+ }).catch((err) => {
596
+ this.$message.error(err.message || this.$t("fail to delete"));
597
+ });
598
+ });
599
+ } else if (command === "config") {
600
+ this.editTheme = theme;
601
+ this.isEditTheme = false;
602
+ }
603
+ },
604
+ currentReportChange(v) {
605
+ this.currentReportPage = v;
606
+ this.getReportList();
607
+ },
608
+ searchReport(v) {
609
+ this.reportScopeParams = v;
610
+ this.currentReportPage = 1;
611
+ this.getReportList();
612
+ },
613
+ getDashboardList() {
614
+ this.dashboardLoading = true;
615
+ this.$http.list({
616
+ entityId: "FM_PAGE_CONFIG",
617
+ "scope.SYSTEM": this.SYSTEM,
618
+ "scope.PAGE|CODE": "dashboard",
619
+ scopeParams: JSON.stringify(this.dashboardScopeParams),
620
+ page: this.currentDashbaordPage,
621
+ limit: 10
622
+ }).then((data) => {
623
+ this.dashboardTotal = data.total;
624
+ setTimeout(() => {
625
+ this.dashboardLoading = false;
626
+ }, 300);
627
+ data.entitys.forEach((item) => {
628
+ const pageConfig = item.CONTENT ? JSON.parse(item.CONTENT) : {};
629
+ const { items = [], itemConfigs = {} } = pageConfig;
630
+ const children = [];
631
+ items.forEach((comp) => {
632
+ children.push({
633
+ ...comp,
634
+ configs: itemConfigs[comp.id] || {}
635
+ });
636
+ if (comp.items) {
637
+ comp.items.forEach((tab) => {
638
+ tab.items.forEach((child) => {
639
+ children.push({
640
+ ...child,
641
+ configs: itemConfigs[comp.id + "-" + child.id] || {}
642
+ });
643
+ });
644
+ });
645
+ }
646
+ });
647
+ item.children = children;
648
+ });
649
+ this.dashboardList = data.entitys.map((item) => {
650
+ item.children = item.children.filter((child) => child.contentType === "chart");
651
+ return item;
652
+ });
653
+ }).catch((err) => {
654
+ this.dashboardLoading = false;
655
+ this.$message.error(err.message);
656
+ });
657
+ },
658
+ currentDashbaordChange(v) {
659
+ this.currentDashboardPage = v;
660
+ this.getDashboardList();
661
+ },
662
+ searchDashboard(v) {
663
+ this.dashboardScopeParams = v;
664
+ this.currentDashboardPage = 1;
665
+ this.getDashboardList();
666
+ },
667
+ selectReport(item) {
668
+ const index = this.selectedReportList.findIndex((report) => report === item.ID);
669
+ if (index !== -1) {
670
+ this.selectedReportList.splice(index, 1);
671
+ this.selectedReportDataList.splice(index, 1);
672
+ } else {
673
+ this.selectedReportList.push(item.ID);
674
+ this.selectedReportDataList.push(item);
675
+ }
676
+ },
677
+ selectDashboardComp(dashbaord, item) {
678
+ const id = dashbaord.ID + "-" + item.id;
679
+ const index = this.selectedDashboardCompList.findIndex((comp) => comp === id);
680
+ if (index !== -1) {
681
+ this.selectedDashboardCompList.splice(index, 1);
682
+ this.selectedDashboardCompDataList.splice(index, 1);
683
+ } else {
684
+ this.selectedDashboardCompList.push(id);
685
+ this.selectedDashboardCompDataList.push(item);
686
+ }
687
+ },
688
+ changeDashboardSelect(dashboard, v) {
689
+ dashboard.children.forEach((item) => {
690
+ const id = dashboard.ID + "-" + item.id;
691
+ const index = this.selectedDashboardCompList.indexOf(id);
692
+ if (index !== -1) {
693
+ if (!v) this.selectedDashboardCompList.splice(index, 1);
694
+ } else {
695
+ if (v) this.selectedDashboardCompList.push(id);
696
+ }
697
+ });
698
+ },
699
+ switchDashboardFoldFn(dashboard) {
700
+ this.foldDashboardMap[dashboard.ID] = !this.foldDashboardMap[dashboard.ID];
701
+ },
702
+ quoteComp() {
703
+ for (let i = 0; i < this.selectedDashboardCompDataList.length; i++) {
704
+ const comp = this.selectedDashboardCompDataList[i];
705
+ if (comp) {
706
+ this.addComponentToDashboard({
707
+ w: comp.w,
708
+ h: comp.h,
709
+ TITLE: comp.title,
710
+ CODE: comp.contentType
711
+ }, { ...comp.configs });
712
+ }
713
+ }
714
+ this.copyComponentDialog = false;
715
+ this.selectedDashboardCompDataList = [];
716
+ this.selectedReportDataList = [];
717
+ this.selectedReportList = [];
718
+ this.selectedDashboardCompList = [];
719
+ },
720
+ copyReport(id) {
721
+ return this.$http.save({
722
+ entityId: "FM_REPORT_BASE",
723
+ action: "copy",
724
+ oldRecordId: id
725
+ });
726
+ },
727
+ async copyComp() {
728
+ for (let i = 0; i < this.selectedReportDataList.length; i++) {
729
+ const report = this.selectedReportDataList[i];
730
+ if (report) {
731
+ const data = await this.copyReport(report.ID);
732
+ this.addReportToDashboard({ id: data.id });
733
+ }
734
+ }
735
+ for (let i = 0; i < this.selectedDashboardCompDataList.length; i++) {
736
+ const comp = this.selectedDashboardCompDataList[i];
737
+ if (comp) {
738
+ if (comp.contentType === "report-chart") {
739
+ const data = await this.copyReport(comp.configs.id);
740
+ this.addComponentToDashboard({
741
+ w: comp.w,
742
+ h: comp.h,
743
+ TITLE: comp.title,
744
+ CODE: comp.contentType
745
+ }, { ...comp.configs, id: data.id });
746
+ } else {
747
+ this.addComponentToDashboard({
748
+ w: comp.w,
749
+ h: comp.h,
750
+ TITLE: comp.title,
751
+ CODE: comp.contentType
752
+ });
753
+ }
754
+ }
755
+ }
756
+ this.copyComponentDialog = false;
757
+ this.selectedDashboardCompDataList = [];
758
+ this.selectedReportDataList = [];
759
+ this.selectedReportList = [];
760
+ this.selectedDashboardCompList = [];
761
+ },
762
+ setReportType(reportType) {
763
+ this.addReportForm.TYPE = reportType.type;
764
+ if (reportType.type === "1") {
765
+ this.addReportForm.CHART_TYPE = null;
766
+ } else {
767
+ this.addReportForm.CHART_TYPE = reportType.chartType;
768
+ }
769
+ },
770
+ openAddReportDialog() {
771
+ this.addReportDialog = true;
772
+ this.addReportForm.OBJECT = this.currentMetaId;
773
+ },
774
+ saveReport() {
775
+ if (this.addReportForm.TYPE === "numStatistic") {
776
+ const newComp = this.addComponentToDashboard({ TITLE: "数字统计", CODE: "num-statistic" });
777
+ if (this.addReportForm.OBJECT) {
778
+ this.changeItemConfigs(newComp.id, { metaId: this.addReportForm.OBJECT.id });
779
+ }
780
+ this.addReportForm = {};
781
+ this.addReportDialog = false;
782
+ } else if (this.addReportForm.TYPE === "dashboardTitle") {
783
+ this.addComponentToDashboard({ TITLE: "标题", CODE: "dashboard-title", w: 48, h: 3 });
784
+ this.addReportForm = {};
785
+ this.addReportDialog = false;
786
+ } else if (this.addReportForm.TYPE === "dashboardDiv") {
787
+ this.addComponentToDashboard({ TITLE: "容器", CODE: "dashboard-div", w: 10, h: 10 });
788
+ this.addReportForm = {};
789
+ this.addReportDialog = false;
790
+ } else if (this.addReportForm.TYPE === "form") {
791
+ if (!this.addReportForm.FORM_TYPE) {
792
+ this.$message.error("请选择报表类型");
793
+ return;
794
+ }
795
+ this.$http.save({
796
+ entityId: "FM_FORM",
797
+ "bean.CLIENT": this.CLIENT,
798
+ "bean.SYSTEM": this.SYSTEM,
799
+ "bean.TYPE": this.addReportForm.FORM_TYPE
800
+ }).then((data) => {
801
+ this.addComponentToDashboard({ TITLE: "报表", CODE: "report-html" }, { id: data });
802
+ this.addReportForm = {};
803
+ this.addReportDialog = false;
804
+ }).catch((err) => this.$message.error(err.message));
805
+ } else {
806
+ const metaId = this.addReportForm.OBJECT ? this.addReportForm.OBJECT.id || this.addReportForm.OBJECT : "";
807
+ const metaViewId = this.addReportForm.OBJECT_VIEW ? this.addReportForm.OBJECT_VIEW.id || this.addReportForm.OBJECT_VIEW : "";
808
+ this.addChartToDashboard({ type: this.addReportForm.TYPE === "1" ? "table" : this.addReportForm.CHART_TYPE, metaId, metaViewId });
809
+ this.addReportForm = {};
810
+ this.addReportDialog = false;
811
+ }
812
+ },
813
+ async back() {
814
+ if (!await this.confirmLeaveMobile()) return;
815
+ this.mobileDirty = false;
816
+ if (this.newWindow) {
817
+ window.close();
818
+ } else if (this.upCompId) {
819
+ this.backPage();
820
+ } else {
821
+ this.$store.commit("DELETE_PAGE", { pageId: this.$query.id });
822
+ this.backPage({ reload: true });
823
+ }
824
+ },
825
+ getEntityRelation() {
826
+ this.$http.$get({
827
+ entityId: "FM_ENTITY_RELATION",
828
+ action: "getEntityRelationTree",
829
+ mainEntity: this.currentMetaId
830
+ }).then((data) => {
831
+ data.forEach((relation) => {
832
+ relation.label = relation.title;
833
+ relation.value = relation.flag;
834
+ relation.children = relation.childrens;
835
+ if (relation.childrens) {
836
+ relation.childrens.forEach((childRelation) => {
837
+ childRelation.value = relation.flag + "#" + childRelation.flag;
838
+ childRelation.label = childRelation.title;
839
+ });
840
+ }
841
+ });
842
+ this.relationList = data;
843
+ });
844
+ },
845
+ /**
846
+ * 获取查询配置
847
+ */
848
+ getScopeConfigs() {
849
+ this.$http.list({
850
+ action: "getAllSearchConfig",
851
+ entityId: "FM_SEARCH_CONFIG"
852
+ }).then((data) => {
853
+ this.scopeConfigs = data;
854
+ });
855
+ },
856
+ setComponentId(str) {
857
+ return str + "_" + this.$util.genId();
858
+ },
859
+ changeItemConfigs(key, configs = {}, type, mode) {
860
+ if (key === "page") {
861
+ if (configs.componentName !== void 0) {
862
+ configs.title = configs.componentName;
863
+ delete configs.componentName;
864
+ }
865
+ const { configs: next, colNum } = mergeGridConfigs(this.pageGlobalConfigs, configs);
866
+ if (colNum) {
867
+ this.confirmRescale(colNum).then((rescale) => {
868
+ if (rescale) {
869
+ rescaleItemsToColNum(this.selectComponentList, colNum.from, colNum.to);
870
+ this.selectComponentList = [...this.selectComponentList];
871
+ }
872
+ this.pageGlobalConfigs = next;
873
+ });
874
+ return;
875
+ }
876
+ this.pageGlobalConfigs = next;
877
+ } else {
878
+ const compId = key;
879
+ const itemConfig = this.allComponentConfigs[compId] || {};
880
+ const { flex, layout, direction, justify, align, style, componentName: title, visualComponentName, span, xsspan, items, ...otherConfigs } = configs;
881
+ let componentAttris = {
882
+ flex,
883
+ layout,
884
+ direction,
885
+ justify,
886
+ align,
887
+ style,
888
+ title,
889
+ span,
890
+ xsspan,
891
+ items
892
+ };
893
+ if (type !== "component") {
894
+ if (mode === "cover") {
895
+ this.allComponentConfigs[compId] = { ...otherConfigs };
896
+ } else {
897
+ this.allComponentConfigs[compId] = { ...itemConfig, ...otherConfigs };
898
+ }
899
+ } else {
900
+ componentAttris = { ...componentAttris, ...configs };
901
+ }
902
+ const selectComponentList = [...this.selectComponentList];
903
+ const id = key;
904
+ const changeItem = (componentList) => {
905
+ for (const component of componentList) {
906
+ if (component.id === id) {
907
+ for (const attri in componentAttris) {
908
+ if (componentAttris[attri] !== void 0) {
909
+ component[attri] = componentAttris[attri];
910
+ if (component[attri] === null) delete component[attri];
911
+ }
912
+ }
913
+ if (this.selectComponent && compId === this.selectComponent.id) {
914
+ this.selectComponent = { ...this.selectComponent, ...this.isMobileDashboard ? { config: { ...component, ...component.configs, ...this.allComponentConfigs[compId] } } : { component } };
915
+ }
916
+ } else if (component.items && component.items.length > 0) {
917
+ changeItem(component.items);
918
+ }
919
+ if (!component.items) component.items = [];
920
+ }
921
+ };
922
+ changeItem(selectComponentList);
923
+ this.selectComponentList = [...selectComponentList];
924
+ }
925
+ },
926
+ // 改列数:询问是否按比例换算现有组件的位置与宽度(取消 = 只改参数、坐标不动)。resolve 布尔值,永不 reject
927
+ confirmRescale({ from, to }) {
928
+ return this.$confirm(`列数将从 ${from} 改为 ${to},按比例换算现有组件位置与宽度?(不换算则组件保持原网格坐标)`, "修改列数", {
929
+ confirmButtonText: "换算",
930
+ cancelButtonText: "不换算",
931
+ customClass: "dashboard-grid-rescale-confirm",
932
+ type: "warning",
933
+ closeOnClickModal: false
934
+ }).then(() => true).catch(() => false);
935
+ },
936
+ addComponent(component, upId = "root") {
937
+ const newComp = {
938
+ id: component.id,
939
+ title: component.TITLE,
940
+ contentType: component.componentName || component.CODE
941
+ };
942
+ if (upId === "root") {
943
+ this.selectComponentList.push(newComp);
944
+ } else {
945
+ const selectComponentList = [...this.selectComponentList];
946
+ const ids = upId.split("-");
947
+ const componentList = ids.reduce((componentList2, id) => {
948
+ const componentItem = componentList2.find((item) => item.id === id) || {};
949
+ if (!componentItem.items) componentItem.items = [];
950
+ return componentItem.items;
951
+ }, selectComponentList);
952
+ componentList.push(newComp);
953
+ this.selectComponentList = selectComponentList;
954
+ this.$forceUpdate();
955
+ }
956
+ },
957
+ addComponentToDashboard(component, configs) {
958
+ this.addComponentDialog = false;
959
+ const dashboard = this.$refs.dashboardDesign;
960
+ let max = 0;
961
+ const parent = this.isMobileDashboard && this.mobileAddParent ? indexDashboardItems(this.selectComponentList).get(String(this.mobileAddParent)) : null;
962
+ const destination = parent ? parent.items || (parent.items = []) : this.selectComponentList;
963
+ for (const item of this.isMobileDashboard ? destination : dashboard.layout) {
964
+ if (!max) {
965
+ max = item.y + item.h;
966
+ } else if (item.y + item.h > max) {
967
+ max = item.y + item.h;
968
+ }
969
+ }
970
+ const id = this.setComponentId(component.CODE);
971
+ const newComp = {
972
+ x: 0,
973
+ y: max,
974
+ // puts it at the bottom
975
+ w: this.isMobileDashboard ? ["num-statistic", "card-num"].includes(component.CODE) ? this.pageGlobalConfigs.grid.colNum / 2 : this.pageGlobalConfigs.grid.colNum : component.w || 10,
976
+ h: component.h || (this.isMobileDashboard && ["chart", "report-chart", "dashboard-tabs", "dashboard-div"].includes(component.CODE) ? 16 : 10),
977
+ i: id,
978
+ id,
979
+ title: component.TITLE,
980
+ contentType: component.CODE
981
+ };
982
+ if (this.isMobileDashboard) {
983
+ if (component.CODE === "dashboard-tabs") newComp.items = [{ id: "tabpane_" + this.$util.genId(), name: "标签项1", items: [] }];
984
+ destination.push(newComp);
985
+ if (configs) this.changeItemConfigs(id, configs);
986
+ this.mobileAddParent = null;
987
+ this.$nextTick(() => dashboard.openConfig(newComp));
988
+ return newComp;
989
+ }
990
+ dashboard.layout.push(newComp);
991
+ this.selectComponentList.push(newComp);
992
+ if (configs) this.changeItemConfigs(id, configs);
993
+ return newComp;
994
+ },
995
+ addChartToDashboard(data, configs = {}) {
996
+ if (data) {
997
+ this.addComponentToDashboard({ CODE: "chart", TITLE: "未命名统计报表", ...configs }, { ...data });
998
+ }
999
+ },
1000
+ addReportToDashboard(data, configs = {}) {
1001
+ if (data) {
1002
+ this.addComponentToDashboard({ CODE: "report-chart", TITLE: "报表", ...configs }, { id: data.id });
1003
+ }
1004
+ },
1005
+ addTabsToDashboard() {
1006
+ this.addComponentToDashboard({ CODE: "dashboard-tabs", TITLE: "标签页" });
1007
+ },
1008
+ deleteSelectComponent(id, e) {
1009
+ e && e.stopPropagation();
1010
+ const selectComponentList = [...this.selectComponentList];
1011
+ const ids = id.split("-");
1012
+ ids.reduce((componentList, id2, index) => {
1013
+ if (index === ids.length - 1) {
1014
+ const componentIndex = componentList.findIndex((item) => item.id === id2) || {};
1015
+ componentList.splice(componentIndex, 1);
1016
+ } else {
1017
+ const componentItem = componentList.find((item) => item.id === id2) || {};
1018
+ return componentItem.items;
1019
+ }
1020
+ }, selectComponentList);
1021
+ this.selectComponentList = selectComponentList;
1022
+ this.$forceUpdate();
1023
+ },
1024
+ changeConfigs(id, newConfigs) {
1025
+ const configs = this.componentConfigs[id] || {};
1026
+ this.componentConfigs[id] = { ...configs, ...newConfigs };
1027
+ },
1028
+ deleteConfigs(id) {
1029
+ delete this.allComponentConfigs[id];
1030
+ },
1031
+ pageSetting() {
1032
+ const { visualConfigPath } = this.currentPage;
1033
+ const name = this.getVisualComponent({ VISUAL_CONFIG_PATH: visualConfigPath });
1034
+ this.selectComponent = { type: "page", id: "page", ...this.currentPage, visualComponentName: name, config: this.pageGlobalConfigs };
1035
+ },
1036
+ // tab:抽屉打开时定位的 tab(chart 项操作条的「布局」按钮传 'style',R29);openSeq 每次打开递增,面板据此区分「打开」与配置改动引起的对象替换
1037
+ clickComponent(componentId, componentInfo, component, upId, tab) {
1038
+ this.openSeq = (this.openSeq || 0) + 1;
1039
+ this.selectComponent = { id: componentId, ...componentInfo, config: component, upId, openTab: tab, openSeq: this.openSeq };
1040
+ },
1041
+ scrollToConfig(componentId) {
1042
+ },
1043
+ setComponentConfig(componentList, itemConfigs = {}, upId) {
1044
+ componentList.forEach((component) => {
1045
+ const componentId = upId ? upId + "-" + component.id : component.id;
1046
+ const configComponentOuter = this.$refs[`config-${component.id}`];
1047
+ if (configComponentOuter) {
1048
+ const configComponent = configComponentOuter.$refs.component;
1049
+ if (configComponent) {
1050
+ const configs = configComponent.getConfigs() || {};
1051
+ const { span, flex, componentName } = configs;
1052
+ if (span) component.span = span;
1053
+ delete component.configs;
1054
+ if (componentName) {
1055
+ component.title = componentName;
1056
+ delete configs.componentName;
1057
+ }
1058
+ if (flex) {
1059
+ component.flex = flex;
1060
+ delete configs.flex;
1061
+ }
1062
+ const defaulConfigs = itemConfigs[componentId] || {};
1063
+ itemConfigs[componentId] = { ...defaulConfigs, ...configs };
1064
+ }
1065
+ }
1066
+ const { items = [] } = component;
1067
+ if (items.length > 0) {
1068
+ this.setComponentConfig(items, itemConfigs, componentId);
1069
+ }
1070
+ });
1071
+ },
1072
+ setContainerDefaultItems(id, items) {
1073
+ if (id === "page") {
1074
+ const { config: pageConfigs = {} } = this.currentPage || {};
1075
+ if (!pageConfigs.items) this.selectComponentList = items;
1076
+ } else {
1077
+ const selectComponentList = [...this.selectComponentList];
1078
+ const ids = id.split("-");
1079
+ ids.reduce((componentList, id2, index) => {
1080
+ const componentItem = componentList.find((item) => item.id === id2) || {};
1081
+ if (!componentItem.items) {
1082
+ if (index === ids.length - 1) componentItem.items = items;
1083
+ else componentItem.items = [];
1084
+ }
1085
+ return componentItem.items;
1086
+ }, selectComponentList);
1087
+ this.selectComponentList = selectComponentList;
1088
+ }
1089
+ },
1090
+ cancelThemePancel() {
1091
+ if (this.editTheme) {
1092
+ this.editTheme = null;
1093
+ } else {
1094
+ this.showPanel = "";
1095
+ this.activeTheme = this.pageGlobalConfigs.theme;
1096
+ }
1097
+ this.getConfigThemeStyles();
1098
+ },
1099
+ selectTheme(theme) {
1100
+ this.activeTheme = theme.CODE;
1101
+ this.changethemeStyles(JSON.parse(theme.CONTENT));
1102
+ },
1103
+ getConfigThemeStyles() {
1104
+ const { theme, themeStyles } = this.pageGlobalConfigs;
1105
+ let selectedTheme = theme || DEFAULT_DASHBOARD_THEME;
1106
+ let themeItem = this.themeList.find((item) => item.CODE === selectedTheme);
1107
+ if (!themeItem && selectedTheme === DEFAULT_DASHBOARD_THEME) {
1108
+ themeItem = this.themeList.find((item) => item.NAME === "经典白" && item.CODE);
1109
+ if (themeItem) selectedTheme = themeItem.CODE;
1110
+ }
1111
+ if (this.pageGlobalConfigs.theme !== selectedTheme) this.pageGlobalConfigs.theme = selectedTheme;
1112
+ this.activeTheme = selectedTheme;
1113
+ if (themeStyles) {
1114
+ this.styleType = "custom";
1115
+ this.themeStyles = themeStyles;
1116
+ } else {
1117
+ this.styleType = "presets";
1118
+ this.themeStyles = (themeItem == null ? void 0 : themeItem.CONTENT) ? typeof themeItem.CONTENT === "string" ? JSON.parse(themeItem.CONTENT) : themeItem.CONTENT : null;
1119
+ }
1120
+ },
1121
+ changethemeStyles(v) {
1122
+ this.themeStyles = v;
1123
+ },
1124
+ setTheme() {
1125
+ if (this.editTheme) {
1126
+ this.themeFormData = { ...this.editTheme };
1127
+ this.saveTheme().then(() => {
1128
+ this.editTheme = null;
1129
+ });
1130
+ } else {
1131
+ this.showPanel = "";
1132
+ if (this.styleType === "custom") {
1133
+ this.changeItemConfigs("page", { themeStyles: this.themeStyles });
1134
+ } else {
1135
+ this.changeItemConfigs("page", { theme: this.activeTheme, themeStyles: null });
1136
+ }
1137
+ }
1138
+ },
1139
+ delaySaveConfigs() {
1140
+ if (this.chooseDesignTarget || this.choosingDesignTarget) return;
1141
+ if (this.isMobileDashboard) {
1142
+ if (this.configReady) {
1143
+ this.mobileDirty = true;
1144
+ this.mobileRevision++;
1145
+ }
1146
+ return;
1147
+ }
1148
+ if (this.timer) {
1149
+ clearTimeout(this.timer);
1150
+ }
1151
+ this.timer = setTimeout(() => {
1152
+ this.saveConfigs();
1153
+ clearTimeout(this.timer);
1154
+ this.timer = null;
1155
+ }, 1e3);
1156
+ },
1157
+ saveConfigs(event, next, errorFn) {
1158
+ const selectComponentList = [...this.selectComponentList];
1159
+ const rawItemConfigs = { ...this.allComponentConfigs };
1160
+ this.setComponentConfig(selectComponentList, rawItemConfigs, "");
1161
+ const { itemConfigs, ...config2 } = stripDashboardConfig({ ...this.pageGlobalConfigs, version: this.version, items: selectComponentList, itemConfigs: rawItemConfigs });
1162
+ for (const key in itemConfigs) {
1163
+ const itemConfig = itemConfigs[key];
1164
+ for (const itemKey in itemConfig) {
1165
+ if (itemConfig[itemKey] === null || itemConfig[itemKey] === void 0) {
1166
+ delete itemConfig[itemKey];
1167
+ }
1168
+ }
1169
+ if (this.$_.isEmpty(itemConfig)) {
1170
+ delete itemConfigs[key];
1171
+ }
1172
+ }
1173
+ this.selectComponentList = [...selectComponentList];
1174
+ if (this.upCompId) {
1175
+ const { setCompConfigs } = this.$query;
1176
+ setCompConfigs(config2, itemConfigs);
1177
+ } else {
1178
+ config2.itemConfigs = itemConfigs;
1179
+ return __epxPackagePreload(() => import(
1180
+ /* webpackChunkName: "standalone" */
1181
+ "@babel/standalone"
1182
+ ), true ? [] : void 0, import.meta.url).then((babel) => {
1183
+ const es5 = babel.transform(config2.JS || "", { presets: ["env"] });
1184
+ config2.compileJS = es5.code;
1185
+ for (const key in config2) {
1186
+ if (config2[key] === null) {
1187
+ delete config2[key];
1188
+ }
1189
+ }
1190
+ return this.savePageConfigs(config2, next, errorFn);
1191
+ });
1192
+ }
1193
+ },
1194
+ saveGlobalConfigs() {
1195
+ this.pageSettingDrawer = false;
1196
+ },
1197
+ savePageConfigs(config2) {
1198
+ let formParams = {};
1199
+ const globalConfig = this.$refs.globalConfig;
1200
+ if (globalConfig) {
1201
+ const formComp = this.getComponentById("form", globalConfig);
1202
+ if (formComp) {
1203
+ formParams = formComp.getFormData();
1204
+ if (!formParams) return;
1205
+ }
1206
+ }
1207
+ const saveEntityId = this.$query.saveEntityId;
1208
+ const saveField = this.$query.saveField || "CONTENT";
1209
+ return this.$http.update({
1210
+ entityId: saveEntityId || this.$metaId,
1211
+ ...formParams,
1212
+ [`bean.${this.$metaKey}`]: this.$query.id,
1213
+ [`bean.${saveField}`]: JSON.stringify(config2, null, " ")
1214
+ }).then((data) => {
1215
+ if (this.newWindow) {
1216
+ if (window.opener) window.opener.postMessage({ pageId: this.$query.id, type: "configPage" }, "/");
1217
+ }
1218
+ return true;
1219
+ }).catch((err) => {
1220
+ this.$message.error(err.message || this.$t("fail to save"));
1221
+ return false;
1222
+ });
1223
+ },
1224
+ switchMobile() {
1225
+ const { mItems } = this.pageGlobalConfigs;
1226
+ this.openSuspendedPopup({
1227
+ component: "visual-config-dashboard-mobile",
1228
+ params: {
1229
+ withHeader: false,
1230
+ componentList: this.selectComponentList,
1231
+ mobileComponentList: mItems,
1232
+ theme: this.activeTheme,
1233
+ themeStyles: this.themeStyles,
1234
+ itemConfigs: this.allComponentConfigs,
1235
+ // 页面全局配置:移动端设计器据其 grid 推网格参数(行高沿用页面、间距换成移动端 [8,8]),与运行态移动端一致
1236
+ globalConfigs: this.pageGlobalConfigs,
1237
+ changeMItems: (v) => {
1238
+ this.pageGlobalConfigs.mItems = v;
1239
+ this.mobileComponentList = v;
1240
+ }
1241
+ }
1242
+ });
1243
+ },
1244
+ updatePreviewViewport() {
1245
+ this.previewViewportWidth = window.innerWidth;
1246
+ this.previewViewportHeight = window.innerHeight;
1247
+ },
1248
+ openSuspendedPopup(page) {
1249
+ this.previewSuspended = true;
1250
+ this.$nextTick(() => {
1251
+ const previousPopups = new Set(window.openedPopup || []);
1252
+ this.goPage(page);
1253
+ const popup = (window.openedPopup || []).find((item) => !previousPopups.has(item) && !item.closed);
1254
+ if (!popup) {
1255
+ this.previewSuspended = false;
1256
+ return;
1257
+ }
1258
+ if (this.previewPopupTimer) clearInterval(this.previewPopupTimer);
1259
+ this.previewPopupTimer = setInterval(() => {
1260
+ if (!popup.disposed) return;
1261
+ clearInterval(this.previewPopupTimer);
1262
+ this.previewPopupTimer = null;
1263
+ this.previewSuspended = false;
1264
+ }, 200);
1265
+ });
1266
+ },
1267
+ preview() {
1268
+ if (this.isMobileDashboard) {
1269
+ this.updatePreviewViewport();
1270
+ this.mobilePreviewVisible = true;
1271
+ return;
1272
+ }
1273
+ this.$store.commit("DELETE_PAGE", { pageId: this.$query.id });
1274
+ setTimeout(() => {
1275
+ this.openSuspendedPopup({
1276
+ pageId: this.$query.id
1277
+ });
1278
+ }, 100);
1279
+ }
1280
+ },
1281
+ watch: {
1282
+ pageGlobalConfigs: {
1283
+ handler(v) {
1284
+ if (!this.$_.isEqual(this.oldPageGlobalConfigs, v)) {
1285
+ this.delaySaveConfigs();
1286
+ }
1287
+ this.oldPageGlobalConfigs = this.$_.cloneDeep(v);
1288
+ },
1289
+ deep: true
1290
+ },
1291
+ selectComponentList: {
1292
+ handler(v) {
1293
+ if (!this.$_.isEqual(this.oldSelectComponentList, v)) {
1294
+ this.delaySaveConfigs();
1295
+ }
1296
+ this.oldSelectComponentList = this.$_.cloneDeep(v);
1297
+ },
1298
+ deep: true
1299
+ },
1300
+ allComponentConfigs: {
1301
+ handler(v) {
1302
+ if (!this.$_.isEqual(this.oldAllComponentConfigs, v)) {
1303
+ this.delaySaveConfigs();
1304
+ }
1305
+ this.oldAllComponentConfigs = this.$_.cloneDeep(v);
1306
+ },
1307
+ deep: true
1308
+ }
1309
+ },
1310
+ created() {
1311
+ window.addEventListener("resize", this.updatePreviewViewport);
1312
+ window.addEventListener("beforeunload", this.warnUnsavedMobile);
1313
+ this.removeMobileRouteGuard = this.$router.beforeEach(() => this.confirmLeaveMobile());
1314
+ if (this.showMenu) {
1315
+ this.changeMenuFlag = true;
1316
+ this.$store.commit("SWITCH_MENU_SHOW", false);
1317
+ }
1318
+ if (this.showAppNav) {
1319
+ this.changeAppNavFlag = true;
1320
+ this.$store.commit("SWITCH_APP_NAV_SHOW", false);
1321
+ }
1322
+ this.getPageInfo();
1323
+ if (this.$query.dashboardType === "component") {
1324
+ this.getDefaultConfig();
1325
+ }
1326
+ this.getComponentList();
1327
+ this.getReportList();
1328
+ this.getDashboardList();
1329
+ },
1330
+ beforeUnmount() {
1331
+ window.removeEventListener("resize", this.updatePreviewViewport);
1332
+ if (this.previewPopupTimer) clearInterval(this.previewPopupTimer);
1333
+ if (this.timer) clearTimeout(this.timer);
1334
+ window.removeEventListener("beforeunload", this.warnUnsavedMobile);
1335
+ if (this.removeMobileRouteGuard) this.removeMobileRouteGuard();
1336
+ if (this.changeMenuFlag) {
1337
+ this.$store.commit("SWITCH_MENU_SHOW", true);
1338
+ }
1339
+ if (this.changeAppNavFlag) {
1340
+ this.$store.commit("SWITCH_APP_NAV_SHOW", true);
1341
+ }
1342
+ }
1343
+ };
1344
+ const _hoisted_1 = { class: "page-header" };
1345
+ const _hoisted_2 = { class: "page-title" };
1346
+ const _hoisted_3 = { class: "page-header__title" };
1347
+ const _hoisted_4 = { class: "page-header__operate" };
1348
+ const _hoisted_5 = {
1349
+ key: 2,
1350
+ class: "mobile-save-status"
1351
+ };
1352
+ const _hoisted_6 = {
1353
+ key: 0,
1354
+ class: "design-target-picker"
1355
+ };
1356
+ const _hoisted_7 = { class: "design-target-picker__options" };
1357
+ const _hoisted_8 = {
1358
+ key: 1,
1359
+ class: "page-content"
1360
+ };
1361
+ const _hoisted_9 = { class: "page-tabs" };
1362
+ const _hoisted_10 = { class: "function-panel" };
1363
+ const _hoisted_11 = {
1364
+ key: 0,
1365
+ class: "dashboard-theme"
1366
+ };
1367
+ const _hoisted_12 = { class: "dashboard-theme__title" };
1368
+ const _hoisted_13 = { class: "dashboard-theme__content" };
1369
+ const _hoisted_14 = {
1370
+ key: 0,
1371
+ class: "dashboard-theme__list"
1372
+ };
1373
+ const _hoisted_15 = ["onClick"];
1374
+ const _hoisted_16 = { class: "dashboard-theme__preview" };
1375
+ const _hoisted_17 = ["src"];
1376
+ const _hoisted_18 = { class: "dashboard-theme__name" };
1377
+ const _hoisted_19 = { class: "dashboard-theme__name-text" };
1378
+ const _hoisted_20 = {
1379
+ key: 0,
1380
+ class: "dashboard-theme__name-icon el-icon-user"
1381
+ };
1382
+ const _hoisted_21 = { class: "dashboard-theme__footer" };
1383
+ const _hoisted_22 = {
1384
+ key: 0,
1385
+ class: "page-preview"
1386
+ };
1387
+ const _hoisted_23 = {
1388
+ key: 0,
1389
+ class: "config-panel"
1390
+ };
1391
+ const _hoisted_24 = {
1392
+ key: 0,
1393
+ class: "add-report-body"
1394
+ };
1395
+ const _hoisted_25 = { class: "add-report-item" };
1396
+ const _hoisted_26 = { class: "report-type__list" };
1397
+ const _hoisted_27 = ["onClick"];
1398
+ const _hoisted_28 = { class: "add-report-item" };
1399
+ const _hoisted_29 = { class: "add-report-item" };
1400
+ const _hoisted_30 = { class: "add-report-item" };
1401
+ const _hoisted_31 = { class: "add-report-footer" };
1402
+ const _hoisted_32 = { class: "dashboard-search" };
1403
+ const _hoisted_33 = { class: "dashboard-list" };
1404
+ const _hoisted_34 = { class: "dashboard-header" };
1405
+ const _hoisted_35 = ["onClick"];
1406
+ const _hoisted_36 = { class: "dashboard-body" };
1407
+ const _hoisted_37 = { class: "dashboard-comp__list" };
1408
+ const _hoisted_38 = ["onClick"];
1409
+ const _hoisted_39 = {
1410
+ key: 0,
1411
+ class: "no-data"
1412
+ };
1413
+ const _hoisted_40 = { class: "dialog-footer" };
1414
+ const _hoisted_41 = { class: "page-setting" };
1415
+ const _hoisted_42 = { class: "page-setting__header" };
1416
+ const _hoisted_43 = { class: "page-setting__content" };
1417
+ const _hoisted_44 = { class: "page-setting__footer" };
1418
+ const _hoisted_45 = { class: "mobile-preview-phone__screen" };
1419
+ const _hoisted_46 = ["title"];
1420
+ const _hoisted_47 = { class: "mobile-dashboard-preview" };
1421
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
1422
+ const _component_el_tag = resolveComponent("el-tag");
1423
+ const _component_el_button = resolveComponent("el-button");
1424
+ const _component_el_option = resolveComponent("el-option");
1425
+ const _component_el_select = resolveComponent("el-select");
1426
+ const _component_el_radio_button = resolveComponent("el-radio-button");
1427
+ const _component_el_radio_group = resolveComponent("el-radio-group");
1428
+ const _component_el_dropdown_item = resolveComponent("el-dropdown-item");
1429
+ const _component_el_dropdown_menu = resolveComponent("el-dropdown-menu");
1430
+ const _component_el_dropdown = resolveComponent("el-dropdown");
1431
+ const _component_dashboard_theme_setting = resolveComponent("dashboard-theme-setting");
1432
+ const _component_epx_visual_config_panel = resolveComponent("epx-visual-config-panel");
1433
+ const _component_dashboard_mobile = resolveComponent("dashboard-mobile");
1434
+ const _component_epx_visual_config_dashboard_design = resolveComponent("epx-visual-config-dashboard-design");
1435
+ const _component_el_drawer = resolveComponent("el-drawer");
1436
+ const _component_epx_object = resolveComponent("epx-object");
1437
+ const _component_el_radio = resolveComponent("el-radio");
1438
+ const _component_el_dialog = resolveComponent("el-dialog");
1439
+ const _component_epx_visual_component_library_dialog = resolveComponent("epx-visual-component-library-dialog");
1440
+ const _component_epx_search_fields = resolveComponent("epx-search-fields");
1441
+ const _component_el_checkbox = resolveComponent("el-checkbox");
1442
+ const _component_el_pagination = resolveComponent("el-pagination");
1443
+ const _component_el_tab_pane = resolveComponent("el-tab-pane");
1444
+ const _component_el_tabs = resolveComponent("el-tabs");
1445
+ const _component_epx_add_form_item = resolveComponent("epx-add-form-item");
1446
+ const _component_dashboard_preview = resolveComponent("dashboard-preview");
1447
+ const _directive_loading = resolveDirective("loading");
1448
+ return openBlock(), createElementBlock("div", {
1449
+ class: normalizeClass(["config-container config-container--dashboard-designer", { "config-container--new-window": $props.newWindow, "config-container--mobile-dashboard": $options.isMobileDashboard }])
1450
+ }, [
1451
+ createElementVNode("div", _hoisted_1, [
1452
+ createElementVNode("i", {
1453
+ class: "page-header__back el-icon-arrow-left",
1454
+ onClick: _cache[0] || (_cache[0] = (...args) => $options.back && $options.back(...args))
1455
+ }),
1456
+ createElementVNode("p", _hoisted_2, [
1457
+ createElementVNode("span", _hoisted_3, toDisplayString($options.title), 1),
1458
+ !$data.chooseDesignTarget ? (openBlock(), createBlock(_component_el_tag, {
1459
+ key: 0,
1460
+ size: "small"
1461
+ }, {
1462
+ default: withCtx(() => [
1463
+ createTextVNode(toDisplayString($options.isMobileDashboard ? "移动端看板" : "PC 看板"), 1)
1464
+ ]),
1465
+ _: 1
1466
+ })) : createCommentVNode("", true)
1467
+ ]),
1468
+ createElementVNode("div", _hoisted_4, [
1469
+ $data.configReady && !$data.selectComponentList.length ? (openBlock(), createBlock(_component_el_button, {
1470
+ key: 0,
1471
+ size: "small",
1472
+ disabled: $data.choosingDesignTarget,
1473
+ onClick: _cache[1] || (_cache[1] = ($event) => $data.chooseDesignTarget = true)
1474
+ }, {
1475
+ default: withCtx(() => [..._cache[36] || (_cache[36] = [
1476
+ createTextVNode("选择设计端", -1)
1477
+ ])]),
1478
+ _: 1
1479
+ }, 8, ["disabled"])) : createCommentVNode("", true),
1480
+ !$data.chooseDesignTarget ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
1481
+ createElementVNode("p", {
1482
+ class: "header-operate__item",
1483
+ onClick: _cache[2] || (_cache[2] = ($event) => $data.showPanel = "style")
1484
+ }, [..._cache[37] || (_cache[37] = [
1485
+ createElementVNode("i", { class: "epx-icon-yangshi" }, null, -1),
1486
+ createTextVNode("样式", -1)
1487
+ ])]),
1488
+ !$options.isMobileDashboard ? (openBlock(), createElementBlock("p", {
1489
+ key: 0,
1490
+ class: "header-operate__item",
1491
+ onClick: _cache[3] || (_cache[3] = (...args) => $options.switchMobile && $options.switchMobile(...args))
1492
+ }, [..._cache[38] || (_cache[38] = [
1493
+ createElementVNode("i", { class: "el-icon-mobile" }, null, -1),
1494
+ createTextVNode("移动端设计", -1)
1495
+ ])])) : createCommentVNode("", true),
1496
+ $options.isMobileDashboard ? (openBlock(), createBlock(_component_el_select, {
1497
+ key: 1,
1498
+ "model-value": $options.mobileCanvasWidth,
1499
+ size: "small",
1500
+ class: "mobile-width-select",
1501
+ onChange: _cache[4] || (_cache[4] = (v) => $options.changeItemConfigs("page", { mobileCanvasWidth: v }))
1502
+ }, {
1503
+ default: withCtx(() => [
1504
+ (openBlock(), createElementBlock(Fragment, null, renderList([320, 375, 390, 414], (width) => {
1505
+ return createVNode(_component_el_option, {
1506
+ key: width,
1507
+ label: width + "px",
1508
+ value: width
1509
+ }, null, 8, ["label", "value"]);
1510
+ }), 64))
1511
+ ]),
1512
+ _: 1
1513
+ }, 8, ["model-value"])) : createCommentVNode("", true),
1514
+ $options.isMobileDashboard ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString($data.mobileDirty ? "未保存" : "已保存"), 1)) : createCommentVNode("", true),
1515
+ $options.isMobileDashboard ? (openBlock(), createBlock(_component_el_button, {
1516
+ key: 3,
1517
+ size: "small",
1518
+ type: "primary",
1519
+ loading: $data.mobileSaving,
1520
+ onClick: $options.saveMobileDashboard
1521
+ }, {
1522
+ default: withCtx(() => [..._cache[39] || (_cache[39] = [
1523
+ createTextVNode("保存", -1)
1524
+ ])]),
1525
+ _: 1
1526
+ }, 8, ["loading", "onClick"])) : createCommentVNode("", true),
1527
+ createElementVNode("p", {
1528
+ class: "header-operate__item",
1529
+ onClick: _cache[5] || (_cache[5] = (...args) => $options.preview && $options.preview(...args))
1530
+ }, [
1531
+ _cache[40] || (_cache[40] = createElementVNode("i", { class: "el-icon-view" }, null, -1)),
1532
+ createTextVNode(toDisplayString(_ctx.$t("preview")), 1)
1533
+ ]),
1534
+ createElementVNode("p", {
1535
+ class: "header-operate__item",
1536
+ onClick: _cache[6] || (_cache[6] = ($event) => $data.pageSettingDrawer = true)
1537
+ }, [..._cache[41] || (_cache[41] = [
1538
+ createElementVNode("i", { class: "el-icon-setting" }, null, -1),
1539
+ createTextVNode("全局设置", -1)
1540
+ ])])
1541
+ ], 64)) : createCommentVNode("", true)
1542
+ ])
1543
+ ]),
1544
+ $data.chooseDesignTarget ? (openBlock(), createElementBlock("div", _hoisted_6, [
1545
+ _cache[44] || (_cache[44] = createElementVNode("h2", null, "选择看板设计端", -1)),
1546
+ _cache[45] || (_cache[45] = createElementVNode("p", null, "先选择主要展示端,再开始添加报表和组件。", -1)),
1547
+ createElementVNode("div", _hoisted_7, [
1548
+ createVNode(_component_el_button, {
1549
+ loading: $data.choosingDesignTarget,
1550
+ onClick: _cache[7] || (_cache[7] = ($event) => $options.selectDesignTarget("pc"))
1551
+ }, {
1552
+ default: withCtx(() => [..._cache[42] || (_cache[42] = [
1553
+ createTextVNode("PC 端 · 桌面画布", -1)
1554
+ ])]),
1555
+ _: 1
1556
+ }, 8, ["loading"]),
1557
+ createVNode(_component_el_button, {
1558
+ type: "primary",
1559
+ loading: $data.choosingDesignTarget,
1560
+ onClick: _cache[8] || (_cache[8] = ($event) => $options.selectDesignTarget("mobile"))
1561
+ }, {
1562
+ default: withCtx(() => [..._cache[43] || (_cache[43] = [
1563
+ createTextVNode("移动端 · 手机画布", -1)
1564
+ ])]),
1565
+ _: 1
1566
+ }, 8, ["loading"])
1567
+ ])
1568
+ ])) : (openBlock(), createElementBlock("div", _hoisted_8, [
1569
+ createElementVNode("ul", _hoisted_9, [
1570
+ createElementVNode("li", {
1571
+ class: normalizeClass({ "page-tabs__item": true }),
1572
+ onClick: _cache[9] || (_cache[9] = (...args) => $options.openAddReportDialog && $options.openAddReportDialog(...args))
1573
+ }, [..._cache[46] || (_cache[46] = [
1574
+ createElementVNode("i", { class: "epx-icon-color-tianjiabaobiao" }, null, -1),
1575
+ createElementVNode("span", null, "报表", -1)
1576
+ ])]),
1577
+ createElementVNode("li", {
1578
+ class: normalizeClass({ "page-tabs__item": true }),
1579
+ onClick: _cache[10] || (_cache[10] = ($event) => $data.addComponentDialog = true)
1580
+ }, [..._cache[47] || (_cache[47] = [
1581
+ createElementVNode("i", { class: "epx-icon-color-tianjiazujian" }, null, -1),
1582
+ createElementVNode("span", null, "组件", -1)
1583
+ ])]),
1584
+ createElementVNode("li", {
1585
+ class: normalizeClass({ "page-tabs__item": true }),
1586
+ onClick: _cache[11] || (_cache[11] = (...args) => $options.addTabsToDashboard && $options.addTabsToDashboard(...args))
1587
+ }, [..._cache[48] || (_cache[48] = [
1588
+ createElementVNode("i", { class: "epx-icon-color-tab" }, null, -1),
1589
+ createElementVNode("span", null, "标签页", -1)
1590
+ ])]),
1591
+ createElementVNode("li", {
1592
+ class: normalizeClass({ "page-tabs__item": true }),
1593
+ onClick: _cache[12] || (_cache[12] = ($event) => $data.copyComponentDialog = true)
1594
+ }, [..._cache[49] || (_cache[49] = [
1595
+ createElementVNode("i", { class: "epx-icon-color-yinyong" }, null, -1),
1596
+ createElementVNode("span", null, "引用", -1)
1597
+ ])])
1598
+ ]),
1599
+ createElementVNode("div", _hoisted_10, [
1600
+ $data.showPanel === "style" ? (openBlock(), createElementBlock("div", _hoisted_11, [
1601
+ createElementVNode("div", _hoisted_12, [
1602
+ _cache[52] || (_cache[52] = createElementVNode("span", null, "样式设置", -1)),
1603
+ createVNode(_component_el_radio_group, {
1604
+ modelValue: $data.styleType,
1605
+ "onUpdate:modelValue": _cache[13] || (_cache[13] = ($event) => $data.styleType = $event),
1606
+ size: "small"
1607
+ }, {
1608
+ default: withCtx(() => [
1609
+ createVNode(_component_el_radio_button, {
1610
+ label: "presets",
1611
+ value: "presets"
1612
+ }, {
1613
+ default: withCtx(() => [..._cache[50] || (_cache[50] = [
1614
+ createTextVNode("预设", -1)
1615
+ ])]),
1616
+ _: 1
1617
+ }),
1618
+ createVNode(_component_el_radio_button, {
1619
+ label: "custom",
1620
+ value: "custom"
1621
+ }, {
1622
+ default: withCtx(() => [..._cache[51] || (_cache[51] = [
1623
+ createTextVNode("自定义", -1)
1624
+ ])]),
1625
+ _: 1
1626
+ })
1627
+ ]),
1628
+ _: 1
1629
+ }, 8, ["modelValue"])
1630
+ ]),
1631
+ createElementVNode("div", _hoisted_13, [
1632
+ $data.styleType === "presets" && !$data.editTheme ? (openBlock(), createElementBlock("ul", _hoisted_14, [
1633
+ (openBlock(true), createElementBlock(Fragment, null, renderList($data.themeList, (theme) => {
1634
+ return openBlock(), createElementBlock("li", {
1635
+ class: normalizeClass(["dashboard-theme__item", { active: $data.activeTheme === theme.CODE }]),
1636
+ key: theme.CODE,
1637
+ onClick: ($event) => $options.selectTheme(theme)
1638
+ }, [
1639
+ createElementVNode("div", _hoisted_16, [
1640
+ createElementVNode("img", {
1641
+ src: _ctx.$util.getFileUrl(theme.THUMBNAIL),
1642
+ alt: ""
1643
+ }, null, 8, _hoisted_17)
1644
+ ]),
1645
+ createElementVNode("p", _hoisted_18, [
1646
+ createElementVNode("span", _hoisted_19, [
1647
+ createTextVNode(toDisplayString(theme.NAME), 1),
1648
+ theme.SCOPE !== "frame" ? (openBlock(), createElementBlock("i", _hoisted_20)) : createCommentVNode("", true)
1649
+ ]),
1650
+ theme.SCOPE !== "frame" || _ctx.$route.params.system === "epxing-frame" ? (openBlock(), createBlock(_component_el_dropdown, {
1651
+ key: 0,
1652
+ class: "fr",
1653
+ onClick: _cache[14] || (_cache[14] = withModifiers(() => {
1654
+ }, ["stop"])),
1655
+ onCommand: (command) => $options.themeHandleCommand(theme, command)
1656
+ }, {
1657
+ dropdown: withCtx(() => [
1658
+ createVNode(_component_el_dropdown_menu, null, {
1659
+ default: withCtx(() => [
1660
+ createVNode(_component_el_dropdown_item, { command: "edit" }, {
1661
+ default: withCtx(() => [..._cache[53] || (_cache[53] = [
1662
+ createTextVNode("编辑", -1)
1663
+ ])]),
1664
+ _: 1
1665
+ }),
1666
+ createVNode(_component_el_dropdown_item, { command: "config" }, {
1667
+ default: withCtx(() => [..._cache[54] || (_cache[54] = [
1668
+ createTextVNode("预设样式配置", -1)
1669
+ ])]),
1670
+ _: 1
1671
+ }),
1672
+ createVNode(_component_el_dropdown_item, { command: "remove" }, {
1673
+ default: withCtx(() => [..._cache[55] || (_cache[55] = [
1674
+ createTextVNode("删除", -1)
1675
+ ])]),
1676
+ _: 1
1677
+ })
1678
+ ]),
1679
+ _: 1
1680
+ })
1681
+ ]),
1682
+ default: withCtx(() => [
1683
+ _cache[56] || (_cache[56] = createElementVNode("i", { class: "el-icon-more" }, null, -1))
1684
+ ]),
1685
+ _: 1
1686
+ }, 8, ["onCommand"])) : createCommentVNode("", true)
1687
+ ]),
1688
+ _cache[57] || (_cache[57] = createElementVNode("div", { class: "dashboard-theme__selected" }, [
1689
+ createElementVNode("span"),
1690
+ createElementVNode("i", { class: "el-icon-check" })
1691
+ ], -1))
1692
+ ], 10, _hoisted_15);
1693
+ }), 128))
1694
+ ])) : (openBlock(), createBlock(_component_dashboard_theme_setting, {
1695
+ key: 1,
1696
+ editTheme: $data.editTheme,
1697
+ value: $data.themeStyles,
1698
+ onChange: $options.changethemeStyles,
1699
+ onSave: $options.savePreset,
1700
+ onMobileEdit: _cache[15] || (_cache[15] = (v) => $data.themeMobilePreview = v)
1701
+ }, null, 8, ["editTheme", "value", "onChange", "onSave"]))
1702
+ ]),
1703
+ createElementVNode("div", _hoisted_21, [
1704
+ createVNode(_component_el_button, {
1705
+ size: "default",
1706
+ onClick: $options.cancelThemePancel
1707
+ }, {
1708
+ default: withCtx(() => [..._cache[58] || (_cache[58] = [
1709
+ createTextVNode("取消", -1)
1710
+ ])]),
1711
+ _: 1
1712
+ }, 8, ["onClick"]),
1713
+ createVNode(_component_el_button, {
1714
+ size: "default",
1715
+ type: "primary",
1716
+ onClick: $options.setTheme
1717
+ }, {
1718
+ default: withCtx(() => [..._cache[59] || (_cache[59] = [
1719
+ createTextVNode("确定", -1)
1720
+ ])]),
1721
+ _: 1
1722
+ }, 8, ["onClick"])
1723
+ ])
1724
+ ])) : createCommentVNode("", true)
1725
+ ]),
1726
+ !$data.previewSuspended && !$data.mobilePreviewVisible ? (openBlock(), createElementBlock("div", _hoisted_22, [
1727
+ $options.isMobileDashboard ? (openBlock(), createBlock(_component_dashboard_mobile, {
1728
+ key: 0,
1729
+ ref: "dashboardDesign",
1730
+ standalone: "",
1731
+ source: $options.mobileDesignSource,
1732
+ "canvas-width": $options.mobileCanvasWidth,
1733
+ "page-id": _ctx.$query.id,
1734
+ "page-meta-id": $options.currentMetaId,
1735
+ "all-component-list": $data.componentList,
1736
+ onSelectItem: $options.selectMobileItem,
1737
+ onEditData: $options.editMobileData,
1738
+ onDeleteItem: $options.deleteMobileItem,
1739
+ onAddInto: $options.addMobileInto,
1740
+ onAddReport: $options.openAddReportDialog,
1741
+ onAddComponent: _cache[16] || (_cache[16] = ($event) => $data.addComponentDialog = true)
1742
+ }, {
1743
+ "component-config": withCtx(() => [
1744
+ $data.selectComponent ? (openBlock(), createBlock(_component_epx_visual_config_panel, {
1745
+ key: 0,
1746
+ component: $data.selectComponent,
1747
+ metaId: $options.currentMetaId,
1748
+ globalConfigs: $data.pageGlobalConfigs,
1749
+ itemConfigs: $data.allComponentConfigs,
1750
+ relationList: $data.relationList,
1751
+ pageParams: $data.pageParams,
1752
+ scopeConfigs: $data.scopeConfigs,
1753
+ "grid-layout": true
1754
+ }, null, 8, ["component", "metaId", "globalConfigs", "itemConfigs", "relationList", "pageParams", "scopeConfigs"])) : createCommentVNode("", true)
1755
+ ]),
1756
+ _: 1
1757
+ }, 8, ["source", "canvas-width", "page-id", "page-meta-id", "all-component-list", "onSelectItem", "onEditData", "onDeleteItem", "onAddInto", "onAddReport"])) : (openBlock(), createBlock(_component_epx_visual_config_dashboard_design, {
1758
+ key: 1,
1759
+ ref: "dashboardDesign",
1760
+ "up-comp-id": $data.upCompId,
1761
+ "component-list": this.selectComponentList,
1762
+ "all-component-list": this.componentList,
1763
+ globalConfigs: $data.pageGlobalConfigs,
1764
+ pageId: _ctx.$query.id,
1765
+ pageMetaId: $options.currentMetaId,
1766
+ itemConfigs: $data.allComponentConfigs,
1767
+ theme: $data.activeTheme,
1768
+ themeStyles: $data.themeStyles,
1769
+ "mobile-preview": $data.themeMobilePreview,
1770
+ onOpenConfig: $options.clickComponent,
1771
+ onChangeItems: _cache[17] || (_cache[17] = (componentList) => $data.selectComponentList = [...componentList]),
1772
+ onAddComponent: _cache[18] || (_cache[18] = ($event) => $data.addComponentDialog = true),
1773
+ onDeleteConfigs: $options.deleteConfigs,
1774
+ onAddReport: $options.openAddReportDialog,
1775
+ onAddReportToDashboard: $options.addReportToDashboard,
1776
+ onAddChartToDashboard: $options.addChartToDashboard,
1777
+ onAddComponentToDashboard: $options.addComponentToDashboard
1778
+ }, null, 8, ["up-comp-id", "component-list", "all-component-list", "globalConfigs", "pageId", "pageMetaId", "itemConfigs", "theme", "themeStyles", "mobile-preview", "onOpenConfig", "onDeleteConfigs", "onAddReport", "onAddReportToDashboard", "onAddChartToDashboard", "onAddComponentToDashboard"]))
1779
+ ])) : createCommentVNode("", true),
1780
+ !$options.isMobileDashboard ? (openBlock(), createBlock(_component_el_drawer, {
1781
+ key: 1,
1782
+ title: "组件配置",
1783
+ "append-to-body": "",
1784
+ direction: "rtl",
1785
+ modelValue: $options.showConfigPanel,
1786
+ "onUpdate:modelValue": _cache[19] || (_cache[19] = ($event) => $options.showConfigPanel = $event)
1787
+ }, {
1788
+ default: withCtx(() => [
1789
+ $options.showConfigPanel ? (openBlock(), createElementBlock("div", _hoisted_23, [
1790
+ createVNode(_component_epx_visual_config_panel, {
1791
+ component: $data.selectComponent,
1792
+ metaId: $options.currentMetaId,
1793
+ globalConfigs: $data.pageGlobalConfigs,
1794
+ itemConfigs: $data.allComponentConfigs,
1795
+ relationList: $data.relationList,
1796
+ pageParams: $data.pageParams,
1797
+ scopeConfigs: $data.scopeConfigs,
1798
+ "grid-layout": true
1799
+ }, null, 8, ["component", "metaId", "globalConfigs", "itemConfigs", "relationList", "pageParams", "scopeConfigs"])
1800
+ ])) : createCommentVNode("", true)
1801
+ ]),
1802
+ _: 1
1803
+ }, 8, ["modelValue"])) : createCommentVNode("", true),
1804
+ createVNode(_component_el_dialog, {
1805
+ title: "添加报表",
1806
+ "append-to-body": "",
1807
+ modelValue: $data.addReportDialog,
1808
+ "onUpdate:modelValue": _cache[24] || (_cache[24] = ($event) => $data.addReportDialog = $event),
1809
+ width: "640px"
1810
+ }, {
1811
+ default: withCtx(() => [
1812
+ $data.addReportDialog ? (openBlock(), createElementBlock("div", _hoisted_24, [
1813
+ createElementVNode("div", _hoisted_25, [
1814
+ _cache[60] || (_cache[60] = createElementVNode("label", null, "报表类型:", -1)),
1815
+ createElementVNode("ul", _hoisted_26, [
1816
+ (openBlock(true), createElementBlock(Fragment, null, renderList($data.reportTypeList, (reportType) => {
1817
+ return openBlock(), createElementBlock("li", {
1818
+ class: normalizeClass({ "report-type__item": true, active: $data.addReportForm.TYPE === reportType.type && ($data.addReportForm.CHART_TYPE === reportType.chartType || $data.addReportForm.TYPE === "1" || $data.addReportForm.TYPE === "numStatistic") }),
1819
+ key: reportType.chartType || reportType.type,
1820
+ onClick: ($event) => $options.setReportType(reportType)
1821
+ }, [
1822
+ createElementVNode("i", {
1823
+ class: normalizeClass(reportType.icon)
1824
+ }, null, 2),
1825
+ createElementVNode("span", null, toDisplayString(reportType.text), 1)
1826
+ ], 10, _hoisted_27);
1827
+ }), 128))
1828
+ ])
1829
+ ]),
1830
+ withDirectives(createElementVNode("div", _hoisted_28, [
1831
+ _cache[61] || (_cache[61] = createElementVNode("label", null, "统计对象:", -1)),
1832
+ createVNode(_component_epx_object, {
1833
+ modelValue: $data.addReportForm.OBJECT,
1834
+ "onUpdate:modelValue": _cache[20] || (_cache[20] = ($event) => $data.addReportForm.OBJECT = $event),
1835
+ fieldConfigs: { attriName: "OBJECT", dataType: "object", attriLabel: "统计对象", codeKey: "FM_ENTITY", state: "EDIT" }
1836
+ }, null, 8, ["modelValue"])
1837
+ ], 512), [
1838
+ [vShow, $data.addReportForm.TYPE !== "dashboardTitle" && $data.addReportForm.TYPE !== "form"]
1839
+ ]),
1840
+ withDirectives(createElementVNode("div", _hoisted_29, [
1841
+ _cache[62] || (_cache[62] = createElementVNode("label", null, "统计对象视图:", -1)),
1842
+ createVNode(_component_epx_object, {
1843
+ modelValue: $data.addReportForm.OBJECT_VIEW,
1844
+ "onUpdate:modelValue": _cache[21] || (_cache[21] = ($event) => $data.addReportForm.OBJECT_VIEW = $event),
1845
+ fieldConfigs: { attriName: "OBJECT_VIEW", dataType: "object", attriLabel: "统计对象", codeKey: "FM_ENTITY_VIEW", scopeParams: [{ field: "ENTITY", values: $data.addReportForm.OBJECT }], state: "EDIT" }
1846
+ }, null, 8, ["modelValue", "fieldConfigs"])
1847
+ ], 512), [
1848
+ [vShow, $data.addReportForm.TYPE !== "numStatistic" && $data.addReportForm.TYPE !== "dashboardTitle" && $data.addReportForm.TYPE !== "form"]
1849
+ ]),
1850
+ withDirectives(createElementVNode("div", _hoisted_30, [
1851
+ _cache[65] || (_cache[65] = createElementVNode("label", null, "表单类型:", -1)),
1852
+ createVNode(_component_el_radio_group, {
1853
+ modelValue: $data.addReportForm.FORM_TYPE,
1854
+ "onUpdate:modelValue": _cache[22] || (_cache[22] = ($event) => $data.addReportForm.FORM_TYPE = $event)
1855
+ }, {
1856
+ default: withCtx(() => [
1857
+ createVNode(_component_el_radio, {
1858
+ label: "formReport",
1859
+ value: "formReport"
1860
+ }, {
1861
+ default: withCtx(() => [..._cache[63] || (_cache[63] = [
1862
+ createTextVNode("Word", -1)
1863
+ ])]),
1864
+ _: 1
1865
+ }),
1866
+ createVNode(_component_el_radio, {
1867
+ label: "excelReport",
1868
+ value: "excelReport"
1869
+ }, {
1870
+ default: withCtx(() => [..._cache[64] || (_cache[64] = [
1871
+ createTextVNode("Excel", -1)
1872
+ ])]),
1873
+ _: 1
1874
+ })
1875
+ ]),
1876
+ _: 1
1877
+ }, 8, ["modelValue"])
1878
+ ], 512), [
1879
+ [vShow, $data.addReportForm.TYPE === "form"]
1880
+ ])
1881
+ ])) : createCommentVNode("", true),
1882
+ createElementVNode("div", _hoisted_31, [
1883
+ createVNode(_component_el_button, {
1884
+ type: "primary",
1885
+ onClick: $options.saveReport
1886
+ }, {
1887
+ default: withCtx(() => [..._cache[66] || (_cache[66] = [
1888
+ createTextVNode("保存", -1)
1889
+ ])]),
1890
+ _: 1
1891
+ }, 8, ["onClick"]),
1892
+ createVNode(_component_el_button, {
1893
+ onClick: _cache[23] || (_cache[23] = ($event) => $data.addReportDialog = false)
1894
+ }, {
1895
+ default: withCtx(() => [..._cache[67] || (_cache[67] = [
1896
+ createTextVNode("返回", -1)
1897
+ ])]),
1898
+ _: 1
1899
+ })
1900
+ ])
1901
+ ]),
1902
+ _: 1
1903
+ }, 8, ["modelValue"]),
1904
+ createVNode(_component_el_dialog, {
1905
+ title: "添加组件",
1906
+ "append-to-body": "",
1907
+ modelValue: $data.addComponentDialog,
1908
+ "onUpdate:modelValue": _cache[25] || (_cache[25] = ($event) => $data.addComponentDialog = $event),
1909
+ width: "960px"
1910
+ }, {
1911
+ default: withCtx(() => [
1912
+ createVNode(_component_epx_visual_component_library_dialog, {
1913
+ "initial-terminal": $options.isMobileDashboard ? "move" : "pc",
1914
+ onClick: $options.addComponentToDashboard
1915
+ }, null, 8, ["initial-terminal", "onClick"])
1916
+ ]),
1917
+ _: 1
1918
+ }, 8, ["modelValue"]),
1919
+ createVNode(_component_el_dialog, {
1920
+ class: "dialog--noheader dialog--nopadding",
1921
+ "append-to-body": "",
1922
+ center: "",
1923
+ modelValue: $data.copyComponentDialog,
1924
+ "onUpdate:modelValue": _cache[28] || (_cache[28] = ($event) => $data.copyComponentDialog = $event),
1925
+ width: "960px"
1926
+ }, {
1927
+ default: withCtx(() => [
1928
+ createVNode(_component_el_tabs, { type: "card" }, {
1929
+ default: withCtx(() => [
1930
+ createVNode(_component_el_tab_pane, { label: "从数据看板选择" }, {
1931
+ default: withCtx(() => [
1932
+ createElementVNode("div", _hoisted_32, [
1933
+ createVNode(_component_epx_search_fields, {
1934
+ metaId: "FM_PAGE_CONFIG",
1935
+ showKeyword: false,
1936
+ fields: ["TITLE", "META_ID"],
1937
+ showFilter: false,
1938
+ onSearch: $options.searchDashboard
1939
+ }, null, 8, ["onSearch"])
1940
+ ]),
1941
+ withDirectives((openBlock(), createElementBlock("ul", _hoisted_33, [
1942
+ (openBlock(true), createElementBlock(Fragment, null, renderList($data.dashboardList, (dashboard) => {
1943
+ return openBlock(), createElementBlock("li", {
1944
+ class: normalizeClass(["dashboard-item", { fold: $data.foldDashboardMap[dashboard.ID] }]),
1945
+ key: dashboard.ID
1946
+ }, [
1947
+ createElementVNode("div", _hoisted_34, [
1948
+ createVNode(_component_el_checkbox, {
1949
+ value: $options.isDashboardSelectAll(dashboard),
1950
+ indeterminate: $options.isDashboardSelect(dashboard),
1951
+ onChange: (v) => $options.changeDashboardSelect(dashboard, v)
1952
+ }, {
1953
+ default: withCtx(() => [
1954
+ createTextVNode(toDisplayString(dashboard.TITLE), 1)
1955
+ ]),
1956
+ _: 2
1957
+ }, 1032, ["value", "indeterminate", "onChange"]),
1958
+ createElementVNode("i", {
1959
+ class: "el-icon-arrow-up",
1960
+ onClick: ($event) => $options.switchDashboardFoldFn(dashboard)
1961
+ }, null, 8, _hoisted_35)
1962
+ ]),
1963
+ createElementVNode("div", _hoisted_36, [
1964
+ createElementVNode("ul", _hoisted_37, [
1965
+ (openBlock(true), createElementBlock(Fragment, null, renderList(dashboard.children, (comp) => {
1966
+ return openBlock(), createElementBlock("li", {
1967
+ class: normalizeClass(["dashboard-comp__item", { "selected": $data.selectedDashboardCompList.includes(dashboard.ID + "-" + comp.id) }]),
1968
+ key: comp.id,
1969
+ onClick: ($event) => $options.selectDashboardComp(dashboard, comp)
1970
+ }, [
1971
+ createElementVNode("i", {
1972
+ class: normalizeClass($options.compIcon(comp))
1973
+ }, null, 2),
1974
+ createElementVNode("span", null, toDisplayString($options.compTitle(comp)), 1),
1975
+ _cache[68] || (_cache[68] = createElementVNode("div", { class: "dashboard-comp__item__select" }, [
1976
+ createElementVNode("span"),
1977
+ createElementVNode("i", { class: "el-icon-check" })
1978
+ ], -1))
1979
+ ], 10, _hoisted_38);
1980
+ }), 128))
1981
+ ])
1982
+ ])
1983
+ ], 2);
1984
+ }), 128)),
1985
+ !$data.dashboardLoading && $data.dashboardTotal === 0 ? (openBlock(), createElementBlock("div", _hoisted_39, [..._cache[69] || (_cache[69] = [
1986
+ createElementVNode("i", { class: "epx-icon-kong" }, null, -1),
1987
+ createElementVNode("p", null, "暂无数据", -1)
1988
+ ])])) : createCommentVNode("", true)
1989
+ ])), [
1990
+ [_directive_loading, $data.dashboardLoading]
1991
+ ]),
1992
+ createVNode(_component_el_pagination, {
1993
+ class: "pagination",
1994
+ "current-page": $data.currentDashboardPage,
1995
+ "onUpdate:currentPage": _cache[26] || (_cache[26] = ($event) => $data.currentDashboardPage = $event),
1996
+ "page-size": 10,
1997
+ layout: "prev, pager, next, jumper",
1998
+ total: $data.dashboardTotal
1999
+ }, null, 8, ["current-page", "total"])
2000
+ ]),
2001
+ _: 1
2002
+ })
2003
+ ]),
2004
+ _: 1
2005
+ }),
2006
+ createElementVNode("div", _hoisted_40, [
2007
+ createVNode(_component_el_button, {
2008
+ type: "primary",
2009
+ onClick: $options.quoteComp
2010
+ }, {
2011
+ default: withCtx(() => [..._cache[70] || (_cache[70] = [
2012
+ createTextVNode("引用", -1)
2013
+ ])]),
2014
+ _: 1
2015
+ }, 8, ["onClick"]),
2016
+ createVNode(_component_el_button, {
2017
+ onClick: _cache[27] || (_cache[27] = ($event) => $data.copyComponentDialog = false)
2018
+ }, {
2019
+ default: withCtx(() => [..._cache[71] || (_cache[71] = [
2020
+ createTextVNode("返回", -1)
2021
+ ])]),
2022
+ _: 1
2023
+ })
2024
+ ])
2025
+ ]),
2026
+ _: 1
2027
+ }, 8, ["modelValue"]),
2028
+ createVNode(_component_el_dialog, {
2029
+ title: "保存为预设主题",
2030
+ "append-to-body": "",
2031
+ modelValue: $data.saveThemeDialog,
2032
+ "onUpdate:modelValue": _cache[31] || (_cache[31] = ($event) => $data.saveThemeDialog = $event),
2033
+ width: "760px"
2034
+ }, {
2035
+ footer: withCtx(() => [
2036
+ createElementVNode("div", null, [
2037
+ createVNode(_component_el_button, {
2038
+ onClick: _cache[30] || (_cache[30] = ($event) => $data.saveThemeDialog = false)
2039
+ }, {
2040
+ default: withCtx(() => [..._cache[72] || (_cache[72] = [
2041
+ createTextVNode("取消", -1)
2042
+ ])]),
2043
+ _: 1
2044
+ }),
2045
+ createVNode(_component_el_button, {
2046
+ onClick: $options.saveTheme,
2047
+ type: "primary"
2048
+ }, {
2049
+ default: withCtx(() => [..._cache[73] || (_cache[73] = [
2050
+ createTextVNode("保存", -1)
2051
+ ])]),
2052
+ _: 1
2053
+ }, 8, ["onClick"])
2054
+ ])
2055
+ ]),
2056
+ default: withCtx(() => [
2057
+ $data.saveThemeDialog ? (openBlock(), createBlock(_component_epx_add_form_item, {
2058
+ key: 0,
2059
+ metaId: "FM_CHART_THEME",
2060
+ "comp-configs": { componentType: "EDIT", column: 1, fields: $options.themeFields },
2061
+ formData: $data.themeFormData,
2062
+ onChange: _cache[29] || (_cache[29] = (v) => $data.themeFormData = v)
2063
+ }, null, 8, ["comp-configs", "formData"])) : createCommentVNode("", true)
2064
+ ]),
2065
+ _: 1
2066
+ }, 8, ["modelValue"])
2067
+ ])),
2068
+ createVNode(_component_el_drawer, {
2069
+ withHeader: false,
2070
+ modelValue: $data.pageSettingDrawer,
2071
+ "onUpdate:modelValue": _cache[34] || (_cache[34] = ($event) => $data.pageSettingDrawer = $event),
2072
+ "append-to-body": "",
2073
+ direction: "rtl",
2074
+ size: 360
2075
+ }, {
2076
+ default: withCtx(() => [
2077
+ createElementVNode("div", _hoisted_41, [
2078
+ createElementVNode("div", _hoisted_42, [
2079
+ _cache[74] || (_cache[74] = createElementVNode("span", { class: "title" }, "全局设置", -1)),
2080
+ createElementVNode("i", {
2081
+ class: "el-icon-close",
2082
+ onClick: _cache[32] || (_cache[32] = ($event) => $data.pageSettingDrawer = false)
2083
+ })
2084
+ ]),
2085
+ createElementVNode("div", _hoisted_43, [
2086
+ (openBlock(), createBlock(resolveDynamicComponent("epx-visual-config-dashboard-setting"), {
2087
+ metaId: $options.currentMetaId,
2088
+ ref: "global",
2089
+ id: "page",
2090
+ "comp-config": $options.pageComponentConfigs,
2091
+ globalConfigs: $data.pageGlobalConfigs,
2092
+ pageRelationList: $data.relationList
2093
+ }, null, 8, ["metaId", "comp-config", "globalConfigs", "pageRelationList"]))
2094
+ ]),
2095
+ createElementVNode("div", _hoisted_44, [
2096
+ createVNode(_component_el_button, {
2097
+ size: "default",
2098
+ onClick: _cache[33] || (_cache[33] = ($event) => $data.pageSettingDrawer = false)
2099
+ }, {
2100
+ default: withCtx(() => [..._cache[75] || (_cache[75] = [
2101
+ createTextVNode("返回", -1)
2102
+ ])]),
2103
+ _: 1
2104
+ })
2105
+ ])
2106
+ ])
2107
+ ]),
2108
+ _: 1
2109
+ }, 8, ["modelValue"]),
2110
+ $options.isMobileDashboard ? (openBlock(), createBlock(_component_el_dialog, {
2111
+ key: 2,
2112
+ modelValue: $data.mobilePreviewVisible,
2113
+ "onUpdate:modelValue": _cache[35] || (_cache[35] = ($event) => $data.mobilePreviewVisible = $event),
2114
+ title: "移动端预览 · " + $options.mobileCanvasWidth + "px",
2115
+ class: "mobile-dashboard-preview-dialog",
2116
+ "append-to-body": "",
2117
+ "align-center": "",
2118
+ "destroy-on-close": "",
2119
+ width: ($options.mobileCanvasWidth + 12) * $options.mobilePreviewScale + 48 + "px"
2120
+ }, {
2121
+ default: withCtx(() => [
2122
+ createElementVNode("div", {
2123
+ class: "mobile-preview-viewport",
2124
+ style: normalizeStyle({ width: ($options.mobileCanvasWidth + 12) * $options.mobilePreviewScale + "px", height: $options.mobilePreviewPhoneHeight * $options.mobilePreviewScale + "px" })
2125
+ }, [
2126
+ createElementVNode("div", {
2127
+ class: "mobile-preview-phone",
2128
+ style: normalizeStyle({ width: $options.mobileCanvasWidth + 12 + "px", height: $options.mobilePreviewPhoneHeight + "px", transform: "scale(" + $options.mobilePreviewScale + ")" })
2129
+ }, [
2130
+ createElementVNode("div", _hoisted_45, [
2131
+ createElementVNode("div", {
2132
+ class: "mobile-preview-phone__title",
2133
+ title: $options.title
2134
+ }, toDisplayString($options.title || "数据看板"), 9, _hoisted_46),
2135
+ createElementVNode("div", _hoisted_47, [
2136
+ $data.mobilePreviewVisible ? (openBlock(), createBlock(_component_dashboard_preview, {
2137
+ key: 0,
2138
+ "comp-id": "mobile-dashboard-preview",
2139
+ "comp-configs": { ...$data.pageGlobalConfigs, themeStyles: $data.themeStyles, items: $data.selectComponentList, itemConfigs: $data.allComponentConfigs }
2140
+ }, null, 8, ["comp-configs"])) : createCommentVNode("", true)
2141
+ ]),
2142
+ _cache[76] || (_cache[76] = createElementVNode("div", {
2143
+ class: "mobile-preview-phone__home",
2144
+ "aria-hidden": "true"
2145
+ }, [
2146
+ createElementVNode("span")
2147
+ ], -1))
2148
+ ])
2149
+ ], 4)
2150
+ ], 4)
2151
+ ]),
2152
+ _: 1
2153
+ }, 8, ["modelValue", "title", "width"])) : createCommentVNode("", true)
2154
+ ], 2);
2155
+ }
2156
+ const Dashboard = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-7316d966"]]);
2157
+ export {
2158
+ Dashboard as default
2159
+ };