af-mobile-client-vue3 1.3.29 → 1.3.31

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 (283) 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 +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/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 -249
  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 -313
  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} +33 -16
  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/layout/GridView/index.vue +16 -16
  127. package/src/layout/PageLayout.vue +9 -9
  128. package/src/layout/SingleLayout.vue +9 -9
  129. package/src/locales/en-US.json +128 -128
  130. package/src/locales/zh-CN.json +128 -128
  131. package/src/logic/LogicRunner.ts +67 -67
  132. package/src/logic/TestLogic.ts +13 -13
  133. package/src/logic/plugins/common/DateTools.ts +35 -35
  134. package/src/logic/plugins/common/VueTools.ts +30 -30
  135. package/src/logic/plugins/index.ts +7 -7
  136. package/src/main.ts +44 -44
  137. package/src/plugins/AppData.ts +38 -38
  138. package/src/plugins/GetLoginInfoService.ts +10 -10
  139. package/src/plugins/collectIcons.ts +10 -10
  140. package/src/plugins/index.ts +11 -11
  141. package/src/router/README.md +8 -8
  142. package/src/router/external-routes.ts +60 -0
  143. package/src/router/guards.ts +131 -59
  144. package/src/router/index.ts +35 -35
  145. package/src/router/invoiceRoutes.ts +33 -33
  146. package/src/router/routes.ts +426 -347
  147. package/src/services/api/Login.ts +6 -6
  148. package/src/services/api/common.ts +109 -109
  149. package/src/services/api/index.ts +7 -7
  150. package/src/services/api/manage.ts +8 -8
  151. package/src/services/api/search.ts +16 -16
  152. package/src/services/api/user.ts +17 -17
  153. package/src/services/restTools.ts +56 -56
  154. package/src/services/v3Api.ts +147 -147
  155. package/src/stores/index.ts +13 -13
  156. package/src/stores/modules/counter.ts +19 -19
  157. package/src/stores/modules/homeApp.ts +55 -55
  158. package/src/stores/modules/routeCache.ts +22 -23
  159. package/src/stores/modules/setting.ts +87 -87
  160. package/src/stores/modules/user.ts +326 -235
  161. package/src/stores/mutation-type.ts +12 -7
  162. package/src/styles/app.less +36 -36
  163. package/src/styles/login.less +109 -109
  164. package/src/styles/var.less +25 -25
  165. package/src/types/auth.ts +85 -0
  166. package/src/types/env.d.ts +16 -16
  167. package/src/types/platform.ts +194 -0
  168. package/src/types/settings.ts +1 -1
  169. package/src/types/vue-router.d.ts +13 -9
  170. package/src/utils/Storage.ts +124 -124
  171. package/src/utils/authority-utils.ts +84 -84
  172. package/src/utils/common.ts +41 -41
  173. package/src/utils/crypto.ts +39 -39
  174. package/src/utils/dataUtil.ts +42 -42
  175. package/src/utils/dictUtil.ts +52 -52
  176. package/src/utils/http/index.ts +201 -199
  177. package/src/utils/i18n.ts +72 -72
  178. package/src/utils/indexedDB.ts +195 -195
  179. package/src/utils/inline-px-to-vw.ts +28 -28
  180. package/src/utils/mobileUtil.ts +33 -34
  181. package/src/utils/platform-auth.ts +134 -0
  182. package/src/utils/progress.ts +19 -19
  183. package/src/utils/queryFormDefaultRangePicker.ts +57 -57
  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 -108
  199. package/src/views/component/XFormAppraiseView/index.vue +174 -174
  200. package/src/views/component/XFormGroupView/index.vue +78 -78
  201. package/src/views/component/XFormView/index.vue +27 -27
  202. package/src/views/component/XOlMapView/index.vue +434 -434
  203. package/src/views/component/XOlMapView/testData.ts +64 -64
  204. package/src/views/component/XReportFormIframeView/index.vue +47 -47
  205. package/src/views/component/XReportFormView/index.vue +13 -13
  206. package/src/views/component/XReportGridView/index.vue +17 -17
  207. package/src/views/component/XRequestView/index.vue +234 -234
  208. package/src/views/component/XSignatureView/index.vue +50 -50
  209. package/src/views/component/index.vue +181 -181
  210. package/src/views/component/menu.vue +117 -117
  211. package/src/views/component/notice.vue +46 -46
  212. package/src/views/component/topNav.vue +36 -36
  213. package/src/views/external/index.vue +152 -0
  214. package/src/views/invoiceShow/index.vue +61 -61
  215. package/src/views/loading/AuthLoading.vue +345 -0
  216. package/src/views/user/login/ForgetPasswordForm.vue +94 -94
  217. package/src/views/user/login/LoginForm.vue +350 -347
  218. package/src/views/user/login/LoginTitle.vue +76 -76
  219. package/src/views/user/login/LoginWave.vue +109 -109
  220. package/src/views/user/login/index.vue +22 -22
  221. package/src/views/user/my/comm/ModifyPassword.vue +346 -346
  222. package/src/views/user/my/index.vue +507 -507
  223. package/src/views/user/register/index.vue +952 -952
  224. package/src/views/userRecords/AbnormalAlarmRecords.vue +21 -21
  225. package/src/views/userRecords/CardReplacementRecords.vue +21 -21
  226. package/src/views/userRecords/ChangeRecords.vue +19 -19
  227. package/src/views/userRecords/CommandViewRecords.vue +20 -20
  228. package/src/views/userRecords/GasCompensationRecords.vue +20 -20
  229. package/src/views/userRecords/InstrumentCollectionRecords.vue +21 -21
  230. package/src/views/userRecords/MeterRecords.vue +20 -20
  231. package/src/views/userRecords/OperateRecords.vue +51 -51
  232. package/src/views/userRecords/OtherChargeRecords.vue +19 -19
  233. package/src/views/userRecords/PaymentRecords.vue +28 -28
  234. package/src/views/userRecords/PriceAdjustmentRecords.vue +19 -19
  235. package/src/views/userRecords/ReplacementRecords.vue +19 -19
  236. package/src/views/userRecords/SafetyRecords.vue +19 -19
  237. package/src/views/userRecords/TransactionRecords.vue +21 -21
  238. package/src/views/userRecords/TransferRecords.vue +19 -19
  239. package/src/views/userRecords/operateRecordDetail/index.vue +316 -316
  240. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AddUserDetail.vue +124 -124
  241. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AdvanceDeliveryDetail.vue +88 -88
  242. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsCancelDetail.vue +205 -205
  243. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsDetail.vue +192 -192
  244. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankDkDetail.vue +192 -192
  245. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankPayDetail.vue +192 -192
  246. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BlacklistDetail.vue +153 -153
  247. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CancellationDetail.vue +101 -101
  248. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterCancelDetail.vue +127 -127
  249. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterDetail.vue +153 -153
  250. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardOverUserDetail.vue +153 -153
  251. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterCancelDetail.vue +166 -166
  252. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterDetail.vue +205 -205
  253. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/DisableManageDetail.vue +127 -127
  254. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/EnableManageDetail.vue +114 -114
  255. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FaZheChangeDetail.vue +124 -124
  256. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FeeDeductionDetail.vue +153 -153
  257. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/GasPriceChangeDetail.vue +126 -126
  258. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/InputtorChangeDetail.vue +126 -126
  259. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterCancelDetail.vue +114 -114
  260. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterDetail.vue +127 -127
  261. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotOpenDetail.vue +88 -88
  262. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineCardDetail.vue +101 -101
  263. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterCancelDetail.vue +218 -218
  264. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterDetail.vue +153 -153
  265. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OffGasAddGasDetail.vue +140 -140
  266. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeCancelDetail.vue +127 -127
  267. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeDetail.vue +114 -114
  268. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OverUserChangeDetail.vue +127 -127
  269. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReBillDetail.vue +127 -127
  270. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/RefundDetail.vue +114 -114
  271. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageCancelDetail.vue +127 -127
  272. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageDetail.vue +114 -114
  273. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/SaleCardGasDetail.vue +140 -140
  274. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageCancelDetail.vue +152 -152
  275. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageDetail.vue +178 -178
  276. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/UserChangeDetail.vue +123 -123
  277. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/WechatPayDetail.vue +192 -192
  278. package/src/views/userRecords/types.ts +66 -66
  279. package/tsconfig.json +39 -39
  280. package/uno.config.ts +82 -82
  281. package/vite.config.ts +119 -118
  282. package/src/router/types.ts +0 -7
  283. 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.