|
@@ -0,0 +1,1017 @@
|
|
|
|
+<template>
|
|
|
|
+ <div
|
|
|
|
+ id="editPaperApp"
|
|
|
|
+ v-loading="loading"
|
|
|
|
+ class="paper"
|
|
|
|
+ element-loading-text="拼命加载中。。。"
|
|
|
|
+ >
|
|
|
|
+ <div class="edit-paper-top">
|
|
|
|
+ <div class="edit-paper-top-inline">
|
|
|
|
+ <div class="paper-top-div">
|
|
|
|
+ <span class="paper-top-title">课程代码:</span>
|
|
|
|
+ <span class="paper-top-value">{{ paper.course.code }}</span>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="paper-top-div">
|
|
|
|
+ <span class="paper-top-title">课程名称:</span>
|
|
|
|
+ <span class="paper-top-value">{{ paper.course.name }}</span>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="paper-top-div">
|
|
|
|
+ <span class="paper-top-title">试卷名称:</span>
|
|
|
|
+ <span class="paper-top-value">{{ paper.name }}</span>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="paper-top-div">
|
|
|
|
+ <span class="paper-top-title">试卷难度:</span>
|
|
|
|
+ <span class="paper-top-value">{{ paper.difficultyDegree }}</span>
|
|
|
|
+ </div>
|
|
|
|
+ <div>
|
|
|
|
+ <el-button
|
|
|
|
+ size="small"
|
|
|
|
+ type="primary"
|
|
|
|
+ plain
|
|
|
|
+ @click="releasePaper(paper.id)"
|
|
|
|
+ ><i class="el-icon-share"></i>释放</el-button
|
|
|
|
+ >
|
|
|
|
+ <el-button
|
|
|
|
+ size="small"
|
|
|
|
+ type="primary"
|
|
|
|
+ style="margin-left: 10px"
|
|
|
|
+ @click="back"
|
|
|
|
+ ><i class="el-icon-arrow-left"></i> 返回</el-button
|
|
|
|
+ >
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="paperName">
|
|
|
|
+ <div>
|
|
|
|
+ <br />
|
|
|
|
+ <h3 class="text-center">{{ paper.course.name }} 试卷</h3>
|
|
|
|
+ <h5 class="text-center">
|
|
|
|
+ <span v-show="paper.hasAudio">(含音频试卷)</span>
|
|
|
|
+ </h5>
|
|
|
|
+ <br />
|
|
|
|
+ <h4 class="text-center">(课程代码 {{ paper.course.code }})</h4>
|
|
|
|
+ <br />
|
|
|
|
+ </div>
|
|
|
|
+ <div class="text-left">
|
|
|
|
+ <el-table :data="paper.paperDetails" border style="width: 100%">
|
|
|
|
+ <el-table-column header-align="center" label="大题名称">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <span>{{ scope.row.name }}</span>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column header-align="center" label="大题总分">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <span>{{ scope.row.score }}</span>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column header-align="center" label="小题数量">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <span>{{ scope.row.unitCount }}</span>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column header-align="center" label="公开数量">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <span>{{ scope.row.pubCount }}</span>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column header-align="center" label="非公开数量">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <span>{{ scope.row.noPubCount }}</span>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+
|
|
|
|
+ <div class="mainQues" style="margin-top: 20px; margin-left: 0px">
|
|
|
|
+ <div class="mainQuesTitle">
|
|
|
|
+ <span>考试说明:</span>
|
|
|
|
+ <div style="width: 550px; margin-left: 20px; margin-top: 20px">
|
|
|
|
+ <span v-html="paper.examRemark"></span>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <!-- end by wwh -->
|
|
|
|
+ <div>
|
|
|
|
+ <h1>本试卷满分{{ paper.totalScore }}分。</h1>
|
|
|
|
+ </div>
|
|
|
|
+ <br />
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div>
|
|
|
|
+ <!-- 循环大题 -->
|
|
|
|
+ <div
|
|
|
|
+ v-for="(paperDetail, detailIndex) in paper.paperDetails"
|
|
|
|
+ v-show="paperDetailShow(paperDetail)"
|
|
|
|
+ :key="detailIndex"
|
|
|
|
+ class="mainQues"
|
|
|
|
+ >
|
|
|
|
+ <div
|
|
|
|
+ class="mainQuesTitle"
|
|
|
|
+ @mouseover="quesMouseOver(paperDetail.id)"
|
|
|
|
+ @mouseout="quesMouseOut(paperDetail.id)"
|
|
|
|
+ >
|
|
|
|
+ <span>{{ paperDetail.cnNum }}</span> <span>.</span>
|
|
|
|
+ <span>{{ paperDetail.name }}</span>
|
|
|
|
+ <span>
|
|
|
|
+ ({{ !paperDetail.title ? "本大题" : paperDetail.title + "," }}共{{
|
|
|
|
+ paperDetail.unitCount
|
|
|
|
+ }}小题,满分{{ paperDetail.score }}分)
|
|
|
|
+ </span>
|
|
|
|
+
|
|
|
|
+ <span :id="paperDetail.id" class="btnDiv">
|
|
|
|
+ <el-button
|
|
|
|
+ v-show="showButtons[detailIndex].up"
|
|
|
|
+ size="small"
|
|
|
|
+ icon="el-icon-arrow-up"
|
|
|
|
+ @click.stop="hideContent(detailIndex)"
|
|
|
|
+ ></el-button>
|
|
|
|
+
|
|
|
|
+ <el-button
|
|
|
|
+ v-show="!showButtons[detailIndex].up"
|
|
|
|
+ size="small"
|
|
|
|
+ icon="el-icon-arrow-down"
|
|
|
|
+ @click.stop="showContent(detailIndex)"
|
|
|
|
+ ></el-button>
|
|
|
|
+ </span>
|
|
|
|
+ <br />
|
|
|
|
+ <span v-html="paperDetail.description"></span>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <!-- 循环小题 -->
|
|
|
|
+ <div v-show="showQuestions[detailIndex].is_show">
|
|
|
|
+ <div
|
|
|
|
+ v-for="(paperDetailUnit, unitIndex) in paperDetail.paperDetailUnits"
|
|
|
|
+ v-show="quesShow(paperDetailUnit.id)"
|
|
|
|
+ :key="unitIndex"
|
|
|
|
+ class="ques"
|
|
|
|
+ >
|
|
|
|
+ <reduplicate_mark
|
|
|
|
+ :id="paperDetailUnit.id"
|
|
|
|
+ :show="reduplicateMarkShow(paperDetailUnit.id)"
|
|
|
|
+ :fill-color="reduplicateMarkColor(paperDetailUnit.id)"
|
|
|
|
+ :checked="reduplicateMarkCheck(paperDetailUnit.id)"
|
|
|
|
+ @reduplicate_mark_check="reduplicate_mark_check"
|
|
|
|
+ >
|
|
|
|
+ </reduplicate_mark>
|
|
|
|
+
|
|
|
|
+ <div
|
|
|
|
+ class="quesSelect"
|
|
|
|
+ @mouseover="quesMouseOver(paperDetailUnit.id)"
|
|
|
|
+ @mouseout="quesMouseOut(paperDetailUnit.id)"
|
|
|
|
+ >
|
|
|
|
+ <div :id="paperDetailUnit.id" class="btnDiv">
|
|
|
|
+ <el-button
|
|
|
|
+ size="small"
|
|
|
|
+ @click="editQues(paperDetailUnit, paperDetailUnit.question)"
|
|
|
|
+ >查看
|
|
|
|
+ </el-button>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div class="quesBody">
|
|
|
|
+ <span class="ques-title">{{ paperDetailUnit.number }}.</span>
|
|
|
|
+ <span
|
|
|
|
+ v-question-audio
|
|
|
|
+ class="ques-body"
|
|
|
|
+ :hasAudio="paperDetailUnit.question.hasAudio"
|
|
|
|
+ :questionId="paperDetailUnit.question.id"
|
|
|
|
+ v-html="paperDetailUnit.question.quesBody"
|
|
|
|
+ ></span>
|
|
|
|
+
|
|
|
|
+ <span class="score-span">
|
|
|
|
+ ({{ paperDetailUnit.score }}分)
|
|
|
|
+ </span>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div
|
|
|
|
+ v-for="(quesOption, optionIndex) in paperDetailUnit.question
|
|
|
|
+ .quesOptions"
|
|
|
|
+ :key="optionIndex"
|
|
|
|
+ class="quesOption"
|
|
|
|
+ >
|
|
|
|
+ <span class="ques-title"
|
|
|
|
+ >{{ optionIndex | optionOrderWordFilter }}.
|
|
|
|
+ </span>
|
|
|
|
+
|
|
|
|
+ <span
|
|
|
|
+ v-question-audio
|
|
|
|
+ class="ques-body"
|
|
|
|
+ :hasAudio="paperDetailUnit.question.hasAudio"
|
|
|
|
+ :questionId="paperDetailUnit.question.id"
|
|
|
|
+ v-html="quesOption.optionBody"
|
|
|
|
+ ></span>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <br />
|
|
|
|
+
|
|
|
|
+ <div
|
|
|
|
+ v-for="(subQuestion, subIndex) in paperDetailUnit.question
|
|
|
|
+ .subQuestions"
|
|
|
|
+ v-show="quesShow(subQuestion.id)"
|
|
|
|
+ :key="subIndex"
|
|
|
|
+ class="subQues"
|
|
|
|
+ >
|
|
|
|
+ <reduplicate_mark
|
|
|
|
+ :show="reduplicateMarkShow(subQuestion.id)"
|
|
|
|
+ ></reduplicate_mark>
|
|
|
|
+
|
|
|
|
+ <div
|
|
|
|
+ class="quesSelect"
|
|
|
|
+ @mouseover="
|
|
|
|
+ quesMouseOver(getSubQuesEditId(paperDetailUnit, subQuestion))
|
|
|
|
+ "
|
|
|
|
+ @mouseout="
|
|
|
|
+ quesMouseOut(getSubQuesEditId(paperDetailUnit, subQuestion))
|
|
|
|
+ "
|
|
|
|
+ >
|
|
|
|
+ <div
|
|
|
|
+ :id="getSubQuesEditId(paperDetailUnit, subQuestion)"
|
|
|
|
+ class="btnDiv"
|
|
|
|
+ >
|
|
|
|
+ <el-button
|
|
|
|
+ size="small"
|
|
|
|
+ @click="editQues(paperDetailUnit, subQuestion)"
|
|
|
|
+ >查看
|
|
|
|
+ </el-button>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div class="quesBody">
|
|
|
|
+ <span class="ques-title">{{ subQuestion.subNumber }}. </span>
|
|
|
|
+
|
|
|
|
+ <span v-html="subQuestion.quesBody"></span>
|
|
|
|
+ <span
|
|
|
|
+ >({{ paperDetailUnit.subScoreList[subIndex] }}分)</span
|
|
|
|
+ >
|
|
|
|
+ </div>
|
|
|
|
+ <div v-if="paperDetailUnit.questionType != 'MATCHING_QUESTION'">
|
|
|
|
+ <div
|
|
|
|
+ v-for="(
|
|
|
|
+ subQuesOption, subOptIndex
|
|
|
|
+ ) in subQuestion.quesOptions"
|
|
|
|
+ :key="subOptIndex"
|
|
|
|
+ class="quesOption"
|
|
|
|
+ >
|
|
|
|
+ <span class="ques-title"
|
|
|
|
+ >{{ subOptIndex | optionOrderWordFilter }}.
|
|
|
|
+ </span>
|
|
|
|
+ <span v-html="subQuesOption.optionBody"></span>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <br />
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <br />
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div class="text-left">
|
|
|
|
+ <el-dialog
|
|
|
|
+ v-loading.body="dialogLoading"
|
|
|
|
+ title="试题查看"
|
|
|
|
+ :visible.sync="quesDialog"
|
|
|
|
+ @close="closeQuesDialog"
|
|
|
|
+ >
|
|
|
|
+ <el-form :model="quesModel" label-position="right" label-width="80px">
|
|
|
|
+ <el-row :gutter="10">
|
|
|
|
+ <el-col :xs="10" :sm="10" :md="10" :lg="10">
|
|
|
|
+ <el-form-item label="题型">
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="quesModel.questionType"
|
|
|
|
+ :disabled="true"
|
|
|
|
+ placeholder="请输入题型"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in questionTypes"
|
|
|
|
+ :key="item.value"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.value"
|
|
|
|
+ >
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :xs="10" :sm="10" :md="10" :lg="10">
|
|
|
|
+ <el-form-item label="分值">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="quesModel.score"
|
|
|
|
+ :disabled="true"
|
|
|
|
+ placeholder="分值"
|
|
|
|
+ ></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <!-- create by weiwenhai 添加难度,公开度,试题属性 -->
|
|
|
|
+ <el-row :gutter="10">
|
|
|
|
+ <el-col :xs="10" :sm="10" :md="10" :lg="10">
|
|
|
|
+ <el-form-item label="难度">
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="quesModel.difficultyDegree"
|
|
|
|
+ placeholder="请输入难度"
|
|
|
|
+ :disabled="true"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in difficultyDegreeList"
|
|
|
|
+ :key="item.value"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.value"
|
|
|
|
+ >
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :xs="10" :sm="10" :md="10" :lg="10">
|
|
|
|
+ <el-form-item label="公开度">
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="quesModel.publicity"
|
|
|
|
+ placeholder="请输入公开度"
|
|
|
|
+ :disabled="true"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in publicityList"
|
|
|
|
+ :key="item.value"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.value"
|
|
|
|
+ >
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+
|
|
|
|
+ <el-col
|
|
|
|
+ v-if="quesModel.questionType == 'TEXT_ANSWER_QUESTION'"
|
|
|
|
+ :xs="10"
|
|
|
|
+ :sm="10"
|
|
|
|
+ :md="10"
|
|
|
|
+ :lg="10"
|
|
|
|
+ >
|
|
|
|
+ <el-form-item label="作答类型">
|
|
|
|
+ <el-select v-model="quesModel.answerType" :disabled="true">
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in answerTypes"
|
|
|
|
+ :key="item.value"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.value"
|
|
|
|
+ >
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col
|
|
|
|
+ v-if="quesModel.questionType && !isNested(quesModel.questionType)"
|
|
|
|
+ :xs="10"
|
|
|
|
+ :sm="10"
|
|
|
|
+ :md="10"
|
|
|
|
+ :lg="10"
|
|
|
|
+ >
|
|
|
|
+ <el-form-item label="时长">
|
|
|
|
+ <el-input-number
|
|
|
|
+ v-model="quesModel.control.maxAnswerTime"
|
|
|
|
+ size="small"
|
|
|
|
+ :precision="0"
|
|
|
|
+ :min="1"
|
|
|
|
+ :disabled="true"
|
|
|
|
+ ></el-input-number>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col
|
|
|
|
+ v-if="quesModel.questionType == 'MATCHING_QUESTION'"
|
|
|
|
+ :xs="10"
|
|
|
|
+ :sm="10"
|
|
|
|
+ :md="10"
|
|
|
|
+ :lg="10"
|
|
|
|
+ >
|
|
|
|
+ <el-form-item label="配对类型">
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="quesModel.quesParam.matchingType"
|
|
|
|
+ :disabled="true"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in matchingTypes"
|
|
|
|
+ :key="item.value"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.value"
|
|
|
|
+ >
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col
|
|
|
|
+ v-if="quesModel.questionType == 'MATCHING_QUESTION'"
|
|
|
|
+ :xs="10"
|
|
|
|
+ :sm="10"
|
|
|
|
+ :md="10"
|
|
|
|
+ :lg="10"
|
|
|
|
+ >
|
|
|
|
+ <el-form-item label="答题模式">
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="quesModel.quesParam.matchingMode"
|
|
|
|
+ :disabled="true"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in matchingModes"
|
|
|
|
+ :key="item.value"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.value"
|
|
|
|
+ >
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+
|
|
|
|
+ <el-row :gutter="10">
|
|
|
|
+ <el-col :xs="20" :sm="20" :md="20" :lg="20">
|
|
|
|
+ <el-form-item label="属性列表">
|
|
|
|
+ <el-tooltip
|
|
|
|
+ v-for="(content, propIndex) in quesModel.quesProperties"
|
|
|
|
+ :key="propIndex"
|
|
|
|
+ placement="top"
|
|
|
|
+ >
|
|
|
|
+ <div slot="content">
|
|
|
|
+ <span v-if="content.firstProperty != null"
|
|
|
|
+ >一级属性:{{ content.firstProperty.name }}</span
|
|
|
|
+ ><br />
|
|
|
|
+ <span v-if="content.secondProperty != null"
|
|
|
|
+ >二级属性:{{ content.secondProperty.name }}</span
|
|
|
|
+ >
|
|
|
|
+ </div>
|
|
|
|
+ <span>
|
|
|
|
+ <el-tag
|
|
|
|
+ :key="content.id"
|
|
|
|
+ style="margin-right: 5px"
|
|
|
|
+ :closable="false"
|
|
|
|
+ type="primary"
|
|
|
|
+ >
|
|
|
|
+ {{ content.coursePropertyName }}
|
|
|
|
+ </el-tag>
|
|
|
|
+ </span>
|
|
|
|
+ </el-tooltip>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+
|
|
|
|
+ <!-- end by weiwenhai -->
|
|
|
|
+ <div>
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col>
|
|
|
|
+ <el-form-item label="题目">
|
|
|
|
+ <span v-html="quesModel.quesBody"></span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <div
|
|
|
|
+ v-if="
|
|
|
|
+ !quesModel.parentType ||
|
|
|
|
+ quesModel.parentType != 'MATCHING_QUESTION'
|
|
|
|
+ "
|
|
|
|
+ >
|
|
|
|
+ <el-form-item
|
|
|
|
+ v-for="(quesOption, optIndex) in quesModel.quesOptions"
|
|
|
|
+ :key="optIndex"
|
|
|
|
+ ><el-col :span="2">
|
|
|
|
+ <span>{{ optIndex | optionOrderWordFilter }}</span>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="20">
|
|
|
|
+ <span v-html="quesOption.optionBody"></span>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </div>
|
|
|
|
+ <div v-if="!isNested(quesModel.questionType)">
|
|
|
|
+ <el-form-item label="答案">
|
|
|
|
+ <span v-html="quesModel.quesAnswer"></span>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </div>
|
|
|
|
+ <div
|
|
|
|
+ :class="{
|
|
|
|
+ margin_left_40: true,
|
|
|
|
+ }"
|
|
|
|
+ >
|
|
|
|
+ <el-button @click="closeQuesDialog">关闭</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </el-form>
|
|
|
|
+ </el-dialog>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+import { QUESTION_API } from "@/constants/constants";
|
|
|
|
+import { isEmptyStr, QUESTION_TYPES } from "../constants/constants";
|
|
|
|
+import { mapState } from "vuex";
|
|
|
|
+import reduplicate_mark from "../component/reduplicate_mark.vue";
|
|
|
|
+import randomColor from "randomcolor";
|
|
|
|
+
|
|
|
|
+export default {
|
|
|
|
+ name: "EditPaperApp",
|
|
|
|
+ components: {
|
|
|
|
+ reduplicate_mark,
|
|
|
|
+ },
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ hValue: "100px",
|
|
|
|
+ wValue: "500px",
|
|
|
|
+ display: "block",
|
|
|
|
+ uploadAction: "",
|
|
|
|
+ fileList: [],
|
|
|
|
+ answerFileList: [],
|
|
|
|
+ paperId: "",
|
|
|
|
+ paperDetailId: "",
|
|
|
|
+ editPaperDetailUnit: "",
|
|
|
|
+ quesDialog: false,
|
|
|
|
+ paperDatailDialog: false,
|
|
|
|
+ paperRemarkDialog: false,
|
|
|
|
+ parentView: "",
|
|
|
|
+ paper: {
|
|
|
|
+ course: {
|
|
|
|
+ code: "",
|
|
|
|
+ name: "",
|
|
|
|
+ },
|
|
|
|
+ examRemark: "",
|
|
|
|
+ },
|
|
|
|
+ loading: false,
|
|
|
|
+ dialogLoading: false,
|
|
|
|
+ detailLoading: false,
|
|
|
|
+ uploadAudioLoading: false,
|
|
|
|
+ uploadAnswerLoading: false,
|
|
|
|
+ questionTypes: QUESTION_TYPES,
|
|
|
|
+ questionType: "",
|
|
|
|
+ quesModel: { quesProperties: [] },
|
|
|
|
+ editpaperDetail: {},
|
|
|
|
+ reduplicateQuestions: [],
|
|
|
|
+ reduplicateGroup: [],
|
|
|
|
+ reduplicateQuesColor: [],
|
|
|
|
+ singleRightAnswer: "", //接收单选答案
|
|
|
|
+ multipleRightAnswer: [], //接收多选答案
|
|
|
|
+ options: ["正确", "错误"],
|
|
|
|
+ duplicateLoading: false,
|
|
|
|
+ dialogRadioFile: false,
|
|
|
|
+ dialogAnswerFile: false,
|
|
|
|
+ isUpload: true,
|
|
|
|
+ isUploadAnswer: true,
|
|
|
|
+ message: "",
|
|
|
|
+ answerMessage: "",
|
|
|
|
+ checkResult: false,
|
|
|
|
+ checkResultAnswer: false,
|
|
|
|
+ fileNameList: [],
|
|
|
|
+ defaultColor: [
|
|
|
|
+ "Red",
|
|
|
|
+ "Blue",
|
|
|
|
+ "LimeGreen",
|
|
|
|
+ "GoldenRod",
|
|
|
|
+ "Black",
|
|
|
|
+ "BlueViolet",
|
|
|
|
+ "Chocolate",
|
|
|
|
+ "DarkCyan",
|
|
|
|
+ "HotPink",
|
|
|
|
+ "Orange",
|
|
|
|
+ "IndianRed",
|
|
|
|
+ "Indigo",
|
|
|
|
+ "Green",
|
|
|
|
+ "Aqua",
|
|
|
|
+ "CadetBlue",
|
|
|
|
+ "SkyBlue",
|
|
|
|
+ "SlateBlue",
|
|
|
|
+ "SlateGray",
|
|
|
|
+ "Tomato",
|
|
|
|
+ "VioletRed",
|
|
|
|
+ ],
|
|
|
|
+ difficultyDegreeList: [
|
|
|
|
+ { label: 0.1, value: 0.1 },
|
|
|
|
+ { label: 0.2, value: 0.2 },
|
|
|
|
+ { label: 0.3, value: 0.3 },
|
|
|
|
+ { label: 0.4, value: 0.4 },
|
|
|
|
+ { label: 0.5, value: 0.5 },
|
|
|
|
+ { label: 0.6, value: 0.6 },
|
|
|
|
+ { label: 0.7, value: 0.7 },
|
|
|
|
+ { label: 0.8, value: 0.8 },
|
|
|
|
+ { label: 0.9, value: 0.9 },
|
|
|
|
+ { label: 1.0, value: 1.0 },
|
|
|
|
+ ],
|
|
|
|
+ publicityList: [
|
|
|
|
+ { label: "公开", value: true },
|
|
|
|
+ { label: "非公开", value: false },
|
|
|
|
+ ],
|
|
|
|
+ answerTypes: [
|
|
|
|
+ { label: "文本", value: "DIVERSIFIED_TEXT" },
|
|
|
|
+ { label: "音频", value: "SINGLE_AUDIO" },
|
|
|
|
+ ],
|
|
|
|
+ matchingTypes: [
|
|
|
|
+ { label: "填词", value: 1 },
|
|
|
|
+ { label: "段落", value: 2 },
|
|
|
|
+ ],
|
|
|
|
+ matchingModes: [
|
|
|
|
+ { label: "单用", value: 1 },
|
|
|
|
+ { label: "复用", value: 2 },
|
|
|
|
+ ],
|
|
|
|
+ coursePropertyList: [],
|
|
|
|
+ coursePropertyName: "", //课程属性名
|
|
|
|
+ firstPropertyList: [], //一级属性集合
|
|
|
|
+ firstPropertyId: "", //一级属性id
|
|
|
|
+ secondPropertyList: [], //二级属性集合
|
|
|
|
+ secondPropertyId: "", //二级属性id
|
|
|
|
+ examRemark: "",
|
|
|
|
+ showQuestions: [],
|
|
|
|
+ showButtons: [],
|
|
|
|
+ };
|
|
|
|
+ },
|
|
|
|
+ computed: {
|
|
|
|
+ ...mapState({
|
|
|
|
+ user: (state) => state.user,
|
|
|
|
+ }),
|
|
|
|
+ updatePorperty() {
|
|
|
|
+ return false;
|
|
|
|
+ },
|
|
|
|
+ answer() {
|
|
|
|
+ if (this.quesModel.questionType == "SINGLE_ANSWER_QUESTION") {
|
|
|
|
+ return this.singleRightAnswer;
|
|
|
|
+ } else if (this.quesModel.questionType == "MULTIPLE_ANSWER_QUESTION") {
|
|
|
|
+ var obj = this.multipleRightAnswer;
|
|
|
|
+ return obj.sort().toString();
|
|
|
|
+ }
|
|
|
|
+ return this.quesModel.quesAnswer;
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ created() {
|
|
|
|
+ // $("body").attr("style", "");
|
|
|
|
+ document.getElementsByTagName("body")[0].style = "";
|
|
|
|
+ this.paperId = this.$route.params.id;
|
|
|
|
+ this.parentView = this.$route.params.parentView;
|
|
|
|
+ this.initPaper();
|
|
|
|
+ this.getreduplicateQuestions();
|
|
|
|
+ this.uploadAction = QUESTION_API + "/uploadRadio/" + this.paperId;
|
|
|
|
+ this.uploadHeaders = {
|
|
|
|
+ key: this.user.key,
|
|
|
|
+ token: this.user.token,
|
|
|
|
+ };
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ isNested(questionType) {
|
|
|
|
+ if (
|
|
|
|
+ questionType == "NESTED_ANSWER_QUESTION" ||
|
|
|
|
+ questionType == "LISTENING_QUESTION" ||
|
|
|
|
+ questionType == "MATCHING_QUESTION"
|
|
|
|
+ ) {
|
|
|
|
+ return true;
|
|
|
|
+ } else {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ releasePaper(paperid) {
|
|
|
|
+ this.$confirm("确认释放试卷吗?", "提示", {
|
|
|
|
+ type: "warning",
|
|
|
|
+ }).then(() => {
|
|
|
|
+ this.loading = true;
|
|
|
|
+ this.$http.put(QUESTION_API + "/paper_storage/release/" + paperid).then(
|
|
|
|
+ () => {
|
|
|
|
+ this.loading = false;
|
|
|
|
+ this.$notify({
|
|
|
|
+ message: "操作成功",
|
|
|
|
+ type: "success",
|
|
|
|
+ });
|
|
|
|
+ this.back();
|
|
|
|
+ },
|
|
|
|
+ (response) => {
|
|
|
|
+ this.loading = false;
|
|
|
|
+ this.$notify({
|
|
|
|
+ message: response.response.data.desc,
|
|
|
|
+ type: "error",
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ );
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ //隐藏大题下的所有小题
|
|
|
|
+ hideContent(index) {
|
|
|
|
+ console.log("up");
|
|
|
|
+ this.showQuestions[index].is_show = false;
|
|
|
|
+ this.showButtons[index].up = false;
|
|
|
|
+ },
|
|
|
|
+ //展开大题下所有小题
|
|
|
|
+ showContent(index) {
|
|
|
|
+ console.log("down");
|
|
|
|
+ this.showQuestions[index].is_show = true;
|
|
|
|
+ this.showButtons[index].up = true;
|
|
|
|
+ },
|
|
|
|
+ quesMouseOver(index) {
|
|
|
|
+ document.getElementById(index).style.visibility = "visible";
|
|
|
|
+ },
|
|
|
|
+ quesMouseOut(index) {
|
|
|
|
+ document.getElementById(index).style.visibility = "hidden";
|
|
|
|
+ },
|
|
|
|
+ //初始化试卷
|
|
|
|
+ initPaper() {
|
|
|
|
+ const scrollPosition =
|
|
|
|
+ document.documentElement.scrollTop || document.body.scrollTop;
|
|
|
|
+ this.loading = true;
|
|
|
|
+ this.paper = {
|
|
|
|
+ course: {
|
|
|
|
+ code: "",
|
|
|
|
+ name: "",
|
|
|
|
+ },
|
|
|
|
+ };
|
|
|
|
+ this.$http
|
|
|
|
+ .get(QUESTION_API + "/paper/" + this.paperId)
|
|
|
|
+ .then((response) => {
|
|
|
|
+ this.paper = response.data;
|
|
|
|
+ //查询所有课程属性名
|
|
|
|
+ this.initCourseProperty(this.paper.course.code);
|
|
|
|
+ //将所有小题分为公开和非公开
|
|
|
|
+ if (this.paper.paperDetails && this.paper.paperDetails.length > 0) {
|
|
|
|
+ for (let paperDetil of this.paper.paperDetails) {
|
|
|
|
+ this.showQuestions.push({ is_show: true });
|
|
|
|
+ this.showButtons.push({ up: true });
|
|
|
|
+ paperDetil.pubCount = 0;
|
|
|
|
+ paperDetil.noPubCount = 0;
|
|
|
|
+ if (
|
|
|
|
+ paperDetil.paperDetailUnits &&
|
|
|
|
+ paperDetil.paperDetailUnits.length > 0
|
|
|
|
+ ) {
|
|
|
|
+ for (let paperDetilUt of paperDetil.paperDetailUnits) {
|
|
|
|
+ if (!this.isNested(paperDetilUt.question.questionType)) {
|
|
|
|
+ //非套题
|
|
|
|
+ if (paperDetilUt.question.publicity) {
|
|
|
|
+ paperDetil.pubCount = paperDetil.pubCount + 1;
|
|
|
|
+ } else {
|
|
|
|
+ paperDetil.noPubCount = paperDetil.noPubCount + 1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ //循环所有子题
|
|
|
|
+ for (let ques of paperDetilUt.question.subQuestions) {
|
|
|
|
+ if (ques.publicity) {
|
|
|
|
+ paperDetil.pubCount = paperDetil.pubCount + 1;
|
|
|
|
+ } else {
|
|
|
|
+ paperDetil.noPubCount = paperDetil.noPubCount + 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ document.documentElement.scrollTop = document.body.scrollTop = scrollPosition;
|
|
|
|
+ console.log(scrollPosition);
|
|
|
|
+ }, 1000);
|
|
|
|
+ this.loading = false;
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ //查询所有课程属性名
|
|
|
|
+ initCourseProperty(courseCode) {
|
|
|
|
+ this.$http
|
|
|
|
+ .get(QUESTION_API + "/courseProperty/enable/" + courseCode)
|
|
|
|
+ .then((response) => {
|
|
|
|
+ this.coursePropertyList = response.data;
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ quesShow(id) {
|
|
|
|
+ if (this.reduplicateGroup.length < 1) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ for (var i = 0, imax = this.reduplicateGroup.length; i < imax; i++) {
|
|
|
|
+ if (id == this.reduplicateGroup[i]) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ },
|
|
|
|
+ reduplicateMarkShow(id) {
|
|
|
|
+ var found = false;
|
|
|
|
+ for (var i = 0, imax = this.reduplicateQuestions.length; i < imax; i++) {
|
|
|
|
+ for (
|
|
|
|
+ var j = 0, jmax = this.reduplicateQuestions[i].length;
|
|
|
|
+ j < jmax;
|
|
|
|
+ j++
|
|
|
|
+ ) {
|
|
|
|
+ if (this.reduplicateQuestions[i][j] == id) {
|
|
|
|
+ found = true;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (found) {
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return found;
|
|
|
|
+ },
|
|
|
|
+ reduplicateMarkColor(id) {
|
|
|
|
+ for (var i = 0, imax = this.reduplicateQuestions.length; i < imax; i++) {
|
|
|
|
+ for (
|
|
|
|
+ var j = 0, jmax = this.reduplicateQuestions[i].length;
|
|
|
|
+ j < jmax;
|
|
|
|
+ j++
|
|
|
|
+ ) {
|
|
|
|
+ if (this.reduplicateQuestions[i][j] == id) {
|
|
|
|
+ return this.reduplicateQuesColor[i];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ reduplicateMarkCheck(id) {
|
|
|
|
+ for (var i = 0, imax = this.reduplicateGroup.length; i < imax; i++) {
|
|
|
|
+ if (id == this.reduplicateGroup[i]) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ },
|
|
|
|
+ reduplicate_mark_check(id, checked) {
|
|
|
|
+ console.log(checked);
|
|
|
|
+ console.log(this.reduplicateQuestions);
|
|
|
|
+ console.log(id);
|
|
|
|
+ if (!checked) {
|
|
|
|
+ for (
|
|
|
|
+ var i = 0, imax = this.reduplicateQuestions.length;
|
|
|
|
+ i < imax;
|
|
|
|
+ i++
|
|
|
|
+ ) {
|
|
|
|
+ for (
|
|
|
|
+ var j = 0, jmax = this.reduplicateQuestions[i].length;
|
|
|
|
+ j < jmax;
|
|
|
|
+ j++
|
|
|
|
+ ) {
|
|
|
|
+ if (this.reduplicateQuestions[i][j] == id) {
|
|
|
|
+ this.reduplicateGroup = [];
|
|
|
|
+ for (
|
|
|
|
+ var k = 0, kmax = this.reduplicateQuestions[i].length;
|
|
|
|
+ k < kmax;
|
|
|
|
+ k++
|
|
|
|
+ ) {
|
|
|
|
+ this.reduplicateGroup.push(this.reduplicateQuestions[i][k]);
|
|
|
|
+ }
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ this.reduplicateGroup = [];
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //编辑题目
|
|
|
|
+ editQues(paperDetailUnit, question) {
|
|
|
|
+ console.log("question:", question);
|
|
|
|
+ this.coursePropertyName = "";
|
|
|
|
+ this.firstPropertyId = "";
|
|
|
|
+ this.secondPropertyId = "";
|
|
|
|
+ this.editPaperDetailUnit = paperDetailUnit;
|
|
|
|
+ this.quesModel = JSON.parse(JSON.stringify(question)); //深拷贝
|
|
|
|
+ this.quesModel.score = paperDetailUnit.score;
|
|
|
|
+ //如果是套题下面的小题编辑 ( paperDetailUnit的类型是套题,question的类型不是套题)
|
|
|
|
+ if (
|
|
|
|
+ (paperDetailUnit.questionType == "NESTED_ANSWER_QUESTION" &&
|
|
|
|
+ question.questionType != "NESTED_ANSWER_QUESTION") ||
|
|
|
|
+ (paperDetailUnit.questionType == "LISTENING_QUESTION" &&
|
|
|
|
+ question.questionType != "LISTENING_QUESTION") ||
|
|
|
|
+ (paperDetailUnit.questionType == "MATCHING_QUESTION" &&
|
|
|
|
+ question.questionType != "MATCHING_QUESTION")
|
|
|
|
+ ) {
|
|
|
|
+ for (var i = 0; i < paperDetailUnit.question.subQuestions.length; i++) {
|
|
|
|
+ if (
|
|
|
|
+ paperDetailUnit.question.subQuestions[i].id == this.quesModel.id
|
|
|
|
+ ) {
|
|
|
|
+ this.quesModel.score = paperDetailUnit.subScoreList[i];
|
|
|
|
+ this.quesModel.parentType = paperDetailUnit.questionType;
|
|
|
|
+ this.quesModel.optionsSelected = paperDetailUnit.optionsSelected;
|
|
|
|
+ this.quesModel.parentQuesParam = paperDetailUnit.question.quesParam;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (isEmptyStr(this.quesModel.answerType)) {
|
|
|
|
+ this.quesModel.answerType = "DIVERSIFIED_TEXT";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (this.quesModel.questionType == "FILL_BLANK_QUESTION") {
|
|
|
|
+ this.quesModel.quesBody = this.quesModel.quesBody.replace(
|
|
|
|
+ /______/g,
|
|
|
|
+ "###"
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.assignAnswers(); //给singleRightAnswer或multipleRightAnswer赋值
|
|
|
|
+ this.openQuesDialog();
|
|
|
|
+ },
|
|
|
|
+ //给singleRightAnswer和multipleRightAnswer赋值
|
|
|
|
+ assignAnswers() {
|
|
|
|
+ if (this.quesModel.quesOptions && this.quesModel.quesOptions.length > 0) {
|
|
|
|
+ this.singleRightAnswer = "";
|
|
|
|
+ this.multipleRightAnswer = [];
|
|
|
|
+ for (let i = 0; i < this.quesModel.quesOptions.length; i++) {
|
|
|
|
+ let option = this.quesModel.quesOptions[i];
|
|
|
|
+ if (
|
|
|
|
+ this.quesModel.questionType == "SINGLE_ANSWER_QUESTION" &&
|
|
|
|
+ option.isCorrect == 1
|
|
|
|
+ ) {
|
|
|
|
+ this.singleRightAnswer = String.fromCharCode(65 + i);
|
|
|
|
+ }
|
|
|
|
+ if (
|
|
|
|
+ this.quesModel.questionType == "MULTIPLE_ANSWER_QUESTION" &&
|
|
|
|
+ option.isCorrect == 1
|
|
|
|
+ ) {
|
|
|
|
+ this.multipleRightAnswer.push(String.fromCharCode(65 + i));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //打开修改试题编辑框
|
|
|
|
+ openQuesDialog() {
|
|
|
|
+ this.quesDialog = true;
|
|
|
|
+ },
|
|
|
|
+ //关闭试题编辑框
|
|
|
|
+ closeQuesDialog() {
|
|
|
|
+ this.quesDialog = false;
|
|
|
|
+ this.quesModel = {};
|
|
|
|
+ },
|
|
|
|
+ //新增属性
|
|
|
|
+ //在正确的option上设置isCorrect=1
|
|
|
|
+ setRightAnswer() {
|
|
|
|
+ if (
|
|
|
|
+ !this.quesModel.quesOptions ||
|
|
|
|
+ this.quesModel.quesOptions.length == 0
|
|
|
|
+ ) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ for (var i = 0; i < this.quesModel.quesOptions.length; i++) {
|
|
|
|
+ var option = this.quesModel.quesOptions[i];
|
|
|
|
+ var answerOrderNum = String.fromCharCode(65 + i);
|
|
|
|
+ if (this.quesModel.questionType == "SINGLE_ANSWER_QUESTION") {
|
|
|
|
+ option["isCorrect"] =
|
|
|
|
+ answerOrderNum == this.singleRightAnswer ? 1 : 0;
|
|
|
|
+ }
|
|
|
|
+ if (this.quesModel.questionType == "MULTIPLE_ANSWER_QUESTION") {
|
|
|
|
+ option["isCorrect"] =
|
|
|
|
+ this.multipleRightAnswer.indexOf(answerOrderNum) > -1 ? 1 : 0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //获取重复试题
|
|
|
|
+ getreduplicateQuestions() {
|
|
|
|
+ this.duplicateLoading = true;
|
|
|
|
+ this.$http
|
|
|
|
+ .get(QUESTION_API + "/paper/" + this.paperId + "/reduplicate-questions")
|
|
|
|
+ .then((response) => {
|
|
|
|
+ this.reduplicateQuestions = response.data;
|
|
|
|
+ this.duplicateLoading = false;
|
|
|
|
+ this.initReduplicateQuesColor();
|
|
|
|
+ // var ques = document.getElementsByClassName("ques")[0];
|
|
|
|
+ // ques.style.display = "inline";
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ initReduplicateQuesColor() {
|
|
|
|
+ var colorCount = this.reduplicateQuestions.length;
|
|
|
|
+ if (colorCount > 20) {
|
|
|
|
+ this.reduplicateQuesColor = randomColor({
|
|
|
|
+ luminosity: "bright",
|
|
|
|
+ count: colorCount,
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ this.reduplicateQuesColor = this.defaultColor;
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ getSubQuesEditId(paperDetailUnit, subQuestion) {
|
|
|
|
+ return paperDetailUnit.question.id + "_" + subQuestion.subNumber;
|
|
|
|
+ },
|
|
|
|
+ //返回
|
|
|
|
+ back() {
|
|
|
|
+ if (sessionStorage.getItem("question_back") == "true") {
|
|
|
|
+ this.$router.push({
|
|
|
|
+ path: "/questions/paper_storage/0",
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ this.$router.push({
|
|
|
|
+ path: "/questions/paper_storage/1",
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ paperDetailShow(paperDetail) {
|
|
|
|
+ if (this.reduplicateGroup.length == 0) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ let paperDetailUnits = paperDetail.paperDetailUnits;
|
|
|
|
+ for (let i = 0, imax = paperDetailUnits.length; i < imax; i++) {
|
|
|
|
+ for (var j = 0, jmax = this.reduplicateGroup.length; j < jmax; j++) {
|
|
|
|
+ if (paperDetailUnits[i].id == this.reduplicateGroup[j]) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+</script>
|
|
|
|
+<style scoped src="../styles/EditPaper.css">
|
|
|
|
+.property_with {
|
|
|
|
+ width: 100px;
|
|
|
|
+}
|
|
|
|
+.ck-toolbar {
|
|
|
|
+ z-index: 9999;
|
|
|
|
+}
|
|
|
|
+#app {
|
|
|
|
+ background-color: white !important;
|
|
|
|
+}
|
|
|
|
+</style>
|
|
|
|
+<style scoped src="../styles/Common.css"></style>
|