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.
- package/.claude/settings.local.json +10 -0
- package/.cursorrules +60 -60
- package/.editorconfig +9 -9
- package/.env +10 -10
- package/.env.development +1 -1
- package/.env.production +1 -1
- package/.node-version +1 -1
- package/.vscode/extensions.json +12 -12
- package/.vscode/settings.json +68 -66
- package/CLAUDE.md +218 -189
- package/README.md +182 -182
- package/af-example-mobile-vue-web.iml +9 -9
- package/build/vite/index.ts +98 -98
- package/build/vite/optimize.ts +34 -34
- package/build/vite/vconsole.ts +47 -47
- package/commitlint.config.ts +32 -32
- package/compress.js +36 -36
- package/eslint.config.ts +31 -30
- package/index.html +23 -23
- package/mock/data.ts +20 -20
- package/mock/index.ts +7 -7
- package/mock/modules/prose.mock.ts +13 -13
- package/mock/modules/user.mock.ts +95 -152
- package/mock/util.ts +19 -19
- package/netlify.toml +12 -12
- package/package.json +114 -114
- package/postcss.config.ts +27 -27
- package/public/favicon.svg +4 -4
- package/public/safari-pinned-tab.svg +4 -4
- package/scripts/verifyCommit.js +19 -19
- package/src/App.vue +79 -79
- package/src/api/auth/index.ts +77 -0
- package/src/api/auth/types.ts +200 -0
- package/src/api/mock/index.ts +30 -30
- package/src/api/user/index.ts +40 -40
- package/src/assets/img/user/login/background-shadow-1.svg +20 -20
- package/src/assets/img/user/login/logo-background.svg +20 -20
- package/src/bootstrap.ts +26 -26
- package/src/components/core/BeautifulLoading/index.vue +52 -52
- package/src/components/core/ImageUploader/index.vue +251 -249
- package/src/components/core/NavBar/index.vue +53 -53
- package/src/components/core/Tabbar/index.vue +32 -32
- package/src/components/core/Uploader/index.vue +124 -124
- package/src/components/core/XGridDropOption/index.vue +154 -154
- package/src/components/core/XMultiSelect/index.vue +183 -183
- package/src/components/core/XSelect/index.vue +149 -149
- package/src/components/data/CardContainer/CardContainer.vue +118 -118
- package/src/components/data/CardContainer/CardHeader.vue +99 -99
- package/src/components/data/InfoDisplay/index.vue +132 -132
- package/src/components/data/UserDetail/api.ts +24 -24
- package/src/components/data/UserDetail/index.vue +620 -620
- package/src/components/data/UserDetail/recordEntries.ts +159 -159
- package/src/components/data/UserDetail/types.ts +26 -26
- package/src/components/data/XBadge/index.vue +82 -82
- package/src/components/data/XCellDetail/index.vue +105 -105
- package/src/components/data/XCellList/XCellList.md +432 -313
- package/src/components/data/XCellList/index.vue +1436 -1436
- package/src/components/data/XCellListFilter/QrScanner/index.vue +207 -207
- package/src/components/data/XCellListFilter/QrScanner/startScanAnimation.ts +53 -53
- package/src/components/data/XCellListFilter/VpnRecognition/index.vue +119 -119
- package/src/components/data/XCellListFilter/index.vue +705 -705
- package/src/components/data/XForm/index.vue +659 -659
- package/src/components/data/XFormGroup/doc/DeviceForm.vue +122 -122
- package/src/components/data/XFormGroup/doc/FormGroupDemo.vue +56 -56
- package/src/components/data/XFormGroup/doc/README.md +286 -286
- package/src/components/data/XFormGroup/doc/UserForm.vue +102 -102
- package/src/components/data/XFormGroup/index.vue +240 -240
- package/src/components/data/XFormItem/index.vue +1310 -1310
- package/src/components/data/XOlMap/README.md +227 -227
- package/src/components/data/XOlMap/XLocationPicker/index.vue +226 -226
- package/src/components/data/XOlMap/index.vue +1490 -1490
- package/src/components/data/XOlMap/types.ts +149 -149
- package/src/components/data/XOlMap/utils/{wgs84ToGcj02.js → wgs84ToGcj02.ts} +33 -16
- package/src/components/data/XReportForm/DateTimeSecondsPicker.vue +208 -208
- package/src/components/data/XReportForm/XReportFormJsonRender.vue +220 -220
- package/src/components/data/XReportForm/index.vue +1393 -1393
- package/src/components/data/XReportGrid/XAddReport/XAddReport.vue +198 -198
- package/src/components/data/XReportGrid/XAddReport/index.js +3 -3
- package/src/components/data/XReportGrid/XAddReport/index.md +53 -53
- package/src/components/data/XReportGrid/XAddReport/index.ts +10 -10
- package/src/components/data/XReportGrid/XReport.vue +960 -960
- package/src/components/data/XReportGrid/XReportDemo.vue +33 -33
- package/src/components/data/XReportGrid/XReportDesign.vue +597 -597
- package/src/components/data/XReportGrid/XReportDrawer/XReportDrawer.vue +148 -148
- package/src/components/data/XReportGrid/XReportDrawer/index.js +3 -3
- package/src/components/data/XReportGrid/XReportDrawer/index.ts +10 -10
- package/src/components/data/XReportGrid/XReportJsonRender.vue +399 -399
- package/src/components/data/XReportGrid/XReportTrGroup.vue +592 -592
- package/src/components/data/XReportGrid/index.md +46 -46
- package/src/components/data/XReportGrid/print.js +184 -184
- package/src/components/data/XSignature/index.vue +284 -284
- package/src/components/data/XTag/index.vue +10 -10
- package/src/components/layout/NormalDataLayout/index.vue +69 -69
- package/src/components/layout/TabBarLayout/index.vue +40 -40
- package/src/composables/dark.ts +5 -5
- package/src/config/routes.ts +9 -9
- package/src/constants/index.ts +2 -2
- package/src/enums/requestEnum.ts +25 -25
- package/src/expression/ExpressionRunner.ts +28 -28
- package/src/expression/TestExpression.ts +510 -510
- package/src/expression/core/Delegate.ts +116 -116
- package/src/expression/core/Expression.ts +1359 -1359
- package/src/expression/core/Program.ts +985 -985
- package/src/expression/core/Token.ts +29 -29
- package/src/expression/enums/ExpressionType.ts +81 -81
- package/src/expression/enums/TokenType.ts +11 -11
- package/src/expression/exception/BreakWayException.ts +2 -2
- package/src/expression/exception/ContinueWayException.ts +2 -2
- package/src/expression/exception/ExpressionException.ts +29 -29
- package/src/expression/exception/ReturnWayException.ts +14 -14
- package/src/expression/exception/ServiceException.ts +22 -22
- package/src/expression/instances/JSONArray.ts +52 -52
- package/src/expression/instances/JSONObject.ts +118 -118
- package/src/expression/instances/LogicConsole.ts +31 -31
- package/src/font-style/font.css +4 -4
- package/src/hooks/useBoolean.ts +26 -26
- package/src/hooks/useCommon.ts +9 -9
- package/src/hooks/useLoading.ts +16 -16
- package/src/hooks/useLogin.ts +97 -97
- package/src/icons/svg/check-in.svg +32 -32
- package/src/icons/svg/dark.svg +4 -4
- package/src/icons/svg/github.svg +4 -4
- package/src/icons/svg/light.svg +4 -4
- package/src/icons/svg/link.svg +4 -4
- package/src/icons/svgo.yml +22 -22
- package/src/layout/GridView/index.vue +16 -16
- package/src/layout/PageLayout.vue +9 -9
- package/src/layout/SingleLayout.vue +9 -9
- package/src/locales/en-US.json +128 -128
- package/src/locales/zh-CN.json +128 -128
- package/src/logic/LogicRunner.ts +67 -67
- package/src/logic/TestLogic.ts +13 -13
- package/src/logic/plugins/common/DateTools.ts +35 -35
- package/src/logic/plugins/common/VueTools.ts +30 -30
- package/src/logic/plugins/index.ts +7 -7
- package/src/main.ts +44 -44
- package/src/plugins/AppData.ts +38 -38
- package/src/plugins/GetLoginInfoService.ts +10 -10
- package/src/plugins/collectIcons.ts +10 -10
- package/src/plugins/index.ts +11 -11
- package/src/router/README.md +8 -8
- package/src/router/external-routes.ts +60 -0
- package/src/router/guards.ts +131 -59
- package/src/router/index.ts +35 -35
- package/src/router/invoiceRoutes.ts +33 -33
- package/src/router/routes.ts +426 -347
- package/src/services/api/Login.ts +6 -6
- package/src/services/api/common.ts +109 -109
- package/src/services/api/index.ts +7 -7
- package/src/services/api/manage.ts +8 -8
- package/src/services/api/search.ts +16 -16
- package/src/services/api/user.ts +17 -17
- package/src/services/restTools.ts +56 -56
- package/src/services/v3Api.ts +147 -147
- package/src/stores/index.ts +13 -13
- package/src/stores/modules/counter.ts +19 -19
- package/src/stores/modules/homeApp.ts +55 -55
- package/src/stores/modules/routeCache.ts +22 -23
- package/src/stores/modules/setting.ts +87 -87
- package/src/stores/modules/user.ts +326 -235
- package/src/stores/mutation-type.ts +12 -7
- package/src/styles/app.less +36 -36
- package/src/styles/login.less +109 -109
- package/src/styles/var.less +25 -25
- package/src/types/auth.ts +85 -0
- package/src/types/env.d.ts +16 -16
- package/src/types/platform.ts +194 -0
- package/src/types/settings.ts +1 -1
- package/src/types/vue-router.d.ts +13 -9
- package/src/utils/Storage.ts +124 -124
- package/src/utils/authority-utils.ts +84 -84
- package/src/utils/common.ts +41 -41
- package/src/utils/crypto.ts +39 -39
- package/src/utils/dataUtil.ts +42 -42
- package/src/utils/dictUtil.ts +52 -52
- package/src/utils/http/index.ts +201 -199
- package/src/utils/i18n.ts +72 -72
- package/src/utils/indexedDB.ts +195 -195
- package/src/utils/inline-px-to-vw.ts +28 -28
- package/src/utils/mobileUtil.ts +33 -34
- package/src/utils/platform-auth.ts +134 -0
- package/src/utils/progress.ts +19 -19
- package/src/utils/queryFormDefaultRangePicker.ts +57 -57
- package/src/utils/routerUtil.ts +271 -271
- package/src/utils/runEvalFunction.ts +13 -13
- package/src/utils/secureStorage.ts +70 -71
- package/src/utils/set-page-title.ts +5 -5
- package/src/utils/validate.ts +6 -6
- package/src/views/chat/index.vue +153 -153
- package/src/views/common/Forbidden.vue +97 -0
- package/src/views/common/LoadError.vue +63 -63
- package/src/views/common/NotFound.vue +67 -67
- package/src/views/component/EvaluateRecordView/index.vue +40 -40
- package/src/views/component/IconifyView/index.vue +504 -504
- package/src/views/component/UserDetailView/UserDetailPage.vue +77 -77
- package/src/views/component/UserDetailView/index.vue +234 -234
- package/src/views/component/XCellDetailView/index.vue +217 -217
- package/src/views/component/XCellListView/index.vue +108 -108
- package/src/views/component/XFormAppraiseView/index.vue +174 -174
- package/src/views/component/XFormGroupView/index.vue +78 -78
- package/src/views/component/XFormView/index.vue +27 -27
- package/src/views/component/XOlMapView/index.vue +434 -434
- package/src/views/component/XOlMapView/testData.ts +64 -64
- package/src/views/component/XReportFormIframeView/index.vue +47 -47
- package/src/views/component/XReportFormView/index.vue +13 -13
- package/src/views/component/XReportGridView/index.vue +17 -17
- package/src/views/component/XRequestView/index.vue +234 -234
- package/src/views/component/XSignatureView/index.vue +50 -50
- package/src/views/component/index.vue +181 -181
- package/src/views/component/menu.vue +117 -117
- package/src/views/component/notice.vue +46 -46
- package/src/views/component/topNav.vue +36 -36
- package/src/views/external/index.vue +152 -0
- package/src/views/invoiceShow/index.vue +61 -61
- package/src/views/loading/AuthLoading.vue +345 -0
- package/src/views/user/login/ForgetPasswordForm.vue +94 -94
- package/src/views/user/login/LoginForm.vue +350 -347
- package/src/views/user/login/LoginTitle.vue +76 -76
- package/src/views/user/login/LoginWave.vue +109 -109
- package/src/views/user/login/index.vue +22 -22
- package/src/views/user/my/comm/ModifyPassword.vue +346 -346
- package/src/views/user/my/index.vue +507 -507
- package/src/views/user/register/index.vue +952 -952
- package/src/views/userRecords/AbnormalAlarmRecords.vue +21 -21
- package/src/views/userRecords/CardReplacementRecords.vue +21 -21
- package/src/views/userRecords/ChangeRecords.vue +19 -19
- package/src/views/userRecords/CommandViewRecords.vue +20 -20
- package/src/views/userRecords/GasCompensationRecords.vue +20 -20
- package/src/views/userRecords/InstrumentCollectionRecords.vue +21 -21
- package/src/views/userRecords/MeterRecords.vue +20 -20
- package/src/views/userRecords/OperateRecords.vue +51 -51
- package/src/views/userRecords/OtherChargeRecords.vue +19 -19
- package/src/views/userRecords/PaymentRecords.vue +28 -28
- package/src/views/userRecords/PriceAdjustmentRecords.vue +19 -19
- package/src/views/userRecords/ReplacementRecords.vue +19 -19
- package/src/views/userRecords/SafetyRecords.vue +19 -19
- package/src/views/userRecords/TransactionRecords.vue +21 -21
- package/src/views/userRecords/TransferRecords.vue +19 -19
- package/src/views/userRecords/operateRecordDetail/index.vue +316 -316
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AddUserDetail.vue +124 -124
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AdvanceDeliveryDetail.vue +88 -88
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsCancelDetail.vue +205 -205
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsDetail.vue +192 -192
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankDkDetail.vue +192 -192
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankPayDetail.vue +192 -192
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BlacklistDetail.vue +153 -153
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CancellationDetail.vue +101 -101
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterCancelDetail.vue +127 -127
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterDetail.vue +153 -153
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardOverUserDetail.vue +153 -153
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterCancelDetail.vue +166 -166
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterDetail.vue +205 -205
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/DisableManageDetail.vue +127 -127
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/EnableManageDetail.vue +114 -114
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FaZheChangeDetail.vue +124 -124
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FeeDeductionDetail.vue +153 -153
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/GasPriceChangeDetail.vue +126 -126
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/InputtorChangeDetail.vue +126 -126
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterCancelDetail.vue +114 -114
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterDetail.vue +127 -127
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotOpenDetail.vue +88 -88
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineCardDetail.vue +101 -101
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterCancelDetail.vue +218 -218
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterDetail.vue +153 -153
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OffGasAddGasDetail.vue +140 -140
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeCancelDetail.vue +127 -127
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeDetail.vue +114 -114
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OverUserChangeDetail.vue +127 -127
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReBillDetail.vue +127 -127
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/RefundDetail.vue +114 -114
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageCancelDetail.vue +127 -127
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageDetail.vue +114 -114
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/SaleCardGasDetail.vue +140 -140
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageCancelDetail.vue +152 -152
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageDetail.vue +178 -178
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/UserChangeDetail.vue +123 -123
- package/src/views/userRecords/operateRecordDetail/operateRecordDetails/WechatPayDetail.vue +192 -192
- package/src/views/userRecords/types.ts +66 -66
- package/tsconfig.json +39 -39
- package/uno.config.ts +82 -82
- package/vite.config.ts +119 -118
- package/src/router/types.ts +0 -7
- 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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
- **
|
|
43
|
-
- **
|
|
44
|
-
- **
|
|
45
|
-
- **
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
│
|
|
73
|
-
│
|
|
74
|
-
│ │
|
|
75
|
-
│
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
├──
|
|
79
|
-
├──
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
|
|
93
|
-
**
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
**
|
|
100
|
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
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
|
-
- **
|
|
114
|
-
- **
|
|
115
|
-
- **
|
|
116
|
-
- **Mock server integration
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
-
|
|
123
|
-
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
|
|
147
|
-
##
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
- **
|
|
152
|
-
- **
|
|
153
|
-
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
-
|
|
181
|
-
-
|
|
182
|
-
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
-
|
|
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: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.
|