af-mobile-client-vue3 1.3.36 → 1.3.38

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 (281) hide show
  1. package/.cursorrules +60 -60
  2. package/.editorconfig +9 -9
  3. package/.env +10 -10
  4. package/.env.development +1 -1
  5. package/.env.production +1 -1
  6. package/.node-version +1 -1
  7. package/.vscode/extensions.json +12 -12
  8. package/.vscode/settings.json +68 -68
  9. package/CLAUDE.md +218 -218
  10. package/README.md +182 -182
  11. package/af-example-mobile-vue-web.iml +9 -9
  12. package/build/vite/index.ts +98 -98
  13. package/build/vite/optimize.ts +34 -34
  14. package/build/vite/vconsole.ts +47 -47
  15. package/commitlint.config.ts +32 -32
  16. package/compress.js +36 -36
  17. package/eslint.config.ts +31 -31
  18. package/index.html +23 -23
  19. package/mock/data.ts +20 -20
  20. package/mock/index.ts +7 -7
  21. package/mock/modules/prose.mock.ts +13 -13
  22. package/mock/modules/user.mock.ts +95 -95
  23. package/mock/util.ts +19 -19
  24. package/netlify.toml +12 -12
  25. package/package.json +114 -114
  26. package/postcss.config.ts +27 -27
  27. package/public/favicon.svg +4 -4
  28. package/public/safari-pinned-tab.svg +4 -4
  29. package/scripts/verifyCommit.js +19 -19
  30. package/src/App.vue +79 -79
  31. package/src/api/auth/index.ts +77 -77
  32. package/src/api/auth/types.ts +200 -200
  33. package/src/api/mock/index.ts +30 -30
  34. package/src/api/user/index.ts +40 -40
  35. package/src/assets/img/user/login/background-shadow-1.svg +20 -20
  36. package/src/assets/img/user/login/logo-background.svg +20 -20
  37. package/src/bootstrap.ts +26 -26
  38. package/src/components/core/BeautifulLoading/index.vue +52 -52
  39. package/src/components/core/ImageUploader/index.vue +251 -251
  40. package/src/components/core/NavBar/index.vue +53 -53
  41. package/src/components/core/Tabbar/index.vue +32 -32
  42. package/src/components/core/Uploader/index.vue +124 -124
  43. package/src/components/core/XGridDropOption/index.vue +154 -154
  44. package/src/components/core/XMultiSelect/index.vue +183 -183
  45. package/src/components/core/XSelect/index.vue +149 -149
  46. package/src/components/data/CardContainer/CardContainer.vue +118 -118
  47. package/src/components/data/CardContainer/CardHeader.vue +99 -99
  48. package/src/components/data/InfoDisplay/index.vue +132 -132
  49. package/src/components/data/UserDetail/api.ts +24 -24
  50. package/src/components/data/UserDetail/index.vue +620 -620
  51. package/src/components/data/UserDetail/recordEntries.ts +159 -159
  52. package/src/components/data/UserDetail/types.ts +26 -26
  53. package/src/components/data/XBadge/index.vue +82 -82
  54. package/src/components/data/XCellDetail/index.vue +105 -105
  55. package/src/components/data/XCellList/XCellList.md +432 -432
  56. package/src/components/data/XCellList/index.vue +1436 -1436
  57. package/src/components/data/XCellListFilter/QrScanner/index.vue +207 -207
  58. package/src/components/data/XCellListFilter/QrScanner/startScanAnimation.ts +53 -53
  59. package/src/components/data/XCellListFilter/VpnRecognition/index.vue +119 -119
  60. package/src/components/data/XCellListFilter/index.vue +705 -705
  61. package/src/components/data/XForm/index.vue +659 -659
  62. package/src/components/data/XFormGroup/doc/DeviceForm.vue +122 -122
  63. package/src/components/data/XFormGroup/doc/FormGroupDemo.vue +56 -56
  64. package/src/components/data/XFormGroup/doc/README.md +286 -286
  65. package/src/components/data/XFormGroup/doc/UserForm.vue +102 -102
  66. package/src/components/data/XFormGroup/index.vue +240 -240
  67. package/src/components/data/XFormItem/index.vue +1311 -1311
  68. package/src/components/data/XOlMap/README.md +227 -227
  69. package/src/components/data/XOlMap/XLocationPicker/index.vue +226 -226
  70. package/src/components/data/XOlMap/index.vue +1490 -1490
  71. package/src/components/data/XOlMap/types.ts +149 -149
  72. package/src/components/data/XOlMap/utils/wgs84ToGcj02.ts +171 -171
  73. package/src/components/data/XReportForm/DateTimeSecondsPicker.vue +208 -208
  74. package/src/components/data/XReportForm/XReportFormJsonRender.vue +220 -220
  75. package/src/components/data/XReportForm/index.vue +1393 -1393
  76. package/src/components/data/XReportGrid/XAddReport/XAddReport.vue +198 -198
  77. package/src/components/data/XReportGrid/XAddReport/index.js +3 -3
  78. package/src/components/data/XReportGrid/XAddReport/index.md +53 -53
  79. package/src/components/data/XReportGrid/XAddReport/index.ts +10 -10
  80. package/src/components/data/XReportGrid/XReport.vue +960 -960
  81. package/src/components/data/XReportGrid/XReportDemo.vue +33 -33
  82. package/src/components/data/XReportGrid/XReportDesign.vue +597 -597
  83. package/src/components/data/XReportGrid/XReportDrawer/XReportDrawer.vue +148 -148
  84. package/src/components/data/XReportGrid/XReportDrawer/index.js +3 -3
  85. package/src/components/data/XReportGrid/XReportDrawer/index.ts +10 -10
  86. package/src/components/data/XReportGrid/XReportJsonRender.vue +399 -399
  87. package/src/components/data/XReportGrid/XReportTrGroup.vue +592 -592
  88. package/src/components/data/XReportGrid/index.md +46 -46
  89. package/src/components/data/XReportGrid/print.js +184 -184
  90. package/src/components/data/XSignature/index.vue +284 -284
  91. package/src/components/data/XTag/index.vue +10 -10
  92. package/src/components/layout/NormalDataLayout/index.vue +69 -69
  93. package/src/components/layout/TabBarLayout/index.vue +40 -40
  94. package/src/composables/dark.ts +5 -5
  95. package/src/config/routes.ts +9 -9
  96. package/src/constants/index.ts +2 -2
  97. package/src/enums/requestEnum.ts +25 -25
  98. package/src/expression/ExpressionRunner.ts +28 -28
  99. package/src/expression/TestExpression.ts +510 -510
  100. package/src/expression/core/Delegate.ts +116 -116
  101. package/src/expression/core/Expression.ts +1359 -1359
  102. package/src/expression/core/Program.ts +985 -985
  103. package/src/expression/core/Token.ts +29 -29
  104. package/src/expression/enums/ExpressionType.ts +81 -81
  105. package/src/expression/enums/TokenType.ts +11 -11
  106. package/src/expression/exception/BreakWayException.ts +2 -2
  107. package/src/expression/exception/ContinueWayException.ts +2 -2
  108. package/src/expression/exception/ExpressionException.ts +29 -29
  109. package/src/expression/exception/ReturnWayException.ts +14 -14
  110. package/src/expression/exception/ServiceException.ts +22 -22
  111. package/src/expression/instances/JSONArray.ts +52 -52
  112. package/src/expression/instances/JSONObject.ts +118 -118
  113. package/src/expression/instances/LogicConsole.ts +31 -31
  114. package/src/font-style/font.css +4 -4
  115. package/src/hooks/useBoolean.ts +26 -26
  116. package/src/hooks/useCommon.ts +9 -9
  117. package/src/hooks/useLoading.ts +16 -16
  118. package/src/hooks/useLogin.ts +97 -97
  119. package/src/icons/svg/check-in.svg +32 -32
  120. package/src/icons/svg/dark.svg +4 -4
  121. package/src/icons/svg/github.svg +4 -4
  122. package/src/icons/svg/light.svg +4 -4
  123. package/src/icons/svg/link.svg +4 -4
  124. package/src/icons/svgo.yml +22 -22
  125. package/src/layout/GridView/index.vue +16 -16
  126. package/src/layout/PageLayout.vue +9 -9
  127. package/src/layout/SingleLayout.vue +9 -9
  128. package/src/locales/en-US.json +128 -128
  129. package/src/locales/zh-CN.json +128 -128
  130. package/src/logic/LogicRunner.ts +67 -67
  131. package/src/logic/TestLogic.ts +13 -13
  132. package/src/logic/plugins/common/DateTools.ts +35 -35
  133. package/src/logic/plugins/common/VueTools.ts +30 -30
  134. package/src/logic/plugins/index.ts +7 -7
  135. package/src/main.ts +44 -44
  136. package/src/plugins/AppData.ts +38 -38
  137. package/src/plugins/GetLoginInfoService.ts +10 -10
  138. package/src/plugins/collectIcons.ts +10 -10
  139. package/src/plugins/index.ts +11 -11
  140. package/src/router/README.md +8 -8
  141. package/src/router/external-routes.ts +60 -60
  142. package/src/router/guards.ts +131 -131
  143. package/src/router/index.ts +35 -35
  144. package/src/router/invoiceRoutes.ts +33 -33
  145. package/src/router/routes.ts +421 -421
  146. package/src/services/api/Login.ts +6 -6
  147. package/src/services/api/common.ts +109 -109
  148. package/src/services/api/index.ts +7 -7
  149. package/src/services/api/manage.ts +8 -8
  150. package/src/services/api/search.ts +16 -16
  151. package/src/services/api/user.ts +17 -17
  152. package/src/services/restTools.ts +56 -56
  153. package/src/services/v3Api.ts +147 -147
  154. package/src/stores/index.ts +13 -13
  155. package/src/stores/modules/counter.ts +19 -19
  156. package/src/stores/modules/homeApp.ts +55 -55
  157. package/src/stores/modules/routeCache.ts +22 -22
  158. package/src/stores/modules/setting.ts +87 -87
  159. package/src/stores/modules/user.ts +326 -326
  160. package/src/stores/mutation-type.ts +12 -12
  161. package/src/styles/app.less +36 -36
  162. package/src/styles/login.less +109 -109
  163. package/src/styles/var.less +25 -25
  164. package/src/types/auth.ts +89 -89
  165. package/src/types/env.d.ts +16 -16
  166. package/src/types/platform.ts +194 -194
  167. package/src/types/settings.ts +1 -1
  168. package/src/types/vue-router.d.ts +13 -13
  169. package/src/utils/Storage.ts +124 -124
  170. package/src/utils/authority-utils.ts +84 -84
  171. package/src/utils/common.ts +41 -41
  172. package/src/utils/crypto.ts +39 -39
  173. package/src/utils/dataUtil.ts +42 -42
  174. package/src/utils/dictUtil.ts +52 -52
  175. package/src/utils/http/index.ts +201 -201
  176. package/src/utils/i18n.ts +72 -72
  177. package/src/utils/indexedDB.ts +195 -195
  178. package/src/utils/inline-px-to-vw.ts +28 -28
  179. package/src/utils/mobileUtil.ts +38 -33
  180. package/src/utils/platform-auth.ts +135 -135
  181. package/src/utils/progress.ts +19 -19
  182. package/src/utils/queryFormDefaultRangePicker.ts +57 -57
  183. package/src/utils/routerUtil.ts +271 -271
  184. package/src/utils/runEvalFunction.ts +13 -13
  185. package/src/utils/secureStorage.ts +70 -70
  186. package/src/utils/set-page-title.ts +5 -5
  187. package/src/utils/validate.ts +6 -6
  188. package/src/views/chat/index.vue +153 -153
  189. package/src/views/common/Forbidden.vue +97 -97
  190. package/src/views/common/LoadError.vue +63 -63
  191. package/src/views/common/NotFound.vue +67 -67
  192. package/src/views/component/EvaluateRecordView/index.vue +40 -40
  193. package/src/views/component/IconifyView/index.vue +504 -504
  194. package/src/views/component/UserDetailView/UserDetailPage.vue +77 -77
  195. package/src/views/component/UserDetailView/index.vue +234 -234
  196. package/src/views/component/XCellDetailView/index.vue +217 -217
  197. package/src/views/component/XCellListView/index.vue +108 -108
  198. package/src/views/component/XFormAppraiseView/index.vue +174 -174
  199. package/src/views/component/XFormGroupView/index.vue +78 -78
  200. package/src/views/component/XFormView/index.vue +27 -27
  201. package/src/views/component/XOlMapView/index.vue +434 -434
  202. package/src/views/component/XOlMapView/testData.ts +64 -64
  203. package/src/views/component/XReportFormIframeView/index.vue +47 -47
  204. package/src/views/component/XReportFormView/index.vue +13 -13
  205. package/src/views/component/XReportGridView/index.vue +17 -17
  206. package/src/views/component/XRequestView/index.vue +234 -234
  207. package/src/views/component/XSignatureView/index.vue +50 -50
  208. package/src/views/component/index.vue +181 -181
  209. package/src/views/component/menu.vue +117 -117
  210. package/src/views/component/notice.vue +46 -46
  211. package/src/views/component/topNav.vue +36 -36
  212. package/src/views/external/index.vue +152 -152
  213. package/src/views/invoiceShow/index.vue +61 -61
  214. package/src/views/loading/AuthLoading.vue +345 -345
  215. package/src/views/user/login/ForgetPasswordForm.vue +94 -94
  216. package/src/views/user/login/LoginForm.vue +350 -350
  217. package/src/views/user/login/LoginTitle.vue +76 -76
  218. package/src/views/user/login/LoginWave.vue +109 -109
  219. package/src/views/user/login/index.vue +22 -22
  220. package/src/views/user/my/comm/ModifyPassword.vue +346 -346
  221. package/src/views/user/my/index.vue +507 -507
  222. package/src/views/user/register/index.vue +952 -952
  223. package/src/views/userRecords/AbnormalAlarmRecords.vue +21 -21
  224. package/src/views/userRecords/CardReplacementRecords.vue +21 -21
  225. package/src/views/userRecords/ChangeRecords.vue +19 -19
  226. package/src/views/userRecords/CommandViewRecords.vue +20 -20
  227. package/src/views/userRecords/GasCompensationRecords.vue +20 -20
  228. package/src/views/userRecords/InstrumentCollectionRecords.vue +21 -21
  229. package/src/views/userRecords/MeterRecords.vue +20 -20
  230. package/src/views/userRecords/OperateRecords.vue +51 -51
  231. package/src/views/userRecords/OtherChargeRecords.vue +19 -19
  232. package/src/views/userRecords/PaymentRecords.vue +28 -28
  233. package/src/views/userRecords/PriceAdjustmentRecords.vue +19 -19
  234. package/src/views/userRecords/ReplacementRecords.vue +19 -19
  235. package/src/views/userRecords/SafetyRecords.vue +19 -19
  236. package/src/views/userRecords/TransactionRecords.vue +21 -21
  237. package/src/views/userRecords/TransferRecords.vue +19 -19
  238. package/src/views/userRecords/operateRecordDetail/index.vue +316 -316
  239. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AddUserDetail.vue +124 -124
  240. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AdvanceDeliveryDetail.vue +88 -88
  241. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsCancelDetail.vue +205 -205
  242. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsDetail.vue +192 -192
  243. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankDkDetail.vue +192 -192
  244. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankPayDetail.vue +192 -192
  245. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BlacklistDetail.vue +153 -153
  246. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CancellationDetail.vue +101 -101
  247. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterCancelDetail.vue +127 -127
  248. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterDetail.vue +153 -153
  249. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardOverUserDetail.vue +153 -153
  250. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterCancelDetail.vue +166 -166
  251. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterDetail.vue +205 -205
  252. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/DisableManageDetail.vue +127 -127
  253. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/EnableManageDetail.vue +114 -114
  254. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FaZheChangeDetail.vue +124 -124
  255. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FeeDeductionDetail.vue +153 -153
  256. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/GasPriceChangeDetail.vue +126 -126
  257. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/InputtorChangeDetail.vue +126 -126
  258. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterCancelDetail.vue +114 -114
  259. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterDetail.vue +127 -127
  260. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotOpenDetail.vue +88 -88
  261. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineCardDetail.vue +101 -101
  262. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterCancelDetail.vue +218 -218
  263. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterDetail.vue +153 -153
  264. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OffGasAddGasDetail.vue +140 -140
  265. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeCancelDetail.vue +127 -127
  266. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeDetail.vue +114 -114
  267. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OverUserChangeDetail.vue +127 -127
  268. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReBillDetail.vue +127 -127
  269. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/RefundDetail.vue +114 -114
  270. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageCancelDetail.vue +127 -127
  271. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageDetail.vue +114 -114
  272. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/SaleCardGasDetail.vue +140 -140
  273. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageCancelDetail.vue +152 -152
  274. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageDetail.vue +178 -178
  275. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/UserChangeDetail.vue +123 -123
  276. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/WechatPayDetail.vue +192 -192
  277. package/src/views/userRecords/types.ts +66 -66
  278. package/tsconfig.json +39 -39
  279. package/uno.config.ts +82 -82
  280. package/vite.config.ts +114 -114
  281. package/.claude/settings.local.json +0 -14
package/CLAUDE.md CHANGED
@@ -1,218 +1,218 @@
1
- # CLAUDE.md
2
-
3
- This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
-
5
- ## Project Overview
6
-
7
- This is a Vue 3 mobile client application (`af-mobile-client-vue3`) built as a smart gas system (智慧燃气) mobile application. It serves as a micro-frontend main application with comprehensive business components and dynamic form capabilities.
8
-
9
- ## Development Commands
10
-
11
- ```bash
12
- # Install dependencies
13
- pnpm install
14
-
15
- # Development server (with mock server on port 8086)
16
- pnpm dev
17
-
18
- # Build for production
19
- pnpm build:pro
20
-
21
- # Build for development environment
22
- pnpm build:dev
23
-
24
- # Lint and type checking
25
- pnpm lint
26
-
27
- # Auto-fix linting issues
28
- pnpm lint:fix
29
-
30
- # Type checking only
31
- pnpm typecheck
32
-
33
- # Version release
34
- pnpm release
35
-
36
- # Compress build files
37
- pnpm compress
38
- ```
39
-
40
- ## Technology Stack
41
-
42
- - **Vue 3** with Composition API and `<script setup>` syntax
43
- - **TypeScript** for type safety
44
- - **Vite** as build tool (port 7190)
45
- - **Vant 4** as primary UI component library
46
- - **Pinia** for state management with persistence
47
- - **pnpm** as package manager (requires Node.js >=20.19.0)
48
- - **UnoCSS** for atomic CSS utilities
49
- - **@micro-zoe/micro-app** for micro-frontend architecture
50
-
51
- ## Code Style & Standards
52
-
53
- From `.cursorrules`:
54
-
55
- - Use Composition API and `<script setup>` syntax
56
- - Component names: PascalCase (e.g., `UserProfile`)
57
- - Variables: camelCase (e.g., `userName`)
58
- - Boolean variables: use `is/has/should` prefix (e.g., `isLoading`)
59
- - Event handlers: use `handle` prefix (e.g., `handleSubmit`)
60
- - CSS classes: kebab-case (e.g., `user-profile`)
61
- - **Must explicitly import Vant components** - auto-import is disabled for this component library project
62
- - Use `interface` for type definitions, `type` for unions/intersections
63
- - Props must specify types
64
-
65
- ## Architecture
66
-
67
- ### Directory Structure
68
-
69
- ```
70
- src/
71
- ├── components/
72
- │ ├── core/ # Core UI components (NavBar, Tabbar, Uploader)
73
- │ ├── data/ # Business data components
74
- │ │ ├── XReportForm/ # Dynamic form with JSON configuration
75
- │ │ ├── XReportGrid/ # Data grid with reporting
76
- │ │ └── XForm/ # General form components
77
- │ └── layout/ # Layout components
78
- ├── stores/ # Pinia state management
79
- ├── utils/ # Utility functions
80
- ├── views/ # Page components
81
- ├── router/ # Vue Router configuration
82
- └── api/ # API layer
83
- ```
84
-
85
- ### Key Business Components
86
-
87
- **XReportForm Component** (`src/components/data/XReportForm/index.vue`):
88
-
89
- - **Configuration-driven form engine**: Supports two modes - traditional config and pure JSON mode
90
- - **Field types**: `input`, `datePicker`, `timePicker`, `dateTimeSecondsPicker`, `curDateInput`, `signature`, `images`, `inputs`, `inputColumns`
91
- - **Slot-based extensibility**: Advanced slot system with `slotsDeclare` mechanism for complex layouts
92
- - **Deep object binding**: Support for nested data structures using `@@@` separator syntax
93
- - **Dynamic validation**: Built-in field validation with custom error messages
94
- - **Mobile-optimized**: Full Vant UI integration with touch-friendly controls
95
-
96
- **XReportGrid Component** (`src/components/data/XReportGrid/XReport.vue`):
97
-
98
- - **Dual-mode operation**: Design mode for configuration, Display mode for data presentation
99
- - **Dynamic cell rendering**: Support for various cell types including custom function execution
100
- - **Advanced table features**: Complex rowspan/colspan handling with automatic layout algorithms
101
- - **Export capabilities**: PDF generation, print functionality, and data export
102
- - **Component registry**: Provider pattern for dynamic child component management
103
-
104
- ### State Management
105
-
106
- - **Pinia stores** with persistence via `pinia-plugin-persistedstate`
107
- - **User store**: Authentication, permissions, user data
108
- - **Settings store**: Application configuration
109
- - **Route cache store**: Performance optimization
110
-
111
- ### API Layer
112
-
113
- - **Service architecture**: RESTful wrapper with request/response transformation in `src/services/`
114
- - **V3/V4 API compatibility**: Automatic response format handling across API versions
115
- - **Authentication**: Token-based auth with automatic refresh and crypto-js encryption
116
- - **Mock server integration**: Vite-based mock development server on port 8086
117
- - **Configuration management**: Dynamic API configuration retrieval and caching
118
-
119
- ### Expression and Logic Engine
120
-
121
- - **Custom expression system** (`src/expression/`): Full expression evaluation engine
122
- - **LogicRunner framework**: Business logic execution with plugin architecture
123
- - **Dynamic behavior**: Used in XReportForm and XReportGrid for runtime functionality
124
-
125
- ## Development Workflow
126
-
127
- ### Server Configuration
128
-
129
- - **Development server**: Port 7190 with hot reload and Vue DevTools
130
- - **Mock server**: Port 8086 with full API mocking via `vite-plugin-mock-dev-server`
131
- - **API proxies**: Multiple endpoints configured in `vite.config.ts` for v3/v4 compatibility
132
- - **Allowed hosts**: Configured for `.aofengcloud.com` domain access
133
-
134
- ### Build Process
135
-
136
- - **Code splitting**: `third` (node_modules), `views` (business pages) for optimal loading
137
- - **Asset organization**: Static files in hashed directories for cache management
138
- - **Mobile optimization**: CSS code splitting disabled, PWA capabilities enabled
139
- - **Legacy support**: Vite legacy plugin for older browser compatibility
140
- - **Compression**: Gzip compression for production builds (threshold: 10KB)
141
-
142
- ### Git Hooks
143
-
144
- - Pre-commit: `pnpm lint-staged` (ESLint auto-fix)
145
- - Commit message: `pnpm commitlint` (conventional commits)
146
-
147
- ## Micro-Frontend Integration
148
-
149
- This is a **main application** for micro-frontend architecture using `@micro-zoe/micro-app`:
150
-
151
- - **Route flattening**: Child app routes are automatically flattened for compatibility
152
- - **Component isolation**: Each micro-app maintains separate component registry
153
- - **Custom element registration**: Vite configured to handle `<micro-app>` tags
154
- - **Global unmount**: Window-level unmount function for clean micro-app teardown
155
- - **Child app registration**: Register new micro-apps in `microApps.ts` configuration
156
- - **Environment detection**: Automatic detection when running as child vs main app
157
-
158
- ## Mobile-Specific Features
159
-
160
- - **@vant/touch-emulator** for desktop development
161
- - **postcss-mobile-forever** for viewport handling
162
- - **vite-plugin-pwa** for PWA capabilities
163
- - **VConsole** for mobile debugging
164
- - Dark mode support throughout the application
165
-
166
- ## Common Patterns
167
-
168
- ### Adding New Field Types to XReportForm
169
-
170
- 1. **Add field type support**: Update `generateDefaultRequiredMessage()` function in component
171
- 2. **Configure rendering**: Add case in `formatConfigToForm()` switch statement for field processing
172
- 3. **Template implementation**: Add corresponding template section with Vant component integration
173
- 4. **Data binding**: Follow `@@@` deep object binding patterns for nested data structures
174
- 5. **Validation**: Implement field-specific validation rules using existing validation framework
175
-
176
- ### Component Development
177
-
178
- - Use `<script setup lang="ts">` syntax
179
- - Explicitly import Vant components
180
- - Define props with TypeScript interfaces
181
- - Use `defineEmits` for events
182
- - Follow existing component structure patterns
183
-
184
- ### API Integration
185
-
186
- - **HTTP client**: Use service layer in `src/services/` rather than direct HTTP calls
187
- - **V3/V4 compatibility**: Follow established patterns for API version handling in service files
188
- - **Error handling**: Use consistent error patterns with user feedback integration
189
- - **Authentication**: Leverage automatic token management and refresh mechanisms
190
- - **Configuration**: Access dynamic API configuration through common service layer
191
-
192
- ### Micro-Frontend Development
193
-
194
- - **Child app creation**: Derive from existing project structure, update app identifiers
195
- - **Route registration**: Add child app routes to main app's `microApps.ts` configuration
196
- - **Isolation**: Maintain component and state isolation between micro-apps
197
- - **Communication**: Use established patterns for parent-child communication
198
-
199
- ## Testing & Quality
200
-
201
- - **ESLint** with `@antfu/eslint-config`
202
- - **TypeScript** strict mode
203
- - **Vue TSC** for type checking
204
- - **Commitlint** for commit message standards
205
- - **Lint-staged** for pre-commit hooks
206
-
207
- ## 注意事项 (Important Notes)
208
-
209
- - **No auto-import**: This project does NOT use auto-import plugins - you MUST explicitly import all Vue APIs (`ref`, `computed`, etc.) and Vant components
210
- - **Path aliases**: Use `@af-mobile-client-vue3/` to reference `src/` directory (not `@/`) for business project consistency
211
- - **Component library approach**: Explicit imports required for all dependencies to maintain clear component boundaries
212
-
213
- # important-instruction-reminders
214
-
215
- Do what has been asked; nothing more, nothing less.
216
- NEVER create files unless they're absolutely necessary for achieving your goal.
217
- ALWAYS prefer editing an existing file to creating a new one.
218
- NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User.
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ This is a Vue 3 mobile client application (`af-mobile-client-vue3`) built as a smart gas system (智慧燃气) mobile application. It serves as a micro-frontend main application with comprehensive business components and dynamic form capabilities.
8
+
9
+ ## Development Commands
10
+
11
+ ```bash
12
+ # Install dependencies
13
+ pnpm install
14
+
15
+ # Development server (with mock server on port 8086)
16
+ pnpm dev
17
+
18
+ # Build for production
19
+ pnpm build:pro
20
+
21
+ # Build for development environment
22
+ pnpm build:dev
23
+
24
+ # Lint and type checking
25
+ pnpm lint
26
+
27
+ # Auto-fix linting issues
28
+ pnpm lint:fix
29
+
30
+ # Type checking only
31
+ pnpm typecheck
32
+
33
+ # Version release
34
+ pnpm release
35
+
36
+ # Compress build files
37
+ pnpm compress
38
+ ```
39
+
40
+ ## Technology Stack
41
+
42
+ - **Vue 3** with Composition API and `<script setup>` syntax
43
+ - **TypeScript** for type safety
44
+ - **Vite** as build tool (port 7190)
45
+ - **Vant 4** as primary UI component library
46
+ - **Pinia** for state management with persistence
47
+ - **pnpm** as package manager (requires Node.js >=20.19.0)
48
+ - **UnoCSS** for atomic CSS utilities
49
+ - **@micro-zoe/micro-app** for micro-frontend architecture
50
+
51
+ ## Code Style & Standards
52
+
53
+ From `.cursorrules`:
54
+
55
+ - Use Composition API and `<script setup>` syntax
56
+ - Component names: PascalCase (e.g., `UserProfile`)
57
+ - Variables: camelCase (e.g., `userName`)
58
+ - Boolean variables: use `is/has/should` prefix (e.g., `isLoading`)
59
+ - Event handlers: use `handle` prefix (e.g., `handleSubmit`)
60
+ - CSS classes: kebab-case (e.g., `user-profile`)
61
+ - **Must explicitly import Vant components** - auto-import is disabled for this component library project
62
+ - Use `interface` for type definitions, `type` for unions/intersections
63
+ - Props must specify types
64
+
65
+ ## Architecture
66
+
67
+ ### Directory Structure
68
+
69
+ ```
70
+ src/
71
+ ├── components/
72
+ │ ├── core/ # Core UI components (NavBar, Tabbar, Uploader)
73
+ │ ├── data/ # Business data components
74
+ │ │ ├── XReportForm/ # Dynamic form with JSON configuration
75
+ │ │ ├── XReportGrid/ # Data grid with reporting
76
+ │ │ └── XForm/ # General form components
77
+ │ └── layout/ # Layout components
78
+ ├── stores/ # Pinia state management
79
+ ├── utils/ # Utility functions
80
+ ├── views/ # Page components
81
+ ├── router/ # Vue Router configuration
82
+ └── api/ # API layer
83
+ ```
84
+
85
+ ### Key Business Components
86
+
87
+ **XReportForm Component** (`src/components/data/XReportForm/index.vue`):
88
+
89
+ - **Configuration-driven form engine**: Supports two modes - traditional config and pure JSON mode
90
+ - **Field types**: `input`, `datePicker`, `timePicker`, `dateTimeSecondsPicker`, `curDateInput`, `signature`, `images`, `inputs`, `inputColumns`
91
+ - **Slot-based extensibility**: Advanced slot system with `slotsDeclare` mechanism for complex layouts
92
+ - **Deep object binding**: Support for nested data structures using `@@@` separator syntax
93
+ - **Dynamic validation**: Built-in field validation with custom error messages
94
+ - **Mobile-optimized**: Full Vant UI integration with touch-friendly controls
95
+
96
+ **XReportGrid Component** (`src/components/data/XReportGrid/XReport.vue`):
97
+
98
+ - **Dual-mode operation**: Design mode for configuration, Display mode for data presentation
99
+ - **Dynamic cell rendering**: Support for various cell types including custom function execution
100
+ - **Advanced table features**: Complex rowspan/colspan handling with automatic layout algorithms
101
+ - **Export capabilities**: PDF generation, print functionality, and data export
102
+ - **Component registry**: Provider pattern for dynamic child component management
103
+
104
+ ### State Management
105
+
106
+ - **Pinia stores** with persistence via `pinia-plugin-persistedstate`
107
+ - **User store**: Authentication, permissions, user data
108
+ - **Settings store**: Application configuration
109
+ - **Route cache store**: Performance optimization
110
+
111
+ ### API Layer
112
+
113
+ - **Service architecture**: RESTful wrapper with request/response transformation in `src/services/`
114
+ - **V3/V4 API compatibility**: Automatic response format handling across API versions
115
+ - **Authentication**: Token-based auth with automatic refresh and crypto-js encryption
116
+ - **Mock server integration**: Vite-based mock development server on port 8086
117
+ - **Configuration management**: Dynamic API configuration retrieval and caching
118
+
119
+ ### Expression and Logic Engine
120
+
121
+ - **Custom expression system** (`src/expression/`): Full expression evaluation engine
122
+ - **LogicRunner framework**: Business logic execution with plugin architecture
123
+ - **Dynamic behavior**: Used in XReportForm and XReportGrid for runtime functionality
124
+
125
+ ## Development Workflow
126
+
127
+ ### Server Configuration
128
+
129
+ - **Development server**: Port 7190 with hot reload and Vue DevTools
130
+ - **Mock server**: Port 8086 with full API mocking via `vite-plugin-mock-dev-server`
131
+ - **API proxies**: Multiple endpoints configured in `vite.config.ts` for v3/v4 compatibility
132
+ - **Allowed hosts**: Configured for `.aofengcloud.com` domain access
133
+
134
+ ### Build Process
135
+
136
+ - **Code splitting**: `third` (node_modules), `views` (business pages) for optimal loading
137
+ - **Asset organization**: Static files in hashed directories for cache management
138
+ - **Mobile optimization**: CSS code splitting disabled, PWA capabilities enabled
139
+ - **Legacy support**: Vite legacy plugin for older browser compatibility
140
+ - **Compression**: Gzip compression for production builds (threshold: 10KB)
141
+
142
+ ### Git Hooks
143
+
144
+ - Pre-commit: `pnpm lint-staged` (ESLint auto-fix)
145
+ - Commit message: `pnpm commitlint` (conventional commits)
146
+
147
+ ## Micro-Frontend Integration
148
+
149
+ This is a **main application** for micro-frontend architecture using `@micro-zoe/micro-app`:
150
+
151
+ - **Route flattening**: Child app routes are automatically flattened for compatibility
152
+ - **Component isolation**: Each micro-app maintains separate component registry
153
+ - **Custom element registration**: Vite configured to handle `<micro-app>` tags
154
+ - **Global unmount**: Window-level unmount function for clean micro-app teardown
155
+ - **Child app registration**: Register new micro-apps in `microApps.ts` configuration
156
+ - **Environment detection**: Automatic detection when running as child vs main app
157
+
158
+ ## Mobile-Specific Features
159
+
160
+ - **@vant/touch-emulator** for desktop development
161
+ - **postcss-mobile-forever** for viewport handling
162
+ - **vite-plugin-pwa** for PWA capabilities
163
+ - **VConsole** for mobile debugging
164
+ - Dark mode support throughout the application
165
+
166
+ ## Common Patterns
167
+
168
+ ### Adding New Field Types to XReportForm
169
+
170
+ 1. **Add field type support**: Update `generateDefaultRequiredMessage()` function in component
171
+ 2. **Configure rendering**: Add case in `formatConfigToForm()` switch statement for field processing
172
+ 3. **Template implementation**: Add corresponding template section with Vant component integration
173
+ 4. **Data binding**: Follow `@@@` deep object binding patterns for nested data structures
174
+ 5. **Validation**: Implement field-specific validation rules using existing validation framework
175
+
176
+ ### Component Development
177
+
178
+ - Use `<script setup lang="ts">` syntax
179
+ - Explicitly import Vant components
180
+ - Define props with TypeScript interfaces
181
+ - Use `defineEmits` for events
182
+ - Follow existing component structure patterns
183
+
184
+ ### API Integration
185
+
186
+ - **HTTP client**: Use service layer in `src/services/` rather than direct HTTP calls
187
+ - **V3/V4 compatibility**: Follow established patterns for API version handling in service files
188
+ - **Error handling**: Use consistent error patterns with user feedback integration
189
+ - **Authentication**: Leverage automatic token management and refresh mechanisms
190
+ - **Configuration**: Access dynamic API configuration through common service layer
191
+
192
+ ### Micro-Frontend Development
193
+
194
+ - **Child app creation**: Derive from existing project structure, update app identifiers
195
+ - **Route registration**: Add child app routes to main app's `microApps.ts` configuration
196
+ - **Isolation**: Maintain component and state isolation between micro-apps
197
+ - **Communication**: Use established patterns for parent-child communication
198
+
199
+ ## Testing & Quality
200
+
201
+ - **ESLint** with `@antfu/eslint-config`
202
+ - **TypeScript** strict mode
203
+ - **Vue TSC** for type checking
204
+ - **Commitlint** for commit message standards
205
+ - **Lint-staged** for pre-commit hooks
206
+
207
+ ## 注意事项 (Important Notes)
208
+
209
+ - **No auto-import**: This project does NOT use auto-import plugins - you MUST explicitly import all Vue APIs (`ref`, `computed`, etc.) and Vant components
210
+ - **Path aliases**: Use `@af-mobile-client-vue3/` to reference `src/` directory (not `@/`) for business project consistency
211
+ - **Component library approach**: Explicit imports required for all dependencies to maintain clear component boundaries
212
+
213
+ # important-instruction-reminders
214
+
215
+ Do what has been asked; nothing more, nothing less.
216
+ NEVER create files unless they're absolutely necessary for achieving your goal.
217
+ ALWAYS prefer editing an existing file to creating a new one.
218
+ NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User.