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
|
@@ -1,118 +1,118 @@
|
|
|
1
|
-
import JSONArray from '../instances/JSONArray'
|
|
2
|
-
|
|
3
|
-
export default class JSONObject {
|
|
4
|
-
innerMap: { [key: string]: any }
|
|
5
|
-
|
|
6
|
-
constructor(value?: any) {
|
|
7
|
-
let map: { [key: string]: any }
|
|
8
|
-
if (value && typeof value === 'string') {
|
|
9
|
-
map = JSON.parse(value)
|
|
10
|
-
}
|
|
11
|
-
else if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
12
|
-
map = {}
|
|
13
|
-
const keySet = value instanceof JSONObject ? value.keySet() : Object.keys(value)
|
|
14
|
-
for (const key of keySet) {
|
|
15
|
-
const item = value instanceof JSONObject ? value.get(key) : value[key]
|
|
16
|
-
if (Array.isArray(item)) {
|
|
17
|
-
map[key] = new JSONArray(item)
|
|
18
|
-
}
|
|
19
|
-
else if (JSONObject.isPlainObject(item)) {
|
|
20
|
-
map[key] = new JSONObject(item)
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
map[key] = item
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
map = {}
|
|
29
|
-
}
|
|
30
|
-
this.innerMap = map
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public static isPlainObject(value: any): boolean {
|
|
34
|
-
if (!value || typeof value !== 'object')
|
|
35
|
-
return false
|
|
36
|
-
if (value instanceof JSONObject || value instanceof JSONArray) {
|
|
37
|
-
return false
|
|
38
|
-
}
|
|
39
|
-
const proto = Object.getPrototypeOf(value)
|
|
40
|
-
return proto === Object.prototype || proto === null
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
public put(key: string, value: any) {
|
|
44
|
-
if (Array.isArray(value)) {
|
|
45
|
-
this.innerMap[key] = new JSONArray(value)
|
|
46
|
-
}
|
|
47
|
-
else if (JSONObject.isPlainObject(value)) {
|
|
48
|
-
this.innerMap[key] = new JSONObject(value)
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
this.innerMap[key] = value
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
public get(key: string): any {
|
|
56
|
-
return this.innerMap[key]
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
public opt(key: string): any {
|
|
60
|
-
return key == null ? null : this.innerMap[key]
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
public optString(key: string, defaultValue: string): string {
|
|
64
|
-
const result = this.opt(key)
|
|
65
|
-
return result || defaultValue
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
public getBoolean(key: string): boolean {
|
|
69
|
-
const object = this.get(key)
|
|
70
|
-
if (typeof object === 'boolean') {
|
|
71
|
-
return object as boolean
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
return Boolean(object)
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
public optBoolean(key: string, defaultValue: boolean): boolean {
|
|
79
|
-
const val = this.opt(key)
|
|
80
|
-
if (!val) {
|
|
81
|
-
return defaultValue
|
|
82
|
-
}
|
|
83
|
-
return this.getBoolean(key)
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
public getInt(key: string): number {
|
|
87
|
-
return this.innerMap[key] as number
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
public getJSONObject(key: string): JSONObject {
|
|
91
|
-
return this.innerMap[key] as JSONObject
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
public getJSONArray(key: string): JSONArray {
|
|
95
|
-
return this.innerMap[key] as JSONArray
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
public has(key: string): boolean {
|
|
99
|
-
return Object.prototype.hasOwnProperty.call(this.innerMap, key)
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
public keySet(): string[] {
|
|
103
|
-
return Object.keys(this.innerMap)
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
public toString(): string {
|
|
107
|
-
const replacer = (key: string, value: any): any => {
|
|
108
|
-
if (value instanceof JSONObject) {
|
|
109
|
-
return value.innerMap
|
|
110
|
-
}
|
|
111
|
-
else if (value instanceof JSONArray) {
|
|
112
|
-
return value.innerList
|
|
113
|
-
}
|
|
114
|
-
return value
|
|
115
|
-
}
|
|
116
|
-
return JSON.stringify(this.innerMap, replacer)
|
|
117
|
-
}
|
|
118
|
-
}
|
|
1
|
+
import JSONArray from '../instances/JSONArray'
|
|
2
|
+
|
|
3
|
+
export default class JSONObject {
|
|
4
|
+
innerMap: { [key: string]: any }
|
|
5
|
+
|
|
6
|
+
constructor(value?: any) {
|
|
7
|
+
let map: { [key: string]: any }
|
|
8
|
+
if (value && typeof value === 'string') {
|
|
9
|
+
map = JSON.parse(value)
|
|
10
|
+
}
|
|
11
|
+
else if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
12
|
+
map = {}
|
|
13
|
+
const keySet = value instanceof JSONObject ? value.keySet() : Object.keys(value)
|
|
14
|
+
for (const key of keySet) {
|
|
15
|
+
const item = value instanceof JSONObject ? value.get(key) : value[key]
|
|
16
|
+
if (Array.isArray(item)) {
|
|
17
|
+
map[key] = new JSONArray(item)
|
|
18
|
+
}
|
|
19
|
+
else if (JSONObject.isPlainObject(item)) {
|
|
20
|
+
map[key] = new JSONObject(item)
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
map[key] = item
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
map = {}
|
|
29
|
+
}
|
|
30
|
+
this.innerMap = map
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public static isPlainObject(value: any): boolean {
|
|
34
|
+
if (!value || typeof value !== 'object')
|
|
35
|
+
return false
|
|
36
|
+
if (value instanceof JSONObject || value instanceof JSONArray) {
|
|
37
|
+
return false
|
|
38
|
+
}
|
|
39
|
+
const proto = Object.getPrototypeOf(value)
|
|
40
|
+
return proto === Object.prototype || proto === null
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public put(key: string, value: any) {
|
|
44
|
+
if (Array.isArray(value)) {
|
|
45
|
+
this.innerMap[key] = new JSONArray(value)
|
|
46
|
+
}
|
|
47
|
+
else if (JSONObject.isPlainObject(value)) {
|
|
48
|
+
this.innerMap[key] = new JSONObject(value)
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.innerMap[key] = value
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public get(key: string): any {
|
|
56
|
+
return this.innerMap[key]
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public opt(key: string): any {
|
|
60
|
+
return key == null ? null : this.innerMap[key]
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public optString(key: string, defaultValue: string): string {
|
|
64
|
+
const result = this.opt(key)
|
|
65
|
+
return result || defaultValue
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
public getBoolean(key: string): boolean {
|
|
69
|
+
const object = this.get(key)
|
|
70
|
+
if (typeof object === 'boolean') {
|
|
71
|
+
return object as boolean
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
return Boolean(object)
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
public optBoolean(key: string, defaultValue: boolean): boolean {
|
|
79
|
+
const val = this.opt(key)
|
|
80
|
+
if (!val) {
|
|
81
|
+
return defaultValue
|
|
82
|
+
}
|
|
83
|
+
return this.getBoolean(key)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
public getInt(key: string): number {
|
|
87
|
+
return this.innerMap[key] as number
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
public getJSONObject(key: string): JSONObject {
|
|
91
|
+
return this.innerMap[key] as JSONObject
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
public getJSONArray(key: string): JSONArray {
|
|
95
|
+
return this.innerMap[key] as JSONArray
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
public has(key: string): boolean {
|
|
99
|
+
return Object.prototype.hasOwnProperty.call(this.innerMap, key)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
public keySet(): string[] {
|
|
103
|
+
return Object.keys(this.innerMap)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
public toString(): string {
|
|
107
|
+
const replacer = (key: string, value: any): any => {
|
|
108
|
+
if (value instanceof JSONObject) {
|
|
109
|
+
return value.innerMap
|
|
110
|
+
}
|
|
111
|
+
else if (value instanceof JSONArray) {
|
|
112
|
+
return value.innerList
|
|
113
|
+
}
|
|
114
|
+
return value
|
|
115
|
+
}
|
|
116
|
+
return JSON.stringify(this.innerMap, replacer)
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
// 自定义 Console 类
|
|
2
|
-
export default class LogicConsole {
|
|
3
|
-
public debug(...args: any[]): void {
|
|
4
|
-
const newArgs = this.convert(args)
|
|
5
|
-
console.info(...newArgs)
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
public info(...args: any[]): void {
|
|
9
|
-
const newArgs = this.convert(args)
|
|
10
|
-
console.info(...newArgs)
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
public warn(...args: any[]): void {
|
|
14
|
-
const newArgs = this.convert(args)
|
|
15
|
-
console.warn(...newArgs)
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
public error(...args: any[]): void {
|
|
19
|
-
const newArgs = this.convert(args)
|
|
20
|
-
console.error(...newArgs)
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
private convert(args: any[]): any[] {
|
|
24
|
-
return args.map((arg) => {
|
|
25
|
-
if (typeof arg === 'object' && arg !== null && typeof arg.toString === 'function') {
|
|
26
|
-
return arg.toString()
|
|
27
|
-
}
|
|
28
|
-
return arg
|
|
29
|
-
})
|
|
30
|
-
}
|
|
31
|
-
}
|
|
1
|
+
// 自定义 Console 类
|
|
2
|
+
export default class LogicConsole {
|
|
3
|
+
public debug(...args: any[]): void {
|
|
4
|
+
const newArgs = this.convert(args)
|
|
5
|
+
console.info(...newArgs)
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
public info(...args: any[]): void {
|
|
9
|
+
const newArgs = this.convert(args)
|
|
10
|
+
console.info(...newArgs)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public warn(...args: any[]): void {
|
|
14
|
+
const newArgs = this.convert(args)
|
|
15
|
+
console.warn(...newArgs)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
public error(...args: any[]): void {
|
|
19
|
+
const newArgs = this.convert(args)
|
|
20
|
+
console.error(...newArgs)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
private convert(args: any[]): any[] {
|
|
24
|
+
return args.map((arg) => {
|
|
25
|
+
if (typeof arg === 'object' && arg !== null && typeof arg.toString === 'function') {
|
|
26
|
+
return arg.toString()
|
|
27
|
+
}
|
|
28
|
+
return arg
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
}
|
package/src/font-style/font.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
@font-face {
|
|
2
|
-
font-family: 'PingFangSC-Regular-woff2';
|
|
3
|
-
src: url('./PingFangSC-Regular.woff2') format('woff2');
|
|
4
|
-
}
|
|
1
|
+
@font-face {
|
|
2
|
+
font-family: 'PingFangSC-Regular-woff2';
|
|
3
|
+
src: url('./PingFangSC-Regular.woff2') format('woff2');
|
|
4
|
+
}
|
package/src/hooks/useBoolean.ts
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { ref } from 'vue'
|
|
2
|
-
|
|
3
|
-
export default function useBoolean(initValue = false) {
|
|
4
|
-
const bool = ref(initValue)
|
|
5
|
-
|
|
6
|
-
function setBool(value: boolean) {
|
|
7
|
-
bool.value = value
|
|
8
|
-
}
|
|
9
|
-
function setTrue() {
|
|
10
|
-
setBool(true)
|
|
11
|
-
}
|
|
12
|
-
function setFalse() {
|
|
13
|
-
setBool(false)
|
|
14
|
-
}
|
|
15
|
-
function toggle() {
|
|
16
|
-
setBool(!bool.value)
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return {
|
|
20
|
-
bool,
|
|
21
|
-
setBool,
|
|
22
|
-
setTrue,
|
|
23
|
-
setFalse,
|
|
24
|
-
toggle,
|
|
25
|
-
}
|
|
26
|
-
}
|
|
1
|
+
import { ref } from 'vue'
|
|
2
|
+
|
|
3
|
+
export default function useBoolean(initValue = false) {
|
|
4
|
+
const bool = ref(initValue)
|
|
5
|
+
|
|
6
|
+
function setBool(value: boolean) {
|
|
7
|
+
bool.value = value
|
|
8
|
+
}
|
|
9
|
+
function setTrue() {
|
|
10
|
+
setBool(true)
|
|
11
|
+
}
|
|
12
|
+
function setFalse() {
|
|
13
|
+
setBool(false)
|
|
14
|
+
}
|
|
15
|
+
function toggle() {
|
|
16
|
+
setBool(!bool.value)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return {
|
|
20
|
+
bool,
|
|
21
|
+
setBool,
|
|
22
|
+
setTrue,
|
|
23
|
+
setFalse,
|
|
24
|
+
toggle,
|
|
25
|
+
}
|
|
26
|
+
}
|
package/src/hooks/useCommon.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export function formatDate(date) {
|
|
2
|
-
const year = date.getFullYear()
|
|
3
|
-
const month = (date.getMonth() + 1).toString().padStart(2, '0') // 月份加1,并补零
|
|
4
|
-
const day = date.getDate().toString().padStart(2, '0') // 日期补零
|
|
5
|
-
const hours = date.getHours().toString().padStart(2, '0') // 小时补零
|
|
6
|
-
const minutes = date.getMinutes().toString().padStart(2, '0') // 分钟补零
|
|
7
|
-
const seconds = date.getSeconds().toString().padStart(2, '0') // 秒数补零
|
|
8
|
-
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
|
|
9
|
-
}
|
|
1
|
+
export function formatDate(date) {
|
|
2
|
+
const year = date.getFullYear()
|
|
3
|
+
const month = (date.getMonth() + 1).toString().padStart(2, '0') // 月份加1,并补零
|
|
4
|
+
const day = date.getDate().toString().padStart(2, '0') // 日期补零
|
|
5
|
+
const hours = date.getHours().toString().padStart(2, '0') // 小时补零
|
|
6
|
+
const minutes = date.getMinutes().toString().padStart(2, '0') // 分钟补零
|
|
7
|
+
const seconds = date.getSeconds().toString().padStart(2, '0') // 秒数补零
|
|
8
|
+
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
|
|
9
|
+
}
|
package/src/hooks/useLoading.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import useBoolean from './useBoolean'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* 加载状态管理 Hook
|
|
5
|
-
* @param initValue 初始加载状态,默认为 false
|
|
6
|
-
* @returns {object} 包含 loading 状态和控制方法
|
|
7
|
-
*/
|
|
8
|
-
export default function useLoading(initValue = false) {
|
|
9
|
-
const { bool: loading, setTrue: startLoading, setFalse: endLoading } = useBoolean(initValue)
|
|
10
|
-
|
|
11
|
-
return {
|
|
12
|
-
loading,
|
|
13
|
-
startLoading,
|
|
14
|
-
endLoading,
|
|
15
|
-
}
|
|
16
|
-
}
|
|
1
|
+
import useBoolean from './useBoolean'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 加载状态管理 Hook
|
|
5
|
+
* @param initValue 初始加载状态,默认为 false
|
|
6
|
+
* @returns {object} 包含 loading 状态和控制方法
|
|
7
|
+
*/
|
|
8
|
+
export default function useLoading(initValue = false) {
|
|
9
|
+
const { bool: loading, setTrue: startLoading, setFalse: endLoading } = useBoolean(initValue)
|
|
10
|
+
|
|
11
|
+
return {
|
|
12
|
+
loading,
|
|
13
|
+
startLoading,
|
|
14
|
+
endLoading,
|
|
15
|
+
}
|
|
16
|
+
}
|
package/src/hooks/useLogin.ts
CHANGED
|
@@ -1,97 +1,97 @@
|
|
|
1
|
-
import type { FieldRule } from 'vant'
|
|
2
|
-
import { computed, ref, unref } from 'vue'
|
|
3
|
-
|
|
4
|
-
export enum LoginStateEnum {
|
|
5
|
-
LOGIN,
|
|
6
|
-
REGISTER,
|
|
7
|
-
RESET_PASSWORD,
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const currentState = ref(LoginStateEnum.LOGIN)
|
|
11
|
-
|
|
12
|
-
export function useLoginState() {
|
|
13
|
-
function setLoginState(state: LoginStateEnum) {
|
|
14
|
-
currentState.value = state
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const getLoginState = computed(() => currentState.value)
|
|
18
|
-
|
|
19
|
-
function handleBackLogin() {
|
|
20
|
-
setLoginState(LoginStateEnum.LOGIN)
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return { setLoginState, getLoginState, handleBackLogin }
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export function useFormRules(formData?: any) {
|
|
27
|
-
const getUsernameFormRule = computed(() => createRule('请输入用户名'))
|
|
28
|
-
const getPasswordFormRule = computed(() => createRule('请输入密码'))
|
|
29
|
-
const getSmsFormRule = computed(() => createRule('请输入短信验证码'))
|
|
30
|
-
const getMobileFormRule = computed(() => createRule('请输入手机号码'))
|
|
31
|
-
|
|
32
|
-
const validatePolicy = async (value: any, _: FieldRule) => {
|
|
33
|
-
return !value ? Promise.resolve('勾选后才能注册') : Promise.resolve(true)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const validateConfirmPassword = (password: string) => {
|
|
37
|
-
return async (value: string) => {
|
|
38
|
-
if (!value)
|
|
39
|
-
return Promise.resolve('请输入确认密码')
|
|
40
|
-
|
|
41
|
-
if (value !== password)
|
|
42
|
-
return Promise.resolve('两次输入密码不一致')
|
|
43
|
-
|
|
44
|
-
return Promise.resolve(true)
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const getFormRules = computed((): { [k: string]: FieldRule[] } => {
|
|
49
|
-
const usernameFormRule = unref(getUsernameFormRule)
|
|
50
|
-
const passwordFormRule = unref(getPasswordFormRule)
|
|
51
|
-
const smsFormRule = unref(getSmsFormRule)
|
|
52
|
-
const mobileFormRule = unref(getMobileFormRule)
|
|
53
|
-
|
|
54
|
-
const mobileRule = {
|
|
55
|
-
sms: smsFormRule,
|
|
56
|
-
mobile: mobileFormRule,
|
|
57
|
-
}
|
|
58
|
-
switch (unref(currentState)) {
|
|
59
|
-
// register form rules
|
|
60
|
-
case LoginStateEnum.REGISTER:
|
|
61
|
-
return {
|
|
62
|
-
username: usernameFormRule,
|
|
63
|
-
password: passwordFormRule,
|
|
64
|
-
confirmPassword: [
|
|
65
|
-
{ validator: validateConfirmPassword(formData?.password), trigger: 'onChange' },
|
|
66
|
-
],
|
|
67
|
-
policy: [{ validator: validatePolicy, trigger: 'onBlur' }],
|
|
68
|
-
...mobileRule,
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// reset password form rules
|
|
72
|
-
case LoginStateEnum.RESET_PASSWORD:
|
|
73
|
-
return {
|
|
74
|
-
username: usernameFormRule,
|
|
75
|
-
...mobileRule,
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// login form rules
|
|
79
|
-
default:
|
|
80
|
-
return {
|
|
81
|
-
username: usernameFormRule,
|
|
82
|
-
password: passwordFormRule,
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
})
|
|
86
|
-
return { getFormRules }
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
function createRule(message: string): FieldRule[] {
|
|
90
|
-
return [
|
|
91
|
-
{
|
|
92
|
-
required: true,
|
|
93
|
-
message,
|
|
94
|
-
trigger: 'onBlur',
|
|
95
|
-
},
|
|
96
|
-
]
|
|
97
|
-
}
|
|
1
|
+
import type { FieldRule } from 'vant'
|
|
2
|
+
import { computed, ref, unref } from 'vue'
|
|
3
|
+
|
|
4
|
+
export enum LoginStateEnum {
|
|
5
|
+
LOGIN,
|
|
6
|
+
REGISTER,
|
|
7
|
+
RESET_PASSWORD,
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const currentState = ref(LoginStateEnum.LOGIN)
|
|
11
|
+
|
|
12
|
+
export function useLoginState() {
|
|
13
|
+
function setLoginState(state: LoginStateEnum) {
|
|
14
|
+
currentState.value = state
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const getLoginState = computed(() => currentState.value)
|
|
18
|
+
|
|
19
|
+
function handleBackLogin() {
|
|
20
|
+
setLoginState(LoginStateEnum.LOGIN)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return { setLoginState, getLoginState, handleBackLogin }
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function useFormRules(formData?: any) {
|
|
27
|
+
const getUsernameFormRule = computed(() => createRule('请输入用户名'))
|
|
28
|
+
const getPasswordFormRule = computed(() => createRule('请输入密码'))
|
|
29
|
+
const getSmsFormRule = computed(() => createRule('请输入短信验证码'))
|
|
30
|
+
const getMobileFormRule = computed(() => createRule('请输入手机号码'))
|
|
31
|
+
|
|
32
|
+
const validatePolicy = async (value: any, _: FieldRule) => {
|
|
33
|
+
return !value ? Promise.resolve('勾选后才能注册') : Promise.resolve(true)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const validateConfirmPassword = (password: string) => {
|
|
37
|
+
return async (value: string) => {
|
|
38
|
+
if (!value)
|
|
39
|
+
return Promise.resolve('请输入确认密码')
|
|
40
|
+
|
|
41
|
+
if (value !== password)
|
|
42
|
+
return Promise.resolve('两次输入密码不一致')
|
|
43
|
+
|
|
44
|
+
return Promise.resolve(true)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const getFormRules = computed((): { [k: string]: FieldRule[] } => {
|
|
49
|
+
const usernameFormRule = unref(getUsernameFormRule)
|
|
50
|
+
const passwordFormRule = unref(getPasswordFormRule)
|
|
51
|
+
const smsFormRule = unref(getSmsFormRule)
|
|
52
|
+
const mobileFormRule = unref(getMobileFormRule)
|
|
53
|
+
|
|
54
|
+
const mobileRule = {
|
|
55
|
+
sms: smsFormRule,
|
|
56
|
+
mobile: mobileFormRule,
|
|
57
|
+
}
|
|
58
|
+
switch (unref(currentState)) {
|
|
59
|
+
// register form rules
|
|
60
|
+
case LoginStateEnum.REGISTER:
|
|
61
|
+
return {
|
|
62
|
+
username: usernameFormRule,
|
|
63
|
+
password: passwordFormRule,
|
|
64
|
+
confirmPassword: [
|
|
65
|
+
{ validator: validateConfirmPassword(formData?.password), trigger: 'onChange' },
|
|
66
|
+
],
|
|
67
|
+
policy: [{ validator: validatePolicy, trigger: 'onBlur' }],
|
|
68
|
+
...mobileRule,
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// reset password form rules
|
|
72
|
+
case LoginStateEnum.RESET_PASSWORD:
|
|
73
|
+
return {
|
|
74
|
+
username: usernameFormRule,
|
|
75
|
+
...mobileRule,
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// login form rules
|
|
79
|
+
default:
|
|
80
|
+
return {
|
|
81
|
+
username: usernameFormRule,
|
|
82
|
+
password: passwordFormRule,
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
})
|
|
86
|
+
return { getFormRules }
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function createRule(message: string): FieldRule[] {
|
|
90
|
+
return [
|
|
91
|
+
{
|
|
92
|
+
required: true,
|
|
93
|
+
message,
|
|
94
|
+
trigger: 'onBlur',
|
|
95
|
+
},
|
|
96
|
+
]
|
|
97
|
+
}
|