vue2-client 1.10.29 → 1.10.30

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 (426) hide show
  1. package/.cursorrules +19 -19
  2. package/.env +19 -19
  3. package/.env.gaslink +19 -19
  4. package/.env.his +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/babel.config.js +21 -21
  12. package/docs/Logic/345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +45 -45
  13. package/docs/LowCode/lowcode.md +155 -155
  14. package/docs/LowCode/lowcodeForDeveloper.md +230 -230
  15. package/docs/index.md +30 -30
  16. package/docs//345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +174 -174
  17. package/index.js +31 -31
  18. package/jest-transform-stub.js +8 -8
  19. package/jest.config.js +21 -21
  20. package/jest.setup.js +7 -7
  21. package/jsconfig.json +19 -19
  22. package/package.json +1 -1
  23. package/public/his/editor/editor.html +51 -51
  24. package/public/his/editor/mock/bind_data.html +779 -779
  25. package/public/his/editor/mock/data_table.html +40 -40
  26. package/public/his/editor/mock/sign.html +75 -75
  27. package/public/his/editor/vender/JsBarcode.all.js +3669 -3669
  28. package/public/his/editor/vender/date97/My97DatePicker.htm +65 -65
  29. package/public/his/editor/vender/date97/WdatePicker.js +677 -677
  30. package/public/his/editor/vender/date97/calendar.js +4 -4
  31. package/public/his/editor/vender/date97/lang/en.js +13 -13
  32. package/public/his/editor/vender/date97/lang/zh-cn.js +13 -13
  33. package/public/his/editor/vender/date97/lang/zh-tw.js +13 -13
  34. package/public/his/editor/vender/date97/skin/WdatePicker.css +10 -10
  35. package/public/his/editor/vender/date97/skin/default/datepicker.css +328 -328
  36. package/public/his/editor/vender/date97/skin/ext/datepicker.css +308 -308
  37. package/public/his/editor/vender/date97/skin/whyGreen/datepicker.css +255 -255
  38. package/public/his/editor/vender/diff.js +1627 -1627
  39. package/public/his/editor/vender/editor.js +1 -1
  40. package/public/his/editor/vender/fabric.js +31187 -31187
  41. package/public/his/editor/vender/jquery/jquery.base64.js +190 -190
  42. package/public/his/editor/vender/jquery/jquery.js +10872 -10872
  43. package/public/his/editor/vender/jquery/jquery.print.js +255 -255
  44. package/public/his/editor/vender/jquery/zTreeStyle/zTreeStyle.css +96 -96
  45. package/public/his/editor/vender/mui/mui.min.css +4 -4
  46. package/public/his/editor/vender/mui/mui.min.js +5 -5
  47. package/public/his/editor/vender/mui/mui.picker.min.css +6 -6
  48. package/public/his/editor/vender/mui/mui.picker.min.js +6 -6
  49. package/public/his/editor/vender/qrcode.js +7 -7
  50. package/public/his/editor/vender/requirejs/require.js +2145 -2145
  51. package/public/his/editor/vender/signature/jSignature.CompressorSVG.js +518 -518
  52. package/public/his/editor/vender/signature/jSignature.UndoButton.js +164 -164
  53. package/public/his/editor/vender/signature/jSignature.js +1486 -1486
  54. package/public/his/editor/vender/validator.js +5094 -5094
  55. package/public/his/editor/vender/weui/weui.css +5659 -5659
  56. package/public/his/editor/vender/weui/weui.min.css +4 -4
  57. package/public/his/editor/vender/weui/weui.min.js +11 -11
  58. package/public/index.html +27 -27
  59. package/src/App.vue +196 -196
  60. package/src/ReportView.js +19 -19
  61. package/src/assets/img/querySlotDemo.svg +15 -15
  62. package/src/assets/svg/badtwo.svg +1 -1
  63. package/src/assets/svg/goodtwo.svg +1 -1
  64. package/src/base-client/components/AI/AskAiBtn.vue +136 -136
  65. package/src/base-client/components/AI/demo.vue +31 -31
  66. package/src/base-client/components/common/AMisRender/index.js +3 -3
  67. package/src/base-client/components/common/AMisRender/index.vue +263 -263
  68. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +470 -470
  69. package/src/base-client/components/common/AddressSearchCombobox/IcMapIcon.vue +16 -16
  70. package/src/base-client/components/common/AddressSearchCombobox/demo.vue +36 -36
  71. package/src/base-client/components/common/AddressSearchCombobox/ic_map.svg +6 -6
  72. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  73. package/src/base-client/components/common/CitySelect/CitySelect.vue +342 -342
  74. package/src/base-client/components/common/CitySelect/index.js +3 -3
  75. package/src/base-client/components/common/CitySelect/index.md +109 -109
  76. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  77. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +1014 -1014
  78. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  79. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  80. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +452 -452
  81. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +511 -511
  82. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  83. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  84. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +149 -149
  85. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  86. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  87. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  88. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  89. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  90. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  91. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorModal.vue +108 -108
  92. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorPanel.vue +413 -413
  93. package/src/base-client/components/common/LowCodeComponent/LowCodePageOrganization.vue +502 -502
  94. package/src/base-client/components/common/LowCodeComponent/LowCodeRender.vue +728 -728
  95. package/src/base-client/components/common/LowCodeComponent/LowCodeRenderEnter.vue +29 -29
  96. package/src/base-client/components/common/LowCodeComponent/LowCodeUIStore.vue +219 -219
  97. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeAddPageModal.vue +117 -117
  98. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeCustomJSModal.vue +80 -80
  99. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeEventEditorModal.vue +398 -398
  100. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLifeCycleModal.vue +65 -65
  101. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicCallbackModal.vue +64 -64
  102. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicParamModal.vue +73 -73
  103. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeRunFunctionParamModal.vue +76 -76
  104. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  105. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  106. package/src/base-client/components/common/Recording/Recording.vue +243 -243
  107. package/src/base-client/components/common/Recording/index.js +3 -3
  108. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  109. package/src/base-client/components/common/Tree/index.js +2 -2
  110. package/src/base-client/components/common/Upload/Upload.vue +322 -322
  111. package/src/base-client/components/common/Upload/index.js +3 -3
  112. package/src/base-client/components/common/XAddForm/XAddForm.vue +113 -113
  113. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +1146 -1146
  114. package/src/base-client/components/common/XAddNativeForm/demo.vue +43 -43
  115. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  116. package/src/base-client/components/common/XAddNativeFormOA/XAddNativeFormOA.vue +303 -303
  117. package/src/base-client/components/common/XAddNativeFormOA/index.js +3 -3
  118. package/src/base-client/components/common/XAddNativeFormOA/index.md +146 -146
  119. package/src/base-client/components/common/XAddReport/XAddReport.vue +207 -207
  120. package/src/base-client/components/common/XAddReport/index.js +3 -3
  121. package/src/base-client/components/common/XAddReport/index.md +56 -56
  122. package/src/base-client/components/common/XBadge/XBadge.vue +94 -94
  123. package/src/base-client/components/common/XButtons/XButtonDemo.vue +28 -28
  124. package/src/base-client/components/common/XButtons/XButtons.vue +71 -71
  125. package/src/base-client/components/common/XButtons/index.js +3 -3
  126. package/src/base-client/components/common/XButtons/index.md +61 -61
  127. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  128. package/src/base-client/components/common/XCheckList/XCheckList.vue +106 -106
  129. package/src/base-client/components/common/XCheckList/XCheckListDemo.vue +41 -41
  130. package/src/base-client/components/common/XConversation/XConversation.vue +263 -263
  131. package/src/base-client/components/common/XConversation/XConversationDemo.vue +28 -28
  132. package/src/base-client/components/common/XDataCard/XDataCard.vue +28 -19
  133. package/src/base-client/components/common/XDataCard/index.js +3 -3
  134. package/src/base-client/components/common/XDataCard/index.md +1 -1
  135. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  136. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  137. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  138. package/src/base-client/components/common/XDatePicker/demo.vue +153 -153
  139. package/src/base-client/components/common/XDatePicker/index.vue +259 -259
  140. package/src/base-client/components/common/XDescriptions/XDescriptions.vue +169 -169
  141. package/src/base-client/components/common/XDescriptions/XDescriptionsGroup.vue +304 -304
  142. package/src/base-client/components/common/XDescriptions/demo.vue +50 -50
  143. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  144. package/src/base-client/components/common/XDescriptions/index.md +83 -83
  145. package/src/base-client/components/common/XDetailsView/XDetailsView.vue +238 -238
  146. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  147. package/src/base-client/components/common/XForm/XForm.vue +393 -393
  148. package/src/base-client/components/common/XForm/XFormItem.vue +1286 -1286
  149. package/src/base-client/components/common/XForm/XStatusButton.vue +54 -54
  150. package/src/base-client/components/common/XForm/XTreeSelect.vue +250 -250
  151. package/src/base-client/components/common/XForm/index.md +178 -178
  152. package/src/base-client/components/common/XForm/itemComponent/XClickChangeBtn/index.vue +49 -49
  153. package/src/base-client/components/common/XFormCol/XFormCol.vue +157 -157
  154. package/src/base-client/components/common/XFormGroup/XFormGroup.vue +304 -304
  155. package/src/base-client/components/common/XFormGroup/demo.vue +46 -46
  156. package/src/base-client/components/common/XFormGroup/index.js +3 -3
  157. package/src/base-client/components/common/XFormGroup/index.md +38 -38
  158. package/src/base-client/components/common/XFormGroupDetails/XFormGroupDetails.vue +72 -72
  159. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  160. package/src/base-client/components/common/XFormTable/XFormTable.vue +856 -856
  161. package/src/base-client/components/common/XFormTable/demo.vue +60 -60
  162. package/src/base-client/components/common/XFormTable/index.md +92 -92
  163. package/src/base-client/components/common/XImportExcel/XImportExcel.vue +167 -167
  164. package/src/base-client/components/common/XLabelSelect/XLabelSelect.vue +110 -110
  165. package/src/base-client/components/common/XLabelSelect/XLabelSelectDemo.vue +35 -35
  166. package/src/base-client/components/common/XLicensePlate/XLicensePlate.vue +193 -193
  167. package/src/base-client/components/common/XLicensePlate/XLicensePlateDemo.vue +48 -48
  168. package/src/base-client/components/common/XPrint/Demo.vue +41 -41
  169. package/src/base-client/components/common/XPrint/OpenInvoice.vue +21 -21
  170. package/src/base-client/components/common/XPrint/PrintBill.vue +302 -302
  171. package/src/base-client/components/common/XPrint/PrintHtml.js +98 -98
  172. package/src/base-client/components/common/XPrint/css/hiPrintCss.js +359 -359
  173. package/src/base-client/components/common/XPrint/css/lodopCss.js +26 -26
  174. package/src/base-client/components/common/XPrint/css/print-lock.css +351 -351
  175. package/src/base-client/components/common/XPrint/index.vue +97 -97
  176. package/src/base-client/components/common/XReport/XReport.vue +892 -892
  177. package/src/base-client/components/common/XReport/XReportDemo.vue +71 -71
  178. package/src/base-client/components/common/XReport/XReportDesign.vue +463 -463
  179. package/src/base-client/components/common/XReport/XReportJsonRender.vue +381 -381
  180. package/src/base-client/components/common/XReport/XReportTrGroup.vue +816 -816
  181. package/src/base-client/components/common/XReport/index.js +3 -3
  182. package/src/base-client/components/common/XReport/index.md +44 -44
  183. package/src/base-client/components/common/XReport/print.js +186 -186
  184. package/src/base-client/components/common/XReportDrawer/XReportDrawer.vue +201 -201
  185. package/src/base-client/components/common/XReportDrawer/index.js +3 -3
  186. package/src/base-client/components/common/XReportGrid/XReport.vue +1070 -1070
  187. package/src/base-client/components/common/XReportGrid/XReportDemo.vue +47 -47
  188. package/src/base-client/components/common/XReportGrid/XReportDesign.vue +628 -628
  189. package/src/base-client/components/common/XReportGrid/XReportJsonRender.vue +380 -380
  190. package/src/base-client/components/common/XReportGrid/XReportTrGroup.vue +1104 -1104
  191. package/src/base-client/components/common/XReportGrid/index.js +3 -3
  192. package/src/base-client/components/common/XReportGrid/index.md +44 -44
  193. package/src/base-client/components/common/XReportGrid/print.js +184 -184
  194. package/src/base-client/components/common/XReportSlot/XReportSlot.vue +110 -110
  195. package/src/base-client/components/common/XReportSlot/index.js +3 -3
  196. package/src/base-client/components/common/XReportSlot/index.md +48 -48
  197. package/src/base-client/components/common/XSimpleDescriptions/XSimpleDescriptions.vue +166 -166
  198. package/src/base-client/components/common/XSimpleDescriptions/index.js +3 -3
  199. package/src/base-client/components/common/XSimpleDescriptions/index.md +7 -7
  200. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  201. package/src/base-client/components/common/XStepView/index.js +3 -3
  202. package/src/base-client/components/common/XStepView/index.md +31 -31
  203. package/src/base-client/components/common/XTab/XTab.vue +201 -201
  204. package/src/base-client/components/common/XTab/XTabDemo.vue +22 -22
  205. package/src/base-client/components/common/XTab/index.js +3 -3
  206. package/src/base-client/components/common/XTable/CustomFuncCel.vue +51 -51
  207. package/src/base-client/components/common/XTable/TableCellRenderer.vue +161 -161
  208. package/src/base-client/components/common/XTable/index.md +255 -255
  209. package/src/base-client/components/common/XTagGroup/index.vue +52 -52
  210. package/src/base-client/components/common/XTree/XTree.vue +424 -424
  211. package/src/base-client/components/common/XTree/XTreePro.vue +452 -452
  212. package/src/base-client/components/common/XTree/index.js +3 -3
  213. package/src/base-client/components/common/XTree/index.md +36 -36
  214. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +113 -113
  215. package/src/base-client/components/common/XTreeOne/XTreeOnePro.vue +128 -128
  216. package/src/base-client/components/common/richTextModal/index.vue +56 -56
  217. package/src/base-client/components/common/richTextModal/richDemo.vue +48 -48
  218. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +359 -359
  219. package/src/base-client/components/his/XHisEditor/index.js +3 -3
  220. package/src/base-client/components/index.js +51 -51
  221. package/src/base-client/components/layout/XPageView/RenderRow.vue +63 -63
  222. package/src/base-client/components/layout/XPageView/XErrorView.vue +11 -11
  223. package/src/base-client/components/layout/XPageView/XPageView.vue +155 -155
  224. package/src/base-client/components/layout/XPageView/index.js +3 -3
  225. package/src/base-client/components/layout/XPageView/index.md +38 -38
  226. package/src/base-client/components/layout/XTreeView/XTreeView.vue +130 -130
  227. package/src/base-client/components/layout/XTreeView/index.js +3 -3
  228. package/src/base-client/components/layout/XTreeView/index.md +46 -46
  229. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  230. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  231. package/src/base-client/plugins/AppData.js +121 -121
  232. package/src/base-client/plugins/Config.js +19 -19
  233. package/src/base-client/plugins/GetLoginInfoService.js +183 -183
  234. package/src/base-client/plugins/Recording.js +258 -258
  235. package/src/base-client/plugins/index.js +23 -23
  236. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  237. package/src/bootstrap.js +42 -42
  238. package/src/components/Charts/Bar.vue +62 -62
  239. package/src/components/Charts/ChartCard.vue +134 -134
  240. package/src/components/Charts/Liquid.vue +67 -67
  241. package/src/components/Charts/MiniArea.vue +39 -39
  242. package/src/components/Charts/MiniBar.vue +39 -39
  243. package/src/components/Charts/MiniProgress.vue +75 -75
  244. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  245. package/src/components/Charts/Radar.vue +68 -68
  246. package/src/components/Charts/RankList.vue +77 -77
  247. package/src/components/Charts/TagCloud.vue +113 -113
  248. package/src/components/Charts/TransferBar.vue +64 -64
  249. package/src/components/Charts/Trend.vue +82 -82
  250. package/src/components/Charts/chart.less +12 -12
  251. package/src/components/Charts/smooth.area.less +13 -13
  252. package/src/components/CodeMirror/inedx.vue +118 -118
  253. package/src/components/CodeMirror/setting.js +40 -40
  254. package/src/components/FilePreview/FilePreview.vue +166 -166
  255. package/src/components/HeightScanner/index.vue +571 -571
  256. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  257. package/src/components/NumberInfo/index.js +3 -3
  258. package/src/components/NumberInfo/index.less +54 -54
  259. package/src/components/NumberInfo/index.md +43 -43
  260. package/src/components/STable/index.js +390 -390
  261. package/src/components/card/ChartCard.vue +79 -79
  262. package/src/components/chart/Bar.vue +60 -60
  263. package/src/components/chart/MiniArea.vue +67 -67
  264. package/src/components/chart/MiniBar.vue +59 -59
  265. package/src/components/chart/MiniProgress.vue +57 -57
  266. package/src/components/chart/Radar.vue +80 -80
  267. package/src/components/chart/RankingList.vue +60 -60
  268. package/src/components/chart/Trend.vue +79 -79
  269. package/src/components/chart/index.less +9 -9
  270. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  271. package/src/components/checkbox/ImgCheckbox.vue +117 -117
  272. package/src/components/checkbox/ImgCheckboxGroup.vue +76 -76
  273. package/src/components/checkbox/index.js +9 -9
  274. package/src/components/exception/ExceptionPage.vue +70 -70
  275. package/src/components/g2Charts/constants.js +202 -202
  276. package/src/components/g2Charts/demo.vue +808 -808
  277. package/src/components/g2Charts/designer.vue +228 -228
  278. package/src/components/g2Charts/designerBaseConfig.vue +61 -61
  279. package/src/components/g2Charts/designerDataConfig.vue +259 -259
  280. package/src/components/g2Charts/designerStyleConfig.vue +16 -16
  281. package/src/components/g2Charts/index.vue +397 -397
  282. package/src/components/index.js +36 -36
  283. package/src/components/input/IInput.vue +66 -66
  284. package/src/components/menu/SideMenu.vue +75 -75
  285. package/src/components/menu/menu.js +273 -273
  286. package/src/components/setting/Setting.vue +234 -234
  287. package/src/components/tool/AStepItem.vue +60 -60
  288. package/src/config/CreateQueryConfig.js +325 -325
  289. package/src/config/default/antd.config.js +89 -89
  290. package/src/config/default/setting.config.js +55 -55
  291. package/src/font-style/font.css +4 -4
  292. package/src/layouts/CommonLayout.vue +56 -56
  293. package/src/layouts/GridView.vue +45 -45
  294. package/src/layouts/PageLayout.vue +151 -151
  295. package/src/layouts/SinglePageView.vue +136 -136
  296. package/src/layouts/header/AdminHeader.vue +132 -132
  297. package/src/layouts/header/HeaderNotice.vue +177 -177
  298. package/src/layouts/header/InstitutionDetail.vue +181 -181
  299. package/src/layouts/tabs/TabsHead.vue +189 -189
  300. package/src/layouts/tabs/TabsView.vue +389 -389
  301. package/src/lib.js +1 -1
  302. package/src/main.js +34 -34
  303. package/src/mock/extend/index.js +84 -84
  304. package/src/mock/goods/index.js +108 -108
  305. package/src/pages/AMisDemo/AMisDemo.vue +325 -325
  306. package/src/pages/AMisDemo/AMisDemo2.vue +74 -74
  307. package/src/pages/DefaultExample/index.vue +77 -77
  308. package/src/pages/DynamicStatistics/ChartSelector.vue +331 -331
  309. package/src/pages/DynamicStatistics/DataTabs.vue +83 -83
  310. package/src/pages/DynamicStatistics/DynamicTable.vue +128 -128
  311. package/src/pages/DynamicStatistics/EvaluationArea.vue +69 -69
  312. package/src/pages/DynamicStatistics/FavoriteList.vue +50 -50
  313. package/src/pages/DynamicStatistics/QuestionHistoryAndFavorites.vue +591 -591
  314. package/src/pages/DynamicStatistics/SearchBar.vue +192 -192
  315. package/src/pages/DynamicStatistics/index.vue +282 -282
  316. package/src/pages/Example/childIndex.vue +15 -15
  317. package/src/pages/Example/index.vue +30 -30
  318. package/src/pages/NewDynamicStatistics/ChartSelector.vue +331 -331
  319. package/src/pages/NewDynamicStatistics/DataTabs.vue +122 -122
  320. package/src/pages/NewDynamicStatistics/DynamicTable.vue +128 -128
  321. package/src/pages/NewDynamicStatistics/EvaluationArea.vue +69 -69
  322. package/src/pages/NewDynamicStatistics/FavoriteList.vue +50 -50
  323. package/src/pages/NewDynamicStatistics/QuestionHistoryAndFavorites.vue +289 -289
  324. package/src/pages/NewDynamicStatistics/SearchBar.vue +193 -193
  325. package/src/pages/NewDynamicStatistics/index.vue +258 -258
  326. package/src/pages/Recording/index.vue +77 -77
  327. package/src/pages/ReportGrid/index.vue +76 -76
  328. package/src/pages/ServiceReview/index.vue +284 -284
  329. package/src/pages/SubExample/index.vue +26 -26
  330. package/src/pages/WorkflowDetail/WorkFlowDemo.vue +32 -32
  331. package/src/pages/WorkflowDetail/WorkflowDetail.vue +230 -230
  332. package/src/pages/WorkflowDetail/WorkflowPageDetail/LeaveMessage.vue +131 -131
  333. package/src/pages/WorkflowDetail/WorkflowPageDetail/TrimTextTail.vue +23 -23
  334. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformation.vue +302 -302
  335. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformationDetails.vue +276 -276
  336. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandle.vue +864 -864
  337. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandleReso.vue +997 -997
  338. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowTimeline.vue +222 -222
  339. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkOrderParentDetails.vue +233 -233
  340. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowDetailResso.vue +261 -261
  341. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowListResolution.vue +248 -248
  342. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowLog.vue +73 -73
  343. package/src/pages/XPageViewExample/index.vue +38 -38
  344. package/src/pages/XReportView/index.vue +64 -64
  345. package/src/pages/XTreeOneProExample/index.vue +67 -67
  346. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  347. package/src/pages/login/Login.vue +378 -378
  348. package/src/pages/login/LoginV3.vue +389 -389
  349. package/src/pages/lowCode/lowCodeEditor.vue +1219 -1219
  350. package/src/pages/lowCode/lowCodeRenderPage.vue +43 -43
  351. package/src/pages/report/ReportTable.js +124 -124
  352. package/src/pages/resourceManage/orgListManage.vue +98 -98
  353. package/src/pages/system/dictionary/index.vue +44 -44
  354. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  355. package/src/pages/system/monitor/operLog/index.vue +37 -37
  356. package/src/pages/system/settings/modifyPassword.vue +117 -117
  357. package/src/pages/system/ticket/index.vue +480 -480
  358. package/src/pages/system/ticket/submitTicketSuccess.vue +484 -484
  359. package/src/pages/userInfoDetailManage/ChangeMeterRecordQuery/index.vue +64 -64
  360. package/src/pages/userInfoDetailManage/FillCardRecordQuery/index.vue +76 -76
  361. package/src/pages/userInfoDetailManage/FillGasRecordQuery/index.vue +74 -74
  362. package/src/pages/userInfoDetailManage/InfoChangeRecordQuery/index.vue +64 -64
  363. package/src/pages/userInfoDetailManage/InstructRecordQuery/index.vue +64 -64
  364. package/src/pages/userInfoDetailManage/MachineRecordQuery/index.vue +74 -74
  365. package/src/pages/userInfoDetailManage/MeterParamRecordQuery/index.vue +64 -64
  366. package/src/pages/userInfoDetailManage/OtherChargeRecordQuery/index.vue +74 -74
  367. package/src/pages/userInfoDetailManage/TransferRecordQuery/index.vue +66 -66
  368. package/src/pages/userInfoDetailManage/UserChargeRecordQuery/index.vue +92 -92
  369. package/src/pages/userInfoDetailManage/UserHandRecordQuery/index.vue +86 -86
  370. package/src/pages/userInfoDetailManage/UserRecordQuery/index.vue +73 -73
  371. package/src/pages/userInfoDetailManage/WatchCollectionRecordQuery/index.vue +64 -64
  372. package/src/pages/userInfoDetailManage/index.vue +82 -82
  373. package/src/pages/userInfoDetailManage/userInfoDetailQueryTabs.vue +132 -132
  374. package/src/plugins/EventLogPlugin.js +33 -33
  375. package/src/plugins/FindParentsData.js +17 -17
  376. package/src/plugins/HiPrintPlugin.js +124 -124
  377. package/src/router/async/config.async.js +35 -35
  378. package/src/router/async/router.map.js +188 -188
  379. package/src/router/guards.js +263 -263
  380. package/src/router/index.js +27 -27
  381. package/src/router.js +19 -19
  382. package/src/services/DataModel.js +30 -30
  383. package/src/services/LodopFuncs.js +137 -137
  384. package/src/services/api/TicketDetailsViewApi.js +46 -46
  385. package/src/services/api/cas.js +79 -79
  386. package/src/services/api/common.js +346 -346
  387. package/src/services/api/entity.js +18 -18
  388. package/src/services/api/index.js +17 -17
  389. package/src/services/api/restTools.js +145 -145
  390. package/src/services/api/workFlow.js +63 -63
  391. package/src/services/apiService.js +15 -15
  392. package/src/services/user.js +90 -90
  393. package/src/services/v3Api.js +116 -116
  394. package/src/store/modules/account.js +115 -115
  395. package/src/store/modules/index.js +5 -5
  396. package/src/store/modules/lowCode.js +33 -33
  397. package/src/store/modules/setting.js +119 -119
  398. package/src/theme/default/style.less +58 -58
  399. package/src/theme/global.less +159 -159
  400. package/src/utils/authority-utils.js +85 -85
  401. package/src/utils/errorCode.js +6 -6
  402. package/src/utils/formatter.js +74 -74
  403. package/src/utils/htmlToPDF.js +108 -108
  404. package/src/utils/htmlToPDFApi.js +5 -5
  405. package/src/utils/indexedDB.js +263 -263
  406. package/src/utils/login.js +188 -188
  407. package/src/utils/lowcode/lowcodeComponentMixin.js +120 -120
  408. package/src/utils/lowcode/lowcodeLog.js +29 -29
  409. package/src/utils/lowcode/lowcodeUtils.js +373 -373
  410. package/src/utils/lowcode/registerComponentForEditor.js +1 -1
  411. package/src/utils/lowcode/registerComponentForRender.js +11 -11
  412. package/src/utils/map-utils.js +47 -47
  413. package/src/utils/microAppUtils.js +40 -40
  414. package/src/utils/reg.js +95 -95
  415. package/src/utils/request.js +362 -362
  416. package/src/utils/routerUtil.js +450 -450
  417. package/src/utils/runEvalFunction.js +14 -14
  418. package/src/utils/util.js +329 -329
  419. package/src/utils/waterMark.js +31 -31
  420. package/test/Amis.spec.js +163 -163
  421. package/test/Tree.spec.js +167 -167
  422. package/test/myDialog.spec.js +46 -46
  423. package/test/util.test.js +52 -52
  424. package/test/v3Api.test.js +1983 -1983
  425. package/vue.config.js +213 -213
  426. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
@@ -1,502 +1,502 @@
1
- <template>
2
- <div>
3
- <p v-if="config.page.length === 0"> 未选中任何工作空间 </p>
4
- <a-tree
5
- v-if="showTree"
6
- defaultExpandAll
7
- show-icon
8
- @select="handleTreeSelect"
9
- :selectedKeys="selectedKeys"
10
- style="overflow: hidden"
11
- :draggable="true"
12
- @drop="treeDrop"
13
- :tree-data="treeData">
14
- <!-- 右键菜单 -->
15
- <template #title="{ key: treeKey, title }">
16
- <a-dropdown :trigger="['contextmenu']">
17
- <span>{{ title }}</span>
18
- <template #overlay>
19
- <a-menu @click="({ key: menuKey }) => onContextMenuClick(treeKey, menuKey)">
20
- <a-menu-item key="copy"><a-icon type="copy" />&nbsp;&nbsp;复制</a-menu-item>
21
- <a-menu-item key="paste" :disabled="copyCache === undefined"><a-icon type="snippets" />&nbsp;&nbsp;粘贴</a-menu-item>
22
- <a-menu-divider />
23
- <a-menu-item key="split" :disabled="determineLevel(treeKey) !== 'item'"><a-icon type="fullscreen" />&nbsp;&nbsp;拆分</a-menu-item>
24
- <a-menu-item key="add" :disabled="determineLevel(treeKey) === 'item'"><a-icon type="plus-square" />&nbsp;&nbsp;添加</a-menu-item>
25
- <a-menu-item key="rename" :disabled="determineLevel(treeKey) !== 'item' && determineLevel(treeKey) !== 'page'"><a-icon type="italic" />&nbsp;&nbsp;重命名</a-menu-item>
26
- <a-menu-divider />
27
- <a-menu-item key="delete"><a-icon type="delete" />&nbsp;&nbsp;删除</a-menu-item>
28
- </a-menu>
29
- </template>
30
- </a-dropdown>
31
- </template>
32
- <!-- 树中的图标 -->
33
- <a-icon slot="file" type="file" />
34
- <a-icon slot="appstore" type="appstore" />
35
- <a-icon slot="pause" type="pause" />
36
- <a-icon slot="ordered-list" type="ordered-list" />
37
- </a-tree>
38
- <!-- 页面容器重命名弹框 -->
39
- <a-modal
40
- title="页面容器重命名"
41
- width="60%"
42
- :z-index="1001"
43
- :destroyOnClose="true"
44
- @ok="handleRenameModalOk"
45
- @cancel="() => { showRenameModal = false }"
46
- :visible="showRenameModal">
47
- <a-form :label-col="{ span: 7 }" :wrapper-col="{ span: 12 }">
48
- <!-- 新名称 -->
49
- <a-form-item label="新名称">
50
- <a-input v-model="pageNewName"/>
51
- </a-form-item>
52
- </a-form>
53
- </a-modal>
54
- </div>
55
- </template>
56
-
57
- <script>
58
- import * as lowcodeUtils from '@vue2-client/utils/lowcode/lowcodeUtils'
59
- export default {
60
- props: {
61
- config: {
62
- type: Object,
63
- required: true,
64
- },
65
- // 可以由外侧控制哪个节点被选中
66
- selectTreeNode: {
67
- type: String,
68
- default: undefined
69
- }
70
- },
71
- methods: {
72
- // 重命名弹框确认
73
- handleRenameModalOk () {
74
- this.$emit('rename', this.renameId, this.pageNewName)
75
- this.renameId = undefined
76
- this.showRenameModal = false
77
- },
78
- // 根据id返回类型
79
- determineLevel (id) {
80
- if (id.startsWith('page')) {
81
- return 'page'
82
- } else if (id.startsWith('container_page_')) {
83
- return 'container_page'
84
- } else if (id.startsWith('row')) {
85
- return 'row'
86
- } else {
87
- return 'item'
88
- }
89
- },
90
- // 将树中的key转换回原始ID
91
- getOriginalKey (treeKey) {
92
- if (treeKey.startsWith('page')) {
93
- return treeKey.substring('page_'.length)
94
- } else if (treeKey.startsWith('container_page_')) {
95
- return treeKey.substring('container_page_'.length)
96
- } else if (treeKey.startsWith('row')) {
97
- const newRowId = treeKey.substring('row_'.length)
98
- const lastIndex = newRowId.lastIndexOf('_')
99
- const pre = newRowId.substring(0, lastIndex)
100
- const index = newRowId.substring(lastIndex + 1)
101
- const newIndex = Number(index) - 1
102
- return pre + '_' + newIndex
103
- } else {
104
- return treeKey
105
- }
106
- },
107
- // 根据ID,返回拖拽级别和类型,便于拖拽模式判断
108
- determineDragLevel (id) {
109
- if (id.startsWith('page')) {
110
- return {
111
- type: 'page',
112
- level: 0
113
- }
114
- } else if (id.startsWith('container_page_')) {
115
- return {
116
- type: 'container_page',
117
- level: 2
118
- }
119
- } else if (id.startsWith('row')) {
120
- return {
121
- type: 'row',
122
- level: 1
123
- }
124
- } else {
125
- return {
126
- type: 'item',
127
- level: 2
128
- }
129
- }
130
- },
131
- // 树拖拽事件
132
- treeDrop (info) {
133
- // 拖拽结束目标的id
134
- const dropKey = info.node.eventKey
135
- // 被拖拽的id
136
- const dragKey = info.dragNode.eventKey
137
- // 拖拽目标的位置
138
- const dropPos = info.node.pos.split('-')
139
-
140
- // 拖拽结束目标的类型
141
- const dropLevel = this.determineDragLevel(dropKey)
142
- // 被拖拽的类型
143
- const dragLevel = this.determineDragLevel(dragKey)
144
-
145
- // 拖拽对于目标的定位,-1表示之前,0表示插入,1表示之后
146
- const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1])
147
-
148
- // 以下几种为非法拖拽
149
- // 1. 平级移动但是目标是新增
150
- // 2. 高一级移动但不是新增
151
- // 3. 高级组件移动到低级
152
- // 4. 相差2级移动
153
- // 唯一特例,行可以插入容器页面,容器页面等于模块级别,但可以被行插入
154
-
155
- // 只有三种情况可以拖拽
156
- // 1.平级挪
157
- // 2.高一级插
158
- // 3.行插子页面
159
- // 4.平级插入改为替换双方位置(特例)
160
-
161
- // 1. 平级挪
162
- if (dropLevel.level === dragLevel.level && dropPosition !== 0) {
163
- const dragType = 'move'
164
- this.$emit('componentMove', this.getOriginalKey(dragKey), this.getOriginalKey(dropKey), dragLevel, dropLevel, dropPosition, dragType)
165
- return
166
- }
167
-
168
- // 2.高一级插
169
- if (dropLevel.level === (dragLevel.level - 1) && dropPosition === 0) {
170
- const dragType = 'higher'
171
- this.$emit('componentMove', this.getOriginalKey(dragKey), this.getOriginalKey(dropKey), dragLevel, dropLevel, dropPosition, dragType)
172
- return
173
- }
174
-
175
- // 3.行插子页面
176
- if (dragLevel.type === 'row' && dropLevel.type === 'container_page' && dropPosition === 0) {
177
- const dragType = 'rowToContainer'
178
- this.$emit('componentMove', this.getOriginalKey(dragKey), this.getOriginalKey(dropKey), dragLevel, dropLevel, dropPosition, dragType)
179
- return
180
- }
181
-
182
- // 4.平级插入改为替换双方位置(特例)
183
- if (dropLevel.level === dragLevel.level && dropPosition === 0) {
184
- const dragType = 'switch'
185
- this.$emit('componentMove', this.getOriginalKey(dragKey), this.getOriginalKey(dropKey), dragLevel, dropLevel, dropPosition, dragType)
186
- return
187
- }
188
-
189
- // 能到这不return的证明都是非法移动
190
- this.$message.error('不合法的拖拽!')
191
- },
192
- // 删除
193
- handleDelete (targetType, originalKey) {
194
- const _this = this
195
- if (targetType === 'item') {
196
- this.$confirm({
197
- title: `确认删除此组件?`,
198
- content: `组件ID:${originalKey}`,
199
- onOk () {
200
- _this.$emit('deleteComponent', originalKey, 'component')
201
- },
202
- onCancel () {},
203
- })
204
- } else if (targetType === 'page') {
205
- const page = lowcodeUtils.getPageConfigById(originalKey, this.config)
206
- this.$confirm({
207
- title: `确认删除此页面?`,
208
- content: `所选页面:${page.title}[${lowcodeUtils.resolvePageType(page.type)}]`,
209
- onOk () {
210
- _this.$emit('deleteComponent', originalKey, 'page')
211
- },
212
- onCancel () {},
213
- })
214
- } else if (targetType === 'row') {
215
- this.$confirm({
216
- title: `确认删除此行?`,
217
- content: `所选行:${originalKey}`,
218
- onOk () {
219
- _this.$emit('deleteComponent', originalKey, 'row')
220
- },
221
- onCancel () {},
222
- })
223
- } else if (targetType === 'container_page') {
224
- this.$confirm({
225
- title: `确认删除此容器页面?`,
226
- content: `所选容器:${originalKey}`,
227
- onOk () {
228
- _this.$emit('deleteComponent', originalKey, 'container_page')
229
- },
230
- onCancel () {},
231
- })
232
- }
233
- },
234
- // 复制
235
- handleCopy (treeKey, targetType) {
236
- const originalKey = this.getOriginalKey(treeKey)
237
- // 获取复制对象
238
- let temp
239
- if (targetType === 'container_page') {
240
- temp = lowcodeUtils.getContainerPageOuterByContainerPageId(originalKey, this.config)
241
- } else {
242
- temp = lowcodeUtils.getConfig(originalKey, this.config)
243
- }
244
- // 复制
245
- let copy = JSON.parse(JSON.stringify(temp))
246
- if (targetType === 'page') {
247
- // 重新修改id和title
248
- copy.id = 'page_' + lowcodeUtils.nanoidWithoutSymbol(6)
249
- copy.title = copy.title + '_副本'
250
- // 复制页面自动粘贴
251
- this.$emit('pasteItem', originalKey, copy, 'page')
252
- } else {
253
- if (targetType === 'row') {
254
- // 将行内每个组件重新修改id
255
- const target = copy.body
256
- copy.id = 'undefine'
257
- target.forEach(item => {
258
- if (item.type === 'container_page') {
259
- item.id = 'container_' + lowcodeUtils.nanoidWithoutSymbol(6)
260
- item = lowcodeUtils.reRandomComponentId(item)
261
- } else {
262
- const prefix = item.id.split('_')[0]
263
- item.id = prefix + '_' + lowcodeUtils.nanoidWithoutSymbol(6)
264
- }
265
- })
266
- } else if (targetType === 'item') {
267
- // 重新修改id
268
- const prefix = copy.id.split('_')[0]
269
- copy.id = prefix + '_' + lowcodeUtils.nanoidWithoutSymbol(6)
270
- } else if (targetType === 'container_page') {
271
- // 重新修改id
272
- copy.id = 'container_' + lowcodeUtils.nanoidWithoutSymbol(6)
273
- copy = lowcodeUtils.reRandomComponentId(copy)
274
- }
275
- this.copyCache = {
276
- type: targetType,
277
- content: copy
278
- }
279
- this.$message.success('复制成功!')
280
- }
281
- },
282
- // 粘贴
283
- handlePaste (targetType, originalKey) {
284
- // 同级别内容不能粘贴到另一个中
285
- if (targetType === this.copyCache.type) {
286
- this.$message.error('该操作不合法!')
287
- return
288
- }
289
-
290
- // 行只能复制到容器页面和页面中
291
- if (this.copyCache.type === 'row') {
292
- if (targetType === 'page' || targetType === 'container_page') {
293
- this.$emit('pasteItem', originalKey, this.copyCache, 'page-row')
294
- return
295
- }
296
- }
297
-
298
- // 模块,容器页面只能复制到行
299
- if (this.copyCache.type === 'item' || this.copyCache.type === 'container_page') {
300
- if (targetType === 'row') {
301
- this.$emit('pasteItem', originalKey, this.copyCache, 'row-item')
302
- return
303
- }
304
- }
305
-
306
- // 其余操作均不合法
307
- this.$message.error('该操作不合法!')
308
- },
309
- // 重命名
310
- handleRename (targetType, originalKey) {
311
- const target = lowcodeUtils.getConfig(originalKey, this.config)
312
- this.renameId = target.id
313
- if (target.title) {
314
- this.pageNewName = target.title
315
- } else if (target.name) {
316
- this.pageNewName = target.name
317
- } else {
318
- this.pageNewName = target.id
319
- }
320
- this.showRenameModal = true
321
- },
322
- // 拆分
323
- handleSplit (originalKey) {
324
- const _this = this
325
- this.$confirm({
326
- title: `是否垂直拆分?`,
327
- onOk () {
328
- _this.$emit('split', originalKey, true)
329
- },
330
- onCancel () {
331
- _this.$emit('split', originalKey, false)
332
- },
333
- })
334
- },
335
- // 添加
336
- handleAdd (targetType, originalKey) {
337
- if (targetType === 'page' || targetType === 'container_page') {
338
- this.$emit('add', originalKey, 'row')
339
- } else if (targetType === 'row') {
340
- this.$emit('add', originalKey, 'container')
341
- }
342
- },
343
- // 树右键事件
344
- onContextMenuClick (treeKey, menuKey) {
345
- // 判断目标类型
346
- const targetType = this.determineLevel(treeKey)
347
- const originalKey = this.getOriginalKey(treeKey)
348
- // 点击右键菜单中删除的事件
349
- switch (menuKey) {
350
- case 'delete':
351
- this.handleDelete(targetType, originalKey)
352
- return
353
- case 'copy':
354
- this.handleCopy(treeKey, targetType)
355
- return
356
- case 'paste':
357
- this.handlePaste(targetType, originalKey)
358
- return
359
- case 'rename':
360
- this.handleRename(targetType, originalKey)
361
- return
362
- case 'split':
363
- this.handleSplit(originalKey)
364
- return
365
- case 'add':
366
- this.handleAdd(targetType, originalKey)
367
- }
368
- },
369
- // 处理架构树点击事件
370
- handleTreeSelect (value) {
371
- // 如果是反选
372
- if (value.length === 0) {
373
- return
374
- }
375
- this.selectedKeys = value
376
- const type = this.determineLevel(value[0])
377
- if (type === 'page') {
378
- this.$emit('treeOrganizationClick', null)
379
- }
380
- this.$emit('treeOrganizationClick', this.getOriginalKey(value[0]))
381
- },
382
- // 初始化树
383
- initTree (config, container = undefined) {
384
- const result = []
385
- // 从配置中,抽取组件,初始化成树的格式
386
- for (let i = 0; i < config.page.length; i++) {
387
- // push第一级页面容器
388
- const page = config.page[i]
389
- let title, icon, key
390
- if (page.title) {
391
- title = page.title + '(' + lowcodeUtils.resolvePageType(page.type) + ')'
392
- icon = 'file'
393
- key = 'page_' + page.id
394
- } else {
395
- title = '列容器'
396
- icon = 'pause'
397
- key = 'container_page_' + page.id
398
- }
399
- result.push({
400
- title: title,
401
- key: key,
402
- children: [],
403
- slots: {
404
- icon: icon,
405
- },
406
- })
407
- // 在页面容器中,push第二级行容器
408
- for (let j = 0; j < page.body.length; j++) {
409
- const row = page.body[j]
410
- result[i].children.push({
411
- title: '行容器' + (j + 1),
412
- key: 'row_' + page.id + '_' + (j + 1),
413
- children: [],
414
- slots: {
415
- icon: 'ordered-list',
416
- },
417
- })
418
- // 在行容器中,push第三级组件
419
- for (let k = 0; k < row.body.length; k++) {
420
- const item = row.body[k]
421
- let name
422
- if (item.name) {
423
- name = item.name
424
- } else {
425
- name = item.id
426
- }
427
- // 如果item进行了嵌套,递归调用
428
- if (item.type === 'container_page') {
429
- this.initTree(item, result[i].children[j])
430
- } else {
431
- // 如果是container则显示为列容器
432
- if (item.type === 'container') {
433
- name = '列容器'
434
- result[i].children[j].children.push({
435
- title: name,
436
- key: item.id,
437
- children: [],
438
- slots: {
439
- icon: 'pause',
440
- },
441
- })
442
- } else {
443
- result[i].children[j].children.push({
444
- title: name,
445
- key: item.id,
446
- children: [],
447
- slots: {
448
- icon: 'appstore',
449
- },
450
- })
451
- }
452
- }
453
- }
454
- }
455
- }
456
- if (!container) {
457
- this.treeData = result
458
- } else {
459
- container.children = container.children.concat(result)
460
- }
461
- },
462
- },
463
- mounted () {
464
- this.initTree(this.config)
465
- this.showTree = true
466
- },
467
- data () {
468
- return {
469
- // 树的数据
470
- treeData: [],
471
- // 控制树的渲染
472
- showTree: false,
473
- // 控制重命名弹框显隐
474
- showRenameModal: false,
475
- // 复制的缓存
476
- copyCache: undefined,
477
- // 重命名绑定变量
478
- pageNewName: undefined,
479
- // 重命名对象的id
480
- renameId: undefined,
481
- // 在树中已选中的key
482
- selectedKeys: []
483
- }
484
- },
485
- watch: {
486
- // 如果外侧指定了某个节点,让树选中该节点
487
- selectTreeNode: {
488
- handler (newVal) {
489
- if (newVal) {
490
- this.selectedKeys = [newVal]
491
- } else {
492
- this.selectedKeys = []
493
- }
494
- }
495
- }
496
- }
497
- }
498
- </script>
499
-
500
- <style scoped lang="less">
501
-
502
- </style>
1
+ <template>
2
+ <div>
3
+ <p v-if="config.page.length === 0"> 未选中任何工作空间 </p>
4
+ <a-tree
5
+ v-if="showTree"
6
+ defaultExpandAll
7
+ show-icon
8
+ @select="handleTreeSelect"
9
+ :selectedKeys="selectedKeys"
10
+ style="overflow: hidden"
11
+ :draggable="true"
12
+ @drop="treeDrop"
13
+ :tree-data="treeData">
14
+ <!-- 右键菜单 -->
15
+ <template #title="{ key: treeKey, title }">
16
+ <a-dropdown :trigger="['contextmenu']">
17
+ <span>{{ title }}</span>
18
+ <template #overlay>
19
+ <a-menu @click="({ key: menuKey }) => onContextMenuClick(treeKey, menuKey)">
20
+ <a-menu-item key="copy"><a-icon type="copy" />&nbsp;&nbsp;复制</a-menu-item>
21
+ <a-menu-item key="paste" :disabled="copyCache === undefined"><a-icon type="snippets" />&nbsp;&nbsp;粘贴</a-menu-item>
22
+ <a-menu-divider />
23
+ <a-menu-item key="split" :disabled="determineLevel(treeKey) !== 'item'"><a-icon type="fullscreen" />&nbsp;&nbsp;拆分</a-menu-item>
24
+ <a-menu-item key="add" :disabled="determineLevel(treeKey) === 'item'"><a-icon type="plus-square" />&nbsp;&nbsp;添加</a-menu-item>
25
+ <a-menu-item key="rename" :disabled="determineLevel(treeKey) !== 'item' && determineLevel(treeKey) !== 'page'"><a-icon type="italic" />&nbsp;&nbsp;重命名</a-menu-item>
26
+ <a-menu-divider />
27
+ <a-menu-item key="delete"><a-icon type="delete" />&nbsp;&nbsp;删除</a-menu-item>
28
+ </a-menu>
29
+ </template>
30
+ </a-dropdown>
31
+ </template>
32
+ <!-- 树中的图标 -->
33
+ <a-icon slot="file" type="file" />
34
+ <a-icon slot="appstore" type="appstore" />
35
+ <a-icon slot="pause" type="pause" />
36
+ <a-icon slot="ordered-list" type="ordered-list" />
37
+ </a-tree>
38
+ <!-- 页面容器重命名弹框 -->
39
+ <a-modal
40
+ title="页面容器重命名"
41
+ width="60%"
42
+ :z-index="1001"
43
+ :destroyOnClose="true"
44
+ @ok="handleRenameModalOk"
45
+ @cancel="() => { showRenameModal = false }"
46
+ :visible="showRenameModal">
47
+ <a-form :label-col="{ span: 7 }" :wrapper-col="{ span: 12 }">
48
+ <!-- 新名称 -->
49
+ <a-form-item label="新名称">
50
+ <a-input v-model="pageNewName"/>
51
+ </a-form-item>
52
+ </a-form>
53
+ </a-modal>
54
+ </div>
55
+ </template>
56
+
57
+ <script>
58
+ import * as lowcodeUtils from '@vue2-client/utils/lowcode/lowcodeUtils'
59
+ export default {
60
+ props: {
61
+ config: {
62
+ type: Object,
63
+ required: true,
64
+ },
65
+ // 可以由外侧控制哪个节点被选中
66
+ selectTreeNode: {
67
+ type: String,
68
+ default: undefined
69
+ }
70
+ },
71
+ methods: {
72
+ // 重命名弹框确认
73
+ handleRenameModalOk () {
74
+ this.$emit('rename', this.renameId, this.pageNewName)
75
+ this.renameId = undefined
76
+ this.showRenameModal = false
77
+ },
78
+ // 根据id返回类型
79
+ determineLevel (id) {
80
+ if (id.startsWith('page')) {
81
+ return 'page'
82
+ } else if (id.startsWith('container_page_')) {
83
+ return 'container_page'
84
+ } else if (id.startsWith('row')) {
85
+ return 'row'
86
+ } else {
87
+ return 'item'
88
+ }
89
+ },
90
+ // 将树中的key转换回原始ID
91
+ getOriginalKey (treeKey) {
92
+ if (treeKey.startsWith('page')) {
93
+ return treeKey.substring('page_'.length)
94
+ } else if (treeKey.startsWith('container_page_')) {
95
+ return treeKey.substring('container_page_'.length)
96
+ } else if (treeKey.startsWith('row')) {
97
+ const newRowId = treeKey.substring('row_'.length)
98
+ const lastIndex = newRowId.lastIndexOf('_')
99
+ const pre = newRowId.substring(0, lastIndex)
100
+ const index = newRowId.substring(lastIndex + 1)
101
+ const newIndex = Number(index) - 1
102
+ return pre + '_' + newIndex
103
+ } else {
104
+ return treeKey
105
+ }
106
+ },
107
+ // 根据ID,返回拖拽级别和类型,便于拖拽模式判断
108
+ determineDragLevel (id) {
109
+ if (id.startsWith('page')) {
110
+ return {
111
+ type: 'page',
112
+ level: 0
113
+ }
114
+ } else if (id.startsWith('container_page_')) {
115
+ return {
116
+ type: 'container_page',
117
+ level: 2
118
+ }
119
+ } else if (id.startsWith('row')) {
120
+ return {
121
+ type: 'row',
122
+ level: 1
123
+ }
124
+ } else {
125
+ return {
126
+ type: 'item',
127
+ level: 2
128
+ }
129
+ }
130
+ },
131
+ // 树拖拽事件
132
+ treeDrop (info) {
133
+ // 拖拽结束目标的id
134
+ const dropKey = info.node.eventKey
135
+ // 被拖拽的id
136
+ const dragKey = info.dragNode.eventKey
137
+ // 拖拽目标的位置
138
+ const dropPos = info.node.pos.split('-')
139
+
140
+ // 拖拽结束目标的类型
141
+ const dropLevel = this.determineDragLevel(dropKey)
142
+ // 被拖拽的类型
143
+ const dragLevel = this.determineDragLevel(dragKey)
144
+
145
+ // 拖拽对于目标的定位,-1表示之前,0表示插入,1表示之后
146
+ const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1])
147
+
148
+ // 以下几种为非法拖拽
149
+ // 1. 平级移动但是目标是新增
150
+ // 2. 高一级移动但不是新增
151
+ // 3. 高级组件移动到低级
152
+ // 4. 相差2级移动
153
+ // 唯一特例,行可以插入容器页面,容器页面等于模块级别,但可以被行插入
154
+
155
+ // 只有三种情况可以拖拽
156
+ // 1.平级挪
157
+ // 2.高一级插
158
+ // 3.行插子页面
159
+ // 4.平级插入改为替换双方位置(特例)
160
+
161
+ // 1. 平级挪
162
+ if (dropLevel.level === dragLevel.level && dropPosition !== 0) {
163
+ const dragType = 'move'
164
+ this.$emit('componentMove', this.getOriginalKey(dragKey), this.getOriginalKey(dropKey), dragLevel, dropLevel, dropPosition, dragType)
165
+ return
166
+ }
167
+
168
+ // 2.高一级插
169
+ if (dropLevel.level === (dragLevel.level - 1) && dropPosition === 0) {
170
+ const dragType = 'higher'
171
+ this.$emit('componentMove', this.getOriginalKey(dragKey), this.getOriginalKey(dropKey), dragLevel, dropLevel, dropPosition, dragType)
172
+ return
173
+ }
174
+
175
+ // 3.行插子页面
176
+ if (dragLevel.type === 'row' && dropLevel.type === 'container_page' && dropPosition === 0) {
177
+ const dragType = 'rowToContainer'
178
+ this.$emit('componentMove', this.getOriginalKey(dragKey), this.getOriginalKey(dropKey), dragLevel, dropLevel, dropPosition, dragType)
179
+ return
180
+ }
181
+
182
+ // 4.平级插入改为替换双方位置(特例)
183
+ if (dropLevel.level === dragLevel.level && dropPosition === 0) {
184
+ const dragType = 'switch'
185
+ this.$emit('componentMove', this.getOriginalKey(dragKey), this.getOriginalKey(dropKey), dragLevel, dropLevel, dropPosition, dragType)
186
+ return
187
+ }
188
+
189
+ // 能到这不return的证明都是非法移动
190
+ this.$message.error('不合法的拖拽!')
191
+ },
192
+ // 删除
193
+ handleDelete (targetType, originalKey) {
194
+ const _this = this
195
+ if (targetType === 'item') {
196
+ this.$confirm({
197
+ title: `确认删除此组件?`,
198
+ content: `组件ID:${originalKey}`,
199
+ onOk () {
200
+ _this.$emit('deleteComponent', originalKey, 'component')
201
+ },
202
+ onCancel () {},
203
+ })
204
+ } else if (targetType === 'page') {
205
+ const page = lowcodeUtils.getPageConfigById(originalKey, this.config)
206
+ this.$confirm({
207
+ title: `确认删除此页面?`,
208
+ content: `所选页面:${page.title}[${lowcodeUtils.resolvePageType(page.type)}]`,
209
+ onOk () {
210
+ _this.$emit('deleteComponent', originalKey, 'page')
211
+ },
212
+ onCancel () {},
213
+ })
214
+ } else if (targetType === 'row') {
215
+ this.$confirm({
216
+ title: `确认删除此行?`,
217
+ content: `所选行:${originalKey}`,
218
+ onOk () {
219
+ _this.$emit('deleteComponent', originalKey, 'row')
220
+ },
221
+ onCancel () {},
222
+ })
223
+ } else if (targetType === 'container_page') {
224
+ this.$confirm({
225
+ title: `确认删除此容器页面?`,
226
+ content: `所选容器:${originalKey}`,
227
+ onOk () {
228
+ _this.$emit('deleteComponent', originalKey, 'container_page')
229
+ },
230
+ onCancel () {},
231
+ })
232
+ }
233
+ },
234
+ // 复制
235
+ handleCopy (treeKey, targetType) {
236
+ const originalKey = this.getOriginalKey(treeKey)
237
+ // 获取复制对象
238
+ let temp
239
+ if (targetType === 'container_page') {
240
+ temp = lowcodeUtils.getContainerPageOuterByContainerPageId(originalKey, this.config)
241
+ } else {
242
+ temp = lowcodeUtils.getConfig(originalKey, this.config)
243
+ }
244
+ // 复制
245
+ let copy = JSON.parse(JSON.stringify(temp))
246
+ if (targetType === 'page') {
247
+ // 重新修改id和title
248
+ copy.id = 'page_' + lowcodeUtils.nanoidWithoutSymbol(6)
249
+ copy.title = copy.title + '_副本'
250
+ // 复制页面自动粘贴
251
+ this.$emit('pasteItem', originalKey, copy, 'page')
252
+ } else {
253
+ if (targetType === 'row') {
254
+ // 将行内每个组件重新修改id
255
+ const target = copy.body
256
+ copy.id = 'undefine'
257
+ target.forEach(item => {
258
+ if (item.type === 'container_page') {
259
+ item.id = 'container_' + lowcodeUtils.nanoidWithoutSymbol(6)
260
+ item = lowcodeUtils.reRandomComponentId(item)
261
+ } else {
262
+ const prefix = item.id.split('_')[0]
263
+ item.id = prefix + '_' + lowcodeUtils.nanoidWithoutSymbol(6)
264
+ }
265
+ })
266
+ } else if (targetType === 'item') {
267
+ // 重新修改id
268
+ const prefix = copy.id.split('_')[0]
269
+ copy.id = prefix + '_' + lowcodeUtils.nanoidWithoutSymbol(6)
270
+ } else if (targetType === 'container_page') {
271
+ // 重新修改id
272
+ copy.id = 'container_' + lowcodeUtils.nanoidWithoutSymbol(6)
273
+ copy = lowcodeUtils.reRandomComponentId(copy)
274
+ }
275
+ this.copyCache = {
276
+ type: targetType,
277
+ content: copy
278
+ }
279
+ this.$message.success('复制成功!')
280
+ }
281
+ },
282
+ // 粘贴
283
+ handlePaste (targetType, originalKey) {
284
+ // 同级别内容不能粘贴到另一个中
285
+ if (targetType === this.copyCache.type) {
286
+ this.$message.error('该操作不合法!')
287
+ return
288
+ }
289
+
290
+ // 行只能复制到容器页面和页面中
291
+ if (this.copyCache.type === 'row') {
292
+ if (targetType === 'page' || targetType === 'container_page') {
293
+ this.$emit('pasteItem', originalKey, this.copyCache, 'page-row')
294
+ return
295
+ }
296
+ }
297
+
298
+ // 模块,容器页面只能复制到行
299
+ if (this.copyCache.type === 'item' || this.copyCache.type === 'container_page') {
300
+ if (targetType === 'row') {
301
+ this.$emit('pasteItem', originalKey, this.copyCache, 'row-item')
302
+ return
303
+ }
304
+ }
305
+
306
+ // 其余操作均不合法
307
+ this.$message.error('该操作不合法!')
308
+ },
309
+ // 重命名
310
+ handleRename (targetType, originalKey) {
311
+ const target = lowcodeUtils.getConfig(originalKey, this.config)
312
+ this.renameId = target.id
313
+ if (target.title) {
314
+ this.pageNewName = target.title
315
+ } else if (target.name) {
316
+ this.pageNewName = target.name
317
+ } else {
318
+ this.pageNewName = target.id
319
+ }
320
+ this.showRenameModal = true
321
+ },
322
+ // 拆分
323
+ handleSplit (originalKey) {
324
+ const _this = this
325
+ this.$confirm({
326
+ title: `是否垂直拆分?`,
327
+ onOk () {
328
+ _this.$emit('split', originalKey, true)
329
+ },
330
+ onCancel () {
331
+ _this.$emit('split', originalKey, false)
332
+ },
333
+ })
334
+ },
335
+ // 添加
336
+ handleAdd (targetType, originalKey) {
337
+ if (targetType === 'page' || targetType === 'container_page') {
338
+ this.$emit('add', originalKey, 'row')
339
+ } else if (targetType === 'row') {
340
+ this.$emit('add', originalKey, 'container')
341
+ }
342
+ },
343
+ // 树右键事件
344
+ onContextMenuClick (treeKey, menuKey) {
345
+ // 判断目标类型
346
+ const targetType = this.determineLevel(treeKey)
347
+ const originalKey = this.getOriginalKey(treeKey)
348
+ // 点击右键菜单中删除的事件
349
+ switch (menuKey) {
350
+ case 'delete':
351
+ this.handleDelete(targetType, originalKey)
352
+ return
353
+ case 'copy':
354
+ this.handleCopy(treeKey, targetType)
355
+ return
356
+ case 'paste':
357
+ this.handlePaste(targetType, originalKey)
358
+ return
359
+ case 'rename':
360
+ this.handleRename(targetType, originalKey)
361
+ return
362
+ case 'split':
363
+ this.handleSplit(originalKey)
364
+ return
365
+ case 'add':
366
+ this.handleAdd(targetType, originalKey)
367
+ }
368
+ },
369
+ // 处理架构树点击事件
370
+ handleTreeSelect (value) {
371
+ // 如果是反选
372
+ if (value.length === 0) {
373
+ return
374
+ }
375
+ this.selectedKeys = value
376
+ const type = this.determineLevel(value[0])
377
+ if (type === 'page') {
378
+ this.$emit('treeOrganizationClick', null)
379
+ }
380
+ this.$emit('treeOrganizationClick', this.getOriginalKey(value[0]))
381
+ },
382
+ // 初始化树
383
+ initTree (config, container = undefined) {
384
+ const result = []
385
+ // 从配置中,抽取组件,初始化成树的格式
386
+ for (let i = 0; i < config.page.length; i++) {
387
+ // push第一级页面容器
388
+ const page = config.page[i]
389
+ let title, icon, key
390
+ if (page.title) {
391
+ title = page.title + '(' + lowcodeUtils.resolvePageType(page.type) + ')'
392
+ icon = 'file'
393
+ key = 'page_' + page.id
394
+ } else {
395
+ title = '列容器'
396
+ icon = 'pause'
397
+ key = 'container_page_' + page.id
398
+ }
399
+ result.push({
400
+ title: title,
401
+ key: key,
402
+ children: [],
403
+ slots: {
404
+ icon: icon,
405
+ },
406
+ })
407
+ // 在页面容器中,push第二级行容器
408
+ for (let j = 0; j < page.body.length; j++) {
409
+ const row = page.body[j]
410
+ result[i].children.push({
411
+ title: '行容器' + (j + 1),
412
+ key: 'row_' + page.id + '_' + (j + 1),
413
+ children: [],
414
+ slots: {
415
+ icon: 'ordered-list',
416
+ },
417
+ })
418
+ // 在行容器中,push第三级组件
419
+ for (let k = 0; k < row.body.length; k++) {
420
+ const item = row.body[k]
421
+ let name
422
+ if (item.name) {
423
+ name = item.name
424
+ } else {
425
+ name = item.id
426
+ }
427
+ // 如果item进行了嵌套,递归调用
428
+ if (item.type === 'container_page') {
429
+ this.initTree(item, result[i].children[j])
430
+ } else {
431
+ // 如果是container则显示为列容器
432
+ if (item.type === 'container') {
433
+ name = '列容器'
434
+ result[i].children[j].children.push({
435
+ title: name,
436
+ key: item.id,
437
+ children: [],
438
+ slots: {
439
+ icon: 'pause',
440
+ },
441
+ })
442
+ } else {
443
+ result[i].children[j].children.push({
444
+ title: name,
445
+ key: item.id,
446
+ children: [],
447
+ slots: {
448
+ icon: 'appstore',
449
+ },
450
+ })
451
+ }
452
+ }
453
+ }
454
+ }
455
+ }
456
+ if (!container) {
457
+ this.treeData = result
458
+ } else {
459
+ container.children = container.children.concat(result)
460
+ }
461
+ },
462
+ },
463
+ mounted () {
464
+ this.initTree(this.config)
465
+ this.showTree = true
466
+ },
467
+ data () {
468
+ return {
469
+ // 树的数据
470
+ treeData: [],
471
+ // 控制树的渲染
472
+ showTree: false,
473
+ // 控制重命名弹框显隐
474
+ showRenameModal: false,
475
+ // 复制的缓存
476
+ copyCache: undefined,
477
+ // 重命名绑定变量
478
+ pageNewName: undefined,
479
+ // 重命名对象的id
480
+ renameId: undefined,
481
+ // 在树中已选中的key
482
+ selectedKeys: []
483
+ }
484
+ },
485
+ watch: {
486
+ // 如果外侧指定了某个节点,让树选中该节点
487
+ selectTreeNode: {
488
+ handler (newVal) {
489
+ if (newVal) {
490
+ this.selectedKeys = [newVal]
491
+ } else {
492
+ this.selectedKeys = []
493
+ }
494
+ }
495
+ }
496
+ }
497
+ }
498
+ </script>
499
+
500
+ <style scoped lang="less">
501
+
502
+ </style>