提交代码
3
.browserslistrc
Normal file
@ -0,0 +1,3 @@
|
||||
> 1%
|
||||
last 2 versions
|
||||
not dead
|
17
.env.development
Normal file
@ -0,0 +1,17 @@
|
||||
# just a flag
|
||||
NODE_ENV = 'development'
|
||||
|
||||
# base api
|
||||
VUE_APP_BASE_API = 'http://192.168.3.6:9110'
|
||||
|
||||
VUE_APP_BASE_RESOURCE_API = 'https://test.joylink.club/jlfile'
|
||||
VUE_APP_BASE_RESOURCE_URL = 'https://test.joylink.club/oss/tpsq'
|
||||
|
||||
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
|
||||
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
|
||||
# It only does one thing by converting all import() to require().
|
||||
# This configuration can significantly increase the speed of hot updates,
|
||||
# when you have a large number of pages.
|
||||
# Detail: https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/babel-preset-app/index.js
|
||||
|
||||
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
7
.env.production
Normal file
@ -0,0 +1,7 @@
|
||||
# just a flag
|
||||
NODE_ENV = 'production'
|
||||
|
||||
# base api
|
||||
VUE_APP_BASE_API = 'https://joylink.club/tpsq-cloud'
|
||||
VUE_APP_BASE_RESOURCE_API = 'https://joylink.club/jlfile'
|
||||
VUE_APP_BASE_RESOURCE_URL = 'https://joylink.club/oss/tpsq'
|
11
.env.staging
Normal file
@ -0,0 +1,11 @@
|
||||
# just a flag
|
||||
NODE_ENV = 'production'
|
||||
|
||||
# base api
|
||||
VUE_APP_BASE_API = 'https://test.joylink.club/tpsq-cloud'
|
||||
|
||||
VUE_APP_BASE_RESOURCE_API = 'https://test.joylink.club/jlfile'
|
||||
VUE_APP_BASE_RESOURCE_URL = 'https://test.joylink.club/oss/tpsq'
|
||||
|
||||
#VUE_APP_BASE_RESOURCE_API = 'https://joylink.club/jlfile'
|
||||
#VUE_APP_BASE_RESOURCE_URL = 'https://joylink.club/oss/tpsq'
|
14
.eslintrc.js
Normal file
@ -0,0 +1,14 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
node: true
|
||||
},
|
||||
extends: ["plugin:vue/essential", "eslint:recommended", "@vue/prettier"],
|
||||
parserOptions: {
|
||||
parser: "babel-eslint"
|
||||
},
|
||||
rules: {
|
||||
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
|
||||
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off"
|
||||
}
|
||||
};
|
23
.gitignore
vendored
Normal file
@ -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?
|
24
README.md
Normal file
@ -0,0 +1,24 @@
|
||||
# official-website
|
||||
|
||||
## 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/).
|
3
babel.config.js
Normal file
@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
presets: ["@vue/cli-plugin-babel/preset"]
|
||||
};
|
13429
package-lock.json
generated
Normal file
41
package.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"name": "jl-admin-iview",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"core-js": "^3.6.5",
|
||||
"element-ui": "^2.13.2",
|
||||
"nprogress": "^0.2.0",
|
||||
"script-ext-html-webpack-plugin": "^2.1.4",
|
||||
"svg-sprite-loader": "^5.0.0",
|
||||
"vue": "^2.6.12",
|
||||
"vue-pdf": "^4.1.0",
|
||||
"vue-router": "^3.2.0",
|
||||
"vue-video-player": "^5.0.2",
|
||||
"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-prettier": "^6.0.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"eslint": "^6.7.2",
|
||||
"eslint-plugin-prettier": "^3.1.3",
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"less": "^3.0.4",
|
||||
"less-loader": "^5.0.0",
|
||||
"node-sass": "^4.14.1",
|
||||
"prettier": "^1.19.1",
|
||||
"sass-loader": "^10.0.2",
|
||||
"style-loader": "^1.2.1",
|
||||
"vue-template-compiler": "^2.6.11"
|
||||
}
|
||||
}
|
BIN
public/favicon.png
Normal file
After Width: | Height: | Size: 16 KiB |
17
public/index.html
Normal file
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.png">
|
||||
<title><%= htmlWebpackPlugin.options.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>
|
BIN
public/西安铁路职业技术学院.pdf
Normal file
BIN
public/贵州装备制造职业学院机电技术专业实训室建设.pdf
Normal file
19
src/App.vue
Normal file
@ -0,0 +1,19 @@
|
||||
<template>
|
||||
<div id="app">
|
||||
<router-view />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="less">
|
||||
body {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
#app {
|
||||
font-family: Avenir, Helvetica, Arial, sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
text-align: center;
|
||||
color: #2c3e50;
|
||||
}
|
||||
</style>
|
BIN
src/assets/401_images/401.gif
Normal file
After Width: | Height: | Size: 160 KiB |
BIN
src/assets/404_images/404.png
Normal file
After Width: | Height: | Size: 96 KiB |
BIN
src/assets/404_images/404_cloud.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
src/assets/honor/1.jpg
Normal file
After Width: | Height: | Size: 6.5 MiB |
BIN
src/assets/honor/2.jpg
Normal file
After Width: | Height: | Size: 2.9 MiB |
BIN
src/assets/honor/3.jpg
Normal file
After Width: | Height: | Size: 3.1 MiB |
15
src/assets/honor/index.js
Normal file
@ -0,0 +1,15 @@
|
||||
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
|
||||
}
|
||||
};
|
BIN
src/assets/images/1.西铁院/1.jpg
Normal file
After Width: | Height: | Size: 4.7 MiB |
BIN
src/assets/images/1.西铁院/2.jpg
Normal file
After Width: | Height: | Size: 4.9 MiB |
BIN
src/assets/images/1.西铁院/3.jpg
Normal file
After Width: | Height: | Size: 5.0 MiB |
BIN
src/assets/images/1.西铁院/4.jpg
Normal file
After Width: | Height: | Size: 3.7 MiB |
BIN
src/assets/images/1.西铁院/5.jpg
Normal file
After Width: | Height: | Size: 5.9 MiB |
BIN
src/assets/images/1.西铁院/6.jpg
Normal file
After Width: | Height: | Size: 4.0 MiB |
BIN
src/assets/images/1.西铁院/7.jpg
Normal file
After Width: | Height: | Size: 6.8 MiB |
BIN
src/assets/images/1.西铁院/8.jpg
Normal file
After Width: | Height: | Size: 3.4 MiB |
BIN
src/assets/images/1.西铁院/9.jpg
Normal file
After Width: | Height: | Size: 100 KiB |
BIN
src/assets/images/2.上海轨道交通展/1.jpg
Normal file
After Width: | Height: | Size: 4.1 MiB |
BIN
src/assets/images/2.上海轨道交通展/2.jpg
Normal file
After Width: | Height: | Size: 2.4 MiB |
BIN
src/assets/images/2.上海轨道交通展/3.jpg
Normal file
After Width: | Height: | Size: 3.4 MiB |
BIN
src/assets/images/2.上海轨道交通展/4.jpg
Normal file
After Width: | Height: | Size: 7.3 MiB |
BIN
src/assets/images/2.上海轨道交通展/5.jpg
Normal file
After Width: | Height: | Size: 5.6 MiB |
BIN
src/assets/images/2.上海轨道交通展/6.jpg
Normal file
After Width: | Height: | Size: 7.8 MiB |
BIN
src/assets/images/2.上海轨道交通展/7.jpg
Normal file
After Width: | Height: | Size: 1.7 MiB |
BIN
src/assets/images/3.第四届“中国创翼”暨“创业北京”创业创新大赛/1.jpg
Normal file
After Width: | Height: | Size: 865 KiB |
BIN
src/assets/images/3.第四届“中国创翼”暨“创业北京”创业创新大赛/2.jpg
Normal file
After Width: | Height: | Size: 814 KiB |
BIN
src/assets/images/3.第四届“中国创翼”暨“创业北京”创业创新大赛/3.jpg
Normal file
After Width: | Height: | Size: 551 KiB |
BIN
src/assets/images/3.第四届“中国创翼”暨“创业北京”创业创新大赛/4.jpg
Normal file
After Width: | Height: | Size: 828 KiB |
BIN
src/assets/images/3.第四届“中国创翼”暨“创业北京”创业创新大赛/5.jpg
Normal file
After Width: | Height: | Size: 895 KiB |
BIN
src/assets/images/3.第四届“中国创翼”暨“创业北京”创业创新大赛/6.jpg
Normal file
After Width: | Height: | Size: 2.9 MiB |
BIN
src/assets/images/3.第四届“中国创翼”暨“创业北京”创业创新大赛/7.jpg
Normal file
After Width: | Height: | Size: 2.9 MiB |
40
src/assets/images/index.js
Normal file
@ -0,0 +1,40 @@
|
||||
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")
|
||||
]
|
||||
}
|
||||
};
|
BIN
src/assets/knowledge/JL01-中心级综合监控ISCS系统仿真软件V1.0.jpg
Normal file
After Width: | Height: | Size: 527 KiB |
BIN
src/assets/knowledge/JL02-车站级综合监控ISCS系统仿真软件V1.0.jpg
Normal file
After Width: | Height: | Size: 506 KiB |
BIN
src/assets/knowledge/JL03-ATS行调工作站培训系统软件V1.0.jpg
Normal file
After Width: | Height: | Size: 598 KiB |
BIN
src/assets/knowledge/JL04-ATS行调工作站考试系统软件V1.0.jpg
Normal file
After Width: | Height: | Size: 601 KiB |
BIN
src/assets/knowledge/JL05-ATS现地工作站培训系统软件V1.0.jpg
Normal file
After Width: | Height: | Size: 2.3 MiB |
BIN
src/assets/knowledge/JL06-ATS现地工作站考试系统软件V1.0.jpg
Normal file
After Width: | Height: | Size: 600 KiB |
BIN
src/assets/knowledge/JL07-ATS行调工作站仿真系统软件V1.0.jpg
Normal file
After Width: | Height: | Size: 2.2 MiB |
BIN
src/assets/knowledge/JL08-ATS现地工作站仿真系统软件V1.0.jpg
Normal file
After Width: | Height: | Size: 2.1 MiB |
BIN
src/assets/knowledge/JL09-ATS中心大屏仿真系统软件V1.0.jpg
Normal file
After Width: | Height: | Size: 2.1 MiB |
BIN
src/assets/knowledge/JL10-轨旁仿真软件V1.0.jpg
Normal file
After Width: | Height: | Size: 993 KiB |
BIN
src/assets/knowledge/JL11-城市轨道交通综合演练系统[简称:城轨综合演练平台]V1.0.jpg
Normal file
After Width: | Height: | Size: 985 KiB |
BIN
src/assets/knowledge/JL12-电子沙盘软件V1.0.jpg
Normal file
After Width: | Height: | Size: 989 KiB |
BIN
src/assets/knowledge/JL13-车载仿真软件[简称:VOBC仿真软件]V1.0.jpg
Normal file
After Width: | Height: | Size: 1000 KiB |
BIN
src/assets/knowledge/JL14-区域控制器仿真软件[简称:ZC仿真软件]V1.0.jpg
Normal file
After Width: | Height: | Size: 985 KiB |
BIN
src/assets/knowledge/JL15-虚拟列车仿真软件V1.0.jpg
Normal file
After Width: | Height: | Size: 976 KiB |
BIN
src/assets/knowledge/JL16-模拟驾驶仿真软件[简称:列车模拟驾驶]V1.0.jpg
Normal file
After Width: | Height: | Size: 991 KiB |
BIN
src/assets/knowledge/JL17-城市轨道交通运行图时刻表编辑系统V1.0.jpg
Normal file
After Width: | Height: | Size: 963 KiB |
BIN
src/assets/knowledge/JL18-联锁机仿真软件[简称:CI仿真软件]V1.0.jpg
Normal file
After Width: | Height: | Size: 984 KiB |
56
src/assets/knowledge/index.js
Normal file
@ -0,0 +1,56 @@
|
||||
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")
|
||||
}
|
||||
};
|
BIN
src/assets/logo.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
src/assets/logo/bxkc.png
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
src/assets/logo/ddy.png
Normal file
After Width: | Height: | Size: 195 KiB |
BIN
src/assets/logo/gzb.png
Normal file
After Width: | Height: | Size: 772 KiB |
BIN
src/assets/logo/heb.png
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
src/assets/logo/jyd.png
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
src/assets/logo/tky.png
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
src/assets/logo/xadt.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
src/assets/logo/xty.png
Normal file
After Width: | Height: | Size: 97 KiB |
22
src/assets/partner/index.js
Normal file
@ -0,0 +1,22 @@
|
||||
export default {
|
||||
Pn1: {
|
||||
src: require("@/assets/partner/北京交通大学.jpg"),
|
||||
href: ""
|
||||
},
|
||||
Pn2: {
|
||||
src: require("@/assets/partner/东北电力大学.jpg"),
|
||||
href: ""
|
||||
},
|
||||
Pn3: {
|
||||
src: require("@/assets/partner/贵州装备.jpg"),
|
||||
href: ""
|
||||
},
|
||||
Pn4: {
|
||||
src: require("@/assets/partner/南京铁道.jpg"),
|
||||
href: ""
|
||||
},
|
||||
pn5: {
|
||||
src: require("@/assets/partner/西安铁路职业技术学院.jpg"),
|
||||
href: ""
|
||||
}
|
||||
};
|
BIN
src/assets/partner/东北电力大学.jpg
Normal file
After Width: | Height: | Size: 195 KiB |
BIN
src/assets/partner/北京交通大学.jpg
Normal file
After Width: | Height: | Size: 215 KiB |
BIN
src/assets/partner/南京铁道.jpg
Normal file
After Width: | Height: | Size: 258 KiB |
BIN
src/assets/partner/西安铁路职业技术学院.jpg
Normal file
After Width: | Height: | Size: 267 KiB |
BIN
src/assets/partner/贵州装备.jpg
Normal file
After Width: | Height: | Size: 218 KiB |
BIN
src/assets/product/化学化工.jpg
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
src/assets/product/电力电厂.jpg
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
src/assets/product/轨道交通.jpg
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
src/assets/propaganda/image-bak.jpg
Normal file
After Width: | Height: | Size: 180 KiB |
BIN
src/assets/propaganda/image.jpg
Normal file
After Width: | Height: | Size: 153 KiB |
BIN
src/assets/source/offer.png
Normal file
After Width: | Height: | Size: 229 KiB |
BIN
src/assets/source/world.png
Normal file
After Width: | Height: | Size: 152 KiB |
BIN
src/assets/wchat/wchat.png
Normal file
After Width: | Height: | Size: 49 KiB |
59
src/components/eButtonGroup/index.vue
Normal file
@ -0,0 +1,59 @@
|
||||
<template>
|
||||
<div class="btn-group">
|
||||
<router-link
|
||||
v-for="(el, i) in buttonList"
|
||||
:key="i"
|
||||
:to="el.href"
|
||||
class="btn-rect"
|
||||
>
|
||||
{{ el.name }}
|
||||
</router-link>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
buttonList: {
|
||||
type: Array,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {};
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
a {
|
||||
margin: 0 15px;
|
||||
text-decoration: none;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
margin-top: 20px;
|
||||
position: relproduct;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
.btn-rect {
|
||||
padding: 0 30px;
|
||||
min-width: 140px;
|
||||
height: 40px !important;
|
||||
line-height: 40px !important;
|
||||
text-align: center;
|
||||
border: 1px solid #d1d1d1;
|
||||
display: inline-block;
|
||||
color: #111;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
font-size: 16px;
|
||||
background: #efefef;
|
||||
&:hover {
|
||||
color: #fff;
|
||||
background: #000;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
148
src/components/eImageCard/index.vue
Normal file
@ -0,0 +1,148 @@
|
||||
<template>
|
||||
<div class="card">
|
||||
<div class="image-box">
|
||||
<div class="mask" />
|
||||
<picture>
|
||||
<el-image style="height: 100%;width: 100%" :src="source" />
|
||||
</picture>
|
||||
</div>
|
||||
<div class="text-box">
|
||||
<div class="category">{{ option.type || "产品" }}</div>
|
||||
<div class="name" style="overflow-wrap: break-word;">
|
||||
{{ option.name || "HUAWEI P40 Pro+ 超感知影像" }}
|
||||
</div>
|
||||
<div class="text">
|
||||
{{ option.describe || "超感知徕卡五摄,100倍双目变焦" }}
|
||||
</div>
|
||||
<div class="read-more">
|
||||
<span>了解更多</span>
|
||||
<i class="el-icon-arrow-right" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
el: {
|
||||
type: Object,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
source() {
|
||||
return this.el.source || "";
|
||||
},
|
||||
option() {
|
||||
return this.el.option || {};
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.card {
|
||||
&:hover {
|
||||
.el-image {
|
||||
transition: all 0.5s;
|
||||
transform: scale(1.05);
|
||||
}
|
||||
.mask {
|
||||
height: 100%;
|
||||
background: linear-gradient(rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.5) 70%);
|
||||
}
|
||||
.read-more {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.image-box {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
|
||||
.mask {
|
||||
position: absolute;
|
||||
z-index: 3;
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
height: 50%;
|
||||
width: 100%;
|
||||
content: "";
|
||||
background: linear-gradient(rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.3) 70%);
|
||||
display: block;
|
||||
top: auto;
|
||||
bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.text-box {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
color: #fff;
|
||||
text-align: left;
|
||||
transition: all 0.5s;
|
||||
z-index: 4;
|
||||
padding: 25px 30px;
|
||||
font-size: 20px;
|
||||
bottom: -50px;
|
||||
box-sizing: border-box;
|
||||
|
||||
&:hover {
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.category {
|
||||
line-height: 1.8em;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.name {
|
||||
font-size: 1.2em;
|
||||
line-height: 1.4em;
|
||||
font-weight: bold;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.text {
|
||||
font-size: 0.875em;
|
||||
display: block;
|
||||
margin-bottom: 12px;
|
||||
line-height: 1.8em;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.read-more {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
vertical-align: middle;
|
||||
outline: none;
|
||||
margin-top: 0;
|
||||
transition: all 0.5s;
|
||||
font-size: 0.875em;
|
||||
line-height: 1.875em;
|
||||
color: #fff;
|
||||
span {
|
||||
float: left;
|
||||
}
|
||||
|
||||
i {
|
||||
transition: all 0.2s;
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
font-size: 1em;
|
||||
line-height: inherit;
|
||||
display: inline;
|
||||
vertical-align: middle;
|
||||
float: left;
|
||||
&:hover {
|
||||
transform: translateX(5px);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
112
src/components/eInlineBuy/inline-buy.vue
Normal file
@ -0,0 +1,112 @@
|
||||
<template>
|
||||
<div class="inline-buy" @mouseenter="onMouseEnter" @mouseleave="onMouseLeave">
|
||||
<transition name="el-fade-in">
|
||||
<div class="block" v-show="show">
|
||||
<i class="el-icon-shopping-bag-1" />
|
||||
<span>在线购买</span>
|
||||
<i
|
||||
class="arrow"
|
||||
:class="active ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"
|
||||
/>
|
||||
</div>
|
||||
</transition>
|
||||
<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" />
|
||||
<span>{{ el.name }}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
show: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
menus: {
|
||||
type: Array,
|
||||
default() {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
active: false
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
onMouseEnter() {
|
||||
this.active = true;
|
||||
},
|
||||
onMouseLeave() {
|
||||
this.active = false;
|
||||
},
|
||||
onClick(el, i) {
|
||||
if (el.click) {
|
||||
el.click(el, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.inline-buy {
|
||||
position: relative;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
height: 40px;
|
||||
|
||||
.block {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
i {
|
||||
font-size: 26px;
|
||||
}
|
||||
|
||||
.arrow {
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
.card {
|
||||
color: transparent;
|
||||
position: absolute;
|
||||
z-index: 3;
|
||||
ul {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
transform: translateY(59px);
|
||||
background: #fff;
|
||||
list-style: none;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
min-width: 180px;
|
||||
width: auto;
|
||||
li {
|
||||
border: 1px solid #d4d4d4;
|
||||
border-top: 0;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
padding-left: 26px;
|
||||
background: #fff;
|
||||
color: #777;
|
||||
text-align: left;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
40
src/components/eLogo/index.vue
Normal file
@ -0,0 +1,40 @@
|
||||
<template>
|
||||
<router-link class="logo" :to="home">
|
||||
<el-image style="width:40px; height:40px" :src="logo" />
|
||||
<h2>北京玖琏技术有限公司</h2>
|
||||
</router-link>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import logo from "@/assets/logo.png";
|
||||
|
||||
export default {
|
||||
props: {
|
||||
home: {
|
||||
type: String,
|
||||
default: "/home"
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
logo() {
|
||||
return logo;
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.logo {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
height: 100%;
|
||||
h2 {
|
||||
padding: 0 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
146
src/components/ePreviewPdf/index.vue
Normal file
@ -0,0 +1,146 @@
|
||||
<template>
|
||||
<div v-loading="loading">
|
||||
<template v-if="single">
|
||||
<canvas :id="base" />
|
||||
</template>
|
||||
<template v-else>
|
||||
<canvas v-for="page in numPages" :id="createDomId(page)" :key="page" />
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
let pdfjsLib = require("pdfjs-dist");
|
||||
pdfjsLib.GlobalWorkerOptions.workerSrc = "pdfjs-dist/build/pdf.worker.js";
|
||||
|
||||
export default {
|
||||
props: {
|
||||
single: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
url: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
width: {
|
||||
type: Number,
|
||||
default: 1000
|
||||
},
|
||||
curPage: {
|
||||
type: Number,
|
||||
default: 1
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pdfDoc: null,
|
||||
numPages: 0,
|
||||
loading: false,
|
||||
rendering: false
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
base() {
|
||||
return "pdf-canvas";
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
url: function(url) {
|
||||
this.loadFile(url);
|
||||
},
|
||||
curPage: function(num) {
|
||||
this.renderPage(num);
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
if (this.url) {
|
||||
this.loadFile(this.url);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
createDomId(num) {
|
||||
return this.single ? this.base : `${this.base}-${num}`;
|
||||
},
|
||||
getCanvas(num) {
|
||||
return document.getElementById(this.createDomId(num));
|
||||
},
|
||||
loadFile(url) {
|
||||
this.loading = true;
|
||||
let loadingTask = pdfjsLib.getDocument(url);
|
||||
loadingTask.promise
|
||||
.then(pdf => {
|
||||
this.pdfDoc = pdf;
|
||||
this.numPages = this.pdfDoc.numPages;
|
||||
this.renderPage(this.curPage);
|
||||
this.loading = false;
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
renderPage(num) {
|
||||
if (this.pdfDoc && !this.rendering) {
|
||||
this.rendering = true;
|
||||
this.pdfDoc
|
||||
.getPage(num)
|
||||
.then(page => {
|
||||
const canvas = this.getCanvas(num);
|
||||
const ctx = canvas.getContext("2d");
|
||||
const dpr = window.devicePixelRatio || 1;
|
||||
const bsr =
|
||||
ctx.webkitBackingStorePixelRatio ||
|
||||
ctx.mozBackingStorePixelRatio ||
|
||||
ctx.msBackingStorePixelRatio ||
|
||||
ctx.oBackingStorePixelRatio ||
|
||||
ctx.backingStorePixelRatio ||
|
||||
1;
|
||||
|
||||
const ratio = dpr / bsr;
|
||||
const minWidth = Math.min(this.$el.clientWidth, this.width);
|
||||
const viewport = page.getViewport(
|
||||
minWidth / page.getViewport(1).width
|
||||
);
|
||||
const width = Math.min(viewport.width, this.$el.clientWidth);
|
||||
const height = Math.max(viewport.height, this.$el.clientHeight);
|
||||
|
||||
if (canvas) {
|
||||
canvas.width = width * ratio;
|
||||
canvas.height = height * ratio;
|
||||
canvas.style.width = width + "px";
|
||||
canvas.style.height = height + "px";
|
||||
ctx.setTransform(ratio, 0, 0, ratio, 0, 0);
|
||||
|
||||
let renderTask = page.render({
|
||||
canvasContext: ctx,
|
||||
viewport: viewport
|
||||
});
|
||||
|
||||
renderTask.promise
|
||||
.then(() => {
|
||||
if (!this.single) {
|
||||
if (this.numPages > num) {
|
||||
this.renderPage(num + 1);
|
||||
} else {
|
||||
this.rendering = false;
|
||||
}
|
||||
} else {
|
||||
this.rendering = false;
|
||||
}
|
||||
})
|
||||
.catch((this.rendering = false));
|
||||
}
|
||||
})
|
||||
.catch((this.rendering = false));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
canvas {
|
||||
display: block;
|
||||
margin: 0;
|
||||
}
|
||||
</style>
|
75
src/components/eSearch/search.vue
Normal file
@ -0,0 +1,75 @@
|
||||
<template>
|
||||
<div class="search-box">
|
||||
<transition name="el-fade-in">
|
||||
<el-input
|
||||
v-show="show"
|
||||
style="width:430px"
|
||||
placeholder="请输入关键词"
|
||||
v-model="search"
|
||||
>
|
||||
<el-button slot="append" icon="el-icon-search" @click="onSearch" />
|
||||
</el-input>
|
||||
</transition>
|
||||
<transition name="el-fade-in">
|
||||
<div v-if="show">
|
||||
<a
|
||||
class="el-icon-close"
|
||||
@click="onHide"
|
||||
style="font-size: 26px;margin-left: 10px"
|
||||
/>
|
||||
</div>
|
||||
<div v-else class="flex">
|
||||
<slot name="before" />
|
||||
<a
|
||||
class="el-icon-search"
|
||||
@click="onShow"
|
||||
style="font-size: 26px;margin-left: 10px"
|
||||
/>
|
||||
<slot name="after" />
|
||||
</div>
|
||||
</transition>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
show: false,
|
||||
search: ""
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
onHide() {
|
||||
this.show = false;
|
||||
this.$emit("show", this.show);
|
||||
},
|
||||
onShow() {
|
||||
this.show = true;
|
||||
this.$emit("hide", this.show);
|
||||
},
|
||||
onSearch() {
|
||||
this.$emit("search", this.search);
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.flex {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.search-box {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: #595757;
|
||||
user-select: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
</style>
|
43
src/components/eSvgIcon/index.vue
Normal file
@ -0,0 +1,43 @@
|
||||
<template>
|
||||
<svg :class="svgClass" aria-hidden="true" v-on="$listeners">
|
||||
<use :xlink:href="iconName" />
|
||||
</svg>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "SvgIcon",
|
||||
props: {
|
||||
iconClass: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
className: {
|
||||
type: String,
|
||||
default: ""
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
iconName() {
|
||||
return `#icon-${this.iconClass}`;
|
||||
},
|
||||
svgClass() {
|
||||
if (this.className) {
|
||||
return "svg-icon " + this.className;
|
||||
} else {
|
||||
return "svg-icon";
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.svg-icon {
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
vertical-align: -0.15em;
|
||||
fill: currentColor;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
127
src/components/eVideoCard/index.vue
Normal file
@ -0,0 +1,127 @@
|
||||
<template>
|
||||
<div class="video">
|
||||
<div class="wrapper">
|
||||
<video-player
|
||||
ref="videoPlayer"
|
||||
class="vjs-custom-skin"
|
||||
:playsinline="true"
|
||||
:options="playerOptions"
|
||||
@ready="onPlayerReadied"
|
||||
@timeupdate="onTimeupdate"
|
||||
@play="onPlayerPlay"
|
||||
@pause="onPlayerPause"
|
||||
@ended="onPlayerEnded"
|
||||
/>
|
||||
<slot />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import POSTER_URL from "@/assets/logo.png";
|
||||
|
||||
export default {
|
||||
props: {
|
||||
el: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
autoplay: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
computed: {
|
||||
source() {
|
||||
return this.el.source || {};
|
||||
},
|
||||
option() {
|
||||
return this.el.option || {};
|
||||
},
|
||||
playerOptions() {
|
||||
return {
|
||||
language: "zh-CN",
|
||||
aspectRatio: "16:9",
|
||||
fluid: true,
|
||||
overNative: true,
|
||||
preload: "auto",
|
||||
sourceOrder: true,
|
||||
autoplay: this.autoplay,
|
||||
controls: true,
|
||||
techOrder: ["html5"], // flash
|
||||
flash: {
|
||||
hls: {
|
||||
withCredentials: false
|
||||
}
|
||||
},
|
||||
html5: {
|
||||
hls: {
|
||||
withCredentials: false
|
||||
}
|
||||
},
|
||||
sources: [this.source],
|
||||
poster: POSTER_URL,
|
||||
notSupportedMessage: "此视频暂无法播放,请稍后再试",
|
||||
controlBar: {
|
||||
timeDivider: false, // 时间分割线
|
||||
durationDisplay: false, // 总时间
|
||||
progressControl: true, // 进度条
|
||||
customControlSpacer: true, // 未知
|
||||
fullscreenToggle: true // 全屏
|
||||
}
|
||||
};
|
||||
},
|
||||
player() {
|
||||
return this.$refs.videoPlayer;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onPlayerReadied() {},
|
||||
onTimeupdate() {},
|
||||
onPlayerPlay() {},
|
||||
onPlayerPause() {},
|
||||
onPlayerEnded() {}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@media screen and (min-width: 576px) {
|
||||
.video {
|
||||
max-width: 540px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.video {
|
||||
max-width: 720px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 992px) {
|
||||
.video {
|
||||
max-width: 960px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1200px) {
|
||||
.video {
|
||||
max-width: 1140px;
|
||||
}
|
||||
}
|
||||
|
||||
.video {
|
||||
width: 100%;
|
||||
margin: auto;
|
||||
|
||||
.wrapper {
|
||||
position: relative;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
8
src/icons/index.js
Normal file
@ -0,0 +1,8 @@
|
||||
import Vue from "vue";
|
||||
import SvgIcon from "@/components/eSvgIcon/index";
|
||||
|
||||
Vue.component("svg-icon", SvgIcon);
|
||||
|
||||
const req = require.context("./svg", false, /\.svg$/);
|
||||
const requireAll = requireContext => requireContext.keys().map(requireContext);
|
||||
requireAll(req);
|
1
src/icons/svg/eye.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg width="128" height="64" xmlns="http://www.w3.org/2000/svg"><path d="M127.072 7.994c1.37-2.208.914-5.152-.914-6.87-2.056-1.717-4.797-1.226-6.396.982-.229.245-25.586 32.382-55.74 32.382-29.24 0-55.74-32.382-55.968-32.627-1.6-1.963-4.57-2.208-6.397-.49C-.17 3.086-.399 6.275 1.2 8.238c.457.736 5.94 7.36 14.62 14.72L4.17 35.96c-1.828 1.963-1.6 5.152.228 6.87.457.98 1.6 1.471 2.742 1.471s2.284-.49 3.198-1.472l12.564-13.983c5.94 4.416 13.021 8.587 20.788 11.53l-4.797 17.418c-.685 2.699.686 5.397 3.198 6.133h1.37c2.057 0 3.884-1.472 4.341-3.68L52.6 42.83c3.655.736 7.538 1.227 11.422 1.227 3.883 0 7.767-.49 11.422-1.227l4.797 17.173c.457 2.208 2.513 3.68 4.34 3.68.457 0 .914 0 1.143-.246 2.513-.736 3.883-3.434 3.198-6.133l-4.797-17.172c7.767-2.944 14.848-7.114 20.788-11.53l12.336 13.738c.913.981 2.056 1.472 3.198 1.472s2.284-.49 3.198-1.472c1.828-1.963 1.828-4.906.228-6.87l-11.65-13.001c9.366-7.36 14.849-14.474 14.849-14.474z"/></svg>
|
After Width: | Height: | Size: 944 B |
1
src/icons/svg/eyeopen.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="128" height="128"><defs><style/></defs><path d="M512 128q69.675 0 135.51 21.163t115.498 54.997 93.483 74.837 73.685 82.006 51.67 74.837 32.17 54.827L1024 512q-2.347 4.992-6.315 13.483T998.87 560.17t-31.658 51.669-44.331 59.99-56.832 64.34-69.504 60.16-82.347 51.5-94.848 34.687T512 896q-69.675 0-135.51-21.163t-115.498-54.826-93.483-74.326-73.685-81.493-51.67-74.496-32.17-54.997L0 513.707q2.347-4.992 6.315-13.483t18.816-34.816 31.658-51.84 44.331-60.33 56.832-64.683 69.504-60.331 82.347-51.84 94.848-34.816T512 128.085zm0 85.333q-46.677 0-91.648 12.331t-81.152 31.83-70.656 47.146-59.648 54.485-48.853 57.686-37.675 52.821-26.325 43.99q12.33 21.674 26.325 43.52t37.675 52.351 48.853 57.003 59.648 53.845T339.2 767.02t81.152 31.488T512 810.667t91.648-12.331 81.152-31.659 70.656-46.848 59.648-54.186 48.853-57.344 37.675-52.651T927.957 512q-12.33-21.675-26.325-43.648t-37.675-52.65-48.853-57.345-59.648-54.186-70.656-46.848-81.152-31.659T512 213.334zm0 128q70.656 0 120.661 50.006T682.667 512 632.66 632.661 512 682.667 391.339 632.66 341.333 512t50.006-120.661T512 341.333zm0 85.334q-35.328 0-60.33 25.002T426.666 512t25.002 60.33T512 597.334t60.33-25.002T597.334 512t-25.002-60.33T512 426.666z"/></svg>
|
After Width: | Height: | Size: 1.3 KiB |
1
src/icons/svg/jiugongge.svg
Normal file
@ -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 class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#333333" d="M884.736 102.4l-147.456 0c-20.48 0-36.864 16.384-36.864 36.864l0 147.456C696.32 311.296 712.704 327.68 733.184 327.68l147.456 0c20.48 0 36.864-16.384 36.864-36.864L917.504 139.264C921.6 118.784 905.216 102.4 884.736 102.4zM884.736 290.816l-147.456 0L737.28 139.264l147.456 0L884.736 290.816zM884.736 696.32l-147.456 0c-20.48 0-36.864 16.384-36.864 36.864l0 147.456c0 20.48 16.384 36.864 36.864 36.864l147.456 0c20.48 0 36.864-16.384 36.864-36.864l0-147.456C921.6 712.704 905.216 696.32 884.736 696.32zM884.736 884.736l-147.456 0 0-147.456 147.456 0L884.736 884.736zM884.736 401.408l-147.456 0c-20.48 0-36.864 16.384-36.864 36.864l0 147.456c0 20.48 16.384 36.864 36.864 36.864l147.456 0c20.48 0 36.864-16.384 36.864-36.864l0-147.456C921.6 417.792 905.216 401.408 884.736 401.408zM884.736 585.728l-147.456 0 0-147.456 147.456 0L884.736 585.728zM585.728 401.408l-147.456 0c-20.48 0-36.864 16.384-36.864 36.864l0 147.456c0 20.48 16.384 36.864 36.864 36.864l147.456 0c20.48 0 36.864-16.384 36.864-36.864l0-147.456C622.592 417.792 606.208 401.408 585.728 401.408zM585.728 585.728l-147.456 0 0-147.456 147.456 0L585.728 585.728zM585.728 102.4l-147.456 0c-20.48 0-36.864 16.384-36.864 36.864l0 147.456c0 20.48 16.384 36.864 36.864 36.864l147.456 0c20.48 0 36.864-16.384 36.864-36.864L622.592 139.264C622.592 118.784 606.208 102.4 585.728 102.4zM585.728 290.816l-147.456 0L438.272 139.264l147.456 0L585.728 290.816zM585.728 696.32l-147.456 0c-20.48 0-36.864 16.384-36.864 36.864l0 147.456c0 20.48 16.384 36.864 36.864 36.864l147.456 0c20.48 0 36.864-16.384 36.864-36.864l0-147.456C622.592 712.704 606.208 696.32 585.728 696.32zM585.728 884.736l-147.456 0 0-147.456 147.456 0L585.728 884.736zM290.816 696.32 139.264 696.32c-20.48 0-36.864 16.384-36.864 36.864l0 147.456c0 20.48 16.384 36.864 36.864 36.864l147.456 0c20.48 0 36.864-16.384 36.864-36.864l0-147.456C327.68 712.704 311.296 696.32 290.816 696.32zM290.816 884.736 139.264 884.736l0-147.456 147.456 0L286.72 884.736zM290.816 401.408 139.264 401.408c-20.48 0-36.864 16.384-36.864 36.864l0 147.456c0 20.48 16.384 36.864 36.864 36.864l147.456 0c20.48 0 36.864-16.384 36.864-36.864l0-147.456C327.68 417.792 311.296 401.408 290.816 401.408zM290.816 585.728 139.264 585.728l0-147.456 147.456 0L286.72 585.728zM290.816 102.4 139.264 102.4c-20.48 0-36.864 16.384-36.864 36.864l0 147.456C102.4 311.296 118.784 327.68 139.264 327.68l147.456 0C311.296 327.68 327.68 311.296 327.68 290.816L327.68 139.264C327.68 118.784 311.296 102.4 290.816 102.4zM290.816 290.816 139.264 290.816 139.264 139.264l147.456 0L286.72 290.816z" /></svg>
|
After Width: | Height: | Size: 2.8 KiB |