Compare commits

..

No commits in common. "e32f8bf32419723fba81cee746d928d02dd5f25a" and "f5ab55c4bcf6266b865ee44169c6e403b2b9cba2" have entirely different histories.

2 changed files with 72 additions and 3 deletions

View File

@ -0,0 +1,69 @@
import type { RequestClientOptions } from '@vben/request';
import { useAppConfig } from '@vben/hooks';
import { defaultResponseInterceptor, RequestClient } from '@vben/request';
import { useTokenStore } from '#/store'; // cc:增加token存储
const { apiURL } = useAppConfig(import.meta.env, import.meta.env.PROD);
function createCDCMRequestClient(
baseURL: string,
options?: RequestClientOptions,
) {
const client = new RequestClient({
...options,
baseURL,
});
client.addResponseInterceptor(
defaultResponseInterceptor({
codeField: 'code',
dataField: 'data',
successCode: 0,
}),
);
// 响应拦截器:自动更新 token
client.addResponseInterceptor({
fulfilled: (response) => {
const token = response.headers?.token;
if (token) {
// 如果响应头中有新 token自动更新 store
useTokenStore().setToken(token);
}
return response;
},
rejected: (error) => {
// 统一错误处理(如 token 过期)
if (error.response?.status === 401) {
useTokenStore().deleteToken();
// 这里要跳登录页面
}
return Promise.reject(error);
},
});
// 请求拦截器:自动添加 token
client.addRequestInterceptor({
fulfilled: (config) => {
const token = useTokenStore().token;
if (token) {
// 添加 CDCM 自定义头部
config.headers.set('cdcm', token, true);
}
return config;
},
rejected: (error) => {
// 请求错误处理
return Promise.reject(error);
},
});
return client;
}
export const cdcmRequestClient = createCDCMRequestClient(apiURL);
export async function cdcmTemplateAPI(params: any) {
return cdcmRequestClient.post('/api/v1/cdcm', params);
}

View File

@ -1,14 +1,14 @@
<script setup lang="js"> <script setup lang="js">
import { cdcmTemplateAPI } from '#/cdcm/api/api.js'; import { cdcmTemplateAPI } from '#/cdcm/api/api.js';
import { TemplateQueryPage } from '#/cdcm/api/req_code'; import { templateQuerySupportType } from '#/cdcm/api/req_code';
const params = { const params = {
page_num: 1, page_num: 1,
page_size: 10, page_size: 10,
}; };
console.warn( console.warn(
TemplateQueryPage.desc, 'cdcmTemplateAPI',
cdcmTemplateAPI(params, TemplateQueryPage), cdcmTemplateAPI(params, templateQuerySupportType),
); );
</script> </script>