vue2-client 1.12.59 → 1.12.61

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 (388) hide show
  1. package/.cursorrules +19 -19
  2. package/.env.gaslink +19 -19
  3. package/.env.his +19 -19
  4. package/.env.iot +19 -19
  5. package/.env.liuli +19 -19
  6. package/.env.revenue +19 -19
  7. package/.env.scada +19 -19
  8. package/.eslintrc.js +90 -90
  9. package/CHANGELOG.md +824 -824
  10. package/Components.md +60 -60
  11. package/docs/Logic/345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +45 -45
  12. package/docs/LowCode/lowcode.md +155 -155
  13. package/docs/LowCode/lowcodeForDeveloper.md +230 -230
  14. package/docs/index.md +30 -30
  15. package/index.js +31 -31
  16. package/jest-transform-stub.js +8 -8
  17. package/jest.setup.js +7 -7
  18. package/jsconfig.json +19 -19
  19. package/package.json +108 -108
  20. package/public/his/editor/editor.html +51 -51
  21. package/public/his/editor/mock/bind_data.html +779 -779
  22. package/public/his/editor/mock/data_table.html +40 -40
  23. package/public/his/editor/mock/sign.html +75 -75
  24. package/public/his/editor/vender/JsBarcode.all.js +3669 -3669
  25. package/public/his/editor/vender/date97/My97DatePicker.htm +65 -65
  26. package/public/his/editor/vender/date97/WdatePicker.js +677 -677
  27. package/public/his/editor/vender/date97/calendar.js +4 -4
  28. package/public/his/editor/vender/date97/lang/en.js +13 -13
  29. package/public/his/editor/vender/date97/lang/zh-cn.js +13 -13
  30. package/public/his/editor/vender/date97/lang/zh-tw.js +13 -13
  31. package/public/his/editor/vender/date97/skin/WdatePicker.css +10 -10
  32. package/public/his/editor/vender/date97/skin/default/datepicker.css +328 -328
  33. package/public/his/editor/vender/date97/skin/ext/datepicker.css +308 -308
  34. package/public/his/editor/vender/date97/skin/whyGreen/datepicker.css +255 -255
  35. package/public/his/editor/vender/diff.js +1627 -1627
  36. package/public/his/editor/vender/editor.js +1 -1
  37. package/public/his/editor/vender/fabric.js +31187 -31187
  38. package/public/his/editor/vender/jquery/jquery.base64.js +190 -190
  39. package/public/his/editor/vender/jquery/jquery.js +10872 -10872
  40. package/public/his/editor/vender/jquery/jquery.print.js +255 -255
  41. package/public/his/editor/vender/jquery/zTreeStyle/zTreeStyle.css +96 -96
  42. package/public/his/editor/vender/mui/mui.min.css +4 -4
  43. package/public/his/editor/vender/mui/mui.min.js +5 -5
  44. package/public/his/editor/vender/mui/mui.picker.min.css +6 -6
  45. package/public/his/editor/vender/mui/mui.picker.min.js +6 -6
  46. package/public/his/editor/vender/qrcode.js +7 -7
  47. package/public/his/editor/vender/requirejs/require.js +2145 -2145
  48. package/public/his/editor/vender/signature/jSignature.CompressorSVG.js +518 -518
  49. package/public/his/editor/vender/signature/jSignature.UndoButton.js +164 -164
  50. package/public/his/editor/vender/signature/jSignature.js +1486 -1486
  51. package/public/his/editor/vender/validator.js +5094 -5094
  52. package/public/his/editor/vender/weui/weui.css +5659 -5659
  53. package/public/his/editor/vender/weui/weui.min.css +4 -4
  54. package/public/his/editor/vender/weui/weui.min.js +11 -11
  55. package/public/index.html +27 -27
  56. package/src/ReportView.js +19 -19
  57. package/src/assets/img/querySlotDemo.svg +15 -15
  58. package/src/assets/svg/badtwo.svg +1 -1
  59. package/src/assets/svg/goodtwo.svg +1 -1
  60. package/src/base-client/components/AI/AskAiBtn.vue +136 -136
  61. package/src/base-client/components/AI/demo.vue +31 -31
  62. package/src/base-client/components/common/AMisRender/index.js +3 -3
  63. package/src/base-client/components/common/AMisRender/index.vue +263 -263
  64. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +470 -470
  65. package/src/base-client/components/common/AddressSearchCombobox/IcMapIcon.vue +16 -16
  66. package/src/base-client/components/common/AddressSearchCombobox/demo.vue +36 -36
  67. package/src/base-client/components/common/AddressSearchCombobox/ic_map.svg +6 -6
  68. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  69. package/src/base-client/components/common/CitySelect/index.js +3 -3
  70. package/src/base-client/components/common/CitySelect/index.md +109 -109
  71. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  72. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +1014 -1014
  73. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  74. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  75. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +452 -452
  76. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +511 -511
  77. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  78. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  79. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +149 -149
  80. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  81. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  82. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  83. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  84. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  85. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  86. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorModal.vue +108 -108
  87. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorPanel.vue +413 -413
  88. package/src/base-client/components/common/LowCodeComponent/LowCodePageOrganization.vue +502 -502
  89. package/src/base-client/components/common/LowCodeComponent/LowCodeRender.vue +728 -728
  90. package/src/base-client/components/common/LowCodeComponent/LowCodeRenderEnter.vue +29 -29
  91. package/src/base-client/components/common/LowCodeComponent/LowCodeUIStore.vue +219 -219
  92. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeAddPageModal.vue +117 -117
  93. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeCustomJSModal.vue +80 -80
  94. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeEventEditorModal.vue +398 -398
  95. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLifeCycleModal.vue +65 -65
  96. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicCallbackModal.vue +64 -64
  97. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicParamModal.vue +73 -73
  98. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeRunFunctionParamModal.vue +76 -76
  99. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  100. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  101. package/src/base-client/components/common/Recording/Recording.vue +243 -243
  102. package/src/base-client/components/common/Recording/index.js +3 -3
  103. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  104. package/src/base-client/components/common/Tree/index.js +2 -2
  105. package/src/base-client/components/common/Upload/index.js +3 -3
  106. package/src/base-client/components/common/XAddForm/XAddForm.vue +113 -113
  107. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +1156 -1156
  108. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  109. package/src/base-client/components/common/XAddNativeFormOA/XAddNativeFormOA.vue +303 -303
  110. package/src/base-client/components/common/XAddNativeFormOA/index.js +3 -3
  111. package/src/base-client/components/common/XAddNativeFormOA/index.md +146 -146
  112. package/src/base-client/components/common/XAddReport/index.js +3 -3
  113. package/src/base-client/components/common/XAddReport/index.md +56 -56
  114. package/src/base-client/components/common/XBadge/XBadge.vue +94 -94
  115. package/src/base-client/components/common/XButtons/XButtonDemo.vue +28 -28
  116. package/src/base-client/components/common/XButtons/XButtons.vue +71 -71
  117. package/src/base-client/components/common/XButtons/index.js +3 -3
  118. package/src/base-client/components/common/XButtons/index.md +61 -61
  119. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  120. package/src/base-client/components/common/XCheckList/XCheckList.vue +106 -106
  121. package/src/base-client/components/common/XCheckList/XCheckListDemo.vue +41 -41
  122. package/src/base-client/components/common/XCollapse/XCollapse.vue +176 -154
  123. package/src/base-client/components/common/XCollapse/XCollapseDemo.vue +15 -0
  124. package/src/base-client/components/common/XDataCard/index.js +3 -3
  125. package/src/base-client/components/common/XDataCard/index.md +1 -1
  126. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  127. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  128. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  129. package/src/base-client/components/common/XDatePicker/demo.vue +153 -153
  130. package/src/base-client/components/common/XDatePicker/index.vue +269 -269
  131. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  132. package/src/base-client/components/common/XDescriptions/index.md +83 -83
  133. package/src/base-client/components/common/XDetailsView/XDetailsView.vue +238 -238
  134. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  135. package/src/base-client/components/common/XForm/XForm.vue +404 -404
  136. package/src/base-client/components/common/XForm/XFormItem.vue +1310 -1310
  137. package/src/base-client/components/common/XForm/XStatusButton.vue +54 -54
  138. package/src/base-client/components/common/XForm/XTreeSelect.vue +270 -270
  139. package/src/base-client/components/common/XForm/index.md +178 -178
  140. package/src/base-client/components/common/XForm/itemComponent/XClickChangeBtn/index.vue +49 -49
  141. package/src/base-client/components/common/XFormGroup/index.js +3 -3
  142. package/src/base-client/components/common/XFormGroup/index.md +38 -38
  143. package/src/base-client/components/common/XFormGroupDetails/XFormGroupDetails.vue +72 -72
  144. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  145. package/src/base-client/components/common/XFormTable/index.md +92 -92
  146. package/src/base-client/components/common/XImportExcel/XImportExcel.vue +167 -167
  147. package/src/base-client/components/common/XLabelSelect/XLabelSelect.vue +110 -110
  148. package/src/base-client/components/common/XLabelSelect/XLabelSelectDemo.vue +35 -35
  149. package/src/base-client/components/common/XLicensePlate/XLicensePlate.vue +193 -193
  150. package/src/base-client/components/common/XLicensePlate/XLicensePlateDemo.vue +48 -48
  151. package/src/base-client/components/common/XPrint/OpenInvoice.vue +21 -21
  152. package/src/base-client/components/common/XPrint/PrintBill.vue +302 -302
  153. package/src/base-client/components/common/XPrint/PrintHtml.js +98 -98
  154. package/src/base-client/components/common/XPrint/css/hiPrintCss.js +359 -359
  155. package/src/base-client/components/common/XPrint/css/lodopCss.js +26 -26
  156. package/src/base-client/components/common/XPrint/css/print-lock.css +351 -351
  157. package/src/base-client/components/common/XPrint/index.vue +97 -97
  158. package/src/base-client/components/common/XReport/XReport.vue +892 -892
  159. package/src/base-client/components/common/XReport/XReportDesign.vue +463 -463
  160. package/src/base-client/components/common/XReport/XReportJsonRender.vue +381 -381
  161. package/src/base-client/components/common/XReport/index.js +3 -3
  162. package/src/base-client/components/common/XReport/index.md +44 -44
  163. package/src/base-client/components/common/XReport/print.js +186 -186
  164. package/src/base-client/components/common/XReportDrawer/index.js +3 -3
  165. package/src/base-client/components/common/XReportGrid/XReportDesign.vue +616 -398
  166. package/src/base-client/components/common/XReportGrid/XReportTrGroup.vue +700 -699
  167. package/src/base-client/components/common/XReportGrid/index.js +3 -3
  168. package/src/base-client/components/common/XReportGrid/index.md +44 -44
  169. package/src/base-client/components/common/XReportSlot/XReportSlot.vue +110 -110
  170. package/src/base-client/components/common/XReportSlot/index.js +3 -3
  171. package/src/base-client/components/common/XReportSlot/index.md +48 -48
  172. package/src/base-client/components/common/XSimpleDescriptions/XSimpleDescriptions.vue +166 -166
  173. package/src/base-client/components/common/XSimpleDescriptions/index.js +3 -3
  174. package/src/base-client/components/common/XSimpleDescriptions/index.md +7 -7
  175. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  176. package/src/base-client/components/common/XStepView/index.js +3 -3
  177. package/src/base-client/components/common/XStepView/index.md +31 -31
  178. package/src/base-client/components/common/XTab/XTabDemo.vue +22 -22
  179. package/src/base-client/components/common/XTab/index.js +3 -3
  180. package/src/base-client/components/common/XTable/CustomFuncCel.vue +51 -51
  181. package/src/base-client/components/common/XTable/TableCellRenderer.vue +161 -161
  182. package/src/base-client/components/common/XTable/index.md +255 -255
  183. package/src/base-client/components/common/XTagGroup/index.vue +52 -52
  184. package/src/base-client/components/common/XTree/XTree.vue +424 -424
  185. package/src/base-client/components/common/XTree/index.js +3 -3
  186. package/src/base-client/components/common/XTree/index.md +36 -36
  187. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +113 -113
  188. package/src/base-client/components/common/XTreeOne/XTreeOnePro.vue +128 -128
  189. package/src/base-client/components/common/richTextModal/index.vue +56 -56
  190. package/src/base-client/components/common/richTextModal/richDemo.vue +48 -48
  191. package/src/base-client/components/his/XHisEditor/index.js +3 -3
  192. package/src/base-client/components/his/XList/XList.vue +86 -0
  193. package/src/base-client/components/his/XSidebar/XSidebar.vue +1 -2
  194. package/src/base-client/components/index.js +51 -51
  195. package/src/base-client/components/layout/XPageView/XErrorView.vue +11 -11
  196. package/src/base-client/components/layout/XPageView/XPageView.vue +155 -155
  197. package/src/base-client/components/layout/XPageView/index.js +3 -3
  198. package/src/base-client/components/layout/XPageView/index.md +38 -38
  199. package/src/base-client/components/layout/XTreeView/XTreeView.vue +130 -130
  200. package/src/base-client/components/layout/XTreeView/index.js +3 -3
  201. package/src/base-client/components/layout/XTreeView/index.md +46 -46
  202. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  203. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  204. package/src/base-client/plugins/AppData.js +126 -126
  205. package/src/base-client/plugins/Config.js +19 -19
  206. package/src/base-client/plugins/GetLoginInfoService.js +183 -183
  207. package/src/base-client/plugins/Recording.js +258 -258
  208. package/src/base-client/plugins/index.js +23 -23
  209. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  210. package/src/components/Charts/Bar.vue +62 -62
  211. package/src/components/Charts/ChartCard.vue +134 -134
  212. package/src/components/Charts/Liquid.vue +67 -67
  213. package/src/components/Charts/MiniArea.vue +39 -39
  214. package/src/components/Charts/MiniBar.vue +39 -39
  215. package/src/components/Charts/MiniProgress.vue +75 -75
  216. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  217. package/src/components/Charts/Radar.vue +68 -68
  218. package/src/components/Charts/RankList.vue +77 -77
  219. package/src/components/Charts/TagCloud.vue +113 -113
  220. package/src/components/Charts/TransferBar.vue +64 -64
  221. package/src/components/Charts/Trend.vue +82 -82
  222. package/src/components/Charts/chart.less +12 -12
  223. package/src/components/Charts/smooth.area.less +13 -13
  224. package/src/components/CodeMirror/inedx.vue +118 -118
  225. package/src/components/CodeMirror/setting.js +40 -40
  226. package/src/components/FilePreview/FilePreview.vue +181 -181
  227. package/src/components/FilePreview/FilePreviewDemo.vue +30 -30
  228. package/src/components/HeightScanner/index.vue +571 -571
  229. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  230. package/src/components/NumberInfo/index.js +3 -3
  231. package/src/components/NumberInfo/index.less +54 -54
  232. package/src/components/NumberInfo/index.md +43 -43
  233. package/src/components/STable/index.js +434 -434
  234. package/src/components/card/ChartCard.vue +79 -79
  235. package/src/components/chart/Bar.vue +60 -60
  236. package/src/components/chart/MiniArea.vue +67 -67
  237. package/src/components/chart/MiniBar.vue +59 -59
  238. package/src/components/chart/MiniProgress.vue +57 -57
  239. package/src/components/chart/Radar.vue +80 -80
  240. package/src/components/chart/RankingList.vue +60 -60
  241. package/src/components/chart/Trend.vue +79 -79
  242. package/src/components/chart/index.less +9 -9
  243. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  244. package/src/components/checkbox/ImgCheckbox.vue +117 -117
  245. package/src/components/checkbox/ImgCheckboxGroup.vue +76 -76
  246. package/src/components/checkbox/index.js +9 -9
  247. package/src/components/exception/ExceptionPage.vue +70 -70
  248. package/src/components/g2Charts/constants.js +202 -202
  249. package/src/components/g2Charts/demo.vue +808 -808
  250. package/src/components/g2Charts/designer.vue +228 -228
  251. package/src/components/g2Charts/designerBaseConfig.vue +61 -61
  252. package/src/components/g2Charts/designerDataConfig.vue +259 -259
  253. package/src/components/g2Charts/designerStyleConfig.vue +16 -16
  254. package/src/components/g2Charts/index.vue +397 -397
  255. package/src/components/index.js +36 -36
  256. package/src/components/input/IInput.vue +66 -66
  257. package/src/components/menu/SideMenu.vue +75 -75
  258. package/src/components/menu/menu.js +273 -273
  259. package/src/components/setting/Setting.vue +234 -234
  260. package/src/components/tool/AStepItem.vue +60 -60
  261. package/src/config/CreateQueryConfig.js +325 -325
  262. package/src/config/default/antd.config.js +89 -89
  263. package/src/config/default/setting.config.js +55 -55
  264. package/src/font-style/font.css +4 -4
  265. package/src/layouts/CommonLayout.vue +56 -56
  266. package/src/layouts/PageLayout.vue +151 -151
  267. package/src/layouts/SinglePageView.vue +136 -136
  268. package/src/layouts/header/AdminHeader.vue +132 -132
  269. package/src/layouts/header/HeaderNotice.vue +177 -177
  270. package/src/layouts/header/InstitutionDetail.vue +181 -181
  271. package/src/layouts/tabs/TabsHead.vue +189 -189
  272. package/src/layouts/tabs/TabsView.vue +389 -389
  273. package/src/lib.js +1 -1
  274. package/src/main.js +34 -34
  275. package/src/mixins/formValidationMixin.js +46 -46
  276. package/src/mock/extend/index.js +84 -84
  277. package/src/mock/goods/index.js +108 -108
  278. package/src/pages/AMisDemo/AMisDemo.vue +325 -325
  279. package/src/pages/AMisDemo/AMisDemo2.vue +74 -74
  280. package/src/pages/DefaultExample/index.vue +77 -77
  281. package/src/pages/DynamicStatistics/ChartSelector.vue +331 -331
  282. package/src/pages/DynamicStatistics/DataTabs.vue +83 -83
  283. package/src/pages/DynamicStatistics/DynamicTable.vue +128 -128
  284. package/src/pages/DynamicStatistics/EvaluationArea.vue +69 -69
  285. package/src/pages/DynamicStatistics/FavoriteList.vue +50 -50
  286. package/src/pages/DynamicStatistics/QuestionHistoryAndFavorites.vue +591 -591
  287. package/src/pages/DynamicStatistics/SearchBar.vue +192 -192
  288. package/src/pages/DynamicStatistics/index.vue +282 -282
  289. package/src/pages/Example/childIndex.vue +15 -15
  290. package/src/pages/Example/index.vue +30 -30
  291. package/src/pages/NewDynamicStatistics/ChartSelector.vue +331 -331
  292. package/src/pages/NewDynamicStatistics/DataTabs.vue +122 -122
  293. package/src/pages/NewDynamicStatistics/DynamicTable.vue +128 -128
  294. package/src/pages/NewDynamicStatistics/EvaluationArea.vue +69 -69
  295. package/src/pages/NewDynamicStatistics/FavoriteList.vue +50 -50
  296. package/src/pages/NewDynamicStatistics/QuestionHistoryAndFavorites.vue +289 -289
  297. package/src/pages/NewDynamicStatistics/SearchBar.vue +193 -193
  298. package/src/pages/NewDynamicStatistics/index.vue +258 -258
  299. package/src/pages/Recording/index.vue +77 -77
  300. package/src/pages/ServiceReview/index.vue +284 -284
  301. package/src/pages/SubExample/index.vue +26 -26
  302. package/src/pages/WorkflowDetail/WorkflowDetail.vue +235 -235
  303. package/src/pages/WorkflowDetail/WorkflowPageDetail/LeaveMessage.vue +131 -131
  304. package/src/pages/WorkflowDetail/WorkflowPageDetail/TrimTextTail.vue +23 -23
  305. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformation.vue +302 -302
  306. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformationDetails.vue +276 -276
  307. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandleReso.vue +997 -997
  308. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowTimeline.vue +222 -222
  309. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkOrderParentDetails.vue +233 -233
  310. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowDetailResso.vue +261 -261
  311. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowListResolution.vue +248 -248
  312. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowLog.vue +73 -73
  313. package/src/pages/XPageViewExample/index.vue +38 -38
  314. package/src/pages/XReportView/index.vue +64 -64
  315. package/src/pages/XTreeOneProExample/index.vue +67 -67
  316. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  317. package/src/pages/login/Login.vue +378 -378
  318. package/src/pages/login/LoginV3.vue +389 -389
  319. package/src/pages/lowCode/lowCodeEditor.vue +1219 -1219
  320. package/src/pages/lowCode/lowCodeRenderPage.vue +43 -43
  321. package/src/pages/report/ReportTable.js +124 -124
  322. package/src/pages/resourceManage/orgListManage.vue +98 -98
  323. package/src/pages/system/dictionary/index.vue +44 -44
  324. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  325. package/src/pages/system/monitor/operLog/index.vue +37 -37
  326. package/src/pages/system/settings/modifyPassword.vue +117 -117
  327. package/src/pages/system/ticket/index.vue +480 -480
  328. package/src/pages/system/ticket/submitTicketSuccess.vue +484 -484
  329. package/src/pages/userInfoDetailManage/ChangeMeterRecordQuery/index.vue +64 -64
  330. package/src/pages/userInfoDetailManage/FillCardRecordQuery/index.vue +76 -76
  331. package/src/pages/userInfoDetailManage/FillGasRecordQuery/index.vue +74 -74
  332. package/src/pages/userInfoDetailManage/InfoChangeRecordQuery/index.vue +64 -64
  333. package/src/pages/userInfoDetailManage/InstructRecordQuery/index.vue +64 -64
  334. package/src/pages/userInfoDetailManage/MachineRecordQuery/index.vue +74 -74
  335. package/src/pages/userInfoDetailManage/MeterParamRecordQuery/index.vue +64 -64
  336. package/src/pages/userInfoDetailManage/OtherChargeRecordQuery/index.vue +74 -74
  337. package/src/pages/userInfoDetailManage/TransferRecordQuery/index.vue +66 -66
  338. package/src/pages/userInfoDetailManage/UserChargeRecordQuery/index.vue +92 -92
  339. package/src/pages/userInfoDetailManage/UserHandRecordQuery/index.vue +86 -86
  340. package/src/pages/userInfoDetailManage/UserRecordQuery/index.vue +73 -73
  341. package/src/pages/userInfoDetailManage/WatchCollectionRecordQuery/index.vue +64 -64
  342. package/src/pages/userInfoDetailManage/userInfoDetailQueryTabs.vue +132 -132
  343. package/src/plugins/EventLogPlugin.js +33 -33
  344. package/src/plugins/FindParentsData.js +17 -17
  345. package/src/router/async/config.async.js +35 -35
  346. package/src/router/async/router.map.js +122 -119
  347. package/src/router/index.js +27 -27
  348. package/src/router.js +19 -19
  349. package/src/services/DataModel.js +30 -30
  350. package/src/services/LodopFuncs.js +137 -137
  351. package/src/services/api/TicketDetailsViewApi.js +46 -46
  352. package/src/services/api/cas.js +79 -79
  353. package/src/services/api/common.js +346 -346
  354. package/src/services/api/entity.js +18 -18
  355. package/src/services/api/index.js +17 -17
  356. package/src/services/api/restTools.js +145 -145
  357. package/src/services/api/workFlow.js +63 -63
  358. package/src/services/apiService.js +16 -16
  359. package/src/store/modules/account.js +115 -115
  360. package/src/store/modules/index.js +5 -5
  361. package/src/store/modules/lowCode.js +33 -33
  362. package/src/store/modules/setting.js +119 -119
  363. package/src/theme/default/style.less +58 -58
  364. package/src/theme/global.less +159 -159
  365. package/src/utils/authority-utils.js +85 -85
  366. package/src/utils/errorCode.js +6 -6
  367. package/src/utils/formatter.js +74 -74
  368. package/src/utils/htmlToPDF.js +108 -108
  369. package/src/utils/htmlToPDFApi.js +5 -5
  370. package/src/utils/login.js +188 -188
  371. package/src/utils/lowcode/lowcodeComponentMixin.js +120 -120
  372. package/src/utils/lowcode/lowcodeLog.js +29 -29
  373. package/src/utils/lowcode/lowcodeUtils.js +373 -373
  374. package/src/utils/lowcode/registerComponentForEditor.js +1 -1
  375. package/src/utils/lowcode/registerComponentForRender.js +11 -11
  376. package/src/utils/map-utils.js +47 -47
  377. package/src/utils/reg.js +95 -95
  378. package/src/utils/runEvalFunction.js +14 -14
  379. package/src/utils/theme-color-replacer-extend.js +92 -92
  380. package/src/utils/util.js +329 -329
  381. package/src/utils/waterMark.js +31 -31
  382. package/test/Amis.spec.js +164 -164
  383. package/test/Tree.spec.js +168 -168
  384. package/test/myDialog.spec.js +47 -47
  385. package/test/util.test.js +53 -53
  386. package/test/v3Api.test.js +1984 -1984
  387. package/vue.config.js +214 -214
  388. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
@@ -1,398 +1,616 @@
1
- <template>
2
- <div>
3
- <template v-if="isWidget">
4
- <!-- 插槽展示 -->
5
- <x-report-tr-group
6
- v-for="(row, rowIndex) in activatedConfig.columns"
7
- @updateImg="updateImg"
8
- @selectRow="selectRow"
9
- :show-img-in-cell="showImgInCell"
10
- :server-name="serverName"
11
- :env="env"
12
- :key="rowIndex"
13
- :columns="row"
14
- :no-top-border="noTopBorder"
15
- :config-data="activatedConfig.data"
16
- :config="activatedConfig"
17
- :display="true">
18
- </x-report-tr-group>
19
- </template>
20
- <template v-else>
21
- <div
22
- :class=" noPadding ? 'reportMainNoPadding' : 'reportMain'"
23
- :style="activatedConfig.width > 0 ? ('width:' + activatedConfig.width + 'px') : undefined">
24
- <!-- 主体表格 -->
25
- <table class="reportTable" v-if="render" :style="activatedConfig.style ? activatedConfig.style : undefined">
26
- <tbody class="reportTable">
27
- <!-- 插槽展示 -->
28
- <x-report-tr-group
29
- :key="rowIndex"
30
- v-for="(row, rowIndex) in activatedConfig.columns"
31
- @selectRow="selectRow"
32
- @slotRendered="slotRendered"
33
- :server-name="serverName"
34
- :env="env"
35
- :columns="row"
36
- :config-data="activatedConfig.data"
37
- :config="activatedConfig"
38
- :display="true">
39
- </x-report-tr-group>
40
- </tbody>
41
- </table>
42
- </div>
43
- </template>
44
- </div>
45
- </template>
46
-
47
- <script>
48
- import XReportTrGroup from './XReportTrGroup.vue'
49
- import { getConfigByName } from '@vue2-client/services/api/common'
50
- import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
51
-
52
- export default {
53
- name: 'XReportDesign',
54
- props: {
55
- // 配置
56
- config: {
57
- type: Object,
58
- require: true,
59
- default: () => {
60
- }
61
- },
62
- showImgInCell: {
63
- type: Boolean,
64
- default: false
65
- },
66
- // 是否是展示用
67
- forDisplay: {
68
- type: Boolean,
69
- default: false
70
- },
71
- // 命名空间
72
- serverName: {
73
- type: String,
74
- default: 'af-system'
75
- },
76
- // 环境
77
- env: {
78
- type: String,
79
- default: 'prod'
80
- },
81
- // 是否只能展示不可编辑
82
- displayOnly: {
83
- type: Boolean,
84
- default: false
85
- },
86
- // 插槽名
87
- slotConfigName: {
88
- type: String,
89
- default: undefined
90
- },
91
- // 表格没有边距
92
- noPadding: {
93
- type: Boolean,
94
- default: true
95
- },
96
- // 表格没有上边框,与noPadding搭配可以实现连续表格
97
- noTopBorder: {
98
- type: Boolean,
99
- default: false
100
- },
101
- },
102
- components: {
103
- XFormTable,
104
- XReportTrGroup
105
- },
106
- inject: ['isWidget'],
107
- provide () {
108
- return {
109
- setColSpanByName: this.setColSpanByName
110
- }
111
- },
112
- data () {
113
- return {
114
- // 表单的数据
115
- data: this.config.data,
116
- // 插槽配置
117
- slotConfig: undefined,
118
- // 控制是否渲染
119
- render: false,
120
- // 用于展示的配置
121
- activatedConfig: {}
122
- }
123
- },
124
- methods: {
125
- slotRendered () {
126
- this.$emit('slotRendered')
127
- },
128
- updateImg (data) {
129
- this.$emit('updateImg', data)
130
- },
131
- selectRow (selectedRowKeys, selectedRows) {
132
- this.table_selectedRowKeys = selectedRowKeys
133
- this.table_selectedRows = selectedRows
134
- console.log('XReportDesign')
135
- this.$emit('selectRow', selectedRowKeys, selectedRows)
136
- },
137
- setColSpanByName (componentName, colSpan) {
138
- // 处理columns配置(二维数组结构)
139
- const processColumns = (columns) => {
140
- columns.forEach((row) => {
141
- row.forEach((cell, index) => {
142
- if (Array.isArray(cell)) {
143
- processColumns(cell) // 递归处理嵌套数组
144
- } else if (cell.slotRef === componentName) {
145
- // 使用Vue.set确保响应式更新
146
- this.$set(row[index], 'colSpan', colSpan)
147
- this.$set(row[index], '_isManualColSpan', true)
148
- }
149
- })
150
- })
151
- }
152
-
153
- // 处理table配置(二维数组结构)
154
- const processTable = (table) => {
155
- table.forEach((row) => {
156
- row.forEach((cell, index) => {
157
- // 同时检查顶层和def中的slotRef
158
- const isTargetCell =
159
- cell.slotRef === componentName ||
160
- cell.def?.slotRef === componentName
161
-
162
- if (isTargetCell) {
163
- // 同时更新顶层和def中的colSpan
164
- this.$set(row[index], 'colSpan', colSpan)
165
- this.$set(row[index], '_isManualColSpan', true)
166
- if (cell.def) {
167
- this.$set(row[index].def, 'colSpan', colSpan)
168
- this.$set(row[index].def, '_isManualColSpan', true)
169
- }
170
- }
171
- })
172
- })
173
- }
174
-
175
- // 强制刷新视图
176
- const forceUpdate = () => {
177
- this.$nextTick(() => {
178
- // 创建新对象引用以触发watch
179
- this.activatedConfig = {
180
- ...this.activatedConfig,
181
- _version: Date.now()
182
- }
183
- this.$forceUpdate()
184
- })
185
- }
186
-
187
- // 处理当前激活的配置
188
- if (this.activatedConfig?.columns) {
189
- processColumns(this.activatedConfig.columns)
190
- }
191
- if (this.activatedConfig?.table) {
192
- processTable(this.activatedConfig.table)
193
- }
194
-
195
- forceUpdate()
196
- },
197
- },
198
- created () {
199
- console.log('>>>> xreportdesign 渲染', JSON.stringify(this.config, null, 2))
200
- if (this.slotConfigName) {
201
- getConfigByName(this.slotConfigName, undefined, res => {
202
- this.slotConfig = res
203
- res.data = { ...res.data, ...this.data }
204
- this.config.data = res.data
205
- this.activatedConfig = res
206
- this.render = true
207
- }, this.env === 'dev')
208
- } else {
209
- this.activatedConfig = this.config
210
- this.render = true
211
- }
212
- this.activatedConfig.columns.forEach(row => {
213
- if (row[0] && row[0].type && row[0].type === 'list' && row[0].listLength === 1) {
214
- row.forEach(cell => {
215
- cell.listLength = this.activatedConfig.data[cell.dataIndex].length
216
- })
217
- }
218
- })
219
- },
220
- mounted () {
221
- },
222
- watch: {
223
- config: {
224
- deep: true,
225
- handler (newVal) {
226
- }
227
- },
228
- activatedConfig: {
229
- deep: true,
230
- handler (val) {
231
- console.log('>>>> activatedConfig: ', val)
232
- }
233
- }
234
- }
235
- }
236
- </script>
237
-
238
- <style lang="less" scoped>
239
- .img {
240
- width: 95%;
241
- height: 180px;
242
- object-fit: cover;
243
- }
244
-
245
- .reportMain {
246
- text-align: center;
247
- margin: 0 auto;
248
- font-size: 16px;
249
- color: #000;
250
- background-color: #fff;
251
- border-radius: 8px;
252
-
253
- .reportTitle {
254
- font-weight: bold;
255
- }
256
-
257
- .subTitle {
258
- display: flex;
259
- justify-content: space-between;
260
- margin-bottom: 1%;
261
-
262
- .subTitleItems {
263
- max-width: 30%;
264
- }
265
- }
266
-
267
- .inputsDiv {
268
- display: flex;
269
- justify-content: space-between;
270
-
271
- .inputsDivItem {
272
- display: flex;
273
- align-items: center;
274
- padding: 0 4px;
275
- white-space: nowrap;
276
-
277
- .inputsDivItemLabel {
278
- padding: 0 4px;
279
- }
280
- }
281
- }
282
-
283
- .reportTable {
284
- width: 100%;
285
- border-collapse: collapse;
286
- table-layout: fixed;
287
- word-break: break-all;
288
- }
289
- }
290
-
291
- .reportMainForDisplay {
292
- text-align: center;
293
- margin: 10% auto;
294
- font-size: 16px;
295
- color: #000;
296
- background-color: #fff;
297
- border-radius: 8px;
298
-
299
- .reportTitle {
300
- font-weight: bold;
301
- }
302
-
303
- .subTitle {
304
- display: flex;
305
- justify-content: space-between;
306
-
307
- .subTitleItems {
308
- max-width: 30%;
309
- }
310
- }
311
-
312
- .inputsDiv {
313
- display: flex;
314
- justify-content: space-around;
315
-
316
- .inputsDivItem {
317
- display: flex;
318
- align-items: center;
319
- padding: 0 4px;
320
- white-space: nowrap;
321
-
322
- .inputsDivItemLabel {
323
- padding: 0 4px;
324
- }
325
- }
326
- }
327
-
328
- .reportTable {
329
- width: 100%;
330
- border-collapse: collapse;
331
- table-layout: fixed;
332
- word-break: break-all;
333
- }
334
- }
335
-
336
- .reportMainNoPadding {
337
- // text-align: center;
338
- margin: 0 auto;
339
- font-size: 16px;
340
- color: #000;
341
- // background-color: #fff;
342
- border-radius: 8px;
343
- height: auto;
344
- min-height: 20vh;
345
- overflow-y: auto;
346
- overflow-x: hidden;
347
-
348
- .reportTitle {
349
- font-weight: bold;
350
- }
351
-
352
- .subTitle {
353
- display: flex;
354
- justify-content: space-between;
355
-
356
- .subTitleItems {
357
- max-width: 30%;
358
- }
359
- }
360
-
361
- .inputsDiv {
362
- display: flex;
363
- justify-content: space-between;
364
-
365
- .inputsDivItem {
366
- display: flex;
367
- align-items: center;
368
- padding: 0 4px;
369
- white-space: nowrap;
370
-
371
- .inputsDivItemLabel {
372
- padding: 0 4px;
373
- }
374
- }
375
- }
376
-
377
- .reportTable {
378
- width: 100%;
379
- border-collapse: collapse;
380
- table-layout: fixed;
381
- word-break: break-all;
382
- }
383
- }
384
-
385
- .tools {
386
- position: fixed;
387
- right: 2%;
388
- text-align: right;
389
- width: 60%;
390
- cursor: pointer;
391
-
392
- .toolsItem {
393
- width: 15%;
394
- margin-right: 3%;
395
- display: inline-block;
396
- }
397
- }
398
- </style>
1
+ <template>
2
+ <div class="reportGridMain" ref="reportGridMain">
3
+ <template v-if="isWidget">
4
+ <!-- 插槽展示 -->
5
+ <x-report-tr-group
6
+ v-for="(row, rowIndex) in activatedConfig.columns"
7
+ @updateImg="updateImg"
8
+ @selectRow="selectRow"
9
+ :show-img-in-cell="showImgInCell"
10
+ :server-name="serverName"
11
+ :env="env"
12
+ :key="rowIndex"
13
+ :columns="row"
14
+ :no-top-border="noTopBorder"
15
+ :config-data="activatedConfig.data"
16
+ :config="activatedConfig"
17
+ :display="true">
18
+ </x-report-tr-group>
19
+ </template>
20
+ <template v-else>
21
+ <div
22
+ :class=" noPadding ? 'reportMainNoPadding' : 'reportMain'"
23
+ :style="activatedConfig.width > 0 ? ('width:' + activatedConfig.width + 'px') : undefined">
24
+ <!-- 主体表格 -->
25
+ <table class="reportTable" v-if="render" :style="activatedConfig.style ? activatedConfig.style : undefined">
26
+ <tbody class="reportTable">
27
+ <!-- 插槽展示 -->
28
+ <x-report-tr-group
29
+ :key="rowIndex"
30
+ v-for="(row, rowIndex) in activatedConfig.columns"
31
+ @selectRow="selectRow"
32
+ @slotRendered="slotRendered"
33
+ :server-name="serverName"
34
+ :env="env"
35
+ :columns="row"
36
+ :config-data="activatedConfig.data"
37
+ :config="activatedConfig"
38
+ :display="true">
39
+ </x-report-tr-group>
40
+ </tbody>
41
+ </table>
42
+ </div>
43
+ </template>
44
+ </div>
45
+ </template>
46
+
47
+ <script>
48
+ import XReportTrGroup from './XReportTrGroup.vue'
49
+ import { getConfigByName } from '@vue2-client/services/api/common'
50
+ import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
51
+
52
+ export default {
53
+ name: 'XReportDesign',
54
+ props: {
55
+ // 配置
56
+ config: {
57
+ type: Object,
58
+ require: true,
59
+ default: () => {
60
+ }
61
+ },
62
+ showImgInCell: {
63
+ type: Boolean,
64
+ default: false
65
+ },
66
+ // 是否是展示用
67
+ forDisplay: {
68
+ type: Boolean,
69
+ default: false
70
+ },
71
+ // 命名空间
72
+ serverName: {
73
+ type: String,
74
+ default: 'af-system'
75
+ },
76
+ // 环境
77
+ env: {
78
+ type: String,
79
+ default: 'prod'
80
+ },
81
+ // 是否只能展示不可编辑
82
+ displayOnly: {
83
+ type: Boolean,
84
+ default: false
85
+ },
86
+ // 插槽名
87
+ slotConfigName: {
88
+ type: String,
89
+ default: undefined
90
+ },
91
+ // 表格没有边距
92
+ noPadding: {
93
+ type: Boolean,
94
+ default: true
95
+ },
96
+ // 表格没有上边框,与noPadding搭配可以实现连续表格
97
+ noTopBorder: {
98
+ type: Boolean,
99
+ default: false
100
+ },
101
+ },
102
+ components: {
103
+ XFormTable,
104
+ XReportTrGroup
105
+ },
106
+ inject: ['isWidget'],
107
+ provide () {
108
+ return {
109
+ setColSpanByName: this.setColSpanByName
110
+ }
111
+ },
112
+ data () {
113
+ return {
114
+ // 表单的数据
115
+ data: this.config.data,
116
+ // 插槽配置
117
+ slotConfig: undefined,
118
+ // 控制是否渲染
119
+ render: false,
120
+ // 用于展示的配置
121
+ activatedConfig: {}
122
+ }
123
+ },
124
+ methods: {
125
+ slotRendered () {
126
+ this.$emit('slotRendered')
127
+ },
128
+ updateImg (data) {
129
+ this.$emit('updateImg', data)
130
+ },
131
+ selectRow (selectedRowKeys, selectedRows) {
132
+ this.table_selectedRowKeys = selectedRowKeys
133
+ this.table_selectedRows = selectedRows
134
+ console.log('XReportDesign')
135
+ this.$emit('selectRow', selectedRowKeys, selectedRows)
136
+ },
137
+ setColSpanByName (componentName, colSpan) {
138
+ // 处理columns配置(二维数组结构)
139
+ const processColumns = (columns) => {
140
+ columns.forEach((row) => {
141
+ row.forEach((cell, index) => {
142
+ if (Array.isArray(cell)) {
143
+ processColumns(cell) // 递归处理嵌套数组
144
+ } else if (cell.slotRef === componentName) {
145
+ // 使用Vue.set确保响应式更新
146
+ this.$set(row[index], 'colSpan', colSpan)
147
+ this.$set(row[index], '_isManualColSpan', true)
148
+ }
149
+ })
150
+ })
151
+ }
152
+
153
+ // 处理table配置(二维数组结构)
154
+ const processTable = (table) => {
155
+ table.forEach((row) => {
156
+ row.forEach((cell, index) => {
157
+ // 同时检查顶层和def中的slotRef
158
+ const isTargetCell =
159
+ cell.slotRef === componentName ||
160
+ cell.def?.slotRef === componentName
161
+
162
+ if (isTargetCell) {
163
+ // 同时更新顶层和def中的colSpan
164
+ this.$set(row[index], 'colSpan', colSpan)
165
+ this.$set(row[index], '_isManualColSpan', true)
166
+ if (cell.def) {
167
+ this.$set(row[index].def, 'colSpan', colSpan)
168
+ this.$set(row[index].def, '_isManualColSpan', true)
169
+ }
170
+ }
171
+ })
172
+ })
173
+ }
174
+
175
+ // 强制刷新视图
176
+ const forceUpdate = () => {
177
+ this.$nextTick(() => {
178
+ // 创建新对象引用以触发watch
179
+ this.activatedConfig = {
180
+ ...this.activatedConfig,
181
+ _version: Date.now()
182
+ }
183
+ this.$forceUpdate()
184
+ })
185
+ }
186
+
187
+ // 处理当前激活的配置
188
+ if (this.activatedConfig?.columns) {
189
+ processColumns(this.activatedConfig.columns)
190
+ }
191
+ if (this.activatedConfig?.table) {
192
+ processTable(this.activatedConfig.table)
193
+ }
194
+
195
+ forceUpdate()
196
+ },
197
+ applyAllStyles () {
198
+ // 应用组件样式
199
+ const component = this.$refs.reportGridMain
200
+ // 确保组件已经完全挂载
201
+ this.$nextTick(() => {
202
+ this.applyComponentStyles(component)
203
+ })
204
+ },
205
+ // 获取组件样式配置
206
+ async getComponentStyleConfig (componentType) {
207
+ try {
208
+ // 从配置中获取样式定义
209
+ const styleConfig = this.$appdata.getStylesByKey(componentType)
210
+ return styleConfig || {}
211
+ } catch (error) {
212
+ console.error('获取组件样式配置失败:', error)
213
+ return {}
214
+ }
215
+ },
216
+
217
+ // 解析组件样式配置
218
+ async parseComponentStyles (cell) {
219
+ if (!cell.class) return { rootStyles: {}, childStyles: {} }
220
+
221
+ const styleConfig = await this.getComponentStyleConfig('reportGridMain')
222
+ if (!styleConfig) return { rootStyles: {}, childStyles: {} }
223
+
224
+ const rootStyles = {}
225
+ const childStyles = new Map()
226
+
227
+ // 处理每个class配置
228
+ cell.class.split(' ').forEach(className => {
229
+ const classConfig = styleConfig[className]
230
+ if (!classConfig) return
231
+
232
+ // 处理根节点样式
233
+ Object.entries(classConfig).forEach(([key, value]) => {
234
+ if (!key.startsWith('*') && typeof key !== 'object') {
235
+ rootStyles[key] = value
236
+ }
237
+ })
238
+
239
+ // 处理子节点样式
240
+ this.parseNestedStyles(classConfig, childStyles)
241
+ })
242
+
243
+ console.warn('样式配置', rootStyles, childStyles)
244
+ return {
245
+ rootStyles,
246
+ childStyles
247
+ }
248
+ },
249
+
250
+ // 递归解析嵌套的样式配置
251
+ parseNestedStyles (config, styleMap, parentKey = '') {
252
+ Object.entries(config).forEach(([key, value]) => {
253
+ if (!key.startsWith('*')) return
254
+
255
+ const className = key.replace('*', '.')
256
+
257
+ // 如果值是对象,检查是否包含样式和子节点
258
+ if (typeof value === 'object') {
259
+ const { style = {}, children = {} } = this.separateStyleAndChildren(value)
260
+
261
+ // 创建或获取当前节点的样式配置
262
+ if (!styleMap.has(className)) {
263
+ styleMap.set(className, {
264
+ styles: {},
265
+ children: new Map()
266
+ })
267
+ }
268
+
269
+ const nodeData = styleMap.get(className)
270
+
271
+ // 合并样式
272
+ Object.assign(nodeData.styles, style)
273
+
274
+ // 递归处理子节点
275
+ this.parseNestedStyles(children, nodeData.children, className)
276
+ }
277
+ })
278
+ },
279
+
280
+ // 分离样式属性和子节点配置
281
+ separateStyleAndChildren (obj) {
282
+ const style = {}
283
+ const children = {}
284
+
285
+ Object.entries(obj).forEach(([key, value]) => {
286
+ if (key.startsWith('*')) {
287
+ // 子节点配置
288
+ children[key] = value
289
+ } else {
290
+ // 样式属性
291
+ style[key] = value
292
+ }
293
+ })
294
+
295
+ return { style, children }
296
+ },
297
+
298
+ // 应用组件样式
299
+ async applyComponentStyles (component) {
300
+ if (!component) return
301
+
302
+ const { rootStyles, childStyles } = await this.parseComponentStyles(this.activatedConfig)
303
+
304
+ // 应用根节点样式
305
+ if (Object.keys(rootStyles).length > 0) {
306
+ Object.entries(rootStyles).forEach(([property, value]) => {
307
+ component.style.setProperty(property, value, 'important')
308
+ })
309
+ }
310
+
311
+ // 如果没有子节点样式,直接返回
312
+ if (childStyles.size === 0) return
313
+
314
+ let retryCount = 0
315
+ const maxRetries = 5
316
+ const retryInterval = 100 // 100ms
317
+
318
+ const applyStyles = () => {
319
+ this.applyChildStylesOptimized(component, childStyles)
320
+ }
321
+
322
+ // 首次应用样式
323
+ applyStyles()
324
+
325
+ // 创建重试机制
326
+ const retryApplyStyles = () => {
327
+ if (retryCount >= maxRetries) return
328
+
329
+ setTimeout(() => {
330
+ applyStyles()
331
+ retryCount++
332
+ retryApplyStyles()
333
+ }, retryInterval)
334
+ }
335
+
336
+ // 开始重试
337
+ retryApplyStyles()
338
+
339
+ // 创建 MutationObserver 用于动态内容
340
+ const observer = new MutationObserver((mutations) => {
341
+ // 检查是否有新增节点
342
+ const hasNewNodes = mutations.some(mutation =>
343
+ mutation.type === 'childList' && mutation.addedNodes.length > 0
344
+ )
345
+
346
+ if (hasNewNodes) {
347
+ applyStyles()
348
+ }
349
+ })
350
+
351
+ // 配置 observer
352
+ observer.observe(component, {
353
+ childList: true,
354
+ subtree: true,
355
+ attributes: false
356
+ })
357
+
358
+ // 3秒后停止观察
359
+ setTimeout(() => {
360
+ observer.disconnect()
361
+ }, 3000)
362
+
363
+ // 组件销毁时清理
364
+ this.$once('hook:beforeDestroy', () => {
365
+ observer.disconnect()
366
+ })
367
+ },
368
+
369
+ // 优化后的子节点样式应用方法
370
+ applyChildStylesOptimized (rootElement, styleMap, parentSelector = '') {
371
+ if (!rootElement) return
372
+
373
+ // 处理样式映射
374
+ for (const [selector, data] of styleMap.entries()) {
375
+ const currentSelector = parentSelector ? `${parentSelector} ${selector}` : selector
376
+
377
+ try {
378
+ // 查找匹配的元素
379
+ const elements = Array.from(rootElement.querySelectorAll(currentSelector))
380
+
381
+ if (!elements.length) continue
382
+
383
+ // 应用当前层级样式
384
+ if (data.styles) {
385
+ elements.forEach(element => {
386
+ if (!element) return
387
+
388
+ // 应用每个样式属性
389
+ Object.entries(data.styles).forEach(([property, value]) => {
390
+ try {
391
+ element.style.setProperty(property, value, 'important')
392
+ } catch (err) {
393
+ console.warn(`设置样式失败: ${property}=${value}`, err)
394
+ }
395
+ })
396
+ })
397
+ }
398
+
399
+ // 处理子层级
400
+ if (data.children && data.children.size > 0) {
401
+ elements.forEach(element => {
402
+ if (element) {
403
+ this.applyChildStylesOptimized(element, data.children, currentSelector)
404
+ }
405
+ })
406
+ }
407
+ } catch (err) {
408
+ console.warn(`处理选择器失败: ${currentSelector}`, err)
409
+ continue
410
+ }
411
+ }
412
+ },
413
+ },
414
+ created () {
415
+ console.log('>>>> xreportdesign 渲染', JSON.stringify(this.config, null, 2))
416
+ if (this.slotConfigName) {
417
+ getConfigByName(this.slotConfigName, undefined, res => {
418
+ this.slotConfig = res
419
+ res.data = { ...res.data, ...this.data }
420
+ this.config.data = res.data
421
+ this.activatedConfig = res
422
+ this.render = true
423
+ }, this.env === 'dev')
424
+ } else {
425
+ this.activatedConfig = this.config
426
+ this.render = true
427
+ }
428
+
429
+ this.activatedConfig.columns.forEach(row => {
430
+ if (row[0] && row[0].type && row[0].type === 'list' && row[0].listLength === 1) {
431
+ row.forEach(cell => {
432
+ cell.listLength = this.activatedConfig.data[cell.dataIndex].length
433
+ })
434
+ }
435
+ })
436
+ },
437
+ mounted () {
438
+ this.applyAllStyles()
439
+ },
440
+ watch: {
441
+ config: {
442
+ deep: true,
443
+ handler (newVal) {
444
+ }
445
+ },
446
+ activatedConfig: {
447
+ deep: true,
448
+ handler (val) {
449
+ console.log('>>>> activatedConfig: ', val)
450
+ }
451
+ }
452
+ }
453
+ }
454
+ </script>
455
+
456
+ <style lang="less" scoped>
457
+ .img {
458
+ width: 95%;
459
+ height: 180px;
460
+ object-fit: cover;
461
+ }
462
+
463
+ .reportMain {
464
+ text-align: center;
465
+ margin: 0 auto;
466
+ font-size: 16px;
467
+ color: #000;
468
+ background-color: #fff;
469
+ border-radius: 8px;
470
+
471
+ .reportTitle {
472
+ font-weight: bold;
473
+ }
474
+
475
+ .subTitle {
476
+ display: flex;
477
+ justify-content: space-between;
478
+ margin-bottom: 1%;
479
+
480
+ .subTitleItems {
481
+ max-width: 30%;
482
+ }
483
+ }
484
+
485
+ .inputsDiv {
486
+ display: flex;
487
+ justify-content: space-between;
488
+
489
+ .inputsDivItem {
490
+ display: flex;
491
+ align-items: center;
492
+ padding: 0 4px;
493
+ white-space: nowrap;
494
+
495
+ .inputsDivItemLabel {
496
+ padding: 0 4px;
497
+ }
498
+ }
499
+ }
500
+
501
+ .reportTable {
502
+ width: 100%;
503
+ border-collapse: collapse;
504
+ table-layout: fixed;
505
+ word-break: break-all;
506
+ }
507
+ }
508
+
509
+ .reportMainForDisplay {
510
+ text-align: center;
511
+ margin: 10% auto;
512
+ font-size: 16px;
513
+ color: #000;
514
+ background-color: #fff;
515
+ border-radius: 8px;
516
+
517
+ .reportTitle {
518
+ font-weight: bold;
519
+ }
520
+
521
+ .subTitle {
522
+ display: flex;
523
+ justify-content: space-between;
524
+
525
+ .subTitleItems {
526
+ max-width: 30%;
527
+ }
528
+ }
529
+
530
+ .inputsDiv {
531
+ display: flex;
532
+ justify-content: space-around;
533
+
534
+ .inputsDivItem {
535
+ display: flex;
536
+ align-items: center;
537
+ padding: 0 4px;
538
+ white-space: nowrap;
539
+
540
+ .inputsDivItemLabel {
541
+ padding: 0 4px;
542
+ }
543
+ }
544
+ }
545
+
546
+ .reportTable {
547
+ width: 100%;
548
+ border-collapse: collapse;
549
+ table-layout: fixed;
550
+ word-break: break-all;
551
+ }
552
+ }
553
+
554
+ .reportMainNoPadding {
555
+ // text-align: center;
556
+ margin: 0 auto;
557
+ font-size: 16px;
558
+ color: #000;
559
+ // background-color: #fff;
560
+ border-radius: 8px;
561
+ height: auto;
562
+ min-height: 20vh;
563
+ overflow-y: auto;
564
+ overflow-x: hidden;
565
+
566
+ .reportTitle {
567
+ font-weight: bold;
568
+ }
569
+
570
+ .subTitle {
571
+ display: flex;
572
+ justify-content: space-between;
573
+
574
+ .subTitleItems {
575
+ max-width: 30%;
576
+ }
577
+ }
578
+
579
+ .inputsDiv {
580
+ display: flex;
581
+ justify-content: space-between;
582
+
583
+ .inputsDivItem {
584
+ display: flex;
585
+ align-items: center;
586
+ padding: 0 4px;
587
+ white-space: nowrap;
588
+
589
+ .inputsDivItemLabel {
590
+ padding: 0 4px;
591
+ }
592
+ }
593
+ }
594
+
595
+ .reportTable {
596
+ width: 100%;
597
+ border-collapse: collapse;
598
+ table-layout: fixed;
599
+ word-break: break-all;
600
+ }
601
+ }
602
+
603
+ .tools {
604
+ position: fixed;
605
+ right: 2%;
606
+ text-align: right;
607
+ width: 60%;
608
+ cursor: pointer;
609
+
610
+ .toolsItem {
611
+ width: 15%;
612
+ margin-right: 3%;
613
+ display: inline-block;
614
+ }
615
+ }
616
+ </style>