Files
AI-interview-web/src/views/question-category/components/Create.vue

99 lines
2.0 KiB
Vue
Raw Normal View History

2025-09-11 22:33:15 +08:00
<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>