-- 考试bug

This commit is contained in:
yuping
2022-12-26 15:32:56 +08:00
parent 8a443de361
commit 4093514997
2 changed files with 224 additions and 205 deletions

View File

@@ -1,18 +1,18 @@
<template> <template>
<a-drawer <a-drawer
:visible="addtestVisible" :visible="addtestVisible"
class="drawerStyle addtestDrawer" class="drawerStyle addtestDrawer"
width="80%" width="80%"
placement="right" placement="right"
@after-visible-change="afterVisibleChange" @after-visible-change="afterVisibleChange"
> >
<div class="drawerMain"> <div class="drawerMain">
<div class="header"> <div class="header">
<div class="headerTitle">{{ edit ? "编辑" : "添加" }}考试</div> <div class="headerTitle">{{ edit ? "编辑" : "添加" }}考试</div>
<img <img
style="width: 29px; height: 29px; cursor: pointer" style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png" src="../../assets/images/basicinfo/close.png"
@click="closeDrawer2" @click="closeDrawer2"
/> />
</div> </div>
<!-- 2022-11-30注释 后面放开 修改div的padding-topL:32 --> <!-- 2022-11-30注释 后面放开 修改div的padding-topL:32 -->
@@ -40,18 +40,18 @@
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img <img
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="" alt=""
/> />
</div> </div>
<span style="margin-right: 3px">考试名称</span> <span style="margin-right: 3px">考试名称</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-input <a-input
v-model:value="test.examinationName" v-model:value="test.examinationName"
style="width: 400px; height: 40px; border-radius: 8px" style="width: 400px; height: 40px; border-radius: 8px"
placeholder="请输入考试名称" placeholder="请输入考试名称"
:maxlength="20" :maxlength="20"
/> />
</div> </div>
</div> </div>
@@ -60,8 +60,8 @@
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img <img
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="" alt=""
/> />
</div> </div>
<span style="margin-right: 3px">选择试卷</span> <span style="margin-right: 3px">选择试卷</span>
@@ -73,17 +73,17 @@
<div v-if="paperName != ''"> <div v-if="paperName != ''">
<a-tag closable color="processing" @close="delTag"> <a-tag closable color="processing" @close="delTag">
<span style="font-size: 14px; line-height: 33px">{{ <span style="font-size: 14px; line-height: 33px">{{
paperName paperName
}}</span> }}</span>
</a-tag> </a-tag>
</div> </div>
</div> </div>
<!-- 选择面授侧弹窗 --> <!-- 选择面授侧弹窗 -->
<div> <div>
<sel-facet <sel-facet
v-model:selfacetVisible="selfacetvisible" v-model:selfacetVisible="selfacetvisible"
v-model:chooseCourse="chooseCourse" v-model:chooseCourse="chooseCourse"
v-model:chooseCourseName="chooseCourseName" v-model:chooseCourseName="chooseCourseName"
/> />
</div> </div>
<!-- 选择面授侧弹窗 --> <!-- 选择面授侧弹窗 -->
@@ -93,20 +93,20 @@
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img <img
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="" alt=""
/> />
</div> </div>
<span style="margin-right: 3px">考试时间</span> <span style="margin-right: 3px">考试时间</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-range-picker <a-range-picker
style="width: 400px; height: 40px; border-radius: 8px" style="width: 400px; height: 40px; border-radius: 8px"
:show-time="{format:'hh:mm'}" :show-time="{format:'hh:mm'}"
:disabled-date="disabledDate" :disabled-time="disabledRangeTime" :disabled-date="disabledDate" :disabled-time="disabledRangeTime"
format="YYYY/MM/DD HH:mm" format="YYYY/MM/DD HH:mm"
v-model:value="test.chooseTime" v-model:value="test.chooseTime"
:placeholder="[' 开始时间', ' 结束时间']" :placeholder="[' 开始时间', ' 结束时间']"
/> />
</div> </div>
</div> </div>
@@ -114,19 +114,19 @@
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img <img
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="" alt=""
/> />
</div> </div>
<span style="margin-right: 3px">考试时长</span> <span style="margin-right: 3px">考试时长</span>
</div> </div>
<div class="select"> <div class="select">
<a-input-number <a-input-number
:min="0" :min="0"
:max="300" :max="300"
:precision="0" :precision="0"
style="width: 400px; height: 40px; border-radius: 8px" style="width: 400px; height: 40px; border-radius: 8px"
v-model:value="test.examinationDuration" v-model:value="test.examinationDuration"
></a-input-number> ></a-input-number>
<span style="color: #999999; margin-left: 8px">分钟</span> <span style="color: #999999; margin-left: 8px">分钟</span>
</div> </div>
@@ -135,17 +135,17 @@
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img <img
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="" alt=""
/> />
</div> </div>
<span style="margin-right: 3px">及格线</span> <span style="margin-right: 3px">及格线</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-input <a-input
v-model:value="test.passLine" v-model:value="test.passLine"
type="number" type="number"
style="width: 400px; height: 40px; border-radius: 8px" style="width: 400px; height: 40px; border-radius: 8px"
/> />
<span style="color: #999999; margin-left: 8px"></span> <span style="color: #999999; margin-left: 8px"></span>
@@ -157,12 +157,12 @@
</div> </div>
<div class="textarea"> <div class="textarea">
<a-textarea <a-textarea
v-model:value="test.examinationExplain" v-model:value="test.examinationExplain"
placeholder="请输入考试说明" placeholder="请输入考试说明"
allow-clear allow-clear
show-count show-count
:maxlength="200" :maxlength="200"
:rows="6" :rows="6"
/> />
</div> </div>
</div> </div>
@@ -175,19 +175,19 @@
<div class="timerbox"> <div class="timerbox">
<span>允许重复考试</span> <span>允许重复考试</span>
<a-input-number <a-input-number
:min="-1" :min="-1"
:max="300" :max="300"
:precision="0" :precision="0"
style=" style="
width: 100px; width: 100px;
height: 32px; height: 32px;
border-radius: 8px; border-radius: 8px;
overflow: hidden; overflow: hidden;
" "
v-model:value="test.examinationLimit" v-model:value="test.examinationLimit"
></a-input-number> ></a-input-number>
<span style="color: #999999; margin-left: 8px" <span style="color: #999999; margin-left: 8px"
>,-1表示无限制</span >,-1表示无限制</span
> >
</div> </div>
</div> </div>
@@ -200,14 +200,14 @@
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-radio-group <a-radio-group
style="margin-right: 12px" style="margin-right: 12px"
v-model:value="test.showAnswers" v-model:value="test.showAnswers"
> >
<a-radio v-model:checked="checked" :value="1" @click="cloradio1" <a-radio v-model:checked="checked" :value="1" @click="cloradio1"
>允许查看 >允许查看
</a-radio> </a-radio>
<a-radio v-model:checked="checked" :value="2" @click="cloradio1" <a-radio v-model:checked="checked" :value="2" @click="cloradio1"
>不允许查看 >不允许查看
</a-radio> </a-radio>
</a-radio-group> </a-radio-group>
</div> </div>
@@ -218,14 +218,14 @@
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-radio-group <a-radio-group
style="margin-right: 12px" style="margin-right: 12px"
v-model:value="test.showAnalysis" v-model:value="test.showAnalysis"
> >
<a-radio v-model:checked="checked" :value="1" @click="cloradio2" <a-radio v-model:checked="checked" :value="1" @click="cloradio2"
>允许查看 >允许查看
</a-radio> </a-radio>
<a-radio v-model:checked="checked" :value="2" @click="cloradio2" <a-radio v-model:checked="checked" :value="2" @click="cloradio2"
>不允许查看 >不允许查看
</a-radio> </a-radio>
</a-radio-group> </a-radio-group>
</div> </div>
@@ -236,52 +236,52 @@
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-radio-group <a-radio-group
style="margin-right: 12px" style="margin-right: 12px"
v-model:value="test.scoringModel" v-model:value="test.scoringModel"
> >
<a-radio v-model:checked="checked" :value="1" @click="cloradio3" <a-radio v-model:checked="checked" :value="1" @click="cloradio3"
>最高一次 >最高一次
</a-radio> </a-radio>
<a-radio v-model:checked="checked" :value="2" @click="cloradio3" <a-radio v-model:checked="checked" :value="2" @click="cloradio3"
>最后一次 >最后一次
</a-radio> </a-radio>
</a-radio-group> </a-radio-group>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<span style="margin-right: 3px">试题排列</span> <span style="margin-right: 3px">试题排列</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-radio-group <a-radio-group
style="margin-right: 12px" style="margin-right: 12px"
v-model:value="test.questionArrangement" v-model:value="test.questionArrangement"
> >
<a-radio <a-radio
v-model:checked="checked" v-model:checked="checked"
:value="1" :value="1"
@click="cloradio4" @click="cloradio4"
>试题乱序 >试题乱序
</a-radio> </a-radio>
<a-radio <a-radio
v-model:checked="checked" v-model:checked="checked"
:value="2" :value="2"
@click="cloradio4" @click="cloradio4"
>选项乱序 >选项乱序
</a-radio> </a-radio>
<a-radio <a-radio
v-model:checked="checked" v-model:checked="checked"
:value="3" :value="3"
@click="cloradio4" @click="cloradio4"
>全部乱序 >全部乱序
</a-radio> </a-radio>
<a-radio <a-radio
v-model:checked="checked" v-model:checked="checked"
:value="4" :value="4"
@click="cloradio4" @click="cloradio4"
>不乱序 >不乱序
</a-radio> </a-radio>
</a-radio-group> </a-radio-group>
</div> </div>
@@ -295,25 +295,25 @@
</div> </div>
<!-- 加载动画 --> <!-- 加载动画 -->
<div class="aeLoading" :style="{ display: addLoading ? 'flex' : 'none' }"> <div class="aeLoading" :style="{ display: addLoading ? 'flex' : 'none' }">
<a-spin :spinning="addLoading" tip="" /> <a-spin :spinning="addLoading" tip=""/>
</div> </div>
<!-- 选择考试抽屉 --> <!-- 选择考试抽屉 -->
<s-test v-model:STvisible="STvisible" @getSTData="getData" /> <s-test v-model:STvisible="STvisible" @getSTData="getData"/>
</div> </div>
</a-drawer> </a-drawer>
</template> </template>
<script> <script>
import { reactive, toRefs } from "vue"; import {reactive, toRefs} from "vue";
import { message } from "ant-design-vue"; import {message} from "ant-design-vue";
import { import {
createExamination, createExamination,
queryExaminationDetailById, queryExaminationDetailById,
updateExamination, updateExamination,
} from "@/api/indexExam"; } from "@/api/indexExam";
import STest from "./SelectTest.vue"; import STest from "./SelectTest.vue";
import { ProjectEditTask, RouterEditTask } from "@/api/indexTask"; import {ProjectEditTask, RouterEditTask} from "@/api/indexTask";
import { addTempTask } from "../../api/indexTaskadd"; import {addTempTask} from "../../api/indexTaskadd";
import dayjs from "dayjs"; import dayjs from "dayjs";
//import { toDate } from "@/api/method"; //import { toDate } from "@/api/method";
@@ -382,7 +382,18 @@ export default {
}, },
setup(props, ctx) { setup(props, ctx) {
const state = reactive({ const state = reactive({
test: {}, test: {
examinationName: '',
chooseTime: '',
examinationDuration: '',
passLine: '',
examinationExplain: null,
examinationLimit: null,
showAnswers: 1,
showAnalysis: 1,
scoringModel: 2,
questionArrangement: 4,
},
addLoading: false, addLoading: false,
isOuter: 1, // 是否为外部考试 isOuter: 1, // 是否为外部考试
@@ -392,7 +403,7 @@ export default {
id: "", id: "",
testName: "", testName: "",
TestName: "", TestName: "",
testObj: { testObj: {
name: "", name: "",
paperId: "", paperId: "",
@@ -406,12 +417,19 @@ export default {
}, },
], ],
}); });
state.test.showAnswers = 1;
state.test.showAnalysis = 1;
state.test.scoringModel = 2;
state.test.questionArrangement = 4;
const clearAll = () => { const clearAll = () => {
state.test = {}; state.test = {
examinationName: '',
chooseTime: '',
examinationDuration: '',
passLine: '',
examinationExplain: null,
examinationLimit: null,
showAnswers: 1,
showAnalysis: 1,
scoringModel: 2,
questionArrangement: 4,
};
}; };
const closeDrawer = () => { const closeDrawer = () => {
@@ -440,7 +458,7 @@ export default {
// 该页面显示同时 edit为true 时,发送查询请求, // 该页面显示同时 edit为true 时,发送查询请求,
queryTest(); queryTest();
} }
if(bool){ if (bool) {
state.test.showAnswers = 1; state.test.showAnswers = 1;
state.test.showAnalysis = 1; state.test.showAnalysis = 1;
state.test.scoringModel = 2; state.test.scoringModel = 2;
@@ -455,28 +473,28 @@ export default {
state.paperName = ""; state.paperName = "";
}; };
const queryTest = () => { const queryTest = () => {
queryExaminationDetailById({ examinationId: props.EditTestId }) queryExaminationDetailById({examinationId: props.EditTestId})
.then((res) => { .then((res) => {
state.test = res.data.data; state.test = res.data.data;
state.test.showAnswers = Number(state.test.showAnswers); state.test.showAnswers = Number(state.test.showAnswers);
state.test.showAnalysis = Number(state.test.showAnalysis); state.test.showAnalysis = Number(state.test.showAnalysis);
state.test.scoringModel = Number(state.test.scoringModel); state.test.scoringModel = Number(state.test.scoringModel);
state.test.questionArrangement = Number( state.test.questionArrangement = Number(
state.test.questionArrangement state.test.questionArrangement
); );
state.test.chooseTime = [ state.test.chooseTime = [
dayjs(res.data.data.examinationStartTime, "YYYY-MM-DD HH:mm"), dayjs(res.data.data.examinationStartTime, "YYYY-MM-DD HH:mm"),
dayjs(res.data.data.examinationEndTime, "YYYY-MM-DD HH:mm"), dayjs(res.data.data.examinationEndTime, "YYYY-MM-DD HH:mm"),
]; ];
state.paperName = state.test.examinationTestName; state.paperName = state.test.examinationTestName;
// state.paperId=dayjs // state.paperId=dayjs
state.paperId = state.test.examinationTestId; state.paperId = state.test.examinationTestId;
console.log("querytest", state.test); console.log("querytest", state.test);
}) })
.catch(() => { .catch(() => {
//message.error(`查询失败`); //message.error(`查询失败`);
}); });
}; };
const updateTest = () => { const updateTest = () => {
if (!state.test.examinationName) { if (!state.test.examinationName) {
@@ -511,50 +529,50 @@ export default {
// "Y-M-D h:m" // "Y-M-D h:m"
// ); // );
(state.test.examinationStartTime = dayjs(state.test.chooseTime[0]).format( (state.test.examinationStartTime = dayjs(state.test.chooseTime[0]).format(
"YYYY-MM-DD HH:mm"
)),
(state.test.examinationEndTime = dayjs(state.test.chooseTime[1]).format(
"YYYY-MM-DD HH:mm" "YYYY-MM-DD HH:mm"
)), )),
(state.test.examinationPaperId = state.paperId); (state.test.examinationEndTime = dayjs(state.test.chooseTime[1]).format(
"YYYY-MM-DD HH:mm"
)),
(state.test.examinationPaperId = state.paperId);
//TODO缺少paperName字段 //TODO缺少paperName字段
state.test.examinationTestName = state.paperName; state.test.examinationTestName = state.paperName;
//考试推送 //考试推送
state.test.targetId = 0; state.test.targetId = 0;
state.test.type = 0; state.test.type = 0;
if(props.isLevel == 1){ if (props.isLevel == 1) {
state.test.targetId = props.routerId; state.test.targetId = props.routerId;
state.test.type = 2; state.test.type = 2;
}else if(props.isLevel == 2){ } else if (props.isLevel == 2) {
state.test.targetId = props.projectId; state.test.targetId = props.projectId;
state.test.type = 1; state.test.type = 1;
}
}
if (props.EditTestId > 0) { if (props.EditTestId > 0) {
// 编辑任务 // 编辑任务
updateExamination(state.test) updateExamination(state.test)
.then(async (res) => { .then(async (res) => {
await updateTask(res); await updateTask(res);
// closeDrawer(); // closeDrawer();
}) })
.catch(() => { .catch(() => {
message.destroy(); message.destroy();
message.error(`编辑失败`); message.error(`编辑失败`);
}); });
} else { } else {
// 创建任务 // 创建任务
createExamination(state.test) createExamination(state.test)
.then(async (res) => { .then(async (res) => {
await updateTask(res); await updateTask(res);
// closeDrawer(); // closeDrawer();
}) })
.catch(() => { .catch(() => {
message.destroy(); message.destroy();
message.error(`创建失败`); message.error(`创建失败`);
}); });
} }
}; };
const updateTask = (res) => { const updateTask = (res) => {
@@ -579,16 +597,16 @@ export default {
type: 5, type: 5,
}; };
RouterEditTask(editObj1) RouterEditTask(editObj1)
.then(() => { .then(() => {
console.log("props.edit", props.edit); console.log("props.edit", props.edit);
message.success(`${props.edit ? "编辑" : "新增"}任务成功`); message.success(`${props.edit ? "编辑" : "新增"}任务成功`);
ctx.emit("changeData", false); ctx.emit("changeData", false);
state.paperName = ""; state.paperName = "";
closeDrawer(); closeDrawer();
}) })
.catch(() => { .catch(() => {
//message.error(`${props.edit ? "编辑" : "新增"}关卡任务失败`); //message.error(`${props.edit ? "编辑" : "新增"}关卡任务失败`);
}); });
} else if (props.isLevel == 2) { } else if (props.isLevel == 2) {
let editObj = { let editObj = {
courseId: res.data.data.examinationId, courseId: res.data.data.examinationId,
@@ -601,15 +619,15 @@ export default {
}; };
// 新增编辑或新增项目 // 新增编辑或新增项目
ProjectEditTask(editObj) ProjectEditTask(editObj)
.then(() => { .then(() => {
message.success(`${props.edit ? "编辑" : "新增"}任务成功`); message.success(`${props.edit ? "编辑" : "新增"}任务成功`);
ctx.emit("changeData", false); ctx.emit("changeData", false);
state.paperName = ""; state.paperName = "";
closeDrawer(); closeDrawer();
}) })
.catch(() => { .catch(() => {
//message.error(`${props.EditTestId ? "编辑" : "新增"}阶段任务失败`); //message.error(`${props.EditTestId ? "编辑" : "新增"}阶段任务失败`);
}); });
} else if (props.isLevel == 3) { } else if (props.isLevel == 3) {
addTempTask({ addTempTask({
courseId: res.data.data.examinationId, courseId: res.data.data.examinationId,
@@ -620,15 +638,15 @@ export default {
stageId: props.chooseStageId || 0, stageId: props.chooseStageId || 0,
type: 5, type: 5,
}) })
.then(() => { .then(() => {
message.success(`${props.edit ? "编辑" : "新增"}任务成功`); message.success(`${props.edit ? "编辑" : "新增"}任务成功`);
ctx.emit("changeData", false); ctx.emit("changeData", false);
state.paperName = ""; state.paperName = "";
closeDrawer(); closeDrawer();
}) })
.catch(() => { .catch(() => {
//message.error(`${props.EditTestId ? "编辑" : "新增"}阶段任务失败`); //message.error(`${props.EditTestId ? "编辑" : "新增"}阶段任务失败`);
}); });
} }
} }
}; };
@@ -655,10 +673,11 @@ export default {
const changeOuter = (value) => { const changeOuter = (value) => {
state.isOuter = value; state.isOuter = value;
}; };
const chooseTest = () => {}; const chooseTest = () => {
};
const closeTag = (removedTag) => { const closeTag = (removedTag) => {
const tags = state.choosedTestList.filter( const tags = state.choosedTestList.filter(
(item) => item.key != removedTag (item) => item.key != removedTag
); );
state.choosedTestList = tags; state.choosedTestList = tags;
}; };
@@ -668,30 +687,30 @@ export default {
state.id = value.id; state.id = value.id;
state.testName = value.testName; state.testName = value.testName;
}; };
const range = (start, end) => { const range = (start, end) => {
const result = []; const result = [];
for (let i = start; i < end; i++) { for (let i = start; i < end; i++) {
result.push(i); result.push(i);
} }
return result; return result;
}; };
const disabledDate = (current) => { const disabledDate = (current) => {
// Can not select days before today and today // Can not select days before today and today
console.log('1111', dayjs().endOf('day')) console.log('1111', dayjs().endOf('day'))
return current && current < dayjs().startOf('day'); return current && current < dayjs().startOf('day');
}; };
const disabledDateTime = () => {
return {
disabledHours: () => range(0, 24).splice(4, 20),
disabledMinutes: () => range(30, 60),
disabledSeconds: () => [55, 56],
};
};
const disabledDateTime = () => {
return {
disabledHours: () => range(0, 24).splice(4, 20),
disabledMinutes: () => range(30, 60),
disabledSeconds: () => [55, 56],
};
};
return { return {
afterVisibleChange, afterVisibleChange,
closeDrawer, closeDrawer,
@@ -856,7 +875,7 @@ export default {
.setbox { .setbox {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
.timerbox { .timerbox {
margin-top: 6px; margin-top: 6px;
@@ -913,8 +932,8 @@ export default {
} }
.ant-table-tbody .ant-table-tbody
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td { > td {
background: #f6f9fd; background: #f6f9fd;
} }

View File

@@ -316,7 +316,7 @@
</div> </div>
<div class="item"> <div class="item">
<div class="itcon"> <div class="itcon">
<div class="img" @click="showDrawerAddTest"> <div class="img" @click="()=>showDrawerAddTest()">
<img src="../../assets/images/leveladd/kao.png" /> <img src="../../assets/images/leveladd/kao.png" />
</div> </div>
<div class="text">考试</div> <div class="text">考试</div>