Skip to content

Commit 704c162

Browse files
authored
feat: 请求部分代码改造 (#185)
* feat: 重新封装axios * chore: 将请求封装规范为request * fix: 修正引用方式 * perf: 使用lodash替换部分函数 * feat: axios新增支持过滤重复请求 * feat: axios新增切换地址直连或Vite反向代理 * chore: 将lodash-es切换至lodash并将引入方式改为路径引入
1 parent 5be1b14 commit 704c162

16 files changed

Lines changed: 567 additions & 64 deletions

File tree

.eslintrc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,11 @@
6060
"varsIgnorePattern": "^_"
6161
}
6262
],
63+
"no-use-before-define": "off",
64+
"@typescript-eslint/no-use-before-define": "off",
6365
"@typescript-eslint/ban-ts-comment": "off",
64-
"@typescript-eslint/ban-types": "off"
66+
"@typescript-eslint/ban-types": "off",
67+
"class-methods-use-this": "off" // 因为AxiosCancel必须实例化而能静态化所以加的规则,如果有办法解决可以取消
6568
},
6669
"overrides": [
6770
{

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@
2121
"axios": "^0.27.2",
2222
"dayjs": "^1.10.6",
2323
"echarts": "~5.1.2",
24+
"lodash": "^4.17.21",
2425
"nprogress": "^0.2.0",
2526
"pinia": "^2.0.11",
2627
"qrcode.vue": "^3.2.2",
28+
"qs": "^6.10.5",
2729
"tdesign-icons-vue-next": "^0.1.1",
2830
"tdesign-vue-next": "^0.16.0",
2931
"tvision-color": "^1.3.1",
@@ -35,6 +37,8 @@
3537
"@commitlint/cli": "^16.2.1",
3638
"@commitlint/config-conventional": "^16.2.1",
3739
"@types/echarts": "^4.9.10",
40+
"@types/lodash": "^4.14.182",
41+
"@types/qs": "^6.9.7",
3842
"@types/ws": "^8.2.2",
3943
"@typescript-eslint/eslint-plugin": "^4.29.3",
4044
"@typescript-eslint/parser": "^4.29.3",

src/config/proxy.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export default {
2+
isRequestProxy: true,
23
development: {
34
// 开发环境接口请求
45
host: 'https://service-exndqyuk-1257786608.gz.apigw.tencentcs.com',

src/pages/detail/advanced/index.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ export default {
120120
import { ref, onMounted } from 'vue';
121121
import { prefix } from '@/config/global';
122122
import { BASE_INFO_DATA, TABLE_COLUMNS_DATA as columns, PRODUCT_LIST } from './constants';
123-
import request from '@/utils/request';
123+
import { request } from '@/utils/request';
124124
import { ResDataType } from '@/types/interface';
125125
126126
import Product from './components/Product.vue';
@@ -145,7 +145,7 @@ const stepUpdate = () => {
145145
146146
const fetchData = async () => {
147147
try {
148-
const res: ResDataType = await request.get('/api/get-purchase-list');
148+
const res: ResDataType = await request.get({ url: '/api/get-purchase-list' });
149149
if (res.code === 0) {
150150
const { list = [] } = res.data;
151151
data.value = list;

src/pages/detail/deploy/index.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ import { changeChartsTheme } from '@/utils/color';
9090
9191
import { prefix } from '@/config/global';
9292
import { ResDataType } from '@/types/interface';
93-
import request from '@/utils/request';
93+
import { request } from '@/utils/request';
9494
9595
echarts.use([
9696
TitleComponent,
@@ -115,7 +115,7 @@ const pagination = ref({
115115
116116
const fetchData = async () => {
117117
try {
118-
const res: ResDataType = await request.get('/api/get-project-list');
118+
const res: ResDataType = await request.get({ url: '/api/get-project-list' });
119119
if (res.code === 0) {
120120
const { list = [] } = res.data;
121121
data.value = list;

src/pages/list/base/index.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ import { MessagePlugin } from 'tdesign-vue-next';
8383
import { CONTRACT_STATUS, CONTRACT_TYPES, CONTRACT_PAYMENT_TYPES } from '@/constants';
8484
import Trend from '@/components/trend/index.vue';
8585
import { ResDataType } from '@/types/interface';
86-
import request from '@/utils/request';
86+
import { request } from '@/utils/request';
8787
import { useSettingStore } from '@/store';
8888
8989
import { COLUMNS } from './constants';
@@ -103,7 +103,7 @@ const dataLoading = ref(false);
103103
const fetchData = async () => {
104104
dataLoading.value = true;
105105
try {
106-
const res: ResDataType = await request.get('/api/get-list');
106+
const res: ResDataType = await request.get({ url: '/api/get-list' });
107107
if (res.code === 0) {
108108
const { list = [] } = res.data;
109109
data.value = list;

src/pages/list/card/index.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ import { SearchIcon } from 'tdesign-icons-vue-next';
7373
import { MessagePlugin } from 'tdesign-vue-next';
7474
import ProductCard from '@/components/product-card/index.vue';
7575
import DialogForm from './components/DialogForm.vue';
76-
import request from '@/utils/request';
76+
import { request } from '@/utils/request';
7777
import { ResDataType } from '@/types/interface';
7878
7979
const INITIAL_DATA = {
@@ -93,7 +93,7 @@ const dataLoading = ref(true);
9393
9494
const fetchData = async () => {
9595
try {
96-
const res: ResDataType = await request.get('/api/get-card-list');
96+
const res: ResDataType = await request.get({ url: '/api/get-card-list' });
9797
if (res.code === 0) {
9898
const { list = [] } = res.data;
9999
productList.value = list;

src/pages/list/components/CommonTable.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@
117117
import { ref, computed, onMounted } from 'vue';
118118
import { MessagePlugin } from 'tdesign-vue-next';
119119
import Trend from '@/components/trend/index.vue';
120-
import request from '@/utils/request';
120+
import { request } from '@/utils/request';
121121
import { ResDataType } from '@/types/interface';
122122
import { useSettingStore } from '@/store';
123123
@@ -199,7 +199,7 @@ const dataLoading = ref(false);
199199
const fetchData = async () => {
200200
dataLoading.value = true;
201201
try {
202-
const res: ResDataType = await request.get('/api/get-list');
202+
const res: ResDataType = await request.get({ url: '/api/get-list' });
203203
if (res.code === 0) {
204204
const { list = [] } = res.data;
205205
data.value = list;

src/types/axios.d.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { AxiosRequestConfig } from 'axios';
2+
3+
export interface RequestOptions {
4+
apiUrl?: string;
5+
isJoinPrefix?: boolean;
6+
urlPrefix?: string;
7+
joinParamsToUrl?: boolean;
8+
formatDate?: boolean;
9+
isTransformResponse?: boolean;
10+
isReturnNativeResponse?: boolean;
11+
ignoreRepeatRequest?: boolean;
12+
joinTime?: boolean;
13+
withToken?: boolean;
14+
retry?: {
15+
count: number;
16+
delay: number;
17+
};
18+
}
19+
20+
export interface Result<T = any> {
21+
code: number;
22+
type: 'success' | 'error' | 'warning';
23+
message: string;
24+
result: T;
25+
}
26+
27+
export interface AxiosRequestConfigRetry extends AxiosRequestConfig {
28+
retryCount?: number;
29+
}

src/types/globals.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,5 @@ declare module '*.svg' {
2121
const CONTENT: string;
2222
export default CONTENT;
2323
}
24+
25+
declare type Recordable<T = any> = Record<string, T>;

0 commit comments

Comments
 (0)