|
@@ -3,15 +3,15 @@
|
|
<div class="ev-header">
|
|
<div class="ev-header">
|
|
<Icon type="md-bookmarks" size="30" color="rgb(16, 171, 231)" />
|
|
<Icon type="md-bookmarks" size="30" color="rgb(16, 171, 231)" />
|
|
<span class="ev-title">题库列表</span>
|
|
<span class="ev-title">题库列表</span>
|
|
- <span class="ev-length">共 {{exerciseList.length}} 道题</span>
|
|
|
|
|
|
+ <span class="ev-length">共 {{totalNum}} 道题</span>
|
|
</div>
|
|
</div>
|
|
<!-- 筛选部分 -->
|
|
<!-- 筛选部分 -->
|
|
<div class="filter-wrap">
|
|
<div class="filter-wrap">
|
|
<div class="filter-item">
|
|
<div class="filter-item">
|
|
<span class="filter-title">来源:</span>
|
|
<span class="filter-title">来源:</span>
|
|
<RadioGroup v-model="filterOrigin" type="button" @on-change="filterOriginChange">
|
|
<RadioGroup v-model="filterOrigin" type="button" @on-change="filterOriginChange">
|
|
- <Radio label="self">私有题库</Radio>
|
|
|
|
- <Radio label="school">学校公用库</Radio>
|
|
|
|
|
|
+ <Radio :label="userId">私有题库</Radio>
|
|
|
|
+ <Radio :label="schoolCode">学校公用库</Radio>
|
|
</RadioGroup>
|
|
</RadioGroup>
|
|
</div>
|
|
</div>
|
|
<div class="filter-item">
|
|
<div class="filter-item">
|
|
@@ -49,11 +49,7 @@
|
|
<span class="filter-title">难度:</span>
|
|
<span class="filter-title">难度:</span>
|
|
<CheckboxGroup v-model="filterDiff" border @on-change="filterDiffChange">
|
|
<CheckboxGroup v-model="filterDiff" border @on-change="filterDiffChange">
|
|
<Checkbox label="all">全部</Checkbox>
|
|
<Checkbox label="all">全部</Checkbox>
|
|
- <Checkbox label="0">容易</Checkbox>
|
|
|
|
- <Checkbox label="1">较易</Checkbox>
|
|
|
|
- <Checkbox label="2">一般</Checkbox>
|
|
|
|
- <Checkbox label="3">较难</Checkbox>
|
|
|
|
- <Checkbox label="4">困难</Checkbox>
|
|
|
|
|
|
+ <Checkbox v-for="(item,index) in exersicesDiff" :key="index" :label="index + 1">{{ item }}</Checkbox>
|
|
</CheckboxGroup>
|
|
</CheckboxGroup>
|
|
</div>
|
|
</div>
|
|
<div class="filter-item">
|
|
<div class="filter-item">
|
|
@@ -70,8 +66,8 @@
|
|
<div class="filter-item">
|
|
<div class="filter-item">
|
|
<span class="filter-title">排序:</span>
|
|
<span class="filter-title">排序:</span>
|
|
<RadioGroup v-model="filterSort" type="button" @on-change="filterSortChange">
|
|
<RadioGroup v-model="filterSort" type="button" @on-change="filterSortChange">
|
|
- <Radio label="0">新增时间<Icon type="md-arrow-round-down" /></Radio>
|
|
|
|
- <Radio label="1">使用次数<Icon type="md-arrow-round-down" /></Radio>
|
|
|
|
|
|
+ <Radio label="createTime">新增时间<Icon type="md-arrow-round-down" /></Radio>
|
|
|
|
+ <Radio label="usageCount">使用次数<Icon type="md-arrow-round-down" /></Radio>
|
|
</RadioGroup>
|
|
</RadioGroup>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -91,9 +87,8 @@
|
|
<span style="margin-top:15px;color:#808080">暂无数据</span>
|
|
<span style="margin-top:15px;color:#808080">暂无数据</span>
|
|
</div>
|
|
</div>
|
|
<div class="content-wrap" v-else>
|
|
<div class="content-wrap" v-else>
|
|
- <Loading v-show="importLoading"></Loading>
|
|
|
|
-
|
|
|
|
- <div class="exercise-item" v-for="(item,index) of exerciseList" :key="index">
|
|
|
|
|
|
+ <Loading :top="100" v-show="dataLoading" type="1"></Loading>
|
|
|
|
+ <div class="exercise-item" v-for="(item,index) of exerciseList" :key="index" @click="onQuestionToggle(index,item.id,$event)">
|
|
<!-- 题目难度类型以及绑定知识点 -->
|
|
<!-- 题目难度类型以及绑定知识点 -->
|
|
<!--<div class="item-types">
|
|
<!--<div class="item-types">
|
|
<span class="item-difficulty" :style="{backgroundColor:diffColors[item.difficulty || 3]}">{{exersicesDiff[item.difficulty || 3]}}</span>
|
|
<span class="item-difficulty" :style="{backgroundColor:diffColors[item.difficulty || 3]}">{{exersicesDiff[item.difficulty || 3]}}</span>
|
|
@@ -111,19 +106,18 @@
|
|
</span>
|
|
</span>
|
|
</div>-->
|
|
</div>-->
|
|
<!-- 题干部分 -->
|
|
<!-- 题干部分 -->
|
|
- <div class="item-question" @click="onQuestionToggle(index)">
|
|
|
|
- <p>{{index+1}} : <span v-html="item.question"></span></p>
|
|
|
|
|
|
+ <div class="item-question" style="pointer-events:none">
|
|
|
|
+ <p>{{ pageSize * (pageNum - 1) + index + 1 }} : <span v-html="item.question"></span></p>
|
|
<span class="item-btn-toggle">
|
|
<span class="item-btn-toggle">
|
|
<Icon :type="collapseList.indexOf(index) > -1 ? 'ios-arrow-dropup' : 'ios-arrow-dropdown'" />
|
|
<Icon :type="collapseList.indexOf(index) > -1 ? 'ios-arrow-dropup' : 'ios-arrow-dropdown'" />
|
|
</span>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
+ <!-- 选项部分 -->
|
|
|
|
+ <div v-for="(option,optionIndex) in item.option" :key="optionIndex" class="item-options" style="pointer-events:none">
|
|
|
|
+ <p class="item-option-content">{{String.fromCharCode(64 + parseInt(optionIndex+1))}} : <span v-html="option.value"></span></p>
|
|
|
|
+ </div>
|
|
<transition name="slide">
|
|
<transition name="slide">
|
|
- <div v-show="collapseList.indexOf(index) > -1">
|
|
|
|
- <!-- 选项部分 -->
|
|
|
|
- <div v-for="(option,optionIndex) in item.option" :key="optionIndex" class="item-options">
|
|
|
|
- <p>{{String.fromCharCode(64 + parseInt(optionIndex+1))}} : <span v-html="option.value"></span></p>
|
|
|
|
- </div>
|
|
|
|
-
|
|
|
|
|
|
+ <div v-show="collapseList.indexOf(index) > -1" class="toggle-area">
|
|
<!-- 如果是组合题 -->
|
|
<!-- 如果是组合题 -->
|
|
<div v-for="(childQuestion,childIndex) in item.children" :key="childIndex">
|
|
<div v-for="(childQuestion,childIndex) in item.children" :key="childIndex">
|
|
<div v-if="item.children.length">
|
|
<div v-if="item.children.length">
|
|
@@ -141,16 +135,15 @@
|
|
</div>
|
|
</div>
|
|
<div class="item-explain" v-show="isShowAnswer">
|
|
<div class="item-explain" v-show="isShowAnswer">
|
|
<span style="color:#01b4ef">【解析】:</span>
|
|
<span style="color:#01b4ef">【解析】:</span>
|
|
- <span v-html="childQuestion.explain"></span>
|
|
|
|
|
|
+ <span v-html="childQuestion.explain || '暂无解析'"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- 组合题结束 -->
|
|
<!-- 组合题结束 -->
|
|
<!-- 答案展示部分 -->
|
|
<!-- 答案展示部分 -->
|
|
- <div class="item-answer" v-show="isShowAnswer">
|
|
|
|
- <span class="answer-title-line"></span>
|
|
|
|
- <span class="answer-title" @click="showAnswer($event,'answer')">答案:点击展开答案详情</span>
|
|
|
|
- <div class="item-answer-details">
|
|
|
|
|
|
+ <div class="item-explain" v-show="isShowAnswer">
|
|
|
|
+ <span class="explain-title">【答案】</span>
|
|
|
|
+ <div class="item-explain-details">
|
|
<span v-html="item.answer" v-if="item.type === 'Subjective'"></span>
|
|
<span v-html="item.answer" v-if="item.type === 'Subjective'"></span>
|
|
<span :class="[ item.type === 'Complete' ? 'item-answer-item':'']" v-for="(answer,index) in item.answer" :key="index" v-else-if="item.type === 'Complete'" v-html="answer"></span>
|
|
<span :class="[ item.type === 'Complete' ? 'item-answer-item':'']" v-for="(answer,index) in item.answer" :key="index" v-else-if="item.type === 'Complete'" v-html="answer"></span>
|
|
<span :class="[ item.type === 'Complete' ? 'item-answer-item':'']" v-for="(answer,index) in item.answer" :key="index" v-else>{{answer}}</span>
|
|
<span :class="[ item.type === 'Complete' ? 'item-answer-item':'']" v-for="(answer,index) in item.answer" :key="index" v-else>{{answer}}</span>
|
|
@@ -158,19 +151,39 @@
|
|
</div>
|
|
</div>
|
|
<!-- 解析部分 -->
|
|
<!-- 解析部分 -->
|
|
<div class="item-explain" v-show="isShowAnswer">
|
|
<div class="item-explain" v-show="isShowAnswer">
|
|
- <span class="explain-title-line"></span>
|
|
|
|
- <span class="explain-title" @click="showAnswer($event,'explain')">解析:点击展开解析详情</span>
|
|
|
|
|
|
+ <span class="explain-title">【解析】</span>
|
|
|
|
+ <div class="item-explain-details">
|
|
|
|
+ <span v-html="item.explain || '暂无解析'"></span>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <!-- 知识点部分 -->
|
|
|
|
+ <div class="item-explain" v-show="isShowAnswer">
|
|
|
|
+ <span class="explain-title">【知识点】</span>
|
|
<div class="item-explain-details">
|
|
<div class="item-explain-details">
|
|
- <span v-html="item.explain"></span>
|
|
|
|
|
|
+ <span v-html="item.points.length ? item.points : '暂未绑定知识点'"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- 底部题目操作栏 -->
|
|
<!-- 底部题目操作栏 -->
|
|
<div class="item-tools">
|
|
<div class="item-tools">
|
|
- <span class="item-tools-info">来源:浙江省温州市2019年中考数学试卷</span>
|
|
|
|
- <span class="item-tools-info">使用次数:98 次</span>
|
|
|
|
- <span class="item-tools-info" style="border:0">更新时间:2019-07-01</span>
|
|
|
|
|
|
+ <span class="item-tools-info">题型:{{ exersicesType[item.type] }}</span>
|
|
|
|
+ <span class="item-tools-info">难度:{{ exersicesDiff[item.level] }}</span>
|
|
|
|
+ <span class="item-tools-info">使用次数:{{ item.usageCount }} 次</span>
|
|
|
|
+ <span class="item-tools-info" style="border:0">更新时间:{{ formatDateTime(new Date(item.createTime * 1000)) }}</span>
|
|
<!--<Button type="info" :style="{backgroundColor:basketList.all.indexOf(item) > -1 ? '#bbbbbb' : ''}" @click="handleChoose(item)">{{basketList.all.indexOf(item) > -1 ? '已选入' : '选题'}} </Button>-->
|
|
<!--<Button type="info" :style="{backgroundColor:basketList.all.indexOf(item) > -1 ? '#bbbbbb' : ''}" @click="handleChoose(item)">{{basketList.all.indexOf(item) > -1 ? '已选入' : '选题'}} </Button>-->
|
|
|
|
+
|
|
<Button type="primary" @click="handleEdit(item)" style="margin-right:10px">编辑题目</Button>
|
|
<Button type="primary" @click="handleEdit(item)" style="margin-right:10px">编辑题目</Button>
|
|
|
|
+ <div class="item-tools-action">
|
|
|
|
+ <Icon type="md-bookmarks" />绑定知识点
|
|
|
|
+ </div>
|
|
|
|
+ <div class="item-tools-action">
|
|
|
|
+ <Icon type="md-school" />认知层次
|
|
|
|
+ </div>
|
|
|
|
+ <div class="item-tools-action">
|
|
|
|
+ <Icon type="md-trash" />删除
|
|
|
|
+ </div>
|
|
|
|
+ <div class="item-tools-action">
|
|
|
|
+ <Icon type="md-create" />编辑
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</transition>
|
|
</transition>
|
|
@@ -191,16 +204,17 @@
|
|
</template>
|
|
</template>
|
|
<script>
|
|
<script>
|
|
import Loading from '@/common/Loading.vue'
|
|
import Loading from '@/common/Loading.vue'
|
|
- import CreateLink from '@/common/CreateLink.vue'
|
|
|
|
import { setTimeout } from 'core-js'
|
|
import { setTimeout } from 'core-js'
|
|
export default {
|
|
export default {
|
|
components: {
|
|
components: {
|
|
- Loading,
|
|
|
|
- CreateLink
|
|
|
|
|
|
+ Loading
|
|
},
|
|
},
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
- exerciseList:[],
|
|
|
|
|
|
+ userId: 'habook0001',
|
|
|
|
+ schoolCode: '',
|
|
|
|
+ dataLoading: false,
|
|
|
|
+ exerciseList: [],
|
|
schoolInfo: {},
|
|
schoolInfo: {},
|
|
isShowUploadList: false,
|
|
isShowUploadList: false,
|
|
exersicesType: {
|
|
exersicesType: {
|
|
@@ -214,156 +228,300 @@
|
|
exersicesDiff: ['容易', '较易', '一般', '较难', '困难'],
|
|
exersicesDiff: ['容易', '较易', '一般', '较难', '困难'],
|
|
diffColors: ['#32CF74', '#E8BE15', '#F19300', '#EB5E00', '#D30000'],
|
|
diffColors: ['#32CF74', '#E8BE15', '#F19300', '#EB5E00', '#D30000'],
|
|
filterType: ['all'],
|
|
filterType: ['all'],
|
|
- filterOrigin: 'self',
|
|
|
|
|
|
+ filterOrigin: 'habook0001',
|
|
filterDiff: ['all'],
|
|
filterDiff: ['all'],
|
|
filterField: ['all'],
|
|
filterField: ['all'],
|
|
- filterSort: '0',
|
|
|
|
- filterPeriod:0,
|
|
|
|
|
|
+ filterSort: 'createTime',
|
|
|
|
+ filterPeriod: 0,
|
|
filterGrade: [false],
|
|
filterGrade: [false],
|
|
- filterSubject:[false],
|
|
|
|
- totalNum: 100,
|
|
|
|
|
|
+ filterSubject: [false],
|
|
|
|
+ totalNum: 0,
|
|
isShowAnswer: true,
|
|
isShowAnswer: true,
|
|
importLoading: false,
|
|
importLoading: false,
|
|
pageSize: 5,
|
|
pageSize: 5,
|
|
pageNum: 1,
|
|
pageNum: 1,
|
|
|
|
+ currentPage:1,
|
|
collapseList: [],
|
|
collapseList: [],
|
|
periodList: [],
|
|
periodList: [],
|
|
gradeList: [],
|
|
gradeList: [],
|
|
- subjectList: []
|
|
|
|
|
|
+ subjectList: [],
|
|
|
|
+ filterParams: {}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
created() {
|
|
created() {
|
|
this.getSchoolInfo()
|
|
this.getSchoolInfo()
|
|
- this.getExerciseList({
|
|
|
|
- '@OFFSET': this.pageNum,
|
|
|
|
- '@LIMIT': this.pageSize
|
|
|
|
|
|
|
|
- })
|
|
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
/** 获取区班校信息 */
|
|
/** 获取区班校信息 */
|
|
getSchoolInfo() {
|
|
getSchoolInfo() {
|
|
this.$store.dispatch('schoolBaseInfo/getSchoolBaseData').then(res => {
|
|
this.$store.dispatch('schoolBaseInfo/getSchoolBaseData').then(res => {
|
|
this.schoolInfo = JSON.parse(JSON.stringify(res.data))
|
|
this.schoolInfo = JSON.parse(JSON.stringify(res.data))
|
|
|
|
+ this.schoolCode = res.data.schoolCode
|
|
this.periodList = res.data.period
|
|
this.periodList = res.data.period
|
|
this.gradeList = res.data.period[0].grades
|
|
this.gradeList = res.data.period[0].grades
|
|
this.subjectList = res.data.period[0].subjects
|
|
this.subjectList = res.data.period[0].subjects
|
|
|
|
+ this.doFilter();
|
|
})
|
|
})
|
|
},
|
|
},
|
|
|
|
|
|
- // 获取最新题库列表
|
|
|
|
|
|
+ /** 执行筛选条件获取数据 */
|
|
|
|
+ doFilter() {
|
|
|
|
+ this.dataLoading = true
|
|
|
|
+ this.collapseList = [] // 所有详情都收起来
|
|
|
|
+ /** 定义查询接口的参数规格 */
|
|
|
|
+ this.filterParams = {
|
|
|
|
+ '@CURRPAGE': this.pageNum,
|
|
|
|
+ '@PAGESIZE': this.pageSize,
|
|
|
|
+ '@DESC': this.filterSort,
|
|
|
|
+ 'scopeCode': this.filterOrigin,
|
|
|
|
+ 'period': [this.periodList[this.filterPeriod].periodCode],
|
|
|
|
+ 'grade': this.deleteFalse(this.filterGrade),
|
|
|
|
+ 'subject': this.deleteFalse(this.filterSubject),
|
|
|
|
+ 'scopeCode': this.filterOrigin,
|
|
|
|
+ 'level': this.deleteFalse(this.filterDiff),
|
|
|
|
+ 'type': this.deleteFalse(this.filterType),
|
|
|
|
+ 'field': this.deleteFalse(this.filterField),
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /** 查询总数参数 */
|
|
|
|
+ let findCountParams = {
|
|
|
|
+ "collectionName": "ExamItem",
|
|
|
|
+ "queryDict": {
|
|
|
|
+ 'scopeCode': this.filterOrigin,
|
|
|
|
+ 'period': [this.periodList[this.filterPeriod].periodCode],
|
|
|
|
+ 'grade': this.deleteFalse(this.filterGrade),
|
|
|
|
+ 'subject': this.deleteFalse(this.filterSubject),
|
|
|
|
+ 'scopeCode': this.filterOrigin,
|
|
|
|
+ 'level': this.deleteFalse(this.filterDiff),
|
|
|
|
+ 'type': this.deleteFalse(this.filterType),
|
|
|
|
+ 'field': this.deleteFalse(this.filterField),
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ this.getExerciseList(this.filterParams)
|
|
|
|
+ this.getResultCount(findCountParams)
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取最新题库列表
|
|
|
|
+ * @param data
|
|
|
|
+ */
|
|
getExerciseList(data) {
|
|
getExerciseList(data) {
|
|
|
|
+ let that = this
|
|
this.$api.newEvaluation.FindExerciseList(data).then(res => {
|
|
this.$api.newEvaluation.FindExerciseList(data).then(res => {
|
|
this.exerciseList = res.result.data
|
|
this.exerciseList = res.result.data
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ that.dataLoading = false
|
|
|
|
+ }, 1000)
|
|
})
|
|
})
|
|
},
|
|
},
|
|
|
|
|
|
- // 筛选学段条件
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 获取筛选结果数量
|
|
|
|
+ * @param data
|
|
|
|
+ */
|
|
|
|
+ getResultCount(data) {
|
|
|
|
+ this.$api.newEvaluation.FindCount(data).then(res => {
|
|
|
|
+ this.totalNum = res.result.data[0]
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 根据ID获取试题详细数据
|
|
|
|
+ * @param id 试题ID
|
|
|
|
+ */
|
|
|
|
+ getDetailsById(id, index) {
|
|
|
|
+ this.$api.newEvaluation.FindExerciseById(id).then(res => {
|
|
|
|
+ /* 查询到详细数据则替换掉原数据 */
|
|
|
|
+ this.exerciseList.splice(index, 1, res.result.data)
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 题干展开与收缩
|
|
|
|
+ * @param index
|
|
|
|
+ * @param id
|
|
|
|
+ */
|
|
|
|
+ onQuestionToggle(index, id, e) {
|
|
|
|
+ e.stopPropagation();
|
|
|
|
+ let listIndex = this.collapseList.indexOf(index)
|
|
|
|
+ if (listIndex > -1) {
|
|
|
|
+ this.collapseList.splice(listIndex, 1)
|
|
|
|
+ } else {
|
|
|
|
+ this.collapseList.push(index)
|
|
|
|
+ if (!this.exerciseList[index].answer.length) this.getDetailsById(id, index)
|
|
|
|
+ }
|
|
|
|
+ this.pageScrollTo(e.target.offsetTop + 490) // 490就是 content-wrap 距离顶部高度
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 筛选学段条件
|
|
|
|
+ * @param val
|
|
|
|
+ */
|
|
filterPeriodChange(val) {
|
|
filterPeriodChange(val) {
|
|
|
|
+ //this.filterPeriod = this.periodList[val].periodCode
|
|
this.gradeList = this.schoolInfo.period[val].grades
|
|
this.gradeList = this.schoolInfo.period[val].grades
|
|
this.subjectList = this.schoolInfo.period[val].subjects
|
|
this.subjectList = this.schoolInfo.period[val].subjects
|
|
this.filterGrade = [false]
|
|
this.filterGrade = [false]
|
|
this.filterSubject = [false]
|
|
this.filterSubject = [false]
|
|
|
|
+ this.pageChange(1)
|
|
},
|
|
},
|
|
|
|
|
|
- // 筛选年级
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 筛选年级
|
|
|
|
+ * @param val
|
|
|
|
+ */
|
|
filterGradeChange(val) {
|
|
filterGradeChange(val) {
|
|
if (val !== [false] && val.indexOf(false) === 0) {
|
|
if (val !== [false] && val.indexOf(false) === 0) {
|
|
this.filterGrade.splice(val.indexOf(false), 1)
|
|
this.filterGrade.splice(val.indexOf(false), 1)
|
|
} else if (val.indexOf(false) > 0) {
|
|
} else if (val.indexOf(false) > 0) {
|
|
this.filterGrade = [false]
|
|
this.filterGrade = [false]
|
|
}
|
|
}
|
|
|
|
+ this.pageChange(1)
|
|
},
|
|
},
|
|
|
|
|
|
- // 筛选科目
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 筛选科目
|
|
|
|
+ * @param val
|
|
|
|
+ */
|
|
filterSubjectChange(val) {
|
|
filterSubjectChange(val) {
|
|
if (val !== [false] && val.indexOf(false) === 0) {
|
|
if (val !== [false] && val.indexOf(false) === 0) {
|
|
this.filterSubject.splice(val.indexOf(false), 1)
|
|
this.filterSubject.splice(val.indexOf(false), 1)
|
|
} else if (val.indexOf(false) > 0) {
|
|
} else if (val.indexOf(false) > 0) {
|
|
this.filterSubject = [false]
|
|
this.filterSubject = [false]
|
|
}
|
|
}
|
|
|
|
+ this.pageChange(1)
|
|
},
|
|
},
|
|
|
|
|
|
- // 根据题库加载题目
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 根据题库加载题目
|
|
|
|
+ * @param val
|
|
|
|
+ */
|
|
filterOriginChange(origin) {
|
|
filterOriginChange(origin) {
|
|
- console.log(origin)
|
|
|
|
|
|
+ this.filterOrigin = origin
|
|
|
|
+ this.pageChange(1)
|
|
|
|
+
|
|
},
|
|
},
|
|
|
|
|
|
- // 筛选题型
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 筛选题型
|
|
|
|
+ * @param val
|
|
|
|
+ */
|
|
filterTypeChange(val) {
|
|
filterTypeChange(val) {
|
|
if (val !== ['all'] && val.indexOf('all') === 0) {
|
|
if (val !== ['all'] && val.indexOf('all') === 0) {
|
|
this.filterType.splice(val.indexOf('all'), 1)
|
|
this.filterType.splice(val.indexOf('all'), 1)
|
|
} else if (val.indexOf('all') > 0) {
|
|
} else if (val.indexOf('all') > 0) {
|
|
this.filterType = ['all']
|
|
this.filterType = ['all']
|
|
}
|
|
}
|
|
|
|
+ this.pageChange(1)
|
|
},
|
|
},
|
|
|
|
|
|
- // 筛选难度
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 筛选难度
|
|
|
|
+ * @param val
|
|
|
|
+ */
|
|
filterDiffChange(val) {
|
|
filterDiffChange(val) {
|
|
if (val !== ['all'] && val.indexOf('all') === 0) {
|
|
if (val !== ['all'] && val.indexOf('all') === 0) {
|
|
this.filterDiff.splice(val.indexOf('all'), 1)
|
|
this.filterDiff.splice(val.indexOf('all'), 1)
|
|
} else if (val.indexOf('all') > 0) {
|
|
} else if (val.indexOf('all') > 0) {
|
|
this.filterDiff = ['all']
|
|
this.filterDiff = ['all']
|
|
}
|
|
}
|
|
|
|
+ this.pageChange(1)
|
|
},
|
|
},
|
|
|
|
|
|
- // 筛选认知层次
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 筛选认知层次
|
|
|
|
+ * @param val
|
|
|
|
+ */
|
|
filterFieldChange(val) {
|
|
filterFieldChange(val) {
|
|
if (val !== ['all'] && val.indexOf('all') === 0) {
|
|
if (val !== ['all'] && val.indexOf('all') === 0) {
|
|
this.filterField.splice(val.indexOf('all'), 1)
|
|
this.filterField.splice(val.indexOf('all'), 1)
|
|
} else if (val.indexOf('all') > 0) {
|
|
} else if (val.indexOf('all') > 0) {
|
|
this.filterField = ['all']
|
|
this.filterField = ['all']
|
|
}
|
|
}
|
|
|
|
+ this.pageChange(1)
|
|
},
|
|
},
|
|
|
|
|
|
- // 排序条件更换
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 排序条件更换
|
|
|
|
+ * @param val
|
|
|
|
+ */
|
|
filterSortChange(val) {
|
|
filterSortChange(val) {
|
|
- console.log(val)
|
|
|
|
- },
|
|
|
|
-
|
|
|
|
- // 题干展开与收缩
|
|
|
|
- onQuestionToggle(index) {
|
|
|
|
- let listIndex = this.collapseList.indexOf(index)
|
|
|
|
- if (listIndex > -1) {
|
|
|
|
- this.collapseList.splice(listIndex, 1)
|
|
|
|
- } else {
|
|
|
|
- this.collapseList.push(index)
|
|
|
|
- }
|
|
|
|
|
|
+ this.pageChange(1)
|
|
},
|
|
},
|
|
|
|
|
|
- // 展开与收起答案
|
|
|
|
- showAnswer(e, type) {
|
|
|
|
- let el = e.currentTarget
|
|
|
|
- let isShow = e.currentTarget.nextElementSibling.style.display || 'none'
|
|
|
|
- setTimeout(function () {
|
|
|
|
- console.log(type)
|
|
|
|
- if (type === 'explain') {
|
|
|
|
- el.nextElementSibling.style.display = isShow !== 'none' ? 'none' : 'block'
|
|
|
|
- el.innerHTML = isShow !== 'none' ? '解析:点击收起解析详情' : '解析:点击展开解析详情'
|
|
|
|
- } else {
|
|
|
|
- el.nextElementSibling.style.display = isShow === 'none' ? 'block' : 'none'
|
|
|
|
- el.innerHTML = isShow !== 'none' ? '答案:点击收起答案详情' : '答案:点击展开答案详情'
|
|
|
|
- }
|
|
|
|
- }, 100)
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 删除筛选条件里面的False值与All值
|
|
|
|
+ * @param arr
|
|
|
|
+ */
|
|
|
|
+ deleteFalse(arr) {
|
|
|
|
+ let list = JSON.parse(JSON.stringify(arr))
|
|
|
|
+ list.forEach((item, index) => { if (!item || item === 'all') list.splice(index, 1) })
|
|
|
|
+ return list
|
|
},
|
|
},
|
|
|
|
|
|
|
|
+ /** 返回创建试题页面 */
|
|
goCreateExercise() {
|
|
goCreateExercise() {
|
|
this.$router.push({
|
|
this.$router.push({
|
|
name: 'createExercises'
|
|
name: 'createExercises'
|
|
})
|
|
})
|
|
},
|
|
},
|
|
|
|
|
|
- // 切换页码
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 切换页码操作
|
|
|
|
+ * @param page
|
|
|
|
+ */
|
|
pageChange(page) {
|
|
pageChange(page) {
|
|
- console.log(page)
|
|
|
|
|
|
+ this.pageNum = page
|
|
|
|
+ this.doFilter()
|
|
|
|
+ this.pageScrollTo(0)
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 页面滚动事件
|
|
|
|
+ * @param scrollDistance 页面滚动距离
|
|
|
|
+ */
|
|
|
|
+ pageScrollTo(scrollDistance) {
|
|
|
|
+ let parentVm = this.$parent.$parent.$parent
|
|
|
|
+ parentVm.$refs['evScroll'].scrollTo(
|
|
|
|
+ {
|
|
|
|
+ y: scrollDistance
|
|
|
|
+ },
|
|
|
|
+ 500, 'easeInQuad'
|
|
|
|
+ )
|
|
},
|
|
},
|
|
|
|
|
|
- // 切换分页Size
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 切换每页显示数量
|
|
|
|
+ * @param val
|
|
|
|
+ */
|
|
pageSizeChange(val) {
|
|
pageSizeChange(val) {
|
|
this.pageSize = val
|
|
this.pageSize = val
|
|
this.pageChange(1)
|
|
this.pageChange(1)
|
|
},
|
|
},
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 更新时间日期格式化
|
|
|
|
+ * @param date
|
|
|
|
+ */
|
|
|
|
+ formatDateTime(date) {
|
|
|
|
+ var y = date.getFullYear();
|
|
|
|
+ var m = date.getMonth() + 1;
|
|
|
|
+ m = m < 10 ? ('0' + m) : m;
|
|
|
|
+ var d = date.getDate();
|
|
|
|
+ d = d < 10 ? ('0' + d) : d;
|
|
|
|
+ var h = date.getHours();
|
|
|
|
+ h = h < 10 ? ('0' + h) : h;
|
|
|
|
+ var minute = date.getMinutes();
|
|
|
|
+ minute = minute < 10 ? ('0' + minute) : minute;
|
|
|
|
+ var second = date.getSeconds();
|
|
|
|
+ second = second < 10 ? ('0' + second) : second;
|
|
|
|
+ return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
|
|
|
|
+ },
|
|
|
|
+
|
|
// 编辑习题
|
|
// 编辑习题
|
|
handleEdit(item) {
|
|
handleEdit(item) {
|
|
item.options = item.option
|
|
item.options = item.option
|
|
@@ -429,14 +587,17 @@
|
|
width: 50px;
|
|
width: 50px;
|
|
height: 50px;
|
|
height: 50px;
|
|
}
|
|
}
|
|
|
|
+
|
|
.slide-enter-active {
|
|
.slide-enter-active {
|
|
- transition: all .3s ease;
|
|
|
|
|
|
+ transition: all .3s ease;
|
|
}
|
|
}
|
|
|
|
+
|
|
.slide-leave-active {
|
|
.slide-leave-active {
|
|
- transition: all .3s ease;
|
|
|
|
|
|
+ transition: all .3s ease;
|
|
}
|
|
}
|
|
- .slide-enter, .slide-leave-to{
|
|
|
|
- transform: translateY(10px);
|
|
|
|
- opacity: 0;
|
|
|
|
|
|
+
|
|
|
|
+ .slide-enter, .slide-leave-to {
|
|
|
|
+ transform: translateY(10px);
|
|
|
|
+ opacity: 0;
|
|
}
|
|
}
|
|
</style>
|
|
</style>
|