vue2-client 1.9.13 → 1.9.14

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 (324) hide show
  1. package/.env +19 -19
  2. package/.env.gaslink +19 -19
  3. package/.env.revenue +19 -19
  4. package/.eslintrc.js +90 -90
  5. package/CHANGELOG.md +824 -824
  6. package/Components.md +60 -60
  7. package/babel.config.js +21 -21
  8. package/docs/Logic/345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +45 -45
  9. package/docs/LowCode/lowcode.md +155 -155
  10. package/docs/LowCode/lowcodeForDeveloper.md +230 -230
  11. package/docs/index.md +30 -30
  12. package/docs//345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +121 -121
  13. package/index.js +31 -31
  14. package/jest-transform-stub.js +8 -8
  15. package/jest.config.js +21 -21
  16. package/jest.setup.js +7 -7
  17. package/package.json +101 -101
  18. package/public/his/editor/editor.html +51 -51
  19. package/public/his/editor/mock/bind_data.html +779 -779
  20. package/public/his/editor/mock/data_table.html +40 -40
  21. package/public/his/editor/mock/sign.html +75 -75
  22. package/public/his/editor/vender/JsBarcode.all.js +3669 -3669
  23. package/public/his/editor/vender/date97/My97DatePicker.htm +65 -65
  24. package/public/his/editor/vender/date97/WdatePicker.js +677 -677
  25. package/public/his/editor/vender/date97/calendar.js +4 -4
  26. package/public/his/editor/vender/date97/lang/en.js +13 -13
  27. package/public/his/editor/vender/date97/lang/zh-cn.js +13 -13
  28. package/public/his/editor/vender/date97/lang/zh-tw.js +13 -13
  29. package/public/his/editor/vender/date97/skin/WdatePicker.css +10 -10
  30. package/public/his/editor/vender/date97/skin/default/datepicker.css +328 -328
  31. package/public/his/editor/vender/date97/skin/ext/datepicker.css +308 -308
  32. package/public/his/editor/vender/date97/skin/whyGreen/datepicker.css +255 -255
  33. package/public/his/editor/vender/diff.js +1627 -1627
  34. package/public/his/editor/vender/editor.js +1 -1
  35. package/public/his/editor/vender/fabric.js +31187 -31187
  36. package/public/his/editor/vender/jquery/jquery.base64.js +190 -190
  37. package/public/his/editor/vender/jquery/jquery.js +10872 -10872
  38. package/public/his/editor/vender/jquery/jquery.print.js +255 -255
  39. package/public/his/editor/vender/jquery/zTreeStyle/zTreeStyle.css +96 -96
  40. package/public/his/editor/vender/mui/mui.min.css +4 -4
  41. package/public/his/editor/vender/mui/mui.min.js +5 -5
  42. package/public/his/editor/vender/mui/mui.picker.min.css +6 -6
  43. package/public/his/editor/vender/mui/mui.picker.min.js +6 -6
  44. package/public/his/editor/vender/qrcode.js +7 -7
  45. package/public/his/editor/vender/requirejs/require.js +2145 -2145
  46. package/public/his/editor/vender/signature/jSignature.CompressorSVG.js +518 -518
  47. package/public/his/editor/vender/signature/jSignature.UndoButton.js +164 -164
  48. package/public/his/editor/vender/signature/jSignature.js +1486 -1486
  49. package/public/his/editor/vender/validator.js +5094 -5094
  50. package/public/his/editor/vender/weui/weui.css +5659 -5659
  51. package/public/his/editor/vender/weui/weui.min.css +4 -4
  52. package/public/his/editor/vender/weui/weui.min.js +11 -11
  53. package/public/index.html +27 -27
  54. package/src/App.vue +188 -188
  55. package/src/ReportView.js +19 -19
  56. package/src/assets/img/querySlotDemo.svg +15 -15
  57. package/src/assets/svg/badtwo.svg +1 -1
  58. package/src/assets/svg/goodtwo.svg +1 -1
  59. package/src/base-client/components/common/AMisRender/index.js +3 -3
  60. package/src/base-client/components/common/AMisRender/index.vue +263 -263
  61. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +470 -470
  62. package/src/base-client/components/common/AddressSearchCombobox/IcMapIcon.vue +16 -16
  63. package/src/base-client/components/common/AddressSearchCombobox/demo.vue +36 -36
  64. package/src/base-client/components/common/AddressSearchCombobox/ic_map.svg +6 -6
  65. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  66. package/src/base-client/components/common/CitySelect/CitySelect.vue +342 -342
  67. package/src/base-client/components/common/CitySelect/index.js +3 -3
  68. package/src/base-client/components/common/CitySelect/index.md +109 -109
  69. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  70. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +1014 -1014
  71. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  72. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  73. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +452 -452
  74. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +511 -511
  75. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  76. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  77. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +149 -149
  78. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  79. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  80. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  81. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  82. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  83. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  84. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorModal.vue +108 -108
  85. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorPanel.vue +413 -413
  86. package/src/base-client/components/common/LowCodeComponent/LowCodePageOrganization.vue +502 -502
  87. package/src/base-client/components/common/LowCodeComponent/LowCodeRender.vue +728 -728
  88. package/src/base-client/components/common/LowCodeComponent/LowCodeRenderEnter.vue +29 -29
  89. package/src/base-client/components/common/LowCodeComponent/LowCodeUIStore.vue +219 -219
  90. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeAddPageModal.vue +117 -117
  91. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeCustomJSModal.vue +80 -80
  92. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeEventEditorModal.vue +398 -398
  93. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLifeCycleModal.vue +65 -65
  94. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicCallbackModal.vue +64 -64
  95. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicParamModal.vue +73 -73
  96. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeRunFunctionParamModal.vue +76 -76
  97. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  98. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  99. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  100. package/src/base-client/components/common/Tree/index.js +2 -2
  101. package/src/base-client/components/common/Upload/Upload.vue +239 -239
  102. package/src/base-client/components/common/Upload/index.js +3 -3
  103. package/src/base-client/components/common/XAddForm/XAddForm.vue +105 -105
  104. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +803 -803
  105. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  106. package/src/base-client/components/common/XAddNativeFormOA/XAddNativeFormOA.vue +303 -303
  107. package/src/base-client/components/common/XAddNativeFormOA/index.js +3 -3
  108. package/src/base-client/components/common/XAddNativeFormOA/index.md +146 -146
  109. package/src/base-client/components/common/XAddReport/XAddReport.vue +180 -180
  110. package/src/base-client/components/common/XAddReport/index.js +3 -3
  111. package/src/base-client/components/common/XAddReport/index.md +56 -56
  112. package/src/base-client/components/common/XBadge/XBadge.vue +86 -86
  113. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  114. package/src/base-client/components/common/XDataCard/XDataCard.vue +364 -364
  115. package/src/base-client/components/common/XDataCard/index.js +3 -3
  116. package/src/base-client/components/common/XDataCard/index.md +1 -1
  117. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  118. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  119. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  120. package/src/base-client/components/common/XDescriptions/XDescriptions.vue +169 -169
  121. package/src/base-client/components/common/XDescriptions/XDescriptionsGroup.vue +304 -304
  122. package/src/base-client/components/common/XDescriptions/demo.vue +50 -50
  123. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  124. package/src/base-client/components/common/XDescriptions/index.md +83 -83
  125. package/src/base-client/components/common/XDetailsView/XDetailsView.vue +238 -238
  126. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  127. package/src/base-client/components/common/XForm/XForm.vue +316 -316
  128. package/src/base-client/components/common/XForm/XFormItem.vue +1152 -1152
  129. package/src/base-client/components/common/XForm/XTreeSelect.vue +207 -207
  130. package/src/base-client/components/common/XForm/index.md +178 -178
  131. package/src/base-client/components/common/XFormCol/XFormCol.vue +36 -36
  132. package/src/base-client/components/common/XFormGroup/XFormGroup.vue +250 -250
  133. package/src/base-client/components/common/XFormGroup/demo.vue +40 -40
  134. package/src/base-client/components/common/XFormGroup/index.js +3 -3
  135. package/src/base-client/components/common/XFormGroup/index.md +38 -38
  136. package/src/base-client/components/common/XFormGroupDetails/XFormGroupDetails.vue +72 -72
  137. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  138. package/src/base-client/components/common/XFormTable/XFormTable.vue +638 -638
  139. package/src/base-client/components/common/XFormTable/demo.vue +75 -75
  140. package/src/base-client/components/common/XFormTable/index.md +98 -98
  141. package/src/base-client/components/common/XImportExcel/XImportExcel.vue +162 -162
  142. package/src/base-client/components/common/XLicensePlate/XLicensePlate.vue +193 -193
  143. package/src/base-client/components/common/XLicensePlate/XLicensePlateDemo.vue +48 -48
  144. package/src/base-client/components/common/XReport/XReport.vue +873 -873
  145. package/src/base-client/components/common/XReport/XReportDemo.vue +304 -304
  146. package/src/base-client/components/common/XReport/XReportDesign.vue +508 -508
  147. package/src/base-client/components/common/XReport/XReportJsonRender.vue +381 -381
  148. package/src/base-client/components/common/XReport/XReportTrGroup.vue +802 -802
  149. package/src/base-client/components/common/XReport/index.js +3 -3
  150. package/src/base-client/components/common/XReport/index.md +44 -44
  151. package/src/base-client/components/common/XReport/print.js +186 -186
  152. package/src/base-client/components/common/XReportGrid/XReport.vue +936 -936
  153. package/src/base-client/components/common/XReportGrid/XReportDemo.vue +47 -47
  154. package/src/base-client/components/common/XReportGrid/XReportDesign.vue +556 -556
  155. package/src/base-client/components/common/XReportGrid/XReportJsonRender.vue +381 -381
  156. package/src/base-client/components/common/XReportGrid/XReportTrGroup.vue +948 -948
  157. package/src/base-client/components/common/XReportGrid/index.js +3 -3
  158. package/src/base-client/components/common/XReportGrid/index.md +44 -44
  159. package/src/base-client/components/common/XReportGrid/print.js +186 -186
  160. package/src/base-client/components/common/XReportSlot/XReportSlot.vue +110 -110
  161. package/src/base-client/components/common/XReportSlot/index.js +3 -3
  162. package/src/base-client/components/common/XReportSlot/index.md +48 -48
  163. package/src/base-client/components/common/XSimpleDescriptions/XSimpleDescriptions.vue +166 -166
  164. package/src/base-client/components/common/XSimpleDescriptions/index.js +3 -3
  165. package/src/base-client/components/common/XSimpleDescriptions/index.md +7 -7
  166. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  167. package/src/base-client/components/common/XStepView/index.js +3 -3
  168. package/src/base-client/components/common/XStepView/index.md +31 -31
  169. package/src/base-client/components/common/XTab/XTab.vue +149 -149
  170. package/src/base-client/components/common/XTab/XTabDemo.vue +22 -22
  171. package/src/base-client/components/common/XTab/index.js +3 -3
  172. package/src/base-client/components/common/XTable/XTable.vue +1121 -1121
  173. package/src/base-client/components/common/XTable/index.md +255 -255
  174. package/src/base-client/components/common/XTree/XTree.vue +423 -423
  175. package/src/base-client/components/common/XTree/XTreePro.vue +418 -418
  176. package/src/base-client/components/common/XTree/index.js +3 -3
  177. package/src/base-client/components/common/XTree/index.md +36 -36
  178. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +113 -113
  179. package/src/base-client/components/common/XTreeOne/XTreeOnePro.vue +128 -128
  180. package/src/base-client/components/common/richTextModal/index.vue +56 -56
  181. package/src/base-client/components/common/richTextModal/richDemo.vue +48 -48
  182. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +196 -196
  183. package/src/base-client/components/his/XHisEditor/index.js +3 -3
  184. package/src/base-client/components/index.js +51 -51
  185. package/src/base-client/components/layout/XPageView/RenderRow.vue +63 -63
  186. package/src/base-client/components/layout/XPageView/XErrorView.vue +11 -11
  187. package/src/base-client/components/layout/XPageView/XPageView.vue +155 -155
  188. package/src/base-client/components/layout/XPageView/index.js +3 -3
  189. package/src/base-client/components/layout/XPageView/index.md +38 -38
  190. package/src/base-client/components/layout/XTreeView/XTreeView.vue +130 -130
  191. package/src/base-client/components/layout/XTreeView/index.js +3 -3
  192. package/src/base-client/components/layout/XTreeView/index.md +46 -46
  193. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  194. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  195. package/src/base-client/plugins/AppData.js +121 -121
  196. package/src/base-client/plugins/Config.js +19 -19
  197. package/src/base-client/plugins/GetLoginInfoService.js +183 -183
  198. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  199. package/src/bootstrap.js +39 -39
  200. package/src/components/CodeMirror/inedx.vue +118 -118
  201. package/src/components/CodeMirror/setting.js +40 -40
  202. package/src/components/FilePreview/FilePreview.vue +166 -166
  203. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  204. package/src/components/STable/index.js +380 -380
  205. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  206. package/src/components/checkbox/ImgCheckbox.vue +163 -163
  207. package/src/components/exception/ExceptionPage.vue +70 -70
  208. package/src/components/menu/SideMenu.vue +75 -75
  209. package/src/components/menu/menu.js +273 -273
  210. package/src/components/tool/AStepItem.vue +60 -60
  211. package/src/config/CreateQueryConfig.js +322 -322
  212. package/src/config/default/antd.config.js +89 -89
  213. package/src/config/default/setting.config.js +55 -55
  214. package/src/font-style/font.css +4 -4
  215. package/src/layouts/CommonLayout.vue +56 -56
  216. package/src/layouts/GridView.vue +45 -45
  217. package/src/layouts/PageLayout.vue +151 -151
  218. package/src/layouts/SinglePageView.vue +136 -136
  219. package/src/layouts/header/AdminHeader.vue +132 -132
  220. package/src/layouts/header/HeaderNotice.vue +177 -177
  221. package/src/layouts/tabs/TabsHead.vue +189 -189
  222. package/src/layouts/tabs/TabsView.vue +389 -389
  223. package/src/lib.js +1 -1
  224. package/src/main.js +30 -30
  225. package/src/mock/extend/index.js +84 -84
  226. package/src/mock/goods/index.js +108 -108
  227. package/src/pages/AMisDemo/AMisDemo.vue +325 -325
  228. package/src/pages/AMisDemo/AMisDemo2.vue +74 -74
  229. package/src/pages/DefaultExample/index.vue +77 -77
  230. package/src/pages/DynamicStatistics/ChartSelector.vue +331 -331
  231. package/src/pages/DynamicStatistics/DataTabs.vue +83 -83
  232. package/src/pages/DynamicStatistics/DynamicTable.vue +128 -128
  233. package/src/pages/DynamicStatistics/EvaluationArea.vue +69 -69
  234. package/src/pages/DynamicStatistics/FavoriteList.vue +51 -51
  235. package/src/pages/DynamicStatistics/QuestionHistoryAndFavorites.vue +591 -591
  236. package/src/pages/DynamicStatistics/SearchBar.vue +192 -192
  237. package/src/pages/DynamicStatistics/index.vue +282 -282
  238. package/src/pages/Example/childIndex.vue +15 -15
  239. package/src/pages/Example/index.vue +30 -30
  240. package/src/pages/NewDynamicStatistics/ChartSelector.vue +331 -331
  241. package/src/pages/NewDynamicStatistics/DataTabs.vue +122 -122
  242. package/src/pages/NewDynamicStatistics/DynamicTable.vue +128 -128
  243. package/src/pages/NewDynamicStatistics/EvaluationArea.vue +69 -69
  244. package/src/pages/NewDynamicStatistics/FavoriteList.vue +51 -51
  245. package/src/pages/NewDynamicStatistics/QuestionHistoryAndFavorites.vue +289 -289
  246. package/src/pages/NewDynamicStatistics/SearchBar.vue +193 -193
  247. package/src/pages/NewDynamicStatistics/index.vue +258 -258
  248. package/src/pages/ReportGrid/index.vue +76 -76
  249. package/src/pages/ServiceReview/index.vue +284 -284
  250. package/src/pages/SubExample/index.vue +26 -26
  251. package/src/pages/WorkflowDetail/WorkFlowDemo.vue +32 -32
  252. package/src/pages/WorkflowDetail/WorkflowDetail.vue +230 -230
  253. package/src/pages/WorkflowDetail/WorkflowPageDetail/LeaveMessage.vue +131 -131
  254. package/src/pages/WorkflowDetail/WorkflowPageDetail/TrimTextTail.vue +23 -23
  255. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformation.vue +302 -302
  256. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformationDetails.vue +276 -276
  257. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandle.vue +863 -863
  258. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandleReso.vue +997 -997
  259. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowTimeline.vue +222 -222
  260. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkOrderParentDetails.vue +233 -233
  261. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowDetailResso.vue +261 -261
  262. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowListResolution.vue +248 -248
  263. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowLog.vue +73 -73
  264. package/src/pages/XPageViewExample/index.vue +38 -38
  265. package/src/pages/XReportView/index.vue +64 -64
  266. package/src/pages/XTreeOneProExample/index.vue +67 -67
  267. package/src/pages/login/Login.vue +378 -378
  268. package/src/pages/login/LoginV3.vue +389 -389
  269. package/src/pages/lowCode/lowCodeEditor.vue +1219 -1219
  270. package/src/pages/lowCode/lowCodeRenderPage.vue +43 -43
  271. package/src/pages/resourceManage/orgListManage.vue +98 -98
  272. package/src/pages/system/dictionary/index.vue +44 -44
  273. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  274. package/src/pages/system/monitor/operLog/index.vue +37 -37
  275. package/src/pages/system/settings/modifyPassword.vue +117 -117
  276. package/src/pages/system/ticket/index.vue +480 -480
  277. package/src/pages/system/ticket/submitTicketSuccess.vue +484 -484
  278. package/src/plugins/EventLogPlugin.js +33 -33
  279. package/src/plugins/FindParentsData.js +17 -17
  280. package/src/router/async/config.async.js +34 -34
  281. package/src/router/async/router.map.js +179 -179
  282. package/src/router/guards.js +264 -264
  283. package/src/router/index.js +27 -27
  284. package/src/router.js +19 -19
  285. package/src/services/api/TicketDetailsViewApi.js +46 -46
  286. package/src/services/api/cas.js +79 -79
  287. package/src/services/api/common.js +329 -329
  288. package/src/services/api/entity.js +18 -18
  289. package/src/services/api/index.js +17 -17
  290. package/src/services/api/restTools.js +67 -67
  291. package/src/services/api/workFlow.js +63 -63
  292. package/src/services/apiService.js +15 -15
  293. package/src/services/user.js +90 -90
  294. package/src/services/v3Api.js +81 -81
  295. package/src/store/modules/account.js +115 -115
  296. package/src/store/modules/index.js +5 -5
  297. package/src/store/modules/lowCode.js +33 -33
  298. package/src/store/modules/setting.js +119 -119
  299. package/src/theme/default/style.less +58 -58
  300. package/src/theme/global.less +159 -159
  301. package/src/utils/authority-utils.js +85 -85
  302. package/src/utils/errorCode.js +6 -6
  303. package/src/utils/formatter.js +80 -80
  304. package/src/utils/htmlToPDF.js +108 -108
  305. package/src/utils/htmlToPDFApi.js +5 -5
  306. package/src/utils/indexedDB.js +258 -258
  307. package/src/utils/login.js +188 -188
  308. package/src/utils/lowcode/lowcodeComponentMixin.js +120 -120
  309. package/src/utils/lowcode/lowcodeLog.js +29 -29
  310. package/src/utils/lowcode/lowcodeUtils.js +373 -373
  311. package/src/utils/lowcode/registerComponentForEditor.js +1 -1
  312. package/src/utils/lowcode/registerComponentForRender.js +11 -11
  313. package/src/utils/map-utils.js +47 -47
  314. package/src/utils/reg.js +95 -95
  315. package/src/utils/request.js +362 -362
  316. package/src/utils/routerUtil.js +450 -450
  317. package/src/utils/runEvalFunction.js +14 -14
  318. package/src/utils/util.js +281 -281
  319. package/src/utils/waterMark.js +31 -31
  320. package/test/Amis.spec.js +163 -163
  321. package/test/Tree.spec.js +167 -167
  322. package/test/myDialog.spec.js +46 -46
  323. package/vue.config.js +196 -196
  324. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
@@ -1,508 +1,508 @@
1
- <template>
2
- <div>
3
- <template v-if="this.activatedConfig.designMode === 'json'">
4
- <XReportJsonRender
5
- @updateImg="updateImg"
6
- :img-prefix="imgPrefix"
7
- :server-name="serverName"
8
- :display-only="displayOnly"
9
- :show-title="showTitle"
10
- :no-padding="noPadding"
11
- :no-top-border="noTopBorder"
12
- :config="activatedConfig"/>
13
- </template>
14
- <template v-else>
15
- <div :class=" noPadding ? 'reportMainNoPadding' : 'reportMain'" :style="activatedConfig.width > 0 ? ('width:' + activatedConfig.width + 'px') : undefined">
16
- <!-- 大标题 -->
17
- <h2 class="reportTitle" v-if="showTitle && activatedConfig.title" v-html="activatedConfig.title"></h2>
18
- <!-- 小标题 / 介乎于标题与表格之间的内容 -->
19
- <div class="subTitle" v-if="activatedConfig.subTitle">
20
- <div class="subTitleItems" v-for="(item, itemIndex) in activatedConfig.subTitle" :key="itemIndex">
21
- <template v-if="item.type === 'column'">
22
- <span>{{ item.text }}</span>
23
- </template>
24
- <template v-else-if="item.type === 'inputs'">
25
- <div class="inputsDiv">
26
- <div class="inputsDivItem" v-for="(num, index) of calcFormatInputNum(item.format)" :key="index">
27
- <span class="inputsDivItemLabel">{{ displayFormatStartText(item.format) }}</span>
28
- <template v-if="!forDisplay">
29
- <template v-if="item.inputReadOnly === true">
30
- <a-input v-model="data[item.dataIndex][index]" :style="'width:' + (item.inputWidth ? item.inputWidth : '100') + '%'" :disabled="true"/>
31
- </template>
32
- <template v-else>
33
- <a-input v-model="data[item.dataIndex][index]" :style="'width:' + (item.inputWidth ? item.inputWidth : '100') + '%'"/>
34
- </template>
35
- </template>
36
- <template v-else>
37
- {{ activatedConfig.data[item.dataIndex][index] }}
38
- </template>
39
- <span class="inputsDivItemLabel">{{ displayFormatText(item.format, index) }}</span>
40
- </div>
41
- </div>
42
- </template>
43
- </div>
44
- </div>
45
- <!-- 主体表格 -->
46
- <table class="reportTable" v-if="render" :style="activatedConfig.style ? activatedConfig.style : undefined">
47
- <tbody class="reportTable">
48
- <template v-for="(row, rowIndex) in activatedConfig.columns">
49
- <!-- 插槽展示 -->
50
- <!-- <template v-if="row[0].type === 'slot'">-->
51
- <!-- <XReportSlot :config="activatedConfig" v-if="render" :slot-config-name="row[0].slotConfig" :key="rowIndex" :for-display="forDisplay"></XReportSlot>-->
52
- <!-- </template>-->
53
- <!-- 普通行 -->
54
- <template v-if="row[0].type !== 'inputColumns' && row[0].type !== 'list'">
55
- <template v-if="!forDisplay">
56
- <x-report-tr-group
57
- @updateImg="updateImg"
58
- :show-img-in-cell="showImgInCell"
59
- :img-prefix="imgPrefix"
60
- :server-name="serverName"
61
- :use-oss-for-img="useOssForImg"
62
- :key="rowIndex"
63
- :columns="row"
64
- :no-top-border="noTopBorder"
65
- :config-data="activatedConfig.data"
66
- :config="activatedConfig">
67
- </x-report-tr-group>
68
- </template>
69
- <template v-else>
70
- <x-report-tr-group
71
- @updateImg="updateImg"
72
- :show-img-in-cell="showImgInCell"
73
- :img-prefix="imgPrefix"
74
- :server-name="serverName"
75
- :use-oss-for-img="useOssForImg"
76
- :config="activatedConfig"
77
- :key="rowIndex"
78
- :columns="row"
79
- :no-top-border="noTopBorder"
80
- :config-data="activatedConfig.data"
81
- :display="true">
82
- </x-report-tr-group>
83
- </template>
84
- </template>
85
- <!-- 列表 -->
86
- <template v-else-if="row[0].type === 'list'" >
87
- <template v-for="(num, listIndex) in row[0].listLength + 1">
88
- <template v-if="!forDisplay">
89
- <x-report-tr-group
90
- @updateImg="updateImg"
91
- :show-img-in-cell="showImgInCell"
92
- :img-prefix="imgPrefix"
93
- :server-name="serverName"
94
- :use-oss-for-img="useOssForImg"
95
- :config="activatedConfig"
96
- :key="rowIndex + listIndex"
97
- :columns="row"
98
- :no-top-border="noTopBorder"
99
- :config-data="activatedConfig.data"
100
- :list-index="listIndex">
101
- </x-report-tr-group>
102
- </template>
103
- <template v-else>
104
- <x-report-tr-group
105
- @updateImg="updateImg"
106
- :show-img-in-cell="showImgInCell"
107
- :img-prefix="imgPrefix"
108
- :server-name="serverName"
109
- :use-oss-for-img="useOssForImg"
110
- :config="activatedConfig"
111
- :key="rowIndex + listIndex"
112
- :columns="row"
113
- :no-top-border="noTopBorder"
114
- :config-data="activatedConfig.data"
115
- :list-index="listIndex"
116
- :display="true">
117
- </x-report-tr-group>
118
- </template>
119
- </template>
120
- </template>
121
- <!-- 动态行 -->
122
- <template v-else>
123
- <template v-if="forDisplay">
124
- <x-report-tr-group
125
- @updateImg="updateImg"
126
- :show-img-in-cell="showImgInCell"
127
- :img-prefix="imgPrefix"
128
- :server-name="serverName"
129
- :use-oss-for-img="useOssForImg"
130
- :config="activatedConfig"
131
- :columns="row[0].definition"
132
- :config-data="{arr: activatedConfig.data[row[0].dataIndex]}"
133
- :input-columns="true"
134
- :no-top-border="noTopBorder"
135
- v-for="(item, definitionIndex) in activatedConfig.data[row[0].dataIndex]"
136
- :input-columns-definition-index="definitionIndex"
137
- :display="true"
138
- :key="row[0].dataIndex + definitionIndex + rowIndex"></x-report-tr-group>
139
- </template>
140
- <template v-if="!forDisplay">
141
- <x-report-tr-group
142
- @updateImg="updateImg"
143
- :show-img-in-cell="showImgInCell"
144
- :img-prefix="imgPrefix"
145
- :server-name="serverName"
146
- :use-oss-for-img="useOssForImg"
147
- :config="activatedConfig"
148
- :columns="row[0].definition"
149
- :config-data="{arr: activatedConfig.data[row[0].dataIndex]}"
150
- :input-columns="true"
151
- :no-top-border="noTopBorder"
152
- v-for="(item, definitionIndex) in activatedConfig.data[row[0].dataIndex]"
153
- :input-columns-definition-index="definitionIndex"
154
- :key="row[0].dataIndex + definitionIndex + rowIndex"></x-report-tr-group>
155
- <!-- 动态行交互按钮 -->
156
- <x-report-tr-group
157
- @updateImg="updateImg"
158
- :show-img-in-cell="showImgInCell"
159
- :img-prefix="imgPrefix"
160
- :server-name="serverName"
161
- :use-oss-for-img="useOssForImg"
162
- :config="activatedConfig"
163
- :key="rowIndex"
164
- :columns="row"
165
- :no-top-border="noTopBorder"
166
- :config-data="activatedConfig.data"
167
- :input-columns-button="true"
168
- :input-columns="true">
169
- </x-report-tr-group>
170
- </template>
171
- </template>
172
- </template>
173
- </tbody>
174
- </table>
175
- <div v-if="showImages" style="margin-top: 5%; display: flex;margin-bottom: 5%">
176
- <p>图片:</p>
177
- <div :key="imgIndex" v-for="(img,imgIndex) in imageList" style="margin-left: 3%;width: 200px">
178
- <img :src="img.url" class="img" :alt="img.name"/>
179
- <p style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;width: 100%;">{{ img.name }}</p>
180
- </div>
181
- </div>
182
- </div>
183
- </template>
184
- </div>
185
- </template>
186
-
187
- <script>
188
- import XReportTrGroup from '@vue2-client/base-client/components/common/XReport/XReportTrGroup.vue'
189
- import XReportJsonRender from '@vue2-client/base-client/components/common/XReport/XReportJsonRender.vue'
190
- import { getConfigByName } from '@vue2-client/services/api/common'
191
-
192
- export default {
193
- name: 'XReportDesign',
194
- props: {
195
- // 配置
196
- config: {
197
- type: Object,
198
- require: true,
199
- default: () => {}
200
- },
201
- showImgInCell: {
202
- type: Boolean,
203
- default: false
204
- },
205
- // 是否是展示用
206
- forDisplay: {
207
- type: Boolean,
208
- default: false
209
- },
210
- // 命名空间
211
- serverName: {
212
- type: String,
213
- default: 'af-system'
214
- },
215
- // 是否只能展示不可编辑
216
- displayOnly: {
217
- type: Boolean,
218
- default: false
219
- },
220
- // 插槽名
221
- slotConfigName: {
222
- type: String,
223
- default: undefined
224
- },
225
- // 将图片全部展示在表格之后,挨个罗列
226
- showImages: {
227
- type: Boolean,
228
- default: false
229
- },
230
- // 图片罗列的数组
231
- imageList: {
232
- type: Array,
233
- default: undefined
234
- },
235
- // 表格没有边距
236
- noPadding: {
237
- type: Boolean,
238
- default: false
239
- },
240
- // 表格没有上边框,与noPadding搭配可以实现连续表格
241
- noTopBorder: {
242
- type: Boolean,
243
- default: false
244
- },
245
- // 是否展示标题
246
- showTitle: {
247
- type: Boolean,
248
- default: true
249
- },
250
- // 图片是否使用OSS来保存
251
- useOssForImg: {
252
- type: Boolean,
253
- default: true
254
- },
255
- // 图片上传后添加前缀
256
- imgPrefix: {
257
- type: String,
258
- default: undefined
259
- }
260
- },
261
- components: {
262
- XReportTrGroup,
263
- XReportJsonRender
264
- },
265
- data () {
266
- return {
267
- // 表单的数据
268
- data: this.config.data,
269
- // 插槽配置
270
- slotConfig: undefined,
271
- // 控制是否渲染
272
- render: false,
273
- // 用于展示的配置
274
- activatedConfig: {}
275
- }
276
- },
277
- methods: {
278
- updateImg (data) {
279
- this.$emit('updateImg', data)
280
- },
281
- // 根据format计算需要多少个输入框
282
- calcFormatInputNum (formatStr) {
283
- let count = 0
284
- for (let i = 0; i < formatStr.length; i++) {
285
- if (formatStr[i] == '{') {
286
- count++
287
- }
288
- }
289
- return count
290
- },
291
- // 根据format计算输入框之后的文字显示
292
- displayFormatText (formatStr, num) {
293
- let start = 0
294
- let count = 0
295
- num++
296
- for (let i = 0; i < formatStr.length; i++) {
297
- if (formatStr[i] === '}') {
298
- start = i
299
- count++
300
- }
301
- if (count === num) {
302
- for (let j = start + 1; j < formatStr.length; j++) {
303
- if (formatStr[j] === '{') {
304
- return formatStr.slice(start + 1, j)
305
- }
306
- if (j === formatStr.length - 1 && formatStr[j] !== '}') {
307
- return formatStr[j]
308
- }
309
- }
310
- }
311
- }
312
- },
313
- // 根据format计算输入框之前的文字显示
314
- displayFormatStartText (formatStr) {
315
- let count = 0
316
- for (let i = 0; i < formatStr.length; i++) {
317
- if (formatStr[i] === '{') {
318
- break
319
- } else {
320
- count++
321
- }
322
- }
323
- return formatStr.slice(0, count)
324
- },
325
- },
326
- created () {
327
- if (this.slotConfigName) {
328
- getConfigByName(this.slotConfigName, undefined, res => {
329
- this.slotConfig = res
330
- res.data = { ...res.data, ...this.data }
331
- this.config.data = res.data
332
- this.activatedConfig = res
333
- this.render = true
334
- })
335
- } else {
336
- this.activatedConfig = this.config
337
- this.render = true
338
- }
339
- if (this.activatedConfig.designMode !== 'json') {
340
- this.activatedConfig.columns.forEach(row => {
341
- if (row[0] && row[0].type && row[0].type === 'list' && row[0].listLength === 1) {
342
- row.forEach(cell => {
343
- cell.listLength = this.activatedConfig.data[cell.dataIndex].length
344
- })
345
- }
346
- })
347
- }
348
- },
349
- mounted () {
350
- },
351
- watch: {
352
- config: {
353
- deep: true,
354
- handler (newVal) {
355
- }
356
- }
357
- }
358
- }
359
- </script>
360
-
361
- <style lang="less" scoped>
362
- .img{
363
- width: 95%;
364
- height: 180px;
365
- object-fit: cover;
366
- }
367
- .reportMain {
368
- text-align: center;
369
- margin: 0 auto;
370
- font-size: 16px;
371
- color: #000;
372
- background-color: #fff;
373
- padding: 15px;
374
- border-radius: 8px;
375
-
376
- .reportTitle {
377
- font-weight: bold;
378
- }
379
-
380
- .subTitle {
381
- display: flex;
382
- justify-content: space-between;
383
- margin-bottom: 1%;
384
-
385
- .subTitleItems {
386
- max-width: 30%;
387
- }
388
- }
389
-
390
- .inputsDiv {
391
- display: flex;
392
- justify-content: space-between;
393
- .inputsDivItem {
394
- display: flex;
395
- align-items: center;
396
- padding: 0 4px;
397
- white-space: nowrap;
398
- .inputsDivItemLabel {
399
- padding: 0 4px;
400
- }
401
- }
402
- }
403
-
404
- .reportTable {
405
- width: 100%;
406
- border-collapse: collapse;
407
- table-layout:fixed;
408
- word-break:break-all;
409
- }
410
- }
411
- .reportMainForDisplay {
412
- text-align: center;
413
- margin: 10% auto;
414
- font-size: 16px;
415
- color: #000;
416
- background-color: #fff;
417
- padding: 15px;
418
- border-radius: 8px;
419
-
420
- .reportTitle {
421
- font-weight: bold;
422
- }
423
-
424
- .subTitle {
425
- display: flex;
426
- justify-content: space-between;
427
-
428
- .subTitleItems {
429
- max-width: 30%;
430
- }
431
- }
432
-
433
- .inputsDiv {
434
- display: flex;
435
- justify-content: space-around;
436
- .inputsDivItem {
437
- display: flex;
438
- align-items: center;
439
- padding: 0 4px;
440
- white-space: nowrap;
441
- .inputsDivItemLabel {
442
- padding: 0 4px;
443
- }
444
- }
445
- }
446
-
447
- .reportTable {
448
- width: 100%;
449
- border-collapse: collapse;
450
- table-layout:fixed;
451
- word-break:break-all;
452
- }
453
- }
454
- .reportMainNoPadding {
455
- text-align: center;
456
- margin: 0 auto;
457
- font-size: 16px;
458
- color: #000;
459
- background-color: #fff;
460
- border-radius: 8px;
461
-
462
- .reportTitle {
463
- font-weight: bold;
464
- }
465
-
466
- .subTitle {
467
- display: flex;
468
- justify-content: space-between;
469
-
470
- .subTitleItems {
471
- max-width: 30%;
472
- }
473
- }
474
-
475
- .inputsDiv {
476
- display: flex;
477
- justify-content: space-between;
478
- .inputsDivItem {
479
- display: flex;
480
- align-items: center;
481
- padding: 0 4px;
482
- white-space: nowrap;
483
- .inputsDivItemLabel {
484
- padding: 0 4px;
485
- }
486
- }
487
- }
488
-
489
- .reportTable {
490
- width: 100%;
491
- border-collapse: collapse;
492
- table-layout:fixed;
493
- word-break:break-all;
494
- }
495
- }
496
- .tools{
497
- position: fixed;
498
- right: 2%;
499
- text-align: right;
500
- width: 60%;
501
- cursor: pointer;
502
- .toolsItem{
503
- width: 15%;
504
- margin-right: 3%;
505
- display: inline-block;
506
- }
507
- }
508
- </style>
1
+ <template>
2
+ <div>
3
+ <template v-if="this.activatedConfig.designMode === 'json'">
4
+ <XReportJsonRender
5
+ @updateImg="updateImg"
6
+ :img-prefix="imgPrefix"
7
+ :server-name="serverName"
8
+ :display-only="displayOnly"
9
+ :show-title="showTitle"
10
+ :no-padding="noPadding"
11
+ :no-top-border="noTopBorder"
12
+ :config="activatedConfig"/>
13
+ </template>
14
+ <template v-else>
15
+ <div :class=" noPadding ? 'reportMainNoPadding' : 'reportMain'" :style="activatedConfig.width > 0 ? ('width:' + activatedConfig.width + 'px') : undefined">
16
+ <!-- 大标题 -->
17
+ <h2 class="reportTitle" v-if="showTitle && activatedConfig.title" v-html="activatedConfig.title"></h2>
18
+ <!-- 小标题 / 介乎于标题与表格之间的内容 -->
19
+ <div class="subTitle" v-if="activatedConfig.subTitle">
20
+ <div class="subTitleItems" v-for="(item, itemIndex) in activatedConfig.subTitle" :key="itemIndex">
21
+ <template v-if="item.type === 'column'">
22
+ <span>{{ item.text }}</span>
23
+ </template>
24
+ <template v-else-if="item.type === 'inputs'">
25
+ <div class="inputsDiv">
26
+ <div class="inputsDivItem" v-for="(num, index) of calcFormatInputNum(item.format)" :key="index">
27
+ <span class="inputsDivItemLabel">{{ displayFormatStartText(item.format) }}</span>
28
+ <template v-if="!forDisplay">
29
+ <template v-if="item.inputReadOnly === true">
30
+ <a-input v-model="data[item.dataIndex][index]" :style="'width:' + (item.inputWidth ? item.inputWidth : '100') + '%'" :disabled="true"/>
31
+ </template>
32
+ <template v-else>
33
+ <a-input v-model="data[item.dataIndex][index]" :style="'width:' + (item.inputWidth ? item.inputWidth : '100') + '%'"/>
34
+ </template>
35
+ </template>
36
+ <template v-else>
37
+ {{ activatedConfig.data[item.dataIndex][index] }}
38
+ </template>
39
+ <span class="inputsDivItemLabel">{{ displayFormatText(item.format, index) }}</span>
40
+ </div>
41
+ </div>
42
+ </template>
43
+ </div>
44
+ </div>
45
+ <!-- 主体表格 -->
46
+ <table class="reportTable" v-if="render" :style="activatedConfig.style ? activatedConfig.style : undefined">
47
+ <tbody class="reportTable">
48
+ <template v-for="(row, rowIndex) in activatedConfig.columns">
49
+ <!-- 插槽展示 -->
50
+ <!-- <template v-if="row[0].type === 'slot'">-->
51
+ <!-- <XReportSlot :config="activatedConfig" v-if="render" :slot-config-name="row[0].slotConfig" :key="rowIndex" :for-display="forDisplay"></XReportSlot>-->
52
+ <!-- </template>-->
53
+ <!-- 普通行 -->
54
+ <template v-if="row[0].type !== 'inputColumns' && row[0].type !== 'list'">
55
+ <template v-if="!forDisplay">
56
+ <x-report-tr-group
57
+ @updateImg="updateImg"
58
+ :show-img-in-cell="showImgInCell"
59
+ :img-prefix="imgPrefix"
60
+ :server-name="serverName"
61
+ :use-oss-for-img="useOssForImg"
62
+ :key="rowIndex"
63
+ :columns="row"
64
+ :no-top-border="noTopBorder"
65
+ :config-data="activatedConfig.data"
66
+ :config="activatedConfig">
67
+ </x-report-tr-group>
68
+ </template>
69
+ <template v-else>
70
+ <x-report-tr-group
71
+ @updateImg="updateImg"
72
+ :show-img-in-cell="showImgInCell"
73
+ :img-prefix="imgPrefix"
74
+ :server-name="serverName"
75
+ :use-oss-for-img="useOssForImg"
76
+ :config="activatedConfig"
77
+ :key="rowIndex"
78
+ :columns="row"
79
+ :no-top-border="noTopBorder"
80
+ :config-data="activatedConfig.data"
81
+ :display="true">
82
+ </x-report-tr-group>
83
+ </template>
84
+ </template>
85
+ <!-- 列表 -->
86
+ <template v-else-if="row[0].type === 'list'" >
87
+ <template v-for="(num, listIndex) in row[0].listLength + 1">
88
+ <template v-if="!forDisplay">
89
+ <x-report-tr-group
90
+ @updateImg="updateImg"
91
+ :show-img-in-cell="showImgInCell"
92
+ :img-prefix="imgPrefix"
93
+ :server-name="serverName"
94
+ :use-oss-for-img="useOssForImg"
95
+ :config="activatedConfig"
96
+ :key="rowIndex + listIndex"
97
+ :columns="row"
98
+ :no-top-border="noTopBorder"
99
+ :config-data="activatedConfig.data"
100
+ :list-index="listIndex">
101
+ </x-report-tr-group>
102
+ </template>
103
+ <template v-else>
104
+ <x-report-tr-group
105
+ @updateImg="updateImg"
106
+ :show-img-in-cell="showImgInCell"
107
+ :img-prefix="imgPrefix"
108
+ :server-name="serverName"
109
+ :use-oss-for-img="useOssForImg"
110
+ :config="activatedConfig"
111
+ :key="rowIndex + listIndex"
112
+ :columns="row"
113
+ :no-top-border="noTopBorder"
114
+ :config-data="activatedConfig.data"
115
+ :list-index="listIndex"
116
+ :display="true">
117
+ </x-report-tr-group>
118
+ </template>
119
+ </template>
120
+ </template>
121
+ <!-- 动态行 -->
122
+ <template v-else>
123
+ <template v-if="forDisplay">
124
+ <x-report-tr-group
125
+ @updateImg="updateImg"
126
+ :show-img-in-cell="showImgInCell"
127
+ :img-prefix="imgPrefix"
128
+ :server-name="serverName"
129
+ :use-oss-for-img="useOssForImg"
130
+ :config="activatedConfig"
131
+ :columns="row[0].definition"
132
+ :config-data="{arr: activatedConfig.data[row[0].dataIndex]}"
133
+ :input-columns="true"
134
+ :no-top-border="noTopBorder"
135
+ v-for="(item, definitionIndex) in activatedConfig.data[row[0].dataIndex]"
136
+ :input-columns-definition-index="definitionIndex"
137
+ :display="true"
138
+ :key="row[0].dataIndex + definitionIndex + rowIndex"></x-report-tr-group>
139
+ </template>
140
+ <template v-if="!forDisplay">
141
+ <x-report-tr-group
142
+ @updateImg="updateImg"
143
+ :show-img-in-cell="showImgInCell"
144
+ :img-prefix="imgPrefix"
145
+ :server-name="serverName"
146
+ :use-oss-for-img="useOssForImg"
147
+ :config="activatedConfig"
148
+ :columns="row[0].definition"
149
+ :config-data="{arr: activatedConfig.data[row[0].dataIndex]}"
150
+ :input-columns="true"
151
+ :no-top-border="noTopBorder"
152
+ v-for="(item, definitionIndex) in activatedConfig.data[row[0].dataIndex]"
153
+ :input-columns-definition-index="definitionIndex"
154
+ :key="row[0].dataIndex + definitionIndex + rowIndex"></x-report-tr-group>
155
+ <!-- 动态行交互按钮 -->
156
+ <x-report-tr-group
157
+ @updateImg="updateImg"
158
+ :show-img-in-cell="showImgInCell"
159
+ :img-prefix="imgPrefix"
160
+ :server-name="serverName"
161
+ :use-oss-for-img="useOssForImg"
162
+ :config="activatedConfig"
163
+ :key="rowIndex"
164
+ :columns="row"
165
+ :no-top-border="noTopBorder"
166
+ :config-data="activatedConfig.data"
167
+ :input-columns-button="true"
168
+ :input-columns="true">
169
+ </x-report-tr-group>
170
+ </template>
171
+ </template>
172
+ </template>
173
+ </tbody>
174
+ </table>
175
+ <div v-if="showImages" style="margin-top: 5%; display: flex;margin-bottom: 5%">
176
+ <p>图片:</p>
177
+ <div :key="imgIndex" v-for="(img,imgIndex) in imageList" style="margin-left: 3%;width: 200px">
178
+ <img :src="img.url" class="img" :alt="img.name"/>
179
+ <p style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;width: 100%;">{{ img.name }}</p>
180
+ </div>
181
+ </div>
182
+ </div>
183
+ </template>
184
+ </div>
185
+ </template>
186
+
187
+ <script>
188
+ import XReportTrGroup from '@vue2-client/base-client/components/common/XReport/XReportTrGroup.vue'
189
+ import XReportJsonRender from '@vue2-client/base-client/components/common/XReport/XReportJsonRender.vue'
190
+ import { getConfigByName } from '@vue2-client/services/api/common'
191
+
192
+ export default {
193
+ name: 'XReportDesign',
194
+ props: {
195
+ // 配置
196
+ config: {
197
+ type: Object,
198
+ require: true,
199
+ default: () => {}
200
+ },
201
+ showImgInCell: {
202
+ type: Boolean,
203
+ default: false
204
+ },
205
+ // 是否是展示用
206
+ forDisplay: {
207
+ type: Boolean,
208
+ default: false
209
+ },
210
+ // 命名空间
211
+ serverName: {
212
+ type: String,
213
+ default: 'af-system'
214
+ },
215
+ // 是否只能展示不可编辑
216
+ displayOnly: {
217
+ type: Boolean,
218
+ default: false
219
+ },
220
+ // 插槽名
221
+ slotConfigName: {
222
+ type: String,
223
+ default: undefined
224
+ },
225
+ // 将图片全部展示在表格之后,挨个罗列
226
+ showImages: {
227
+ type: Boolean,
228
+ default: false
229
+ },
230
+ // 图片罗列的数组
231
+ imageList: {
232
+ type: Array,
233
+ default: undefined
234
+ },
235
+ // 表格没有边距
236
+ noPadding: {
237
+ type: Boolean,
238
+ default: false
239
+ },
240
+ // 表格没有上边框,与noPadding搭配可以实现连续表格
241
+ noTopBorder: {
242
+ type: Boolean,
243
+ default: false
244
+ },
245
+ // 是否展示标题
246
+ showTitle: {
247
+ type: Boolean,
248
+ default: true
249
+ },
250
+ // 图片是否使用OSS来保存
251
+ useOssForImg: {
252
+ type: Boolean,
253
+ default: true
254
+ },
255
+ // 图片上传后添加前缀
256
+ imgPrefix: {
257
+ type: String,
258
+ default: undefined
259
+ }
260
+ },
261
+ components: {
262
+ XReportTrGroup,
263
+ XReportJsonRender
264
+ },
265
+ data () {
266
+ return {
267
+ // 表单的数据
268
+ data: this.config.data,
269
+ // 插槽配置
270
+ slotConfig: undefined,
271
+ // 控制是否渲染
272
+ render: false,
273
+ // 用于展示的配置
274
+ activatedConfig: {}
275
+ }
276
+ },
277
+ methods: {
278
+ updateImg (data) {
279
+ this.$emit('updateImg', data)
280
+ },
281
+ // 根据format计算需要多少个输入框
282
+ calcFormatInputNum (formatStr) {
283
+ let count = 0
284
+ for (let i = 0; i < formatStr.length; i++) {
285
+ if (formatStr[i] == '{') {
286
+ count++
287
+ }
288
+ }
289
+ return count
290
+ },
291
+ // 根据format计算输入框之后的文字显示
292
+ displayFormatText (formatStr, num) {
293
+ let start = 0
294
+ let count = 0
295
+ num++
296
+ for (let i = 0; i < formatStr.length; i++) {
297
+ if (formatStr[i] === '}') {
298
+ start = i
299
+ count++
300
+ }
301
+ if (count === num) {
302
+ for (let j = start + 1; j < formatStr.length; j++) {
303
+ if (formatStr[j] === '{') {
304
+ return formatStr.slice(start + 1, j)
305
+ }
306
+ if (j === formatStr.length - 1 && formatStr[j] !== '}') {
307
+ return formatStr[j]
308
+ }
309
+ }
310
+ }
311
+ }
312
+ },
313
+ // 根据format计算输入框之前的文字显示
314
+ displayFormatStartText (formatStr) {
315
+ let count = 0
316
+ for (let i = 0; i < formatStr.length; i++) {
317
+ if (formatStr[i] === '{') {
318
+ break
319
+ } else {
320
+ count++
321
+ }
322
+ }
323
+ return formatStr.slice(0, count)
324
+ },
325
+ },
326
+ created () {
327
+ if (this.slotConfigName) {
328
+ getConfigByName(this.slotConfigName, undefined, res => {
329
+ this.slotConfig = res
330
+ res.data = { ...res.data, ...this.data }
331
+ this.config.data = res.data
332
+ this.activatedConfig = res
333
+ this.render = true
334
+ })
335
+ } else {
336
+ this.activatedConfig = this.config
337
+ this.render = true
338
+ }
339
+ if (this.activatedConfig.designMode !== 'json') {
340
+ this.activatedConfig.columns.forEach(row => {
341
+ if (row[0] && row[0].type && row[0].type === 'list' && row[0].listLength === 1) {
342
+ row.forEach(cell => {
343
+ cell.listLength = this.activatedConfig.data[cell.dataIndex].length
344
+ })
345
+ }
346
+ })
347
+ }
348
+ },
349
+ mounted () {
350
+ },
351
+ watch: {
352
+ config: {
353
+ deep: true,
354
+ handler (newVal) {
355
+ }
356
+ }
357
+ }
358
+ }
359
+ </script>
360
+
361
+ <style lang="less" scoped>
362
+ .img{
363
+ width: 95%;
364
+ height: 180px;
365
+ object-fit: cover;
366
+ }
367
+ .reportMain {
368
+ text-align: center;
369
+ margin: 0 auto;
370
+ font-size: 16px;
371
+ color: #000;
372
+ background-color: #fff;
373
+ padding: 15px;
374
+ border-radius: 8px;
375
+
376
+ .reportTitle {
377
+ font-weight: bold;
378
+ }
379
+
380
+ .subTitle {
381
+ display: flex;
382
+ justify-content: space-between;
383
+ margin-bottom: 1%;
384
+
385
+ .subTitleItems {
386
+ max-width: 30%;
387
+ }
388
+ }
389
+
390
+ .inputsDiv {
391
+ display: flex;
392
+ justify-content: space-between;
393
+ .inputsDivItem {
394
+ display: flex;
395
+ align-items: center;
396
+ padding: 0 4px;
397
+ white-space: nowrap;
398
+ .inputsDivItemLabel {
399
+ padding: 0 4px;
400
+ }
401
+ }
402
+ }
403
+
404
+ .reportTable {
405
+ width: 100%;
406
+ border-collapse: collapse;
407
+ table-layout:fixed;
408
+ word-break:break-all;
409
+ }
410
+ }
411
+ .reportMainForDisplay {
412
+ text-align: center;
413
+ margin: 10% auto;
414
+ font-size: 16px;
415
+ color: #000;
416
+ background-color: #fff;
417
+ padding: 15px;
418
+ border-radius: 8px;
419
+
420
+ .reportTitle {
421
+ font-weight: bold;
422
+ }
423
+
424
+ .subTitle {
425
+ display: flex;
426
+ justify-content: space-between;
427
+
428
+ .subTitleItems {
429
+ max-width: 30%;
430
+ }
431
+ }
432
+
433
+ .inputsDiv {
434
+ display: flex;
435
+ justify-content: space-around;
436
+ .inputsDivItem {
437
+ display: flex;
438
+ align-items: center;
439
+ padding: 0 4px;
440
+ white-space: nowrap;
441
+ .inputsDivItemLabel {
442
+ padding: 0 4px;
443
+ }
444
+ }
445
+ }
446
+
447
+ .reportTable {
448
+ width: 100%;
449
+ border-collapse: collapse;
450
+ table-layout:fixed;
451
+ word-break:break-all;
452
+ }
453
+ }
454
+ .reportMainNoPadding {
455
+ text-align: center;
456
+ margin: 0 auto;
457
+ font-size: 16px;
458
+ color: #000;
459
+ background-color: #fff;
460
+ border-radius: 8px;
461
+
462
+ .reportTitle {
463
+ font-weight: bold;
464
+ }
465
+
466
+ .subTitle {
467
+ display: flex;
468
+ justify-content: space-between;
469
+
470
+ .subTitleItems {
471
+ max-width: 30%;
472
+ }
473
+ }
474
+
475
+ .inputsDiv {
476
+ display: flex;
477
+ justify-content: space-between;
478
+ .inputsDivItem {
479
+ display: flex;
480
+ align-items: center;
481
+ padding: 0 4px;
482
+ white-space: nowrap;
483
+ .inputsDivItemLabel {
484
+ padding: 0 4px;
485
+ }
486
+ }
487
+ }
488
+
489
+ .reportTable {
490
+ width: 100%;
491
+ border-collapse: collapse;
492
+ table-layout:fixed;
493
+ word-break:break-all;
494
+ }
495
+ }
496
+ .tools{
497
+ position: fixed;
498
+ right: 2%;
499
+ text-align: right;
500
+ width: 60%;
501
+ cursor: pointer;
502
+ .toolsItem{
503
+ width: 15%;
504
+ margin-right: 3%;
505
+ display: inline-block;
506
+ }
507
+ }
508
+ </style>