From 8b2a9dcd9ada7a5fd40f8aa0993f6afef67493d3 Mon Sep 17 00:00:00 2001 From: 龚焕茏 <2842157468@qq.com> Date: 星期三, 12 六月 2024 17:58:26 +0800 Subject: [PATCH] feat:科目、题目 --- src/views/exam/question/edit/single-choice.vue | 10 - src/views/exam/question/edit/true-false.vue | 10 - src/views/exam/question/list.vue | 122 ++++++++++------- src/api/question.js | 3 src/api/subject.js | 10 src/views/exam/question/edit/multiple-choice.vue | 12 - src/views/exam/question/edit/short-answer.vue | 10 - src/views/education/subject/list.vue | 169 +++++++++++++++++++---- src/views/exam/question/edit/gap-filling.vue | 13 - src/views/exam/question/components/Show.vue | 5 10 files changed, 228 insertions(+), 136 deletions(-) diff --git a/src/api/question.js b/src/api/question.js index f28d6ce..ca143bb 100644 --- a/src/api/question.js +++ b/src/api/question.js @@ -4,5 +4,6 @@ pageList: query => post('/api/admin/question/page', query), edit: query => post('/api/admin/question/edit', query), select: id => post('/api/admin/question/select/' + id), - deleteQuestion: id => post('/api/admin/question/delete/' + id) + deleteQuestion: id => post('/api/admin/question/delete/' + id), + updateStatus: query => post('/api/admin/question/status', query) } diff --git a/src/api/subject.js b/src/api/subject.js index f040209..2c7d2c4 100644 --- a/src/api/subject.js +++ b/src/api/subject.js @@ -1,9 +1,11 @@ -import { post } from '@/utils/request' +import { get, post } from '@/utils/request' export default { list: query => post('/api/admin/subject/list'), pageList: query => post('/api/admin/subject/page', query), - edit: query => post('/api/admin/education/subject/edit', query), - select: id => post('/api/admin/education/subject/select/' + id), - deleteSubject: id => post('/api/admin/education/subject/delete/' + id) + edit: query => post('/api/admin/subject/edit', query), + select: id => post('/api/admin/subject/select/' + id), + deleteSubject: id => post('/api/admin/subject/delete/' + id), + updateStatus: query => post('/api/admin/subject/status', query), + getItemOrder: id => get('/api/admin/subject/getItemOrder') } diff --git a/src/views/education/subject/list.vue b/src/views/education/subject/list.vue index 3a4e0c9..08bc47c 100644 --- a/src/views/education/subject/list.vue +++ b/src/views/education/subject/list.vue @@ -1,34 +1,63 @@ <template> <div class="app-container"> <el-form :model="queryParam" ref="queryForm" :inline="true"> - <el-form-item label="骞寸骇锛�"> - <el-select v-model="queryParam.level" placeholder="骞寸骇" clearable=""> - <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option> + <el-form-item> + <el-input v-model="queryParam.name" placeholder="璇疯緭鍏ュ悕绉�" clearable></el-input> + </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="submitForm">鏌ヨ</el-button> - <router-link :to="{path:'/education/subject/edit'}" class="link-left"> - <el-button type="primary">娣诲姞</el-button> - </router-link> + <el-button type="primary" @click="search">鏌ヨ</el-button> + <el-button type="primary" @click="edit()">娣诲姞</el-button> </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" /> - <el-table-column prop="name" label="瀛︾"/> - <el-table-column prop="levelName" label="骞寸骇" /> - <el-table-column width="220px" label="鎿嶄綔" align="center"> + <el-table-column align="center" prop="name" label="鍚嶇О" show-overflow-tooltip /> + <el-table-column align="center" prop="itemOrder" label="鎺掑簭" /> + <el-table-column align="center" prop="createTime" label="鍒涘缓鏃堕棿" /> + <el-table-column align="center" prop="status" label="鐘舵��"> <template slot-scope="{row}"> - <router-link :to="{path:'/education/subject/edit', query:{id:row.id}}" class="link-left"> - <el-button size="mini">缂栬緫</el-button> - </router-link> - <el-button size="mini" type="danger" @click="delSubject(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"> + <template slot-scope="{row}"> + <el-button size="mini" @click="edit(row)">缂栬緫</el-button> + <el-button size="mini" type="primary" @click="status(row)"> + {{ row.status === "绂佺敤" ? "鍚敤" : "绂佺敤" }} + </el-button> + <el-popconfirm title="纭鍒犻櫎鍚�" @confirm="deleteSubject(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="visible" width="400px"> + <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules"> + <el-form-item label="鍚嶇О锛�" prop="name" required> + <el-input v-model="form.name" maxlength="10" show-word-limit /> + </el-form-item> + <el-form-item label="鎺掑簭锛�" prop="itemOrder" required> + <el-input-number v-model="form.itemOrder" type="number" :min="1" :max="100" /> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="submitForm">鎻愪氦</el-button> + <el-button @click="resetForm">閲嶇疆</el-button> + </el-form-item> + </el-form> + </el-dialog> + + </div> </template> @@ -39,37 +68,84 @@ export default { components: { Pagination }, - data () { + data() { return { + listLoading: true, queryParam: { - level: null, + name: '', pageIndex: 1, pageSize: 10 }, - listLoading: true, + formLoading: false, + total: 0, tableData: [], - total: 0 - } + form: { + id: '', + name: '', + itemOrder: '' + }, + visible: false, + rules: { + name: [ + { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: 'blur' } + ], + itemOrder: [ + { required: true, message: '璇疯緭鍏ユ帓搴�', trigger: 'blur', type: 'number' } + ] + }, + }; }, - created () { + created() { this.search() }, methods: { - search () { + // 鑾峰彇鎺掑簭 + getItemOrder() { + subjectApi.getItemOrder().then(re => { + this.form.itemOrder = re.data + }) + }, + // 鑾峰彇鍒楄〃 + search() { this.listLoading = true - subjectApi.pageList(this.queryParam).then(data => { - const re = data.data - this.tableData = re.list - this.total = re.total - this.queryParam.pageIndex = re.pageNum + subjectApi.pageList(this.queryParam).then(re => { + this.tableData = re.data.list + this.total = re.data.total + this.queryParam.pageSize = re.data.pageSize + this.queryParam.pageIndex = re.data.pageNum this.listLoading = false }) }, - submitForm () { - this.queryParam.pageIndex = 1 - this.search() + edit(row) { + if (row) { + subjectApi.select(row.id).then(re => { + if (re.code === 1) { + this.form = re.data; + this.visible = true; + } else { + this.$message.error(re.message) + } + }) + } else { + this.getItemOrder(); + this.visible = true; + } }, - delSubject (row) { + status(row) { + let question = { + id: row.id, + status: row.status === '绂佺敤' ? '鍚敤' : '绂佺敤' + } + subjectApi.updateStatus(question).then(re => { + if (re.code === 1) { + this.$message.success(re.message) + this.search() + } else { + this.$message.error(re.message) + } + }) + }, + deleteSubject(row) { let _this = this subjectApi.deleteSubject(row.id).then(re => { if (re.code === 1) { @@ -79,7 +155,32 @@ _this.$message.error(re.message) } }) - } + }, + submitForm() { + let _this = this + this.$refs.form.validate((valid) => { + if (valid) { + this.formLoading = true + subjectApi.edit(this.form).then(re => { + if (re.code === 1) { + _this.$message.success(re.message) + _this.search() + _this.formLoading = false + _this.visible = false + } else { + _this.$message.error(re.message) + _this.formLoading = false + _this.visible = false + } + }) + } + }) + }, + resetForm() { + let lastId = this.form.id + this.$refs['form'].resetFields() + this.form.id = lastId + }, }, computed: { ...mapGetters('enumItem', [ diff --git a/src/views/exam/question/components/Show.vue b/src/views/exam/question/components/Show.vue index 2b7e9c9..b1f3757 100644 --- a/src/views/exam/question/components/Show.vue +++ b/src/views/exam/question/components/Show.vue @@ -60,3 +60,8 @@ methods: {} } </script> +<style scoped> + /deep/ td { + background-color: #f0f0f0; + } +</style> \ No newline at end of file diff --git a/src/views/exam/question/edit/gap-filling.vue b/src/views/exam/question/edit/gap-filling.vue index 29e98b5..88e94c2 100644 --- a/src/views/exam/question/edit/gap-filling.vue +++ b/src/views/exam/question/edit/gap-filling.vue @@ -1,14 +1,9 @@ <template> <div class="app-container"> <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules"> - <el-form-item label="骞寸骇锛�" prop="gradeLevel" required> - <el-select v-model="form.gradeLevel" placeholder="骞寸骇" @change="levelChange"> - <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="瀛︾锛�" prop="subjectId" required> <el-select v-model="form.subjectId" placeholder="瀛︾" > - <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name+' ( '+item.levelName+' )'"></el-option> + <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 label="棰樺共锛�" prop="title" required> @@ -17,14 +12,10 @@ <el-form-item label="濉┖绛旀锛�" required> <el-form-item :label="item.prefix" :key="item.prefix" v-for="item in form.items" label-width="50px" class="question-item-label"> <el-input v-model="item.content" @focus="inputClick(item,'content')" class="question-item-content-input" style="width: 80%"/> - <span class="question-item-span">鍒嗘暟锛�</span><el-input-number v-model="item.score" :precision="1" :step="1" :max="100" ></el-input-number> </el-form-item> </el-form-item> <el-form-item label="瑙f瀽锛�" prop="analyze" required> <el-input v-model="form.analyze" @focus="inputClick(form,'analyze')" /> - </el-form-item> - <el-form-item label="鍒嗘暟锛�" prop="score" required> - <el-input-number v-model="form.score" :precision="1" :step="1" :max="100"></el-input-number> </el-form-item> <el-form-item label="闅惧害锛�" required> <el-rate v-model="form.difficult" class="question-item-rate"></el-rate> @@ -115,7 +106,7 @@ if (id && parseInt(id) !== 0) { _this.formLoading = true questionApi.select(id).then(re => { - _this.form = re.response + _this.form = re.data _this.formLoading = false }) } diff --git a/src/views/exam/question/edit/multiple-choice.vue b/src/views/exam/question/edit/multiple-choice.vue index 8ed8651..15677d8 100644 --- a/src/views/exam/question/edit/multiple-choice.vue +++ b/src/views/exam/question/edit/multiple-choice.vue @@ -1,14 +1,9 @@ <template> <div class="app-container"> <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules"> - <el-form-item label="骞寸骇锛�" prop="gradeLevel" required> - <el-select v-model="form.gradeLevel" placeholder="骞寸骇" @change="levelChange"> - <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="瀛︾锛�" prop="subjectId" required> <el-select v-model="form.subjectId" placeholder="瀛︾" > - <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name+' ( '+item.levelName+' )'"></el-option> + <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 label="棰樺共锛�" prop="title" required> @@ -23,9 +18,6 @@ </el-form-item> <el-form-item label="瑙f瀽锛�" prop="analyze" required> <el-input v-model="form.analyze" @focus="inputClick(form,'analyze')" /> - </el-form-item> - <el-form-item label="鍒嗘暟锛�" prop="score" required> - <el-input-number v-model="form.score" :precision="1" :step="1" :max="100"></el-input-number> </el-form-item> <el-form-item label="闅惧害锛�" required> <el-rate v-model="form.difficult" class="question-item-rate"></el-rate> @@ -130,7 +122,7 @@ if (id && parseInt(id) !== 0) { _this.formLoading = true questionApi.select(id).then(re => { - _this.form = re.response + _this.form = re.data _this.formLoading = false }) } diff --git a/src/views/exam/question/edit/short-answer.vue b/src/views/exam/question/edit/short-answer.vue index d00367f..9758de1 100644 --- a/src/views/exam/question/edit/short-answer.vue +++ b/src/views/exam/question/edit/short-answer.vue @@ -1,14 +1,9 @@ <template> <div class="app-container"> <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules"> - <el-form-item label="骞寸骇锛�" prop="gradeLevel" required> - <el-select v-model="form.gradeLevel" placeholder="骞寸骇" @change="levelChange"> - <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="瀛︾锛�" prop="subjectId" required> <el-select v-model="form.subjectId" placeholder="瀛︾" > - <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name+' ( '+item.levelName+' )'"></el-option> + <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 label="棰樺共锛�" prop="title" required> @@ -19,9 +14,6 @@ </el-form-item> <el-form-item label="瑙f瀽锛�" prop="analyze" required> <el-input v-model="form.analyze" @focus="inputClick(form,'analyze')" /> - </el-form-item> - <el-form-item label="鍒嗘暟锛�" prop="score" required> - <el-input-number v-model="form.score" :precision="1" :step="1" :max="100"></el-input-number> </el-form-item> <el-form-item label="闅惧害锛�" required> <el-rate v-model="form.difficult" class="question-item-rate"></el-rate> diff --git a/src/views/exam/question/edit/single-choice.vue b/src/views/exam/question/edit/single-choice.vue index c090bb8..2c05773 100644 --- a/src/views/exam/question/edit/single-choice.vue +++ b/src/views/exam/question/edit/single-choice.vue @@ -1,14 +1,9 @@ <template> <div class="app-container"> <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules"> - <el-form-item label="骞寸骇锛�" prop="gradeLevel" required> - <el-select v-model="form.gradeLevel" 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="瀛︾锛�" prop="subjectId" required> <el-select v-model="form.subjectId" placeholder="瀛︾" > - <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name+' ( '+item.levelName+' )'"></el-option> + <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 label="棰樺共锛�" prop="title" required> @@ -23,9 +18,6 @@ </el-form-item> <el-form-item label="瑙f瀽锛�" prop="analyze" required> <el-input v-model="form.analyze" @focus="inputClick(form,'analyze')" /> - </el-form-item> - <el-form-item label="鍒嗘暟锛�" prop="score" required> - <el-input-number v-model="form.score" :precision="1" :step="1" :max="100"></el-input-number> </el-form-item> <el-form-item label="闅惧害锛�" required> <el-rate v-model="form.difficult" class="question-item-rate"></el-rate> diff --git a/src/views/exam/question/edit/true-false.vue b/src/views/exam/question/edit/true-false.vue index 9f3d150..65fd456 100644 --- a/src/views/exam/question/edit/true-false.vue +++ b/src/views/exam/question/edit/true-false.vue @@ -1,14 +1,9 @@ <template> <div class="app-container"> <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules"> - <el-form-item label="骞寸骇锛�" prop="gradeLevel" required> - <el-select v-model="form.gradeLevel" placeholder="骞寸骇" @change="levelChange"> - <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="瀛︾锛�" prop="subjectId" required> <el-select v-model="form.subjectId" placeholder="瀛︾" > - <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name+' ( '+item.levelName+' )'"></el-option> + <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 label="棰樺共锛�" prop="title" required> @@ -22,9 +17,6 @@ </el-form-item> <el-form-item label="瑙f瀽锛�" prop="analyze" required> <el-input v-model="form.analyze" @focus="inputClick(form,'analyze')" /> - </el-form-item> - <el-form-item label="鍒嗘暟锛�" prop="score" required> - <el-input-number v-model="form.score" :precision="1" :step="1" :max="100"></el-input-number> </el-form-item> <el-form-item label="闅惧害锛�" required> <el-rate v-model="form.difficult" class="question-item-rate"></el-rate> diff --git a/src/views/exam/question/list.vue b/src/views/exam/question/list.vue index 1a0f8ec..26eac15 100644 --- a/src/views/exam/question/list.vue +++ b/src/views/exam/question/list.vue @@ -1,59 +1,68 @@ <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> @@ -66,7 +75,7 @@ export default { components: { Pagination, QuestionShow }, - data () { + data() { return { queryParam: { id: null, @@ -88,16 +97,30 @@ } } }, - 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 @@ -107,28 +130,28 @@ 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) { @@ -139,10 +162,10 @@ } }) }, - 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' }) @@ -150,6 +173,7 @@ 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 -- Gitblit v1.8.0