FIRST COMMIT
This commit is contained in:
commit
dc1fc0a5bd
3
.browserslistrc
Normal file
3
.browserslistrc
Normal file
@ -0,0 +1,3 @@
|
||||
> 1%
|
||||
last 2 versions
|
||||
not dead
|
5
.editorconfig
Normal file
5
.editorconfig
Normal file
@ -0,0 +1,5 @@
|
||||
[*.{js,jsx,ts,tsx,vue}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
33
.eslintrc.js
Normal file
33
.eslintrc.js
Normal file
@ -0,0 +1,33 @@
|
||||
const IS_PROD = process.env.NODE_ENV === 'production';
|
||||
|
||||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
node: true,
|
||||
},
|
||||
extends: [
|
||||
'plugin:vue/essential',
|
||||
// '@vue/standard',
|
||||
],
|
||||
parserOptions: {
|
||||
parser: 'babel-eslint',
|
||||
},
|
||||
rules: {
|
||||
semi: ['error', 'always'], // 分号
|
||||
camelcase: 'off',
|
||||
'no-new': 'off',
|
||||
'vue/no-unused-components': 'warn',
|
||||
'no-console': IS_PROD ? 'warn' : 'off',
|
||||
'no-debugger': IS_PROD ? 'error' : 'off',
|
||||
'no-unreachable': IS_PROD ? 'error' : 'warn', // 提前return
|
||||
'prefer-promise-reject-errors': 'off',
|
||||
'standard/no-callback-literal': 'off',
|
||||
'no-unused-vars': IS_PROD ? 'error' : 'warn',
|
||||
'comma-dangle': ['error', 'always-multiline'], // 末尾逗号
|
||||
'space-before-function-paren': ['error', {
|
||||
anonymous: 'never',
|
||||
named: 'never',
|
||||
asyncArrow: 'always', // async箭头函数
|
||||
}],
|
||||
},
|
||||
};
|
21
.gitignore
vendored
Normal file
21
.gitignore
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
/dist
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
5
babel.config.js
Normal file
5
babel.config.js
Normal file
@ -0,0 +1,5 @@
|
||||
module.exports = {
|
||||
presets: [
|
||||
'@vue/cli-plugin-babel/preset',
|
||||
],
|
||||
};
|
18
jsconfig.json
Normal file
18
jsconfig.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@/*": [
|
||||
"src/*"
|
||||
]
|
||||
},
|
||||
"target": "ES6",
|
||||
"allowSyntheticDefaultImports": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
],
|
||||
"exclude": [
|
||||
"node_modules"
|
||||
]
|
||||
}
|
17741
package-lock.json
generated
Normal file
17741
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
59
package.json
Normal file
59
package.json
Normal file
@ -0,0 +1,59 @@
|
||||
{
|
||||
"name": "competition-management-system",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"inspect": "vue-cli-service inspect --mode production"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ant-design-vue/pro-layout": "^1.0.8",
|
||||
"@tinymce/tinymce-vue": "^3.2.6",
|
||||
"animate.css": "^4.1.1",
|
||||
"ant-design-vue": "^1.7.4",
|
||||
"axios": "^0.21.1",
|
||||
"core-js": "^3.10.0",
|
||||
"dayjs": "^1.10.4",
|
||||
"element-ui": "^2.15.14",
|
||||
"file-saver": "^2.0.5",
|
||||
"js-cookie": "^2.2.1",
|
||||
"lodash-es": "^4.17.21",
|
||||
"markdown-it": "^14.1.0",
|
||||
"nprogress": "^0.2.0",
|
||||
"qiniu-js": "^3.1.2",
|
||||
"tinymce": "^5.6.2",
|
||||
"vue": "^2.6.12",
|
||||
"vue-animate-number": "^0.4.2",
|
||||
"vue-meta": "^2.4.0",
|
||||
"vue-router": "^3.5.1",
|
||||
"vuedraggable": "^2.24.3",
|
||||
"vuex": "^3.6.2",
|
||||
"webpack-theme-color-replacer": "^1.3.20",
|
||||
"xlsx": "^0.16.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "^4.5.12",
|
||||
"@vue/cli-plugin-eslint": "^4.5.12",
|
||||
"@vue/cli-plugin-router": "^4.5.12",
|
||||
"@vue/cli-plugin-vuex": "^4.5.12",
|
||||
"@vue/cli-service": "^4.5.12",
|
||||
"@vue/eslint-config-standard": "^5.1.2",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"eslint": "^6.7.2",
|
||||
"eslint-plugin-import": "^2.22.1",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"eslint-plugin-promise": "^4.3.1",
|
||||
"eslint-plugin-standard": "^4.1.0",
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"less": "^4.1.1",
|
||||
"less-loader": "^6.2.0",
|
||||
"style-resources-loader": "^1.3.2",
|
||||
"stylus": "^0.54.8",
|
||||
"stylus-loader": "^3.0.2",
|
||||
"vue-cli-plugin-pug": "~2.0.0",
|
||||
"vue-cli-plugin-style-resources-loader": "^0.1.5",
|
||||
"vue-template-compiler": "^2.6.12"
|
||||
}
|
||||
}
|
BIN
public/favicon.ico
Normal file
BIN
public/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
141
public/four.html
Normal file
141
public/four.html
Normal file
@ -0,0 +1,141 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<meta http-equiv="refresh" content="60;url=http://localhost:8080/screen.html">
|
||||
<link rel="stylesheet" href="css/four.css">
|
||||
<link rel="stylesheet" href="./fonts/iconfont.css">
|
||||
<!-- <script src="js/echarts.min.js"></script> -->
|
||||
<script src="js/jquery.min.js"></script>
|
||||
<script src="js/macarons.js"></script>
|
||||
<!-- <script src="js/china.js"></script> -->
|
||||
<script src="js/countUp.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<ul class="nav">
|
||||
|
||||
<li class="drop-down">
|
||||
<a href="#"></a>
|
||||
|
||||
<ul class="drop-down-content">
|
||||
|
||||
<li>
|
||||
<a href="./home.html">自动切换</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="./screen.html">第一屏</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="./thrid.html">第二屏</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li>
|
||||
<a href="./four.html">第三屏</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="./index.html">回到主页</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="first-screen root-wrap">
|
||||
<header>
|
||||
<p style="font-family: '楷体';">竞赛数据统计</p>
|
||||
<!-- <img src="./img/cnonix.png" /> -->
|
||||
<!-- <div class="title_img">
|
||||
<img src="img/title_left_img.png" alt="">
|
||||
</div> -->
|
||||
<!-- <span class="month-tip">2017年1月</span> -->
|
||||
</header>
|
||||
<div class="main clearfix">
|
||||
<!-- 同类图书 -->
|
||||
<div class="aside-left fl">
|
||||
<h3>优秀作品</h3>
|
||||
<ul class="clearfix">
|
||||
</ul>
|
||||
</div>
|
||||
<div class="middle_con fl">
|
||||
<div class="middle_top">
|
||||
<div class="con_left fl">
|
||||
</div>
|
||||
<div class="con_right fl clearfix">
|
||||
<dl class="clearfix">
|
||||
<dt>标签</dt>
|
||||
<dd class="clearfix">
|
||||
<ul class="bookLabel clearfix"></ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="clearfix">
|
||||
<dt class="clearfix">主题词</dt>
|
||||
<dd class="clearfix">
|
||||
<ul class="themaWords clearfix"></ul>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
<div class="con_link">
|
||||
<h3>比赛简介</h3>
|
||||
<div class="link_title link_con">
|
||||
<!-- 钱锺书所著的《围城》是一幅栩栩如生的世井百态图,人生的酸甜苦辣千般滋味均在其中得到了淋漓尽致的体现。钱钟书先生将自己的语言天才并入极其渊博的知识,再添加上一些讽刺主义的幽默调料,以一书而定江山。《围城》显示给我们一个真正的聪明人是怎样看人生,又怎样用所有作家都必得使用的文字来表述自己的“观”和“感”的。 -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="con_link">
|
||||
<h3>比赛流程</h3>
|
||||
<ul class="link_ul">
|
||||
<!-- <li>1.序</li>
|
||||
<li>2.围城</li>
|
||||
<li>3.围城</li>
|
||||
<li>4.记钱钟书与《围城》——杨绛</li> -->
|
||||
</ul>
|
||||
</div>
|
||||
<div class="con_link">
|
||||
<h3>优秀团队介绍</h3>
|
||||
<div class="link_title link_author"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="middle_button">
|
||||
<div class="button_left">
|
||||
<h3>更多比赛</h3>
|
||||
<div class="button_con">
|
||||
<div class="container purchase claefix">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="button_right">
|
||||
<h3>比赛推荐</h3>
|
||||
<div class="button_con">
|
||||
<div class="container jieyue claefix">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aside-right clearfix fl">
|
||||
<div class="con_top clearfix">
|
||||
<h3>选手评价</h3>
|
||||
<div class="aside_con clearfix">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="main-bottom">
|
||||
<span class="line1"></span>
|
||||
<span class="line2"></span>
|
||||
<span class="line3"></span>
|
||||
</div>
|
||||
</div>
|
||||
<script src="js/four.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
41
public/home.html
Normal file
41
public/home.html
Normal file
@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<script src="js/jquery.min.js"></script>
|
||||
<link rel="stylesheet" href="css/iframe.css">
|
||||
<title>大屏</title>
|
||||
</head>
|
||||
<body>
|
||||
<ul class="nav">
|
||||
<li class="drop-down">
|
||||
<a href="#"></a>
|
||||
<ul class="drop-down-content">
|
||||
<li>
|
||||
<a href="./home.html">自动切换</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="./screen.html">第一屏</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="./thrid.html">第二屏</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="./four.html">第三屏</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="./index.html">回到主页</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="home">
|
||||
<iframe id="demo1" src="screen.html" frameborder="0" class="state-01 demo1"></iframe>
|
||||
<iframe id="demo2" src="thrid.html" frameborder="0" class="state-01 demo2"></iframe>
|
||||
<iframe id="demo3" src="four.html" frameborder="0" class="state-01 demo3"></iframe>
|
||||
</div>
|
||||
<script src="js/home.js"></script>
|
||||
</body>
|
||||
</html>
|
148
public/index.html
Normal file
148
public/index.html
Normal file
@ -0,0 +1,148 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel='stylesheet' href='https://onlinephoto.oss-cn-chengdu.aliyuncs.com/hangtian/css/main.min.css' />
|
||||
<link rel='stylesheet' href='https://onlinephoto.oss-cn-chengdu.aliyuncs.com/hangtian/css/style.min.css' />
|
||||
<link rel='stylesheet' href='https://www.wenytao.com/zb_users/theme/cardslee/style/style.css' />
|
||||
<!-- 引入样式 -->
|
||||
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
|
||||
<!-- 引入组件库 -->
|
||||
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<% if (htmlWebpackPlugin.options.cdn)
|
||||
for (const path of htmlWebpackPlugin.options.cdn.css) { %>
|
||||
<link href="<%= path %>" rel="stylesheet">
|
||||
<% } %>
|
||||
<title>Loading...</title>
|
||||
<!-- 首屏动画 -->
|
||||
<style>
|
||||
.first-loading-wrp {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
min-height: 600px;
|
||||
height: 100%
|
||||
}
|
||||
|
||||
.first-loading-wrp>h1 {
|
||||
font-size: 40px
|
||||
}
|
||||
|
||||
.first-loading-wrp .loading-wrp {
|
||||
padding: 98px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center
|
||||
}
|
||||
|
||||
.dot {
|
||||
animation: antRotate 1.2s infinite linear;
|
||||
transform: rotate(45deg);
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
font-size: 32px;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
box-sizing: border-box
|
||||
}
|
||||
|
||||
.dot i {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
position: absolute;
|
||||
display: block;
|
||||
background-color: #1890ff;
|
||||
border-radius: 100%;
|
||||
transform: scale(.75);
|
||||
transform-origin: 50% 50%;
|
||||
opacity: .3;
|
||||
animation: antSpinMove 1s infinite linear alternate
|
||||
}
|
||||
|
||||
.dot i:nth-child(1) {
|
||||
top: 0;
|
||||
left: 0
|
||||
}
|
||||
|
||||
.dot i:nth-child(2) {
|
||||
top: 0;
|
||||
right: 0;
|
||||
-webkit-animation-delay: .4s;
|
||||
animation-delay: .4s
|
||||
}
|
||||
|
||||
.dot i:nth-child(3) {
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
-webkit-animation-delay: .8s;
|
||||
animation-delay: .8s
|
||||
}
|
||||
|
||||
.dot i:nth-child(4) {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
-webkit-animation-delay: 1.2s;
|
||||
animation-delay: 1.2s
|
||||
}
|
||||
|
||||
@keyframes antRotate {
|
||||
to {
|
||||
-webkit-transform: rotate(405deg);
|
||||
transform: rotate(405deg)
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes antRotate {
|
||||
to {
|
||||
-webkit-transform: rotate(405deg);
|
||||
transform: rotate(405deg)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes antSpinMove {
|
||||
to {
|
||||
opacity: 1
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes antSpinMove {
|
||||
to {
|
||||
opacity: 1
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app">
|
||||
<!-- 首屏加载动画 -->
|
||||
<div class="first-loading-wrp">
|
||||
<h1 style="font-size: 60px;">校园信息化-竞赛管理系统</h1>
|
||||
<div class="loading-wrp">
|
||||
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;font-size: 30px;">陕西科技大学镐京学院</div>
|
||||
</div>
|
||||
</div>
|
||||
<style>
|
||||
@media (min-width: 1240px){
|
||||
.container {
|
||||
max-width: none;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
<!-- built files will be auto injected -->
|
||||
<%
|
||||
if (htmlWebpackPlugin.options.cdn)
|
||||
for (const path of htmlWebpackPlugin.options.cdn.js) { %>
|
||||
<script src="<%= path %>"></script>
|
||||
<% } %>
|
||||
</body>
|
||||
</html>
|
BIN
public/logo.png
Normal file
BIN
public/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 93 KiB |
405
public/screen.html
Normal file
405
public/screen.html
Normal file
@ -0,0 +1,405 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<link rel="stylesheet" href="css/index.css">
|
||||
<script src="js/echarts.min.js"></script>
|
||||
<script src="js/jquery.min.js"></script>
|
||||
<script src="js/macarons.js"></script>
|
||||
<script src="js/china.js"></script>
|
||||
<script src="js/countUp.js"></script>
|
||||
<script src="js/data01.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<ul class="nav">
|
||||
|
||||
<li class="drop-down">
|
||||
<a href="#"></a>
|
||||
|
||||
<ul class="drop-down-content">
|
||||
|
||||
<li>
|
||||
<a href="./home.html">自动切换</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="./screen.html">第一屏</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="./thrid.html">第二屏</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li>
|
||||
<a href="./four.html">第三屏</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="./index.html">回到主页</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="first-screen root-wrap">
|
||||
<header>
|
||||
<!-- <img src="img/title1.png"> -->
|
||||
<div class="gifImg">
|
||||
<span class="month-tip">竞赛管理大数据平台</span>
|
||||
</div>
|
||||
<!-- <div class="title_img"><img src="img/title_left_img.png" alt=""> </div> -->
|
||||
</header>
|
||||
<div class="main clearfix">
|
||||
<div class="aside-left fl">
|
||||
<div class="top left-top">
|
||||
<h3>作品排行</h3>
|
||||
<div class="tit clearfix">
|
||||
<span class="ranking fl"></span>
|
||||
<span class="name fl">作品名</span>
|
||||
<span class="company fl">制作团队</span>
|
||||
<span class="hot fl">作品评分</span>
|
||||
</div>
|
||||
<div class="con-wrap">
|
||||
<div class="over-wrap">
|
||||
<ul class="con">
|
||||
<li class="active">
|
||||
<div class="book-rank clearfix">
|
||||
<span class="ranking fl">1</span>
|
||||
<span class="name fl">基于CNN的神经网络的农业小车</span>
|
||||
<span class="company fl">陈冰</span>
|
||||
<span class="hot fl">9.33</span>
|
||||
</div>
|
||||
<div class="book-show clearfix">
|
||||
<div class="img-box fl">
|
||||
<img src="" alt="">
|
||||
</div>
|
||||
<div class="content fl">
|
||||
<p>
|
||||
<span>作者:</span>
|
||||
<span class="authors">(瑞典)林格伦</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>作品编号:</span>
|
||||
<span class="isbn">9787544270878</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>参赛日期:</span>
|
||||
<span class="pub-date">2014年05月</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>热度</span>
|
||||
<span class="pricing">¥39.50</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="book-rank clearfix">
|
||||
<span class="ranking fl">2</span>
|
||||
<span class="name fl">窗边的小豆豆</span>
|
||||
<span class="company fl">人民文学出版社</span>
|
||||
<span class="hot fl">9.32</span>
|
||||
</div>
|
||||
<div class="book-show clearfix">
|
||||
<div class="img-box fl">
|
||||
<img src="" alt="">
|
||||
</div>
|
||||
<div class="content fl">
|
||||
<p>
|
||||
<span>作者:</span>
|
||||
<span class="authors">(日)黑柳彻子</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>作品编号:</span>
|
||||
<span class="isbn">9787208061644</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>参赛日期</span>
|
||||
<span class="pub-date">2006年05月</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>热度</span>
|
||||
<span class="pricing">¥29.00</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="book-rank clearfix">
|
||||
<span class="ranking fl">3</span>
|
||||
<span class="name fl">我的第一本地理启蒙书</span>
|
||||
<span class="company fl">社会科学文献出版社</span>
|
||||
<span class="hot fl">9.31</span>
|
||||
</div>
|
||||
<div class="book-show clearfix">
|
||||
<div class="img-box fl">
|
||||
<img src="" alt="">
|
||||
</div>
|
||||
<div class="content fl">
|
||||
<p>
|
||||
<span>作者:</span>
|
||||
<span class="authors">郑利强</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>作品编号:</span>
|
||||
<span class="isbn">9787550263932</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>参赛日期日期:</span>
|
||||
<span class="pub-date">2016年01月</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>热度:</span>
|
||||
<span class="pricing">¥39.80</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="book-rank clearfix">
|
||||
<span class="ranking fl">4</span>
|
||||
<span class="name fl">神奇校车·桥梁书版</span>
|
||||
<span class="company fl">人民出版社</span>
|
||||
<span class="hot fl">9.30</span>
|
||||
</div>
|
||||
<div class="book-show clearfix">
|
||||
<div class="img-box fl">
|
||||
<img src="" alt="">
|
||||
</div>
|
||||
<div class="content fl">
|
||||
<p>
|
||||
<span>作者:</span>
|
||||
<span class="authors">乔安娜柯尔</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>作品编号:</span>
|
||||
<span class="isbn">9787100077040</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>参数日期:</span>
|
||||
<span class="pub-date">2011年06月</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>热度:</span>
|
||||
<span class="pricing">¥24.90</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="book-rank clearfix">
|
||||
<span class="ranking fl">5</span>
|
||||
<span class="name fl">不一样的卡梅拉手绘本</span>
|
||||
<span class="company fl">高等教育出版社</span>
|
||||
<span class="hot fl">9.29</span>
|
||||
</div>
|
||||
<div class="book-show clearfix">
|
||||
<div class="img-box fl">
|
||||
<img src="" alt="">
|
||||
</div>
|
||||
<div class="content fl">
|
||||
<p>
|
||||
<span>作者:</span>
|
||||
<span class="authors">法)克利斯提昂 约里波瓦著郑迪蔚</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>作品编号:</span>
|
||||
<span class="isbn">21005473</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>参赛日期:</span>
|
||||
<span class="pub-date">2011年01月</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>热度:</span>
|
||||
<span class="pricing">¥132.00</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- pressRanking -->
|
||||
<div class="bottom left-bottom">
|
||||
<div class="bottom-in">
|
||||
<h3>中国大学生竞赛排行榜</h3>
|
||||
<div class="tit clearfix">
|
||||
<span class="ranking fl">排名</span>
|
||||
<span class="short fl">竞赛名称</span>
|
||||
<span class="hot fl">综合评分</span>
|
||||
</div>
|
||||
<ul class="con">
|
||||
<li>
|
||||
<div class="book-rank clearfix">
|
||||
<span class="ranking fl">1</span>
|
||||
<span class="short fl">全国大学生数学建模竞赛</span>
|
||||
<span class="hot fl">9.85</span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="book-rank clearfix">
|
||||
<span class="ranking fl">2</span>
|
||||
<span class="short fl">全国大学生电子设计竞赛</span>
|
||||
<span class="hot fl">9.64</span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="book-rank clearfix">
|
||||
<span class="ranking fl">3</span>
|
||||
<span class="short fl">中国大学生程序设计竞赛</span>
|
||||
<span class="hot fl">9.57</span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="book-rank clearfix">
|
||||
<span class="ranking fl">4</span>
|
||||
<span class="short fl">全国大学生机械创新设计大赛</span>
|
||||
<span class="hot fl">9.43</span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="book-rank clearfix">
|
||||
<span class="ranking fl">5</span>
|
||||
<span class="short fl">全国大学生结构设计竞赛</span>
|
||||
<span class="hot fl">9.26</span>
|
||||
</div>
|
||||
</li>
|
||||
<!-- 更多竞赛排名 -->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="middle-map fl">
|
||||
<div class="map-wrap">
|
||||
<h3 class="clearfix">
|
||||
<dl class="fl">
|
||||
<dt>A类赛事</dt>
|
||||
<dd id="book-data" class="unit-number">64</dd>
|
||||
</dl>
|
||||
<dl class="fl">
|
||||
<dt>B类赛事</dt>
|
||||
<dd id="varity-data" class="unit-type">125</dd>
|
||||
</dl>
|
||||
<dl class="fl">
|
||||
<dt>销售码洋</dt>
|
||||
<dd id="sales-data" class="unit-wanyuan">30,340</dd>
|
||||
</dl>
|
||||
<dl class="fl">
|
||||
<dt>参赛人数</dt>
|
||||
<dd>22</dd>
|
||||
</dl>
|
||||
<dl class="fl">
|
||||
<dt>累计参赛</dt>
|
||||
<dd id="stock-data" class="unit-wanyuan">12,710</dd>
|
||||
</dl>
|
||||
</h3>
|
||||
<span class="title-map">全国竞赛热点图</span>
|
||||
<div id="map" style="width: 100%;height: 100%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aside-right fl">
|
||||
<div class="pie clearfix">
|
||||
<div class="pie1 fl" style="width: 100%;">
|
||||
<h3>参赛领域占比</h3>
|
||||
<div id="pie1" style="width: 100%;height: 80%;"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="area-rank">
|
||||
<h3>参赛热省(市)</h3>
|
||||
<div class="con">
|
||||
<ul>
|
||||
<li>
|
||||
<span class="num">1</span>
|
||||
<span class="city-name">湖南</span>
|
||||
<span class="bar">
|
||||
<b class="bar-in"></b>
|
||||
</span>
|
||||
<span class="rank-value">1875万</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="num">2</span>
|
||||
<span class="city-name">陕西</span>
|
||||
<span class="bar">
|
||||
<b class="bar-in"></b>
|
||||
</span>
|
||||
<span class="rank-value">1649万</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="num">3</span>
|
||||
<span class="city-name">云南</span>
|
||||
<span class="bar">
|
||||
<b class="bar-in"></b>
|
||||
</span>
|
||||
<span class="rank-value">1396万</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="num">4</span>
|
||||
<span class="city-name">湖北</span>
|
||||
<span class="bar">
|
||||
<b class="bar-in"></b>
|
||||
</span>
|
||||
<span class="rank-value">1225万</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="num">5</span>
|
||||
<span class="city-name">江苏</span>
|
||||
<span class="bar">
|
||||
<b class="bar-in"></b>
|
||||
</span>
|
||||
<span class="rank-value">1203万</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="num">6</span>
|
||||
<span class="city-name">江西</span>
|
||||
<span class="bar">
|
||||
<b class="bar-in"></b>
|
||||
</span>
|
||||
<span class="rank-value">1108万</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="num">7</span>
|
||||
<span class="city-name">内蒙古</span>
|
||||
<span class="bar">
|
||||
<b class="bar-in"></b>
|
||||
</span>
|
||||
<span class="rank-value">740万</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="num">8</span>
|
||||
<span class="city-name">四川</span>
|
||||
<span class="bar">
|
||||
<b class="bar-in"></b>
|
||||
</span>
|
||||
<span class="rank-value">695万</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="num">9</span>
|
||||
<span class="city-name">浙江</span>
|
||||
<span class="bar">
|
||||
<b class="bar-in"></b>
|
||||
</span>
|
||||
<span class="rank-value">667万</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="trend">
|
||||
<h3>获奖折线图</h3>
|
||||
<div id="trendBar1" style="width: 100%;height: 80%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main-bottom">
|
||||
<span class="line1"></span>
|
||||
<span class="line2"></span>
|
||||
<span class="line3"></span>
|
||||
</div>
|
||||
</div>
|
||||
<script src="js/index.js"></script>
|
||||
<script src="js/mapIndex.js"></script>
|
||||
</body>
|
||||
</html>
|
430
public/thrid.html
Normal file
430
public/thrid.html
Normal file
@ -0,0 +1,430 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>index</title>
|
||||
<meta http-equiv="refresh" content="60;url=http://localhost:8080/four.html">
|
||||
<script type="text/javascript" src="ejs/jquery.js"></script>
|
||||
<script type="text/javascript" src="ejs/echarts.min.js"></script>
|
||||
<script type="text/javascript" src="ejs/area_echarts.js"></script>
|
||||
<!-- <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=5ieMMexWmzB9jivTq6oCRX9j&callback"></script> -->
|
||||
<script type="text/javascript" src="ejs/js.js"></script>
|
||||
<link rel="stylesheet" href="ecss/style.css">
|
||||
<style>
|
||||
.nav {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
z-index: 20000;
|
||||
width: 30%;
|
||||
height: 10%;
|
||||
font-size: 0.65625em; }
|
||||
.nav ul {
|
||||
list-style: none;
|
||||
min-width: 500px;
|
||||
width: 100%; }
|
||||
.nav ul a {
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
text-align: center;
|
||||
line-height: 4.5;
|
||||
color: white;
|
||||
/* background-color: #2f3e45; */ }
|
||||
|
||||
.drop-down {
|
||||
width: 100%;
|
||||
height: 100%; }
|
||||
|
||||
.drop-down-content li {
|
||||
display: inline-block;
|
||||
float: left;
|
||||
width: 20%;
|
||||
min-width: 100px;
|
||||
height: 100%; }
|
||||
|
||||
.drop-down {
|
||||
/*position: relative;*/
|
||||
width: 100%; }
|
||||
|
||||
.drop-down-content {
|
||||
padding: 0;
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
/*position: absolute;*/ }
|
||||
|
||||
h3 {
|
||||
font-size: 30px;
|
||||
clear: both; }
|
||||
|
||||
.drop-down-content li:hover a {
|
||||
color: bisque; }
|
||||
|
||||
.nav .drop-down:hover .drop-down-content {
|
||||
display: block; }
|
||||
</style>
|
||||
</head>
|
||||
<script>
|
||||
</script>
|
||||
<body>
|
||||
<ul class="nav">
|
||||
|
||||
<li class="drop-down">
|
||||
<a href="#"></a>
|
||||
|
||||
<ul class="drop-down-content">
|
||||
|
||||
<li>
|
||||
<a href="./home.html">自动切换</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="./screen.html">第一屏</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="./thrid.html">第二屏</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li>
|
||||
<a href="./four.html">第三屏</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="./index.html">回到主页</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="head clearfix">
|
||||
<h1 class="">竞赛管理系统大数据平台</h1>
|
||||
<div class="time" id="showTime">2024/6/12 17:00:12</div>
|
||||
<!-- <div class="name">长沙双数科技有限公司</div> -->
|
||||
<script>
|
||||
var t = null;
|
||||
t = setTimeout(time,1000);//開始运行
|
||||
function time()
|
||||
{
|
||||
clearTimeout(t);//清除定时器
|
||||
dt = new Date();
|
||||
var y=dt.getFullYear();
|
||||
var mt=dt.getMonth()+1;
|
||||
var day=dt.getDate();
|
||||
var h=dt.getHours();//获取时
|
||||
var m=dt.getMinutes();//获取分
|
||||
var s=dt.getSeconds();//获取秒
|
||||
document.getElementById("showTime").innerHTML = y+"/"+mt+"/"+day+" "+h+":"+m+":"+s+"";
|
||||
t = setTimeout(time,1000); //设定定时器,循环运行
|
||||
}
|
||||
|
||||
</script>
|
||||
</div>
|
||||
<div class="mainbox">
|
||||
|
||||
<ul class="clearfix nav1">
|
||||
<li style="width: 26%">
|
||||
<div class="box">
|
||||
<div class="tit"><span>当日情况</span><p></p></div>
|
||||
<div class="boxnav" style="height: 320px;">
|
||||
<ul class="drqk clearfix">
|
||||
<li>
|
||||
<div class="icon"><img src="images/icona.png"></div>
|
||||
<div><span>今日报名人数</span>
|
||||
<p><em>1358</em><i>人</i></p></div>
|
||||
</li>
|
||||
<li><div class="icon"><img src="images/icona.png"></div>
|
||||
<div><span>昨日报名人数</span>
|
||||
<p><em>1983</em><i>人</i></p></div></li>
|
||||
<li><div class="icon"><img src="images/icona.png"></div>
|
||||
<div><span>系统总报名人数</span>
|
||||
<p><em>930</em><i>人</i></p></div></li>
|
||||
<li><div class="icon"><img src="images/icona.png"></div>
|
||||
<div><span>竞赛总数</span>
|
||||
<p><em>371</em><i>人</i></p></div></li>
|
||||
<li><div class="icon"><img src="images/icona.png"></div>
|
||||
<div><span>获奖总数</span>
|
||||
<p><em>1683</em><i>人</i></p></div></li>
|
||||
<li><div class="icon"><img src="images/icona.png"></div>
|
||||
<div><span>资料总数</span>
|
||||
<p><em>1091</em><i>人</i></p></div></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="tit"><span>获奖概率 </span><p></p></div>
|
||||
<div class="boxnav" style="height:140px;">
|
||||
<table class="table1" width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>赛事名称</th>
|
||||
<th>一等奖</th>
|
||||
<th>二等奖</th>
|
||||
<th>三等奖</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>获奖数</td>
|
||||
<td>0.03<span class="text-b">↓0.01%</span></td>
|
||||
<td>163.00<span class="text-d">↑4.01%</span></td>
|
||||
<td>163.00<span class="text-d">↑4.01%</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>获奖率(%)</td>
|
||||
<td>0.3<span class="text-b">↓0.01%</span></td>
|
||||
<td>100%<span class="text-d">↑4.01</span></td>
|
||||
<td>81.92%<span class="text-d">↑4.01</span></td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box">
|
||||
<div class="tit"><span>竞赛管理系统</span><p></p></div>
|
||||
<div class="boxnav" style="height: 250px;">
|
||||
<ul class="ylfw">
|
||||
<li>
|
||||
<div class="ylfwbox fora">
|
||||
<p>报名总人数</p>
|
||||
<ol><span>1500</span><em>人</em><i class="text-d">↑5.00%</i></ol>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="ylfwbox fora">
|
||||
<p>已提交作品数</p>
|
||||
<ol><span>1200</span><em>件</em><i class="text-d">↑4.50%</i></ol>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="ylfwbox fora">
|
||||
<p>平均评分</p>
|
||||
<ol><span>85.4</span><em>分</em><i class="text-d">↑3.20%</i></ol>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="ylfwbox fora">
|
||||
<p>评审总数</p>
|
||||
<ol><span>50</span><em>人</em><i class="text-d">↑2.00%</i></ol>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="ylfwbox fora">
|
||||
<p>通过初审作品数</p>
|
||||
<ol><span>800</span><em>件</em><i class="text-d">↑4.00%</i></ol>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="ylfwbox fora">
|
||||
<p>入围决赛作品数</p>
|
||||
<ol><span>200</span><em>件</em><i class="text-d">↑2.50%</i></ol>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</li>
|
||||
<li style="width:48%">
|
||||
|
||||
<div class="box" style="position: relative">
|
||||
<div class="map">
|
||||
<div class="map1"><img src="images/lbx.png"></div>
|
||||
<div class="map2"><img src="images/jt.png"></div>
|
||||
<div class="map3"><img src="images/map.png"></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="" id="map" style="height: 557px; position: relative; z-index: 100"></div>
|
||||
|
||||
<!-- <script>
|
||||
// 百度地图API功能
|
||||
var map = new BMap.Map("map"); // 创建Map实例
|
||||
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 初始化地图,设置中心点坐标和地图级别
|
||||
map.addControl(new BMap.MapTypeControl({
|
||||
mapTypes:[
|
||||
BMAP_NORMAL_MAP,
|
||||
BMAP_HYBRID_MAP
|
||||
]}));
|
||||
var mapStyle={
|
||||
style:"midnight"
|
||||
};
|
||||
map.setMapStyle(mapStyle);
|
||||
map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的
|
||||
map.enableScrollWheelZoom(true);
|
||||
</script>
|
||||
-->
|
||||
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="tit"><span>系统用户</span><p></p></div>
|
||||
<div class="boxnav" style="height: 250px;">
|
||||
<ul class="jcjg">
|
||||
<li>
|
||||
<h3>管理员</h3>
|
||||
<div class="jcnav">
|
||||
<img src="images/icona.png">
|
||||
<div class="jcnavp">
|
||||
<div class="fora">
|
||||
<ol>总用户数</ol>
|
||||
<span>1200</span>
|
||||
<i class="text-d">+4.50</i>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
<div class="fora">
|
||||
<ol>活跃用户</ol>
|
||||
<span>950</span>
|
||||
<i class="text-d">+3.20</i>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
<div class="fora">
|
||||
<ol>新增用户</ol>
|
||||
<span>150</span>
|
||||
<i class="text-d">+2.00</i>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<h3>教师用户</h3>
|
||||
<div class="jcnav">
|
||||
<img src="images/icona.png">
|
||||
<div class="jcnavp">
|
||||
<div class="fora">
|
||||
<ol>总数</ol>
|
||||
<span>300</span>
|
||||
<i class="text-s">-1.10</i>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
<div class="fora">
|
||||
<ol>活跃数</ol>
|
||||
<span>280</span>
|
||||
<i class="text-d">+0.50</i>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
<div class="fora">
|
||||
<ol>新增数</ol>
|
||||
<span>30</span>
|
||||
<i class="text-d">+1.20</i>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<h3>学生用户</h3>
|
||||
<div class="jcnav jcnav2">
|
||||
<img src="images/icona.png">
|
||||
<div class="jcnavp">
|
||||
<div class="fora">
|
||||
<ol>总人数</ol>
|
||||
<span>5000</span>
|
||||
<i class="text-d">+5.80</i>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
<div class="fora">
|
||||
<ol>活跃人数</ol>
|
||||
<span>4500</span>
|
||||
<i class="text-d">+4.50</i>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
<div class="fora">
|
||||
<ol>新增人数</ol>
|
||||
<span>600</span>
|
||||
<i class="text-d">+3.00</i>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
<div class="fora">
|
||||
<ol>毕业人数</ol>
|
||||
<span>500</span>
|
||||
<i class="text-s">-2.50</i>
|
||||
<div class="forb"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
<li style="width: 26%">
|
||||
<div class="box">
|
||||
<div class="tit"><span>竞赛管理模块</span><p></p></div>
|
||||
<div class="boxnav" id="" style="height: 280px;">
|
||||
<ul class="tqdb">
|
||||
<li>
|
||||
<div id="echart1"></div>
|
||||
<h3>报名人数百分比</h3>
|
||||
</li>
|
||||
<li>
|
||||
<div id="echart2"></div>
|
||||
<h3>作品提交百分比</h3>
|
||||
</li>
|
||||
<li>
|
||||
<div id="echart3"></div>
|
||||
<h3>初审通过百分比</h3>
|
||||
</li>
|
||||
<li>
|
||||
<div id="echart4"></div>
|
||||
<h3>决赛入围百分比</h3>
|
||||
</li>
|
||||
<li>
|
||||
<div id="echart5"></div>
|
||||
<h3>平均评分分布</h3>
|
||||
</li>
|
||||
<li>
|
||||
<div id="echart6"></div>
|
||||
<h3>评审参与百分比</h3>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="tit"><span>竞赛动态</span><p></p></div>
|
||||
<div class="boxnav" style="height: 180px;" id="echart7">
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box">
|
||||
<div class="tit"><span>竞赛构成</span><p></p></div>
|
||||
<div class="boxnav" style="height: 250px;">
|
||||
<ul class="jbgc">
|
||||
<li>
|
||||
<div class="jztxt">
|
||||
<div>
|
||||
<h3>1500<i>人</i></h3>
|
||||
<span>总报名人数</span>
|
||||
</div>
|
||||
<div>
|
||||
<h3>1200<i>件</i></h3>
|
||||
<span>已提交作品</span>
|
||||
</div>
|
||||
<div>
|
||||
<h3>800<i>件</i></h3>
|
||||
<span>初审通过</span>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li style="width:90%" id="echart8"></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
69
src/App.vue
Normal file
69
src/App.vue
Normal file
@ -0,0 +1,69 @@
|
||||
<template>
|
||||
<div id="app">
|
||||
<router-view />
|
||||
<Loading :loading="loading" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Loading from './components/common/Loading';
|
||||
export default {
|
||||
name: 'Root',
|
||||
components: { Loading },
|
||||
provide() {
|
||||
return {
|
||||
loadingStart: this.loadingStart,
|
||||
loadingEnd: this.loadingEnd,
|
||||
};
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
loadingStart() {
|
||||
this.loading = true;
|
||||
},
|
||||
loadingEnd() {
|
||||
this.loading = false;
|
||||
},
|
||||
},
|
||||
metaInfo: {
|
||||
title: '首页',
|
||||
titleTemplate: '%s | 竞赛管理系统',
|
||||
meta: [
|
||||
{
|
||||
name: 'keywords',
|
||||
content: '南昌大学,软件学院,竞赛,管理系统',
|
||||
},
|
||||
{
|
||||
name: 'description',
|
||||
content: '南昌大学软件学院竞赛管理系统,用于管理竞赛数据。学生参赛报备、竞赛数据统计、数据导出。',
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
#app
|
||||
font-family Avenir, Helvetica, Arial, sans-serif
|
||||
-webkit-font-smoothing antialiased
|
||||
-moz-osx-font-smoothing grayscale
|
||||
color #2c3e50
|
||||
|
||||
::-webkit-scrollbar
|
||||
width 5px
|
||||
height 5px
|
||||
cursor pointer
|
||||
|
||||
::-webkit-scrollbar-thumb
|
||||
border-radius 5px
|
||||
-webkit-box-shadow inset 0 0 5px rgba(0, 0, 0, 0.2)
|
||||
background #e0e5eb
|
||||
|
||||
::-webkit-scrollbar-track
|
||||
box-shadow inset 0 0 5px rgba(0, 0, 0, 0.1)
|
||||
border-radius 0
|
||||
</style>
|
39
src/main.js
Normal file
39
src/main.js
Normal file
@ -0,0 +1,39 @@
|
||||
import Vue from 'vue';
|
||||
import App from './App.vue';
|
||||
import router from '@/router';
|
||||
import store from '@/store';
|
||||
import * as API from '@/api';
|
||||
import zhCn from 'ant-design-vue/lib/locale-provider/zh_CN';
|
||||
import ElementUI from 'element-ui';
|
||||
import 'element-ui/lib/theme-chalk/index.css';
|
||||
import './permission'; // permission control
|
||||
import '@/plugins';
|
||||
import '@/tool';
|
||||
import VueAnimateNumber from 'vue-animate-number'
|
||||
|
||||
Vue.use(VueAnimateNumber)
|
||||
Vue.config.productionTip = false;
|
||||
Vue.prototype.$api = API;
|
||||
// 获取设备宽度
|
||||
const deviceWidth = document.documentElement.clientWidth;
|
||||
|
||||
// 假设设计稿宽度为750px,rem基准值设置为75
|
||||
const baseWidth = 750;
|
||||
const baseFontSize = 30;
|
||||
|
||||
// 计算当前设备下的rem基准值
|
||||
const fontSize = deviceWidth / baseWidth * baseFontSize;
|
||||
|
||||
// 设置html的font-size
|
||||
document.documentElement.style.fontSize = fontSize + 'px';
|
||||
const vm = new Vue({
|
||||
router,
|
||||
store,
|
||||
render: function(createElement) {
|
||||
return createElement('a-config-provider', { props: { locale: zhCn } }, [
|
||||
createElement(App)
|
||||
]);
|
||||
}
|
||||
});
|
||||
|
||||
vm.$mount('#app');
|
98
src/permission.js
Normal file
98
src/permission.js
Normal file
@ -0,0 +1,98 @@
|
||||
import store from '@/store'; // 导入 Vuex store 实例
|
||||
import router from '@/router'; // 导入 Vue Router 实例
|
||||
import { notification } from 'ant-design-vue'; // 导入 ant-design-vue 的 notification 组件
|
||||
import NProgress from 'nprogress'; // 导入进度条组件
|
||||
import 'nprogress/nprogress.css'; // 导入进度条样式
|
||||
NProgress.configure({ showSpinner: false }); // 配置进度条,隐藏加载动画
|
||||
|
||||
const loginPath = '/login'; // 登录路径
|
||||
const defaultRoutePath = '/race/list'; // 默认路由路径
|
||||
const whiteList = ['Login']; // 白名单,无需登录即可访问的页面
|
||||
|
||||
router.beforeEach(async(to, from, next) => {
|
||||
NProgress.start(); // 开始进度条
|
||||
|
||||
const tokens = window.localStorage.getItem("token"); // 使用相同的键来获取token
|
||||
/* 未登录情况下的路由拦截 */
|
||||
if (!tokens) {
|
||||
// alert(tokens)
|
||||
if (whiteList.includes(to.name)) { // 如果在白名单中,直接放行
|
||||
next();
|
||||
} else { // 否则重定向至登录页面
|
||||
next({
|
||||
path: loginPath,
|
||||
query: {
|
||||
redirect: to.fullPath,
|
||||
},
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* 已登录情况下访问登录界面的处理 */
|
||||
if (to.path === loginPath) { // 如果已登录且访问登录页面,则重定向至默认页面
|
||||
next(defaultRoutePath);
|
||||
return;
|
||||
}
|
||||
|
||||
/* 已获取用户信息的情况 */
|
||||
if (store.getters.permissions!=null && store.getters.permissions!=="") { // 如果已获取用户权限信息,则直接放行
|
||||
next();
|
||||
NProgress.done(); // 结束进度条
|
||||
return;
|
||||
}
|
||||
|
||||
/* 未获取用户信息的情况 */
|
||||
try {
|
||||
await store.dispatch('initUser'); // 异步获取用户信息
|
||||
} catch (e) {
|
||||
store.commit('logout'); // 获取失败时执行退出登录操作
|
||||
next({ path: loginPath, query: { redirect: to.fullPath } }); // 重定向至登录页面
|
||||
notification.error({
|
||||
message: '错误',
|
||||
description: '请求用户信息失败,请重试',
|
||||
}); // 显示错误通知
|
||||
NProgress.done(); // 结束进度条
|
||||
return;
|
||||
}
|
||||
|
||||
/* 成功获取用户信息的情况 */
|
||||
// 检查路由权限
|
||||
if (!checkAccess(to)) { // 如果当前路由无权限访问,则重定向至默认页面
|
||||
next({ path: defaultRoutePath, replace: true });
|
||||
NProgress.done(); // 结束进度条
|
||||
return;
|
||||
}
|
||||
const redirect = decodeURIComponent(from.query.redirect || to.path); // 获取重定向地址
|
||||
// 如果重定向地址与当前路径相同,则替换历史记录
|
||||
if (redirect === to.path) {
|
||||
next({...to, replace: true });
|
||||
} else { // 否则正常重定向
|
||||
next(redirect);
|
||||
}
|
||||
NProgress.done(); // 结束进度条
|
||||
});
|
||||
|
||||
router.afterEach(() => {
|
||||
NProgress.done(); // 结束进度条
|
||||
});
|
||||
|
||||
/**
|
||||
* 判断当前路由是否具有权限访问
|
||||
* @param {Route} route 路由对象
|
||||
* @returns {boolean} 是否具有权限
|
||||
*/
|
||||
|
||||
function checkAccess(route) {
|
||||
|
||||
const userPrivileges = store.state.user.userPrivileges==null ? 1 : store.state.user.userPrivileges; // 获取用户权限信息
|
||||
const requiredPrivileges = route.meta.auth; // 获取当前路由所需权限信息
|
||||
console.log(userPrivileges)
|
||||
// 如果路由未设置权限要求,则默认放行
|
||||
if (!requiredPrivileges) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 检查用户的权限是否包含在所需权限中
|
||||
return requiredPrivileges.includes(userPrivileges);
|
||||
}
|
55
vue.config.js
Normal file
55
vue.config.js
Normal file
@ -0,0 +1,55 @@
|
||||
const path = require('path'); // 导入 Node.js 中的 path 模块
|
||||
// const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); // 导入 webpack-bundle-analyzer 插件
|
||||
const resolve = dir => path.join(__dirname, '.', dir); // 定义一个函数用于解析路径
|
||||
|
||||
module.exports = {
|
||||
parallel:false,
|
||||
chainWebpack: config => {
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
config.plugins.delete('prefetch'); // 删除 webpack 配置中的 prefetch 插件,以便懒加载生效
|
||||
|
||||
}
|
||||
}, // 配置别名
|
||||
configureWebpack: {
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': path.resolve(__dirname, 'src'),
|
||||
'@/components': path.resolve(__dirname, 'src/components'), // 设置 @/components 别名
|
||||
},
|
||||
},
|
||||
},
|
||||
lintOnSave: false, // 关闭保存时的 eslint 检查
|
||||
|
||||
devServer: {
|
||||
proxy: {
|
||||
'/api': { // 配置代理规则,将请求转发至 http://localhost:8880
|
||||
target: 'http://localhost:8887',
|
||||
changeOrigin: true, // 是否改变源地址
|
||||
},
|
||||
},
|
||||
},
|
||||
pluginOptions: {
|
||||
'style-resources-loader': { // 配置全局样式资源加载器
|
||||
preProcessor: 'stylus', // 使用 stylus 预处理器
|
||||
patterns: [
|
||||
resolve('./src/style/mixins.styl'), // 导入全局混合文件
|
||||
resolve('./src/style/variables.styl'), // 导入全局变量文件
|
||||
],
|
||||
injector: 'prepend', // 插入到文件的最前面
|
||||
},
|
||||
},
|
||||
css: {
|
||||
loaderOptions: {
|
||||
less: {
|
||||
lessOptions: {
|
||||
javascriptEnabled: true, // 启用 Less 编译时的 JavaScript 支持
|
||||
modifyVars: { // 自定义 Less 变量
|
||||
'@primary-color': '#2f54eb', // 主题色
|
||||
'@success-color': '#36b777', // 成功状态颜色
|
||||
'@border-radius-base': '2px', // 边框圆角半径
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
0
webpack.config.js
Normal file
0
webpack.config.js
Normal file
Loading…
Reference in New Issue
Block a user