99 lines
2.0 KiB
Vue
99 lines
2.0 KiB
Vue
|
|
<template>
|
|||
|
|
<div class="category-create">
|
|||
|
|
<div class="page-header">
|
|||
|
|
<h2>新增题型分类</h2>
|
|||
|
|
<el-button @click="goBack">返回列表</el-button>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="page-content">
|
|||
|
|
<CategoryForm
|
|||
|
|
ref="formRef"
|
|||
|
|
:category-options="categoryOptions"
|
|||
|
|
@submit="handleSubmit"
|
|||
|
|
@cancel="goBack"
|
|||
|
|
/>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import { ref, onMounted } from 'vue'
|
|||
|
|
import { useRouter, useRoute } from 'vue-router'
|
|||
|
|
import { ElMessage } from 'element-plus'
|
|||
|
|
import CategoryForm from './CategoryForm.vue'
|
|||
|
|
import { questionCategoryApi } from '@/api/question-category.js'
|
|||
|
|
|
|||
|
|
export default {
|
|||
|
|
name: 'QuestionCategoryCreate',
|
|||
|
|
components: {
|
|||
|
|
CategoryForm
|
|||
|
|
},
|
|||
|
|
setup() {
|
|||
|
|
const router = useRouter()
|
|||
|
|
const route = useRoute()
|
|||
|
|
const formRef = ref()
|
|||
|
|
const categoryOptions = ref([])
|
|||
|
|
|
|||
|
|
const loadCategoryOptions = async () => {
|
|||
|
|
try {
|
|||
|
|
const data = await questionCategoryApi.getOptions()
|
|||
|
|
categoryOptions.value = data
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error('加载分类选项失败:', error)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const handleSubmit = async (formData) => {
|
|||
|
|
try {
|
|||
|
|
// 如果有parentId参数,优先使用
|
|||
|
|
if (route.query.parentId) {
|
|||
|
|
formData.parent_id = parseInt(route.query.parentId)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
await questionCategoryApi.create(formData)
|
|||
|
|
ElMessage.success('创建成功')
|
|||
|
|
goBack()
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error('创建分类失败:', error)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const goBack = () => {
|
|||
|
|
router.push('/question-category')
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
onMounted(() => {
|
|||
|
|
loadCategoryOptions()
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
return {
|
|||
|
|
formRef,
|
|||
|
|
categoryOptions,
|
|||
|
|
handleSubmit,
|
|||
|
|
goBack
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped>
|
|||
|
|
.category-create {
|
|||
|
|
padding: 20px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.page-header {
|
|||
|
|
display: flex;
|
|||
|
|
justify-content: space-between;
|
|||
|
|
align-items: center;
|
|||
|
|
margin-bottom: 24px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.page-header h2 {
|
|||
|
|
margin: 0;
|
|||
|
|
color: #303133;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.page-content {
|
|||
|
|
max-width: 600px;
|
|||
|
|
}
|
|||
|
|
</style>
|