Compare commits

..

No commits in common. '36052437c36c34bf309732e4f8174ee830b694a2' and 'aaab4373a7602727085fa7c9bc6baa1d46b0f6d1' have entirely different histories.

@ -160,7 +160,7 @@ const mentList = ref([
{ name: "首页", path: "/index", icon: HomeFilled }, { name: "首页", path: "/index", icon: HomeFilled },
{ name: "学校管理", path: "/platform-schools/index", role: 1, activePrefix: "/platform-schools" }, { name: "学校管理", path: "/platform-schools/index", role: 1, activePrefix: "/platform-schools" },
{ name: "教师管理", path: "/platform-teachers/index", role: 1, activePrefix: "/platform-teachers" }, { name: "教师管理", path: "/platform-teachers/index", role: 1, activePrefix: "/platform-teachers" },
{ name: "实训任务管理", path: "/platform-training-task/index", role: 1, activePrefix: "/platform-training-task" }, { name: "实训任务管理", path: "/platform-training-task/index", role: 1, activePrefix: "/platform-training-task" },
{ name: "题库管理", path: "/platform-question-bank/index", role: 1, activePrefix: "/platform-question-bank" }, { name: "题库管理", path: "/platform-question-bank/index", role: 1, activePrefix: "/platform-question-bank" },
{ name: "院系管理", path: "/admin-faculty/index", role: 2, activePrefix: "/admin-faculty" }, { name: "院系管理", path: "/admin-faculty/index", role: 2, activePrefix: "/admin-faculty" },
{ name: "专业管理", path: "/admin-major/index", role: 2, activePrefix: "/admin-major" }, { name: "专业管理", path: "/admin-major/index", role: 2, activePrefix: "/admin-major" },

@ -1,29 +1,29 @@
import axios from "axios"; import axios from "axios";
import { ElNotification, ElMessageBox, ElMessage, ElLoading } from "element-plus"; import { ElNotification, ElMessageBox, ElMessage, ElLoading } from "element-plus";
import { getToken } from "@/utils/auth"; import { getToken } from "@/utils/auth";
import errorCode from "@/utils/errorCode"; import errorCode from "@/utils/errorCode";
import { tansParams, blobValidate } from "@/utils/ruoyi"; import { tansParams, blobValidate } from "@/utils/ruoyi";
import cache from "@/plugins/cache"; import cache from "@/plugins/cache";
import { saveAs } from "file-saver"; import { saveAs } from "file-saver";
import useUserStore from "@/store/modules/user"; import useUserStore from "@/store/modules/user";
import { isTrainingReviewPreviewRequest } from "@/utils/trainingReviewPreview"; import { isTrainingReviewPreviewRequest } from "@/utils/trainingReviewPreview";
let downloadLoadingInstance; let downloadLoadingInstance;
// 是否显示重新登录 // 是否显示重新登录
export let isRelogin = { show: false }; export let isRelogin = { show: false };
axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8"; axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
// 创建axios实例 // 创建axios实例
const service = axios.create({ const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分 // axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL: import.meta.env.VITE_APP_BASE_API, baseURL: import.meta.env.VITE_APP_BASE_API,
// baseURL: "https://szyx.sztzjy.com:8042/", // baseURL: "https://szyx.sztzjy.com:8042/",
// baseURL:'http://192.168.2.13:9868/', // baseURL:'http://192.168.2.13:9868/',
// 超时 // 超时
timeout: 100000, timeout: 100000,
}); });
// request拦截器 // request拦截器
service.interceptors.request.use( service.interceptors.request.use(
(config) => { (config) => {
if (isTrainingReviewPreviewRequest(config)) { if (isTrainingReviewPreviewRequest(config)) {
const error = new Error("任务评阅预览为只读模式,不能修改学生作答"); const error = new Error("任务评阅预览为只读模式,不能修改学生作答");
@ -31,107 +31,104 @@ service.interceptors.request.use(
return Promise.reject(error); return Promise.reject(error);
} }
// 是否需要设置 token // 是否需要设置 token
const isToken = (config.headers || {}).isToken === false; const isToken = (config.headers || {}).isToken === false;
// 是否需要防止数据重复提交 // 是否需要防止数据重复提交
const isRepeatSubmit = (config.headers || {}).repeatSubmit === false; const isRepeatSubmit = (config.headers || {}).repeatSubmit === false;
// 外部服务(绝对地址,如 AI 服务)不携带本系统 token: if (getToken() && !isToken) {
// 第三方按自己的 token 体系校验 Authorization,带上本系统 JWT 反而会被判 401 config.headers["Authorization"] = "Bearer " + getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改
const isExternalUrl = /^https?:\/\//i.test(config.url); }
if (getToken() && !isToken && !isExternalUrl) { // get请求映射params参数
config.headers["Authorization"] = "Bearer " + getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改 if (config.method === "get" && config.params) {
} let url = config.url + "?" + tansParams(config.params);
// get请求映射params参数 url = url.slice(0, -1);
if (config.method === "get" && config.params) { config.params = {};
let url = config.url + "?" + tansParams(config.params); config.url = url;
url = url.slice(0, -1); }
config.params = {}; if (!isRepeatSubmit && (config.method === "post" || config.method === "put")) {
config.url = url; const requestObj = {
} url: config.url,
if (!isRepeatSubmit && (config.method === "post" || config.method === "put")) { data: typeof config.data === "object" ? JSON.stringify(config.data) : config.data,
const requestObj = { time: new Date().getTime(),
url: config.url, };
data: typeof config.data === "object" ? JSON.stringify(config.data) : config.data, const sessionObj = cache.session.getJSON("sessionObj");
time: new Date().getTime(), if (sessionObj === undefined || sessionObj === null || sessionObj === "") {
}; cache.session.setJSON("sessionObj", requestObj);
const sessionObj = cache.session.getJSON("sessionObj"); } else {
if (sessionObj === undefined || sessionObj === null || sessionObj === "") { }
cache.session.setJSON("sessionObj", requestObj); }
} else { return config;
} },
} (error) => {
return config; console.log(error);
}, Promise.reject(error);
(error) => { }
console.log(error); );
Promise.reject(error); // 响应拦截器
} service.interceptors.response.use(
); (res) => {
// 响应拦截器 // 未设置状态码则默认成功状态
service.interceptors.response.use( const code = res.data.code || 200;
(res) => { // console.log(code);
// 未设置状态码则默认成功状态 // 获取错误信息
const code = res.data.code || 200; const msg = errorCode[code] || res.data.msg || errorCode["default"];
// console.log(code); // 二进制数据则直接返回
// 获取错误信息 if (res.request.responseType === "blob" || res.request.responseType === "arraybuffer") {
const msg = errorCode[code] || res.data.msg || errorCode["default"]; return res.data;
// 二进制数据则直接返回 }
if (res.request.responseType === "blob" || res.request.responseType === "arraybuffer") { if (code === 401) {
return res.data; if (!isRelogin.show) {
} isRelogin.show = true;
if (code === 401) { ElMessageBox.confirm("登录状态已过期,您可以继续留在该页面,或者重新登录", "系统提示", { confirmButtonText: "重新登录", cancelButtonText: "取消", type: "warning" })
if (!isRelogin.show) { .then(() => {
isRelogin.show = true; isRelogin.show = false;
ElMessageBox.confirm("登录状态已过期,您可以继续留在该页面,或者重新登录", "系统提示", { confirmButtonText: "重新登录", cancelButtonText: "取消", type: "warning" }) useUserStore()
.then(() => { .logOut()
isRelogin.show = false; .then(() => {
useUserStore() location.href = "/index";
.logOut() });
.then(() => { })
location.href = "/index"; .catch(() => {
}); isRelogin.show = false;
}) });
.catch(() => { }
isRelogin.show = false; return Promise.reject("无效的会话,或者会话已过期,请重新登录。");
}); } else if (code === 500) {
} ElMessage({ message: msg, type: "error" });
return Promise.reject("无效的会话,或者会话已过期,请重新登录。"); return Promise.reject(new Error(msg));
} else if (code === 500) { } else if (code === 601) {
ElMessage({ message: msg, type: "error" }); ElMessage({ message: msg, type: "warning" });
return Promise.reject(new Error(msg)); return Promise.reject(new Error(msg));
} else if (code === 601) {
ElMessage({ message: msg, type: "warning" });
return Promise.reject(new Error(msg));
} else if (code !== 200) { } else if (code !== 200) {
if (!res.config?.skipErrorMessage) { if (!res.config?.skipErrorMessage) {
ElNotification.error({ title: msg }); ElNotification.error({ title: msg });
} }
return Promise.reject(new Error(msg)); return Promise.reject(new Error(msg));
} else { } else {
return Promise.resolve(res.data); return Promise.resolve(res.data);
} }
}, },
(error) => { (error) => {
console.log("err" + error); console.log("err" + error);
let { message } = error; let { message } = error;
const serverMessage = String(error?.response?.data?.msg || "").trim(); const serverMessage = String(error?.response?.data?.msg || "").trim();
if (message == "Network Error") { if (message == "Network Error") {
message = "后端接口连接异常"; message = "后端接口连接异常";
} else if (message.includes("timeout")) { } else if (message.includes("timeout")) {
message = "系统接口请求超时"; message = "系统接口请求超时";
} else if (message.includes("Request failed with status code")) { } else if (message.includes("Request failed with status code")) {
if (message.includes("401")) { if (message.includes("401")) {
ElMessageBox.confirm("登录状态已过期,您可以继续留在该页面,或者重新登录", "系统提示", { confirmButtonText: "重新登录", cancelButtonText: "取消", type: "warning" }) ElMessageBox.confirm("登录状态已过期,您可以继续留在该页面,或者重新登录", "系统提示", { confirmButtonText: "重新登录", cancelButtonText: "取消", type: "warning" })
.then(() => { .then(() => {
isRelogin.show = true; isRelogin.show = true;
useUserStore() useUserStore()
.logOut() .logOut()
.then(() => { .then(() => {
location.href = "/login"; location.href = "/login";
}); });
}) })
.catch(() => { .catch(() => {
isRelogin.show = false; isRelogin.show = false;
}); });
} else if (message.includes("code 400")) { } else if (message.includes("code 400")) {
if (!error.config?.skipErrorMessage) { if (!error.config?.skipErrorMessage) {
ElMessage({ message: serverMessage || "请求参数不符合要求", type: "error" }); ElMessage({ message: serverMessage || "请求参数不符合要求", type: "error" });
@ -139,45 +136,45 @@ service.interceptors.response.use(
error.message = serverMessage || "请求参数不符合要求"; error.message = serverMessage || "请求参数不符合要求";
} }
} }
message = "系统接口" + message.substr(message.length - 3) + "异常"; message = "系统接口" + message.substr(message.length - 3) + "异常";
} }
// ElMessage({ message: message, type: 'error', duration: 5 * 1000 }) // ElMessage({ message: message, type: 'error', duration: 5 * 1000 })
return Promise.reject(error); return Promise.reject(error);
} }
); );
// 通用下载方法 // 通用下载方法
export function download(url, params, filename, config) { export function download(url, params, filename, config) {
downloadLoadingInstance = ElLoading.service({ text: "正在下载数据,请稍候", background: "rgba(0, 0, 0, 0.7)" }); downloadLoadingInstance = ElLoading.service({ text: "正在下载数据,请稍候", background: "rgba(0, 0, 0, 0.7)" });
return service return service
.post(url, params, { .post(url, params, {
transformRequest: [ transformRequest: [
(params) => { (params) => {
return tansParams(params); return tansParams(params);
}, },
], ],
headers: { "Content-Type": "application/x-www-form-urlencoded" }, headers: { "Content-Type": "application/x-www-form-urlencoded" },
responseType: "blob", responseType: "blob",
...config, ...config,
}) })
.then(async (data) => { .then(async (data) => {
const isBlob = blobValidate(data); const isBlob = blobValidate(data);
if (isBlob) { if (isBlob) {
const blob = new Blob([data]); const blob = new Blob([data]);
saveAs(blob, filename); saveAs(blob, filename);
} else { } else {
const resText = await data.text(); const resText = await data.text();
const rspObj = JSON.parse(resText); const rspObj = JSON.parse(resText);
const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode["default"]; const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode["default"];
ElMessage.error(errMsg); ElMessage.error(errMsg);
} }
downloadLoadingInstance.close(); downloadLoadingInstance.close();
}) })
.catch((r) => { .catch((r) => {
console.error(r); console.error(r);
ElMessage.error("下载文件出现错误,请联系管理员!"); ElMessage.error("下载文件出现错误,请联系管理员!");
downloadLoadingInstance.close(); downloadLoadingInstance.close();
}); });
} }
export default service; export default service;

Loading…
Cancel
Save