vue2-client 1.15.34 → 1.15.35

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 (691) hide show
  1. package/.cursorrules +19 -19
  2. package/.editorconfig +9 -9
  3. package/.env +20 -20
  4. package/.env.apply +19 -19
  5. package/.env.development +1 -1
  6. package/.env.gaslink +19 -19
  7. package/.env.his +19 -19
  8. package/.env.iot +19 -19
  9. package/.env.liuli +20 -20
  10. package/.env.message +19 -19
  11. package/.env.revenue +19 -19
  12. package/.env.runtime +19 -19
  13. package/.env.scada +19 -19
  14. package/.eslintrc.js +90 -90
  15. package/.eslintrc.json +5 -5
  16. package/CHANGELOG.md +824 -824
  17. package/CLAUDE.md +89 -89
  18. package/Components.md +60 -60
  19. package/README.md +65 -65
  20. package/babel.config.js +21 -21
  21. package/docs/Logic/345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +45 -45
  22. package/docs/LowCode/lowcode.md +155 -155
  23. package/docs/LowCode/lowcodeForDeveloper.md +230 -230
  24. package/docs/index.md +30 -30
  25. package/docs/notice.md +22 -22
  26. package/docs//345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +177 -177
  27. package/index.js +31 -31
  28. package/jest-transform-stub.js +8 -8
  29. package/jest.config.js +22 -22
  30. package/jest.setup.js +7 -7
  31. package/jsconfig.json +19 -19
  32. package/package.json +110 -110
  33. package/public/his/editor/editor.html +51 -51
  34. package/public/his/editor/mock/bind_data.html +779 -779
  35. package/public/his/editor/mock/data_table.html +40 -40
  36. package/public/his/editor/mock/sign.html +75 -75
  37. package/public/his/editor/vender/JsBarcode.all.js +3669 -3669
  38. package/public/his/editor/vender/date97/My97DatePicker.htm +65 -65
  39. package/public/his/editor/vender/date97/WdatePicker.js +677 -677
  40. package/public/his/editor/vender/date97/calendar.js +4 -4
  41. package/public/his/editor/vender/date97/lang/en.js +13 -13
  42. package/public/his/editor/vender/date97/lang/zh-cn.js +13 -13
  43. package/public/his/editor/vender/date97/lang/zh-tw.js +13 -13
  44. package/public/his/editor/vender/date97/skin/WdatePicker.css +10 -10
  45. package/public/his/editor/vender/date97/skin/default/datepicker.css +328 -328
  46. package/public/his/editor/vender/date97/skin/ext/datepicker.css +308 -308
  47. package/public/his/editor/vender/date97/skin/whyGreen/datepicker.css +255 -255
  48. package/public/his/editor/vender/diff.js +1627 -1627
  49. package/public/his/editor/vender/editor.js +1 -1
  50. package/public/his/editor/vender/fabric.js +31187 -31187
  51. package/public/his/editor/vender/jquery/jquery.base64.js +190 -190
  52. package/public/his/editor/vender/jquery/jquery.js +10872 -10872
  53. package/public/his/editor/vender/jquery/jquery.print.js +255 -255
  54. package/public/his/editor/vender/jquery/zTreeStyle/zTreeStyle.css +96 -96
  55. package/public/his/editor/vender/mui/mui.min.css +4 -4
  56. package/public/his/editor/vender/mui/mui.min.js +5 -5
  57. package/public/his/editor/vender/mui/mui.picker.min.css +6 -6
  58. package/public/his/editor/vender/mui/mui.picker.min.js +6 -6
  59. package/public/his/editor/vender/qrcode.js +7 -7
  60. package/public/his/editor/vender/requirejs/require.js +2145 -2145
  61. package/public/his/editor/vender/signature/jSignature.CompressorSVG.js +518 -518
  62. package/public/his/editor/vender/signature/jSignature.UndoButton.js +164 -164
  63. package/public/his/editor/vender/signature/jSignature.js +1486 -1486
  64. package/public/his/editor/vender/validator.js +5094 -5094
  65. package/public/his/editor/vender/weui/weui.css +5659 -5659
  66. package/public/his/editor/vender/weui/weui.min.css +4 -4
  67. package/public/his/editor/vender/weui/weui.min.js +11 -11
  68. package/public/index.html +27 -27
  69. package/src/App.vue +196 -196
  70. package/src/ReportView.js +13 -13
  71. package/src/assets/img/querySlotDemo.svg +15 -15
  72. package/src/assets/svg/badtwo.svg +1 -1
  73. package/src/assets/svg/goodtwo.svg +1 -1
  74. package/src/base-client/components/AI/AskAiBtn.vue +136 -136
  75. package/src/base-client/components/AI/demo.vue +31 -31
  76. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +532 -532
  77. package/src/base-client/components/common/AddressSearchCombobox/IcMapIcon.vue +16 -16
  78. package/src/base-client/components/common/AddressSearchCombobox/demo.vue +36 -36
  79. package/src/base-client/components/common/AddressSearchCombobox/ic_map.svg +6 -6
  80. package/src/base-client/components/common/AddressSearchCombobox/index.js +3 -3
  81. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  82. package/src/base-client/components/common/AmapMarker/index.js +3 -3
  83. package/src/base-client/components/common/CitySelect/CitySelect.vue +365 -365
  84. package/src/base-client/components/common/CitySelect/index.js +3 -3
  85. package/src/base-client/components/common/CitySelect/index.md +109 -109
  86. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  87. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +1014 -1014
  88. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  89. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  90. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +452 -452
  91. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +511 -511
  92. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  93. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  94. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +146 -146
  95. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  96. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  97. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  98. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  99. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  100. package/src/base-client/components/common/JSONToTree/index.js +3 -3
  101. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  102. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorModal.vue +108 -108
  103. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorPanel.vue +413 -413
  104. package/src/base-client/components/common/LowCodeComponent/LowCodePageOrganization.vue +502 -502
  105. package/src/base-client/components/common/LowCodeComponent/LowCodeRender.vue +728 -728
  106. package/src/base-client/components/common/LowCodeComponent/LowCodeRenderEnter.vue +29 -29
  107. package/src/base-client/components/common/LowCodeComponent/LowCodeUIStore.vue +219 -219
  108. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeAddPageModal.vue +117 -117
  109. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeCustomJSModal.vue +80 -80
  110. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeEventEditorModal.vue +398 -398
  111. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLifeCycleModal.vue +65 -65
  112. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicCallbackModal.vue +64 -64
  113. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicParamModal.vue +73 -73
  114. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeRunFunctionParamModal.vue +76 -76
  115. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  116. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  117. package/src/base-client/components/common/Recording/Recording.vue +243 -243
  118. package/src/base-client/components/common/Recording/index.js +3 -3
  119. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  120. package/src/base-client/components/common/Tree/index.js +2 -2
  121. package/src/base-client/components/common/Upload/Upload.vue +323 -323
  122. package/src/base-client/components/common/Upload/index.js +3 -3
  123. package/src/base-client/components/common/XAddForm/XAddForm.vue +113 -113
  124. package/src/base-client/components/common/XAddForm/index.js +3 -3
  125. package/src/base-client/components/common/XAddForm/index.md +61 -61
  126. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +1169 -1169
  127. package/src/base-client/components/common/XAddNativeForm/demo.vue +40 -40
  128. package/src/base-client/components/common/XAddNativeForm/index.js +3 -3
  129. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  130. package/src/base-client/components/common/XAddNativeFormOA/XAddNativeFormOA.vue +303 -303
  131. package/src/base-client/components/common/XAddNativeFormOA/index.js +3 -3
  132. package/src/base-client/components/common/XAddNativeFormOA/index.md +146 -146
  133. package/src/base-client/components/common/XAddReport/XAddReport.vue +212 -212
  134. package/src/base-client/components/common/XAddReport/index.js +3 -3
  135. package/src/base-client/components/common/XAddReport/index.md +56 -56
  136. package/src/base-client/components/common/XBadge/XBadge.vue +94 -94
  137. package/src/base-client/components/common/XBadge/index.js +3 -3
  138. package/src/base-client/components/common/XBadge/index.md +39 -39
  139. package/src/base-client/components/common/XButtons/XButtonDemo.vue +28 -28
  140. package/src/base-client/components/common/XButtons/XButtons.vue +71 -71
  141. package/src/base-client/components/common/XButtons/index.js +3 -3
  142. package/src/base-client/components/common/XButtons/index.md +61 -61
  143. package/src/base-client/components/common/XCalendar/XCalendar.vue +369 -369
  144. package/src/base-client/components/common/XCalendar/index.md +284 -284
  145. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  146. package/src/base-client/components/common/XCard/index.js +3 -3
  147. package/src/base-client/components/common/XCard/index.md +43 -43
  148. package/src/base-client/components/common/XCardSet/XCardSet.vue +300 -300
  149. package/src/base-client/components/common/XCheckList/XCheckList.vue +106 -106
  150. package/src/base-client/components/common/XCheckList/XCheckListDemo.vue +41 -41
  151. package/src/base-client/components/common/XCollapse/XCollapse.vue +253 -253
  152. package/src/base-client/components/common/XConversation/XConversation.vue +576 -576
  153. package/src/base-client/components/common/XConversation/XConversationDemo.vue +28 -28
  154. package/src/base-client/components/common/XDataCard/XDataCard.vue +629 -629
  155. package/src/base-client/components/common/XDataCard/index.js +3 -3
  156. package/src/base-client/components/common/XDataCard/index.md +1 -1
  157. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  158. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  159. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  160. package/src/base-client/components/common/XDatePicker/demo.vue +153 -153
  161. package/src/base-client/components/common/XDatePicker/index.vue +276 -276
  162. package/src/base-client/components/common/XDescriptions/XDescriptions.vue +174 -174
  163. package/src/base-client/components/common/XDescriptions/XDescriptionsGroup.vue +314 -314
  164. package/src/base-client/components/common/XDescriptions/demo.vue +51 -51
  165. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  166. package/src/base-client/components/common/XDescriptions/index.md +83 -83
  167. package/src/base-client/components/common/XDetailsView/XDetailsView.vue +238 -238
  168. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  169. package/src/base-client/components/common/XForm/XForm.vue +420 -420
  170. package/src/base-client/components/common/XForm/XFormItem.vue +1342 -1342
  171. package/src/base-client/components/common/XForm/XStatusButton.vue +54 -54
  172. package/src/base-client/components/common/XForm/XTreeSelect.vue +276 -276
  173. package/src/base-client/components/common/XForm/demo.vue +105 -105
  174. package/src/base-client/components/common/XForm/index.js +3 -3
  175. package/src/base-client/components/common/XForm/index.md +178 -178
  176. package/src/base-client/components/common/XForm/itemComponent/XClickChangeBtn/index.vue +49 -49
  177. package/src/base-client/components/common/XFormCol/XFormCol.vue +157 -157
  178. package/src/base-client/components/common/XFormCol/index.js +3 -3
  179. package/src/base-client/components/common/XFormCol/index.md +35 -35
  180. package/src/base-client/components/common/XFormGroup/XFormGroup.vue +301 -301
  181. package/src/base-client/components/common/XFormGroup/demo.vue +41 -41
  182. package/src/base-client/components/common/XFormGroup/index.js +3 -3
  183. package/src/base-client/components/common/XFormGroup/index.md +38 -38
  184. package/src/base-client/components/common/XFormGroupDetails/XFormGroupDetails.vue +72 -72
  185. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  186. package/src/base-client/components/common/XFormTable/XFormTable.vue +938 -938
  187. package/src/base-client/components/common/XFormTable/demo.vue +87 -87
  188. package/src/base-client/components/common/XFormTable/index.js +3 -3
  189. package/src/base-client/components/common/XFormTable/index.md +92 -92
  190. package/src/base-client/components/common/XImportExcel/XImportExcel.vue +174 -174
  191. package/src/base-client/components/common/XImportExcel/index.js +3 -3
  192. package/src/base-client/components/common/XImportExcel/index.md +38 -38
  193. package/src/base-client/components/common/XInput/XInput.vue +128 -128
  194. package/src/base-client/components/common/XInput/index.js +3 -3
  195. package/src/base-client/components/common/XInput/index.md +97 -97
  196. package/src/base-client/components/common/XIntervalPicker/XIntervalPicker.vue +121 -121
  197. package/src/base-client/components/common/XLabelSelect/XLabelSelect.vue +110 -110
  198. package/src/base-client/components/common/XLabelSelect/XLabelSelectDemo.vue +35 -35
  199. package/src/base-client/components/common/XLicensePlate/XLicensePlate.vue +193 -193
  200. package/src/base-client/components/common/XLicensePlate/XLicensePlateDemo.vue +48 -48
  201. package/src/base-client/components/common/XLicensePlate/index.js +3 -3
  202. package/src/base-client/components/common/XLicensePlate/index.md +38 -38
  203. package/src/base-client/components/common/XPrint/Demo.vue +41 -41
  204. package/src/base-client/components/common/XPrint/OpenInvoice.vue +21 -21
  205. package/src/base-client/components/common/XPrint/PrintBill.vue +304 -304
  206. package/src/base-client/components/common/XPrint/PrintHtml.js +98 -98
  207. package/src/base-client/components/common/XPrint/css/hiPrintCss.js +359 -359
  208. package/src/base-client/components/common/XPrint/css/lodopCss.js +26 -26
  209. package/src/base-client/components/common/XPrint/css/print-lock.css +351 -351
  210. package/src/base-client/components/common/XPrint/index.vue +97 -97
  211. package/src/base-client/components/common/XRate/demo.vue +102 -102
  212. package/src/base-client/components/common/XRate/index.vue +149 -149
  213. package/src/base-client/components/common/XReport/XReport.vue +963 -963
  214. package/src/base-client/components/common/XReport/XReportDemo.vue +70 -70
  215. package/src/base-client/components/common/XReport/XReportDesign.vue +463 -463
  216. package/src/base-client/components/common/XReport/XReportJsonRender.vue +381 -381
  217. package/src/base-client/components/common/XReport/XReportTrGroup.vue +1005 -1005
  218. package/src/base-client/components/common/XReport/index.js +3 -3
  219. package/src/base-client/components/common/XReport/index.md +103 -103
  220. package/src/base-client/components/common/XReport/print.js +186 -186
  221. package/src/base-client/components/common/XReportDrawer/XReportDrawer.vue +201 -201
  222. package/src/base-client/components/common/XReportDrawer/index.js +3 -3
  223. package/src/base-client/components/common/XReportGrid/XReport.vue +1075 -1075
  224. package/src/base-client/components/common/XReportGrid/XReportDemo.vue +44 -44
  225. package/src/base-client/components/common/XReportGrid/XReportDesign.vue +620 -620
  226. package/src/base-client/components/common/XReportGrid/XReportTrGroup.vue +731 -731
  227. package/src/base-client/components/common/XReportGrid/index.js +3 -3
  228. package/src/base-client/components/common/XReportGrid/index.md +44 -44
  229. package/src/base-client/components/common/XReportGrid/print.js +184 -184
  230. package/src/base-client/components/common/XReportSlot/XReportSlot.vue +110 -110
  231. package/src/base-client/components/common/XReportSlot/index.js +3 -3
  232. package/src/base-client/components/common/XReportSlot/index.md +48 -48
  233. package/src/base-client/components/common/XSimpleDescriptions/XSimpleDescriptions.vue +166 -166
  234. package/src/base-client/components/common/XSimpleDescriptions/index.js +3 -3
  235. package/src/base-client/components/common/XSimpleDescriptions/index.md +7 -7
  236. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  237. package/src/base-client/components/common/XStepView/index.js +3 -3
  238. package/src/base-client/components/common/XStepView/index.md +31 -31
  239. package/src/base-client/components/common/XTab/XTab.vue +299 -299
  240. package/src/base-client/components/common/XTab/XTabDemo.vue +22 -22
  241. package/src/base-client/components/common/XTab/index.js +3 -3
  242. package/src/base-client/components/common/XTable/CustomFuncCel.vue +51 -51
  243. package/src/base-client/components/common/XTable/ExportExcel.vue +282 -282
  244. package/src/base-client/components/common/XTable/TableCellRenderer.vue +161 -161
  245. package/src/base-client/components/common/XTable/XTable.vue +1600 -1600
  246. package/src/base-client/components/common/XTable/XTableWrapper.vue +584 -584
  247. package/src/base-client/components/common/XTable/index.js +3 -3
  248. package/src/base-client/components/common/XTable/index.md +255 -255
  249. package/src/base-client/components/common/XTagGroup/index.vue +52 -52
  250. package/src/base-client/components/common/XTimeline/XTimeline.vue +358 -358
  251. package/src/base-client/components/common/XTimeline/index.md +191 -191
  252. package/src/base-client/components/common/XTree/XTree.vue +424 -424
  253. package/src/base-client/components/common/XTree/XTreePro.vue +452 -452
  254. package/src/base-client/components/common/XTree/index.js +3 -3
  255. package/src/base-client/components/common/XTree/index.md +36 -36
  256. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +113 -113
  257. package/src/base-client/components/common/XTreeOne/XTreeOnePro.vue +128 -128
  258. package/src/base-client/components/common/XTreeOne/index.js +3 -3
  259. package/src/base-client/components/common/XUploadFilesView/index.vue +485 -485
  260. package/src/base-client/components/common/richTextModal/index.vue +56 -56
  261. package/src/base-client/components/common/richTextModal/richDemo.vue +48 -48
  262. package/src/base-client/components/his/XCharge/XCharge.vue +238 -238
  263. package/src/base-client/components/his/XCheckbox/XCheckbox.vue +105 -105
  264. package/src/base-client/components/his/XCheckbox/index.md +253 -253
  265. package/src/base-client/components/his/XHDescriptions/XHDescriptions.vue +430 -430
  266. package/src/base-client/components/his/XHDescriptions/index.md +217 -217
  267. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +457 -457
  268. package/src/base-client/components/his/XHisEditor/diagnosisAutocomplete.js +263 -263
  269. package/src/base-client/components/his/XHisEditor/index.js +3 -3
  270. package/src/base-client/components/his/XList/XList.vue +306 -306
  271. package/src/base-client/components/his/XQuestionnaire/XQuestionnaire.json +3 -3
  272. package/src/base-client/components/his/XQuestionnaire/XQuestionnaire.vue +89 -89
  273. package/src/base-client/components/his/XQuestionnaire/XQuestionnaireDemo.vue +51 -51
  274. package/src/base-client/components/his/XQuestionnaire/XQuestionnaireItem.vue +252 -252
  275. package/src/base-client/components/his/XRadio/XRadio.vue +125 -125
  276. package/src/base-client/components/his/XRadio/index.md +234 -234
  277. package/src/base-client/components/his/XSelect/XSelect.vue +72 -72
  278. package/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +234 -234
  279. package/src/base-client/components/his/XShiftSchedule/dome.vue +29 -29
  280. package/src/base-client/components/his/XSidebar/XSidebar.vue +240 -240
  281. package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
  282. package/src/base-client/components/his/XTimeSelect/XTimeSelect.vue +162 -162
  283. package/src/base-client/components/his/XTimeSelect/XTimeSelectDemo.vue +23 -23
  284. package/src/base-client/components/his/XTitle/README.md +113 -113
  285. package/src/base-client/components/his/XTitle/XTitle.vue +123 -123
  286. package/src/base-client/components/his/XTreeRows/TreeNode.vue +100 -100
  287. package/src/base-client/components/his/XTreeRows/XTreeRows.vue +197 -197
  288. package/src/base-client/components/his/threeTestOrders/dome.vue +68 -68
  289. package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
  290. package/src/base-client/components/his/threeTestOrders/textBox.vue +457 -457
  291. package/src/base-client/components/his/threeTestOrders/threeTestOrders.vue +475 -475
  292. package/src/base-client/components/index.js +51 -51
  293. package/src/base-client/components/layout/XPageView/RenderRow.vue +88 -88
  294. package/src/base-client/components/layout/XPageView/XErrorView.vue +22 -22
  295. package/src/base-client/components/layout/XPageView/XPageRowTemplate.vue +37 -37
  296. package/src/base-client/components/layout/XPageView/XPageView.vue +223 -223
  297. package/src/base-client/components/layout/XPageView/XTab/XTab.vue +96 -96
  298. package/src/base-client/components/layout/XPageView/XTab/index.js +3 -3
  299. package/src/base-client/components/layout/XPageView/componentTypes.js +22 -22
  300. package/src/base-client/components/layout/XPageView/index.js +2 -2
  301. package/src/base-client/components/layout/XPageView/index.md +96 -96
  302. package/src/base-client/components/layout/XTreeView/XTreeView.vue +130 -130
  303. package/src/base-client/components/layout/XTreeView/index.js +3 -3
  304. package/src/base-client/components/layout/XTreeView/index.md +46 -46
  305. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  306. package/src/base-client/components/system/DictionaryDetailsView/index.js +3 -3
  307. package/src/base-client/components/system/DictionaryDetailsView/index.md +41 -41
  308. package/src/base-client/components/system/LogDetailsView/LogDetailsView.vue +376 -376
  309. package/src/base-client/components/system/LogDetailsView/index.js +3 -3
  310. package/src/base-client/components/system/LogDetailsView/index.md +41 -41
  311. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  312. package/src/base-client/components/system/QueryParamsDetailsView/index.js +3 -3
  313. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +807 -807
  314. package/src/base-client/components/ticket/TicketDetailsView/index.js +3 -3
  315. package/src/base-client/components/ticket/TicketDetailsView/index.md +29 -29
  316. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +260 -260
  317. package/src/base-client/components/ticket/TicketDetailsView/part/index.js +3 -3
  318. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +532 -532
  319. package/src/base-client/components/ticket/TicketSubmitSuccessView/index.js +3 -3
  320. package/src/base-client/components/ticket/TicketSubmitSuccessView/index.md +29 -29
  321. package/src/base-client/plugins/AppData.js +126 -126
  322. package/src/base-client/plugins/Config.js +19 -19
  323. package/src/base-client/plugins/GetLoginInfoService.js +183 -183
  324. package/src/base-client/plugins/PagedList.js +177 -177
  325. package/src/base-client/plugins/Recording.js +258 -258
  326. package/src/base-client/plugins/authority-plugin.js +167 -167
  327. package/src/base-client/plugins/compatible/LoginServiceOA.js +20 -20
  328. package/src/base-client/plugins/i18n-extend.js +32 -32
  329. package/src/base-client/plugins/index.js +23 -23
  330. package/src/base-client/plugins/moment.js +8 -8
  331. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  332. package/src/bootstrap.js +51 -51
  333. package/src/components/Charts/Bar.vue +62 -62
  334. package/src/components/Charts/ChartCard.vue +134 -134
  335. package/src/components/Charts/Liquid.vue +67 -67
  336. package/src/components/Charts/MiniArea.vue +39 -39
  337. package/src/components/Charts/MiniBar.vue +39 -39
  338. package/src/components/Charts/MiniProgress.vue +75 -75
  339. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  340. package/src/components/Charts/Radar.vue +68 -68
  341. package/src/components/Charts/RankList.vue +77 -77
  342. package/src/components/Charts/TagCloud.vue +113 -113
  343. package/src/components/Charts/TransferBar.vue +64 -64
  344. package/src/components/Charts/Trend.vue +82 -82
  345. package/src/components/Charts/chart.less +12 -12
  346. package/src/components/Charts/smooth.area.less +13 -13
  347. package/src/components/CodeMirror/inedx.vue +118 -118
  348. package/src/components/CodeMirror/setting.js +40 -40
  349. package/src/components/Ellipsis/Ellipsis.vue +65 -65
  350. package/src/components/Ellipsis/index.js +3 -3
  351. package/src/components/Ellipsis/index.md +38 -38
  352. package/src/components/FileImageItem/FileItem.vue +305 -305
  353. package/src/components/FileImageItem/FileItemGroup.vue +197 -197
  354. package/src/components/FileImageItem/ImageItem.vue +107 -107
  355. package/src/components/FileImageItem/index.js +4 -4
  356. package/src/components/FilePreview/FilePreview.vue +181 -181
  357. package/src/components/FilePreview/FilePreviewDemo.vue +30 -30
  358. package/src/components/FilePreview/index.js +3 -3
  359. package/src/components/HeightScanner/index.vue +615 -615
  360. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  361. package/src/components/NumberInfo/index.js +3 -3
  362. package/src/components/NumberInfo/index.less +54 -54
  363. package/src/components/NumberInfo/index.md +43 -43
  364. package/src/components/STable/README.md +341 -341
  365. package/src/components/STable/index.js +558 -558
  366. package/src/components/TableSetting/TableSetting.vue +143 -143
  367. package/src/components/TableSetting/index.js +3 -3
  368. package/src/components/Trend/Trend.vue +41 -41
  369. package/src/components/Trend/index.js +3 -3
  370. package/src/components/Trend/index.less +41 -41
  371. package/src/components/Trend/index.md +45 -45
  372. package/src/components/_util/util.js +46 -46
  373. package/src/components/cache/AKeepAlive.js +179 -179
  374. package/src/components/card/ChartCard.vue +79 -79
  375. package/src/components/chart/Bar.vue +60 -60
  376. package/src/components/chart/MiniArea.vue +67 -67
  377. package/src/components/chart/MiniBar.vue +59 -59
  378. package/src/components/chart/MiniProgress.vue +57 -57
  379. package/src/components/chart/Radar.vue +80 -80
  380. package/src/components/chart/RankingList.vue +60 -60
  381. package/src/components/chart/Trend.vue +79 -79
  382. package/src/components/chart/index.less +9 -9
  383. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  384. package/src/components/checkbox/ImgCheckbox.vue +117 -117
  385. package/src/components/checkbox/ImgCheckboxGroup.vue +76 -76
  386. package/src/components/checkbox/index.js +9 -9
  387. package/src/components/exception/ExceptionPage.vue +70 -70
  388. package/src/components/exception/typeConfig.js +19 -19
  389. package/src/components/form/FormRow.vue +52 -52
  390. package/src/components/g2Charts/constants.js +202 -202
  391. package/src/components/g2Charts/demo.vue +808 -808
  392. package/src/components/g2Charts/designer.vue +228 -228
  393. package/src/components/g2Charts/designerBaseConfig.vue +61 -61
  394. package/src/components/g2Charts/designerDataConfig.vue +259 -259
  395. package/src/components/g2Charts/designerStyleConfig.vue +16 -16
  396. package/src/components/g2Charts/index.vue +397 -397
  397. package/src/components/index.js +36 -36
  398. package/src/components/index.less +5 -5
  399. package/src/components/input/IInput.vue +66 -66
  400. package/src/components/menu/Contextmenu.vue +84 -84
  401. package/src/components/menu/SideMenu.vue +75 -75
  402. package/src/components/menu/index.less +38 -38
  403. package/src/components/menu/menu.js +273 -273
  404. package/src/components/page/header/PageHeader.vue +64 -64
  405. package/src/components/page/header/index.less +40 -40
  406. package/src/components/result/Result.vue +77 -77
  407. package/src/components/setting/Setting.vue +234 -234
  408. package/src/components/setting/SettingItem.vue +26 -26
  409. package/src/components/setting/i18n.js +117 -117
  410. package/src/components/table/StandardTable.vue +141 -141
  411. package/src/components/table/advance/ActionColumns.vue +158 -158
  412. package/src/components/table/advance/ActionSize.vue +45 -45
  413. package/src/components/table/advance/AdvanceTable.vue +275 -275
  414. package/src/components/table/advance/SearchArea.vue +355 -355
  415. package/src/components/table/advance/index.js +2 -2
  416. package/src/components/table/api/ApiTable.vue +50 -50
  417. package/src/components/task/TaskGroup.vue +80 -80
  418. package/src/components/task/TaskItem.vue +26 -26
  419. package/src/components/tool/AStepItem.vue +60 -60
  420. package/src/components/tool/AvatarList.vue +68 -68
  421. package/src/components/tool/DetailList.vue +157 -157
  422. package/src/components/tool/Drawer.vue +142 -142
  423. package/src/components/tool/FooterToolBar.vue +30 -30
  424. package/src/components/tool/HeadInfo.vue +35 -35
  425. package/src/components/tool/TagSelect.vue +83 -83
  426. package/src/components/tool/TagSelectOption.vue +33 -33
  427. package/src/components/transition/PageToggleTransition.vue +97 -97
  428. package/src/config/CreateQueryConfig.js +325 -325
  429. package/src/config/default/admin.config.js +18 -18
  430. package/src/config/default/animate.config.js +21 -21
  431. package/src/config/default/antd.config.js +89 -89
  432. package/src/config/default/index.js +6 -6
  433. package/src/config/default/setting.config.js +55 -55
  434. package/src/config/index.js +3 -3
  435. package/src/config/replacer/index.js +10 -10
  436. package/src/config/replacer/resolve.config.js +67 -67
  437. package/src/expression/ExpressionRunner.js +26 -26
  438. package/src/expression/TestExpression.js +509 -509
  439. package/src/expression/core/Delegate.js +115 -115
  440. package/src/expression/core/Expression.js +1358 -1358
  441. package/src/expression/core/Program.js +932 -932
  442. package/src/expression/core/Token.js +27 -27
  443. package/src/expression/enums/ExpressionType.js +81 -81
  444. package/src/expression/enums/TokenType.js +11 -11
  445. package/src/expression/exception/BreakWayException.js +2 -2
  446. package/src/expression/exception/ContinueWayException.js +2 -2
  447. package/src/expression/exception/ExpressionException.js +28 -28
  448. package/src/expression/exception/ReturnWayException.js +14 -14
  449. package/src/expression/exception/ServiceException.js +22 -22
  450. package/src/expression/instances/LogicConsole.js +44 -44
  451. package/src/expression/ts/ExpressionRunner.ts +28 -28
  452. package/src/expression/ts/TestExpression.ts +509 -509
  453. package/src/expression/ts/core/Delegate.ts +114 -114
  454. package/src/expression/ts/core/Expression.ts +1309 -1309
  455. package/src/expression/ts/core/Program.ts +950 -950
  456. package/src/expression/ts/core/Token.ts +29 -29
  457. package/src/expression/ts/enums/ExpressionType.ts +81 -81
  458. package/src/expression/ts/enums/TokenType.ts +13 -13
  459. package/src/expression/ts/exception/BreakWayException.ts +2 -2
  460. package/src/expression/ts/exception/ContinueWayException.ts +2 -2
  461. package/src/expression/ts/exception/ExpressionException.ts +28 -28
  462. package/src/expression/ts/exception/ReturnWayException.ts +14 -14
  463. package/src/expression/ts/exception/ServiceException.ts +22 -22
  464. package/src/expression/ts/instances/JSONArray.ts +48 -48
  465. package/src/expression/ts/instances/JSONObject.ts +109 -109
  466. package/src/expression/ts/instances/LogicConsole.ts +32 -32
  467. package/src/font-style/font.css +4 -4
  468. package/src/layouts/AdminLayout.vue +174 -174
  469. package/src/layouts/BlankView.vue +79 -79
  470. package/src/layouts/CommonLayout.vue +56 -56
  471. package/src/layouts/ComponentLayoutOne.vue +47 -47
  472. package/src/layouts/GridView.vue +43 -43
  473. package/src/layouts/PageLayout.vue +151 -151
  474. package/src/layouts/PageView.vue +55 -55
  475. package/src/layouts/SinglePageView.vue +136 -136
  476. package/src/layouts/footer/PageFooter.vue +49 -49
  477. package/src/layouts/header/AdminHeader.vue +132 -132
  478. package/src/layouts/header/HeaderAvatar.vue +64 -64
  479. package/src/layouts/header/HeaderNotice.vue +177 -177
  480. package/src/layouts/header/HeaderSearch.vue +67 -67
  481. package/src/layouts/header/InstitutionDetail.vue +181 -181
  482. package/src/layouts/header/index.less +92 -92
  483. package/src/layouts/tabs/TabsHead.vue +189 -189
  484. package/src/layouts/tabs/TabsView.vue +389 -389
  485. package/src/layouts/tabs/i18n.js +25 -25
  486. package/src/layouts/tabs/index.js +2 -2
  487. package/src/lib.js +1 -1
  488. package/src/logic/LogicRunner.js +62 -62
  489. package/src/logic/TestLogic.js +13 -13
  490. package/src/logic/plugins/common/DateTools.js +35 -35
  491. package/src/logic/plugins/common/VueTools.js +30 -30
  492. package/src/logic/plugins/index.js +7 -7
  493. package/src/logic/ts/LogicRunner.ts +67 -67
  494. package/src/logic/ts/TestLogic.ts +13 -13
  495. package/src/main.js +33 -33
  496. package/src/mixins/formValidationMixin.js +46 -46
  497. package/src/mock/common/activityData.js +32 -32
  498. package/src/mock/common/index.js +89 -89
  499. package/src/mock/common/reportData.js +20 -20
  500. package/src/mock/common/tableData.js +118 -118
  501. package/src/mock/extend/index.js +84 -84
  502. package/src/mock/goods/index.js +108 -108
  503. package/src/mock/index.js +12 -12
  504. package/src/mock/project/index.js +17 -17
  505. package/src/mock/user/current.js +13 -13
  506. package/src/mock/user/login.js +39 -39
  507. package/src/mock/user/routes.js +61 -61
  508. package/src/mock/workplace/index.js +15 -15
  509. package/src/pages/DefaultExample/index.vue +77 -77
  510. package/src/pages/DynamicStatistics/ChartSelector.vue +331 -331
  511. package/src/pages/DynamicStatistics/DataTabs.vue +83 -83
  512. package/src/pages/DynamicStatistics/DynamicTable.vue +128 -128
  513. package/src/pages/DynamicStatistics/EvaluationArea.vue +69 -69
  514. package/src/pages/DynamicStatistics/FavoriteList.vue +50 -50
  515. package/src/pages/DynamicStatistics/QuestionHistoryAndFavorites.vue +591 -591
  516. package/src/pages/DynamicStatistics/SearchBar.vue +192 -192
  517. package/src/pages/DynamicStatistics/index.vue +282 -282
  518. package/src/pages/Example/childIndex.vue +15 -15
  519. package/src/pages/Example/index.vue +30 -30
  520. package/src/pages/LogicCallExample/index.vue +46 -46
  521. package/src/pages/NewDynamicStatistics/ChartSelector.vue +331 -331
  522. package/src/pages/NewDynamicStatistics/DataTabs.vue +122 -122
  523. package/src/pages/NewDynamicStatistics/DynamicTable.vue +128 -128
  524. package/src/pages/NewDynamicStatistics/EvaluationArea.vue +69 -69
  525. package/src/pages/NewDynamicStatistics/FavoriteList.vue +50 -50
  526. package/src/pages/NewDynamicStatistics/QuestionHistoryAndFavorites.vue +289 -289
  527. package/src/pages/NewDynamicStatistics/SearchBar.vue +193 -193
  528. package/src/pages/NewDynamicStatistics/index.vue +258 -258
  529. package/src/pages/Recording/index.vue +77 -77
  530. package/src/pages/ReportGrid/index.vue +76 -76
  531. package/src/pages/ReportView.vue +50 -50
  532. package/src/pages/ServiceReview/index.vue +284 -284
  533. package/src/pages/SubExample/index.vue +26 -26
  534. package/src/pages/WorkflowDetail/WorkFlowDemo.vue +47 -47
  535. package/src/pages/WorkflowDetail/WorkFlowDemo2.vue +204 -204
  536. package/src/pages/WorkflowDetail/WorkFlowDemo3.vue +203 -204
  537. package/src/pages/WorkflowDetail/WorkflowDetail.vue +379 -399
  538. package/src/pages/WorkflowDetail/WorkflowPageDetail/LeaveMessage.vue +388 -388
  539. package/src/pages/WorkflowDetail/WorkflowPageDetail/TrimTextTail.vue +23 -23
  540. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformation.vue +415 -415
  541. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformationDetails.vue +276 -276
  542. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandle.vue +1757 -1757
  543. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandleReso.vue +975 -975
  544. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowPreview.vue +109 -109
  545. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowTimeline.vue +987 -987
  546. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkOrderParentDetails.vue +222 -222
  547. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowDetailResso.vue +243 -243
  548. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowListResolution.vue +248 -248
  549. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowLog.vue +188 -188
  550. package/src/pages/WorkflowDetail/WorkflowPageDetail/components/WorkflowPersonSelector.vue +109 -109
  551. package/src/pages/XPageViewExample/index.vue +149 -149
  552. package/src/pages/XReportView/index.vue +64 -64
  553. package/src/pages/XTreeOneProExample/index.vue +67 -67
  554. package/src/pages/addressSelect/addressDemo.vue +24 -24
  555. package/src/pages/addressSelect/index.vue +270 -270
  556. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  557. package/src/pages/dashboard/workplace/i18n.js +40 -40
  558. package/src/pages/dashboard/workplace/index.js +2 -2
  559. package/src/pages/dashboard/workplace/index.less +59 -59
  560. package/src/pages/exception/403.vue +21 -21
  561. package/src/pages/exception/404.vue +24 -24
  562. package/src/pages/exception/500.vue +21 -21
  563. package/src/pages/login/Login.vue +378 -378
  564. package/src/pages/login/LoginV3.vue +389 -389
  565. package/src/pages/login/index.js +2 -2
  566. package/src/pages/lowCode/lowCodeEditor.vue +1219 -1219
  567. package/src/pages/lowCode/lowCodeRenderPage.vue +43 -43
  568. package/src/pages/report/ReportTable.js +124 -124
  569. package/src/pages/report/ReportTableHome.vue +28 -28
  570. package/src/pages/resourceManage/depListManage.vue +23 -23
  571. package/src/pages/resourceManage/funListManage.vue +23 -23
  572. package/src/pages/resourceManage/index.js +15 -15
  573. package/src/pages/resourceManage/orgListManage.vue +98 -98
  574. package/src/pages/resourceManage/resourceManageMain.vue +57 -57
  575. package/src/pages/resourceManage/roleListManage.vue +23 -23
  576. package/src/pages/resourceManage/staffListManage.vue +23 -23
  577. package/src/pages/system/dictionary/index.vue +44 -44
  578. package/src/pages/system/file/Info.vue +56 -56
  579. package/src/pages/system/file/index.vue +317 -317
  580. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  581. package/src/pages/system/monitor/operLog/index.vue +37 -37
  582. package/src/pages/system/settings/index.vue +126 -126
  583. package/src/pages/system/settings/modifyPassword.vue +117 -117
  584. package/src/pages/system/ticket/index.vue +480 -480
  585. package/src/pages/system/ticket/submitTicketSuccess.vue +484 -484
  586. package/src/pages/userInfoDetailManage/ChangeMeterRecordQuery/index.vue +64 -64
  587. package/src/pages/userInfoDetailManage/FillCardRecordQuery/index.vue +77 -77
  588. package/src/pages/userInfoDetailManage/FillGasRecordQuery/index.vue +75 -75
  589. package/src/pages/userInfoDetailManage/InfoChangeRecordQuery/index.vue +64 -64
  590. package/src/pages/userInfoDetailManage/InstructRecordQuery/index.vue +64 -64
  591. package/src/pages/userInfoDetailManage/InsuranceDetailQuery/index.vue +64 -64
  592. package/src/pages/userInfoDetailManage/MachineRecordQuery/index.vue +75 -75
  593. package/src/pages/userInfoDetailManage/MeterParamRecordQuery/index.vue +64 -64
  594. package/src/pages/userInfoDetailManage/OtherChargeRecordQuery/index.vue +75 -75
  595. package/src/pages/userInfoDetailManage/PriceAdjustments/index.vue +64 -64
  596. package/src/pages/userInfoDetailManage/TransferRecordQuery/index.vue +66 -66
  597. package/src/pages/userInfoDetailManage/UserChargeRecordQuery/index.vue +94 -94
  598. package/src/pages/userInfoDetailManage/UserException/index.vue +64 -64
  599. package/src/pages/userInfoDetailManage/UserHandRecordQuery/index.vue +87 -87
  600. package/src/pages/userInfoDetailManage/UserRecordQuery/index.vue +74 -74
  601. package/src/pages/userInfoDetailManage/WatchCollectionRecordQuery/index.vue +64 -64
  602. package/src/pages/userInfoDetailManage/index.vue +290 -290
  603. package/src/pages/userInfoDetailManage/uploadFilesHistory/index.vue +120 -120
  604. package/src/pages/userInfoDetailManage/userInfoDetailQueryTabs.vue +144 -144
  605. package/src/plugins/EventLogPlugin.js +33 -33
  606. package/src/plugins/FindParentsData.js +17 -17
  607. package/src/plugins/HiPrintPlugin.js +164 -164
  608. package/src/router/async/config.async.js +35 -35
  609. package/src/router/async/router.map.js +127 -126
  610. package/src/router/guards.js +260 -260
  611. package/src/router/i18n.js +57 -57
  612. package/src/router/index.js +27 -27
  613. package/src/router.js +17 -17
  614. package/src/services/DataModel.js +30 -30
  615. package/src/services/LodopFuncs.js +137 -137
  616. package/src/services/api/DictionaryDetailsViewApi.js +6 -6
  617. package/src/services/api/LogDetailsViewApi.js +10 -10
  618. package/src/services/api/QueryParamsDetailsViewApi.js +6 -6
  619. package/src/services/api/TicketDetailsViewApi.js +46 -46
  620. package/src/services/api/cas.js +79 -79
  621. package/src/services/api/common.js +346 -346
  622. package/src/services/api/entity.js +18 -18
  623. package/src/services/api/index.js +17 -17
  624. package/src/services/api/logininfor/index.js +6 -6
  625. package/src/services/api/manage.js +8 -8
  626. package/src/services/api/restTools.js +215 -215
  627. package/src/services/api/workFlow.js +57 -57
  628. package/src/services/apiService.js +16 -16
  629. package/src/services/dataSource.js +12 -12
  630. package/src/services/index.js +7 -7
  631. package/src/services/user.js +92 -92
  632. package/src/services/v3Api.js +116 -116
  633. package/src/store/index.js +5 -5
  634. package/src/store/modules/account.js +115 -115
  635. package/src/store/modules/index.js +5 -5
  636. package/src/store/modules/lowCode.js +33 -33
  637. package/src/store/modules/setting.js +119 -119
  638. package/src/store/mutation-types.js +4 -4
  639. package/src/theme/antd/ant-menu.less +2 -2
  640. package/src/theme/antd/ant-message.less +3 -3
  641. package/src/theme/antd/ant-table.less +22 -22
  642. package/src/theme/antd/ant-time-picker.less +3 -3
  643. package/src/theme/antd/index.less +3 -3
  644. package/src/theme/default/color.less +43 -43
  645. package/src/theme/default/index.less +3 -3
  646. package/src/theme/default/nprogress.less +76 -76
  647. package/src/theme/default/style.less +58 -58
  648. package/src/theme/global.less +271 -271
  649. package/src/theme/index.less +5 -5
  650. package/src/theme/reportTable.less +58 -58
  651. package/src/theme/theme.less +1 -1
  652. package/src/utils/EncryptUtil.js +75 -75
  653. package/src/utils/Objects.js +25 -25
  654. package/src/utils/authority-utils.js +85 -85
  655. package/src/utils/axios-interceptors.js +100 -100
  656. package/src/utils/colors.js +107 -107
  657. package/src/utils/common.js +10 -10
  658. package/src/utils/errorCode.js +6 -6
  659. package/src/utils/excel/Blob.js +180 -180
  660. package/src/utils/excel/Export2Excel.js +141 -141
  661. package/src/utils/filter.js +21 -21
  662. package/src/utils/formatter.js +74 -74
  663. package/src/utils/htmlToPDF.js +108 -108
  664. package/src/utils/htmlToPDFApi.js +5 -5
  665. package/src/utils/i18n.js +80 -80
  666. package/src/utils/indexedDB.js +549 -549
  667. package/src/utils/login.js +188 -188
  668. package/src/utils/lowcode/lowcodeComponentMixin.js +120 -120
  669. package/src/utils/lowcode/lowcodeLog.js +29 -29
  670. package/src/utils/lowcode/lowcodeUtils.js +373 -373
  671. package/src/utils/lowcode/registerComponentForEditor.js +1 -1
  672. package/src/utils/lowcode/registerComponentForRender.js +11 -11
  673. package/src/utils/map-utils.js +47 -47
  674. package/src/utils/microAppUtils.js +49 -49
  675. package/src/utils/reg.js +95 -95
  676. package/src/utils/request.js +383 -383
  677. package/src/utils/routerUtil.js +553 -553
  678. package/src/utils/runEvalFunction.js +14 -14
  679. package/src/utils/theme-color-replacer-extend.js +92 -92
  680. package/src/utils/themeUtil.js +100 -100
  681. package/src/utils/util.js +329 -329
  682. package/src/utils/waterMark.js +31 -31
  683. package/test/Tree.spec.js +168 -168
  684. package/test/myDialog.spec.js +47 -47
  685. package/test/request.test.js +17 -17
  686. package/test/util.test.js +53 -53
  687. package/test/v3Api.test.js +1984 -1984
  688. package/tests/unit/ReportTable.spec.js +16 -16
  689. package/vue.config.js +222 -222
  690. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
  691. package/.claude/settings.local.json +0 -9
@@ -1,549 +1,549 @@
1
- import { post } from '@vue2-client/services/api'
2
-
3
- // 内存缓存作为IndexedDB的备用方案,防止数据库损坏时应用崩溃
4
- const MEMORY_CACHE = new Map()
5
- const USE_MEMORY_CACHE = true // 是否启用内存缓存
6
-
7
- const DB_CONFIG = {
8
- NAME: window.__MICRO_APP_NAME__ ? `view_${window.__MICRO_APP_NAME__}` : 'view',
9
- STORE_NAME: 'metaCache',
10
- VERSION: 1,
11
- CURRENT_VERSION: 1
12
- }
13
-
14
- // 数据库健康状态标记,用于在数据库异常时切换到备用方案
15
- let IS_DB_HEALTHY = true
16
-
17
- const LIULI_WEB_DB_NAME = 'view_liuli_web'
18
-
19
- export class IndexedDBManager {
20
- constructor () {
21
- this.db = undefined
22
- this.locks = new Map()
23
- this.requestTimeout = 10000
24
- this.isInMicroApp = !!window.__MICRO_APP_NAME__
25
- this.microAppName = window.__MICRO_APP_NAME__ || ''
26
- this.indexedDB = window?.rawWindow?.indexedDB || window.indexedDB || window.webkitindexedDB
27
- this.IDBKeyRange = window?.rawWindow?.IDBKeyRange || window.IDBKeyRange || window.webkitIDBKeyRange
28
- }
29
-
30
- async openDatabase () {
31
- try {
32
- return await new Promise((resolve, reject) => {
33
- // 添加超时机制,防止请求永久挂起
34
- const timeout = setTimeout(() => {
35
- console.error('[openDatabase] 请求超时,将尝试重建数据库')
36
- reject(new Error('IndexedDB open timeout'))
37
- }, 5000) // 5秒超时
38
-
39
- const checkRequest = this.indexedDB.open(DB_CONFIG.NAME)
40
-
41
- checkRequest.onsuccess = (e) => {
42
- clearTimeout(timeout) // 清除超时
43
- const db = e.target.result
44
- const currentVersion = db.version
45
- db.close()
46
-
47
- DB_CONFIG.CURRENT_VERSION = Math.max(currentVersion, DB_CONFIG.VERSION)
48
- const request = this.indexedDB.open(DB_CONFIG.NAME, DB_CONFIG.CURRENT_VERSION)
49
-
50
- // 为第二次打开也添加超时
51
- const openTimeout = setTimeout(() => {
52
- console.error('[openDatabase] 二次打开请求超时')
53
- reject(new Error('IndexedDB second open timeout'))
54
- }, 5000)
55
-
56
- request.onerror = (e) => {
57
- clearTimeout(openTimeout)
58
- reject(e.currentTarget.error)
59
- }
60
-
61
- request.onsuccess = (e) => {
62
- clearTimeout(openTimeout)
63
- const db = e.target.result
64
- if (!db.objectStoreNames.contains(DB_CONFIG.STORE_NAME)) {
65
- db.close()
66
- DB_CONFIG.CURRENT_VERSION++
67
- this.upgradeDatabase(resolve, reject)
68
- } else {
69
- resolve(db)
70
- }
71
- }
72
-
73
- request.onupgradeneeded = (e) => {
74
- clearTimeout(openTimeout)
75
- const db = e.target.result
76
- if (!db.objectStoreNames.contains(DB_CONFIG.STORE_NAME)) {
77
- db.createObjectStore(DB_CONFIG.STORE_NAME, { keyPath: 'key' })
78
- }
79
- }
80
- }
81
-
82
- checkRequest.onerror = (e) => {
83
- clearTimeout(timeout)
84
- reject(e.currentTarget.error)
85
- }
86
- })
87
- } catch (error) {
88
- console.error('[openDatabase] 打开数据库失败:', error)
89
-
90
- // 如果是超时错误或版本错误,尝试自动重建数据库
91
- if (error.message?.includes('timeout') || error.message?.includes('version')) {
92
- await this.forceRecreateDatabase()
93
- return this.openDatabase() // 递归调用,重新尝试打开
94
- }
95
-
96
- throw error
97
- }
98
- }
99
-
100
- async upgradeDatabase (resolve, reject) {
101
- console.warn('[upgradeDatabase] 升级数据库到版本:', DB_CONFIG.CURRENT_VERSION)
102
- const request = this.indexedDB.open(DB_CONFIG.NAME, DB_CONFIG.CURRENT_VERSION)
103
-
104
- request.onupgradeneeded = (e) => {
105
- const db = e.target.result
106
- if (!db.objectStoreNames.contains(DB_CONFIG.STORE_NAME)) {
107
- db.createObjectStore(DB_CONFIG.STORE_NAME, { keyPath: 'key' })
108
- }
109
- }
110
-
111
- request.onsuccess = (e) => {
112
- resolve(e.target.result)
113
- }
114
- request.onerror = (e) => {
115
- reject(e.currentTarget.error)
116
- }
117
- }
118
-
119
- async openDB (callback) {
120
- // 如果数据库不健康,直接调用回调并返回
121
- if (!IS_DB_HEALTHY) {
122
- console.warn('[openDB] 数据库不健康,跳过数据库操作')
123
- setTimeout(() => {
124
- try {
125
- callback(null)
126
- } catch (e) {
127
- console.error('[openDB] 回调执行错误:', e)
128
- }
129
- }, 0)
130
- return
131
- }
132
-
133
- try {
134
- if (this.db) {
135
- const isAlive = await this.checkConnection()
136
- if (isAlive) {
137
- callback(this.db)
138
- return
139
- }
140
- }
141
-
142
- // 添加超时机制,防止卡死
143
- const openDbPromise = this.openDatabase()
144
- const timeoutPromise = new Promise((resolve, reject) => {
145
- setTimeout(() => reject(new Error('openDB timeout')), 5000)
146
- })
147
-
148
- try {
149
- this.db = await Promise.race([openDbPromise, timeoutPromise])
150
- callback(this.db)
151
- } catch (error) {
152
- console.error('[openDB] 打开数据库连接超时或失败', error)
153
- // 标记数据库为不健康状态,后续操作使用备用方案
154
- IS_DB_HEALTHY = false
155
- try {
156
- callback(null)
157
- } catch (callbackError) {
158
- console.error('[openDB] 回调执行错误:', callbackError)
159
- }
160
- }
161
- } catch (error) {
162
- console.error('[openDB] 数据库操作失败:', error)
163
-
164
- // 版本错误时尝试重建数据库
165
- if (error.message?.includes('version')) {
166
- try {
167
- await this.recreateDatabase()
168
- callback(this.db)
169
- } catch (rebuildError) {
170
- console.error('[openDB] 重建失败,标记数据库为不健康状态', rebuildError)
171
- IS_DB_HEALTHY = false
172
- try {
173
- callback(null)
174
- } catch (callbackError) {
175
- console.error('[openDB] 回调执行错误:', callbackError)
176
- }
177
- }
178
- } else {
179
- // 其他错误,标记为不健康并使用备用方案
180
- IS_DB_HEALTHY = false
181
- console.error('[openDB] 不可恢复的错误,标记数据库为不健康状态')
182
- try {
183
- callback(null)
184
- } catch (callbackError) {
185
- console.error('[openDB] 回调执行错误:', callbackError)
186
- }
187
- }
188
- }
189
- }
190
-
191
- async checkConnection () {
192
- try {
193
- const transaction = this.db.transaction([DB_CONFIG.STORE_NAME], 'readwrite')
194
- const store = transaction.objectStore(DB_CONFIG.STORE_NAME)
195
- await this.promisifyRequest(store.add({ key: 'alive', data: true }))
196
- return true
197
- } catch (error) {
198
- return false
199
- }
200
- }
201
-
202
- promisifyRequest (request) {
203
- return new Promise((resolve, reject) => {
204
- request.onsuccess = () => {
205
- resolve(request.result)
206
- }
207
- request.onerror = () => {
208
- reject(request.error)
209
- }
210
- })
211
- }
212
-
213
- async getByWeb (key, url, params, callback, processFun) {
214
- // 数据库不健康时使用备用方案
215
- if (!IS_DB_HEALTHY) {
216
- console.warn(`[getByWeb] 数据库不健康,使用内存缓存或直接API调用`)
217
- return this.getByWebWithoutDB(key, url, params, callback, processFun)
218
- }
219
-
220
- // 锁机制:防止同一键的并发请求
221
- if (this.locks.has(key)) {
222
- const timeoutPromise = new Promise((resolve, reject) => {
223
- setTimeout(() => {
224
- reject(new Error(`请求超时: ${key}`))
225
- }, this.requestTimeout)
226
- })
227
-
228
- try {
229
- await Promise.race([this.locks.get(key), timeoutPromise])
230
- return this.getByWeb(key, url, params, callback, processFun)
231
- } catch (error) {
232
- console.error(`[getByWeb] 等待锁期间出错或超时: ${error.message}`)
233
- this.locks.delete(key)
234
- }
235
- }
236
-
237
- const lockPromise = (async () => {
238
- try {
239
- // 首先检查内存缓存
240
- if (USE_MEMORY_CACHE && MEMORY_CACHE.has(key)) {
241
- const cachedData = MEMORY_CACHE.get(key)
242
- callback(cachedData)
243
- return
244
- }
245
-
246
- // 再检查IndexedDB缓存
247
- const data = DB_CONFIG.NAME === LIULI_WEB_DB_NAME ? undefined : await this.getData(key)
248
-
249
- if (data && data.ERROR) {
250
- console.error(`获取配置失败:` + data.ERROR)
251
- }
252
-
253
- if (!data && url) {
254
- // 缓存未命中,请求网络数据
255
- let res
256
- try {
257
- res = await post(url, params)
258
- } catch (e) {
259
- res = {
260
- ERROR: e
261
- }
262
- }
263
- const processedData = processFun ? processFun(res) : res
264
-
265
- // 同时保存到内存缓存
266
- if (USE_MEMORY_CACHE) {
267
- MEMORY_CACHE.set(key, processedData)
268
- }
269
-
270
- // 生产环境或非移动配置时保存到IndexedDB
271
- if (process.env.NODE_ENV === 'production' || key !== 'webMobileConfig') {
272
- await this.add(key, processedData)
273
- }
274
-
275
- callback(processedData)
276
- } else {
277
- // 使用缓存数据
278
- if (USE_MEMORY_CACHE && data) {
279
- MEMORY_CACHE.set(key, data)
280
- }
281
- callback(data)
282
- }
283
- } catch (error) {
284
- console.error(`[getByWeb] 获取数据失败`, error)
285
-
286
- // IndexedDB操作失败时切换到备用方案
287
- if (error.name === 'InvalidStateError' || error.message?.includes('database') || error.message?.includes('transaction')) {
288
- console.error(`[getByWeb] 数据库操作失败,标记为不健康`)
289
- IS_DB_HEALTHY = false
290
-
291
- // 使用备用方案获取数据
292
- return this.getByWebWithoutDB(key, url, params, callback, processFun)
293
- }
294
-
295
- if (process.env.NODE_ENV === 'production' && key !== 'webMobileConfig') {
296
- await this.add(key, null)
297
- }
298
- callback(null)
299
- }
300
- })()
301
-
302
- this.locks.set(key, lockPromise)
303
-
304
- try {
305
- const timeoutPromise = new Promise((resolve, reject) => {
306
- setTimeout(() => {
307
- reject(new Error(`操作超时: ${key}`))
308
- }, this.requestTimeout)
309
- })
310
-
311
- await Promise.race([this.locks.get(key), timeoutPromise])
312
- } catch (error) {
313
- console.error(`[getByWeb] 执行期间出错或超时: ${error.message}`)
314
- } finally {
315
- this.locks.delete(key)
316
- }
317
- }
318
-
319
- // 备用方法:不使用IndexedDB,直接使用内存缓存和API
320
- async getByWebWithoutDB (key, url, params, callback, processFun) {
321
- // 首先检查内存缓存
322
- if (USE_MEMORY_CACHE && MEMORY_CACHE.has(key)) {
323
- const cachedData = MEMORY_CACHE.get(key)
324
- callback(cachedData)
325
- return
326
- }
327
-
328
- // 无URL则无法获取数据
329
- if (!url) {
330
- callback(null)
331
- return
332
- }
333
-
334
- // 直接通过API获取数据
335
- try {
336
- const res = await post(url, params)
337
- const processedData = processFun ? processFun(res) : res
338
-
339
- // 保存到内存缓存
340
- if (USE_MEMORY_CACHE) {
341
- MEMORY_CACHE.set(key, processedData)
342
- }
343
-
344
- callback(processedData)
345
- } catch (error) {
346
- console.error(`[getByWebWithoutDB] 获取数据失败: ${error.message}`)
347
- callback(null)
348
- }
349
- }
350
-
351
- async getData (key) {
352
- return new Promise((resolve) => {
353
- this.openDB((db) => {
354
- if (!db) {
355
- resolve(null)
356
- return
357
- }
358
- const store = db.transaction(DB_CONFIG.STORE_NAME, 'readwrite').objectStore(DB_CONFIG.STORE_NAME)
359
- const request = store.get(key)
360
-
361
- request.onsuccess = (e) => {
362
- resolve(e.target.result?.data)
363
- }
364
-
365
- request.onerror = () => {
366
- resolve(null)
367
- }
368
- })
369
- })
370
- }
371
-
372
- async add (key, data) {
373
- this.openDB((db) => {
374
- if (!db) return
375
-
376
- const store = db.transaction(DB_CONFIG.STORE_NAME, 'readwrite').objectStore(DB_CONFIG.STORE_NAME)
377
- const request = store.add({ key, data })
378
-
379
- request.onerror = () => {
380
- // 添加失败时尝试更新
381
- this.update(key, data)
382
- }
383
- })
384
- }
385
-
386
- async update (key, data) {
387
- this.openDB((db) => {
388
- if (!db) return
389
-
390
- const store = db.transaction(DB_CONFIG.STORE_NAME, 'readwrite').objectStore(DB_CONFIG.STORE_NAME)
391
- store.put({ key, data })
392
- })
393
- }
394
-
395
- async delete (key) {
396
- this.openDB((db) => {
397
- if (!db) return
398
-
399
- const store = db.transaction(DB_CONFIG.STORE_NAME, 'readwrite').objectStore(DB_CONFIG.STORE_NAME)
400
- store.delete(key)
401
- })
402
- }
403
-
404
- async clear (callback) {
405
- this.openDB((db) => {
406
- if (!db) {
407
- if (typeof callback === 'function') callback()
408
- return
409
- }
410
-
411
- const store = db.transaction(DB_CONFIG.STORE_NAME, 'readwrite').objectStore(DB_CONFIG.STORE_NAME)
412
- const request = store.clear()
413
-
414
- request.onerror = () => {
415
- if (typeof callback === 'function') callback()
416
- }
417
-
418
- request.onsuccess = () => {
419
- if (typeof callback === 'function') callback()
420
- }
421
- })
422
- }
423
-
424
- clearCache () {
425
- // 清除缓存并刷新页面
426
- if (this.indexedDB) {
427
- this.clear(() => {
428
- location.reload()
429
- })
430
- } else {
431
- location.reload()
432
- }
433
- }
434
-
435
- async getAll () {
436
- return new Promise((resolve, reject) => {
437
- this.openDB((db) => {
438
- if (!db) {
439
- resolve([])
440
- return
441
- }
442
-
443
- const store = db.transaction(DB_CONFIG.STORE_NAME, 'readonly').objectStore(DB_CONFIG.STORE_NAME)
444
- const request = store.getAll()
445
-
446
- request.onsuccess = (e) => {
447
- resolve(e.target.result)
448
- }
449
-
450
- request.onerror = (e) => {
451
- reject(e.target.error)
452
- }
453
- })
454
- })
455
- }
456
-
457
- getAllLegacy (callback) {
458
- this.openDB((res) => {
459
- if (!res) {
460
- callback(null, new Error('打开数据库失败'))
461
- return
462
- }
463
-
464
- const store = res.transaction(DB_CONFIG.STORE_NAME, 'readonly').objectStore(DB_CONFIG.STORE_NAME)
465
- const request = store.getAll()
466
-
467
- request.onerror = (e) => {
468
- callback(null, e.target.error)
469
- }
470
-
471
- request.onsuccess = (e) => {
472
- callback(e.target.result)
473
- }
474
- })
475
- }
476
-
477
- async recreateDatabase () {
478
- try {
479
- if (this.db) {
480
- this.db.close()
481
- this.db = undefined
482
- }
483
-
484
- await new Promise((resolve, reject) => {
485
- const deleteRequest = this.indexedDB.deleteDatabase(DB_CONFIG.NAME)
486
-
487
- deleteRequest.onsuccess = () => {
488
- resolve()
489
- }
490
-
491
- deleteRequest.onerror = (e) => {
492
- reject(e.target.error)
493
- }
494
- })
495
-
496
- DB_CONFIG.CURRENT_VERSION = DB_CONFIG.VERSION
497
- this.db = await this.openDatabase()
498
- return this.db
499
- } catch (error) {
500
- console.error('重新创建数据库失败:', error)
501
- throw error
502
- }
503
- }
504
-
505
- // 强制重建数据库的方法,带有超时保护
506
- async forceRecreateDatabase () {
507
- console.warn('[forceRecreateDatabase] 开始强制重建数据库')
508
- try {
509
- // 确保关闭所有连接
510
- if (this.db) {
511
- try {
512
- this.db.close()
513
- } catch (e) {
514
- console.warn('[forceRecreateDatabase] 关闭现有连接出错')
515
- }
516
- this.db = undefined
517
- }
518
-
519
- // 清空锁防止死锁
520
- this.locks.clear()
521
-
522
- // 强制删除数据库,带超时保护
523
- await new Promise((resolve) => {
524
- const deleteRequest = this.indexedDB.deleteDatabase(DB_CONFIG.NAME)
525
-
526
- const timeout = setTimeout(() => {
527
- resolve() // 即使超时也继续执行
528
- }, 3000)
529
-
530
- deleteRequest.onsuccess = () => {
531
- clearTimeout(timeout)
532
- resolve()
533
- }
534
-
535
- deleteRequest.onerror = () => {
536
- clearTimeout(timeout)
537
- resolve() // 即使出错也继续执行
538
- }
539
- })
540
-
541
- // 重置版本
542
- DB_CONFIG.CURRENT_VERSION = DB_CONFIG.VERSION
543
- } catch (error) {
544
- console.error('[forceRecreateDatabase] 强制重建过程中出错:', error)
545
- }
546
- }
547
- }
548
-
549
- export const indexedDB = new IndexedDBManager()
1
+ import { post } from '@vue2-client/services/api'
2
+
3
+ // 内存缓存作为IndexedDB的备用方案,防止数据库损坏时应用崩溃
4
+ const MEMORY_CACHE = new Map()
5
+ const USE_MEMORY_CACHE = true // 是否启用内存缓存
6
+
7
+ const DB_CONFIG = {
8
+ NAME: window.__MICRO_APP_NAME__ ? `view_${window.__MICRO_APP_NAME__}` : 'view',
9
+ STORE_NAME: 'metaCache',
10
+ VERSION: 1,
11
+ CURRENT_VERSION: 1
12
+ }
13
+
14
+ // 数据库健康状态标记,用于在数据库异常时切换到备用方案
15
+ let IS_DB_HEALTHY = true
16
+
17
+ const LIULI_WEB_DB_NAME = 'view_liuli_web'
18
+
19
+ export class IndexedDBManager {
20
+ constructor () {
21
+ this.db = undefined
22
+ this.locks = new Map()
23
+ this.requestTimeout = 10000
24
+ this.isInMicroApp = !!window.__MICRO_APP_NAME__
25
+ this.microAppName = window.__MICRO_APP_NAME__ || ''
26
+ this.indexedDB = window?.rawWindow?.indexedDB || window.indexedDB || window.webkitindexedDB
27
+ this.IDBKeyRange = window?.rawWindow?.IDBKeyRange || window.IDBKeyRange || window.webkitIDBKeyRange
28
+ }
29
+
30
+ async openDatabase () {
31
+ try {
32
+ return await new Promise((resolve, reject) => {
33
+ // 添加超时机制,防止请求永久挂起
34
+ const timeout = setTimeout(() => {
35
+ console.error('[openDatabase] 请求超时,将尝试重建数据库')
36
+ reject(new Error('IndexedDB open timeout'))
37
+ }, 5000) // 5秒超时
38
+
39
+ const checkRequest = this.indexedDB.open(DB_CONFIG.NAME)
40
+
41
+ checkRequest.onsuccess = (e) => {
42
+ clearTimeout(timeout) // 清除超时
43
+ const db = e.target.result
44
+ const currentVersion = db.version
45
+ db.close()
46
+
47
+ DB_CONFIG.CURRENT_VERSION = Math.max(currentVersion, DB_CONFIG.VERSION)
48
+ const request = this.indexedDB.open(DB_CONFIG.NAME, DB_CONFIG.CURRENT_VERSION)
49
+
50
+ // 为第二次打开也添加超时
51
+ const openTimeout = setTimeout(() => {
52
+ console.error('[openDatabase] 二次打开请求超时')
53
+ reject(new Error('IndexedDB second open timeout'))
54
+ }, 5000)
55
+
56
+ request.onerror = (e) => {
57
+ clearTimeout(openTimeout)
58
+ reject(e.currentTarget.error)
59
+ }
60
+
61
+ request.onsuccess = (e) => {
62
+ clearTimeout(openTimeout)
63
+ const db = e.target.result
64
+ if (!db.objectStoreNames.contains(DB_CONFIG.STORE_NAME)) {
65
+ db.close()
66
+ DB_CONFIG.CURRENT_VERSION++
67
+ this.upgradeDatabase(resolve, reject)
68
+ } else {
69
+ resolve(db)
70
+ }
71
+ }
72
+
73
+ request.onupgradeneeded = (e) => {
74
+ clearTimeout(openTimeout)
75
+ const db = e.target.result
76
+ if (!db.objectStoreNames.contains(DB_CONFIG.STORE_NAME)) {
77
+ db.createObjectStore(DB_CONFIG.STORE_NAME, { keyPath: 'key' })
78
+ }
79
+ }
80
+ }
81
+
82
+ checkRequest.onerror = (e) => {
83
+ clearTimeout(timeout)
84
+ reject(e.currentTarget.error)
85
+ }
86
+ })
87
+ } catch (error) {
88
+ console.error('[openDatabase] 打开数据库失败:', error)
89
+
90
+ // 如果是超时错误或版本错误,尝试自动重建数据库
91
+ if (error.message?.includes('timeout') || error.message?.includes('version')) {
92
+ await this.forceRecreateDatabase()
93
+ return this.openDatabase() // 递归调用,重新尝试打开
94
+ }
95
+
96
+ throw error
97
+ }
98
+ }
99
+
100
+ async upgradeDatabase (resolve, reject) {
101
+ console.warn('[upgradeDatabase] 升级数据库到版本:', DB_CONFIG.CURRENT_VERSION)
102
+ const request = this.indexedDB.open(DB_CONFIG.NAME, DB_CONFIG.CURRENT_VERSION)
103
+
104
+ request.onupgradeneeded = (e) => {
105
+ const db = e.target.result
106
+ if (!db.objectStoreNames.contains(DB_CONFIG.STORE_NAME)) {
107
+ db.createObjectStore(DB_CONFIG.STORE_NAME, { keyPath: 'key' })
108
+ }
109
+ }
110
+
111
+ request.onsuccess = (e) => {
112
+ resolve(e.target.result)
113
+ }
114
+ request.onerror = (e) => {
115
+ reject(e.currentTarget.error)
116
+ }
117
+ }
118
+
119
+ async openDB (callback) {
120
+ // 如果数据库不健康,直接调用回调并返回
121
+ if (!IS_DB_HEALTHY) {
122
+ console.warn('[openDB] 数据库不健康,跳过数据库操作')
123
+ setTimeout(() => {
124
+ try {
125
+ callback(null)
126
+ } catch (e) {
127
+ console.error('[openDB] 回调执行错误:', e)
128
+ }
129
+ }, 0)
130
+ return
131
+ }
132
+
133
+ try {
134
+ if (this.db) {
135
+ const isAlive = await this.checkConnection()
136
+ if (isAlive) {
137
+ callback(this.db)
138
+ return
139
+ }
140
+ }
141
+
142
+ // 添加超时机制,防止卡死
143
+ const openDbPromise = this.openDatabase()
144
+ const timeoutPromise = new Promise((resolve, reject) => {
145
+ setTimeout(() => reject(new Error('openDB timeout')), 5000)
146
+ })
147
+
148
+ try {
149
+ this.db = await Promise.race([openDbPromise, timeoutPromise])
150
+ callback(this.db)
151
+ } catch (error) {
152
+ console.error('[openDB] 打开数据库连接超时或失败', error)
153
+ // 标记数据库为不健康状态,后续操作使用备用方案
154
+ IS_DB_HEALTHY = false
155
+ try {
156
+ callback(null)
157
+ } catch (callbackError) {
158
+ console.error('[openDB] 回调执行错误:', callbackError)
159
+ }
160
+ }
161
+ } catch (error) {
162
+ console.error('[openDB] 数据库操作失败:', error)
163
+
164
+ // 版本错误时尝试重建数据库
165
+ if (error.message?.includes('version')) {
166
+ try {
167
+ await this.recreateDatabase()
168
+ callback(this.db)
169
+ } catch (rebuildError) {
170
+ console.error('[openDB] 重建失败,标记数据库为不健康状态', rebuildError)
171
+ IS_DB_HEALTHY = false
172
+ try {
173
+ callback(null)
174
+ } catch (callbackError) {
175
+ console.error('[openDB] 回调执行错误:', callbackError)
176
+ }
177
+ }
178
+ } else {
179
+ // 其他错误,标记为不健康并使用备用方案
180
+ IS_DB_HEALTHY = false
181
+ console.error('[openDB] 不可恢复的错误,标记数据库为不健康状态')
182
+ try {
183
+ callback(null)
184
+ } catch (callbackError) {
185
+ console.error('[openDB] 回调执行错误:', callbackError)
186
+ }
187
+ }
188
+ }
189
+ }
190
+
191
+ async checkConnection () {
192
+ try {
193
+ const transaction = this.db.transaction([DB_CONFIG.STORE_NAME], 'readwrite')
194
+ const store = transaction.objectStore(DB_CONFIG.STORE_NAME)
195
+ await this.promisifyRequest(store.add({ key: 'alive', data: true }))
196
+ return true
197
+ } catch (error) {
198
+ return false
199
+ }
200
+ }
201
+
202
+ promisifyRequest (request) {
203
+ return new Promise((resolve, reject) => {
204
+ request.onsuccess = () => {
205
+ resolve(request.result)
206
+ }
207
+ request.onerror = () => {
208
+ reject(request.error)
209
+ }
210
+ })
211
+ }
212
+
213
+ async getByWeb (key, url, params, callback, processFun) {
214
+ // 数据库不健康时使用备用方案
215
+ if (!IS_DB_HEALTHY) {
216
+ console.warn(`[getByWeb] 数据库不健康,使用内存缓存或直接API调用`)
217
+ return this.getByWebWithoutDB(key, url, params, callback, processFun)
218
+ }
219
+
220
+ // 锁机制:防止同一键的并发请求
221
+ if (this.locks.has(key)) {
222
+ const timeoutPromise = new Promise((resolve, reject) => {
223
+ setTimeout(() => {
224
+ reject(new Error(`请求超时: ${key}`))
225
+ }, this.requestTimeout)
226
+ })
227
+
228
+ try {
229
+ await Promise.race([this.locks.get(key), timeoutPromise])
230
+ return this.getByWeb(key, url, params, callback, processFun)
231
+ } catch (error) {
232
+ console.error(`[getByWeb] 等待锁期间出错或超时: ${error.message}`)
233
+ this.locks.delete(key)
234
+ }
235
+ }
236
+
237
+ const lockPromise = (async () => {
238
+ try {
239
+ // 首先检查内存缓存
240
+ if (USE_MEMORY_CACHE && MEMORY_CACHE.has(key)) {
241
+ const cachedData = MEMORY_CACHE.get(key)
242
+ callback(cachedData)
243
+ return
244
+ }
245
+
246
+ // 再检查IndexedDB缓存
247
+ const data = DB_CONFIG.NAME === LIULI_WEB_DB_NAME ? undefined : await this.getData(key)
248
+
249
+ if (data && data.ERROR) {
250
+ console.error(`获取配置失败:` + data.ERROR)
251
+ }
252
+
253
+ if (!data && url) {
254
+ // 缓存未命中,请求网络数据
255
+ let res
256
+ try {
257
+ res = await post(url, params)
258
+ } catch (e) {
259
+ res = {
260
+ ERROR: e
261
+ }
262
+ }
263
+ const processedData = processFun ? processFun(res) : res
264
+
265
+ // 同时保存到内存缓存
266
+ if (USE_MEMORY_CACHE) {
267
+ MEMORY_CACHE.set(key, processedData)
268
+ }
269
+
270
+ // 生产环境或非移动配置时保存到IndexedDB
271
+ if (process.env.NODE_ENV === 'production' || key !== 'webMobileConfig') {
272
+ await this.add(key, processedData)
273
+ }
274
+
275
+ callback(processedData)
276
+ } else {
277
+ // 使用缓存数据
278
+ if (USE_MEMORY_CACHE && data) {
279
+ MEMORY_CACHE.set(key, data)
280
+ }
281
+ callback(data)
282
+ }
283
+ } catch (error) {
284
+ console.error(`[getByWeb] 获取数据失败`, error)
285
+
286
+ // IndexedDB操作失败时切换到备用方案
287
+ if (error.name === 'InvalidStateError' || error.message?.includes('database') || error.message?.includes('transaction')) {
288
+ console.error(`[getByWeb] 数据库操作失败,标记为不健康`)
289
+ IS_DB_HEALTHY = false
290
+
291
+ // 使用备用方案获取数据
292
+ return this.getByWebWithoutDB(key, url, params, callback, processFun)
293
+ }
294
+
295
+ if (process.env.NODE_ENV === 'production' && key !== 'webMobileConfig') {
296
+ await this.add(key, null)
297
+ }
298
+ callback(null)
299
+ }
300
+ })()
301
+
302
+ this.locks.set(key, lockPromise)
303
+
304
+ try {
305
+ const timeoutPromise = new Promise((resolve, reject) => {
306
+ setTimeout(() => {
307
+ reject(new Error(`操作超时: ${key}`))
308
+ }, this.requestTimeout)
309
+ })
310
+
311
+ await Promise.race([this.locks.get(key), timeoutPromise])
312
+ } catch (error) {
313
+ console.error(`[getByWeb] 执行期间出错或超时: ${error.message}`)
314
+ } finally {
315
+ this.locks.delete(key)
316
+ }
317
+ }
318
+
319
+ // 备用方法:不使用IndexedDB,直接使用内存缓存和API
320
+ async getByWebWithoutDB (key, url, params, callback, processFun) {
321
+ // 首先检查内存缓存
322
+ if (USE_MEMORY_CACHE && MEMORY_CACHE.has(key)) {
323
+ const cachedData = MEMORY_CACHE.get(key)
324
+ callback(cachedData)
325
+ return
326
+ }
327
+
328
+ // 无URL则无法获取数据
329
+ if (!url) {
330
+ callback(null)
331
+ return
332
+ }
333
+
334
+ // 直接通过API获取数据
335
+ try {
336
+ const res = await post(url, params)
337
+ const processedData = processFun ? processFun(res) : res
338
+
339
+ // 保存到内存缓存
340
+ if (USE_MEMORY_CACHE) {
341
+ MEMORY_CACHE.set(key, processedData)
342
+ }
343
+
344
+ callback(processedData)
345
+ } catch (error) {
346
+ console.error(`[getByWebWithoutDB] 获取数据失败: ${error.message}`)
347
+ callback(null)
348
+ }
349
+ }
350
+
351
+ async getData (key) {
352
+ return new Promise((resolve) => {
353
+ this.openDB((db) => {
354
+ if (!db) {
355
+ resolve(null)
356
+ return
357
+ }
358
+ const store = db.transaction(DB_CONFIG.STORE_NAME, 'readwrite').objectStore(DB_CONFIG.STORE_NAME)
359
+ const request = store.get(key)
360
+
361
+ request.onsuccess = (e) => {
362
+ resolve(e.target.result?.data)
363
+ }
364
+
365
+ request.onerror = () => {
366
+ resolve(null)
367
+ }
368
+ })
369
+ })
370
+ }
371
+
372
+ async add (key, data) {
373
+ this.openDB((db) => {
374
+ if (!db) return
375
+
376
+ const store = db.transaction(DB_CONFIG.STORE_NAME, 'readwrite').objectStore(DB_CONFIG.STORE_NAME)
377
+ const request = store.add({ key, data })
378
+
379
+ request.onerror = () => {
380
+ // 添加失败时尝试更新
381
+ this.update(key, data)
382
+ }
383
+ })
384
+ }
385
+
386
+ async update (key, data) {
387
+ this.openDB((db) => {
388
+ if (!db) return
389
+
390
+ const store = db.transaction(DB_CONFIG.STORE_NAME, 'readwrite').objectStore(DB_CONFIG.STORE_NAME)
391
+ store.put({ key, data })
392
+ })
393
+ }
394
+
395
+ async delete (key) {
396
+ this.openDB((db) => {
397
+ if (!db) return
398
+
399
+ const store = db.transaction(DB_CONFIG.STORE_NAME, 'readwrite').objectStore(DB_CONFIG.STORE_NAME)
400
+ store.delete(key)
401
+ })
402
+ }
403
+
404
+ async clear (callback) {
405
+ this.openDB((db) => {
406
+ if (!db) {
407
+ if (typeof callback === 'function') callback()
408
+ return
409
+ }
410
+
411
+ const store = db.transaction(DB_CONFIG.STORE_NAME, 'readwrite').objectStore(DB_CONFIG.STORE_NAME)
412
+ const request = store.clear()
413
+
414
+ request.onerror = () => {
415
+ if (typeof callback === 'function') callback()
416
+ }
417
+
418
+ request.onsuccess = () => {
419
+ if (typeof callback === 'function') callback()
420
+ }
421
+ })
422
+ }
423
+
424
+ clearCache () {
425
+ // 清除缓存并刷新页面
426
+ if (this.indexedDB) {
427
+ this.clear(() => {
428
+ location.reload()
429
+ })
430
+ } else {
431
+ location.reload()
432
+ }
433
+ }
434
+
435
+ async getAll () {
436
+ return new Promise((resolve, reject) => {
437
+ this.openDB((db) => {
438
+ if (!db) {
439
+ resolve([])
440
+ return
441
+ }
442
+
443
+ const store = db.transaction(DB_CONFIG.STORE_NAME, 'readonly').objectStore(DB_CONFIG.STORE_NAME)
444
+ const request = store.getAll()
445
+
446
+ request.onsuccess = (e) => {
447
+ resolve(e.target.result)
448
+ }
449
+
450
+ request.onerror = (e) => {
451
+ reject(e.target.error)
452
+ }
453
+ })
454
+ })
455
+ }
456
+
457
+ getAllLegacy (callback) {
458
+ this.openDB((res) => {
459
+ if (!res) {
460
+ callback(null, new Error('打开数据库失败'))
461
+ return
462
+ }
463
+
464
+ const store = res.transaction(DB_CONFIG.STORE_NAME, 'readonly').objectStore(DB_CONFIG.STORE_NAME)
465
+ const request = store.getAll()
466
+
467
+ request.onerror = (e) => {
468
+ callback(null, e.target.error)
469
+ }
470
+
471
+ request.onsuccess = (e) => {
472
+ callback(e.target.result)
473
+ }
474
+ })
475
+ }
476
+
477
+ async recreateDatabase () {
478
+ try {
479
+ if (this.db) {
480
+ this.db.close()
481
+ this.db = undefined
482
+ }
483
+
484
+ await new Promise((resolve, reject) => {
485
+ const deleteRequest = this.indexedDB.deleteDatabase(DB_CONFIG.NAME)
486
+
487
+ deleteRequest.onsuccess = () => {
488
+ resolve()
489
+ }
490
+
491
+ deleteRequest.onerror = (e) => {
492
+ reject(e.target.error)
493
+ }
494
+ })
495
+
496
+ DB_CONFIG.CURRENT_VERSION = DB_CONFIG.VERSION
497
+ this.db = await this.openDatabase()
498
+ return this.db
499
+ } catch (error) {
500
+ console.error('重新创建数据库失败:', error)
501
+ throw error
502
+ }
503
+ }
504
+
505
+ // 强制重建数据库的方法,带有超时保护
506
+ async forceRecreateDatabase () {
507
+ console.warn('[forceRecreateDatabase] 开始强制重建数据库')
508
+ try {
509
+ // 确保关闭所有连接
510
+ if (this.db) {
511
+ try {
512
+ this.db.close()
513
+ } catch (e) {
514
+ console.warn('[forceRecreateDatabase] 关闭现有连接出错')
515
+ }
516
+ this.db = undefined
517
+ }
518
+
519
+ // 清空锁防止死锁
520
+ this.locks.clear()
521
+
522
+ // 强制删除数据库,带超时保护
523
+ await new Promise((resolve) => {
524
+ const deleteRequest = this.indexedDB.deleteDatabase(DB_CONFIG.NAME)
525
+
526
+ const timeout = setTimeout(() => {
527
+ resolve() // 即使超时也继续执行
528
+ }, 3000)
529
+
530
+ deleteRequest.onsuccess = () => {
531
+ clearTimeout(timeout)
532
+ resolve()
533
+ }
534
+
535
+ deleteRequest.onerror = () => {
536
+ clearTimeout(timeout)
537
+ resolve() // 即使出错也继续执行
538
+ }
539
+ })
540
+
541
+ // 重置版本
542
+ DB_CONFIG.CURRENT_VERSION = DB_CONFIG.VERSION
543
+ } catch (error) {
544
+ console.error('[forceRecreateDatabase] 强制重建过程中出错:', error)
545
+ }
546
+ }
547
+ }
548
+
549
+ export const indexedDB = new IndexedDBManager()