fix: 初始化

This commit is contained in:
jiaojinfeng
2023-05-30 19:27:03 +08:00
commit 28db653900
4436 changed files with 500218 additions and 0 deletions

View File

@ -0,0 +1,140 @@
import type { AxiosRequestConfig, AxiosError } from 'axios';
import axios, { AxiosResponse } from 'axios';
import type { ResponseBody } from '@/api/typing';
import { createHttp, icpxTransform, icpxTransformConfig } from '@crami/http';
import router from '@/router';
import { HModal } from '@crami/ui';
import { notification } from 'ant-design-vue';
// import { baseParams, getInfo, ICP_CONFIG } from './commMethods';
// 模块联邦: 替换成远程引入
import { baseParams, getInfo, ICP_CONFIG, localStorage } from '@remote/icpx-platform/utils';
import { computed } from 'vue';
// 公共参数
const commonParams = computed(() => {
return {
...getInfo(ICP_CONFIG),
};
});
// 这里是用于设定请求后端时,所用的 Token KEY
// 可以根据自己的需要修改,常见的如 Access-TokenAuthorization
// 需要注意的是,请尽量保证使用中横线`-` 来作为分隔符,
// 避免被 nginx 等负载均衡器丢弃了自定义的请求头
export const REQUEST_TOKEN_KEY = 'Authorization';
// 创建 axios 实例
const request = axios.create({
// API 请求的默认前缀
baseURL: process.env.VUE_APP_API_BASE_URL,
timeout: 16000, // 请求超时时间
});
// token取主应用的token
const token = baseParams.token
? baseParams.token
: 'eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyLWtleSI6ImZkYmM0NDZlLWY3ZDYtNDAzNi05MzBjLWI5Nzk5ZjRhY2UxMCIsImNvbXBhbnlpZCI6IlBfU1lTX0NPTVBBTllfMTU1ZjZhMzMxZTgwNGI2OWE2ZmM0N2U2MjczNjk5ZmMiLCJwcm9qZWN0Y29kZSI6IlBMTUJBU0UiLCJ1c2VyaWQiOiJQX1NZU19VU0VSXzAxNjJhM2MyYzg1YzQ1ZjJiNGZhM2JhZmZjMzUwZDZkIiwib3JnSWQiOm51bGwsInVzZXJuYW1lIjoiYWRtaW4ifQ.tG5dFz3WqlhVwp81XS5txOY2q9nivRJFAq6akPuRB0WXt6W4cr0LENocF_Vj8-sE3jZK4vhOh7SCFAVZ88cHMA';
export const http = createHttp(request, {
responseTransform: icpxTransform,
requestTransform: icpxTransformConfig,
urlParser: url => url.trim().replace(/^\/api/, ''),
});
// 异常拦截处理器
const errorHandler = (error: AxiosError): Promise<any> => {
if (error.response) {
const { data = {}, status, statusText } = error.response;
// 403 无权限
if (status === 403) {
notification.destroy();
notification.error({
message: 'Forbidden',
description: (data && data.message) || statusText,
});
}
// 401 未登录/未授权
if (status === 401 && data.result && data.result.isLogin) {
const savedToken = token; // localStorage.get(STORAGE_TOKEN_KEY);
if (savedToken) {
notification.destroy();
notification.error({
message: 'Unauthorized',
description: (data && data.message) || statusText,
});
}
// const router = useRouter();
// store
// .dispatch(`user/${LOGOUT}`)
// .then(() => {
// //location.href = '/user/login';
// // console.log(router)
// router.push({ path: '/user/login' });
// window.localStorage.clear();
// window.sessionStorage.clear();
// })
// .catch((err) => {
// console.log(err);
// })
// .finally(() => {});
}
}
return Promise.reject(error);
};
// 请求拦截器
const requestHandler = (
config: AxiosRequestConfig,
): AxiosRequestConfig | Promise<AxiosRequestConfig> => {
// 开启跨域设置
// config.headers['Access-Control-Allow-Credentials'] = true;
// config.headers['Access-Control-Allow-Origin'] = '*';
// config.headers['Access-Control-Allow-Headers'] = 'X-Requested-With,Content-Typ';
// config.headers['Access-Control-Allow-Methods'] = 'PUT,POST,GET,DELETE,OPTIONS';
const savedToken = token; //localStorage.get(STORAGE_TOKEN_KEY);
// 设置请求头多语言,默认是中文
config.headers[`Accept-Language`] = 'zh-CN';
// localStorage.get(STORAGE_LANG_KEY) ?? 'zh-CN';
// 如果 token 存在
// 让每个请求携带自定义 token, 请根据实际情况修改
if (savedToken) {
config.headers[REQUEST_TOKEN_KEY] = 'Bearer ' + savedToken;
}
// 添加companyId和userid,get随便添加data会报错
if (config.data || config.method != 'get') {
config.data = {
...config.data,
...{
companyId: commonParams.value.companyId,
// orgId: 'P_SYS_COMPANY_155f6a331e804b69a6fc47e6273699fc',
// userDept: 'P_SYS_DEPT_21a0a27ac5de49609028dcfe8976a5ca',
// userGroup: 'P_SYS_COMPANY_155f6a331e804b69a6fc47e6273699fc',
// userId: 'P_SYS_USER_0162a3c2c85c45f2b4fa3baffc350d6d',
// project: 'PLMBASE',
// projectCode: 'PLMBASE',
// productLine: 'PLM_PROJECT;baicsrm;PLM_CAPP;PLMBASE;PLMPRODUCT;loxamom',
timeZone: commonParams.value.TIME_ZONE,
connect: commonParams.value.connect,
// paraList:
// config.data.paraList && config.data.paraList.indexOf('parentId') != -1
// ? config.data.paraList
// : '{"companyId":"P_SYS_COMPANY_155f6a331e804b69a6fc47e6273699fc","connect":"MYSQL","lang":"zhs","productLine":"PLM_PROJECT;baicsrm;PLM_CAPP;PLMBASE;PLMPRODUCT;loxamom","userId":"P_SYS_USER_0162a3c2c85c45f2b4fa3baffc350d6d","userDept":"P_SYS_DEPT_21a0a27ac5de49609028dcfe8976a5ca","userGroup":"P_SYS_COMPANY_155f6a331e804b69a6fc47e6273699fc","projectCode":"PLMBASE"}',
},
};
}
// 如果是树请求添加paraList
if (config.url && config.url.indexOf('getGetTreeRootDataList') != -1) {
config.data.paraList = `{"companyId":"${commonParams.value.companyId}","connect":"${commonParams.value.connect}","lang":"${commonParams.value.lang}","productLine":"${commonParams.value.productLine}","userId":"${commonParams.value.userId}","userDept":"${commonParams.value.userDept}","userGroup":"${commonParams.value.userGroup}","projectCode":"${commonParams.value.projectCode}"}`;
}
// 有一些请求,添加需要添加语言
const langArray = ['/system/model/getGetOnePageGridDataList', '/system/model/dealEnumItemTree'];
if (config.url && langArray.indexOf(config.url) != -1) {
config.data.lang = commonParams.value.lang;
}
return config;
};
request.interceptors.request.use(requestHandler, errorHandler);
export type { AxiosResponse };
export default request;