af-mobile-client-vue3 1.3.30 → 1.3.32

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 (284) hide show
  1. package/.claude/settings.local.json +10 -0
  2. package/.cursorrules +60 -60
  3. package/.editorconfig +9 -9
  4. package/.env +10 -10
  5. package/.env.development +1 -1
  6. package/.env.production +1 -1
  7. package/.node-version +1 -1
  8. package/.vscode/extensions.json +12 -12
  9. package/.vscode/settings.json +68 -66
  10. package/CLAUDE.md +218 -189
  11. package/README.md +182 -182
  12. package/af-example-mobile-vue-web.iml +9 -9
  13. package/build/vite/index.ts +98 -98
  14. package/build/vite/optimize.ts +34 -34
  15. package/build/vite/vconsole.ts +47 -47
  16. package/commitlint.config.ts +32 -32
  17. package/compress.js +36 -36
  18. package/eslint.config.ts +31 -30
  19. package/index.html +23 -23
  20. package/mock/data.ts +20 -20
  21. package/mock/index.ts +7 -7
  22. package/mock/modules/prose.mock.ts +13 -13
  23. package/mock/modules/user.mock.ts +95 -152
  24. package/mock/util.ts +19 -19
  25. package/netlify.toml +12 -12
  26. package/package.json +135 -114
  27. package/postcss.config.ts +27 -27
  28. package/public/favicon.svg +4 -4
  29. package/public/safari-pinned-tab.svg +4 -4
  30. package/scripts/verifyCommit.js +19 -19
  31. package/src/App.vue +79 -79
  32. package/src/api/auth/index.ts +77 -0
  33. package/src/api/auth/types.ts +200 -0
  34. package/src/api/mock/index.ts +30 -30
  35. package/src/api/user/index.ts +40 -40
  36. package/src/assets/img/user/login/background-shadow-1.svg +20 -20
  37. package/src/assets/img/user/login/logo-background.svg +20 -20
  38. package/src/bootstrap.ts +26 -26
  39. package/src/components/core/BeautifulLoading/index.vue +52 -52
  40. package/src/components/core/ImageUploader/index.vue +251 -251
  41. package/src/components/core/NavBar/index.vue +53 -53
  42. package/src/components/core/Tabbar/index.vue +32 -32
  43. package/src/components/core/Uploader/index.vue +124 -124
  44. package/src/components/core/XGridDropOption/index.vue +154 -154
  45. package/src/components/core/XMultiSelect/index.vue +183 -183
  46. package/src/components/core/XSelect/index.vue +149 -149
  47. package/src/components/data/CardContainer/CardContainer.vue +118 -118
  48. package/src/components/data/CardContainer/CardHeader.vue +99 -99
  49. package/src/components/data/InfoDisplay/index.vue +132 -132
  50. package/src/components/data/UserDetail/api.ts +24 -24
  51. package/src/components/data/UserDetail/index.vue +620 -620
  52. package/src/components/data/UserDetail/recordEntries.ts +159 -159
  53. package/src/components/data/UserDetail/types.ts +26 -26
  54. package/src/components/data/XBadge/index.vue +82 -82
  55. package/src/components/data/XCellDetail/index.vue +105 -105
  56. package/src/components/data/XCellList/XCellList.md +432 -432
  57. package/src/components/data/XCellList/index.vue +1436 -1436
  58. package/src/components/data/XCellListFilter/QrScanner/index.vue +207 -207
  59. package/src/components/data/XCellListFilter/QrScanner/startScanAnimation.ts +53 -53
  60. package/src/components/data/XCellListFilter/VpnRecognition/index.vue +119 -119
  61. package/src/components/data/XCellListFilter/index.vue +705 -705
  62. package/src/components/data/XForm/index.vue +659 -659
  63. package/src/components/data/XFormGroup/doc/DeviceForm.vue +122 -122
  64. package/src/components/data/XFormGroup/doc/FormGroupDemo.vue +56 -56
  65. package/src/components/data/XFormGroup/doc/README.md +286 -286
  66. package/src/components/data/XFormGroup/doc/UserForm.vue +102 -102
  67. package/src/components/data/XFormGroup/index.vue +240 -240
  68. package/src/components/data/XFormItem/index.vue +1310 -1310
  69. package/src/components/data/XOlMap/README.md +227 -227
  70. package/src/components/data/XOlMap/XLocationPicker/index.vue +226 -226
  71. package/src/components/data/XOlMap/index.vue +1490 -1490
  72. package/src/components/data/XOlMap/types.ts +149 -149
  73. package/src/components/data/XOlMap/utils/{wgs84ToGcj02.js → wgs84ToGcj02.ts} +171 -154
  74. package/src/components/data/XReportForm/DateTimeSecondsPicker.vue +208 -208
  75. package/src/components/data/XReportForm/XReportFormJsonRender.vue +220 -220
  76. package/src/components/data/XReportForm/index.vue +1393 -1393
  77. package/src/components/data/XReportGrid/XAddReport/XAddReport.vue +198 -198
  78. package/src/components/data/XReportGrid/XAddReport/index.js +3 -3
  79. package/src/components/data/XReportGrid/XAddReport/index.md +53 -53
  80. package/src/components/data/XReportGrid/XAddReport/index.ts +10 -10
  81. package/src/components/data/XReportGrid/XReport.vue +960 -960
  82. package/src/components/data/XReportGrid/XReportDemo.vue +33 -33
  83. package/src/components/data/XReportGrid/XReportDesign.vue +597 -597
  84. package/src/components/data/XReportGrid/XReportDrawer/XReportDrawer.vue +148 -148
  85. package/src/components/data/XReportGrid/XReportDrawer/index.js +3 -3
  86. package/src/components/data/XReportGrid/XReportDrawer/index.ts +10 -10
  87. package/src/components/data/XReportGrid/XReportJsonRender.vue +399 -399
  88. package/src/components/data/XReportGrid/XReportTrGroup.vue +592 -592
  89. package/src/components/data/XReportGrid/index.md +46 -46
  90. package/src/components/data/XReportGrid/print.js +184 -184
  91. package/src/components/data/XSignature/index.vue +284 -284
  92. package/src/components/data/XTag/index.vue +10 -10
  93. package/src/components/layout/NormalDataLayout/index.vue +69 -69
  94. package/src/components/layout/TabBarLayout/index.vue +40 -40
  95. package/src/composables/dark.ts +5 -5
  96. package/src/config/routes.ts +9 -9
  97. package/src/constants/index.ts +2 -2
  98. package/src/enums/requestEnum.ts +25 -25
  99. package/src/expression/ExpressionRunner.ts +28 -28
  100. package/src/expression/TestExpression.ts +510 -510
  101. package/src/expression/core/Delegate.ts +116 -116
  102. package/src/expression/core/Expression.ts +1359 -1359
  103. package/src/expression/core/Program.ts +985 -985
  104. package/src/expression/core/Token.ts +29 -29
  105. package/src/expression/enums/ExpressionType.ts +81 -81
  106. package/src/expression/enums/TokenType.ts +11 -11
  107. package/src/expression/exception/BreakWayException.ts +2 -2
  108. package/src/expression/exception/ContinueWayException.ts +2 -2
  109. package/src/expression/exception/ExpressionException.ts +29 -29
  110. package/src/expression/exception/ReturnWayException.ts +14 -14
  111. package/src/expression/exception/ServiceException.ts +22 -22
  112. package/src/expression/instances/JSONArray.ts +52 -52
  113. package/src/expression/instances/JSONObject.ts +118 -118
  114. package/src/expression/instances/LogicConsole.ts +31 -31
  115. package/src/font-style/font.css +4 -4
  116. package/src/hooks/useBoolean.ts +26 -26
  117. package/src/hooks/useCommon.ts +9 -9
  118. package/src/hooks/useLoading.ts +16 -16
  119. package/src/hooks/useLogin.ts +97 -97
  120. package/src/icons/svg/check-in.svg +32 -32
  121. package/src/icons/svg/dark.svg +4 -4
  122. package/src/icons/svg/github.svg +4 -4
  123. package/src/icons/svg/light.svg +4 -4
  124. package/src/icons/svg/link.svg +4 -4
  125. package/src/icons/svgo.yml +22 -22
  126. package/src/index.ts +4 -0
  127. package/src/layout/GridView/index.vue +16 -16
  128. package/src/layout/PageLayout.vue +9 -9
  129. package/src/layout/SingleLayout.vue +9 -9
  130. package/src/locales/en-US.json +128 -128
  131. package/src/locales/zh-CN.json +128 -128
  132. package/src/logic/LogicRunner.ts +67 -67
  133. package/src/logic/TestLogic.ts +13 -13
  134. package/src/logic/plugins/common/DateTools.ts +35 -35
  135. package/src/logic/plugins/common/VueTools.ts +30 -30
  136. package/src/logic/plugins/index.ts +7 -7
  137. package/src/main.ts +44 -44
  138. package/src/plugins/AppData.ts +38 -38
  139. package/src/plugins/GetLoginInfoService.ts +10 -10
  140. package/src/plugins/collectIcons.ts +10 -10
  141. package/src/plugins/index.ts +11 -11
  142. package/src/router/README.md +8 -8
  143. package/src/router/external-routes.ts +60 -0
  144. package/src/router/guards.ts +131 -59
  145. package/src/router/index.ts +35 -35
  146. package/src/router/invoiceRoutes.ts +33 -33
  147. package/src/router/routes.ts +426 -347
  148. package/src/services/api/Login.ts +6 -6
  149. package/src/services/api/common.ts +109 -109
  150. package/src/services/api/index.ts +7 -7
  151. package/src/services/api/manage.ts +8 -8
  152. package/src/services/api/search.ts +16 -16
  153. package/src/services/api/user.ts +17 -17
  154. package/src/services/restTools.ts +56 -56
  155. package/src/services/v3Api.ts +147 -147
  156. package/src/stores/index.ts +13 -13
  157. package/src/stores/modules/counter.ts +19 -19
  158. package/src/stores/modules/homeApp.ts +55 -55
  159. package/src/stores/modules/routeCache.ts +22 -23
  160. package/src/stores/modules/setting.ts +87 -87
  161. package/src/stores/modules/user.ts +326 -235
  162. package/src/stores/mutation-type.ts +12 -7
  163. package/src/styles/app.less +36 -36
  164. package/src/styles/login.less +109 -109
  165. package/src/styles/var.less +25 -25
  166. package/src/types/auth.ts +85 -0
  167. package/src/types/env.d.ts +16 -16
  168. package/src/types/platform.ts +194 -0
  169. package/src/types/settings.ts +1 -1
  170. package/src/types/vue-router.d.ts +13 -9
  171. package/src/utils/Storage.ts +124 -124
  172. package/src/utils/authority-utils.ts +84 -84
  173. package/src/utils/common.ts +41 -41
  174. package/src/utils/crypto.ts +39 -39
  175. package/src/utils/dataUtil.ts +42 -42
  176. package/src/utils/dictUtil.ts +52 -52
  177. package/src/utils/http/index.ts +201 -199
  178. package/src/utils/i18n.ts +72 -72
  179. package/src/utils/indexedDB.ts +195 -195
  180. package/src/utils/inline-px-to-vw.ts +28 -28
  181. package/src/utils/mobileUtil.ts +33 -34
  182. package/src/utils/platform-auth.ts +134 -0
  183. package/src/utils/progress.ts +19 -19
  184. package/src/utils/routerUtil.ts +271 -271
  185. package/src/utils/runEvalFunction.ts +13 -13
  186. package/src/utils/secureStorage.ts +70 -71
  187. package/src/utils/set-page-title.ts +5 -5
  188. package/src/utils/validate.ts +6 -6
  189. package/src/views/chat/index.vue +153 -153
  190. package/src/views/common/Forbidden.vue +97 -0
  191. package/src/views/common/LoadError.vue +63 -63
  192. package/src/views/common/NotFound.vue +67 -67
  193. package/src/views/component/EvaluateRecordView/index.vue +40 -40
  194. package/src/views/component/IconifyView/index.vue +504 -504
  195. package/src/views/component/UserDetailView/UserDetailPage.vue +77 -77
  196. package/src/views/component/UserDetailView/index.vue +234 -234
  197. package/src/views/component/XCellDetailView/index.vue +217 -217
  198. package/src/views/component/XCellListView/index.vue +108 -129
  199. package/src/views/component/XFormAppraiseView/index.vue +174 -174
  200. package/src/views/component/XFormGroupView/index.vue +78 -82
  201. package/src/views/component/XFormView/index.vue +27 -27
  202. package/src/views/component/XOlMapView/XLocationPicker/index.vue +118 -118
  203. package/src/views/component/XOlMapView/index.vue +434 -434
  204. package/src/views/component/XOlMapView/testData.ts +64 -64
  205. package/src/views/component/XReportFormIframeView/index.vue +47 -47
  206. package/src/views/component/XReportFormView/index.vue +13 -13
  207. package/src/views/component/XReportGridView/index.vue +17 -17
  208. package/src/views/component/XRequestView/index.vue +234 -234
  209. package/src/views/component/XSignatureView/index.vue +50 -50
  210. package/src/views/component/index.vue +181 -181
  211. package/src/views/component/menu.vue +117 -117
  212. package/src/views/component/notice.vue +46 -46
  213. package/src/views/component/topNav.vue +36 -36
  214. package/src/views/external/index.vue +152 -0
  215. package/src/views/invoiceShow/index.vue +61 -61
  216. package/src/views/loading/AuthLoading.vue +345 -0
  217. package/src/views/user/login/ForgetPasswordForm.vue +94 -94
  218. package/src/views/user/login/LoginForm.vue +350 -347
  219. package/src/views/user/login/LoginTitle.vue +76 -76
  220. package/src/views/user/login/LoginWave.vue +109 -109
  221. package/src/views/user/login/index.vue +22 -22
  222. package/src/views/user/my/comm/ModifyPassword.vue +346 -346
  223. package/src/views/user/my/index.vue +507 -507
  224. package/src/views/user/register/index.vue +952 -952
  225. package/src/views/userRecords/AbnormalAlarmRecords.vue +21 -21
  226. package/src/views/userRecords/CardReplacementRecords.vue +21 -21
  227. package/src/views/userRecords/ChangeRecords.vue +19 -19
  228. package/src/views/userRecords/CommandViewRecords.vue +20 -20
  229. package/src/views/userRecords/GasCompensationRecords.vue +20 -20
  230. package/src/views/userRecords/InstrumentCollectionRecords.vue +21 -21
  231. package/src/views/userRecords/MeterRecords.vue +20 -20
  232. package/src/views/userRecords/OperateRecords.vue +51 -51
  233. package/src/views/userRecords/OtherChargeRecords.vue +19 -19
  234. package/src/views/userRecords/PaymentRecords.vue +28 -28
  235. package/src/views/userRecords/PriceAdjustmentRecords.vue +19 -19
  236. package/src/views/userRecords/ReplacementRecords.vue +19 -19
  237. package/src/views/userRecords/SafetyRecords.vue +19 -19
  238. package/src/views/userRecords/TransactionRecords.vue +21 -21
  239. package/src/views/userRecords/TransferRecords.vue +19 -19
  240. package/src/views/userRecords/operateRecordDetail/index.vue +316 -316
  241. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AddUserDetail.vue +124 -124
  242. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AdvanceDeliveryDetail.vue +88 -88
  243. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsCancelDetail.vue +205 -205
  244. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsDetail.vue +192 -192
  245. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankDkDetail.vue +192 -192
  246. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankPayDetail.vue +192 -192
  247. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BlacklistDetail.vue +153 -153
  248. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CancellationDetail.vue +101 -101
  249. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterCancelDetail.vue +127 -127
  250. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterDetail.vue +153 -153
  251. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardOverUserDetail.vue +153 -153
  252. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterCancelDetail.vue +166 -166
  253. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterDetail.vue +205 -205
  254. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/DisableManageDetail.vue +127 -127
  255. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/EnableManageDetail.vue +114 -114
  256. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FaZheChangeDetail.vue +124 -124
  257. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FeeDeductionDetail.vue +153 -153
  258. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/GasPriceChangeDetail.vue +126 -126
  259. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/InputtorChangeDetail.vue +126 -126
  260. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterCancelDetail.vue +114 -114
  261. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterDetail.vue +127 -127
  262. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotOpenDetail.vue +88 -88
  263. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineCardDetail.vue +101 -101
  264. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterCancelDetail.vue +218 -218
  265. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterDetail.vue +153 -153
  266. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OffGasAddGasDetail.vue +140 -140
  267. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeCancelDetail.vue +127 -127
  268. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeDetail.vue +114 -114
  269. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OverUserChangeDetail.vue +127 -127
  270. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReBillDetail.vue +127 -127
  271. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/RefundDetail.vue +114 -114
  272. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageCancelDetail.vue +127 -127
  273. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageDetail.vue +114 -114
  274. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/SaleCardGasDetail.vue +140 -140
  275. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageCancelDetail.vue +152 -152
  276. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageDetail.vue +178 -178
  277. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/UserChangeDetail.vue +123 -123
  278. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/WechatPayDetail.vue +192 -192
  279. package/src/views/userRecords/types.ts +66 -66
  280. package/tsconfig.json +39 -39
  281. package/uno.config.ts +82 -82
  282. package/vite.config.ts +119 -118
  283. package/src/router/types.ts +0 -7
  284. package/src/utils/wechatUtil.ts +0 -9
@@ -1,4 +1,4 @@
1
- <svg width="683" height="683" viewBox="0 0 683 683" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M297.6 104.8C291.6 107.867 288.667 113.733 289.2 122.133C289.2 123.6 296.533 137.2 305.333 152.4L321.333 180L296.533 222.933C282.8 246.667 266 275.867 258.933 288C251.867 300.133 244.267 313.333 242 317.333C239.733 321.333 219.6 356.133 197.333 394.667C175.067 433.2 156 466.133 155.067 468C154 469.867 151.733 473.733 150 476.667C148.267 479.6 145.733 484.133 144.267 486.667C141.733 491.333 117.2 533.867 108.4 548.667C100 562.8 101.333 572.4 112.4 578.267C116.267 580.267 135.2 580.4 341.333 580.4C588.667 580.4 570.533 581.067 577.2 572.533C582.133 566.267 580.933 560.933 570.533 542.667C565.333 533.467 559.867 523.867 558.4 521.333C554.933 515.333 526.933 466.8 496.4 414C483.2 391.2 470.933 370 469.067 366.667C467.2 363.333 458.933 348.933 450.667 334.667C437.867 312.667 422.667 286.267 413.333 270C412 267.733 400.933 248.533 388.667 227.333C376.4 206 365.2 186.667 363.867 184.267L361.333 180L375.867 154.933C394.533 122.667 393.6 124.4 393.6 118.533C393.467 109.333 385.867 102.667 375.467 102.667C367.733 102.667 363.733 106.667 352.533 125.867C346.8 135.867 341.6 144 341.2 144C340.667 144 339.467 142.4 338.533 140.267C332.4 128.267 319.067 107.467 316.4 105.733C311.733 102.667 302.8 102.133 297.6 104.8ZM349.333 228.267C353.333 235.067 357.867 243.067 359.467 246C361.067 248.933 368.533 261.867 376 274.667C383.467 287.467 390.933 300.4 392.667 303.333C394.267 306.267 400 316.133 405.333 325.333C410.667 334.533 417.467 346.133 420.4 351.333C423.333 356.4 437.2 380.4 451.333 404.667C465.333 428.8 478.4 451.333 480.267 454.667C482.133 458 490.133 471.733 498 485.333C506 498.933 513.467 511.733 514.667 514C522.933 528.267 531.067 542.133 532 543.333C532.8 544.267 513.333 544.667 474.267 544.533L415.467 544.4L415.333 502.533C415.2 466.133 414.8 459.733 412.8 453.333C406.667 434.933 399.733 424.667 385.867 414.4C377.467 408.133 367.333 402.8 363.067 402.533C362.8 402.4 359.733 401.733 356.267 400.667C343.6 397.333 320.133 400.4 308 406.933C287.6 417.867 272.933 437.333 268.533 458.933C268 461.333 267.6 481.6 267.467 503.867V544.495L415.467 544.4L208.4 544.533C169.333 544.667 149.867 544.267 150.667 543.333C151.6 542.133 160.933 526.4 168.667 512.667C170.4 509.733 185.733 483.333 202.667 454C219.733 424.667 234.8 398.533 236.267 396C246.133 378.8 265.733 345.067 272.8 332.933C277.467 325.067 281.333 318.4 281.333 318.133C281.333 317.733 284.267 312.8 287.867 306.933C291.467 301.067 294.533 295.733 294.8 295.067C296.133 291.6 340.667 216 341.333 216C341.733 216 345.333 221.6 349.333 228.267Z" fill="black"/>
3
- <path d="M415.333 502.533L415.467 544.4L267.467 544.495V503.867C267.6 481.6 268 461.333 268.533 458.933C272.933 437.333 287.6 417.867 308 406.933C320.133 400.4 343.6 397.333 356.267 400.667C359.733 401.733 362.8 402.4 363.067 402.533C367.333 402.8 377.467 408.133 385.867 414.4C399.733 424.667 406.667 434.933 412.8 453.333C414.8 459.733 415.2 466.133 415.333 502.533Z" fill="#FB4D31"/>
4
- </svg>
1
+ <svg width="683" height="683" viewBox="0 0 683 683" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M297.6 104.8C291.6 107.867 288.667 113.733 289.2 122.133C289.2 123.6 296.533 137.2 305.333 152.4L321.333 180L296.533 222.933C282.8 246.667 266 275.867 258.933 288C251.867 300.133 244.267 313.333 242 317.333C239.733 321.333 219.6 356.133 197.333 394.667C175.067 433.2 156 466.133 155.067 468C154 469.867 151.733 473.733 150 476.667C148.267 479.6 145.733 484.133 144.267 486.667C141.733 491.333 117.2 533.867 108.4 548.667C100 562.8 101.333 572.4 112.4 578.267C116.267 580.267 135.2 580.4 341.333 580.4C588.667 580.4 570.533 581.067 577.2 572.533C582.133 566.267 580.933 560.933 570.533 542.667C565.333 533.467 559.867 523.867 558.4 521.333C554.933 515.333 526.933 466.8 496.4 414C483.2 391.2 470.933 370 469.067 366.667C467.2 363.333 458.933 348.933 450.667 334.667C437.867 312.667 422.667 286.267 413.333 270C412 267.733 400.933 248.533 388.667 227.333C376.4 206 365.2 186.667 363.867 184.267L361.333 180L375.867 154.933C394.533 122.667 393.6 124.4 393.6 118.533C393.467 109.333 385.867 102.667 375.467 102.667C367.733 102.667 363.733 106.667 352.533 125.867C346.8 135.867 341.6 144 341.2 144C340.667 144 339.467 142.4 338.533 140.267C332.4 128.267 319.067 107.467 316.4 105.733C311.733 102.667 302.8 102.133 297.6 104.8ZM349.333 228.267C353.333 235.067 357.867 243.067 359.467 246C361.067 248.933 368.533 261.867 376 274.667C383.467 287.467 390.933 300.4 392.667 303.333C394.267 306.267 400 316.133 405.333 325.333C410.667 334.533 417.467 346.133 420.4 351.333C423.333 356.4 437.2 380.4 451.333 404.667C465.333 428.8 478.4 451.333 480.267 454.667C482.133 458 490.133 471.733 498 485.333C506 498.933 513.467 511.733 514.667 514C522.933 528.267 531.067 542.133 532 543.333C532.8 544.267 513.333 544.667 474.267 544.533L415.467 544.4L415.333 502.533C415.2 466.133 414.8 459.733 412.8 453.333C406.667 434.933 399.733 424.667 385.867 414.4C377.467 408.133 367.333 402.8 363.067 402.533C362.8 402.4 359.733 401.733 356.267 400.667C343.6 397.333 320.133 400.4 308 406.933C287.6 417.867 272.933 437.333 268.533 458.933C268 461.333 267.6 481.6 267.467 503.867V544.495L415.467 544.4L208.4 544.533C169.333 544.667 149.867 544.267 150.667 543.333C151.6 542.133 160.933 526.4 168.667 512.667C170.4 509.733 185.733 483.333 202.667 454C219.733 424.667 234.8 398.533 236.267 396C246.133 378.8 265.733 345.067 272.8 332.933C277.467 325.067 281.333 318.4 281.333 318.133C281.333 317.733 284.267 312.8 287.867 306.933C291.467 301.067 294.533 295.733 294.8 295.067C296.133 291.6 340.667 216 341.333 216C341.733 216 345.333 221.6 349.333 228.267Z" fill="black"/>
3
+ <path d="M415.333 502.533L415.467 544.4L267.467 544.495V503.867C267.6 481.6 268 461.333 268.533 458.933C272.933 437.333 287.6 417.867 308 406.933C320.133 400.4 343.6 397.333 356.267 400.667C359.733 401.733 362.8 402.4 363.067 402.533C367.333 402.8 377.467 408.133 385.867 414.4C399.733 424.667 406.667 434.933 412.8 453.333C414.8 459.733 415.2 466.133 415.333 502.533Z" fill="#FB4D31"/>
4
+ </svg>
@@ -1,19 +1,19 @@
1
- import fs from 'node:fs'
2
-
3
- // import process from 'node:process'
4
-
5
- const msg = fs.readFileSync('.git/COMMIT_EDITMSG', 'utf-8').trim()
6
-
7
- const commitRE = /^(?:revert: )?(?:feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|release)(?:\(.+\))?: .{1,50}/
8
- // const mergeRe = /^(Merge pull request|Merge branch)/
9
-
10
- if (!commitRE.test(msg)) {
11
- // if (!mergeRe.test(msg)) {
12
- // console.log('git commit unpass')
13
- // console.error('git commit error, needs title(scope): desc')
14
- // process.exit(1)
15
- // }
16
- }
17
- else {
18
- console.log('git commit pass')
19
- }
1
+ import fs from 'node:fs'
2
+
3
+ // import process from 'node:process'
4
+
5
+ const msg = fs.readFileSync('.git/COMMIT_EDITMSG', 'utf-8').trim()
6
+
7
+ const commitRE = /^(?:revert: )?(?:feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|release)(?:\(.+\))?: .{1,50}/
8
+ // const mergeRe = /^(Merge pull request|Merge branch)/
9
+
10
+ if (!commitRE.test(msg)) {
11
+ // if (!mergeRe.test(msg)) {
12
+ // console.log('git commit unpass')
13
+ // console.error('git commit error, needs title(scope): desc')
14
+ // process.exit(1)
15
+ // }
16
+ }
17
+ else {
18
+ console.log('git commit pass')
19
+ }
package/src/App.vue CHANGED
@@ -1,79 +1,79 @@
1
- <script setup lang="ts">
2
- import type { ConfigProviderThemeVars } from 'vant'
3
- import NavBar from '@af-mobile-client-vue3/components/core/NavBar/index.vue'
4
- import Tabbar from '@af-mobile-client-vue3/components/core/Tabbar/index.vue'
5
- import { isDark, preferredDark } from '@af-mobile-client-vue3/composables/dark'
6
- import useRouteCacheStore from '@af-mobile-client-vue3/stores/modules/routeCache'
7
- import { useHead } from '@unhead/vue'
8
- import {
9
- ConfigProvider as VanConfigProvider,
10
- } from 'vant/es'
11
- import { computed, reactive } from 'vue'
12
- import { appDescription, appName } from './constants'
13
-
14
- useHead({
15
- title: appName,
16
- meta: [
17
- {
18
- name: 'description',
19
- content: appDescription,
20
- },
21
- {
22
- name: 'theme-color',
23
- content: () => isDark.value ? '#00aba9' : '#ffffff',
24
- },
25
- ],
26
- link: [
27
- {
28
- rel: 'icon',
29
- type: 'image/svg+xml',
30
- href: () => preferredDark.value ? '/favicon-dark.svg' : '/favicon.svg',
31
- },
32
- ],
33
- })
34
-
35
- const routeCacheStore = useRouteCacheStore()
36
-
37
- const keepAliveRouteNames = computed(() => {
38
- return routeCacheStore.routeCaches as string[]
39
- })
40
-
41
- const mode = computed(() => {
42
- return isDark.value ? 'dark' : 'light'
43
- })
44
-
45
- const themeVars: ConfigProviderThemeVars = reactive({
46
- baseFont: 'PingFangSC-Regular-woff2, serif',
47
- })
48
- </script>
49
-
50
- <template>
51
- <VanConfigProvider :theme="mode" :theme-vars="themeVars" theme-vars-scope="global">
52
- <NavBar />
53
- <router-view v-slot="{ Component }">
54
- <section class="app-wrapper">
55
- <keep-alive :include="keepAliveRouteNames">
56
- <component :is="Component" :key="$route.fullPath" />
57
- </keep-alive>
58
- </section>
59
- </router-view>
60
- <Tabbar />
61
- </VanConfigProvider>
62
- </template>
63
-
64
- <style>
65
- @import './font-style/font.css';
66
- input[type='password']::-ms-reveal {
67
- display: none;
68
- }
69
- input[type='password']::-ms-clear {
70
- display: none;
71
- }
72
- </style>
73
-
74
- <style scoped>
75
- .app-wrapper {
76
- width: 100%;
77
- position: relative;
78
- }
79
- </style>
1
+ <script setup lang="ts">
2
+ import type { ConfigProviderThemeVars } from 'vant'
3
+ import NavBar from '@af-mobile-client-vue3/components/core/NavBar/index.vue'
4
+ import Tabbar from '@af-mobile-client-vue3/components/core/Tabbar/index.vue'
5
+ import { isDark, preferredDark } from '@af-mobile-client-vue3/composables/dark'
6
+ import useRouteCacheStore from '@af-mobile-client-vue3/stores/modules/routeCache'
7
+ import { useHead } from '@unhead/vue'
8
+ import {
9
+ ConfigProvider as VanConfigProvider,
10
+ } from 'vant/es'
11
+ import { computed, reactive } from 'vue'
12
+ import { appDescription, appName } from './constants'
13
+
14
+ useHead({
15
+ title: appName,
16
+ meta: [
17
+ {
18
+ name: 'description',
19
+ content: appDescription,
20
+ },
21
+ {
22
+ name: 'theme-color',
23
+ content: () => isDark.value ? '#00aba9' : '#ffffff',
24
+ },
25
+ ],
26
+ link: [
27
+ {
28
+ rel: 'icon',
29
+ type: 'image/svg+xml',
30
+ href: () => preferredDark.value ? '/favicon-dark.svg' : '/favicon.svg',
31
+ },
32
+ ],
33
+ })
34
+
35
+ const routeCacheStore = useRouteCacheStore()
36
+
37
+ const keepAliveRouteNames = computed(() => {
38
+ return routeCacheStore.routeCaches as string[]
39
+ })
40
+
41
+ const mode = computed(() => {
42
+ return isDark.value ? 'dark' : 'light'
43
+ })
44
+
45
+ const themeVars: ConfigProviderThemeVars = reactive({
46
+ baseFont: 'PingFangSC-Regular-woff2, serif',
47
+ })
48
+ </script>
49
+
50
+ <template>
51
+ <VanConfigProvider :theme="mode" :theme-vars="themeVars" theme-vars-scope="global">
52
+ <NavBar />
53
+ <router-view v-slot="{ Component }">
54
+ <section class="app-wrapper">
55
+ <keep-alive :include="keepAliveRouteNames">
56
+ <component :is="Component" :key="$route.fullPath" />
57
+ </keep-alive>
58
+ </section>
59
+ </router-view>
60
+ <Tabbar />
61
+ </VanConfigProvider>
62
+ </template>
63
+
64
+ <style>
65
+ @import './font-style/font.css';
66
+ input[type='password']::-ms-reveal {
67
+ display: none;
68
+ }
69
+ input[type='password']::-ms-clear {
70
+ display: none;
71
+ }
72
+ </style>
73
+
74
+ <style scoped>
75
+ .app-wrapper {
76
+ width: 100%;
77
+ position: relative;
78
+ }
79
+ </style>
@@ -0,0 +1,77 @@
1
+ /**
2
+ * 统一认证API接口
3
+ */
4
+
5
+ import type { LoginResponse, WechatOfficialLoginRequest } from '@af-mobile-client-vue3/types/auth'
6
+ import type {
7
+ ExternalLoginParams,
8
+ LoginParams,
9
+ LoginResponseData,
10
+ UnifiedLoginParams,
11
+ UsernamePasswordLoginParams,
12
+ } from './types'
13
+ import { doLogout } from '@af-mobile-client-vue3/api/user'
14
+ import { loginApi } from '@af-mobile-client-vue3/services/api/Login'
15
+
16
+ /**
17
+ * 外部用户认证相关API
18
+ */
19
+
20
+ import { post } from '@af-mobile-client-vue3/services/restTools'
21
+
22
+ /**
23
+ * 统一登录接口
24
+ * 支持用户名密码、微信、第三方平台等多种登录方式
25
+ */
26
+ export function unifiedLogin(params: LoginParams): Promise<LoginResponseData> {
27
+ return post(loginApi.Login, params)
28
+ }
29
+
30
+ /**
31
+ * 外部用户登录
32
+ */
33
+ export function loginExternal(params: ExternalLoginParams): Promise<LoginResponseData> {
34
+ return post(loginApi.Login, params)
35
+ }
36
+
37
+ /**
38
+ * 传统用户名密码登录
39
+ */
40
+ export function loginWithPassword(params: UsernamePasswordLoginParams): Promise<LoginResponseData> {
41
+ return post(loginApi.Login, params)
42
+ }
43
+
44
+ /**
45
+ * 统一认证登录
46
+ */
47
+ export function loginUnified(params: UnifiedLoginParams): Promise<LoginResponseData> {
48
+ return post(loginApi.Login, params)
49
+ }
50
+
51
+ /**
52
+ * 微信公众号外部用户登录
53
+ * @param data 登录参数
54
+ * @returns 登录响应
55
+ */
56
+ export function loginWithWechatOfficial(data: WechatOfficialLoginRequest): Promise<LoginResponse> {
57
+ return post(loginApi.Login, data)
58
+ }
59
+
60
+ /**
61
+ * 外部用户登录(通用)
62
+ * @param data 登录参数
63
+ * @returns 登录响应
64
+ */
65
+ export function externalLogin(data: any): Promise<LoginResponse> {
66
+ return post(loginApi.Login, data)
67
+ }
68
+
69
+ /**
70
+ * 用户登出
71
+ */
72
+ export function logout(): void {
73
+ doLogout()
74
+ }
75
+
76
+ // 重新导出类型定义
77
+ export type * from './types'
@@ -0,0 +1,200 @@
1
+ /**
2
+ * 认证API相关类型定义
3
+ */
4
+
5
+ import type { UserType } from '@af-mobile-client-vue3/types/auth'
6
+
7
+ /**
8
+ * 基础响应接口
9
+ */
10
+ export interface ApiResponse<T = any> {
11
+ code: number
12
+ msg: string
13
+ data: T
14
+ }
15
+
16
+ /**
17
+ * 登录响应数据
18
+ */
19
+ export interface LoginResponseData {
20
+ /** 访问令牌 */
21
+ access_token: string
22
+ /** 过期时间(分钟) */
23
+ expires_in: number
24
+ /** 会话密钥 */
25
+ session?: string
26
+ /** 资源权限 */
27
+ resources?: any
28
+ /** 用户信息 */
29
+ userInfo?: {
30
+ id: string | number
31
+ username: string
32
+ name: string
33
+ avatar?: string
34
+ userType?: UserType
35
+ openid?: string
36
+ platformType?: string
37
+ [key: string]: any
38
+ }
39
+ }
40
+
41
+ /**
42
+ * 微信公众号登录请求
43
+ */
44
+ export interface WechatOfficialLoginParams {
45
+ /** 平台类型 */
46
+ platformType: 'WECHAT_OFFICIAL'
47
+ /** 微信授权码 */
48
+ platformUserId: string
49
+ /** 租户名称 */
50
+ tenantName: string
51
+ /** 资源名称,默认为system */
52
+ resourceName?: string
53
+ /** 是否移动端,默认为true */
54
+ isMobile?: boolean
55
+ }
56
+
57
+ /**
58
+ * 微信小程序登录请求
59
+ */
60
+ export interface WechatMiniLoginParams {
61
+ /** 平台类型 */
62
+ platformType: 'WECHAT_MINI'
63
+ /** 微信授权码 */
64
+ platformUserId: string
65
+ /** 租户名称 */
66
+ tenantName: string
67
+ /** 资源名称,默认为system */
68
+ resourceName?: string
69
+ /** 是否移动端,默认为true */
70
+ isMobile?: boolean
71
+ }
72
+
73
+ /**
74
+ * 第三方应用登录请求
75
+ */
76
+ export interface ThirdPartyAppLoginParams {
77
+ /** 平台类型 */
78
+ platformType: 'THIRD_PARTY_APP'
79
+ /** 第三方授权码 */
80
+ platformUserId: string
81
+ /** 租户名称 */
82
+ tenantName: string
83
+ /** 资源名称,默认为system */
84
+ resourceName?: string
85
+ /** 是否移动端,默认为false */
86
+ isMobile?: boolean
87
+ }
88
+
89
+ /**
90
+ * 外部用户登录参数联合类型
91
+ */
92
+ export type ExternalLoginParams
93
+ = | WechatOfficialLoginParams
94
+ | WechatMiniLoginParams
95
+ | ThirdPartyAppLoginParams
96
+
97
+ /**
98
+ * 传统用户名密码登录请求
99
+ */
100
+ export interface UsernamePasswordLoginParams {
101
+ /** 用户名 */
102
+ username: string
103
+ /** 密码 */
104
+ password: string
105
+ /** 资源名称 */
106
+ resourceName: string
107
+ /** 是否移动端 */
108
+ isMobile?: boolean
109
+ }
110
+
111
+ /**
112
+ * 统一认证登录请求
113
+ */
114
+ export interface UnifiedLoginParams {
115
+ /** 统一认证码 */
116
+ unifiedCode: string
117
+ /** 租户名称 */
118
+ tenantName: string
119
+ /** 登录模式 */
120
+ loginMode: string
121
+ /** 资源名称 */
122
+ resourceName: string
123
+ /** 是否移动端 */
124
+ isMobile?: boolean
125
+ }
126
+
127
+ /**
128
+ * 所有登录参数的联合类型
129
+ */
130
+ export type LoginParams
131
+ = | UsernamePasswordLoginParams
132
+ | UnifiedLoginParams
133
+ | ExternalLoginParams
134
+
135
+ /**
136
+ * 微信授权回调参数
137
+ */
138
+ export interface WechatCallbackParams {
139
+ /** 授权码 */
140
+ code?: string
141
+ /** 状态参数,通常包含租户名称 */
142
+ state?: string
143
+ /** 租户名称 */
144
+ tenantName?: string
145
+ /** 错误信息 */
146
+ error?: string
147
+ /** 错误描述 */
148
+ error_description?: string
149
+ }
150
+
151
+ /**
152
+ * Token刷新请求
153
+ */
154
+ export interface RefreshTokenParams {
155
+ /** 刷新令牌 */
156
+ refresh_token?: string
157
+ }
158
+
159
+ /**
160
+ * 登出请求(通常不需要参数)
161
+ */
162
+ export interface LogoutParams {
163
+ // 预留
164
+ }
165
+
166
+ /**
167
+ * 用户信息获取响应
168
+ */
169
+ export interface UserInfoResponse {
170
+ /** 用户ID */
171
+ id: string | number
172
+ /** 用户名 */
173
+ username: string
174
+ /** 显示名称 */
175
+ name: string
176
+ /** 头像URL */
177
+ avatar?: string
178
+ /** 用户类型 */
179
+ userType?: UserType
180
+ /** 权限列表 */
181
+ permissions?: string[]
182
+ /** 角色列表 */
183
+ roles?: Array<{ id: string, operation: string[] }>
184
+ /** 部门信息 */
185
+ department?: {
186
+ id: string
187
+ name: string
188
+ }
189
+ /** 组织信息 */
190
+ organization?: {
191
+ id: string
192
+ name: string
193
+ }
194
+ /** 外部用户特有字段 */
195
+ openid?: string
196
+ /** 平台类型 */
197
+ platformType?: string
198
+ /** 来源渠道 */
199
+ sourceChannel?: string
200
+ }
@@ -1,30 +1,30 @@
1
- import { http } from '@af-mobile-client-vue3/utils/http'
2
-
3
- interface ListResult {
4
- code: number
5
- message: string
6
- list: Array<any>
7
- }
8
-
9
- export function getListApi(params?: object): Promise<ListResult> {
10
- return http.request({
11
- url: '/list/get',
12
- method: 'get',
13
- params,
14
- })
15
- }
16
-
17
- export function getListApiError(data?: object): Promise<ListResult> {
18
- return http.request({
19
- url: '/list/error',
20
- method: 'post',
21
- data,
22
- })
23
- }
24
-
25
- export async function queryProse(): Promise<any> {
26
- return http.request({
27
- url: '/project/prose',
28
- method: 'post',
29
- })
30
- }
1
+ import { http } from '@af-mobile-client-vue3/utils/http'
2
+
3
+ interface ListResult {
4
+ code: number
5
+ message: string
6
+ list: Array<any>
7
+ }
8
+
9
+ export function getListApi(params?: object): Promise<ListResult> {
10
+ return http.request({
11
+ url: '/list/get',
12
+ method: 'get',
13
+ params,
14
+ })
15
+ }
16
+
17
+ export function getListApiError(data?: object): Promise<ListResult> {
18
+ return http.request({
19
+ url: '/list/error',
20
+ method: 'post',
21
+ data,
22
+ })
23
+ }
24
+
25
+ export async function queryProse(): Promise<any> {
26
+ return http.request({
27
+ url: '/project/prose',
28
+ method: 'post',
29
+ })
30
+ }
@@ -1,40 +1,40 @@
1
- import { loginApi } from '@af-mobile-client-vue3/services/api/Login'
2
-
3
- import { get, post } from '@af-mobile-client-vue3/services/restTools'
4
- import { http } from '@af-mobile-client-vue3/utils/http'
5
-
6
- export interface BasicResponseModel<T = any> {
7
- code: number
8
- msg: string
9
- data: T
10
- }
11
-
12
- export function login(data: any) {
13
- return post(
14
- loginApi.Login,
15
- data,
16
- )
17
- }
18
-
19
- export function OALogin(data: any) {
20
- return get(`/af-system/user/${data.username}/${data.password}/智慧OA`)
21
- }
22
-
23
- /**
24
- * @description: 获取用户信息
25
- */
26
- export function getUserInfo() {
27
- return get(
28
- '/getUserInfo',
29
- )
30
- }
31
-
32
- /**
33
- * @description: 用户登出
34
- */
35
- export function doLogout() {
36
- return http.request({
37
- url: loginApi.Logout,
38
- method: 'DELETE',
39
- })
40
- }
1
+ import { loginApi } from '@af-mobile-client-vue3/services/api/Login'
2
+
3
+ import { get, post } from '@af-mobile-client-vue3/services/restTools'
4
+ import { http } from '@af-mobile-client-vue3/utils/http'
5
+
6
+ export interface BasicResponseModel<T = any> {
7
+ code: number
8
+ msg: string
9
+ data: T
10
+ }
11
+
12
+ export function login(data: any) {
13
+ return post(
14
+ loginApi.Login,
15
+ data,
16
+ )
17
+ }
18
+
19
+ export function OALogin(data: any) {
20
+ return get(`/af-system/user/${data.username}/${data.password}/智慧OA`)
21
+ }
22
+
23
+ /**
24
+ * @description: 获取用户信息
25
+ */
26
+ export function getUserInfo() {
27
+ return get(
28
+ '/getUserInfo',
29
+ )
30
+ }
31
+
32
+ /**
33
+ * @description: 用户登出
34
+ */
35
+ export function doLogout() {
36
+ return http.request({
37
+ url: loginApi.Logout,
38
+ method: 'DELETE',
39
+ })
40
+ }
@@ -1,20 +1,20 @@
1
- <svg width="444.233154" height="203.122437" viewBox="0 0 444.233 203.122" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
2
- <desc>
3
- Created with Pixso.
4
- </desc>
5
- <defs>
6
- <filter id="filter_37_876_dd" x="0.529297" y="0.516296" width="443.178467" height="202.089844" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
7
- <feFlood flood-opacity="0" result="BackgroundImageFix"/>
8
- <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
9
- <feOffset dx="0" dy="-28"/>
10
- <feGaussianBlur stdDeviation="11.3333"/>
11
- <feComposite in2="hardAlpha" operator="out" k2="-1" k3="1"/>
12
- <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.039 0"/>
13
- <feBlend mode="normal" in2="BackgroundImageFix" result="effect_dropShadow_1"/>
14
- <feBlend mode="normal" in="SourceGraphic" in2="effect_dropShadow_1" result="shape"/>
15
- </filter>
16
- </defs>
17
- <g filter="url(#filter_37_876_dd)">
18
- <path id="Path 2" d="M34.6331 62.5163C159.633 62.5163 156.204 115.98 222.133 115.98C288.062 115.98 290.281 62.5163 409.633 62.5163C409.801 62.5163 409.633 196.606 409.633 196.606L34.6331 196.606C34.6331 196.606 34.3997 62.5163 34.6331 62.5163Z" fill-rule="evenodd" fill="#FFFFFF"/>
19
- </g>
20
- </svg>
1
+ <svg width="444.233154" height="203.122437" viewBox="0 0 444.233 203.122" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
2
+ <desc>
3
+ Created with Pixso.
4
+ </desc>
5
+ <defs>
6
+ <filter id="filter_37_876_dd" x="0.529297" y="0.516296" width="443.178467" height="202.089844" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
7
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
8
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
9
+ <feOffset dx="0" dy="-28"/>
10
+ <feGaussianBlur stdDeviation="11.3333"/>
11
+ <feComposite in2="hardAlpha" operator="out" k2="-1" k3="1"/>
12
+ <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.039 0"/>
13
+ <feBlend mode="normal" in2="BackgroundImageFix" result="effect_dropShadow_1"/>
14
+ <feBlend mode="normal" in="SourceGraphic" in2="effect_dropShadow_1" result="shape"/>
15
+ </filter>
16
+ </defs>
17
+ <g filter="url(#filter_37_876_dd)">
18
+ <path id="Path 2" d="M34.6331 62.5163C159.633 62.5163 156.204 115.98 222.133 115.98C288.062 115.98 290.281 62.5163 409.633 62.5163C409.801 62.5163 409.633 196.606 409.633 196.606L34.6331 196.606C34.6331 196.606 34.3997 62.5163 34.6331 62.5163Z" fill-rule="evenodd" fill="#FFFFFF"/>
19
+ </g>
20
+ </svg>