| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParam" ref="queryForm" :inline="true"> |
| | | <el-form-item label="题目ID:"> |
| | | <el-input v-model="queryParam.id" clearable></el-input> |
| | | <el-form-item> |
| | | <el-input v-model="queryParam.content" placeholder="请输入题目" clearable></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="题目内容:"> |
| | | <el-input v-model="queryParam.content" clearable></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="年级:"> |
| | | <el-select v-model="queryParam.level" placeholder="年级" @change="levelChange" clearable> |
| | | <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="学科:"> |
| | | <el-select v-model="queryParam.subjectId" clearable> |
| | | <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" |
| | | :label="item.name+' ( '+item.levelName+' )'"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="题型:"> |
| | | <el-select v-model="queryParam.questionType" clearable> |
| | | <el-option v-for="item in questionType" :key="item.key" :value="item.key" :label="item.value"></el-option> |
| | | <el-form-item> |
| | | <el-select v-model="queryParam.subjectId" placeholder="请选择科目" clearable multiple @change="search"> |
| | | <el-option v-for="item in subjects" :key="item.id" :value="item.id" :label="item.name"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="submitForm">查询</el-button> |
| | | <el-select v-model="queryParam.questionType" placeholder="请选择题型" clearable multiple @change="search"> |
| | | <el-option v-for="item in questionTypeEnum" :key="item.key" :value="item.key" :label="item.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-select v-model="queryParam.status" placeholder="请选择状态" clearable @change="search"> |
| | | <el-option value="1" label="启用"></el-option> |
| | | <el-option value="2" label="禁用"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="search">查询</el-button> |
| | | <el-popover placement="bottom" trigger="click"> |
| | | <el-button type="warning" size="mini" v-for="item in editUrlEnum" :key="item.key" |
| | | @click="$router.push({path:item.value})">{{item.name}} |
| | | @click="$router.push({ path: item.value })">{{ item.name }} |
| | | </el-button> |
| | | <el-button slot="reference" type="primary" class="link-left">添加</el-button> |
| | | </el-popover> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%"> |
| | | <el-table-column prop="id" label="Id" width="90px"/> |
| | | <el-table-column prop="subjectId" label="学科" :formatter="subjectFormatter" width="120px"/> |
| | | <el-table-column prop="questionType" label="题型" :formatter="questionTypeFormatter" width="70px"/> |
| | | <el-table-column prop="shortTitle" label="题干" show-overflow-tooltip/> |
| | | <el-table-column prop="score" label="分数" width="60px"/> |
| | | <el-table-column prop="difficult" label="难度" width="60px"/> |
| | | <el-table-column prop="createTime" label="创建时间" width="160px"/> |
| | | <el-table-column label="操作" align="center" width="220px"> |
| | | <el-table-column align="center" prop="shortTitle" label="题目" show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column align="center" prop="subjectName" label="科目" width="150px"> |
| | | </el-table-column> |
| | | <el-table-column align="center" prop="questionTypeName" label="题型" width="100px"> |
| | | </el-table-column> |
| | | <el-table-column align="center" prop="difficult" label="难度" width="100px" /> |
| | | <el-table-column align="center" prop="createTime" label="创建时间" width="160px" /> |
| | | <el-table-column align="center" prop="status" label="状态" width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-button size="mini" @click="showQuestion(row)">预览</el-button> |
| | | <el-button size="mini" @click="editQuestion(row)">编辑</el-button> |
| | | <el-button size="mini" type="danger" @click="deleteQuestion(row)" class="link-left">删除</el-button> |
| | | <el-tag :type="row.status === '禁用' ? 'danger' : 'success'"> |
| | | {{ row.status ? row.status : '启用' }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" align="center" width="300px"> |
| | | <template slot-scope="{row}"> |
| | | <el-button size="mini" @click="showQuestion(row)">预览</el-button> |
| | | <el-button size="mini" @click="editQuestion(row)">编辑</el-button> |
| | | <el-button size="mini" type="primary" @click="statusQuestion(row)"> |
| | | {{ row.status === "禁用" ? "启用" : "禁用" }} |
| | | </el-button> |
| | | <el-popconfirm title="确认删除吗" @confirm="deleteQuestion(row)"> |
| | | <el-button slot="reference" size="mini" type="danger" class="link-left">删除</el-button> |
| | | </el-popconfirm> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination v-show="total>0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize" |
| | | @pagination="search"/> |
| | | <pagination v-show="total > 0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize" |
| | | @pagination="search" /> |
| | | <el-dialog :visible.sync="questionShow.dialog" style="width: 100%;height: 100%"> |
| | | <QuestionShow :qType="questionShow.qType" :question="questionShow.question" :qLoading="questionShow.loading"/> |
| | | <QuestionShow :qType="questionShow.qType" :question="questionShow.question" :qLoading="questionShow.loading" /> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | |
| | | |
| | | export default { |
| | | components: { Pagination, QuestionShow }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | queryParam: { |
| | | id: null, |
| | |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | created() { |
| | | this.initSubject() |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | submitForm () { |
| | | statusQuestion(row) { |
| | | let question = { |
| | | id: row.id, |
| | | status: row.status === '禁用' ? '启用' : '禁用' |
| | | } |
| | | questionApi.updateStatus(question).then(re => { |
| | | if (re.code === 1) { |
| | | this.$message.success(re.message) |
| | | this.search() |
| | | } else { |
| | | this.$message.error(re.message) |
| | | } |
| | | }) |
| | | }, |
| | | submitForm() { |
| | | this.queryParam.pageIndex = 1 |
| | | this.search() |
| | | }, |
| | | search () { |
| | | search() { |
| | | this.listLoading = true |
| | | questionApi.pageList(this.queryParam).then(data => { |
| | | const re = data.data |
| | |
| | | this.listLoading = false |
| | | }) |
| | | }, |
| | | levelChange () { |
| | | levelChange() { |
| | | this.queryParam.subjectId = null |
| | | this.subjectFilter = this.subjects.filter(data => data.level === this.queryParam.level) |
| | | }, |
| | | addQuestion () { |
| | | addQuestion() { |
| | | this.$router.push('/exam/question/edit/singleChoice') |
| | | }, |
| | | showQuestion (row) { |
| | | showQuestion(row) { |
| | | let _this = this |
| | | this.questionShow.dialog = true |
| | | this.questionShow.loading = true |
| | | questionApi.select(row.id).then(re => { |
| | | _this.questionShow.qType = re.response.questionType |
| | | _this.questionShow.question = re.response |
| | | _this.questionShow.qType = re.data.questionType |
| | | _this.questionShow.question = re.data |
| | | _this.questionShow.loading = false |
| | | }) |
| | | }, |
| | | editQuestion (row) { |
| | | editQuestion(row) { |
| | | let url = this.enumFormat(this.editUrlEnum, row.questionType) |
| | | this.$router.push({ path: url, query: { id: row.id } }) |
| | | }, |
| | | deleteQuestion (row) { |
| | | deleteQuestion(row) { |
| | | let _this = this |
| | | questionApi.deleteQuestion(row.id).then(re => { |
| | | if (re.code === 1) { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | questionTypeFormatter (row, column, cellValue, index) { |
| | | questionTypeFormatter(row, column, cellValue, index) { |
| | | return this.enumFormat(this.questionType, cellValue) |
| | | }, |
| | | subjectFormatter (row, column, cellValue, index) { |
| | | subjectFormatter(row, column, cellValue, index) { |
| | | return this.subjectEnumFormat(cellValue) |
| | | }, |
| | | ...mapActions('exam', { initSubject: 'initSubject' }) |
| | |
| | | computed: { |
| | | ...mapGetters('enumItem', ['enumFormat']), |
| | | ...mapState('enumItem', { |
| | | questionTypeEnum: state => state.exam.question.typeEnum, |
| | | questionType: state => state.exam.question.typeEnum, |
| | | editUrlEnum: state => state.exam.question.editUrlEnum, |
| | | levelEnum: state => state.user.levelEnum |