mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-18 23:36:46 +08:00
style:新版面授课界面添加
This commit is contained in:
@@ -1,14 +1,14 @@
|
||||
<template>
|
||||
<a-drawer
|
||||
:visible="FSvisible"
|
||||
class="drawerStyle ProjectFaceStu"
|
||||
class="drawerStyle RouterFaceStu"
|
||||
placement="right"
|
||||
width="80%"
|
||||
@after-visible-change="afterVisibleChange"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">【面授】{{ projectTaskInfo?.name }}</div>
|
||||
<div class="headerTitle">【面授】{{ datasource?.name }}</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../../assets/images/basicinfo/close.png"
|
||||
@@ -17,21 +17,29 @@
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="titl">
|
||||
<div class="endtime">
|
||||
起止时间:{{
|
||||
projectTaskInfo && projectTaskInfo.startTime
|
||||
? projectTaskInfo.startTime
|
||||
: "-"
|
||||
}}
|
||||
~
|
||||
{{
|
||||
projectTaskInfo && projectTaskInfo.endTime
|
||||
? projectTaskInfo.endTime
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
<div class="endtime" style="margin-left: 64px">
|
||||
允许签到时段:{{ beginTime }}~{{ endTime }}
|
||||
<div
|
||||
style="width: 100%;height:220px;display: flex;flex-wrap: nowrap;overflow-x: scroll;">
|
||||
<div v-for="item,n in [1,2,3]" :key="n" style="cursor: pointer;">
|
||||
<div
|
||||
@click="ChoiceCourse(item)"
|
||||
style="width: 360px;height:180px;margin-right: 32px;display: flex;flex-direction: column;padding: 16px;"
|
||||
:style="{background:item==currentCourse?'rgb(247, 251, 253)':'rgb(250, 250, 250)'}">
|
||||
<div style="font-size: 16px;">第{{item}}次开课</div>
|
||||
<div style="font-size: 14px;margin-top: 12px;">2023年管理者面授课程({{item}})</div>
|
||||
<div style="font-size: 14px;">
|
||||
<img src="../../../assets/images/courseManage/time.png" alt="" srcset="" style="width:16px;height:16px;">
|
||||
2023.3.14 12:34 ~ 2023.3.17 12:34
|
||||
</div>
|
||||
<div style="font-size: 14px;margin-top: 6px;margin-bottom: 6px;">
|
||||
<img src="../../../assets/images/courseManage/position.png" alt="" srcset="" style="width:16px;height:16px;">
|
||||
京东方大厦({{item}})号楼
|
||||
</div>
|
||||
<div style="font-size: 14px;">
|
||||
<img src="../../../assets/images/courseManage/persion.png" alt="" srcset="" style="width:16px;height:16px;">
|
||||
董瑞华
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -45,12 +53,12 @@
|
||||
placeholder="请输入姓名"
|
||||
/>
|
||||
</div>
|
||||
<!-- <div class="namecon" style="margin-right: 30px">
|
||||
<div class="namecon" style="margin-right: 30px">
|
||||
<div class="name">考勤:</div>
|
||||
<div class="select">
|
||||
<a-select
|
||||
v-model:value="projectName"
|
||||
style="width: 160px"
|
||||
style="width: 200px"
|
||||
placeholder="请选择"
|
||||
:options="projectNameList"
|
||||
@change="selectProjectName"
|
||||
@@ -58,7 +66,7 @@
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="namecon">
|
||||
<div class="name">签到状态:</div>
|
||||
<div class="select">
|
||||
@@ -82,13 +90,13 @@
|
||||
<div class="img1"></div>
|
||||
<div class="wz">搜索</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="resetTaskList">
|
||||
<div class="btn btn1" @click="resetTaskList">
|
||||
<div class="img2"></div>
|
||||
<div class="wz">重置</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnss" style="margin-top: 20px">
|
||||
<div class="btnss" style="margin-top: 20px" v-if="checkPer(permissions,createId)">
|
||||
<div
|
||||
class="btn btn1"
|
||||
style="margin-right: 20px"
|
||||
@@ -100,10 +108,10 @@
|
||||
<div class="img1"></div>
|
||||
<div class="wz">导入学员</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="showCopyModal">
|
||||
<div class="btn btn1" @click="showCopyModal" style="margin-right: 20px">
|
||||
<div class="wz">批量签到</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="exportTaskStu">
|
||||
<div class="btn btn1" @click="exportTaskStu">
|
||||
<div class="img2"></div>
|
||||
<div class="wz">导出数据</div>
|
||||
</div>
|
||||
@@ -121,14 +129,13 @@
|
||||
<div class="right" @click="clearLine">清空</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pad"></div> -->
|
||||
<div class="pad"></div> -->
|
||||
|
||||
<div class="tableBox" style="margin-top: 30px">
|
||||
<a-table
|
||||
style="border: 1px solid #f2f6fe"
|
||||
:columns="tableDataFunc()"
|
||||
:data-source="tabledata"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
expandRowByClick="true"
|
||||
@expand="expandTable"
|
||||
:scroll="{ x: 1300 }"
|
||||
@@ -185,7 +192,7 @@
|
||||
<imp-stu
|
||||
v-model:AddImpStuvisible="AddImpStuvisible"
|
||||
@AddImpStuvisibleClose="AddImpStuvisibleClose"
|
||||
:courseId="projectTaskInfo.courseId"
|
||||
:courseId="datasource.courseId"
|
||||
:courseType="3"
|
||||
/>
|
||||
<!-- 批量签到弹窗 -->
|
||||
@@ -237,6 +244,8 @@ import * as api from "../../../api/index1";
|
||||
import TwoDimensionalCode from "../../../components/TwoDimensionalCode";
|
||||
import { message } from "ant-design-vue";
|
||||
import { toDate } from "../../../api/method";
|
||||
import {checkPer} from "@/utils/utils";
|
||||
|
||||
export default {
|
||||
name: "FaceManage",
|
||||
components: {
|
||||
@@ -245,11 +254,19 @@ export default {
|
||||
TwoDimensionalCode,
|
||||
},
|
||||
props: {
|
||||
createId: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
permissions: {
|
||||
type: String,
|
||||
default: null,
|
||||
},
|
||||
FSvisible: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
projectTaskInfo: {
|
||||
datasource: {
|
||||
type: Object,
|
||||
default: function () {
|
||||
return {};
|
||||
@@ -267,6 +284,7 @@ export default {
|
||||
closeStop: false, //签退弹窗关闭图标
|
||||
signQRvisible: false, //二维码弹窗
|
||||
name: null,
|
||||
projectName: undefined,
|
||||
projectName2: undefined,
|
||||
showmodal: false, //勾选提示框
|
||||
closable: false, //modal右上角的关闭按钮
|
||||
@@ -279,23 +297,23 @@ export default {
|
||||
projectNameList: [
|
||||
{
|
||||
id: 1,
|
||||
value: "项目一",
|
||||
label: "项目一",
|
||||
value: "签到",
|
||||
label: "签到",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
value: "项目二",
|
||||
label: "项目二",
|
||||
value: "缺勤",
|
||||
label: "缺勤",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
value: "项目三",
|
||||
label: "项目三",
|
||||
value: "迟到",
|
||||
label: "迟到",
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
value: "项目四",
|
||||
label: "项目四",
|
||||
value: "请假",
|
||||
label: "请假",
|
||||
},
|
||||
],
|
||||
projectNameList2: [
|
||||
@@ -339,17 +357,24 @@ export default {
|
||||
value: "3",
|
||||
},
|
||||
],
|
||||
// selectOption: [],
|
||||
codevisible: false, //二维码弹窗
|
||||
codeType: null,
|
||||
codeIndex: null,
|
||||
codeInfo: null, //二维码内容
|
||||
// selectOption: [],
|
||||
beginTime: null, //签到开始时间
|
||||
endTime: null, //签到结束时间
|
||||
currentCourse: 1,
|
||||
});
|
||||
|
||||
const ChoiceCourse = (n) => {
|
||||
state.currentCourse = n;
|
||||
}
|
||||
|
||||
const afterVisibleChange = (bol) => {
|
||||
if (bol == true) {
|
||||
getStudent();
|
||||
console.log("1111");
|
||||
isSignClick();
|
||||
}
|
||||
};
|
||||
@@ -391,14 +416,13 @@ export default {
|
||||
//批量签到
|
||||
const batchSign = () => {
|
||||
let obj = {
|
||||
courseId: Number(props.projectTaskInfo.courseId),
|
||||
projectId: Number(props.projectTaskInfo.projectId),
|
||||
// routerId: Number(props.projectTaskInfo.projectId),
|
||||
courseId: Number(props.datasource.courseId),
|
||||
// projectId: 0,
|
||||
routerId: Number(props.datasource.routerId),
|
||||
ids: state.selectedStudents,
|
||||
taskId: Number(props.projectTaskInfo.projectTaskId),
|
||||
taskType: Number(props.projectTaskInfo.type),
|
||||
type: 3,
|
||||
// userName: "",
|
||||
taskId: Number(props.datasource.routerTaskId),
|
||||
taskType: Number(props.datasource.type),
|
||||
type: 2,
|
||||
};
|
||||
api
|
||||
.attendanceSign(obj)
|
||||
@@ -418,32 +442,17 @@ export default {
|
||||
console.log("签到失败", err, obj);
|
||||
});
|
||||
};
|
||||
|
||||
// const closeStopModal = () => {
|
||||
// state.stopModal = false;
|
||||
// };
|
||||
//显示签到二维码弹窗
|
||||
//二维码
|
||||
const qrcodeVisible = () => {
|
||||
state.codevisible = true;
|
||||
state.codeInfo = {
|
||||
title: "【签到】二维码",
|
||||
name: props.projectTaskInfo?.name,
|
||||
url:
|
||||
process.env.VUE_APP_BASE_API +
|
||||
`/admin/student/studentSign?taskId=${
|
||||
props.projectTaskInfo.projectTaskId
|
||||
}&taskType=${props.projectTaskInfo.type}&type=${1}`,
|
||||
};
|
||||
console.log("codeInfo", state.codeInfo);
|
||||
state.codeIndex = 0;
|
||||
state.codeType = 1;
|
||||
const signQR = () => {
|
||||
state.signQRvisible = true;
|
||||
};
|
||||
|
||||
const onSelectChange = (selectedRowKeys, e) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys, e);
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
// state.selectedStudents=e
|
||||
let array = [];
|
||||
for (let i = 0; i < e.length; i++) {
|
||||
array.push(e[i].studentId);
|
||||
@@ -455,44 +464,7 @@ export default {
|
||||
state.selectedRowKeys = [];
|
||||
state.selectedStudents = [];
|
||||
};
|
||||
// const getTableData = () => {
|
||||
// let arr = state.tabledata;
|
||||
// arr.map((value) => {
|
||||
// // console.log("value", value);
|
||||
// value.opacation = (
|
||||
// <div class="opa">
|
||||
// <a-checkbox
|
||||
// checked={value.signIn}
|
||||
// onChange={(e) => {
|
||||
// console.log("点击签到", e);
|
||||
// }}
|
||||
// >
|
||||
// 签到
|
||||
// </a-checkbox>
|
||||
// {/**
|
||||
// <a-checkbox
|
||||
// checked={value.signOut}
|
||||
// onChange={(e) => {
|
||||
// console.log("点击签退", e);
|
||||
// }}
|
||||
// >
|
||||
// 签退
|
||||
// </a-checkbox>
|
||||
// */}
|
||||
// <a-checkbox
|
||||
// checked={value.leave}
|
||||
// onChange={(e) => {
|
||||
// console.log("点击请假", e);
|
||||
// }}
|
||||
// >
|
||||
// 请假
|
||||
// </a-checkbox>
|
||||
// </div>
|
||||
// );
|
||||
// });
|
||||
// state.tabledata = arr;
|
||||
// };
|
||||
// getTableData();
|
||||
|
||||
const tableDataFunc = () => {
|
||||
const columns = [
|
||||
{
|
||||
@@ -500,7 +472,7 @@ export default {
|
||||
dataIndex: "studentUserNo",
|
||||
// width: "30%",
|
||||
key: "studentUserNo",
|
||||
width: 50,
|
||||
width: 120,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
@@ -538,10 +510,10 @@ export default {
|
||||
dataIndex: "studentDepartName",
|
||||
// width: "30%",
|
||||
key: "studentDepartName",
|
||||
width: 50,
|
||||
width: 60,
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
className: "h",
|
||||
ellipsis: true,
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
@@ -590,6 +562,38 @@ export default {
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "考勤",
|
||||
dataIndex: "signTime",
|
||||
key: "signTime",
|
||||
width: 110,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>{text.record.signTime ? text.record.signTime : "-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "签到状态",
|
||||
dataIndex: "signTime",
|
||||
key: "signTime",
|
||||
width: 110,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>{text.record.signTime ? text.record.signTime : "-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
// {
|
||||
// title: "签退时间",
|
||||
// dataIndex: "jin",
|
||||
@@ -598,45 +602,6 @@ export default {
|
||||
// align: "center",
|
||||
// className: "h",
|
||||
// },
|
||||
{
|
||||
title: "考勤",
|
||||
dataIndex: "signStatus",
|
||||
key: "signStatus",
|
||||
width: 50,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
// console.log("text", text);
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>
|
||||
{text.record.signStatus
|
||||
? "签到"
|
||||
: text.record.leaveStatus
|
||||
? "请假"
|
||||
: "-"}
|
||||
</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "签到状态",
|
||||
dataIndex: "signStatus",
|
||||
key: "signStatus",
|
||||
width: 50,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>{ text.record.signStatus == null && new Date().getTime() > new Date(state.endTime).getTime() ? "异常" : text.record.signStatus ? "正常" : text.record.leaveStatus ? "异常" : text.record.signStatus == null ? "-" : "异常" }</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "考勤情况",
|
||||
ellipsis: true,
|
||||
@@ -648,6 +613,7 @@ export default {
|
||||
// scopedSlots: { customRender: "action" }, //引入的插槽
|
||||
|
||||
customRender: (text) => {
|
||||
// console.log("text.record.signStatus", text.record.signStatus);
|
||||
return (
|
||||
<div class="opa">
|
||||
<a-radio
|
||||
@@ -656,15 +622,14 @@ export default {
|
||||
onChange={(e) => {
|
||||
console.log("点击签到", e);
|
||||
let obj = {
|
||||
courseId: Number(props.projectTaskInfo.courseId),
|
||||
projectId: Number(props.projectTaskInfo.projectId),
|
||||
// routerId: Number(props.projectTaskInfo.projectId),
|
||||
courseId: Number(props.datasource.courseId),
|
||||
// projectId: 0,
|
||||
routerId: Number(props.datasource.routerId),
|
||||
ids: [text.record.studentId],
|
||||
studentName: text.record.studentName,
|
||||
taskId: Number(props.projectTaskInfo.projectTaskId),
|
||||
taskType: Number(props.projectTaskInfo.type),
|
||||
type: 3,
|
||||
// userName: "",
|
||||
taskId: Number(props.datasource.routerTaskId),
|
||||
taskType: Number(props.datasource.type),
|
||||
type: 2,
|
||||
};
|
||||
api
|
||||
.attendanceSign(obj)
|
||||
@@ -688,16 +653,17 @@ export default {
|
||||
value="2"
|
||||
checked={text.record.leaveStatus}
|
||||
onChange={(e) => {
|
||||
console.log("点击请假", e, props.projectTaskInfo);
|
||||
console.log("点击请假", e, props.datasource);
|
||||
let obj = {
|
||||
courseId: Number(props.projectTaskInfo.courseId),
|
||||
projectId: Number(props.projectTaskInfo.projectId),
|
||||
// routerId: Number(props.projectTaskInfo.projectId),
|
||||
courseId: Number(props.datasource.courseId),
|
||||
// projectId: 0,
|
||||
routerId: Number(props.datasource.routerId),
|
||||
ids: [text.record.studentId],
|
||||
studentName: text.record.studentName,
|
||||
taskId: Number(props.projectTaskInfo.projectTaskId),
|
||||
taskType: Number(props.projectTaskInfo.type),
|
||||
type: 3,
|
||||
taskId: Number(props.datasource.routerTaskId),
|
||||
taskType: Number(props.datasource.type),
|
||||
type: 2,
|
||||
// userName: "",
|
||||
};
|
||||
api
|
||||
.attendanceLeave(obj)
|
||||
@@ -717,76 +683,6 @@ export default {
|
||||
>
|
||||
请假
|
||||
</a-radio>
|
||||
|
||||
{/**
|
||||
<a-checkbox
|
||||
checked={text.record.signIn}
|
||||
onChange={(e) => {
|
||||
console.log("点击签到", e);
|
||||
let obj = {
|
||||
courseId: Number(props.projectTaskInfo.courseId),
|
||||
projectId: Number(props.projectTaskInfo.projectId),
|
||||
// routerId: Number(props.projectTaskInfo.projectId),
|
||||
ids: [Number(text.record.studentId)],
|
||||
studentName: text.record.studentName,
|
||||
taskId: Number(props.projectTaskInfo.projectTaskId),
|
||||
taskType: Number(props.projectTaskInfo.type),
|
||||
type: 1,
|
||||
// userName: "",
|
||||
};
|
||||
api
|
||||
.attendanceSign(obj, (res) => {
|
||||
console.log("签到结果", res, obj, e);
|
||||
if (res.data.code === 200) {
|
||||
text.record.signIn = true;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("签到失败", err, obj);
|
||||
text.record.signIn = false;
|
||||
});
|
||||
}}
|
||||
>
|
||||
签到
|
||||
</a-checkbox>
|
||||
<a-checkbox
|
||||
checked={text.record.leave}
|
||||
onChange={(e) => {
|
||||
console.log("点击请假", e, props.projectTaskInfo);
|
||||
let obj = {
|
||||
courseId: Number(props.projectTaskInfo.courseId),
|
||||
projectId: Number(props.projectTaskInfo.projectId),
|
||||
// routerId: Number(props.projectTaskInfo.projectId),
|
||||
studentId: Number(text.record.studentId),
|
||||
studentName: text.record.studentName,
|
||||
taskId: Number(props.projectTaskInfo.projectTaskId),
|
||||
taskType: Number(props.projectTaskInfo.type),
|
||||
type: 1,
|
||||
};
|
||||
api
|
||||
.attendanceLeave(obj, (res) => {
|
||||
console.log("请假结果", res, obj, e);
|
||||
if (res.data.code === 200) {
|
||||
text.record.leave = true;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("请假结果", err, obj);
|
||||
text.record.leave = false;
|
||||
});
|
||||
}}
|
||||
>
|
||||
请假
|
||||
</a-checkbox>
|
||||
<a-checkbox
|
||||
checked={value.signOut}
|
||||
onChange={(e) => {
|
||||
console.log("点击签退", e);
|
||||
}}
|
||||
>
|
||||
签退
|
||||
</a-checkbox>
|
||||
*/}
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -797,18 +693,30 @@ export default {
|
||||
|
||||
//获取学员
|
||||
const getStudent = () => {
|
||||
console.log("我是传递的查询参数222", props.datasource, {
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
currentStageId: props.datasource.chapterId,
|
||||
type: 2,
|
||||
pid: props.datasource.routerId,
|
||||
// status: Number(state.name),
|
||||
studentName: state.name,
|
||||
signStatus: state.projectName2,
|
||||
taskId: props.datasource.routerTaskId,
|
||||
taskType: props.datasource.type,
|
||||
});
|
||||
api
|
||||
.AssessmentManagementMessage({
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
currentStageId: props.projectTaskInfo.stageId,
|
||||
// currentStageId: props.datasource.chapterId,
|
||||
type: 3,
|
||||
pid: props.projectTaskInfo.courseId,
|
||||
pid: props.datasource.courseId,
|
||||
// status: Number(state.name),
|
||||
studentName: state.name,
|
||||
// taskId: props.projectTaskInfo.projectTaskId,
|
||||
signStatus: state.projectName2,
|
||||
// taskType: props.projectTaskInfo.type,
|
||||
studentName: state.name,
|
||||
// taskId: props.datasource.routerTaskId,
|
||||
// taskType: props.datasource.type,
|
||||
})
|
||||
.then((res) => {
|
||||
console.log("获取面授管理学员", res);
|
||||
@@ -826,6 +734,7 @@ export default {
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
state.tabledata = [];
|
||||
state.tabledata = [{name:'测试数据'}];
|
||||
});
|
||||
};
|
||||
//搜索学员
|
||||
@@ -837,6 +746,7 @@ export default {
|
||||
};
|
||||
// 重置按钮
|
||||
function resetTaskList() {
|
||||
state.projectName = undefined;
|
||||
state.currentPage = 1;
|
||||
state.name = null;
|
||||
state.projectName2 = undefined;
|
||||
@@ -853,27 +763,33 @@ export default {
|
||||
};
|
||||
// 导出数据
|
||||
function exportTaskStu() {
|
||||
console.log("props.projectTaskInfo", props.projectTaskInfo);
|
||||
console.log("props.datasource", props.datasource);
|
||||
window.open(
|
||||
`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.projectTaskInfo.stageId}&type=3&pid=${props.projectTaskInfo.courseId}&thirdType=6`
|
||||
`${
|
||||
process.env.VUE_APP_BASE_API
|
||||
}/admin/student/exportTaskStudent?currentStageId=${
|
||||
props.datasource.chapterId
|
||||
}&type=3&pid=${props.datasource.courseId}&thirdType=7&taskId=${props.datasource.routerTaskId}`
|
||||
);
|
||||
// api
|
||||
// .exportTaskStudent({
|
||||
// pageNo: state.currentPage,
|
||||
// pageSize: state.pageSize,
|
||||
// currentStageId: props.projectTaskInfo.stageId,
|
||||
// currentTaskId: props.projectTaskInfo.projectTaskId,
|
||||
// type: 1,
|
||||
// pid: props.projectTaskInfo.projectId,
|
||||
// })
|
||||
// .then((res) => {
|
||||
// console.log(res);
|
||||
// })
|
||||
// .catch((err) => {
|
||||
// console.log(err);
|
||||
// });
|
||||
}
|
||||
|
||||
//二维码
|
||||
const qrcodeVisible = () => {
|
||||
state.codevisible = true;
|
||||
state.codeInfo = {
|
||||
title: "【签到】二维码",
|
||||
name: props.datasource?.name,
|
||||
url:
|
||||
process.env.VUE_APP_BASE_API +
|
||||
`/admin/student/studentSign?taskId=${
|
||||
props.datasource.routerTaskId
|
||||
}&taskType=${props.datasource.type}&type=${2}`,
|
||||
};
|
||||
console.log("codeInfo", state.codeInfo);
|
||||
state.codeIndex = 0;
|
||||
state.codeType = 1;
|
||||
};
|
||||
|
||||
{
|
||||
/* 添加学员弹框关闭,重新获取学员列表 */
|
||||
}
|
||||
@@ -886,42 +802,35 @@ export default {
|
||||
getStudent();
|
||||
}
|
||||
};
|
||||
|
||||
// 计算签到时间
|
||||
const isSignClick = () => {
|
||||
console.log("props.projectTaskInfo.startTime", props.projectTaskInfo);
|
||||
let beginTime = new Date(props.projectTaskInfo.startTime).getTime();
|
||||
let endTime = !props.projectTaskInfo.afterStart
|
||||
? new Date(props.projectTaskInfo.endTime).getTime()
|
||||
: new Date(props.projectTaskInfo.startTime).getTime();
|
||||
console.log("beginTime,endTime", beginTime, endTime);
|
||||
if (
|
||||
props.projectTaskInfo.beforeStart &&
|
||||
props.projectTaskInfo.afterStart
|
||||
) {
|
||||
console.log("计算签到时间", props.datasource);
|
||||
let beginTime = new Date(props.datasource.startTime).getTime();
|
||||
let endTime = !props.datasource.afterStart
|
||||
? new Date(props.datasource.endTime).getTime()
|
||||
: new Date(props.datasource.startTime).getTime();
|
||||
|
||||
if (props.datasource.beforeStart && props.datasource.afterStart) {
|
||||
//有开始前有开始后
|
||||
beginTime = beginTime - props.projectTaskInfo.beforeStart * 60 * 1000;
|
||||
endTime = endTime + props.projectTaskInfo.afterStart * 60 * 1000;
|
||||
console.log("1111");
|
||||
} else if (
|
||||
props.projectTaskInfo.beforeStart &&
|
||||
!props.projectTaskInfo.afterStart
|
||||
) {
|
||||
beginTime = beginTime - props.datasource.beforeStart * 60 * 1000;
|
||||
endTime = endTime + props.datasource.afterStart * 60 * 1000;
|
||||
console.log("1111", beginTime, endTime);
|
||||
} else if (props.datasource.beforeStart && !props.datasource.afterStart) {
|
||||
//只有开始前无开始后
|
||||
beginTime = beginTime - props.projectTaskInfo.beforeStart * 60 * 1000;
|
||||
console.log("11112222");
|
||||
} else if (
|
||||
!props.projectTaskInfo.beforeStart &&
|
||||
props.projectTaskInfo.afterStart
|
||||
) {
|
||||
beginTime = beginTime - props.datasource.beforeStart * 60 * 1000;
|
||||
console.log("11112222", beginTime);
|
||||
} else if (!props.datasource.beforeStart && props.datasource.afterStart) {
|
||||
//无开始前有开始后
|
||||
endTime = endTime + props.projectTaskInfo.afterStart * 60 * 1000;
|
||||
console.log("1111333");
|
||||
endTime = endTime + props.datasource.afterStart * 60 * 1000;
|
||||
console.log("1111333", endTime);
|
||||
}
|
||||
|
||||
state.beginTime = toDate(beginTime / 1000, "Y/M/D h:m");
|
||||
state.endTime = toDate(endTime / 1000, "Y/M/D h:m");
|
||||
console.log("beginTime,endTime", state.beginTime, state.endTime);
|
||||
};
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
selectProjectName,
|
||||
@@ -933,16 +842,18 @@ export default {
|
||||
showCopyModal,
|
||||
closeCopyModal,
|
||||
// closeStopModal,
|
||||
qrcodeVisible,
|
||||
signQR,
|
||||
afterVisibleChange,
|
||||
|
||||
checkPer,
|
||||
searchTaskList,
|
||||
resetTaskList,
|
||||
changePaginationStu,
|
||||
exportTaskStu,
|
||||
clearLine,
|
||||
qrcodeVisible,
|
||||
AddImpStuvisibleClose,
|
||||
batchSign,
|
||||
ChoiceCourse,
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -1065,7 +976,7 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
.ProjectFaceStu {
|
||||
.RouterFaceStu {
|
||||
// // width: 80%;
|
||||
// .ant-drawer-content-wrapper {
|
||||
// // max-width: 1000px;
|
||||
@@ -1161,7 +1072,7 @@ export default {
|
||||
.img2 {
|
||||
width: 16px;
|
||||
height: 18px;
|
||||
background-image: url(../../../assets/images/courseManage/reset1.png);
|
||||
background-image: url(../../../assets/images/courseManage/reset0.png);
|
||||
background-size: 100% 100%;
|
||||
margin-right: 7px;
|
||||
}
|
||||
@@ -1202,7 +1113,7 @@ export default {
|
||||
.img2 {
|
||||
width: 17px;
|
||||
height: 16px;
|
||||
background-image: url(../../../assets/images/coursewareManage/export.png);
|
||||
background-image: url(../../../assets/images/coursewareManage/export1.png);
|
||||
background-size: 100% 100%;
|
||||
margin-right: 7px;
|
||||
}
|
||||
|
||||
@@ -17,17 +17,30 @@
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="endtime">
|
||||
起止时间:{{
|
||||
projectTaskInfo && projectTaskInfo.startTime
|
||||
? projectTaskInfo.startTime
|
||||
: "-"
|
||||
}}
|
||||
~
|
||||
{{
|
||||
projectTaskInfo && projectTaskInfo.endTime
|
||||
? projectTaskInfo.endTime
|
||||
: "-"
|
||||
}}
|
||||
<div
|
||||
style="width: 100%;height:220px;display: flex;flex-wrap: nowrap;overflow-x: scroll;">
|
||||
<div v-for="item,n in [1,2,3]" :key="n" style="cursor: pointer;">
|
||||
<div
|
||||
@click="ChoiceCourse(item)"
|
||||
style="width: 360px;height:180px;margin-right: 32px;display: flex;flex-direction: column;padding: 16px;"
|
||||
:style="{background:item==currentCourse?'rgb(247, 251, 253)':'rgb(250, 250, 250)'}">
|
||||
<div style="font-size: 16px;">第{{item}}次开课</div>
|
||||
<div style="font-size: 14px;margin-top: 12px;">2023年管理者面授课程({{item}})</div>
|
||||
<div style="font-size: 14px;">
|
||||
<img src="../../../assets/images/courseManage/time.png" alt="" srcset="" style="width:16px;height:16px;">
|
||||
2023.3.14 12:34 ~ 2023.3.17 12:34
|
||||
</div>
|
||||
<div style="font-size: 14px;margin-top: 6px;margin-bottom: 6px;">
|
||||
<img src="../../../assets/images/courseManage/position.png" alt="" srcset="" style="width:16px;height:16px;">
|
||||
京东方大厦({{item}})号楼
|
||||
</div>
|
||||
<div style="font-size: 14px;">
|
||||
<img src="../../../assets/images/courseManage/persion.png" alt="" srcset="" style="width:16px;height:16px;">
|
||||
董瑞华
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search">
|
||||
<div class="namecon" style="margin-right: 30px">
|
||||
@@ -60,29 +73,29 @@
|
||||
<div class="img1"></div>
|
||||
<div class="wz">搜索</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="resetTaskList">
|
||||
<div class="btn btn1" @click="resetTaskList">
|
||||
<div class="img2"></div>
|
||||
<div class="wz">重置</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnss" style="margin-top: 20px" v-if="checkPer(permissions,createId)">
|
||||
<!-- <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="wz">催促学习</div>
|
||||
</div>
|
||||
-->
|
||||
<div class="btn btn2" @click="allStuOver">
|
||||
|
||||
<div class="btn btn1" @click="allStuOver" style="margin-right: 16px;">
|
||||
<div class="wz">批量标注完成</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="showEntryScore">
|
||||
<div class="btn btn1" @click="showEntryScore" style="margin-right: 16px;">
|
||||
<div class="wz">批量录入成绩</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="exportTaskStu">
|
||||
<div class="btn btn1" @click="exportTaskStu" style="margin-right: 16px;">
|
||||
<div class="img2"></div>
|
||||
<div class="wz">导出数据</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="exportHomeWorkShow">
|
||||
<div class="btn btn1" @click="exportHomeWorkShow">
|
||||
<div class="wz">导出作业</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -105,7 +118,6 @@
|
||||
style="border: 1px solid #f2f6fe"
|
||||
:columns="tablecolumns"
|
||||
:data-source="tabledata"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
:scroll="{ x: 1300 }"
|
||||
@expand="expandTable"
|
||||
:pagination="false"
|
||||
@@ -283,7 +295,7 @@ export default {
|
||||
title: "工号",
|
||||
dataIndex: "studentUserNo",
|
||||
key: "studentUserNo",
|
||||
width: '15%',
|
||||
width: '10%',
|
||||
align: "left",
|
||||
className: "h head",
|
||||
customRender: (text) => {
|
||||
@@ -317,7 +329,7 @@ export default {
|
||||
title: "所在部门",
|
||||
dataIndex: "studentDepartName",
|
||||
key: "studentDepartName",
|
||||
width: '15%',
|
||||
width: '10%',
|
||||
align: "center",
|
||||
className: "h",
|
||||
ellipsis: true,
|
||||
@@ -433,111 +445,35 @@ export default {
|
||||
title: "操作",
|
||||
dataIndex: "operation",
|
||||
key: "operation",
|
||||
width: 100,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text, {record:{examStatus,workStatus}}) => {
|
||||
return (examStatus || workStatus) && (<div
|
||||
style={{
|
||||
display: "flex",
|
||||
alignItems: "center",
|
||||
justifyContent: "center",
|
||||
}}
|
||||
>
|
||||
{workStatus===1 && <a-button
|
||||
type="link"
|
||||
class="operation"
|
||||
style="cursor:pointer;margin-right:10px;"
|
||||
onClick={() => {
|
||||
customRender: () => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<a
|
||||
onClick={()=>{
|
||||
state.CWvisible = true;
|
||||
}}
|
||||
>
|
||||
查看作业
|
||||
</a-button>}
|
||||
{examStatus===1 && <a-button
|
||||
type="link"
|
||||
class="operation"
|
||||
style="cursor:pointer;margin-right:10px;"
|
||||
onClick={() => {
|
||||
state.datasource = text.record;
|
||||
style="margin-right:12px;">查看作业</a>
|
||||
<a
|
||||
onClick={()=>{
|
||||
state.CAvisible = true;
|
||||
}}
|
||||
>
|
||||
查看答卷
|
||||
</a-button>}
|
||||
</div>)
|
||||
}
|
||||
}}>查看答卷</a>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
}
|
||||
],
|
||||
exportHomeWorkV: false,
|
||||
downloadUrl: null,
|
||||
currentCourse: 1
|
||||
});
|
||||
// //面授直播管理列表操作
|
||||
// const ListOpera = () => {
|
||||
// let arr = state.tabledata;
|
||||
// arr.map((value) => {
|
||||
// if (value.finishStatus == 1) {
|
||||
// value.operation = (
|
||||
// <div
|
||||
// style={{
|
||||
// display: "flex",
|
||||
// alignItems: "center",
|
||||
// justifyContent: "center",
|
||||
// }}
|
||||
// >
|
||||
// <a-button
|
||||
// type="link"
|
||||
// class="operation"
|
||||
// style="cursor:pointer;margin-right:10px;"
|
||||
// onClick={() => {
|
||||
// state.CWvisible = true;
|
||||
// }}
|
||||
// >
|
||||
// 查看作业
|
||||
// </a-button>
|
||||
// <a-button
|
||||
// type="link"
|
||||
// class="operation"
|
||||
// style="cursor:pointer;margin-right:10px;"
|
||||
// onClick={() => {
|
||||
// state.CQvisible = true;
|
||||
// }}
|
||||
// >
|
||||
// 查看答卷
|
||||
// </a-button>
|
||||
// </div>
|
||||
// );
|
||||
// } else {
|
||||
// value.operation = (
|
||||
// <div
|
||||
// style={{
|
||||
// display: "flex",
|
||||
// alignItems: "center",
|
||||
// justifyContent: "center",
|
||||
// }}
|
||||
// >
|
||||
// <a-button
|
||||
// type="link"
|
||||
// class="operation"
|
||||
// style="cursor:pointer;margin-right:10px;"
|
||||
// disabled
|
||||
// >
|
||||
// 查看作业
|
||||
// </a-button>
|
||||
// <a-button
|
||||
// type="link"
|
||||
// class="operation"
|
||||
// style="cursor:pointer;margin-right:10px;"
|
||||
// disabled
|
||||
// >
|
||||
// 查看答卷
|
||||
// </a-button>
|
||||
// </div>
|
||||
// );
|
||||
// }
|
||||
// });
|
||||
// };
|
||||
|
||||
const ChoiceCourse = (n) => {
|
||||
state.currentCourse = n;
|
||||
}
|
||||
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:Fvisible", false);
|
||||
state.name = "";
|
||||
@@ -621,6 +557,7 @@ export default {
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
state.tabledata = [];
|
||||
state.tabledata = [{name:'测试数据'}];
|
||||
});
|
||||
};
|
||||
//搜索学员
|
||||
@@ -718,6 +655,7 @@ export default {
|
||||
exportHomeWorkShow,
|
||||
exportHomeWork,
|
||||
getStudent,
|
||||
ChoiceCourse
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -802,7 +740,7 @@ export default {
|
||||
.img2 {
|
||||
width: 16px;
|
||||
height: 18px;
|
||||
background-image: url(../../../assets/images/courseManage/reset1.png);
|
||||
background-image: url(../../../assets/images/courseManage/reset0.png);
|
||||
background-size: 100% 100%;
|
||||
margin-right: 7px;
|
||||
}
|
||||
@@ -847,7 +785,7 @@ export default {
|
||||
.img2 {
|
||||
width: 17px;
|
||||
height: 16px;
|
||||
background-image: url(../../../assets/images/coursewareManage/export.png);
|
||||
background-image: url(../../../assets/images/coursewareManage/export1.png);
|
||||
background-size: 100% 100%;
|
||||
margin-right: 7px;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user