新增题目完成
This commit is contained in:
@@ -1,6 +1,109 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-row class="row-bg" justify="center">
|
<el-row class="row-bg" justify="center">
|
||||||
<el-col :span="20">
|
<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 :data="data" row-key="id" style="width: 100%">
|
||||||
<el-table-column label="id" prop="id" column-key="id"/>
|
<el-table-column label="id" prop="id" column-key="id"/>
|
||||||
<el-table-column label="名称" prop="name"/>
|
<el-table-column label="名称" prop="name"/>
|
||||||
@@ -16,7 +119,7 @@
|
|||||||
/>
|
/>
|
||||||
<el-table-column fixed="right" label="Operations" width="200">
|
<el-table-column fixed="right" label="Operations" width="200">
|
||||||
<template #default="scope">
|
<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>
|
||||||
<el-button link type="primary" size="small" @click="handleClick(scope.row)"
|
<el-button link type="primary" size="small" @click="handleClick(scope.row)"
|
||||||
>删除</el-button>
|
>删除</el-button>
|
||||||
@@ -33,7 +136,32 @@ import axios from "axios";
|
|||||||
export default{
|
export default{
|
||||||
data(){
|
data(){
|
||||||
return{
|
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:[],
|
data:[],
|
||||||
|
editchallengeVisible:false,
|
||||||
|
addChallengedialogVisible:false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted(){
|
mounted(){
|
||||||
@@ -44,6 +172,66 @@ export default{
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
methods:{
|
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获取分类数据
|
// 通过请求分类api获取分类数据
|
||||||
getfilterCategory() {
|
getfilterCategory() {
|
||||||
let apiArr=[
|
let apiArr=[
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
<el-col :span="20">
|
<el-col :span="20">
|
||||||
<el-button link type="primary" @click="dialogTableVisible = true"
|
<el-button link type="primary" @click="dialogTableVisible = true"
|
||||||
>添加公告</el-button>
|
>添加公告</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"
|
<el-form :model="formData" ref="vForm" label-position="left" label-width="80px"
|
||||||
size="default" >
|
size="default" >
|
||||||
<el-form-item label="公告标题" prop="title">
|
<el-form-item label="公告标题" prop="title">
|
||||||
|
@@ -83,7 +83,7 @@
|
|||||||
<div class="attachment"><!-- 附件or连接-->
|
<div class="attachment"><!-- 附件or连接-->
|
||||||
<div v-if="attachment[0]==''" class="link"></div>
|
<div v-if="attachment[0]==''" class="link"></div>
|
||||||
<div v-else class="link">
|
<div v-else class="link">
|
||||||
<el-link type="primary" id="link">题目链接</el-link>
|
<el-link type="primary" id="link">题目链接</el-link>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="attachment.length<2" class="file"></div>
|
<div v-if="attachment.length<2" class="file"></div>
|
||||||
<div v-else class="file">
|
<div v-else class="file">
|
||||||
|
Reference in New Issue
Block a user