af-mobile-client-vue3 1.3.12 → 1.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/.claude/settings.local.json +10 -0
  2. package/.cursorrules +60 -60
  3. package/.editorconfig +9 -9
  4. package/.env +10 -10
  5. package/.env.development +1 -1
  6. package/.env.production +1 -1
  7. package/.node-version +1 -1
  8. package/.vscode/extensions.json +12 -12
  9. package/.vscode/settings.json +66 -66
  10. package/CLAUDE.md +189 -184
  11. package/README.md +182 -181
  12. package/af-example-mobile-vue-web.iml +9 -9
  13. package/build/vite/index.ts +98 -98
  14. package/build/vite/optimize.ts +34 -34
  15. package/build/vite/vconsole.ts +47 -47
  16. package/commitlint.config.ts +32 -32
  17. package/compress.js +36 -36
  18. package/eslint.config.ts +30 -30
  19. package/index.html +23 -23
  20. package/mock/data.ts +20 -20
  21. package/mock/index.ts +7 -7
  22. package/mock/modules/prose.mock.ts +13 -13
  23. package/mock/modules/user.mock.ts +152 -152
  24. package/mock/util.ts +19 -19
  25. package/netlify.toml +12 -12
  26. package/package.json +114 -114
  27. package/postcss.config.ts +27 -27
  28. package/public/favicon.svg +4 -4
  29. package/public/safari-pinned-tab.svg +4 -4
  30. package/scripts/verifyCommit.js +19 -19
  31. package/src/App.vue +79 -79
  32. package/src/api/mock/index.ts +30 -30
  33. package/src/api/user/index.ts +40 -40
  34. package/src/assets/img/user/login/background-shadow-1.svg +20 -20
  35. package/src/assets/img/user/login/logo-background.svg +20 -20
  36. package/src/bootstrap.ts +26 -26
  37. package/src/components/core/BeautifulLoading/index.vue +52 -52
  38. package/src/components/core/ImageUploader/index.vue +244 -244
  39. package/src/components/core/NavBar/index.vue +53 -53
  40. package/src/components/core/Tabbar/index.vue +32 -32
  41. package/src/components/core/Uploader/index.vue +124 -124
  42. package/src/components/core/XGridDropOption/index.vue +154 -156
  43. package/src/components/core/XMultiSelect/index.vue +183 -183
  44. package/src/components/core/XSelect/index.vue +149 -149
  45. package/src/components/data/InfoDisplay/index.vue +132 -0
  46. package/src/components/data/UserDetail/api.ts +24 -0
  47. package/src/components/data/UserDetail/index.vue +620 -0
  48. package/src/components/data/UserDetail/recordEntries.ts +159 -0
  49. package/src/components/data/UserDetail/types.ts +26 -0
  50. package/src/components/data/XBadge/index.vue +82 -82
  51. package/src/components/data/XCellDetail/index.vue +105 -105
  52. package/src/components/data/XCellList/XCellList.md +313 -313
  53. package/src/components/data/XCellList/index.vue +1075 -1075
  54. package/src/components/data/XCellListFilter/QrScanner/index.vue +207 -207
  55. package/src/components/data/XCellListFilter/QrScanner/startScanAnimation.ts +53 -53
  56. package/src/components/data/XCellListFilter/VpnRecognition/index.vue +119 -119
  57. package/src/components/data/XCellListFilter/index.vue +705 -705
  58. package/src/components/data/XForm/index.vue +659 -659
  59. package/src/components/data/XFormGroup/doc/DeviceForm.vue +122 -122
  60. package/src/components/data/XFormGroup/doc/FormGroupDemo.vue +56 -56
  61. package/src/components/data/XFormGroup/doc/README.md +286 -273
  62. package/src/components/data/XFormGroup/doc/UserForm.vue +102 -102
  63. package/src/components/data/XFormGroup/index.vue +240 -240
  64. package/src/components/data/XFormItem/index.vue +1310 -1310
  65. package/src/components/data/XOlMap/README.md +227 -227
  66. package/src/components/data/XOlMap/XLocationPicker/index.vue +226 -225
  67. package/src/components/data/XOlMap/index.vue +1490 -1490
  68. package/src/components/data/XOlMap/types.ts +149 -149
  69. package/src/components/data/XOlMap/utils/wgs84ToGcj02.js +154 -154
  70. package/src/components/data/XReportForm/DateTimeSecondsPicker.vue +208 -208
  71. package/src/components/data/XReportForm/XReportFormJsonRender.vue +220 -220
  72. package/src/components/data/XReportForm/index.vue +1393 -1393
  73. package/src/components/data/XReportGrid/XAddReport/XAddReport.vue +198 -198
  74. package/src/components/data/XReportGrid/XAddReport/index.js +3 -3
  75. package/src/components/data/XReportGrid/XAddReport/index.md +53 -52
  76. package/src/components/data/XReportGrid/XAddReport/index.ts +10 -10
  77. package/src/components/data/XReportGrid/XReport.vue +960 -960
  78. package/src/components/data/XReportGrid/XReportDemo.vue +33 -33
  79. package/src/components/data/XReportGrid/XReportDesign.vue +597 -597
  80. package/src/components/data/XReportGrid/XReportDrawer/XReportDrawer.vue +148 -148
  81. package/src/components/data/XReportGrid/XReportDrawer/index.js +3 -3
  82. package/src/components/data/XReportGrid/XReportDrawer/index.ts +10 -10
  83. package/src/components/data/XReportGrid/XReportJsonRender.vue +399 -399
  84. package/src/components/data/XReportGrid/XReportTrGroup.vue +592 -592
  85. package/src/components/data/XReportGrid/index.md +46 -42
  86. package/src/components/data/XReportGrid/print.js +184 -184
  87. package/src/components/data/XSignature/index.vue +284 -285
  88. package/src/components/data/XTag/index.vue +10 -10
  89. package/src/components/layout/NormalDataLayout/index.vue +69 -69
  90. package/src/components/layout/TabBarLayout/index.vue +40 -40
  91. package/src/composables/dark.ts +5 -5
  92. package/src/config/routes.ts +9 -9
  93. package/src/constants/index.ts +2 -2
  94. package/src/enums/requestEnum.ts +25 -25
  95. package/src/expression/ExpressionRunner.ts +28 -28
  96. package/src/expression/TestExpression.ts +510 -510
  97. package/src/expression/core/Delegate.ts +116 -116
  98. package/src/expression/core/Expression.ts +1359 -1359
  99. package/src/expression/core/Program.ts +985 -985
  100. package/src/expression/core/Token.ts +29 -29
  101. package/src/expression/enums/ExpressionType.ts +81 -81
  102. package/src/expression/enums/TokenType.ts +11 -11
  103. package/src/expression/exception/BreakWayException.ts +2 -2
  104. package/src/expression/exception/ContinueWayException.ts +2 -2
  105. package/src/expression/exception/ExpressionException.ts +29 -29
  106. package/src/expression/exception/ReturnWayException.ts +14 -14
  107. package/src/expression/exception/ServiceException.ts +22 -22
  108. package/src/expression/instances/JSONArray.ts +52 -52
  109. package/src/expression/instances/JSONObject.ts +118 -118
  110. package/src/expression/instances/LogicConsole.ts +31 -31
  111. package/src/font-style/font.css +4 -4
  112. package/src/hooks/useBoolean.ts +26 -0
  113. package/src/hooks/useCommon.ts +9 -9
  114. package/src/hooks/useLoading.ts +16 -0
  115. package/src/hooks/useLogin.ts +97 -97
  116. package/src/icons/svg/check-in.svg +32 -32
  117. package/src/icons/svg/dark.svg +4 -4
  118. package/src/icons/svg/github.svg +4 -4
  119. package/src/icons/svg/light.svg +4 -4
  120. package/src/icons/svg/link.svg +4 -4
  121. package/src/icons/svgo.yml +22 -22
  122. package/src/layout/GridView/index.vue +16 -16
  123. package/src/layout/PageLayout.vue +9 -9
  124. package/src/layout/SingleLayout.vue +9 -9
  125. package/src/locales/en-US.json +128 -128
  126. package/src/locales/zh-CN.json +128 -128
  127. package/src/logic/LogicRunner.ts +67 -67
  128. package/src/logic/TestLogic.ts +13 -13
  129. package/src/logic/plugins/common/DateTools.ts +35 -35
  130. package/src/logic/plugins/common/VueTools.ts +30 -30
  131. package/src/logic/plugins/index.ts +7 -7
  132. package/src/main.ts +44 -44
  133. package/src/plugins/AppData.ts +38 -38
  134. package/src/plugins/GetLoginInfoService.ts +10 -10
  135. package/src/plugins/collectIcons.ts +10 -0
  136. package/src/plugins/index.ts +11 -11
  137. package/src/router/README.md +8 -8
  138. package/src/router/guards.ts +59 -59
  139. package/src/router/index.ts +35 -35
  140. package/src/router/invoiceRoutes.ts +33 -33
  141. package/src/router/routes.ts +341 -177
  142. package/src/router/types.ts +7 -7
  143. package/src/services/api/Login.ts +6 -6
  144. package/src/services/api/common.ts +109 -109
  145. package/src/services/api/index.ts +7 -7
  146. package/src/services/api/manage.ts +8 -8
  147. package/src/services/api/search.ts +16 -16
  148. package/src/services/api/user.ts +17 -17
  149. package/src/services/restTools.ts +56 -56
  150. package/src/services/v3Api.ts +147 -147
  151. package/src/stores/index.ts +11 -11
  152. package/src/stores/modules/counter.ts +19 -19
  153. package/src/stores/modules/routeCache.ts +23 -23
  154. package/src/stores/modules/setting.ts +76 -76
  155. package/src/stores/modules/user.ts +235 -235
  156. package/src/stores/mutation-type.ts +7 -7
  157. package/src/styles/app.less +36 -36
  158. package/src/styles/login.less +109 -109
  159. package/src/styles/var.less +16 -16
  160. package/src/types/env.d.ts +16 -16
  161. package/src/types/settings.ts +1 -1
  162. package/src/types/vue-router.d.ts +9 -9
  163. package/src/utils/Storage.ts +124 -124
  164. package/src/utils/authority-utils.ts +84 -84
  165. package/src/utils/common.ts +41 -41
  166. package/src/utils/crypto.ts +39 -39
  167. package/src/utils/dataUtil.ts +42 -42
  168. package/src/utils/dictUtil.ts +52 -52
  169. package/src/utils/http/index.ts +199 -199
  170. package/src/utils/i18n.ts +72 -72
  171. package/src/utils/indexedDB.ts +195 -195
  172. package/src/utils/inline-px-to-vw.ts +28 -28
  173. package/src/utils/mobileUtil.ts +34 -34
  174. package/src/utils/progress.ts +19 -19
  175. package/src/utils/routerUtil.ts +271 -271
  176. package/src/utils/runEvalFunction.ts +13 -13
  177. package/src/utils/secureStorage.ts +71 -71
  178. package/src/utils/set-page-title.ts +5 -5
  179. package/src/utils/validate.ts +6 -6
  180. package/src/utils/wechatUtil.ts +9 -9
  181. package/src/views/chat/index.vue +153 -153
  182. package/src/views/common/LoadError.vue +63 -63
  183. package/src/views/common/NotFound.vue +67 -67
  184. package/src/views/component/EvaluateRecordView/index.vue +40 -40
  185. package/src/views/component/IconifyView/index.vue +504 -507
  186. package/src/views/component/UserDetailView/UserDetailPage.vue +77 -0
  187. package/src/views/component/UserDetailView/index.vue +234 -0
  188. package/src/views/component/XCellDetailView/index.vue +217 -217
  189. package/src/views/component/XCellListView/index.vue +108 -157
  190. package/src/views/component/XFormAppraiseView/index.vue +174 -174
  191. package/src/views/component/XFormGroupView/index.vue +78 -82
  192. package/src/views/component/XFormView/index.vue +27 -27
  193. package/src/views/component/XOlMapView/XLocationPicker/index.vue +118 -118
  194. package/src/views/component/XOlMapView/index.vue +434 -434
  195. package/src/views/component/XOlMapView/testData.ts +64 -64
  196. package/src/views/component/XReportFormIframeView/index.vue +47 -47
  197. package/src/views/component/XReportFormView/index.vue +13 -13
  198. package/src/views/component/XReportGridView/index.vue +17 -17
  199. package/src/views/component/XRequestView/index.vue +234 -234
  200. package/src/views/component/XSignatureView/index.vue +50 -50
  201. package/src/views/component/index.vue +181 -177
  202. package/src/views/component/menu.vue +117 -117
  203. package/src/views/component/notice.vue +46 -46
  204. package/src/views/component/topNav.vue +36 -36
  205. package/src/views/invoiceShow/index.vue +61 -61
  206. package/src/views/user/login/ForgetPasswordForm.vue +94 -94
  207. package/src/views/user/login/LoginForm.vue +346 -346
  208. package/src/views/user/login/LoginTitle.vue +76 -76
  209. package/src/views/user/login/LoginWave.vue +109 -109
  210. package/src/views/user/login/index.vue +22 -22
  211. package/src/views/user/my/comm/ModifyPassword.vue +346 -346
  212. package/src/views/user/my/index.vue +340 -340
  213. package/src/views/userRecords/AbnormalAlarmRecords.vue +21 -0
  214. package/src/views/userRecords/CardReplacementRecords.vue +21 -0
  215. package/src/views/userRecords/ChangeRecords.vue +19 -0
  216. package/src/views/userRecords/CommandViewRecords.vue +20 -0
  217. package/src/views/userRecords/GasCompensationRecords.vue +20 -0
  218. package/src/views/userRecords/InstrumentCollectionRecords.vue +21 -0
  219. package/src/views/userRecords/MeterRecords.vue +20 -0
  220. package/src/views/userRecords/OperateRecords.vue +51 -0
  221. package/src/views/userRecords/OtherChargeRecords.vue +19 -0
  222. package/src/views/userRecords/PaymentRecords.vue +28 -0
  223. package/src/views/userRecords/PriceAdjustmentRecords.vue +19 -0
  224. package/src/views/userRecords/ReplacementRecords.vue +19 -0
  225. package/src/views/userRecords/SafetyRecords.vue +19 -0
  226. package/src/views/userRecords/TransactionRecords.vue +21 -0
  227. package/src/views/userRecords/TransferRecords.vue +19 -0
  228. package/src/views/userRecords/operateRecordDetail/index.vue +316 -0
  229. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AddUserDetail.vue +124 -0
  230. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AdvanceDeliveryDetail.vue +88 -0
  231. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsCancelDetail.vue +205 -0
  232. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsDetail.vue +192 -0
  233. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankDkDetail.vue +192 -0
  234. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankPayDetail.vue +192 -0
  235. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BlacklistDetail.vue +153 -0
  236. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CancellationDetail.vue +101 -0
  237. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterCancelDetail.vue +127 -0
  238. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterDetail.vue +153 -0
  239. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardOverUserDetail.vue +153 -0
  240. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterCancelDetail.vue +166 -0
  241. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterDetail.vue +205 -0
  242. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/DisableManageDetail.vue +127 -0
  243. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/EnableManageDetail.vue +114 -0
  244. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FaZheChangeDetail.vue +124 -0
  245. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FeeDeductionDetail.vue +153 -0
  246. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/GasPriceChangeDetail.vue +126 -0
  247. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/InputtorChangeDetail.vue +126 -0
  248. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterCancelDetail.vue +114 -0
  249. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterDetail.vue +127 -0
  250. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotOpenDetail.vue +88 -0
  251. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineCardDetail.vue +101 -0
  252. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterCancelDetail.vue +218 -0
  253. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterDetail.vue +153 -0
  254. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OffGasAddGasDetail.vue +140 -0
  255. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeCancelDetail.vue +127 -0
  256. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeDetail.vue +114 -0
  257. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OverUserChangeDetail.vue +127 -0
  258. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReBillDetail.vue +127 -0
  259. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/RefundDetail.vue +114 -0
  260. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageCancelDetail.vue +127 -0
  261. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageDetail.vue +114 -0
  262. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/SaleCardGasDetail.vue +140 -0
  263. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageCancelDetail.vue +152 -0
  264. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageDetail.vue +178 -0
  265. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/UserChangeDetail.vue +123 -0
  266. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/WechatPayDetail.vue +192 -0
  267. package/src/views/userRecords/types.ts +66 -0
  268. package/tsconfig.json +39 -39
  269. package/uno.config.ts +82 -78
  270. package/vite.config.ts +118 -118
  271. package/src/views/component/XFormGroupView/xformgroup222.vue +0 -97
package/CLAUDE.md CHANGED
@@ -1,184 +1,189 @@
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
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 而不是 @/