题目管理

This commit is contained in:
Unique-Jerry 2023-10-22 09:12:40 +08:00
parent 5e42046c5c
commit 34e61af9cb
5 changed files with 150 additions and 19 deletions

View File

@ -9,3 +9,24 @@ export const useGetTypeList = (encoding) =>
export const useAddTypeName = (typeName, encoding, userId) => export const useAddTypeName = (typeName, encoding, userId) =>
requset.post('question/add_typeName', { typeName, encoding, userId }) requset.post('question/add_typeName', { typeName, encoding, userId })
export const useDeleteTypeName = (typeId) =>
requset.get('question/delete_type', {
params: {
typeId: typeId
}
})
export const useChangeTypeName = (typeId, typeName, userId) =>
requset.post('question/change_type', {
typeId,
typeName,
userId
})
export const useGetQuestionList = (encoding) =>
requset.get('question/get_questionList', {
params: {
encoding: encoding
}
})

View File

@ -1,5 +1,20 @@
<script setup> <script setup>
import { Edit, Delete } from '@element-plus/icons-vue' import { Edit, Delete, View } from '@element-plus/icons-vue'
import { useGetQuestionList } from '@/api/question'
import { ref } from 'vue'
import { useCompanyStore } from '@/stores'
const questionList = ref([])
const companyStore = useCompanyStore()
const getQuestionList = async () => {
const res = await useGetQuestionList(companyStore.encoding)
console.log(res.data.data)
questionList.value = res.data.data
}
getQuestionList()
</script> </script>
<template> <template>
@ -9,14 +24,16 @@ import { Edit, Delete } from '@element-plus/icons-vue'
</template> </template>
<el-table <el-table
v-loading="loading" v-loading="loading"
:data="channelList" :data="questionList"
stripe stripe
style="width: 100%" style="width: 100%"
> >
<el-table-column type="index" label="序号" width="100" /> <el-table-column type="index" label="序号" width="100" />
<el-table-column prop="cate_name" label="分类名称" /> <el-table-column prop="title" label="题目标题" />
<el-table-column prop="cate_alias" label="分类别名" /> <el-table-column prop="typeName" label="题库类型" />
<el-table-column label="操作" width="150"> <el-table-column prop="createTime" label="创建时间" />
<el-table-column prop="updateTime" label="更新时间" />
<el-table-column label="操作" width="200">
<template #default="{ row }"> <template #default="{ row }">
<el-button <el-button
type="primary" type="primary"
@ -32,6 +49,7 @@ import { Edit, Delete } from '@element-plus/icons-vue'
circle circle
plain plain
></el-button> ></el-button>
<el-button type="info" :icon="View" plain>更多</el-button>
</template> </template>
</el-table-column> </el-table-column>
<template #empty> <template #empty>

View File

@ -6,6 +6,8 @@ import { useCompanyStore } from '@/stores'
import { ref } from 'vue' import { ref } from 'vue'
import QuestionTypeEdit from './components/QuestionTypeEdit.vue' import QuestionTypeEdit from './components/QuestionTypeEdit.vue'
import QuestionDialog from './components/QuestionDialog.vue'
const questionTypeList = ref([]) const questionTypeList = ref([])
const loading = ref(false) const loading = ref(false)
const companyStore = useCompanyStore() const companyStore = useCompanyStore()
@ -22,8 +24,9 @@ const handleEdit = (row) => {
dialog.value.open(row) dialog.value.open(row)
} }
const deleteDialog = ref()
const handleDelete = (row) => { const handleDelete = (row) => {
console.log(row) deleteDialog.value.openDialog(row)
} }
const onAddEdit = () => { const onAddEdit = () => {
@ -44,7 +47,7 @@ const onAddEdit = () => {
style="width: 100%" style="width: 100%"
> >
<el-table-column type="index" label="序号" width="100" /> <el-table-column type="index" label="序号" width="100" />
<el-table-column prop="name" label="题库类型" /> <el-table-column prop="typeName" label="题库类型" />
<el-table-column prop="createTime" label="创建时间" /> <el-table-column prop="createTime" label="创建时间" />
<el-table-column prop="updateTime" label="更新时间" /> <el-table-column prop="updateTime" label="更新时间" />
<el-table-column label="操作" width="150"> <el-table-column label="操作" width="150">
@ -73,5 +76,9 @@ const onAddEdit = () => {
@getQuestionTypeList="getQuestionTypeList" @getQuestionTypeList="getQuestionTypeList"
ref="dialog" ref="dialog"
></QuestionTypeEdit> ></QuestionTypeEdit>
<QuestionDialog
@getQuestionTypeList="getQuestionTypeList"
ref="deleteDialog"
></QuestionDialog>
</page-container> </page-container>
</template> </template>

View File

@ -0,0 +1,56 @@
<script setup>
import { ref } from 'vue'
import { useDeleteTypeName } from '@/api/question'
import { ElMessage } from 'element-plus'
const centerDialogVisible = ref(false)
const info = ref({})
const openDialog = (row) => {
info.value = row
centerDialogVisible.value = true
}
const emit = defineEmits(['getQuestionTypeList'])
const handleDelete = async () => {
await useDeleteTypeName(info.value.id)
ElMessage.success('删除题库成功!')
emit('getQuestionTypeList')
centerDialogVisible.value = false
}
defineExpose({
openDialog
})
</script>
<template>
<el-dialog
v-model="centerDialogVisible"
title="警告"
width="30%"
align-center
>
<span
>您确定要删除题库<span class="typeNsme">{{ info.typeName }}</span
>以及该题库的所有题目?</span
>
<template #footer>
<span class="dialog-footer">
<el-button @click="centerDialogVisible = false">取消</el-button>
<el-button type="danger" @click="handleDelete"> 确定 </el-button>
</span>
</template>
</el-dialog>
</template>
<style scoped>
.dialog-footer button:first-child {
margin-right: 10px;
}
.typeNsme {
font-weight: bold;
color: red;
}
</style>

View File

@ -1,7 +1,7 @@
<script setup> <script setup>
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { ref } from 'vue' import { ref } from 'vue'
import { useAddTypeName } from '@/api/question' import { useAddTypeName, useChangeTypeName } from '@/api/question'
import { useUserStore, useCompanyStore } from '@/stores' import { useUserStore, useCompanyStore } from '@/stores'
const dialogVisible = ref(false) const dialogVisible = ref(false)
@ -13,6 +13,7 @@ const FormModel = ref({
const open = (row) => { const open = (row) => {
console.log(row) console.log(row)
dialogVisible.value = true dialogVisible.value = true
FormModel.value = { ...row }
} }
const rules = { const rules = {
@ -22,11 +23,25 @@ const rules = {
const companyStore = useCompanyStore() const companyStore = useCompanyStore()
const userStore = useUserStore() const userStore = useUserStore()
const emit = defineEmits(['getQuestionTypeList']) const emit = defineEmits(['getQuestionTypeList'])
const form = ref()
const onADD = async () => { const onADD = async () => {
await form.value.validate()
if (FormModel.value.typeName === '') { if (FormModel.value.typeName === '') {
ElMessage.error('请输入内容') ElMessage.error('请输入内容')
return return
} }
const isEndit = FormModel.value.id
if (isEndit) {
await useChangeTypeName(
FormModel.value.id,
FormModel.value.typeName,
userStore.userInfo.id
)
ElMessage.success('修改题库成功!')
dialogVisible.value = false
emit('getQuestionTypeList')
} else {
await useAddTypeName( await useAddTypeName(
FormModel.value.typeName, FormModel.value.typeName,
companyStore.encoding, companyStore.encoding,
@ -34,8 +49,15 @@ const onADD = async () => {
) )
emit('getQuestionTypeList') emit('getQuestionTypeList')
FormModel.value.typeName = '' FormModel.value.typeName = ''
ElMessage.success('添加题库成功!')
dialogVisible.value = false dialogVisible.value = false
} }
}
const keyDown = (e) => {
if (e.keyCode === 13 || e.keyCode === 100) {
console.log('触发回车事件')
}
}
defineExpose({ defineExpose({
open open
@ -43,8 +65,13 @@ defineExpose({
</script> </script>
<template> <template>
<el-dialog v-model="dialogVisible" title="添加弹层" width="30%"> <el-dialog
v-model="dialogVisible"
:title="FormModel.typeName ? '编辑题库' : '添加题库'"
width="30%"
>
<el-form <el-form
ref="form"
label-width="100px" label-width="100px"
style="padding-right: 30px" style="padding-right: 30px"
:model="FormModel" :model="FormModel"
@ -60,7 +87,9 @@ defineExpose({
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button> <el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="onADD"> 确认 </el-button> <el-button type="primary" @click="onADD" @keydown.enter="keyDown()">
确认
</el-button>
</span> </span>
</template> </template>
</el-dialog> </el-dialog>