From 0af507deb2a8b08a606b795d73c660d02ecb7f49 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期四, 06 六月 2024 17:11:23 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/Manage/TestPaper/QuestionBank.vue | 191 +++++++++++++++++++++++++++++++++-------------- 1 files changed, 132 insertions(+), 59 deletions(-) diff --git a/src/views/Manage/TestPaper/QuestionBank.vue b/src/views/Manage/TestPaper/QuestionBank.vue index e7b4c3e..a8d238d 100644 --- a/src/views/Manage/TestPaper/QuestionBank.vue +++ b/src/views/Manage/TestPaper/QuestionBank.vue @@ -12,78 +12,97 @@ <el-button type="warning" size="mini" v-for="item in editUrlEnum" :key="item.key" @click="getDialogFormVisible(item.name)">{{ item.name }} </el-button> - <el-button slot="reference" type="primary" class="link-left">褰曞叆棰樼洰</el-button> + <el-button slot="reference" type="primary" class="link-left">鏂板</el-button> </el-popover> </div> <!-- 鎼滅储 --> <div> - <el-form :inline="true" :model="formLabelAlign" class="demo-form-inline" label-width="80px"> + <el-form :inline="true" :model="queryParam" class="demo-form-inline" label-width="80px"> <el-form-item> - <el-input v-model="formLabelAlign.type" placeholder="棰樼洰鍚�"></el-input> + <el-input v-model="queryParam.content" placeholder="璇疯緭鍏ラ鐩�" clearable></el-input> </el-form-item> <el-form-item> - <el-select v-model="formLabelAlign.region" placeholder="鍏ㄩ儴绉戠洰"> - <el-option label="鍏ㄩ儴绉戠洰" value="shanghai"></el-option> - <el-option label="璇枃" value="beijing"></el-option> - <el-option label="鏁板" value="beijing"></el-option> - <el-option label="鑻辫" value="beijing"></el-option> + <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-select v-model="formLabelAlign.region" placeholder="閫夋嫨棰�"> - <el-option label="閫夋嫨棰�" value="shanghai"></el-option> - <el-option label="闂瓟棰�" value="beijing"></el-option> - <el-option label="鍒ゆ柇棰�" value="beijing"></el-option> + <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 label=""> + <el-form-item> <el-button style="width:100px;" type="primary" size="small" @click="search()">鏌ヨ</el-button> </el-form-item> </el-form> </div> <!-- 琛ㄦ牸 --> - <el-table v-loading="listLoading" :header-cell-style="getRowClass" :data="tableData" border style="width: 100%;"> - <el-table-column align="center" prop="title" label="棰樼洰鍚�"> + <el-table v-loading="listLoading" :header-cell-style="getRowClass" :data="tableData" border + style="width: 100%;"> + <el-table-column align="center" prop="shortTitle" label="棰樼洰" show-overflow-tooltip> </el-table-column> - <el-table-column align="center" prop="subject" label="绉戠洰"> + <el-table-column align="center" prop="subjectName" label="绉戠洰" width="150px"> </el-table-column> - <el-table-column align="center" prop="type" label="棰樼洰绫诲瀷"> + <el-table-column align="center" prop="questionTypeName" label="棰樺瀷" width="100px"> </el-table-column> - <el-table-column align="center" prop="score" label="鍙傝�冪瓟妗�"> + <el-table-column align="center" prop="difficult" label="闅惧害" width="60px" /> + <el-table-column align="center" prop="createTime" label="鍒涘缓鏃堕棿" width="160px" /> + <el-table-column label="鐘舵��" prop="status" width="70px"> + <template slot-scope="{row}"> + <el-tag :type="row.status === '绂佺敤' ? 'danger' : 'success'"> + {{ row.status ? row.status : '鍚敤' }} + </el-tag> + </template> </el-table-column> - <el-table-column label="鎿嶄綔" align="center"> - <el-button type="text">缂栬緫</el-button> - <el-button type="text">鍒犻櫎</el-button> + <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> - <div class="block" style="display: flex; margin-top: 40px;"> - <pagination v-show="total > 0" :total="total" :page.sync="queryParam.pageIndex" - :limit.sync="queryParam.pageSize" @pagination="search" /> - </div> + <pagination v-show="total > 0" :total="total" :page.sync="queryParam.pageIndex" + :limit.sync="queryParam.pageSize" @pagination="search" /> </div> </div> - </div> + <!-- 濉┖ --> - <el-dialog :visible.sync="gapVisible" :close-on-click-modal="false"> - <gap ref="gap" @children="parentGoods" /> + <el-dialog :visible.sync="gapVisible" :close-on-click-modal="false" v-if="gapVisible"> + <gap ref="gap" @children="parentGoods" @callback="callback" :id="updateId" /> </el-dialog> <!-- 澶氶�� --> - <el-dialog :visible.sync="multipleVisible" :close-on-click-modal="false"> - <multiple ref="multiple" @children="parentGoods" /> + <el-dialog :visible.sync="multipleVisible" :close-on-click-modal="false" v-if="multipleVisible"> + <multiple ref="multiple" @children="parentGoods" @callback="callback" :id="updateId" /> </el-dialog> <!-- 绠�绛� --> - <el-dialog :visible.sync="shortVisible" :close-on-click-modal="false"> - <short ref="short" @children="parentGoods" /> + <el-dialog :visible.sync="shortVisible" :close-on-click-modal="false" v-if="shortVisible"> + <short ref="short" @children="parentGoods" @callback="callback" :id="updateId" /> </el-dialog> <!-- 鍗曢�� --> - <el-dialog :visible.sync="singleVisible" :close-on-click-modal="false"> - <single ref="single" @children="parentGoods" /> + <el-dialog :visible.sync="singleVisible" :close-on-click-modal="false" v-if="singleVisible"> + <single ref="single" @children="parentGoods" @callback="callback" :id="updateId" /> </el-dialog> <!-- 鍒ゆ柇 --> - <el-dialog :visible.sync="truesVisible" :close-on-click-modal="false"> - <trues ref="trues" @children="parentGoods" /> + <el-dialog :visible.sync="truesVisible" :close-on-click-modal="false" v-if="truesVisible"> + <trues ref="trues" @children="parentGoods" @callback="callback" :id="updateId" /> + </el-dialog> + + <el-dialog :visible.sync="questionShow.dialog" style="width: 100%;height: 100%"> + <QuestionShow :qType="questionShow.qType" :question="questionShow.question" :qLoading="questionShow.loading" /> </el-dialog> </div> </template> @@ -96,6 +115,9 @@ import trues from "@/components/PopUp/true-false.vue"; import { mapGetters, mapState } from 'vuex' import questionApi from '@/api/question' +import QuestionShow from '@/components/PopUp/question/Show' +import subjectApi from '@/api/subject' +import Pagination from '@/components/Pagination' export default { // 娉ㄥ唽 @@ -105,13 +127,24 @@ short, single, trues, + QuestionShow, + Pagination }, data() { return { + updateId: '', + questionShow: { + qType: 0, + dialog: false, + question: null, + loading: false + }, listLoading: true, queryParam: { - questionType: null, - subjectId: null, + questionType: [], + subjectId: [], + content: '', + status: '', pageIndex: 1, pageSize: 10 }, @@ -121,43 +154,43 @@ shortVisible: false, singleVisible: false, truesVisible: false, - formLabelAlign: { - type: "", - user: "", - region: "", - }, tableData: [], + subjects: [] }; }, created() { this.search() + this.getSubjects(); }, methods: { + // 鑾峰彇绉戠洰 + getSubjects() { + subjectApi.list().then(re => { + this.subjects = re.data + }) + }, + callback() { + this.gapVisible = false; + this.multipleVisible = false; + this.shortVisible = false; + this.singleVisible = false; + this.truesVisible = false; + this.search() + }, // 鑾峰彇鍒楄〃 search() { this.listLoading = true questionApi.pageList(this.queryParam).then(re => { - this.tableData = re.data - this.total = re.total - this.queryParam.pageIndex = re.pageNum + 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 }) - }, - // 杩斿洖涓婁竴涓〉闈� - goBack() { - this.$router.back(); }, // 淇敼琛ㄥ崟澶撮儴鐨勯鑹� getRowClass() { return "background:#d2d3d6"; - }, - // 鐢熸垚璇曞嵎 - getCreate() { - // 璺宠浆鍒扮敓鎴愰〉闈� - //璺宠浆鍒板搴旂殑绠$悊椤甸潰 - this.$router.push({ - path: "/manage/test-paper-generation", - }); }, // 鐐瑰嚮鍚庤皟鐢ㄥ脊绐楃粍浠剁殑鏂规硶,寮�鍚脊绐� getDialogFormVisible(value) { @@ -178,11 +211,51 @@ this.truesVisible = true; break; } + this.updateId = ''; }, // 寮圭獥 // 鎺ユ敹寮圭獥缁勪欢杩斿洖鐨勮〃鍗曞�� parentGoods(obj) { console.log(obj, "寮圭獥缁勪欢鐨勮〃鍗曞��"); + }, + showQuestion(row) { + let _this = this + this.questionShow.dialog = true + this.questionShow.loading = true + questionApi.select(row.id).then(re => { + _this.questionShow.qType = re.data.questionType + _this.questionShow.question = re.data + _this.questionShow.loading = false + }) + }, + editQuestion(row) { + this.getDialogFormVisible(row.questionTypeName); + this.updateId = row.id; + }, + 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) + } + }) + }, + deleteQuestion(row) { + let _this = this + questionApi.deleteQuestion(row.id).then(re => { + if (re.code === 1) { + _this.search() + _this.$message.success(re.message) + } else { + _this.$message.error(re.message) + } + }) }, }, computed: { @@ -191,7 +264,7 @@ questionTypeEnum: state => state.exam.question.typeEnum, editUrlEnum: state => state.exam.question.editUrlEnum }), - ...mapState('exam', { subjects: state => state.subjects }) + ...mapGetters('exam', ['subjectEnumFormat']), } }; </script> -- Gitblit v1.8.0