feat:增加面授导入成绩以及修改签到

This commit is contained in:
lixg
2023-01-11 16:46:40 +08:00
parent 2f942cbf63
commit 55a64cd6ef
5 changed files with 189 additions and 40 deletions

View File

@@ -395,7 +395,8 @@ export default {
// userName: "", // userName: "",
}; };
api api
.attendanceSign(obj, (res) => { .attendanceSign(obj)
.then((res) => {
console.log("签到结果", res, obj); console.log("签到结果", res, obj);
if (res.data.code === 200) { if (res.data.code === 200) {
message.destroy(); message.destroy();
@@ -562,11 +563,18 @@ export default {
}, },
{ {
title: "签到时间", title: "签到时间",
dataIndex: "cur", dataIndex: "signTime",
key: "cur", key: "signTime",
width: 110, width: 110,
align: "center", align: "center",
className: "h", className: "h",
customRender: (text) => {
return (
<div class="racona">
<span>{text.record.signTime ? text.record.signTime : "-"}</span>
</div>
);
},
}, },
// { // {
// title: "签退时间", // title: "签退时间",
@@ -578,19 +586,40 @@ export default {
// }, // },
{ {
title: "考勤", title: "考勤",
dataIndex: "time", dataIndex: "signStatus",
key: "time", key: "signStatus",
width: 50, width: 50,
align: "center", align: "center",
className: "h", className: "h",
customRender: (text) => {
// console.log("text", text);
return (
<div class="racona">
<span>
{text.record.signStatus
? "签到"
: text.record.leaveStatus
? "请假"
: "-"}
</span>
</div>
);
},
}, },
{ {
title: "签到状态", title: "签到状态",
dataIndex: "state", dataIndex: "signStatus",
key: "state", key: "signStatus",
width: 50, width: 50,
align: "center", align: "center",
className: "h", className: "h",
customRender: (text) => {
return (
<div class="racona">
<span>{text.record.signStatus ? "正常" : "异常"}</span>
</div>
);
},
}, },
{ {
title: "考勤情况", title: "考勤情况",
@@ -607,7 +636,7 @@ export default {
<a-radio-group name="radioGroup"> <a-radio-group name="radioGroup">
<a-radio <a-radio
value="1" value="1"
checked={text.record.signIn} checked={text.record.signStatus}
onChange={(e) => { onChange={(e) => {
console.log("点击签到", e); console.log("点击签到", e);
let obj = { let obj = {
@@ -622,15 +651,17 @@ export default {
// userName: "", // userName: "",
}; };
api api
.attendanceSign(obj, (res) => { .attendanceSign(obj)
.then((res) => {
console.log("签到结果", res, obj, e); console.log("签到结果", res, obj, e);
if (res.data.code === 200) { if (res.data.code === 200) {
text.record.signIn = true; text.record.signStatus = true;
getStudent();
} }
}) })
.catch((err) => { .catch((err) => {
console.log("签到失败", err, obj); console.log("签到失败", err, obj);
text.record.signIn = false; text.record.signStatus = false;
}); });
}} }}
> >
@@ -638,7 +669,7 @@ export default {
</a-radio> </a-radio>
<a-radio <a-radio
value="2" value="2"
checked={text.record.leave} checked={text.record.leaveStatus}
onChange={(e) => { onChange={(e) => {
console.log("点击请假", e, props.datasource); console.log("点击请假", e, props.datasource);
let obj = { let obj = {
@@ -652,15 +683,17 @@ export default {
type: 1, type: 1,
}; };
api api
.attendanceLeave(obj, (res) => { .attendanceLeave(obj)
.then((res) => {
console.log("请假结果", res, obj, e); console.log("请假结果", res, obj, e);
if (res.data.code === 200) { if (res.data.code === 200) {
text.record.leave = true; text.record.leaveStatus = true;
getStudent();
} }
}) })
.catch((err) => { .catch((err) => {
console.log("请假结果", err, obj); console.log("请假结果", err, obj);
text.record.leave = false; text.record.leaveStatus = false;
}); });
}} }}
> >

View File

@@ -68,7 +68,7 @@
</div> </div>
</div> </div>
<div class="btnss" style="margin-top: 20px"> <div class="btnss" style="margin-top: 20px">
<!-- <div class="btn btn1" style="margin-right: 20px" @click="godie"> <!-- <div class="btn btn1" style="margin-right: 20px" @click="godie">
<div class="img1"></div> <div class="img1"></div>
<div class="wz">催促学习</div> <div class="wz">催促学习</div>
</div> </div>
@@ -76,8 +76,8 @@
<div class="btn btn2" @click="allStuOver"> <div class="btn btn2" @click="allStuOver">
<div class="wz">批量标注完成</div> <div class="wz">批量标注完成</div>
</div> </div>
<div class="btn btn2"> <div class="btn btn2" @click="showEntryScore">
<div class="wz" @click="showEntryScore">批量录入成绩</div> <div class="wz">批量录入成绩</div>
</div> </div>
<div class="btn btn2" @click="exportTaskStu"> <div class="btn btn2" @click="exportTaskStu">
<div class="img2"></div> <div class="img2"></div>
@@ -161,7 +161,12 @@
v-model:getStudent="getStudent" v-model:getStudent="getStudent"
/> />
<!-- 录入成绩抽屉 --> <!-- 录入成绩抽屉 -->
<entry-scores v-model:Evisible="Evisible" /> <EScore
v-model:eScorevisible="Evisible"
:type="1"
:id="projectTaskInfo?.projectTaskId"
v-model:searchTaskList="searchTaskList"
/>
<!-- 查看作业抽屉 --> <!-- 查看作业抽屉 -->
<CKWork v-model:CWvisible="CWvisible" /> <CKWork v-model:CWvisible="CWvisible" />
<!-- 查看答卷抽屉 --> <!-- 查看答卷抽屉 -->
@@ -180,14 +185,14 @@ import { message } from "ant-design-vue";
import ASOver from "../AllStuOver.vue"; import ASOver from "../AllStuOver.vue";
import CKWork from "../CheckWork.vue"; import CKWork from "../CheckWork.vue";
import CQue from "../CheckQue.vue"; import CQue from "../CheckQue.vue";
import EntryScores from "../EntryScores.vue"; import EScore from "../ExportScore.vue";
// import * as api from "../../../api/index"; // import * as api from "../../../api/index";
import * as api from "../../../api/index1"; import * as api from "../../../api/index1";
import ExportHomeWork from "../../Modals/ExportHomeWork.vue"; import ExportHomeWork from "../../Modals/ExportHomeWork.vue";
export default { export default {
name: "ProjectFaceTaskManage", name: "ProjectFaceTaskManage",
components: { components: {
EntryScores, EScore,
CKWork, CKWork,
CQue, CQue,
ASOver, ASOver,

View File

@@ -388,7 +388,8 @@ export default {
type: 2, type: 2,
}; };
api api
.attendanceSign(obj, (res) => { .attendanceSign(obj)
.then((res) => {
console.log("签到结果", res, obj); console.log("签到结果", res, obj);
if (res.data.code === 200) { if (res.data.code === 200) {
message.destroy(); message.destroy();
@@ -503,11 +504,18 @@ export default {
}, },
{ {
title: "签到时间", title: "签到时间",
dataIndex: "cur", dataIndex: "signTime",
key: "cur", key: "signTime",
width: 110, width: 110,
align: "center", align: "center",
className: "h", className: "h",
customRender: (text) => {
return (
<div class="racona">
<span>{text.record.signTime ? text.record.signTime : "-"}</span>
</div>
);
},
}, },
// { // {
// title: "签退时间", // title: "签退时间",
@@ -519,19 +527,40 @@ export default {
// }, // },
{ {
title: "考勤", title: "考勤",
dataIndex: "time", dataIndex: "signStatus",
key: "time", key: "signStatus ",
width: 50, width: 50,
align: "center", align: "center",
className: "h", className: "h",
customRender: (text) => {
// console.log("text", text);
return (
<div class="racona">
<span>
{text.record.signStatus
? "签到"
: text.record.leaveStatus
? "请假"
: "-"}
</span>
</div>
);
},
}, },
{ {
title: "签到状态", title: "签到状态",
dataIndex: "state", dataIndex: "signStatus",
key: "state", key: "signStatus",
width: 50, width: 50,
align: "center", align: "center",
className: "h", className: "h",
customRender: (text) => {
return (
<div class="racona">
<span>{text.record.signStatus ? "正常" : "异常"}</span>
</div>
);
},
}, },
{ {
title: "考勤情况", title: "考勤情况",
@@ -548,7 +577,7 @@ export default {
<a-radio-group name="radioGroup"> <a-radio-group name="radioGroup">
<a-radio <a-radio
value="1" value="1"
checked={text.record.signIn} checked={text.record.signStatus}
onChange={(e) => { onChange={(e) => {
console.log("点击签到", e); console.log("点击签到", e);
let obj = { let obj = {
@@ -562,15 +591,17 @@ export default {
type: 2, type: 2,
}; };
api api
.attendanceSign(obj, (res) => { .attendanceSign(obj)
.then((res) => {
console.log("签到结果", res, obj, e); console.log("签到结果", res, obj, e);
if (res.data.code === 200) { if (res.data.code === 200) {
text.record.signIn = true; text.record.signStatus = true;
getStudent();
} }
}) })
.catch((err) => { .catch((err) => {
console.log("签到失败", err, obj); console.log("签到失败", err, obj);
text.record.signIn = false; text.record.signStatus = false;
}); });
}} }}
> >
@@ -578,7 +609,7 @@ export default {
</a-radio> </a-radio>
<a-radio <a-radio
value="2" value="2"
checked={text.record.leave} checked={text.record.leaveStatus}
onChange={(e) => { onChange={(e) => {
console.log("点击请假", e, props.datasource); console.log("点击请假", e, props.datasource);
let obj = { let obj = {
@@ -593,15 +624,17 @@ export default {
// userName: "", // userName: "",
}; };
api api
.attendanceLeave(obj, (res) => { .attendanceLeave(obj)
.then((res) => {
console.log("请假结果", res, obj, e); console.log("请假结果", res, obj, e);
if (res.data.code === 200) { if (res.data.code === 200) {
text.record.leave = true; text.record.leaveStatus = true;
getStudent();
} }
}) })
.catch((err) => { .catch((err) => {
console.log("请假结果", err, obj); console.log("请假结果", err, obj);
text.record.leave = false; text.record.leaveStatus = false;
}); });
}} }}
> >
@@ -815,6 +848,53 @@ export default {
} }
}; };
//计算签到时间
// function isSignClick() {
// let beginTime = new Date(datasource.startTime).getTime();
// let endTime = datasource.endTime
// timer = setInterval(() => {
// let beginTime = new Date(data.value.planDto.beginTime).getTime();
// let endTime = !data.value.planDto.afterStart
// ? new Date(data.value.planDto.endTime).getTime()
// : new Date(data.value.planDto.beginTime).getTime();
// let nowTime = new Date().getTime();
// if (data.value.planDto.beforeStart && data.value.planDto.afterStart) {
// //有开始前有开始后
// beginTime = beginTime - data.value.planDto.beforeStart * 60 * 1000;
// endTime = endTime + data.value.planDto.afterStart * 60 * 1000;
// console.log("1111");
// } else if (
// data.value.planDto.beforeStart &&
// !data.value.planDto.afterStart
// ) {
// //只有开始前无开始后
// beginTime = beginTime - data.value.planDto.beforeStart * 60 * 1000;
// console.log("11112222");
// } else if (
// !data.value.planDto.beforeStart &&
// data.value.planDto.afterStart
// ) {
// //无开始前有开始后
// endTime = endTime + data.value.planDto.afterStart * 60 * 1000;
// console.log("1111333");
// }
// if (nowTime < endTime && nowTime > beginTime) {
// state.isAllowSign = true;
// } else {
// state.isAllowSign = false;
// }
// // console.log(
// // "isAllowSign",
// // state.isAllowSign,
// // nowTime,
// // endTime,
// // beginTime,
// // nowTime < endTime,
// // nowTime > beginTime
// // );
// }, 1000);
// }
// isSignClick();
return { return {
...toRefs(state), ...toRefs(state),
selectProjectName, selectProjectName,

View File

@@ -145,7 +145,12 @@
v-model:getStudent="getStudent" v-model:getStudent="getStudent"
/> />
<!-- 录入成绩抽屉 --> <!-- 录入成绩抽屉 -->
<entry-scores v-model:Evisible="Evisible" /> <EScore
v-model:eScorevisible="Evisible"
:type="2"
:id="datasource?.routerTaskId"
v-model:searchTaskList="searchTaskList"
/>
<!-- 查看作业抽屉 --> <!-- 查看作业抽屉 -->
<CKWork v-model:CWvisible="CWvisible" /> <CKWork v-model:CWvisible="CWvisible" />
<!-- 查看答卷抽屉 --> <!-- 查看答卷抽屉 -->
@@ -163,14 +168,14 @@ import { message } from "ant-design-vue";
import ASOver from "../AllStuOver.vue"; import ASOver from "../AllStuOver.vue";
import CKWork from "../CheckWork.vue"; import CKWork from "../CheckWork.vue";
import CQue from "../CheckQue.vue"; import CQue from "../CheckQue.vue";
import EntryScores from "../EntryScores.vue"; import EScore from "../ExportScore.vue";
// import * as api from "../../../api/index"; // import * as api from "../../../api/index";
import * as api from "../../../api/index1"; import * as api from "../../../api/index1";
import ExportHomeWork from "../../Modals/ExportHomeWork.vue"; import ExportHomeWork from "../../Modals/ExportHomeWork.vue";
export default { export default {
name: "RouterFaceTeachManage", name: "RouterFaceTeachManage",
components: { components: {
EntryScores, EScore,
CKWork, CKWork,
CQue, CQue,
ASOver, ASOver,

View File

@@ -89,7 +89,7 @@
</a-col> </a-col>
<!-- 新加导入学员 批量换组 导出学习信息 --> <!-- 新加导入学员 批量换组 导出学习信息 -->
<a-col :span="1.5" v-if="type === 1 || type === 2"> <a-col :span="1.5" v-if="type === 1 || type === 2">
<a-button class="cus-btn white"> <a-button class="cus-btn white" @click="showImpStu">
<template #icon <template #icon
><img ><img
style="margin-right: 10px" style="margin-right: 10px"
@@ -351,6 +351,16 @@
v-model:exportHomeWorkV="exportHomeWorkV" v-model:exportHomeWorkV="exportHomeWorkV"
:downloadUrl="downloadUrl" :downloadUrl="downloadUrl"
/> />
<!-- 导入学员抽屉 -->
<!-- :courseId="projectTaskInfo.courseId"
:courseType="2" -->
<imp-stu
v-model:AddImpStuvisible="AddImpStuvisible"
@AddImpStuvisibleClose="AddImpStuvisibleClose"
:courseId="id"
:type="type"
/>
</template> </template>
<script setup> <script setup>
import { computed, defineProps, onMounted, ref, watch } from "vue"; import { computed, defineProps, onMounted, ref, watch } from "vue";
@@ -364,6 +374,7 @@ import EScore from "../drawers/ExportScore.vue";
import OrgClass from "@/components/project/OrgClass"; import OrgClass from "@/components/project/OrgClass";
import ExportHomeWork from "../Modals/ExportHomeWork.vue"; import ExportHomeWork from "../Modals/ExportHomeWork.vue";
import * as api from "../../api/index1"; import * as api from "../../api/index1";
import ImpStu from "../drawers/AddLevelImportStu";
const props = defineProps({ const props = defineProps({
type: Number, type: Number,
id: String, id: String,
@@ -728,6 +739,21 @@ const updateStatus = (status, id) => {
console.log("批量更新学员状态失败", err); console.log("批量更新学员状态失败", err);
}); });
}; };
//导入学员
const AddImpStuvisible = ref(false); //导入学员抽屉
const showImpStu = () => {
AddImpStuvisible.value = true;
};
const AddImpStuvisibleClose = (isget) => {
console.log("关闭了导入学员弹框", isget);
{
/* 此处操作重新获取学员列表数据 */
}
if (isget) {
getStuList();
}
};
</script> </script>
<style lang="scss"> <style lang="scss">
.TableStudent { .TableStudent {