af-mobile-client-vue3 1.3.35 → 1.3.37
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/.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 -68
- package/CLAUDE.md +218 -218
- 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 -31
- 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 -95
- 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 -77
- package/src/api/auth/types.ts +200 -200
- 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 -251
- 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 -432
- 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 +1311 -1311
- 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.ts +171 -171
- 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 -60
- package/src/router/guards.ts +131 -131
- package/src/router/index.ts +35 -35
- package/src/router/invoiceRoutes.ts +33 -33
- package/src/router/routes.ts +421 -421
- 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 -22
- package/src/stores/modules/setting.ts +87 -87
- package/src/stores/modules/user.ts +326 -326
- package/src/stores/mutation-type.ts +12 -12
- 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 +89 -89
- package/src/types/env.d.ts +16 -16
- package/src/types/platform.ts +194 -194
- package/src/types/settings.ts +1 -1
- package/src/types/vue-router.d.ts +13 -13
- 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 -201
- 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 -33
- package/src/utils/platform-auth.ts +135 -135
- 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 -70
- 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 -97
- 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 -152
- package/src/views/invoiceShow/index.vue +61 -61
- package/src/views/loading/AuthLoading.vue +345 -345
- package/src/views/user/login/ForgetPasswordForm.vue +94 -94
- package/src/views/user/login/LoginForm.vue +350 -350
- 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 +114 -114
- package/.claude/settings.local.json +0 -14
package/src/types/platform.ts
CHANGED
|
@@ -1,194 +1,194 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 平台类型枚举定义
|
|
3
|
-
*/
|
|
4
|
-
export enum PlatformType {
|
|
5
|
-
/**
|
|
6
|
-
* 微信公众号
|
|
7
|
-
*/
|
|
8
|
-
WECHAT_OFFICIAL = 'WECHAT_OFFICIAL',
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* 微信小程序
|
|
12
|
-
*/
|
|
13
|
-
WECHAT_MINI = 'WECHAT_MINI',
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* 支付宝
|
|
17
|
-
*/
|
|
18
|
-
ALIPAY = 'ALIPAY',
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* 钉钉
|
|
22
|
-
*/
|
|
23
|
-
DINGTALK = 'DINGTALK',
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* 第三方应用
|
|
27
|
-
*/
|
|
28
|
-
THIRD_PARTY_APP = 'THIRD_PARTY_APP',
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* 飞书
|
|
32
|
-
*/
|
|
33
|
-
FEISHU = 'FEISHU',
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* 抖音
|
|
37
|
-
*/
|
|
38
|
-
TIKTOK = 'TIKTOK',
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* 自定义平台
|
|
42
|
-
*/
|
|
43
|
-
CUSTOM = 'CUSTOM',
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* 平台配置信息
|
|
48
|
-
*/
|
|
49
|
-
export interface PlatformConfig {
|
|
50
|
-
/** 平台类型 */
|
|
51
|
-
type: PlatformType
|
|
52
|
-
/** 平台显示名称 */
|
|
53
|
-
name: string
|
|
54
|
-
/** 平台路由前缀 */
|
|
55
|
-
routePrefix: string
|
|
56
|
-
/** 平台描述 */
|
|
57
|
-
description?: string
|
|
58
|
-
/** 认证加载显示名称 */
|
|
59
|
-
authDisplayName?: string
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* 平台类型与路由前缀的映射配置
|
|
64
|
-
*/
|
|
65
|
-
export const PLATFORM_ROUTE_MAP: Record<PlatformType, string> = {
|
|
66
|
-
[PlatformType.WECHAT_OFFICIAL]: '/wechat',
|
|
67
|
-
[PlatformType.WECHAT_MINI]: '/wx-mini-program',
|
|
68
|
-
[PlatformType.ALIPAY]: '/alipay',
|
|
69
|
-
[PlatformType.DINGTALK]: '/ding-talk',
|
|
70
|
-
[PlatformType.THIRD_PARTY_APP]: '/app',
|
|
71
|
-
[PlatformType.FEISHU]: '/feishu',
|
|
72
|
-
[PlatformType.TIKTOK]: '/tiktok',
|
|
73
|
-
[PlatformType.CUSTOM]: '/custom',
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* 平台详细配置信息
|
|
78
|
-
*/
|
|
79
|
-
export const PLATFORM_CONFIGS: Record<PlatformType, PlatformConfig> = {
|
|
80
|
-
[PlatformType.WECHAT_OFFICIAL]: {
|
|
81
|
-
type: PlatformType.WECHAT_OFFICIAL,
|
|
82
|
-
name: '微信公众号',
|
|
83
|
-
routePrefix: '/wechat',
|
|
84
|
-
description: '微信公众号外部用户',
|
|
85
|
-
},
|
|
86
|
-
[PlatformType.WECHAT_MINI]: {
|
|
87
|
-
type: PlatformType.WECHAT_MINI,
|
|
88
|
-
name: '微信小程序',
|
|
89
|
-
routePrefix: '/wx-mini-program',
|
|
90
|
-
description: '微信小程序用户',
|
|
91
|
-
},
|
|
92
|
-
[PlatformType.ALIPAY]: {
|
|
93
|
-
type: PlatformType.ALIPAY,
|
|
94
|
-
name: '支付宝',
|
|
95
|
-
routePrefix: '/alipay',
|
|
96
|
-
description: '支付宝用户',
|
|
97
|
-
},
|
|
98
|
-
[PlatformType.DINGTALK]: {
|
|
99
|
-
type: PlatformType.DINGTALK,
|
|
100
|
-
name: '钉钉',
|
|
101
|
-
routePrefix: '/ding-talk',
|
|
102
|
-
description: '钉钉用户',
|
|
103
|
-
},
|
|
104
|
-
[PlatformType.THIRD_PARTY_APP]: {
|
|
105
|
-
type: PlatformType.THIRD_PARTY_APP,
|
|
106
|
-
name: '第三方应用',
|
|
107
|
-
routePrefix: '/app',
|
|
108
|
-
description: '第三方应用用户',
|
|
109
|
-
},
|
|
110
|
-
[PlatformType.FEISHU]: {
|
|
111
|
-
type: PlatformType.FEISHU,
|
|
112
|
-
name: '飞书',
|
|
113
|
-
routePrefix: '/feishu',
|
|
114
|
-
description: '飞书用户',
|
|
115
|
-
},
|
|
116
|
-
[PlatformType.TIKTOK]: {
|
|
117
|
-
type: PlatformType.TIKTOK,
|
|
118
|
-
name: '抖音',
|
|
119
|
-
routePrefix: '/tiktok',
|
|
120
|
-
description: '抖音用户',
|
|
121
|
-
},
|
|
122
|
-
[PlatformType.CUSTOM]: {
|
|
123
|
-
type: PlatformType.CUSTOM,
|
|
124
|
-
name: '自定义平台',
|
|
125
|
-
routePrefix: '/custom',
|
|
126
|
-
description: '自定义平台用户',
|
|
127
|
-
},
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* 根据平台类型获取路由前缀
|
|
132
|
-
* @param platformType 平台类型
|
|
133
|
-
* @returns 路由前缀,默认为 '/ex'
|
|
134
|
-
*/
|
|
135
|
-
export function getPlatformRoutePrefix(platformType?: string): string {
|
|
136
|
-
if (!platformType) {
|
|
137
|
-
return '/ex' // 默认外部用户路径
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
const route = PLATFORM_ROUTE_MAP[platformType as PlatformType]
|
|
141
|
-
return route || '/ex' // 找不到时使用默认路径
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* 根据平台类型获取平台配置
|
|
146
|
-
* @param platformType 平台类型
|
|
147
|
-
* @returns 平台配置信息
|
|
148
|
-
*/
|
|
149
|
-
export function getPlatformConfig(platformType?: string): PlatformConfig | null {
|
|
150
|
-
if (!platformType) {
|
|
151
|
-
return null
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
return PLATFORM_CONFIGS[platformType as PlatformType] || null
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* 检查是否为有效的平台类型
|
|
159
|
-
* @param platformType 平台类型
|
|
160
|
-
* @returns 是否为有效平台类型
|
|
161
|
-
*/
|
|
162
|
-
export function isValidPlatformType(platformType: string): platformType is PlatformType {
|
|
163
|
-
return Object.values(PlatformType).includes(platformType as PlatformType)
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* 获取所有支持的平台类型列表
|
|
168
|
-
* @returns 平台类型数组
|
|
169
|
-
*/
|
|
170
|
-
export function getAllPlatformTypes(): PlatformType[] {
|
|
171
|
-
return Object.values(PlatformType)
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* 获取所有平台配置列表
|
|
176
|
-
* @returns 平台配置数组
|
|
177
|
-
*/
|
|
178
|
-
export function getAllPlatformConfigs(): PlatformConfig[] {
|
|
179
|
-
return Object.values(PLATFORM_CONFIGS)
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* 根据平台类型获取认证显示名称
|
|
184
|
-
* @param platformType 平台类型
|
|
185
|
-
* @returns 认证显示名称,默认为 '第三方登录'
|
|
186
|
-
*/
|
|
187
|
-
export function getPlatformAuthDisplayName(platformType?: string): string {
|
|
188
|
-
if (!platformType) {
|
|
189
|
-
return '第三方登录'
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
const config = PLATFORM_CONFIGS[platformType as PlatformType]
|
|
193
|
-
return config?.authDisplayName || '第三方登录'
|
|
194
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 平台类型枚举定义
|
|
3
|
+
*/
|
|
4
|
+
export enum PlatformType {
|
|
5
|
+
/**
|
|
6
|
+
* 微信公众号
|
|
7
|
+
*/
|
|
8
|
+
WECHAT_OFFICIAL = 'WECHAT_OFFICIAL',
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* 微信小程序
|
|
12
|
+
*/
|
|
13
|
+
WECHAT_MINI = 'WECHAT_MINI',
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 支付宝
|
|
17
|
+
*/
|
|
18
|
+
ALIPAY = 'ALIPAY',
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* 钉钉
|
|
22
|
+
*/
|
|
23
|
+
DINGTALK = 'DINGTALK',
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* 第三方应用
|
|
27
|
+
*/
|
|
28
|
+
THIRD_PARTY_APP = 'THIRD_PARTY_APP',
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* 飞书
|
|
32
|
+
*/
|
|
33
|
+
FEISHU = 'FEISHU',
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* 抖音
|
|
37
|
+
*/
|
|
38
|
+
TIKTOK = 'TIKTOK',
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* 自定义平台
|
|
42
|
+
*/
|
|
43
|
+
CUSTOM = 'CUSTOM',
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* 平台配置信息
|
|
48
|
+
*/
|
|
49
|
+
export interface PlatformConfig {
|
|
50
|
+
/** 平台类型 */
|
|
51
|
+
type: PlatformType
|
|
52
|
+
/** 平台显示名称 */
|
|
53
|
+
name: string
|
|
54
|
+
/** 平台路由前缀 */
|
|
55
|
+
routePrefix: string
|
|
56
|
+
/** 平台描述 */
|
|
57
|
+
description?: string
|
|
58
|
+
/** 认证加载显示名称 */
|
|
59
|
+
authDisplayName?: string
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* 平台类型与路由前缀的映射配置
|
|
64
|
+
*/
|
|
65
|
+
export const PLATFORM_ROUTE_MAP: Record<PlatformType, string> = {
|
|
66
|
+
[PlatformType.WECHAT_OFFICIAL]: '/wechat',
|
|
67
|
+
[PlatformType.WECHAT_MINI]: '/wx-mini-program',
|
|
68
|
+
[PlatformType.ALIPAY]: '/alipay',
|
|
69
|
+
[PlatformType.DINGTALK]: '/ding-talk',
|
|
70
|
+
[PlatformType.THIRD_PARTY_APP]: '/app',
|
|
71
|
+
[PlatformType.FEISHU]: '/feishu',
|
|
72
|
+
[PlatformType.TIKTOK]: '/tiktok',
|
|
73
|
+
[PlatformType.CUSTOM]: '/custom',
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* 平台详细配置信息
|
|
78
|
+
*/
|
|
79
|
+
export const PLATFORM_CONFIGS: Record<PlatformType, PlatformConfig> = {
|
|
80
|
+
[PlatformType.WECHAT_OFFICIAL]: {
|
|
81
|
+
type: PlatformType.WECHAT_OFFICIAL,
|
|
82
|
+
name: '微信公众号',
|
|
83
|
+
routePrefix: '/wechat',
|
|
84
|
+
description: '微信公众号外部用户',
|
|
85
|
+
},
|
|
86
|
+
[PlatformType.WECHAT_MINI]: {
|
|
87
|
+
type: PlatformType.WECHAT_MINI,
|
|
88
|
+
name: '微信小程序',
|
|
89
|
+
routePrefix: '/wx-mini-program',
|
|
90
|
+
description: '微信小程序用户',
|
|
91
|
+
},
|
|
92
|
+
[PlatformType.ALIPAY]: {
|
|
93
|
+
type: PlatformType.ALIPAY,
|
|
94
|
+
name: '支付宝',
|
|
95
|
+
routePrefix: '/alipay',
|
|
96
|
+
description: '支付宝用户',
|
|
97
|
+
},
|
|
98
|
+
[PlatformType.DINGTALK]: {
|
|
99
|
+
type: PlatformType.DINGTALK,
|
|
100
|
+
name: '钉钉',
|
|
101
|
+
routePrefix: '/ding-talk',
|
|
102
|
+
description: '钉钉用户',
|
|
103
|
+
},
|
|
104
|
+
[PlatformType.THIRD_PARTY_APP]: {
|
|
105
|
+
type: PlatformType.THIRD_PARTY_APP,
|
|
106
|
+
name: '第三方应用',
|
|
107
|
+
routePrefix: '/app',
|
|
108
|
+
description: '第三方应用用户',
|
|
109
|
+
},
|
|
110
|
+
[PlatformType.FEISHU]: {
|
|
111
|
+
type: PlatformType.FEISHU,
|
|
112
|
+
name: '飞书',
|
|
113
|
+
routePrefix: '/feishu',
|
|
114
|
+
description: '飞书用户',
|
|
115
|
+
},
|
|
116
|
+
[PlatformType.TIKTOK]: {
|
|
117
|
+
type: PlatformType.TIKTOK,
|
|
118
|
+
name: '抖音',
|
|
119
|
+
routePrefix: '/tiktok',
|
|
120
|
+
description: '抖音用户',
|
|
121
|
+
},
|
|
122
|
+
[PlatformType.CUSTOM]: {
|
|
123
|
+
type: PlatformType.CUSTOM,
|
|
124
|
+
name: '自定义平台',
|
|
125
|
+
routePrefix: '/custom',
|
|
126
|
+
description: '自定义平台用户',
|
|
127
|
+
},
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* 根据平台类型获取路由前缀
|
|
132
|
+
* @param platformType 平台类型
|
|
133
|
+
* @returns 路由前缀,默认为 '/ex'
|
|
134
|
+
*/
|
|
135
|
+
export function getPlatformRoutePrefix(platformType?: string): string {
|
|
136
|
+
if (!platformType) {
|
|
137
|
+
return '/ex' // 默认外部用户路径
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const route = PLATFORM_ROUTE_MAP[platformType as PlatformType]
|
|
141
|
+
return route || '/ex' // 找不到时使用默认路径
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* 根据平台类型获取平台配置
|
|
146
|
+
* @param platformType 平台类型
|
|
147
|
+
* @returns 平台配置信息
|
|
148
|
+
*/
|
|
149
|
+
export function getPlatformConfig(platformType?: string): PlatformConfig | null {
|
|
150
|
+
if (!platformType) {
|
|
151
|
+
return null
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return PLATFORM_CONFIGS[platformType as PlatformType] || null
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* 检查是否为有效的平台类型
|
|
159
|
+
* @param platformType 平台类型
|
|
160
|
+
* @returns 是否为有效平台类型
|
|
161
|
+
*/
|
|
162
|
+
export function isValidPlatformType(platformType: string): platformType is PlatformType {
|
|
163
|
+
return Object.values(PlatformType).includes(platformType as PlatformType)
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* 获取所有支持的平台类型列表
|
|
168
|
+
* @returns 平台类型数组
|
|
169
|
+
*/
|
|
170
|
+
export function getAllPlatformTypes(): PlatformType[] {
|
|
171
|
+
return Object.values(PlatformType)
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* 获取所有平台配置列表
|
|
176
|
+
* @returns 平台配置数组
|
|
177
|
+
*/
|
|
178
|
+
export function getAllPlatformConfigs(): PlatformConfig[] {
|
|
179
|
+
return Object.values(PLATFORM_CONFIGS)
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* 根据平台类型获取认证显示名称
|
|
184
|
+
* @param platformType 平台类型
|
|
185
|
+
* @returns 认证显示名称,默认为 '第三方登录'
|
|
186
|
+
*/
|
|
187
|
+
export function getPlatformAuthDisplayName(platformType?: string): string {
|
|
188
|
+
if (!platformType) {
|
|
189
|
+
return '第三方登录'
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
const config = PLATFORM_CONFIGS[platformType as PlatformType]
|
|
193
|
+
return config?.authDisplayName || '第三方登录'
|
|
194
|
+
}
|
package/src/types/settings.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const pageDefaultTitle = '智慧燃气'
|
|
1
|
+
export const pageDefaultTitle = '智慧燃气'
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
declare module 'vue-router' {
|
|
2
|
-
interface RouteMeta {
|
|
3
|
-
/** page title */
|
|
4
|
-
title?: string
|
|
5
|
-
/** keepalive */
|
|
6
|
-
keepAlive?: boolean
|
|
7
|
-
/** 是否需要认证,默认true */
|
|
8
|
-
requiresAuth?: boolean
|
|
9
|
-
/** 是否允许外部用户访问,默认false */
|
|
10
|
-
allowExternalUser?: boolean
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
export {}
|
|
1
|
+
declare module 'vue-router' {
|
|
2
|
+
interface RouteMeta {
|
|
3
|
+
/** page title */
|
|
4
|
+
title?: string
|
|
5
|
+
/** keepalive */
|
|
6
|
+
keepAlive?: boolean
|
|
7
|
+
/** 是否需要认证,默认true */
|
|
8
|
+
requiresAuth?: boolean
|
|
9
|
+
/** 是否允许外部用户访问,默认false */
|
|
10
|
+
allowExternalUser?: boolean
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export {}
|
package/src/utils/Storage.ts
CHANGED
|
@@ -1,124 +1,124 @@
|
|
|
1
|
-
// 默认缓存期限为7天
|
|
2
|
-
const DEFAULT_CACHE_TIME = 60 * 60 * 24 * 7
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* 创建本地缓存对象
|
|
6
|
-
*/
|
|
7
|
-
export function createStorage({ prefixKey = '', storage = localStorage } = {}) {
|
|
8
|
-
/**
|
|
9
|
-
* 本地缓存类
|
|
10
|
-
* @class Storage
|
|
11
|
-
*/
|
|
12
|
-
const Storage = class {
|
|
13
|
-
private storage = storage
|
|
14
|
-
private prefixKey?: string = prefixKey
|
|
15
|
-
|
|
16
|
-
private getKey(key: string) {
|
|
17
|
-
return `${this.prefixKey}${key}`.toUpperCase()
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* @description 设置缓存
|
|
22
|
-
* @param {string} key 缓存键
|
|
23
|
-
* @param {*} value 缓存值
|
|
24
|
-
* @param expire
|
|
25
|
-
*/
|
|
26
|
-
set(key: string, value: any, expire: number | null = DEFAULT_CACHE_TIME) {
|
|
27
|
-
const stringData = JSON.stringify({
|
|
28
|
-
value,
|
|
29
|
-
expire: expire !== null ? new Date().getTime() + expire * 1000 : null,
|
|
30
|
-
})
|
|
31
|
-
this.storage.setItem(this.getKey(key), stringData)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* 读取缓存
|
|
36
|
-
* @param {string} key 缓存键
|
|
37
|
-
* @param {*=} def 默认值
|
|
38
|
-
*/
|
|
39
|
-
get(key: string, def: any = null) {
|
|
40
|
-
const item = this.storage.getItem(this.getKey(key))
|
|
41
|
-
if (item) {
|
|
42
|
-
try {
|
|
43
|
-
const data = JSON.parse(item)
|
|
44
|
-
const { value, expire } = data
|
|
45
|
-
// 在有效期内直接返回
|
|
46
|
-
if (expire === null || expire >= Date.now())
|
|
47
|
-
return value
|
|
48
|
-
|
|
49
|
-
this.remove(key)
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
return def
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return def
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* 从缓存删除某项
|
|
60
|
-
* @param {string} key
|
|
61
|
-
*/
|
|
62
|
-
remove(key: string) {
|
|
63
|
-
this.storage.removeItem(this.getKey(key))
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* 清空所有缓存
|
|
68
|
-
* @memberOf Cache
|
|
69
|
-
*/
|
|
70
|
-
clear(): void {
|
|
71
|
-
this.storage.clear()
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* 设置cookie
|
|
76
|
-
* @param {string} name cookie 名称
|
|
77
|
-
* @param {*} value cookie 值
|
|
78
|
-
* @param {number=} expire 过期时间
|
|
79
|
-
* 如果过期时间为设置,默认关闭浏览器自动删除
|
|
80
|
-
* @example
|
|
81
|
-
*/
|
|
82
|
-
setCookie(name: string, value: any, expire: number | null = DEFAULT_CACHE_TIME) {
|
|
83
|
-
document.cookie = `${this.getKey(name)}=${value}; Max-Age=${expire}`
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* 根据名字获取cookie值
|
|
88
|
-
* @param name
|
|
89
|
-
*/
|
|
90
|
-
getCookie(name: string): string {
|
|
91
|
-
const cookieArr = document.cookie.split('; ')
|
|
92
|
-
for (let i = 0, length = cookieArr.length; i < length; i++) {
|
|
93
|
-
const kv = cookieArr[i].split('=')
|
|
94
|
-
if (kv[0] === this.getKey(name))
|
|
95
|
-
return kv[1]
|
|
96
|
-
}
|
|
97
|
-
return ''
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* 根据名字删除指定的cookie
|
|
102
|
-
* @param {string} key
|
|
103
|
-
*/
|
|
104
|
-
removeCookie(key: string) {
|
|
105
|
-
this.setCookie(key, 1, -1)
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* 清空cookie,使所有cookie失效
|
|
110
|
-
*/
|
|
111
|
-
clearCookie(): void {
|
|
112
|
-
const keys = document.cookie.match(/[^ =;]+(?==)/g)
|
|
113
|
-
if (keys) {
|
|
114
|
-
for (let i = keys.length; i--;)
|
|
115
|
-
document.cookie = `${keys[i]}=0;expire=${new Date(0).toUTCString()}`
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return new Storage()
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
export const storage = createStorage()
|
|
123
|
-
|
|
124
|
-
export default Storage
|
|
1
|
+
// 默认缓存期限为7天
|
|
2
|
+
const DEFAULT_CACHE_TIME = 60 * 60 * 24 * 7
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 创建本地缓存对象
|
|
6
|
+
*/
|
|
7
|
+
export function createStorage({ prefixKey = '', storage = localStorage } = {}) {
|
|
8
|
+
/**
|
|
9
|
+
* 本地缓存类
|
|
10
|
+
* @class Storage
|
|
11
|
+
*/
|
|
12
|
+
const Storage = class {
|
|
13
|
+
private storage = storage
|
|
14
|
+
private prefixKey?: string = prefixKey
|
|
15
|
+
|
|
16
|
+
private getKey(key: string) {
|
|
17
|
+
return `${this.prefixKey}${key}`.toUpperCase()
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @description 设置缓存
|
|
22
|
+
* @param {string} key 缓存键
|
|
23
|
+
* @param {*} value 缓存值
|
|
24
|
+
* @param expire
|
|
25
|
+
*/
|
|
26
|
+
set(key: string, value: any, expire: number | null = DEFAULT_CACHE_TIME) {
|
|
27
|
+
const stringData = JSON.stringify({
|
|
28
|
+
value,
|
|
29
|
+
expire: expire !== null ? new Date().getTime() + expire * 1000 : null,
|
|
30
|
+
})
|
|
31
|
+
this.storage.setItem(this.getKey(key), stringData)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* 读取缓存
|
|
36
|
+
* @param {string} key 缓存键
|
|
37
|
+
* @param {*=} def 默认值
|
|
38
|
+
*/
|
|
39
|
+
get(key: string, def: any = null) {
|
|
40
|
+
const item = this.storage.getItem(this.getKey(key))
|
|
41
|
+
if (item) {
|
|
42
|
+
try {
|
|
43
|
+
const data = JSON.parse(item)
|
|
44
|
+
const { value, expire } = data
|
|
45
|
+
// 在有效期内直接返回
|
|
46
|
+
if (expire === null || expire >= Date.now())
|
|
47
|
+
return value
|
|
48
|
+
|
|
49
|
+
this.remove(key)
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return def
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return def
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* 从缓存删除某项
|
|
60
|
+
* @param {string} key
|
|
61
|
+
*/
|
|
62
|
+
remove(key: string) {
|
|
63
|
+
this.storage.removeItem(this.getKey(key))
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* 清空所有缓存
|
|
68
|
+
* @memberOf Cache
|
|
69
|
+
*/
|
|
70
|
+
clear(): void {
|
|
71
|
+
this.storage.clear()
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* 设置cookie
|
|
76
|
+
* @param {string} name cookie 名称
|
|
77
|
+
* @param {*} value cookie 值
|
|
78
|
+
* @param {number=} expire 过期时间
|
|
79
|
+
* 如果过期时间为设置,默认关闭浏览器自动删除
|
|
80
|
+
* @example
|
|
81
|
+
*/
|
|
82
|
+
setCookie(name: string, value: any, expire: number | null = DEFAULT_CACHE_TIME) {
|
|
83
|
+
document.cookie = `${this.getKey(name)}=${value}; Max-Age=${expire}`
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* 根据名字获取cookie值
|
|
88
|
+
* @param name
|
|
89
|
+
*/
|
|
90
|
+
getCookie(name: string): string {
|
|
91
|
+
const cookieArr = document.cookie.split('; ')
|
|
92
|
+
for (let i = 0, length = cookieArr.length; i < length; i++) {
|
|
93
|
+
const kv = cookieArr[i].split('=')
|
|
94
|
+
if (kv[0] === this.getKey(name))
|
|
95
|
+
return kv[1]
|
|
96
|
+
}
|
|
97
|
+
return ''
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* 根据名字删除指定的cookie
|
|
102
|
+
* @param {string} key
|
|
103
|
+
*/
|
|
104
|
+
removeCookie(key: string) {
|
|
105
|
+
this.setCookie(key, 1, -1)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* 清空cookie,使所有cookie失效
|
|
110
|
+
*/
|
|
111
|
+
clearCookie(): void {
|
|
112
|
+
const keys = document.cookie.match(/[^ =;]+(?==)/g)
|
|
113
|
+
if (keys) {
|
|
114
|
+
for (let i = keys.length; i--;)
|
|
115
|
+
document.cookie = `${keys[i]}=0;expire=${new Date(0).toUTCString()}`
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return new Storage()
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export const storage = createStorage()
|
|
123
|
+
|
|
124
|
+
export default Storage
|