From ff46cc24356b2cd2f23ab3cd7892e61b682d2b8c Mon Sep 17 00:00:00 2001
From: 祖安之光 <11848914+light-of-zuan@user.noreply.gitee.com>
Date: Mon, 11 May 2026 10:03:42 +0800
Subject: [PATCH] 主线提交
---
src/views/onlineEducation/questionBankManagement/questionManage/index.vue | 280 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 273 insertions(+), 7 deletions(-)
diff --git a/src/views/onlineEducation/questionBankManagement/questionManage/index.vue b/src/views/onlineEducation/questionBankManagement/questionManage/index.vue
index d1aebdf..de18c69 100644
--- a/src/views/onlineEducation/questionBankManagement/questionManage/index.vue
+++ b/src/views/onlineEducation/questionBankManagement/questionManage/index.vue
@@ -1,12 +1,278 @@
<template>
- <div>题目管理</div>
+ <div class="app-container">
+ <div>
+ <el-form :model="data.queryParams" ref="queryRef" :inline="true" >
+ <el-form-item>
+ <el-button
+ type="primary"
+ plain
+ icon="Plus"
+ @click="openDialog('add',{})"
+ >新增</el-button>
+ </el-form-item>
+ <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"
+ filterable
+ remote
+ reserve-keyword
+ placeholder="请输入题库名称"
+ remote-show-suffix
+ :remote-method="getBankList"
+ style="width: 200px"
+ >
+ <el-option
+ v-for="item in data.bankList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id"
+ />
+ </el-select>
+<!-- <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>
+
+ </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 ? '多选题' : scope.row.questionType === 3 ? '判断题': '简答题'}}</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";
+import {getCompany} from "@/api/onlineEducation/company";
+
+
+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: '判断题'
+ },
+ {
+ id: 4,
+ 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 getBankList("")
+})
+
+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 getBankList = async (val)=>{
+ if(val != ""){
+ const queryParams = {
+ name: val
+ }
+ const res = await getQuestionBank(queryParams)
+ if (res.code == 200) {
+ data.bankList = res.data.list
+
+ } else {
+ ElMessage.warning(res.message)
+ }
+ }else {
+ const queryParams = {
+ pageNum: 1,
+ pageSize: 10
+ }
+ const res = await getQuestionBank(queryParams)
+ if (res.code == 200) {
+ data.bankList = res.data.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