新增题目完成

This commit is contained in:
jiayuqi7813
2022-07-14 00:24:13 +08:00
parent 77f146040f
commit c18c63804f
3 changed files with 191 additions and 3 deletions

View File

@@ -1,6 +1,109 @@
<template>
<el-row class="row-bg" justify="center">
<el-col :span="20">
<!--编辑题目的dialog-->
<el-dialog v-model="editchallengeVisible" title="编辑题目">
<el-form :model="formData" ref="vForm" label-position="left" label-width="80px"
size="default" >
<el-form-item label="标题" prop="name">
<el-input v-model="formData.name" placeholder="题目名"></el-input>
</el-form-item>
<el-form-item label="分数" prop="score">
<el-input v-model="formData.score" placeholder="分数"></el-input>
</el-form-item>
<el-form-item label="题目描述" prop="description">
<el-input v-model="formData.description" placeholder="题目描述"></el-input>
</el-form-item>
<el-form-item label="题目类型" prop="category">
<el-input v-model="formData.category" placeholder="题目类型"></el-input>
</el-form-item>
<el-form-item label="flag" prop="flag">
<el-input v-model="formData.flag" placeholder="flag"></el-input>
</el-form-item>
<el-form-item label="题目链接" prop="attachment">
<el-input v-model="formData.attachment[0]" placeholder="题目链接"></el-input>
</el-form-item>
<el-form-item label="题目附件" prop="attachment">
<el-input v-model="formData.attachment[1]" placeholder="题目附件"></el-input>
</el-form-item>
<el-form-item label="tags" prop="tags">
<el-input v-model="formData.tags" placeholder="标签以逗号间隔"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addHintsConfig">新增提示</el-button>
</el-form-item>
<el-row :gutter="24" v-for="(item, index) in formData.hints">
<el-col :span="15">
<el-form-item :label="'hint'+(index+1)" prop="hints">
<el-input v-model="formData.hints[index]" placeholder="提示"></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-button type="danger" @click="removeHintsConfig(index)">删除</el-button>
</el-col>
</el-row>
<el-form-item label="是否可见" prop="visible">
<el-input v-model="formData.visible" placeholder="是否可见(1是可见,0为不可见)"></el-input>
</el-form-item>
<el-button type="primary" @click="submitChallenge()">提交</el-button>
</el-form>
</el-dialog>
<!--新建题目的dialog-->
<el-dialog v-model="addChallengedialogVisible" title="新建题目">
<el-form :model="challData" ref="vForm" label-position="left" label-width="80px"
size="default" >
<el-form-item label="标题" prop="name">
<el-input v-model="challData.name" placeholder="题目名"></el-input>
</el-form-item>
<el-form-item label="分数" prop="score">
<el-input v-model="challData.score" placeholder="分数"></el-input>
</el-form-item>
<el-form-item label="题目描述" prop="description">
<el-input v-model="challData.description" placeholder="题目描述"></el-input>
</el-form-item>
<el-form-item label="题目类型" prop="category">
<el-input v-model="challData.category" placeholder="题目类型"></el-input>
</el-form-item>
<el-form-item label="flag" prop="flag">
<el-input v-model="challData.flag" placeholder="flag"></el-input>
</el-form-item>
<el-form-item label="题目链接" prop="attachment">
<el-input v-model="challData.attachment[0]" placeholder="题目链接"></el-input>
</el-form-item>
<el-form-item label="题目附件" prop="attachment">
<el-input v-model="challData.attachment[1]" placeholder="题目附件"></el-input>
</el-form-item>
<el-form-item label="tags" prop="tags">
<el-input v-model="challData.tags" placeholder="标签以逗号间隔"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addChallengeHintsConfig">新增提示</el-button>
</el-form-item>
<el-row :gutter="24" v-for="(item, index) in challData.hints">
<el-col :span="15">
<el-form-item :label="'hint'+(index+1)" prop="hints">
<el-input v-model="challData.hints[index]" placeholder="提示"></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-button type="danger" @click="removeChallengeHintsConfig(index)">删除</el-button>
</el-col>
</el-row>
<el-form-item label="是否可见" prop="visible">
<el-input v-model="challData.visible" placeholder="是否可见(1是可见,0为不可见)"></el-input>
</el-form-item>
<el-button type="primary" @click="addChallenge()">提交</el-button>
</el-form>
</el-dialog>
<el-button type="primary" @click="addChallengedialogVisible=true">新增题目</el-button>
<el-table :data="data" row-key="id" style="width: 100%">
<el-table-column label="id" prop="id" column-key="id"/>
<el-table-column label="名称" prop="name"/>
@@ -16,7 +119,7 @@
/>
<el-table-column fixed="right" label="Operations" width="200">
<template #default="scope">
<el-button link type="primary" size="small" @click="handleEdit(scope.row)"
<el-button link type="primary" size="small" @click="editClick(scope.row)"
>编辑</el-button>
<el-button link type="primary" size="small" @click="handleClick(scope.row)"
>删除</el-button>
@@ -33,7 +136,32 @@ import axios from "axios";
export default{
data(){
return{
tmpid:0,
formData:{
name: "time",
score: 1000,
flag: "flag{this_is_flag}",
description: "测试题",
attachment: [],
category: "Web",
tags: "checkin,ssrf",
hints: [],
visible: 1
},
challData:{
name: "",
score: 0,
flag: "",
description: "",
attachment: [],
category: "",
tags: "",
hints: [],
visible: 0
},
data:[],
editchallengeVisible:false,
addChallengedialogVisible:false
}
},
mounted(){
@@ -44,6 +172,66 @@ export default{
})
},
methods:{
//删除行
removeHintsConfig(index){
this.formData.hints.splice(index,1);
},
removeChallengeHintsConfig(index){
this.challData.hints.splice(index,1);
},
//新建行
addHintsConfig(){
this.formData.hints.push("");
},
addChallengeHintsConfig(){
this.challData.hints.push("");
},
//新建题目
addChallenge(){
console.log(this.challData);
this.challData.score = parseInt(this.challData.score);
axios.post('/api/v1/admin/challenge',this.challData).then(res => {
console.log(res.data);
if (res.data.code === 200) {
this.addChallengedialogVisible = false;
this.$message({
message: '新增成功',
type: 'success'
});
window.location.reload()
}
})
},
//修改题目
submitChallenge(){
console.log(this.formData);
this.editchallengeVisible=false;
axios.put('/api/v1/admin/challenge/'+this.tmpid,this.formData).then(res => {
if (res.data.code === 200) {
this.$message({
message: '修改成功',
type: 'success'
});
}
})
},
// 通过获取id然后获取修改题目内容
editClick(row){
this.editchallengeVisible = true;
this.tmpid = row.id;
this.formData.name = row.name;
this.formData.score = row.score;
this.formData.flag = row.flag;
this.formData.description = row.description;
this.formData.attachment = row.attachment;
this.formData.category = row.category;
this.formData.tags = row.tags;
this.formData.hints = row.hints;
this.formData.visible = row.visible;
console.log(this.formData);
},
// 通过请求分类api获取分类数据
getfilterCategory() {
let apiArr=[

View File

@@ -3,7 +3,7 @@
<el-col :span="20">
<el-button link type="primary" @click="dialogTableVisible = true"
>添加公告</el-button>
<el-dialog v-model="dialogTableVisible" title="新建标题">
<el-dialog v-model="dialogTableVisible" title="新建公告">
<el-form :model="formData" ref="vForm" label-position="left" label-width="80px"
size="default" >
<el-form-item label="公告标题" prop="title">

View File

@@ -83,7 +83,7 @@
<div class="attachment"><!-- 附件or连接-->
<div v-if="attachment[0]==''" class="link"></div>
<div v-else class="link">
<el-link type="primary" id="link">题目链接</el-link>
<el-link type="primary" id="link">题目链接</el-link>
</div>
<div v-if="attachment.length<2" class="file"></div>
<div v-else class="file">