vue2-client 1.15.86 → 1.15.88

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 (377) hide show
  1. package/.editorconfig +9 -9
  2. package/.env +20 -20
  3. package/.env.development +1 -1
  4. package/.env.iot +19 -19
  5. package/.env.message +19 -19
  6. package/.env.revenue +19 -19
  7. package/.env.runtime +19 -19
  8. package/.eslintrc.json +5 -5
  9. package/CLAUDE.md +89 -89
  10. package/README.md +65 -65
  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 +46 -46
  13. package/docs/notice.md +22 -22
  14. package/docs//345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +179 -179
  15. package/jest.config.js +22 -22
  16. package/package.json +111 -111
  17. package/src/App.vue +196 -196
  18. package/src/ReportView.js +13 -13
  19. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +532 -532
  20. package/src/base-client/components/common/AddressSearchCombobox/index.js +3 -3
  21. package/src/base-client/components/common/AmapMarker/index.js +3 -3
  22. package/src/base-client/components/common/CitySelect/CitySelect.vue +376 -376
  23. package/src/base-client/components/common/CitySelect/demo.vue +43 -43
  24. package/src/base-client/components/common/ColorPickerCombobox/ColorPickerCombobox.vue +99 -99
  25. package/src/base-client/components/common/ColorPickerCombobox/demo.vue +34 -34
  26. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +146 -146
  27. package/src/base-client/components/common/JSONToTree/index.js +3 -3
  28. package/src/base-client/components/common/Upload/Upload.vue +323 -323
  29. package/src/base-client/components/common/XAddForm/index.js +3 -3
  30. package/src/base-client/components/common/XAddForm/index.md +61 -61
  31. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +1169 -1169
  32. package/src/base-client/components/common/XAddNativeForm/demo.vue +54 -54
  33. package/src/base-client/components/common/XAddNativeForm/index.js +3 -3
  34. package/src/base-client/components/common/XAddReport/XAddReport.vue +212 -212
  35. package/src/base-client/components/common/XBadge/index.js +3 -3
  36. package/src/base-client/components/common/XBadge/index.md +39 -39
  37. package/src/base-client/components/common/XButtons/XButtons.vue +284 -284
  38. package/src/base-client/components/common/XCalendar/XCalendar.vue +369 -369
  39. package/src/base-client/components/common/XCalendar/index.md +284 -284
  40. package/src/base-client/components/common/XCard/index.js +3 -3
  41. package/src/base-client/components/common/XCard/index.md +43 -43
  42. package/src/base-client/components/common/XCardSet/XCardSet.vue +300 -300
  43. package/src/base-client/components/common/XCollapse/XCollapse.vue +354 -354
  44. package/src/base-client/components/common/XConversation/XConversation.vue +576 -576
  45. package/src/base-client/components/common/XConversation/XConversationDemo.vue +28 -28
  46. package/src/base-client/components/common/XDataCard/XDataCard.vue +629 -629
  47. package/src/base-client/components/common/XDatePicker/index.vue +276 -276
  48. package/src/base-client/components/common/XDescriptions/XDescriptions.vue +174 -174
  49. package/src/base-client/components/common/XDescriptions/XDescriptionsGroup.vue +314 -314
  50. package/src/base-client/components/common/XDescriptions/demo.vue +51 -51
  51. package/src/base-client/components/common/XForm/XForm.vue +420 -420
  52. package/src/base-client/components/common/XForm/XFormItem.vue +1474 -1474
  53. package/src/base-client/components/common/XForm/XTreeSelect.vue +276 -276
  54. package/src/base-client/components/common/XForm/demo.vue +105 -105
  55. package/src/base-client/components/common/XForm/index.js +3 -3
  56. package/src/base-client/components/common/XFormCol/XFormCol.vue +157 -157
  57. package/src/base-client/components/common/XFormCol/index.js +3 -3
  58. package/src/base-client/components/common/XFormCol/index.md +35 -35
  59. package/src/base-client/components/common/XFormGroup/XFormGroup.vue +301 -301
  60. package/src/base-client/components/common/XFormGroup/demo.vue +41 -41
  61. package/src/base-client/components/common/XFormTable/XFormTable.vue +938 -938
  62. package/src/base-client/components/common/XFormTable/demo.vue +87 -87
  63. package/src/base-client/components/common/XFormTable/index.js +3 -3
  64. package/src/base-client/components/common/XImportExcel/XImportExcel.vue +174 -174
  65. package/src/base-client/components/common/XImportExcel/index.js +3 -3
  66. package/src/base-client/components/common/XImportExcel/index.md +38 -38
  67. package/src/base-client/components/common/XInput/XInput.vue +128 -128
  68. package/src/base-client/components/common/XInput/index.js +3 -3
  69. package/src/base-client/components/common/XInput/index.md +97 -97
  70. package/src/base-client/components/common/XIntervalPicker/XIntervalPicker.vue +121 -121
  71. package/src/base-client/components/common/XLicensePlate/index.js +3 -3
  72. package/src/base-client/components/common/XLicensePlate/index.md +38 -38
  73. package/src/base-client/components/common/XPrint/Demo.vue +41 -41
  74. package/src/base-client/components/common/XPrint/PrintBill.vue +308 -308
  75. package/src/base-client/components/common/XRate/demo.vue +102 -102
  76. package/src/base-client/components/common/XRate/index.vue +149 -149
  77. package/src/base-client/components/common/XReport/XReport.vue +963 -963
  78. package/src/base-client/components/common/XReport/XReportDemo.vue +70 -70
  79. package/src/base-client/components/common/XReport/XReportTrGroup.vue +1005 -1005
  80. package/src/base-client/components/common/XReport/index.md +103 -103
  81. package/src/base-client/components/common/XReportDrawer/XReportDrawer.vue +201 -201
  82. package/src/base-client/components/common/XReportGrid/XReport.vue +1075 -1075
  83. package/src/base-client/components/common/XReportGrid/XReportDemo.vue +44 -44
  84. package/src/base-client/components/common/XReportGrid/XReportDesign.vue +620 -620
  85. package/src/base-client/components/common/XReportGrid/XReportTrGroup.vue +723 -723
  86. package/src/base-client/components/common/XReportGrid/print.js +184 -184
  87. package/src/base-client/components/common/XTab/XTab.vue +299 -299
  88. package/src/base-client/components/common/XTable/ExportExcel.vue +283 -283
  89. package/src/base-client/components/common/XTable/XTable.vue +1599 -1599
  90. package/src/base-client/components/common/XTable/XTableWrapper.vue +597 -597
  91. package/src/base-client/components/common/XTable/index.js +3 -3
  92. package/src/base-client/components/common/XTimeline/XTimeline.vue +358 -358
  93. package/src/base-client/components/common/XTimeline/index.md +191 -191
  94. package/src/base-client/components/common/XTree/XTreePro.vue +452 -452
  95. package/src/base-client/components/common/XTreeOne/index.js +3 -3
  96. package/src/base-client/components/common/XUploadFilesView/index.vue +485 -485
  97. package/src/base-client/components/his/XCharge/XCharge.vue +238 -238
  98. package/src/base-client/components/his/XCheckbox/XCheckbox.vue +105 -105
  99. package/src/base-client/components/his/XCheckbox/index.md +253 -253
  100. package/src/base-client/components/his/XHDescriptions/XHDescriptions.vue +430 -430
  101. package/src/base-client/components/his/XHDescriptions/index.md +217 -217
  102. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +629 -629
  103. package/src/base-client/components/his/XHisEditor/diagnosisAutocomplete.js +263 -263
  104. package/src/base-client/components/his/XList/XList.vue +495 -495
  105. package/src/base-client/components/his/XQuestionnaire/XQuestionnaire.json +3 -3
  106. package/src/base-client/components/his/XQuestionnaire/XQuestionnaire.vue +106 -106
  107. package/src/base-client/components/his/XQuestionnaire/XQuestionnaireDemo.vue +51 -51
  108. package/src/base-client/components/his/XQuestionnaire/XQuestionnaireItem.vue +269 -269
  109. package/src/base-client/components/his/XRadio/XRadio.vue +125 -125
  110. package/src/base-client/components/his/XRadio/index.md +234 -234
  111. package/src/base-client/components/his/XSelect/XSelect.vue +72 -72
  112. package/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +234 -234
  113. package/src/base-client/components/his/XShiftSchedule/dome.vue +29 -29
  114. package/src/base-client/components/his/XSidebar/XSidebar.vue +240 -240
  115. package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
  116. package/src/base-client/components/his/XTimeSelect/XTimeSelect.vue +162 -162
  117. package/src/base-client/components/his/XTimeSelect/XTimeSelectDemo.vue +23 -23
  118. package/src/base-client/components/his/XTitle/README.md +113 -113
  119. package/src/base-client/components/his/XTitle/XTitle.vue +123 -123
  120. package/src/base-client/components/his/XTreeRows/TreeNode.vue +107 -107
  121. package/src/base-client/components/his/XTreeRows/XTreeRows.vue +307 -307
  122. package/src/base-client/components/his/threeTestOrders/dome.vue +68 -68
  123. package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
  124. package/src/base-client/components/his/threeTestOrders/textBox.vue +457 -457
  125. package/src/base-client/components/his/threeTestOrders/threeTestOrders.vue +475 -475
  126. package/src/base-client/components/layout/XPageView/RenderRow.vue +88 -88
  127. package/src/base-client/components/layout/XPageView/XErrorView.vue +22 -22
  128. package/src/base-client/components/layout/XPageView/XPageRowTemplate.vue +37 -37
  129. package/src/base-client/components/layout/XPageView/XPageView.vue +223 -223
  130. package/src/base-client/components/layout/XPageView/XTab/XTab.vue +96 -96
  131. package/src/base-client/components/layout/XPageView/XTab/index.js +3 -3
  132. package/src/base-client/components/layout/XPageView/componentTypes.js +22 -22
  133. package/src/base-client/components/layout/XPageView/index.js +2 -2
  134. package/src/base-client/components/layout/XPageView/index.md +96 -96
  135. package/src/base-client/components/system/DictionaryDetailsView/index.js +3 -3
  136. package/src/base-client/components/system/DictionaryDetailsView/index.md +41 -41
  137. package/src/base-client/components/system/LogDetailsView/LogDetailsView.vue +376 -376
  138. package/src/base-client/components/system/LogDetailsView/index.js +3 -3
  139. package/src/base-client/components/system/LogDetailsView/index.md +41 -41
  140. package/src/base-client/components/system/QueryParamsDetailsView/index.js +3 -3
  141. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +807 -807
  142. package/src/base-client/components/ticket/TicketDetailsView/index.js +3 -3
  143. package/src/base-client/components/ticket/TicketDetailsView/index.md +29 -29
  144. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +260 -260
  145. package/src/base-client/components/ticket/TicketDetailsView/part/index.js +3 -3
  146. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +532 -532
  147. package/src/base-client/components/ticket/TicketSubmitSuccessView/index.js +3 -3
  148. package/src/base-client/components/ticket/TicketSubmitSuccessView/index.md +29 -29
  149. package/src/base-client/plugins/AppData.js +126 -126
  150. package/src/base-client/plugins/PagedList.js +177 -177
  151. package/src/base-client/plugins/__tests__/selectValueTypeHelper.test.js +154 -154
  152. package/src/base-client/plugins/authority-plugin.js +167 -167
  153. package/src/base-client/plugins/compatible/LoginServiceOA.js +20 -20
  154. package/src/base-client/plugins/i18n-extend.js +32 -32
  155. package/src/base-client/plugins/moment.js +8 -8
  156. package/src/base-client/plugins/selectValueTypeHelper.js +281 -281
  157. package/src/bootstrap.js +51 -51
  158. package/src/components/Ellipsis/Ellipsis.vue +65 -65
  159. package/src/components/Ellipsis/index.js +3 -3
  160. package/src/components/Ellipsis/index.md +38 -38
  161. package/src/components/FileImageItem/FileItem.vue +320 -320
  162. package/src/components/FileImageItem/FileItemGroup.vue +197 -197
  163. package/src/components/FileImageItem/ImageItem.vue +107 -107
  164. package/src/components/FileImageItem/index.js +4 -4
  165. package/src/components/FilePreview/FilePreview.vue +181 -181
  166. package/src/components/FilePreview/FilePreviewDemo.vue +30 -30
  167. package/src/components/FilePreview/index.js +3 -3
  168. package/src/components/HeightScanner/index.vue +615 -615
  169. package/src/components/STable/README.md +341 -341
  170. package/src/components/STable/index.js +558 -558
  171. package/src/components/TableSetting/TableSetting.vue +143 -143
  172. package/src/components/TableSetting/index.js +3 -3
  173. package/src/components/Trend/Trend.vue +41 -41
  174. package/src/components/Trend/index.js +3 -3
  175. package/src/components/Trend/index.less +41 -41
  176. package/src/components/Trend/index.md +45 -45
  177. package/src/components/_util/util.js +46 -46
  178. package/src/components/cache/AKeepAlive.js +179 -179
  179. package/src/components/exception/typeConfig.js +19 -19
  180. package/src/components/form/FormRow.vue +52 -52
  181. package/src/components/index.less +5 -5
  182. package/src/components/menu/Contextmenu.vue +84 -84
  183. package/src/components/menu/index.less +38 -38
  184. package/src/components/page/header/PageHeader.vue +64 -64
  185. package/src/components/page/header/index.less +40 -40
  186. package/src/components/result/Result.vue +77 -77
  187. package/src/components/setting/SettingItem.vue +26 -26
  188. package/src/components/setting/i18n.js +117 -117
  189. package/src/components/table/StandardTable.vue +141 -141
  190. package/src/components/table/advance/ActionColumns.vue +158 -158
  191. package/src/components/table/advance/ActionSize.vue +45 -45
  192. package/src/components/table/advance/AdvanceTable.vue +275 -275
  193. package/src/components/table/advance/SearchArea.vue +355 -355
  194. package/src/components/table/advance/index.js +2 -2
  195. package/src/components/table/api/ApiTable.vue +50 -50
  196. package/src/components/task/TaskGroup.vue +80 -80
  197. package/src/components/task/TaskItem.vue +26 -26
  198. package/src/components/tool/AvatarList.vue +68 -68
  199. package/src/components/tool/DetailList.vue +157 -157
  200. package/src/components/tool/Drawer.vue +142 -142
  201. package/src/components/tool/FooterToolBar.vue +30 -30
  202. package/src/components/tool/HeadInfo.vue +35 -35
  203. package/src/components/tool/TagSelect.vue +83 -83
  204. package/src/components/tool/TagSelectOption.vue +33 -33
  205. package/src/components/transition/PageToggleTransition.vue +97 -97
  206. package/src/config/default/admin.config.js +18 -18
  207. package/src/config/default/animate.config.js +21 -21
  208. package/src/config/default/index.js +6 -6
  209. package/src/config/index.js +3 -3
  210. package/src/config/replacer/index.js +10 -10
  211. package/src/config/replacer/resolve.config.js +67 -67
  212. package/src/expression/ExpressionRunner.js +26 -26
  213. package/src/expression/TestExpression.js +509 -509
  214. package/src/expression/core/Delegate.js +115 -115
  215. package/src/expression/core/Expression.js +1358 -1358
  216. package/src/expression/core/Program.js +932 -932
  217. package/src/expression/core/Token.js +27 -27
  218. package/src/expression/enums/ExpressionType.js +81 -81
  219. package/src/expression/enums/TokenType.js +11 -11
  220. package/src/expression/exception/BreakWayException.js +2 -2
  221. package/src/expression/exception/ContinueWayException.js +2 -2
  222. package/src/expression/exception/ExpressionException.js +28 -28
  223. package/src/expression/exception/ReturnWayException.js +14 -14
  224. package/src/expression/exception/ServiceException.js +22 -22
  225. package/src/expression/instances/LogicConsole.js +44 -44
  226. package/src/expression/ts/ExpressionRunner.ts +28 -28
  227. package/src/expression/ts/TestExpression.ts +509 -509
  228. package/src/expression/ts/core/Delegate.ts +114 -114
  229. package/src/expression/ts/core/Expression.ts +1309 -1309
  230. package/src/expression/ts/core/Program.ts +950 -950
  231. package/src/expression/ts/core/Token.ts +29 -29
  232. package/src/expression/ts/enums/ExpressionType.ts +81 -81
  233. package/src/expression/ts/enums/TokenType.ts +13 -13
  234. package/src/expression/ts/exception/BreakWayException.ts +2 -2
  235. package/src/expression/ts/exception/ContinueWayException.ts +2 -2
  236. package/src/expression/ts/exception/ExpressionException.ts +28 -28
  237. package/src/expression/ts/exception/ReturnWayException.ts +14 -14
  238. package/src/expression/ts/exception/ServiceException.ts +22 -22
  239. package/src/expression/ts/instances/JSONArray.ts +48 -48
  240. package/src/expression/ts/instances/JSONObject.ts +109 -109
  241. package/src/expression/ts/instances/LogicConsole.ts +32 -32
  242. package/src/layouts/AdminLayout.vue +176 -176
  243. package/src/layouts/BlankView.vue +79 -79
  244. package/src/layouts/ComponentLayoutOne.vue +47 -47
  245. package/src/layouts/GridView.vue +43 -43
  246. package/src/layouts/PageView.vue +55 -55
  247. package/src/layouts/footer/PageFooter.vue +49 -49
  248. package/src/layouts/header/HeaderAvatar.vue +64 -64
  249. package/src/layouts/header/HeaderSearch.vue +67 -67
  250. package/src/layouts/header/index.less +92 -92
  251. package/src/layouts/tabs/TabsView.vue +383 -383
  252. package/src/layouts/tabs/i18n.js +25 -25
  253. package/src/layouts/tabs/index.js +2 -2
  254. package/src/logic/LogicRunner.js +62 -62
  255. package/src/logic/TestLogic.js +13 -13
  256. package/src/logic/plugins/common/DateTools.js +35 -35
  257. package/src/logic/plugins/common/VueTools.js +30 -30
  258. package/src/logic/plugins/index.js +7 -7
  259. package/src/logic/ts/LogicRunner.ts +67 -67
  260. package/src/logic/ts/TestLogic.ts +13 -13
  261. package/src/main.js +33 -33
  262. package/src/mixins/formValidationMixin.js +46 -46
  263. package/src/mock/common/activityData.js +32 -32
  264. package/src/mock/common/index.js +89 -89
  265. package/src/mock/common/reportData.js +20 -20
  266. package/src/mock/common/tableData.js +118 -118
  267. package/src/mock/index.js +12 -12
  268. package/src/mock/project/index.js +17 -17
  269. package/src/mock/user/current.js +13 -13
  270. package/src/mock/user/login.js +39 -39
  271. package/src/mock/user/routes.js +61 -61
  272. package/src/mock/workplace/index.js +15 -15
  273. package/src/pages/LogicCallExample/index.vue +46 -46
  274. package/src/pages/ReportGrid/index.vue +76 -76
  275. package/src/pages/ReportView.vue +50 -50
  276. package/src/pages/WorkflowDetail/WorkFlowDemo.vue +47 -47
  277. package/src/pages/WorkflowDetail/WorkFlowDemo2.vue +204 -204
  278. package/src/pages/WorkflowDetail/WorkFlowDemo3.vue +203 -203
  279. package/src/pages/WorkflowDetail/WorkflowDetail.vue +391 -391
  280. package/src/pages/WorkflowDetail/WorkflowPageDetail/LeaveMessage.vue +388 -388
  281. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformation.vue +415 -415
  282. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandle.vue +1766 -1766
  283. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandleReso.vue +975 -975
  284. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowPreview.vue +109 -109
  285. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowTimeline.vue +929 -929
  286. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkOrderParentDetails.vue +222 -222
  287. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowDetailResso.vue +243 -243
  288. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowLog.vue +188 -188
  289. package/src/pages/WorkflowDetail/WorkflowPageDetail/components/WorkflowPersonSelector.vue +109 -109
  290. package/src/pages/WorkflowDetail/WorkflowPageDetail/worklog.vue +97 -97
  291. package/src/pages/XPageViewExample/index.vue +149 -149
  292. package/src/pages/addressSelect/addressDemo.vue +24 -24
  293. package/src/pages/addressSelect/index.vue +270 -270
  294. package/src/pages/dashboard/workplace/i18n.js +40 -40
  295. package/src/pages/dashboard/workplace/index.js +2 -2
  296. package/src/pages/dashboard/workplace/index.less +59 -59
  297. package/src/pages/exception/403.vue +21 -21
  298. package/src/pages/exception/404.vue +24 -24
  299. package/src/pages/exception/500.vue +21 -21
  300. package/src/pages/login/index.js +2 -2
  301. package/src/pages/report/ReportTableHome.vue +28 -28
  302. package/src/pages/resourceManage/depListManage.vue +23 -23
  303. package/src/pages/resourceManage/funListManage.vue +23 -23
  304. package/src/pages/resourceManage/index.js +15 -15
  305. package/src/pages/resourceManage/resourceManageMain.vue +57 -57
  306. package/src/pages/resourceManage/roleListManage.vue +23 -23
  307. package/src/pages/resourceManage/staffListManage.vue +23 -23
  308. package/src/pages/system/file/Info.vue +56 -56
  309. package/src/pages/system/file/index.vue +317 -317
  310. package/src/pages/system/settings/index.vue +126 -126
  311. package/src/pages/userInfoDetailManage/FillCardRecordQuery/index.vue +77 -77
  312. package/src/pages/userInfoDetailManage/FillGasRecordQuery/index.vue +75 -75
  313. package/src/pages/userInfoDetailManage/InsuranceDetailQuery/index.vue +64 -64
  314. package/src/pages/userInfoDetailManage/MachineRecordQuery/index.vue +75 -75
  315. package/src/pages/userInfoDetailManage/OtherChargeRecordQuery/index.vue +75 -75
  316. package/src/pages/userInfoDetailManage/PriceAdjustments/index.vue +64 -64
  317. package/src/pages/userInfoDetailManage/UserChargeRecordQuery/index.vue +94 -94
  318. package/src/pages/userInfoDetailManage/UserException/index.vue +64 -64
  319. package/src/pages/userInfoDetailManage/UserHandRecordQuery/index.vue +87 -87
  320. package/src/pages/userInfoDetailManage/UserRecordQuery/index.vue +74 -74
  321. package/src/pages/userInfoDetailManage/index.vue +290 -290
  322. package/src/pages/userInfoDetailManage/uploadFilesHistory/ImagePreview.vue +101 -101
  323. package/src/pages/userInfoDetailManage/uploadFilesHistory/index.vue +129 -129
  324. package/src/pages/userInfoDetailManage/userInfoDetailQueryTabs.vue +144 -144
  325. package/src/plugins/HiPrintPlugin.js +164 -164
  326. package/src/router/async/router.map.js +126 -126
  327. package/src/router/guards.js +262 -262
  328. package/src/router/i18n.js +57 -57
  329. package/src/router.js +17 -17
  330. package/src/services/api/DictionaryDetailsViewApi.js +6 -6
  331. package/src/services/api/LogDetailsViewApi.js +10 -10
  332. package/src/services/api/QueryParamsDetailsViewApi.js +6 -6
  333. package/src/services/api/logininfor/index.js +6 -6
  334. package/src/services/api/manage.js +8 -8
  335. package/src/services/api/restTools.js +215 -215
  336. package/src/services/api/workFlow.js +57 -57
  337. package/src/services/apiService.js +16 -16
  338. package/src/services/dataSource.js +12 -12
  339. package/src/services/index.js +7 -7
  340. package/src/services/user.js +92 -92
  341. package/src/services/v3Api.js +116 -116
  342. package/src/store/index.js +5 -5
  343. package/src/store/mutation-types.js +4 -4
  344. package/src/theme/antd/ant-menu.less +2 -2
  345. package/src/theme/antd/ant-message.less +3 -3
  346. package/src/theme/antd/ant-table.less +22 -22
  347. package/src/theme/antd/ant-time-picker.less +3 -3
  348. package/src/theme/antd/index.less +3 -3
  349. package/src/theme/default/color.less +43 -43
  350. package/src/theme/default/index.less +3 -3
  351. package/src/theme/default/nprogress.less +76 -76
  352. package/src/theme/global.less +279 -279
  353. package/src/theme/index.less +5 -5
  354. package/src/theme/reportTable.less +58 -58
  355. package/src/theme/theme.less +1 -1
  356. package/src/utils/EncryptUtil.js +162 -162
  357. package/src/utils/Objects.js +25 -25
  358. package/src/utils/axios-interceptors.js +100 -100
  359. package/src/utils/colors.js +107 -107
  360. package/src/utils/common.js +10 -10
  361. package/src/utils/excel/Blob.js +180 -180
  362. package/src/utils/excel/Export2Excel.js +141 -141
  363. package/src/utils/filter.js +21 -21
  364. package/src/utils/i18n.js +80 -80
  365. package/src/utils/indexedDB.js +549 -549
  366. package/src/utils/microAppUtils.js +49 -49
  367. package/src/utils/request.js +395 -395
  368. package/src/utils/routerUtil.js +553 -553
  369. package/src/utils/themeUtil.js +100 -100
  370. package/test/Tree.spec.js +168 -168
  371. package/test/myDialog.spec.js +47 -47
  372. package/test/request.test.js +17 -17
  373. package/test/util.test.js +53 -53
  374. package/test/v3Api.test.js +1984 -1984
  375. package/tests/unit/ReportTable.spec.js +16 -16
  376. package/vue.config.js +222 -222
  377. package/.claude/settings.local.json +0 -12
@@ -1,420 +1,420 @@
1
- <template>
2
- <div :style="{marginBottom: !visible ? '12px':''}">
3
- <div v-if="visible && realJsonData.length > 0" class="table-page-search-wrapper">
4
- <a-form-model
5
- v-if="loaded"
6
- ref="form"
7
- :model="form"
8
- :rules="rules"
9
- layout="inline">
10
- <a-row :gutter="24" type="flex">
11
- <x-form-item
12
- v-for="(item, index) in visibleItems"
13
- :showLabel="!simpleMode"
14
- :key="`${queryParamsName}-item-${index}`"
15
- :attr="item.formItem"
16
- :form="form"
17
- :service-name="serviceName"
18
- :get-data-params="getDataParams"
19
- :env="env"
20
- :setForm="setForm"
21
- @mounted="onItemMounted"
22
- />
23
- <x-form-item
24
- v-show="advanced"
25
- v-for="(item, index) in hiddenItems"
26
- :showLabel="!simpleMode"
27
- :key="`advanced-${queryParamsName}-item-${index}`"
28
- :attr="item.formItem"
29
- :form="form"
30
- :service-name="serviceName"
31
- :get-data-params="getDataParams"
32
- :env="env"
33
- :setForm="setForm"
34
- @mounted="onItemMounted"
35
- />
36
- <a-col style="margin-left: auto">
37
- <span
38
- :style="advanced ? { float: 'right', overflow: 'hidden' } : {}"
39
- class="table-page-search-submitButtons">
40
- <template v-if="hiddenItems.length > 0">
41
- <a @click="toggleAdvanced">
42
- <span v-if="!advanced" style="display: inline-flex; align-items: center;">
43
- <a-icon type="eye" :style="iconStyle"></a-icon>&nbsp;更多条件
44
- </span>
45
- <span v-else style="display: inline-flex; align-items: center;">
46
- <a-icon type="eye-invisible" :style="iconStyle"></a-icon>&nbsp;收起更多
47
- </span>
48
- </a>
49
- <a-divider type="vertical"/>
50
- </template>
51
- <a-button
52
- v-if="!simpleMode"
53
- htmlType="submit"
54
- type="primary"
55
- @click="onSubmit">
56
- <a-icon :style="iconStyle" type="search"></a-icon>查询
57
- </a-button>
58
- <a-button v-if="!simpleMode" style="margin-left: 8px" @click="resetForm">重置</a-button>
59
- <slot></slot>
60
- </span>
61
- </a-col>
62
- </a-row>
63
- </a-form-model>
64
- <div class="next-divider-dashed" role="separator"></div>
65
- </div>
66
- </div>
67
- </template>
68
- <script>
69
- import XFormItem from '@vue2-client/base-client/components/common/XForm/XFormItem'
70
- import { mapState } from 'vuex'
71
- import moment from 'moment'
72
- import { executeStrFunctionByContext } from '@vue2-client/utils/runEvalFunction'
73
- import { getConfigByNameAsync, runLogic } from '@vue2-client/services/api/common'
74
- import * as util from '@vue2-client/utils/util'
75
- import formValidationMixin from '@vue2-client/mixins/formValidationMixin'
76
-
77
- export default {
78
- name: 'XForm',
79
- components: {
80
- XFormItem
81
- },
82
- mixins: [formValidationMixin],
83
- data () {
84
- return {
85
- // 内容加载是否完成
86
- loaded: false,
87
- // 服务名称
88
- serviceName: undefined,
89
- // 是否展开条件
90
- advanced: false,
91
- // 表单Model
92
- form: undefined,
93
- // 校验
94
- rules: {},
95
- // 图标样式
96
- iconStyle: {
97
- position: 'relative',
98
- top: '1px'
99
- },
100
- // 表单项集合
101
- formItems: [],
102
- // 是否显示
103
- visible: true,
104
- // 调用logic获取数据源的追加参数
105
- getDataParams: {},
106
- // 当前环境
107
- env: 'prod',
108
- // 暂存 form 的默认值
109
- defaultMap: {},
110
- // 已经渲染得 x-from-item 为了让所有节点init执行完在调用 table 查询
111
- mountedCount: 0,
112
- // 是否简易模式
113
- simpleMode: false,
114
- queryParamsName: '',
115
- // 默认显示的表单项数量
116
- visibleItemCount: 7
117
- }
118
- },
119
- computed: {
120
- ...mapState('account', { currUser: 'user' }),
121
- // 过滤掉仅用于新增/修改场景的表单项
122
- realJsonData: function () {
123
- return this.formItems.filter(item => (!item.isOnlyAddOrEdit && item.type !== 'group') || (item.type === 'group' && item.groupItems.some(groupItem => !groupItem.isOnlyAddOrEdit)))
124
- },
125
- // 过滤出用于新增/修改场景的表单项
126
- groupJsonData: function () {
127
- return this.formItems.filter((item) => {
128
- return item.type === 'group'
129
- }).map((item) => {
130
- item.groupItems = item.groupItems.filter(item => !item.isOnlyAddOrEdit).map((groupItem) => {
131
- // 只保留第一个下划线后面的内容
132
- // groupItem.model = groupItem.model.substring(groupItem.model.indexOf('_') + 1)
133
- return groupItem
134
- })
135
- return item
136
- }
137
- )
138
- },
139
- // 合并所有来源的表单项
140
- allFormItems: function () {
141
- const normalItems = this.realJsonData.map(item => ({
142
- type: 'normal',
143
- formItem: item
144
- }))
145
-
146
- const groupItems = this.groupJsonData.flatMap(group =>
147
- group.groupItems.map(item => ({
148
- type: 'group',
149
- formItem: item,
150
- groupName: group.name || '分组'
151
- }))
152
- )
153
-
154
- return [...normalItems, ...groupItems]
155
- },
156
- // 显示的表单项
157
- visibleItems: function () {
158
- return this.allFormItems.slice(0, this.visibleItemCount)
159
- },
160
- // 隐藏的表单项(需要点击展开才显示)
161
- hiddenItems: function () {
162
- return this.allFormItems.slice(this.visibleItemCount)
163
- },
164
- },
165
- provide () {
166
- return {
167
- XFormContext: this,
168
- // 移除必填项
169
- removeRequired: this.removeRequired,
170
- // 设置必填项
171
- setRequired: this.setRequired,
172
- }
173
- },
174
- methods: {
175
- init (params) {
176
- const {
177
- formItems, serviceName, getDataParams = {}, env = 'prod', simpleMode = false, funcData = {},
178
- queryParamsName = 'localConfig', visibleItemCount = 7
179
- } = params
180
- this.mountedCount = 0
181
- this.queryParamsName = queryParamsName
182
- this.loaded = false
183
- this.formItems = JSON.parse(JSON.stringify(formItems))
184
- this.serviceName = serviceName
185
- this.env = env
186
- this.simpleMode = simpleMode
187
- this.visibleItemCount = visibleItemCount
188
- const formData = {}
189
- for (let i = 0; i < this.realJsonData.length; i++) {
190
- const item = this.realJsonData[i]
191
- this.setFormProps(formData, item)
192
- }
193
- if (this.realJsonData.length === 0) {
194
- this.$nextTick(() => {
195
- this.$emit('itemsMounted')
196
- })
197
- }
198
- // 处理分组数据表单
199
- for (let i = 0; i < this.groupJsonData.length; i++) {
200
- const groupItem = this.groupJsonData[i]
201
- for (let j = 0; j < groupItem.groupItems.length; j++) {
202
- const item = groupItem.groupItems[j]
203
- this.setFormProps(formData, item)
204
- }
205
- }
206
- this.form = formData
207
- try {
208
- if (funcData.queryFormInit) {
209
- if (!funcData.queryFormInit.startsWith('async')) {
210
- funcData.queryFormInit = `async ${funcData.queryFormInit}`
211
- }
212
- executeStrFunctionByContext(this, funcData.queryFormInit, [util, runLogic, getConfigByNameAsync]).then(res => {
213
- this.form = Object.assign({}, this.form, res)
214
- })
215
- }
216
- } catch (e) {
217
- console.error('queryFormInit error', e)
218
- }
219
- this.getDataParams = getDataParams
220
- this.loaded = true
221
- },
222
- onItemMounted (_h) {
223
- this.mountedCount += 1
224
- if (this.mountedCount === this.allFormItems.length) {
225
- // 所有 x-from-item 挂载完成,触发父组件中的 xTable.init
226
- this.$emit('itemsMounted')
227
- }
228
- },
229
- // 时间组件赋默认值
230
- getDateRange ({ type, queryFormDefault: defaultValue, queryType, queryValueFormat: defaultFormat, name }) {
231
- const formatMap = {
232
- yearPicker: 'YYYY',
233
- yearRangePicker: 'YYYY',
234
- monthPicker: 'YYYY-MM',
235
- monthRangePicker: 'YYYY-MM',
236
- datePicker: 'YYYY-MM-DD',
237
- rangePicker: 'YYYY-MM-DD HH:mm:ss',
238
- }
239
- let format = formatMap[type]
240
-
241
- if (defaultFormat) {
242
- format = defaultFormat
243
- }
244
-
245
- let start, end
246
-
247
- switch (defaultValue) {
248
- case 'curYear':
249
- start = moment().startOf('year').format(format)
250
- end = moment().endOf('year').format(format)
251
- break
252
- case 'curMonth':
253
- start = moment().startOf('month').format(format)
254
- end = moment().endOf('month').format(format)
255
- break
256
- case 'curDay':
257
- start = moment().startOf('day').format(format)
258
- end = moment().endOf('day').format(format)
259
- break
260
- case 'curTime':
261
- start = moment().format(format)
262
- end = moment().format(format)
263
- break
264
- default:
265
- return undefined
266
- }
267
- if (['monthPicker', 'yearPicker', 'datePicker'].includes(type)) {
268
- if (queryType === 'BETWEEN') {
269
- return [start, end]
270
- }
271
- if (name.indexOf('开始') > -1 || name.indexOf('起始') > -1) {
272
- return start
273
- } else {
274
- return end
275
- }
276
- } else if (['rangePicker', 'yearRangePicker', 'monthRangePicker'].includes(type)) {
277
- return [start, end]
278
- }
279
- return [start, end]
280
- },
281
- setFormProps (formData, item) {
282
- formData[item.model] = undefined
283
- if (item.queryFormDefault) {
284
- if (['datePicker', 'rangePicker', 'yearPicker', 'monthPicker', 'yearRangePicker', 'monthRangePicker'].includes(item.type)) {
285
- formData[item.model] = this.getDateRange(item)
286
- } else if (['treeSelect', 'select', 'checkbox'].includes(item.type) && ['curOrgId', 'curDepId', 'curUserId'].includes(item.queryFormDefault)) {
287
- if (item.queryFormDefault === 'curOrgId') {
288
- formData[item.model] = item.type === 'select' ? this.currUser.orgid : [this.currUser.orgid]
289
- }
290
- if (item.queryFormDefault === 'curDepId') {
291
- formData[item.model] = item.type === 'select' ? this.currUser.depids : [this.currUser.depids]
292
- }
293
- if (item.queryFormDefault === 'curUserId') {
294
- formData[item.model] = item.type === 'select' ? this.currUser.id : [this.currUser.id]
295
- }
296
- } else {
297
- formData[item.model] = item.queryFormDefault
298
- }
299
- if (item.forceQueryDefault) {
300
- this.defaultMap[item.model] = formData[item.model]
301
- }
302
- } else {
303
- if (['datePicker', 'rangePicker', 'yearPicker', 'monthPicker', 'yearRangePicker', 'monthRangePicker'].includes(item.type)) {
304
- if (item.queryType === 'BETWEEN') {
305
- formData[item.model] = []
306
- }
307
- }
308
- }
309
- if (item.rule) {
310
- this.rules[item.model] = []
311
- const required = item.rule.queryRequired ? item.rule.queryRequired === true || item.rule.queryRequired === 'true' : false
312
- let trigger
313
- let message
314
- if (required) {
315
- switch (item.type) {
316
- case 'select':
317
- case 'checkbox':
318
- case 'radio':
319
- case 'treeSelect':
320
- case 'rangePicker':
321
- case 'monthPicker':
322
- case 'yearPicker':
323
- case 'datePicker':
324
- case 'file':
325
- case 'image':
326
- case 'citySelect':
327
- case 'addressSearch':
328
- case 'personSetting':
329
- message = '请选择' + item.name
330
- trigger = 'change'
331
- break
332
- default:
333
- message = '请输入' + item.name
334
- trigger = 'blur'
335
- }
336
- this.rules[item.model].push({
337
- required: true,
338
- message: message,
339
- trigger: trigger
340
- })
341
- }
342
-
343
- switch (item.rule.queryType) {
344
- case 'customJs': {
345
- this.rules[item.model].push({
346
- validator: (rule, value, callback) => {
347
- this.customJsValidate(rule, value, callback, item)
348
- },
349
- trigger: 'blur'
350
- })
351
- break
352
- }
353
- }
354
- }
355
- },
356
- customJsValidate (rule, value, callback, item) {
357
- if (item.rule.customQueryValidatorFunc) {
358
- executeStrFunctionByContext(this, item.rule.customQueryValidatorFunc, [rule, value, callback, this.form, item, util, runLogic, getConfigByNameAsync])
359
- } else {
360
- callback()
361
- }
362
- },
363
- toggleAdvanced () {
364
- this.advanced = !this.advanced
365
- this.$emit('toggleAdvanced')
366
- },
367
- toggleVisible () {
368
- this.visible = !this.visible
369
- return this.visible
370
- },
371
- resetForm () {
372
- this.$refs.form.resetFields()
373
- },
374
- onSubmit () {
375
- this.$refs.form.validate(valid => {
376
- for (const key of Object.keys(this.form)) {
377
- if (this.form[key] === null || this.form[key] === '') {
378
- this.form[key] = undefined
379
- }
380
- // 树形选择框重置后会重置为[undefined],查询时为[null]
381
- if (Array.isArray(this.form[key]) && (this.form[key].length === 0 || this.form[key][0] === null || this.form[key][0] === undefined)) {
382
- this.form[key] = undefined
383
- }
384
- // 如果 form 中没有值,但是有默认值
385
- if (this.form[key] === undefined && this.defaultMap[key] !== undefined) {
386
- this.form = Object.assign({}, this.form, this.defaultMap)
387
- }
388
- }
389
- const requestParameters = Object.assign({}, this.form)
390
- const data = {
391
- valid: valid,
392
- form: requestParameters
393
- }
394
- this.$emit('onSubmit', data)
395
- })
396
- },
397
- exports () {
398
- this.$emit('exports', this.form)
399
- },
400
- setForm (obj) {
401
- this.form = Object.assign(this.form, obj)
402
- },
403
- }
404
- }
405
- </script>
406
- <style lang="less" scoped>
407
- :deep(.ant-form-inline .ant-form-item) {
408
- margin-right: 0;
409
- margin-top: 0;
410
- margin-bottom: 12px;
411
-
412
- .ant-form-item-control-wrapper {
413
- min-width: 0;
414
- }
415
- }
416
-
417
- :deep(.table-page-search-wrapper .table-page-search-submitButtons) {
418
- margin-top: 0;
419
- }
420
- </style>
1
+ <template>
2
+ <div :style="{marginBottom: !visible ? '12px':''}">
3
+ <div v-if="visible && realJsonData.length > 0" class="table-page-search-wrapper">
4
+ <a-form-model
5
+ v-if="loaded"
6
+ ref="form"
7
+ :model="form"
8
+ :rules="rules"
9
+ layout="inline">
10
+ <a-row :gutter="24" type="flex">
11
+ <x-form-item
12
+ v-for="(item, index) in visibleItems"
13
+ :showLabel="!simpleMode"
14
+ :key="`${queryParamsName}-item-${index}`"
15
+ :attr="item.formItem"
16
+ :form="form"
17
+ :service-name="serviceName"
18
+ :get-data-params="getDataParams"
19
+ :env="env"
20
+ :setForm="setForm"
21
+ @mounted="onItemMounted"
22
+ />
23
+ <x-form-item
24
+ v-show="advanced"
25
+ v-for="(item, index) in hiddenItems"
26
+ :showLabel="!simpleMode"
27
+ :key="`advanced-${queryParamsName}-item-${index}`"
28
+ :attr="item.formItem"
29
+ :form="form"
30
+ :service-name="serviceName"
31
+ :get-data-params="getDataParams"
32
+ :env="env"
33
+ :setForm="setForm"
34
+ @mounted="onItemMounted"
35
+ />
36
+ <a-col style="margin-left: auto">
37
+ <span
38
+ :style="advanced ? { float: 'right', overflow: 'hidden' } : {}"
39
+ class="table-page-search-submitButtons">
40
+ <template v-if="hiddenItems.length > 0">
41
+ <a @click="toggleAdvanced">
42
+ <span v-if="!advanced" style="display: inline-flex; align-items: center;">
43
+ <a-icon type="eye" :style="iconStyle"></a-icon>&nbsp;更多条件
44
+ </span>
45
+ <span v-else style="display: inline-flex; align-items: center;">
46
+ <a-icon type="eye-invisible" :style="iconStyle"></a-icon>&nbsp;收起更多
47
+ </span>
48
+ </a>
49
+ <a-divider type="vertical"/>
50
+ </template>
51
+ <a-button
52
+ v-if="!simpleMode"
53
+ htmlType="submit"
54
+ type="primary"
55
+ @click="onSubmit">
56
+ <a-icon :style="iconStyle" type="search"></a-icon>查询
57
+ </a-button>
58
+ <a-button v-if="!simpleMode" style="margin-left: 8px" @click="resetForm">重置</a-button>
59
+ <slot></slot>
60
+ </span>
61
+ </a-col>
62
+ </a-row>
63
+ </a-form-model>
64
+ <div class="next-divider-dashed" role="separator"></div>
65
+ </div>
66
+ </div>
67
+ </template>
68
+ <script>
69
+ import XFormItem from '@vue2-client/base-client/components/common/XForm/XFormItem'
70
+ import { mapState } from 'vuex'
71
+ import moment from 'moment'
72
+ import { executeStrFunctionByContext } from '@vue2-client/utils/runEvalFunction'
73
+ import { getConfigByNameAsync, runLogic } from '@vue2-client/services/api/common'
74
+ import * as util from '@vue2-client/utils/util'
75
+ import formValidationMixin from '@vue2-client/mixins/formValidationMixin'
76
+
77
+ export default {
78
+ name: 'XForm',
79
+ components: {
80
+ XFormItem
81
+ },
82
+ mixins: [formValidationMixin],
83
+ data () {
84
+ return {
85
+ // 内容加载是否完成
86
+ loaded: false,
87
+ // 服务名称
88
+ serviceName: undefined,
89
+ // 是否展开条件
90
+ advanced: false,
91
+ // 表单Model
92
+ form: undefined,
93
+ // 校验
94
+ rules: {},
95
+ // 图标样式
96
+ iconStyle: {
97
+ position: 'relative',
98
+ top: '1px'
99
+ },
100
+ // 表单项集合
101
+ formItems: [],
102
+ // 是否显示
103
+ visible: true,
104
+ // 调用logic获取数据源的追加参数
105
+ getDataParams: {},
106
+ // 当前环境
107
+ env: 'prod',
108
+ // 暂存 form 的默认值
109
+ defaultMap: {},
110
+ // 已经渲染得 x-from-item 为了让所有节点init执行完在调用 table 查询
111
+ mountedCount: 0,
112
+ // 是否简易模式
113
+ simpleMode: false,
114
+ queryParamsName: '',
115
+ // 默认显示的表单项数量
116
+ visibleItemCount: 7
117
+ }
118
+ },
119
+ computed: {
120
+ ...mapState('account', { currUser: 'user' }),
121
+ // 过滤掉仅用于新增/修改场景的表单项
122
+ realJsonData: function () {
123
+ return this.formItems.filter(item => (!item.isOnlyAddOrEdit && item.type !== 'group') || (item.type === 'group' && item.groupItems.some(groupItem => !groupItem.isOnlyAddOrEdit)))
124
+ },
125
+ // 过滤出用于新增/修改场景的表单项
126
+ groupJsonData: function () {
127
+ return this.formItems.filter((item) => {
128
+ return item.type === 'group'
129
+ }).map((item) => {
130
+ item.groupItems = item.groupItems.filter(item => !item.isOnlyAddOrEdit).map((groupItem) => {
131
+ // 只保留第一个下划线后面的内容
132
+ // groupItem.model = groupItem.model.substring(groupItem.model.indexOf('_') + 1)
133
+ return groupItem
134
+ })
135
+ return item
136
+ }
137
+ )
138
+ },
139
+ // 合并所有来源的表单项
140
+ allFormItems: function () {
141
+ const normalItems = this.realJsonData.map(item => ({
142
+ type: 'normal',
143
+ formItem: item
144
+ }))
145
+
146
+ const groupItems = this.groupJsonData.flatMap(group =>
147
+ group.groupItems.map(item => ({
148
+ type: 'group',
149
+ formItem: item,
150
+ groupName: group.name || '分组'
151
+ }))
152
+ )
153
+
154
+ return [...normalItems, ...groupItems]
155
+ },
156
+ // 显示的表单项
157
+ visibleItems: function () {
158
+ return this.allFormItems.slice(0, this.visibleItemCount)
159
+ },
160
+ // 隐藏的表单项(需要点击展开才显示)
161
+ hiddenItems: function () {
162
+ return this.allFormItems.slice(this.visibleItemCount)
163
+ },
164
+ },
165
+ provide () {
166
+ return {
167
+ XFormContext: this,
168
+ // 移除必填项
169
+ removeRequired: this.removeRequired,
170
+ // 设置必填项
171
+ setRequired: this.setRequired,
172
+ }
173
+ },
174
+ methods: {
175
+ init (params) {
176
+ const {
177
+ formItems, serviceName, getDataParams = {}, env = 'prod', simpleMode = false, funcData = {},
178
+ queryParamsName = 'localConfig', visibleItemCount = 7
179
+ } = params
180
+ this.mountedCount = 0
181
+ this.queryParamsName = queryParamsName
182
+ this.loaded = false
183
+ this.formItems = JSON.parse(JSON.stringify(formItems))
184
+ this.serviceName = serviceName
185
+ this.env = env
186
+ this.simpleMode = simpleMode
187
+ this.visibleItemCount = visibleItemCount
188
+ const formData = {}
189
+ for (let i = 0; i < this.realJsonData.length; i++) {
190
+ const item = this.realJsonData[i]
191
+ this.setFormProps(formData, item)
192
+ }
193
+ if (this.realJsonData.length === 0) {
194
+ this.$nextTick(() => {
195
+ this.$emit('itemsMounted')
196
+ })
197
+ }
198
+ // 处理分组数据表单
199
+ for (let i = 0; i < this.groupJsonData.length; i++) {
200
+ const groupItem = this.groupJsonData[i]
201
+ for (let j = 0; j < groupItem.groupItems.length; j++) {
202
+ const item = groupItem.groupItems[j]
203
+ this.setFormProps(formData, item)
204
+ }
205
+ }
206
+ this.form = formData
207
+ try {
208
+ if (funcData.queryFormInit) {
209
+ if (!funcData.queryFormInit.startsWith('async')) {
210
+ funcData.queryFormInit = `async ${funcData.queryFormInit}`
211
+ }
212
+ executeStrFunctionByContext(this, funcData.queryFormInit, [util, runLogic, getConfigByNameAsync]).then(res => {
213
+ this.form = Object.assign({}, this.form, res)
214
+ })
215
+ }
216
+ } catch (e) {
217
+ console.error('queryFormInit error', e)
218
+ }
219
+ this.getDataParams = getDataParams
220
+ this.loaded = true
221
+ },
222
+ onItemMounted (_h) {
223
+ this.mountedCount += 1
224
+ if (this.mountedCount === this.allFormItems.length) {
225
+ // 所有 x-from-item 挂载完成,触发父组件中的 xTable.init
226
+ this.$emit('itemsMounted')
227
+ }
228
+ },
229
+ // 时间组件赋默认值
230
+ getDateRange ({ type, queryFormDefault: defaultValue, queryType, queryValueFormat: defaultFormat, name }) {
231
+ const formatMap = {
232
+ yearPicker: 'YYYY',
233
+ yearRangePicker: 'YYYY',
234
+ monthPicker: 'YYYY-MM',
235
+ monthRangePicker: 'YYYY-MM',
236
+ datePicker: 'YYYY-MM-DD',
237
+ rangePicker: 'YYYY-MM-DD HH:mm:ss',
238
+ }
239
+ let format = formatMap[type]
240
+
241
+ if (defaultFormat) {
242
+ format = defaultFormat
243
+ }
244
+
245
+ let start, end
246
+
247
+ switch (defaultValue) {
248
+ case 'curYear':
249
+ start = moment().startOf('year').format(format)
250
+ end = moment().endOf('year').format(format)
251
+ break
252
+ case 'curMonth':
253
+ start = moment().startOf('month').format(format)
254
+ end = moment().endOf('month').format(format)
255
+ break
256
+ case 'curDay':
257
+ start = moment().startOf('day').format(format)
258
+ end = moment().endOf('day').format(format)
259
+ break
260
+ case 'curTime':
261
+ start = moment().format(format)
262
+ end = moment().format(format)
263
+ break
264
+ default:
265
+ return undefined
266
+ }
267
+ if (['monthPicker', 'yearPicker', 'datePicker'].includes(type)) {
268
+ if (queryType === 'BETWEEN') {
269
+ return [start, end]
270
+ }
271
+ if (name.indexOf('开始') > -1 || name.indexOf('起始') > -1) {
272
+ return start
273
+ } else {
274
+ return end
275
+ }
276
+ } else if (['rangePicker', 'yearRangePicker', 'monthRangePicker'].includes(type)) {
277
+ return [start, end]
278
+ }
279
+ return [start, end]
280
+ },
281
+ setFormProps (formData, item) {
282
+ formData[item.model] = undefined
283
+ if (item.queryFormDefault) {
284
+ if (['datePicker', 'rangePicker', 'yearPicker', 'monthPicker', 'yearRangePicker', 'monthRangePicker'].includes(item.type)) {
285
+ formData[item.model] = this.getDateRange(item)
286
+ } else if (['treeSelect', 'select', 'checkbox'].includes(item.type) && ['curOrgId', 'curDepId', 'curUserId'].includes(item.queryFormDefault)) {
287
+ if (item.queryFormDefault === 'curOrgId') {
288
+ formData[item.model] = item.type === 'select' ? this.currUser.orgid : [this.currUser.orgid]
289
+ }
290
+ if (item.queryFormDefault === 'curDepId') {
291
+ formData[item.model] = item.type === 'select' ? this.currUser.depids : [this.currUser.depids]
292
+ }
293
+ if (item.queryFormDefault === 'curUserId') {
294
+ formData[item.model] = item.type === 'select' ? this.currUser.id : [this.currUser.id]
295
+ }
296
+ } else {
297
+ formData[item.model] = item.queryFormDefault
298
+ }
299
+ if (item.forceQueryDefault) {
300
+ this.defaultMap[item.model] = formData[item.model]
301
+ }
302
+ } else {
303
+ if (['datePicker', 'rangePicker', 'yearPicker', 'monthPicker', 'yearRangePicker', 'monthRangePicker'].includes(item.type)) {
304
+ if (item.queryType === 'BETWEEN') {
305
+ formData[item.model] = []
306
+ }
307
+ }
308
+ }
309
+ if (item.rule) {
310
+ this.rules[item.model] = []
311
+ const required = item.rule.queryRequired ? item.rule.queryRequired === true || item.rule.queryRequired === 'true' : false
312
+ let trigger
313
+ let message
314
+ if (required) {
315
+ switch (item.type) {
316
+ case 'select':
317
+ case 'checkbox':
318
+ case 'radio':
319
+ case 'treeSelect':
320
+ case 'rangePicker':
321
+ case 'monthPicker':
322
+ case 'yearPicker':
323
+ case 'datePicker':
324
+ case 'file':
325
+ case 'image':
326
+ case 'citySelect':
327
+ case 'addressSearch':
328
+ case 'personSetting':
329
+ message = '请选择' + item.name
330
+ trigger = 'change'
331
+ break
332
+ default:
333
+ message = '请输入' + item.name
334
+ trigger = 'blur'
335
+ }
336
+ this.rules[item.model].push({
337
+ required: true,
338
+ message: message,
339
+ trigger: trigger
340
+ })
341
+ }
342
+
343
+ switch (item.rule.queryType) {
344
+ case 'customJs': {
345
+ this.rules[item.model].push({
346
+ validator: (rule, value, callback) => {
347
+ this.customJsValidate(rule, value, callback, item)
348
+ },
349
+ trigger: 'blur'
350
+ })
351
+ break
352
+ }
353
+ }
354
+ }
355
+ },
356
+ customJsValidate (rule, value, callback, item) {
357
+ if (item.rule.customQueryValidatorFunc) {
358
+ executeStrFunctionByContext(this, item.rule.customQueryValidatorFunc, [rule, value, callback, this.form, item, util, runLogic, getConfigByNameAsync])
359
+ } else {
360
+ callback()
361
+ }
362
+ },
363
+ toggleAdvanced () {
364
+ this.advanced = !this.advanced
365
+ this.$emit('toggleAdvanced')
366
+ },
367
+ toggleVisible () {
368
+ this.visible = !this.visible
369
+ return this.visible
370
+ },
371
+ resetForm () {
372
+ this.$refs.form.resetFields()
373
+ },
374
+ onSubmit () {
375
+ this.$refs.form.validate(valid => {
376
+ for (const key of Object.keys(this.form)) {
377
+ if (this.form[key] === null || this.form[key] === '') {
378
+ this.form[key] = undefined
379
+ }
380
+ // 树形选择框重置后会重置为[undefined],查询时为[null]
381
+ if (Array.isArray(this.form[key]) && (this.form[key].length === 0 || this.form[key][0] === null || this.form[key][0] === undefined)) {
382
+ this.form[key] = undefined
383
+ }
384
+ // 如果 form 中没有值,但是有默认值
385
+ if (this.form[key] === undefined && this.defaultMap[key] !== undefined) {
386
+ this.form = Object.assign({}, this.form, this.defaultMap)
387
+ }
388
+ }
389
+ const requestParameters = Object.assign({}, this.form)
390
+ const data = {
391
+ valid: valid,
392
+ form: requestParameters
393
+ }
394
+ this.$emit('onSubmit', data)
395
+ })
396
+ },
397
+ exports () {
398
+ this.$emit('exports', this.form)
399
+ },
400
+ setForm (obj) {
401
+ this.form = Object.assign(this.form, obj)
402
+ },
403
+ }
404
+ }
405
+ </script>
406
+ <style lang="less" scoped>
407
+ :deep(.ant-form-inline .ant-form-item) {
408
+ margin-right: 0;
409
+ margin-top: 0;
410
+ margin-bottom: 12px;
411
+
412
+ .ant-form-item-control-wrapper {
413
+ min-width: 0;
414
+ }
415
+ }
416
+
417
+ :deep(.table-page-search-wrapper .table-page-search-submitButtons) {
418
+ margin-top: 0;
419
+ }
420
+ </style>