mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-10 03:16:44 +08:00
feat:增加批量标注完成等
This commit is contained in:
13
.env
13
.env
@@ -1,13 +1,18 @@
|
|||||||
|
# 本项目基础url
|
||||||
VUE_APP_BASE=/manage
|
VUE_APP_BASE=/manage
|
||||||
|
# api项目基础url
|
||||||
VUE_APP_BASE_API=/manageApi
|
VUE_APP_BASE_API=/manageApi
|
||||||
|
# 导出url
|
||||||
VUE_APP_PROXY_URL=http://111.231.196.214:30001/
|
VUE_APP_PROXY_URL=http://111.231.196.214:30001/
|
||||||
|
# 登录url
|
||||||
VUE_APP_LOGIN_URL=https://u-pre.boe.com/web
|
VUE_APP_LOGIN_URL=https://u-pre.boe.com/web
|
||||||
|
# boe域名
|
||||||
VUE_APP_BOE_API_URL=https://u-pre.boe.com
|
VUE_APP_BOE_API_URL=https://u-pre.boe.com
|
||||||
|
|
||||||
|
# iframe嵌套url
|
||||||
VUE_APP_IFRAME_URL=https://u-pre.boe.com/pc/iframe
|
VUE_APP_IFRAME_URL=https://u-pre.boe.com/pc/iframe
|
||||||
|
# 学员端路由
|
||||||
VUE_APP_IFRAME_STUDENT_URL=https://u-pre.boe.com/pc/loading
|
VUE_APP_IFRAME_STUDENT_URL=https://u-pre.boe.com/pc/loading
|
||||||
|
|
||||||
|
# 课程二维码
|
||||||
COURSE_STUDY=https://u-pre.boe.com/pc/course/studyindex?id=
|
VUE_APP_COURSE_STUDY=https://u-pre.boe.com/pc/course/studyindex?id=
|
||||||
|
|||||||
@@ -9,4 +9,4 @@ VUE_APP_BOE_API_URL=https://u.boe.com
|
|||||||
VUE_APP_IFRAME_URL=https://u.boe.com/pc/iframe
|
VUE_APP_IFRAME_URL=https://u.boe.com/pc/iframe
|
||||||
VUE_APP_IFRAME_STUDENT_URL=https://u.boe.com/pc/loading
|
VUE_APP_IFRAME_STUDENT_URL=https://u.boe.com/pc/loading
|
||||||
|
|
||||||
COURSE_STUDY=https://u.boe.com/pc/course/studyindex?id=
|
VUE_APP_COURSE_STUDY=https://u.boe.com/pc/course/studyindex?id=
|
||||||
@@ -9,4 +9,4 @@ VUE_APP_BOE_API_URL=https://u.boe.com
|
|||||||
VUE_APP_IFRAME_URL=https://u.boe.com/pc-release/iframe
|
VUE_APP_IFRAME_URL=https://u.boe.com/pc-release/iframe
|
||||||
VUE_APP_IFRAME_STUDENT_URL=https://u.boe.com/pc-release/loading
|
VUE_APP_IFRAME_STUDENT_URL=https://u.boe.com/pc-release/loading
|
||||||
|
|
||||||
COURSE_STUDY=https://u.boe.com/pc-release/course/studyindex?id=
|
VUE_APP_COURSE_STUDY=https://u.boe.com/pc-release/course/studyindex?id=
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
* @Author: lixg lixg@dongwu-inc.com
|
* @Author: lixg lixg@dongwu-inc.com
|
||||||
* @Date: 2022-11-04 22:45:31
|
* @Date: 2022-11-04 22:45:31
|
||||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||||
* @LastEditTime: 2023-01-06 15:21:17
|
* @LastEditTime: 2023-01-06 18:04:16
|
||||||
* @FilePath: /fe-manage/src/api/index1.js
|
* @FilePath: /fe-manage/src/api/index1.js
|
||||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
*/
|
*/
|
||||||
@@ -170,7 +170,8 @@ export const attendanceLeave = (obj) => http.post('/stu/task/attendance/leave',
|
|||||||
|
|
||||||
//批量标记完成
|
//批量标记完成
|
||||||
export const batchFinishTask = (obj) => http.post('/admin/student/batchFinishTask', obj)
|
export const batchFinishTask = (obj) => http.post('/admin/student/batchFinishTask', obj)
|
||||||
|
//批量更新学员状态
|
||||||
|
export const batchUpdateStatus = (obj) => http.post('/admin/student/batchUpdateStatus', obj)
|
||||||
// //面授课批量导入成绩
|
// //面授课批量导入成绩
|
||||||
export const batchImportScore = (offcoursePlanId, obj) =>
|
export const batchImportScore = (offcoursePlanId, obj) =>
|
||||||
http.post(`/admin/offcourse/batchImportScore?offcoursePlanId=${offcoursePlanId}`, obj);
|
http.post(`/admin/offcourse/batchImportScore?offcoursePlanId=${offcoursePlanId}`, obj);
|
||||||
@@ -58,6 +58,10 @@ export default {
|
|||||||
type: Number,
|
type: Number,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
|
getStudent: {
|
||||||
|
type: Function,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
setup(props, ctx) {
|
setup(props, ctx) {
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
@@ -93,6 +97,9 @@ export default {
|
|||||||
message.destroy();
|
message.destroy();
|
||||||
message.success("标记成功");
|
message.success("标记成功");
|
||||||
closeModal();
|
closeModal();
|
||||||
|
props.getStudent && props.getStudent();
|
||||||
|
ctx.emit("update:ids", []);
|
||||||
|
// console.log("props.getStudent", props.getStudent);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
|||||||
@@ -88,7 +88,11 @@
|
|||||||
</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="signQR">
|
<div
|
||||||
|
class="btn btn1"
|
||||||
|
style="margin-right: 20px"
|
||||||
|
@click="qrcodeVisible()"
|
||||||
|
>
|
||||||
<div class="wz">签到二维码</div>
|
<div class="wz">签到二维码</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn btn1" style="margin-right: 20px" @click="showImpStu">
|
<div class="btn btn1" style="margin-right: 20px" @click="showImpStu">
|
||||||
@@ -207,6 +211,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
|
|
||||||
|
<!-- 二维码弹窗 -->
|
||||||
|
<two-dimensional-code
|
||||||
|
v-model:codevisible="codevisible"
|
||||||
|
:codeInfo="codeInfo"
|
||||||
|
:index="codeIndex"
|
||||||
|
:type="codeType == 1 ? '课程二维码' : codeType == 2 ? '签到二维码' : ''"
|
||||||
|
/>
|
||||||
|
<!-- 二维码弹窗 -->
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -214,11 +227,13 @@ import { toRefs, reactive } from "vue";
|
|||||||
import ImpStu from "../../../components/drawers/AddLevelImportStu";
|
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";
|
||||||
export default {
|
export default {
|
||||||
name: "FaceManage",
|
name: "FaceManage",
|
||||||
components: {
|
components: {
|
||||||
ImpStu,
|
ImpStu,
|
||||||
SignQR,
|
SignQR,
|
||||||
|
TwoDimensionalCode,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
FSvisible: {
|
FSvisible: {
|
||||||
@@ -314,6 +329,10 @@ export default {
|
|||||||
value: "3",
|
value: "3",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
codevisible: false, //二维码弹窗
|
||||||
|
codeType: null,
|
||||||
|
codeIndex: null,
|
||||||
|
codeInfo: null, //二维码内容
|
||||||
// selectOption: [],
|
// selectOption: [],
|
||||||
});
|
});
|
||||||
const afterVisibleChange = (bol) => {
|
const afterVisibleChange = (bol) => {
|
||||||
@@ -355,8 +374,21 @@ export default {
|
|||||||
// state.stopModal = false;
|
// state.stopModal = false;
|
||||||
// };
|
// };
|
||||||
//显示签到二维码弹窗
|
//显示签到二维码弹窗
|
||||||
const signQR = () => {
|
//二维码
|
||||||
state.signQRvisible = true;
|
const qrcodeVisible = () => {
|
||||||
|
state.codevisible = true;
|
||||||
|
state.codeInfo = {
|
||||||
|
title: "【签到】二维码",
|
||||||
|
name: props.projectTaskInfo?.name,
|
||||||
|
url:
|
||||||
|
process.env.VUE_APP_BOE_API_URL +
|
||||||
|
`/admin/student/studentSign?taskId=${
|
||||||
|
props.projectTaskInfo.projectTaskId
|
||||||
|
}&type=${1}`,
|
||||||
|
};
|
||||||
|
console.log("codeInfo", state.codeInfo);
|
||||||
|
state.codeIndex = 1;
|
||||||
|
state.codeType = 2;
|
||||||
};
|
};
|
||||||
|
|
||||||
const onSelectChange = (selectedRowKeys) => {
|
const onSelectChange = (selectedRowKeys) => {
|
||||||
@@ -708,7 +740,7 @@ export default {
|
|||||||
showCopyModal,
|
showCopyModal,
|
||||||
closeCopyModal,
|
closeCopyModal,
|
||||||
// closeStopModal,
|
// closeStopModal,
|
||||||
signQR,
|
qrcodeVisible,
|
||||||
afterVisibleChange,
|
afterVisibleChange,
|
||||||
|
|
||||||
searchTaskList,
|
searchTaskList,
|
||||||
|
|||||||
@@ -137,7 +137,7 @@
|
|||||||
<!-- 批量标注完成 -->
|
<!-- 批量标注完成 -->
|
||||||
<ASOver
|
<ASOver
|
||||||
v-model:ASOvervisible="ASOvervisible"
|
v-model:ASOvervisible="ASOvervisible"
|
||||||
:ids="selectedRowKeys"
|
v-model:ids="selectedRowKeys"
|
||||||
:taskId="
|
:taskId="
|
||||||
projectTaskInfo && projectTaskInfo.projectTaskId
|
projectTaskInfo && projectTaskInfo.projectTaskId
|
||||||
? projectTaskInfo.projectTaskId
|
? projectTaskInfo.projectTaskId
|
||||||
@@ -157,6 +157,7 @@
|
|||||||
? projectTaskInfo.stageId
|
? projectTaskInfo.stageId
|
||||||
: null
|
: null
|
||||||
"
|
"
|
||||||
|
v-model:getStudent="getStudent"
|
||||||
/>
|
/>
|
||||||
<!-- 录入成绩抽屉 -->
|
<!-- 录入成绩抽屉 -->
|
||||||
<entry-scores v-model:Evisible="Evisible" />
|
<entry-scores v-model:Evisible="Evisible" />
|
||||||
@@ -393,7 +394,8 @@ export default {
|
|||||||
return (
|
return (
|
||||||
<div class="racona">
|
<div class="racona">
|
||||||
<span>
|
<span>
|
||||||
{text.record.finishStatus == 0
|
{text.record.finishStatus == 0 ||
|
||||||
|
text.record.finishStatus == null
|
||||||
? "未开始"
|
? "未开始"
|
||||||
: text.record.finishStatus == 1
|
: text.record.finishStatus == 1
|
||||||
? "已完成"
|
? "已完成"
|
||||||
@@ -560,6 +562,7 @@ export default {
|
|||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
state.selectedRowKeys = selectedRowKeys;
|
state.selectedRowKeys = selectedRowKeys;
|
||||||
|
// console.log("选择信息", e);
|
||||||
};
|
};
|
||||||
|
|
||||||
const allStuOver = () => {
|
const allStuOver = () => {
|
||||||
@@ -607,7 +610,7 @@ export default {
|
|||||||
if (res.data.code == 200) {
|
if (res.data.code == 200) {
|
||||||
let newData = [];
|
let newData = [];
|
||||||
for (let i = 0; i < res.data.data.records.length; i++) {
|
for (let i = 0; i < res.data.data.records.length; i++) {
|
||||||
res.data.data.records[i].key = res.data.data.records[i].id;
|
res.data.data.records[i].key = res.data.data.records[i].studentId;
|
||||||
newData.push(res.data.data.records[i]);
|
newData.push(res.data.data.records[i]);
|
||||||
}
|
}
|
||||||
state.tabledata = newData;
|
state.tabledata = newData;
|
||||||
@@ -702,6 +705,7 @@ export default {
|
|||||||
changePaginationStu,
|
changePaginationStu,
|
||||||
exportTaskStu,
|
exportTaskStu,
|
||||||
exportHomeWork,
|
exportHomeWork,
|
||||||
|
getStudent,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -360,7 +360,8 @@ export default {
|
|||||||
return (
|
return (
|
||||||
<div class="racona">
|
<div class="racona">
|
||||||
<span>
|
<span>
|
||||||
{text.record.finishStatus == 0
|
{text.record.finishStatus == 0 ||
|
||||||
|
text.record.finishStatus == null
|
||||||
? "未开始"
|
? "未开始"
|
||||||
: text.record.finishStatus == 1
|
: text.record.finishStatus == 1
|
||||||
? "已完成"
|
? "已完成"
|
||||||
@@ -422,7 +423,7 @@ export default {
|
|||||||
style="cursor:pointer;margin-right:10px;"
|
style="cursor:pointer;margin-right:10px;"
|
||||||
disabled
|
disabled
|
||||||
>
|
>
|
||||||
-
|
查看
|
||||||
</a-button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -132,7 +132,7 @@
|
|||||||
<!-- 批量标注完成 -->
|
<!-- 批量标注完成 -->
|
||||||
<ASOver
|
<ASOver
|
||||||
v-model:ASOvervisible="ASOvervisible"
|
v-model:ASOvervisible="ASOvervisible"
|
||||||
:ids="selectedRowKeys"
|
v-model:ids="selectedRowKeys"
|
||||||
:taskId="
|
:taskId="
|
||||||
datasource && datasource.routerTaskId ? datasource.routerTaskId : null
|
datasource && datasource.routerTaskId ? datasource.routerTaskId : null
|
||||||
"
|
"
|
||||||
@@ -142,6 +142,7 @@
|
|||||||
:currentStageId="
|
:currentStageId="
|
||||||
datasource && datasource.chapterId ? datasource.chapterId : null
|
datasource && datasource.chapterId ? datasource.chapterId : null
|
||||||
"
|
"
|
||||||
|
v-model:getStudent="getStudent"
|
||||||
/>
|
/>
|
||||||
<!-- 录入成绩抽屉 -->
|
<!-- 录入成绩抽屉 -->
|
||||||
<entry-scores v-model:Evisible="Evisible" />
|
<entry-scores v-model:Evisible="Evisible" />
|
||||||
@@ -395,7 +396,8 @@ export default {
|
|||||||
return (
|
return (
|
||||||
<div class="racona">
|
<div class="racona">
|
||||||
<span>
|
<span>
|
||||||
{text.record.finishStatus == 0
|
{text.record.finishStatus == 0 ||
|
||||||
|
text.record.finishStatus == null
|
||||||
? "未开始"
|
? "未开始"
|
||||||
: text.record.finishStatus == 1
|
: text.record.finishStatus == 1
|
||||||
? "已完成"
|
? "已完成"
|
||||||
@@ -554,7 +556,7 @@ export default {
|
|||||||
if (res.data.code == 200) {
|
if (res.data.code == 200) {
|
||||||
let newData = [];
|
let newData = [];
|
||||||
for (let i = 0; i < res.data.data.records.length; i++) {
|
for (let i = 0; i < res.data.data.records.length; i++) {
|
||||||
res.data.data.records[i].key = res.data.data.records[i].id;
|
res.data.data.records[i].key = res.data.data.records[i].studentId;
|
||||||
newData.push(res.data.data.records[i]);
|
newData.push(res.data.data.records[i]);
|
||||||
}
|
}
|
||||||
state.tabledata = newData;
|
state.tabledata = newData;
|
||||||
@@ -648,6 +650,7 @@ export default {
|
|||||||
changePaginationStu,
|
changePaginationStu,
|
||||||
exportTaskStu,
|
exportTaskStu,
|
||||||
exportHomeWork,
|
exportHomeWork,
|
||||||
|
getStudent,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -371,7 +371,8 @@ export default {
|
|||||||
return (
|
return (
|
||||||
<div class="racona">
|
<div class="racona">
|
||||||
<span>
|
<span>
|
||||||
{text.record.finishStatus == 0
|
{text.record.finishStatus == 0 ||
|
||||||
|
text.record.finishStatus == null
|
||||||
? "未开始"
|
? "未开始"
|
||||||
: text.record.finishStatus == 1
|
: text.record.finishStatus == 1
|
||||||
? "已完成"
|
? "已完成"
|
||||||
@@ -433,7 +434,7 @@ export default {
|
|||||||
style="cursor:pointer;margin-right:10px;"
|
style="cursor:pointer;margin-right:10px;"
|
||||||
disabled
|
disabled
|
||||||
>
|
>
|
||||||
-
|
查看
|
||||||
</a-button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,76 +1,86 @@
|
|||||||
<template>
|
<template>
|
||||||
<a-tree-select
|
<a-tree-select
|
||||||
:getPopupContainer="
|
:getPopupContainer="
|
||||||
(triggerNode) => {
|
(triggerNode) => {
|
||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
v-model:value="labelValue"
|
v-model:value="labelValue"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
||||||
placeholder="请选择归属组织"
|
placeholder="请选择归属组织"
|
||||||
:labelInValue="true"
|
:labelInValue="true"
|
||||||
allow-clear
|
allow-clear
|
||||||
v-model:treeExpandedKeys="stuTreeExpandedKeys"
|
v-model:treeExpandedKeys="stuTreeExpandedKeys"
|
||||||
:loading="orgLoading"
|
:loading="orgLoading"
|
||||||
:load-data="onLoadData"
|
:load-data="onLoadData"
|
||||||
:tree-data="options"
|
:tree-data="options"
|
||||||
:fieldNames="{
|
:fieldNames="{
|
||||||
children: 'treeChildList',
|
children: 'treeChildList',
|
||||||
label: 'name',
|
label: 'name',
|
||||||
value: 'id',
|
value: 'id',
|
||||||
}"
|
}"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
@change="change"
|
@change="change"
|
||||||
dropdownClassName="treeDropdown"
|
dropdownClassName="treeDropdown"
|
||||||
>
|
>
|
||||||
</a-tree-select>
|
</a-tree-select>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {defineEmits, defineProps, ref, watch} from "vue";
|
import { defineEmits, defineProps, ref, watch } from "vue";
|
||||||
import {request, useBoeApi} from "@/api/request";
|
import { request, useBoeApi } from "@/api/request";
|
||||||
import {ORG_CHILD_LIST, ORG_LIST} from "@/api/ThirdApi";
|
import { ORG_CHILD_LIST, ORG_LIST } from "@/api/ThirdApi";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
value: String,
|
value: String,
|
||||||
name: String,
|
name: String,
|
||||||
disabled: {
|
disabled: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const emit = defineEmits({});
|
||||||
|
const stuTreeExpandedKeys = ref([]);
|
||||||
|
const labelValue = ref({});
|
||||||
|
const { data: options, loading: orgLoading } = useBoeApi(
|
||||||
|
ORG_LIST,
|
||||||
|
{ keyword: "" },
|
||||||
|
{
|
||||||
|
init: true,
|
||||||
|
result: (res) => res.result.map((e) => ({ ...e, isLeaf: false })),
|
||||||
}
|
}
|
||||||
})
|
);
|
||||||
const emit = defineEmits({})
|
|
||||||
const stuTreeExpandedKeys = ref([])
|
|
||||||
const labelValue = ref({})
|
|
||||||
const {
|
|
||||||
data: options,
|
|
||||||
loading: orgLoading,
|
|
||||||
} = useBoeApi(ORG_LIST, {keyword: ''}, {
|
|
||||||
init: true,
|
|
||||||
result: (res) => res.result.map(e => ({...e, isLeaf: false})),
|
|
||||||
})
|
|
||||||
|
|
||||||
watch(props, () => {
|
watch(props, () => {
|
||||||
stuTreeExpandedKeys.value = []
|
stuTreeExpandedKeys.value = [];
|
||||||
if (labelValue.value.value !== props.value) {
|
if (labelValue.value.value !== props.value) {
|
||||||
labelValue.value = {value: props.value, label: props.name}
|
labelValue.value = { value: props.value, label: props.name };
|
||||||
}
|
}
|
||||||
if (labelValue.value.label !== props.name) {
|
if (labelValue.value.label !== props.name) {
|
||||||
labelValue.value = {value: props.value, label: props.name}
|
labelValue.value = { value: props.value, label: props.name };
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
function onLoadData(treeNode) {
|
function onLoadData(treeNode) {
|
||||||
return request(ORG_CHILD_LIST, {keyword: '', orgId: treeNode.id}).then(r => {
|
return request(ORG_CHILD_LIST, { keyword: "", orgId: treeNode.id }).then(
|
||||||
treeNode.dataRef.treeChildList = r.result.directChildList
|
(r) => {
|
||||||
options.value = [...options.value]
|
treeNode.dataRef.treeChildList = r.result.directChildList;
|
||||||
})
|
options.value = [...options.value];
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function change({label,value}, obj, {triggerNode: {props: {namePath}}}) {
|
function change(
|
||||||
emit('update:name', label)
|
{ label, value },
|
||||||
emit('update:fullName', namePath)
|
obj,
|
||||||
emit('update:value', value)
|
{
|
||||||
|
triggerNode: {
|
||||||
|
props: { namePath },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
emit("update:name", label);
|
||||||
|
emit("update:fullName", namePath);
|
||||||
|
emit("update:value", value);
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -142,13 +142,13 @@
|
|||||||
<div class="btn4_tit" @click="showEScoreModal">
|
<div class="btn4_tit" @click="showEScoreModal">
|
||||||
<span>批量录入成绩</span>
|
<span>批量录入成绩</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn4_op1" @click="handleAllover">
|
<div class="btn4_op1" @click="updateStatus(1)">
|
||||||
<span>批量结业</span>
|
<span>批量结业</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn4_op2" @click="handleAllSuc">
|
<div class="btn4_op2" @click="updateStatus(0)">
|
||||||
<span>批量通过</span>
|
<span>批量通过</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn4_op3" @click="handleAllReject">
|
<div class="btn4_op3" @click="updateStatus(2)">
|
||||||
<span>批量拒绝</span>
|
<span>批量拒绝</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -220,6 +220,7 @@
|
|||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
"
|
"
|
||||||
|
@click="updateStatus(0, record.id)"
|
||||||
>
|
>
|
||||||
通过
|
通过
|
||||||
</div>
|
</div>
|
||||||
@@ -233,6 +234,7 @@
|
|||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
"
|
"
|
||||||
|
@click="updateStatus(2, record.id)"
|
||||||
>
|
>
|
||||||
拒绝
|
拒绝
|
||||||
</div>
|
</div>
|
||||||
@@ -340,7 +342,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import { computed, defineProps, onMounted, ref, watch } from "vue";
|
import { computed, defineProps, onMounted, ref, watch } from "vue";
|
||||||
import { delStudentList, getStuPage } from "@/api/index1";
|
import { delStudentList, getStuPage, batchUpdateStatus } from "@/api/index1";
|
||||||
import CommonStudent from "@/components/student/CommonStudent";
|
import CommonStudent from "@/components/student/CommonStudent";
|
||||||
import ChangeLevelModal from "./ChangeLevelModal.vue";
|
import ChangeLevelModal from "./ChangeLevelModal.vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
@@ -641,6 +643,32 @@ const exportStu = () => {
|
|||||||
}admin/student/exportTaskStudent?type=${3}&pid=${props.id}`
|
}admin/student/exportTaskStudent?type=${3}&pid=${props.id}`
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//批量操作 结业、通过、拒绝等
|
||||||
|
const updateStatus = (status, id) => {
|
||||||
|
if (!id && stuSelectKeys.value.length === 0) {
|
||||||
|
message.warning("请选择学员");
|
||||||
|
}
|
||||||
|
let obj = {
|
||||||
|
ids: id ? [id] : stuSelectKeys.value,
|
||||||
|
};
|
||||||
|
if (status === 1) {
|
||||||
|
obj.completionStatus = 1;
|
||||||
|
} else {
|
||||||
|
obj.status = status;
|
||||||
|
}
|
||||||
|
batchUpdateStatus(obj)
|
||||||
|
.then((res) => {
|
||||||
|
console.log("批量更新学员状态", res);
|
||||||
|
if (res.data.code === 200) {
|
||||||
|
getStuList();
|
||||||
|
stuSelectKeys.value = [];
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log("批量更新学员状态失败", err);
|
||||||
|
});
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.TableStudent {
|
.TableStudent {
|
||||||
|
|||||||
@@ -3309,6 +3309,7 @@ export default defineComponent({
|
|||||||
addhomeworkvisible: false,
|
addhomeworkvisible: false,
|
||||||
addtestvisible: false,
|
addtestvisible: false,
|
||||||
codevisible: false, //二维码弹窗
|
codevisible: false, //二维码弹窗
|
||||||
|
codeIndex: null,
|
||||||
codeInfo: null, //二维码内容
|
codeInfo: null, //二维码内容
|
||||||
codeUrl: codeUrl,
|
codeUrl: codeUrl,
|
||||||
|
|
||||||
@@ -5414,18 +5415,18 @@ export default defineComponent({
|
|||||||
|
|
||||||
//二维码
|
//二维码
|
||||||
const qrcodeVisible = (record, type) => {
|
const qrcodeVisible = (record, type) => {
|
||||||
console.log(
|
|
||||||
"record",
|
|
||||||
record,
|
|
||||||
process.env.VUE_APP_IFRAME_STUDENT_URL,
|
|
||||||
process.env.COURSE_STUDY
|
|
||||||
);
|
|
||||||
state.codevisible = true;
|
state.codevisible = true;
|
||||||
state.codeInfo = {
|
state.codeInfo = {
|
||||||
title: type == 1 ? "【课程】二维码" : "【签到】二维码",
|
title: type == 1 ? "【课程】二维码" : "【签到】二维码",
|
||||||
name: record.name ? record.name : "",
|
name: record.name ? record.name : "",
|
||||||
url: process.env.COURSE_STUDY + record.offcourseId,
|
url:
|
||||||
|
type == 1
|
||||||
|
? process.env.VUE_APP_COURSE_STUDY + record.offcourseId
|
||||||
|
:process.env.VUE_APP_BOE_API_URL + `/admin/student/studentSign?taskId=${
|
||||||
|
record.offcoursePlanId
|
||||||
|
}&type=${3}`,
|
||||||
};
|
};
|
||||||
|
console.log("codeInfo", state.codeInfo);
|
||||||
state.codeIndex = type;
|
state.codeIndex = type;
|
||||||
state.codeType = type;
|
state.codeType = type;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user