fisrt commit
|
@ -0,0 +1,3 @@
|
||||||
|
> 1%
|
||||||
|
last 2 versions
|
||||||
|
not dead
|
|
@ -0,0 +1,5 @@
|
||||||
|
[*.{js,jsx,ts,tsx,vue}]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
|
@ -0,0 +1,4 @@
|
||||||
|
NODE_ENV = development
|
||||||
|
VUE_APP_NODE_ENV = dev
|
||||||
|
VUE_APP_BASE_URL = 'http://192.168.1.133'
|
||||||
|
VUE_APP_SERVER_URL = 'http://192.168.1.133'
|
|
@ -0,0 +1,4 @@
|
||||||
|
NODE_ENV = production
|
||||||
|
VUE_APP_NODE_ENV = prod
|
||||||
|
VUE_APP_BASE_URL = 'http://127.0.0.1'
|
||||||
|
VUE_APP_SERVER_URL = 'http://192.168.1.133'
|
|
@ -0,0 +1,18 @@
|
||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
env: {
|
||||||
|
node: true
|
||||||
|
},
|
||||||
|
extends: [
|
||||||
|
'plugin:vue/essential',
|
||||||
|
'@vue/standard'
|
||||||
|
],
|
||||||
|
parserOptions: {
|
||||||
|
parser: 'babel-eslint'
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
||||||
|
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
||||||
|
'space-before-function-paren': 0
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
.DS_Store
|
||||||
|
node_modules
|
||||||
|
/dist
|
||||||
|
|
||||||
|
|
||||||
|
# local env files
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
|
||||||
|
# Log files
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.idea
|
||||||
|
.vscode
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw?
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"printWidth": 80,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"singleQuote": true,
|
||||||
|
"semi": false,
|
||||||
|
"htmlWhitespaceSensitivity": "ignore"
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
# portal_client
|
||||||
|
|
||||||
|
## Project setup
|
||||||
|
```
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Compiles and hot-reloads for development
|
||||||
|
```
|
||||||
|
npm run serve
|
||||||
|
```
|
||||||
|
|
||||||
|
### Compiles and minifies for production
|
||||||
|
```
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Lints and fixes files
|
||||||
|
```
|
||||||
|
npm run lint
|
||||||
|
```
|
||||||
|
|
||||||
|
### Customize configuration
|
||||||
|
See [Configuration Reference](https://cli.vuejs.org/config/).
|
|
@ -0,0 +1,10 @@
|
||||||
|
// 项目发布阶段需要用到的babel插件
|
||||||
|
const prodPlugins = []
|
||||||
|
if (process.env.NODE_ENV === 'production') {
|
||||||
|
prodPlugins.push('transform-remove-console')
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
presets: ['@vue/cli-plugin-babel/preset'],
|
||||||
|
plugins: [...prodPlugins]
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
{
|
||||||
|
"name": "portal_client",
|
||||||
|
"version": "1.1.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"serve": "vue-cli-service serve",
|
||||||
|
"build": "vue-cli-service build",
|
||||||
|
"serve:dev": "vue-cli-service build --mode development",
|
||||||
|
"build:prod": "vue-cli-service build --mode production",
|
||||||
|
"lint": "vue-cli-service lint"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"core-js": "^3.6.5",
|
||||||
|
"element-ui": "^2.4.5",
|
||||||
|
"less-loader": "^6.0.0",
|
||||||
|
"quill": "^1.3.7",
|
||||||
|
"vue": "^2.6.11",
|
||||||
|
"vue-lazyload": "^1.3.3",
|
||||||
|
"vue-router": "^3.2.0",
|
||||||
|
"vuex": "^3.4.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@vue/cli-plugin-babel": "~4.5.0",
|
||||||
|
"@vue/cli-plugin-eslint": "~4.5.0",
|
||||||
|
"@vue/cli-plugin-router": "~4.5.0",
|
||||||
|
"@vue/cli-plugin-vuex": "~4.5.0",
|
||||||
|
"@vue/cli-service": "~4.5.0",
|
||||||
|
"@vue/eslint-config-standard": "^5.1.2",
|
||||||
|
"axios": "^0.21.1",
|
||||||
|
"babel-eslint": "^10.1.0",
|
||||||
|
"babel-plugin-transform-remove-console": "^6.9.4",
|
||||||
|
"eslint": "^6.7.2",
|
||||||
|
"eslint-plugin-import": "^2.20.2",
|
||||||
|
"eslint-plugin-node": "^11.1.0",
|
||||||
|
"eslint-plugin-promise": "^4.2.1",
|
||||||
|
"eslint-plugin-standard": "^4.0.0",
|
||||||
|
"eslint-plugin-vue": "^6.2.2",
|
||||||
|
"node-sass": "^4.12.0",
|
||||||
|
"sass-loader": "^8.0.2",
|
||||||
|
"vue-cli-plugin-element": "^1.0.1",
|
||||||
|
"vue-template-compiler": "^2.6.11"
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 7.3 KiB |
After Width: | Height: | Size: 6.9 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1626240865067" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12783" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M194.97 566.272V747.52L512 919.552 829.03 747.52V566.477L512 738.509 194.97 566.272zM512 104.448L13.926 376.218 512 647.782l407.552-221.798v312.525h90.522V376.218L512 104.448z" p-id="12784" fill="#172B4D"></path></svg>
|
After Width: | Height: | Size: 596 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1626241025270" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14725" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M390.827 562.59c-113.17 0-205.242-92.071-205.242-205.242s92.071-205.241 205.242-205.241 205.241 92.071 205.241 205.241-92.07 205.242-205.241 205.242z m0-346.483c-77.881 0-141.242 63.36-141.242 141.241S312.946 498.59 390.827 498.59s141.241-63.361 141.241-141.242-63.36-141.241-141.241-141.241z" fill="#172B4D" p-id="14726"></path><path d="M668.021 869.327c-17.673 0-32-14.327-32-32 0-150.662-109.993-273.235-245.193-273.235S145.633 686.665 145.633 837.327c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-89.503 31.785-173.795 89.499-237.348 28.333-31.199 61.402-55.729 98.288-72.909 38.437-17.901 79.284-26.979 121.407-26.979s82.97 9.077 121.407 26.979c36.886 17.18 69.955 41.71 98.288 72.909 57.715 63.553 89.499 147.845 89.499 237.348 0 17.673-14.328 32-32 32zM630.633 567.59c-17.673 0-32-14.327-32-32s14.327-32 32-32c77.881 0 141.242-63.361 141.242-141.242s-63.361-141.241-141.242-141.241c-17.673 0-32-14.327-32-32s14.327-32 32-32c113.171 0 205.242 92.071 205.242 205.241S743.804 567.59 630.633 567.59z" fill="#172B4D" p-id="14727"></path><path d="M907.827 874.327c-17.673 0-32-14.327-32-32 0-150.662-109.994-273.235-245.194-273.235-17.673 0-32-14.327-32-32s14.327-32 32-32c42.123 0 82.971 9.077 121.407 26.979 36.886 17.18 69.955 41.71 98.288 72.909 57.714 63.553 89.499 147.845 89.499 237.348 0 17.672-14.327 31.999-32 31.999z" fill="#172B4D" p-id="14728"></path></svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1626240434789" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1023" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M810.6 183.5c0-65.7-53.7-119.4-119.4-119.4H333c-65.7 0-119.4 53.7-119.4 119.4-203 0-179.1 0-179.1 119.4 0 98.5 80.6 179.1 179.1 179.1 6 0 14.9 0 20.9-3 38.8 116.4 134.3 223.9 247.8 238.8V900h-89.6c-17.9 0-29.9 11.9-29.9 29.9 0 17.9 11.9 29.8 29.9 29.8h238.8c17.9 0 29.9-11.9 29.9-29.8S649.5 900 631.5 900h-89.6V717.9c113.4-14.9 206-122.4 247.8-238.8 6 0 14.9 3 20.9 3 98.5 0 179.1-80.6 179.1-179.1 0-119.5 23.9-119.5-179.1-119.5z m-597 238.8c-65.7 0-119.4-53.7-119.4-119.4s0-59.7 119.4-59.7v179.1z m537.3-59.7c0 131.3-107.5 298.5-238.8 298.5S273.3 493.9 273.3 362.6V183.5c0-29.9 29.9-59.7 59.7-59.7h358.2c29.8 0 59.7 29.9 59.7 59.7v179.1z m59.7 59.7V243.2c119.4 0 119.4-6 119.4 59.7s-53.7 119.4-119.4 119.4z m0 0" p-id="1024" fill="#172B4D"></path></svg>
|
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 192 KiB |
After Width: | Height: | Size: 205 KiB |
After Width: | Height: | Size: 540 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 193 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1626240753020" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6489" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M711.9 959.9c-10.8 0-21.5-3.3-30.7-9.7L495.3 820.9c-1.5-1-3.5-0.9-4.8 0.4l-72 68.4c-16.2 15.4-39.7 19.2-59.8 9.7-20.2-9.4-32.3-29.9-30.9-52.2l9-141.8c0.8-12.1 5.7-23.8 13.9-32.8l216-237.8c9.3-10.2 25.1-11 35.3-1.7 10.2 9.3 11 25.1 1.7 35.3l-216 237.8c-0.6 0.6-0.9 1.5-1 2.3l-9 141.8c0 0.8-0.2 2.6 2.2 3.7 2.4 1.1 3.7-0.2 4.2-0.7l72-68.4c18.4-17.5 46.9-19.7 67.8-5.2l185.9 129.4c1.1 0.8 2.4 0.9 3.6 0.4 1.3-0.5 2.1-1.5 2.3-2.8L858.2 140c0.1-0.6 0.4-2.3-1.5-3.7-1.9-1.4-3.4-0.7-4-0.4l-745.9 372c-0.5 0.2-2 1-2.1 3.2-0.1 2.2 1.3 3.1 1.8 3.4l198 123.2c11.7 7.3 15.3 22.7 8 34.4s-22.7 15.3-34.4 8L80 557c-16.5-10.3-26.2-28.8-25.3-48.2 0.9-19.5 12.3-36.9 29.7-45.6l745.9-372c18.4-9.2 40-7.2 56.4 5.2s24.3 32.6 20.5 52.8L764.9 915.9c-3.4 18-15.5 33-32.5 40-6.6 2.7-13.6 4-20.5 4z" p-id="6490" fill="#172B4D"></path></svg>
|
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 66 KiB |
|
@ -0,0 +1,17 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="">
|
||||||
|
<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="icon" href="<%= BASE_URL %>favicon.ico">
|
||||||
|
<title>公共安全技术研究中心</title>
|
||||||
|
</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>
|
||||||
|
<!-- built files will be auto injected -->
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,14 @@
|
||||||
|
<template>
|
||||||
|
<div id="app" class="ap">
|
||||||
|
<transition name="el-fade-in-linear">
|
||||||
|
<router-view></router-view>
|
||||||
|
</transition>
|
||||||
|
<el-backtop></el-backtop>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'app'
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,24 @@
|
||||||
|
import request from '../utils/request'
|
||||||
|
|
||||||
|
export function queryById(id, uuid) {
|
||||||
|
return request({
|
||||||
|
url: `/article/${id}/${uuid}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryResults(params) {
|
||||||
|
return request({
|
||||||
|
url: '/article/search',
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryByQuery(params) {
|
||||||
|
return request({
|
||||||
|
url: '/article/list',
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
import request from '../utils/request'
|
||||||
|
|
||||||
|
export function queryComponents() {
|
||||||
|
return request({
|
||||||
|
url: '/component',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
import request from '../utils/request'
|
||||||
|
|
||||||
|
export function load() {
|
||||||
|
return request({
|
||||||
|
url: '/config/load',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
import request from '../utils/request'
|
||||||
|
|
||||||
|
export function queryAllModules() {
|
||||||
|
return request({
|
||||||
|
url: '/module',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryModuleByRoute(route) {
|
||||||
|
return request({
|
||||||
|
url: `/module/route/${route}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryModuleByParent(parent) {
|
||||||
|
return request({
|
||||||
|
url: `/module/parent/${parent}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
import request from '../utils/request'
|
||||||
|
|
||||||
|
export function querySession() {
|
||||||
|
return request({
|
||||||
|
url: '/student/sessions',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryBySession(session) {
|
||||||
|
return request({
|
||||||
|
url: `/student/session/${session}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryByUuid(uuid) {
|
||||||
|
return request({
|
||||||
|
url: `/student/${uuid}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
import request from '../utils/request'
|
||||||
|
|
||||||
|
export function queryByUuid(uuid) {
|
||||||
|
return request({
|
||||||
|
url: `/teacher/${uuid}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryCollege() {
|
||||||
|
return request({
|
||||||
|
url: '/teacher/college',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryByCollege(college) {
|
||||||
|
return request({
|
||||||
|
url: `/teacher/college/${college}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
After Width: | Height: | Size: 6.7 KiB |
|
@ -0,0 +1,91 @@
|
||||||
|
$image-size: 120px;
|
||||||
|
|
||||||
|
.app-footer {
|
||||||
|
width: 100%;
|
||||||
|
padding: 80px 0;
|
||||||
|
color: $--color-text-regular;
|
||||||
|
line-height: 150%;
|
||||||
|
background-color: $--background-color-base;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.footer-inner {
|
||||||
|
width: $min-width;
|
||||||
|
// min-width: $min-width;
|
||||||
|
// max-width: $max-width;
|
||||||
|
|
||||||
|
.focus-us {
|
||||||
|
font-size: $--font-size-large;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
ul {
|
||||||
|
margin-left: 20px;
|
||||||
|
|
||||||
|
li {
|
||||||
|
float: left;
|
||||||
|
min-width: 40px;
|
||||||
|
|
||||||
|
.el-link {
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
i:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
color: $--color-primary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-row {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
.footer-info {
|
||||||
|
width: 50%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.link-list {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
li {
|
||||||
|
float: left;
|
||||||
|
min-width: 20%;
|
||||||
|
|
||||||
|
.el-link {
|
||||||
|
font-size: $--font-size-small;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-us {
|
||||||
|
margin-top: 20px;
|
||||||
|
font-size: $--font-size-extra-small;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-brand {
|
||||||
|
width: 50%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.el-image {
|
||||||
|
width: $image-size;
|
||||||
|
height: $image-size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-area {
|
||||||
|
font-size: $--font-size-extra-small;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,158 @@
|
||||||
|
$header-height: 80px;
|
||||||
|
|
||||||
|
.app-header {
|
||||||
|
width: 100%;
|
||||||
|
height: $header-height;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.header-inner {
|
||||||
|
width: 70vw;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.header-before {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.el-image {
|
||||||
|
width: $header-height;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-menu {
|
||||||
|
border-bottom: none;
|
||||||
|
|
||||||
|
.el-menu-item,
|
||||||
|
.el-submenu__title {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-submenu__icon-arrow {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-link {
|
||||||
|
font-weight: bolder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-transparent {
|
||||||
|
//position: absolute;
|
||||||
|
position: relative;
|
||||||
|
z-index: 999;
|
||||||
|
background: -webkit-gradient(
|
||||||
|
linear,
|
||||||
|
left top,
|
||||||
|
left bottom,
|
||||||
|
from($--color-white),
|
||||||
|
to($--color-white)
|
||||||
|
);
|
||||||
|
|
||||||
|
.el-menu {
|
||||||
|
background-color: transparent;
|
||||||
|
//background-color: $--color-white;
|
||||||
|
|
||||||
|
.el-menu-item,
|
||||||
|
.el-submenu__title {
|
||||||
|
//color: $--color-white;
|
||||||
|
color: blue;
|
||||||
|
background-color: transparent;
|
||||||
|
//background-color: $--color-white;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
//color: $--color-text-placeholder;
|
||||||
|
color: blue;
|
||||||
|
background-color: transparent;
|
||||||
|
//background-color: $--color-white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-menu-item:active,
|
||||||
|
.el-menu-item:focus,
|
||||||
|
.el-submenu.is-active .el-submenu__title {
|
||||||
|
//color: $--color-text-placeholder;
|
||||||
|
color: blue;
|
||||||
|
background-color: transparent;
|
||||||
|
//background-color: $--color-white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-link {
|
||||||
|
//color: $--color-white;
|
||||||
|
color: blue;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
//color: $--color-text-placeholder;
|
||||||
|
color: blue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-dark {
|
||||||
|
// position: sticky;
|
||||||
|
// position: -webkit-sticky;
|
||||||
|
// z-index: 999;
|
||||||
|
// top: 0px;
|
||||||
|
// left: 0px;
|
||||||
|
background-color: $--color-primary;
|
||||||
|
|
||||||
|
.el-menu {
|
||||||
|
background-color: transparent;
|
||||||
|
//background-color: $--color-white;
|
||||||
|
|
||||||
|
.el-menu-item,
|
||||||
|
.el-submenu__title {
|
||||||
|
//color: $--color-white;
|
||||||
|
color: blue;
|
||||||
|
background-color: $--color-primary;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
//color: $--color-text-placeholder;
|
||||||
|
color: blue;
|
||||||
|
background-color: $--color-primary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-menu-item:active,
|
||||||
|
.el-menu-item:focus,
|
||||||
|
.el-submenu.is-active .el-submenu__title {
|
||||||
|
//color: $--color-text-placeholder;
|
||||||
|
color: blue;
|
||||||
|
background-color: $--color-primary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-link {
|
||||||
|
//color: $--color-white;
|
||||||
|
color: blue;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
//color: $--color-text-placeholder;
|
||||||
|
color: blue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-light {
|
||||||
|
.el-menu {
|
||||||
|
background-color: transparent;
|
||||||
|
//background-color: $--color-white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-link {
|
||||||
|
//color: $--color-text-secondary;
|
||||||
|
color: blue;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
//color: $--color-black;
|
||||||
|
color: darkblue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
.layout-header {
|
||||||
|
@extend .layout-body;
|
||||||
|
background-color: $--background-color-base;
|
||||||
|
|
||||||
|
.header-inner {
|
||||||
|
@extend .body-inner;
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin: 60px 0;
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: xx-large;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.layout-body {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 50px;
|
||||||
|
|
||||||
|
// 屏幕尺寸大于750px
|
||||||
|
@media screen and (min-width: 750px) {
|
||||||
|
.body-inner {
|
||||||
|
width: $min-width;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 屏幕尺寸小于750px
|
||||||
|
@media screen and (max-width: 750px) {
|
||||||
|
.body-inner {
|
||||||
|
min-width: $min-width;
|
||||||
|
max-width: $max-width;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
.body-inner {
|
||||||
|
.article-title {
|
||||||
|
display: block;
|
||||||
|
margin: 30px 0;
|
||||||
|
font-size: xx-large;
|
||||||
|
}
|
||||||
|
|
||||||
|
.article-info {
|
||||||
|
color: $--color-text-secondary;
|
||||||
|
font-size: $--font-size-small;
|
||||||
|
margin-top: 20px;
|
||||||
|
|
||||||
|
span + span {
|
||||||
|
margin: 0 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.article-content {
|
||||||
|
line-height: 175%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.article-file {
|
||||||
|
margin-top: 20px;
|
||||||
|
|
||||||
|
.el-link {
|
||||||
|
font-size: $--font-size-small;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
.card-list {
|
||||||
|
.tip {
|
||||||
|
text-align: center;
|
||||||
|
font-size: $--font-size-extra-small;
|
||||||
|
color: $--color-text-secondary;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-item {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
img {
|
||||||
|
display: block;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.banner {
|
||||||
|
width: 100%;
|
||||||
|
height: 50px;
|
||||||
|
padding: 50px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 10;
|
||||||
|
bottom: 0;
|
||||||
|
text-align: center;
|
||||||
|
color: $--color-white;
|
||||||
|
font-size: $--font-size-large;
|
||||||
|
font-weight: bolder;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
transition: all 0.5s ease;
|
||||||
|
background: -webkit-gradient(
|
||||||
|
linear,
|
||||||
|
left bottom,
|
||||||
|
left top,
|
||||||
|
from($--color-black),
|
||||||
|
to(transparent)
|
||||||
|
);
|
||||||
|
|
||||||
|
.content {
|
||||||
|
text-align: start;
|
||||||
|
color: $--color-text-secondary;
|
||||||
|
font-size: $--font-size-base;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
z-index: 5;
|
||||||
|
-webkit-transform: scale(1.1);
|
||||||
|
transform: scale(1.1);
|
||||||
|
|
||||||
|
.banner {
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
background: rgba($color: $--color-black, $alpha: 0.5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
.carousel {
|
||||||
|
.el-image {
|
||||||
|
width: 100%;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
.chunk {
|
||||||
|
padding: 80px 15%;
|
||||||
|
|
||||||
|
.title {
|
||||||
|
margin-bottom: 30px;
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: xx-large;
|
||||||
|
width: fit-content;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.chunk-light h1 {
|
||||||
|
border-bottom: 5px solid $--color-primary;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chunk-dark h1 {
|
||||||
|
color: $--color-white;
|
||||||
|
border-bottom: 5px solid $--color-white;
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
.section-error {
|
||||||
|
width: 100%;
|
||||||
|
height: 80vh;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.el-image {
|
||||||
|
width: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,78 @@
|
||||||
|
$min-width: 60vw;
|
||||||
|
$max-width: 90vw;
|
||||||
|
|
||||||
|
/* 全局样式表 */
|
||||||
|
html,
|
||||||
|
body,
|
||||||
|
#app {
|
||||||
|
height: 100%;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB',
|
||||||
|
'Microsoft YaHei', '微软雅黑', Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body,
|
||||||
|
div,
|
||||||
|
span,
|
||||||
|
applet,
|
||||||
|
object,
|
||||||
|
iframe,
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6,
|
||||||
|
p,
|
||||||
|
blockquote,
|
||||||
|
pre,
|
||||||
|
a,
|
||||||
|
abbr,
|
||||||
|
acronym,
|
||||||
|
address,
|
||||||
|
big,
|
||||||
|
cite,
|
||||||
|
code,
|
||||||
|
del,
|
||||||
|
dfn,
|
||||||
|
em,
|
||||||
|
img,
|
||||||
|
ins,
|
||||||
|
kbd,
|
||||||
|
q,
|
||||||
|
s,
|
||||||
|
samp,
|
||||||
|
small,
|
||||||
|
strike,
|
||||||
|
strong,
|
||||||
|
sub,
|
||||||
|
sup,
|
||||||
|
tt,
|
||||||
|
var,
|
||||||
|
dl,
|
||||||
|
dt,
|
||||||
|
dd,
|
||||||
|
ol,
|
||||||
|
ul,
|
||||||
|
li,
|
||||||
|
fieldset,
|
||||||
|
form,
|
||||||
|
label,
|
||||||
|
legend,
|
||||||
|
table,
|
||||||
|
caption,
|
||||||
|
tbody,
|
||||||
|
tfoot,
|
||||||
|
thead,
|
||||||
|
tr,
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
.image-list {
|
||||||
|
.tip {
|
||||||
|
text-align: center;
|
||||||
|
font-size: $--font-size-extra-small;
|
||||||
|
color: $--color-text-secondary;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content,
|
||||||
|
.update-time {
|
||||||
|
margin-top: 10px;
|
||||||
|
font-size: $--font-size-small;
|
||||||
|
color: $--color-text-secondary;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-button {
|
||||||
|
border: none;
|
||||||
|
font-weight: bolder;
|
||||||
|
background-color: $--background-color-base;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-row ~ .el-row {
|
||||||
|
margin: 30px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.show-more {
|
||||||
|
@extend .tip;
|
||||||
|
|
||||||
|
.el-link {
|
||||||
|
@extend .show-more;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
@import './mixins/animation';
|
|
@ -0,0 +1,45 @@
|
||||||
|
.news {
|
||||||
|
background-color: $--background-color-base;
|
||||||
|
}
|
||||||
|
|
||||||
|
.news-item {
|
||||||
|
|
||||||
|
&-title {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
font-size: $--font-size-large;
|
||||||
|
color: $--color-primary;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
li {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
div {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
color: $--color-primary;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
li + li {
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
.overview {
|
||||||
|
line-height: 180%;
|
||||||
|
color: $--color-text-primary;
|
||||||
|
|
||||||
|
p {
|
||||||
|
text-indent: 2em;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
.research {
|
||||||
|
background-color: $--background-color-base;
|
||||||
|
|
||||||
|
.item {
|
||||||
|
cursor: pointer;
|
||||||
|
text-align: center;
|
||||||
|
transition: all 0.5s ease;
|
||||||
|
margin: 50px 0;
|
||||||
|
|
||||||
|
.el-image {
|
||||||
|
width: 120px;
|
||||||
|
height: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: block;
|
||||||
|
font-size: $--font-size-large;
|
||||||
|
font-weight: bolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
-webkit-transform: scale(1.1);
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
.search {
|
||||||
|
.box {
|
||||||
|
text-align: center;
|
||||||
|
margin: 50px 0;
|
||||||
|
transition: all 0.5s ease;
|
||||||
|
|
||||||
|
.el-autocomplete {
|
||||||
|
width: 40%;
|
||||||
|
|
||||||
|
.el-input-group__append {
|
||||||
|
width: 20%;
|
||||||
|
text-align: center;
|
||||||
|
color: $--color-white;
|
||||||
|
background-color: $--color-primary;
|
||||||
|
border: 1px solid $--color-primary;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: $--color-primary-light-2;
|
||||||
|
border: 1px solid $--color-primary-light-2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-resize {
|
||||||
|
margin: 150px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
li {
|
||||||
|
a {
|
||||||
|
color: $--color-primary;
|
||||||
|
cursor: pointer;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
font-size: $--font-size-small;
|
||||||
|
color: $--color-text-secondary;
|
||||||
|
margin: 5px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
li + li {
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
.college {
|
||||||
|
line-height: 150%;
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-row + .el-row {
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
.teacher-name {
|
||||||
|
font-size: $--font-size-large;
|
||||||
|
color: $--color-primary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.college + .college {
|
||||||
|
margin: 30px 0;
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
.teacher {
|
||||||
|
line-height: 180%;
|
||||||
|
|
||||||
|
.detail {
|
||||||
|
span {
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
strong {
|
||||||
|
color: $--color-text-primary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.other {
|
||||||
|
h3 {
|
||||||
|
color: $--color-primary;
|
||||||
|
}
|
||||||
|
span {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.other + .other {
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
.team {
|
||||||
|
background-image: url('/img/home_bg1.png');
|
||||||
|
background-size: contain;
|
||||||
|
background-color: #172B4D;
|
||||||
|
}
|
|
@ -0,0 +1,137 @@
|
||||||
|
@keyframes linear-move-left {
|
||||||
|
from {
|
||||||
|
left: 0px;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
left: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes linear-move-left {
|
||||||
|
from {
|
||||||
|
left: 0px;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
left: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-keyframes linear-move-left {
|
||||||
|
from {
|
||||||
|
left: 0px;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
left: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-o-keyframes linear-move-bottom {
|
||||||
|
from {
|
||||||
|
bottom: 0px;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
bottom: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes linear-move-bottom {
|
||||||
|
from {
|
||||||
|
bottom: 0px;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
bottom: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes linear-move-bottom {
|
||||||
|
from {
|
||||||
|
bottom: 0px;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
bottom: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-keyframes linear-move-bottom {
|
||||||
|
from {
|
||||||
|
bottom: 0px;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
bottom: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-o-keyframes linear-move-bottom {
|
||||||
|
from {
|
||||||
|
bottom: 0px;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
bottom: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes ease-transition {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes ease-transition {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-keyframes ease-transition {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-o-keyframes ease-transition {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin linear-move-left {
|
||||||
|
animation: linear-move-left;
|
||||||
|
-moz-animation: linear-move-left; /* Firefox */
|
||||||
|
-webkit-animation: linear-move-left; /* Safari 和 Chrome */
|
||||||
|
-o-animation: linear-move-left; /* Opera */
|
||||||
|
animation-duration: 0.3s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-fill-mode: forwards;
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin linear-move-bottom {
|
||||||
|
animation: linear-move-bottom;
|
||||||
|
-moz-animation: linear-move-bottom; /* Firefox */
|
||||||
|
-webkit-animation: linear-move-bottom; /* Safari 和 Chrome */
|
||||||
|
-o-animation: linear-move-bottom; /* Opera */
|
||||||
|
animation-duration: 0.3s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-fill-mode: forwards;
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin ease-transition {
|
||||||
|
animation: ease-transition;
|
||||||
|
-moz-animation: ease-transition; /* Firefox */
|
||||||
|
-webkit-animation: ease-transition; /* Safari 和 Chrome */
|
||||||
|
-o-animation: ease-transition; /* Opera */
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-timing-function: ease;
|
||||||
|
animation-fill-mode: forwards;
|
||||||
|
}
|
|
@ -0,0 +1,996 @@
|
||||||
|
/* Element Chalk Variables */
|
||||||
|
|
||||||
|
// Special comment for theme configurator
|
||||||
|
// type|skipAutoTranslation|Category|Order
|
||||||
|
// skipAutoTranslation 1
|
||||||
|
|
||||||
|
/* Transition
|
||||||
|
-------------------------- */
|
||||||
|
$--all-transition: all .3s cubic-bezier(.645,.045,.355,1) !default;
|
||||||
|
$--fade-transition: opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) !default;
|
||||||
|
$--fade-linear-transition: opacity 200ms linear !default;
|
||||||
|
$--md-fade-transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1), opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) !default;
|
||||||
|
$--border-transition-base: border-color .2s cubic-bezier(.645,.045,.355,1) !default;
|
||||||
|
$--color-transition-base: color .2s cubic-bezier(.645,.045,.355,1) !default;
|
||||||
|
|
||||||
|
/* Color
|
||||||
|
-------------------------- */
|
||||||
|
/// color|1|Brand Color|0
|
||||||
|
$--color-primary: #172B4D !default;
|
||||||
|
/// color|1|Background Color|4
|
||||||
|
$--color-white: #FFFFFF !default;
|
||||||
|
/// color|1|Background Color|4
|
||||||
|
$--color-black: #000000 !default;
|
||||||
|
$--color-primary-light-1: mix($--color-white, $--color-primary, 10%) !default; /* 53a8ff */
|
||||||
|
$--color-primary-light-2: mix($--color-white, $--color-primary, 20%) !default; /* 66b1ff */
|
||||||
|
$--color-primary-light-3: mix($--color-white, $--color-primary, 30%) !default; /* 79bbff */
|
||||||
|
$--color-primary-light-4: mix($--color-white, $--color-primary, 40%) !default; /* 8cc5ff */
|
||||||
|
$--color-primary-light-5: mix($--color-white, $--color-primary, 50%) !default; /* a0cfff */
|
||||||
|
$--color-primary-light-6: mix($--color-white, $--color-primary, 60%) !default; /* b3d8ff */
|
||||||
|
$--color-primary-light-7: mix($--color-white, $--color-primary, 70%) !default; /* c6e2ff */
|
||||||
|
$--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */
|
||||||
|
$--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */
|
||||||
|
/// color|1|Functional Color|1
|
||||||
|
$--color-success: #67C23A !default;
|
||||||
|
/// color|1|Functional Color|1
|
||||||
|
$--color-warning: #E6A23C !default;
|
||||||
|
/// color|1|Functional Color|1
|
||||||
|
$--color-danger: #F56C6C !default;
|
||||||
|
/// color|1|Functional Color|1
|
||||||
|
$--color-info: #909399 !default;
|
||||||
|
|
||||||
|
$--color-success-light: mix($--color-white, $--color-success, 80%) !default;
|
||||||
|
$--color-warning-light: mix($--color-white, $--color-warning, 80%) !default;
|
||||||
|
$--color-danger-light: mix($--color-white, $--color-danger, 80%) !default;
|
||||||
|
$--color-info-light: mix($--color-white, $--color-info, 80%) !default;
|
||||||
|
|
||||||
|
$--color-success-lighter: mix($--color-white, $--color-success, 90%) !default;
|
||||||
|
$--color-warning-lighter: mix($--color-white, $--color-warning, 90%) !default;
|
||||||
|
$--color-danger-lighter: mix($--color-white, $--color-danger, 90%) !default;
|
||||||
|
$--color-info-lighter: mix($--color-white, $--color-info, 90%) !default;
|
||||||
|
/// color|1|Font Color|2
|
||||||
|
$--color-text-primary: #303133 !default;
|
||||||
|
/// color|1|Font Color|2
|
||||||
|
$--color-text-regular: #606266 !default;
|
||||||
|
/// color|1|Font Color|2
|
||||||
|
$--color-text-secondary: #909399 !default;
|
||||||
|
/// color|1|Font Color|2
|
||||||
|
$--color-text-placeholder: #C0C4CC !default;
|
||||||
|
/// color|1|Border Color|3
|
||||||
|
$--border-color-base: #DCDFE6 !default;
|
||||||
|
/// color|1|Border Color|3
|
||||||
|
$--border-color-light: #E4E7ED !default;
|
||||||
|
/// color|1|Border Color|3
|
||||||
|
$--border-color-lighter: #EBEEF5 !default;
|
||||||
|
/// color|1|Border Color|3
|
||||||
|
$--border-color-extra-light: #F2F6FC !default;
|
||||||
|
|
||||||
|
// Background
|
||||||
|
/// color|1|Background Color|4
|
||||||
|
$--background-color-base: #F5F7FA !default;
|
||||||
|
|
||||||
|
/* Link
|
||||||
|
-------------------------- */
|
||||||
|
$--link-color: $--color-primary-light-2 !default;
|
||||||
|
$--link-hover-color: $--color-primary !default;
|
||||||
|
|
||||||
|
/* Border
|
||||||
|
-------------------------- */
|
||||||
|
$--border-width-base: 2px !default;
|
||||||
|
$--border-style-base: solid !default;
|
||||||
|
$--border-color-hover: $--color-text-placeholder !default;
|
||||||
|
$--border-base: $--border-width-base $--border-style-base $--border-color-base !default;
|
||||||
|
/// borderRadius|1|Radius|0
|
||||||
|
$--border-radius-base: 10px !default;
|
||||||
|
/// borderRadius|1|Radius|0
|
||||||
|
$--border-radius-small: 3px !default;
|
||||||
|
/// borderRadius|1|Radius|0
|
||||||
|
$--border-radius-circle: 100% !default;
|
||||||
|
/// borderRadius|1|Radius|0
|
||||||
|
$--border-radius-zero: 0 !default;
|
||||||
|
|
||||||
|
// Box-shadow
|
||||||
|
/// boxShadow|1|Shadow|1
|
||||||
|
$--box-shadow-base: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04) !default;
|
||||||
|
// boxShadow|1|Shadow|1
|
||||||
|
$--box-shadow-dark: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .12) !default;
|
||||||
|
/// boxShadow|1|Shadow|1
|
||||||
|
$--box-shadow-light: 0 2px 12px 0 rgba(0, 0, 0, 0.1) !default;
|
||||||
|
|
||||||
|
/* Fill
|
||||||
|
-------------------------- */
|
||||||
|
$--fill-base: $--color-white !default;
|
||||||
|
|
||||||
|
/* Typography
|
||||||
|
-------------------------- */
|
||||||
|
$--font-path: '~element-ui/packages/theme-chalk/src/fonts' !default;
|
||||||
|
$--font-display: 'auto' !default;
|
||||||
|
/// fontSize|1|Font Size|0
|
||||||
|
$--font-size-extra-large: 22px !default;
|
||||||
|
/// fontSize|1|Font Size|0
|
||||||
|
$--font-size-large: 20px !default;
|
||||||
|
/// fontSize|1|Font Size|0
|
||||||
|
$--font-size-medium: 18px !default;
|
||||||
|
/// fontSize|1|Font Size|0
|
||||||
|
$--font-size-base: 16px !default;
|
||||||
|
/// fontSize|1|Font Size|0
|
||||||
|
$--font-size-small: 15px !default;
|
||||||
|
/// fontSize|1|Font Size|0
|
||||||
|
$--font-size-extra-small: 14px !default;
|
||||||
|
/// fontWeight|1|Font Weight|1
|
||||||
|
$--font-weight-primary: 500 !default;
|
||||||
|
/// fontWeight|1|Font Weight|1
|
||||||
|
$--font-weight-secondary: 100 !default;
|
||||||
|
/// fontLineHeight|1|Line Height|2
|
||||||
|
$--font-line-height-primary: 24px !default;
|
||||||
|
/// fontLineHeight|1|Line Height|2
|
||||||
|
$--font-line-height-secondary: 16px !default;
|
||||||
|
$--font-color-disabled-base: #bbb !default;
|
||||||
|
/* Size
|
||||||
|
-------------------------- */
|
||||||
|
$--size-base: 14px !default;
|
||||||
|
|
||||||
|
/* z-index
|
||||||
|
-------------------------- */
|
||||||
|
$--index-normal: 1 !default;
|
||||||
|
$--index-top: 1000 !default;
|
||||||
|
$--index-popper: 2000 !default;
|
||||||
|
|
||||||
|
/* Disable base
|
||||||
|
-------------------------- */
|
||||||
|
$--disabled-fill-base: $--background-color-base !default;
|
||||||
|
$--disabled-color-base: $--color-text-placeholder !default;
|
||||||
|
$--disabled-border-base: $--border-color-light !default;
|
||||||
|
|
||||||
|
/* Icon
|
||||||
|
-------------------------- */
|
||||||
|
$--icon-color: #666 !default;
|
||||||
|
$--icon-color-base: $--color-info !default;
|
||||||
|
|
||||||
|
/* Checkbox
|
||||||
|
-------------------------- */
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--checkbox-font-size: 14px !default;
|
||||||
|
/// fontWeight||Font|1
|
||||||
|
$--checkbox-font-weight: $--font-weight-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--checkbox-font-color: $--color-text-regular !default;
|
||||||
|
$--checkbox-input-height: 14px !default;
|
||||||
|
$--checkbox-input-width: 14px !default;
|
||||||
|
/// borderRadius||Border|2
|
||||||
|
$--checkbox-border-radius: $--border-radius-small !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--checkbox-background-color: $--color-white !default;
|
||||||
|
$--checkbox-input-border: $--border-base !default;
|
||||||
|
|
||||||
|
/// color||Color|0
|
||||||
|
$--checkbox-disabled-border-color: $--border-color-base !default;
|
||||||
|
$--checkbox-disabled-input-fill: #edf2fc !default;
|
||||||
|
$--checkbox-disabled-icon-color: $--color-text-placeholder !default;
|
||||||
|
|
||||||
|
$--checkbox-disabled-checked-input-fill: $--border-color-extra-light !default;
|
||||||
|
$--checkbox-disabled-checked-input-border-color: $--border-color-base !default;
|
||||||
|
$--checkbox-disabled-checked-icon-color: $--color-text-placeholder !default;
|
||||||
|
|
||||||
|
/// color||Color|0
|
||||||
|
$--checkbox-checked-font-color: $--color-primary !default;
|
||||||
|
$--checkbox-checked-input-border-color: $--color-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--checkbox-checked-background-color: $--color-primary !default;
|
||||||
|
$--checkbox-checked-icon-color: $--fill-base !default;
|
||||||
|
|
||||||
|
$--checkbox-input-border-color-hover: $--color-primary !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--checkbox-bordered-height: 40px !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--checkbox-bordered-padding: 9px 20px 9px 10px !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--checkbox-bordered-medium-padding: 7px 20px 7px 10px !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--checkbox-bordered-small-padding: 5px 15px 5px 10px !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--checkbox-bordered-mini-padding: 3px 15px 3px 10px !default;
|
||||||
|
$--checkbox-bordered-medium-input-height: 14px !default;
|
||||||
|
$--checkbox-bordered-medium-input-width: 14px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--checkbox-bordered-medium-height: 36px !default;
|
||||||
|
$--checkbox-bordered-small-input-height: 12px !default;
|
||||||
|
$--checkbox-bordered-small-input-width: 12px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--checkbox-bordered-small-height: 32px !default;
|
||||||
|
$--checkbox-bordered-mini-input-height: 12px !default;
|
||||||
|
$--checkbox-bordered-mini-input-width: 12px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--checkbox-bordered-mini-height: 28px !default;
|
||||||
|
|
||||||
|
/// color||Color|0
|
||||||
|
$--checkbox-button-checked-background-color: $--color-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--checkbox-button-checked-font-color: $--color-white !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--checkbox-button-checked-border-color: $--color-primary !default;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Radio
|
||||||
|
-------------------------- */
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--radio-font-size: $--font-size-base !default;
|
||||||
|
/// fontWeight||Font|1
|
||||||
|
$--radio-font-weight: $--font-weight-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--radio-font-color: $--color-text-regular !default;
|
||||||
|
$--radio-input-height: 14px !default;
|
||||||
|
$--radio-input-width: 14px !default;
|
||||||
|
/// borderRadius||Border|2
|
||||||
|
$--radio-input-border-radius: $--border-radius-circle !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--radio-input-background-color: $--color-white !default;
|
||||||
|
$--radio-input-border: $--border-base !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--radio-input-border-color: $--border-color-base !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--radio-icon-color: $--color-white !default;
|
||||||
|
|
||||||
|
$--radio-disabled-input-border-color: $--disabled-border-base !default;
|
||||||
|
$--radio-disabled-input-fill: $--disabled-fill-base !default;
|
||||||
|
$--radio-disabled-icon-color: $--disabled-fill-base !default;
|
||||||
|
|
||||||
|
$--radio-disabled-checked-input-border-color: $--disabled-border-base !default;
|
||||||
|
$--radio-disabled-checked-input-fill: $--disabled-fill-base !default;
|
||||||
|
$--radio-disabled-checked-icon-color: $--color-text-placeholder !default;
|
||||||
|
|
||||||
|
/// color||Color|0
|
||||||
|
$--radio-checked-font-color: $--color-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--radio-checked-input-border-color: $--color-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--radio-checked-input-background-color: $--color-white !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--radio-checked-icon-color: $--color-primary !default;
|
||||||
|
|
||||||
|
$--radio-input-border-color-hover: $--color-primary !default;
|
||||||
|
|
||||||
|
$--radio-bordered-height: 40px !default;
|
||||||
|
$--radio-bordered-padding: 12px 20px 0 10px !default;
|
||||||
|
$--radio-bordered-medium-padding: 10px 20px 0 10px !default;
|
||||||
|
$--radio-bordered-small-padding: 8px 15px 0 10px !default;
|
||||||
|
$--radio-bordered-mini-padding: 6px 15px 0 10px !default;
|
||||||
|
$--radio-bordered-medium-input-height: 14px !default;
|
||||||
|
$--radio-bordered-medium-input-width: 14px !default;
|
||||||
|
$--radio-bordered-medium-height: 36px !default;
|
||||||
|
$--radio-bordered-small-input-height: 12px !default;
|
||||||
|
$--radio-bordered-small-input-width: 12px !default;
|
||||||
|
$--radio-bordered-small-height: 32px !default;
|
||||||
|
$--radio-bordered-mini-input-height: 12px !default;
|
||||||
|
$--radio-bordered-mini-input-width: 12px !default;
|
||||||
|
$--radio-bordered-mini-height: 28px !default;
|
||||||
|
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--radio-button-font-size: $--font-size-base !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--radio-button-checked-background-color: $--color-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--radio-button-checked-font-color: $--color-white !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--radio-button-checked-border-color: $--color-primary !default;
|
||||||
|
$--radio-button-disabled-checked-fill: $--border-color-extra-light !default;
|
||||||
|
|
||||||
|
/* Select
|
||||||
|
-------------------------- */
|
||||||
|
$--select-border-color-hover: $--border-color-hover !default;
|
||||||
|
$--select-disabled-border: $--disabled-border-base !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--select-font-size: $--font-size-base !default;
|
||||||
|
$--select-close-hover-color: $--color-text-secondary !default;
|
||||||
|
|
||||||
|
$--select-input-color: $--color-text-placeholder !default;
|
||||||
|
$--select-multiple-input-color: #666 !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--select-input-focus-border-color: $--color-primary !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--select-input-font-size: 14px !default;
|
||||||
|
|
||||||
|
$--select-option-color: $--color-text-regular !default;
|
||||||
|
$--select-option-disabled-color: $--color-text-placeholder !default;
|
||||||
|
$--select-option-disabled-background: $--color-white !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--select-option-height: 34px !default;
|
||||||
|
$--select-option-hover-background: $--background-color-base !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--select-option-selected-font-color: $--color-primary !default;
|
||||||
|
$--select-option-selected-hover: $--background-color-base !default;
|
||||||
|
|
||||||
|
$--select-group-color: $--color-info !default;
|
||||||
|
$--select-group-height: 30px !default;
|
||||||
|
$--select-group-font-size: 12px !default;
|
||||||
|
|
||||||
|
$--select-dropdown-background: $--color-white !default;
|
||||||
|
$--select-dropdown-shadow: $--box-shadow-light !default;
|
||||||
|
$--select-dropdown-empty-color: #999 !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--select-dropdown-max-height: 274px !default;
|
||||||
|
$--select-dropdown-padding: 6px 0 !default;
|
||||||
|
$--select-dropdown-empty-padding: 10px 0 !default;
|
||||||
|
$--select-dropdown-border: solid 1px $--border-color-light !default;
|
||||||
|
|
||||||
|
/* Alert
|
||||||
|
-------------------------- */
|
||||||
|
$--alert-padding: 8px 16px !default;
|
||||||
|
/// borderRadius||Border|2
|
||||||
|
$--alert-border-radius: $--border-radius-base !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--alert-title-font-size: 13px !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--alert-description-font-size: 12px !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--alert-close-font-size: 12px !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--alert-close-customed-font-size: 13px !default;
|
||||||
|
|
||||||
|
$--alert-success-color: $--color-success-lighter !default;
|
||||||
|
$--alert-info-color: $--color-info-lighter !default;
|
||||||
|
$--alert-warning-color: $--color-warning-lighter !default;
|
||||||
|
$--alert-danger-color: $--color-danger-lighter !default;
|
||||||
|
|
||||||
|
/// height||Other|4
|
||||||
|
$--alert-icon-size: 16px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--alert-icon-large-size: 28px !default;
|
||||||
|
|
||||||
|
/* MessageBox
|
||||||
|
-------------------------- */
|
||||||
|
/// color||Color|0
|
||||||
|
$--messagebox-title-color: $--color-text-primary !default;
|
||||||
|
$--msgbox-width: 420px !default;
|
||||||
|
$--msgbox-border-radius: 4px !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--messagebox-font-size: $--font-size-large !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--messagebox-content-font-size: $--font-size-base !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--messagebox-content-color: $--color-text-regular !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--messagebox-error-font-size: 12px !default;
|
||||||
|
$--msgbox-padding-primary: 15px !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--messagebox-success-color: $--color-success !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--messagebox-info-color: $--color-info !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--messagebox-warning-color: $--color-warning !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--messagebox-danger-color: $--color-danger !default;
|
||||||
|
|
||||||
|
/* Message
|
||||||
|
-------------------------- */
|
||||||
|
$--message-shadow: $--box-shadow-base !default;
|
||||||
|
$--message-min-width: 380px !default;
|
||||||
|
$--message-background-color: #edf2fc !default;
|
||||||
|
$--message-padding: 15px 15px 15px 20px !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--message-close-icon-color: $--color-text-placeholder !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--message-close-size: 16px !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--message-close-hover-color: $--color-text-secondary !default;
|
||||||
|
|
||||||
|
/// color||Color|0
|
||||||
|
$--message-success-font-color: $--color-success !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--message-info-font-color: $--color-info !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--message-warning-font-color: $--color-warning !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--message-danger-font-color: $--color-danger !default;
|
||||||
|
|
||||||
|
/* Notification
|
||||||
|
-------------------------- */
|
||||||
|
$--notification-width: 330px !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--notification-padding: 14px 26px 14px 13px !default;
|
||||||
|
$--notification-radius: 8px !default;
|
||||||
|
$--notification-shadow: $--box-shadow-light !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--notification-border-color: $--border-color-lighter !default;
|
||||||
|
$--notification-icon-size: 24px !default;
|
||||||
|
$--notification-close-font-size: $--message-close-size !default;
|
||||||
|
$--notification-group-margin-left: 13px !default;
|
||||||
|
$--notification-group-margin-right: 8px !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--notification-content-font-size: $--font-size-base !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--notification-content-color: $--color-text-regular !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--notification-title-font-size: 16px !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--notification-title-color: $--color-text-primary !default;
|
||||||
|
|
||||||
|
/// color||Color|0
|
||||||
|
$--notification-close-color: $--color-text-secondary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--notification-close-hover-color: $--color-text-regular !default;
|
||||||
|
|
||||||
|
/// color||Color|0
|
||||||
|
$--notification-success-icon-color: $--color-success !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--notification-info-icon-color: $--color-info !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--notification-warning-icon-color: $--color-warning !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--notification-danger-icon-color: $--color-danger !default;
|
||||||
|
|
||||||
|
/* Input
|
||||||
|
-------------------------- */
|
||||||
|
$--input-font-size: $--font-size-base !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--input-font-color: $--color-text-regular !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--input-width: 150px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--input-height: 50px !default;
|
||||||
|
$--input-border: $--border-base !default;
|
||||||
|
$--input-border-color: $--border-color-base !default;
|
||||||
|
/// borderRadius||Border|2
|
||||||
|
$--input-border-radius: $--border-radius-base !default;
|
||||||
|
$--input-border-color-hover: $--border-color-hover !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--input-background-color: $--color-white !default;
|
||||||
|
$--input-fill-disabled: $--disabled-fill-base !default;
|
||||||
|
$--input-color-disabled: $--font-color-disabled-base !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--input-icon-color: $--color-text-placeholder !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--input-placeholder-color: $--color-text-placeholder !default;
|
||||||
|
$--input-max-width: 314px !default;
|
||||||
|
|
||||||
|
$--input-hover-border: $--border-color-hover !default;
|
||||||
|
$--input-clear-hover-color: $--color-text-secondary !default;
|
||||||
|
|
||||||
|
$--input-focus-border: $--color-primary !default;
|
||||||
|
$--input-focus-fill: $--color-white !default;
|
||||||
|
|
||||||
|
$--input-disabled-fill: $--disabled-fill-base !default;
|
||||||
|
$--input-disabled-border: $--disabled-border-base !default;
|
||||||
|
$--input-disabled-color: $--disabled-color-base !default;
|
||||||
|
$--input-disabled-placeholder-color: $--color-text-placeholder !default;
|
||||||
|
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--input-medium-font-size: 14px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--input-medium-height: 36px !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--input-small-font-size: 13px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--input-small-height: 32px !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--input-mini-font-size: 12px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--input-mini-height: 28px !default;
|
||||||
|
|
||||||
|
/* Cascader
|
||||||
|
-------------------------- */
|
||||||
|
/// color||Color|0
|
||||||
|
$--cascader-menu-font-color: $--color-text-regular !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--cascader-menu-selected-font-color: $--color-primary !default;
|
||||||
|
$--cascader-menu-fill: $--fill-base !default;
|
||||||
|
$--cascader-menu-font-size: $--font-size-base !default;
|
||||||
|
$--cascader-menu-radius: $--border-radius-base !default;
|
||||||
|
$--cascader-menu-border: solid 1px $--border-color-light !default;
|
||||||
|
$--cascader-menu-shadow: $--box-shadow-light !default;
|
||||||
|
$--cascader-node-background-hover: $--background-color-base !default;
|
||||||
|
$--cascader-node-color-disabled:$--color-text-placeholder !default;
|
||||||
|
$--cascader-color-empty:$--color-text-placeholder !default;
|
||||||
|
$--cascader-tag-background: #f0f2f5;
|
||||||
|
|
||||||
|
/* Group
|
||||||
|
-------------------------- */
|
||||||
|
$--group-option-flex: 0 0 (1/5) * 100% !default;
|
||||||
|
$--group-option-offset-bottom: 12px !default;
|
||||||
|
$--group-option-fill-hover: rgba($--color-black, 0.06) !default;
|
||||||
|
$--group-title-color: $--color-black !default;
|
||||||
|
$--group-title-font-size: $--font-size-base !default;
|
||||||
|
$--group-title-width: 66px !default;
|
||||||
|
|
||||||
|
/* Tab
|
||||||
|
-------------------------- */
|
||||||
|
$--tab-font-size: $--font-size-base !default;
|
||||||
|
$--tab-border-line: 1px solid #e4e4e4 !default;
|
||||||
|
$--tab-header-color-active: $--color-text-secondary !default;
|
||||||
|
$--tab-header-color-hover: $--color-text-regular !default;
|
||||||
|
$--tab-header-color: $--color-text-regular !default;
|
||||||
|
$--tab-header-fill-active: rgba($--color-black, 0.06) !default;
|
||||||
|
$--tab-header-fill-hover: rgba($--color-black, 0.06) !default;
|
||||||
|
$--tab-vertical-header-width: 90px !default;
|
||||||
|
$--tab-vertical-header-count-color: $--color-white !default;
|
||||||
|
$--tab-vertical-header-count-fill: $--color-text-secondary !default;
|
||||||
|
|
||||||
|
/* Button
|
||||||
|
-------------------------- */
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--button-font-size: $--font-size-base !default;
|
||||||
|
/// fontWeight||Font|1
|
||||||
|
$--button-font-weight: $--font-weight-primary !default;
|
||||||
|
/// borderRadius||Border|2
|
||||||
|
$--button-border-radius: $--border-radius-base !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--button-padding-vertical: 12px !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--button-padding-horizontal: 20px !default;
|
||||||
|
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--button-medium-font-size: $--font-size-base !default;
|
||||||
|
/// borderRadius||Border|2
|
||||||
|
$--button-medium-border-radius: $--border-radius-base !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--button-medium-padding-vertical: 10px !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--button-medium-padding-horizontal: 20px !default;
|
||||||
|
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--button-small-font-size: 12px !default;
|
||||||
|
$--button-small-border-radius: #{$--border-radius-base - 1} !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--button-small-padding-vertical: 9px !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--button-small-padding-horizontal: 15px !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--button-mini-font-size: 12px !default;
|
||||||
|
$--button-mini-border-radius: #{$--border-radius-base - 1} !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--button-mini-padding-vertical: 7px !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--button-mini-padding-horizontal: 15px !default;
|
||||||
|
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-default-font-color: $--color-text-regular !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-default-background-color: $--color-white !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-default-border-color: $--border-color-base !default;
|
||||||
|
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-disabled-font-color: $--color-text-placeholder !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-disabled-background-color: $--color-white !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-disabled-border-color: $--border-color-lighter !default;
|
||||||
|
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-primary-border-color: $--color-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-primary-font-color: $--color-white !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-primary-background-color: $--color-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-success-border-color: $--color-success !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-success-font-color: $--color-white !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-success-background-color: $--color-success !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-warning-border-color: $--color-warning !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-warning-font-color: $--color-white !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-warning-background-color: $--color-warning !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-danger-border-color: $--color-danger !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-danger-font-color: $--color-white !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-danger-background-color: $--color-danger !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-info-border-color: $--color-info !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-info-font-color: $--color-white !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--button-info-background-color: $--color-info !default;
|
||||||
|
|
||||||
|
$--button-hover-tint-percent: 20% !default;
|
||||||
|
$--button-active-shade-percent: 10% !default;
|
||||||
|
|
||||||
|
|
||||||
|
/* cascader
|
||||||
|
-------------------------- */
|
||||||
|
$--cascader-height: 200px !default;
|
||||||
|
|
||||||
|
/* Switch
|
||||||
|
-------------------------- */
|
||||||
|
/// color||Color|0
|
||||||
|
$--switch-on-color: $--color-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--switch-off-color: $--border-color-base !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--switch-font-size: $--font-size-base !default;
|
||||||
|
$--switch-core-border-radius: 10px !default;
|
||||||
|
// height||Other|4 TODO: width 代码写死的40px 所以下面这三个属性都没意义
|
||||||
|
$--switch-width: 40px !default;
|
||||||
|
// height||Other|4
|
||||||
|
$--switch-height: 20px !default;
|
||||||
|
// height||Other|4
|
||||||
|
$--switch-button-size: 16px !default;
|
||||||
|
|
||||||
|
/* Dialog
|
||||||
|
-------------------------- */
|
||||||
|
$--dialog-background-color: $--color-white !default;
|
||||||
|
$--dialog-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3) !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--dialog-title-font-size: $--font-size-large !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--dialog-content-font-size: 14px !default;
|
||||||
|
/// fontLineHeight||LineHeight|2
|
||||||
|
$--dialog-font-line-height: $--font-line-height-primary !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--dialog-padding-primary: 20px !default;
|
||||||
|
|
||||||
|
/* Table
|
||||||
|
-------------------------- */
|
||||||
|
/// color||Color|0
|
||||||
|
$--table-border-color: $--border-color-lighter !default;
|
||||||
|
$--table-border: 1px solid $--table-border-color !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--table-font-color: $--color-text-regular !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--table-header-font-color: $--color-text-secondary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--table-row-hover-background-color: $--background-color-base !default;
|
||||||
|
$--table-current-row-background-color: $--color-primary-light-9 !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--table-header-background-color: $--color-white !default;
|
||||||
|
$--table-fixed-box-shadow: 0 0 10px rgba(0, 0, 0, .12) !default;
|
||||||
|
|
||||||
|
/* Pagination
|
||||||
|
-------------------------- */
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--pagination-font-size: 13px !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--pagination-background-color: $--color-white !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--pagination-font-color: $--color-text-primary !default;
|
||||||
|
$--pagination-border-radius: 3px !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--pagination-button-color: $--color-text-primary !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--pagination-button-width: 35.5px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--pagination-button-height: 28px !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--pagination-button-disabled-color: $--color-text-placeholder !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--pagination-button-disabled-background-color: $--color-white !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--pagination-hover-color: $--color-primary !default;
|
||||||
|
|
||||||
|
/* Popup
|
||||||
|
-------------------------- */
|
||||||
|
/// color||Color|0
|
||||||
|
$--popup-modal-background-color: $--color-black !default;
|
||||||
|
/// opacity||Other|1
|
||||||
|
$--popup-modal-opacity: 0.5 !default;
|
||||||
|
|
||||||
|
/* Popover
|
||||||
|
-------------------------- */
|
||||||
|
/// color||Color|0
|
||||||
|
$--popover-background-color: $--color-white !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--popover-font-size: $--font-size-base !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--popover-border-color: $--border-color-lighter !default;
|
||||||
|
$--popover-arrow-size: 6px !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--popover-padding: 12px !default;
|
||||||
|
$--popover-padding-large: 18px 20px !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--popover-title-font-size: 16px !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--popover-title-font-color: $--color-text-primary !default;
|
||||||
|
|
||||||
|
/* Tooltip
|
||||||
|
-------------------------- */
|
||||||
|
/// color|1|Color|0
|
||||||
|
$--tooltip-fill: $--color-text-primary !default;
|
||||||
|
/// color|1|Color|0
|
||||||
|
$--tooltip-color: $--color-white !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--tooltip-font-size: 12px !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--tooltip-border-color: $--color-text-primary !default;
|
||||||
|
$--tooltip-arrow-size: 6px !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--tooltip-padding: 10px !default;
|
||||||
|
|
||||||
|
/* Tag
|
||||||
|
-------------------------- */
|
||||||
|
/// color||Color|0
|
||||||
|
$--tag-info-color: $--color-info !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--tag-primary-color: $--color-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--tag-success-color: $--color-success !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--tag-warning-color: $--color-warning !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--tag-danger-color: $--color-danger !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--tag-font-size: 12px !default;
|
||||||
|
$--tag-border-radius: 4px !default;
|
||||||
|
$--tag-padding: 0 10px !default;
|
||||||
|
|
||||||
|
/* Tree
|
||||||
|
-------------------------- */
|
||||||
|
/// color||Color|0
|
||||||
|
$--tree-node-hover-background-color: $--background-color-base !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--tree-font-color: $--color-text-regular !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--tree-expand-icon-color: $--color-text-placeholder !default;
|
||||||
|
|
||||||
|
/* Dropdown
|
||||||
|
-------------------------- */
|
||||||
|
$--dropdown-menu-box-shadow: $--box-shadow-light !default;
|
||||||
|
$--dropdown-menuItem-hover-fill: $--color-primary-light-9 !default;
|
||||||
|
$--dropdown-menuItem-hover-color: $--link-color !default;
|
||||||
|
|
||||||
|
/* Badge
|
||||||
|
-------------------------- */
|
||||||
|
/// color||Color|0
|
||||||
|
$--badge-background-color: $--color-danger !default;
|
||||||
|
$--badge-radius: 10px !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--badge-font-size: 12px !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--badge-padding: 6px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--badge-size: 18px !default;
|
||||||
|
|
||||||
|
/* Card
|
||||||
|
--------------------------*/
|
||||||
|
/// color||Color|0
|
||||||
|
$--card-border-color: $--border-color-lighter !default;
|
||||||
|
$--card-border-radius: 4px !default;
|
||||||
|
/// padding||Spacing|3
|
||||||
|
$--card-padding: 20px !default;
|
||||||
|
|
||||||
|
/* Slider
|
||||||
|
--------------------------*/
|
||||||
|
/// color||Color|0
|
||||||
|
$--slider-main-background-color: $--color-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--slider-runway-background-color: $--border-color-light !default;
|
||||||
|
$--slider-button-hover-color: mix($--color-primary, black, 97%) !default;
|
||||||
|
$--slider-stop-background-color: $--color-white !default;
|
||||||
|
$--slider-disable-color: $--color-text-placeholder !default;
|
||||||
|
$--slider-margin: 16px 0 !default;
|
||||||
|
$--slider-border-radius: 3px !default;
|
||||||
|
/// height|1|Other|4
|
||||||
|
$--slider-height: 6px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--slider-button-size: 16px !default;
|
||||||
|
$--slider-button-wrapper-size: 36px !default;
|
||||||
|
$--slider-button-wrapper-offset: -15px !default;
|
||||||
|
|
||||||
|
/* Steps
|
||||||
|
--------------------------*/
|
||||||
|
$--steps-border-color: $--disabled-border-base !default;
|
||||||
|
$--steps-border-radius: 4px !default;
|
||||||
|
$--steps-padding: 20px !default;
|
||||||
|
|
||||||
|
/* Menu
|
||||||
|
--------------------------*/
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--menu-item-font-size: $--font-size-base !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--menu-item-font-color: $--color-text-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--menu-background-color: $--color-white !default;
|
||||||
|
$--menu-item-hover-fill: $--color-primary-light-9 !default;
|
||||||
|
|
||||||
|
/* Rate
|
||||||
|
--------------------------*/
|
||||||
|
$--rate-height: 20px !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--rate-font-size: $--font-size-base !default;
|
||||||
|
/// height||Other|3
|
||||||
|
$--rate-icon-size: 18px !default;
|
||||||
|
/// margin||Spacing|2
|
||||||
|
$--rate-icon-margin: 6px !default;
|
||||||
|
$--rate-icon-color: $--color-text-placeholder !default;
|
||||||
|
|
||||||
|
/* DatePicker
|
||||||
|
--------------------------*/
|
||||||
|
$--datepicker-font-color: $--color-text-regular !default;
|
||||||
|
/// color|1|Color|0
|
||||||
|
$--datepicker-off-font-color: $--color-text-placeholder !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--datepicker-header-font-color: $--color-text-regular !default;
|
||||||
|
$--datepicker-icon-color: $--color-text-primary !default;
|
||||||
|
$--datepicker-border-color: $--disabled-border-base !default;
|
||||||
|
$--datepicker-inner-border-color: #e4e4e4 !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--datepicker-inrange-background-color: $--border-color-extra-light !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--datepicker-inrange-hover-background-color: $--border-color-extra-light !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--datepicker-active-color: $--color-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--datepicker-hover-font-color: $--color-primary !default;
|
||||||
|
$--datepicker-cell-hover-color: #fff !default;
|
||||||
|
|
||||||
|
/* Loading
|
||||||
|
--------------------------*/
|
||||||
|
/// height||Other|4
|
||||||
|
$--loading-spinner-size: 42px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--loading-fullscreen-spinner-size: 50px !default;
|
||||||
|
|
||||||
|
/* Scrollbar
|
||||||
|
--------------------------*/
|
||||||
|
$--scrollbar-background-color: rgba($--color-text-secondary, .3) !default;
|
||||||
|
$--scrollbar-hover-background-color: rgba($--color-text-secondary, .5) !default;
|
||||||
|
|
||||||
|
/* Carousel
|
||||||
|
--------------------------*/
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--carousel-arrow-font-size: 12px !default;
|
||||||
|
$--carousel-arrow-size: 36px !default;
|
||||||
|
$--carousel-arrow-background: rgba(31, 45, 61, 0.11) !default;
|
||||||
|
$--carousel-arrow-hover-background: rgba(31, 45, 61, 0.23) !default;
|
||||||
|
/// width||Other|4
|
||||||
|
$--carousel-indicator-width: 30px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--carousel-indicator-height: 2px !default;
|
||||||
|
$--carousel-indicator-padding-horizontal: 4px !default;
|
||||||
|
$--carousel-indicator-padding-vertical: 12px !default;
|
||||||
|
$--carousel-indicator-out-color: $--border-color-hover !default;
|
||||||
|
|
||||||
|
/* Collapse
|
||||||
|
--------------------------*/
|
||||||
|
/// color||Color|0
|
||||||
|
$--collapse-border-color: $--border-color-lighter !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--collapse-header-height: 48px !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--collapse-header-background-color: $--color-white !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--collapse-header-font-color: $--color-text-primary !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--collapse-header-font-size: 13px !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--collapse-content-background-color: $--color-white !default;
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--collapse-content-font-size: 13px !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--collapse-content-font-color: $--color-text-primary !default;
|
||||||
|
|
||||||
|
/* Transfer
|
||||||
|
--------------------------*/
|
||||||
|
$--transfer-border-color: $--border-color-lighter !default;
|
||||||
|
$--transfer-border-radius: $--border-radius-base !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--transfer-panel-width: 200px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--transfer-panel-header-height: 40px !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--transfer-panel-header-background-color: $--background-color-base !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--transfer-panel-footer-height: 40px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--transfer-panel-body-height: 246px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--transfer-item-height: 30px !default;
|
||||||
|
/// height||Other|4
|
||||||
|
$--transfer-filter-height: 32px !default;
|
||||||
|
|
||||||
|
/* Header
|
||||||
|
--------------------------*/
|
||||||
|
$--header-padding: 0 20px !default;
|
||||||
|
|
||||||
|
/* Footer
|
||||||
|
--------------------------*/
|
||||||
|
$--footer-padding: 0 20px !default;
|
||||||
|
|
||||||
|
/* Main
|
||||||
|
--------------------------*/
|
||||||
|
$--main-padding: 20px !default;
|
||||||
|
|
||||||
|
/* Timeline
|
||||||
|
--------------------------*/
|
||||||
|
$--timeline-node-size-normal: 12px !default;
|
||||||
|
$--timeline-node-size-large: 14px !default;
|
||||||
|
$--timeline-node-color: $--border-color-light !default;
|
||||||
|
|
||||||
|
/* Backtop
|
||||||
|
--------------------------*/
|
||||||
|
/// color||Color|0
|
||||||
|
$--backtop-background-color: $--color-white !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--backtop-font-color: $--color-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--backtop-hover-background-color: $--border-color-extra-light !default;
|
||||||
|
|
||||||
|
/* Link
|
||||||
|
--------------------------*/
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--link-font-size: $--font-size-base !default;
|
||||||
|
/// fontWeight||Font|1
|
||||||
|
$--link-font-weight: $--font-weight-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--link-default-font-color: $--color-text-regular !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--link-default-active-color: $--color-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--link-disabled-font-color: $--color-text-placeholder !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--link-primary-font-color: $--color-primary !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--link-success-font-color: $--color-success !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--link-warning-font-color: $--color-warning !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--link-danger-font-color: $--color-danger !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--link-info-font-color: $--color-info !default;
|
||||||
|
/* Calendar
|
||||||
|
--------------------------*/
|
||||||
|
/// border||Other|4
|
||||||
|
$--calendar-border: $--table-border !default;
|
||||||
|
/// color||Other|4
|
||||||
|
$--calendar-selected-background-color: #F2F8FE !default;
|
||||||
|
$--calendar-cell-width: 85px !default;
|
||||||
|
|
||||||
|
/* Form
|
||||||
|
-------------------------- */
|
||||||
|
/// fontSize||Font|1
|
||||||
|
$--form-label-font-size: $--font-size-base !default;
|
||||||
|
|
||||||
|
/* Avatar
|
||||||
|
--------------------------*/
|
||||||
|
/// color||Color|0
|
||||||
|
$--avatar-font-color: #fff !default;
|
||||||
|
/// color||Color|0
|
||||||
|
$--avatar-background-color: #C0C4CC !default;
|
||||||
|
/// fontSize||Font Size|1
|
||||||
|
$--avatar-text-font-size: 14px !default;
|
||||||
|
/// fontSize||Font Size|1
|
||||||
|
$--avatar-icon-font-size: 18px !default;
|
||||||
|
/// borderRadius||Border|2
|
||||||
|
$--avatar-border-radius: $--border-radius-base !default;
|
||||||
|
/// size|1|Avatar Size|3
|
||||||
|
$--avatar-large-size: 40px !default;
|
||||||
|
/// size|1|Avatar Size|3
|
||||||
|
$--avatar-medium-size: 36px !default;
|
||||||
|
/// size|1|Avatar Size|3
|
||||||
|
$--avatar-small-size: 28px !default;
|
||||||
|
|
||||||
|
/* Break-point
|
||||||
|
--------------------------*/
|
||||||
|
$--sm: 768px !default;
|
||||||
|
$--md: 992px !default;
|
||||||
|
$--lg: 1200px !default;
|
||||||
|
$--xl: 1920px !default;
|
||||||
|
|
||||||
|
$--breakpoints: (
|
||||||
|
'xs' : (max-width: $--sm - 1),
|
||||||
|
'sm' : (min-width: $--sm),
|
||||||
|
'md' : (min-width: $--md),
|
||||||
|
'lg' : (min-width: $--lg),
|
||||||
|
'xl' : (min-width: $--xl)
|
||||||
|
);
|
||||||
|
|
||||||
|
$--breakpoints-spec: (
|
||||||
|
'xs-only' : (max-width: $--sm - 1),
|
||||||
|
'sm-and-up' : (min-width: $--sm),
|
||||||
|
'sm-only': "(min-width: #{$--sm}) and (max-width: #{$--md - 1})",
|
||||||
|
'sm-and-down': (max-width: $--md - 1),
|
||||||
|
'md-and-up' : (min-width: $--md),
|
||||||
|
'md-only': "(min-width: #{$--md}) and (max-width: #{$--lg - 1})",
|
||||||
|
'md-and-down': (max-width: $--lg - 1),
|
||||||
|
'lg-and-up' : (min-width: $--lg),
|
||||||
|
'lg-only': "(min-width: #{$--lg}) and (max-width: #{$--xl - 1})",
|
||||||
|
'lg-and-down': (max-width: $--xl - 1),
|
||||||
|
'xl-only' : (min-width: $--xl),
|
||||||
|
);
|
||||||
|
|
||||||
|
@import '~element-ui/packages/theme-chalk/src/index';
|
|
@ -0,0 +1,23 @@
|
||||||
|
// Element components
|
||||||
|
@import './element/variables';
|
||||||
|
@import './custom/mixins';
|
||||||
|
@import './custom/global';
|
||||||
|
|
||||||
|
// Custom components
|
||||||
|
@import './custom/app-footer';
|
||||||
|
@import './custom/app-header';
|
||||||
|
@import './custom/app-home';
|
||||||
|
@import './custom/app-layout';
|
||||||
|
@import './custom/article';
|
||||||
|
@import './custom/card-list';
|
||||||
|
@import './custom/carousel';
|
||||||
|
@import './custom/chunk';
|
||||||
|
@import './custom/error';
|
||||||
|
@import './custom/image-list';
|
||||||
|
@import './custom/news';
|
||||||
|
@import './custom/overview';
|
||||||
|
@import './custom/research';
|
||||||
|
@import './custom/search';
|
||||||
|
@import './custom/teacher-list';
|
||||||
|
@import './custom/teacher';
|
||||||
|
@import './custom/team';
|
2671
portal_client/src/assets/vendor/font-awesome/fonts/fontawesome-webfont.svg
vendored
Normal file
After Width: | Height: | Size: 434 KiB |
BIN
portal_client/src/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff
vendored
Normal file
BIN
portal_client/src/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff2
vendored
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
<template>
|
||||||
|
<div class="card-list">
|
||||||
|
<div v-if="!data.length" class="tip">
|
||||||
|
暂无内容
|
||||||
|
</div>
|
||||||
|
<el-row
|
||||||
|
:gutter="gutter"
|
||||||
|
v-for="line in Math.ceil(data.length / column)"
|
||||||
|
:key="line"
|
||||||
|
:style="{ margin: gutter + 'px' }"
|
||||||
|
>
|
||||||
|
<el-col
|
||||||
|
:span="24 / column"
|
||||||
|
v-for="(item, index) in data.slice((line - 1) * column, line * column)"
|
||||||
|
:key="index"
|
||||||
|
>
|
||||||
|
<el-card
|
||||||
|
:body-style="{ padding: '0px', height: height }"
|
||||||
|
:style="showBorder ? '' : 'border: none'"
|
||||||
|
class="card-list-item"
|
||||||
|
shadow="hover"
|
||||||
|
@click.native="
|
||||||
|
item.path ? $router.push(item.path) : openNewTab(item.href)
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<!-- 封面图片 -->
|
||||||
|
<img
|
||||||
|
:src="item.fileUrl"
|
||||||
|
:alt="item.title"
|
||||||
|
:width="width"
|
||||||
|
:height="height"
|
||||||
|
object-fit="scale-down"
|
||||||
|
/>
|
||||||
|
<!-- 横幅 -->
|
||||||
|
<div v-show="showBanner" class="banner">
|
||||||
|
<!-- 标题 -->
|
||||||
|
<div>{{ item.title }}</div>
|
||||||
|
<!-- 内容 -->
|
||||||
|
<div v-if="item.content" class="content">
|
||||||
|
{{ item.content }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { openNewTab } from '@/utils/common'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
gutter: {
|
||||||
|
default: 15,
|
||||||
|
type: Number,
|
||||||
|
description: '卡片间距'
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
default: () => [],
|
||||||
|
type: Array,
|
||||||
|
description: '填充数据'
|
||||||
|
},
|
||||||
|
column: {
|
||||||
|
default: 6,
|
||||||
|
type: Number,
|
||||||
|
description: '列数(只可取24的约数,1 | 2 | 3 | 4 | 6 | 8 | 12 | 24)'
|
||||||
|
},
|
||||||
|
'card-width': {
|
||||||
|
default: 0,
|
||||||
|
type: Number,
|
||||||
|
description: '卡片宽度'
|
||||||
|
},
|
||||||
|
'card-height': {
|
||||||
|
default: 0,
|
||||||
|
type: Number,
|
||||||
|
description: '卡片高度'
|
||||||
|
},
|
||||||
|
'show-border': {
|
||||||
|
default: false,
|
||||||
|
type: Boolean,
|
||||||
|
description: '显示边界'
|
||||||
|
},
|
||||||
|
'show-banner': {
|
||||||
|
default: true,
|
||||||
|
type: Boolean,
|
||||||
|
description: '显示横幅'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
openNewTab
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
width() {
|
||||||
|
return this.cardWidth ? this.cardWidth + 'px' : '100%'
|
||||||
|
},
|
||||||
|
height() {
|
||||||
|
return this.cardHeight ? this.cardHeight + 'px' : '100%'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,59 @@
|
||||||
|
<template>
|
||||||
|
<footer class="app-footer">
|
||||||
|
<div class="footer-inner">
|
||||||
|
<!-- <div class="focus-us">
|
||||||
|
<span>关注我们</span>
|
||||||
|
<ul>
|
||||||
|
<li v-for="(item, index) in config.mediaList" :key="index">
|
||||||
|
<el-link :underline="false" :href="item.href" target="_blank">
|
||||||
|
<i :class="item.icon"></i>
|
||||||
|
</el-link>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<el-divider></el-divider> -->
|
||||||
|
<div class="footer-row">
|
||||||
|
<div class="footer-info">
|
||||||
|
<ul class="link-list">
|
||||||
|
<li v-for="(item, index) in config.linkList" :key="index">
|
||||||
|
<el-link :underline="false" :href="item.href" target="_blank">
|
||||||
|
{{ item.name }}
|
||||||
|
</el-link>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="contact-us">
|
||||||
|
<li v-for="(item, index) in config.contacts" :key="index">
|
||||||
|
{{ item }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footer-brand">
|
||||||
|
<router-link to="/">
|
||||||
|
<el-image src="/img/brand_blue.png"></el-image>
|
||||||
|
</router-link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer-area">
|
||||||
|
<div>{{ config.ICP }}</div>
|
||||||
|
<div>
|
||||||
|
Copyright © {{ year }} UP. All Rights Reserved.
|
||||||
|
公共安全技术研究中心 版权所有
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import loadConfig from '@/mixins/load-config'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'AppFooter',
|
||||||
|
mixins: [loadConfig],
|
||||||
|
computed: {
|
||||||
|
year() {
|
||||||
|
return new Date().getFullYear()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,94 @@
|
||||||
|
<template>
|
||||||
|
<header class="app-header" :class="[`header-${effect}`]">
|
||||||
|
<div class="header-inner">
|
||||||
|
<div class="header-before">
|
||||||
|
<!-- Logo -->
|
||||||
|
<router-link to="/">
|
||||||
|
<!-- <el-image
|
||||||
|
:src="`/img/brand_${effect === 'light' ? 'blue' : 'white'}.png`"
|
||||||
|
fit="scale-down"
|
||||||
|
></el-image> -->
|
||||||
|
<el-image
|
||||||
|
:src="`/img/logo.png`"
|
||||||
|
fit="scale-down"
|
||||||
|
style="width: 300px"
|
||||||
|
></el-image>
|
||||||
|
</router-link>
|
||||||
|
<!-- 导航菜单 -->
|
||||||
|
<el-menu
|
||||||
|
:default-active="$route.path"
|
||||||
|
mode="horizontal"
|
||||||
|
router
|
||||||
|
unique-opened
|
||||||
|
>
|
||||||
|
<template v-for="item in allModules">
|
||||||
|
<template v-if="!item.hidden && item.status">
|
||||||
|
<!-- 没有子菜单 -->
|
||||||
|
<el-menu-item
|
||||||
|
v-if="!item.children"
|
||||||
|
:key="item.id"
|
||||||
|
:index="item.path"
|
||||||
|
>
|
||||||
|
{{ item.name }}
|
||||||
|
</el-menu-item>
|
||||||
|
<!-- 有子菜单 -->
|
||||||
|
<el-submenu v-else :key="item.id" :index="item.id + ''">
|
||||||
|
<template slot="title">{{ item.name }}</template>
|
||||||
|
<template v-for="subitem in item.children">
|
||||||
|
<template v-if="!subitem.hidden && subitem.status">
|
||||||
|
<el-menu-item
|
||||||
|
v-if="!subitem.isExternal"
|
||||||
|
:key="subitem.id"
|
||||||
|
:index="subitem.path"
|
||||||
|
>
|
||||||
|
{{ subitem.name }}
|
||||||
|
</el-menu-item>
|
||||||
|
<el-menu-item
|
||||||
|
v-else
|
||||||
|
:key="subitem.id"
|
||||||
|
@click="openNewTab(subitem.path)"
|
||||||
|
>
|
||||||
|
{{ subitem.name }}
|
||||||
|
</el-menu-item>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-submenu>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-menu>
|
||||||
|
</div>
|
||||||
|
<router-link to="/search">
|
||||||
|
<el-link :underline="false">
|
||||||
|
<i class="el-icon-search"></i>
|
||||||
|
</el-link>
|
||||||
|
</router-link>
|
||||||
|
<el-link :underline="false" href="http://192.168.1.133:8080">
|
||||||
|
<div>后台入口</div>
|
||||||
|
</el-link>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import loadConfig from '@/mixins/load-config'
|
||||||
|
import { mapState } from 'vuex'
|
||||||
|
import { openNewTab } from '@/utils/common.js'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'AppHeader',
|
||||||
|
mixins: [loadConfig],
|
||||||
|
props: {
|
||||||
|
effect: {
|
||||||
|
type: String,
|
||||||
|
default: 'transparent',
|
||||||
|
description: '导航栏主题,(transparent | dark | light)'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
openNewTab
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState(['allModules'])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,2 @@
|
||||||
|
export { default as AppFooter } from './AppFooter'
|
||||||
|
export { default as AppHeader } from './AppHeader'
|
|
@ -0,0 +1,53 @@
|
||||||
|
<template>
|
||||||
|
<section>
|
||||||
|
<app-header effect="light"></app-header>
|
||||||
|
<div class="layout-header">
|
||||||
|
<div class="header-inner">
|
||||||
|
<h1>{{ currentModule.name }}</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layout-body">
|
||||||
|
<div class="body-inner">
|
||||||
|
<transition name="el-fade-in-linear">
|
||||||
|
<router-view></router-view>
|
||||||
|
</transition>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<app-footer></app-footer>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import loadConfig from '@/mixins/load-config'
|
||||||
|
import { AppHeader, AppFooter } from './components'
|
||||||
|
import { mapState, mapMutations } from 'vuex'
|
||||||
|
import { queryModuleByRoute } from '@/api/module'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'AppLayout',
|
||||||
|
mixins: [loadConfig],
|
||||||
|
components: { AppHeader, AppFooter },
|
||||||
|
methods: {
|
||||||
|
...mapMutations(['SET_CURRENT_MODULE']),
|
||||||
|
getModule() {
|
||||||
|
queryModuleByRoute(this.route).then(res => {
|
||||||
|
this.SET_CURRENT_MODULE(res.data)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState(['currentModule']),
|
||||||
|
route() {
|
||||||
|
return this.$route.name
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
route() {
|
||||||
|
this.getModule()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getModule()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,15 @@
|
||||||
|
import Vue from 'vue'
|
||||||
|
import App from './App.vue'
|
||||||
|
import router from './router'
|
||||||
|
import store from './store'
|
||||||
|
import Up from './plugins/up-kit'
|
||||||
|
|
||||||
|
Vue.config.productionTip = false
|
||||||
|
|
||||||
|
Vue.use(Up)
|
||||||
|
|
||||||
|
new Vue({
|
||||||
|
router,
|
||||||
|
store,
|
||||||
|
render: h => h(App)
|
||||||
|
}).$mount('#app')
|
|
@ -0,0 +1,15 @@
|
||||||
|
import { mapState } from 'vuex'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
config: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState(['appSetting'])
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.config = this.appSetting[this.$options.name]
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
import { mapState } from 'vuex'
|
||||||
|
import { queryByQuery } from '../api/article.js'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
articles: [],
|
||||||
|
currentPage: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
total: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getArticles() {
|
||||||
|
queryByQuery({
|
||||||
|
title: '',
|
||||||
|
author: '',
|
||||||
|
module: this.currentModule.name,
|
||||||
|
status: "'已发布'",
|
||||||
|
startDate: null,
|
||||||
|
endDate: null,
|
||||||
|
isDeleted: 0,
|
||||||
|
currentPage: this.currentPage,
|
||||||
|
pageSize: this.pageSize
|
||||||
|
}).then(res => {
|
||||||
|
this.articles = res.data.list
|
||||||
|
this.total = res.data.total
|
||||||
|
})
|
||||||
|
},
|
||||||
|
showMore() {
|
||||||
|
this.pageSize += 10
|
||||||
|
this.getArticles()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState(['currentModule'])
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
currentModule() {
|
||||||
|
if (this.currentModule) {
|
||||||
|
this.getArticles()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
import '../assets/vendor/font-awesome/css/font-awesome.css'
|
||||||
|
import '../assets/scss/up.scss'
|
||||||
|
import 'quill/dist/quill.core.css'
|
||||||
|
import 'quill/dist/quill.snow.css'
|
||||||
|
import 'quill/dist/quill.bubble.css'
|
||||||
|
|
||||||
|
import Element from 'element-ui'
|
||||||
|
import VueLazyload from 'vue-lazyload'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
install(Vue) {
|
||||||
|
Vue.use(Element)
|
||||||
|
Vue.use(VueLazyload)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,105 @@
|
||||||
|
import Vue from 'vue'
|
||||||
|
import VueRouter from 'vue-router'
|
||||||
|
import store from '../store'
|
||||||
|
import { getAppSetting } from '../utils/index'
|
||||||
|
import { queryAllModules } from '../api/module'
|
||||||
|
|
||||||
|
Vue.use(VueRouter)
|
||||||
|
|
||||||
|
const routes = [
|
||||||
|
{
|
||||||
|
path: '/',
|
||||||
|
redirect: { name: 'home' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/home',
|
||||||
|
name: 'home',
|
||||||
|
component: () => import('../views/home')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/article/:id/:uuid',
|
||||||
|
name: 'article',
|
||||||
|
component: () => import('../views/article'),
|
||||||
|
props: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/teacher/:uuid',
|
||||||
|
name: 'teacher',
|
||||||
|
component: () => import('../views/teacher'),
|
||||||
|
props: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/student/:uuid',
|
||||||
|
name: 'studnet',
|
||||||
|
component: () => import('../views/student'),
|
||||||
|
props: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/error',
|
||||||
|
name: 'error',
|
||||||
|
component: () => import('../views/error')
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const router = new VueRouter({
|
||||||
|
mode: 'history',
|
||||||
|
base: process.env.BASE_URL,
|
||||||
|
scrollBehavior: () => ({ x: 0, y: 0 }),
|
||||||
|
routes
|
||||||
|
})
|
||||||
|
|
||||||
|
// 配置路由导航守卫
|
||||||
|
router.beforeEach((to, from, next) => {
|
||||||
|
// 如果路由不为空,则放行
|
||||||
|
if (store.state.allModules.length > 0) {
|
||||||
|
return next()
|
||||||
|
}
|
||||||
|
// 获取全局配置
|
||||||
|
getAppSetting()
|
||||||
|
// 获取菜单列表
|
||||||
|
queryAllModules()
|
||||||
|
.then(res => {
|
||||||
|
// 将菜单全局保存
|
||||||
|
store.commit('SET_ALL_MODULES', res.data)
|
||||||
|
var dynamicRoutes = []
|
||||||
|
// 递归生成路由
|
||||||
|
generateRoutes(dynamicRoutes, res.data)
|
||||||
|
// 添加布局组件路由
|
||||||
|
router.addRoute({
|
||||||
|
path: '/layout',
|
||||||
|
name: 'AppLayout',
|
||||||
|
component: () => import('../layout'),
|
||||||
|
children: dynamicRoutes
|
||||||
|
})
|
||||||
|
// 除已定义的路由,其他路由全部跳转至404页面
|
||||||
|
router.addRoute({ path: '/*', redirect: { name: 'error' } })
|
||||||
|
// 确保动态路由已经完全加载上去
|
||||||
|
next({ ...to, replace: true })
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
next({ name: 'error' })
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
// 递归生成路由
|
||||||
|
function generateRoutes(dynamicRoutes, modules) {
|
||||||
|
modules.forEach(item => {
|
||||||
|
// 只有子菜单拥有路由和路由名称
|
||||||
|
if (item.path || item.routeName) {
|
||||||
|
dynamicRoutes.push({
|
||||||
|
path: item.path,
|
||||||
|
name: item.routeName,
|
||||||
|
component: () =>
|
||||||
|
Promise.resolve(
|
||||||
|
require(`@/views${item.component}`).default // 路径中不能包含.或..等
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 如果有子菜单,生成子菜单的路由
|
||||||
|
if (item.children) {
|
||||||
|
return generateRoutes(dynamicRoutes, item.children)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export default router
|
|
@ -0,0 +1,25 @@
|
||||||
|
import Vue from 'vue'
|
||||||
|
import Vuex from 'vuex'
|
||||||
|
|
||||||
|
Vue.use(Vuex)
|
||||||
|
|
||||||
|
export default new Vuex.Store({
|
||||||
|
state: {
|
||||||
|
appSetting: {},
|
||||||
|
currentModule: {},
|
||||||
|
allModules: []
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
SET_APP_SETTING(state, appSetting) {
|
||||||
|
state.appSetting = appSetting
|
||||||
|
},
|
||||||
|
SET_CURRENT_MODULE(state, currentModule) {
|
||||||
|
state.currentModule = currentModule
|
||||||
|
},
|
||||||
|
SET_ALL_MODULES(state, allModules) {
|
||||||
|
state.allModules = allModules
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {},
|
||||||
|
modules: {}
|
||||||
|
})
|
|
@ -0,0 +1,80 @@
|
||||||
|
/**
|
||||||
|
* 打开新标签页
|
||||||
|
* @param {String} href 网页链接
|
||||||
|
*/
|
||||||
|
export function openNewTab(href) {
|
||||||
|
if (!href) return
|
||||||
|
window.open(href, '_blank')
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 日期格式化
|
||||||
|
* @param {String} date 待格式化日期
|
||||||
|
* @returns 格式化日期
|
||||||
|
*/
|
||||||
|
export function dateFormat1(date) {
|
||||||
|
// 待格式化日期
|
||||||
|
var dateObject = new Date(date)
|
||||||
|
// 现在
|
||||||
|
var nowDate = new Date()
|
||||||
|
const year =
|
||||||
|
dateObject.getFullYear() === nowDate.getFullYear()
|
||||||
|
? ''
|
||||||
|
: dateObject.getFullYear() + '-'
|
||||||
|
const month = prefixInteger(dateObject.getMonth() + 1, 2)
|
||||||
|
const day = prefixInteger(dateObject.getDate(), 2)
|
||||||
|
return `${year}${month}-${day}`
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 日期格式化
|
||||||
|
* @param {String} date 待格式化日期
|
||||||
|
* @returns 格式化日期
|
||||||
|
*/
|
||||||
|
export function dateFormat2(date) {
|
||||||
|
// 待格式化日期
|
||||||
|
var dateObject = new Date(date)
|
||||||
|
var dateTime = dateObject.getTime()
|
||||||
|
// 现在
|
||||||
|
var nowDate = new Date()
|
||||||
|
// 今天23:59:59
|
||||||
|
var tonightTime = new Date(
|
||||||
|
`${nowDate.getFullYear()}-${nowDate.getMonth() +
|
||||||
|
1}-${nowDate.getDate()} 23:59:59`
|
||||||
|
).getTime()
|
||||||
|
// 一天的毫秒数
|
||||||
|
const oneDayTime = 24 * 60 * 60 * 1000
|
||||||
|
if (tonightTime - dateTime < oneDayTime) {
|
||||||
|
return '今天'
|
||||||
|
} else if (tonightTime - dateTime < 2 * oneDayTime) {
|
||||||
|
return '昨天'
|
||||||
|
} else if (tonightTime - dateTime < 3 * oneDayTime) {
|
||||||
|
return '前天'
|
||||||
|
} else if (tonightTime - dateTime < 4 * oneDayTime) {
|
||||||
|
return '三天前'
|
||||||
|
} else if (tonightTime - dateTime < 5 * oneDayTime) {
|
||||||
|
return '四天前'
|
||||||
|
} else if (tonightTime - dateTime < 6 * oneDayTime) {
|
||||||
|
return '五天前'
|
||||||
|
} else if (tonightTime - dateTime < 7 * oneDayTime) {
|
||||||
|
return '六天前'
|
||||||
|
} else if (tonightTime - dateTime < 14 * oneDayTime) {
|
||||||
|
return '一周前'
|
||||||
|
} else {
|
||||||
|
return `${
|
||||||
|
dateObject.getFullYear() === nowDate.getFullYear()
|
||||||
|
? ''
|
||||||
|
: dateObject.getFullYear() + '年'
|
||||||
|
}${dateObject.getMonth() + 1}月${dateObject.getDate()}日`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 在数字前补0
|
||||||
|
* @param {Number} num 数字
|
||||||
|
* @param {Number} n 需要的字符长度
|
||||||
|
* @returns 补0后的数字
|
||||||
|
*/
|
||||||
|
function prefixInteger(num, n) {
|
||||||
|
return (Array(n).join(0) + num).slice(-n)
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
import { load } from '../api/config'
|
||||||
|
import store from '../store'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取全局配置
|
||||||
|
*/
|
||||||
|
export function getAppSetting() {
|
||||||
|
load().then(res => {
|
||||||
|
const appSetting = JSON.parse(res.data)
|
||||||
|
store.commit('SET_APP_SETTING', appSetting)
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
import axios from 'axios'
|
||||||
|
|
||||||
|
const service = axios.create({
|
||||||
|
baseURL: '/portal', // 配置请求的根路径
|
||||||
|
timeout: 5000
|
||||||
|
})
|
||||||
|
|
||||||
|
// 配置响应拦截器
|
||||||
|
service.interceptors.response.use(
|
||||||
|
res => {
|
||||||
|
console.log(res)
|
||||||
|
const status = res.data.code
|
||||||
|
const message = res.data.msg
|
||||||
|
if (status !== 0) {
|
||||||
|
return Promise.reject(new Error(message))
|
||||||
|
}
|
||||||
|
return res.data
|
||||||
|
},
|
||||||
|
error => {
|
||||||
|
console.log(error)
|
||||||
|
return Promise.reject(error)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
export default service
|
|
@ -0,0 +1,87 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<app-header effect="light"></app-header>
|
||||||
|
<div class="layout-body">
|
||||||
|
<div class="body-inner">
|
||||||
|
<!-- 文章标题 -->
|
||||||
|
<span class="article-title">{{ article.title }}</span>
|
||||||
|
<!-- 其他信息 -->
|
||||||
|
<div class="article-info">
|
||||||
|
<span v-if="article.author">{{ article.author.realName }}</span>
|
||||||
|
<span>{{ article.updateTime | dateFormat2 }}</span>
|
||||||
|
</div>
|
||||||
|
<!-- 分割线 -->
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<!-- 文章内容 -->
|
||||||
|
<div v-html="article.content" class="article-content ql-editor"></div>
|
||||||
|
<!-- 文章附件 -->
|
||||||
|
<div v-if="article.files && article.files.length" class="article-file">
|
||||||
|
<div v-for="(item, index) in article.files" :key="index">
|
||||||
|
<el-link icon="el-icon-download" @click="openNewTab(item.url)">
|
||||||
|
附件{{ index + 1 }}:{{ item.name }}
|
||||||
|
</el-link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<app-footer></app-footer>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import loadConfig from '@/mixins/load-config'
|
||||||
|
import { AppHeader, AppFooter } from '@/layout/components'
|
||||||
|
import { openNewTab, dateFormat2 } from '@/utils/common'
|
||||||
|
import { queryById } from '@/api/article'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'AnArticle',
|
||||||
|
props: {
|
||||||
|
id: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
description: '文章id'
|
||||||
|
},
|
||||||
|
uuid: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
description: '文章uuid'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mixins: [loadConfig],
|
||||||
|
components: { AppHeader, AppFooter },
|
||||||
|
filters: {
|
||||||
|
dateFormat2
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
article: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
openNewTab,
|
||||||
|
getArticle() {
|
||||||
|
queryById(this.id, this.uuid).then(res => {
|
||||||
|
if (res.data) {
|
||||||
|
this.article = res.data
|
||||||
|
} else {
|
||||||
|
this.$router.push('/error')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
path() {
|
||||||
|
return this.$route.path
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
path() {
|
||||||
|
this.getArticle()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getArticle()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,21 @@
|
||||||
|
<template>
|
||||||
|
<card-list
|
||||||
|
class="card-view"
|
||||||
|
slot="body"
|
||||||
|
:data="articles"
|
||||||
|
:column="3"
|
||||||
|
:image-height="280"
|
||||||
|
></card-list>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import CardList from '@/components/CardList'
|
||||||
|
import loadConfig from '@/mixins/load-config'
|
||||||
|
import queryArticle from '@/mixins/query-article'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'card-view',
|
||||||
|
mixins: [loadConfig, queryArticle],
|
||||||
|
components: { CardList }
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,33 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<app-header effect="light"></app-header>
|
||||||
|
<section class="section-error">
|
||||||
|
<div>
|
||||||
|
<el-image src="/img/404.png"></el-image>
|
||||||
|
<h1>抱歉!页面无法访问</h1>
|
||||||
|
<div>
|
||||||
|
您要查看的页面不存在,建议您访问我们的
|
||||||
|
<el-link :underline="false" href="/">首页</el-link>
|
||||||
|
。
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<app-footer></app-footer>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import loadConfig from '@/mixins/load-config'
|
||||||
|
import { AppHeader, AppFooter } from '@/layout/components'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'error',
|
||||||
|
mixins: [loadConfig],
|
||||||
|
components: {
|
||||||
|
AppHeader,
|
||||||
|
AppFooter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style></style>
|
|
@ -0,0 +1,95 @@
|
||||||
|
<template>
|
||||||
|
<div class="college">
|
||||||
|
<h1>{{ value }}</h1>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<el-row
|
||||||
|
v-for="line in Math.ceil(students.length / 3)"
|
||||||
|
:key="line"
|
||||||
|
:gutter="20"
|
||||||
|
>
|
||||||
|
<el-col
|
||||||
|
v-for="(item, index) in students.slice((line - 1) * 3, line * 3)"
|
||||||
|
:key="index"
|
||||||
|
:span="12"
|
||||||
|
>
|
||||||
|
<el-row
|
||||||
|
:gutter="10"
|
||||||
|
class="card"
|
||||||
|
@click.native="$router.push(item.path)"
|
||||||
|
>
|
||||||
|
<el-col :span="6">
|
||||||
|
<!-- 学生照片 -->
|
||||||
|
<!-- <el-image-->
|
||||||
|
<!-- :src="item.file.url"-->
|
||||||
|
<!-- :alt="item.name"-->
|
||||||
|
<!-- fit="scale-down"-->
|
||||||
|
<!-- ></el-image>-->
|
||||||
|
<img
|
||||||
|
:src="item.file.url"
|
||||||
|
:alt="item.name"
|
||||||
|
object-fit="scale-down"
|
||||||
|
width="110px"
|
||||||
|
height="155px"
|
||||||
|
/>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="18">
|
||||||
|
<!-- 学生姓名与学号 -->
|
||||||
|
<div>
|
||||||
|
<span class="teacher-name">{{ item.name }}</span>
|
||||||
|
<span class="el-icon--right">{{ item.stuId }}</span>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { queryBySession } from '@/api/student'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'Session',
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
default: '',
|
||||||
|
type: String,
|
||||||
|
description: '哪一届'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
students: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getStudents() {
|
||||||
|
queryBySession(this.value).then((res) => {
|
||||||
|
this.students = this.selectPost(res.data)
|
||||||
|
console.log(this.students)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
selectPost(data) {
|
||||||
|
var res = []
|
||||||
|
for (var i = 0; i < data.length; i++) {
|
||||||
|
if (data[i].state === 0) res.push(data[i]) // 1表示硕士,2表示博士
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
value: {
|
||||||
|
handler(val) {
|
||||||
|
if (val) {
|
||||||
|
this.getStudents()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
</style>
|
|
@ -0,0 +1,32 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<template v-for="(item, index) in sessions">
|
||||||
|
<session :key="index" :value="item.toString()"></session>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import loadConfig from '@/mixins/load-config'
|
||||||
|
import Session from './Session'
|
||||||
|
import { querySession } from '@/api/student'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'StudentList',
|
||||||
|
mixins: [loadConfig],
|
||||||
|
components: { Session },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
sessions: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
querySession().then((res) => {
|
||||||
|
this.sessions = res.data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
</style>
|
|
@ -0,0 +1,18 @@
|
||||||
|
<template>
|
||||||
|
<section class="carousel">
|
||||||
|
<el-carousel height="40vw" :interval="5000">
|
||||||
|
<el-carousel-item v-for="item in config" :key="item.id">
|
||||||
|
<el-image :src="item.url"></el-image>
|
||||||
|
</el-carousel-item>
|
||||||
|
</el-carousel>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import loadConfig from '@/mixins/load-config'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'Carousel',
|
||||||
|
mixins: [loadConfig]
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,39 @@
|
||||||
|
<template>
|
||||||
|
<section
|
||||||
|
class="chunk"
|
||||||
|
:class="[`chunk-${theme}`]"
|
||||||
|
:style="[
|
||||||
|
bgImage ? '' : `bg-image: url(${bgImage})`,
|
||||||
|
bgColor ? '' : `bg-color: ${bgColor}`,
|
||||||
|
'bg-size: contain'
|
||||||
|
]"
|
||||||
|
>
|
||||||
|
<div class="title">
|
||||||
|
<h1><slot></slot></h1>
|
||||||
|
</div>
|
||||||
|
<slot name="body"></slot>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'Chunk',
|
||||||
|
props: {
|
||||||
|
theme: {
|
||||||
|
default: 'light',
|
||||||
|
type: String,
|
||||||
|
description: '主题(light | dark)'
|
||||||
|
},
|
||||||
|
'bg-image': {
|
||||||
|
default: '',
|
||||||
|
type: String,
|
||||||
|
description: '背景图片'
|
||||||
|
},
|
||||||
|
'bg-color': {
|
||||||
|
default: '',
|
||||||
|
type: String,
|
||||||
|
description: '背景颜色'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,29 @@
|
||||||
|
<template>
|
||||||
|
<chunk>
|
||||||
|
<card-list
|
||||||
|
slot="body"
|
||||||
|
:data="Array.from(config)"
|
||||||
|
:column="4"
|
||||||
|
:card-width="250"
|
||||||
|
:card-height="100"
|
||||||
|
:show-border="true"
|
||||||
|
:show-banner="false"
|
||||||
|
></card-list>
|
||||||
|
企业合作
|
||||||
|
</chunk>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import loadConfig from '@/mixins/load-config'
|
||||||
|
import Chunk from '../Chunk'
|
||||||
|
import CardList from '@/components/CardList'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'Cooperation',
|
||||||
|
mixins: [loadConfig],
|
||||||
|
components: {
|
||||||
|
Chunk,
|
||||||
|
CardList
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,71 @@
|
||||||
|
<template>
|
||||||
|
<el-card class="news-item" shadow="never">
|
||||||
|
<div class="news-item-title">
|
||||||
|
<span>{{ module.name }}</span>
|
||||||
|
<el-link @click.native="$router.push(module.path)" :underline="false">
|
||||||
|
更多
|
||||||
|
<i class="el-icon-arrow-right"></i>
|
||||||
|
</el-link>
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
<li v-for="(article, index) in list" :key="index">
|
||||||
|
<div>
|
||||||
|
<a @click="$router.push(article.path)">{{ article.title }}</a>
|
||||||
|
</div>
|
||||||
|
<span>{{ article.updateTime | dateFormat1 }}</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { openNewTab, dateFormat1 } from '@/utils/common'
|
||||||
|
import { queryByQuery } from '@/api/article'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'Item',
|
||||||
|
props: {
|
||||||
|
module: {
|
||||||
|
type: Object,
|
||||||
|
description: '模块信息'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
list: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
openNewTab,
|
||||||
|
getArticles() {
|
||||||
|
queryByQuery({
|
||||||
|
title: '',
|
||||||
|
author: '',
|
||||||
|
module: this.module.name,
|
||||||
|
status: "'已发布'",
|
||||||
|
startDate: null,
|
||||||
|
endDate: null,
|
||||||
|
isDeleted: 0,
|
||||||
|
currentPage: 1,
|
||||||
|
pageSize: 10
|
||||||
|
}).then(res => {
|
||||||
|
this.list = res.data.list
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
filters: {
|
||||||
|
dateFormat1
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
module: {
|
||||||
|
handler(val) {
|
||||||
|
if (val) {
|
||||||
|
this.getArticles()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<template>
|
||||||
|
<chunk class="news">
|
||||||
|
<el-row :gutter="15" slot="body">
|
||||||
|
<el-col
|
||||||
|
:span="24 / config.length"
|
||||||
|
v-for="(item, index) in config"
|
||||||
|
:key="index"
|
||||||
|
>
|
||||||
|
<item :module="item"></item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
新闻中心
|
||||||
|
</chunk>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import loadConfig from '@/mixins/load-config'
|
||||||
|
import Chunk from '../Chunk'
|
||||||
|
import Item from './Item'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'News',
|
||||||
|
mixins: [loadConfig],
|
||||||
|
components: { Chunk, Item }
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,29 @@
|
||||||
|
<template>
|
||||||
|
<chunk class="research">
|
||||||
|
<el-row :gutter="15" slot="body">
|
||||||
|
<el-col
|
||||||
|
:span="6"
|
||||||
|
v-for="(item, index) in Array.from(config)"
|
||||||
|
:key="index"
|
||||||
|
@click.native="$router.push(item.path)"
|
||||||
|
>
|
||||||
|
<div class="item">
|
||||||
|
<el-image :src="item.fileUrl"></el-image>
|
||||||
|
<span>{{ item.title }}</span>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
科研动态
|
||||||
|
</chunk>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import loadConfig from '@/mixins/load-config'
|
||||||
|
import Chunk from '../Chunk'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'Research',
|
||||||
|
mixins: [loadConfig],
|
||||||
|
components: { Chunk }
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,23 @@
|
||||||
|
<template>
|
||||||
|
<chunk class="team" theme="dark">
|
||||||
|
<card-list
|
||||||
|
slot="body"
|
||||||
|
:data="Array.from(config)"
|
||||||
|
:column="3"
|
||||||
|
:image-height="280"
|
||||||
|
></card-list>
|
||||||
|
科研团队
|
||||||
|
</chunk>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import loadConfig from '@/mixins/load-config'
|
||||||
|
import Chunk from '../Chunk'
|
||||||
|
import CardList from '@/components/CardList'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'Team',
|
||||||
|
components: { Chunk, CardList },
|
||||||
|
mixins: [loadConfig]
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,5 @@
|
||||||
|
export { default as Carousel } from './Carousel'
|
||||||
|
export { default as Cooperation } from './Cooperation'
|
||||||
|
export { default as News } from './News'
|
||||||
|
export { default as Research } from './Research'
|
||||||
|
export { default as Team } from './Team'
|
|
@ -0,0 +1,51 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<app-header effect="transparent"></app-header>
|
||||||
|
<component
|
||||||
|
v-for="(item, index) in components"
|
||||||
|
:key="index"
|
||||||
|
:is="item"
|
||||||
|
></component>
|
||||||
|
<app-footer></app-footer>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import loadConfig from '@/mixins/load-config'
|
||||||
|
import { AppHeader, AppFooter } from '@/layout/components'
|
||||||
|
import { Carousel, Cooperation, News, Research, Team } from './components'
|
||||||
|
import { queryComponents } from '@/api/component.js'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'AppHome',
|
||||||
|
mixins: [loadConfig],
|
||||||
|
components: {
|
||||||
|
AppHeader,
|
||||||
|
AppFooter,
|
||||||
|
Carousel,
|
||||||
|
Cooperation,
|
||||||
|
News,
|
||||||
|
Research,
|
||||||
|
Team
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
components: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getComponents() {
|
||||||
|
queryComponents().then(res => {
|
||||||
|
res.data.forEach(item => {
|
||||||
|
if (item.status) {
|
||||||
|
this.components.push(item.name)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getComponents()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,49 @@
|
||||||
|
<template>
|
||||||
|
<div class="image-list">
|
||||||
|
<div v-if="total === 0" class="tip">
|
||||||
|
暂无内容
|
||||||
|
</div>
|
||||||
|
<template v-else>
|
||||||
|
<el-row :gutter="20" v-for="(item, index) in articles" :key="index">
|
||||||
|
<el-col :span="5"><el-image :src="item.fileUrl"></el-image></el-col>
|
||||||
|
<el-col :span="17">
|
||||||
|
<el-link :underline="false" @click="$router.push(item.path)">
|
||||||
|
{{ item.title }}
|
||||||
|
</el-link>
|
||||||
|
<div v-html="item.content" class="content"></div>
|
||||||
|
<div class="update-time">
|
||||||
|
{{ item.updateTime | dateFormat2 }}
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="2">
|
||||||
|
<el-button
|
||||||
|
icon="el-icon-right"
|
||||||
|
circle
|
||||||
|
@click="$router.push(item.path)"
|
||||||
|
></el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<div class="show-more">
|
||||||
|
<el-link
|
||||||
|
v-if="articles.length !== total && total !== 0"
|
||||||
|
:underline="false"
|
||||||
|
@click="showMore"
|
||||||
|
>
|
||||||
|
显示更多
|
||||||
|
</el-link>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import loadConfig from '@/mixins/load-config'
|
||||||
|
import queryArticle from '@/mixins/query-article'
|
||||||
|
import { dateFormat2 } from '@/utils/common'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'image-list',
|
||||||
|
mixins: [loadConfig, queryArticle],
|
||||||
|
filters: { dateFormat2 }
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<template>
|
||||||
|
<div></div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
</style>
|
|
@ -0,0 +1,31 @@
|
||||||
|
<template>
|
||||||
|
<div class="overview">
|
||||||
|
<p>
|
||||||
|
电子科技大学公共安全技术研究中心(全称:电子科技大学公共安全信息与装备集成技术研究中心University
|
||||||
|
of electronic science and technology od China, Center of Public Security
|
||||||
|
Information and Equipment Integration
|
||||||
|
technology)以信息与软件工程学院为依托,联合物理学院、计算机科学与工程学院、光电信息学院、信息与通信工程学院、成都研究院5大院的技术力量,立足于公共安全领域,开展相关技术研究与应用并实现产业化。同时,中心是连接政府、高校、研究院所、企业和资本的纽带和中枢,也是整合高校科研资源、扩展学科方向、促进高校“产、学、研、创”生态体系的发展和领导先驱。
|
||||||
|
</p>
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
公共安全技术研究中心校内核心研发人员1000余人,其中国家“千人计划”专家2名,长江学者特聘教授2名,高级技术职称专职人员232人,博士学位的研究人员330人,涵盖电路与系统、信息安全、雷达系统、图像处理、云计算、大数据分析、通信与信息等专业;同时校外研发团队近200人,分布于各省市公安机关联合实验室。2016年四川省发改委批准电子科技大学成都研究院和电子科技大学联合实施“四川省警用信息化装备工程实验室项目”,中心成为第一批获批准的省级工程实验室。
|
||||||
|
</p>
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
公共安全研究中心通过构建行业影响力,带动并支撑产业联盟,形成了“公共安全产业联盟”。与多家企业达成合作,成立“电子科技大学·汉腾汽车电子研究院”;成立电子科技大学·上海依图网络科技有限公司联合研究中心。与湖南广播电视台广播传媒中心共建“智慧广播技术研究”联合实验室;以及与国家数据通信工程技术研究中心“大数据与信息安全联合实验室”。
|
||||||
|
</p>
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
团队从事公共安全行业相关技术服务12年,团队及成员三次获得国家科技(发明)进步二等奖,四次获得省部级科技奖励一等奖,主持及参与上百个国家自然基金重大研究计划、国家自然科学基金重点项目、863项目,973项目等国家重要科技项目。
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import loadConfig from '@/mixins/load-config'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'overview',
|
||||||
|
mixins: [loadConfig]
|
||||||
|
}
|
||||||
|
</script>
|