1 import axios from "axios";
2 import { message, Modal, notification } from "ant-design-vue";
3 import moment from "moment";
4 import store from "../store";
5 import db from "utils/localstorage";
6 moment.locale("zh-cn");
7
8 // const baseURL = "http://api.yworth.com.cn/"
9 // const baseURL = "http://mapi.qzdcloud.com/"
10
11 const baseURL = "http://192.168.0.111:9998/"
12 // const baseURL = "http://192.168.0.111:9998/"
13
14 // 统一配置
15 let QZDSOFT_REQUEST = axios.create({
16 baseURL: baseURL,
17 responseType: "json",
18 validateStatus(status) {
19 // 200 外的状态码都认定为失败
20 return status === 200;
21 }
22 });
23
24 // 拦截请求
25 QZDSOFT_REQUEST.interceptors.request.use(
26 config => {
27 let expireTime = store.state.account.expireTime;
28 let now = moment().format("YYYYMMDDHHmmss");
29 // 让token早10秒种过期,提升“请重新登录”弹窗体验
30 if (now - expireTime >= -10) {
31 Modal.error({
32 title: "登录已过期",
33 content: "很抱歉,登录已过期,请重新登录",
34 okText: "重新登录",
35 mask: false,
36 onOk: () => {
37 return new Promise((resolve, reject) => {
38 db.clear();
39 location.reload();
40 });
41 }
42 });
43 }
44 // 有 token就带上
45 if (store.state.account.token) {
46 config.headers.Authentication = store.state.account.token;
47 }
48 return config;
49 },
50 error => {
51 return Promise.reject(error);
52 }
53 );
54
55 // 拦截响应
56 QZDSOFT_REQUEST.interceptors.response.use(
57 config => {
58 return config;
59 },
60 error => {
61 if (error.response) {
62 let errorMessage =
63 error.response.data === null
64 ? "系统内部异常,请联系网站管理员"
65 : error.response.data.message;
66 switch (error.response.status) {
67 case 404:
68 notification.error({
69 message: "系统提示",
70 description: "很抱歉,资源未找到",
71 duration: 4
72 });
73 break;
74 case 403:
75 case 401:
76 notification.warn({
77 message: "系统提示",
78 description:
79 "很抱歉,您无法访问该资源,可能是因为没有相应权限或者登录已失效",
80 duration: 4
81 });
82 break;
83 default:
84 notification.error({
85 message: "系统提示",
86 description: errorMessage,
87 duration: 4
88 });
89 break;
90 }
91 }
92 return Promise.reject(error);
93 }
94 );
95
96 const request = {
97 post(url, params) {
98 return QZDSOFT_REQUEST.post(url, params, {
99 transformRequest: [
100 params => {
101 let result = "";
102 Object.keys(params).forEach(key => {
103 if (
104 !Object.is(params[key], undefined) &&
105 !Object.is(params[key], null)
106 ) {
107 result +=
108 encodeURIComponent(key) +
109 "=" +
110 encodeURIComponent(params[key]) +
111 "&";
112 }
113 });
114 return result;
115 }
116 ],
117 headers: {
118 "Content-Type": "application/x-www-form-urlencoded"
119 }
120 });
121 },
122 put(url, params) {
123 return QZDSOFT_REQUEST.put(url, params, {
124 transformRequest: [
125 params => {
126 let result = "";
127 Object.keys(params).forEach(key => {
128 if (
129 !Object.is(params[key], undefined) &&
130 !Object.is(params[key], null)
131 ) {
132 result +=
133 encodeURIComponent(key) +
134 "=" +
135 encodeURIComponent(params[key]) +
136 "&";
137 }
138 });
139 return result;
140 }
141 ],
142 headers: {
143 "Content-Type": "application/x-www-form-urlencoded"
144 }
145 });
146 },
147 get(url, params) {
148 let _params;
149 if (Object.is(params, undefined)) {
150 _params = "";
151 } else {
152 _params = "?";
153 for (let key in params) {
154 if (params.hasOwnProperty(key) && params[key] !== null) {
155 _params += `${key}=${params[key]}&`;
156 }
157 }
158 }
159 return QZDSOFT_REQUEST.get(`${url}${_params}`);
160 },
161 delete(url, params) {
162 let _params;
163 if (Object.is(params, undefined)) {
164 _params = "";
165 } else {
166 _params = "?";
167 for (let key in params) {
168 if (params.hasOwnProperty(key) && params[key] !== null) {
169 _params += `${key}=${params[key]}&`;
170 }
171 }
172 }
173 return QZDSOFT_REQUEST.delete(`${url}${_params}`);
174 },
175 export(url, params = {},fileType) {
176 message.loading("导出数据中");
177 return QZDSOFT_REQUEST.post(url, params, {
178 transformRequest: [
179 params => {
180 let result = "";
181 Object.keys(params).forEach(key => {
182 if (
183 !Object.is(params[key], undefined) &&
184 !Object.is(params[key], null)
185 ) {
186 result +=
187 encodeURIComponent(key) +
188 "=" +
189 encodeURIComponent(params[key]) +
190 "&";
191 }
192 });
193 console.log(result);
194 return result;
195 }
196 ],
197 responseType: "blob"
198 })
199 .then(r => {
200 const content = r.data;
201 console.log("content")
202 console.log(content)
203 const blob = new Blob([content]);
204 console.log("blob")
205 console.log(blob)
206 // const fileName = `${new Date().getTime()}_导出结果.xlsx`;
207 let fileName = ''
208 if(fileType === 'zip'){
209 fileName = `${moment().format('l')}.zip`;
210 }else if(fileType == 'pdf'){
211 fileName = `${moment().format('l')}.pdf`;
212 }else{
213 fileName = `${moment().format('l')}.xlsx`;
214 }
215 if('msSaveOrOpenBlob' in navigator){
216 window.navigator.msSaveOrOpenBlob(blob, fileName);
217 return;
218 }
219 if ("download" in document.createElement("a")) {
220 const elink = document.createElement("a");
221 elink.download = fileName;
222 elink.style.display = "none";
223 elink.href = URL.createObjectURL(blob);
224 document.body.appendChild(elink);
225 elink.click();
226 URL.revokeObjectURL(elink.href);
227 document.body.removeChild(elink);
228 } else {
229 // navigator.msSaveBlob(blob, fileName);
230 }
231 })
232 .catch(r => {
233 console.error(r);
234 message.error("导出失败");
235 });
236 },
237 download(url, params, filename) {
238 message.loading("文件传输中");
239 return QZDSOFT_REQUEST.post(url, params, {
240 transformRequest: [
241 params => {
242 let result = "";
243 Object.keys(params).forEach(key => {
244 if (
245 !Object.is(params[key], undefined) &&
246 !Object.is(params[key], null)
247 ) {
248 result +=
249 encodeURIComponent(key) +
250 "=" +
251 encodeURIComponent(params[key]) +
252 "&";
253 }
254 });
255 return result;
256 }
257 ],
258 responseType: "blob"
259 })
260 .then(r => {
261 const content = r.data;
262 const blob = new Blob([content]);
263 if ("download" in document.createElement("a")) {
264 const elink = document.createElement("a");
265 elink.download = filename;
266 elink.style.display = "none";
267 elink.href = URL.createObjectURL(blob);
268 document.body.appendChild(elink);
269 elink.click();
270 URL.revokeObjectURL(elink.href);
271 document.body.removeChild(elink);
272 } else {
273 navigator.msSaveBlob(blob, filename);
274 }
275 })
276 .catch(r => {
277 console.error(r);
278 message.error("下载失败");
279 });
280 },
281 upload(url, params) {
282 return QZDSOFT_REQUEST.post(url, params, {
283 headers: {
284 "Content-Type": "multipart/form-data"
285 }
286 });
287 },
288 uploadUrl() {
289 return baseURL
290 }
291 };
292
293 export default request;