新增题目完成
This commit is contained in:
@@ -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=[
|
||||
|
@@ -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">
|
||||
|
@@ -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">
|
||||
|
Reference in New Issue
Block a user