@uxda/appkit 4.1.60 → 4.1.62
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/.eslintrc.mjs +7 -7
- package/README.md +187 -187
- package/babel.config.js +12 -12
- package/dist/appkit.css +8 -6
- package/dist/assets/asset-3B_CoPto +1 -0
- package/dist/index.js +2 -3
- package/package.json +77 -77
- package/project.config.json +15 -15
- package/project.tt.json +13 -13
- package/rollup.config.mjs +56 -56
- package/src/Appkit.ts +66 -66
- package/src/balance/api/endpoints.ts +133 -133
- package/src/balance/api/index.ts +106 -106
- package/src/balance/components/AccountView.vue +749 -750
- package/src/balance/components/BalanceCard.vue +215 -215
- package/src/balance/components/BalanceReminder.vue +85 -85
- package/src/balance/components/ConsumptionFilter.vue +218 -218
- package/src/balance/components/ConsumptionRules.vue +68 -68
- package/src/balance/components/DateFilter.vue +250 -250
- package/src/balance/components/DateRange.vue +80 -80
- package/src/balance/components/ListFilter.vue +62 -62
- package/src/balance/components/ListFilterPicker.vue +191 -191
- package/src/balance/components/PromoterCard.vue +237 -237
- package/src/balance/components/SecondBalance.vue +71 -71
- package/src/balance/components/Tip.vue +45 -45
- package/src/balance/components/index.ts +8 -8
- package/src/balance/types.ts +97 -97
- package/src/components/bt-cropper/index.vue +774 -774
- package/src/components/bt-cropper/utils/calcCropper.js +42 -42
- package/src/components/bt-cropper/utils/calcImagePosition.js +23 -23
- package/src/components/bt-cropper/utils/calcImageSize.js +37 -37
- package/src/components/bt-cropper/utils/calcPointDistance.js +12 -12
- package/src/components/bt-cropper/utils/calcRightAndBottom.js +7 -7
- package/src/components/bt-cropper/utils/ratio.js +3 -3
- package/src/components/bt-cropper/utils/tools.js +25 -25
- package/src/components/dd-area/index.vue +225 -225
- package/src/components/dd-icon/doc.md +21 -21
- package/src/components/dd-icon/index.vue +23 -23
- package/src/components/dd-notice-bar/index.vue +78 -78
- package/src/components/dd-search/doc.md +34 -34
- package/src/components/dd-search/index.vue +168 -168
- package/src/components/dd-selector/index.vue +124 -124
- package/src/components/dd-skeleton/doc.md +19 -19
- package/src/components/dd-skeleton/index.vue +36 -36
- package/src/global.ts +6 -6
- package/src/index.ts +89 -89
- package/src/main.scss +1 -1
- package/src/notice/api/endpoints.ts +17 -17
- package/src/notice/api/index.ts +106 -106
- package/src/notice/components/NoticeBanner.vue +243 -243
- package/src/notice/components/NoticeEntry.vue +99 -99
- package/src/notice/components/NoticeList.vue +315 -315
- package/src/notice/components/NoticePopup.vue +162 -162
- package/src/notice/components/index.ts +5 -5
- package/src/notice/components/useCommonList.ts +86 -86
- package/src/notice/components/useNotice.ts +35 -35
- package/src/notice/index.ts +1 -1
- package/src/notice/types.ts +25 -25
- package/src/payment/api/config.ts +7 -7
- package/src/payment/api/endpoints.ts +103 -103
- package/src/payment/api/index.ts +100 -100
- package/src/payment/components/AmountPicker.vue +90 -90
- package/src/payment/components/RechargeResult.vue +69 -69
- package/src/payment/components/RechargeView.vue +155 -155
- package/src/payment/components/RightsPicker.vue +105 -105
- package/src/payment/components/TradeView.vue +317 -317
- package/src/payment/components/UserAgreement.vue +234 -234
- package/src/payment/components/index.ts +22 -22
- package/src/payment/index.ts +5 -5
- package/src/payment/services/index.ts +16 -16
- package/src/payment/services/invoke-recharge.ts +25 -25
- package/src/payment/services/request-payment.ts +58 -58
- package/src/payment/types.ts +28 -28
- package/src/register/components/SelfRegistration.vue +233 -233
- package/src/register/components/index.ts +2 -2
- package/src/shared/components/AppDrawer.vue +58 -54
- package/src/shared/components/AppVerify.vue +128 -128
- package/src/shared/components/DeviceVersion.vue +68 -68
- package/src/shared/components/EmptyView.vue +33 -33
- package/src/shared/components/OcrBusinessLicense.vue +130 -130
- package/src/shared/components/OcrIcon.vue +202 -202
- package/src/shared/components/PageHeader.vue +79 -79
- package/src/shared/components/index.ts +8 -8
- package/src/shared/composables/index.ts +8 -8
- package/src/shared/composables/useAmount.ts +46 -46
- package/src/shared/composables/useCountdown.ts +46 -46
- package/src/shared/composables/useCrypto.ts +76 -76
- package/src/shared/composables/useDragBox.ts +97 -97
- package/src/shared/composables/useEncode.ts +43 -43
- package/src/shared/composables/useLogger.ts +123 -123
- package/src/shared/composables/useSafeArea.ts +46 -46
- package/src/shared/composables/useTabbar.ts +24 -24
- package/src/shared/composables/useUpload.ts +54 -54
- package/src/shared/composables/useValidator.ts +31 -31
- package/src/shared/http/Http.ts +136 -136
- package/src/shared/http/index.ts +1 -1
- package/src/shared/http/types.ts +157 -157
- package/src/shared/index.ts +3 -3
- package/src/shared/weixin/payment.ts +38 -38
- package/src/styles/vars.scss +3 -3
- package/src/user/api/endpoints.ts +17 -17
- package/src/user/api/index.ts +111 -111
- package/src/user/components/LoginSetting.vue +114 -114
- package/src/user/components/UserAuth.vue +216 -216
- package/src/user/components/UserBinding.vue +307 -307
- package/src/user/components/UserBindingSuccess.vue +80 -80
- package/src/user/components/UserEntry.vue +133 -133
- package/src/user/components/UserFeedback.vue +431 -431
- package/src/user/components/UserFeedbackEntry.vue +192 -192
- package/src/user/components/UserHeadCrop.vue +65 -65
- package/src/user/components/UserInfo.vue +723 -723
- package/src/user/components/UserResourceEmpty.vue +75 -75
- package/src/user/components/index.ts +23 -23
- package/src/user/index.ts +1 -1
- package/tsconfig.json +30 -30
- package/types/global.d.ts +21 -21
- package/types/vue.d.ts +10 -10
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
import Taro from '@tarojs/taro'
|
|
2
|
-
import { Media } from '@uxda/nutshell/taro'
|
|
3
|
-
|
|
4
|
-
export type UploadConfig = {
|
|
5
|
-
baseUrl: string,
|
|
6
|
-
name?: string,
|
|
7
|
-
headers?: Record<string, string>
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const mappings: {[x: string]: keyof Media} = {
|
|
11
|
-
downloadUrl: 'thrumb',
|
|
12
|
-
fileId: 'id',
|
|
13
|
-
fileName: 'name',
|
|
14
|
-
fileSize: 'size',
|
|
15
|
-
fileSuffix: 'ext',
|
|
16
|
-
fileType: 'type',
|
|
17
|
-
originalUrl: 'url'
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const transformFields = (row: any) => {
|
|
21
|
-
return Object.fromEntries(Object.entries(row).map(([k, v]) => [mappings[k] || k, v]))
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
type UploadFunction = (url: string, file: Media) => Promise<Media>
|
|
25
|
-
|
|
26
|
-
export const useUpload = (config: UploadConfig) => {
|
|
27
|
-
const upload: UploadFunction = (url: string, file: Media) => {
|
|
28
|
-
return new Promise<Media>((resolve, reject) => {
|
|
29
|
-
Taro.uploadFile({
|
|
30
|
-
url: config.baseUrl + url,
|
|
31
|
-
filePath: file.path!,
|
|
32
|
-
name: 'file',
|
|
33
|
-
header: config.headers ?? {
|
|
34
|
-
token: Taro.getStorageSync('session')
|
|
35
|
-
},
|
|
36
|
-
success: (rsp: any) => {
|
|
37
|
-
const { data } = rsp
|
|
38
|
-
console.log('===data', data)
|
|
39
|
-
try {
|
|
40
|
-
const response = JSON.parse(data)
|
|
41
|
-
console.log('===response', response)
|
|
42
|
-
resolve(transformFields(response.result))
|
|
43
|
-
} catch (e) {
|
|
44
|
-
reject({
|
|
45
|
-
message: '文件上传异常'
|
|
46
|
-
})
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
})
|
|
50
|
-
})
|
|
51
|
-
}
|
|
52
|
-
return {
|
|
53
|
-
upload
|
|
54
|
-
}
|
|
1
|
+
import Taro from '@tarojs/taro'
|
|
2
|
+
import { Media } from '@uxda/nutshell/taro'
|
|
3
|
+
|
|
4
|
+
export type UploadConfig = {
|
|
5
|
+
baseUrl: string,
|
|
6
|
+
name?: string,
|
|
7
|
+
headers?: Record<string, string>
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const mappings: {[x: string]: keyof Media} = {
|
|
11
|
+
downloadUrl: 'thrumb',
|
|
12
|
+
fileId: 'id',
|
|
13
|
+
fileName: 'name',
|
|
14
|
+
fileSize: 'size',
|
|
15
|
+
fileSuffix: 'ext',
|
|
16
|
+
fileType: 'type',
|
|
17
|
+
originalUrl: 'url'
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const transformFields = (row: any) => {
|
|
21
|
+
return Object.fromEntries(Object.entries(row).map(([k, v]) => [mappings[k] || k, v]))
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
type UploadFunction = (url: string, file: Media) => Promise<Media>
|
|
25
|
+
|
|
26
|
+
export const useUpload = (config: UploadConfig) => {
|
|
27
|
+
const upload: UploadFunction = (url: string, file: Media) => {
|
|
28
|
+
return new Promise<Media>((resolve, reject) => {
|
|
29
|
+
Taro.uploadFile({
|
|
30
|
+
url: config.baseUrl + url,
|
|
31
|
+
filePath: file.path!,
|
|
32
|
+
name: 'file',
|
|
33
|
+
header: config.headers ?? {
|
|
34
|
+
token: Taro.getStorageSync('session')
|
|
35
|
+
},
|
|
36
|
+
success: (rsp: any) => {
|
|
37
|
+
const { data } = rsp
|
|
38
|
+
console.log('===data', data)
|
|
39
|
+
try {
|
|
40
|
+
const response = JSON.parse(data)
|
|
41
|
+
console.log('===response', response)
|
|
42
|
+
resolve(transformFields(response.result))
|
|
43
|
+
} catch (e) {
|
|
44
|
+
reject({
|
|
45
|
+
message: '文件上传异常'
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
})
|
|
50
|
+
})
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
upload
|
|
54
|
+
}
|
|
55
55
|
}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 通用表单校验器
|
|
3
|
-
*/
|
|
4
|
-
import { isMobilePhone, isIdentityCard } from 'validator'
|
|
5
|
-
|
|
6
|
-
export function useValidator() {
|
|
7
|
-
// 身份证号码校验
|
|
8
|
-
function certNoValidator(value: string) {
|
|
9
|
-
if (!value) {
|
|
10
|
-
return '请输入身份证号'
|
|
11
|
-
} else if (!isIdentityCard(value, 'zh-CN')) {
|
|
12
|
-
return '请输入正确的身份证号码'
|
|
13
|
-
}
|
|
14
|
-
return false
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// 电话号码校验
|
|
18
|
-
function phoneValidator(value: string) {
|
|
19
|
-
if (!value) {
|
|
20
|
-
return '请输入手机号码'
|
|
21
|
-
} else if (!isMobilePhone(value, 'zh-CN')) {
|
|
22
|
-
return '请输入正确的手机号'
|
|
23
|
-
}
|
|
24
|
-
return false
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return {
|
|
28
|
-
certNoValidator,
|
|
29
|
-
phoneValidator,
|
|
30
|
-
}
|
|
31
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 通用表单校验器
|
|
3
|
+
*/
|
|
4
|
+
import { isMobilePhone, isIdentityCard } from 'validator'
|
|
5
|
+
|
|
6
|
+
export function useValidator() {
|
|
7
|
+
// 身份证号码校验
|
|
8
|
+
function certNoValidator(value: string) {
|
|
9
|
+
if (!value) {
|
|
10
|
+
return '请输入身份证号'
|
|
11
|
+
} else if (!isIdentityCard(value, 'zh-CN')) {
|
|
12
|
+
return '请输入正确的身份证号码'
|
|
13
|
+
}
|
|
14
|
+
return false
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// 电话号码校验
|
|
18
|
+
function phoneValidator(value: string) {
|
|
19
|
+
if (!value) {
|
|
20
|
+
return '请输入手机号码'
|
|
21
|
+
} else if (!isMobilePhone(value, 'zh-CN')) {
|
|
22
|
+
return '请输入正确的手机号'
|
|
23
|
+
}
|
|
24
|
+
return false
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return {
|
|
28
|
+
certNoValidator,
|
|
29
|
+
phoneValidator,
|
|
30
|
+
}
|
|
31
|
+
}
|
package/src/shared/http/Http.ts
CHANGED
|
@@ -1,136 +1,136 @@
|
|
|
1
|
-
import {
|
|
2
|
-
HttpInstance,
|
|
3
|
-
HttpClientConfig,
|
|
4
|
-
HttpMethod,
|
|
5
|
-
HttpRequestConfig,
|
|
6
|
-
RequestData,
|
|
7
|
-
ResponseData,
|
|
8
|
-
ResponseRaw,
|
|
9
|
-
Paging,
|
|
10
|
-
HttpTranslate,
|
|
11
|
-
} from './types'
|
|
12
|
-
/**
|
|
13
|
-
* Useage:
|
|
14
|
-
* const $http = createHttp({
|
|
15
|
-
*
|
|
16
|
-
* })
|
|
17
|
-
* $http.get('/url').then(data => {
|
|
18
|
-
*
|
|
19
|
-
* })
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* 统一请求过程
|
|
24
|
-
* @param config
|
|
25
|
-
* @returns
|
|
26
|
-
*/
|
|
27
|
-
const request: HttpInstance['request'] = <T>(config: HttpRequestConfig) => {
|
|
28
|
-
const c = {
|
|
29
|
-
...clientConfig,
|
|
30
|
-
...config,
|
|
31
|
-
}
|
|
32
|
-
return new Promise<T>((resolve, reject) => {
|
|
33
|
-
const data =
|
|
34
|
-
config.data && clientConfig.translates && clientConfig.translates[c.url]
|
|
35
|
-
? (clientConfig.translates[c.url] as HttpTranslate)(c.data || {})
|
|
36
|
-
: c.data
|
|
37
|
-
console.log(`[][][][][]HTTP.${c.method}, ${c.baseUrl}${c.url}`, data)
|
|
38
|
-
|
|
39
|
-
clientConfig.vendor &&
|
|
40
|
-
clientConfig.vendor
|
|
41
|
-
.request({
|
|
42
|
-
url: `${c.baseUrl}${c.url}`,
|
|
43
|
-
data,
|
|
44
|
-
headers: c.headers,
|
|
45
|
-
method: c.method,
|
|
46
|
-
})
|
|
47
|
-
.then((raw: ResponseRaw) => {
|
|
48
|
-
// 按顺序执行拦截器
|
|
49
|
-
for (const interc of c.interceptors || []) {
|
|
50
|
-
const r = interc(raw)
|
|
51
|
-
if (r) {
|
|
52
|
-
// 某拦截器命中时
|
|
53
|
-
// 按拦截结果 决定是否继续执行
|
|
54
|
-
reject('===INTERCEPTED===' + raw.status)
|
|
55
|
-
return false
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
if (raw.data !== void 0) {
|
|
59
|
-
// 当用户配置含有 transforms 时, 使用用户提供的 transform
|
|
60
|
-
// 先 endpoints transform
|
|
61
|
-
// 再组装分页数据
|
|
62
|
-
const response =
|
|
63
|
-
clientConfig.transforms && clientConfig.transforms[c.url]
|
|
64
|
-
? ((clientConfig.transforms[c.url] as HttpTranslate)(raw.data) as T)
|
|
65
|
-
: (raw.data as T)
|
|
66
|
-
// 前端要求分页
|
|
67
|
-
// 在 endpoints transform 之前格式化分页数据
|
|
68
|
-
// 并拼装回原 raw 数据
|
|
69
|
-
const paging =
|
|
70
|
-
config.data && config.data.page
|
|
71
|
-
? (clientConfig.paging as Paging).transform(raw.data)
|
|
72
|
-
: void 0
|
|
73
|
-
resolve(
|
|
74
|
-
paging
|
|
75
|
-
? ({
|
|
76
|
-
...paging,
|
|
77
|
-
data: response,
|
|
78
|
-
} as T)
|
|
79
|
-
: response
|
|
80
|
-
)
|
|
81
|
-
} else {
|
|
82
|
-
resolve(raw as any)
|
|
83
|
-
}
|
|
84
|
-
})
|
|
85
|
-
.catch((e: any) => {
|
|
86
|
-
console.log('request.catch===', e)
|
|
87
|
-
})
|
|
88
|
-
})
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
const get: HttpInstance['get'] = <T = ResponseData>(url: string, data?: RequestData) => {
|
|
92
|
-
return request<T>({
|
|
93
|
-
url,
|
|
94
|
-
data,
|
|
95
|
-
method: HttpMethod.get,
|
|
96
|
-
})
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
const post: HttpInstance['post'] = <T = ResponseData>(url: string, data: RequestData) => {
|
|
100
|
-
return request<T>({
|
|
101
|
-
url,
|
|
102
|
-
data,
|
|
103
|
-
method: HttpMethod.post,
|
|
104
|
-
})
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* 场景配置
|
|
109
|
-
* 本地后台团队统一返回值外层
|
|
110
|
-
*/
|
|
111
|
-
const defaultClientConfig: HttpClientConfig = {
|
|
112
|
-
baseUrl: '/',
|
|
113
|
-
interceptors: [(raw) => raw.status == 401],
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
let clientConfig = {
|
|
117
|
-
...defaultClientConfig,
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* 写入配置并返回 HTTP instance
|
|
122
|
-
* @param config
|
|
123
|
-
* @returns
|
|
124
|
-
*/
|
|
125
|
-
export function createHttp(config: HttpClientConfig): HttpInstance {
|
|
126
|
-
clientConfig = {
|
|
127
|
-
...defaultClientConfig,
|
|
128
|
-
...config,
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return {
|
|
132
|
-
request,
|
|
133
|
-
get,
|
|
134
|
-
post,
|
|
135
|
-
}
|
|
136
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
HttpInstance,
|
|
3
|
+
HttpClientConfig,
|
|
4
|
+
HttpMethod,
|
|
5
|
+
HttpRequestConfig,
|
|
6
|
+
RequestData,
|
|
7
|
+
ResponseData,
|
|
8
|
+
ResponseRaw,
|
|
9
|
+
Paging,
|
|
10
|
+
HttpTranslate,
|
|
11
|
+
} from './types'
|
|
12
|
+
/**
|
|
13
|
+
* Useage:
|
|
14
|
+
* const $http = createHttp({
|
|
15
|
+
*
|
|
16
|
+
* })
|
|
17
|
+
* $http.get('/url').then(data => {
|
|
18
|
+
*
|
|
19
|
+
* })
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* 统一请求过程
|
|
24
|
+
* @param config
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
const request: HttpInstance['request'] = <T>(config: HttpRequestConfig) => {
|
|
28
|
+
const c = {
|
|
29
|
+
...clientConfig,
|
|
30
|
+
...config,
|
|
31
|
+
}
|
|
32
|
+
return new Promise<T>((resolve, reject) => {
|
|
33
|
+
const data =
|
|
34
|
+
config.data && clientConfig.translates && clientConfig.translates[c.url]
|
|
35
|
+
? (clientConfig.translates[c.url] as HttpTranslate)(c.data || {})
|
|
36
|
+
: c.data
|
|
37
|
+
console.log(`[][][][][]HTTP.${c.method}, ${c.baseUrl}${c.url}`, data)
|
|
38
|
+
|
|
39
|
+
clientConfig.vendor &&
|
|
40
|
+
clientConfig.vendor
|
|
41
|
+
.request({
|
|
42
|
+
url: `${c.baseUrl}${c.url}`,
|
|
43
|
+
data,
|
|
44
|
+
headers: c.headers,
|
|
45
|
+
method: c.method,
|
|
46
|
+
})
|
|
47
|
+
.then((raw: ResponseRaw) => {
|
|
48
|
+
// 按顺序执行拦截器
|
|
49
|
+
for (const interc of c.interceptors || []) {
|
|
50
|
+
const r = interc(raw)
|
|
51
|
+
if (r) {
|
|
52
|
+
// 某拦截器命中时
|
|
53
|
+
// 按拦截结果 决定是否继续执行
|
|
54
|
+
reject('===INTERCEPTED===' + raw.status)
|
|
55
|
+
return false
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (raw.data !== void 0) {
|
|
59
|
+
// 当用户配置含有 transforms 时, 使用用户提供的 transform
|
|
60
|
+
// 先 endpoints transform
|
|
61
|
+
// 再组装分页数据
|
|
62
|
+
const response =
|
|
63
|
+
clientConfig.transforms && clientConfig.transforms[c.url]
|
|
64
|
+
? ((clientConfig.transforms[c.url] as HttpTranslate)(raw.data) as T)
|
|
65
|
+
: (raw.data as T)
|
|
66
|
+
// 前端要求分页
|
|
67
|
+
// 在 endpoints transform 之前格式化分页数据
|
|
68
|
+
// 并拼装回原 raw 数据
|
|
69
|
+
const paging =
|
|
70
|
+
config.data && config.data.page
|
|
71
|
+
? (clientConfig.paging as Paging).transform(raw.data)
|
|
72
|
+
: void 0
|
|
73
|
+
resolve(
|
|
74
|
+
paging
|
|
75
|
+
? ({
|
|
76
|
+
...paging,
|
|
77
|
+
data: response,
|
|
78
|
+
} as T)
|
|
79
|
+
: response
|
|
80
|
+
)
|
|
81
|
+
} else {
|
|
82
|
+
resolve(raw as any)
|
|
83
|
+
}
|
|
84
|
+
})
|
|
85
|
+
.catch((e: any) => {
|
|
86
|
+
console.log('request.catch===', e)
|
|
87
|
+
})
|
|
88
|
+
})
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const get: HttpInstance['get'] = <T = ResponseData>(url: string, data?: RequestData) => {
|
|
92
|
+
return request<T>({
|
|
93
|
+
url,
|
|
94
|
+
data,
|
|
95
|
+
method: HttpMethod.get,
|
|
96
|
+
})
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const post: HttpInstance['post'] = <T = ResponseData>(url: string, data: RequestData) => {
|
|
100
|
+
return request<T>({
|
|
101
|
+
url,
|
|
102
|
+
data,
|
|
103
|
+
method: HttpMethod.post,
|
|
104
|
+
})
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* 场景配置
|
|
109
|
+
* 本地后台团队统一返回值外层
|
|
110
|
+
*/
|
|
111
|
+
const defaultClientConfig: HttpClientConfig = {
|
|
112
|
+
baseUrl: '/',
|
|
113
|
+
interceptors: [(raw) => raw.status == 401],
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
let clientConfig = {
|
|
117
|
+
...defaultClientConfig,
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* 写入配置并返回 HTTP instance
|
|
122
|
+
* @param config
|
|
123
|
+
* @returns
|
|
124
|
+
*/
|
|
125
|
+
export function createHttp(config: HttpClientConfig): HttpInstance {
|
|
126
|
+
clientConfig = {
|
|
127
|
+
...defaultClientConfig,
|
|
128
|
+
...config,
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return {
|
|
132
|
+
request,
|
|
133
|
+
get,
|
|
134
|
+
post,
|
|
135
|
+
}
|
|
136
|
+
}
|
package/src/shared/http/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './Http'
|
|
1
|
+
export * from './Http'
|
|
2
2
|
export type * from './types'
|