mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-07 01:46:43 +08:00
feat:增加签到签退等
This commit is contained in:
3
.env
3
.env
@@ -8,3 +8,6 @@ VUE_APP_BOE_API_URL=https://u-pre.boe.com
|
||||
|
||||
VUE_APP_IFRAME_URL=https://u-pre.boe.com/pc/iframe
|
||||
VUE_APP_IFRAME_STUDENT_URL=https://u-pre.boe.com/pc/loading
|
||||
|
||||
|
||||
COURSE_STUDY=https://u-pre.boe.com/pc/course/studyindex?id=
|
||||
|
||||
@@ -8,3 +8,5 @@ VUE_APP_BOE_API_URL=https://u.boe.com
|
||||
|
||||
VUE_APP_IFRAME_URL=https://u.boe.com/pc/iframe
|
||||
VUE_APP_IFRAME_STUDENT_URL=https://u.boe.com/pc/loading
|
||||
|
||||
COURSE_STUDY=https://u.boe.com/pc/course/studyindex?id=
|
||||
@@ -8,3 +8,5 @@ VUE_APP_BOE_API_URL=https://u.boe.com
|
||||
|
||||
VUE_APP_IFRAME_URL=https://u.boe.com/pc-release/iframe
|
||||
VUE_APP_IFRAME_STUDENT_URL=https://u.boe.com/pc-release/loading
|
||||
|
||||
COURSE_STUDY=https://u.boe.com/pc-release/course/studyindex?id=
|
||||
@@ -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-01-06 10:18:41
|
||||
* @LastEditTime: 2023-01-06 15:21:17
|
||||
* @FilePath: /fe-manage/src/api/index1.js
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
@@ -168,6 +168,9 @@ export const attendanceSign = (obj) => http.post('/stu/task/attendance/sign', ob
|
||||
//请假
|
||||
export const attendanceLeave = (obj) => http.post('/stu/task/attendance/leave', obj)
|
||||
|
||||
//批量标记完成
|
||||
export const batchFinishTask = (obj) => http.post('/admin/student/batchFinishTask', obj)
|
||||
|
||||
// //面授课批量导入成绩
|
||||
export const batchImportScore = (offcoursePlanId, obj) =>
|
||||
http.post(`/admin/offcourse/batchImportScore?offcoursePlanId=${offcoursePlanId}`, obj);
|
||||
@@ -19,19 +19,45 @@
|
||||
<div class="main">确定将所选学员标记完成吗</div>
|
||||
<div class="butn">
|
||||
<button class="btn btn1" @click="closeModal">取消</button>
|
||||
<button class="btn btn2" @click="check">确定</button>
|
||||
<button class="btn btn2" @click="batchFinishTask">确定</button>
|
||||
</div>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { toRefs, reactive } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import * as api from "../../api/index1";
|
||||
export default {
|
||||
props: {
|
||||
ASOvervisible: {
|
||||
type: Boolean,
|
||||
default:false
|
||||
}
|
||||
default: false,
|
||||
},
|
||||
type: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
ids: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
taskId: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
pid: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
taskType: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
currentStageId: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const state = reactive({
|
||||
@@ -40,15 +66,39 @@ setup(props,ctx){
|
||||
const closeModal = () => {
|
||||
ctx.emit("update:ASOvervisible", false);
|
||||
};
|
||||
const check = () => {
|
||||
|
||||
//批量标记完成
|
||||
const batchFinishTask = () => {
|
||||
if (props.studentsId.length === 0) {
|
||||
message.destroy();
|
||||
message.warning("请选择学员");
|
||||
return;
|
||||
}
|
||||
console.log("props.studentsId", props.studentsId);
|
||||
closeModal();
|
||||
let obj = {
|
||||
ids: props.ids,
|
||||
type: props.type,
|
||||
taskId: props.taskId,
|
||||
pid: props.pid,
|
||||
taskType: props.taskType,
|
||||
currentStageId: props.currentStageId,
|
||||
};
|
||||
api
|
||||
.batchFinishTask(obj)
|
||||
.then((res) => {
|
||||
console.log("批量标记结果", res);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("批量标记失败", err);
|
||||
});
|
||||
};
|
||||
return {
|
||||
...toRefs(state),
|
||||
closeModal,
|
||||
check,
|
||||
}
|
||||
}
|
||||
batchFinishTask,
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
@@ -135,7 +135,15 @@
|
||||
</div>
|
||||
</a-drawer>
|
||||
<!-- 批量标注完成 -->
|
||||
<ASOver v-model:ASOvervisible="ASOvervisible" />
|
||||
<ASOver
|
||||
v-model:ASOvervisible="ASOvervisible"
|
||||
:ids="selectedRowKeys"
|
||||
:taskId="projectTaskInfo.projectTaskId"
|
||||
:type="2"
|
||||
:pid="projectTaskInfo.projectId"
|
||||
:taskType="projectTaskInfo.type"
|
||||
:currentStageId="projectTaskInfo.stageId"
|
||||
/>
|
||||
<!-- 录入成绩抽屉 -->
|
||||
<entry-scores v-model:Evisible="Evisible" />
|
||||
<!-- 查看作业抽屉 -->
|
||||
@@ -664,6 +672,7 @@ export default {
|
||||
}&taskType=${props.projectTaskInfo.type}`
|
||||
);
|
||||
}
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
selectProjectName,
|
||||
|
||||
@@ -127,8 +127,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
<!-- 批量标注完成 -->
|
||||
<ASOver v-model:ASOvervisible="ASOvervisible" />
|
||||
|
||||
<!-- 录入成绩抽屉 -->
|
||||
<EScore v-model:eScorevisible="Evisible" />
|
||||
<!-- 查看作业抽屉 -->
|
||||
@@ -140,7 +139,6 @@
|
||||
<script>
|
||||
import { toRefs, reactive } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import ASOver from "../AllStuOver.vue";
|
||||
import CKWork from "../CheckWork.vue";
|
||||
import CQue from "../CheckQue.vue";
|
||||
// import EntryScores from "../EntryScores.vue";
|
||||
@@ -153,7 +151,6 @@ export default {
|
||||
// EntryScores,
|
||||
CKWork,
|
||||
CQue,
|
||||
ASOver,
|
||||
EScore,
|
||||
},
|
||||
props: {
|
||||
|
||||
@@ -130,7 +130,15 @@
|
||||
</div>
|
||||
</a-drawer>
|
||||
<!-- 批量标注完成 -->
|
||||
<ASOver v-model:ASOvervisible="ASOvervisible" />
|
||||
<ASOver
|
||||
v-model:ASOvervisible="ASOvervisible"
|
||||
:ids="selectedRowKeys"
|
||||
:taskId="datasource.routerTaskId"
|
||||
:type="2"
|
||||
:pid="datasource.routerId"
|
||||
:taskType="datasource.type"
|
||||
:currentStageId="datasource.chapterId"
|
||||
/>
|
||||
<!-- 录入成绩抽屉 -->
|
||||
<entry-scores v-model:Evisible="Evisible" />
|
||||
<!-- 查看作业抽屉 -->
|
||||
|
||||
@@ -122,8 +122,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
<!-- 批量标注完成 -->
|
||||
<ASOver v-model:ASOvervisible="ASOvervisible" />
|
||||
|
||||
<!-- 录入成绩抽屉 -->
|
||||
<EScore v-model:eScorevisible="Evisible" />
|
||||
<!-- 查看作业抽屉 -->
|
||||
@@ -135,7 +134,6 @@
|
||||
<script>
|
||||
import { toRefs, reactive } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import ASOver from "../AllStuOver.vue";
|
||||
import CKWork from "../CheckWork.vue";
|
||||
import CQue from "../CheckQue.vue";
|
||||
// import EntryScores from "../EntryScores.vue";
|
||||
@@ -148,7 +146,6 @@ export default {
|
||||
// EntryScores,
|
||||
CKWork,
|
||||
CQue,
|
||||
ASOver,
|
||||
EScore,
|
||||
},
|
||||
props: {
|
||||
|
||||
@@ -14,6 +14,40 @@
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col v-if="type === 1">
|
||||
<a-form-item title="小组名称:">
|
||||
<a-input
|
||||
class="cus-input"
|
||||
v-model:value="tableParam.groupName"
|
||||
placeholder="请输入小组名称"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col v-if="type === 1">
|
||||
<a-form-item title="部门:">
|
||||
<div class="select in" style="width: 270px">
|
||||
<OrgClass
|
||||
v-model:value="tableParam.studentDepartId"
|
||||
v-model:name="tableParam.studentDepartName"
|
||||
></OrgClass>
|
||||
</div>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col v-if="type === 1">
|
||||
<a-form-item title="优秀学员:">
|
||||
<div class="select">
|
||||
<a-select
|
||||
v-model:value="tableParam.topFlag"
|
||||
style="width: 260px; height: 40px"
|
||||
placeholder="是否为优秀学员"
|
||||
:options="topFlagList"
|
||||
@change="selectProjectName"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col>
|
||||
<a-button class="cus-btn" style="width: 100px" @click="getStuList">
|
||||
<template #icon>
|
||||
@@ -120,14 +154,14 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="stmm_btn btn5" @click="handleExportStu">
|
||||
<div class="stmm_btn btn5" @click="exportStu">
|
||||
<div class="export"></div>
|
||||
<div class="btnText">导出</div>
|
||||
</div>
|
||||
<div
|
||||
class="stmm_btn btn5"
|
||||
style="margin-left: 15px"
|
||||
@click="handleExportStu"
|
||||
@click="exportHomeWork"
|
||||
>
|
||||
<div class="btnText">导出作业</div>
|
||||
</div>
|
||||
@@ -313,6 +347,7 @@ import { message } from "ant-design-vue";
|
||||
// import { topStudent } from "../../api/indexProjStu";
|
||||
import SeeStu from "../../components/drawers/SeeStu";
|
||||
import ExportScore from "../drawers/ExportScore.vue";
|
||||
import OrgClass from "@/components/project/OrgClass";
|
||||
const props = defineProps({
|
||||
type: Number,
|
||||
id: String,
|
||||
@@ -329,6 +364,18 @@ const props = defineProps({
|
||||
default: false,
|
||||
},
|
||||
});
|
||||
const topFlagList = ref([
|
||||
{
|
||||
id: 0,
|
||||
value: 0,
|
||||
label: "普通学员",
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
value: 1,
|
||||
label: "优秀学员",
|
||||
},
|
||||
]);
|
||||
const tablecolumns = ref([
|
||||
{
|
||||
title: "姓名",
|
||||
@@ -397,7 +444,11 @@ const tablecolumns = ref([
|
||||
},
|
||||
]);
|
||||
const tableParam = ref({
|
||||
studentName: "",
|
||||
studentName: "", //学员名称
|
||||
groupName: "", //学员小组
|
||||
studentDepartId: null, //部门
|
||||
studentDepartName: null, //部门名称
|
||||
topFlag: null, //是否是优秀学员
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
type: props.type,
|
||||
@@ -450,6 +501,7 @@ function changePagination(page) {
|
||||
|
||||
function getStuList() {
|
||||
tableData.value.loading = true;
|
||||
console.log("tableParam.value", tableParam.value);
|
||||
getStuPage(tableParam.value).then((res) => {
|
||||
console.log("学员管理-获取学员", res.data);
|
||||
tableData.value.total = res.data.data.total;
|
||||
@@ -460,6 +512,10 @@ function getStuList() {
|
||||
|
||||
function reset() {
|
||||
tableParam.value.studentName = "";
|
||||
tableParam.value.groupName = ""; //学员小组
|
||||
tableParam.value.studentDepartId = null; //部门
|
||||
tableParam.value.studentDepartName = null; //部门
|
||||
tableParam.value.topFlag = null; //是否是优秀学员
|
||||
getStuList();
|
||||
}
|
||||
|
||||
@@ -568,6 +624,23 @@ const eScorevisible = ref(false);
|
||||
const showEScoreModal = () => {
|
||||
eScorevisible.value = true;
|
||||
};
|
||||
|
||||
//导出作业
|
||||
const exportHomeWork = () => {
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_PROXY_URL
|
||||
}admin/student/exportHomeWork?type=${3}&pid=${props.id}`
|
||||
);
|
||||
};
|
||||
//导出
|
||||
const exportStu = () => {
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_PROXY_URL
|
||||
}admin/student/exportTaskStudent?type=${3}&pid=${props.id}`
|
||||
);
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.TableStudent {
|
||||
|
||||
@@ -997,7 +997,9 @@
|
||||
<div class="bs_left">内容分类:</div>
|
||||
<div class="bs_right">{{ faceClassification }}</div>
|
||||
<div class="bs_left">状态:</div>
|
||||
<div class="bs_right">{{faceStatus==1?"已启用":"已停用"}}</div>
|
||||
<div class="bs_right">
|
||||
{{ faceStatus == 1 ? "已启用" : "已停用" }}
|
||||
</div>
|
||||
</div>
|
||||
<a-tabs
|
||||
class="b_menu"
|
||||
@@ -1306,15 +1308,7 @@
|
||||
<div class="operation">
|
||||
<div class="fb">
|
||||
<!--新加 签到 -->
|
||||
<div
|
||||
class="jc"
|
||||
@click="
|
||||
() => {
|
||||
QR_hs = true;
|
||||
ftsQR_hs = true;
|
||||
}
|
||||
"
|
||||
>
|
||||
<div class="jc" @click="qrcodeVisible(record, 2)">
|
||||
签到
|
||||
</div>
|
||||
|
||||
@@ -1361,14 +1355,7 @@
|
||||
删除
|
||||
</a-menu-item>
|
||||
<!--新加 二维码 -->
|
||||
<a-menu-item
|
||||
@click="
|
||||
() => {
|
||||
QR_hs = true;
|
||||
vipftQR_hs = true;
|
||||
}
|
||||
"
|
||||
>
|
||||
<a-menu-item @click="qrcodeVisible(record, 1)">
|
||||
二维码
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
@@ -2285,7 +2272,7 @@
|
||||
v-model:codevisible="codevisible"
|
||||
:codeInfo="codeInfo"
|
||||
:index="codeIndex"
|
||||
:type="codeType === 1 ? '课程二维码' : '签到二维码'"
|
||||
:type="codeType == 1 ? '课程二维码' : codeType == 2 ? '签到二维码' : ''"
|
||||
/>
|
||||
<!-- 二维码弹窗 -->
|
||||
</template>
|
||||
@@ -3461,7 +3448,9 @@ export default defineComponent({
|
||||
// 点击开课管理 -- 显示得信息
|
||||
faceType: "面授课", // 面授课类型
|
||||
faceClassification: "", // 课程内容分类
|
||||
faceStatus: "" // 课程状态
|
||||
faceStatus: "", // 课程状态
|
||||
|
||||
codeType: null, //二维码类型
|
||||
});
|
||||
|
||||
const showStuAdd = (record) => {
|
||||
@@ -5211,32 +5200,34 @@ export default defineComponent({
|
||||
|
||||
// 获取开课管理里的学员
|
||||
function getCourseStudentList() {
|
||||
console.log('开课管理学员搜索参数',{
|
||||
console.log("开课管理学员搜索参数", {
|
||||
pageNo: state.currentPage222,
|
||||
pageSize: 10,
|
||||
status: state.gl_selectV2 ? state.gl_selectV2 : "",
|
||||
studentName: state.gl_inputV2,
|
||||
id:state.currentFaceId
|
||||
id: state.currentFaceId,
|
||||
});
|
||||
apis
|
||||
.GetCourseStudent({
|
||||
pageNo: state.currentPage222,
|
||||
pageSize: 10,
|
||||
status: state.gl_selectV2 ? state.gl_selectV2 : "",
|
||||
studentName: state.gl_inputV2,
|
||||
id: state.currentFaceId,
|
||||
})
|
||||
apis.GetCourseStudent({
|
||||
pageNo: state.currentPage222,
|
||||
pageSize: 10,
|
||||
status: state.gl_selectV2?state.gl_selectV2:"",
|
||||
studentName: state.gl_inputV2,
|
||||
id:state.currentFaceId
|
||||
}).then(res=>{
|
||||
console.log('获取开课管理学员信息', res)
|
||||
.then((res) => {
|
||||
console.log("获取开课管理学员信息", res);
|
||||
// tableData3 tableDataTotal222 currentPage222 handelChangePage222
|
||||
state.tableData3 = res.data.data.records;
|
||||
state.tableDataTotal222 = res.data.data.total;
|
||||
state.manageStuLoading = false;
|
||||
}).catch(err=>{
|
||||
console.log(err)
|
||||
state.manageStuLoading = false;
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
state.manageStuLoading = false;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const handlePostSure = (obj) => {
|
||||
console.log("处理后参数,直接解构使用");
|
||||
console.log(obj);
|
||||
@@ -5422,6 +5413,23 @@ export default defineComponent({
|
||||
updateStudent(record);
|
||||
}
|
||||
|
||||
//二维码
|
||||
const qrcodeVisible = (record, type) => {
|
||||
console.log(
|
||||
"record",
|
||||
record,
|
||||
process.env.VUE_APP_IFRAME_STUDENT_URL,
|
||||
process.env.COURSE_STUDY
|
||||
);
|
||||
state.codevisible = true;
|
||||
state.codeInfo = {
|
||||
title: type == 1 ? "【课程】二维码" : "【签到】二维码",
|
||||
name: record.name ? record.name : "",
|
||||
url: process.env.COURSE_STUDY + record.offcourseId,
|
||||
};
|
||||
state.codeIndex = type;
|
||||
state.codeType = type;
|
||||
};
|
||||
return {
|
||||
...toRefs(state),
|
||||
CourseModalRef,
|
||||
@@ -5553,6 +5561,8 @@ export default defineComponent({
|
||||
handleLook,
|
||||
logW,
|
||||
logT,
|
||||
|
||||
qrcodeVisible,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user