new
3
.browserslistrc
Normal file
@ -0,0 +1,3 @@
|
||||
> 1%
|
||||
last 2 versions
|
||||
not dead
|
||||
5
.editorconfig
Normal file
@ -0,0 +1,5 @@
|
||||
[*.{js,jsx,ts,tsx,vue}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
17
.eslintrc.js
Normal file
@ -0,0 +1,17 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
node: true
|
||||
},
|
||||
extends: [
|
||||
'plugin:vue/essential',
|
||||
'@vue/standard'
|
||||
],
|
||||
parserOptions: {
|
||||
parser: '@babel/eslint-parser'
|
||||
},
|
||||
rules: {
|
||||
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
|
||||
}
|
||||
}
|
||||
15
babel.config.js
Normal file
@ -0,0 +1,15 @@
|
||||
module.exports = {
|
||||
presets: [
|
||||
'@vue/cli-plugin-babel/preset',
|
||||
['@babel/preset-env', { modules: false }]
|
||||
],
|
||||
plugins: [
|
||||
[
|
||||
'component',
|
||||
{
|
||||
libraryName: 'element-ui',
|
||||
styleLibraryName: 'theme-chalk'
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
19
jsconfig.json
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es5",
|
||||
"module": "esnext",
|
||||
"baseUrl": "./",
|
||||
"moduleResolution": "node",
|
||||
"paths": {
|
||||
"@/*": [
|
||||
"src/*"
|
||||
]
|
||||
},
|
||||
"lib": [
|
||||
"esnext",
|
||||
"dom",
|
||||
"dom.iterable",
|
||||
"scripthost"
|
||||
]
|
||||
}
|
||||
}
|
||||
9819
package-lock.json
generated
Normal file
36
package.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"name": "challenge",
|
||||
"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.8.3",
|
||||
"element-ui": "^2.15.14",
|
||||
"vue": "^2.6.14",
|
||||
"vue-router": "^3.5.1",
|
||||
"vuex": "^3.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.16",
|
||||
"@babel/eslint-parser": "^7.12.16",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@vue/cli-plugin-router": "~5.0.0",
|
||||
"@vue/cli-plugin-vuex": "~5.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"@vue/eslint-config-standard": "^6.1.0",
|
||||
"babel-plugin-component": "^1.1.1",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-import": "^2.25.3",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"eslint-plugin-promise": "^5.1.0",
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"less": "^4.0.0",
|
||||
"less-loader": "^8.0.0",
|
||||
"vue-template-compiler": "^2.6.14"
|
||||
}
|
||||
}
|
||||
BIN
public/favicon.ico
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
17
public/index.html
Normal file
@ -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><%= 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>
|
||||
9
src/App.vue
Normal file
@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<div id="app">
|
||||
<router-view />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="less">
|
||||
|
||||
</style>
|
||||
BIN
src/assets/11.jpg
Normal file
|
After Width: | Height: | Size: 226 KiB |
BIN
src/assets/images/1.jpg
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
src/assets/images/2.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
src/assets/images/3.jpg
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
src/assets/images/4.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
src/assets/images/guye.webp
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
src/assets/images/heliu.jpg
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
src/assets/images/shebei.webp
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
src/assets/images/shizheng.jpg
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
src/assets/images/xunhuan.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
src/assets/login.jpg
Normal file
|
After Width: | Height: | Size: 178 KiB |
BIN
src/assets/login3.jpg
Normal file
|
After Width: | Height: | Size: 137 KiB |
BIN
src/assets/logo.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
12
src/assets/styles/index.css
Normal file
@ -0,0 +1,12 @@
|
||||
* {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.el-menu-item{
|
||||
font-size: 18px;
|
||||
}
|
||||
150
src/assets/styles/login.css
Normal file
@ -0,0 +1,150 @@
|
||||
.login {
|
||||
width: 358px;
|
||||
height: 588px;
|
||||
border-radius: 15px;
|
||||
padding: 0 50px;
|
||||
position: fixed;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
background-color: rgba(87, 87, 87, 0.5);
|
||||
}
|
||||
|
||||
.header {
|
||||
font-size: 38px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
line-height: 100px;
|
||||
color: #61dafb;
|
||||
}
|
||||
.container {
|
||||
height: 30px;
|
||||
width: 250px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 20%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.p{
|
||||
color: red;
|
||||
margin:3px 0 0 -20px;
|
||||
display: inline-block;
|
||||
background-color: transparent;
|
||||
}
|
||||
.container1 {
|
||||
height: 30px;
|
||||
width: 250px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 30%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.loginBtn,
|
||||
.registerBtn {
|
||||
transform: translate(-50%, -50%);
|
||||
text-align: center;
|
||||
padding: 5px;
|
||||
width: 22%;
|
||||
margin-top: 40px;
|
||||
background-color: #61dafb;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.loginBtn {
|
||||
position: absolute;
|
||||
left: 35%;
|
||||
top: 64%;
|
||||
}
|
||||
|
||||
.registerBtn {
|
||||
position: absolute;
|
||||
top: 64%;
|
||||
right: 11%;
|
||||
}
|
||||
|
||||
input {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
outline: none;
|
||||
border: none;
|
||||
box-sizing: border-box;
|
||||
padding-left: 5px;
|
||||
background-color: #282c34;
|
||||
color: #61dafb;
|
||||
caret-color: #61dafb;
|
||||
}
|
||||
|
||||
input::placeholder {
|
||||
color: #61dafb;
|
||||
}
|
||||
|
||||
span {
|
||||
position: absolute;
|
||||
content: "";
|
||||
display: block;
|
||||
background-color: #61dafb;
|
||||
transition: transform 0.1s ease-in-out;
|
||||
}
|
||||
|
||||
.hint {
|
||||
font-size: 12px;
|
||||
padding-left: 5px;
|
||||
color: #ff1c1c;
|
||||
}
|
||||
|
||||
.top,
|
||||
.bottom {
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
height: 2px;
|
||||
}
|
||||
|
||||
.left,
|
||||
.right {
|
||||
top: 0px;
|
||||
bottom: 0px;
|
||||
width: 2px;
|
||||
transform: scaleY(0);
|
||||
}
|
||||
|
||||
.top {
|
||||
top: 0px;
|
||||
transform: scaleX(0);
|
||||
transform-origin: left center;
|
||||
transition-delay: 0.2s;
|
||||
}
|
||||
|
||||
.left {
|
||||
left: 0px;
|
||||
transform-origin: bottom center;
|
||||
transition-delay: 0.3s;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
bottom: 0px;
|
||||
}
|
||||
|
||||
.right {
|
||||
right: 0px;
|
||||
transform-origin: top center;
|
||||
transition-delay: 0.1s;
|
||||
}
|
||||
|
||||
input:focus ~ .right {
|
||||
transform: scaleY(1);
|
||||
transform-origin: bottom center;
|
||||
}
|
||||
|
||||
input:focus ~ .left {
|
||||
transform: scaleY(1);
|
||||
transform-origin: top center;
|
||||
}
|
||||
|
||||
input:focus ~ .top {
|
||||
transform: scaleY(1);
|
||||
transform-origin: right center;
|
||||
}
|
||||
39
src/assets/styles/register.css
Normal file
@ -0,0 +1,39 @@
|
||||
|
||||
.register{
|
||||
width: 358px;
|
||||
height: 588px;
|
||||
border-radius: 15px;
|
||||
padding: 0 50px;
|
||||
position: fixed;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
background-color: rgba(87, 87, 87, 0.5);
|
||||
}
|
||||
|
||||
.container2 {
|
||||
height: 30px;
|
||||
width: 250px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 40%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.container3 {
|
||||
height: 30px;
|
||||
width: 250px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.container4 {
|
||||
height: 30px;
|
||||
width: 250px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 60%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
60
src/components/HelloWorld.vue
Normal file
@ -0,0 +1,60 @@
|
||||
<template>
|
||||
<div class="hello">
|
||||
<h1>{{ msg }}</h1>
|
||||
<p>
|
||||
For a guide and recipes on how to configure / customize this project,<br>
|
||||
check out the
|
||||
<a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
|
||||
</p>
|
||||
<h3>Installed CLI Plugins</h3>
|
||||
<ul>
|
||||
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
|
||||
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router" target="_blank" rel="noopener">router</a></li>
|
||||
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-vuex" target="_blank" rel="noopener">vuex</a></li>
|
||||
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
|
||||
</ul>
|
||||
<h3>Essential Links</h3>
|
||||
<ul>
|
||||
<li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
|
||||
<li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
|
||||
<li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
|
||||
<li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
|
||||
<li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
|
||||
</ul>
|
||||
<h3>Ecosystem</h3>
|
||||
<ul>
|
||||
<li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
|
||||
<li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
|
||||
<li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
|
||||
<li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
|
||||
<li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'HelloWorld',
|
||||
props: {
|
||||
msg: String
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- Add "scoped" attribute to limit CSS to this component only -->
|
||||
<style scoped lang="less">
|
||||
h3 {
|
||||
margin: 40px 0 0;
|
||||
}
|
||||
ul {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
}
|
||||
li {
|
||||
display: inline-block;
|
||||
margin: 0 10px;
|
||||
}
|
||||
a {
|
||||
color: #42b983;
|
||||
}
|
||||
</style>
|
||||
44
src/main.js
Normal file
@ -0,0 +1,44 @@
|
||||
import Vue from 'vue'
|
||||
import App from './App.vue'
|
||||
import router from './router'
|
||||
import store from './store'
|
||||
|
||||
import '@/assets/styles/index.css'
|
||||
|
||||
import {
|
||||
Button,
|
||||
Input,
|
||||
Form,
|
||||
FormItem,
|
||||
Checkbox,
|
||||
Carousel,
|
||||
CarouselItem,
|
||||
Tabs,
|
||||
TabPane,
|
||||
Menu,
|
||||
MenuItem,
|
||||
Breadcrumb,
|
||||
BreadcrumbItem
|
||||
} from 'element-ui'
|
||||
|
||||
Vue.use(Button)
|
||||
Vue.use(Form)
|
||||
Vue.use(Input)
|
||||
Vue.use(FormItem)
|
||||
Vue.use(Checkbox)
|
||||
Vue.use(Carousel)
|
||||
Vue.use(CarouselItem)
|
||||
Vue.use(Tabs)
|
||||
Vue.use(TabPane)
|
||||
Vue.use(Menu)
|
||||
Vue.use(MenuItem)
|
||||
Vue.use(Breadcrumb)
|
||||
Vue.use(BreadcrumbItem)
|
||||
|
||||
Vue.config.productionTip = false
|
||||
|
||||
new Vue({
|
||||
router,
|
||||
store,
|
||||
render: h => h(App)
|
||||
}).$mount('#app')
|
||||
60
src/router/index.js
Normal file
@ -0,0 +1,60 @@
|
||||
import Vue from 'vue'
|
||||
import VueRouter from 'vue-router'
|
||||
import login from '../views/login.vue'
|
||||
|
||||
Vue.use(VueRouter)
|
||||
|
||||
const routes = [
|
||||
{
|
||||
path: '/',
|
||||
name: 'login',
|
||||
component: login
|
||||
},
|
||||
{
|
||||
path: '/index',
|
||||
name: 'index',
|
||||
component: () => import('../views/index.vue')
|
||||
},
|
||||
{
|
||||
path: '/resource',
|
||||
name: 'resource',
|
||||
component: () => import('../views/resource')
|
||||
},
|
||||
{
|
||||
path: '/environmental',
|
||||
name: 'environmental',
|
||||
component: () => import('../views/environmental')
|
||||
},
|
||||
{
|
||||
path: '/cleanEnergy',
|
||||
name: 'cleanEnergy',
|
||||
component: () => import('../views/cleanEnergy')
|
||||
},
|
||||
{
|
||||
path: '/journalism',
|
||||
name: 'environmentJournalism',
|
||||
component: () => import('@/views/environment/journalism/index')
|
||||
},
|
||||
{
|
||||
path: '/projectCase',
|
||||
name: 'environmentProjectase',
|
||||
component: () => import('@/views/environment/projectCase/index')
|
||||
},
|
||||
{
|
||||
path: '/scheme',
|
||||
name: 'environmentScheme',
|
||||
component: () => import('@/views/environment/scheme/index')
|
||||
},
|
||||
{
|
||||
path: '/details',
|
||||
name: 'environmentDetails',
|
||||
component: () => import('@/views/environment/scheme/details')
|
||||
}
|
||||
]
|
||||
|
||||
const router = new VueRouter({
|
||||
mode: 'history', // 去掉url中的#
|
||||
routes
|
||||
})
|
||||
|
||||
export default router
|
||||
17
src/store/index.js
Normal file
@ -0,0 +1,17 @@
|
||||
import Vue from 'vue'
|
||||
import Vuex from 'vuex'
|
||||
|
||||
Vue.use(Vuex)
|
||||
|
||||
export default new Vuex.Store({
|
||||
state: {
|
||||
},
|
||||
getters: {
|
||||
},
|
||||
mutations: {
|
||||
},
|
||||
actions: {
|
||||
},
|
||||
modules: {
|
||||
}
|
||||
})
|
||||
13
src/views/cleanEnergy/index.vue
Normal file
@ -0,0 +1,13 @@
|
||||
<template>
|
||||
<div>清洁能源</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'cleanEnergy'
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
340
src/views/environment/journalism/index.vue
Normal file
@ -0,0 +1,340 @@
|
||||
<template>
|
||||
<div class="journalism">
|
||||
<div class="nav">
|
||||
<el-menu
|
||||
:default-active="activeIndex"
|
||||
class="el-menu-demo"
|
||||
mode="horizontal"
|
||||
background-color="#545c64"
|
||||
text-color="#fff"
|
||||
active-text-color="#ffd04b"
|
||||
>
|
||||
<el-menu-item index="1">
|
||||
<router-link to="/index">首页</router-link>
|
||||
</el-menu-item>
|
||||
<el-menu-item index="2">
|
||||
<router-link to="/scheme">解决方案</router-link>
|
||||
</el-menu-item>
|
||||
<el-menu-item index="3">
|
||||
<router-link to="/projectCase">工程案例</router-link>
|
||||
</el-menu-item>
|
||||
<el-menu-item index="4">
|
||||
<router-link to="journalism">新闻资讯</router-link>
|
||||
</el-menu-item>
|
||||
</el-menu>
|
||||
</div>
|
||||
<!-- 轮播图 -->
|
||||
<div class="slideshow">
|
||||
<el-carousel :interval="3000" arrow="always" type="card">
|
||||
<el-carousel-item v-for="(item, index) in carouselItems" :key="index">
|
||||
<img
|
||||
:src="item.image"
|
||||
:alt="item.description"
|
||||
style="width: 100%; height: auto"
|
||||
/>
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
</div>
|
||||
|
||||
<!-- 新闻 -->
|
||||
<div class="message">
|
||||
<div class="message-left">
|
||||
<el-tabs v-model="activeName">
|
||||
<el-tab-pane label="大气" name="first">
|
||||
<div
|
||||
class="news-item"
|
||||
v-for="(item, index) in messageItem"
|
||||
:key="index"
|
||||
>
|
||||
<img :src="item.imgs" alt="" />
|
||||
<h3>{{ item.title }}</h3>
|
||||
<p>
|
||||
{{ item.content }}
|
||||
</p>
|
||||
<p class="issue">
|
||||
{{ item.department }} | <span>{{
|
||||
item.date
|
||||
}}</span>
|
||||
</p>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="节能" name="second">
|
||||
<div
|
||||
class="energy-item"
|
||||
v-for="(item, index) in energyItem"
|
||||
:key="index"
|
||||
>
|
||||
<img :src="item.imgs" alt="" />
|
||||
<h3>{{ item.title }}</h3>
|
||||
<p>
|
||||
{{ item.content }}
|
||||
</p>
|
||||
<p class="issue">
|
||||
{{ item.department }} | <span>{{
|
||||
item.date
|
||||
}}</span>
|
||||
</p>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="修复" name="third">
|
||||
<div
|
||||
class="repair-item"
|
||||
v-for="(item, index) in repairItem"
|
||||
:key="index"
|
||||
>
|
||||
<img :src="item.imgs" alt="" />
|
||||
<h3>{{ item.title }}</h3>
|
||||
<p>
|
||||
{{ item.content }}
|
||||
</p>
|
||||
<p class="issue">
|
||||
{{ item.department }} | <span>{{
|
||||
item.date
|
||||
}}</span>
|
||||
</p>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
|
||||
<div class="message-right"></div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'journaLism',
|
||||
data () {
|
||||
return {
|
||||
activeIndex: '4',
|
||||
carouselItems: [
|
||||
{
|
||||
image: require('@/assets/images/1.jpg')
|
||||
},
|
||||
{
|
||||
image: require('@/assets/images/2.jpg')
|
||||
},
|
||||
{
|
||||
image: require('@/assets/images/3.jpg')
|
||||
},
|
||||
{
|
||||
image: require('@/assets/images/4.jpg')
|
||||
}
|
||||
],
|
||||
activeName: 'first',
|
||||
messageItem: [
|
||||
{
|
||||
imgs: require('@/assets/images/1.jpg'),
|
||||
title: '生态环境部发布4月上半月全国空气质量预报会商结果',
|
||||
content:
|
||||
'2024年3月31日,中国环境监测总站联合中央气象台、国家大气污染防治攻关联合中心、东北、华南、西南、西北、长三角区域空气质量预测预报中心和北京市生态环境监测中心,开展2024年4月上半月(4月1日—4月15日)全国空气质量预报会商。',
|
||||
department: '生态环境部',
|
||||
date: '2024-4-5'
|
||||
},
|
||||
{
|
||||
imgs: require('@/assets/images/1.jpg'),
|
||||
title: '生态环境部发布4月上半月全国空气质量预报会商结果',
|
||||
content:
|
||||
'2024年3月31日,中国环境监测总站联合中央气象台、国家大气污染防治攻关联合中心、东北、华南、西南、西北、长三角区域空气质量预测预报中心和北京市生态环境监测中心,开展2024年4月上半月(4月1日—4月15日)全国空气质量预报会商。',
|
||||
department: '生态环境部',
|
||||
date: '2024-4-5'
|
||||
},
|
||||
{
|
||||
imgs: require('@/assets/images/1.jpg'),
|
||||
title: '生态环境部发布4月上半月全国空气质量预报会商结果',
|
||||
content:
|
||||
'2024年3月31日,中国环境监测总站联合中央气象台、国家大气污染防治攻关联合中心、东北、华南、西南、西北、长三角区域空气质量预测预报中心和北京市生态环境监测中心,开展2024年4月上半月(4月1日—4月15日)全国空气质量预报会商。',
|
||||
department: '生态环境部',
|
||||
date: '2024-4-5'
|
||||
},
|
||||
{
|
||||
imgs: require('@/assets/images/1.jpg'),
|
||||
title: '生态环境部发布4月上半月全国空气质量预报会商结果',
|
||||
content:
|
||||
'2024年3月31日,中国环境监测总站联合中央气象台、国家大气污染防治攻关联合中心、东北、华南、西南、西北、长三角区域空气质量预测预报中心和北京市生态环境监测中心,开展2024年4月上半月(4月1日—4月15日)全国空气质量预报会商。',
|
||||
department: '生态环境部',
|
||||
date: '2024-4-5'
|
||||
},
|
||||
{
|
||||
imgs: require('@/assets/images/1.jpg'),
|
||||
title: '生态环境部发布4月上半月全国空气质量预报会商结果',
|
||||
content:
|
||||
'2024年3月31日,中国环境监测总站联合中央气象台、国家大气污染防治攻关联合中心、东北、华南、西南、西北、长三角区域空气质量预测预报中心和北京市生态环境监测中心,开展2024年4月上半月(4月1日—4月15日)全国空气质量预报会商。',
|
||||
department: '生态环境部',
|
||||
date: '2024-4-5'
|
||||
},
|
||||
{
|
||||
imgs: require('@/assets/images/1.jpg'),
|
||||
title: '生态环境部发布4月上半月全国空气质量预报会商结果',
|
||||
content:
|
||||
'2024年3月31日,中国环境监测总站联合中央气象台、国家大气污染防治攻关联合中心、东北、华南、西南、西北、长三角区域空气质量预测预报中心和北京市生态环境监测中心,开展2024年4月上半月(4月1日—4月15日)全国空气质量预报会商。',
|
||||
department: '生态环境部',
|
||||
date: '2024-4-5'
|
||||
}
|
||||
],
|
||||
energyItem: [
|
||||
{
|
||||
imgs: require('@/assets/images/2.jpg'),
|
||||
title: '“节能服务进企业”助力钢铁行业绿色发展',
|
||||
content:
|
||||
'为全面推动钢铁行业极致能效工程,挖掘行业节能降碳潜力,“节能服务进企业”暨2024钢铁行业能效提升研讨会近日在江苏省江阴市举行。参会代表围绕钢铁行业大规模设备更新、节能降碳等政策,绿色微电网建设及极致能效标杆创建实践,全流程先进节能减排、建筑光伏一体化、高效压缩空气能源供应系统等技术开展交流分享;与会钢铁企业、节能服务公司介绍了铁前节能、钢轧节能等节能技术和装备的应用实践及前景等。。',
|
||||
department: '科技日报',
|
||||
date: '2024-4-5'
|
||||
},
|
||||
{
|
||||
imgs: require('@/assets/images/2.jpg'),
|
||||
title: '“节能服务进企业”助力钢铁行业绿色发展',
|
||||
content:
|
||||
'为全面推动钢铁行业极致能效工程,挖掘行业节能降碳潜力,“节能服务进企业”暨2024钢铁行业能效提升研讨会近日在江苏省江阴市举行。参会代表围绕钢铁行业大规模设备更新、节能降碳等政策,绿色微电网建设及极致能效标杆创建实践,全流程先进节能减排、建筑光伏一体化、高效压缩空气能源供应系统等技术开展交流分享;与会钢铁企业、节能服务公司介绍了铁前节能、钢轧节能等节能技术和装备的应用实践及前景等。。',
|
||||
department: '科技日报',
|
||||
date: '2024-4-5'
|
||||
},
|
||||
{
|
||||
imgs: require('@/assets/images/2.jpg'),
|
||||
title: '“节能服务进企业”助力钢铁行业绿色发展',
|
||||
content:
|
||||
'为全面推动钢铁行业极致能效工程,挖掘行业节能降碳潜力,“节能服务进企业”暨2024钢铁行业能效提升研讨会近日在江苏省江阴市举行。参会代表围绕钢铁行业大规模设备更新、节能降碳等政策,绿色微电网建设及极致能效标杆创建实践,全流程先进节能减排、建筑光伏一体化、高效压缩空气能源供应系统等技术开展交流分享;与会钢铁企业、节能服务公司介绍了铁前节能、钢轧节能等节能技术和装备的应用实践及前景等。。',
|
||||
department: '科技日报',
|
||||
date: '2024-4-5'
|
||||
},
|
||||
{
|
||||
imgs: require('@/assets/images/2.jpg'),
|
||||
title: '“节能服务进企业”助力钢铁行业绿色发展',
|
||||
content:
|
||||
'为全面推动钢铁行业极致能效工程,挖掘行业节能降碳潜力,“节能服务进企业”暨2024钢铁行业能效提升研讨会近日在江苏省江阴市举行。参会代表围绕钢铁行业大规模设备更新、节能降碳等政策,绿色微电网建设及极致能效标杆创建实践,全流程先进节能减排、建筑光伏一体化、高效压缩空气能源供应系统等技术开展交流分享;与会钢铁企业、节能服务公司介绍了铁前节能、钢轧节能等节能技术和装备的应用实践及前景等。。',
|
||||
department: '科技日报',
|
||||
date: '2024-4-5'
|
||||
},
|
||||
{
|
||||
imgs: require('@/assets/images/2.jpg'),
|
||||
title: '“节能服务进企业”助力钢铁行业绿色发展',
|
||||
content:
|
||||
'为全面推动钢铁行业极致能效工程,挖掘行业节能降碳潜力,“节能服务进企业”暨2024钢铁行业能效提升研讨会近日在江苏省江阴市举行。参会代表围绕钢铁行业大规模设备更新、节能降碳等政策,绿色微电网建设及极致能效标杆创建实践,全流程先进节能减排、建筑光伏一体化、高效压缩空气能源供应系统等技术开展交流分享;与会钢铁企业、节能服务公司介绍了铁前节能、钢轧节能等节能技术和装备的应用实践及前景等。。',
|
||||
department: '科技日报',
|
||||
date: '2024-4-5'
|
||||
},
|
||||
{
|
||||
imgs: require('@/assets/images/2.jpg'),
|
||||
title: '“节能服务进企业”助力钢铁行业绿色发展',
|
||||
content:
|
||||
'为全面推动钢铁行业极致能效工程,挖掘行业节能降碳潜力,“节能服务进企业”暨2024钢铁行业能效提升研讨会近日在江苏省江阴市举行。参会代表围绕钢铁行业大规模设备更新、节能降碳等政策,绿色微电网建设及极致能效标杆创建实践,全流程先进节能减排、建筑光伏一体化、高效压缩空气能源供应系统等技术开展交流分享;与会钢铁企业、节能服务公司介绍了铁前节能、钢轧节能等节能技术和装备的应用实践及前景等。。',
|
||||
department: '科技日报',
|
||||
date: '2024-4-5'
|
||||
}
|
||||
],
|
||||
repairItem: [
|
||||
{
|
||||
imgs: require('@/assets/images/3.jpg'),
|
||||
title: '矿山如何生态修复?山东这样做',
|
||||
content:
|
||||
'“三北”地区是我国重要的生态安全屏障,约占国土面积的1/3,草原固碳增汇潜力巨大。同时,“三北”地区也因丰富的矿产资源承载着不少露天矿山开发活动,主要集中在草原区、荒漠区和丘陵区等地区,导致原本就脆弱的草原生态环境进一步恶化。因此,深入推进“三北”地区矿山生态修复,恢复和强化矿山生态系统的碳汇功能,成为“三北”地区需要解决的问题。',
|
||||
department: '中国环境',
|
||||
date: '2024-4-5'
|
||||
},
|
||||
{
|
||||
imgs: require('@/assets/images/3.jpg'),
|
||||
title: '矿山如何生态修复?山东这样做',
|
||||
content:
|
||||
'“三北”地区是我国重要的生态安全屏障,约占国土面积的1/3,草原固碳增汇潜力巨大。同时,“三北”地区也因丰富的矿产资源承载着不少露天矿山开发活动,主要集中在草原区、荒漠区和丘陵区等地区,导致原本就脆弱的草原生态环境进一步恶化。因此,深入推进“三北”地区矿山生态修复,恢复和强化矿山生态系统的碳汇功能,成为“三北”地区需要解决的问题。',
|
||||
department: '中国环境',
|
||||
date: '2024-4-5'
|
||||
},
|
||||
{
|
||||
imgs: require('@/assets/images/3.jpg'),
|
||||
title: '矿山如何生态修复?山东这样做',
|
||||
content:
|
||||
'“三北”地区是我国重要的生态安全屏障,约占国土面积的1/3,草原固碳增汇潜力巨大。同时,“三北”地区也因丰富的矿产资源承载着不少露天矿山开发活动,主要集中在草原区、荒漠区和丘陵区等地区,导致原本就脆弱的草原生态环境进一步恶化。因此,深入推进“三北”地区矿山生态修复,恢复和强化矿山生态系统的碳汇功能,成为“三北”地区需要解决的问题。',
|
||||
department: '中国环境',
|
||||
date: '2024-4-5'
|
||||
},
|
||||
{
|
||||
imgs: require('@/assets/images/3.jpg'),
|
||||
title: '矿山如何生态修复?山东这样做',
|
||||
content:
|
||||
'“三北”地区是我国重要的生态安全屏障,约占国土面积的1/3,草原固碳增汇潜力巨大。同时,“三北”地区也因丰富的矿产资源承载着不少露天矿山开发活动,主要集中在草原区、荒漠区和丘陵区等地区,导致原本就脆弱的草原生态环境进一步恶化。因此,深入推进“三北”地区矿山生态修复,恢复和强化矿山生态系统的碳汇功能,成为“三北”地区需要解决的问题。',
|
||||
department: '中国环境',
|
||||
date: '2024-4-5'
|
||||
},
|
||||
{
|
||||
imgs: require('@/assets/images/3.jpg'),
|
||||
title: '矿山如何生态修复?山东这样做',
|
||||
content:
|
||||
'“三北”地区是我国重要的生态安全屏障,约占国土面积的1/3,草原固碳增汇潜力巨大。同时,“三北”地区也因丰富的矿产资源承载着不少露天矿山开发活动,主要集中在草原区、荒漠区和丘陵区等地区,导致原本就脆弱的草原生态环境进一步恶化。因此,深入推进“三北”地区矿山生态修复,恢复和强化矿山生态系统的碳汇功能,成为“三北”地区需要解决的问题。',
|
||||
department: '中国环境',
|
||||
date: '2024-4-5'
|
||||
},
|
||||
{
|
||||
imgs: require('@/assets/images/3.jpg'),
|
||||
title: '矿山如何生态修复?山东这样做',
|
||||
content:
|
||||
'“三北”地区是我国重要的生态安全屏障,约占国土面积的1/3,草原固碳增汇潜力巨大。同时,“三北”地区也因丰富的矿产资源承载着不少露天矿山开发活动,主要集中在草原区、荒漠区和丘陵区等地区,导致原本就脆弱的草原生态环境进一步恶化。因此,深入推进“三北”地区矿山生态修复,恢复和强化矿山生态系统的碳汇功能,成为“三北”地区需要解决的问题。',
|
||||
department: '中国环境',
|
||||
date: '2024-4-5'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.message {
|
||||
width: 1300px;
|
||||
height: 800px;
|
||||
margin: 10px auto;
|
||||
|
||||
.message-left {
|
||||
width: 900px;
|
||||
height: 800px;
|
||||
float: left;
|
||||
|
||||
.news-item,
|
||||
.energy-item,
|
||||
.repair-item {
|
||||
width: 880px;
|
||||
height: 180px;
|
||||
padding: 5px 0 20px 0;
|
||||
margin-bottom: 15px;
|
||||
border-bottom: 2px solid #ccc;
|
||||
|
||||
img {
|
||||
float: left;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 14px;
|
||||
color: gray;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: normal;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.issue {
|
||||
margin-top: 80px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.message-right {
|
||||
width: 400px;
|
||||
height: 800px;
|
||||
float: left;
|
||||
background-color: palevioletred;
|
||||
margin-top: 38px;
|
||||
}
|
||||
}
|
||||
|
||||
.news-item:hover h3 {
|
||||
transition: all 0.5s ease;
|
||||
color: #28905a;
|
||||
}
|
||||
</style>
|
||||
41
src/views/environment/projectCase/index.vue
Normal file
@ -0,0 +1,41 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-menu
|
||||
:default-active="activeIndex"
|
||||
class="el-menu-demo"
|
||||
mode="horizontal"
|
||||
background-color="#545c64"
|
||||
text-color="#fff"
|
||||
active-text-color="#ffd04b"
|
||||
>
|
||||
<el-menu-item index="1">
|
||||
<router-link to="/index">首页</router-link>
|
||||
</el-menu-item>
|
||||
<el-menu-item index="2">
|
||||
<router-link to="/scheme">解决方案</router-link>
|
||||
</el-menu-item>
|
||||
<el-menu-item index="3">
|
||||
<router-link to="/projectCase">工程案例</router-link>
|
||||
</el-menu-item>
|
||||
<el-menu-item index="4">
|
||||
<router-link to="journalism">新闻资讯</router-link>
|
||||
</el-menu-item>
|
||||
</el-menu>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'projectCase',
|
||||
data () {
|
||||
return {
|
||||
activeIndex: '3'
|
||||
}
|
||||
},
|
||||
methods: {}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
152
src/views/environment/scheme/details.vue
Normal file
@ -0,0 +1,152 @@
|
||||
<template>
|
||||
<div class="details">
|
||||
<div class="nav">
|
||||
<el-breadcrumb separator-class="el-icon-arrow-right">
|
||||
<el-breadcrumb-item :to="{ path: '/index' }">首页</el-breadcrumb-item>
|
||||
<el-breadcrumb-item :to="{ path: '/scheme' }"
|
||||
>环境治理</el-breadcrumb-item
|
||||
>
|
||||
<el-breadcrumb-item>治理详情</el-breadcrumb-item>
|
||||
</el-breadcrumb>
|
||||
</div>
|
||||
<div class="home-details">
|
||||
<el-carousel :interval="3000" arrow="always" type="card">
|
||||
<el-carousel-item v-for="(item, index) in carouselItems" :key="index">
|
||||
<img
|
||||
:src="item.image"
|
||||
:alt="item.description"
|
||||
style="width: 100%; height: auto"
|
||||
/>
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
</div>
|
||||
<div class="lift">
|
||||
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="sludge" v-for="(item, index) in sludgeItem" :key="index">
|
||||
<p class="title">{{ item.title }}</p>
|
||||
<div class="sludge-content">
|
||||
<img :src="item.imgs">
|
||||
<div class="left-con">
|
||||
<h3>简介</h3>
|
||||
<hr>
|
||||
<p>{{ item.content }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'detaiLs',
|
||||
data () {
|
||||
return {
|
||||
carouselItems: [
|
||||
{
|
||||
image: require('@/assets/images/1.jpg')
|
||||
},
|
||||
{
|
||||
image: require('@/assets/images/2.jpg')
|
||||
},
|
||||
{
|
||||
image: require('@/assets/images/3.jpg')
|
||||
},
|
||||
{
|
||||
image: require('@/assets/images/4.jpg')
|
||||
}
|
||||
],
|
||||
sludgeItem: [
|
||||
{
|
||||
title: '市政污泥全流程处理方案',
|
||||
content: 'jkdlbguilersgurseghusrbiuabguiarbgslriagbusbgurislgbaulgbuawgbw',
|
||||
imgs: require('@/assets/images/1.jpg')
|
||||
},
|
||||
{
|
||||
title: '市政污泥全流程处理方案',
|
||||
content: 'jkdlbguilersgurseghusrbiuabguiarbgslriagbusbgurislgbaulgbuawgbw',
|
||||
imgs: require('@/assets/images/2.jpg')
|
||||
},
|
||||
{
|
||||
title: '市政污泥全流程处理方案',
|
||||
content: 'jkdlbguilersgurseghusrbiuabguiarbgslriagbusbgurislgbaulgbuawgbw',
|
||||
imgs: require('@/assets/images/3.jpg')
|
||||
},
|
||||
{
|
||||
title: '市政污泥全流程处理方案',
|
||||
content: 'jkdlbguilersgurseghusrbiuabguiarbgslriagbusbgurislgbaulgbuawgbw',
|
||||
imgs: require('@/assets/images/4.jpg')
|
||||
},
|
||||
{
|
||||
title: '市政污泥全流程处理方案',
|
||||
content: 'jkdlbguilersgurseghusrbiuabguiarbgslriagbusbgurislgbaulgbuawgbw',
|
||||
imgs: require('@/assets/images/heliu.jpg')
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.nav {
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
|
||||
.el-breadcrumb {
|
||||
line-height: 50px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.lift{
|
||||
width: 200px;
|
||||
height: 600px;
|
||||
border: 1px solid black;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 1500px;
|
||||
height: 800px;
|
||||
margin: auto;
|
||||
position: relative;
|
||||
|
||||
.sludge{
|
||||
width: 1200px;
|
||||
height: 300px;
|
||||
margin: 30px auto;
|
||||
|
||||
.title{
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
img{
|
||||
width: 300px;
|
||||
height: 250px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.left-con{
|
||||
float: left;
|
||||
width: 800px;
|
||||
height: 150px;
|
||||
margin: 50px 0 0 10px;
|
||||
}
|
||||
h3{
|
||||
color: palegreen;
|
||||
}
|
||||
hr{
|
||||
width: 150px;
|
||||
margin: 10px 0 10px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
203
src/views/environment/scheme/index.vue
Normal file
@ -0,0 +1,203 @@
|
||||
<template>
|
||||
<div class="environment">
|
||||
<div class="nav">
|
||||
<el-menu
|
||||
:default-active="activeIndex"
|
||||
class="el-menu-demo"
|
||||
mode="horizontal"
|
||||
background-color="#545c64"
|
||||
text-color="#fff"
|
||||
active-text-color="#ffd04b"
|
||||
>
|
||||
<el-menu-item index="1">
|
||||
<router-link to="/index">首页</router-link>
|
||||
</el-menu-item>
|
||||
|
||||
<el-menu-item index="2">
|
||||
<router-link to="/scheme">解决方案</router-link>
|
||||
</el-menu-item>
|
||||
<el-menu-item index="3">
|
||||
<router-link to="/projectCase">工程案例</router-link>
|
||||
</el-menu-item>
|
||||
<el-menu-item index="4">
|
||||
<router-link to="journalism">新闻资讯</router-link>
|
||||
</el-menu-item>
|
||||
</el-menu>
|
||||
</div>
|
||||
<div class="home-scheme">
|
||||
<el-carousel :interval="3000" arrow="always" type="card">
|
||||
<el-carousel-item v-for="(item, index) in carouselItems" :key="index">
|
||||
<img
|
||||
:src="item.image"
|
||||
:alt="item.description"
|
||||
style="width: 100%; height: auto"
|
||||
/>
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
</div>
|
||||
<div class="scheme">
|
||||
<div class="details" v-for="(item, index) in schemeItem" :key="index">
|
||||
<h3>
|
||||
{{ item.title }}<br />
|
||||
{{ item.title2 }}<br />
|
||||
{{ item.title3 }}
|
||||
</h3>
|
||||
<router-link to="/details">
|
||||
<button>详情></button>
|
||||
</router-link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'HoMe',
|
||||
data () {
|
||||
return {
|
||||
activeIndex: '2',
|
||||
carouselItems: [
|
||||
{
|
||||
image: require('@/assets/images/1.jpg')
|
||||
},
|
||||
{
|
||||
image: require('@/assets/images/2.jpg')
|
||||
},
|
||||
{
|
||||
image: require('@/assets/images/3.jpg')
|
||||
},
|
||||
{
|
||||
image: require('@/assets/images/4.jpg')
|
||||
}
|
||||
],
|
||||
schemeItem: [
|
||||
{
|
||||
title: '市政污泥',
|
||||
title2: '全流程处理方案',
|
||||
title3: 'MUNICIPAL SLUDGE'
|
||||
},
|
||||
{
|
||||
title: '河流湖泊',
|
||||
title2: '黑臭水治理方案',
|
||||
title3: 'RIVERS AND LAKES'
|
||||
},
|
||||
{
|
||||
title: '垃圾渗滤液',
|
||||
title2: '治理方案',
|
||||
title3: 'LANDFILL LEACHATE'
|
||||
},
|
||||
{
|
||||
title: '设备研发',
|
||||
title2: '集成服务',
|
||||
title3: 'EQUIPMENT R & D'
|
||||
},
|
||||
{
|
||||
title: '移动式固液',
|
||||
title2: '分离处理方案',
|
||||
title3: 'SOLID LIQUOR SEPARATION'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.home-scheme {
|
||||
width: 1800px;
|
||||
margin: auto;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.scheme {
|
||||
width: 1200px;
|
||||
height: 700px;
|
||||
margin: auto;
|
||||
|
||||
.details {
|
||||
width: 300px;
|
||||
height: 350px;
|
||||
background: linear-gradient(to bottom right, red, yellow);
|
||||
float: left;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.details::before {
|
||||
background-image: url(../../../assets/images/shizheng.jpg);
|
||||
}
|
||||
|
||||
.details::before,
|
||||
.details:nth-child(2)::before,
|
||||
.details:nth-child(3)::before,
|
||||
.details:nth-child(4)::before,
|
||||
.details:nth-child(5)::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-size: cover;
|
||||
opacity: 0.5;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.details:nth-child(2) {
|
||||
width: 600px;
|
||||
background: linear-gradient(
|
||||
to bottom right,
|
||||
rgba(13, 223, 238, 0.87),
|
||||
rgb(32, 230, 137)
|
||||
);
|
||||
}
|
||||
|
||||
.details:nth-child(2)::before {
|
||||
background-image: url(../../../assets/images/heliu.jpg);
|
||||
}
|
||||
|
||||
.details:nth-child(3) {
|
||||
float: right;
|
||||
margin-top: 150px;
|
||||
background-color: rgb(0, 255, 0);
|
||||
}
|
||||
|
||||
.details:nth-child(3)::before {
|
||||
background-image: url(../../../assets/images/xunhuan.jpg);
|
||||
}
|
||||
|
||||
.details:nth-child(4) {
|
||||
margin-left: 300px;
|
||||
background-color: palegreen;
|
||||
}
|
||||
|
||||
.details:nth-child(4)::before {
|
||||
background-image: url(../../../assets/images/shebei.webp);
|
||||
}
|
||||
|
||||
.details:nth-child(5) {
|
||||
background-color: palevioletred;
|
||||
}
|
||||
|
||||
.details:nth-child(5)::before {
|
||||
background-image: url(../../../assets/images/guye.webp);
|
||||
}
|
||||
|
||||
h3 {
|
||||
color: white;
|
||||
|
||||
padding: 30px;
|
||||
}
|
||||
|
||||
button {
|
||||
width: 100px;
|
||||
height: 30px;
|
||||
border: white;
|
||||
color: aliceblue;
|
||||
border-radius: 50px;
|
||||
background-color: rgba(255, 255, 255, 0.5);
|
||||
margin-left: 30px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
13
src/views/environmental/index.vue
Normal file
@ -0,0 +1,13 @@
|
||||
<template>
|
||||
<div>生态环保</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'environMental'
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
187
src/views/index.vue
Normal file
@ -0,0 +1,187 @@
|
||||
<template>
|
||||
<div class="home">
|
||||
<div class="navigationBar">
|
||||
<div class="navTitle">
|
||||
<router-link to="/">
|
||||
<img src="../assets/logo.png" alt="" />
|
||||
</router-link>
|
||||
</div>
|
||||
<div class="navUser">用户</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<img src="../assets/11.jpg" alt="" />
|
||||
</div>
|
||||
<div class="particulars">
|
||||
<div class="accordion">
|
||||
<ul>
|
||||
<li v-for="(item, index) in parItem" :key="index">
|
||||
<div class="title">
|
||||
<router-link :to="item.url">
|
||||
{{ item.title }}<br />{{ item.title2 }}<br>
|
||||
<button>查看详情</button>
|
||||
</router-link>
|
||||
</div>
|
||||
<router-link :to="item.url">
|
||||
<img :src="item.imgs" />
|
||||
</router-link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'HomeView',
|
||||
data () {
|
||||
return {
|
||||
parItem: [
|
||||
{
|
||||
title: '环境治理',
|
||||
title2: '保护和改善环境质量',
|
||||
imgs: require('@/assets/images/1.jpg'),
|
||||
url: '/scheme'
|
||||
},
|
||||
{
|
||||
title: '可持续资源开发',
|
||||
title2: '环境和社会的可持续性',
|
||||
imgs: require('@/assets/images/2.jpg'),
|
||||
url: '/resource'
|
||||
},
|
||||
{
|
||||
title: '生态环保',
|
||||
title2: '维护生态平衡',
|
||||
imgs: require('@/assets/images/3.jpg'),
|
||||
url: '/environmental'
|
||||
},
|
||||
{
|
||||
title: '清洁能源应用',
|
||||
title2: '减少环境污染',
|
||||
imgs: require('@/assets/images/4.jpg'),
|
||||
url: '/cleanEnergy'
|
||||
},
|
||||
{
|
||||
title: '清洁能源应用',
|
||||
title2: '减少环境污染',
|
||||
imgs: require('@/assets/images/1.jpg'),
|
||||
url: '/cleanEnergy'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.navigationBar {
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
border: 1px solid black;
|
||||
border-top-left-radius: 5px;
|
||||
border-top-right-radius: 5px;
|
||||
|
||||
img {
|
||||
width: 600px;
|
||||
height: 100px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.navUser {
|
||||
float: right;
|
||||
margin-right: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
img {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.particulars {
|
||||
width: 100%;
|
||||
height: 320px;
|
||||
background-color: rgba(231, 226, 226, 0.5);
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.accordion {
|
||||
width: 905px;
|
||||
height: 320px;
|
||||
overflow: hidden;
|
||||
margin: 10px auto;
|
||||
position: relative;
|
||||
box-shadow: 0 0 10px 2px rgba(0, 0, 0, 0.4);
|
||||
|
||||
ul {
|
||||
width: 3000px;
|
||||
}
|
||||
|
||||
li {
|
||||
display: block;
|
||||
width: 180px;
|
||||
height: 320px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
float: left;
|
||||
border-left: 1px solid #aaa;
|
||||
box-shadow: 0 0 25px 10px rgba(0, 0, 0, 0.4);
|
||||
-webkit-transition: all 0.5s;
|
||||
-moz-transition: all 0.5s;
|
||||
-ms-transition: all 0.5s;
|
||||
-o-transition: all 0.5s;
|
||||
transition: all 0.5s;
|
||||
}
|
||||
|
||||
li:nth-child(5){
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
li img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
ul:hover li {
|
||||
width: 40px;
|
||||
}
|
||||
|
||||
ul li:hover {
|
||||
width: 740px;
|
||||
}
|
||||
|
||||
.title {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 740px;
|
||||
height: 100px;
|
||||
background-color: rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
.title a {
|
||||
display: block;
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
button{
|
||||
width: 100px;
|
||||
height: 30px;
|
||||
background-color: rgba(255, 255, 255, 0.4);
|
||||
border: none;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
margin-top: 5px;
|
||||
border-radius: 30px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
165
src/views/login.vue
Normal file
@ -0,0 +1,165 @@
|
||||
<template>
|
||||
<div class="loginbody">
|
||||
<div class="logindata">
|
||||
<div class="logintext">
|
||||
<h2>Welcome</h2>
|
||||
</div>
|
||||
<div class="formdata">
|
||||
<el-form ref="form" :model="form" :rules="rules">
|
||||
<el-form-item prop="username">
|
||||
<el-input
|
||||
v-model="form.username"
|
||||
clearable
|
||||
placeholder="请输入账号"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="password">
|
||||
<el-input
|
||||
v-model="form.password"
|
||||
clearable
|
||||
placeholder="请输入密码"
|
||||
show-password
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="tool">
|
||||
<div>
|
||||
<el-checkbox v-model="checked" @change="remenber"
|
||||
>记住密码</el-checkbox
|
||||
>
|
||||
</div>
|
||||
<div>
|
||||
<span class="shou" @click="forgetpas">忘记密码?</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="butt">
|
||||
<el-button type="primary" @click.native.prevent="login"
|
||||
>登录</el-button
|
||||
>
|
||||
<el-button class="shou" @click="register">注册</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
export default {
|
||||
name: 'loGin',
|
||||
data () {
|
||||
return {
|
||||
form: {
|
||||
password: '',
|
||||
username: ''
|
||||
},
|
||||
checked: false,
|
||||
rules: {
|
||||
username: [
|
||||
{ required: true, message: '请输入用户名', trigger: 'blur' },
|
||||
{ max: 10, message: '不能大于10个字符', trigger: 'blur' }
|
||||
],
|
||||
password: [
|
||||
{ required: true, message: '请输入密码', trigger: 'blur' },
|
||||
{ max: 10, message: '不能大于10个字符', trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
if (localStorage.getItem('news')) {
|
||||
this.form = JSON.parse(localStorage.getItem('news'))
|
||||
this.checked = true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
login () {
|
||||
if (this.form.username === '' && this.form.password === '') {
|
||||
alert('账号或密码不能为空')
|
||||
} else {
|
||||
this.$router.push('/index')
|
||||
}
|
||||
},
|
||||
remenber (data) {
|
||||
this.checked = data
|
||||
if (this.checked) {
|
||||
localStorage.setItem('news', JSON.stringify(this.form))
|
||||
} else {
|
||||
localStorage.removeItem('news')
|
||||
}
|
||||
},
|
||||
forgetpas () {
|
||||
alert('请联系管理员')
|
||||
},
|
||||
register () {
|
||||
alert('请联系管理员')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.loginbody {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
min-width: 1000px;
|
||||
background-image: url("../assets/login.jpg");
|
||||
background-size: 100% 100%;
|
||||
background-position: center center;
|
||||
overflow: auto;
|
||||
background-repeat: no-repeat;
|
||||
position: fixed;
|
||||
line-height: 100%;
|
||||
padding-top: 150px;
|
||||
}
|
||||
|
||||
.logintext {
|
||||
margin-bottom: 20px;
|
||||
line-height: 50px;
|
||||
text-align: center;
|
||||
font-size: 30px;
|
||||
font-weight: bolder;
|
||||
color: white;
|
||||
text-shadow: 2px 2px 4px #000000;
|
||||
}
|
||||
|
||||
.logindata {
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
box-shadow: 10px 10px 5px 0px rgba(0, 0, 0, 0.3);
|
||||
width: 400px;
|
||||
height: 300px;
|
||||
padding: 30px;
|
||||
border-radius: 10px;
|
||||
transform: translate(-50%);
|
||||
margin-left: 70%;
|
||||
}
|
||||
|
||||
.tool {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
color: #606266;
|
||||
}
|
||||
|
||||
.butt {
|
||||
margin-top: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.shou {
|
||||
cursor: pointer;
|
||||
color: #606266;
|
||||
}
|
||||
|
||||
/*ui*/
|
||||
/* /deep/ .el-form-item__label {
|
||||
font-weight: bolder;
|
||||
font-size: 15px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/deep/ .el-button {
|
||||
width: 100%;
|
||||
margin-bottom: 10px;
|
||||
|
||||
} */
|
||||
</style>
|
||||
13
src/views/resource/index.vue
Normal file
@ -0,0 +1,13 @@
|
||||
<template>
|
||||
<div>资源开发</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'resouRce'
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
4
vue.config.js
Normal file
@ -0,0 +1,4 @@
|
||||
const { defineConfig } = require('@vue/cli-service')
|
||||
module.exports = defineConfig({
|
||||
transpileDependencies: true
|
||||
})
|
||||