feat:增加项目-排行榜-学时排行榜数据接入

This commit is contained in:
wyx
2023-02-09 16:47:11 +08:00
4 changed files with 335 additions and 93 deletions

View File

@@ -307,7 +307,7 @@
id="inputNumber" id="inputNumber"
v-model:value="score" v-model:value="score"
:min="1" :min="1"
:max="100" :max="projectPoints"
style="width: 70px" style="width: 70px"
:disabled="condition !== 5" :disabled="condition !== 5"
/> />
@@ -320,7 +320,7 @@
margin-left: 5px; margin-left: 5px;
" "
> >
分可获得当前项目积分为 10 分可获得当前项目积分为 {{ projectPoints }}
</div> </div>
</div> </div>
<!-- <a-radio v-model:checked="checked" :value="6" > <!-- <a-radio v-model:checked="checked" :value="6" >
@@ -422,6 +422,7 @@ export default {
selectExamName: null, selectExamName: null,
selectExamId: null, selectExamId: null,
score: null, //积分 score: null, //积分
projectPoints: 0,
fileType: ["jpg", "jpeg", "png", "gif", "svg", "bmp"], fileType: ["jpg", "jpeg", "png", "gif", "svg", "bmp"],
}); });
@@ -471,6 +472,7 @@ export default {
.then((res) => { .then((res) => {
if (res.data.code === 200) { if (res.data.code === 200) {
console.log("获取项目总积分", res); console.log("获取项目总积分", res);
state.projectPoints = res.data.data;
} }
}) })
.catch((err) => { .catch((err) => {

View File

@@ -38,7 +38,7 @@
<a-button <a-button
class="cus-btn" class="cus-btn"
style="background: #4ea6ff; color: #fff; width: 100px" style="background: #4ea6ff; color: #fff; width: 100px"
@click="getStuList" @click="search"
> >
<template #icon> <template #icon>
<img <img
@@ -56,7 +56,7 @@
重置 重置
</a-button> </a-button>
</div> </div>
<div class="batch">批量取消证书</div> <div class="batch" @click="cancelOrAuthAll">批量取消证书</div>
<div class="tableBox" style="margin-top: 20px"> <div class="tableBox" style="margin-top: 20px">
<a-table <a-table
:columns="tablecolumns" :columns="tablecolumns"
@@ -93,6 +93,8 @@ import { reactive, toRefs } from "vue";
import * as api from "@/api/index1"; import * as api from "@/api/index1";
import OrgClass from "@/components/project/OrgClass"; import OrgClass from "@/components/project/OrgClass";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import { toDate } from "@/api/method";
import dayjs from "dayjs";
export default { export default {
name: "TableCertificateStudent", name: "TableCertificateStudent",
components: { components: {
@@ -118,7 +120,7 @@ export default {
studentName: null, studentName: null,
tstudentDepartId: null, tstudentDepartId: null,
studentDepartName: null, studentDepartName: null,
selectTime: null, selectTime: [],
tablecolumns: [ tablecolumns: [
{ {
title: "工号", title: "工号",
@@ -154,11 +156,21 @@ export default {
}, },
{ {
title: "取得证书时间", title: "取得证书时间",
dataIndex: "time", dataIndex: "createTime",
key: "time", key: "createTime",
width: 60, width: 60,
align: "center", align: "center",
className: "h", className: "h",
customRender: (record) => {
// console.log(text.record.checked1);
return (
<div>
{record.record.createTime
? toDate(record.record.createTime / 1000, "Y-M-D h:m")
: "-"}
</div>
);
},
}, },
{ {
title: "操作", title: "操作",
@@ -191,13 +203,13 @@ export default {
}, },
], ],
stuList: [ stuList: [
{ // {
studentUserNo: "1234", // studentUserNo: "1234",
studentName: "li", // studentName: "li",
studentDepartName: "开发部", // studentDepartName: "开发部",
studentJobName: "岗位一", // studentJobName: "岗位一",
time: "2023-02-04", // time: "2023-02-04",
}, // },
], ],
pageSize: 10, pageSize: 10,
currentPage: 1, currentPage: 1,
@@ -207,9 +219,22 @@ export default {
//获取证书学员 //获取证书学员
const stuCertList = () => { const stuCertList = () => {
console.log("state.selectTime", state.selectTime);
let obj = { let obj = {
name: state.studentName, name: state.studentName,
orgName: state.studentDepartName, orgName: state.studentDepartName,
beginDate:
state.selectTime.length !== 0
? dayjs(new Date(state.selectTime[0]).getTime()).format(
"YYYY-MM-DD"
)
: null,
endDate:
state.selectTime.length !== 0
? dayjs(new Date(state.selectTime[1]).getTime()).format(
"YYYY-MM-DD"
)
: null,
id: props.ACertificateCheckId, id: props.ACertificateCheckId,
pid: props.projectId, pid: props.projectId,
size: state.pageSize, size: state.pageSize,
@@ -221,8 +246,9 @@ export default {
.then((res) => { .then((res) => {
console.log("获取证书学员", res); console.log("获取证书学员", res);
if (res.data.code === 200) { if (res.data.code === 200) {
state.stuList = res.data.data.record; state.stuList = res.data.data.records;
state.tableDataTotal = res.data.data.total; state.tableDataTotal = Number(res.data.data.total);
console.log("state.tableDataTotal", state.tableDataTotal);
} }
}) })
.catch((err) => { .catch((err) => {
@@ -242,7 +268,8 @@ export default {
state.studentName = null; state.studentName = null;
state.tstudentDepartId = null; state.tstudentDepartId = null;
state.studentDepartName = null; state.studentDepartName = null;
state.selectTime = null; state.selectTime = [];
stuCertList();
}; };
//取消证书 //取消证书
@@ -265,6 +292,28 @@ export default {
console.log("取消证书失败", err); console.log("取消证书失败", err);
}); });
}; };
//批量取消证书
const cancelOrAuthAll = () => {
if (state.selectedRowKeys.length === 0)
return message.warning("请选择学员");
let obj = {
ids: state.selectedRowKeys,
status: -1,
};
api
.cancelOrAuth(obj)
.then((res) => {
console.log("取消证书成功", res);
if (res.data.code === 200) {
message.success("取消证书成功");
stuCertList();
state.selectedRowKeys = [];
}
})
.catch((err) => {
console.log("取消证书失败", err);
});
};
const onSelectChange = (selectedRowKeys, e) => { const onSelectChange = (selectedRowKeys, e) => {
console.log("selectedRowKeys changed: ", selectedRowKeys, e); console.log("selectedRowKeys changed: ", selectedRowKeys, e);
state.selectedRowKeys = selectedRowKeys; state.selectedRowKeys = selectedRowKeys;
@@ -288,6 +337,7 @@ export default {
onSelectChange, onSelectChange,
changePaginationStu, changePaginationStu,
returnClick, returnClick,
cancelOrAuthAll,
}; };
}, },
}; };

View File

@@ -2727,26 +2727,8 @@ export default {
window.location.protocol + window.location.protocol +
process.env.VUE_APP_H5 + process.env.VUE_APP_H5 +
"/projectdetails?courseId=" + "/projectdetails?courseId=" +
item.courseId item.courseId;
} }
// let path = {
// 1: window.location.protocol + import.meta.env.VITE_BOE_ONLINE_CLASS_URL, //在线
// 2: "/faceteach",
// 3: window.location.protocol + import.meta.env.VITE_BOE_CASS_DETAIL_URL, //案例
// 4: "/homeworkpage",
// 5: window.location.protocol + import.meta.env.VITE_BOE_EXAM_DETAIL_URL, //考试
// 6: "/livebroadcast",
// 7: "/outerchain", //外联
// 8: "/discusspage",
// 9: "/moreactive",
// 10: "/evaluation", //测评
// 11: "/surveydetail",
// 12: "/ballotpage",
// 13: "/projectdetails",
// };
state.codevisible = true; state.codevisible = true;
let obj = { let obj = {
title: "[" + checkType(item.type) + "]二维码", title: "[" + checkType(item.type) + "]二维码",

View File

@@ -877,11 +877,19 @@
</div> </div>
</div> </div>
<div class="right"> <div class="right">
<div class="btn btn1" @click="rankSearch" style="cursor: pointer;"> <div
class="btn btn1"
@click="rankSearch"
style="cursor: pointer"
>
<div class="img1"></div> <div class="img1"></div>
<div class="te">搜索</div> <div class="te">搜索</div>
</div> </div>
<div class="btn btn2" @click="rankReset" style="cursor: pointer;"> <div
class="btn btn2"
@click="rankReset"
style="cursor: pointer"
>
<div class="img2"></div> <div class="img2"></div>
<div class="te">重置</div> <div class="te">重置</div>
</div> </div>
@@ -2131,7 +2139,7 @@ import { message, Modal } from "ant-design-vue";
import * as apitl from "../../api/index"; import * as apitl from "../../api/index";
import { getTask } from "../../api/indexTaskadd"; import { getTask } from "../../api/indexTaskadd";
import { editProj } from "../../api/indexTaskadd"; import { editProj } from "../../api/indexTaskadd";
import { toDate, codeUrl } from "../../api/method"; import { toDate } from "../../api/method";
import projSet from "../../components/Modals/projSet"; import projSet from "../../components/Modals/projSet";
import { overview } from "../../api/indexProjStu"; import { overview } from "../../api/indexProjStu";
import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue"; import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
@@ -2466,12 +2474,10 @@ export default {
className: "h", className: "h",
}, },
], ],
scoreRankLoading:true, scoreRankLoading: true,
processRankLoading:true, processRankLoading: true,
//学分排行表 //学分排行表
xuefentabledata: [ xuefentabledata: [],
],
xuefentablecolumns: [ xuefentablecolumns: [
{ {
title: "排名", title: "排名",
@@ -2745,15 +2751,15 @@ export default {
// 积分排行榜 Top10 // 积分排行榜 Top10
// 项目积分切换查询 -- 学员 小组 // 项目积分切换查询 -- 学员 小组
const jfSelectChange = (e) => { const jfSelectChange = (e) => {
console.log(e) console.log(e);
scoreRank(); scoreRank();
} };
const jdSelectChange = (e) => { const jdSelectChange = (e) => {
console.log(e) console.log(e);
completionRank(); completionRank();
} };
const jdSelectChange1 = (e) => { const jdSelectChange1 = (e) => {
console.log(e) console.log(e);
completionRank(); completionRank();
} }
const xsSelectChange = (e) => { const xsSelectChange = (e) => {
@@ -2765,34 +2771,34 @@ export default {
state.scoreRankLoading = true; state.scoreRankLoading = true;
state.datascore = []; state.datascore = [];
state.datascoreg = []; state.datascoreg = [];
console.log("projectId----->", state.projectId,period, type); console.log("projectId----->", state.projectId, period, type);
console.log('我是查询榜单传递的数据',{ console.log("我是查询榜单传递的数据", {
projectId: state.projectId, // 项目id projectId: state.projectId, // 项目id
name: "", // 名字,没有则传空字符串 name: "", // 名字,没有则传空字符串
startTime: state.rankStartTime?state.rankStartTime:0, // 数据查询的起始时间 10位时间戳 startTime: state.rankStartTime ? state.rankStartTime : 0, // 数据查询的起始时间 10位时间戳
endTime: state.rankEndTime?state.rankEndTime:0, endTime: state.rankEndTime ? state.rankEndTime : 0,
size: 10, // 前多少名 size: 10, // 前多少名
type: Number(state.valuestu3), // 查询类型 0 学员积分榜 1 小组积分榜 type: Number(state.valuestu3), // 查询类型 0 学员积分榜 1 小组积分榜
}) });
let obj = { let obj = {
projectId: state.projectId, // 项目id projectId: state.projectId, // 项目id
name: "", // 名字,没有则传空字符串 name: "", // 名字,没有则传空字符串
startTime: state.rankStartTime?state.rankStartTime:0, // 数据查询的起始时间 10位时间戳 startTime: state.rankStartTime ? state.rankStartTime : 0, // 数据查询的起始时间 10位时间戳
endTime: state.rankEndTime?state.rankEndTime:0, endTime: state.rankEndTime ? state.rankEndTime : 0,
size: 10, // 前多少名 size: 10, // 前多少名
type: Number(state.valuestu3), // 查询类型 0 学员积分榜 1 小组积分榜 type: Number(state.valuestu3), // 查询类型 0 学员积分榜 1 小组积分榜
}; };
api api
.scoreRank(obj) .scoreRank(obj)
.then((res) => { .then((res) => {
console.log("获取项目积分-榜单", res); console.log("获取项目积分-榜单", res);
if(res.data.code==200){ if (res.data.code == 200) {
state.datascore = res.data.data; state.datascore = res.data.data;
state.datascoreg = res.data.data; state.datascoreg = res.data.data;
state.xuefentabledata = res.data.data; state.xuefentabledata = res.data.data;
state.scoreRankLoading = false; state.scoreRankLoading = false;
}else{ } else {
state.datascore = []; state.datascore = [];
state.datascoreg = []; state.datascoreg = [];
state.xuefentabledata = []; state.xuefentabledata = [];
@@ -2802,7 +2808,7 @@ export default {
.catch((err) => { .catch((err) => {
console.log("获取项目积分-榜单失败", err); console.log("获取项目积分-榜单失败", err);
message.destroy(); message.destroy();
message.error('榜单获取失败'); message.error("榜单获取失败");
state.datascore = []; state.datascore = [];
state.datascoreg = []; state.datascoreg = [];
state.xuefentabledata = []; state.xuefentabledata = [];
@@ -2819,25 +2825,27 @@ export default {
endTime: state.rankEndTime?state.rankEndTime:0, endTime: state.rankEndTime?state.rankEndTime:0,
stageId: state.valuestu2, // 阶段ID stageId: state.valuestu2, // 阶段ID
type: Number(state.valuestu3), // 查询类型 0 学员积分榜 1 小组积分榜 type: Number(state.valuestu3), // 查询类型 0 学员积分榜 1 小组积分榜
} };
console.log('我是获取得项目进度排行榜--》', obj) console.log("我是获取得项目进度排行榜--》", obj);
api.completionRank(obj).then(res=>{ api
console.log('项目进度榜单获取',res) .completionRank(obj)
if(res.data.datas){ .then((res) => {
state.jindutabledata = res.data.datas; console.log("项目进度榜单获取", res);
state.processRankLoading = false; if (res.data.datas) {
}else{ state.jindutabledata = res.data.datas;
state.processRankLoading = false;
} else {
state.jindutabledata = [];
state.processRankLoading = false;
}
})
.catch((err) => {
console.log(err);
state.jindutabledata = []; state.jindutabledata = [];
state.processRankLoading = false; state.processRankLoading = false;
} });
};
}).catch(err=>{
console.log(err)
state.jindutabledata = [];
state.processRankLoading = false;
})
}
// 项目学时榜单 // 项目学时榜单
const studytimeRank = () => { const studytimeRank = () => {
@@ -2930,27 +2938,30 @@ export default {
} }
} }
levelList.stageList = res.data.data.stageList; levelList.stageList = res.data.data.stageList;
if(levelList.stageList.length==1){ if (levelList.stageList.length == 1) {
// 无解段任务 // 无解段任务
state.rankjieduan = [{value:0, label:'无阶段'}]; state.rankjieduan = [{ value: 0, label: "无阶段" }];
state.valuestu2 = 0; state.valuestu2 = 0;
}else{ } else {
// 有阶段任务 // 有阶段任务
let arrStage = [] let arrStage = [];
for(let i=0; i<levelList.stageList.length;i++){ for (let i = 0; i < levelList.stageList.length; i++) {
if(levelList.stageList[i].stageId!=='0'){ if (levelList.stageList[i].stageId !== "0") {
let obj = { let obj = {
value:levelList.stageList[i].stageId, value: levelList.stageList[i].stageId,
label:levelList.stageList[i].name label: levelList.stageList[i].name,
} };
arrStage.push(obj) arrStage.push(obj);
} }
} }
state.rankjieduan = arrStage; state.rankjieduan = arrStage;
state.valuestu2 = arrStage[0].value; state.valuestu2 = arrStage[0].value;
} }
console.log('----------------------------------->', res.data.data.stageList) console.log(
"----------------------------------->",
res.data.data.stageList
);
//暂时传个固定的id用 到时候看数据里面是否有在更换 //暂时传个固定的id用 到时候看数据里面是否有在更换
// state.projectTaskId = res.data.data.stageList[0].taskList[0].projectTaskId // state.projectTaskId = res.data.data.stageList[0].taskList[0].projectTaskId
@@ -3203,13 +3214,13 @@ export default {
}; };
//考试管理的抽屉 //考试管理的抽屉
const showTest = (name, id, data) => { const showTest = (name, id, data) => {
if(data.startTime==null && data.endTime==null){ if (data.startTime == null && data.endTime == null) {
// 外部考试抽屉显示 // 外部考试抽屉显示
state.TMvisibleExternal = true; state.TMvisibleExternal = true;
state.examData = data; state.examData = data;
state.showTestText = name; state.showTestText = name;
state.projectTaskId = id; state.projectTaskId = id;
}else{ } else {
// 系统考试抽屉显示 // 系统考试抽屉显示
state.TMvisible = true; state.TMvisible = true;
state.examData = data; state.examData = data;
@@ -3625,8 +3636,8 @@ export default {
state.tabFlag = false; state.tabFlag = false;
} }
if(e!=7){ if (e != 7) {
state.ischeckCertificate=false state.ischeckCertificate = false;
} }
console.log("切换了", state.tabFlag); console.log("切换了", state.tabFlag);
}; };
@@ -4566,8 +4577,205 @@ state.ischeckCertificate=false
return typeRules[type]; return typeRules[type];
}; };
// 判断当前任务已结束及时间意义上的结束 提示用户
function judgeTaskIsEnd(type, endTimes, status) {
// type 任务类型 endTime 结束时间 status 任务状态 (状态 0 未完成 1 已完成 2 未开始 3 已结束)
console.log(type, endTimes, status);
let isEnd = false;
let nowTime = new Date().getTime();
let endTime = new Date().getTime(endTimes);
switch (type) {
case 1:
status == 3
? (isEnd = true)
: nowTime > endTime
? (isEnd = true)
: (isEnd = false);
break;
case 3:
status == 3
? (isEnd = true)
: nowTime > endTime
? (isEnd = true)
: (isEnd = false);
break;
case 5:
status == 3
? (isEnd = true)
: nowTime > endTime
? (isEnd = true)
: (isEnd = false);
break;
case 7:
status == 3
? (isEnd = true)
: nowTime > endTime
? (isEnd = true)
: (isEnd = false);
break;
case 10:
status == 3
? (isEnd = true)
: nowTime > endTime
? (isEnd = true)
: (isEnd = false);
break;
}
return isEnd;
}
//显示二维码弹窗 //显示二维码弹窗
const showCodeModel = (item) => { const showCodeModel = (item) => {
if (judgeTaskIsEnd(item.type, state.endTime, state.status)) {
message.error("当前任务已结束");
return;
}
console.log("item", item);
let codeUrl = "";
// 在线课 停用 -- 暂时没有在线课停用标记
if (item.type == 1) {
if (item.taskStatus == 1 || item.taskStatus == 2)
return message.error("该任务无法学习,请联系管理员进行替换。");
window.open(
window.location.protocol +
import.meta.env.VITE_BOE_ONLINE_CLASS_URL +
item.targetId,
"_top"
);
}
if (item.type == 2) {
let date1 = new Date(item.endTime).getTime();
let date2 = new Date().getTime();
if (date1 < date2) return message.warning("当前面授课已结束");
if (item.taskStatus == 1 || item.taskStatus == 2)
return message.error("该任务无法学习,请联系管理员进行替换。");
codeUrl =
window.location.protocol +
process.env.VUE_APP_H5 +
"/externalexam?courseId=" +
item.courseId;
}
if (item.type == 4) {
let date1 = new Date(item.endTime).getTime();
let date2 = new Date().getTime();
if (date1 < date2) return message.warning("当前作业已结束");
codeUrl =
window.location.protocol +
process.env.VUE_APP_H5 +
"/homeworkpage?courseId=" +
item.courseId +
"&type=1&id=" +
item.projectTaskId;
}
// 考试 停用
if (item.type == 5) {
if (item.taskStatus == 1 || item.taskStatus == 2)
return message.error("该任务无法学习,请联系管理员进行替换。");
// 此处判断外部考试跳转
if (item.startTime == null || item.endTime == null) {
codeUrl =
window.location.protocol +
process.env.VUE_APP_H5 +
"/externalexam?courseId=" +
item.courseId;
}
}
// 直播结束时间
if (item.type == 6) {
let date1 = new Date(item.endTime).getTime();
let date2 = new Date().getTime();
if (date1 < date2) return message.warning("当前直播已结束");
codeUrl =
window.location.protocol +
process.env.VUE_APP_H5 +
"/livebroadcast?courseId=" +
item.courseId +
"&type=1&id=" +
item.projectTaskId;
}
// 外链
if (item.type == 7) {
codeUrl =
window.location.protocol +
process.env.VUE_APP_H5 +
"/outerchain?courseId=" +
item.courseId +
"&type=1&id=" +
item.projectTaskId +
"&status=" +
item.status +
"&chapterOrStageId=" +
item.stageId +
"&infoId=" +
state.projectId;
}
//讨论
if (item.type == 8) {
codeUrl =
window.location.protocol +
process.env.VUE_APP_H5 +
"/discusspage?courseId=" +
item.courseId +
"&type=1&id=" +
item.projectTaskId;
}
//活动
if (item.type == 9) {
let date1 = new Date(item.endTime).getTime();
let date2 = new Date().getTime();
if (date1 < date2) return message.warning("当前活动已结束");
codeUrl =
window.location.protocol +
process.env.VUE_APP_H5 +
"/activitiespage?courseId=" +
item.courseId +
"&type=1&id=" +
item.projectTaskId;
}
//活动
if (item.type == 10) {
codeUrl =
window.location.protocol +
process.env.VUE_APP_H5 +
"/evaluation?courseId=" +
item.courseId +
"&evaType=" +
item.evaType +
"&targetId=" +
item.targetId;
}
// 评估 停用
if (item.type == 11) {
if (item.taskStatus == 1 || item.taskStatus == 2)
return message.error("该任务无法学习,请联系管理员进行替换。");
codeUrl =
window.location.protocol +
process.env.VUE_APP_H5 +
"/investigatage?courseId=" +
item.courseId +
"&type=1&id=" +
item.projectTaskId +
"&chapterOrStageId=" +
item.stageId +
"&infoId=" +
state.projectId;
}
// 投票
if (item.type == 12) {
codeUrl =
window.location.protocol +
process.env.VUE_APP_H5 +
"/ballotpage?courseId=" +
item.courseId +
"&btype=2&id=" +
item.projectTaskId +
"&chapterOrStageId=" +
item.chapterId +
"&infoId=" +
state.projectId;
}
state.codevisible = true; state.codevisible = true;
let obj = { let obj = {
title: "[" + checkType(item.type) + "]二维码", title: "[" + checkType(item.type) + "]二维码",
@@ -4582,7 +4790,7 @@ state.ischeckCertificate=false
let obj = { let obj = {
title: "[项目]二维码", title: "[项目]二维码",
name: state.name, name: state.name,
url: codeUrl, // url: codeUrl,
}; };
state.codeInfo = obj; state.codeInfo = obj;
}; };