diff --git a/package.json b/package.json index 23eb5a39..97fd21ca 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "axios": "^1.1.3", "core-js": "^3.8.3", "dayjs": "^1.11.6", - "echarts":"^5.4.1", + "echarts": "^5.4.1", "element-plus": "^2.2.17", "element-resize-detector": "^1.2.4", "html2canvas": "^1.4.1", @@ -30,6 +30,7 @@ "qs": "^6.11.0", "sortablejs": "^1.15.0", "vue": "^3.2.13", + "vue-cookies": "^1.8.2", "vue-router": "^4.0.3", "vuedraggable": "^4.1.0", "vuex": "^4.0.0" diff --git a/src/api/confign.js b/src/api/confign.js new file mode 100644 index 00000000..3d8d3766 --- /dev/null +++ b/src/api/confign.js @@ -0,0 +1,72 @@ + +import {message} from "ant-design-vue"; +import axios from "axios"; +import router from "@/router"; +import Cookies from 'vue-cookies' +// import { getCookie } from '../api/method' +// const Qs = require("qs"); + +// axios.defaults.headers.post["Content-Type"] = +// "application/x-www-form-urlencoded"; +// export const FILE_UPLOAD_URL = process.env.VUE_APP_BASE_API + '/file/upload' +// export const BATCH_IMPORT_SCORE = process.env.VUE_APP_BASE_API + '/admin/offcourse/batchImportScore' +axios.defaults.withCredentials = true; +const http = axios.create({ + baseURL: '/userbasic', + timeout: 1000 * 15, + headers: {"Content-Type": "application/json",}, +}); + +http.interceptors.request.use( + (config) => { + const token = Cookies.get("token") + if (token) { + config.headers.token = token; //测试1111 + } else{ + message.error('未获取到登录信息,请先登录') + return window.location.href='https://u-pre.boe.com/web/'; + } + return config; + }, + (err) => { + console.log("登陆前拦截", err); + return Promise.reject(err); + } +); + +http.interceptors.response.use( + (response) => { + // console.log('response', response) + const { + data: {code}, + } = response; + if (code === 0 || code === 200) { + return response.data?response.data:response; + } + if(code==500){ + return message.error('请求失败'); + } + if(code==601){ + message.error('token过期请重新登陆'); + return window.location.href='https://u-pre.boe.com/web/'; + } + if (code === 1000) { + (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'alpine') ? router.push({path: 'login'}) : (window.location.href = process.env.VUE_APP_LOGIN_URL) + return Promise.reject(response); + } + // show && message.error(msg); + // console.log("api %o", msg); + // return Promise.reject(response); + return response + }, + function (error) { + if (error.message == "timeout of 1ms exceeded") { + message.destroy(); + message.error("请求超时"); + } + console.log("api error %o", error); + return message.error(error.message); + } +); + +export default http; diff --git a/src/api/configz.js b/src/api/configz.js new file mode 100644 index 00000000..c8aec5ad --- /dev/null +++ b/src/api/configz.js @@ -0,0 +1,74 @@ + +import {message} from "ant-design-vue"; +import axios from "axios"; +import router from "@/router"; +import Cookies from 'vue-cookies' +// import { getCookie } from '../api/method' +// const Qs = require("qs"); + +// axios.defaults.headers.post["Content-Type"] = +// "application/x-www-form-urlencoded"; +// export const FILE_UPLOAD_URL = process.env.VUE_APP_BASE_API + '/file/upload' +// export const BATCH_IMPORT_SCORE = process.env.VUE_APP_BASE_API + '/admin/offcourse/batchImportScore' +axios.defaults.withCredentials = true; +const http = axios.create({ + baseURL: '/report', + timeout: 1000 * 15, + // headers: { "Content-Type": "multipart/form-data" }, + headers: {"Content-Type": "application/json"}, +}); + +http.interceptors.request.use( + (config) => { + const token = Cookies.get("token") + if (token) { + config.headers.token = token; //测试1111 + } else{ + message.error('未获取到登录信息,请先登录') + return window.location.href='https://u-pre.boe.com/web/'; + } + return config; + }, + (err) => { + console.log("登陆前拦截", err); + return Promise.reject(err); + } +); + +http.interceptors.response.use( + (response) => { + // console.log('response', response) + const { + data: {code}, + } = response; + // console.log('code', response) + if (code === 0 || code === 200) { + return response.data?response.data:response; + } + if(code==500){ + return message.error('请求失败'); + } + if(code==601){ + message.error('token过期请重新登陆'); + return window.location.href='https://u-pre.boe.com/web/'; + } + if (code === 1000) { + (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'alpine') ? router.push({path: 'login'}) : (window.location.href = process.env.VUE_APP_LOGIN_URL) + return Promise.reject(response); + } + // show && message.error(msg); + // console.log("api %o", msg); + // return Promise.reject(response); + return response + }, + function (error) { + if (error.message == "timeout of 1ms exceeded") { + message.destroy(); + message.error("请求超时"); + } + console.log("api error %o", error); + return message.error(error.message); + } +); + +export default http; diff --git a/src/api/indexOvervoew.js b/src/api/indexOvervoew.js new file mode 100644 index 00000000..f3d89da2 --- /dev/null +++ b/src/api/indexOvervoew.js @@ -0,0 +1,25 @@ +import http from "./configz"; +import https from './confign' +// 导出案例接口 +// export const boeuCaseExport = (obj,options) => http.get('/boeu/case/export', { params: obj },options) + +//概览页面考试列表请求接口 +export const boeuExamPageList = (obj) => http.post('/boeu/exam/pageList', obj) + +//概览页面案例列表请求接口 +export const boeuCasePageList = (obj) => http.post('/boeu/case/pageList', obj) +// 请求组织接口 +export const userGetUserOrg = (obj) => https.post('/user/getUserOrg', obj) + +// 课程列表接口 +export const boeuCoursePageList = (obj) => http.post('/boeu/course/pageList', obj) +// 授课列表 +export const boeuTeachingPageList = (obj) => http.post('/boeu/teaching/pageList', obj) +// 学习路径图页面 +export const boeuRoterPageList = (obj) => http.post('/boeu/router/pageList', obj) +// 项目列表 +export const boeuProjectPageList = (obj) => http.post('/boeu/project/pageList', obj) + +// 学习数据列表 +export const boeuStudyDataPageList = (obj) => http.post('/boeu/studyData/pageList', obj) + diff --git a/src/components/NavLeft.vue b/src/components/NavLeft.vue index 987d6f94..1d0f58ad 100644 --- a/src/components/NavLeft.vue +++ b/src/components/NavLeft.vue @@ -3,7 +3,7 @@ class="navLeft" :style="{ width: packup ? '100px' : '208px', - 'min-height': screenHeight - 80 + 'px', + height: screenHeight - 80 + 'px', }" >
@@ -307,6 +307,9 @@ 营运数据概览 + 文章 - + + { const latestOpenKey = openKeys.find( (key) => state.openKeys.indexOf(key) === -1 @@ -852,15 +857,27 @@ export default {