This commit is contained in:
username 2024-04-07 14:59:47 +08:00
parent 7178deb761
commit b012a2b893
40 changed files with 11453 additions and 0 deletions

3
.browserslistrc Normal file
View File

@ -0,0 +1,3 @@
> 1%
last 2 versions
not dead

5
.editorconfig Normal file
View 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
View 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
View 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
View 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

File diff suppressed because it is too large Load Diff

36
package.json Normal file
View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

17
public/index.html Normal file
View 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
View File

@ -0,0 +1,9 @@
<template>
<div id="app">
<router-view />
</div>
</template>
<style lang="less">
</style>

BIN
src/assets/11.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

BIN
src/assets/images/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
src/assets/images/2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
src/assets/images/3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
src/assets/images/4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
src/assets/images/guye.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
src/assets/images/heliu.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
src/assets/login.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

BIN
src/assets/login3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

BIN
src/assets/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View 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
View 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;
}

View 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%);
}

View 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
View 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
View 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
View 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: {
}
})

View File

@ -0,0 +1,13 @@
<template>
<div>清洁能源</div>
</template>
<script>
export default {
name: 'cleanEnergy'
}
</script>
<style>
</style>

View 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 }}&nbsp;&nbsp;|&nbsp;&nbsp;<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 }}&nbsp;&nbsp;|&nbsp;&nbsp;<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 }}&nbsp;&nbsp;|&nbsp;&nbsp;<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>

View 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>

View 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>

View 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>

View File

@ -0,0 +1,13 @@
<template>
<div>生态环保</div>
</template>
<script>
export default {
name: 'environMental'
}
</script>
<style>
</style>

187
src/views/index.vue Normal file
View 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
View 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>

View File

@ -0,0 +1,13 @@
<template>
<div>资源开发</div>
</template>
<script>
export default {
name: 'resouRce'
}
</script>
<style>
</style>

4
vue.config.js Normal file
View File

@ -0,0 +1,4 @@
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
transpileDependencies: true
})