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
package/CLAUDE.md CHANGED
@@ -1,189 +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
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
-
37
- ## Technology Stack
38
-
39
- - **Vue 3** with Composition API and `<script setup>` syntax
40
- - **TypeScript** for type safety
41
- - **Vite** as build tool (port 7190)
42
- - **Vant 4** as primary UI component library
43
- - **Pinia** for state management with persistence
44
- - **pnpm** as package manager (requires Node.js >=20.19.0)
45
- - **UnoCSS** for atomic CSS utilities
46
- - **@micro-zoe/micro-app** for micro-frontend architecture
47
-
48
- ## Code Style & Standards
49
-
50
- From `.cursorrules`:
51
-
52
- - Use Composition API and `<script setup>` syntax
53
- - Component names: PascalCase (e.g., `UserProfile`)
54
- - Variables: camelCase (e.g., `userName`)
55
- - Boolean variables: use `is/has/should` prefix (e.g., `isLoading`)
56
- - Event handlers: use `handle` prefix (e.g., `handleSubmit`)
57
- - CSS classes: kebab-case (e.g., `user-profile`)
58
- - **Must explicitly import Vant components** - auto-import is disabled for this component library project
59
- - Use `interface` for type definitions, `type` for unions/intersections
60
- - Props must specify types
61
-
62
- ## Architecture
63
-
64
- ### Directory Structure
65
-
66
- ```
67
- src/
68
- ├── components/
69
- │ ├── core/ # Core UI components (NavBar, Tabbar, Uploader)
70
- │ ├── data/ # Business data components
71
- │ │ ├── XReportForm/ # Dynamic form with JSON configuration
72
- ├── XReportGrid/ # Data grid with reporting
73
- ├── XForm/ # General form components
74
- │ │ └── XOlMap/ # OpenLayers map integration
75
- └── layout/ # Layout components
76
- ├── stores/ # Pinia state management
77
- ├── utils/ # Utility functions
78
- ├── views/ # Page components
79
- ├── router/ # Vue Router configuration
80
- └── api/ # API layer
81
- ```
82
-
83
- ### Key Business Components
84
-
85
- **XReportForm Component** (`src/components/data/XReportForm/index.vue`):
86
-
87
- - Dynamic form generation from JSON configuration
88
- - Supports field types: `input`, `datePicker`, `timePicker`, `dateTimeSecondsPicker`, `curDateInput`, `signature`, `images`, `inputs`, `inputColumns`
89
- - Built-in validation with custom error messages
90
- - Slot-based extensibility for complex layouts
91
- - Integration with file upload and signature capture
92
-
93
- **XReportGrid Component**:
94
-
95
- - Data grid with reporting capabilities
96
- - Print functionality integration
97
- - Design mode for form configuration
98
-
99
- **XOlMap Component**:
100
-
101
- - OpenLayers integration for GIS functionality
102
- - Location picker with coordinate transformation
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
- - **Axios-based HTTP client** with interceptors
114
- - **Request/Response transformers** for v3/v4 API compatibility
115
- - **Automatic token management** and error handling
116
- - **Mock server integration** for development
117
-
118
- ## Development Workflow
119
-
120
- ### Server Configuration
121
-
122
- - Development server runs on port 7190
123
- - Mock server runs on port 8086
124
- - Multiple API proxy endpoints configured in `vite.config.ts`
125
-
126
- ### Build Process
127
-
128
- - Code splitting: `third` (node_modules), `views` (business pages)
129
- - Assets organized in `static/` directory with hashing
130
- - CSS code splitting disabled for mobile optimization
131
- - Legacy browser support via `@vitejs/plugin-legacy`
132
-
133
- ### Git Hooks
134
-
135
- - Pre-commit: `pnpm lint-staged` (ESLint auto-fix)
136
- - Commit message: `pnpm commitlint` (conventional commits)
137
-
138
- ## Micro-Frontend Integration
139
-
140
- This is a main application for micro-frontend architecture:
141
-
142
- - Uses `@micro-zoe/micro-app` for micro-app management
143
- - Child apps register in `microApps.ts`
144
- - Supports dynamic loading and routing
145
- - Unmount function available at `window.unmount`
146
-
147
- ## Mobile-Specific Features
148
-
149
- - **@vant/touch-emulator** for desktop development
150
- - **postcss-mobile-forever** for viewport handling
151
- - **vite-plugin-pwa** for PWA capabilities
152
- - **VConsole** for mobile debugging
153
- - Dark mode support throughout the application
154
-
155
- ## Common Patterns
156
-
157
- ### Adding New Field Types to XReportForm
158
-
159
- 1. Add type to `generateDefaultRequiredMessage()` function
160
- 2. Add case in `formatConfigToForm()` switch statement
161
- 3. Add template section in the component template
162
- 4. Follow existing patterns for validation and data binding
163
-
164
- ### Component Development
165
-
166
- - Use `<script setup lang="ts">` syntax
167
- - Explicitly import Vant components
168
- - Define props with TypeScript interfaces
169
- - Use `defineEmits` for events
170
- - Follow existing component structure patterns
171
-
172
- ### API Integration
173
-
174
- - Use the existing HTTP client in `src/utils/http/`
175
- - Follow v3/v4 API patterns established in the codebase
176
- - Handle errors consistently with existing patterns
177
-
178
- ## Testing & Quality
179
-
180
- - **ESLint** with `@antfu/eslint-config`
181
- - **TypeScript** strict mode
182
- - **Vue TSC** for type checking
183
- - **Commitlint** for commit message standards
184
- - **Lint-staged** for pre-commit hooks
185
-
186
- ## 注意事项
187
-
188
- - 此项目作为组件库项目 所以没有开启自动引入 不能自动引入 vue 中的 ref/compute
189
- - 此项目为了统一业务项目使用,所以 使用 @af-mobile-client-vue3/ 表示 src 而不是 @/
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.