|
@@ -0,0 +1,184 @@
|
|
|
+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"] ? store.getters["token"]:'admin:lengqiang'
|
|
|
+ if (config.url.indexOf('mapapp') < 0) {
|
|
|
+ config.headers = {
|
|
|
+ 'sso-token': token,
|
|
|
+ isPreview: false,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ 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,
|
|
|
+}
|