|
|
@@ -209,7 +209,7 @@ const handleSave = async () => {
|
|
|
categoryIds: problemForm.categoryIds || []
|
|
|
}
|
|
|
const res = isEdit.value ? await api.edit1(data) : await api.add1(data)
|
|
|
- if (res?.code === 200) {
|
|
|
+ if (res?.code === 0 || res?.code === 200) {
|
|
|
ElMessage.success(isEdit.value ? '修改成功' : '新增成功')
|
|
|
dialogVisible.value = false
|
|
|
fetchData()
|
|
|
@@ -224,7 +224,7 @@ const handleDelete = (row: ProblemVo) => {
|
|
|
.then(async () => {
|
|
|
try {
|
|
|
const res = await api.deleteByIds({ ids: [row.id!] })
|
|
|
- if (res?.code === 200) {
|
|
|
+ if (res?.code === 0 || res?.code === 200) {
|
|
|
ElMessage.success('删除成功')
|
|
|
fetchData()
|
|
|
}
|
|
|
@@ -244,7 +244,7 @@ const handleBatchDelete = () => {
|
|
|
try {
|
|
|
const ids = selectedRows.value.map((r) => r.id).filter((id): id is number => id !== undefined)
|
|
|
const res = await api.deleteByIds({ ids })
|
|
|
- if (res?.code === 200) {
|
|
|
+ if (res?.code === 0 || res?.code === 200) {
|
|
|
ElMessage.success('删除成功')
|
|
|
selectedRows.value = []
|
|
|
fetchData()
|
|
|
@@ -267,9 +267,10 @@ const openDetail = (row: ProblemVo) => {
|
|
|
const id = row.id
|
|
|
if (id === undefined) return
|
|
|
currentProblemId.value = id
|
|
|
+ detail.value = { title: row.title }
|
|
|
detailTab.value = 'cases'
|
|
|
detailVisible.value = true
|
|
|
- loadDetail(id)
|
|
|
+ loadDetail(id).catch(() => {})
|
|
|
}
|
|
|
|
|
|
// 样例
|
|
|
@@ -306,10 +307,10 @@ const saveCase = async () => {
|
|
|
sortOrder: caseForm.sortOrder
|
|
|
}
|
|
|
const res = caseForm.id ? await api.updateCase(data) : await api.addCase(currentProblemId.value!, data)
|
|
|
- if (res?.code === 200) {
|
|
|
+ if (res?.code === 0 || res?.code === 200) {
|
|
|
ElMessage.success('保存成功')
|
|
|
caseDialogVisible.value = false
|
|
|
- loadDetail(currentProblemId.value!)
|
|
|
+ loadDetail(currentProblemId.value!).catch(() => {})
|
|
|
}
|
|
|
} catch {
|
|
|
}
|
|
|
@@ -321,9 +322,9 @@ const deleteCase = (row: ProblemCaseVo) => {
|
|
|
.then(async () => {
|
|
|
try {
|
|
|
const res = await api.deleteCase({ id: row.id! })
|
|
|
- if (res?.code === 200) {
|
|
|
+ if (res?.code === 0 || res?.code === 200) {
|
|
|
ElMessage.success('删除成功')
|
|
|
- loadDetail(currentProblemId.value!)
|
|
|
+ loadDetail(currentProblemId.value!).catch(() => {})
|
|
|
}
|
|
|
} catch {
|
|
|
}
|
|
|
@@ -365,10 +366,10 @@ const saveTest = async () => {
|
|
|
isHidden: testForm.isHidden as ProblemTestDto['isHidden']
|
|
|
}
|
|
|
const res = testForm.id ? await api.updateTest(data) : await api.addTest(currentProblemId.value!, data)
|
|
|
- if (res?.code === 200) {
|
|
|
+ if (res?.code === 0 || res?.code === 200) {
|
|
|
ElMessage.success('保存成功')
|
|
|
testDialogVisible.value = false
|
|
|
- loadDetail(currentProblemId.value!)
|
|
|
+ loadDetail(currentProblemId.value!).catch(() => {})
|
|
|
}
|
|
|
} catch {
|
|
|
}
|
|
|
@@ -380,9 +381,9 @@ const deleteTest = (row: ProblemTestVo) => {
|
|
|
.then(async () => {
|
|
|
try {
|
|
|
const res = await api.deleteTest({ id: row.id! })
|
|
|
- if (res?.code === 200) {
|
|
|
+ if (res?.code === 0 || res?.code === 200) {
|
|
|
ElMessage.success('删除成功')
|
|
|
- loadDetail(currentProblemId.value!)
|
|
|
+ loadDetail(currentProblemId.value!).catch(() => {})
|
|
|
}
|
|
|
} catch {
|
|
|
}
|
|
|
@@ -403,7 +404,7 @@ const toggleTestHidden = async (row: ProblemTestVo, val: number) => {
|
|
|
isHidden: val as ProblemTestDto['isHidden']
|
|
|
}
|
|
|
const res = await api.updateTest(data)
|
|
|
- if (res?.code === 200) {
|
|
|
+ if (res?.code === 0 || res?.code === 200) {
|
|
|
ElMessage.success('更新成功')
|
|
|
}
|
|
|
} catch {
|
|
|
@@ -415,6 +416,18 @@ const handleSelectionChange = (rows: ProblemVo[]) => {
|
|
|
selectedRows.value = rows
|
|
|
}
|
|
|
|
|
|
+const handleDialogClosed = () => {
|
|
|
+ formRef.value?.resetFields()
|
|
|
+}
|
|
|
+
|
|
|
+const handleCaseDialogClosed = () => {
|
|
|
+ caseFormRef.value?.resetFields()
|
|
|
+}
|
|
|
+
|
|
|
+const handleTestDialogClosed = () => {
|
|
|
+ testFormRef.value?.resetFields()
|
|
|
+}
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
loadCategories()
|
|
|
fetchData()
|
|
|
@@ -491,7 +504,7 @@ onMounted(() => {
|
|
|
<el-table-column label="操作" width="200" align="center" fixed="right">
|
|
|
<template #default="{ row }">
|
|
|
<el-button type="primary" link @click="openDetail(row)">
|
|
|
- <el-icon><View /></el-icon>题目评测用例
|
|
|
+ <el-icon><View /></el-icon>样例与用例
|
|
|
</el-button>
|
|
|
<el-button type="primary" link @click="handleEdit(row)">
|
|
|
<el-icon><Edit /></el-icon>编辑
|
|
|
@@ -517,7 +530,7 @@ onMounted(() => {
|
|
|
</el-card>
|
|
|
|
|
|
<!-- 新增/编辑题目 -->
|
|
|
- <el-dialog v-model="dialogVisible" width="960px" draggable>
|
|
|
+ <el-dialog v-model="dialogVisible" width="960px" draggable @closed="handleDialogClosed">
|
|
|
<template #header>
|
|
|
<div class="dialog-header">{{ dialogTitle }}</div>
|
|
|
</template>
|
|
|
@@ -575,9 +588,9 @@ onMounted(() => {
|
|
|
</el-dialog>
|
|
|
|
|
|
<!-- 详情弹窗(样例 + 评测用例) -->
|
|
|
- <el-dialog v-model="detailVisible" :title="`题目详情 - ${detail.title || ''}`" width="900px" draggable>
|
|
|
+ <el-dialog v-model="detailVisible" :title="`样例与评测用例 - ${detail.title || ''}`" width="900px" draggable>
|
|
|
<el-tabs v-model="detailTab">
|
|
|
- <el-tab-pane label="测试样例" name="cases">
|
|
|
+ <el-tab-pane label="题目样例" name="cases">
|
|
|
<div class="sub-toolbar">
|
|
|
<el-button type="primary" size="small" @click="openCaseAdd">
|
|
|
<el-icon class="el-icon--left"><Plus /></el-icon>新增样例
|
|
|
@@ -632,7 +645,7 @@ onMounted(() => {
|
|
|
</el-dialog>
|
|
|
|
|
|
<!-- 样例编辑 -->
|
|
|
- <el-dialog v-model="caseDialogVisible" :title="caseForm.id ? '编辑样例' : '新增样例'" width="700px" draggable>
|
|
|
+ <el-dialog v-model="caseDialogVisible" :title="caseForm.id ? '编辑样例' : '新增样例'" width="700px" draggable @closed="handleCaseDialogClosed">
|
|
|
<el-form ref="caseFormRef" :model="caseForm" :rules="caseRules" label-position="top">
|
|
|
<el-form-item label="序号">
|
|
|
<el-input-number v-model="caseForm.sortOrder" :min="1" />
|
|
|
@@ -656,7 +669,7 @@ onMounted(() => {
|
|
|
</el-dialog>
|
|
|
|
|
|
<!-- 评测用例编辑 -->
|
|
|
- <el-dialog v-model="testDialogVisible" :title="testForm.id ? '编辑评测用例' : '新增评测用例'" width="560px" draggable>
|
|
|
+ <el-dialog v-model="testDialogVisible" :title="testForm.id ? '编辑评测用例' : '新增评测用例'" width="560px" draggable @closed="handleTestDialogClosed">
|
|
|
<el-form ref="testFormRef" :model="testForm" :rules="testRules" label-position="top">
|
|
|
<el-form-item label="序号">
|
|
|
<el-input-number v-model="testForm.sortOrder" :min="1" />
|