|
@@ -1,744 +0,0 @@
|
|
|
-<template>
|
|
|
- <el-dialog
|
|
|
- class="create-task-apply"
|
|
|
- :visible.sync="modalIsShow"
|
|
|
- title="新增命题申请"
|
|
|
- top="10px"
|
|
|
- width="1000px"
|
|
|
- :close-on-click-modal="false"
|
|
|
- :close-on-press-escape="false"
|
|
|
- append-to-body
|
|
|
- destroy-on-close
|
|
|
- @open="visibleChange"
|
|
|
- >
|
|
|
- <div class="part-box part-box-pad part-box-border">
|
|
|
- <el-form
|
|
|
- ref="examTaskComp"
|
|
|
- :model="examTask"
|
|
|
- :rules="rules"
|
|
|
- label-width="120px"
|
|
|
- >
|
|
|
- <el-row>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item prop="semesterId" label="学期:">
|
|
|
- <semester-select
|
|
|
- v-model="examTask.semesterId"
|
|
|
- class="width-full"
|
|
|
- ></semester-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item prop="examId" label="考试:">
|
|
|
- <exam-select
|
|
|
- v-model="examTask.examId"
|
|
|
- :semester-id="examTask.semesterId"
|
|
|
- class="width-full"
|
|
|
- ></exam-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item prop="teachingRoomId" label="机构:">
|
|
|
- <org-select
|
|
|
- v-model="examTask.teachingRoomId"
|
|
|
- class="width-full"
|
|
|
- placeholder="机构"
|
|
|
- @change="teachingRoomChange"
|
|
|
- ></org-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item prop="courseCode" label="课程(代码):">
|
|
|
- <course-select
|
|
|
- v-model="examTask.courseCode"
|
|
|
- class="width-full"
|
|
|
- :teaching-room-id="examTask.teachingRoomId"
|
|
|
- @change="courseChange"
|
|
|
- ></course-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-row>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="试卷编号:">
|
|
|
- <el-input
|
|
|
- v-model.trim="examTask.paperNumber"
|
|
|
- placeholder="请输入试卷编号"
|
|
|
- :maxlength="50"
|
|
|
- clearable
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="拟卷教师:">
|
|
|
- <el-input
|
|
|
- v-model.trim="examTask.teacherName"
|
|
|
- placeholder="请输入拟卷教师"
|
|
|
- :maxlength="50"
|
|
|
- clearable
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="主讲教师:">
|
|
|
- <el-input
|
|
|
- v-model.trim="examTask.lecturerName"
|
|
|
- placeholder="请输入主讲教师"
|
|
|
- :maxlength="50"
|
|
|
- clearable
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="apply-content task-detail" v-if="modalIsShow">
|
|
|
- <div class="task-body">
|
|
|
- <div class="mb-2 text-right">
|
|
|
- <el-button
|
|
|
- type="info"
|
|
|
- icon="el-icon-circle-plus-outline"
|
|
|
- @click="addAtachment"
|
|
|
- >增加卷型</el-button
|
|
|
- >
|
|
|
- </div>
|
|
|
- <table class="table mb-2">
|
|
|
- <tr>
|
|
|
- <th>试卷类型</th>
|
|
|
- <th>试卷文件</th>
|
|
|
- <th>答题卡创建方式</th>
|
|
|
- <th>答题卡</th>
|
|
|
- <th>操作</th>
|
|
|
- </tr>
|
|
|
- <tr v-for="(attachment, index) in paperAttachments" :key="index">
|
|
|
- <td>{{ attachment.name }}卷</td>
|
|
|
- <td>
|
|
|
- <el-button
|
|
|
- type="text"
|
|
|
- class="btn-primary"
|
|
|
- @click="toUpload(attachment)"
|
|
|
- >
|
|
|
- <i
|
|
|
- :class="[
|
|
|
- 'icon',
|
|
|
- attachment.attachmentId ? 'icon-files-act' : 'icon-files',
|
|
|
- ]"
|
|
|
- ></i
|
|
|
- >{{
|
|
|
- attachment.attachmentId
|
|
|
- ? attachment.filename
|
|
|
- : "点击上传试卷文件"
|
|
|
- }}
|
|
|
- </el-button>
|
|
|
- </td>
|
|
|
- <td :rowspan="paperAttachments.length" v-if="index === 0">
|
|
|
- {{ createCardTypeName }}
|
|
|
- </td>
|
|
|
- <td :rowspan="paperAttachments.length" v-if="index === 0">
|
|
|
- <el-button
|
|
|
- type="text"
|
|
|
- class="btn-primary"
|
|
|
- @click="toCreateOrViewCard"
|
|
|
- >{{ cardTodoName }}</el-button
|
|
|
- >
|
|
|
- <el-button
|
|
|
- v-if="examTaskDetail.makeMethod"
|
|
|
- size="mini"
|
|
|
- type="primary"
|
|
|
- @click="changeCreateCardType"
|
|
|
- >切换题卡创建方式</el-button
|
|
|
- >
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <el-button
|
|
|
- class="btn-danger"
|
|
|
- type="text"
|
|
|
- @click="deleteAttachment(index)"
|
|
|
- >删除</el-button
|
|
|
- >
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr v-if="!paperAttachments.length">
|
|
|
- <td colspan="5">
|
|
|
- <p class="tips-info text-center">暂无数据</p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
-
|
|
|
- <p class="tips-info tips-dark mb-2">
|
|
|
- 提示:多卷型试卷由于会绑定一个答题卡模板,因此试卷结构必须相同。多卷型试卷之间客观题要求试题内容相同,可允许大题内的小题题序不同。
|
|
|
- </p>
|
|
|
-
|
|
|
- <el-form>
|
|
|
- <el-form-item label="单次抽卷卷型数量:" label-width="150">
|
|
|
- <el-input-number
|
|
|
- v-model="examTaskDetail.drawCount"
|
|
|
- :min="1"
|
|
|
- :max="maxFetchCount"
|
|
|
- :step="1"
|
|
|
- step-strictly
|
|
|
- :controls="false"
|
|
|
- ></el-input-number>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
-
|
|
|
- <h4 class="mb-2">附件:<span>(最多4张)</span></h4>
|
|
|
- <div class="image-list">
|
|
|
- <div
|
|
|
- class="image-item"
|
|
|
- v-for="(img, index) in paperConfirmAttachments"
|
|
|
- :key="index"
|
|
|
- >
|
|
|
- <img
|
|
|
- :src="img.url"
|
|
|
- :alt="img.filename"
|
|
|
- title="点击查看大图"
|
|
|
- @click="toPreview(index)"
|
|
|
- />
|
|
|
- <div class="image-delete">
|
|
|
- <i
|
|
|
- class="el-icon-delete-solid"
|
|
|
- @click="deletePaperConfirmAttachment(index)"
|
|
|
- ></i>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div
|
|
|
- v-if="paperConfirmAttachments.length < 4"
|
|
|
- class="image-item image-add"
|
|
|
- title="上传附件"
|
|
|
- @click="toUploadPaperConfirm"
|
|
|
- >
|
|
|
- <i class="el-icon-plus"></i>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <h4 class="mb-2">附件说明:</h4>
|
|
|
- <el-input
|
|
|
- class="mb-2"
|
|
|
- v-model="examTaskDetail.remark"
|
|
|
- type="textarea"
|
|
|
- resize="none"
|
|
|
- :rows="2"
|
|
|
- :maxlength="100"
|
|
|
- clearable
|
|
|
- show-word-limit
|
|
|
- placeholder="建议不超过100个字"
|
|
|
- ></el-input>
|
|
|
-
|
|
|
- <div class="part-box part-box-pad part-box-border">
|
|
|
- <el-timeline>
|
|
|
- <el-timeline-item
|
|
|
- v-for="flow in flowList"
|
|
|
- :key="flow.taskKey"
|
|
|
- :type="flow.type"
|
|
|
- >
|
|
|
- <div class="flow-item">
|
|
|
- <div class="flow-item-content">
|
|
|
- <h4 class="flow-item-title">{{ flow.taskName }}</h4>
|
|
|
- <p class="flow-item-desc">{{ flow.approveUserNames }}</p>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </el-timeline-item>
|
|
|
- </el-timeline>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="task-action">
|
|
|
- <el-button type="primary" :disabled="isSubmit" @click="submit"
|
|
|
- >确认提交</el-button
|
|
|
- >
|
|
|
- <el-button type="primary" :disabled="isSubmit" @click="toSave(0)"
|
|
|
- >暂存</el-button
|
|
|
- >
|
|
|
- <el-button @click="cancel">取消</el-button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div slot="footer"></div>
|
|
|
-
|
|
|
- <!-- upload-paper-dialog -->
|
|
|
- <upload-paper-dialog
|
|
|
- :paper-attachment="curAttachment"
|
|
|
- :upload-type="curUploadType"
|
|
|
- @confirm="uploadConfirm"
|
|
|
- ref="UploadPaperDialog"
|
|
|
- ></upload-paper-dialog>
|
|
|
- <!-- card-option-dialog -->
|
|
|
- <card-option-dialog
|
|
|
- ref="CardOptionDialog"
|
|
|
- :data="task"
|
|
|
- @upload-sample-over="initData"
|
|
|
- @confirm="cardConfirm"
|
|
|
- ></card-option-dialog>
|
|
|
- <!-- image-preview -->
|
|
|
- <simple-image-preview
|
|
|
- :cur-image="curImage"
|
|
|
- @on-prev="toPrevImage"
|
|
|
- @on-next="toNextImage"
|
|
|
- ref="SimpleImagePreview"
|
|
|
- ></simple-image-preview>
|
|
|
- </el-dialog>
|
|
|
-</template>
|
|
|
-
|
|
|
-<script>
|
|
|
-import { examRuleDetail, flowDetailByType } from "../../base/api";
|
|
|
-import {
|
|
|
- teacherCreateTaskApply,
|
|
|
- teacherCancelTaskApply,
|
|
|
- switchCardCreateMethod,
|
|
|
-} from "../api";
|
|
|
-import UploadPaperDialog from "./UploadPaperDialog";
|
|
|
-import CardOptionDialog from "./CardOptionDialog";
|
|
|
-import SimpleImagePreview from "@/components/SimpleImagePreview";
|
|
|
-import { CARD_SOURCE_TYPE } from "@/constants/enumerate";
|
|
|
-
|
|
|
-const initExamTask = {
|
|
|
- id: null,
|
|
|
- semesterId: "",
|
|
|
- examId: "",
|
|
|
- courseCode: "",
|
|
|
- courseName: "",
|
|
|
- paperNumber: "",
|
|
|
- cardRuleId: "", // TODO:
|
|
|
- teachingRoomId: "",
|
|
|
- teacherName: "",
|
|
|
- lecturerName: "",
|
|
|
-};
|
|
|
-
|
|
|
-const initExamTaskDetail = {
|
|
|
- operateType: "STAGE",
|
|
|
- paperType: "A",
|
|
|
- cardId: "",
|
|
|
- paperAttachmentIds: [],
|
|
|
- paperConfirmAttachmentIds: [],
|
|
|
- drawCount: 2,
|
|
|
- remark: "",
|
|
|
- makeMethod: "",
|
|
|
- // 题卡状态
|
|
|
- status: "",
|
|
|
- // 考务规则
|
|
|
- review: false,
|
|
|
- includePaper: false,
|
|
|
- customCard: false,
|
|
|
-};
|
|
|
-
|
|
|
-export default {
|
|
|
- name: "create-task-apply",
|
|
|
- components: { UploadPaperDialog, CardOptionDialog, SimpleImagePreview },
|
|
|
- data() {
|
|
|
- return {
|
|
|
- modalIsShow: false,
|
|
|
- isSubmit: false,
|
|
|
- flowList: [],
|
|
|
- flowInfo: {},
|
|
|
- examTask: {},
|
|
|
- needReview: false,
|
|
|
- task: {},
|
|
|
- examRule: {},
|
|
|
- rules: {
|
|
|
- semesterId: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
- message: "请选择学期",
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- examId: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
- message: "请选择考试",
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- teachingRoomId: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
- message: "请选择机构",
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- courseCode: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
- message: "请选择课程",
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- cardRuleId: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
- message: "请选择题卡规则",
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
- // exam-task-detail
|
|
|
- examTaskDetail: {},
|
|
|
- paperConfirmAttachmentId: { attachmentId: "", filename: "", url: "" },
|
|
|
- paperAttachments: [],
|
|
|
- paperConfirmAttachments: [],
|
|
|
- curAttachment: {},
|
|
|
- curUploadType: "paper",
|
|
|
- attachmentLimitCount: 26,
|
|
|
- abc: "abcdefghijklmnopqrstuvwxyz".toUpperCase(),
|
|
|
- // image-preview
|
|
|
- curImage: {},
|
|
|
- curImageIndex: 0,
|
|
|
- };
|
|
|
- },
|
|
|
- computed: {
|
|
|
- cardTodoName() {
|
|
|
- let name = "创建答题卡";
|
|
|
- if (this.examTaskDetail.cardId) {
|
|
|
- if (this.examTaskDetail.makeMethod === "SELECT") {
|
|
|
- name = "选择题卡";
|
|
|
- } else if (this.examTaskDetail.makeMethod === "SELF") {
|
|
|
- name = "编辑题卡";
|
|
|
- } else {
|
|
|
- // 已经审核的题卡可以自行编辑,未审核的题卡只能查看
|
|
|
- name =
|
|
|
- this.examTaskDetail.status === "SUBMIT" ? "编辑题卡" : "查看题卡";
|
|
|
- }
|
|
|
- }
|
|
|
- return name;
|
|
|
- },
|
|
|
- createCardTypeName() {
|
|
|
- return CARD_SOURCE_TYPE[this.examTaskDetail.makeMethod] || "";
|
|
|
- },
|
|
|
- maxFetchCount() {
|
|
|
- return this.paperAttachments.length < 1
|
|
|
- ? 1
|
|
|
- : this.paperAttachments.length;
|
|
|
- },
|
|
|
- },
|
|
|
- created() {
|
|
|
- this.getExamRule();
|
|
|
- },
|
|
|
- methods: {
|
|
|
- async getExamRule() {
|
|
|
- const examRule = await examRuleDetail();
|
|
|
- this.examRule = examRule || {};
|
|
|
- this.needReview = examRule && examRule.review;
|
|
|
- },
|
|
|
- async getFlowList() {
|
|
|
- const data = await flowDetailByType();
|
|
|
- if (!data) return;
|
|
|
- this.flowInfo = {
|
|
|
- customFlowId: data.id,
|
|
|
- version: data.version,
|
|
|
- };
|
|
|
- this.flowList = data.flowTaskResultList || [];
|
|
|
- if (this.flowList.length) {
|
|
|
- this.flowList[0].type = "success";
|
|
|
- }
|
|
|
- },
|
|
|
- initData() {
|
|
|
- this.examTask = { ...initExamTask };
|
|
|
- this.examTaskDetail = { ...initExamTaskDetail };
|
|
|
- this.examTaskDetail.includePaper = this.examRule.includePaper;
|
|
|
- this.examTaskDetail.review = this.examRule.review;
|
|
|
- this.examTaskDetail.customCard = this.examRule.customCard;
|
|
|
- this.paperAttachments = [];
|
|
|
- },
|
|
|
- visibleChange() {
|
|
|
- if (!this.flowList.length) this.getFlowList();
|
|
|
- this.initData();
|
|
|
- },
|
|
|
- checkData() {
|
|
|
- return this.$refs.examTaskComp.validate().catch(() => {});
|
|
|
- },
|
|
|
- async cancel() {
|
|
|
- if (this.examTask.id) {
|
|
|
- await teacherCancelTaskApply(this.examTask.id);
|
|
|
- this.$message.success("取消命题申请成功!");
|
|
|
- }
|
|
|
- this.close();
|
|
|
- },
|
|
|
- close() {
|
|
|
- this.modalIsShow = false;
|
|
|
- },
|
|
|
- open() {
|
|
|
- this.modalIsShow = true;
|
|
|
- },
|
|
|
- // exam-task-detail edit
|
|
|
- addAtachment() {
|
|
|
- if (this.paperAttachments.length >= this.attachmentLimitCount) return;
|
|
|
-
|
|
|
- const newAttachment = {
|
|
|
- name: this.abc[this.paperAttachments.length],
|
|
|
- attachmentId: "",
|
|
|
- filename: "",
|
|
|
- pages: 0,
|
|
|
- };
|
|
|
- this.paperAttachments.push(newAttachment);
|
|
|
- },
|
|
|
- deleteAttachment(index) {
|
|
|
- if (this.paperAttachments.length <= 1) {
|
|
|
- this.$message.error("试卷类型数量不得少于1");
|
|
|
- return;
|
|
|
- }
|
|
|
- this.paperAttachments.splice(index, 1);
|
|
|
- this.paperAttachments.forEach((item, itemIndex) => {
|
|
|
- item.name = this.abc[itemIndex];
|
|
|
- });
|
|
|
- if (
|
|
|
- this.examTaskDetail.drawCount &&
|
|
|
- this.examTaskDetail.drawCount > this.paperAttachments.length
|
|
|
- ) {
|
|
|
- this.examTaskDetail.drawCount = this.paperAttachments.length;
|
|
|
- }
|
|
|
- },
|
|
|
- toUpload(attachment) {
|
|
|
- this.curUploadType = "paper";
|
|
|
- this.curAttachment = {
|
|
|
- ...attachment,
|
|
|
- };
|
|
|
- this.$refs.UploadPaperDialog.open();
|
|
|
- },
|
|
|
- toUploadPaperConfirm() {
|
|
|
- if (this.paperConfirmAttachments.length >= 4) return;
|
|
|
- this.curUploadType = "paperConfirm";
|
|
|
- this.curAttachment = {
|
|
|
- ...this.paperConfirmAttachmentId,
|
|
|
- };
|
|
|
- this.$refs.UploadPaperDialog.open();
|
|
|
- },
|
|
|
- uploadConfirm(attachment, uploadType) {
|
|
|
- if (uploadType === "paper") {
|
|
|
- const index = this.paperAttachments.findIndex(
|
|
|
- (item) => item.name === attachment.name
|
|
|
- );
|
|
|
- this.paperAttachments.splice(index, 1, { ...attachment });
|
|
|
- } else {
|
|
|
- this.paperConfirmAttachments.push(attachment);
|
|
|
- }
|
|
|
- },
|
|
|
- deletePaperConfirmAttachment(index) {
|
|
|
- this.paperConfirmAttachments.splice(index, 1);
|
|
|
- },
|
|
|
- toViewCard() {
|
|
|
- window.open(
|
|
|
- this.getRouterPath({
|
|
|
- name: "CardPreview",
|
|
|
- params: {
|
|
|
- cardId: this.examTaskDetail.cardId,
|
|
|
- viewType: "view",
|
|
|
- },
|
|
|
- })
|
|
|
- );
|
|
|
- },
|
|
|
- toEditCard() {
|
|
|
- this.cachePrepareTcpCard();
|
|
|
- this.$router.push({
|
|
|
- name: "CardEdit",
|
|
|
- params: {
|
|
|
- cardId: this.examTaskDetail.cardId,
|
|
|
- },
|
|
|
- });
|
|
|
- },
|
|
|
- cachePrepareTcpCard() {
|
|
|
- this.$ls.set("prepareTcPCard", {
|
|
|
- examTaskId: this.examTask.id,
|
|
|
- courseCode: this.examTask.courseCode,
|
|
|
- courseName: this.examTask.courseName,
|
|
|
- makeMethod: this.examTaskDetail.makeMethod,
|
|
|
- cardRuleId: this.examTask.cardRuleId,
|
|
|
- type: "CUSTOM",
|
|
|
- createMethod: "STANDARD",
|
|
|
- });
|
|
|
- },
|
|
|
- async toCreateOrViewCard() {
|
|
|
- const result = await this.toSave(1);
|
|
|
- if (!result) return;
|
|
|
- this.task = {
|
|
|
- ...this.examTask,
|
|
|
- ...this.examTaskDetail,
|
|
|
- examTaskId: this.examTask.id,
|
|
|
- };
|
|
|
- if (!this.examTaskDetail.cardId) {
|
|
|
- this.$refs.CardOptionDialog.open();
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (this.examTaskDetail.makeMethod === "SELECT") {
|
|
|
- this.$refs.CardOptionDialog.open();
|
|
|
- } else if (this.examTaskDetail.makeMethod === "SELF") {
|
|
|
- this.toEditCard();
|
|
|
- } else {
|
|
|
- // 客服制卡:制作完毕则可以编辑,未制作完毕则可以查看
|
|
|
- if (this.examTaskDetail.status === "SUBMIT") {
|
|
|
- this.toEditCard();
|
|
|
- } else {
|
|
|
- this.toViewCard();
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- cardConfirm(data) {
|
|
|
- this.examTaskDetail = this.$objAssign(this.examTaskDetail, data);
|
|
|
- },
|
|
|
- async changeCreateCardType() {
|
|
|
- const h = this.$createElement;
|
|
|
- const result = await this.$msgbox({
|
|
|
- title: "切换题卡操作说明",
|
|
|
- message: h("div", null, [
|
|
|
- h("p", null, "1、切换题卡会将之前选择题卡数据删除。"),
|
|
|
- h(
|
|
|
- "p",
|
|
|
- null,
|
|
|
- "2、之前选择专卡进行绘制,切换题卡后再次选择专卡,需要重新开始绘制。"
|
|
|
- ),
|
|
|
- ]),
|
|
|
- showCancelButton: true,
|
|
|
-
|
|
|
- type: "warning",
|
|
|
- }).catch(() => {});
|
|
|
- if (result !== "confirm") return;
|
|
|
-
|
|
|
- await this.clearMakeMethod();
|
|
|
- this.toCreateOrViewCard();
|
|
|
- },
|
|
|
- async clearMakeMethod() {
|
|
|
- // 清除后台记录的题卡
|
|
|
- if (this.examTask.id && this.examTaskDetail.cardId)
|
|
|
- await switchCardCreateMethod(this.examTask.id);
|
|
|
-
|
|
|
- this.examTaskDetail.makeMethod = "";
|
|
|
- this.examTaskDetail.cardId = "";
|
|
|
- },
|
|
|
- teachingRoomChange() {
|
|
|
- this.examTask.courseCode = "";
|
|
|
- this.examTask.courseName = "";
|
|
|
- this.clearCard();
|
|
|
- },
|
|
|
- courseChange(val) {
|
|
|
- if (!val || !val.code) {
|
|
|
- this.examTask.courseCode = "";
|
|
|
- this.examTask.courseName = "";
|
|
|
- return;
|
|
|
- }
|
|
|
- this.examTask.courseName = val.name;
|
|
|
- this.clearCard();
|
|
|
- },
|
|
|
- clearCard() {
|
|
|
- this.clearMakeMethod();
|
|
|
- },
|
|
|
- getTaskDetailData() {
|
|
|
- let data = { ...this.examTaskDetail };
|
|
|
- data.paperType = this.paperAttachments.map((item) => item.name).join(",");
|
|
|
- data.paperAttachmentIds = JSON.stringify(this.paperAttachments, (k, v) =>
|
|
|
- k === "url" ? undefined : v
|
|
|
- );
|
|
|
- data.paperConfirmAttachmentIds = JSON.stringify(
|
|
|
- this.paperConfirmAttachments
|
|
|
- );
|
|
|
- this.examTaskDetail = data;
|
|
|
- },
|
|
|
- checkDataValid() {
|
|
|
- const attachmentValid = !this.paperAttachments.some(
|
|
|
- (item) => !item.attachmentId
|
|
|
- );
|
|
|
- // 设置了入库强制包含试卷时,校验试卷是否上传。
|
|
|
- if (this.examTaskDetail.includePaper && !attachmentValid) {
|
|
|
- this.$message.error("请完成试卷文件上传!");
|
|
|
- return;
|
|
|
- }
|
|
|
- // if (!this.paperConfirmAttachments.length) {
|
|
|
- // this.$message.error("请上传附件!");
|
|
|
- // return;
|
|
|
- // }
|
|
|
-
|
|
|
- if (!this.examTaskDetail.cardId) {
|
|
|
- this.$message.error("请选择题卡创建方式!");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (
|
|
|
- this.examTaskDetail.makeMethod !== "SELECT" &&
|
|
|
- this.examTaskDetail.status !== "SUBMIT"
|
|
|
- ) {
|
|
|
- this.$message.error("请先提交题卡!");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- return true;
|
|
|
- },
|
|
|
- async toSave(silent) {
|
|
|
- const valid = await this.$refs.examTaskComp.validate().catch(() => {});
|
|
|
- if (!valid) return;
|
|
|
-
|
|
|
- if (this.isSubmit) return;
|
|
|
- this.isSubmit = true;
|
|
|
- this.getTaskDetailData();
|
|
|
- let datas = {
|
|
|
- examTaskDetail: this.examTaskDetail,
|
|
|
- examTask: this.examTask,
|
|
|
- ...this.flowInfo,
|
|
|
- };
|
|
|
- const data = await teacherCreateTaskApply(datas).catch(() => {});
|
|
|
- this.isSubmit = false;
|
|
|
- if (!data) return;
|
|
|
-
|
|
|
- this.examTask = this.$objAssign(this.examTask, data);
|
|
|
-
|
|
|
- if (!silent) this.$message.success("保存成功!");
|
|
|
- return true;
|
|
|
- },
|
|
|
- async submit() {
|
|
|
- const valid = await this.$refs.examTaskComp.validate().catch(() => {});
|
|
|
- if (!valid) return;
|
|
|
-
|
|
|
- if (!this.checkDataValid()) return;
|
|
|
-
|
|
|
- this.$confirm(
|
|
|
- "任务确定提交后,则不可更改试卷及答题卡内容,确定提交该任务?",
|
|
|
- "提示",
|
|
|
- {
|
|
|
- type: "warning",
|
|
|
- }
|
|
|
- )
|
|
|
- .then(async () => {
|
|
|
- this.getTaskDetailData();
|
|
|
- this.examTaskDetail.operateType = "SUBMIT";
|
|
|
- let datas = {
|
|
|
- examTaskDetail: this.examTaskDetail,
|
|
|
- examTask: this.examTask,
|
|
|
- };
|
|
|
- const data = await teacherCreateTaskApply(datas).catch(() => {});
|
|
|
-
|
|
|
- if (!data) return;
|
|
|
- this.$message.success("提交成功!");
|
|
|
- this.close();
|
|
|
- this.$emit("modified");
|
|
|
- })
|
|
|
- .catch(() => {});
|
|
|
- },
|
|
|
- // image-preview
|
|
|
- toPreview(index) {
|
|
|
- this.curImageIndex = index;
|
|
|
- this.selectImage(index);
|
|
|
- this.$refs.SimpleImagePreview.open();
|
|
|
- },
|
|
|
- selectImage(index) {
|
|
|
- this.curImage = this.paperConfirmAttachments[index];
|
|
|
- },
|
|
|
- toPrevImage() {
|
|
|
- if (this.curImageIndex === 0) {
|
|
|
- this.curImageIndex = this.paperConfirmAttachments.length - 1;
|
|
|
- } else {
|
|
|
- this.curImageIndex--;
|
|
|
- }
|
|
|
-
|
|
|
- this.selectImage(this.curImageIndex);
|
|
|
- },
|
|
|
- toNextImage() {
|
|
|
- if (this.curImageIndex === this.paperConfirmAttachments.length - 1) {
|
|
|
- this.curImageIndex = 0;
|
|
|
- } else {
|
|
|
- this.curImageIndex++;
|
|
|
- }
|
|
|
-
|
|
|
- this.selectImage(this.curImageIndex);
|
|
|
- },
|
|
|
- },
|
|
|
-};
|
|
|
-</script>
|