commit
df62e6fb3e
|
@ -31,6 +31,7 @@
|
||||||
|
|
||||||
/* 面板 */
|
/* 面板 */
|
||||||
.admin-content {
|
.admin-content {
|
||||||
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column; /* 纵向排列 */
|
flex-direction: column; /* 纵向排列 */
|
||||||
margin: 0 2vw 2vw;
|
margin: 0 2vw 2vw;
|
||||||
|
@ -48,7 +49,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-admin {
|
.card-admin {
|
||||||
width: 83vw;
|
width: 100%;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
box-shadow: 0px 4px 10px 0 rgba(0,0,0,0.15);
|
box-shadow: 0px 4px 10px 0 rgba(0,0,0,0.15);
|
||||||
margin-bottom: 3vw;
|
margin-bottom: 3vw;
|
||||||
|
|
|
@ -28,7 +28,10 @@
|
||||||
<i class="el-icon-user-solid"></i>
|
<i class="el-icon-user-solid"></i>
|
||||||
<span slot="title">用户权限管理</span>
|
<span slot="title">用户权限管理</span>
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
|
<el-menu-item index="compManage">
|
||||||
|
<i class="el-icon-tickets"></i>
|
||||||
|
<span slot="title">竞赛管理</span>
|
||||||
|
</el-menu-item>
|
||||||
<!-- </el-submenu>-->
|
<!-- </el-submenu>-->
|
||||||
</el-menu>
|
</el-menu>
|
||||||
</div>
|
</div>
|
||||||
|
@ -61,6 +64,9 @@ export default {
|
||||||
case "userManage":
|
case "userManage":
|
||||||
pageUtils.openPage(this.$router,"/admin/userManage")
|
pageUtils.openPage(this.$router,"/admin/userManage")
|
||||||
break;
|
break;
|
||||||
|
case "compManage":
|
||||||
|
pageUtils.openPage(this.$router,"/admin/compManage")
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -82,6 +88,7 @@ export default {
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.el-menu-item {
|
.el-menu-item {
|
||||||
|
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
font-size: 0.9rem !important;
|
font-size: 0.9rem !important;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,17 +4,24 @@
|
||||||
<el-image :src="banner" style="width: 100%; height: auto;"/>
|
<el-image :src="banner" style="width: 100%; height: auto;"/>
|
||||||
|
|
||||||
<!-- 用户信息 -->
|
<!-- 用户信息 -->
|
||||||
<div class="user-info">
|
<div class="user-info" v-if="isLogin">
|
||||||
<el-dropdown class="user-info-dropdown" trigger="hover">
|
<el-dropdown class="user-info-dropdown" trigger="hover">
|
||||||
<span class="el-dropdown-link"><img :src="userAvatar" /></span>
|
<span class="el-dropdown-link"><img :src="userAvatar" /></span>
|
||||||
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-menu slot="dropdown">
|
||||||
<el-dropdown-item>userName</el-dropdown-item> <!-- 用户名 -->
|
<el-dropdown-item>{{userName}}</el-dropdown-item> <!-- 用户名 -->
|
||||||
<!-- <el-dropdown-item>{{ userName }}</el-dropdown-item> -->
|
<!-- <el-dropdown-item>{{ userName }}</el-dropdown-item> -->
|
||||||
<el-dropdown-item divided @click.native="logout()">退出登录</el-dropdown-item>
|
<el-dropdown-item divided @click.native="logout()">退出登录</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="user-info" v-if="!isLogin">
|
||||||
|
<a style="color: white; cursor: pointer" @click="toLogin()">登录</a>
|
||||||
|
<a style="color: white;"> / </a>
|
||||||
|
<a style="color: white;cursor: pointer" @click="toRes()">注册</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<!--导航栏-->
|
<!--导航栏-->
|
||||||
<!--TODO: 需要根据设定动态更改-->
|
<!--TODO: 需要根据设定动态更改-->
|
||||||
<el-menu :default-active="activeIndex" class="nav" mode="horizontal" @select="handleSelect">
|
<el-menu :default-active="activeIndex" class="nav" mode="horizontal" @select="handleSelect">
|
||||||
|
@ -42,13 +49,15 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import pageUtils from "../utils/pageUtils";
|
import pageUtils from "../utils/pageUtils";
|
||||||
|
import {Message} from "element-ui";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Header",
|
name: "Header",
|
||||||
|
|
||||||
data(){
|
data(){
|
||||||
return {
|
return {
|
||||||
banner: require("@/assets/logo/banner.jpg"),
|
banner: "",
|
||||||
osredmLogo: require("@/assets/logo/osredmLogo.svg"),
|
osredmLogo: require("@/assets/logo/osredmLogo.svg"),
|
||||||
activeIndex: "", /* 启动默认显示页 */
|
activeIndex: "", /* 启动默认显示页 */
|
||||||
|
|
||||||
|
@ -56,6 +65,7 @@ export default {
|
||||||
userPass: "",
|
userPass: "",
|
||||||
userAvatar: "", /* 用户头像 */
|
userAvatar: "", /* 用户头像 */
|
||||||
rankIf: true, /* 权限识别 */
|
rankIf: true, /* 权限识别 */
|
||||||
|
isLogin: false // 是否登录
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -108,10 +118,11 @@ export default {
|
||||||
type: "warning",
|
type: "warning",
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
sessionStorage.removeItem("name");
|
localStorage.removeItem("systemToken");
|
||||||
sessionStorage.removeItem("pass");
|
localStorage.removeItem("username");
|
||||||
sessionStorage.removeItem("rank");
|
localStorage.removeItem("userId");
|
||||||
this.$router.push("/login");
|
localStorage.removeItem("role");
|
||||||
|
pageUtils.openPage(this.$router,"/" +this.$route.params.compId +"/login") //跳转至主页
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
},
|
},
|
||||||
|
@ -125,14 +136,88 @@ export default {
|
||||||
getPath(){
|
getPath(){
|
||||||
var path = this.$route.path
|
var path = this.$route.path
|
||||||
this.activeIndex = path.split("/")[2]
|
this.activeIndex = path.split("/")[2]
|
||||||
|
},
|
||||||
|
|
||||||
|
// 初始化页面 banner图加载 视图数据加载
|
||||||
|
initPage(){
|
||||||
|
var compId = this.$route.params.compId
|
||||||
|
var compInfo = {
|
||||||
|
compId
|
||||||
|
}
|
||||||
|
this.$api.getComp(compInfo).then((res)=>{
|
||||||
|
if (res.status === 0) {
|
||||||
|
//存在竞赛 但是要检测是否正式上线
|
||||||
|
if (res.data.online === true) {
|
||||||
|
//正式上线 可以显示页面
|
||||||
|
|
||||||
|
//保存banner
|
||||||
|
this.banner = res.data.compBanner
|
||||||
|
}else {
|
||||||
|
// 未正式上线,需要拦截等操作,跳转404
|
||||||
|
Message.warning("该竞赛还未上线");
|
||||||
|
//TODO: 可添加判断是否为白名单用户进行测试工作
|
||||||
|
this.$router.push({
|
||||||
|
path: '/404'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}else {
|
||||||
|
// 不存在该竞赛 提示 并跳转404
|
||||||
|
Message.warning("不存在该竞赛");
|
||||||
|
this.$router.push({
|
||||||
|
path: '/404'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 用户登录状态判断
|
||||||
|
userStateCheck(){
|
||||||
|
/**
|
||||||
|
* 1. 有信息 拿到token userId 去获取用户信息
|
||||||
|
* 2. 无信息 提示用户登录
|
||||||
|
*/
|
||||||
|
let token = localStorage.getItem("systemToken")
|
||||||
|
let userId = localStorage.getItem("userId")
|
||||||
|
if (userId != null && token != null && userId !== '' && token !== '') {
|
||||||
|
// 获取用户信息
|
||||||
|
var user = {
|
||||||
|
userId
|
||||||
|
}
|
||||||
|
this.$api.getUserDataByUserId(user).then((res) =>{
|
||||||
|
console.log(res)
|
||||||
|
if (res.status == 0) {
|
||||||
|
// 查询成功
|
||||||
|
this.userAvatar = res.data.userDetails.profilePhoto
|
||||||
|
this.userName = res.data.user.name
|
||||||
|
this.isLogin = true
|
||||||
|
}else {
|
||||||
|
Message.warning("登录失败,请重新登录")
|
||||||
|
}
|
||||||
|
}).catch(function (res){
|
||||||
|
console.log(res)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
console.log(token)
|
||||||
|
console.log(userId)
|
||||||
|
},
|
||||||
|
toLogin(){
|
||||||
|
pageUtils.openPage(this.$router,"/" +this.$route.params.compId +"/login")
|
||||||
|
|
||||||
|
},
|
||||||
|
toRes(){
|
||||||
|
pageUtils.openPage(this.$router,"/" +this.$route.params.compId +"/register")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted(){
|
mounted(){
|
||||||
|
this.userStateCheck()
|
||||||
|
this.initPage();
|
||||||
|
|
||||||
|
//登录相关处理
|
||||||
|
|
||||||
this.userName = sessionStorage.getItem("name");
|
|
||||||
this.userPass = sessionStorage.getItem("pass");
|
this.userPass = sessionStorage.getItem("pass");
|
||||||
this.userAvatar = require("@/assets/logo/user.jpg");
|
|
||||||
/* var userRank = sessionStorage.getItem("rank");
|
/* var userRank = sessionStorage.getItem("rank");
|
||||||
if (userRank == 1) {
|
if (userRank == 1) {
|
||||||
this.rankIf = true;
|
this.rankIf = true;
|
||||||
|
|
|
@ -100,9 +100,9 @@ export default {
|
||||||
Message.warning("用户名或密码错误")
|
Message.warning("用户名或密码错误")
|
||||||
}else {
|
}else {
|
||||||
localStorage.setItem("systemToken",res.token)
|
localStorage.setItem("systemToken",res.token)
|
||||||
sessionStorage.setItem("username", res.username);
|
localStorage.setItem("username", res.username);
|
||||||
sessionStorage.setItem("userId", res.userId);
|
localStorage.setItem("userId", res.userId);
|
||||||
sessionStorage.setItem("role", res.auth.authority);
|
localStorage.setItem("role", res.auth.authority);
|
||||||
pageUtils.openPage(this.$router,"/" +this.$route.params.compId +"/home") //跳转至主页
|
pageUtils.openPage(this.$router,"/" +this.$route.params.compId +"/home") //跳转至主页
|
||||||
}
|
}
|
||||||
// Cookies.set("token", res.data.token); // 放置token到Cookie
|
// Cookies.set("token", res.data.token); // 放置token到Cookie
|
||||||
|
|
|
@ -131,7 +131,7 @@ export default {
|
||||||
Message.warning("系统错误")
|
Message.warning("系统错误")
|
||||||
}else if (res.status === 0){
|
}else if (res.status === 0){
|
||||||
localStorage.setItem("systemToken",res.token)
|
localStorage.setItem("systemToken",res.token)
|
||||||
pageUtils.openPage(this.$router,"/" +this.$route.params.compId +"/home") //跳转至主页
|
pageUtils.openPage(this.$router,"/" +this.$route.params.compId +"/login") //跳转至主页
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,134 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-table
|
||||||
|
:data="tableData.slice((currentPage-1)*PageSize,currentPage*PageSize)"
|
||||||
|
:row-style="{height:'100px'}"
|
||||||
|
style="height: auto"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
fixed
|
||||||
|
prop="compNum"
|
||||||
|
label="序号"
|
||||||
|
min-width="20px">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="compId"
|
||||||
|
label="竞赛ID"
|
||||||
|
min-width="70px">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="compName"
|
||||||
|
label="竞赛名称"
|
||||||
|
min-width="150px">
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column
|
||||||
|
prop="online"
|
||||||
|
label="是否上线"
|
||||||
|
min-width="50px"
|
||||||
|
:filters="[{ text: '已上线', value: true }, { text: '未上线', value: false }]"
|
||||||
|
:filter-method="filterTag"
|
||||||
|
filter-placement="bottom-end">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-tag
|
||||||
|
:type="scope.row.online === true ? 'success' : 'warning'"
|
||||||
|
disable-transitions>{{scope.row.online === true ? '已上线' : '未上线'}}</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column label="操作">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
@click="handleEdit(scope.row.compId, scope.row)">编辑</el-button>
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="danger"
|
||||||
|
@click="handleDelete(scope.row.compId, scope.row)">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<el-pagination @size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
:current-page="currentPage"
|
||||||
|
:page-sizes="pageSizes"
|
||||||
|
:page-size="PageSize" layout="prev, pager, next"
|
||||||
|
background
|
||||||
|
:total="totalCount"
|
||||||
|
style="margin-top: 10px">
|
||||||
|
</el-pagination>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {Message} from "element-ui";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "compTable",
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
tableData:"",
|
||||||
|
// 默认显示第几页
|
||||||
|
currentPage:1,
|
||||||
|
// 总条数,根据接口获取数据长度(注意:这里不能为空)
|
||||||
|
totalCount:1,
|
||||||
|
// 个数选择器(可修改)
|
||||||
|
pageSizes:[1,2,3,4],
|
||||||
|
// 默认每页显示的条数(可修改)
|
||||||
|
PageSize:10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
filterTag(value, row) {
|
||||||
|
return row.online === value;
|
||||||
|
},
|
||||||
|
|
||||||
|
handleEdit(index, row) {
|
||||||
|
console.log(index, row);
|
||||||
|
},
|
||||||
|
handleDelete(index, row) {
|
||||||
|
console.log(index, row);
|
||||||
|
},
|
||||||
|
|
||||||
|
initPage(){
|
||||||
|
this.$api.getAllComp().then((res)=>{
|
||||||
|
console.log(res)
|
||||||
|
if (res.status == 0) {
|
||||||
|
//成功
|
||||||
|
this.tableData = res.data
|
||||||
|
}else if (res.status == 10){
|
||||||
|
Message.warning("系统查询错误")
|
||||||
|
}else {
|
||||||
|
Message.warning("权限不足或其他错误")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// 分页
|
||||||
|
// 每页显示的条数
|
||||||
|
handleSizeChange(val) {
|
||||||
|
// 改变每页显示的条数
|
||||||
|
this.PageSize=val
|
||||||
|
// 注意:在改变每页显示的条数时,要将页码显示到第一页
|
||||||
|
this.currentPage=1
|
||||||
|
},
|
||||||
|
// 显示第几页
|
||||||
|
handleCurrentChange(val) {
|
||||||
|
// 改变默认的页数
|
||||||
|
this.currentPage=val
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.initPage()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,380 @@
|
||||||
|
<template>
|
||||||
|
<div class="admin-content">
|
||||||
|
<el-breadcrumb class="breadcrumb-admin" separator="/">
|
||||||
|
<el-breadcrumb-item>后台管理</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>竞赛管理</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>竞赛详情</el-breadcrumb-item>
|
||||||
|
</el-breadcrumb>
|
||||||
|
<div class="card-admin" style="text-align: left">
|
||||||
|
<div class="card-style">
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<h4>竞赛基本信息</h4>
|
||||||
|
<div>
|
||||||
|
<el-form label-position="right" label-width="80px" :model="compInfo" :rules="rules">
|
||||||
|
<el-form-item label="竞赛ID" prop="compId">
|
||||||
|
<el-input v-model="compInfo.compId"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="竞赛名称" prop="compName">
|
||||||
|
<el-input v-model="compInfo.compName"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="Banner图" prop="compBanner">
|
||||||
|
|
||||||
|
<el-upload
|
||||||
|
class="upload-demo"
|
||||||
|
drag
|
||||||
|
action="https://jsonplaceholder.typicode.com/posts/"
|
||||||
|
multiple>
|
||||||
|
<i class="el-icon-upload"></i>
|
||||||
|
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||||
|
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过2Mb</div>
|
||||||
|
</el-upload>
|
||||||
|
|
||||||
|
<!-- <el-input v-model="compInfo.compBanner"></el-input>-->
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="是否上线" prop="online">
|
||||||
|
<el-switch v-model="compInfo.online"></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" >保存</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<div>
|
||||||
|
<h4>主页信息</h4>
|
||||||
|
<div>
|
||||||
|
<el-form label-position="right" label-width="80px" :model="homeInfo" :rules="rules">
|
||||||
|
|
||||||
|
|
||||||
|
<el-form-item label="首页视频" prop="compBanner">
|
||||||
|
|
||||||
|
<el-upload
|
||||||
|
class="upload-demo"
|
||||||
|
drag
|
||||||
|
action="https://jsonplaceholder.typicode.com/posts/"
|
||||||
|
multiple>
|
||||||
|
<i class="el-icon-upload"></i>
|
||||||
|
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||||
|
<!-- <div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过2Mb</div>-->
|
||||||
|
</el-upload>
|
||||||
|
|
||||||
|
<!-- <el-input v-model="compInfo.compBanner"></el-input>-->
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="是否显示" prop="show">
|
||||||
|
<el-switch v-model="homeInfo.show"></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" >保存</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<div>
|
||||||
|
<h4>赛事指南信息</h4>
|
||||||
|
<div>
|
||||||
|
<el-form label-position="right" label-width="80px" :model="guideInfo" :rules="rules">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<el-form-item label="是否显示" prop="show">
|
||||||
|
<el-switch v-model="guideInfo.show"></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" >保存</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<div>
|
||||||
|
<h4>通知公告信息</h4>
|
||||||
|
<div>
|
||||||
|
<el-form label-position="right" label-width="80px" :model="guideInfo" :rules="rules">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<el-form-item label="是否显示" prop="show">
|
||||||
|
<el-switch v-model="noticeInfo.show"></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" >保存</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<div>
|
||||||
|
<h4>参赛报名信息</h4>
|
||||||
|
<div>
|
||||||
|
<el-form label-position="right" label-width="80px" :model="applyInfo" :rules="rules">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<el-form-item label="是否显示" prop="show">
|
||||||
|
<el-switch disabled v-model="applyInfo.show"></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<div>
|
||||||
|
<h4>提案提交信息</h4>
|
||||||
|
<div>
|
||||||
|
<el-form label-position="right" label-width="80px" :model="submitInfo" :rules="rules">
|
||||||
|
|
||||||
|
<el-form-item label="是否显示" prop="show">
|
||||||
|
<el-switch disabled v-model="submitInfo.show"></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="在线脚本" prop="onlineScript">
|
||||||
|
<el-switch v-model="submitInfo.onlineScript"></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="脚本接口" prop="onlineInter" v-if="submitInfo.onlineScript">
|
||||||
|
<el-input v-model="submitInfo.onlineInter"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" >保存</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<div>
|
||||||
|
<h4>数据统计信息</h4>
|
||||||
|
<div>
|
||||||
|
<el-form label-position="right" label-width="80px" :model="chartInfo" :rules="rules">
|
||||||
|
|
||||||
|
<el-form-item label="是否显示" prop="show">
|
||||||
|
<el-switch v-model="chartInfo.show"></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" >保存</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<div>
|
||||||
|
<h4>排行榜</h4>
|
||||||
|
<div>
|
||||||
|
<el-form label-position="right" label-width="80px" :model="rankInfo" :rules="rules">
|
||||||
|
|
||||||
|
<el-form-item label="是否显示" prop="show">
|
||||||
|
<el-switch v-model="rankInfo.show"></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" >保存</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<div>
|
||||||
|
<h4>交流互动信息</h4>
|
||||||
|
<div>
|
||||||
|
<el-form label-position="right" label-width="100px" :model="chatInfo" :rules="rules">
|
||||||
|
|
||||||
|
<el-form-item label="交流互动图" prop="imgUrl">
|
||||||
|
<el-upload
|
||||||
|
class="upload-demo"
|
||||||
|
drag
|
||||||
|
action="https://jsonplaceholder.typicode.com/posts/"
|
||||||
|
multiple>
|
||||||
|
<i class="el-icon-upload"></i>
|
||||||
|
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="参赛资讯链接" prop="urlOne" >
|
||||||
|
<el-input v-model="chatInfo.urlOne"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="参赛资讯图" prop="logoOne">
|
||||||
|
<el-upload
|
||||||
|
class="upload-icon "
|
||||||
|
drag
|
||||||
|
action="https://jsonplaceholder.typicode.com/posts/"
|
||||||
|
multiple>
|
||||||
|
<i class="el-icon-plus uploader-icon"></i>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="选手交流链接" prop="urlOne" >
|
||||||
|
<el-input v-model="chatInfo.urlTwo"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="选手交流图" prop="logoTwo">
|
||||||
|
<el-upload
|
||||||
|
class="upload-icon "
|
||||||
|
drag
|
||||||
|
action="https://jsonplaceholder.typicode.com/posts/"
|
||||||
|
multiple>
|
||||||
|
<i class="el-icon-plus uploader-icon"></i>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="专家答疑链接" prop="urlOne" >
|
||||||
|
<el-input v-model="chatInfo.urlThree"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="专家答疑图" prop="logoThree">
|
||||||
|
<el-upload
|
||||||
|
class="upload-icon "
|
||||||
|
drag
|
||||||
|
action="https://jsonplaceholder.typicode.com/posts/"
|
||||||
|
multiple>
|
||||||
|
<i class="el-icon-plus uploader-icon"></i>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
|
<el-form-item label="是否显示" prop="show">
|
||||||
|
<el-switch v-model="chatInfo.show"></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" >保存</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<div>
|
||||||
|
<h4>联系我们信息</h4>
|
||||||
|
<div>
|
||||||
|
<el-form label-position="right" label-width="100px" :model="chatInfo" :rules="rules">
|
||||||
|
|
||||||
|
<el-form-item label="联系我们图" prop="imgUrl">
|
||||||
|
<el-upload
|
||||||
|
class="upload-demo"
|
||||||
|
drag
|
||||||
|
action="https://jsonplaceholder.typicode.com/posts/"
|
||||||
|
multiple>
|
||||||
|
<i class="el-icon-upload"></i>
|
||||||
|
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<el-form-item label="是否显示" prop="show">
|
||||||
|
<el-switch v-model="chatInfo.show"></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" >保存</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "CompEdit",
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
rules: {
|
||||||
|
compId: [
|
||||||
|
{ required: true, message: '请输入竞赛ID', trigger: 'blur' },
|
||||||
|
],
|
||||||
|
compName: [
|
||||||
|
{ required: true, message: '请输入竞赛名称', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
|
||||||
|
},
|
||||||
|
compInfo:{
|
||||||
|
compId:'',
|
||||||
|
compName:"",
|
||||||
|
compBanner:"",
|
||||||
|
online:false
|
||||||
|
},
|
||||||
|
homeInfo:{
|
||||||
|
compId:'',
|
||||||
|
video:'',
|
||||||
|
show:false
|
||||||
|
},
|
||||||
|
guideInfo:{
|
||||||
|
content:'',
|
||||||
|
contentMd:'',
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
noticeInfo:{
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
applyInfo:{
|
||||||
|
|
||||||
|
show: true,
|
||||||
|
},
|
||||||
|
submitInfo:{
|
||||||
|
show: true,
|
||||||
|
onlineScript: false,
|
||||||
|
onlineInter:'',
|
||||||
|
},
|
||||||
|
chartInfo:{
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
rankInfo:{
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
chatInfo:{
|
||||||
|
show: true,
|
||||||
|
urlOne:"",
|
||||||
|
urlTwo:"",
|
||||||
|
urlThree:"",
|
||||||
|
logoOne:"",
|
||||||
|
logoTwo:"",
|
||||||
|
logoThree:"",
|
||||||
|
imgUrl:"",
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style src="@/assets/css/common.css" scoped/>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.card-style{
|
||||||
|
margin: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.upload-icon {
|
||||||
|
/deep/.el-upload-dragger{
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
text-align: center;
|
||||||
|
align-items: center; /* 水平居中 */
|
||||||
|
justify-content: center !important; /* 垂直居中 */
|
||||||
|
}
|
||||||
|
.uploader-icon {
|
||||||
|
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
line-height: 100px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,31 @@
|
||||||
|
<template>
|
||||||
|
<div class="admin-content">
|
||||||
|
<el-breadcrumb class="breadcrumb-admin" separator="/">
|
||||||
|
<el-breadcrumb-item>后台管理</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>竞赛管理</el-breadcrumb-item>
|
||||||
|
</el-breadcrumb>
|
||||||
|
|
||||||
|
<div style="margin-bottom: 10px; text-align: right">
|
||||||
|
<el-button plain @click="goToEdit">新增竞赛</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="card-admin">
|
||||||
|
<comp-table style="margin: 20px;">
|
||||||
|
</comp-table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import CompTable from "@/components/compTable";
|
||||||
|
export default {
|
||||||
|
name: "CompManage",
|
||||||
|
components: {CompTable}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style src="@/assets/css/common.css" scoped/>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
|
@ -41,7 +41,7 @@ export default {
|
||||||
data(){
|
data(){
|
||||||
return{
|
return{
|
||||||
data: "",
|
data: "",
|
||||||
videoTitle: "标题",
|
videoTitle: "",
|
||||||
videoSrc: "",
|
videoSrc: "",
|
||||||
videoWidth: "100%",
|
videoWidth: "100%",
|
||||||
contentLoading: true,
|
contentLoading: true,
|
||||||
|
|
|
@ -160,6 +160,22 @@ let routes = [
|
||||||
meta: {
|
meta: {
|
||||||
title: '红山开源社区'
|
title: '红山开源社区'
|
||||||
},
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// 竞赛管理
|
||||||
|
path: "compManage",
|
||||||
|
component: () => import("@/pages/Admin/CompManage"),
|
||||||
|
meta: {
|
||||||
|
title: '红山开源社区'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// 竞赛管理
|
||||||
|
path: "compEdit/:compId",
|
||||||
|
component: () => import("@/pages/Admin/CompEdit"),
|
||||||
|
meta: {
|
||||||
|
title: '红山开源社区'
|
||||||
|
},
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
@ -55,6 +55,17 @@ export const register = data => {
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getUserDataByUserId = data => {
|
||||||
|
return axios({
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
url: '/user/getUserVoByUserId',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
export const chatContentUpdate = data => {
|
export const chatContentUpdate = data => {
|
||||||
return axios({
|
return axios({
|
||||||
|
@ -78,6 +89,16 @@ export const homeContentUpdate = data => {
|
||||||
data
|
data
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getAllComp = () => {
|
||||||
|
return axios({
|
||||||
|
headers:{
|
||||||
|
"Authorization": localStorage.getItem("systemToken")
|
||||||
|
},
|
||||||
|
url: '/admin/getAllComp',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
};
|
||||||
// 默认全部倒出
|
// 默认全部倒出
|
||||||
// 根据需要进行
|
// 根据需要进行
|
||||||
export default {
|
export default {
|
||||||
|
@ -88,5 +109,7 @@ export default {
|
||||||
login,
|
login,
|
||||||
register,
|
register,
|
||||||
chatContentUpdate,
|
chatContentUpdate,
|
||||||
homeContentUpdate
|
homeContentUpdate,
|
||||||
|
getUserDataByUserId,
|
||||||
|
getAllComp
|
||||||
}
|
}
|
Loading…
Reference in New Issue