mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-15 22:06:45 +08:00
Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
@@ -43,3 +43,6 @@ export const AttendanceLeave = (obj) => http.post('/stu/task/attendance/leave',
|
||||
|
||||
// 直播考勤签到
|
||||
export const AttendanceSign = (obj) => http.post('/stu/task/attendance/sign', obj)
|
||||
|
||||
// 查询项目管理的信息
|
||||
export const QueryProjectManageDetail = (obj) => http.post('/project/management/queryProjectManageDetail', obj)
|
||||
@@ -112,24 +112,25 @@
|
||||
</div>-->
|
||||
</div>
|
||||
</a-drawer>
|
||||
<CVote
|
||||
v-model:CVvisible="CVvisible"
|
||||
:voteID="voteID"
|
||||
:courseID="courseID"
|
||||
/>
|
||||
<!-- 学员查看抽屉 -->
|
||||
<check-stu
|
||||
v-model:CheckStuvisible="CheckStuvisible"
|
||||
v-model:routerId="routerId"
|
||||
v-model:studentId="studentId"
|
||||
/>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
// import * as api from "../../../api/index";
|
||||
import * as api from "../../../api/indexTaskManage";
|
||||
import CVote from "../CheckVote.vue"
|
||||
import CheckStu from "../CheckStu";
|
||||
|
||||
export default {
|
||||
name: "RouterProjectManage",
|
||||
components:{
|
||||
CVote,
|
||||
CheckStu,
|
||||
},
|
||||
props: {
|
||||
PjModelVisible: {
|
||||
@@ -185,25 +186,25 @@
|
||||
id: 3,
|
||||
value: "3",
|
||||
label: "已完成",
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
value: "4",
|
||||
label: "未完成",
|
||||
},
|
||||
}
|
||||
],
|
||||
tabledata: [],
|
||||
tableDataTotalLoading: true, // 表格loading加载配置
|
||||
CVvisible:false, //查看投票抽屉
|
||||
voteID: "",
|
||||
courseID: ""
|
||||
courseID: "",
|
||||
|
||||
|
||||
routerId: '',
|
||||
studentId: '',
|
||||
CheckStuvisible: false,
|
||||
});
|
||||
const tableDataFunc = () => {
|
||||
const columns = [
|
||||
{
|
||||
title: "工号",
|
||||
dataIndex: "studentUserNo",
|
||||
key: "studentUserNo",
|
||||
dataIndex: "studentCode",
|
||||
key: "studentCode",
|
||||
width: "20%",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -211,7 +212,7 @@
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.studentUserNo?text.record.studentUserNo:"-"}</span>
|
||||
<span> {text.record.studentCode?text.record.studentCode:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -267,24 +268,72 @@
|
||||
},
|
||||
{
|
||||
title: "学员关卡",
|
||||
dataIndex: "chapterName",
|
||||
key: "chapterName",
|
||||
width: "10%",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.chapterName?text.record.chapterName:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "当前阶段",
|
||||
dataIndex: "currentStageName",
|
||||
key: "currentStageName",
|
||||
width: "10%",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: () => {
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {props.levelName}</span>
|
||||
<span> {text.record.currentStageName?text.record.currentStageName:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "当前任务",
|
||||
dataIndex: "currentTaskName",
|
||||
key: "currentTaskName",
|
||||
width: "10%",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.currentTaskName?text.record.currentTaskName:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "进度",
|
||||
dataIndex: "process",
|
||||
key: "process",
|
||||
width: "10%",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.process?text.record.process:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "完成时间",
|
||||
dataIndex: "lastStudyTime",
|
||||
key: "lastStudyTime",
|
||||
dataIndex: "finishEdTime",
|
||||
key: "finishEdTime",
|
||||
width: "15%",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -292,7 +341,7 @@
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.lastStudyTime?text.record.lastStudyTime:"-"}</span>
|
||||
<span> {text.record.finishEdTime?text.record.finishEdTime:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -327,20 +376,13 @@
|
||||
style="color:#387df7;cursor:pointer"
|
||||
onClick={
|
||||
() => {
|
||||
if(value.record.finishStatus !== 3){
|
||||
message.destroy()
|
||||
message.error("当前任务未完成")
|
||||
return
|
||||
}
|
||||
{/* 当前投票提交的ID 用来查看投票详情 */}
|
||||
console.log(value.record.voteSubmitId);
|
||||
state.voteID = value.record.voteSubmitId;
|
||||
state.CVvisible = true;
|
||||
{/* 当前学员 用来查看学员详情 */}
|
||||
state.routerId = value.record.routerId;
|
||||
state.studentId = value.record.studentId;
|
||||
state.CheckStuvisible = true;
|
||||
console.log(value);
|
||||
}}>
|
||||
{value.record.finishStatus == 3 ?
|
||||
<span style='color:#387df7;'> 查看 </span>
|
||||
:
|
||||
<span style='color:#999;'> 查看 </span>}
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -359,8 +401,9 @@
|
||||
const afterVisibleChange = (bol) => {
|
||||
if (bol == true) {
|
||||
console.log("当前是什么类型", props.datasource.type);
|
||||
console.log("当前是什么类型", props.datasource);
|
||||
state.tableDataTotalLoading = true;
|
||||
{/* getData(); */}
|
||||
getData();
|
||||
}
|
||||
};
|
||||
const selectProjectName = (value) => {
|
||||
@@ -377,51 +420,34 @@
|
||||
|
||||
// 获取数据
|
||||
function getData() {
|
||||
if(props.datasource.type == 12){
|
||||
if(props.datasource.type == 13){
|
||||
console.log("我是传递的查询参数", {
|
||||
"pageNo": state.currentPage,
|
||||
"pageSize": state.pageSize,
|
||||
"chapterId": props.datasource.stageId=="0"?"":props.datasource.stageId,
|
||||
"status": state.projectName,
|
||||
"studentName": state.name,
|
||||
"targetId":props.datasource.projectId,
|
||||
"taskId": props.datasource.courseId,
|
||||
"type": 1
|
||||
});
|
||||
api.QueryVoteManagementDetail({
|
||||
"courseId": props.datasource.courseId,
|
||||
"pageNo": state.currentPage,
|
||||
"pageSize": state.pageSize,
|
||||
"chapterId": props.datasource.chapterId,
|
||||
"status": state.projectName,
|
||||
"studentName": state.name,
|
||||
"targetId":props.datasource.routerId,
|
||||
"taskId": props.datasource.courseId,
|
||||
"type": 1
|
||||
"studentName": state.name
|
||||
});
|
||||
api.QueryProjectManageDetail({
|
||||
"courseId": props.datasource.courseId,
|
||||
"pageNo": state.currentPage,
|
||||
"pageSize": state.pageSize,
|
||||
"chapterId": props.datasource.chapterId,
|
||||
"status": state.projectName,
|
||||
"studentName": state.name
|
||||
}).then(res=>{
|
||||
console.log('投票数据获取', res)
|
||||
if(res.data.code==200){
|
||||
state.tableDataTotalLoading = false;
|
||||
let newData = []
|
||||
for(let i=0;i<res.data.data.rows.length;i++){
|
||||
// 处理在线课字段和表格中字段保持一致
|
||||
let obj = {
|
||||
studentUserNo: res.data.data.rows[i].studentCode,
|
||||
studentName: res.data.data.rows[i].studentName,
|
||||
studentDepartName: res.data.data.rows[i].studentDepartName,
|
||||
studentJobName: res.data.data.rows[i].studentJobName,
|
||||
lastStudyTime: res.data.data.rows[i].submitTime,
|
||||
finishStatus: res.data.data.rows[i].status?res.data.data.rows[i].status:0,
|
||||
voteSubmitId: res.data.data.rows[i].voteSubmitId
|
||||
}
|
||||
newData.push(obj)
|
||||
}
|
||||
state.tabledata = newData;
|
||||
state.tabledata = res.data.data.rows;
|
||||
state.courseID = props.datasource.courseId;
|
||||
state.tableDataTotal = res.data.data.total;
|
||||
}
|
||||
}).catch(err=>{
|
||||
console.log(err)
|
||||
state.tableDataTotalLoading = false;
|
||||
state.tabledata = [];
|
||||
})
|
||||
}else{
|
||||
state.tableDataTotalLoading = false;
|
||||
@@ -453,8 +479,8 @@
|
||||
|
||||
// 导出数据
|
||||
function exportTaskStu() {
|
||||
console.log(`${process.env.VUE_APP_BASE_API}/admin/vote/manage/export/vote?type=${1}&voteId=${props.datasource.routerTaskId}`)
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/vote/manage/export/vote?type=${1}&voteId=${props.datasource.routerTaskId}`)
|
||||
console.log(`${process.env.VUE_APP_BASE_API}/project/management/exportProjectManage?courseId=${props.datasource.courseId}`)
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/project/management/exportProjectManage?courseId=${props.datasource.courseId}`)
|
||||
}
|
||||
|
||||
return {
|
||||
@@ -477,8 +503,13 @@
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.ant-drawer-content-wrapper {
|
||||
max-width: 80% !important;
|
||||
}
|
||||
|
||||
.RouterProjectManage {
|
||||
// overflow-x: auto;
|
||||
max-width: auto;
|
||||
.drawerMain {
|
||||
min-width: 550px;
|
||||
margin: 0px 32px 0px 32px;
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import {computed, createVNode, defineProps, ref, watch} from "vue";
|
||||
import {computed, createVNode, defineProps, defineExpose, ref, watch} from "vue";
|
||||
import {usePage} from "@/api/request";
|
||||
import {STUDENT_LIST} from "@/api/apis";
|
||||
import {delStudentList} from "@/api/index1";
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
</div>
|
||||
<div class="rightt">
|
||||
<!-- 2022-11-30注释 后面放开 -->
|
||||
<!-- <div class="select">
|
||||
<div class="select" style="margin-right:90px;">
|
||||
<span>学习模式:</span>
|
||||
<div class="inputbox">
|
||||
<input type="text" placeholder="按学习时间解锁" />
|
||||
@@ -201,7 +201,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<unlock-mode v-model:unlockModeVisible="unlockModeVisible" />
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<router-link to="/leveladd">
|
||||
<div style="display: flex">
|
||||
@@ -781,7 +781,7 @@
|
||||
</div>
|
||||
<div class="rightt">
|
||||
<!-- 2022-11-30注释 后面放开 -->
|
||||
<!-- <div class="select">
|
||||
<div class="select">
|
||||
<span>学习模式:</span>
|
||||
<div class="inputbox">
|
||||
<input type="text" placeholder="按学习时间解锁" />
|
||||
@@ -790,7 +790,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<unlock-mode v-model:unlockModeVisible="unlockModeVisible" />
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<router-link to="/leveladd">
|
||||
<div style="display: flex">
|
||||
@@ -898,7 +898,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="footbtn">
|
||||
<div class="footbtn">
|
||||
<div class="btnbox">
|
||||
<div class="btn btn2" @click="temporaryStorage">
|
||||
<div class="btnText">暂存</div>
|
||||
@@ -910,7 +910,7 @@
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
<!-- 添加学员抽屉 -->
|
||||
<add-stu v-model:AddSvisible="AddSvisible" />
|
||||
<!-- 导入学员抽屉 -->
|
||||
@@ -1087,7 +1087,7 @@ import { editTask } from "../../api/indexTaskadd";
|
||||
|
||||
// import { RouterEditTask } from "@/api/indexTask";
|
||||
import { useRouter } from "vue-router";
|
||||
// import UnlockMode from "../../components/drawers/UnlockMode.vue";
|
||||
import UnlockMode from "../../components/drawers/UnlockMode.vue";
|
||||
export default {
|
||||
name: "LevelAddDetail",
|
||||
components: {
|
||||
@@ -1105,7 +1105,7 @@ export default {
|
||||
AddLive,
|
||||
AddRef,
|
||||
draggable,
|
||||
// UnlockMode,
|
||||
UnlockMode,
|
||||
AddFaceteach,
|
||||
AddProject,
|
||||
},
|
||||
|
||||
@@ -105,16 +105,16 @@
|
||||
</div>
|
||||
<div class="rightt">
|
||||
<!-- 2022-11-30注释 后面放开 -->
|
||||
<!-- <div class="select">
|
||||
<span>学习模式:</span>
|
||||
<div class="inputbox">
|
||||
<input type="text" placeholder="按学习时间解锁" />
|
||||
<div class="bottonbox" @click="showModeVisible">
|
||||
<div class="btnText">切换模式</div>
|
||||
</div>
|
||||
<unlock-mode v-model:unlockModeVisible="unlockModeVisible" />
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="select" style="margin-right:90px;">
|
||||
<span>学习模式:</span>
|
||||
<div class="inputbox">
|
||||
<input type="text" placeholder="按学习时间解锁" style="padding-left:12px;" />
|
||||
<div class="bottonbox" @click="showModeVisible">
|
||||
<div class="btnText">切换模式</div>
|
||||
</div>
|
||||
<unlock-mode v-model:unlockModeVisible="unlockModeVisible" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<!-- <img class="img2" src="../../assets/images/projectadd/keep.png" />
|
||||
<div class="pub">保存</div>
|
||||
@@ -570,19 +570,19 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="footbtn">
|
||||
<div class="btnbox">
|
||||
<div class="btn btn2" @click="temporaryStorage">
|
||||
<div class="btnText">暂存</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="submitStorage">
|
||||
<div class="btnText">确定</div>
|
||||
</div>
|
||||
<div class="btn btn1" @click="cancelStorage">
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="footbtn">
|
||||
<div class="btnbox">
|
||||
<div class="btn btn2" @click="temporaryStorage">
|
||||
<div class="btnText">暂存</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="submitStorage">
|
||||
<div class="btnText">确定</div>
|
||||
</div>
|
||||
<div class="btn btn1" @click="cancelStorage">
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 添加阶段弹窗 -->
|
||||
<div>
|
||||
@@ -841,6 +841,7 @@ import * as api from "../../api/indexTaskadd";
|
||||
import * as apistage from "../../api/indexStage";
|
||||
import * as apimove from "../../api/indexMovetask";
|
||||
import draggable from "vuedraggable";
|
||||
import UnlockMode from "../../components/drawers/UnlockMode.vue";
|
||||
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
|
||||
@@ -860,7 +861,7 @@ export default {
|
||||
AddEval,
|
||||
AddInvist,
|
||||
AddVote,
|
||||
// UnlockMode,
|
||||
UnlockMode,
|
||||
},
|
||||
setup() {
|
||||
const router = useRouter();
|
||||
|
||||
@@ -134,16 +134,16 @@
|
||||
</div>
|
||||
<div class="rightt">
|
||||
<!-- 2022-11-30注释 后面放开 -->
|
||||
<!-- <div class="select">
|
||||
<div class="select" style="margin-right:90px;">
|
||||
<span>学习模式:</span>
|
||||
<div class="inputbox">
|
||||
<input type="text" placeholder="按学习时间解锁" />
|
||||
<input type="text" placeholder="按学习时间解锁" style="padding-left:12px;"/>
|
||||
<div class="bottonbox" @click="showModeVisible">
|
||||
<div class="btnText">切换模式</div>
|
||||
</div>
|
||||
<unlock-mode v-model:unlockModeVisible="unlockModeVisible" />
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<!-- <img class="img2" src="../../assets/images/projectadd/keep.png" />
|
||||
<div class="pub">保存</div>
|
||||
@@ -735,7 +735,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="footbtn">
|
||||
<div class="footbtn">
|
||||
<div class="btnbox">
|
||||
<div class="btn btn2" @click="temporaryStorage">
|
||||
<div class="btnText">暂存</div>
|
||||
@@ -747,7 +747,7 @@
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
<!-- 添加阶段弹窗 -->
|
||||
<div>
|
||||
@@ -1091,7 +1091,7 @@ import { message } from "ant-design-vue";
|
||||
import * as api from "../../api/indexTemplate";
|
||||
import draggable from "vuedraggable";
|
||||
import { storage } from "../../api/storage";
|
||||
// import UnlockMode from "../../components/drawers/UnlockMode.vue";
|
||||
import UnlockMode from "../../components/drawers/UnlockMode.vue";
|
||||
// import * as api1 from "../../api/index1";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
const drawercolumns = [
|
||||
@@ -1149,7 +1149,7 @@ export default {
|
||||
AddEval,
|
||||
AddInvist,
|
||||
AddVote,
|
||||
// UnlockMode,
|
||||
UnlockMode,
|
||||
},
|
||||
setup() {
|
||||
const route = useRoute();
|
||||
|
||||
Reference in New Issue
Block a user