123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- import axios from "axios"
- import store from "@/store"
- import { MessageBox } from "element-ui"
- const CancelToken = axios.CancelToken
- let cancel
- const axiosservice = axios.create({
- timeout: 30000,
- retry: 4,
- retryDelay: 1000,
- credentials: true,
- cancelToken: new CancelToken(function executor(c) {
-
- cancel = c
- }),
- })
- axiosservice.interceptors.request.use(
- (config) => {
- config.withCredentials = true
- const token = store.getters["token"]
- if (token) {
- config.headers = {
- "sso-token": token,
- }
- }
- return config
- },
- (error) => {
- return Promise.reject(error)
- }
- )
- axiosservice.interceptors.response.use(
- function(res) {
-
-
- const resp = res.data
- if (resp.result === "unauthc") {
- store.commit("logined", false)
- MessageBox.confirm("未登陆或登陆信息已失效, 是否重新登陆?", "提示", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "error",
- })
- .then((resp) => {
-
-
- window.location.reload()
- })
- .catch((error) => {
-
- console.log("")
- })
- } else if (resp.result == "unauthorization") {
- MessageBox.alert("无权操作", { title: "警告", type: "error" })
- }
-
- return res
- },
- function(err) {
-
- console.log("axios interceptors err = ", err)
- return Promise.reject(err)
- }
- )
- function downFile(blob, fileName) {
-
- if ("download" in document.createElement("a")) {
- const link = document.createElement("a")
- link.href = window.URL.createObjectURL(blob)
- link.download = fileName
- link.style.display = "none"
- document.body.appendChild(link)
- link.click()
- window.URL.revokeObjectURL(link.href)
- document.body.removeChild(link)
- } else {
-
- window.navigator.msSaveBlob(blob, fileName)
- }
- }
- export default {
-
- getCookie(name) {
- let arr,
- reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)")
- if ((arr = document.cookie.match(reg))) {
- return unescape(arr[2])
- } else {
-
- return document.cookie
- }
- },
- async getJson(url, params) {
- try {
- const response = await axiosservice({
- url,
- params,
- method: "get",
- })
- return response.data
- } catch (err) {
- throw err
- }
- },
- async postJson(url, data) {
- try {
- const response = await axiosservice({
- url,
- data,
- method: "post",
- })
- return response.data
- } catch (err) {
- throw err
- }
- },
- async fetchJson(url, params, data) {
- try {
- const response = await axiosservice({
- url,
- params,
- data,
- method: "post",
- })
- return response
- } catch (err) {
- throw err
- }
- },
- async postupload(url, data) {
- try {
- const response = await axiosservice({
- url,
- data,
- method: "post",
- headers: {
- "Content-Type": "multipart/form-data",
- },
- })
- return response.data
- } catch (err) {
- throw err
- }
- },
- download(url, requestData) {
-
- axiosservice
- .post(url, requestData, { responseType: "blob" })
- .then((resp) => {
- const headers = resp.headers
- const contentType = headers["content-type"]
- console.log("响应头信息", headers)
- if (!resp.data) {
- console.error("响应异常:", resp)
- return false
- } else {
- console.log("下载文件:", resp)
- const blob = new Blob([resp.data], { type: contentType })
- const contentDisposition = resp.headers["content-disposition"]
- let fileName = "unknown"
- if (contentDisposition) {
- fileName = window.decodeURI(resp.headers["content-disposition"].split("=")[1])
- }
- console.log("文件名称:", fileName)
- downFile(blob, fileName)
- }
- })
- .catch(function(error) {
- console.log(error)
- })
- },
- axios: axiosservice,
- }
|