页面button颜色统一,表格不可选择页面数量

This commit is contained in:
zhangyc
2022-12-11 11:46:52 +08:00
parent 6fc160ae79
commit 65fbc3eba4
84 changed files with 1642 additions and 2633 deletions

View File

@@ -33,84 +33,46 @@
外部考试
</button> -->
</div>
<a-form
v-if="isOuter == 1"
ref="formRef"
name="custom-validation"
:model="formState"
:rules="rules"
v-bind="layout"
@finish="handleFinish"
@validate="handleValidate"
@finishFailed="handleFinishFailed"
>
<div class="contentMain">
<div class="main_left">
<div class="main_item">
<div class="btnbox">
<div class="sign" style="margin-bottom: 24px">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<a-form-item
has-feedback
label="考试名称"
name="examinationName"
>
<a-input
v-model:value="formState.examinationName"
style="width: 424px; height: 32px; margin-left: 35px"
autocomplete="off"
placeholder="请输入考试名称"
show-count
:maxlength="20"
/>
</a-form-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="main_item2">
<a-form-item
has-feedback
label="考试说明"
name="examinationExplain"
>
<div class="textarea">
<a-textarea
v-model:value="formState.examinationExplain"
placeholder="请输入考试说明"
allow-clear
:rows="6"
style="margin-left: 35px"
show-count
:maxlength="200"
/>
</div>
</a-form-item>
<div class="btnbox">
<a-input
v-model:value="test.examinationName"
style="width: 400px; height: 40px; border-radius: 8px;"
placeholder="请输入考试名称"
:maxlength="20"
/>
</div>
<div class="main_item">
<div class="btnbox">
<div class="sign" style="margin-bottom: 24px">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<a-form-item has-feedback label="选择试卷" name="choosedTest">
<a-button
type="primary"
style="width: 100px; margin-left: 35px"
class="outer"
@click.prevent
@click="selectTest()"
>
选择试卷
</a-button>
<a-tag
v-if="paperName != ''"
</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">
<button class="xkbtn" @click="selectTest">
{{ chooseCourse ? "重选" : "选择" }}试卷
</button>
<div v-if="paperName != ''">
<a-tag
closable
color="processing"
@close="delTag"
@@ -119,84 +81,111 @@
paperName
}}</span>
</a-tag>
</a-form-item>
</div>
</div>
<div class="main_item">
<div class="btnbox">
<div class="sign" style="margin-bottom: 24px">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<a-form-item has-feedback label="考试时间" name="choosedTime">
<a-range-picker
show-time
v-model:value="formState.choosedTime"
format="YYYY-MM-DD hh:mm:ss"
style="width: 424px; margin-left: 35px"
:placeholder="[' 开始时间', ' 结束时间']"
/>
</a-form-item>
</div>
<!-- 选择面授侧弹窗 -->
<div>
<sel-facet
v-model:selfacetVisible="selfacetvisible"
v-model:chooseCourse="chooseCourse"
v-model:chooseCourseName="chooseCourseName"
/>
</div>
<div class="main_item">
<div class="btnbox">
<div class="sign" style="margin-bottom: 24px">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<a-form-item
has-feedback
label="考试时长"
name="examinationDuration"
>
<a-input
v-model:value="formState.examinationDuration"
type="number"
style="width: 388px; height: 32px; margin-left: 35px"
/>
</a-form-item>
<span style="transform: translateY(-50%)">分钟</span>
<!-- 选择面授侧弹窗 -->
</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="main_item">
<div class="btnbox">
<span style="margin-right: 43px">考试限制</span>
<a-form-item
has-feedback
label="允许重复考试"
name="examinationLimit"
>
<div class="btnbox" >
<a-range-picker style="width: 400px; height: 40px; border-radius: 8px;"
show-time
format="YYYY/MM/DD HH:mm"
v-model:value="test.chooseTime"
:placeholder="[' 开始时间', ' 结束时间']"
/>
</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="select">
<a-input-number
: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>
</div>
<div class="main_item2">
<div class="signbox">
<span style="margin-right: 3px">考试说明</span>
</div>
<div class="textarea">
<a-textarea
v-model:value="test.examinationExplain"
placeholder="请输入考试说明"
allow-clear
show-count
:maxlength="200"
:rows="6"
/>
</div>
</div>
<div class="main_item2">
<div class="signbox">
<span style="margin-right: 3px">考试限制</span>
</div>
<div class="kqszbox">
<div class="setbox">
<div class="timerbox">
<span>允许重复考试</span>
<a-input-number
:min="-1"
:max="300"
:precision="0"
type="number"
v-model:value="formState.examinationLimit"
style="
width: 88px;
width: 100px;
height: 32px;
border-radius: 8px;
overflow: hidden;
"
/>
<span style="margin-left: 8px"></span>
<span style="margin-left: 24px; color: #999999"
>-1表示无限制</span
>
</a-form-item>
v-model:value="test.examinationLimit"
></a-input-number>
<span style="color: #999999; margin-left: 8px">,-1表示无限制</span>
</div>
</div>
</div>
</div>
<div class="main_item">
<div class="signbox">
<span style="margin-right: 3px">显示答案</span>
</div>
<div class="btnbox">
<a-form-item has-feedback label="显示答案" name="showAnswers">
<a-radio-group
style="margin-left: 35px; margin-right: 12px"
v-model:value="formState.showAnswers"
style="margin-right: 12px"
v-model:value="test.showAnswers"
>
<a-radio
v-model:checked="checked"
@@ -211,15 +200,18 @@
>不允许查看
</a-radio>
</a-radio-group>
</a-form-item>
</div>
</div>
<div class="main_item">
<div class="signbox">
<span style="margin-right: 3px">显示解析</span>
</div>
<div class="btnbox">
<a-form-item has-feedback label="显示解析" name="showAnalysis">
<a-radio-group
style="margin-left: 35px; margin-right: 12px"
v-model:value="formState.showAnalysis"
style="margin-right: 12px"
v-model:value="test.showAnalysis"
>
<a-radio
v-model:checked="checked"
@@ -234,15 +226,18 @@
>不允许查看
</a-radio>
</a-radio-group>
</a-form-item>
</div>
</div>
<div class="main_item">
<div class="signbox">
<span style="margin-right: 3px">评分模式</span>
</div>
<div class="btnbox">
<a-form-item has-feedback label="评分模式" name="scoringModel">
<a-radio-group
style="margin-left: 35px; margin-right: 12px"
v-model:value="formState.scoringModel"
style="margin-right: 12px"
v-model:value="test.scoringModel"
>
<a-radio
v-model:checked="checked"
@@ -257,31 +252,34 @@
>最后一次
</a-radio>
</a-radio-group>
</a-form-item>
</div>
</div>
<div class="main_item">
<div class="signbox">
<span style="margin-right: 3px">及格线</span>
</div>
<div class="btnbox">
<a-form-item has-feedback label="及格线" name="passLine">
<a-input
v-model:value="formState.passLine"
v-model:value="test.passLine"
type="number"
style="width: 88px; height: 32px; margin-left: 35px"
style="width: 400px; height: 40px; border-radius: 8px;"
/>
</a-form-item>
<span style="margin-left: 8px"></span>
<span style="color: #999999; margin-left: 8px"></span>
</div>
</div>
<div class="main_item">
<div class="main_item">
<div class="signbox">
<span style="margin-right: 3px">作业要求</span>
</div>
<div class="btnbox">
<a-form-item
has-feedback
label="作业要求"
name="questionArrangement"
>
<a-radio-group
style="margin-right: 12px"
v-model:value="formState.questionArrangement"
v-model:value="test.questionArrangement"
>
<a-radio
v-model:checked="checked"
@@ -308,103 +306,30 @@
>不乱序
</a-radio>
</a-radio-group>
</a-form-item>
</div>
</div>
</div>
</div>
<div class="main_btns">
<a-button class="btn1" @click="closeDrawer2">取消</a-button>
<a-button class="btn2" html-type="submit">确定</a-button>
</div>
</a-form>
<a-form
v-else
ref="formRef"
name="custom-validation"
:model="formState"
:rules="rules"
v-bind="layout"
@finish="handleFinish"
@validate="handleValidate"
@finishFailed="handleFinishFailed"
>
<div class="contentMain">
<div class="main_left">
<div class="main_item">
<div class="btnbox">
<a-form-item
has-feedback
label="考试名称"
name="examinationName"
>
<a-input
v-model:value="formState.examinationName"
style="width: 424px; height: 32px; margin-left: 35px"
autocomplete="off"
placeholder="请输入考试名称"
show-count
:maxlength="20"
/>
</a-form-item>
</div>
</div>
<div class="main_item">
<div class="btnbox">
<a-form-item
has-feedback
label="数据来源"
name="examinationName"
>
<a-input
v-model:value="请输入数据来源"
style="width: 424px; height: 32px; margin-left: 35px"
autocomplete="off"
placeholder="数据来源"
show-count
:maxlength="20"
/>
</a-form-item>
</div>
</div>
<div class="main_item2">
<a-form-item
has-feedback
label="考试说明"
name="examinationExplain"
>
<div class="textarea">
<a-textarea
v-model:value="formState.examinationExplain"
placeholder="请输入考试说明"
allow-clear
:rows="6"
style="margin-left: 35px"
show-count
:maxlength="200"
/>
</div>
</a-form-item>
</div>
</div>
</div>
<div class="main_btns">
<a-button class="btn1" @click="closeDrawer2">取消</a-button>
<a-button class="btn2" html-type="submit">确定</a-button>
</div>
</a-form>
</div>
<div class="main_btns">
<a-button class="btn1" @click="closeDrawer2">取消</a-button>
<a-button class="btn2" @click="updateTest">确定</a-button>
</div>
<!-- 加载动画 -->
<div class="aeLoading" :style="{ display: addLoading ? 'flex' : 'none' }">
<a-spin :spinning="addLoading" tip="添加中..." />
</div>
<!-- 选择考试抽屉 -->
<s-test v-model:STvisible="STvisible" @getSTData="getData" />
</div>
</a-drawer>
</template>
<script>
import { reactive, ref, toRefs } from "vue";
import { reactive,toRefs } from "vue";
import { message } from "ant-design-vue";
import {
createExamination,
@@ -415,6 +340,7 @@ import STest from "./SelectTest.vue";
import { ProjectEditTask, RouterEditTask } from "@/api/indexTask";
import { addTempTask } from "../../api/indexTaskadd";
import dayjs from "dayjs";
import { toDate } from "@/api/method";
export default {
name: "AddTest",
@@ -480,22 +406,11 @@ export default {
},
},
setup(props, ctx) {
const formState = reactive({
examinationName: "",
examinationDuration: 0,
choosedTime: "",
paperName: "",
examinationLimit: "",
passLine: null,
examinationEndTime: "",
examinationExplain: "",
questionArrangement: 1,
scoringModel: 2,
showAnalysis: 2,
showAnswers: 2,
choosedTest: "",
});
const state = reactive({
test:{
},
addLoading: false,
isOuter: 1, // 是否为外部考试
STvisible: false, //选择试卷抽屉
@@ -517,52 +432,31 @@ export default {
},
],
});
const formRef = ref();
const options1 = ref([
{
label: "math",
value: "math",
},
{
label: "eng",
value: "eng",
},
]);
const handleFinish = () => {
updateTest();
};
const handleFinishFailed = () => {
// message.error("handleFinishFailed");
};
const resetForm = () => {
formRef.value.resetFields();
state.paperName = "";
state.paperId = null;
state.id = "";
state.testName = "";
};
const handleValidate = (...args) => {
console.log(args);
const clearAll = () => {
state.test={};
};
const closeDrawer = () => {
console.log("closeDrawer");
formState.choosedTime = "";
state.statechoosedTime = "";
ctx.emit("update:addtestVisible", false);
ctx.emit("update:edit", false);
ctx.emit("update:EditTestId", state.EditTestId);
ctx.emit("update:testName", state.testName);
console.log("formState.testName", state.testName);
console.log("statetestName", state.testName);
localStorage.setItem("stageId", props.chooseStageId);
localStorage.setItem("chapterId", props.isactive);
state.addLoading = false;
resetForm();
clearAll();
};
const closeDrawer2 = () => {
formState.choosedTime = "";
state.statechoosedTime = "";
ctx.emit("update:edit", false);
ctx.emit("update:addtestVisible", false);
resetForm();
clearAll();
state.addLoading = false;
};
const afterVisibleChange = () => {
@@ -580,70 +474,32 @@ export default {
state.paperName = "";
};
const queryTest = () => {
// state.addLoading = true;
queryExaminationDetailById({ examinationId: props.EditTestId })
.then((res) => {
console.log("获取编辑考试信息", res);
formState.examinationName = res.data.data.examinationName;
formState.workRequirement = res.data.data.workRequirement;
formState.examinationDuration = res.data.data.examinationDuration;
formState.examinationLimit =
Number(res.data.data.examinationLimit) || -1;
formState.passLine = res.data.data.passLine;
formState.examinationExplain = res.data.data.examinationExplain;
formState.questionArrangement =
Number(res.data.data.questionArrangement) || 1;
formState.scoringModel = Number(res.data.data.scoringModel) || 1;
formState.showAnalysis = Number(res.data.data.showAnalysis) || 1;
formState.showAnswers = Number(res.data.data.showAnswers) || 1;
formState.papaerName = res.data.data.examinationTestName;
state.paperName = res.data.data.examinationTestName;
// state.paperId=
state.paperId = res.data.data.examinationTestId;
if (
res.data.data.examinationEndTime &&
res.data.data.examinationStartTime
) {
formState.choosedTime = [
dayjs(res.data.data.examinationStartTime, "YYYY-MM-DD HH:mm:ss"),
dayjs(res.data.data.examinationEndTime, "YYYY-MM-DD HH:mm:ss"),
];
state.addLoading = false;
} else {
formState.choosedTime = [];
}
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(`查询失败`);
});
};
const updateTest = () => {
//state.addLoading = true;updateTask
let obj = {
examinationDuration: formState.examinationDuration,
examinationEndTime: dayjs(formState.choosedTime[1]).format(
"YYYY-MM-DD HH:mm:ss"
),
examinationExplain: formState.examinationExplain,
examinationId: props.edit ? props.EditTestId : 0,
examinationLimit: formState.examinationLimit,
examinationName: formState.examinationName,
examinationPaperId: 0,
// examinationPaperName: formState.choosedTest,
examinationStartTime: dayjs(formState.choosedTime[0]).format(
"YYYY-MM-DD HH:mm:ss"
),
passLine: formState.passLine,
questionArrangement: formState.questionArrangement,
scoringModel: formState.scoringModel,
showAnalysis: formState.showAnalysis,
showAnswers: formState.showAnswers,
examinationTestId: state.paperId,
examinationTestName: state.paperName,
};
if (!formState.examinationName) {
if (!state.test.examinationName) {
message.destroy();
return message.warning("请输入考试名称");
}
@@ -651,18 +507,40 @@ export default {
message.destroy();
return message.warning("请输入选择试卷");
}
if (!formState.choosedTime) {
message.destroy();
return message.warning("请输入开始结束时间");
if (!state.test.chooseTime) {
message.destroy();
return message.warning("请输入开始结束时间");
}
if (!formState.examinationDuration) {
if (!state.test.examinationDuration) {
message.destroy();
return message.warning("请输入考试时长");
}
state.addLoading = true;
if (props.edit) {
console.log("test",state.test);
// state.test.examinationStartTime = toDate(
// new Date(state.test.chooseTime[0].$d).getTime() / 1000,
// "Y-M-D h:m"
// );
// state.test.examinationEndTime =toDate(
// new Date(state.test.$slotschooseTime[1].$d).getTime() / 1000,
// "Y-M-D h:m"
// );
state.test.examinationStartTime = toDate(
new Date(state.test.chooseTime[0].$d).getTime() / 1000,
"Y-M-D h:m"
);
state.test.examinationEndTime =toDate(
new Date(state.test.chooseTime[1].$d).getTime() / 1000,
"Y-M-D h:m"
);
state.test.examinationPaperId = state.paperId;
//TODO缺少paperName字段
state.test.examinationTestName = state.paperName;
if (props.EditTestId>0) {
// 编辑任务
updateExamination(obj)
updateExamination(state.test)
.then(async (res) => {
await updateTask(res);
// closeDrawer();
@@ -673,7 +551,7 @@ export default {
});
} else {
// 创建任务
createExamination(obj)
createExamination(state.test)
.then(async (res) => {
await updateTask(res);
// closeDrawer();
@@ -755,22 +633,22 @@ export default {
};
const cloradio1 = (value) => {
if (value != "") {
formState.showAnswers = "";
state.showAnswers = "";
}
};
const cloradio2 = (value) => {
if (value != "") {
formState.showAnalysis = "";
state.showAnalysis = "";
}
};
const cloradio3 = (value) => {
if (value != "") {
formState.scoringModel = "";
state.scoringModel = "";
}
};
const cloradio4 = (value) => {
if (value != "") {
formState.questionArrangement = "";
state.questionArrangement = "";
}
};
const changeOuter = (value) => {
@@ -791,7 +669,7 @@ export default {
};
return {
formState,
afterVisibleChange,
closeDrawer,
closeDrawer2,
@@ -800,12 +678,9 @@ export default {
cloradio2,
cloradio3,
cloradio4,
options1,
handleFinish,
handleFinishFailed,
resetForm,
handleValidate,
formRef,
clearAll,
delTag,
// layout,
@@ -918,7 +793,7 @@ export default {
margin-bottom: 32px;
.textarea {
width: 423px;
width: 400px;
.ant-input {
width: 100%;
@@ -992,7 +867,37 @@ export default {
}
}
}
.main_table {
position: relative;
padding-bottom: 80px;
.ant-checkbox-wrapper {
align-items: center;
margin-top: -2px;
}
.ant-table-selection-column {
padding: 0px !important;
padding-left: 5px !important;
}
.ant-table-thead > tr > th {
background-color: rgba(239, 244, 252, 1);
}
th.h {
background-color: #eff4fc !important;
}
.ant-table-tbody
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td {
background: #f6f9fd;
}
.pa {
left: 0;
width: 100%;
display: flex;
justify-content: center;
position: absolute;
bottom: 20px;
}
}
.main_btns {
height: 72px;
width: 100%;