af-mobile-client-vue3 1.3.12 → 1.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) 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 +66 -66
  10. package/CLAUDE.md +189 -184
  11. package/README.md +182 -181
  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 +30 -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 +152 -152
  24. package/mock/util.ts +19 -19
  25. package/netlify.toml +12 -12
  26. package/package.json +114 -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/mock/index.ts +30 -30
  33. package/src/api/user/index.ts +40 -40
  34. package/src/assets/img/user/login/background-shadow-1.svg +20 -20
  35. package/src/assets/img/user/login/logo-background.svg +20 -20
  36. package/src/bootstrap.ts +26 -26
  37. package/src/components/core/BeautifulLoading/index.vue +52 -52
  38. package/src/components/core/ImageUploader/index.vue +244 -244
  39. package/src/components/core/NavBar/index.vue +53 -53
  40. package/src/components/core/Tabbar/index.vue +32 -32
  41. package/src/components/core/Uploader/index.vue +124 -124
  42. package/src/components/core/XGridDropOption/index.vue +154 -156
  43. package/src/components/core/XMultiSelect/index.vue +183 -183
  44. package/src/components/core/XSelect/index.vue +149 -149
  45. package/src/components/data/InfoDisplay/index.vue +132 -0
  46. package/src/components/data/UserDetail/api.ts +24 -0
  47. package/src/components/data/UserDetail/index.vue +620 -0
  48. package/src/components/data/UserDetail/recordEntries.ts +159 -0
  49. package/src/components/data/UserDetail/types.ts +26 -0
  50. package/src/components/data/XBadge/index.vue +82 -82
  51. package/src/components/data/XCellDetail/index.vue +105 -105
  52. package/src/components/data/XCellList/XCellList.md +313 -313
  53. package/src/components/data/XCellList/index.vue +1075 -1075
  54. package/src/components/data/XCellListFilter/QrScanner/index.vue +207 -207
  55. package/src/components/data/XCellListFilter/QrScanner/startScanAnimation.ts +53 -53
  56. package/src/components/data/XCellListFilter/VpnRecognition/index.vue +119 -119
  57. package/src/components/data/XCellListFilter/index.vue +705 -705
  58. package/src/components/data/XForm/index.vue +659 -659
  59. package/src/components/data/XFormGroup/doc/DeviceForm.vue +122 -122
  60. package/src/components/data/XFormGroup/doc/FormGroupDemo.vue +56 -56
  61. package/src/components/data/XFormGroup/doc/README.md +286 -273
  62. package/src/components/data/XFormGroup/doc/UserForm.vue +102 -102
  63. package/src/components/data/XFormGroup/index.vue +240 -240
  64. package/src/components/data/XFormItem/index.vue +1310 -1310
  65. package/src/components/data/XOlMap/README.md +227 -227
  66. package/src/components/data/XOlMap/XLocationPicker/index.vue +226 -225
  67. package/src/components/data/XOlMap/index.vue +1490 -1490
  68. package/src/components/data/XOlMap/types.ts +149 -149
  69. package/src/components/data/XOlMap/utils/wgs84ToGcj02.js +154 -154
  70. package/src/components/data/XReportForm/DateTimeSecondsPicker.vue +208 -208
  71. package/src/components/data/XReportForm/XReportFormJsonRender.vue +220 -220
  72. package/src/components/data/XReportForm/index.vue +1393 -1393
  73. package/src/components/data/XReportGrid/XAddReport/XAddReport.vue +198 -198
  74. package/src/components/data/XReportGrid/XAddReport/index.js +3 -3
  75. package/src/components/data/XReportGrid/XAddReport/index.md +53 -52
  76. package/src/components/data/XReportGrid/XAddReport/index.ts +10 -10
  77. package/src/components/data/XReportGrid/XReport.vue +960 -960
  78. package/src/components/data/XReportGrid/XReportDemo.vue +33 -33
  79. package/src/components/data/XReportGrid/XReportDesign.vue +597 -597
  80. package/src/components/data/XReportGrid/XReportDrawer/XReportDrawer.vue +148 -148
  81. package/src/components/data/XReportGrid/XReportDrawer/index.js +3 -3
  82. package/src/components/data/XReportGrid/XReportDrawer/index.ts +10 -10
  83. package/src/components/data/XReportGrid/XReportJsonRender.vue +399 -399
  84. package/src/components/data/XReportGrid/XReportTrGroup.vue +592 -592
  85. package/src/components/data/XReportGrid/index.md +46 -42
  86. package/src/components/data/XReportGrid/print.js +184 -184
  87. package/src/components/data/XSignature/index.vue +284 -285
  88. package/src/components/data/XTag/index.vue +10 -10
  89. package/src/components/layout/NormalDataLayout/index.vue +69 -69
  90. package/src/components/layout/TabBarLayout/index.vue +40 -40
  91. package/src/composables/dark.ts +5 -5
  92. package/src/config/routes.ts +9 -9
  93. package/src/constants/index.ts +2 -2
  94. package/src/enums/requestEnum.ts +25 -25
  95. package/src/expression/ExpressionRunner.ts +28 -28
  96. package/src/expression/TestExpression.ts +510 -510
  97. package/src/expression/core/Delegate.ts +116 -116
  98. package/src/expression/core/Expression.ts +1359 -1359
  99. package/src/expression/core/Program.ts +985 -985
  100. package/src/expression/core/Token.ts +29 -29
  101. package/src/expression/enums/ExpressionType.ts +81 -81
  102. package/src/expression/enums/TokenType.ts +11 -11
  103. package/src/expression/exception/BreakWayException.ts +2 -2
  104. package/src/expression/exception/ContinueWayException.ts +2 -2
  105. package/src/expression/exception/ExpressionException.ts +29 -29
  106. package/src/expression/exception/ReturnWayException.ts +14 -14
  107. package/src/expression/exception/ServiceException.ts +22 -22
  108. package/src/expression/instances/JSONArray.ts +52 -52
  109. package/src/expression/instances/JSONObject.ts +118 -118
  110. package/src/expression/instances/LogicConsole.ts +31 -31
  111. package/src/font-style/font.css +4 -4
  112. package/src/hooks/useBoolean.ts +26 -0
  113. package/src/hooks/useCommon.ts +9 -9
  114. package/src/hooks/useLoading.ts +16 -0
  115. package/src/hooks/useLogin.ts +97 -97
  116. package/src/icons/svg/check-in.svg +32 -32
  117. package/src/icons/svg/dark.svg +4 -4
  118. package/src/icons/svg/github.svg +4 -4
  119. package/src/icons/svg/light.svg +4 -4
  120. package/src/icons/svg/link.svg +4 -4
  121. package/src/icons/svgo.yml +22 -22
  122. package/src/layout/GridView/index.vue +16 -16
  123. package/src/layout/PageLayout.vue +9 -9
  124. package/src/layout/SingleLayout.vue +9 -9
  125. package/src/locales/en-US.json +128 -128
  126. package/src/locales/zh-CN.json +128 -128
  127. package/src/logic/LogicRunner.ts +67 -67
  128. package/src/logic/TestLogic.ts +13 -13
  129. package/src/logic/plugins/common/DateTools.ts +35 -35
  130. package/src/logic/plugins/common/VueTools.ts +30 -30
  131. package/src/logic/plugins/index.ts +7 -7
  132. package/src/main.ts +44 -44
  133. package/src/plugins/AppData.ts +38 -38
  134. package/src/plugins/GetLoginInfoService.ts +10 -10
  135. package/src/plugins/collectIcons.ts +10 -0
  136. package/src/plugins/index.ts +11 -11
  137. package/src/router/README.md +8 -8
  138. package/src/router/guards.ts +59 -59
  139. package/src/router/index.ts +35 -35
  140. package/src/router/invoiceRoutes.ts +33 -33
  141. package/src/router/routes.ts +341 -177
  142. package/src/router/types.ts +7 -7
  143. package/src/services/api/Login.ts +6 -6
  144. package/src/services/api/common.ts +109 -109
  145. package/src/services/api/index.ts +7 -7
  146. package/src/services/api/manage.ts +8 -8
  147. package/src/services/api/search.ts +16 -16
  148. package/src/services/api/user.ts +17 -17
  149. package/src/services/restTools.ts +56 -56
  150. package/src/services/v3Api.ts +147 -147
  151. package/src/stores/index.ts +11 -11
  152. package/src/stores/modules/counter.ts +19 -19
  153. package/src/stores/modules/routeCache.ts +23 -23
  154. package/src/stores/modules/setting.ts +76 -76
  155. package/src/stores/modules/user.ts +235 -235
  156. package/src/stores/mutation-type.ts +7 -7
  157. package/src/styles/app.less +36 -36
  158. package/src/styles/login.less +109 -109
  159. package/src/styles/var.less +16 -16
  160. package/src/types/env.d.ts +16 -16
  161. package/src/types/settings.ts +1 -1
  162. package/src/types/vue-router.d.ts +9 -9
  163. package/src/utils/Storage.ts +124 -124
  164. package/src/utils/authority-utils.ts +84 -84
  165. package/src/utils/common.ts +41 -41
  166. package/src/utils/crypto.ts +39 -39
  167. package/src/utils/dataUtil.ts +42 -42
  168. package/src/utils/dictUtil.ts +52 -52
  169. package/src/utils/http/index.ts +199 -199
  170. package/src/utils/i18n.ts +72 -72
  171. package/src/utils/indexedDB.ts +195 -195
  172. package/src/utils/inline-px-to-vw.ts +28 -28
  173. package/src/utils/mobileUtil.ts +34 -34
  174. package/src/utils/progress.ts +19 -19
  175. package/src/utils/routerUtil.ts +271 -271
  176. package/src/utils/runEvalFunction.ts +13 -13
  177. package/src/utils/secureStorage.ts +71 -71
  178. package/src/utils/set-page-title.ts +5 -5
  179. package/src/utils/validate.ts +6 -6
  180. package/src/utils/wechatUtil.ts +9 -9
  181. package/src/views/chat/index.vue +153 -153
  182. package/src/views/common/LoadError.vue +63 -63
  183. package/src/views/common/NotFound.vue +67 -67
  184. package/src/views/component/EvaluateRecordView/index.vue +40 -40
  185. package/src/views/component/IconifyView/index.vue +504 -507
  186. package/src/views/component/UserDetailView/UserDetailPage.vue +77 -0
  187. package/src/views/component/UserDetailView/index.vue +234 -0
  188. package/src/views/component/XCellDetailView/index.vue +217 -217
  189. package/src/views/component/XCellListView/index.vue +108 -157
  190. package/src/views/component/XFormAppraiseView/index.vue +174 -174
  191. package/src/views/component/XFormGroupView/index.vue +78 -82
  192. package/src/views/component/XFormView/index.vue +27 -27
  193. package/src/views/component/XOlMapView/XLocationPicker/index.vue +118 -118
  194. package/src/views/component/XOlMapView/index.vue +434 -434
  195. package/src/views/component/XOlMapView/testData.ts +64 -64
  196. package/src/views/component/XReportFormIframeView/index.vue +47 -47
  197. package/src/views/component/XReportFormView/index.vue +13 -13
  198. package/src/views/component/XReportGridView/index.vue +17 -17
  199. package/src/views/component/XRequestView/index.vue +234 -234
  200. package/src/views/component/XSignatureView/index.vue +50 -50
  201. package/src/views/component/index.vue +181 -177
  202. package/src/views/component/menu.vue +117 -117
  203. package/src/views/component/notice.vue +46 -46
  204. package/src/views/component/topNav.vue +36 -36
  205. package/src/views/invoiceShow/index.vue +61 -61
  206. package/src/views/user/login/ForgetPasswordForm.vue +94 -94
  207. package/src/views/user/login/LoginForm.vue +346 -346
  208. package/src/views/user/login/LoginTitle.vue +76 -76
  209. package/src/views/user/login/LoginWave.vue +109 -109
  210. package/src/views/user/login/index.vue +22 -22
  211. package/src/views/user/my/comm/ModifyPassword.vue +346 -346
  212. package/src/views/user/my/index.vue +340 -340
  213. package/src/views/userRecords/AbnormalAlarmRecords.vue +21 -0
  214. package/src/views/userRecords/CardReplacementRecords.vue +21 -0
  215. package/src/views/userRecords/ChangeRecords.vue +19 -0
  216. package/src/views/userRecords/CommandViewRecords.vue +20 -0
  217. package/src/views/userRecords/GasCompensationRecords.vue +20 -0
  218. package/src/views/userRecords/InstrumentCollectionRecords.vue +21 -0
  219. package/src/views/userRecords/MeterRecords.vue +20 -0
  220. package/src/views/userRecords/OperateRecords.vue +51 -0
  221. package/src/views/userRecords/OtherChargeRecords.vue +19 -0
  222. package/src/views/userRecords/PaymentRecords.vue +28 -0
  223. package/src/views/userRecords/PriceAdjustmentRecords.vue +19 -0
  224. package/src/views/userRecords/ReplacementRecords.vue +19 -0
  225. package/src/views/userRecords/SafetyRecords.vue +19 -0
  226. package/src/views/userRecords/TransactionRecords.vue +21 -0
  227. package/src/views/userRecords/TransferRecords.vue +19 -0
  228. package/src/views/userRecords/operateRecordDetail/index.vue +316 -0
  229. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AddUserDetail.vue +124 -0
  230. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AdvanceDeliveryDetail.vue +88 -0
  231. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsCancelDetail.vue +205 -0
  232. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsDetail.vue +192 -0
  233. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankDkDetail.vue +192 -0
  234. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankPayDetail.vue +192 -0
  235. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BlacklistDetail.vue +153 -0
  236. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CancellationDetail.vue +101 -0
  237. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterCancelDetail.vue +127 -0
  238. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterDetail.vue +153 -0
  239. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardOverUserDetail.vue +153 -0
  240. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterCancelDetail.vue +166 -0
  241. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterDetail.vue +205 -0
  242. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/DisableManageDetail.vue +127 -0
  243. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/EnableManageDetail.vue +114 -0
  244. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FaZheChangeDetail.vue +124 -0
  245. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FeeDeductionDetail.vue +153 -0
  246. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/GasPriceChangeDetail.vue +126 -0
  247. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/InputtorChangeDetail.vue +126 -0
  248. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterCancelDetail.vue +114 -0
  249. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterDetail.vue +127 -0
  250. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotOpenDetail.vue +88 -0
  251. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineCardDetail.vue +101 -0
  252. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterCancelDetail.vue +218 -0
  253. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterDetail.vue +153 -0
  254. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OffGasAddGasDetail.vue +140 -0
  255. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeCancelDetail.vue +127 -0
  256. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeDetail.vue +114 -0
  257. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OverUserChangeDetail.vue +127 -0
  258. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReBillDetail.vue +127 -0
  259. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/RefundDetail.vue +114 -0
  260. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageCancelDetail.vue +127 -0
  261. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageDetail.vue +114 -0
  262. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/SaleCardGasDetail.vue +140 -0
  263. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageCancelDetail.vue +152 -0
  264. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageDetail.vue +178 -0
  265. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/UserChangeDetail.vue +123 -0
  266. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/WechatPayDetail.vue +192 -0
  267. package/src/views/userRecords/types.ts +66 -0
  268. package/tsconfig.json +39 -39
  269. package/uno.config.ts +82 -78
  270. package/vite.config.ts +118 -118
  271. package/src/views/component/XFormGroupView/xformgroup222.vue +0 -97
@@ -1,118 +1,118 @@
1
- import JSONArray from '../instances/JSONArray'
2
-
3
- export default class JSONObject {
4
- innerMap: { [key: string]: any }
5
-
6
- constructor(value?: any) {
7
- let map: { [key: string]: any }
8
- if (value && typeof value === 'string') {
9
- map = JSON.parse(value)
10
- }
11
- else if (value && typeof value === 'object' && !Array.isArray(value)) {
12
- map = {}
13
- const keySet = value instanceof JSONObject ? value.keySet() : Object.keys(value)
14
- for (const key of keySet) {
15
- const item = value instanceof JSONObject ? value.get(key) : value[key]
16
- if (Array.isArray(item)) {
17
- map[key] = new JSONArray(item)
18
- }
19
- else if (JSONObject.isPlainObject(item)) {
20
- map[key] = new JSONObject(item)
21
- }
22
- else {
23
- map[key] = item
24
- }
25
- }
26
- }
27
- else {
28
- map = {}
29
- }
30
- this.innerMap = map
31
- }
32
-
33
- public static isPlainObject(value: any): boolean {
34
- if (!value || typeof value !== 'object')
35
- return false
36
- if (value instanceof JSONObject || value instanceof JSONArray) {
37
- return false
38
- }
39
- const proto = Object.getPrototypeOf(value)
40
- return proto === Object.prototype || proto === null
41
- }
42
-
43
- public put(key: string, value: any) {
44
- if (Array.isArray(value)) {
45
- this.innerMap[key] = new JSONArray(value)
46
- }
47
- else if (JSONObject.isPlainObject(value)) {
48
- this.innerMap[key] = new JSONObject(value)
49
- }
50
- else {
51
- this.innerMap[key] = value
52
- }
53
- }
54
-
55
- public get(key: string): any {
56
- return this.innerMap[key]
57
- }
58
-
59
- public opt(key: string): any {
60
- return key == null ? null : this.innerMap[key]
61
- }
62
-
63
- public optString(key: string, defaultValue: string): string {
64
- const result = this.opt(key)
65
- return result || defaultValue
66
- }
67
-
68
- public getBoolean(key: string): boolean {
69
- const object = this.get(key)
70
- if (typeof object === 'boolean') {
71
- return object as boolean
72
- }
73
- else {
74
- return Boolean(object)
75
- }
76
- }
77
-
78
- public optBoolean(key: string, defaultValue: boolean): boolean {
79
- const val = this.opt(key)
80
- if (!val) {
81
- return defaultValue
82
- }
83
- return this.getBoolean(key)
84
- }
85
-
86
- public getInt(key: string): number {
87
- return this.innerMap[key] as number
88
- }
89
-
90
- public getJSONObject(key: string): JSONObject {
91
- return this.innerMap[key] as JSONObject
92
- }
93
-
94
- public getJSONArray(key: string): JSONArray {
95
- return this.innerMap[key] as JSONArray
96
- }
97
-
98
- public has(key: string): boolean {
99
- return Object.prototype.hasOwnProperty.call(this.innerMap, key)
100
- }
101
-
102
- public keySet(): string[] {
103
- return Object.keys(this.innerMap)
104
- }
105
-
106
- public toString(): string {
107
- const replacer = (key: string, value: any): any => {
108
- if (value instanceof JSONObject) {
109
- return value.innerMap
110
- }
111
- else if (value instanceof JSONArray) {
112
- return value.innerList
113
- }
114
- return value
115
- }
116
- return JSON.stringify(this.innerMap, replacer)
117
- }
118
- }
1
+ import JSONArray from '../instances/JSONArray'
2
+
3
+ export default class JSONObject {
4
+ innerMap: { [key: string]: any }
5
+
6
+ constructor(value?: any) {
7
+ let map: { [key: string]: any }
8
+ if (value && typeof value === 'string') {
9
+ map = JSON.parse(value)
10
+ }
11
+ else if (value && typeof value === 'object' && !Array.isArray(value)) {
12
+ map = {}
13
+ const keySet = value instanceof JSONObject ? value.keySet() : Object.keys(value)
14
+ for (const key of keySet) {
15
+ const item = value instanceof JSONObject ? value.get(key) : value[key]
16
+ if (Array.isArray(item)) {
17
+ map[key] = new JSONArray(item)
18
+ }
19
+ else if (JSONObject.isPlainObject(item)) {
20
+ map[key] = new JSONObject(item)
21
+ }
22
+ else {
23
+ map[key] = item
24
+ }
25
+ }
26
+ }
27
+ else {
28
+ map = {}
29
+ }
30
+ this.innerMap = map
31
+ }
32
+
33
+ public static isPlainObject(value: any): boolean {
34
+ if (!value || typeof value !== 'object')
35
+ return false
36
+ if (value instanceof JSONObject || value instanceof JSONArray) {
37
+ return false
38
+ }
39
+ const proto = Object.getPrototypeOf(value)
40
+ return proto === Object.prototype || proto === null
41
+ }
42
+
43
+ public put(key: string, value: any) {
44
+ if (Array.isArray(value)) {
45
+ this.innerMap[key] = new JSONArray(value)
46
+ }
47
+ else if (JSONObject.isPlainObject(value)) {
48
+ this.innerMap[key] = new JSONObject(value)
49
+ }
50
+ else {
51
+ this.innerMap[key] = value
52
+ }
53
+ }
54
+
55
+ public get(key: string): any {
56
+ return this.innerMap[key]
57
+ }
58
+
59
+ public opt(key: string): any {
60
+ return key == null ? null : this.innerMap[key]
61
+ }
62
+
63
+ public optString(key: string, defaultValue: string): string {
64
+ const result = this.opt(key)
65
+ return result || defaultValue
66
+ }
67
+
68
+ public getBoolean(key: string): boolean {
69
+ const object = this.get(key)
70
+ if (typeof object === 'boolean') {
71
+ return object as boolean
72
+ }
73
+ else {
74
+ return Boolean(object)
75
+ }
76
+ }
77
+
78
+ public optBoolean(key: string, defaultValue: boolean): boolean {
79
+ const val = this.opt(key)
80
+ if (!val) {
81
+ return defaultValue
82
+ }
83
+ return this.getBoolean(key)
84
+ }
85
+
86
+ public getInt(key: string): number {
87
+ return this.innerMap[key] as number
88
+ }
89
+
90
+ public getJSONObject(key: string): JSONObject {
91
+ return this.innerMap[key] as JSONObject
92
+ }
93
+
94
+ public getJSONArray(key: string): JSONArray {
95
+ return this.innerMap[key] as JSONArray
96
+ }
97
+
98
+ public has(key: string): boolean {
99
+ return Object.prototype.hasOwnProperty.call(this.innerMap, key)
100
+ }
101
+
102
+ public keySet(): string[] {
103
+ return Object.keys(this.innerMap)
104
+ }
105
+
106
+ public toString(): string {
107
+ const replacer = (key: string, value: any): any => {
108
+ if (value instanceof JSONObject) {
109
+ return value.innerMap
110
+ }
111
+ else if (value instanceof JSONArray) {
112
+ return value.innerList
113
+ }
114
+ return value
115
+ }
116
+ return JSON.stringify(this.innerMap, replacer)
117
+ }
118
+ }
@@ -1,31 +1,31 @@
1
- // 自定义 Console 类
2
- export default class LogicConsole {
3
- public debug(...args: any[]): void {
4
- const newArgs = this.convert(args)
5
- console.info(...newArgs)
6
- }
7
-
8
- public info(...args: any[]): void {
9
- const newArgs = this.convert(args)
10
- console.info(...newArgs)
11
- }
12
-
13
- public warn(...args: any[]): void {
14
- const newArgs = this.convert(args)
15
- console.warn(...newArgs)
16
- }
17
-
18
- public error(...args: any[]): void {
19
- const newArgs = this.convert(args)
20
- console.error(...newArgs)
21
- }
22
-
23
- private convert(args: any[]): any[] {
24
- return args.map((arg) => {
25
- if (typeof arg === 'object' && arg !== null && typeof arg.toString === 'function') {
26
- return arg.toString()
27
- }
28
- return arg
29
- })
30
- }
31
- }
1
+ // 自定义 Console 类
2
+ export default class LogicConsole {
3
+ public debug(...args: any[]): void {
4
+ const newArgs = this.convert(args)
5
+ console.info(...newArgs)
6
+ }
7
+
8
+ public info(...args: any[]): void {
9
+ const newArgs = this.convert(args)
10
+ console.info(...newArgs)
11
+ }
12
+
13
+ public warn(...args: any[]): void {
14
+ const newArgs = this.convert(args)
15
+ console.warn(...newArgs)
16
+ }
17
+
18
+ public error(...args: any[]): void {
19
+ const newArgs = this.convert(args)
20
+ console.error(...newArgs)
21
+ }
22
+
23
+ private convert(args: any[]): any[] {
24
+ return args.map((arg) => {
25
+ if (typeof arg === 'object' && arg !== null && typeof arg.toString === 'function') {
26
+ return arg.toString()
27
+ }
28
+ return arg
29
+ })
30
+ }
31
+ }
@@ -1,4 +1,4 @@
1
- @font-face {
2
- font-family: 'PingFangSC-Regular-woff2';
3
- src: url('./PingFangSC-Regular.woff2') format('woff2');
4
- }
1
+ @font-face {
2
+ font-family: 'PingFangSC-Regular-woff2';
3
+ src: url('./PingFangSC-Regular.woff2') format('woff2');
4
+ }
@@ -0,0 +1,26 @@
1
+ import { ref } from 'vue'
2
+
3
+ export default function useBoolean(initValue = false) {
4
+ const bool = ref(initValue)
5
+
6
+ function setBool(value: boolean) {
7
+ bool.value = value
8
+ }
9
+ function setTrue() {
10
+ setBool(true)
11
+ }
12
+ function setFalse() {
13
+ setBool(false)
14
+ }
15
+ function toggle() {
16
+ setBool(!bool.value)
17
+ }
18
+
19
+ return {
20
+ bool,
21
+ setBool,
22
+ setTrue,
23
+ setFalse,
24
+ toggle,
25
+ }
26
+ }
@@ -1,9 +1,9 @@
1
- export function formatDate(date) {
2
- const year = date.getFullYear()
3
- const month = (date.getMonth() + 1).toString().padStart(2, '0') // 月份加1,并补零
4
- const day = date.getDate().toString().padStart(2, '0') // 日期补零
5
- const hours = date.getHours().toString().padStart(2, '0') // 小时补零
6
- const minutes = date.getMinutes().toString().padStart(2, '0') // 分钟补零
7
- const seconds = date.getSeconds().toString().padStart(2, '0') // 秒数补零
8
- return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
9
- }
1
+ export function formatDate(date) {
2
+ const year = date.getFullYear()
3
+ const month = (date.getMonth() + 1).toString().padStart(2, '0') // 月份加1,并补零
4
+ const day = date.getDate().toString().padStart(2, '0') // 日期补零
5
+ const hours = date.getHours().toString().padStart(2, '0') // 小时补零
6
+ const minutes = date.getMinutes().toString().padStart(2, '0') // 分钟补零
7
+ const seconds = date.getSeconds().toString().padStart(2, '0') // 秒数补零
8
+ return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
9
+ }
@@ -0,0 +1,16 @@
1
+ import useBoolean from './useBoolean'
2
+
3
+ /**
4
+ * 加载状态管理 Hook
5
+ * @param initValue 初始加载状态,默认为 false
6
+ * @returns {Object} 包含 loading 状态和控制方法
7
+ */
8
+ export default function useLoading(initValue = false) {
9
+ const { bool: loading, setTrue: startLoading, setFalse: endLoading } = useBoolean(initValue)
10
+
11
+ return {
12
+ loading,
13
+ startLoading,
14
+ endLoading,
15
+ }
16
+ }
@@ -1,97 +1,97 @@
1
- import type { FieldRule } from 'vant'
2
- import { computed, ref, unref } from 'vue'
3
-
4
- export enum LoginStateEnum {
5
- LOGIN,
6
- REGISTER,
7
- RESET_PASSWORD,
8
- }
9
-
10
- const currentState = ref(LoginStateEnum.LOGIN)
11
-
12
- export function useLoginState() {
13
- function setLoginState(state: LoginStateEnum) {
14
- currentState.value = state
15
- }
16
-
17
- const getLoginState = computed(() => currentState.value)
18
-
19
- function handleBackLogin() {
20
- setLoginState(LoginStateEnum.LOGIN)
21
- }
22
-
23
- return { setLoginState, getLoginState, handleBackLogin }
24
- }
25
-
26
- export function useFormRules(formData?: any) {
27
- const getUsernameFormRule = computed(() => createRule('请输入用户名'))
28
- const getPasswordFormRule = computed(() => createRule('请输入密码'))
29
- const getSmsFormRule = computed(() => createRule('请输入短信验证码'))
30
- const getMobileFormRule = computed(() => createRule('请输入手机号码'))
31
-
32
- const validatePolicy = async (value: any, _: FieldRule) => {
33
- return !value ? Promise.resolve('勾选后才能注册') : Promise.resolve(true)
34
- }
35
-
36
- const validateConfirmPassword = (password: string) => {
37
- return async (value: string) => {
38
- if (!value)
39
- return Promise.resolve('请输入确认密码')
40
-
41
- if (value !== password)
42
- return Promise.resolve('两次输入密码不一致')
43
-
44
- return Promise.resolve(true)
45
- }
46
- }
47
-
48
- const getFormRules = computed((): { [k: string]: FieldRule[] } => {
49
- const usernameFormRule = unref(getUsernameFormRule)
50
- const passwordFormRule = unref(getPasswordFormRule)
51
- const smsFormRule = unref(getSmsFormRule)
52
- const mobileFormRule = unref(getMobileFormRule)
53
-
54
- const mobileRule = {
55
- sms: smsFormRule,
56
- mobile: mobileFormRule,
57
- }
58
- switch (unref(currentState)) {
59
- // register form rules
60
- case LoginStateEnum.REGISTER:
61
- return {
62
- username: usernameFormRule,
63
- password: passwordFormRule,
64
- confirmPassword: [
65
- { validator: validateConfirmPassword(formData?.password), trigger: 'onChange' },
66
- ],
67
- policy: [{ validator: validatePolicy, trigger: 'onBlur' }],
68
- ...mobileRule,
69
- }
70
-
71
- // reset password form rules
72
- case LoginStateEnum.RESET_PASSWORD:
73
- return {
74
- username: usernameFormRule,
75
- ...mobileRule,
76
- }
77
-
78
- // login form rules
79
- default:
80
- return {
81
- username: usernameFormRule,
82
- password: passwordFormRule,
83
- }
84
- }
85
- })
86
- return { getFormRules }
87
- }
88
-
89
- function createRule(message: string): FieldRule[] {
90
- return [
91
- {
92
- required: true,
93
- message,
94
- trigger: 'onBlur',
95
- },
96
- ]
97
- }
1
+ import type { FieldRule } from 'vant'
2
+ import { computed, ref, unref } from 'vue'
3
+
4
+ export enum LoginStateEnum {
5
+ LOGIN,
6
+ REGISTER,
7
+ RESET_PASSWORD,
8
+ }
9
+
10
+ const currentState = ref(LoginStateEnum.LOGIN)
11
+
12
+ export function useLoginState() {
13
+ function setLoginState(state: LoginStateEnum) {
14
+ currentState.value = state
15
+ }
16
+
17
+ const getLoginState = computed(() => currentState.value)
18
+
19
+ function handleBackLogin() {
20
+ setLoginState(LoginStateEnum.LOGIN)
21
+ }
22
+
23
+ return { setLoginState, getLoginState, handleBackLogin }
24
+ }
25
+
26
+ export function useFormRules(formData?: any) {
27
+ const getUsernameFormRule = computed(() => createRule('请输入用户名'))
28
+ const getPasswordFormRule = computed(() => createRule('请输入密码'))
29
+ const getSmsFormRule = computed(() => createRule('请输入短信验证码'))
30
+ const getMobileFormRule = computed(() => createRule('请输入手机号码'))
31
+
32
+ const validatePolicy = async (value: any, _: FieldRule) => {
33
+ return !value ? Promise.resolve('勾选后才能注册') : Promise.resolve(true)
34
+ }
35
+
36
+ const validateConfirmPassword = (password: string) => {
37
+ return async (value: string) => {
38
+ if (!value)
39
+ return Promise.resolve('请输入确认密码')
40
+
41
+ if (value !== password)
42
+ return Promise.resolve('两次输入密码不一致')
43
+
44
+ return Promise.resolve(true)
45
+ }
46
+ }
47
+
48
+ const getFormRules = computed((): { [k: string]: FieldRule[] } => {
49
+ const usernameFormRule = unref(getUsernameFormRule)
50
+ const passwordFormRule = unref(getPasswordFormRule)
51
+ const smsFormRule = unref(getSmsFormRule)
52
+ const mobileFormRule = unref(getMobileFormRule)
53
+
54
+ const mobileRule = {
55
+ sms: smsFormRule,
56
+ mobile: mobileFormRule,
57
+ }
58
+ switch (unref(currentState)) {
59
+ // register form rules
60
+ case LoginStateEnum.REGISTER:
61
+ return {
62
+ username: usernameFormRule,
63
+ password: passwordFormRule,
64
+ confirmPassword: [
65
+ { validator: validateConfirmPassword(formData?.password), trigger: 'onChange' },
66
+ ],
67
+ policy: [{ validator: validatePolicy, trigger: 'onBlur' }],
68
+ ...mobileRule,
69
+ }
70
+
71
+ // reset password form rules
72
+ case LoginStateEnum.RESET_PASSWORD:
73
+ return {
74
+ username: usernameFormRule,
75
+ ...mobileRule,
76
+ }
77
+
78
+ // login form rules
79
+ default:
80
+ return {
81
+ username: usernameFormRule,
82
+ password: passwordFormRule,
83
+ }
84
+ }
85
+ })
86
+ return { getFormRules }
87
+ }
88
+
89
+ function createRule(message: string): FieldRule[] {
90
+ return [
91
+ {
92
+ required: true,
93
+ message,
94
+ trigger: 'onBlur',
95
+ },
96
+ ]
97
+ }
@@ -1,33 +1,33 @@
1
- <?xml version="1.0" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="200" height="200">
4
- <path d="M781.9 572.5V334c0-19.5-15.5-35.3-34.7-35.3H279.1c-19.1 0-34.7 15.8-34.7 35.3v477c0 19.5 15.5 35.3 34.7 35.3H683c19.1 0 98.9-64 98.9-83.5V572.5z" fill="#FCEE21"/>
5
- <path d="M781.9 764.3V343.6c0-8.3-3-16-7.9-22-68.7 307.3-434 456.3-526.3 504.6 5.5 11.9 17.5 20.1 31.4 20.1H683c19.2 0 98.9-62.8 98.9-82z" fill="#F8B62D"/>
6
- <path d="M781.9 569.7c-5.6 0-10.1-4.5-10.1-10.1V309.8c0-14.8-12.1-26.9-26.9-26.9h-457c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1H745c26 0 47.1 21.1 47.1 47.1v249.7c-0.1 5.7-4.6 10.2-10.2 10.2zM208.5 334.6c-5.6 0-10.1-4.5-10.1-10.1v-14.7c0-26 21.1-47.1 47.1-47.1h2.1c5.6 0 10.1 4.5 10.1 10.1s-4.5 10.1-10.1 10.1h-2.1c-14.8 0-26.9 12.1-26.9 26.9v14.7c-0.1 5.6-4.6 10.1-10.1 10.1zM482.9 856.4H245.4c-26 0-47.1-21.1-47.1-47.1V358.2c0-5.6 4.5-10.1 10.1-10.1s10.1 4.5 10.1 10.1v451.2c0 14.8 12.1 26.9 26.9 26.9h237.4c5.6 0 10.1 4.5 10.1 10.1s-4.5 10-10 10z" fill="#3E3A39"/>
7
- <path d="M313.2 506.9h232.1" fill="#FCEE21"/>
8
- <path d="M545.3 517H313.2c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1h232.1c5.6 0 10.1 4.5 10.1 10.1s-4.5 10.1-10.1 10.1z" fill="#3E3A39"/>
9
- <path d="M313.2 603.4h188.7" fill="#FCEE21"/>
10
- <path d="M501.9 613.5H313.2c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1h188.7c5.6 0 10.1 4.5 10.1 10.1s-4.5 10.1-10.1 10.1z" fill="#3E3A39"/>
11
- <path d="M313.2 699.8h125.1" fill="#FCEE21"/>
12
- <path d="M438.3 709.9h-125c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1h125c5.6 0 10.1 4.5 10.1 10.1s-4.6 10.1-10.1 10.1z" fill="#3E3A39"/>
13
- <path d="M316.1 404h465.8" fill="#FCEE21"/>
14
- <path d="M781.9 414.1H316.1c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1H782c5.6 0 10.1 4.5 10.1 10.1s-4.6 10.1-10.2 10.1z" fill="#3E3A39"/>
15
- <path d="M381.9 330.3h-43.1c-2.1 0-3.8-1.7-3.8-3.8V209.9c0-2.1 1.7-3.8 3.8-3.8h43.1c2.1 0 3.8 1.7 3.8 3.8v116.7c0 2-1.7 3.7-3.8 3.7z" fill="#F8B62D"/>
16
- <path d="M360.3 340.4c-19.5 0-35.4-15.9-35.4-35.4v-73.6c0-19.5 15.9-35.4 35.4-35.4s35.4 15.9 35.4 35.4V305c0.1 19.5-15.8 35.4-35.4 35.4z m0-124.2c-8.4 0-15.2 6.8-15.2 15.2V305c0 8.4 6.8 15.2 15.2 15.2 8.4 0 15.2-6.8 15.2-15.2v-73.6c0.1-8.4-6.8-15.2-15.2-15.2zM866.3 856.4h-24c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1h24c5.6 0 10.1 4.5 10.1 10.1s-4.6 10.1-10.1 10.1zM123.6 856.4H92.9c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1h30.7c5.6 0 10.1 4.5 10.1 10.1s-4.5 10.1-10.1 10.1zM803.7 856.4H155.4c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1h648.3c5.6 0 10.1 4.5 10.1 10.1s-4.5 10.1-10.1 10.1z" fill="#3E3A39"/>
17
- <path d="M665.7 737.2m-127.1 0a127.1 127.1 0 1 0 254.2 0 127.1 127.1 0 1 0-254.2 0Z" fill="#FFFFFF"/>
18
- <path d="M659.8 874.3c-82.6 0-149.8-67.2-149.8-149.8 0-82.6 67.2-149.8 149.8-149.8S809.5 642 809.5 724.6c0 82.5-67.1 149.7-149.7 149.7z m0-279.3c-71.5 0-129.6 58.1-129.6 129.6s58.1 129.6 129.6 129.6S789.4 796 789.4 724.6c0-71.5-58.2-129.6-129.6-129.6z" fill="#3E3A39"/>
19
- <path d="M649.3 797c-2.5 0-4.9-0.9-6.7-2.6l-64.8-58.2c-4.1-3.7-4.5-10.1-0.8-14.2s10.1-4.5 14.2-0.8l56.7 50.9 77.4-101.2c3.4-4.4 9.7-5.3 14.1-1.9s5.3 9.7 1.9 14.1l-84 109.9c-1.7 2.2-4.3 3.7-7.1 3.9-0.2 0.1-0.6 0.1-0.9 0.1z" fill="#3E3A39"/>
20
- <path d="M692.1 126.3c-15.1 0-27.3-12.3-27.3-27.3 0-15.1 12.3-27.3 27.3-27.3 15.1 0 27.3 12.3 27.3 27.3 0 15.1-12.2 27.3-27.3 27.3z m0-41.2c-7.7 0-13.9 6.2-13.9 13.9s6.2 13.9 13.9 13.9S706 106.7 706 99s-6.2-13.9-13.9-13.9z" fill="#47B7F8"/>
21
- <path d="M249 169.9h-12v-12c0-3.2-2.6-5.8-5.8-5.8-3.2 0-5.8 2.6-5.8 5.8v12h-12c-3.2 0-5.8 2.6-5.8 5.8 0 3.2 2.6 5.8 5.8 5.8h12v12c0 3.2 2.6 5.8 5.8 5.8 3.2 0 5.8-2.6 5.8-5.8v-12h12c3.2 0 5.8-2.6 5.8-5.8 0-3.2-2.6-5.8-5.8-5.8zM853.2 286.2h-12v-12c0-3.2-2.6-5.8-5.8-5.8-3.2 0-5.8 2.6-5.8 5.8v12h-12c-3.2 0-5.8 2.6-5.8 5.8s2.6 5.8 5.8 5.8h12v12c0 3.2 2.6 5.8 5.8 5.8 3.2 0 5.8-2.6 5.8-5.8v-12h12c3.2 0 5.8-2.6 5.8-5.8s-2.6-5.8-5.8-5.8z" fill="#F7E42F"/>
22
- <path d="M112.5 443.7H98.6v-13.9a6.7 6.7 0 0 0-13.4 0v13.9h-14a6.7 6.7 0 0 0 0 13.4h13.9V471a6.7 6.7 0 0 0 13.4 0v-13.9h13.9c3.7 0 6.7-3 6.7-6.7s-2.9-6.7-6.6-6.7z" fill="#F8B62D"/>
23
- <path d="M340.1 109.1m-10.1 0a10.1 10.1 0 1 0 20.2 0 10.1 10.1 0 1 0-20.2 0Z" fill="#F8B62D"/>
24
- <path d="M790.8 162.3m-13.4 0a13.4 13.4 0 1 0 26.8 0 13.4 13.4 0 1 0-26.8 0Z" fill="#F8B62D"/>
25
- <path d="M545.3 115.7m-13.4 0a13.4 13.4 0 1 0 26.8 0 13.4 13.4 0 1 0-26.8 0Z" fill="#F7E42F"/>
26
- <path d="M125.5 291.9c-15.1 0-27.3-12.3-27.3-27.3 0-15.1 12.3-27.3 27.3-27.3s27.3 12.3 27.3 27.3c0 15.1-12.3 27.3-27.3 27.3z m0-41.2c-7.7 0-13.9 6.2-13.9 13.9s6.2 13.9 13.9 13.9 13.9-6.2 13.9-13.9-6.3-13.9-13.9-13.9z" fill="#F8B62D"/>
27
- <path d="M472.7 166.3c-1.5-1.4-3.8-1.4-5.3 0-0.7 0.7-1.1 1.6-1.1 2.6s0.4 1.9 1.1 2.6l11.9 11.9c0.7 0.7 1.6 1.1 2.6 1.1s1.9-0.4 2.6-1.1c1.4-1.5 1.4-3.8 0-5.3l-11.8-11.8zM504.3 197.9c-0.7-0.7-1.6-1.1-2.6-1.1s-1.9 0.4-2.6 1.1c-1.4 1.5-1.4 3.8 0 5.3l11.9 11.9c0.7 0.7 1.6 1.1 2.6 1.1s1.9-0.4 2.6-1.1c0.7-0.7 1.1-1.6 1.1-2.6s-0.4-1.9-1.1-2.6l-11.9-12zM501.6 184.6c1 0 1.9-0.4 2.6-1.1l11.9-11.9c0.7-0.7 1.1-1.6 1.1-2.6s-0.4-1.9-1.1-2.6c-1.5-1.5-3.8-1.5-5.3 0L499 178.3c-1.4 1.5-1.4 3.8 0 5.3 0.7 0.7 1.6 1 2.6 1zM479.4 197.9l-11.9 11.9c-0.7 0.7-1.1 1.6-1.1 2.6s0.4 1.9 1.1 2.6c0.7 0.7 1.6 1.1 2.6 1.1s1.9-0.4 2.6-1.1l11.9-11.9c1.4-1.5 1.4-3.8 0-5.3-1.3-1.3-3.8-1.3-5.2 0.1zM481.7 190.7c0-2.1-1.7-3.7-3.7-3.7h-16.9c-2.1 0-3.7 1.7-3.7 3.7 0 2.1 1.7 3.7 3.7 3.7H478c2 0 3.7-1.6 3.7-3.7zM522.6 187h-16.9c-2.1 0-3.7 1.7-3.7 3.7 0 2.1 1.7 3.7 3.7 3.7h16.9c2.1 0 3.7-1.7 3.7-3.7s-1.7-3.7-3.7-3.7zM491.8 156.2c-2.1 0-3.7 1.7-3.7 3.7v16.9c0 2.1 1.7 3.7 3.7 3.7 2.1 0 3.7-1.7 3.7-3.7V160c0-2.1-1.6-3.8-3.7-3.8zM491.8 200.8c-2.1 0-3.7 1.7-3.7 3.7v16.9c0 2.1 1.7 3.7 3.7 3.7 2.1 0 3.7-1.7 3.7-3.7v-16.9c0-2-1.6-3.7-3.7-3.7z" fill="#FAEE00"/>
28
- <path d="M905.9 417c-1.5-1.4-3.8-1.4-5.3 0-0.7 0.7-1.1 1.6-1.1 2.6s0.4 1.9 1.1 2.6l11.9 11.9c0.7 0.7 1.6 1.1 2.6 1.1s1.9-0.4 2.6-1.1c1.4-1.5 1.4-3.8 0-5.3L905.9 417zM937.5 448.5c-0.7-0.7-1.6-1.1-2.6-1.1s-1.9 0.4-2.6 1.1c-1.4 1.5-1.4 3.8 0 5.3l11.9 11.9c0.7 0.7 1.6 1.1 2.6 1.1s1.9-0.4 2.6-1.1c0.7-0.7 1.1-1.6 1.1-2.6s-0.4-1.9-1.1-2.6l-11.9-12zM934.8 435.3c1 0 1.9-0.4 2.6-1.1l11.9-11.9c0.7-0.7 1.1-1.6 1.1-2.6s-0.4-1.9-1.1-2.6c-1.5-1.5-3.8-1.5-5.3 0L932.1 429c-1.4 1.5-1.4 3.8 0 5.3 0.8 0.6 1.7 1 2.7 1zM912.6 448.5l-11.9 11.9c-0.7 0.7-1.1 1.6-1.1 2.6s0.4 1.9 1.1 2.6c0.7 0.7 1.6 1.1 2.6 1.1s1.9-0.4 2.6-1.1l11.9-11.9c1.4-1.5 1.4-3.8 0-5.3-1.3-1.3-3.8-1.3-5.2 0.1zM914.9 441.4c0-2.1-1.7-3.7-3.7-3.7h-16.9c-2.1 0-3.7 1.7-3.7 3.7s1.7 3.7 3.7 3.7h16.9c2 0 3.7-1.7 3.7-3.7zM955.8 437.6h-16.9c-2.1 0-3.7 1.7-3.7 3.7s1.7 3.7 3.7 3.7h16.9c2.1 0 3.7-1.7 3.7-3.7s-1.7-3.7-3.7-3.7zM925 406.9c-2.1 0-3.7 1.7-3.7 3.7v16.9c0 2.1 1.7 3.7 3.7 3.7s3.7-1.7 3.7-3.7v-16.9c0.1-2-1.6-3.7-3.7-3.7zM925 451.5c-2.1 0-3.7 1.7-3.7 3.7v16.9c0 2.1 1.7 3.7 3.7 3.7s3.7-1.7 3.7-3.7v-16.9c0.1-2.1-1.6-3.7-3.7-3.7z" fill="#F8B62D"/>
29
- <path d="M648.3 330.3h-43.1c-2.1 0-3.8-1.7-3.8-3.8V209.9c0-2.1 1.7-3.8 3.8-3.8h43.1c2.1 0 3.8 1.7 3.8 3.8v116.7c0 2-1.7 3.7-3.8 3.7z" fill="#F8B62D"/>
30
- <path d="M626.7 340.4c-19.5 0-35.4-15.9-35.4-35.4v-73.6c0-19.5 15.9-35.4 35.4-35.4s35.4 15.9 35.4 35.4V305c0.1 19.5-15.8 35.4-35.4 35.4z m0-124.2c-8.4 0-15.2 6.8-15.2 15.2V305c0 8.4 6.8 15.2 15.2 15.2 8.4 0 15.2-6.8 15.2-15.2v-73.6c0.1-8.4-6.8-15.2-15.2-15.2z" fill="#3E3A39"/>
31
- <path d="M271.3 381.9c-5.6 0-10.1-4.5-10.1-10.1V341c0-17.7 14.4-32.1 32.1-32.1h17.8c5.6 0 10.1 4.5 10.1 10.1s-4.5 10.1-10.1 10.1h-17.8c-6.6 0-12 5.4-12 12v30.8c0.1 5.5-4.4 10-10 10z" fill="#FFFFFF"/>
32
- <path d="M271.3 576.4c-5.6 0-10.1-4.5-10.1-10.1V455.6c0-5.6 4.5-10.1 10.1-10.1s10.1 4.5 10.1 10.1v110.7c0 5.6-4.5 10.1-10.1 10.1z" fill="#FFFFFF"/>
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="200" height="200">
4
+ <path d="M781.9 572.5V334c0-19.5-15.5-35.3-34.7-35.3H279.1c-19.1 0-34.7 15.8-34.7 35.3v477c0 19.5 15.5 35.3 34.7 35.3H683c19.1 0 98.9-64 98.9-83.5V572.5z" fill="#FCEE21"/>
5
+ <path d="M781.9 764.3V343.6c0-8.3-3-16-7.9-22-68.7 307.3-434 456.3-526.3 504.6 5.5 11.9 17.5 20.1 31.4 20.1H683c19.2 0 98.9-62.8 98.9-82z" fill="#F8B62D"/>
6
+ <path d="M781.9 569.7c-5.6 0-10.1-4.5-10.1-10.1V309.8c0-14.8-12.1-26.9-26.9-26.9h-457c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1H745c26 0 47.1 21.1 47.1 47.1v249.7c-0.1 5.7-4.6 10.2-10.2 10.2zM208.5 334.6c-5.6 0-10.1-4.5-10.1-10.1v-14.7c0-26 21.1-47.1 47.1-47.1h2.1c5.6 0 10.1 4.5 10.1 10.1s-4.5 10.1-10.1 10.1h-2.1c-14.8 0-26.9 12.1-26.9 26.9v14.7c-0.1 5.6-4.6 10.1-10.1 10.1zM482.9 856.4H245.4c-26 0-47.1-21.1-47.1-47.1V358.2c0-5.6 4.5-10.1 10.1-10.1s10.1 4.5 10.1 10.1v451.2c0 14.8 12.1 26.9 26.9 26.9h237.4c5.6 0 10.1 4.5 10.1 10.1s-4.5 10-10 10z" fill="#3E3A39"/>
7
+ <path d="M313.2 506.9h232.1" fill="#FCEE21"/>
8
+ <path d="M545.3 517H313.2c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1h232.1c5.6 0 10.1 4.5 10.1 10.1s-4.5 10.1-10.1 10.1z" fill="#3E3A39"/>
9
+ <path d="M313.2 603.4h188.7" fill="#FCEE21"/>
10
+ <path d="M501.9 613.5H313.2c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1h188.7c5.6 0 10.1 4.5 10.1 10.1s-4.5 10.1-10.1 10.1z" fill="#3E3A39"/>
11
+ <path d="M313.2 699.8h125.1" fill="#FCEE21"/>
12
+ <path d="M438.3 709.9h-125c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1h125c5.6 0 10.1 4.5 10.1 10.1s-4.6 10.1-10.1 10.1z" fill="#3E3A39"/>
13
+ <path d="M316.1 404h465.8" fill="#FCEE21"/>
14
+ <path d="M781.9 414.1H316.1c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1H782c5.6 0 10.1 4.5 10.1 10.1s-4.6 10.1-10.2 10.1z" fill="#3E3A39"/>
15
+ <path d="M381.9 330.3h-43.1c-2.1 0-3.8-1.7-3.8-3.8V209.9c0-2.1 1.7-3.8 3.8-3.8h43.1c2.1 0 3.8 1.7 3.8 3.8v116.7c0 2-1.7 3.7-3.8 3.7z" fill="#F8B62D"/>
16
+ <path d="M360.3 340.4c-19.5 0-35.4-15.9-35.4-35.4v-73.6c0-19.5 15.9-35.4 35.4-35.4s35.4 15.9 35.4 35.4V305c0.1 19.5-15.8 35.4-35.4 35.4z m0-124.2c-8.4 0-15.2 6.8-15.2 15.2V305c0 8.4 6.8 15.2 15.2 15.2 8.4 0 15.2-6.8 15.2-15.2v-73.6c0.1-8.4-6.8-15.2-15.2-15.2zM866.3 856.4h-24c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1h24c5.6 0 10.1 4.5 10.1 10.1s-4.6 10.1-10.1 10.1zM123.6 856.4H92.9c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1h30.7c5.6 0 10.1 4.5 10.1 10.1s-4.5 10.1-10.1 10.1zM803.7 856.4H155.4c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1h648.3c5.6 0 10.1 4.5 10.1 10.1s-4.5 10.1-10.1 10.1z" fill="#3E3A39"/>
17
+ <path d="M665.7 737.2m-127.1 0a127.1 127.1 0 1 0 254.2 0 127.1 127.1 0 1 0-254.2 0Z" fill="#FFFFFF"/>
18
+ <path d="M659.8 874.3c-82.6 0-149.8-67.2-149.8-149.8 0-82.6 67.2-149.8 149.8-149.8S809.5 642 809.5 724.6c0 82.5-67.1 149.7-149.7 149.7z m0-279.3c-71.5 0-129.6 58.1-129.6 129.6s58.1 129.6 129.6 129.6S789.4 796 789.4 724.6c0-71.5-58.2-129.6-129.6-129.6z" fill="#3E3A39"/>
19
+ <path d="M649.3 797c-2.5 0-4.9-0.9-6.7-2.6l-64.8-58.2c-4.1-3.7-4.5-10.1-0.8-14.2s10.1-4.5 14.2-0.8l56.7 50.9 77.4-101.2c3.4-4.4 9.7-5.3 14.1-1.9s5.3 9.7 1.9 14.1l-84 109.9c-1.7 2.2-4.3 3.7-7.1 3.9-0.2 0.1-0.6 0.1-0.9 0.1z" fill="#3E3A39"/>
20
+ <path d="M692.1 126.3c-15.1 0-27.3-12.3-27.3-27.3 0-15.1 12.3-27.3 27.3-27.3 15.1 0 27.3 12.3 27.3 27.3 0 15.1-12.2 27.3-27.3 27.3z m0-41.2c-7.7 0-13.9 6.2-13.9 13.9s6.2 13.9 13.9 13.9S706 106.7 706 99s-6.2-13.9-13.9-13.9z" fill="#47B7F8"/>
21
+ <path d="M249 169.9h-12v-12c0-3.2-2.6-5.8-5.8-5.8-3.2 0-5.8 2.6-5.8 5.8v12h-12c-3.2 0-5.8 2.6-5.8 5.8 0 3.2 2.6 5.8 5.8 5.8h12v12c0 3.2 2.6 5.8 5.8 5.8 3.2 0 5.8-2.6 5.8-5.8v-12h12c3.2 0 5.8-2.6 5.8-5.8 0-3.2-2.6-5.8-5.8-5.8zM853.2 286.2h-12v-12c0-3.2-2.6-5.8-5.8-5.8-3.2 0-5.8 2.6-5.8 5.8v12h-12c-3.2 0-5.8 2.6-5.8 5.8s2.6 5.8 5.8 5.8h12v12c0 3.2 2.6 5.8 5.8 5.8 3.2 0 5.8-2.6 5.8-5.8v-12h12c3.2 0 5.8-2.6 5.8-5.8s-2.6-5.8-5.8-5.8z" fill="#F7E42F"/>
22
+ <path d="M112.5 443.7H98.6v-13.9a6.7 6.7 0 0 0-13.4 0v13.9h-14a6.7 6.7 0 0 0 0 13.4h13.9V471a6.7 6.7 0 0 0 13.4 0v-13.9h13.9c3.7 0 6.7-3 6.7-6.7s-2.9-6.7-6.6-6.7z" fill="#F8B62D"/>
23
+ <path d="M340.1 109.1m-10.1 0a10.1 10.1 0 1 0 20.2 0 10.1 10.1 0 1 0-20.2 0Z" fill="#F8B62D"/>
24
+ <path d="M790.8 162.3m-13.4 0a13.4 13.4 0 1 0 26.8 0 13.4 13.4 0 1 0-26.8 0Z" fill="#F8B62D"/>
25
+ <path d="M545.3 115.7m-13.4 0a13.4 13.4 0 1 0 26.8 0 13.4 13.4 0 1 0-26.8 0Z" fill="#F7E42F"/>
26
+ <path d="M125.5 291.9c-15.1 0-27.3-12.3-27.3-27.3 0-15.1 12.3-27.3 27.3-27.3s27.3 12.3 27.3 27.3c0 15.1-12.3 27.3-27.3 27.3z m0-41.2c-7.7 0-13.9 6.2-13.9 13.9s6.2 13.9 13.9 13.9 13.9-6.2 13.9-13.9-6.3-13.9-13.9-13.9z" fill="#F8B62D"/>
27
+ <path d="M472.7 166.3c-1.5-1.4-3.8-1.4-5.3 0-0.7 0.7-1.1 1.6-1.1 2.6s0.4 1.9 1.1 2.6l11.9 11.9c0.7 0.7 1.6 1.1 2.6 1.1s1.9-0.4 2.6-1.1c1.4-1.5 1.4-3.8 0-5.3l-11.8-11.8zM504.3 197.9c-0.7-0.7-1.6-1.1-2.6-1.1s-1.9 0.4-2.6 1.1c-1.4 1.5-1.4 3.8 0 5.3l11.9 11.9c0.7 0.7 1.6 1.1 2.6 1.1s1.9-0.4 2.6-1.1c0.7-0.7 1.1-1.6 1.1-2.6s-0.4-1.9-1.1-2.6l-11.9-12zM501.6 184.6c1 0 1.9-0.4 2.6-1.1l11.9-11.9c0.7-0.7 1.1-1.6 1.1-2.6s-0.4-1.9-1.1-2.6c-1.5-1.5-3.8-1.5-5.3 0L499 178.3c-1.4 1.5-1.4 3.8 0 5.3 0.7 0.7 1.6 1 2.6 1zM479.4 197.9l-11.9 11.9c-0.7 0.7-1.1 1.6-1.1 2.6s0.4 1.9 1.1 2.6c0.7 0.7 1.6 1.1 2.6 1.1s1.9-0.4 2.6-1.1l11.9-11.9c1.4-1.5 1.4-3.8 0-5.3-1.3-1.3-3.8-1.3-5.2 0.1zM481.7 190.7c0-2.1-1.7-3.7-3.7-3.7h-16.9c-2.1 0-3.7 1.7-3.7 3.7 0 2.1 1.7 3.7 3.7 3.7H478c2 0 3.7-1.6 3.7-3.7zM522.6 187h-16.9c-2.1 0-3.7 1.7-3.7 3.7 0 2.1 1.7 3.7 3.7 3.7h16.9c2.1 0 3.7-1.7 3.7-3.7s-1.7-3.7-3.7-3.7zM491.8 156.2c-2.1 0-3.7 1.7-3.7 3.7v16.9c0 2.1 1.7 3.7 3.7 3.7 2.1 0 3.7-1.7 3.7-3.7V160c0-2.1-1.6-3.8-3.7-3.8zM491.8 200.8c-2.1 0-3.7 1.7-3.7 3.7v16.9c0 2.1 1.7 3.7 3.7 3.7 2.1 0 3.7-1.7 3.7-3.7v-16.9c0-2-1.6-3.7-3.7-3.7z" fill="#FAEE00"/>
28
+ <path d="M905.9 417c-1.5-1.4-3.8-1.4-5.3 0-0.7 0.7-1.1 1.6-1.1 2.6s0.4 1.9 1.1 2.6l11.9 11.9c0.7 0.7 1.6 1.1 2.6 1.1s1.9-0.4 2.6-1.1c1.4-1.5 1.4-3.8 0-5.3L905.9 417zM937.5 448.5c-0.7-0.7-1.6-1.1-2.6-1.1s-1.9 0.4-2.6 1.1c-1.4 1.5-1.4 3.8 0 5.3l11.9 11.9c0.7 0.7 1.6 1.1 2.6 1.1s1.9-0.4 2.6-1.1c0.7-0.7 1.1-1.6 1.1-2.6s-0.4-1.9-1.1-2.6l-11.9-12zM934.8 435.3c1 0 1.9-0.4 2.6-1.1l11.9-11.9c0.7-0.7 1.1-1.6 1.1-2.6s-0.4-1.9-1.1-2.6c-1.5-1.5-3.8-1.5-5.3 0L932.1 429c-1.4 1.5-1.4 3.8 0 5.3 0.8 0.6 1.7 1 2.7 1zM912.6 448.5l-11.9 11.9c-0.7 0.7-1.1 1.6-1.1 2.6s0.4 1.9 1.1 2.6c0.7 0.7 1.6 1.1 2.6 1.1s1.9-0.4 2.6-1.1l11.9-11.9c1.4-1.5 1.4-3.8 0-5.3-1.3-1.3-3.8-1.3-5.2 0.1zM914.9 441.4c0-2.1-1.7-3.7-3.7-3.7h-16.9c-2.1 0-3.7 1.7-3.7 3.7s1.7 3.7 3.7 3.7h16.9c2 0 3.7-1.7 3.7-3.7zM955.8 437.6h-16.9c-2.1 0-3.7 1.7-3.7 3.7s1.7 3.7 3.7 3.7h16.9c2.1 0 3.7-1.7 3.7-3.7s-1.7-3.7-3.7-3.7zM925 406.9c-2.1 0-3.7 1.7-3.7 3.7v16.9c0 2.1 1.7 3.7 3.7 3.7s3.7-1.7 3.7-3.7v-16.9c0.1-2-1.6-3.7-3.7-3.7zM925 451.5c-2.1 0-3.7 1.7-3.7 3.7v16.9c0 2.1 1.7 3.7 3.7 3.7s3.7-1.7 3.7-3.7v-16.9c0.1-2.1-1.6-3.7-3.7-3.7z" fill="#F8B62D"/>
29
+ <path d="M648.3 330.3h-43.1c-2.1 0-3.8-1.7-3.8-3.8V209.9c0-2.1 1.7-3.8 3.8-3.8h43.1c2.1 0 3.8 1.7 3.8 3.8v116.7c0 2-1.7 3.7-3.8 3.7z" fill="#F8B62D"/>
30
+ <path d="M626.7 340.4c-19.5 0-35.4-15.9-35.4-35.4v-73.6c0-19.5 15.9-35.4 35.4-35.4s35.4 15.9 35.4 35.4V305c0.1 19.5-15.8 35.4-35.4 35.4z m0-124.2c-8.4 0-15.2 6.8-15.2 15.2V305c0 8.4 6.8 15.2 15.2 15.2 8.4 0 15.2-6.8 15.2-15.2v-73.6c0.1-8.4-6.8-15.2-15.2-15.2z" fill="#3E3A39"/>
31
+ <path d="M271.3 381.9c-5.6 0-10.1-4.5-10.1-10.1V341c0-17.7 14.4-32.1 32.1-32.1h17.8c5.6 0 10.1 4.5 10.1 10.1s-4.5 10.1-10.1 10.1h-17.8c-6.6 0-12 5.4-12 12v30.8c0.1 5.5-4.4 10-10 10z" fill="#FFFFFF"/>
32
+ <path d="M271.3 576.4c-5.6 0-10.1-4.5-10.1-10.1V455.6c0-5.6 4.5-10.1 10.1-10.1s10.1 4.5 10.1 10.1v110.7c0 5.6-4.5 10.1-10.1 10.1z" fill="#FFFFFF"/>
33
33
  </svg>