feat:增加查看作业

This commit is contained in:
lixg
2023-01-29 14:27:05 +08:00
9 changed files with 434 additions and 310 deletions

2
.env
View File

@@ -1,7 +1,7 @@
# 本项目基础url
VUE_APP_BASE=/manage
# api项目基础url
VUE_APP_BASE_API=/manageApi
VUE_APP_BASE_API=/manage
#文件路径
VUE_APP_FILE_PATH=/upload/
# 代理url 本地调试,不可以用在其他地方

View File

@@ -16,25 +16,25 @@
/>
</div>
<!-- 2022-11-30注释 后面放开 修改div的padding-topL:32 -->
<div style="display: flex; flex-direction: row; padding-top: 0px">
<!-- <button
style="width: 100px"
<div style="display: flex; flex-direction: row; padding-top: 0px; margin-top: 20px; margin-left: 32px;">
<button
style="width: 100px; cursor: pointer;"
@click="changeOuter(1)"
:class="[isOuter == 1 ? 'outer' : 'notOuter']"
>
系统考试
</button> -->
</button>
<!-- <button
style="width: 100px"
<button
style="width: 100px; cursor: pointer;"
@click="changeOuter(2)"
:class="[isOuter == 2 ? 'outer' : 'notOuter']"
>
外部考试
</button> -->
</button>
</div>
<div class="contentMain">
<div v-if="isOuter==1" class="contentMain">
<div class="main_left">
<div class="main_item">
<div class="signbox">
@@ -289,6 +289,63 @@
<div class="main_item" style="height: 20px;"></div>
</div>
</div>
<div v-else class="contentMain">
<div class="main_left">
<div class="main_item">
<div class="signbox">
<div class="sign">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 3px">考试名称</span>
</div>
<div class="btnbox">
<a-input
v-model:value="test1.examinationName"
style="width: 400px; height: 40px; border-radius: 8px"
placeholder="请输入考试名称"
:maxlength="20"
/>
</div>
</div>
<div class="main_item">
<div class="signbox">
<div class="sign">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 3px">数据来源</span>
</div>
<div class="btnbox">
<a-input
v-model:value="test1.examinationName"
style="width: 400px; height: 40px; border-radius: 8px"
placeholder="请输入考试名称"
:maxlength="20"
/>
</div>
</div>
<div class="main_item2">
<div class="signbox">
<span style="margin-right: 3px">考试说明</span>
</div>
<div class="textarea">
<a-textarea
v-model:value="test1.examinationExplain"
placeholder="请输入考试说明"
allow-clear
show-count
:maxlength="200"
:rows="6"
/>
</div>
</div>
</div>
</div>
<div class="main_btns">
<a-button class="btn1" @click="closeDrawer2">取消</a-button>
<a-button class="btn2" @click="updateTest">确定</a-button>
@@ -398,6 +455,18 @@ export default {
scoringModel: 2,
questionArrangement: 4,
},
test1: {
examinationName: '',
chooseTime: '',
examinationDuration: '',
passLine: '',
examinationExplain: null,
examinationLimit: null,
showAnswers: 1,
showAnalysis: 1,
scoringModel: 2,
questionArrangement: 4,
},
addLoading: false,
isOuter: 1, // 是否为外部考试

View File

@@ -17,8 +17,14 @@
</div>
<div class="main">
<div class="basetext"><span>基础信息</span></div>
<div class="HW Name"><span>作业名称</span ><span style="color:#999ba3">{{""}}</span></div>
<div class="HW Need"><span>作业要求</span ><span style="color:#999ba3">{{"600"}}</span></div>
<div class="HW Name">
<span>作业名称</span
><span style="color: #999ba3">{{ workName }}</span>
</div>
<div class="HW Need">
<span>作业要求</span
><span style="color: #999ba3">{{ workRequirement }}</span>
</div>
<div class="HWText">
<span>作业信息</span>
<div class="hwText">
@@ -38,7 +44,8 @@
</template>
<script>
import { toRefs,reactive } from '@vue/reactivity';
import { toRefs, reactive } from "@vue/reactivity";
import { queryWorkDetailById } from "@/api/indexWork";
export default {
name: "CheckWork",
props: {
@@ -46,23 +53,50 @@ export default {
type: Boolean,
default: false,
},
workId: {
type: Number,
default: null,
},
},
setup(props, ctx) {
const state = reactive({
})
workName: null,
workRequirement: null,
});
const closeDrawer = () => {
ctx.emit("update:CWvisible",false)
}
ctx.emit("update:CWvisible", false);
state.workName = null;
state.workRequirement = null;
getWorkDetail();
};
const afterVisibleChange = (bool) => {
console.log(bool);
if (bool) {
getWorkDetail();
}
};
//获取作业详情
const getWorkDetail = () => {
queryWorkDetailById({ workId: props.workId })
.then((res) => {
console.log("获取作业详情", res);
if (res.data.code === 200) {
state.workName = res.data.data.workName;
state.workRequirement = res.data.data.workRequirement;
}
})
.catch((err) => {
console.log("获取作业详情失败", err);
});
};
return {
...toRefs(state),
closeDrawer,
afterVisibleChange,
}
}
getWorkDetail,
};
},
};
</script>
<style lang="scss">

View File

@@ -394,15 +394,15 @@ export default {
);
},
},
// {
// title: "操作",
// dataIndex: "operation",
// key: "operation",
// width: 100,
// align: "center",
// ellipsis: true,
// className: "h",
// },
{
title: "操作",
dataIndex: "operation",
key: "operation",
width: 100,
align: "center",
ellipsis: true,
className: "h",
},
],
exportHomeWorkV: false,
downloadUrl: null,
@@ -567,9 +567,12 @@ export default {
function exportTaskStu() {
window.open(
`${
process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${
process.env.VUE_APP_BASE_API
}/admin/student/exportTaskStudent?currentStageId=${
props.projectTaskInfo.stageId
}&type=${1}&pid=${props.projectTaskInfo.projectId}&taskType=${4}&taskId=${props.projectTaskInfo.projectTaskId}`
}&type=${1}&pid=${
props.projectTaskInfo.projectId
}&taskType=${4}&taskId=${props.projectTaskInfo.projectTaskId}`
);
// api
// .exportTaskStudent({
@@ -621,7 +624,8 @@ export default {
console.log("props.projectTaskInfo", props.projectTaskInfo);
window.open(
`${
process.env.VUE_APP_BASE_API}/admin/student/exportHomeWork?currentStageId=${
process.env.VUE_APP_BASE_API
}/admin/student/exportHomeWork?currentStageId=${
props.projectTaskInfo.stageId
}&type=${1}&pid=${props.projectTaskInfo.projectId}&taskId=${
props.projectTaskInfo.projectTaskId

View File

@@ -133,7 +133,7 @@
v-model:searchTaskList="searchTaskList"
/>
<!-- 查看作业抽屉 -->
<CKWork v-model:CWvisible="CWvisible" />
<CKWork v-model:CWvisible="CWvisible" :workId="datasource?.courseId" />
<!-- 查看答卷抽屉 -->
<CQue v-model:CQvisible="CQvisible" />
@@ -388,15 +388,15 @@ export default {
);
},
},
// {
// title: "操作",
// dataIndex: "operation",
// key: "operation",
// width: 100,
// align: "center",
// ellipsis: true,
// className: "h",
// },
{
title: "操作",
dataIndex: "operation",
key: "operation",
width: 100,
align: "center",
ellipsis: true,
className: "h",
},
],
exportHomeWorkV: false,
downloadUrl: null,
@@ -417,7 +417,7 @@ export default {
<a-button
type="link"
class="operation"
style="cursor:pointer;margin-right:10px;"
style="cursor:pointer;margin-right:10px;color: #387DF7;"
onClick={() => {
state.CWvisible = true;
}}
@@ -435,12 +435,7 @@ export default {
justifyContent: "center",
}}
>
<a-button
type="link"
class="operation"
style="cursor:pointer;margin-right:10px;"
disabled
>
<a-button class="operation" style="margin-right:10px;">
查看
</a-button>
</div>
@@ -491,7 +486,7 @@ export default {
//获取学员
const getStudent = () => {
console.log("我是传递的查询参数", {
console.log("我是传递的查询参数", props.datasource.courseId, {
pageNo: state.currentPage,
pageSize: state.pageSize,
currentStageId: props.datasource.chapterId,
@@ -558,9 +553,12 @@ export default {
console.log("props.datasource", props.datasource);
window.open(
`${
process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${
process.env.VUE_APP_BASE_API
}/admin/student/exportTaskStudent?currentStageId=${
props.datasource.chapterId
}&type=${2}&pid=${props.datasource.routerId}&taskType=${4}&taskId=${props.datasource.routerTaskId}`
}&type=${2}&pid=${props.datasource.routerId}&taskType=${4}&taskId=${
props.datasource.routerTaskId
}`
);
// api
// .exportTaskStudent({
@@ -612,7 +610,8 @@ export default {
console.log("props.datasource", props.datasource);
window.open(
`${
process.env.VUE_APP_BASE_API}/admin/student/exportHomeWork?currentStageId=${
process.env.VUE_APP_BASE_API
}/admin/student/exportHomeWork?currentStageId=${
props.datasource.chapterId
}&type=${2}&pid=${props.datasource.routerId}&taskId=${
props.datasource.routerTaskId

View File

@@ -39,7 +39,9 @@
</div>
<div class="select">
<a-tree-select
:getPopupContainer="triggerNode => triggerNode.parentNode || document.body"
:getPopupContainer="
(triggerNode) => triggerNode.parentNode || document.body
"
v-model:value="sysTypeId"
show-search
style="width: 200px"
@@ -2285,7 +2287,8 @@ import {
shallowRef,
onMounted,
onBeforeUnmount,
watch, computed,
watch,
computed,
} from "vue";
import * as api from "../../api/indexInvist.js";
@@ -2418,16 +2421,16 @@ const columns1 = [
return text ? text : "-";
},
},
// {
// title: "学习人数",
// width: 130,
// dataIndex: "stunum",
// key: "4",
// align: "center",
// customRender: ({ text }) => {
// // return text ? text : "0";
// },
// },
{
title: "学习人数",
width: 130,
dataIndex: "stunum",
key: "4",
align: "center",
customRender: ({ text }) => {
return text ? text : "0";
},
},
// {
// title: "评分",
// width: 130,
@@ -2538,7 +2541,7 @@ const columns2 = [
key: "studentName",
width: "6%",
align: "center",
customRender: ({record: {studentName}}) => (studentName || "-")
customRender: ({ record: { studentName } }) => studentName || "-",
},
{
title: "工号",
@@ -2547,7 +2550,7 @@ const columns2 = [
width: "12%",
ellipsis: true,
align: "center",
customRender: ({record: {studentUserNo}}) => (studentUserNo || "-")
customRender: ({ record: { studentUserNo } }) => studentUserNo || "-",
},
{
title: "开课名称",
@@ -2556,7 +2559,7 @@ const columns2 = [
width: "12%",
ellipsis: true,
align: "center",
customRender: ({record: {name}}) => (name || "-")
customRender: ({ record: { name } }) => name || "-",
},
{
title: "地点",
@@ -2565,7 +2568,7 @@ const columns2 = [
width: "12%",
ellipsis: true,
align: "center",
customRender: ({record: {address}}) => (address || "-")
customRender: ({ record: { address } }) => address || "-",
},
{
title: "数据来源",
@@ -2574,7 +2577,8 @@ const columns2 = [
ellipsis: true,
width: "12%",
align: "center",
customRender: ({record:{courseName,routerName}}) => (courseName || routerName || "开课"),
customRender: ({ record: { courseName, routerName } }) =>
courseName || routerName || "开课",
},
{
title: "学习时间",
@@ -2583,7 +2587,7 @@ const columns2 = [
width: "10%",
align: "center",
ellipsis: true,
customRender: ({record:{lastStudyTime}}) => (lastStudyTime || "-")
customRender: ({ record: { lastStudyTime } }) => lastStudyTime || "-",
},
{
title: "签到时间",
@@ -2592,7 +2596,7 @@ const columns2 = [
width: "10%",
align: "center",
ellipsis: true,
customRender: ({record:{signTime}}) => (signTime || "-")
customRender: ({ record: { signTime } }) => signTime || "-",
},
{
title: "状态",
@@ -2994,7 +2998,8 @@ export default defineComponent({
dataIndex: "signstatus",
key: "7",
align: "center",
customRender: ({ record }) => record.signStatus?'已签到':'未签到',
customRender: ({ record }) =>
record.signStatus ? "已签到" : "未签到",
},
{
title: "评估状态",
@@ -3683,7 +3688,7 @@ export default defineComponent({
// 渲染列表1操作
const getTableDate = async () => {
console.log('我是点击搜索的数据',state.sysTypeId)
console.log("我是点击搜索的数据", state.sysTypeId);
// let datas = state.tableData1;
let startTime = "";
let endTime = "";
@@ -3739,16 +3744,32 @@ export default defineComponent({
datas.forEach((itm) => {
itm.pageNo = pageNo;
itm.contentTxt = findClassFullName(sysTypeOptions.value,itm.sysTypeId) || '-'
itm.contentTxt =
findClassFullName(sysTypeOptions.value, itm.sysTypeId) || "-";
});
state.tableData1 = datas;
};
function findClassFullName(list,classify, name = '') {
return list && list.length && list
.map(e => classify == e.dictCode ? name ? name + '-' + e.dictName : e.dictName : findClassFullName(e.children, classify,name ? name + '-' + e.dictName : e.dictName))
.filter(name => name)
.join('') || ''
function findClassFullName(list, classify, name = "") {
return (
(list &&
list.length &&
list
.map((e) =>
classify == e.dictCode
? name
? name + "-" + e.dictName
: e.dictName
: findClassFullName(
e.children,
classify,
name ? name + "-" + e.dictName : e.dictName
)
)
.filter((name) => name)
.join("")) ||
""
);
}
getTableDate();
@@ -6866,7 +6887,6 @@ export default defineComponent({
background-image: url("../../assets/images/courseManage/reset1.png");
}
}
}
}
}
@@ -7523,8 +7543,6 @@ export default defineComponent({
background-image: url(../../assets/images/coursewareManage/export1.png);
}
}
}
.btn3 {
.search {

View File

@@ -381,7 +381,7 @@
</div>
<div class="lin"></div>
</div>
<!-- TODO1216
<!-- TODO1216 -->
<div class="item" @click="showDrawerAddDiscuss">
<div class="itcon">
<div class="img">
@@ -403,7 +403,7 @@
/>
</div>
<div class="lin"></div>
</div>-->
</div>
<div class="item" @click="showDrawerAddActive">
<div class="itcon">
<div class="img">
@@ -476,7 +476,7 @@
</div>
<div class="lin"></div>
</div>
<!--TODO1216
<!-- TODO1216 -->
<div class="item" @click="showDrawerAddVote">
<div class="itcon">
<div class="img">
@@ -524,7 +524,7 @@
</div>
</div>
</div>
-->
</div>
<div class="boom" :style="{minHeight:level.length>6? ((level.length - 6)*106+512) + 'px' : 512 + 'px'}">
<div class="boomcen">
@@ -1068,14 +1068,14 @@ import AddOnline from "../../components/drawers/AddOnline.vue";
import AddCase from "../../components/drawers/AddCase.vue";
import AddHomework from "../../components/drawers/AddHomework.vue";
import AddTest from "../../components/drawers/AddTest.vue";
//import AddDiscuss from "../../components/drawers/AddDiscuss.vue";
import AddDiscuss from "../../components/drawers/AddDiscuss.vue";
import AddActive from "../../components/drawers/AddActive.vue";
import AddEval from "../../components/drawers/AddEval.vue";
import AddInvist from "../../components/drawers/AddInvist.vue";
//import AddVote from "../../components/vote/AddVote.vue";
import AddVote from "../../components/vote/AddVote.vue";
import AddLive from "../../components/drawers/AddLive.vue";
import AddRef from "../../components/drawers/AddRef.vue";
//import AddProject from "../../components/drawers/AddProject.vue";
import AddProject from "../../components/drawers/AddProject.vue";
import AddFaceteach from "../../components/drawers/AddFaceteach.vue";
import * as api from "../../api/indexLevel";
import { GetRouterDetail } from "../../api/indexTask";
@@ -1096,18 +1096,18 @@ export default {
AddOnline,
AddCase,
AddHomework,
//AddDiscuss,
AddDiscuss,
AddActive,
AddTest,
AddEval,
AddInvist,
//AddVote,
AddVote,
AddLive,
AddRef,
draggable,
// UnlockMode,
AddFaceteach,
//AddProject,
AddProject,
},
setup() {
const router = useRouter();

View File

@@ -243,7 +243,7 @@
<!-- 添加外链侧弹窗 -->
<div class="lin"></div>
</div>
<!--TODO1216
<!-- TODO1216 -->
<div class="item" @click="showDrawerAddDiscuss">
<div class="itcon">
<div class="img">
@@ -267,7 +267,7 @@
<div class="lin"></div>
</div>
-->
<div class="item" @click="showDrawerAddActive">
<div class="itcon">
<div class="img">
@@ -317,7 +317,7 @@
<div class="lin"></div>
</div>
<!--TODO1216
<!-- TODO1216 -->
<div class="item" @click="showDrawerAddVote">
<div class="itcon">
<div class="img">
@@ -343,7 +343,7 @@
</div>
</div>
-->
</div>
<div class="boom">
<div class="boomcen">
@@ -831,11 +831,11 @@ import AddHomework from "../../components/drawers/AddHomework.vue";
import AddTest from "../../components/drawers/AddTest.vue";
import AddLive from "../../components/drawers/AddLive.vue";
import AddRef from "../../components/drawers/AddRef.vue";
//import AddDiscuss from "../../components/drawers/AddDiscuss.vue";
import AddDiscuss from "../../components/drawers/AddDiscuss.vue";
import AddActive from "../../components/drawers/AddActive.vue";
import AddEval from "../../components/drawers/AddEval.vue";
import AddInvist from "../../components/drawers/AddInvist.vue";
//import AddVote from "../../components/vote/AddVote.vue";
import AddVote from "../../components/vote/AddVote.vue";
import { message } from "ant-design-vue";
import * as api from "../../api/indexTaskadd";
import * as apistage from "../../api/indexStage";
@@ -855,11 +855,11 @@ export default {
AddTest,
AddLive,
AddRef,
// AddDiscuss,
AddDiscuss,
AddActive,
AddEval,
AddInvist,
//AddVote,
AddVote,
// UnlockMode,
},
setup() {

View File

@@ -329,7 +329,7 @@
<!-- 添加外链侧弹窗 -->
<div class="lin"></div>
</div>
<!--TODO1216
<!-- TODO1216 -->
<div class="item" @click="showDrawerAddDiscuss">
<div class="itcon">
<div class="img">
@@ -353,7 +353,7 @@
</div>
<div class="lin"></div>
</div>-->
</div>
<div class="item" @click="showDrawerAddActive">
<div class="itcon">
<div class="img">
@@ -427,7 +427,7 @@
<div class="lin"></div>
</div>
<!--TODO1216
<!-- TODO1216 -->
<div class="item" @click="showDrawerAddVote">
<div class="itcon">
<div class="img">
@@ -454,7 +454,7 @@
</div>
</div>
-->
</div>
<div class="boom">
<div class="boomcen">
@@ -1082,11 +1082,11 @@ import AddHomework from "../../components/drawers/AddHomework.vue";
import AddTest from "../../components/drawers/AddTest.vue";
import AddLive from "../../components/drawers/AddLive.vue";
import AddRef from "../../components/drawers/AddRef.vue";
//import AddDiscuss from "../../components/drawers/AddDiscuss.vue";
import AddDiscuss from "../../components/drawers/AddDiscuss.vue";
import AddActive from "../../components/drawers/AddActive.vue";
import AddEval from "../../components/drawers/AddEval.vue";
import AddInvist from "../../components/drawers/AddInvist.vue";
//import AddVote from "../../components/vote/AddVote.vue";
import AddVote from "../../components/vote/AddVote.vue";
import { message } from "ant-design-vue";
import * as api from "../../api/indexTemplate";
import draggable from "vuedraggable";
@@ -1144,11 +1144,11 @@ export default {
AddTest,
AddLive,
AddRef,
//AddDiscuss,
AddDiscuss,
AddActive,
AddEval,
AddInvist,
//AddVote,
AddVote,
// UnlockMode,
},
setup() {