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

View File

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