mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-10 11:26:45 +08:00
feat:合并
This commit is contained in:
4
.env
4
.env
@@ -23,6 +23,8 @@ VUE_APP_COURSE_STUDY=//u-pre.boe.com/pc/course/studyindex?id=
|
||||
|
||||
# 导入学员模板
|
||||
VUE_APP_UP_LOAD_STUDENT_TEMPLATE=导入学员模版-1673963663229.xlsx
|
||||
# 外部考试导入成绩模板
|
||||
VUE_APP_UP_LOAD_STUDENT_SCORE_TEMPLATE=导入成绩模版-1673963663229.xlsx
|
||||
|
||||
#在线
|
||||
VITE_BOE_ONLINE_CLASS_URL=//u-pre.boe.com/pc/course/studyindex?id=
|
||||
@@ -31,4 +33,4 @@ VITE_BOE_CASS_DETAIL_URL=//u-pre.boe.com/pc/case/detail?id=
|
||||
#考试
|
||||
VITE_BOE_EXAM_DETAIL_URL=//u-pre.boe.com/pc/exam/test?id=
|
||||
#h5的基本url
|
||||
VUE_APP_H5=//u-pre.boe.com/mobile/student-h5
|
||||
VUE_APP_H5=//u-pre.boe.com/mobile/student-h5
|
||||
|
||||
2
.env.boe
2
.env.boe
@@ -8,6 +8,8 @@ VUE_APP_BOE_API_URL=//u-pre.boe.com
|
||||
|
||||
# 导入学员模板
|
||||
VUE_APP_UP_LOAD_STUDENT_TEMPLATE=导入学员模版-1673963663229.xlsx
|
||||
# 外部考试导入成绩模板
|
||||
VUE_APP_UP_LOAD_STUDENT_SCORE_TEMPLATE=导入成绩模版-1673963663229.xlsx
|
||||
#在线
|
||||
VITE_BOE_ONLINE_CLASS_URL=//u-pre.boe.com/pc/course/studyindex?id=
|
||||
VITE_BOE_CASS_DETAIL_URL=//u-pre.boe.com/pc/case/detail?id=
|
||||
|
||||
@@ -14,6 +14,9 @@ VUE_APP_IFRAME_STUDENT_URL=//u.boe.com/pc/loading
|
||||
VUE_APP_COURSE_STUDY=//u.boe.com/pc/course/studyindex?id=
|
||||
|
||||
VUE_APP_UP_LOAD_STUDENT_TEMPLATE=导入学员模版-1673963663229.xlsx
|
||||
# 外部考试导入成绩模板
|
||||
VUE_APP_UP_LOAD_STUDENT_SCORE_TEMPLATE=导入成绩模版-1673963663229.xlsx
|
||||
|
||||
VITE_BOE_ONLINE_CLASS_URL=//u.boe.com/pc/course/studyindex?id=
|
||||
VITE_BOE_CASS_DETAIL_URL=//u.boe.com/pc/case/detail?id=
|
||||
VITE_BOE_EXAM_DETAIL_URL=//u.boe.com/pc/exam/test?id=
|
||||
@@ -14,6 +14,8 @@ VUE_APP_IFRAME_STUDENT_URL=//u.boe.com/pc-release/loading
|
||||
VUE_APP_COURSE_STUDY=//u.boe.com/pc-release/course/studyindex?id=
|
||||
|
||||
VUE_APP_UP_LOAD_STUDENT_TEMPLATE=导入学员模版-1673963663229.xlsx
|
||||
# 外部考试导入成绩模板
|
||||
VUE_APP_UP_LOAD_STUDENT_SCORE_TEMPLATE=导入成绩模版-1673963663229.xlsx
|
||||
VITE_BOE_ONLINE_CLASS_URL=//u.boe.com/pc-release/course/studyindex?id=
|
||||
VITE_BOE_CASS_DETAIL_URL=//u.boe.com/pc-release/case/detail?id=
|
||||
VITE_BOE_EXAM_DETAIL_URL=//u.boe.com/pc-release/exam/test?id=
|
||||
@@ -28,6 +28,8 @@ 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);
|
||||
@@ -60,6 +62,7 @@ function init() {
|
||||
initDict("projectPic");
|
||||
initDict("sysType");
|
||||
getMemberInfo();
|
||||
getUserPermission();
|
||||
}
|
||||
|
||||
function unloadHandler() {
|
||||
@@ -102,6 +105,12 @@ async function initDict(key, localStory = false) {
|
||||
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({setCode: param,}).then((res) => res.data.data);
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
@@ -2,4 +2,5 @@
|
||||
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/list post'
|
||||
export const USER_PERMISSION = '/userbasic/permission/listByUser post'
|
||||
@@ -2,7 +2,7 @@
|
||||
* @Author: lixg lixg@dongwu-inc.com
|
||||
* @Date: 2022-11-04 22:45:31
|
||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||
* @LastEditTime: 2023-02-09 09:28:39
|
||||
* @LastEditTime: 2023-02-09 09:36:11
|
||||
* @FilePath: /fe-manage/src/api/index1.js
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
@@ -89,6 +89,8 @@ 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 billboard = (obj) => http.post("/admin/project/billboard", obj);
|
||||
//项目基础信息-----------------------------------
|
||||
@@ -211,4 +213,8 @@ export const stuCertList = (obj) => http.get('/admin/certificate/stuCertList', {
|
||||
//更新学员证书
|
||||
export const cancelOrAuth = (obj) => http.post('/admin/certificate/cancelOrAuth', obj)
|
||||
//获取项目总积分
|
||||
export const allPoints = (obj) => http.get('/points/project/allPoints', { params: obj })
|
||||
export const allPoints = (obj) => http.get('/points/project/allPoints', { params: obj })
|
||||
export const updateStuCert = (obj) => http.post('/admin/certificate/updateStuCert', obj)
|
||||
|
||||
// 外部考试导入成绩
|
||||
export const ImportExternalExamScore = (obj) => http.post('/admin/external/exam/manage/importExternalExamScore', obj, { headers: { "Content-Type": "multipart/form-data" } })
|
||||
|
||||
@@ -45,4 +45,7 @@ export const AttendanceLeave = (obj) => http.post('/stu/task/attendance/leave',
|
||||
export const AttendanceSign = (obj) => http.post('/stu/task/attendance/sign', obj)
|
||||
|
||||
// 查询项目管理的信息
|
||||
export const QueryProjectManageDetail = (obj) => http.post('/project/management/queryProjectManageDetail', obj)
|
||||
export const QueryProjectManageDetail = (obj) => http.post('/project/management/queryProjectManageDetail', obj)
|
||||
|
||||
// 获取外部考试信息的接口
|
||||
export const QueryExternalExamManageDetail = (obj) => http.post('/admin/external/exam/manage/queryExternalExamManageDetail', obj)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
<div style="height: 176px; margin-bottom: 20px">
|
||||
<a-upload-dragger
|
||||
v-model:fileList="fileList"
|
||||
:action="importHomeWork"
|
||||
:action="importScore"
|
||||
name="uploadFile"
|
||||
:multiple="true"
|
||||
@change="handleChange"
|
||||
@@ -38,6 +38,8 @@
|
||||
:data="{
|
||||
type: type,
|
||||
targetId: Number(id),
|
||||
chapterId:chapterId,
|
||||
taskId:taskId
|
||||
}"
|
||||
>
|
||||
<p class="ant-upload-drag-icon">
|
||||
@@ -199,7 +201,7 @@
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
//type=1 项目 type=2 路径图
|
||||
//type=1 路径图 type=2 项目
|
||||
type: {
|
||||
type: String,
|
||||
default: null,
|
||||
@@ -208,6 +210,18 @@
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
targetId: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
taskId: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
chapterId: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
pid: {
|
||||
type: Number,
|
||||
default: null,
|
||||
@@ -220,8 +234,8 @@
|
||||
setup(props, ctx) {
|
||||
const state = reactive({
|
||||
fileType: ["xls", "xlsx"],
|
||||
importHomeWork:
|
||||
process.env.VUE_APP_BASE_API + "/admin/student/importHomeWork",
|
||||
importScore:
|
||||
process.env.VUE_APP_BASE_API + "/admin/external/exam/manage/importExternalExamScore",
|
||||
uploadpercent: -1,
|
||||
uploadErr: false, //上传失败
|
||||
addLoading: false,
|
||||
@@ -230,6 +244,10 @@
|
||||
errNum: 0, //失败数据数
|
||||
downloadErrUrl: null, //下载失败数据
|
||||
fileName: "",
|
||||
locationHref:location.href.indexOf("http://") !== -1
|
||||
? "http://43.143.139.204:12016/"
|
||||
: location.href.slice(0, location.href.indexOf("/m")) + "/upload/",
|
||||
template: process.env.VUE_APP_UP_LOAD_STUDENT_SCORE_TEMPLATE
|
||||
});
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:eScorevisibleExternalExternal", false);
|
||||
@@ -365,7 +383,8 @@
|
||||
}
|
||||
};
|
||||
function downTemplate() {
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportHomeWorkTemplate?taskId=${props.id || ''}&type=${props.type || ''}&pid=${props.pid || ''}&thirdType=3`);
|
||||
console.log(state.locationHref + state.template)
|
||||
window.open(state.locationHref + state.template);
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -297,8 +297,8 @@ export default {
|
||||
},
|
||||
{
|
||||
title: "PDF状态",
|
||||
dataIndex: "PDFstatus",
|
||||
key: "PDFstatus",
|
||||
dataIndex: "finishStatus",
|
||||
key: "finishStatus",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -306,7 +306,7 @@ export default {
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.PDFstatus?text.record.PDFstatus:"-"}</span>
|
||||
<span> {text.record.finishStatus == 0 || text.record.finishStatus==null ? "未生成" :text.record.finishStatus == 1 ?"已生成":"未生成"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
|
||||
@@ -115,7 +115,12 @@
|
||||
</div> -->
|
||||
</div>
|
||||
<!-- 导出成绩抽屉 -->
|
||||
<ExportAchievement v-model:eScorevisibleExternalExternal="eScorevisibleExternalExternal" :type="1" />
|
||||
<ExportAchievement
|
||||
v-model:eScorevisibleExternalExternal="eScorevisibleExternalExternal"
|
||||
:type="2"
|
||||
:targetId="datasource.projectId"
|
||||
:taskId="datasource.projectTaskId"
|
||||
:chapterId="datasource.stageId" />
|
||||
</a-drawer>
|
||||
</template>
|
||||
|
||||
@@ -125,7 +130,6 @@
|
||||
import ExportAchievement from "../ExportAchievement.vue";
|
||||
import * as api from '../../../api/indexTaskManage';
|
||||
|
||||
// import * as api from "../../../api/index";
|
||||
export default {
|
||||
name: "ProjectExternalExamManage",
|
||||
components: {
|
||||
@@ -165,13 +169,13 @@
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
value: "10",
|
||||
label: "未通过",
|
||||
value: "1",
|
||||
label: "进行中",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
value: "1",
|
||||
label: "已通过",
|
||||
value: "9",
|
||||
label: "已完成",
|
||||
},
|
||||
],
|
||||
selectedRowKeys: [],
|
||||
@@ -184,15 +188,15 @@
|
||||
tablecolumns: [
|
||||
{
|
||||
title: "工号",
|
||||
dataIndex: "studentUserNo",
|
||||
key: "studentUserNo",
|
||||
width: 60,
|
||||
dataIndex: "studentCode",
|
||||
key: "studentCode",
|
||||
width: 120,
|
||||
align: "center",
|
||||
className: "h head",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.studentUserNo?text.record.studentUserNo:"-"}</span>
|
||||
<span> {text.record.studentCode?text.record.studentCode:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -202,8 +206,8 @@
|
||||
dataIndex: "studentName",
|
||||
key: "studentName",
|
||||
width: 50,
|
||||
align: "left",
|
||||
className: "h head",
|
||||
align: "center",
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
@@ -219,7 +223,6 @@
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
@@ -235,7 +238,7 @@
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
@@ -245,25 +248,25 @@
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "考试次数",
|
||||
dataIndex: "num",
|
||||
key: "num",
|
||||
title: "学员关卡",
|
||||
dataIndex: "currentStageId",
|
||||
key: "currentStageId",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
className: "h",
|
||||
customRender: () => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.num?text.record.num:"-"}</span>
|
||||
<span> {props.levelName}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "成绩",
|
||||
dataIndex: "examinationScore",
|
||||
key: "examinationScore",
|
||||
title: "考试次数",
|
||||
dataIndex: "testNumber",
|
||||
key: "testNumber",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -271,7 +274,23 @@
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.examinationScore?text.record.examinationScore:"-"}</span>
|
||||
<span> {text.record.testNumber?text.record.testNumber:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "成绩",
|
||||
dataIndex: "score",
|
||||
key: "score",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.score?text.record.score:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -279,8 +298,8 @@
|
||||
|
||||
{
|
||||
title: "完成时间",
|
||||
dataIndex: "examinationSubmitTime",
|
||||
key: "examinationSubmitTime",
|
||||
dataIndex: "finishedTime",
|
||||
key: "finishedTime",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -288,20 +307,20 @@
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.examinationSubmitTime?text.record.examinationSubmitTime:"-"}</span>
|
||||
<span> {text.record.finishedTime?text.record.finishedTime:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "任务状态",
|
||||
dataIndex: "finishStatus",
|
||||
key: "finishStatus",
|
||||
dataIndex: "status",
|
||||
key: "status",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: ({record:{finishStatus}}) => ({1:'通过',2:'未通过'}[finishStatus] || '未开始'),
|
||||
customRender: ({record:{status}}) => ({0:'未开始',1:'进行中',9:'已完成'}[status] || '未开始'),
|
||||
},
|
||||
],
|
||||
loadingData: true
|
||||
@@ -318,6 +337,7 @@
|
||||
const afterVisibleChange = (bol) => {
|
||||
if (bol == true) {
|
||||
state.loadingData = true;
|
||||
console.log(props.datasource)
|
||||
getData();
|
||||
}
|
||||
};
|
||||
@@ -348,17 +368,17 @@
|
||||
|
||||
// 获取数据
|
||||
function getData() {
|
||||
api.AssessmentManagementMessage({
|
||||
api.QueryExternalExamManageDetail({
|
||||
chapterId: props.datasource.stageId,
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
currentStageId: props.datasource.stageId,
|
||||
type: 1,
|
||||
pid: props.datasource.projectId,
|
||||
taskId: props.datasource.projectTaskId,
|
||||
taskType: props.datasource.type,
|
||||
status: state.projectName,
|
||||
studentName: state.name,
|
||||
targetId: props.datasource.projectId,
|
||||
taskId: props.datasource.projectTaskId,
|
||||
type: 2,
|
||||
}).then(res=>{
|
||||
console.log(res)
|
||||
state.tabledata = res.data.data.records;
|
||||
state.tableDataTotal = res.data.data.total;
|
||||
state.loadingData = false;
|
||||
@@ -387,7 +407,7 @@
|
||||
|
||||
{/* 导出数据 */}
|
||||
function exportData() {
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.datasource.stageId}&type=${1}&pid=${props.datasource.projectId}&taskId=${props.datasource.projectTaskId}&taskType=${props.datasource.type}`)
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/external/exam/manage/exportExternalExam?chapterId=${props.datasource.stageId}&type=${2}&targetId=${props.datasource.projectId}&taskId=${props.datasource.projectTaskId}`)
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -294,8 +294,8 @@ export default {
|
||||
},
|
||||
{
|
||||
title: "PDF状态",
|
||||
dataIndex: "PDFstatus",
|
||||
key: "PDFstatus",
|
||||
dataIndex: "finishStatus",
|
||||
key: "finishStatus",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -303,7 +303,7 @@ export default {
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.PDFstatus?text.record.PDFstatus:"-"}</span>
|
||||
<span> {text.record.finishStatus == 0 || text.record.finishStatus==null ? "未生成" :text.record.finishStatus == 1 ?"已生成":"未生成"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
|
||||
@@ -114,7 +114,12 @@
|
||||
</div>-->
|
||||
</div>
|
||||
<!-- 导出成绩抽屉 -->
|
||||
<ExportAchievement v-model:eScorevisibleExternalExternal="eScorevisibleExternalExternal" :type="2" />
|
||||
<ExportAchievement
|
||||
v-model:eScorevisibleExternalExternal="eScorevisibleExternalExternal"
|
||||
:type="1"
|
||||
:targetId="datasource.routerId"
|
||||
:taskId="datasource.routerTaskId"
|
||||
:chapterId="datasource.chapterId" />
|
||||
</a-drawer>
|
||||
</template>
|
||||
|
||||
@@ -168,13 +173,13 @@
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
value: "10",
|
||||
label: "未通过",
|
||||
value: "1",
|
||||
label: "进行中",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
value: "1",
|
||||
label: "已通过",
|
||||
value: "9",
|
||||
label: "已完成",
|
||||
},
|
||||
],
|
||||
selectedRowKeys: [],
|
||||
@@ -187,15 +192,15 @@
|
||||
tablecolumns: [
|
||||
{
|
||||
title: "工号",
|
||||
dataIndex: "studentUserNo",
|
||||
key: "studentUserNo",
|
||||
dataIndex: "studentCode",
|
||||
key: "studentCode",
|
||||
width: 120,
|
||||
align: "center",
|
||||
className: "h head",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.studentUserNo?text.record.studentUserNo:"-"}</span>
|
||||
<span> {text.record.studentCode?text.record.studentCode:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -264,8 +269,8 @@
|
||||
},
|
||||
{
|
||||
title: "考试次数",
|
||||
dataIndex: "num",
|
||||
key: "num",
|
||||
dataIndex: "testNumber",
|
||||
key: "testNumber",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -273,7 +278,7 @@
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.num?text.record.num:"-"}</span>
|
||||
<span> {text.record.testNumber?text.record.testNumber:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -289,7 +294,7 @@
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.examinationScore?text.record.examinationScore:"-"}</span>
|
||||
<span> {text.record.score?text.record.score:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -297,8 +302,8 @@
|
||||
|
||||
{
|
||||
title: "完成时间",
|
||||
dataIndex: "examinationSubmitTime",
|
||||
key: "examinationSubmitTime",
|
||||
dataIndex: "finishedTime",
|
||||
key: "finishedTime",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -306,20 +311,20 @@
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.examinationSubmitTime?text.record.examinationSubmitTime:"-"}</span>
|
||||
<span> {text.record.finishedTime?text.record.finishedTime:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "任务状态",
|
||||
dataIndex: "finishStatus",
|
||||
key: "finishStatus",
|
||||
dataIndex: "status",
|
||||
key: "status",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: ({record:{finishStatus}}) => ({1:'通过',2:'未通过'}[finishStatus] || '未开始'),
|
||||
customRender: ({record:{status}}) => ({0:'未开始',1:'进行中',9:'已完成'}[status] || '未开始'),
|
||||
},
|
||||
],
|
||||
loadingData: true
|
||||
@@ -366,17 +371,17 @@
|
||||
|
||||
// 获取数据
|
||||
function getData() {
|
||||
api.AssessmentManagementMessage({
|
||||
api.QueryExternalExamManageDetail({
|
||||
chapterId: props.datasource.chapterId,
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
currentStageId: props.datasource.chapterId,
|
||||
type: 2,
|
||||
pid: props.datasource.routerId,
|
||||
taskId: props.datasource.routerTaskId,
|
||||
taskType: props.datasource.type,
|
||||
status: state.projectName,
|
||||
studentName: state.name,
|
||||
targetId: props.datasource.routerId,
|
||||
taskId: props.datasource.routerTaskId,
|
||||
type: 1,
|
||||
}).then(res=>{
|
||||
console.log(res)
|
||||
state.tabledata = res.data.data.records;
|
||||
state.tableDataTotal = res.data.data.total;
|
||||
state.loadingData = false;
|
||||
@@ -406,19 +411,7 @@
|
||||
|
||||
{/* 导出数据 */}
|
||||
function exportData() {
|
||||
// window.open(`${process.env.VUE_APP_BASE_API}/admin/exam/manage/exportExam?chapterId=${props.datasource.chapterId}&targetId=${props.datasource.routerId}&taskId=${props.datasource.courseId}&type=${1}`)
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.datasource.chapterId}&type=${2}&pid=${props.datasource.routerId}&taskId=${props.datasource.routerTaskId}&taskType=${props.datasource.type}`)
|
||||
|
||||
{/* api.ExportExam({
|
||||
"chapterId": props.datasource.chapterId,
|
||||
"targetId": props.datasource.routerId,
|
||||
"taskId": props.datasource.courseId,
|
||||
"type": 1
|
||||
}).then(res=>{
|
||||
console.log(res)
|
||||
}).catch(err=>{
|
||||
console.log(err)
|
||||
}) */}
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/external/exam/manage/exportExternalExam?chapterId=${props.datasource.chapterId}&type=${1}&targetId=${props.datasource.routerId}&taskId=${props.datasource.routerTaskId}`)
|
||||
}
|
||||
return {
|
||||
...toRefs(state),
|
||||
|
||||
@@ -66,6 +66,9 @@ export default createStore({
|
||||
},
|
||||
SET_projectTemplateId(state, projectTemplateId) {
|
||||
state.projectTemplateId = projectTemplateId;
|
||||
},
|
||||
SET_PERMISSION(state,permissions){
|
||||
state.menus = permissions;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -40,9 +40,7 @@ export function checkPer(per) {
|
||||
return (per + "").split(',').some(t => admin.some(s => s == t))
|
||||
}
|
||||
export function checkMenu(path='') {
|
||||
// return store?.state?.menus.some(t => path.includes(t));
|
||||
console.log(path)
|
||||
return true;
|
||||
return store?.state?.menus.some(t => path.split(',').some(s=>'/'+s===t));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -4039,7 +4039,7 @@ export default defineComponent({
|
||||
if (state.copy_hs) {
|
||||
console.log(2222222);
|
||||
if (state.offcourseId && state.offcoursePlanId) {
|
||||
copyCoursePlan({offcoursePlanId:state.offcourseId}).then(() => {
|
||||
copyCoursePlan({offcoursePlanId:state.offcoursePlanId}).then(() => {
|
||||
message.destroy();
|
||||
message.success("复制成功");
|
||||
getTableDate3();
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
<a-button v-if="record.status!==3" @click="showDeleteModal(record.projectId)" type="link" danger>删除</a-button>
|
||||
<a-button v-if="record.status===3" @click="showStartModal(record.projectId)" type="link">存为模版</a-button>
|
||||
<a-button v-if="record.status===3 && record.type===3" @click="showStopModal(record.projectId)" type="link">结束</a-button>
|
||||
<a-button v-if="record.status===-1 && record.type===3" @click="showBackFinashModal(record.projectId)" type="link">撤回</a-button>
|
||||
<a-button v-if="record.status!==-1 && record.type===3" @click="showBackFinashModal(record.projectId)" type="link">撤回</a-button>
|
||||
</DropDown>
|
||||
</a-space>
|
||||
</template>
|
||||
|
||||
@@ -877,11 +877,11 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="btn btn1" @click="rankSearch">
|
||||
<div class="btn btn1" @click="rankSearch" style="cursor: pointer;">
|
||||
<div class="img1"></div>
|
||||
<div class="te">搜索</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="rankReset">
|
||||
<div class="btn btn2" @click="rankReset" style="cursor: pointer;">
|
||||
<div class="img2"></div>
|
||||
<div class="te">重置</div>
|
||||
</div>
|
||||
@@ -896,12 +896,14 @@
|
||||
<div class="right">
|
||||
<a-select
|
||||
v-model:value="valuestu1"
|
||||
@change="jdSelectChange"
|
||||
style="width: 80px; margin-right: 16px"
|
||||
:options="rankjindu"
|
||||
>
|
||||
</a-select>
|
||||
<a-select
|
||||
v-model:value="valuestu2"
|
||||
@change="jdSelectChange1"
|
||||
style="width: 112px"
|
||||
:options="rankjieduan"
|
||||
></a-select>
|
||||
@@ -912,7 +914,7 @@
|
||||
<a-table
|
||||
:columns="jindutablecolumns"
|
||||
:data-source="jindutabledata"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
:loading="processRankLoading"
|
||||
expandRowByClick="true"
|
||||
:scroll="{ y: 330 }"
|
||||
@expand="expandTable"
|
||||
@@ -928,6 +930,7 @@
|
||||
<a-select
|
||||
v-model:value="valuestu3"
|
||||
style="width: 80px"
|
||||
@change="jfSelectChange"
|
||||
:options="rankxuefen"
|
||||
></a-select>
|
||||
</div>
|
||||
@@ -937,7 +940,7 @@
|
||||
<a-table
|
||||
:columns="xuefentablecolumns"
|
||||
:data-source="xuefentabledata"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
:loading="scoreRankLoading"
|
||||
expandRowByClick="true"
|
||||
:scroll="{ y: 330 }"
|
||||
@expand="expandTable"
|
||||
@@ -2299,19 +2302,19 @@ export default {
|
||||
projectTaskId: "", //项目任务任务id
|
||||
//进度排行学员
|
||||
rankjindu: [
|
||||
{ value: "学员", label: "学员" },
|
||||
{ value: "小组", label: "小组" },
|
||||
{ value: 0, label: "学员" },
|
||||
{ value: 1, label: "小组" },
|
||||
],
|
||||
valuestu1: "学员",
|
||||
valuestu1: 0,
|
||||
//进度排行阶段
|
||||
rankjieduan: [{ value: "第一阶段", label: "第一阶段" }],
|
||||
valuestu2: "第一阶段",
|
||||
rankjieduan: [],
|
||||
valuestu2: "",
|
||||
//积分排行
|
||||
rankxuefen: [
|
||||
{ value: "学员", label: "学员" },
|
||||
{ value: "小组", label: "小组" },
|
||||
{ value: 0, label: "学员" },
|
||||
{ value: 1, label: "小组" },
|
||||
],
|
||||
valuestu3: "学员",
|
||||
valuestu3: 0,
|
||||
//学时排行
|
||||
rankxueshi: [
|
||||
{ value: "学员", label: "学员" },
|
||||
@@ -2359,7 +2362,7 @@ export default {
|
||||
checkedBOEU: false, //是否BOEU实施
|
||||
radioV1: "",
|
||||
radioV2: "",
|
||||
activeKey: "7", //1:概览 2.任务...
|
||||
activeKey: "1", //1:概览 2.任务...
|
||||
activeKey1: "8", //8:学员管理 9:小组管理
|
||||
activeKey2: "3",
|
||||
activeKeyNotice: "11",
|
||||
@@ -2408,83 +2411,31 @@ export default {
|
||||
ChangeGroupId: null, //要换组的学生的小组id
|
||||
fileList: [], //文件列表
|
||||
//进度排行表
|
||||
jindutabledata: [
|
||||
{
|
||||
rank: "1",
|
||||
name: "哈哈",
|
||||
jd: "80%",
|
||||
},
|
||||
|
||||
{
|
||||
rank: "2",
|
||||
name: "哈哈",
|
||||
jd: "70%",
|
||||
},
|
||||
{
|
||||
rank: "3",
|
||||
name: "哈哈",
|
||||
jd: "70%",
|
||||
},
|
||||
{
|
||||
rank: "4",
|
||||
name: "哈哈",
|
||||
jd: "70%",
|
||||
},
|
||||
{
|
||||
rank: "5",
|
||||
name: "哈哈",
|
||||
jd: "70%",
|
||||
},
|
||||
{
|
||||
rank: "6",
|
||||
name: "哈哈",
|
||||
jd: "70%",
|
||||
},
|
||||
{
|
||||
rank: "7",
|
||||
name: "哈哈",
|
||||
jd: "70%",
|
||||
},
|
||||
{
|
||||
rank: "8",
|
||||
name: "哈哈",
|
||||
jd: "70%",
|
||||
},
|
||||
{
|
||||
rank: "9",
|
||||
name: "哈哈",
|
||||
jd: "70%",
|
||||
},
|
||||
{
|
||||
rank: "10",
|
||||
name: "哈哈",
|
||||
jd: "70%",
|
||||
},
|
||||
],
|
||||
jindutabledata: [],
|
||||
jindutablecolumns: [
|
||||
{
|
||||
title: "排名",
|
||||
dataIndex: "rank",
|
||||
key: "rank",
|
||||
dataIndex: "index",
|
||||
key: "index",
|
||||
width: 50,
|
||||
align: "center",
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
if (text.record.rank == "1") {
|
||||
if (text.record.index == "1") {
|
||||
return (
|
||||
<img
|
||||
style={{ width: 24, height: 24 }}
|
||||
src={require("../../assets/images/taskpage/one.png")}
|
||||
/>
|
||||
);
|
||||
} else if (text.record.rank == "2") {
|
||||
} else if (text.record.index == "2") {
|
||||
return (
|
||||
<img
|
||||
style={{ width: 24, height: 24 }}
|
||||
src={require("../../assets/images/taskpage/two.png")}
|
||||
/>
|
||||
);
|
||||
} else if (text.record.rank == "3") {
|
||||
} else if (text.record.index == "3") {
|
||||
return (
|
||||
<img
|
||||
style={{ width: 24, height: 24 }}
|
||||
@@ -2492,7 +2443,7 @@ export default {
|
||||
/>
|
||||
);
|
||||
} else {
|
||||
return <div>{text.record.rank}</div>;
|
||||
return <div>{text.record.index}</div>;
|
||||
}
|
||||
},
|
||||
},
|
||||
@@ -2507,91 +2458,43 @@ export default {
|
||||
|
||||
{
|
||||
title: "进度",
|
||||
dataIndex: "jd",
|
||||
key: "jd",
|
||||
dataIndex: "rateStr",
|
||||
key: "rateStr",
|
||||
width: 50,
|
||||
align: "center",
|
||||
className: "h",
|
||||
},
|
||||
],
|
||||
scoreRankLoading:true,
|
||||
processRankLoading:true,
|
||||
//学分排行表
|
||||
xuefentabledata: [
|
||||
{
|
||||
rank: "1",
|
||||
name: "哈哈",
|
||||
jd: "80",
|
||||
},
|
||||
|
||||
{
|
||||
rank: "2",
|
||||
name: "哈哈",
|
||||
jd: "70",
|
||||
},
|
||||
{
|
||||
rank: "3",
|
||||
name: "哈哈",
|
||||
jd: "70",
|
||||
},
|
||||
{
|
||||
rank: "4",
|
||||
name: "哈哈",
|
||||
jd: "70",
|
||||
},
|
||||
{
|
||||
rank: "5",
|
||||
name: "哈哈",
|
||||
jd: "70",
|
||||
},
|
||||
{
|
||||
rank: "6",
|
||||
name: "哈哈",
|
||||
jd: "70",
|
||||
},
|
||||
{
|
||||
rank: "7",
|
||||
name: "哈哈",
|
||||
jd: "70",
|
||||
},
|
||||
{
|
||||
rank: "8",
|
||||
name: "哈哈",
|
||||
jd: "70",
|
||||
},
|
||||
{
|
||||
rank: "9",
|
||||
name: "哈哈",
|
||||
jd: "70",
|
||||
},
|
||||
{
|
||||
rank: "10",
|
||||
name: "哈哈",
|
||||
jd: "7",
|
||||
},
|
||||
|
||||
],
|
||||
xuefentablecolumns: [
|
||||
{
|
||||
title: "排名",
|
||||
dataIndex: "rank",
|
||||
key: "rank",
|
||||
dataIndex: "index",
|
||||
key: "index",
|
||||
width: 50,
|
||||
align: "center",
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
if (text.record.rank == "1") {
|
||||
if (text.record.index == "1") {
|
||||
return (
|
||||
<img
|
||||
style={{ width: 24, height: 24 }}
|
||||
src={require("../../assets/images/taskpage/one.png")}
|
||||
/>
|
||||
);
|
||||
} else if (text.record.rank == "2") {
|
||||
} else if (text.record.index == "2") {
|
||||
return (
|
||||
<img
|
||||
style={{ width: 24, height: 24 }}
|
||||
src={require("../../assets/images/taskpage/two.png")}
|
||||
/>
|
||||
);
|
||||
} else if (text.record.rank == "3") {
|
||||
} else if (text.record.index == "3") {
|
||||
return (
|
||||
<img
|
||||
style={{ width: 24, height: 24 }}
|
||||
@@ -2599,7 +2502,7 @@ export default {
|
||||
/>
|
||||
);
|
||||
} else {
|
||||
return <div>{text.record.rank}</div>;
|
||||
return <div>{text.record.index}</div>;
|
||||
}
|
||||
},
|
||||
},
|
||||
@@ -2614,8 +2517,8 @@ export default {
|
||||
|
||||
{
|
||||
title: "积分",
|
||||
dataIndex: "jd",
|
||||
key: "jd",
|
||||
dataIndex: "pointsCountStr",
|
||||
key: "pointsCountStr",
|
||||
width: 50,
|
||||
align: "center",
|
||||
className: "h",
|
||||
@@ -2887,6 +2790,103 @@ export default {
|
||||
fileUrl: process.env.VUE_APP_FILE_PATH,
|
||||
});
|
||||
|
||||
// 排行榜 - start
|
||||
|
||||
// 积分排行榜 Top10
|
||||
// 项目积分切换查询 -- 学员 小组
|
||||
const jfSelectChange = (e) => {
|
||||
console.log(e)
|
||||
scoreRank();
|
||||
}
|
||||
const jdSelectChange = (e) => {
|
||||
console.log(e)
|
||||
completionRank();
|
||||
}
|
||||
const jdSelectChange1 = (e) => {
|
||||
console.log(e)
|
||||
completionRank();
|
||||
}
|
||||
//项目积分榜单
|
||||
const scoreRank = (period, type) => {
|
||||
state.scoreRankLoading = true;
|
||||
state.datascore = [];
|
||||
state.datascoreg = [];
|
||||
console.log("projectId----->", state.projectId,period, type);
|
||||
console.log('我是查询榜单传递的数据',{
|
||||
projectId: state.projectId, // 项目id
|
||||
name: "", // 名字,没有则传空字符串
|
||||
startTime: state.rankStartTime?state.rankStartTime:0, // 数据查询的起始时间 10位时间戳
|
||||
endTime: state.rankEndTime?state.rankEndTime:0,
|
||||
size: 10, // 前多少名
|
||||
type: Number(state.valuestu3), // 查询类型 0 学员积分榜 1 小组积分榜
|
||||
})
|
||||
let obj = {
|
||||
projectId: 290, // 项目id
|
||||
name: "", // 名字,没有则传空字符串
|
||||
startTime: state.rankStartTime?state.rankStartTime:0, // 数据查询的起始时间 10位时间戳
|
||||
endTime: state.rankEndTime?state.rankEndTime:0,
|
||||
size: 10, // 前多少名
|
||||
type: Number(state.valuestu3), // 查询类型 0 学员积分榜 1 小组积分榜
|
||||
};
|
||||
|
||||
api
|
||||
.scoreRank(obj)
|
||||
.then((res) => {
|
||||
console.log("获取项目积分-榜单", res);
|
||||
if(res.data.code==200){
|
||||
state.datascore = res.data.data;
|
||||
state.datascoreg = res.data.data;
|
||||
state.xuefentabledata = res.data.data;
|
||||
state.scoreRankLoading = false;
|
||||
}else{
|
||||
state.datascore = [];
|
||||
state.datascoreg = [];
|
||||
state.xuefentabledata = [];
|
||||
state.scoreRankLoading = false;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("获取项目积分-榜单失败", err);
|
||||
message.destroy();
|
||||
message.error('榜单获取失败');
|
||||
state.datascore = [];
|
||||
state.datascoreg = [];
|
||||
state.xuefentabledata = [];
|
||||
state.scoreRankLoading = false;
|
||||
});
|
||||
};
|
||||
|
||||
// 项目进度榜单
|
||||
const completionRank = () => {
|
||||
state.processRankLoading = true;
|
||||
let obj = {
|
||||
projectId: 290, // 项目id
|
||||
startTime: state.rankStartTime?state.rankStartTime:0, // 数据查询的起始时间 10位时间戳
|
||||
endTime: state.rankEndTime?state.rankEndTime:0,
|
||||
stageId: state.valuestu2, // 阶段ID
|
||||
type: Number(state.valuestu3), // 查询类型 0 学员积分榜 1 小组积分榜
|
||||
}
|
||||
|
||||
console.log('我是获取得项目进度排行榜--》', obj)
|
||||
api.completionRank(obj).then(res=>{
|
||||
console.log('项目进度榜单获取',res)
|
||||
if(res.data.datas){
|
||||
state.jindutabledata = res.data.datas;
|
||||
state.processRankLoading = false;
|
||||
}else{
|
||||
state.jindutabledata = [];
|
||||
state.processRankLoading = false;
|
||||
}
|
||||
|
||||
}).catch(err=>{
|
||||
console.log(err)
|
||||
state.jindutabledata = [];
|
||||
state.processRankLoading = false;
|
||||
})
|
||||
}
|
||||
|
||||
// 排行榜 - end
|
||||
|
||||
const levelList = reactive({
|
||||
projectInfoOverview: {
|
||||
// 整体数据概览
|
||||
@@ -2948,6 +2948,28 @@ export default {
|
||||
}
|
||||
}
|
||||
levelList.stageList = res.data.data.stageList;
|
||||
|
||||
if(levelList.stageList.length==1){
|
||||
// 无解段任务
|
||||
state.rankjieduan = [{value:0, label:'无阶段'}];
|
||||
state.valuestu2 = 0;
|
||||
}else{
|
||||
// 有阶段任务
|
||||
let arrStage = []
|
||||
for(let i=0; i<levelList.stageList.length;i++){
|
||||
if(levelList.stageList[i].stageId!=='0'){
|
||||
let obj = {
|
||||
value:levelList.stageList[i].stageId,
|
||||
label:levelList.stageList[i].name
|
||||
}
|
||||
arrStage.push(obj)
|
||||
}
|
||||
}
|
||||
state.rankjieduan = arrStage;
|
||||
state.valuestu2 = arrStage[0].value;
|
||||
}
|
||||
console.log('----------------------------------->', res.data.data.stageList)
|
||||
|
||||
//暂时传个固定的id用 到时候看数据里面是否有在更换
|
||||
// state.projectTaskId = res.data.data.stageList[0].taskList[0].projectTaskId
|
||||
let leng = res.data.data.stageList.length;
|
||||
@@ -3601,11 +3623,17 @@ export default {
|
||||
//排行榜
|
||||
if (e == 6) {
|
||||
//获取进度榜
|
||||
getbillboard(1, 1);
|
||||
// getbillboard(1, 1);
|
||||
//获取学分榜
|
||||
getbillboard(2, 1);
|
||||
// getbillboard(2, 1);
|
||||
//获取学时榜
|
||||
getbillboard(3, 1);
|
||||
// getbillboard(3, 1);
|
||||
|
||||
// 获取积分排行榜
|
||||
scoreRank();
|
||||
// 获取项目进度排行榜
|
||||
completionRank();
|
||||
|
||||
} else if (e == 3) {
|
||||
state.tabFlag = true;
|
||||
} else {
|
||||
@@ -3652,11 +3680,16 @@ state.ischeckCertificate=false
|
||||
//搜索
|
||||
const rankSearch = () => {
|
||||
//获取进度榜
|
||||
getbillboard(1, 1);
|
||||
// getbillboard(1, 1);
|
||||
//获取学分榜
|
||||
getbillboard(2, 1);
|
||||
// getbillboard(2, 1);
|
||||
//获取学时榜
|
||||
getbillboard(3, 1);
|
||||
// getbillboard(3, 1);
|
||||
|
||||
// 获取积分排行
|
||||
scoreRank();
|
||||
// 获取项目进度排行榜
|
||||
completionRank();
|
||||
};
|
||||
//重置
|
||||
const rankReset = () => {
|
||||
@@ -3664,6 +3697,11 @@ state.ischeckCertificate=false
|
||||
state.rankEndTime = null;
|
||||
state.valueDate = null;
|
||||
state.valueName = null;
|
||||
|
||||
// 获取积分排行
|
||||
scoreRank();
|
||||
// 获取项目进度排行榜
|
||||
completionRank();
|
||||
};
|
||||
|
||||
// end -----排行榜----------------排行榜----------------------排行榜-----------排行榜----------
|
||||
@@ -4776,6 +4814,14 @@ state.ischeckCertificate=false
|
||||
previewPic,
|
||||
getCertificate,
|
||||
checkCertificate,
|
||||
|
||||
scoreRank,
|
||||
jfSelectChange,
|
||||
|
||||
completionRank,
|
||||
jdSelectChange,
|
||||
jdSelectChange1,
|
||||
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user