|
@@ -1,100 +1,106 @@
|
|
|
<template>
|
|
|
<div class="ev-container component-ev-container" :id="refId">
|
|
|
- <div class="display-flex">
|
|
|
- <div class="exersices-attr my-radio-style">
|
|
|
- <IconText :text="'选择学段'" :color="'#00b8ff'" :icon="'md-school'"></IconText>
|
|
|
- <Select v-model="exercisePeriod" @on-change="onPeriodChange">
|
|
|
- <Option v-for="(period,index) in schoolInfo.period" :value="index" :key="index">{{ period.periodName }}</Option>
|
|
|
- </Select>
|
|
|
- </div>
|
|
|
- <div class="my-radio-style exersices-attr">
|
|
|
- <IconText :text="'选择年级'" :color="'#00b8ff'" :icon="'logo-buffer'"></IconText>
|
|
|
- <Select v-model="exerciseGrade" multiple>
|
|
|
- <Option v-for="(grade,index) in gradeList" :value="grade.gradeCode" :key="index">{{ grade.gradeName }}</Option>
|
|
|
- </Select>
|
|
|
- </div>
|
|
|
- <div class="exersices-attr my-radio-style">
|
|
|
- <IconText :text="'选择科目'" :color="'#00b8ff'" :icon="'md-bookmarks'"></IconText>
|
|
|
- <Select v-model="exerciseSubject">
|
|
|
- <Option v-for="(subject,index) in subjectList" :value="index" :key="index">{{ subject.subjectName }}</Option>
|
|
|
- </Select>
|
|
|
- </div>
|
|
|
+ <div class="display-flex">
|
|
|
+ <div class="exersices-attr my-radio-style">
|
|
|
+ <IconText :text="'选择学段'" :color="'#00b8ff'" :icon="'md-school'"></IconText>
|
|
|
+ <Select v-model="exercisePeriod" @on-change="onPeriodChange">
|
|
|
+ <Option v-for="(period,index) in schoolInfo.period" :value="index" :key="index">{{ period.periodName }}</Option>
|
|
|
+ </Select>
|
|
|
</div>
|
|
|
- <div class="display-flex">
|
|
|
- <div class="exersices-attr my-radio-style">
|
|
|
- <IconText :text="'题目归属'" :color="'#00b8ff'" :icon="'md-cube'"></IconText>
|
|
|
- <Select v-model="exerciseScope">
|
|
|
- <Option v-for="(item,index) in scopeList" :value="index" :key="index">{{ item }}</Option>
|
|
|
- </Select>
|
|
|
- </div>
|
|
|
- <div class="exersices-attr my-radio-style">
|
|
|
- <IconText :text="'关联认知层次'" :color="'#00b8ff'" :icon="'md-planet'"></IconText>
|
|
|
- <Select v-model="exerciseField">
|
|
|
- <Option v-for="(item,index) in fieldList" :value="index" :key="index">{{ item }}</Option>
|
|
|
- </Select>
|
|
|
- </div>
|
|
|
- <div class="exersices-attr my-radio-style">
|
|
|
- <IconText :text="'关联知识点'" :color="'#00b8ff'" :icon="'md-infinite'"></IconText>
|
|
|
- <Button type="info" style="margin-top:20px" @click="selectPointsModal = true" v-if="exercisePoints.length === 0">选择知识点</Button>
|
|
|
- <div v-else style="margin-top:10px">
|
|
|
- <span v-for="(item,index) in exercisePoints" :key="index" class="exercise-item-point">
|
|
|
- {{item.name}}
|
|
|
- <span class="exercise-item-point-close"><Icon type="md-close" @click="onDeletePoint(index)" /></span>
|
|
|
- </span>
|
|
|
- <span class="exercise-item-point-modify" @click="selectPointsModal = true">修改</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
+ <div class="my-radio-style exersices-attr">
|
|
|
+ <IconText :text="'选择年级'" :color="'#00b8ff'" :icon="'logo-buffer'"></IconText>
|
|
|
+ <Select v-model="exerciseGrade" multiple>
|
|
|
+ <Option v-for="(grade,index) in gradeList" :value="grade.gradeCode" :key="index">{{ grade.gradeName }}</Option>
|
|
|
+ </Select>
|
|
|
</div>
|
|
|
- <div class="exersices-attr display-flex">
|
|
|
- <div class="exersices-attr-type my-radio-style" style="width:50%">
|
|
|
- <IconText :text="'选择题型'" :color="'#00b8ff'" :icon="'md-pricetags'"></IconText>
|
|
|
- <RadioGroup v-model="exersicesType" type="button" @on-change="typeChange">
|
|
|
- <Radio label="Single" :disabled="isEdit">单选</Radio>
|
|
|
- <Radio label="Multiple" :disabled="isEdit">多选</Radio>
|
|
|
- <Radio label="Judge" :disabled="isEdit">判断</Radio>
|
|
|
- <Radio label="Complete" :disabled="isEdit">填空</Radio>
|
|
|
- <Radio label="Subjective" :disabled="isEdit">问答</Radio>
|
|
|
- <Radio label="Compose" :disabled="isEdit">综合</Radio>
|
|
|
- </RadioGroup>
|
|
|
- </div>
|
|
|
- <div class="exersices-attr-diff edit-exersices-attr-diff my-radio-style">
|
|
|
- <IconText :text="'题目难度'" :color="'#00b8ff'" :icon="'md-pulse'"></IconText>
|
|
|
- <RadioGroup v-model="exersicesDiff" type="button" ref="diffRef">
|
|
|
- <Radio label="1" @click.native="diffChange($event,'1')">容易</Radio>
|
|
|
- <Radio label="2" @click.native="diffChange($event,'2')">较易</Radio>
|
|
|
- <Radio label="3" @click.native="diffChange($event,'3')">一般</Radio>
|
|
|
- <Radio label="4" @click.native="diffChange($event,'4')">较难</Radio>
|
|
|
- <Radio label="5" @click.native="diffChange($event,'5')">困难</Radio>
|
|
|
- </RadioGroup>
|
|
|
- </div>
|
|
|
+ <div class="exersices-attr my-radio-style">
|
|
|
+ <IconText :text="'选择科目'" :color="'#00b8ff'" :icon="'md-bookmarks'"></IconText>
|
|
|
+ <Select v-model="exerciseSubject">
|
|
|
+ <Option v-for="(subject,index) in subjectList" :value="index" :key="index">{{ subject.subjectName }}</Option>
|
|
|
+ </Select>
|
|
|
</div>
|
|
|
-
|
|
|
- <BaseSingle v-if="exersicesType==='Single'" ref="single" :editItem="editInfo"></BaseSingle>
|
|
|
- <BaseMultiple v-else-if="exersicesType==='Multiple'" ref="multiple" :editInfo="editInfo"></BaseMultiple>
|
|
|
- <BaseJudge v-else-if="exersicesType==='Judge'" ref="judge" :editInfo="editInfo"></BaseJudge>
|
|
|
- <BaseCompletion v-else-if="exersicesType==='Complete'" ref="complete" :editInfo="editInfo"></BaseCompletion>
|
|
|
- <BaseSubjective v-else-if="exersicesType==='Subjective'" ref="subjective" :editInfo="editInfo"></BaseSubjective>
|
|
|
-
|
|
|
- <!-- 解析的富文本部分 -->
|
|
|
- <div class="exersices-analysis">
|
|
|
- <IconText :text="'解析'" :color="'#2892DD'" :icon="'md-list'" style="margin-bottom:10px;"></IconText>
|
|
|
- <div>
|
|
|
- <div ref="analysisEditor" style="text-align:left"></div>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ <div class="display-flex">
|
|
|
+ <div class="exersices-attr my-radio-style">
|
|
|
+ <IconText :text="'题目归属'" :color="'#00b8ff'" :icon="'md-cube'"></IconText>
|
|
|
+ <Select v-model="exerciseScope">
|
|
|
+ <Option v-for="(item,index) in scopeList" :value="index" :key="index">{{ item }}</Option>
|
|
|
+ </Select>
|
|
|
</div>
|
|
|
-
|
|
|
- <!-- 补救的富文本部分 -->
|
|
|
- <div class="exersices-analysis">
|
|
|
- <IconText :text="'补救资源'" :color="'#2892DD'" :icon="'md-list'" style="margin-bottom:10px"></IconText>
|
|
|
- <div>
|
|
|
- <div ref="repairEditor" style="text-align:left"></div>
|
|
|
+ <div class="exersices-attr my-radio-style">
|
|
|
+ <IconText :text="'关联认知层次'" :color="'#00b8ff'" :icon="'md-planet'"></IconText>
|
|
|
+ <Select v-model="exerciseField">
|
|
|
+ <Option v-for="(item,index) in fieldList" :value="index" :key="index">{{ item }}</Option>
|
|
|
+ </Select>
|
|
|
+ </div>
|
|
|
+ <div class="exersices-attr my-radio-style">
|
|
|
+ <IconText :text="'关联知识点'" :color="'#00b8ff'" :icon="'md-infinite'"></IconText>
|
|
|
+ <Button type="info" style="margin-top:20px" @click="selectPointsModal = true" v-if="exercisePoints.length === 0">选择知识点</Button>
|
|
|
+ <div v-else style="margin-top:10px">
|
|
|
+ <span v-for="(item,index) in exercisePoints" :key="index" class="exercise-item-point">
|
|
|
+ {{item.name}}
|
|
|
+ <span class="exercise-item-point-close"><Icon type="md-close" @click="onDeletePoint(index)" /></span>
|
|
|
+ </span>
|
|
|
+ <span class="exercise-item-point-modify" @click="selectPointsModal = true">修改</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <div class="save-wrap display-flex">
|
|
|
- <Button type="success" @click="getContent(exersicesType)">保存</Button>
|
|
|
+ </div>
|
|
|
+ <div class="exersices-attr display-flex">
|
|
|
+ <div class="exersices-attr-type my-radio-style" style="width:50%">
|
|
|
+ <IconText :text="'选择题型'" :color="'#00b8ff'" :icon="'md-pricetags'"></IconText>
|
|
|
+ <RadioGroup v-model="exersicesType" type="button" @on-change="typeChange">
|
|
|
+ <Radio label="Single" :disabled="isEdit">单选</Radio>
|
|
|
+ <Radio label="Multiple" :disabled="isEdit">多选</Radio>
|
|
|
+ <Radio label="Judge" :disabled="isEdit">判断</Radio>
|
|
|
+ <Radio label="Complete" :disabled="isEdit">填空</Radio>
|
|
|
+ <Radio label="Subjective" :disabled="isEdit">问答</Radio>
|
|
|
+ <Radio label="Compose" :disabled="isEdit">综合</Radio>
|
|
|
+ </RadioGroup>
|
|
|
+ </div>
|
|
|
+ <div class="exersices-attr-diff edit-exersices-attr-diff my-radio-style">
|
|
|
+ <IconText :text="'题目难度'" :color="'#00b8ff'" :icon="'md-pulse'"></IconText>
|
|
|
+ <RadioGroup v-model="exersicesDiff" type="button" ref="diffRef">
|
|
|
+ <Radio label="1" @click.native="diffChange($event,'1')">容易</Radio>
|
|
|
+ <Radio label="2" @click.native="diffChange($event,'2')">较易</Radio>
|
|
|
+ <Radio label="3" @click.native="diffChange($event,'3')">一般</Radio>
|
|
|
+ <Radio label="4" @click.native="diffChange($event,'4')">较难</Radio>
|
|
|
+ <Radio label="5" @click.native="diffChange($event,'5')">困难</Radio>
|
|
|
+ </RadioGroup>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <BaseSingle v-if="exersicesType==='Single'" ref="single" :editItem="editInfo"></BaseSingle>
|
|
|
+ <BaseMultiple v-else-if="exersicesType==='Multiple'" ref="multiple" :editInfo="editInfo"></BaseMultiple>
|
|
|
+ <BaseJudge v-else-if="exersicesType==='Judge'" ref="judge" :editInfo="editInfo"></BaseJudge>
|
|
|
+ <BaseCompletion v-else-if="exersicesType==='Complete'" ref="complete" :editInfo="editInfo"></BaseCompletion>
|
|
|
+ <BaseSubjective v-else-if="exersicesType==='Subjective'" ref="subjective" :editInfo="editInfo"></BaseSubjective>
|
|
|
+
|
|
|
+ <!-- 解析的富文本部分 -->
|
|
|
+ <div class="exersices-analysis">
|
|
|
+ <IconText :text="'解析'" :color="'#2892DD'" :icon="'md-list'" style="margin-bottom:10px;"></IconText>
|
|
|
+ <div>
|
|
|
+ <div ref="analysisEditor" style="text-align:left"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 补救的富文本部分 -->
|
|
|
+ <div class="exersices-analysis">
|
|
|
+ <IconText :text="'补救资源'" :color="'#2892DD'" :icon="'md-list'" style="margin-bottom:10px"></IconText>
|
|
|
+ <Button type="info" class="btn-relate-content" @click="isRelatedContent = true">关联内容</Button>
|
|
|
+ <div>
|
|
|
+ <div ref="repairEditor" style="text-align:left"></div>
|
|
|
</div>
|
|
|
+ <!-- 显示关联的内容 -->
|
|
|
+ <div v-for="item in relateFileList" :key="item.id" style="margin:10px 0">
|
|
|
+ <span><Icon type="md-checkmark" color="#1BC6B0" size="20" /></span>
|
|
|
+ <span style="margin-left:10px">{{ item.fileName }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="save-wrap display-flex">
|
|
|
+ <Button type="success" @click="getContent(exersicesType)">保存</Button>
|
|
|
+ </div>
|
|
|
|
|
|
<Modal v-model="selectPointsModal"
|
|
|
title="选择知识点"
|
|
@@ -109,6 +115,18 @@
|
|
|
</div>
|
|
|
</Modal>
|
|
|
|
|
|
+ <!-- 关联内容弹窗 -->
|
|
|
+ <Modal v-model="isRelatedContent" width="880" footer-hide class="relate-modal related-modal">
|
|
|
+ <div class="modal-header" slot="header">内容关联</div>
|
|
|
+ <ChooseContent :showSyllabus="isFalse"
|
|
|
+ :showOther="isFalse"
|
|
|
+ :showQuestion="isFalse"
|
|
|
+ @on-select-file="onSelectFile"
|
|
|
+ @on-cancel-file="onSelectFile"></ChooseContent>
|
|
|
+
|
|
|
+ <Button class="modal-btn" :loading="isLoading" @click="onConfirmRelate">确认</Button>
|
|
|
+ </Modal>
|
|
|
+
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
@@ -120,15 +138,19 @@
|
|
|
import BaseJudge from '@/view/evaluation/types/BaseJudge.vue'
|
|
|
import BaseSubjective from '@/view/evaluation/types/BaseSubjective.vue'
|
|
|
import BasePoints from '@/view/evaluation/components/BasePoints'
|
|
|
+ import ChooseContent from '@/components/learnactivity/ChooseContent'
|
|
|
import E from 'wangeditor'
|
|
|
|
|
|
export default {
|
|
|
props:['exerciseItem','refId'],
|
|
|
components: {
|
|
|
- IconText, BaseSingle, BaseJudge, BaseMultiple, BaseCompletion, BaseSubjective, BasePoints
|
|
|
+ IconText, BaseSingle, BaseJudge, BaseMultiple, BaseCompletion, BaseSubjective, BasePoints, ChooseContent
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ isFalse: false,
|
|
|
+ isLoading:false,
|
|
|
+ isRelatedContent:false,
|
|
|
selectPointsModal: false,
|
|
|
isEdit: false,
|
|
|
editInfo: {},
|
|
@@ -145,6 +167,7 @@
|
|
|
periodList: [],
|
|
|
gradeList: [],
|
|
|
subjectList: [],
|
|
|
+ relateFileList:[],
|
|
|
exersicesDiff: 0,
|
|
|
analysisContent: '',
|
|
|
repairContent: '',
|
|
@@ -167,6 +190,15 @@
|
|
|
})
|
|
|
},
|
|
|
|
|
|
+ onSelectFile(val) {
|
|
|
+ this.relateFileList = val.files
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ onConfirmRelate() {
|
|
|
+ this.isRelatedContent = false
|
|
|
+ },
|
|
|
+
|
|
|
getContent: function (type) {
|
|
|
let exerciseItem = this.editInfo
|
|
|
switch (type) {
|
|
@@ -210,6 +242,7 @@
|
|
|
exerciseItem.id = this.editInfo.id ? this.editInfo.id : ''
|
|
|
exerciseItem.explain = this.analysisContent
|
|
|
exerciseItem.repair = this.repairContent
|
|
|
+ exerciseItem.repairResource = this.relateFileList
|
|
|
exerciseItem.field = this.fieldList[this.exerciseField]
|
|
|
exerciseItem.points = this.exercisePoints.map(item => item.id)
|
|
|
exerciseItem.periodCode = this.schoolInfo.period[this.exercisePeriod].periodCode
|
|
@@ -385,7 +418,7 @@
|
|
|
this.exerciseSubject = this.subjectList.map(item => item.subjectCode).indexOf(editItem.subjectCode)
|
|
|
|
|
|
this.stemContent = editItem.question
|
|
|
-
|
|
|
+ this.relateFileList = editItem.repairResource || []
|
|
|
this.optionsContent = editItem.option
|
|
|
this.analysisContent = editItem.explain
|
|
|
this.repairContent = editItem.repair
|
|
@@ -457,4 +490,73 @@
|
|
|
line-height:38px;
|
|
|
height:38px;
|
|
|
}
|
|
|
-</style>
|
|
|
+
|
|
|
+ .related-point-modal .ivu-modal-content {
|
|
|
+ font-family: '微軟正黑體', 'Heiti TC';
|
|
|
+ }
|
|
|
+
|
|
|
+ .related-point-modal .ivu-modal-header-inner {
|
|
|
+ font-weight: bold;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ .exersices-attr .ivu-select-multiple .ivu-tag {
|
|
|
+ height: 32px;
|
|
|
+ line-height: 31px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .exersices-attr .ivu-select-multiple .ivu-tag i {
|
|
|
+ top: 9px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .exersices-attr .ivu-select-multiple .ivu-select-selection .ivu-select-placeholder {
|
|
|
+ line-height: 38px;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* 修改iview Modal样式 */
|
|
|
+
|
|
|
+ .related-modal .ivu-modal-content {
|
|
|
+ background: #3c3c3c;
|
|
|
+ overflow: hidden;
|
|
|
+ color: #fff;
|
|
|
+ font-family: '微軟正黑體', 'Heiti TC' !important;
|
|
|
+ }
|
|
|
+
|
|
|
+ .related-modal .ivu-modal-body {
|
|
|
+ height: 400px;
|
|
|
+ padding: 20px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .related-modal .ivu-modal-body {
|
|
|
+ height: 700px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .related-modal .ivu-modal-header {
|
|
|
+ border-bottom: none;
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: bold;
|
|
|
+ padding: 25px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .related-modal .modal-content {
|
|
|
+ padding: 0 35px 30px 35px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .related-modal .modal-btn {
|
|
|
+ margin-left: 2%;
|
|
|
+ width: 96%;
|
|
|
+ height: 40px;
|
|
|
+ background: rgb(11, 151, 117);
|
|
|
+ border: none;
|
|
|
+ color: #fff;
|
|
|
+ margin-top: 30px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .related-modal .choose-content {
|
|
|
+ height: 85%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn-relate-content {
|
|
|
+ right:0;
|
|
|
+ }
|
|
|
+</style>
|