Merge remote-tracking branch 'origin/master'
131
package-lock.json
generated
@ -1120,6 +1120,61 @@
|
||||
"integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=",
|
||||
"dev": true
|
||||
},
|
||||
"@nuxt/opencollective": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npm.taobao.org/@nuxt/opencollective/download/@nuxt/opencollective-0.3.2.tgz",
|
||||
"integrity": "sha1-g8twzbK6xfrW+Mk1KeexEYfUnAI=",
|
||||
"requires": {
|
||||
"chalk": "^4.1.0",
|
||||
"consola": "^2.15.0",
|
||||
"node-fetch": "^2.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1606792302448&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
|
||||
"requires": {
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1591686984650&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz",
|
||||
"integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=",
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
|
||||
"integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI="
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s="
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@soda/friendly-errors-webpack-plugin": {
|
||||
"version": "1.7.1",
|
||||
"resolved": "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.7.1.tgz",
|
||||
@ -2318,6 +2373,11 @@
|
||||
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
|
||||
"dev": true
|
||||
},
|
||||
"animate.css": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npm.taobao.org/animate.css/download/animate.css-4.1.1.tgz",
|
||||
"integrity": "sha1-YU7FqBEx1+TcNipYFD90BqvWgHU="
|
||||
},
|
||||
"ansi-colors": {
|
||||
"version": "3.2.4",
|
||||
"resolved": "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.4.tgz",
|
||||
@ -2860,6 +2920,23 @@
|
||||
"resolved": "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz",
|
||||
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
|
||||
},
|
||||
"bootstrap": {
|
||||
"version": "4.5.3",
|
||||
"resolved": "https://registry.npm.taobao.org/bootstrap/download/bootstrap-4.5.3.tgz",
|
||||
"integrity": "sha1-xqcrNVqvMjkgvoACRqbk7zCZf+Y="
|
||||
},
|
||||
"bootstrap-vue": {
|
||||
"version": "2.21.1",
|
||||
"resolved": "https://registry.npm.taobao.org/bootstrap-vue/download/bootstrap-vue-2.21.1.tgz",
|
||||
"integrity": "sha1-INPO2WtzWRfYvnG3dxfu50u0DG8=",
|
||||
"requires": {
|
||||
"@nuxt/opencollective": "^0.3.2",
|
||||
"bootstrap": ">=4.5.3 <5.0.0",
|
||||
"popper.js": "^1.16.1",
|
||||
"portal-vue": "^2.1.7",
|
||||
"vue-functional-data-merge": "^3.1.0"
|
||||
}
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz",
|
||||
@ -3728,6 +3805,11 @@
|
||||
"integrity": "sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=",
|
||||
"dev": true
|
||||
},
|
||||
"consola": {
|
||||
"version": "2.15.0",
|
||||
"resolved": "https://registry.npm.taobao.org/consola/download/consola-2.15.0.tgz?cache=0&sync_timestamp=1596625700864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fconsola%2Fdownload%2Fconsola-2.15.0.tgz",
|
||||
"integrity": "sha1-QPxO76TS+O8uKAYUfwVuogf8wOk="
|
||||
},
|
||||
"console-browserify": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npm.taobao.org/console-browserify/download/console-browserify-1.2.0.tgz",
|
||||
@ -4658,6 +4740,14 @@
|
||||
"resolved": "https://registry.npm.taobao.org/dom-walk/download/dom-walk-0.1.2.tgz",
|
||||
"integrity": "sha1-DFSL7wSPTR8qlySQAiNgYNqj/YQ="
|
||||
},
|
||||
"dom7": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://r.cnpmjs.org/dom7/download/dom7-3.0.0.tgz",
|
||||
"integrity": "sha1-uGHOXWemvs16qjrQKUL/FLEkAzE=",
|
||||
"requires": {
|
||||
"ssr-window": "^3.0.0-alpha.1"
|
||||
}
|
||||
},
|
||||
"domain-browser": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz",
|
||||
@ -7262,6 +7352,11 @@
|
||||
"type-check": "~0.3.2"
|
||||
}
|
||||
},
|
||||
"lib-flexible": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npm.taobao.org/lib-flexible/download/lib-flexible-0.3.2.tgz",
|
||||
"integrity": "sha1-BvWnSDIxSi01wSA5vJw8otrqpCY="
|
||||
},
|
||||
"lines-and-columns": {
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz",
|
||||
@ -7960,6 +8055,11 @@
|
||||
"lower-case": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.1",
|
||||
"resolved": "https://registry.npm.taobao.org/node-fetch/download/node-fetch-2.6.1.tgz?cache=0&sync_timestamp=1599309202591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-fetch%2Fdownload%2Fnode-fetch-2.6.1.tgz",
|
||||
"integrity": "sha1-BFvTI2Mfdu0uK1VXM5RBa2OaAFI="
|
||||
},
|
||||
"node-forge": {
|
||||
"version": "0.10.0",
|
||||
"resolved": "https://registry.npm.taobao.org/node-forge/download/node-forge-0.10.0.tgz?cache=0&sync_timestamp=1599010757493&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-forge%2Fdownload%2Fnode-forge-0.10.0.tgz",
|
||||
@ -8839,6 +8939,16 @@
|
||||
"ts-pnp": "^1.1.6"
|
||||
}
|
||||
},
|
||||
"popper.js": {
|
||||
"version": "1.16.1",
|
||||
"resolved": "https://registry.npm.taobao.org/popper.js/download/popper.js-1.16.1.tgz",
|
||||
"integrity": "sha1-KiI8s9x7YhPXQOQDcr5A3kPmWxs="
|
||||
},
|
||||
"portal-vue": {
|
||||
"version": "2.1.7",
|
||||
"resolved": "https://registry.npm.taobao.org/portal-vue/download/portal-vue-2.1.7.tgz",
|
||||
"integrity": "sha1-6ggGmyW2QMoIpbhvZ8YS8V9OStQ="
|
||||
},
|
||||
"portfinder": {
|
||||
"version": "1.0.28",
|
||||
"resolved": "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.28.tgz?cache=0&sync_timestamp=1596019946887&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fportfinder%2Fdownload%2Fportfinder-1.0.28.tgz",
|
||||
@ -11034,6 +11144,11 @@
|
||||
"tweetnacl": "~0.14.0"
|
||||
}
|
||||
},
|
||||
"ssr-window": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://r.cnpmjs.org/ssr-window/download/ssr-window-3.0.0.tgz",
|
||||
"integrity": "sha1-/VuCgBY4lD4MxwTEaRgBQ1r3rDc="
|
||||
},
|
||||
"ssri": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/ssri/download/ssri-6.0.1.tgz",
|
||||
@ -11558,6 +11673,15 @@
|
||||
"util.promisify": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"swiper": {
|
||||
"version": "6.4.10",
|
||||
"resolved": "https://r.cnpmjs.org/swiper/download/swiper-6.4.10.tgz",
|
||||
"integrity": "sha1-0qi85HFxe3cNAF/NXor0KsYwysY=",
|
||||
"requires": {
|
||||
"dom7": "^3.0.0",
|
||||
"ssr-window": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"version": "5.4.6",
|
||||
"resolved": "https://registry.npm.taobao.org/table/download/table-5.4.6.tgz?cache=0&sync_timestamp=1599191046284&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftable%2Fdownload%2Ftable-5.4.6.tgz",
|
||||
@ -12374,7 +12498,7 @@
|
||||
},
|
||||
"vue": {
|
||||
"version": "2.6.12",
|
||||
"resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz?cache=0&sync_timestamp=1600441210971&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue%2Fdownload%2Fvue-2.6.12.tgz",
|
||||
"resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz",
|
||||
"integrity": "sha1-9evU+mvShpQD4pqJau1JBEVskSM="
|
||||
},
|
||||
"vue-clipboard2": {
|
||||
@ -12411,6 +12535,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"vue-functional-data-merge": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npm.taobao.org/vue-functional-data-merge/download/vue-functional-data-merge-3.1.0.tgz",
|
||||
"integrity": "sha1-CKd5dYO381aAWH+KHVHXKaodxlc="
|
||||
},
|
||||
"vue-hot-reload-api": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz",
|
||||
|
@ -3,16 +3,21 @@
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"dev": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"animate.css": "^4.1.1",
|
||||
"bootstrap": "^4.5.3",
|
||||
"bootstrap-vue": "^2.21.1",
|
||||
"core-js": "^3.6.5",
|
||||
"element-ui": "^2.13.2",
|
||||
"lib-flexible": "^0.3.2",
|
||||
"nprogress": "^0.2.0",
|
||||
"script-ext-html-webpack-plugin": "^2.1.4",
|
||||
"svg-sprite-loader": "^5.0.0",
|
||||
"swiper": "^6.4.10",
|
||||
"vue": "^2.6.12",
|
||||
"vue-clipboard2": "^0.3.1",
|
||||
"vue-pdf": "^4.1.0",
|
||||
|
@ -2,6 +2,7 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="google" value="notranslate">
|
||||
<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.png">
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
<style lang="less">
|
||||
body {
|
||||
margin: 0px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#app {
|
||||
@ -15,5 +15,7 @@ body {
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
text-align: center;
|
||||
color: #2c3e50;
|
||||
font-size: 62.5%;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
|
Before Width: | Height: | Size: 6.5 MiB |
Before Width: | Height: | Size: 2.9 MiB |
Before Width: | Height: | Size: 3.1 MiB |
@ -1,15 +0,0 @@
|
||||
import image1 from "@/assets/honor/1.jpg";
|
||||
import image2 from "@/assets/honor/2.jpg";
|
||||
import image3 from "@/assets/honor/3.jpg";
|
||||
|
||||
export default {
|
||||
Hr01: {
|
||||
src: image1
|
||||
},
|
||||
Hr02: {
|
||||
src: image2
|
||||
},
|
||||
Hr04: {
|
||||
src: image3
|
||||
}
|
||||
};
|
Before Width: | Height: | Size: 4.7 MiB |
Before Width: | Height: | Size: 4.9 MiB |
Before Width: | Height: | Size: 5.0 MiB |
Before Width: | Height: | Size: 3.7 MiB |
Before Width: | Height: | Size: 5.9 MiB |
Before Width: | Height: | Size: 4.0 MiB |
Before Width: | Height: | Size: 6.8 MiB |
Before Width: | Height: | Size: 3.4 MiB |
Before Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 4.1 MiB |
Before Width: | Height: | Size: 2.4 MiB |
Before Width: | Height: | Size: 3.4 MiB |
Before Width: | Height: | Size: 7.3 MiB |
Before Width: | Height: | Size: 5.6 MiB |
Before Width: | Height: | Size: 7.8 MiB |
Before Width: | Height: | Size: 1.7 MiB |
Before Width: | Height: | Size: 865 KiB |
Before Width: | Height: | Size: 814 KiB |
Before Width: | Height: | Size: 551 KiB |
Before Width: | Height: | Size: 828 KiB |
Before Width: | Height: | Size: 895 KiB |
Before Width: | Height: | Size: 2.9 MiB |
Before Width: | Height: | Size: 2.9 MiB |
Before Width: | Height: | Size: 2.9 MiB |
Before Width: | Height: | Size: 2.0 MiB |
Before Width: | Height: | Size: 2.6 MiB |
Before Width: | Height: | Size: 2.6 MiB |
Before Width: | Height: | Size: 2.9 MiB |
Before Width: | Height: | Size: 2.9 MiB |
Before Width: | Height: | Size: 3.2 MiB |
Before Width: | Height: | Size: 3.0 MiB |
Before Width: | Height: | Size: 2.8 MiB |
Before Width: | Height: | Size: 3.1 MiB |
Before Width: | Height: | Size: 3.3 MiB |
Before Width: | Height: | Size: 3.3 MiB |
Before Width: | Height: | Size: 3.0 MiB |
Before Width: | Height: | Size: 2.3 MiB |
Before Width: | Height: | Size: 2.8 MiB |
60
src/assets/images/atlas.js
Normal file
@ -0,0 +1,60 @@
|
||||
export default [
|
||||
{
|
||||
name: "西铁院",
|
||||
sources: [
|
||||
"1.西铁院/1.jpg",
|
||||
"1.西铁院/2.jpg",
|
||||
"1.西铁院/3.jpg",
|
||||
"1.西铁院/4.jpg",
|
||||
"1.西铁院/5.jpg",
|
||||
"1.西铁院/6.jpg",
|
||||
"1.西铁院/7.jpg",
|
||||
"1.西铁院/8.jpg",
|
||||
"1.西铁院/9.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "上海轨道交通展",
|
||||
sources: [
|
||||
"2.上海轨道交通展/1.jpg",
|
||||
"2.上海轨道交通展/2.jpg",
|
||||
"2.上海轨道交通展/3.jpg",
|
||||
"2.上海轨道交通展/4.jpg",
|
||||
"2.上海轨道交通展/5.jpg",
|
||||
"2.上海轨道交通展/6.jpg",
|
||||
"2.上海轨道交通展/7.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "第四届“中国创翼”暨“创业北京”创业创新大赛",
|
||||
sources: [
|
||||
"3.第四届“中国创翼”暨“创业北京”创业创新大赛/1.jpg",
|
||||
"3.第四届“中国创翼”暨“创业北京”创业创新大赛/2.jpg",
|
||||
"3.第四届“中国创翼”暨“创业北京”创业创新大赛/3.jpg",
|
||||
"3.第四届“中国创翼”暨“创业北京”创业创新大赛/4.jpg",
|
||||
"3.第四届“中国创翼”暨“创业北京”创业创新大赛/5.jpg",
|
||||
"3.第四届“中国创翼”暨“创业北京”创业创新大赛/6.jpg",
|
||||
"3.第四届“中国创翼”暨“创业北京”创业创新大赛/7.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "创业宝鸡星耀钛谷中小企业科技创新创业大赛",
|
||||
sources: [
|
||||
"4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/1.jpg",
|
||||
"4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/2.jpg",
|
||||
"4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/3.jpg",
|
||||
"4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/4.jpg",
|
||||
"4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/5.jpg",
|
||||
"4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/6.jpg",
|
||||
"4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/7.jpg",
|
||||
"4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/8.jpg",
|
||||
"4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/9.jpg",
|
||||
"4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/10.jpg",
|
||||
"4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/11.jpg",
|
||||
"4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/12.jpg",
|
||||
"4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/13.jpg",
|
||||
"4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/14.jpg",
|
||||
"4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/15.jpg"
|
||||
]
|
||||
}
|
||||
];
|
11
src/assets/images/honor.js
Normal file
@ -0,0 +1,11 @@
|
||||
export default [
|
||||
{
|
||||
src: "honor/1.jpg"
|
||||
},
|
||||
{
|
||||
src: "honor/2.jpg"
|
||||
},
|
||||
{
|
||||
src: "honor/3.jpg"
|
||||
}
|
||||
];
|
@ -1,60 +0,0 @@
|
||||
export default {
|
||||
Act1: {
|
||||
name: "西铁院",
|
||||
sources: [
|
||||
require("@/assets/images/1.西铁院/1.jpg"),
|
||||
require("@/assets/images/1.西铁院/2.jpg"),
|
||||
require("@/assets/images/1.西铁院/3.jpg"),
|
||||
require("@/assets/images/1.西铁院/4.jpg"),
|
||||
require("@/assets/images/1.西铁院/5.jpg"),
|
||||
require("@/assets/images/1.西铁院/6.jpg"),
|
||||
require("@/assets/images/1.西铁院/7.jpg"),
|
||||
require("@/assets/images/1.西铁院/8.jpg"),
|
||||
require("@/assets/images/1.西铁院/9.jpg")
|
||||
]
|
||||
},
|
||||
Act2: {
|
||||
name: "上海轨道交通展",
|
||||
sources: [
|
||||
require("@/assets/images/2.上海轨道交通展/1.jpg"),
|
||||
require("@/assets/images/2.上海轨道交通展/2.jpg"),
|
||||
require("@/assets/images/2.上海轨道交通展/3.jpg"),
|
||||
require("@/assets/images/2.上海轨道交通展/4.jpg"),
|
||||
require("@/assets/images/2.上海轨道交通展/5.jpg"),
|
||||
require("@/assets/images/2.上海轨道交通展/6.jpg"),
|
||||
require("@/assets/images/2.上海轨道交通展/7.jpg")
|
||||
]
|
||||
},
|
||||
Act3: {
|
||||
name: "第四届“中国创翼”暨“创业北京”创业创新大赛",
|
||||
sources: [
|
||||
require("@/assets/images/3.第四届“中国创翼”暨“创业北京”创业创新大赛/1.jpg"),
|
||||
require("@/assets/images/3.第四届“中国创翼”暨“创业北京”创业创新大赛/2.jpg"),
|
||||
require("@/assets/images/3.第四届“中国创翼”暨“创业北京”创业创新大赛/3.jpg"),
|
||||
require("@/assets/images/3.第四届“中国创翼”暨“创业北京”创业创新大赛/4.jpg"),
|
||||
require("@/assets/images/3.第四届“中国创翼”暨“创业北京”创业创新大赛/5.jpg"),
|
||||
require("@/assets/images/3.第四届“中国创翼”暨“创业北京”创业创新大赛/6.jpg"),
|
||||
require("@/assets/images/3.第四届“中国创翼”暨“创业北京”创业创新大赛/7.jpg")
|
||||
]
|
||||
},
|
||||
Act4: {
|
||||
name: "创业宝鸡星耀钛谷中小企业科技创新创业大赛",
|
||||
sources: [
|
||||
require("@/assets/images/4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/1.jpg"),
|
||||
require("@/assets/images/4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/2.jpg"),
|
||||
require("@/assets/images/4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/3.jpg"),
|
||||
require("@/assets/images/4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/4.jpg"),
|
||||
require("@/assets/images/4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/5.jpg"),
|
||||
require("@/assets/images/4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/6.jpg"),
|
||||
require("@/assets/images/4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/7.jpg"),
|
||||
require("@/assets/images/4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/8.jpg"),
|
||||
require("@/assets/images/4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/9.jpg"),
|
||||
require("@/assets/images/4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/10.jpg"),
|
||||
require("@/assets/images/4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/11.jpg"),
|
||||
require("@/assets/images/4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/12.jpg"),
|
||||
require("@/assets/images/4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/13.jpg"),
|
||||
require("@/assets/images/4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/14.jpg"),
|
||||
require("@/assets/images/4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/15.jpg"),
|
||||
]
|
||||
}
|
||||
};
|
57
src/assets/images/knowledge.js
Normal file
@ -0,0 +1,57 @@
|
||||
export default [
|
||||
{
|
||||
src: "knowledge/JL01-中心级综合监控ISCS系统仿真软件V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL02-车站级综合监控ISCS系统仿真软件V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL03-ATS行调工作站培训系统软件V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL04-ATS行调工作站考试系统软件V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL05-ATS现地工作站培训系统软件V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL06-ATS现地工作站考试系统软件V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL07-ATS行调工作站仿真系统软件V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL02-车站级综合监控ISCS系统仿真软件V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL09-ATS中心大屏仿真系统软件V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL10-轨旁仿真软件V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src:
|
||||
"knowledge/JL11-城市轨道交通综合演练系统[简称:城轨综合演练平台]V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL12-电子沙盘软件V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL13-车载仿真软件[简称:VOBC仿真软件]V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL14-区域控制器仿真软件[简称:ZC仿真软件]V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL15-虚拟列车仿真软件V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL16-模拟驾驶仿真软件[简称:列车模拟驾驶]V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL17-城市轨道交通运行图时刻表编辑系统V1.0.jpg"
|
||||
},
|
||||
{
|
||||
src: "knowledge/JL18-联锁机仿真软件[简称:CI仿真软件]V1.0.jpg"
|
||||
}
|
||||
];
|
BIN
src/assets/images/picture/1.jpg
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
src/assets/images/picture/2.jpg
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
src/assets/images/picture/3.jpg
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
src/assets/images/picture/4.jpg
Normal file
After Width: | Height: | Size: 69 KiB |
23
src/assets/images/picture/index.js
Normal file
@ -0,0 +1,23 @@
|
||||
import image1 from "./1.jpg";
|
||||
import image2 from "./2.jpg";
|
||||
import image3 from "./3.jpg";
|
||||
import image4 from "./4.jpg";
|
||||
|
||||
export default [
|
||||
{
|
||||
name: "西铁院",
|
||||
src: image1
|
||||
},
|
||||
{
|
||||
name: "上海轨道交通展",
|
||||
src: image2
|
||||
},
|
||||
{
|
||||
name: "第四届“中国创翼”暨“创业北京”创业创新大赛",
|
||||
src: image3
|
||||
},
|
||||
{
|
||||
name: "创业宝鸡星耀钛谷中小企业科技创新创业大赛",
|
||||
src: image4
|
||||
}
|
||||
];
|
18
src/assets/images/thumbnail.js
Normal file
@ -0,0 +1,18 @@
|
||||
export default [
|
||||
{
|
||||
name: "西铁院",
|
||||
src: "1.西铁院/1.jpg"
|
||||
},
|
||||
{
|
||||
name: "上海轨道交通展",
|
||||
src: "2.上海轨道交通展/1.jpg"
|
||||
},
|
||||
{
|
||||
name: "第四届“中国创翼”暨“创业北京”创业创新大赛",
|
||||
src: "3.第四届“中国创翼”暨“创业北京”创业创新大赛/1.jpg"
|
||||
},
|
||||
{
|
||||
name: "创业宝鸡星耀钛谷中小企业科技创新创业大赛",
|
||||
src: "4.创业宝鸡星耀钛谷中小企业科技创新创业大赛/1.jpg"
|
||||
}
|
||||
];
|
Before Width: | Height: | Size: 527 KiB |
Before Width: | Height: | Size: 506 KiB |
Before Width: | Height: | Size: 598 KiB |
Before Width: | Height: | Size: 601 KiB |
Before Width: | Height: | Size: 2.3 MiB |
Before Width: | Height: | Size: 600 KiB |
Before Width: | Height: | Size: 2.2 MiB |
Before Width: | Height: | Size: 2.1 MiB |
Before Width: | Height: | Size: 2.1 MiB |
Before Width: | Height: | Size: 993 KiB |
Before Width: | Height: | Size: 985 KiB |
Before Width: | Height: | Size: 989 KiB |
Before Width: | Height: | Size: 1000 KiB |
Before Width: | Height: | Size: 985 KiB |
Before Width: | Height: | Size: 976 KiB |
Before Width: | Height: | Size: 991 KiB |
Before Width: | Height: | Size: 963 KiB |
Before Width: | Height: | Size: 984 KiB |
@ -1,56 +0,0 @@
|
||||
export default {
|
||||
JL01: {
|
||||
src: require("@/assets/knowledge/JL01-中心级综合监控ISCS系统仿真软件V1.0.jpg")
|
||||
},
|
||||
JL02: {
|
||||
src: require("@/assets/knowledge/JL02-车站级综合监控ISCS系统仿真软件V1.0.jpg")
|
||||
},
|
||||
JL03: {
|
||||
src: require("@/assets/knowledge/JL03-ATS行调工作站培训系统软件V1.0.jpg")
|
||||
},
|
||||
JL04: {
|
||||
src: require("@/assets/knowledge/JL04-ATS行调工作站考试系统软件V1.0.jpg")
|
||||
},
|
||||
JL05: {
|
||||
src: require("@/assets/knowledge/JL05-ATS现地工作站培训系统软件V1.0.jpg")
|
||||
},
|
||||
JL06: {
|
||||
src: require("@/assets/knowledge/JL06-ATS现地工作站考试系统软件V1.0.jpg")
|
||||
},
|
||||
JL07: {
|
||||
src: require("@/assets/knowledge/JL07-ATS行调工作站仿真系统软件V1.0.jpg")
|
||||
},
|
||||
JL08: {
|
||||
src: require("@/assets/knowledge/JL02-车站级综合监控ISCS系统仿真软件V1.0.jpg")
|
||||
},
|
||||
JL09: {
|
||||
src: require("@/assets/knowledge/JL09-ATS中心大屏仿真系统软件V1.0.jpg")
|
||||
},
|
||||
JL10: {
|
||||
src: require("@/assets/knowledge/JL10-轨旁仿真软件V1.0.jpg")
|
||||
},
|
||||
JL11: {
|
||||
src: require("@/assets/knowledge/JL11-城市轨道交通综合演练系统[简称:城轨综合演练平台]V1.0.jpg")
|
||||
},
|
||||
JL12: {
|
||||
src: require("@/assets/knowledge/JL12-电子沙盘软件V1.0.jpg")
|
||||
},
|
||||
JL13: {
|
||||
src: require("@/assets/knowledge/JL13-车载仿真软件[简称:VOBC仿真软件]V1.0.jpg")
|
||||
},
|
||||
JL14: {
|
||||
src: require("@/assets/knowledge/JL14-区域控制器仿真软件[简称:ZC仿真软件]V1.0.jpg")
|
||||
},
|
||||
JL15: {
|
||||
src: require("@/assets/knowledge/JL15-虚拟列车仿真软件V1.0.jpg")
|
||||
},
|
||||
JL16: {
|
||||
src: require("@/assets/knowledge/JL16-模拟驾驶仿真软件[简称:列车模拟驾驶]V1.0.jpg")
|
||||
},
|
||||
JL17: {
|
||||
src: require("@/assets/knowledge/JL17-城市轨道交通运行图时刻表编辑系统V1.0.jpg")
|
||||
},
|
||||
JL18: {
|
||||
src: require("@/assets/knowledge/JL18-联锁机仿真软件[简称:CI仿真软件]V1.0.jpg")
|
||||
}
|
||||
};
|
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 195 KiB |
Before Width: | Height: | Size: 772 KiB |
Before Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 97 KiB |
@ -1,22 +1,32 @@
|
||||
export default {
|
||||
Pn1: {
|
||||
export default [
|
||||
{
|
||||
name: "北京交通大学",
|
||||
src: require("@/assets/partner/北京交通大学.jpg"),
|
||||
href: ""
|
||||
},
|
||||
Pn2: {
|
||||
{
|
||||
name: "东北电力大学",
|
||||
src: require("@/assets/partner/东北电力大学.jpg"),
|
||||
href: ""
|
||||
},
|
||||
Pn3: {
|
||||
{
|
||||
name: "贵州装备制造职业学院",
|
||||
src: require("@/assets/partner/贵州装备.jpg"),
|
||||
href: ""
|
||||
},
|
||||
Pn4: {
|
||||
{
|
||||
name: "南京铁道职业技术学院",
|
||||
src: require("@/assets/partner/南京铁道.jpg"),
|
||||
href: ""
|
||||
},
|
||||
pn5: {
|
||||
{
|
||||
name: "西安铁路职业技术学院",
|
||||
src: require("@/assets/partner/西安铁路职业技术学院.jpg"),
|
||||
href: ""
|
||||
},
|
||||
{
|
||||
name: "江苏电子信息职业学院",
|
||||
src: require("@/assets/partner/江苏电子信息职业学院.jpg"),
|
||||
href: ""
|
||||
}
|
||||
};
|
||||
];
|
||||
|
BIN
src/assets/partner/江苏电子信息职业学院.jpg
Normal file
After Width: | Height: | Size: 208 KiB |
Before Width: | Height: | Size: 403 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 153 KiB |
Before Width: | Height: | Size: 774 KiB |
BIN
src/assets/source/wxcode.png
Normal file
After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 30 KiB |
@ -27,28 +27,28 @@ export default {
|
||||
|
||||
<style lang="scss" scoped>
|
||||
a {
|
||||
margin: 0 15px;
|
||||
margin: 0 1.5em;
|
||||
text-decoration: none;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
margin-top: 20px;
|
||||
margin-top: 2em;
|
||||
position: relproduct;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
.btn-rect {
|
||||
padding: 0 30px;
|
||||
min-width: 140px;
|
||||
height: 40px !important;
|
||||
line-height: 40px !important;
|
||||
padding: 0 3em;
|
||||
min-width: 14em;
|
||||
height: 4em !important;
|
||||
line-height: 4em !important;
|
||||
text-align: center;
|
||||
border: 1px solid #d1d1d1;
|
||||
border: 0.1em solid #d1d1d1;
|
||||
display: inline-block;
|
||||
color: #111;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
font-size: 16px;
|
||||
padding-left: 2em;
|
||||
padding-right: 2em;
|
||||
font-size: 1.6em;
|
||||
background: #efefef;
|
||||
&:hover {
|
||||
color: #fff;
|
||||
|
@ -3,7 +3,7 @@
|
||||
<div class="image-box">
|
||||
<div class="mask" />
|
||||
<picture>
|
||||
<el-image style="height: 100%;width: 100%" :src="source" />
|
||||
<b-img style="height: 100%;width: 100%" :src="source" />
|
||||
</picture>
|
||||
</div>
|
||||
<div class="text-box">
|
||||
@ -44,7 +44,7 @@ export default {
|
||||
<style lang="scss" scoped>
|
||||
.card {
|
||||
&:hover {
|
||||
.el-image {
|
||||
.b-img {
|
||||
transition: all 0.5s;
|
||||
transform: scale(1.05);
|
||||
}
|
||||
@ -85,9 +85,9 @@ export default {
|
||||
text-align: left;
|
||||
transition: all 0.5s;
|
||||
z-index: 4;
|
||||
padding: 25px 30px;
|
||||
font-size: 20px;
|
||||
bottom: -50px;
|
||||
padding: 2.5em 3em;
|
||||
font-size: 2em;
|
||||
bottom: -5em;
|
||||
box-sizing: border-box;
|
||||
|
||||
&:hover {
|
||||
@ -109,7 +109,7 @@ export default {
|
||||
.text {
|
||||
font-size: 0.875em;
|
||||
display: block;
|
||||
margin-bottom: 12px;
|
||||
margin-bottom: 1.7em;
|
||||
line-height: 1.8em;
|
||||
opacity: 0.7;
|
||||
}
|
||||
@ -139,7 +139,7 @@ export default {
|
||||
vertical-align: middle;
|
||||
float: left;
|
||||
&:hover {
|
||||
transform: translateX(5px);
|
||||
transform: translateX(0.5em);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,7 @@
|
||||
<div class="card" v-if="active">
|
||||
<ul>
|
||||
<li v-for="(el, i) in menus" :key="i" @click="onClick(el, i)">
|
||||
<i :class="el.icon" style="margin-right: 10px;font-size: 18px" />
|
||||
<i :class="el.icon" style="margin-right: 1em;font-size: 1.8em" />
|
||||
<span>{{ el.name }}</span>
|
||||
</li>
|
||||
</ul>
|
||||
@ -60,18 +60,18 @@ export default {
|
||||
position: relative;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
height: 40px;
|
||||
height: 4em;
|
||||
|
||||
.block {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
i {
|
||||
font-size: 26px;
|
||||
font-size: 2.6em;
|
||||
}
|
||||
|
||||
.arrow {
|
||||
font-size: 14px;
|
||||
font-size: 1.4em;
|
||||
}
|
||||
}
|
||||
|
||||
@ -82,20 +82,20 @@ export default {
|
||||
ul {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
transform: translateY(59px);
|
||||
transform: translateY(6em);
|
||||
background: #fff;
|
||||
list-style: none;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
min-width: 180px;
|
||||
min-width: 18em;
|
||||
width: auto;
|
||||
li {
|
||||
border: 1px solid #d4d4d4;
|
||||
border: 0.1em solid #d4d4d4;
|
||||
border-top: 0;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
padding-left: 26px;
|
||||
height: 4.2em;
|
||||
line-height: 4.2em;
|
||||
padding-left: 2.6em;
|
||||
background: #fff;
|
||||
color: #777;
|
||||
text-align: left;
|
||||
|
11
src/components/eLoading/index.js
Normal file
@ -0,0 +1,11 @@
|
||||
import directive from './src/directive';
|
||||
import service from './src/index';
|
||||
|
||||
export default {
|
||||
install(Vue) {
|
||||
Vue.use(directive);
|
||||
Vue.prototype.$loading = service;
|
||||
},
|
||||
directive,
|
||||
service
|
||||
};
|
133
src/components/eLoading/src/directive.js
Normal file
@ -0,0 +1,133 @@
|
||||
import Vue from 'vue';
|
||||
import Loading from './loading.vue';
|
||||
import { addClass, removeClass, getStyle } from '../utils/dom';
|
||||
import { PopupManager } from '../utils/popup';
|
||||
import afterLeave from '../utils/after-leave';
|
||||
const Mask = Vue.extend(Loading);
|
||||
|
||||
const loadingDirective = {};
|
||||
loadingDirective.install = Vue => {
|
||||
if (Vue.prototype.$isServer) return;
|
||||
const toggleLoading = (el, binding) => {
|
||||
if (binding.value) {
|
||||
Vue.nextTick(() => {
|
||||
if (binding.modifiers.fullscreen) {
|
||||
el.originalPosition = getStyle(document.body, 'position');
|
||||
el.originalOverflow = getStyle(document.body, 'overflow');
|
||||
el.maskStyle.zIndex = PopupManager.nextZIndex();
|
||||
|
||||
addClass(el.mask, 'is-fullscreen');
|
||||
insertDom(document.body, el, binding);
|
||||
} else {
|
||||
removeClass(el.mask, 'is-fullscreen');
|
||||
|
||||
if (binding.modifiers.body) {
|
||||
el.originalPosition = getStyle(document.body, 'position');
|
||||
|
||||
['top', 'left'].forEach(property => {
|
||||
const scroll = property === 'top' ? 'scrollTop' : 'scrollLeft';
|
||||
el.maskStyle[property] = el.getBoundingClientRect()[property] +
|
||||
document.body[scroll] +
|
||||
document.documentElement[scroll] -
|
||||
parseInt(getStyle(document.body, `margin-${ property }`), 10) +
|
||||
'px';
|
||||
});
|
||||
['height', 'width'].forEach(property => {
|
||||
el.maskStyle[property] = el.getBoundingClientRect()[property] + 'px';
|
||||
});
|
||||
|
||||
insertDom(document.body, el, binding);
|
||||
} else {
|
||||
el.originalPosition = getStyle(el, 'position');
|
||||
insertDom(el, el, binding);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
afterLeave(el.instance, _ => {
|
||||
if (!el.instance.hiding) return;
|
||||
el.domVisible = false;
|
||||
const target = binding.modifiers.fullscreen || binding.modifiers.body
|
||||
? document.body
|
||||
: el;
|
||||
removeClass(target, 'el-loading-parent--relative');
|
||||
removeClass(target, 'el-loading-parent--hidden');
|
||||
el.instance.hiding = false;
|
||||
}, 300, true);
|
||||
el.instance.visible = false;
|
||||
el.instance.hiding = true;
|
||||
}
|
||||
};
|
||||
const insertDom = (parent, el, binding) => {
|
||||
if (!el.domVisible && getStyle(el, 'display') !== 'none' && getStyle(el, 'visibility') !== 'hidden') {
|
||||
Object.keys(el.maskStyle).forEach(property => {
|
||||
el.mask.style[property] = el.maskStyle[property];
|
||||
});
|
||||
|
||||
if (el.originalPosition !== 'absolute' && el.originalPosition !== 'fixed') {
|
||||
addClass(parent, 'el-loading-parent--relative');
|
||||
}
|
||||
if (binding.modifiers.fullscreen && binding.modifiers.lock) {
|
||||
addClass(parent, 'el-loading-parent--hidden');
|
||||
}
|
||||
el.domVisible = true;
|
||||
|
||||
parent.appendChild(el.mask);
|
||||
Vue.nextTick(() => {
|
||||
if (el.instance.hiding) {
|
||||
el.instance.$emit('after-leave');
|
||||
} else {
|
||||
el.instance.visible = true;
|
||||
}
|
||||
});
|
||||
el.domInserted = true;
|
||||
} else if (el.domVisible && el.instance.hiding === true) {
|
||||
el.instance.visible = true;
|
||||
el.instance.hiding = false;
|
||||
}
|
||||
};
|
||||
|
||||
Vue.directive('loading', {
|
||||
bind: function(el, binding, vnode) {
|
||||
const textExr = el.getAttribute('element-loading-text');
|
||||
const spinnerExr = el.getAttribute('element-loading-spinner');
|
||||
const backgroundExr = el.getAttribute('element-loading-background');
|
||||
const customClassExr = el.getAttribute('element-loading-custom-class');
|
||||
const vm = vnode.context;
|
||||
const mask = new Mask({
|
||||
el: document.createElement('div'),
|
||||
data: {
|
||||
text: vm && vm[textExr] || textExr,
|
||||
spinner: vm && vm[spinnerExr] || spinnerExr,
|
||||
background: vm && vm[backgroundExr] || backgroundExr,
|
||||
customClass: vm && vm[customClassExr] || customClassExr,
|
||||
fullscreen: !!binding.modifiers.fullscreen
|
||||
}
|
||||
});
|
||||
el.instance = mask;
|
||||
el.mask = mask.$el;
|
||||
el.maskStyle = {};
|
||||
|
||||
binding.value && toggleLoading(el, binding);
|
||||
},
|
||||
|
||||
update: function(el, binding) {
|
||||
el.instance.setText(el.getAttribute('element-loading-text'));
|
||||
if (binding.oldValue !== binding.value) {
|
||||
toggleLoading(el, binding);
|
||||
}
|
||||
},
|
||||
|
||||
unbind: function(el, binding) {
|
||||
if (el.domInserted) {
|
||||
el.mask &&
|
||||
el.mask.parentNode &&
|
||||
el.mask.parentNode.removeChild(el.mask);
|
||||
toggleLoading(el, { value: false, modifiers: binding.modifiers });
|
||||
}
|
||||
el.instance && el.instance.$destroy();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export default loadingDirective;
|
106
src/components/eLoading/src/index.js
Normal file
@ -0,0 +1,106 @@
|
||||
import Vue from 'vue';
|
||||
import loadingVue from './loading.vue';
|
||||
import { addClass, removeClass, getStyle } from '../utils/dom';
|
||||
import { PopupManager } from '../utils/popup';
|
||||
import afterLeave from '../utils/after-leave';
|
||||
import merge from '../utils/merge';
|
||||
|
||||
const LoadingConstructor = Vue.extend(loadingVue);
|
||||
|
||||
const defaults = {
|
||||
text: null,
|
||||
fullscreen: true,
|
||||
body: false,
|
||||
lock: false,
|
||||
customClass: ''
|
||||
};
|
||||
|
||||
let fullscreenLoading;
|
||||
|
||||
LoadingConstructor.prototype.originalPosition = '';
|
||||
LoadingConstructor.prototype.originalOverflow = '';
|
||||
|
||||
LoadingConstructor.prototype.close = function() {
|
||||
if (this.fullscreen) {
|
||||
fullscreenLoading = undefined;
|
||||
}
|
||||
afterLeave(this, _ => {
|
||||
const target = this.fullscreen || this.body
|
||||
? document.body
|
||||
: this.target;
|
||||
removeClass(target, 'el-loading-parent--relative');
|
||||
removeClass(target, 'el-loading-parent--hidden');
|
||||
if (this.$el && this.$el.parentNode) {
|
||||
this.$el.parentNode.removeChild(this.$el);
|
||||
}
|
||||
this.$destroy();
|
||||
}, 300);
|
||||
this.visible = false;
|
||||
};
|
||||
|
||||
const addStyle = (options, parent, instance) => {
|
||||
let maskStyle = {};
|
||||
if (options.fullscreen) {
|
||||
instance.originalPosition = getStyle(document.body, 'position');
|
||||
instance.originalOverflow = getStyle(document.body, 'overflow');
|
||||
maskStyle.zIndex = PopupManager.nextZIndex();
|
||||
} else if (options.body) {
|
||||
instance.originalPosition = getStyle(document.body, 'position');
|
||||
['top', 'left'].forEach(property => {
|
||||
let scroll = property === 'top' ? 'scrollTop' : 'scrollLeft';
|
||||
maskStyle[property] = options.target.getBoundingClientRect()[property] +
|
||||
document.body[scroll] +
|
||||
document.documentElement[scroll] +
|
||||
'px';
|
||||
});
|
||||
['height', 'width'].forEach(property => {
|
||||
maskStyle[property] = options.target.getBoundingClientRect()[property] + 'px';
|
||||
});
|
||||
} else {
|
||||
instance.originalPosition = getStyle(parent, 'position');
|
||||
}
|
||||
Object.keys(maskStyle).forEach(property => {
|
||||
instance.$el.style[property] = maskStyle[property];
|
||||
});
|
||||
};
|
||||
|
||||
const Loading = (options = {}) => {
|
||||
if (Vue.prototype.$isServer) return;
|
||||
options = merge({}, defaults, options);
|
||||
if (typeof options.target === 'string') {
|
||||
options.target = document.querySelector(options.target);
|
||||
}
|
||||
options.target = options.target || document.body;
|
||||
if (options.target !== document.body) {
|
||||
options.fullscreen = false;
|
||||
} else {
|
||||
options.body = true;
|
||||
}
|
||||
if (options.fullscreen && fullscreenLoading) {
|
||||
return fullscreenLoading;
|
||||
}
|
||||
|
||||
let parent = options.body ? document.body : options.target;
|
||||
let instance = new LoadingConstructor({
|
||||
el: document.createElement('div'),
|
||||
data: options
|
||||
});
|
||||
|
||||
addStyle(options, parent, instance);
|
||||
if (instance.originalPosition !== 'absolute' && instance.originalPosition !== 'fixed') {
|
||||
addClass(parent, 'el-loading-parent--relative');
|
||||
}
|
||||
if (options.fullscreen && options.lock) {
|
||||
addClass(parent, 'el-loading-parent--hidden');
|
||||
}
|
||||
parent.appendChild(instance.$el);
|
||||
Vue.nextTick(() => {
|
||||
instance.visible = true;
|
||||
});
|
||||
if (options.fullscreen) {
|
||||
fullscreenLoading = instance;
|
||||
}
|
||||
return instance;
|
||||
};
|
||||
|
||||
export default Loading;
|
41
src/components/eLoading/src/loading.vue
Normal file
@ -0,0 +1,41 @@
|
||||
<template>
|
||||
<transition name="el-loading-fade" @after-leave="handleAfterLeave">
|
||||
<div
|
||||
v-show="visible"
|
||||
class="el-loading-mask"
|
||||
:style="{ backgroundColor: background || '' }"
|
||||
:class="[customClass, { 'is-fullscreen': fullscreen }]">
|
||||
<div class="el-loading-spinner">
|
||||
<svg v-if="!spinner" class="circular" viewBox="25 25 50 50">
|
||||
<circle class="path" cx="50" cy="50" r="20" fill="none"/>
|
||||
</svg>
|
||||
<i v-else :class="spinner"></i>
|
||||
<p v-if="text" class="el-loading-text">{{ text }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</transition>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
text: null,
|
||||
spinner: null,
|
||||
background: null,
|
||||
fullscreen: true,
|
||||
visible: false,
|
||||
customClass: ''
|
||||
};
|
||||
},
|
||||
|
||||
methods: {
|
||||
handleAfterLeave() {
|
||||
this.$emit('after-leave');
|
||||
},
|
||||
setText(text) {
|
||||
this.text = text;
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
27
src/components/eLoading/utils/after-leave.js
Normal file
@ -0,0 +1,27 @@
|
||||
/**
|
||||
* Bind after-leave event for vue instance. Make sure after-leave is called in any browsers.
|
||||
*
|
||||
* @param {Vue} instance Vue instance.
|
||||
* @param {Function} callback callback of after-leave event
|
||||
* @param {Number} speed the speed of transition, default value is 300ms
|
||||
* @param {Boolean} once weather bind after-leave once. default value is false.
|
||||
*/
|
||||
export default function(instance, callback, speed = 300, once = false) {
|
||||
if (!instance || !callback) throw new Error('instance & callback is required');
|
||||
let called = false;
|
||||
const afterLeaveCallback = function() {
|
||||
if (called) return;
|
||||
called = true;
|
||||
if (callback) {
|
||||
callback.apply(null, arguments);
|
||||
}
|
||||
};
|
||||
if (once) {
|
||||
instance.$once('after-leave', afterLeaveCallback);
|
||||
} else {
|
||||
instance.$on('after-leave', afterLeaveCallback);
|
||||
}
|
||||
setTimeout(() => {
|
||||
afterLeaveCallback();
|
||||
}, speed + 100);
|
||||
};
|