{"version":3,"file":"request.mjs","sources":["../../../src/utils/request.js"],"sourcesContent":["import axios from \"axios\";\r\nimport { Modal, message, notification } from \"ant-design-vue\";\r\nimport { config as sysConfig, tool } from 'elead-ui-tool-v3'\r\nimport { toLogin } from \"@/utils/sso\";\r\nimport { ref } from \"vue\";\r\n// 以下这些code需要重新登录\r\nconst reloadCodes = [401, 403, 1011007, 1011008];\r\nconst errorCodeMap = {\r\n\t400: \"发出的请求有错误，服务器没有进行新建或修改数据的操作。\",\r\n\t401: \"用户没有权限（令牌、用户名、密码错误）。\",\r\n\t403: \"用户得到授权，但是访问是被禁止的。\",\r\n\t404: \"发出的请求针对的是不存在的记录，服务器没有进行操作。\",\r\n\t406: \"请求的格式不可得。\",\r\n\t410: \"请求的资源被永久删除，且不会再得到的。\",\r\n\t422: \"当创建一个对象时，发生一个验证错误。\",\r\n\t500: \"服务器发生错误，请检查服务器。\",\r\n\t502: \"网关错误。\",\r\n\t503: \"服务不可用，服务器暂时过载或维护。\",\r\n\t504: \"网关超时。\"\r\n};\r\n// 定义一个重新登录弹出窗的变量\r\nconst loginBack = ref(false);\r\n// 创建 axios 实例\r\nconst service = axios.create({\r\n\tbaseURL: __APP_ENV__.VITE_APP_SSO_HOST_URL,\r\n\ttimeout: sysConfig?.TIMEOUT // 请求超时时间\r\n});\r\n// HTTP request 拦截器\r\nservice.interceptors.request.use(\r\n\t(config) => {\r\n\t\tconst token = tool.data.get(\"TOKEN\");\r\n\t\t//config.headers[\"response_type\"] = 'token';\r\n\r\n\t\tif (token) {\r\n\t\t\tconfig.headers[sysConfig?.TOKEN_NAME] = sysConfig?.TOKEN_PREFIX + token;\r\n\t\t\tconfig.headers[\"Authorization\"] = sysConfig?.TOKEN_PREFIX + token;\r\n\t\t\tconfig.headers[\"Token\"] = sysConfig?.TOKEN_PREFIX + token;\r\n\t\t} else {\r\n\t\t\t// 检查URL是否包含code参数（SSO回调）\r\n\t\t\tconst currentUrl = window.location.href;\r\n\t\t\tconst hasCodeInUrl = currentUrl.includes('code=');\r\n\r\n\t\t\tif (hasCodeInUrl) {\r\n\r\n\t\t\t} else {\r\n\t\t\t\t// 否则弹出确认框\r\n\t\t\t\tModal.confirm({\r\n\t\t\t\t\ttitle: '登录失败',\r\n\t\t\t\t\tcontent: '登录状态已失效，请重新登录',\r\n\t\t\t\t\tokText: '确定',\r\n\t\t\t\t\tcancelText: '取消',\r\n\t\t\t\t\tonOk: () => {\r\n\t\t\t\t\t\ttoLogin();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t// 阻止请求继续执行\r\n\t\t\t\treturn Promise.reject(new Error('登录状态已失效'));\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t// 租户----start\r\n\t\tconst tenant = __APP_ENV__.VITE_APP_SSO_APP_KEY;\r\n\t\tif (tenant) {\r\n\t\t\tconfig.headers[sysConfig?.APP_KEY_NAME] = tenant;\r\n\t\t}\r\n\t\t// 租户----end\r\n\t\tif (!sysConfig?.REQUEST_CACHE && config.method === \"get\") {\r\n\t\t\tconfig.params = config.params || {};\r\n\t\t\tconfig.params._ = new Date().getTime();\r\n\t\t}\r\n\t\tObject.assign(config.headers, sysConfig?.HEADERS);\r\n\t\treturn config;\r\n\t},\r\n\t(error) => {\r\n\t\treturn Promise.reject(error);\r\n\t}\r\n);\r\n// 保持重新登录Modal的唯一性\r\nconst error = () => {\r\n\tloginBack.value = true;\r\n\tModal.error({\r\n\t\ttitle: \"提示：\",\r\n\t\tokText: \"重新登录\",\r\n\t\tcontent: \"登录已失效， 请重新登录\",\r\n\t\tonOk: () => {\r\n\t\t\tloginBack.value = false;\r\n\t\t\ttool.data.remove(\"TOKEN\");\r\n\t\t\ttool.data.remove(\"USER_INFO\");\r\n\t\t\ttool.data.remove(\"MENU\");\r\n\t\t\ttool.data.remove(\"PERMISSIONS\");\r\n\t\t\ttoLogin();\r\n\t\t}\r\n\t});\r\n};\r\n// HTTP response 拦截器\r\nservice.interceptors.response.use(\r\n\t(response) => {\r\n\t\t// 配置了blob，不处理直接返回文件流\r\n\t\tif (response.config.responseType === \"blob\") {\r\n\t\t\tif (response.status === 200) {\r\n\t\t\t\treturn response;\r\n\t\t\t} else {\r\n\t\t\t\tmessage.warning(\"文件下载失败或此文件不存在\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tconst data = response.data;\r\n\t\tconst code = data.code;\r\n\t\tif (reloadCodes.includes(code)) {\r\n\t\t\tif (!loginBack.value) {\r\n\t\t\t\terror();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (code !== 200) {\r\n\t\t\tconst customErrorMessage = response.config.customErrorMessage;\r\n\t\t\tmessage.error(customErrorMessage || data.msg);\r\n\t\t\treturn Promise.reject(data);\r\n\t\t\t// 自定义错误提示，覆盖后端返回的message\r\n\t\t\t// 使用示例：\r\n\t\t\t// export function customerList (data) {\r\n\t\t\t//   return request('list', data, 'get', {\r\n\t\t\t//     customErrorMessage: '自定义错误消息提示'\r\n\t\t\t//   });\r\n\t\t\t// }\r\n\t\t} else {\r\n\t\t\t// 统一成功提示\r\n\t\t\tconst responseUrl = response.config.url;\r\n\t\t\tconst apiNameArray = [\r\n\t\t\t\t\"add\",\r\n\t\t\t\t\"edit\",\r\n\t\t\t\t\"delete\",\r\n\t\t\t\t\"update\",\r\n\t\t\t\t\"grant\",\r\n\t\t\t\t\"reset\",\r\n\t\t\t\t\"start\",\r\n\t\t\t\t\"stop\",\r\n\t\t\t\t\"pass\",\r\n\t\t\t\t\"disable\",\r\n\t\t\t\t\"enable\",\r\n\t\t\t\t\"revoke\",\r\n\t\t\t\t\"suspend\",\r\n\t\t\t\t\"active\",\r\n\t\t\t\t\"turn\",\r\n\t\t\t\t\"adjust\",\r\n\t\t\t\t\"reject\"\r\n\t\t\t];\r\n\t\t\tapiNameArray.forEach((apiName) => {\r\n\t\t\t\tif (responseUrl.includes(apiName)) {\r\n\t\t\t\t\tmessage.success(data.msg);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn Promise.resolve(data.data);\r\n\t},\r\n\t(err) => {\r\n\t\tif (err && typeof err === \"object\") {\r\n\t\t\tconst status = err?.response?.status;\r\n\t\t\tif (reloadCodes.includes(status)) {\r\n\t\t\t\tif (!loginBack.value) {\r\n\t\t\t\t\terror();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst description = err?.response?.data?.msg;\r\n\t\t\t// const description = errorCodeMap[status]\r\n\t\t\tnotification.error({\r\n\t\t\t\tmessage: \"请求错误\",\r\n\t\t\t\tduration: 10,\r\n\t\t\t\tdescription\r\n\t\t\t});\r\n\t\t\treturn Promise.reject(err);\r\n\t\t}\r\n\t\telse if (err.message.includes(\"timeout\")) {\r\n\t\t\tnotification.error({\r\n\t\t\t\tmessage: \"请求超时\",\r\n\t\t\t\tdescription: \"请检查您的网络是否正常\"\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tif (typeof err === \"string\") {\r\n\t\t\t\tnotification.error({\r\n\t\t\t\t\tmessage: \"请求错误\",\r\n\t\t\t\t\tdescription: err\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tnotification.error({\r\n\t\t\t\t\tmessage: \"请求错误\",\r\n\t\t\t\t\tdescription: \"请检查您的网络是否正常\"\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\nexport const appRequest = (url, value = {}, method = \"post\", options = {}) => {\r\n\turl = sysConfig?.SYS_BASE_CONFIG.SNOWY_SYS_API_URL + url;\r\n\treturn baseRequest(url, value, method, options);\r\n};\r\nexport const baseRequest = (url, value = {}, method = \"post\", options = {}) => {\r\n\t// url = sysConfig.API_URL + url\r\n\tif (method === \"post\") {\r\n\t\treturn service.post(url, value, options);\r\n\t} else if (method === \"put\") {\r\n\t\treturn service.put(url, value, options);\r\n\t} else if (method === \"get\") {\r\n\t\treturn service.get(url, {\r\n\t\t\tparams: value,\r\n\t\t\t...options\r\n\t\t});\r\n\t} else if (method === \"formdata\") {\r\n\t\treturn service({\r\n\t\t\tmethod: \"post\",\r\n\t\t\turl,\r\n\t\t\tdata: value,\r\n\t\t\t// 转换数据的方法\r\n\t\t\ttransformRequest: [\r\n\t\t\t\tfunction (data) {\r\n\t\t\t\t\tlet ret = \"\";\r\n\t\t\t\t\tfor (const it in data) {\r\n\t\t\t\t\t\tret += `${encodeURIComponent(it)}=${encodeURIComponent(data[it])}&`;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tret = ret.substring(0, ret.length - 1);\r\n\t\t\t\t\treturn ret;\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\t// 设置请求头\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"multipart/form-data\"\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n};\r\nexport default service;\r\n"],"names":["sysConfig","config","error"],"mappings":"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"}