Skip to content

Commit

Permalink
Merge pull request #14 from vidar-team/dev
Browse files Browse the repository at this point in the history
v0.7.0
  • Loading branch information
wuhan005 authored Aug 13, 2020
2 parents 5ec1d8e + c58abf3 commit 2540d34
Show file tree
Hide file tree
Showing 13 changed files with 775 additions and 144 deletions.
195 changes: 103 additions & 92 deletions dist/dist_gen.go

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
"core-js": "^3.4.4",
"element-ui": "^2.13.0",
"eslint": "^6.8.0",
"js-base64": "^3.4.0",
"qs": "^6.9.4",
"vue": "^2.6.10",
"vue-i18n": "^8.15.4",
"vue-router": "^3.1.5"
Expand Down
9 changes: 9 additions & 0 deletions src/assets/languages/en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@
"team": "Team",
"challenge": "Challenge",
"gamebox": "Gamebox",
"docker": "Container",
"flag": "Flag",
"bulletin": "Bulletin",
"asteroid": "Asteroid",
"webhook": "WebHook",
"manager": "Manager",
"config": "Config",
"logout": "Log out"
},
"bulletin": {
Expand Down Expand Up @@ -193,5 +195,12 @@
"type_game_begin": "Game Begin",
"type_game_pause": "Game Pause",
"type_game_end": "Game End"
},
"config": {
"title": "Title",
"flag_prefix": "Flag Prefix",
"flag_suffix": "Flag Suffix",
"animate_asteroid": "More Animate Asteroid",
"show_others_gamebox": "Show Other Teams' GameBoxes"
}
}
9 changes: 7 additions & 2 deletions src/assets/languages/zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@
"team": "队伍管理",
"challenge": "题目管理",
"gamebox": "靶机管理",
"docker": "容器管理",
"flag": "Flag 管理",
"bulletin": "公告管理",
"asteroid": "Asteroid 大屏管理",
"asteroid": "大屏管理",
"webhook": "WebHook 管理",
"manager": "账号管理",
"config": "配置管理",
Expand Down Expand Up @@ -196,6 +197,10 @@
"type_game_end": "比赛结束时"
},
"config": {
"title": "比赛名"
"title": "比赛名",
"flag_prefix": "Flag 前缀",
"flag_suffix": "Flag 后缀",
"animate_asteroid": "更绚丽的 Asteroid 大屏",
"show_others_gamebox": "队伍靶机相互可见"
}
}
115 changes: 115 additions & 0 deletions src/components/FileSelect.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
<template>
<div>
<el-button type="primary" @click="selectFileDialogVisible = true">{{buttonText}}</el-button>
<el-dialog title="选择文件" :visible.sync="selectFileDialogVisible" :modal="false">
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item v-for="(folder, key) in baseDir.split('/')" v-bind:key="key">
<el-button type="text"
@click="()=>{
baseDir = key === 0 ? '/' : baseDir.split('/').slice(0, key+1).join('/');
getDir();
}">
{{key === 0 ? '/' : folder}}
</el-button>
</el-breadcrumb-item>
<el-button style="float: right;" icon="el-icon-refresh-left" size="small" @click="getDir()"></el-button>
</el-breadcrumb>

<el-table
v-loading="loading"
:data="files"
max-height="400"
style="width: 100%"
@row-click="(row, column, event) => {
if(row.IsDir){getDir(row.Name)}
}"
>
<el-table-column
prop="Name"
label="文件名"
width="180">
<template slot-scope="scope">
<i class="el-icon-folder" v-if="scope.row.IsDir"></i>
<i class="el-icon-document" v-else></i>
{{ scope.row.Name }}
</template>
</el-table-column>
<el-table-column
prop="Size"
label="文件大小"
width="180">
</el-table-column>
<el-table-column
prop="ModTime"
label="修改日期">
<template slot-scope="scope">
{{ utils.TimeStamp2String(scope.row.ModTime) }}
</template>
</el-table-column>
</el-table>

<div slot="footer" class="dialog-footer">
<el-button @click="selectFileDialogVisible = false">取 消</el-button>
<el-button type="primary">选择</el-button>
</div>
</el-dialog>
</div>
</template>

<script>
import qs from 'qs'
export default {
name: "FileSelect",
props: {
buttonText: {
type: String,
default: 'Select...'
},
hidden: {
type: Boolean,
default: false,
},
folderOnly: {
type: Boolean,
default: false,
},
},
data() {
return {
loading: true,
selectFileDialogVisible: false,
baseDir: '',
files: []
}
},
mounted() {
this.getDir()
},
methods: {
getDir(folder = '') {
this.loading = true
let query = {
path: this.baseDir,
folder: folder,
hidden: this.hidden,
folderOnly: this.folderOnly
}
this.utils.GET('/manager/dir?' + qs.stringify(query)).then(res => {
this.baseDir = res.path
this.files = res.files
this.loading = false
}).catch(err => {
this.$message({message: err, type: 'error'})
this.loading = false
})
},
}
}
</script>

<style scoped>
</style>
77 changes: 47 additions & 30 deletions src/components/Header.vue
Original file line number Diff line number Diff line change
@@ -1,41 +1,55 @@
<template>
<el-menu :default-active="this.$route.path" mode="horizontal" :router="true" background-color="#323232"
text-color="#fff" active-text-color="#2194EC">
<el-menu-item>{{ base.Title }}</el-menu-item>
<el-menu-item index="/">{{$t('header.panel')}}</el-menu-item>
<el-menu-item index="/team">{{$t('header.team')}}</el-menu-item>
<el-menu-item index="/challenge">{{$t('header.challenge')}}</el-menu-item>
<el-menu-item index="/gamebox">{{$t('header.gamebox')}}</el-menu-item>
<el-menu-item index="/flag">{{$t('header.flag')}}</el-menu-item>
<el-menu-item index="/bulletin">{{$t('header.bulletin')}}</el-menu-item>
<el-menu-item index="/asteroid">{{$t('header.asteroid')}}</el-menu-item>
<el-menu-item index="/webhook">{{$t('header.webhook')}}</el-menu-item>
<!-- <el-menu-item index="/config">{{$t('header.config')}}</el-menu-item>-->
<el-menu-item index="/manager">{{$t('header.manager')}}</el-menu-item>
<el-menu-item v-if="$route.name !== 'Login'" index="" @click="onLogout">{{$t('header.logout')}}</el-menu-item>
<el-menu-item index="">
<el-dropdown @command="(lang) => this.$i18n.locale = lang" class="height: 100%;">
<span>
{{$i18n.locale}}
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(lang, index) in $i18n.availableLocales" v-bind:key="index"
:command="lang">{{lang}}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-menu-item>
</el-menu>
<div>
<!-- <TaskView :visible="taskVisible" @visibleChange="(val) => {taskVisible = val}"></TaskView>-->
<el-menu :default-active="this.$route.path" mode="horizontal" :router="true" background-color="#323232"
text-color="#fff" active-text-color="#2194EC">
<el-menu-item>{{ base.Title }}</el-menu-item>
<el-menu-item index="/">{{$t('header.panel')}}</el-menu-item>
<el-menu-item index="/team">{{$t('header.team')}}</el-menu-item>
<el-menu-item index="/challenge">{{$t('header.challenge')}}</el-menu-item>
<el-menu-item index="/gamebox">{{$t('header.gamebox')}}</el-menu-item>
<!-- <el-menu-item index="/docker">{{$t('header.docker')}}</el-menu-item>-->
<el-menu-item index="/flag">{{$t('header.flag')}}</el-menu-item>
<el-menu-item index="/bulletin">{{$t('header.bulletin')}}</el-menu-item>
<el-menu-item index="/asteroid">{{$t('header.asteroid')}}</el-menu-item>
<el-menu-item index="/webhook">{{$t('header.webhook')}}</el-menu-item>
<el-menu-item index="/config">{{$t('header.config')}}</el-menu-item>
<el-menu-item index="/manager">{{$t('header.manager')}}</el-menu-item>
<el-menu-item v-if="$route.name !== 'Login'" index="" @click="onLogout">{{$t('header.logout')}}
</el-menu-item>
<el-menu-item index="">
<el-dropdown @command="(lang) => this.$i18n.locale = lang" class="height: 100%;">
<span>
{{$i18n.locale}}
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(lang, index) in $i18n.availableLocales" v-bind:key="index"
:command="lang">{{lang}}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-menu-item>
<!-- <el-menu-item style="float: right;">-->
<!-- <el-badge :value="200" :max="99" class="badge">-->
<!-- <el-button plain size="small" style="margin-top: -20px;" @click="taskVisible = true">任务队列-->
<!-- </el-button>-->
<!-- </el-badge>-->
<!-- </el-menu-item>-->
</el-menu>
</div>
</template>

<script>
// import TaskView from "./TaskView";
export default {
name: "Header",
// components: {TaskView},
data: () => ({
base: {
Title: ''
},
taskVisible: false,
}),
created() {
Expand All @@ -51,11 +65,14 @@
localStorage.removeItem('managerToken')
this.$router.push('/login')
}).catch(err => this.$message.error(err))
}
},
},
}
</script>

<style scoped>
.badge {
margin-top: 10px;
margin-right: 30px;
}
</style>
Loading

0 comments on commit 2540d34

Please sign in to comment.