This commit is contained in:
lijing
2026-08-12 17:19:37 +08:00
commit e73d22744e
131 changed files with 66997 additions and 0 deletions
+198
View File
@@ -0,0 +1,198 @@
// 配置API接口地址
// var root = '/api/v1'
// var root = '/api/debugapi'
var root = "/api";
// var root = ''
// 引用axios
var axios = require("axios");
// import Notice from 'iview/src/components/notice';
import { Message } from "view-design";
// 自定义判断元素类型JS
function toType(obj) {
return {}.toString
.call(obj)
.match(/\s([a-zA-Z]+)/)[1]
.toLowerCase();
}
// 参数过滤函数
function filterNull(o) {
for (var key in o) {
if (o[key] === null) {
delete o[key];
}
if (toType(o[key]) === "string") {
o[key] = o[key].trim();
} else if (toType(o[key]) === "object") {
o[key] = filterNull(o[key]);
} else if (toType(o[key]) === "array") {
o[key] = filterNull(o[key]);
}
}
return o;
}
/*
接口处理函数
这个函数每个项目都是不一样的,我现在调整的是适用于
https://cnodejs.org/api/v1 的接口,如果是其他接口
需要根据接口的参数进行调整。参考说明文档地址:
https://cnodejs.org/topic/5378720ed6e2d16149fa16bd
主要是,不同的接口的成功标识和失败提示是不一致的。
另外,不同的项目的处理方法也是不一致的,这里出错就是简单的alert
*/
function apiAxios(method, url, params, success, failure) {
let conentTypeIsJosn = false;
if (params && typeof params != "string") {
params = filterNull(params);
} else conentTypeIsJosn = true;
// if (!window.location.origin) {
// window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
// }
// let redirectUrl=window.location.origin + window.location.hash.replace('#','/xiaoxi/#');
// console.log(window.location);
axios({
method: method,
url: url,
data: method === "POST" || method === "PUT" ? params : null,
params: method === "GET" || method === "DELETE" ? params : null,
baseURL: root,
withCredentials: true,
crossDomain: true,
transformRequest: [
function (data) {
// Do whatever you want to transform the data
if (conentTypeIsJosn) return data;
let ret = "";
for (let it in data) {
ret += encodeURIComponent(it) + "=" + encodeURIComponent(data[it]) + "&";
}
return ret;
},
],
headers: {
// 'Content-Type': 'application/x-www-form-urlencoded',
"Content-Type": conentTypeIsJosn ? "application/json" : "application/x-www-form-urlencoded",
// bschapirequest: 1,
yschapirequest:1,
yschreferer: this.$utils.strToHexCharCode(window.location.href),
},
})
.then(function (res) {
let response = res.data;
if (response.code == 302) {
window.location.href = response.urlToRedirectTo;
return;
} else if (response.code == 0) {
if (success) {
success(response);
}
}else if (response.code == 4) {
Message.error(response.msg); //错误处理
} else {
if (failure) {
failure(response);
} else {
if (response.data == 2) {
Message.error(response.msg); //错误处理
setTimeout(() => {
location.reload();
}, 1000);
} else {
Message.info(response.msg); //错误处理
}
}
}
})
.catch(function (err) {
let res = err.response;
console.error(res || err);
if (res) {
Message.destroy();
clearTimeout(tiemObj);
if (res.data.msg) {
Message.error(res.data.msg); //错误处理
} else {
Message.error("网络请求出错"); //错误处理
}
return;
}
});
}
//字符串的16进制表达
function strToHexCharCode(_str) {
if (_str === "") return "";
var hexCharCode = [];
for (var i = 0; i < _str.length; i++) {
var str = _str.charCodeAt(i).toString(16);
if (_str.length == 1) str += "0" + _str;
hexCharCode.push(str);
}
return hexCharCode.join("");
}
let requestCount = 0,
tiemObj;
// http request 拦截器
axios.interceptors.request.use(config => {
requestCount++;
if (requestCount == 1) {
tiemObj = setTimeout(() => {
Message.loading({ content: "加载中...", duration: 0 });
}, 800);
}
// if (localStorage.getItem("currentRole"))
// config.headers["currentRole"] = localStorage.getItem("currentRole");
if (localStorage.getItem("currentRole")) {
let currentRole = localStorage.getItem("currentRole");
config.headers["currentrole"] = currentRole;
let { schId, roleId, userId, childId } = JSON.parse(decodeURIComponent(currentRole));
// config.headers["schoolId"] = schId;
// config.headers["userId"] = userId;
// config.headers["roleId"] = roleId;
if (roleId == 3) {
config.headers["userId"] = childId;
}
sessionStorage.setItem("userId",userId);
}
if(sessionStorage.getItem("uType")){
config.headers["uType"] = sessionStorage.getItem("uType");
}
return config;
});
// http response 拦截器
axios.interceptors.response.use(response => {
requestCount--;
if (requestCount === 0) {
setTimeout(() => {
Message.destroy();
}, 1500);
clearTimeout(tiemObj);
}
return response;
});
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
// axios.defaults.headers.post['Content-Type'] = 'application/json; charset=utf-8';
// axios.defaults.withCredentials = true
// 返回在vue模板中的调用接口
export default {
get: function (url, params, success, failure) {
return apiAxios("GET", url, params, success, failure);
},
post: function (url, params, success, failure) {
return apiAxios("POST", url, params, success, failure);
},
put: function (url, params, success, failure) {
return apiAxios("PUT", url, params, success, failure);
},
delete: function (url, params, success, failure) {
return apiAxios("DELETE", url, params, success, failure);
},
};
+180
View File
@@ -0,0 +1,180 @@
// 配置API接口地址
// var root = '/api/v1'
// var root = '/api/debugapi'
var root = "/api";
// var root = ''
// 引用axios
var axios = require("axios");
// import Notice from 'iview/src/components/notice';
import { Message } from "view-design";
// 自定义判断元素类型JS
function toType(obj) {
return {}.toString
.call(obj)
.match(/\s([a-zA-Z]+)/)[1]
.toLowerCase();
}
// 参数过滤函数
function filterNull(o) {
for (var key in o) {
if (o[key] === null) {
delete o[key];
}
if (toType(o[key]) === "string") {
o[key] = o[key].trim();
} else if (toType(o[key]) === "object") {
o[key] = filterNull(o[key]);
} else if (toType(o[key]) === "array") {
o[key] = filterNull(o[key]);
}
}
return o;
}
/*
接口处理函数
这个函数每个项目都是不一样的,我现在调整的是适用于
https://cnodejs.org/api/v1 的接口,如果是其他接口
需要根据接口的参数进行调整。参考说明文档地址:
https://cnodejs.org/topic/5378720ed6e2d16149fa16bd
主要是,不同的接口的成功标识和失败提示是不一致的。
另外,不同的项目的处理方法也是不一致的,这里出错就是简单的alert
*/
function apiAxios(method, url, params, success, failure) {
let conentTypeIsJosn = false;
if (params && typeof params != "string") {
params = filterNull(params);
} else conentTypeIsJosn = true;
// if (!window.location.origin) {
// window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
// }
// let redirectUrl=window.location.origin + window.location.hash.replace('#','/xiaoxi/#');
// console.log(window.location);
axios({
method: method,
url: url,
data: method === "POST" || method === "PUT" ? params : null,
params: method === "GET" || method === "DELETE" ? params : null,
baseURL: root,
// withCredentials: true,
crossDomain: true,
transformRequest: [
function(data) {
// Do whatever you want to transform the data
if (conentTypeIsJosn) return data;
let ret = "";
for (let it in data) {
ret +=
encodeURIComponent(it) + "=" + encodeURIComponent(data[it]) + "&";
}
return ret;
},
],
headers: {
// 'Content-Type': 'application/x-www-form-urlencoded',
"Content-Type": conentTypeIsJosn
? "application/json"
: "application/x-www-form-urlencoded",
},
})
.then(function(res) {
let response = res.data;
if (response.State) {
if (success) {
success(response);
}
} else {
if (failure) {
failure(response.Data);
} else {
if (response.Data == 2) {
Message.error(response.Message); //错误处理
setTimeout(() => {
location.reload();
}, 1000);
} else {
Message.info(response.Message); //错误处理
}
}
}
})
.catch(function(err) {
let res = err.response;
console.error(res || err);
if (res) {
Message.destroy();
clearTimeout(tiemObj);
// if(res.status===401&&res.data.OtherData.ErrorCode==2){
if (res.status === 401) {
window.location.reload();
// if(process.env.NODE_ENV === 'production')
// Message.error(res.data.Message);//错误处理
// setTimeout(() => {
// location.reload();
// }, 0);
} else if (res.data.Message) {
Message.error(res.data.Message); //错误处理
} else {
Message.error("网络请求出错"); //错误处理
}
return;
}
});
}
let requestCount = 0,
tiemObj;
// http request 拦截器
axios.interceptors.request.use((config) => {
requestCount++;
if (requestCount == 1) {
tiemObj = setTimeout(() => {
Message.loading({ content: "加载中...", duration: 0 });
}, 800);
}
if (localStorage.getItem("currentRole"))
config.headers["currentRole"] = localStorage.getItem("currentRole");
if (process.env.NODE_ENV !== "production") {
//如果是开发环境
config.headers["DebugUser"] = "zhd";
config.headers["DebugAppType"] = true;
}
return config;
});
// http response 拦截器
axios.interceptors.response.use((response) => {
requestCount--;
if (requestCount === 0) {
setTimeout(() => {
Message.destroy();
}, 1500);
clearTimeout(tiemObj);
}
return response;
});
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
// axios.defaults.headers.post['Content-Type'] = 'application/json; charset=utf-8';
// axios.defaults.withCredentials = true
// 返回在vue模板中的调用接口
export default {
get: function(url, params, success, failure) {
return apiAxios("GET", url, params, success, failure);
},
post: function(url, params, success, failure) {
return apiAxios("POST", url, params, success, failure);
},
put: function(url, params, success, failure) {
return apiAxios("PUT", url, params, success, failure);
},
delete: function(url, params, success, failure) {
return apiAxios("DELETE", url, params, success, failure);
},
};