feat:增加批量签到

This commit is contained in:
lixg
2023-01-10 20:06:27 +08:00
parent 268f7c4468
commit c2c2f79250
2 changed files with 274 additions and 49 deletions

View File

@@ -180,7 +180,12 @@
<!-- 二维码签到弹窗 --> <!-- 二维码签到弹窗 -->
<SignQR v-model:signQRvisible="signQRvisible" /> <SignQR v-model:signQRvisible="signQRvisible" />
<!-- 导入学员抽屉 --> <!-- 导入学员抽屉 -->
<imp-stu v-model:AddImpStuvisible="AddImpStuvisible" @AddImpStuvisibleClose="AddImpStuvisibleClose" :courseId="projectTaskInfo.courseId" :courseType="2"/> <imp-stu
v-model:AddImpStuvisible="AddImpStuvisible"
@AddImpStuvisibleClose="AddImpStuvisibleClose"
:courseId="projectTaskInfo.courseId"
:courseType="2"
/>
<!-- 批量签到弹窗 --> <!-- 批量签到弹窗 -->
<a-modal <a-modal
v-model:visible="copyModal" v-model:visible="copyModal"
@@ -202,10 +207,10 @@
</div> </div>
<div class="del_btnbox"> <div class="del_btnbox">
<div class="del_btn btn1"> <div class="del_btn btn1">
<div class="btnText" @click="delete_exit">取消</div> <div class="btnText" @click="closeCopyModal">取消</div>
</div> </div>
<div class="del_btn btn2"> <div class="del_btn btn2">
<div class="btnText" @click="delete_exit">确定</div> <div class="btnText" @click="batchSign">确定</div>
</div> </div>
</div> </div>
</div> </div>
@@ -228,6 +233,7 @@ import ImpStu from "../../../components/drawers/AddLevelImportStu";
import SignQR from "../SignQR.vue"; import SignQR from "../SignQR.vue";
import * as api from "../../../api/index1"; import * as api from "../../../api/index1";
import TwoDimensionalCode from "../../../components/TwoDimensionalCode"; import TwoDimensionalCode from "../../../components/TwoDimensionalCode";
import { message } from "ant-design-vue";
export default { export default {
name: "FaceManage", name: "FaceManage",
components: { components: {
@@ -266,6 +272,7 @@ export default {
tableDataTotal: -1, tableDataTotal: -1,
tableDataTotal2: 0, tableDataTotal2: 0,
selectedRowKeys: [], selectedRowKeys: [],
selectedStudents: [], //选择学员id
projectNameList: [ projectNameList: [
{ {
id: 1, id: 1,
@@ -353,6 +360,7 @@ export default {
state.name = null; state.name = null;
state.projectName2 = null; state.projectName2 = null;
state.selectedRowKeys = []; state.selectedRowKeys = [];
state.selectedStudents = [];
state.currentPage = 1; state.currentPage = 1;
state.tableDataTotal = -1; state.tableDataTotal = -1;
state.tableDataTotal2 = 0; state.tableDataTotal2 = 0;
@@ -364,11 +372,41 @@ export default {
}; };
//批量签到 //批量签到
const showCopyModal = () => { const showCopyModal = () => {
if (state.selectedStudents.length === 0) {
message.destroy();
message.warning("请选择学员");
return;
}
state.copyModal = true; state.copyModal = true;
}; };
const closeCopyModal = () => { const closeCopyModal = () => {
state.copyModal = false; state.copyModal = false;
}; };
//批量签到
const batchSign = () => {
let obj = {
courseId: Number(props.projectTaskInfo.courseId),
projectId: Number(props.projectTaskInfo.projectId),
// routerId: Number(props.projectTaskInfo.projectId),
ids: state.selectedStudents,
taskId: Number(props.projectTaskInfo.projectTaskId),
taskType: Number(props.projectTaskInfo.type),
type: 1,
// userName: "",
};
api
.attendanceSign(obj, (res) => {
console.log("签到结果", res, obj);
if (res.data.code === 200) {
message.destroy();
message.success("批量签到成功");
getStudent();
}
})
.catch((err) => {
console.log("签到失败", err, obj);
});
};
// const closeStopModal = () => { // const closeStopModal = () => {
// state.stopModal = false; // state.stopModal = false;
@@ -391,13 +429,20 @@ export default {
state.codeType = 2; state.codeType = 2;
}; };
const onSelectChange = (selectedRowKeys) => { const onSelectChange = (selectedRowKeys, e) => {
console.log("selectedRowKeys changed: ", selectedRowKeys); console.log("selectedRowKeys changed: ", selectedRowKeys, e);
state.selectedRowKeys = selectedRowKeys; state.selectedRowKeys = selectedRowKeys;
// state.selectedStudents=e
let array = [];
for (let i = 0; i < e.length; i++) {
array.push(e[i].studentId);
}
state.selectedStudents = array;
}; };
//表头清空 //表头清空
const clearLine = () => { const clearLine = () => {
state.selectedRowKeys = []; state.selectedRowKeys = [];
state.selectedStudents = [];
}; };
// const getTableData = () => { // const getTableData = () => {
// let arr = state.tabledata; // let arr = state.tabledata;
@@ -559,7 +604,72 @@ export default {
customRender: (text) => { customRender: (text) => {
return ( return (
<div class="opa"> <div class="opa">
<a-checkbox <a-radio-group name="radioGroup">
<a-radio
value="1"
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: [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-radio>
<a-radio
value="2"
checked={text.record.leave}
onChange={(e) => {
console.log("点击请假", e, props.datasource);
let obj = {
courseId: Number(props.projectTaskInfo.courseId),
projectId: Number(props.projectTaskInfo.projectId),
// routerId: Number(props.projectTaskInfo.projectId),
ids: [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-radio>
</a-radio-group>
{/**
<a-checkbox
checked={text.record.signIn} checked={text.record.signIn}
onChange={(e) => { onChange={(e) => {
console.log("点击签到", e); console.log("点击签到", e);
@@ -589,16 +699,6 @@ export default {
> >
签到 签到
</a-checkbox> </a-checkbox>
{/**
<a-checkbox
checked={value.signOut}
onChange={(e) => {
console.log("点击签退", e);
}}
>
签退
</a-checkbox>
*/}
<a-checkbox <a-checkbox
checked={text.record.leave} checked={text.record.leave}
onChange={(e) => { onChange={(e) => {
@@ -628,6 +728,15 @@ export default {
> >
请假 请假
</a-checkbox> </a-checkbox>
<a-checkbox
checked={value.signOut}
onChange={(e) => {
console.log("点击签退", e);
}}
>
签退
</a-checkbox>
*/}
</div> </div>
); );
}, },
@@ -728,14 +837,18 @@ export default {
// }); // });
} }
{/* 添加学员弹框关闭,重新获取学员列表 */} {
const AddImpStuvisibleClose = (isget) => { /* 添加学员弹框关闭,重新获取学员列表 */
console.log('关闭了导入学员弹框',isget)
{/* 此处操作重新获取学员列表数据 */}
if(isget){
getStudent()
}
} }
const AddImpStuvisibleClose = (isget) => {
console.log("关闭了导入学员弹框", isget);
{
/* 此处操作重新获取学员列表数据 */
}
if (isget) {
getStudent();
}
};
return { return {
...toRefs(state), ...toRefs(state),
@@ -756,7 +869,8 @@ export default {
changePaginationStu, changePaginationStu,
exportTaskStu, exportTaskStu,
clearLine, clearLine,
AddImpStuvisibleClose AddImpStuvisibleClose,
batchSign,
}; };
}, },
}; };

View File

@@ -174,7 +174,12 @@
<!-- 二维码签到弹窗 --> <!-- 二维码签到弹窗 -->
<SignQR v-model:signQRvisible="signQRvisible" /> <SignQR v-model:signQRvisible="signQRvisible" />
<!-- 导入学员抽屉 --> <!-- 导入学员抽屉 -->
<imp-stu v-model:AddImpStuvisible="AddImpStuvisible" @AddImpStuvisibleClose="AddImpStuvisibleClose" :courseId="datasource.courseId" :courseType="1" /> <imp-stu
v-model:AddImpStuvisible="AddImpStuvisible"
@AddImpStuvisibleClose="AddImpStuvisibleClose"
:courseId="datasource.courseId"
:courseType="1"
/>
<!-- 批量签到弹窗 --> <!-- 批量签到弹窗 -->
<a-modal <a-modal
v-model:visible="copyModal" v-model:visible="copyModal"
@@ -196,10 +201,10 @@
</div> </div>
<div class="del_btnbox"> <div class="del_btnbox">
<div class="del_btn btn1"> <div class="del_btn btn1">
<div class="btnText" @click="delete_exit">取消</div> <div class="btnText" @click="closeCopyModal">取消</div>
</div> </div>
<div class="del_btn btn2"> <div class="del_btn btn2">
<div class="btnText" @click="delete_exit">确定</div> <div class="btnText" @click="batchSign">确定</div>
</div> </div>
</div> </div>
</div> </div>
@@ -222,6 +227,7 @@ import ImpStu from "../../../components/drawers/AddLevelImportStu";
import SignQR from "../SignQR.vue"; import SignQR from "../SignQR.vue";
import * as api from "../../../api/index1"; import * as api from "../../../api/index1";
import TwoDimensionalCode from "../../../components/TwoDimensionalCode"; import TwoDimensionalCode from "../../../components/TwoDimensionalCode";
import { message } from "ant-design-vue";
export default { export default {
name: "FaceManage", name: "FaceManage",
components: { components: {
@@ -260,6 +266,7 @@ export default {
tableDataTotal: -1, tableDataTotal: -1,
tableDataTotal2: 0, tableDataTotal2: 0,
selectedRowKeys: [], selectedRowKeys: [],
selectedStudents: [], //选择学员id
projectNameList: [ projectNameList: [
{ {
id: 1, id: 1,
@@ -347,6 +354,7 @@ export default {
state.name = null; state.name = null;
state.projectName2 = null; state.projectName2 = null;
state.selectedRowKeys = []; state.selectedRowKeys = [];
state.selectedStudents = [];
state.currentPage = 1; state.currentPage = 1;
state.tableDataTotal = -1; state.tableDataTotal = -1;
state.tableDataTotal2 = 0; state.tableDataTotal2 = 0;
@@ -359,11 +367,39 @@ export default {
//批量签到 //批量签到
const showCopyModal = () => { const showCopyModal = () => {
state.copyModal = true; state.copyModal = true;
if (state.selectedStudents.length === 0) {
message.destroy();
message.warning("请选择学员");
return;
}
}; };
const closeCopyModal = () => { const closeCopyModal = () => {
state.copyModal = false; state.copyModal = false;
}; };
//批量签到
const batchSign = () => {
let obj = {
courseId: Number(props.datasource.courseId),
// projectId: 0,
routerId: Number(props.datasource.routerId),
ids: state.selectedStudents,
taskId: Number(props.datasource.routerTaskId),
taskType: Number(props.datasource.type),
type: 2,
};
api
.attendanceSign(obj, (res) => {
console.log("签到结果", res, obj);
if (res.data.code === 200) {
message.destroy();
message.success("批量签到成功");
getStudent();
}
})
.catch((err) => {
console.log("签到失败", err, obj);
});
};
// const closeStopModal = () => { // const closeStopModal = () => {
// state.stopModal = false; // state.stopModal = false;
// }; // };
@@ -372,13 +408,19 @@ export default {
state.signQRvisible = true; state.signQRvisible = true;
}; };
const onSelectChange = (selectedRowKeys) => { const onSelectChange = (selectedRowKeys, e) => {
console.log("selectedRowKeys changed: ", selectedRowKeys); console.log("selectedRowKeys changed: ", selectedRowKeys);
state.selectedRowKeys = selectedRowKeys; state.selectedRowKeys = selectedRowKeys;
let array = [];
for (let i = 0; i < e.length; i++) {
array.push(e[i].studentId);
}
state.selectedStudents = array;
}; };
//表头清空 //表头清空
const clearLine = () => { const clearLine = () => {
state.selectedRowKeys = []; state.selectedRowKeys = [];
state.selectedStudents = [];
}; };
const tableDataFunc = () => { const tableDataFunc = () => {
@@ -503,7 +545,72 @@ export default {
customRender: (text) => { customRender: (text) => {
return ( return (
<div class="opa"> <div class="opa">
<a-checkbox <a-radio-group name="radioGroup">
<a-radio
value="1"
checked={text.record.signIn}
onChange={(e) => {
console.log("点击签到", e);
let obj = {
courseId: Number(props.datasource.courseId),
// projectId: 0,
routerId: Number(props.datasource.routerId),
ids: [text.record.studentId],
studentName: text.record.studentName,
taskId: Number(props.datasource.routerTaskId),
taskType: Number(props.datasource.type),
type: 2,
};
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-radio>
<a-radio
value="2"
checked={text.record.leave}
onChange={(e) => {
console.log("点击请假", e, props.datasource);
let obj = {
courseId: Number(props.datasource.courseId),
// projectId: 0,
routerId: Number(props.datasource.routerId),
ids: [text.record.studentId],
studentName: text.record.studentName,
taskId: Number(props.datasource.routerTaskId),
taskType: Number(props.datasource.type),
type: 2,
// userName: "",
};
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-radio>
</a-radio-group>
{/**
<a-checkbox
checked={text.record.signIn} checked={text.record.signIn}
onChange={(e) => { onChange={(e) => {
let obj = { let obj = {
@@ -539,17 +646,7 @@ export default {
> >
签到 签到
</a-checkbox> </a-checkbox>
{/** <a-checkbox
<a-checkbox
checked={value.signOut}
onChange={(e) => {
console.log("点击签退", e);
}}
>
签退
</a-checkbox>
*/}
<a-checkbox
checked={text.record.leave} checked={text.record.leave}
onChange={(e) => { onChange={(e) => {
console.log("点击请假", e, props.datasource); console.log("点击请假", e, props.datasource);
@@ -579,6 +676,15 @@ export default {
> >
请假 请假
</a-checkbox> </a-checkbox>
<a-checkbox
checked={value.signOut}
onChange={(e) => {
console.log("点击签退", e);
}}
>
签退
</a-checkbox>
*/}
</div> </div>
); );
}, },
@@ -696,14 +802,18 @@ export default {
state.codeType = 2; state.codeType = 2;
}; };
{/* 添加学员弹框关闭,重新获取学员列表 */} {
const AddImpStuvisibleClose = (isget) => { /* 添加学员弹框关闭,重新获取学员列表 */
console.log('关闭了导入学员弹框',isget)
{/* 此处操作重新获取学员列表数据 */}
if(isget){
getStudent()
}
} }
const AddImpStuvisibleClose = (isget) => {
console.log("关闭了导入学员弹框", isget);
{
/* 此处操作重新获取学员列表数据 */
}
if (isget) {
getStudent();
}
};
return { return {
...toRefs(state), ...toRefs(state),
@@ -725,7 +835,8 @@ export default {
exportTaskStu, exportTaskStu,
clearLine, clearLine,
qrcodeVisible, qrcodeVisible,
AddImpStuvisibleClose AddImpStuvisibleClose,
batchSign,
}; };
}, },
}; };