From e8e49938910bd0d627f1d8cf6dd0eaed01050871 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: Tue, 09 Jul 2024 09:30:12 +0800
Subject: [PATCH] 题目题库
---
src/views/onlineEducation/questionBankManagement/questionManage/index.vue | 229 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 222 insertions(+), 7 deletions(-)
diff --git a/src/views/onlineEducation/questionBankManagement/questionManage/index.vue b/src/views/onlineEducation/questionBankManagement/questionManage/index.vue
index d1aebdf..ab257c2 100644
--- a/src/views/onlineEducation/questionBankManagement/questionManage/index.vue
+++ b/src/views/onlineEducation/questionBankManagement/questionManage/index.vue
@@ -1,12 +1,227 @@
<template>
- <div>题目管理</div>
+ <div class="app-container">
+ <div style="margin-bottom: 10px">
+ <el-form :model="data.queryParams" ref="queryRef" :inline="true" >
+ <el-form-item label="题型:">
+ <el-select v-model="data.queryParams.questionType" placeholder="请选择题型" clearable>
+ <el-option
+ v-for="item in data.questionTypeList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="题目内容:" >
+ <el-input
+
+ v-model="data.queryParams.title"
+ placeholder="请输入题目内容"
+ clearable
+ style="width: 200px"
+ />
+ </el-form-item>
+ <el-form-item label="题库:" >
+ <el-select
+ clearable
+ v-model="data.queryParams.bankId"
+ style="width: 200px"
+ v-loadMoreNew:[reselect]="handleScroll"
+ :popper-class="reselect.name"
+ class="item-width"
+ placeholder="请选择题库"
+ >
+ <el-option
+ v-for="item in data.bankList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" @click="handleQuery">查询</el-button>
+ <el-button @click="resetQuery">重置</el-button>
+ </el-form-item>
+ </el-form>
+ <el-button
+ type="primary"
+ plain
+ icon="Plus"
+ @click="openDialog('add',{})"
+ >新增</el-button>
+ </div>
+ <!-- 表格数据 -->
+ <el-table v-loading="loading" :data="data.dataList" :border="true">
+ <el-table-column label="序号" type="index" align="center" width="80" />
+ <el-table-column label="所属题库" prop="bankName" align="center" />
+ <el-table-column label="题目类型" prop="questionType" align="center" >
+ <template #default="scope">
+ <span>{{scope.row.questionType === 1 ? '单选题' : scope.row.questionType === 2 ? '多选题' : '判断题'}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="题目内容" prop="title" align="center" />
+ <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180">
+ <template #default="scope">
+ <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
+ <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="data.total > 0"
+ :total="data.total"
+ v-model:page="data.queryParams.pageNum"
+ v-model:limit="data.queryParams.pageSize"
+ @pagination="getList"
+ />
+
+ <question-dialog ref="dialogRef" @getList=getList></question-dialog>
+ </div>
</template>
+
<script setup>
+import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
+import {ElMessage, ElMessageBox} from "element-plus";
+import questionDialog from './components/questionDialog.vue'
+import Cookies from "js-cookie";
+import {delQuestion, getQuestion} from "@/api/onlineEducation/question";
+import {getQuestionBank} from "@/api/onlineEducation/questionBank";
+
+
+const { proxy } = getCurrentInstance();
+const loading = ref(false);
+const dialogRef = ref();
+const data = reactive({
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ questionType: null,
+ title: '',
+ bankId: null
+ },
+ total: 0,
+ dataList: [],
+ isAdmin: false,
+ questionTypeList: [
+ {
+ id: 1,
+ name: '单选题'
+ },
+ {
+ id: 2,
+ name: '多选题'
+ },
+ {
+ id: 3,
+ name: '判断题'
+ }
+ ],
+ bankList: [],
+ bankPageNum: 1, // 当前页码
+ bankPageSize: 10, // 每页显示的数量
+ hasMoreItems: null, // 是否还有更多选项
+
+
+})
+const reselect = reactive({
+ name: 'bank'
+})
+
+onMounted(async ()=>{
+ const userInfo = JSON.parse(Cookies.get('userInfo'))
+ console.log("userInfo",userInfo)
+ if(userInfo.userType === 0){
+ data.isAdmin = true;
+ }else {
+ data.isAdmin = false;
+ }
+ await getList()
+ await loadMoreBankData()
+})
+
+onUnmounted(()=>{
+
+})
+
+const getList = async () => {
+ console.log(' list');
+ loading.value = true
+ const res = await getQuestion(data.queryParams)
+ if(res.code == 200){
+ data.dataList = res.data.list
+ data.total = res.data.total
+ }else{
+ ElMessage.warning(res.message)
+ }
+ loading.value = false
+}
+
+const handleScroll = () => {
+
+ if(data.bankPageNum >= data.hasMoreItems) return
+ data.bankPageNum++;
+ loadMoreBankData()
+
+}
+const loadMoreBankData = async () => {
+ console.log(' Bank');
+ const queryParams = {
+ pageNum: data.bankPageNum,
+ pageSize: data.bankPageSize,
+ }
+ const res = await getQuestionBank(queryParams)
+ if (res.code == 200) {
+ data.hasMoreItems = res.data.totalPage
+ const state = res.data
+ data.bankList = data.bankList.concat(state.list)
+ }else{
+ ElMessage.warning(res.message)
+ }
+}
+
+const handleQuery = () => {
+ data.queryParams.pageNum = 1;
+ getList();
+}
+const resetQuery = () => {
+ data.queryParams = {
+ pageNum: 1,
+ pageSize: 10,
+ questionType: null,
+ title: '',
+ bankId: null
+ }
+ getList();
+}
+
+const openDialog = (type, value) => {
+ dialogRef.value.openDialog(type, value);
+}
+
+/** 重置新增的表单以及其他数据 */
+function reset() {
+ proxy.resetForm("roleRef");
+}
+const handleDelete = (val) => {
+ ElMessageBox.confirm(
+ '确定删除此条数据?',
+ '提示',
+ {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning',
+ })
+ .then( async() => {
+ const res = await delQuestion(val.id)
+ if(res.code == 200){
+ ElMessage.success('数据删除成功')
+ await getList()
+ }else{
+ ElMessage.warning(res.message)
+ }
+ })
+}
</script>
-
-
-
-<style scoped lang="scss">
-
-</style>
--
Gitblit v1.9.2