firset submit

This commit is contained in:
NiSen
2023-06-13 13:31:01 +08:00
parent d1271a8c74
commit 593158ebf3
471 changed files with 187636 additions and 37 deletions

142
README.md
View File

@@ -1,37 +1,105 @@
### 3 分钟了解如何进入开发
欢迎使用 Codeup通过阅读以下内容你可以快速熟悉 Codeup ,并立即开始今天的工作。
### 提交**文件**
首先,你需要了解在 Codeup 中如何提交代码文件,跟着文档「[__提交第一行代码__](https://thoughts.teambition.com/sharespace/5d88b152037db60015203fd3/docs/5dc4f6786b81620014ef7574)」一起操作试试看吧。
### 开启扫描
开发过程中为了更好的管理你的代码资产Codeup 内置了「[__代码规约扫描__](https://thoughts.teambition.com/sharespace/5d88b152037db60015203fd3/docs/5dc4f68b6b81620014ef7588)」和「[__敏感信息检测__](https://thoughts.teambition.com/sharespace/5d88b152037db60015203fd3/docs/5dc4f6886b81620014ef7587)」服务,你可以在代码库设置-集成与服务中一键开启,开启后提交或合并请求的变更将自动触发扫描,并及时提供结果反馈。
![](https://img.alicdn.com/tfs/TB1nRDatoz1gK0jSZLeXXb9kVXa-1122-380.png "")
![](https://img.alicdn.com/tfs/TB1PrPatXY7gK0jSZKzXXaikpXa-1122-709.png "")
### 代码评审
功能开发完毕后,通常你需要发起「[__代码合并和评审__](https://thoughts.teambition.com/sharespace/5d88b152037db60015203fd3/docs/5dc4f6876b81620014ef7585)」Codeup 支持多人协作的代码评审服务,你可以通过「[__保护分支__](https://thoughts.teambition.com/sharespace/5d88b152037db60015203fd3/docs/5dc4f68e6b81620014ef758c)」策略及「[__合并请求设置__](https://thoughts.teambition.com/sharespace/5d88b152037db60015203fd3/docs/5dc4f68f6b81620014ef758d)」对合并过程进行流程化管控,同时提供 WebIDE 在线代码评审及冲突解决能力,让你的评审过程更加流畅。
![](https://img.alicdn.com/tfs/TB1XHrctkP2gK0jSZPxXXacQpXa-1432-887.png "")
![](https://img.alicdn.com/tfs/TB1V3fctoY1gK0jSZFMXXaWcVXa-1432-600.png "")
### 编写文档
项目推进过程中,你的经验和感悟可以直接记录到 Codeup 代码库的「[__文档__](https://thoughts.teambition.com/sharespace/5d88b152037db60015203fd3/docs/5e13107eedac6e001bd84889)」内,让智慧可视化。
![](https://img.alicdn.com/tfs/TB1BN2ateT2gK0jSZFvXXXnFXXa-1432-700.png "")
### 成员协作
是时候邀请成员一起编写卓越的代码工程了,请点击右上角「成员」邀请你的小伙伴开始协作吧!
### 更多
Git 使用教学、高级功能指引等更多说明,参见[__Codeup帮助文档__](https://thoughts.teambition.com/sharespace/5d88b152037db60015203fd3/docs/5dc4f6756b81620014ef7571)。
# fe_manage
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
## pages 页面说明
### 一、learningpath:学习路径文件夹
```
LearningPath.vue:学习路径页面
LevelAdd.vue:关卡页面
LevelAddDetail.vue:创建关卡页面
LevelCheck.vue查看页面
```
### 二、projectcenter:项目文件夹
```
ProjectManage.vue:项目页面
ProjectAdd.vue:创建单层项目页面
SonProject.vue:创建单层子项目页面
TaskPage.vue:任务页面
TaskAdd.vue:创建任务页面
TemplateLibrary.vue:模板页面
LibraryAdd.vue:模板库查看页面
```
### 三、courselibrary:课程文件夹
```
CourseManage.vue:课件管理页面
CoursewareManage.vue:课程页面
```
### 四、examination:考试文件夹
```
ExaminationCenter.vue:考试中心页面
```
### 五、research:调研文件夹
```
ResearchManage.vue:调研管理页面
ResearchAdd.vue:创建调研页面
ManagePage:调研管理-管理页面
```
### 六、report:报表文件夹
```
ReportCenter.vue:报表中心页面
```
### 七、teacher:教师文件夹
```
TeacherManage.vue:教师管理页面
```
### 八、certificate:证书文件夹
```
CertificateCenter.vue:证书中心页面
```
### 九、system:系统文件夹
```
SystemManage.vue:系统管理页面
```

5
babel.config.js Normal file
View File

@@ -0,0 +1,5 @@
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}

5
docker/Dockerfile Normal file
View File

@@ -0,0 +1,5 @@
FROM devforth/spa-to-http:latest
WORKDIR /
ADD ./dist/ .
EXPOSE 8080

19
jsconfig.json Normal file
View File

@@ -0,0 +1,19 @@
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"baseUrl": "./",
"moduleResolution": "node",
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
}
}

22375
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

78
package.json Normal file
View File

@@ -0,0 +1,78 @@
{
"name": "fe_manage",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"build:boe": "vue-cli-service build --mode boe",
"build:release": "vue-cli-service build --mode release",
"build:prod": "vue-cli-service build --mode prod",
"build:test": "vue-cli-service build --mode test",
"build:alpine": "vue-cli-service build --mode alpine"
},
"dependencies": {
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^5.1.12",
"ant-design-vue": "^3.2.12",
"axios": "^1.1.3",
"babel-eslint": "^10.1.0",
"core-js": "^3.8.3",
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"element-plus": "^2.2.17",
"element-resize-detector": "^1.2.4",
"exceljs": "^4.3.0",
"html2canvas": "^1.4.1",
"jquery": "^3.6.1",
"json-bigint": "^1.0.0",
"mitt": "^3.0.0",
"moment": "^2.29.4",
"qrcode.vue": "^3.3.3",
"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"
},
"devDependencies": {
"@babel/core": "^7.12.16",
"@babel/eslint-parser": "^7.12.16",
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-eslint": "~5.0.0",
"@vue/cli-plugin-router": "~5.0.0",
"@vue/cli-plugin-vuex": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"eslint": "^7.32.0",
"eslint-plugin-vue": "^8.0.3",
"sass": "^1.32.7",
"sass-loader": "^12.0.0"
},
"eslintConfig": {
"root": true,
"env": {
"node": true,
"vue/setup-compiler-macros": true
},
"extends": [
"plugin:vue/vue3-essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "@babel/eslint-parser"
},
"rules": {
"no-console": "off",
"no-debugger": "off",
"no-mixed-spaces-and-tabs": "off"
}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead",
"not ie 11"
]
}

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

29
public/index.html Normal file
View File

@@ -0,0 +1,29 @@
<!--
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-09 09:26:26
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-12-10 15:22:22
* @FilePath: /fe-manage/public/index.html
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>京东方大学堂</title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

196
src/App.vue Normal file
View File

@@ -0,0 +1,196 @@
<template>
<div id="container" v-if="!isLogin">
<nav-top/>
<div style="display: flex">
<nav-left/>
<div style="flex: 1; display: flex; flex-direction: column; width: 0">
<open-pages/>
<bread-crumb/>
<main>
<a-config-provider :locale="zhCN">
<router-view/>
</a-config-provider>
</main>
</div>
</div>
</div>
<div id="container" v-if="isLogin">
<router-view/>
</div>
</template>
<script setup>
import {ref, onMounted} from "vue";
import {useStore, createStore} from "vuex";
import NavLeft from "@/components/NavLeft";
import NavTop from "@/components/NavTop";
import OpenPages from "@/components/OpenPages";
import BreadCrumb from "@/components/BreadCrumb";
import zhCN from "ant-design-vue/es/locale/zh_CN";
import * as api1 from "@/api/index1";
import * as api2 from "@/api/index";
import {boeRequest} from "@/api/request";
import {USER_PERMISSION} from "@/api/ThirdApi";
const store = useStore();
const isLogin = ref(false);
console.log("版本3.0.3------------");
// 监听关闭浏览器
let time1 = ref(0);
let time2 = ref(0);
onMounted(() => {
init()
window.addEventListener('beforeunload', e => beforeunloadHandler(e));
window.addEventListener('unload', e => unloadHandler(e));
})
//添加监听事件
function beforeunloadHandler() {
time1.value = new Date().getTime();
}
function init() {
getUserInfo();
getUserPermission();
initDict("content_type"); //内容分类
initDict("project_level"); //项目级别
initDict("project_sys"); //培训分类
initDict("project_pic"); //项目封面
initDict("router_pic"); //路径图封面
initDict("course_pic"); //课程封面
initDict("job_type"); //岗位
initDict("band"); //band
}
function unloadHandler() {
time2.value = new Date().getTime() - time1.value;
if (time2.value <= 5) {
store.replaceState(createStore({state: {openpages: null}}).state);
localStorage.removeItem("openpages");
}
}
async function getUserInfo() {
const userInfo = await api2.userInfo();
store.commit("SET_USER", userInfo.data.data);
}
async function initDict(key) {
const list = await getDictList(key);
store.commit("SET_DICT", {key, data: list});
}
function getUserPermission(){
boeRequest(USER_PERMISSION,{permissionType:'PAGE'}).then(res=>{
store.commit("SET_PERMISSION", res.result.flatMap(t=>t?.permissionPageList.map(s=>s.url)));
})
}
const getDictList = (param) => api1.getDictTree({code: param,}).then((res) => res.data.data);
</script>
<style lang="scss">
#app {
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB,
Microsoft YaHei, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: #2c3e50;
height: 100%;
}
.ant-table-wrapper {
.ant-table-content {
.ant-table-thead th {
background-color: #eff4fc !important;
text-align: center !important;
}
}
.ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {
background: #f6f9fd;
}
}
.ant-btn-link {
padding: 0 !important;
}
#container {
margin: 0;
display: flex;
flex-direction: column;
width: 100%;
min-width: 1000px;
min-height: 100%;
background-color: rgba(245, 247, 250, 1);
main {
height: 0;
flex: 1 1 auto;
// flex-shrink: 0;
display: flex;
overflow-y: auto;
// display: flex;
// flex: 1 1 auto;
width: calc(100% - 40px);
// margin-bottom: 20px;
margin: 0px 20px 20px 20px;
box-sizing: border-box;
background: #ffffff;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
}
.cus-btn {
width: 100%;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 16px;
border: 1px solid #4ea6ff;
border-radius: 8px;
background: #4ea6ff;
cursor: pointer;
color: #fff;
}
.white {
// background: #fff;
// color: #4ea6ff;
}
.cus-input {
height: 40px;
border-radius: 8px;
}
.cus-select {
height: 40px;
border-radius: 8px;
}
// @media screen and (max-width: 1366px) {
// .cmMain {
// width: 750px;
// }
// }
// @media screen and (min-width: 1367px) and (max-width: 1680px) {
// .cmMain {
// width: 1010px;
// }
// }
// @media screen and (min-width: 1681px) and (max-width: 1920px) {
// .cmMain {
// width: 1270px;
// }
// }
// @media screen and (min-width: 1921px) {
// .cmMain {
// width: 1270px;
// }
// }
}
</style>

15
src/api/ThirdApi.js Normal file
View File

@@ -0,0 +1,15 @@
//学员列表带分页
export const USER_LIST_PAGE = "/userbasic/user/list post";
//学员列表 没有分页数据 只能通过名称检索 速度较快
export const USER_LIST = "/userbasic/user/searchList post";
export const ORG_LIST = "/userbasic/org/list post";
export const ORG_CHILD_LIST = "/userbasic/org/info post";
// export const AUDIENCE_LIST = '/userbasic/audience/list post'
//当前用户可以查看的受众接口
export const AUDIENCE_LIST = "/userbasic/audience/userAudiencesFilter post";
export const USER_PERMISSION = "/userbasic/permission/listByUser post";
export const CASE_PAGE = "/systemapi/xboe/m/boe/cases/pagelist post formData";
export const EXAM_PAPER_PAGE = "/systemapi/xboe/m/exam/paper/querylist post formData";
export const TEST_PAGE = "/api/b1/system/quiz/quiz-list post formData";
export const ONLINE_PAGE = "/systemapi/xboe/m/course/manage/pagelist post formData";
export const ONLINE_COURSE_DEL = (id, courseId) => `/systemapi/xboe/school/study/course/delete-signup?id=${id}&couserId=${courseId} post`;

25
src/api/apis.js Normal file
View File

@@ -0,0 +1,25 @@
export const STUDENT_LIST = "/admin/student/getStudent";
export const TASK_STUDENT_LIST = "/admin/student/getTaskStudent";
export const ONLINE_COURSE_PAGE = "/onlineClasses/queryOnlineList";
export const ASSESSMENT_PAGE = "/assessment/queryAssessmentDetailList post";
export const PROJECT_AUDIT_PAGE = "/admin/project/auditedlistV2 post";
export const ROUTER_DETAIL_MODIFY = "/admin/router/routerInfoTemp post";
export const PROJECT_DETAIL_MODIFY = "/admin/project/projectInfoTemp post";
export const PROJECT_TEMPLATE_DETAIL_MODIFY = "/admin/project/template/editStageAndTask post";
export const PROJECT_RELEASE = "/admin/project/realease";
export const ASYNC_STUDENT_STATUS = "/admin/cache/getStudentAsyncStatus";
export const ONLINE_COURSE_TEACHER = "/admin/offcourse/getTeacherNamesByCourseId";
//开课列表
export const COURSE_PLAN_PAGE = "/admin/offcourse/planList post";
//开课所有列表
export const COURSE_PLAN_LIST = "/admin/offcourse/allPlanList post";
//开课保存/编辑
export const COURSE_PLAN_EDIT = "/admin/offcourse/editPlan post";
//删除开课
export const DEL_PLAN = id => `/admin/offcourse/deletePlan?offcoursePlanId=${id} delete`;
//作业详情
export const WORK_DETAIL = workId => `/work/queryWorkDetailById?workId=${workId} post`;
//考试
export const EXAM_DETAIL = examinationId => `/examination/queryExaminationDetailById?examinationId=${examinationId} post`;
//评估
export const ASSESSMENT_DETAIL = (assessmentId)=>`/assessment/queryAssessmentDetailById?assessmentId=${assessmentId} post`;

81
src/api/config.js Normal file
View File

@@ -0,0 +1,81 @@
/*
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-21 14:32:52
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2023-01-04 13:49:54
* @FilePath: /fe-manage/src/api/config.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import {message} from "ant-design-vue";
import axios from "axios";
import router from "@/router";
// 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: process.env.VUE_APP_BASE_API,
timeout: 1000 * 15,
// headers: { "Content-Type": "multipart/form-data" },
headers: {"Content-Type": "application/json"},
});
http.interceptors.request.use(
(config) => {
// console.log("config", config);
// const token = localStorage.getItem("token");
// // const token = getCookie('token')
// // console.log('token', token)
// if (token) {
// config.headers.token = token; //测试1111
// } else {
// console.log("当前请求页面无token,请执行操作!!!");
// // 此处测试默认配置token
// config.headers.token =
// "eyJ0eXBlIjoidG9rZW4iLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC91LmJvZS5jb20iLCJpYXQiOjE2NzAxNTMxMDMsImV4cCI6MTY3MDE2MDMwMywiR2l2ZW5OYW1lIjoiYm9ldSIsInVzZXJJZCI6IjZCMDQ5RkFGLUMzMTQtN0NDRi0wRDI4LTBEMjNGNEM0MjUzMSIsInVJZCI6Ijk2NTM0MjAyNzQ5NzYwNzE2OCIsInBlcm1pc3Npb24iOiIifQ==.c937b2d3a59cbab2136fdde55fd38f06bdff041212aab0fa6741bc4be41e28a7";
// // }
return config;
},
(err) => {
console.log("登陆前拦截", err);
return Promise.reject(err);
}
);
http.interceptors.response.use(
(response) => {
// console.log('response', response)
const {
data: {code, msg ,show},
} = response;
if (code === 0 || code === 200) {
return response;
}
if (code === 1000) {
(process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'alpine') ?
router.push({path: 'login', query: { returnUrl: router.currentRoute.value.fullPath }}) :
(window.location.href = process.env.VUE_APP_LOGIN_URL + encodeURIComponent(window.location.protocol + process.env.VUE_APP_BOE_API_URL + process.env.VUE_APP_BASE + router.currentRoute.value.fullPath))
// TODO token过期后退出登录 清空当前用户标记 - 为了刷新页面使用
localStorage.removeItem('refreshPage')
return Promise.reject(response);
}
show ? message.error(msg):message.error('系统接口数据异常,请联系管理员');
console.log("api %o", msg);
return Promise.reject(response);
},
function (error) {
if (error.message == "timeout of 1ms exceeded") {
message.destroy();
message.error("请求超时");
}
console.log("api error %o", error);
return Promise.reject(error);
}
);
export default http;

70
src/api/confign.js Normal file
View File

@@ -0,0 +1,70 @@
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 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过期请重新登陆');
}
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;

72
src/api/configz.js Normal file
View File

@@ -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: '/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 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过期请重新登陆');
}
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;

81
src/api/index.js Normal file
View File

@@ -0,0 +1,81 @@
/*
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-07 17:06:45
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-21 16:39:00
* @FilePath: /fe-manage/src/api/index.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import http from "./config";
// import qs from 'qs';
/**
* 接口传参数方式get
* axios.get('/user', {
* params: {
* id: 12345
* name: user
* }
* }).then(res => console.log(res))
*
* 接口传参三种方式post/put/patch
*
* 1.'Content-Type'= 'multipart/form-data',传参格式为 formData。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'multipart/form-data'
* var formData=new FormData();
* formData.append('user',123456);formData.append('pass',12345678);
* axios.post("/notice",formData).then()
*
* 2.'Content-Type'= 'application/x-www-form-urlencoded',传参格式为 query 形式,使用$qs.stringify。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'application/x-www-form-urlencoded'
* let data = {"code":"1234","name":"yyyy"};
* axios.post(`${this.$url}/test/testRequest`,qs.stringify({data})).then()
*
* 3.'Content-Type'= 'application/json传参格式为 raw (JSON格式)。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'application/json;charset=UTF-8'
* let data = {"code":"1234","name":"yyyy"}
* axios.post(`${this.$url}/test/testRequest`,data).then()
*
*/
// 接口-请求
// 创建编辑单层项目type=3/ 多层项目type=1/ 多层子项目type=2
export const createProject = (obj) => http.post('/admin/project/edit', obj)
// 获取项目列表
export const getProjectList = (obj) => http.post('/admin/project/list', obj)
// 获取项目详情信息(包含阶段及任务列表)
export const getProjectDetail = (obj) => http.get('/admin/project/detail', {params: obj})
//发布项目
export const releaseProject = (obj) => http.post('/admin/project/publish', obj)
//获取项目学员
export const projectStudent = (obj) => http.post('/admin/project/studentList', obj)
export const projectStudentCount = (obj) => http.get('/admin/student/getStudentCount', {params: obj})
//撤回发布、结束
export const handleProject = (obj) => http.post('/admin/project/handle', obj)
//获取任务管理列表
export const taskStudentList = (obj) => http.post('/admin/project/taskStudentList', obj)
//获取讨论信息
export const getDiscussDetail = (obj) => http.post('/discuss/getDiscussDetail', obj)
//获取模版列表
export const getTemplate = (obj) => http.post('/admin/project/template/list', obj)
//获取模版详细信息
export const getTemplateDetail = (obj) => http.get('/admin/project/template/detail', {params: obj})
//获取项目统计
export const getProjectCount = (projectId) => http.get('/admin/project/projectCount', {params: {projectId: projectId}})
export const login = (obj) => http.post('/admin/CheckUser/userLogin', obj)
export const userInfo = () => http.get('/admin/CheckUser/userInfo')

242
src/api/index1.js Normal file
View File

@@ -0,0 +1,242 @@
/*
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-04 22:45:31
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2023-02-13 23:09:53
* @FilePath: /fe-manage/src/api/index1.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import http from "./config";
import qs from "qs";
// import { getCookie } from '../api/method'
/**
* 接口传参数方式get
* axios.get('/user', {
* params: {
* id: 12345
* name: user
* }
* }).then(res => console.log(res))
*
* 接口传参三种方式post/put/patch
*
* 1.'Content-Type'= 'multipart/form-data',传参格式为 formData。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'multipart/form-data'
* var formData=new FormData();
* formData.append('user',123456);formData.append('pass',12345678);
* axios.post("/notice",formData).then()
*
* 2.'Content-Type'= 'application/x-www-form-urlencoded',传参格式为 query 形式,使用$qs.stringify。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'application/x-www-form-urlencoded'
* let data = {"code":"1234","name":"yyyy"};
* axios.post(`${this.$url}/test/testRequest`,qs.stringify({data})).then()
*
*
* 3.'Content-Type'= 'application/json传参格式为 raw (JSON格式)。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'application/json;charset=UTF-8'
* let data = {"code":"1234","name":"yyyy"}
* axios.post(`${this.$url}/test/testRequest`,data).then()
*
*/
//上传文件
export const uploadFile = (obj) =>
http.post("/test/testRequest", qs.stringify({ obj }));
// 接口-请求
//创建学习路径
export const createLearnPath = (obj) => http.post("/admin/router/edit", obj);
// 获取学习路径图列表
export const getLearnPath = (obj) => http.post("/admin/router/list", obj);
//学习路径图的发布、停用、删除
export const handleLearnPath = (obj) => http.post("/admin/router/handle", obj);
//获取路径图统计数据
export const getLearnCount = (routerId) =>
http.get("/admin/router/getCount", { params: { routerId: routerId } });
//新建或编辑关卡
export const editChapter = (obj) => http.post("/admin/router/editChapter", obj);
// 编辑路径图设置
export const setConfig = (obj) => http.post("/admin/router/setConfig", obj);
//获取学员列表
export const getStudent = (obj) => http.post("/admin/router/studentList", obj);
//获取路径图详情-包含关卡及任务列表
export const getRouterDetail = (routerId, useTask) =>
http.get("/admin/router/detail", {
params: {
routerId: routerId,
useTask: useTask
},
});
//添加学员
export const addStudent = (obj) => http.post("/admin/router/addStudent", obj);
//删除学员
export const delStudent = (obj) =>
http.post("/admin/router/deleteStudent", obj);
// 获取学员路径图进度明细
export const stuProgress = (params) => http.get('/admin/router/detail', { params });
export const stuRouterProgress = (params) => http.get('/admin/router/stuDetail', { params });
// export const stuProgress = (obj) =>http.post("/admin/router/studentProcess", obj);
//编辑学习路径基本信息
export const editLearnInfo = (obj) => http.post('/admin/router/editInfo', obj)
//项目基础信息-----------------------------------
//项目积分榜单
// export const scoreRank = (obj) => http.post("/admin/project/scoreRank", obj);
export const scoreRank = (params) => http.get('/points/top/list', { params })
// 项目进度排行
export const completionRank = (params) => http.get('/stu/project/rank_list/completion_list', { params })
// 项目学时排行榜
export const studytimeRank = (params) => http.get('/stu/project/rank_list/study_time_list', { params })
//排行榜
export const billboard = (obj) => http.post("/admin/project/billboard", obj);
//项目基础信息-----------------------------------
//课程----------------------------------------------
// //提交审核
// export const courseHandle = (obj) => http.post('/admin/offcourse/handle', obj)
//课程----------------------------------------------
//公共信息---------------------------------------------------
// 获取字典信息
export const getDict = (obj) => http.post('/dict/getList', obj)
export const getDictTree = (params) => http.get('/dict', { params })
//获取组织树一级列表
export const getOrgTree = (obj) => http.post('/admin/router/orgList', obj)
//根据id获取组织树一级元素下所有子元素
export const orgTreeList = (obj) => http.post('/admin/router/orgTreeList', obj)
//根据id获取部门下学员
export const searchUsersByOrgId = (obj) => http.post('/admin/router/searchUsersByOrgId', obj)
//获取组织信息(修改版)
export const getOrgInfo = (obj) => http.post('/admin/orgStruct/getOrgInfo', obj)
export const getOrgTreeInfo = (obj) => http.get('/org/initOrg', { params: obj })
//获取员工(修改版)
export const getMemberInfo = (obj) => http.post('/admin/orgStruct/getMemberInfo', obj)
//获取受众(修改版)
export const getAudienceInfo = (obj) => http.post('/admin/orgStruct/getAudienceInfo', obj)
//获取、添加授权(修改版)
export const optionAuthPerm = (obj) => http.post('/admin/AuthPerm/optionAuthPerm', obj)
//获取学员列表
export const getStuList = (obj) => http.post('/admin/orgStruct/getStudentRef', obj)
//获取用户登录
export const getUser = () => http.post('/admin/CheckUser/login', { withCredentials: true })
//公共信息---------------------------------------------------
//添加项目学员
export const addStudentProject = (obj) => http.post('/admin/project/addStudent', obj)
//添加课程学员
export const addStudentCourse = (obj) => http.post("/admin/offcourse/addStudent", obj);
// 获取组织结构树
export const orgtree = () => http.get("/org/tree");
export const saveStu = obj => http.post("/admin/student/addStudent", obj);
export const getAllStudentByProjectId = obj => http.get("/admin/student/getAllStudentByProjectId", { params: obj });
export const moveStudent = obj => http.post("/admin/student/moveStudent", obj);
export const getStuPage = obj => http.get("/admin/student/getStudent", { params: obj });
export const delStudentList = obj => http.post("/admin/student/delStudent", obj);
export const validateName = obj => http.post("/admin/validate/validateName", obj);
//获取积分列表
export const noticeList = (projectId) =>
http.post(
`/admin/project/noticeList?projectId=` +
projectId +
``
);
// 测试方法
// import * as api from '../../api/index'
// api.getLearnPath({}).then(res => {
// console.log(res)
// }).catch(err => {
// console.log(err)
// })
// export const choiceEvaluation = (obj) => http.post('/evaluation/choiceEvaluation', obj);
// 获取任务学员的信息
export const AssessmentManagementMessage = (obj) => http.get(`/admin/student/getTaskStudent`, { params: obj })
// 导出任务学员信息
export const exportTaskStudent = (obj) => http.post('/admin/student/exportTaskStudent', obj)
//导出任务作业
export const exportHomeWork = (obj) => http.get('/admin/student/exportHomeWork', { params: obj })
//导出任务作业模板
export const exportHomeWorkTemplate = (obj) => http.get('/admin/student/exportHomeWorkTemplate', { params: obj })
//签到
export const attendanceSign = (obj) => http.post('/stu/task/attendance/sign', obj)
//请假
export const attendanceLeave = (obj) => http.post('/stu/task/attendance/leave', obj)
//批量标记完成
export const batchFinishTask = (obj) => http.post('/admin/student/batchFinishTask', obj)
//批量更新学员状态
export const batchUpdateStatus = (obj) => http.post('/admin/student/batchUpdateStatus', obj)
export const auditStudentBatch = (obj) => http.post('/admin/student/auditStudentBatch', obj)
// //面授课批量导入成绩
export const batchImportScore = (obj) =>
http.post('/admin/student/importHomeWork', obj, {
headers: { "Content-Type": "multipart/form-data" },
});
//数据导入状态
export const getImportStatus = (uuid) => http.get('/admin/student/getImportStatus', { params: { uuid: uuid } })
//导出作业
// export const exportHomeWork=(obj)=>http.get('admin/student/exportHomeWork',{params:obj})
// 面授课导入学员
export const FaceTeachImportStudent = (obj) => http.post('/admin/student/importStudent', obj, { headers: { "Content-Type": "multipart/form-data" } })
//成绩录入
export const updateStudent = (obj) => http.post('/admin/student/homeWorkScoreEntry', obj)
//获取证书列表
export const certificate = (obj) => http.get('/admin/certificate/page', { params: obj })
//添加证书
export const saveupdatecertificate = (obj) => http.post('/admin/certificate/saveOrUpdate', obj)
//删除证书
export const certificatedel = (obj) => http.get('/admin/certificate/del', { params: obj })
//证书详情
export const certificatedetail = (obj) => http.get('/admin/certificate/get', { params: obj })
//获取阶段列表
export const getStageList = (obj) => http.get('/admin/project/getStageList', { params: obj })
//获取任务列表
export const getTaskList = (obj) => http.get('/admin/project/getTaskList', { params: obj })
//查看证书学员列表
export const stuCertList = (obj) => http.get('/admin/certificate/stuCertList', { params: obj })
//更新学员证书
export const cancelOrAuth = (obj) => http.post('/admin/certificate/cancelOrAuth', obj)
//获取项目总积分
export const allPoints = (obj) => http.get('/points/project/allPoints', { params: obj })
export const updateStuCert = (obj) => http.post('/admin/certificate/updateStuCert', obj)
//添加外部考试
export const createExamination = (obj) => http.post('/examination/createExamination', obj)
//催促考试
export const batchSendMessage = (obj) => http.post('/admin/taskmanage/batchSendMessage', obj)
// 外部考试导入成绩
export const ImportExternalExamScore = (obj) => http.post('/admin/external/exam/manage/importExternalExamScore', obj, { headers: { "Content-Type": "multipart/form-data" } })
//分组
export const changeGroupByStudentId = (obj) => http.post('/admin/student/changeGroupByStudentId', obj)
//导入小组
export const importGroup = (uuid) => http.post('/admin/studentGroup/importGroup/{pid}', { params: { uuid: uuid } })
//添加小组学员
export const addGroupMember = (obj) => http.post('/admin/studentGroup/addGroupMember', obj)
//获取小组成员
export const groupMemberList = (obj) => http.post('/admin/studentGroup/groupMemberList', obj)
//删除小组成员
export const delGroupStudent = (obj) => http.post('/admin/studentGroup/delStudent', obj)
//随机分组
export const randomGroup = (obj, projectId) => http.post(`/admin/studentGroup/randomGroup/${projectId}`, obj)

22
src/api/indexActivity.js Normal file
View File

@@ -0,0 +1,22 @@
import http from "./config";
//获取活动信息接口
export const getActivity = (activeId) => http.get(`/activity?activityId=${activeId}`);
//创建活动接口
export const createActivity = (obj) => http.post('/activity/createActivity', obj);
//删除活动接口
export const deleteActivity = (obj) => http.post('/activity/deleteActivity', { params: obj });
//修改活动接口
export const updateActivity = (obj) => http.post('/activity/updateActivity', obj);
//修改阶段任务信息
export const updateTask=(obj)=>http.post('/admin/project/editTask',obj)
//修改活动是否为必修接口
export const updateActivityToCompulsory = (obj) => http.post('/activity/updateActivityToCompulsory', { params: obj });
//修改活动是否为选修接口
export const updateActivityToElective = (obj) => http.post('/activity/updateActivityToElective', { params: obj });

49
src/api/indexAudit.js Normal file
View File

@@ -0,0 +1,49 @@
/*
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-12-13 09:24:38
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2023-01-30 10:50:28
* @FilePath: /fe-manage/src/api/indexAudit.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import http from "./config";
//获取待审核面授课列表
export const list = (obj) => http.post('/admin/offcourse/listToBeReviewed', obj)
// export const list = (obj) => http.post('/admin/offcourse/list', obj)
//获取待审核项目列表
export const projlist = (obj) => http.post('/admin/project/list', obj)
//获取项目审核日志
export const auditlist = (obj) => http.post('/admin/project/auditlist', obj)
//获取已审核项目列表
export const auditedlist = (obj) => http.post('/admin/project/auditedlist', obj)
//获取已审核项目列表
export const listView = (obj) => http.post('/admin/project/listView', obj)
//获取面授课已审核列表
export const courseListView = (obj) => http.post('/admin/offcourse/listReview', obj)
//获取面授课详情
export const courseDetail = (offcourseId) => http.post(`/admin/offcourse/detail?offcourseId=${offcourseId}`)
// 面授课转审邀请接口
export const inviteAudit = (obj) => http.post('/admin/offcourse/inviteAudit', obj)
//项目审核日志
export const auditList = (obj) => http.post('/admin/project/auditList', obj)
//项目审核
export const auditView = (obj) => http.post('/admin/project/auditView', obj)
//面授课审核
export const courseAuditView = (obj) => http.post('/admin/offcourse/auditView', obj)
//项目修改记录
export const editRecord = (chooseProject) => http.get(`/modifyRecord/page?id=${chooseProject}&type=1&size=2`)
// 面授课的修改记录
export const editCourseRecord = (chooseCourse) => http.get(`/modifyRecord/page?id=${chooseCourse}&type=2&size=100`)

4
src/api/indexCase.js Normal file
View File

@@ -0,0 +1,4 @@
import http from "./config";
//获取案例信息
export const queryCasesDetailList = (obj) => http.post("/cases/queryCasesDetailList", obj);

62
src/api/indexCourse.js Normal file
View File

@@ -0,0 +1,62 @@
import http from "./config";
/**
* 1
*/
//1添加课程学员
export const addStudent = (obj) =>
http.post("/admin/offcourse/addStudent", obj);
//2面授课审核
export const auditView = (obj) => http.post("/admin/offcourse/auditView", obj);
//3删除开课
export const deletePlan = (obj) =>
http.delete(
"/admin/offcourse/deletePlan",
{ params: obj },
{
headers: { "Content-Type": "application/x-www-form-urlencoded" },
}
);
//4获取面授课详情
export const detail = (obj) =>
http.post("/admin/offcourse/detail", obj, {
headers: { "Content-Type": "application/x-www-form-urlencoded" },
});
//5获取面授课开课详情
export const detailPlan = (obj) =>
http.post("/admin/offcourse/detailPlan", obj, {
headers: { "Content-Type": "application/x-www-form-urlencoded" },
});
//6新建或编辑面授课
export const edit = (obj) => http.post("/admin/offcourse/edit", obj);
//7新建或编辑面授课开课
export const editPlan = (obj) => http.post("/admin/offcourse/editPlan", obj);
export const copyCoursePlan = (params) => http.get("/admin/offcourse/copyCoursePlan", {params});
export const copyCourse = (params) => http.get("/admin/offcourse/copyCourse", {params});
//8课程导出
export const exportP = (obj) => http.post("/admin/offcourse/export", obj);
//9操作面授课(发布,撤回,删除,审核,停用)
export const handle = (obj) => http.post("/admin/offcourse/handle", obj);
//10学员操作-支持批量
export const handleStudent = (obj) =>
http.post("/admin/offcourse/handleStudent", obj);
//11获取面授课列表
export const list = (obj) => http.post("/admin/offcourse/list", obj);
//12获取面授课已审核列表
export const listReview = (obj) =>
http.post("/admin/offcourse/listReview", obj);
//13面授课开课列表
export const planList = (obj) => http.post("/admin/offcourse/planList", obj);
//14学员导出
export const studentExport = (obj) =>
http.post("/admin/offcourse/studentExport", obj);
//15获取学员列表
export const studentList = (obj) =>
http.post("/admin/offcourse/studentList", obj);
//16学习记录列表
export const studyRecordList = (obj) =>
http.post("/admin/offcourse/studyRecordList", obj);
// 获取员工信息
export const getMemberInfoApi = (obj) =>
http.post("/admin/orgStruct/getMemberInfo", obj);

21
src/api/indexDiscuss.js Normal file
View File

@@ -0,0 +1,21 @@
import http from "./config";
//import qs from 'qs';
//创建讨论
export const createDiscuss = (obj) => http.post("/discuss/createDiscuss", obj);
//获取讨论信息接口
export const getDiscussDetail = (obj) => http.post('/discuss/getDiscussDetail', obj,{
headers: {
'token': '123',
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
}
})
//删除讨论接口
export const deleteDiscuss = (obj) =>
http.post("/discuss/deleteDiscuss", { params: obj });
//修改讨论接口
export const updateDiscuss = (obj) => http.post('/discuss/updateDiscuss', obj );
//修改阶段任务信息
export const updateTask=(obj)=>http.post('/admin/project/editTask',obj)

103
src/api/indexEval.js Normal file
View File

@@ -0,0 +1,103 @@
import http from "./config";
// import qs from 'qs';
/**
* 接口传参数方式get
* axios.get('/user', {
* params: {
* id: 12345
* name: user
* }
* }).then(res => console.log(res))
*
* 接口传参三种方式post/put/patch
*
* 1.'Content-Type'= 'multipart/form-data',传参格式为 formData。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'multipart/form-data'
* var formData=new FormData();
* formData.append('user',123456);formData.append('pass',12345678);
* axios.post("/notice",formData).then()
*
* 2.'Content-Type'= 'application/x-www-form-urlencoded',传参格式为 query 形式,使用$qs.stringify。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'application/x-www-form-urlencoded'
* let data = {"code":"1234","name":"yyyy"};
* axios.post(`${this.$url}/test/testRequest`,qs.stringify({data})).then()
*
* 3.'Content-Type'= 'application/json传参格式为 raw (JSON格式)。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'application/json;charset=UTF-8'
* let data = {"code":"1234","name":"yyyy"}
* axios.post(`${this.$url}/test/testRequest`,data).then()
*
*/
// 接口-请求
//创建测评
export const createEvaluation = (obj) =>
http.post("/evaluation/createEvaluation", obj);
//上传组件
export const fileUp = (data) =>
http.post("/file/upload", data, {
headers: { "Content-Type": "multipart/form-data" },
});
//上传文件
export const baseVoteupload = (data) =>
http.post("/vote/baseVoteupload", data, {
headers: { "Content-Type": "multipart/form-data" },
});
//删除测评信息
export const deleteEvaluationById = (obj) =>
http.post(
"/evaluation/deleteEvaluationById",
{ params: obj },
{
header: {
token: "123",
},
}
);
//根据ID获取测评信息详情
export const queryEvaluationDetailById = (obj) =>
http.post("/evaluation/queryEvaluationDetailById", obj, {
headers: {
token: "123",
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
},
});
export const queryEvaluationMessageById = (obj) =>
http.post("/evaluation/queryEvaluationMessageById", obj, {
headers: {
token: "123",
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
},
});
//修改测评信息
export const updateEvaluation = (obj) =>
http.post("/evaluation/updateEvaluation", obj);
//测评列表查询接口
export const choiceEvaluation = (obj) =>
http.post("/evaluation/choiceEvaluation", obj);
// 测试方法
// import * as api from '../../api/index'
// api.getLearnPath({}).then(res => {
// console.log(res)
// }).catch(err => {
// console.log(err)
// })
//根据name获取测评信息详情
export const getEvalListByName = (obj) =>
http.post("/evaluation/queryEvaluationDetailById", obj, {
headers: {
token: "123",
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
},
});

27
src/api/indexExam.js Normal file
View File

@@ -0,0 +1,27 @@
import http from "./config";
// 创建考试信息接口
export const createExamination = (obj) => http.post('/examination/createExamination', obj);
// 根据Id删除考试信息
export const deleteExaminationById = (obj) => http.post('/examination/deleteExaminationById', obj);
// 根据ID获取考试信息详情
export const queryExaminationDetailById = (obj) => http.post('/examination/queryExaminationDetailById', obj, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
}
});
// 查询用户答卷信息-三方
export const queryUserAnswerDetail = (id) => http.get(`/examination/updateExamination?aloneId=${id}`);
// 查询用户答卷列表-三方
export const queryUserAnswerPageDetailList = (obj) => http.post('/examination/queryUserAnswerPageDetailList', obj);
// 获取试卷列表接口-三方
export const queryExaminationPaperList = (obj) => http.post('/examination/queryExaminationPaperList', obj);
// 考试列表查询接三方
export const queryExaminationList = (obj) => http.post('/examination/queryExaminationList', obj);
// 获取考试任务列表的接口-三方
export const queryExaminationAloneExtendList = (obj) => http.post('/examination/queryExaminationAloneExtendList', obj);
// 对接三方考试任务保存接口-三方
export const examinationTaskSave = (obj) => http.post('/examination/examinationTaskSave', obj);
//编辑考试信息
export const updateExamination = (obj) => http.post('/examination/updateExamination', obj);
//编辑外部考试信息
export const updateExternalExam = (obj) => http.post('/external/exam/updateExternalExam', obj);

View File

@@ -0,0 +1,39 @@
import http from "./config";
//创建外链接口
export const createExternalChain = (obj) => http.post('/link/createLinks', obj, {
headers: {
'token': '123'
}
})
//外链信息删除接口
export const deleteLink = (obj) => http.post('/link/deleteLink', { params: obj }, {
headers: {
'token': '123'
}
})
//获取外链详细信息接口
export const getLink = (obj) => http.get('/link/getOne', {params: obj})
// 更新外链数据
export const updateLinks = (obj) => http.post('/link/updateLinks', obj, {
headers: {
'token': '123'
}
})
//修改为必修的接口
export const updateToCompulsory = (obj) => http.post('/link/updateToCompulsory', { params: obj }, {
headers: {
'token': '123'
}
})
//修改为选修的接口
export const updateToElective = (obj) => http.post('/link/updateToElective', { params: obj }, {
headers: {
'token': '123'
}
})

7
src/api/indexFace.js Normal file
View File

@@ -0,0 +1,7 @@
import http from "./config";
//获取面授课开课详情
export const queryFaceDetailById = (offcoursePlanId) => http.post(`/admin/offcourse/detailPlan?offcoursePlanId=` + offcoursePlanId + ``)
//新建或编辑面授课开课
export const editPlan = (obj) => http.post('/admin/offcourse/editPlan', obj)

60
src/api/indexInvist.js Normal file
View File

@@ -0,0 +1,60 @@
import http from "./config";
// import qs from 'qs';
/**
* 接口传参数方式get
* axios.get('/user', {
* params: {
* id: 12345
* name: user
* }
* }).then(res => console.log(res))
*
* 接口传参三种方式post/put/patch
*
* 1.'Content-Type'= 'multipart/form-data',传参格式为 formData。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'multipart/form-data'
* var formData=new FormData();
* formData.append('user',123456);formData.append('pass',12345678);
* axios.post("/notice",formData).then()
*
* 2.'Content-Type'= 'application/x-www-form-urlencoded',传参格式为 query 形式,使用$qs.stringify。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'application/x-www-form-urlencoded'
* let data = {"code":"1234","name":"yyyy"};
* axios.post(`${this.$url}/test/testRequest`,qs.stringify({data})).then()
*
* 3.'Content-Type'= 'application/json传参格式为 raw (JSON格式)。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'application/json;charset=UTF-8'
* let data = {"code":"1234","name":"yyyy"}
* axios.post(`${this.$url}/test/testRequest`,data).then()
*
*/
// 接口-请求
//创建评估
//根据ID获取评估信息详情
export const queryAppraiseDetailById = (obj) => http.post('/assessment/queryAssessmentDetailById', obj,{
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
}
})
//获取全部评估信息接口
export const queryAssessmentDetailList = (obj) => http.post('/assessment/queryAssessmentDetailList', obj)
// 测试方法
// import * as api from '../../api/index'
// api.getLearnPath({}).then(res => {
// console.log(res)
// }).catch(err => {
// console.log(err)
// })

View File

@@ -0,0 +1,15 @@
import http from "./config";
// 获取路径图概览
export const getRouterOverview = (routerId) => http.get(`/admin/router/overview?routerId=${routerId}`)
//新建或编辑路径图
export const editRoutered = (obj) => http.post('/admin/router/edit', obj)
export const editRouterModel = (obj) => http.post('/admin/router/editModel', obj)
export const editProjectModel = (obj) => http.post('/admin/project/editModel', obj)
// 路径图模式修改接口
export const editRouteredModel = (obj) => http.post('/admin/router/editModel', obj)
// 新建或编辑路径图共享文档
export const editRouteredDoc = (obj) => http.post('/admin/router/editShareRouter', obj)

21
src/api/indexLevel.js Normal file
View File

@@ -0,0 +1,21 @@
/*
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-09 09:26:26
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-10 11:50:08
* @FilePath: /fe-manage/src/api/indexLevel.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import http from "./config";
//新建关卡
export const editChapter = (obj) => http.post('/admin/router/editChapter', obj);
//编辑关卡
export const updateChapter = (obj) => http.post('/admin/router/editChapter', obj);
//删除关卡
export const deleteChapter=(obj)=>http.delete('/admin/router/deleteChapter',{params:obj})
//删除任务
export const deleteTask = (obj) => http.delete('/admin/router/deleteTask',{params: obj});
//移动任务到关卡
export const moveTask = (obj) => http.post('/admin/router/moveTask',obj);

View File

@@ -0,0 +1,16 @@
import http from "./config";
//根据直播Id获取直播信息 query参数
export const getLiveBroadcastInfor = (obj) => http.get('/liveBroadcast', { params: obj })
//创建直播接口
export const createLiveBroadcast = (obj) => http.post('/liveBroadcast/createLiveBroadcast', obj)
//直播信息删除接口
export const deleteLiveBroadcast = (obj) => http.post('/liveBroadcast/deleteLiveBroadcast', obj)
//直播信息修改接口
export const updateLiveBroadcastMessage = (obj) => http.post('/liveBroadcast/updateLiveBroadcastMessage', obj)
//获取全部评估信息接口
export const queryAssessmentDetailList = (obj) => http.post('/assessment/queryAssessmentDetailList', obj)

4
src/api/indexMovetask.js Normal file
View File

@@ -0,0 +1,4 @@
import http from "./config";
//移动任务到阶段
export const moveTask = (obj) => http.post('/admin/project/moveTask',obj)

13
src/api/indexNotice.js Normal file
View File

@@ -0,0 +1,13 @@
import http from "./config";
//获取公告列表
// export const noticeList = (projectId) => http.post('/admin/project/noticeList', {
// params: {
// projectId: projectId,
// }
// });
export const noticeList = (obj) => http.post('/admin/project/noticeList', obj)
//发布项目公告
export const publishNotice = (obj) => http.post('/admin/project/publishNotice', obj)

18
src/api/indexOnline.js Normal file
View File

@@ -0,0 +1,18 @@
/*
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-07 17:06:45
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-21 16:39:00
* @FilePath: /fe-manage/src/api/index.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import http from "./config";
// import qs from 'qs';
// 接口-请求
//查询在线课信息列表接口
export const queryOnlinelList = (obj) => http.post('/onlineClasses/queryOnlineClassesDetailList', obj)

29
src/api/indexOvervoew.js Normal file
View File

@@ -0,0 +1,29 @@
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 userInfo = (obj) => https.post('/user/info', 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)
// 概览页面 tab头数据
export const boeuAllTotal = (obj) => http.get('/boeu/all/total', obj)
// 路径图列表
export const boeuRouterPlatePageList = (obj) => http.post('/boeu/routerPlate/pageList', obj)
// 案例列表
export const boeuCasePlatePageList = (obj) => http.post('/boeu/case/pageList', obj)

51
src/api/indexProjStu.js Normal file
View File

@@ -0,0 +1,51 @@
/*
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-18 14:09:43
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2023-02-11 18:55:44
* @FilePath: /fe-manage/src/api/indexProjStu.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import http from "./config";
//获取项目学员列表
export const getProjStu = (obj) => http.post('/admin/project/studentList', obj)
//删除学员
export const deleteStu = (obj) => http.post('/admin/project/deleteStudent', obj)
//获取小组列表
export const getGroupList = (obj) => http.post('/admin/project/groupList', obj)
//删除小组
export const deleteGroup = (obj) => http.delete('/admin/project/deleteGroup', { params: obj })
//新增或编辑小组
export const editGroup = (obj) => http.post('/admin/project/editGroup', obj)
//移除小组成员
export const removeGroupStudent = (obj) => http.post('/admin/project/removeGroupStudent', obj)
//查看学员
// export const studentProcess = (obj) => http.get('/admin/project/studentProcess', { params: obj })
export const studentProcess = (obj) => http.get('/admin/project/detail', { params: obj })
export const projectStudentProcess = (obj) => http.get('/admin/project/stuDetail', { params: obj })
export const projectStudentRank = (obj) => http.get('/admin/project/studentRank', { params: obj })
export const routerStudentRank = (obj) => http.get('/admin/router/studentRank', { params: obj })
//是否优秀学员
export const topStudent = (obj) => http.post('/admin/project/topStudent', obj)
export const updateStudent = (obj) => http.post('/admin/student/updateStudent', obj)
export const auditStudentStatus = (obj) => http.post('/admin/student/auditStudent', obj)
//项目概览
export const overview = (obj) => http.get('/admin/project/overview', { params: obj })
//设置项目积分规则
export const setScoreRule = (obj) => http.post('/admin/project/setScoreRule', obj)
//获取学员积分明细列表
export const studentScoreList = (obj) => http.post('/admin/project/studentScoreList', obj)
//添加项目学员
export const addStudent = (obj) => http.post('/admin/project/addStudent', obj)
//获取组员名单
export const groupMemberList = (obj) => http.post('/admin/studentGroup/groupMemberList', obj)

22
src/api/indexProject.js Normal file
View File

@@ -0,0 +1,22 @@
import http from "./configz";
import https from './confign'
// 请求组织接口
export const userGetUserOrg = (obj) => https.post('/user/getUserOrg', obj)
// 请求所属组织接口
export const userInfo = (obj) => https.post('/user/info', obj)
// 项目列表
export const boeuProjectPageList = (obj) => http.post('/boeu/project/pageList', obj)
// 文章列表
export const boeuArticlePageList = (obj) => http.post('/boeu/article/pageList', obj )
// 课程分页列表
export const boeuCourseListPageV2 = (obj) => http.post('/boeu/course/List/page/v2', obj )
// 考试列表分页
export const boeuExamPageListV2 = (obj) => http.post('/boeu/exam/pageList/v2', obj )
// 问答分页列表
export const boeuQuestionPageList= (obj) => http.post('/boeu/question/pageList', obj )
//柱状体左侧获取数据接口
export const dataStatisticsSelectV1= (obj) => http.post('/data/statistics/select/v1', obj )
//柱状体右侧获取数据接口
export const dataStatisticsSelectV2= (obj) => http.post('/data/statistics/select/v2', obj )
// 图表2 学习情况数据接口
export const boeuStudyDataGetStudyStaisticsList= (obj) => http.post('/boeu/studyData/getStudyStatisticsList', obj )

99
src/api/indexResearch.js Normal file
View File

@@ -0,0 +1,99 @@
import http from "./config";
/**
* 1
*/
// //评估问题创建接口
// export const createResearch = (obj) =>
// http.post("research/createResearch", obj);
// //删除评估基础信息
// export const deleteResearch = (obj) =>
// http.post("research/deleteResearch", obj);
// //评估信息发布状态的接口
// export const editReleaseStatus = (obj) =>
// http.post("research/editReleaseStatus", obj);
// //修改评估问题的接口
// export const editResearchMessage = (obj) =>
// http.post("research/editResearchMessage", obj);
// //根据ID查询评估基础信息详情
// export const queryResearchDetailById = (obj) =>
// http.post("research/queryResearchDetailById", obj);
// //获取全部评估信息接口
// export const queryResearchDetailList = (obj) =>
// http.post("research/queryResearchDetailList", obj);
//评估问题创建接口
export const createResearch = (obj) =>
http.post("/assessment/createAssessment", obj);
//删除评估基础信息
export const deleteResearch = (obj) =>
http.post("/assessment/deleteAssessment", obj, {
headers: { "Content-Type": "application/x-www-form-urlencoded" },
});
//选择题删除题干或选项接口-修改时删除
export const deleteChoiceQuestion = (obj) =>
http.post("/assessment/deleteChoiceQuestion", obj);
//问答题或评分题删除题干-修改时删除
export const deleteQuestionScAndQa = (obj) =>
http.post("/assessment/deleteQuestionScAndQa", obj);
//修改评估问题的接口
export const editResearchMessage = (obj) =>
http.post("/assessment/editAssessmentMessage", obj);
//评估信息编辑修改评估名称
export const editAssessmentName = (obj) =>
http.post("/assessment/editAssessmentName", obj);
//评估信息发布状态的接口
export const editReleaseStatus = (obj) =>
http.post("/assessment/editReleaseStatus", obj);
//根据ID查询评估基础信息详情
export const queryResearchDetailById = (obj) =>
http.post("/assessment/queryAssessmentDetailById", obj, {
headers: { "Content-Type": "application/x-www-form-urlencoded" },
});
//获取全部评估信息接口
export const queryResearchDetailList = (obj) =>
http.post("/assessment/queryAssessmentDetailList", obj);
//评估管理-管理-获取评估部分信息
export const queryAssessmentDetailList = (obj) =>
http.post("/assessment/queryAssessmentPartDetail", obj, {
headers: { "Content-Type": "application/x-www-form-urlencoded" },
});
/**
* 2
*/
//创建评估信息
// export const createAppraiseMessage = (obj) =>
// http.post("/survey/createAppraiseMessage", { params: obj });
// //删除评估信息
// export const deleteAppraise = (obj) =>
// http.post("/survey/deleteAppraise", { params: obj });
// //查询评估信息
// export const queryAppraiseDetailById = (obj) =>
// http.post("/survey/queryAppraiseDetailById", { params: obj });
// //修改评估信息
// export const updateAppraiseMessage = (obj) =>
// http.post("/survey/updateAppraiseMessage", { params: obj });
// //获取任务列表
// export const getTask = (obj) =>
// http.get(
// "/admin/project/detail",
// { params: obj },
// {
// headers: {
// token: "123",
// },
// }
// );
// createWorkTask({
// createTime: "",
// })
// .then((res) => {
// message.success(`添加成功${res}`);
// ctx.emit("update:addhomeworkVisible", false);
// })
// .catch((err) => {
// message.error(`添加失败${err}`);
// });

14
src/api/indexStage.js Normal file
View File

@@ -0,0 +1,14 @@
/*
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-09 09:26:26
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-17 21:20:05
* @FilePath: /fe-manage/src/api/indexStage.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import http from "./config";
//添加阶段
export const editStage = (obj) => http.post('/admin/project/editStage', obj);
// 删除阶段
export const deleteStage = (obj) => http.delete('/admin/project/deleteStage',{params:obj});

13
src/api/indexStu.js Normal file
View File

@@ -0,0 +1,13 @@
import http from "./config";
/**
* 1
*/
//获取受众信息
// export const getAudienceInfoApi = (obj) => http.post("/admin/orgStruct/getAudienceInfo", obj);
//获取员工信息
export const getMemberInfoApi = (obj) =>
http.post("/admin/orgStruct/getMemberInfo", obj);
//获取所有组织
export const getOrgInfoApi = (obj) =>
http.post("/admin/orgStruct/getOrgInfo", obj);

3
src/api/indexStudy.js Normal file
View File

@@ -0,0 +1,3 @@
import http from "./config";
//路径图删除任务
export const deleteStudyTask = (obj) => http.delete('/admin/router/deleteTask', { params: obj })

31
src/api/indexTask.js Normal file
View File

@@ -0,0 +1,31 @@
import http from "./config";
// 获取路径图详情-包含关卡及任务列表
export const GetRouterDetail = (routerId="") => http.get(`/admin/router/detail?routerId=${routerId}`)
export const GetRouterDraftDetail = (routerId="") => http.get(`/admin/router/detailDraft?routerId=${routerId}`)
//
export const changeChapterSort = (list) => http.post("/admin/router/changeChapterSort",list)
export const changeTasklistSort = (list) => http.post("/admin/router/changeTasklistSort",list)
// 新建或编辑阶段任务
export const ProjectEditTask = (obj) => http.post('/admin/project/editTask',obj)
// 新建或编辑关卡任务
export const RouterEditTask = (obj) => http.post('/admin/router/editTask',obj)
// 删除关卡任务
export const RouterDeleteTask = (obj) => http.post('/admin/router/deleteTask',obj);
// 删除项目任务
export const ProjectDeleteTask = (obj) => http.delete('/admin/project/deleteTask',obj);
// 发布路径下的全部关卡和任务
export const releaseRouter = (obj)=> http.get(`/admin/router/release?routerId=${obj}`);
export const cancelRouterTask = (routerId)=>http.get(`/admin/router/cancelTask?routerId=${routerId}`);
// 判断当前在线课是否已经添加到该路径图下
export const IsExistence = (obj) => http.post('/admin/router/queryTaskDoesItExist',obj);
// 判断当前在线课是否已经添加到该项目下
export const IsExistenceProject = (obj) => http.post('/admin/project/queryTaskDoesItExistForProject',obj);
// 判断当前在线课是否已经添加到该模板库下
export const IsExistenceProjectTemplate = (obj) => http.post('/admin/project/template/queryTaskDoesItExistForTemplate',obj);
// 新建外部考试
export const CreateExternalExam = (obj) => http.post('/external/exam/createExternalExam',obj);

View File

@@ -0,0 +1,51 @@
import http from "./config";
// 获取考试管理的信息
export const ExamManagementMessage = (obj) => http.post('/admin/exam/manage/queryExamManagementMessage', obj)
// 获取评估管理的信息
export const AssessmentManagementMessage = (obj) => http.get(`/admin/student/getTaskStudent`, { params: obj })
// 考试导出学员信息
export const ExportExam = (obj) => http.post('/admin/exam/manage/exportExam', obj)
// 获取在线管理的信息
export const QueryOnlineManagementDetail = (obj) => http.post('/admin/online/manage/queryOnlineManagementDetail', obj)
// 获取 课程库-面授管理-管理-学习记录 信息
export const GetCourseStudent = (obj) => http.get('/admin/student/getCourseStudent', {params: obj})
// 查询评估管理-管理学员的学习信息
export const QueryAssessmentManageMessage = (obj) => http.post('/admin/assessment/manage/queryAssessmentManageMessage', obj)
// 评估管理评估详情查看
export const QueryAssessmentDetail = (obj) => http.post('/admin/assessment/manage/queryAssessmentDetail', obj)
// 下载中心
export const DownLoadList = (obj) => http.get('/admin/download/page', {params: obj})
// 下载中心容量查询
export const DownLoadTotalSize = (obj) => http.get('/admin/download/totalSize', {params: obj})
// 下载中心删除
export const RemoveDownLoadHomeWork = (obj) => http.get('/admin/download/del', {params: obj})
// 获取投票管理的信息
export const QueryVoteManagementDetail = (obj) => http.post('/admin/vote/manage/queryVoteManagementDetail', obj)
// 根据投票任务Id获取投票任务信息
export const QueryVoteTaskDetailById = (obj) => http.post('/voteSubmit/queryVoteTaskDetailById', obj)
// 直播考勤请假
export const AttendanceLeave = (obj) => http.post('/stu/task/attendance/leave', obj)
// 直播考勤签到
export const AttendanceSign = (obj) => http.post('/stu/task/attendance/sign', obj)
// 查询项目管理的信息
export const QueryProjectManageDetail = (obj) => http.post('/project/management/queryProjectManageDetail', obj)
// 获取外部考试信息的接口
export const QueryExternalExamManageDetail = (obj) => http.post('/admin/external/exam/manage/queryExternalExamManageDetail', obj)

37
src/api/indexTaskadd.js Normal file
View File

@@ -0,0 +1,37 @@
import http from "./config";
//获取任务列表
export const getTask = (obj) => http.get('/admin/project/detail', { params: obj })
export const getDraftTask = (obj) => http.get('/admin/project/detailDraft', { params: obj })
//项目里的新建或编辑阶段任务
export const addTask = (obj) => http.post('/admin/project/editTask', obj)
//模板库项目里的新建或编辑阶段任务
export const addTaskTemplate = (obj) => http.post('/admin/project/template/editTask', obj)
//项目里的删除任务
export const deleteTask = (obj) => http.delete('/admin/project/deleteTask', { params: obj })
//新建或编辑项目
export const editProj = (obj) => http.post('/admin/project/edit', obj)
export const editProjs = (obj) => http.post('/admin/project/editStatus', obj)
//编辑项目共享文档
export const editProjDoc = (obj) => http.post('/admin/project/editShareAttach', obj)
//路径图里的新建或编辑关卡任务
export const editTask = (obj) => http.post('/admin/router/editTask', obj)
//项目里获取项目积分规则
export const scoreRule = (obj) => http.get('/points/project/rule', { params: obj })
//项目里设置项目积分规则
export const setScoreRule = (obj) => http.post('/points/project/rule/edit', obj)
//面授课开课列表
export const planList = (obj) => http.post('/admin/offcourse/planList', obj)
//获取面授课列表
export const list = (obj) => http.post('/admin/offcourse/list', obj)
export const addTempTask = (obj) => http.post('/admin/project/template/editTask', obj)

25
src/api/indexTemplate.js Normal file
View File

@@ -0,0 +1,25 @@
// 模板相关接口
import http from "./config";
//编辑项目模板
export const templateEdit = (obj) => http.post('/admin/project/template/edit', obj);
// 模板详情
export const templateDetail = (id) => http.get(`/admin/project/template/detail?projectTemplateId=${id}`);
export const templateEditDetail = (id) => http.get(`/admin/project/template/detailEdit?projectTemplateId=${id}`);
// 删除阶段
export const deleteStage = (id) => http.delete(`/admin/project/template/deleteStage?stageId=${id}`);
//删除任务
export const deleteTask = (id) => http.delete(`/admin/project/template/deleteTask?projectTaskIds=${id}`);
// 移动任务到阶段
export const moveTask = (obj) => http.post('/admin/project/template/moveTask', obj);
// 新建或编辑阶段
export const editStage = (obj) => http.post('/admin/project/template/editStage', obj);
// 新建或编辑阶段任务
export const editTask = (obj) => http.post('/admin/project/template/editTask', obj);
// 操作模板(撤回,发布,删除)
export const handleTemplates = (obj) => http.post('/admin/project/template/handle', obj);
// 模板库列表
export const templateList = (obj) => http.post(`/admin/project/template/list`, obj);
// 发布项目公告
export const publishNotice = (obj) => http.post(`/admin/project/template/publishNotice`, obj);

19
src/api/indexTest.js Normal file
View File

@@ -0,0 +1,19 @@
import http from "./config";
//创建考试信息接口
export const createExamination = (obj) => http.post('/examination/createExamination',obj);
//根据Id删除考试信息
export const deleteExaminationById = (obj) => http.post('/examination/deleteExaminationById',{params:obj});
//根据ID获取考试信息详情
export const queryExaminationDetailById = (obj) => http.post('/examination/queryExaminationDetailById',{params:obj});
//获取考试试卷
// export const queryExaminationPaper = (obj) => http.post('/examination/queryExaminationPaper',obj);
export const queryExaminationPaper = (obj) => http.post('/examination/queryExaminationPaperList',obj);
//修改考试信息接口
export const updateExamination = (obj) => http.post('/examination/updateExamination',obj,{
header:{
'token': '123',
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
}
});

94
src/api/indexVote.js Normal file
View File

@@ -0,0 +1,94 @@
import http from "./config";
import qs from "qs";
/**
* 接口传参数方式get
* axios.get('/user', {
* params: {
* id: 12345
* name: user
* }
* }).then(res => console.log(res))
*
* 接口传参三种方式post/put/patch
*
* 1.'Content-Type'= 'multipart/form-data',传参格式为 formData。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'multipart/form-data'
* var formData=new FormData();
* formData.append('user',123456);formData.append('pass',12345678);
* axios.post("/notice",formData).then()
*
* 2.'Content-Type'= 'application/x-www-form-urlencoded',传参格式为 query 形式,使用$qs.stringify。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'application/x-www-form-urlencoded'
* let data = {"code":"1234","name":"yyyy"};
* axios.post(`${this.$url}/test/testRequest`,qs.stringify({data})).then()
*
* 3.'Content-Type'= 'application/json传参格式为 raw (JSON格式)。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'application/json;charset=UTF-8'
* let data = {"code":"1234","name":"yyyy"}
* axios.post(`${this.$url}/test/testRequest`,data).then()
*
*/
// , {
// header: {
// 'token': '123',
// }
// }
// 接口-请求
//基础票数上传接口
export const baseVoteupload = (obj) =>
http.post("/vote/baseVoteupload", obj, {
headers: {
token: "123",
"Content-Type": "multipart/form-data",
},
});
//创建题干信息接口
export const createStemMessage = (obj) =>
http.post("/vote/createOrUpdateVote", obj);
//投票信息创建接口
export const createVote = (obj) => http.post("/vote/createOrUpdateVote", obj);
//删除投票信息
export const deleteVoteMessage = (obj) =>
http.post("/vote/deleteVoteMessage", { params: obj });
//删除题干信息接口
export const deleteVoteStem = (voteStemId) =>
http.post(`/vote/deleteVoteStem?voteStemId=${voteStemId}`);
//删除题选项息接口
export const deleteVoteStemOption = (optionId) =>
http.post(`/vote/deleteVoteStemOption?optionId=${optionId}`);
//修改投票信息接口
export const editVote = (obj) => http.post("/vote/editVote", obj);
//根据题干ID获取题干信息
export const queryStemByStemId = (voteId) =>
http.get(`/vote/queryVoteById?voteId=${voteId}`);
//修改题干信息接口
export const updateStemMessage = (obj) =>
http.post("/vote/updateStemMessage", obj);
//上传组件
export const fileUp = (obj) =>
http.post("/file/upload", obj, qs.stringify({ obj }));
//根据题干ID获取投票任务
export const queryVoteDetailById = (voteID) =>
http.get(`/vote/queryVoteById?voteId=${voteID}`);
// 测试方法
// import * as api from '../../api/index'
// api.getLearnPath({}).then(res => {
// console.log(res)
// }).catch(err => {
// console.log(err)
// })

6
src/api/indexWay.js Normal file
View File

@@ -0,0 +1,6 @@
import http from "./configz";
import https from './confign'
// 请求组织接口
export const userGetUserOrg = (obj) => https.post('/user/getUserOrg', obj)
// 路径图列表
export const boeuRouterPlatePageList = (obj) => http.post('/boeu/routerPlate/pageList', obj)

25
src/api/indexWork.js Normal file
View File

@@ -0,0 +1,25 @@
/*
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-17 21:25:14
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2023-01-30 11:32:33
* @FilePath: /fe-manage/src/api/indexWork.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import http from "./config";
// 创建作业信息接口
export const createWorkTask = (obj) =>
http.post("/work/createWorkTask", obj);
// 删除作业信息接口
export const deleteWorkTask = (obj) => http.post("/work/deleteWorkTask", obj);
// 根据ID获取作业信息详情
export const queryWorkDetailById = (obj) => http.post('/work/queryWorkDetailById', obj, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
}
});
// 修改作业信息接口
export const updateWorkTaskUsing = (obj) =>
http.post("/work/updateWorkTask", obj);
//查看作业
export const getWorkSubmitInfo = (workId, stuId) => http.get(`/admin/student/getWorkSubmitInfo?id=${workId}&stuId=${stuId}`)

304
src/api/method.js Normal file
View File

@@ -0,0 +1,304 @@
import * as api from './index1'
function formatNumber(n) {
n = n.toString();
return n[1] ? n : "0" + n;
}
function toDate(number, format) {
var formateArr = ["Y", "M", "D", "h", "m", "s"];
var returnArr = [];
if (number === 0) {
return 0;
} else {
var date = new Date(number * 1000);
}
returnArr.push(date.getFullYear());
returnArr.push(formatNumber(date.getMonth() + 1));
returnArr.push(formatNumber(date.getDate()));
returnArr.push(formatNumber(date.getHours()));
returnArr.push(formatNumber(date.getMinutes()));
returnArr.push(formatNumber(date.getSeconds()));
for (var i in returnArr) {
format = format.replace(formateArr[i], returnArr[i]);
}
return format;
}
function getWeek(date) {
//date:'Y-M-D'
let time = new Date(date).getDay()
let week;
if (time == 0) week = "星期日"
if (time == 1) week = "星期一"
if (time == 2) week = "星期二"
if (time == 3) week = "星期三"
if (time == 4) week = "星期四"
if (time == 5) week = "星期五"
if (time == 6) week = "星期六"
return week;
}
/************************************将数字搞成带逗号的那种*********************************************/
function autoComma(number) {
// let number = parseInt(numb)
if (number) {
let newNum = ""; //中间变量
let arr = [];
let arr1 = [];
let num = ""; //最终结果
let isDecimal = false; //是不是小数
let decimal = 0; //小数点所在位置
let decimalNum = ""; //小数点和以后的数据
let negative = false; //是不是负数
// 判断百万级别或者上亿级别
let thousand = false;
let Billion = false;
if (
(number >= 10000 || number <= -10000) &&
number < 100000000 &&
number > -100000000
) {
thousand = true;
number = number / 10000;
}
if (number >= 100000000 || number <= -100000000) {
thousand = false;
Billion = true;
number = number / 100000000;
}
if (number < 0) {
number = Math.abs(number);
negative = true;
}
let numStr = JSON.stringify(number);
// 如果传入的是小数,逗号的添加位置和整数是有区别滴
for (let i = 0; i < numStr.length; i++) {
if (numStr[i] === ".") {
isDecimal = true;
decimal = i;
decimalNum = numStr.slice(decimal, numStr.length);
// 保留两位小数
if (decimalNum.length > 2) {
decimalNum = decimalNum.slice(0, 3);
}
numStr = numStr.slice(0, decimal);
}
}
for (let i = 0; i < numStr.length; i++) {
arr.push(numStr[numStr.length - i - 1]);
}
for (let i = 0; i < arr.length; i++) {
if ((i + 1) % 3 === 0 && i + 1 !== 0 && i + 1 < arr.length) {
newNum += arr[i];
newNum = newNum + ",";
} else {
newNum += arr[i];
}
}
for (let i = 0; i < newNum.length; i++) {
arr1.push(newNum[newNum.length - i - 1]);
}
for (let i = 0; i < arr1.length; i++) {
num += arr1[i];
}
if (isDecimal) {
if (negative) {
// num = '-' + num + decimalNum
// return num
if (thousand) {
num = "-" + num + decimalNum + "万";
return num;
} else if (Billion) {
num = "-" + num + decimalNum + "亿";
return num;
} else {
num = "-" + num + decimalNum;
return num;
}
} else {
// num = num + decimalNum
// return num
if (thousand) {
num = num + decimalNum + "万";
return num;
} else if (Billion) {
num = num + decimalNum + "亿";
return num;
} else {
num = num + decimalNum;
return num;
}
}
} else {
if (negative) {
// num = '-' + num
// return num
if (thousand) {
num = "-" + num + "万";
return num;
} else if (Billion) {
num = "-" + num + "亿";
return num;
} else {
num = "-" + num;
return num;
}
} else {
if (thousand) {
num = num + "万";
return num;
} else if (Billion) {
num = num + "亿";
return num;
} else {
return num;
}
}
}
} else {
return 0;
}
}
//节流
function throttle(fn, delay = 200) {
var timer = null;
return function () {
console.log('throttle')
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(context, args);
}, delay);
};
}
//滚动加载信息
const scrollLoad = (e) => {
// console.log("滚动", e, b);
const { target } = e;
const scrllHeight = target.scrollHeight - target.scrollTop;
const clientHeight = target.clientHeight;
// console.log("scrllHeight", scrllHeight, clientHeight);
if (scrllHeight === 0 && clientHeight === 0) {
return 1
} else if (scrllHeight - clientHeight == 0) {
return 2
}
};
//添加归属权
function changeOwnership(classify, selectProjectId, selectPeopleArr) {
let obj = {
keyWord: "",
tag: 2, //归属权
opt: 3, //修改
type:
classify === "project"
? 2
: classify === "learnPath"
? 1
: classify === "course"
? 3
: null,
refId: selectProjectId, //项目id
// refId: 64,
pageNo: 1,
pageSize: 10,
// studentList: state.selectPeopleArr,
deptList: [],
groupList: [],
studentList: selectPeopleArr,
};
console.log("修改归属权obj", obj);
api
.optionAuthPerm(obj)
.then((res) => {
console.log("修改授权成功", res);
// closeDrawer();
})
.catch((err) => {
console.log("修改授权失败", err);
});
}
//name 字段名 value 字段值 perpetual 有效期
const setCookie = (name, value, perpetual) => {
console.log('存储token到cookie')
let exdate = new Date()
exdate.setDate(perpetual * 24 * 60 * 60 * 1000) //exdate.setDate(exdate.getDate() + 365)
document.cookie = `${name}=${value};expires=${exdate.toGMTString()};path=/`
//永久有效
//document.cookie = name + '=' + value + ';expires=' + 'Fri, 31 Dec 9999 23:59:59 GMT'
}
//获取cookie数据
//先写一个方法
export function getCookieForName(name) {
const cookie = document.cookie?.split(";").find(e => e.includes(name))?.replace(`${name}=`, '') || '';
return decodeURIComponent(cookie);
}
function getCookie(name) {
//1.获取cookie字符串
var cookies = document.cookie;
//通过;来分割字符串
var cookie = cookies.split("; ");
// console.log('cookie', cookie)
//遍历,使键值对匹配上
for (var i = 0; i < cookie.length; i++) {
var arr = cookie[i].split("token=");
// console.log('arr', arr)
console.log('name', name)
// if (arr[0] == name) {
// console.log('arr[1]', arr[1])
// return arr[1];
// }
// console.log('arr[1]', arr[1])
return arr[1]
}
return "";
}
//新建延迟
const commonData = {
timeout: 50,
}
// const organizationalTree = [// ]
//组织树
const organizationalTree = []
//嵌套页面
const iframeUrl = window.location.protocol + process.env.VUE_APP_IFRAME_URL
//学员端路由
const studentUrl = window.location.protocol + process.env.VUE_APP_IFRAME_STUDENT_URL
const teacherUrl = window.location.protocol + process.env.VUE_APP_IFRAME_TEACHER_URL
//二维码
const codeUrl = window.location.protocol + "//u-pre.boe.com"
export {
throttle,
toDate,
getWeek,
autoComma,
formatNumber,
setCookie,
getCookie,
scrollLoad,
changeOwnership,
commonData,
organizationalTree,
iframeUrl,
studentUrl,
teacherUrl,
codeUrl,
}

365
src/api/request.js Normal file
View File

@@ -0,0 +1,365 @@
import {isRef, reactive, ref, toRefs, unref, watch, watchEffect} from "vue";
import {getCookieForName, throttle} from "@/api/method";
import JSONBigInt from "json-bigint";
import router from "@/router";
import {message} from "ant-design-vue";
const JSONBigIntStr = JSONBigInt({ storeAsString: true });
export function useBoeApiAuditPage(_url, params = {}) {
return useBoeApiPage(_url, params, {
init: true,
result: (res) => res.result.audienceList.map((e) => ({ ...e, id: e.id + "" })),
totalPage: (res) => res.result.totalPage,
total: (res) => res.result.totalElement,
});
}
export function useBoeApiUserInfoPage(_url, params = {}) {
return useBoeApiPage(_url, params, {
init: false,
result: (res) => res.result.userInfoList,
totalPage: (res) => res.result.totalPage,
total: (res) => res.result.totalElement,
});
}
export function useBoeApiPage(_url, params = {}, config = {
init: true,
result: res => res.result,
totalPage: res => res.result.totalPage,
total: res => res.result.totalElement
}) {
const state = reactive({
data: [],
loading: false,
page: 1,
pageSize: 10,
totalPage: 0,
total: 0
});
if (isRef(params)) {
watch(params.value, () => {
fetch();
});
}
if (isRef(_url)) {
watchEffect(fetch);
} else {
fetch();
}
function fetch() {
state.loading = true;
return boeRequest(unref(_url), unref(params)).then(r => {
state.data = config.result(r);
state.totalPage = config.totalPage(r);
state.total = config.total(r);
state.loading = false;
state.page = params.page;
});
}
function reset() {
state.data = [];
state.loading = false;
state.page = 1;
state.totalPage = 0;
state.total = 0;
}
config.init && fetch();
return {
...toRefs(state),
fetch,
reset
};
}
export function useBoeApi(_url, params = {}, config = {
init: true,
result: res => res.result,
}) {
const state = reactive({
data: [],
loading: false,
});
watch(() => params, () => {
fetch();
});
function fetch() {
state.loading = true;
return boeRequest(_url, params).then(r => {
state.data = config.result(r);
state.loading = false;
});
}
config.init && fetch();
return {
...toRefs(state),
fetch,
};
}
export function useBoeUserListPage(_url, params = {}, init = true) {
const state = reactive({
data: [],
loading: false,
total: 0,
totalPage: 0,
page: 1,
...params
});
watch(() => params.keyword, throttle(fetch, 600));
watch(() => params.page, fetch);
function fetch() {
state.loading = true;
if (!params.keyword) {
state.loading = false;
return;
}
return boeRequest(_url, params).then(r => {
state.data = params.page === 1 ? r.result.userInfoList : [...state.data, ...r.result.userInfoList];
state.totalPage = r.result.totalPage;
state.total = r.result.totalElement;
state.loading = false;
});
}
init && fetch();
return {
...toRefs(state),
fetch,
};
}
export function useRowsPageNoInit(_url, params) {
const state = reactive({
data: [],
total: 1,
current: 1,
pages: 1,
loading: false
});
function reset() {
state.data = [];
state.loading = false;
}
function fetch() {
state.loading = true;
return request(unref(_url), unref(params)).then(r => {
state.data = r.data.rows || r.data.records;
state.current = r.data.current || r.data.current;
state.pages = r.data.pages;
state.total = r.data.total;
state.loading = false;
});
}
return {
...toRefs(state),
fetch,
reset,
};
}
export function useRowsPage(_url, params, init = true) {
const state = reactive({
data: [],
total: 1,
current: 1,
pages: 1,
loading: false
});
if (isRef(params)) {
watch(params.value, () => {
fetch();
});
}
if (isRef(_url)) {
watchEffect(fetch);
} else {
init && fetch();
}
function reset() {
state.data = [];
state.loading = false;
}
function fetch() {
state.loading = true;
return request(unref(_url), unref(params)).then(r => {
state.data = r.data.rows;
state.current = r.data.current;
state.pages = r.data.pages;
state.total = r.data.total;
state.loading = false;
});
}
return {
...toRefs(state),
fetch,
reset,
};
}
export function usePage(_url, params, init = true,listing = false) {
const state = reactive({
data: [],
total: 1,
current: 1,
pages: 1,
loading: false
});
if (isRef(params) && listing) {
watch(params.value, () => {
fetch();
});
}
if (isRef(_url)) {
watchEffect(fetch);
} else {
init && fetch();
}
function reset() {
state.data = [];
state.loading = false;
}
function fetch() {
state.loading = true;
return request(unref(_url), unref(params)).then(r => {
state.data = r.data.records;
state.current = r.data.current;
state.pages = r.data.pages;
state.total = r.data.total;
state.loading = false;
});
}
return {
...toRefs(state),
fetch,
reset,
};
}
export function useRequest(_url, params, init = true) {
const data = ref({});
const loading = ref(false);
if (isRef(params)) {
watch(params.value, () => {
fetchData();
});
}
function fetchData() {
loading.value = true;
request(_url, unref(params)).then(r => {
data.value = r.data;
loading.value = false;
});
}
init && fetchData();
return {
data,
loading,
fetchData,
};
}
export async function boeRequest(_url, params = {}) {
const s = _url.split(" ");
let url = s[0];
const method = s[1]?.toLowerCase() || "get";
if (method === "get") {
url.includes("?") ? (url.endsWith("&") || (url += "&")) : (url += "?");
url += Object.keys(params).map(key => key + "=" + params[key]).join("&");
}
const body = method !== "get" ? s[2] === "formData" ? formatFormData(params) : params : {};
url = process.env.NODE_ENV === "development" ? url : window.location.protocol + process.env.VUE_APP_BOE_API_URL + url;
return fetch(url, {
method,
headers: {
token: getCookieForName("token"),
...method !== "get" && s[2] !== "formData" ? { "Content-Type": "application/json" } : {}
},
...method !== "get" ? { body: s[2] === "formData" ? body : JSON.stringify(body) } : {}
}).then(res => {
return res.text();
}).then(res => {
return JSONBigIntStr.parse(res);
});
}
function formatFormData(data) {
const formData = new FormData();
Object.keys(data).forEach(k => formData.append(k, data[k]));
return formData;
}
export async function request(_url, params) {
const s = _url.split(" ");
let url = s[0];
const method = s[1]?.toLowerCase() || "get";
if (method === "get") {
let paramsArray = [];
if (params) {
Object.keys(params).forEach(key => paramsArray.push(key + "=" + params[key]));
if (url.search(/\?/) === -1) {
url += "?" + paramsArray.join("&");
} else {
url += "&" + paramsArray.join("&");
}
}
}
const body = method !== "get" ? params || {} : {};
return fetch(process.env.VUE_APP_BASE_API + url, {
method,
headers: {
token: getCookieForName("token"),
...method !== "get" ? { "Content-Type": "application/json" } : {}
},
...method !== "get" ? { body: JSON.stringify(body) } : {}
}).then(res => {
return res.text();
}).then(res => {
return JSONBigIntStr.parse(res);
}).then(res => {
if (res.code === 0 || res.code === 200) {
return res;
}
if (res.code === 1000) {
(process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'alpine') ?
router.push({path: 'login', query: { returnUrl: router.currentRoute.value.fullPath }}) :
(window.location.href = process.env.VUE_APP_LOGIN_URL + encodeURIComponent(window.location.protocol + process.env.VUE_APP_BOE_API_URL + process.env.VUE_APP_BASE + router.currentRoute.value.fullPath))
localStorage.removeItem('refreshPage')
return Promise.reject(res);
}
res.show ? message.error(res.msg):message.error('系统接口数据异常,请联系管理员');
return Promise.reject(res);
});
}

51
src/api/storage.js Normal file
View File

@@ -0,0 +1,51 @@
/**
* 封装操作localstorage本地存储的方法
*/
export const storage = {
//存储
set(key, value) {
localStorage.setItem(key, JSON.stringify(value))
},
//取出数据
get(key) {
const value = localStorage.getItem(key)
if (value && value != "undefined" && value != "null") {
return JSON.parse(value)
}
},
// 删除数据
remove(key) {
localStorage.removeItem(key)
},
// 获取所有数据
getAllStorage() {
return JSON.parse(window.localStorage.getItem() || "{}")
},
// 删除所有数据
removeAllLocalStorage() {
window.localStorage.clear()
return { message: "ok" }
}
};
/**
* 封装操作sessionStorage本地存储的方法
*/
export const sessionStorage = {
//存储
set(key, value) {
window.sessionStorage.setItem(key, JSON.stringify(value))
},
//取出数据
get(key) {
const value = window.sessionStorage.getItem(key)
if (value && value != "undefined" && value != "null") {
return JSON.parse(value)
}
return null
},
// 删除数据
remove(key) {
window.sessionStorage.removeItem(key)
}
}

4
src/api/student.js Normal file
View File

@@ -0,0 +1,4 @@
import http from "./config";
export const studentDelAll = (params) => http.get('/admin/student/del', {params})

BIN
src/assets/all.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
src/assets/del.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 787 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 855 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Some files were not shown because too many files have changed in this diff Show More