This commit is contained in:
张成
2025-08-25 14:08:12 +08:00
parent 3f43eb15ca
commit a993c55d3f
16 changed files with 1577 additions and 602 deletions

View File

@@ -50,7 +50,6 @@ src/
├── components/ # 组件目录 ├── components/ # 组件目录
│ ├── ihead.vue # 现代化头部组件 │ ├── ihead.vue # 现代化头部组件
│ ├── ifooter.vue # 现代化页脚组件 │ ├── ifooter.vue # 现代化页脚组件
│ └── leftMenu.vue # 左侧菜单组件
├── views/ # 页面目录 ├── views/ # 页面目录
│ ├── index.vue # 升级后的首页 │ ├── index.vue # 升级后的首页
│ └── aboutUs/ # 关于我们页面 │ └── aboutUs/ # 关于我们页面
@@ -123,7 +122,7 @@ npm run build
```css ```css
:root { :root {
--primary-color: #3498db; --primary-color: #3498db;
--secondary-color: #9b59b6; --secondary-color: #3498db;
--success-color: #27ae60; --success-color: #27ae60;
--warning-color: #f39c12; --warning-color: #f39c12;
--danger-color: #e74c3c; --danger-color: #e74c3c;

View File

@@ -2010,7 +2010,7 @@ body {
.progress-bar { .progress-bar {
height: 100%; height: 100%;
background: linear-gradient(90deg, #3498db, #9b59b6); background: linear-gradient(90deg, #3498db, #2980b9);
border-radius: 4px; border-radius: 4px;
transition: width 0.3s ease; transition: width 0.3s ease;
} }

View File

@@ -2,7 +2,6 @@ import Vue from 'vue'
import ihead from './components/ihead.vue' import ihead from './components/ihead.vue'
import ifooter from './components/ifooter.vue' import ifooter from './components/ifooter.vue'
import icontent from './components/icontent.vue' import icontent from './components/icontent.vue'
import leftMenu from './components/leftMenu.vue'
import VueAwesomeSwiper from 'vue-awesome-swiper' import VueAwesomeSwiper from 'vue-awesome-swiper'
class Component { class Component {
@@ -11,7 +10,6 @@ class Component {
Vue.component("ihead", ihead); Vue.component("ihead", ihead);
Vue.component("ifooter", ifooter); Vue.component("ifooter", ifooter);
Vue.component("icontent", icontent); Vue.component("icontent", icontent);
Vue.component("leftMenu", leftMenu);
// 注册Swiper组件 // 注册Swiper组件
Vue.use(VueAwesomeSwiper); Vue.use(VueAwesomeSwiper);

View File

@@ -2,7 +2,7 @@
<div> <div>
<div class="header bottomShadow" :class="{ 'mini': isMiniHeader }"> <div class="header bottomShadow" :class="{ 'mini': isMiniHeader }">
<div class="content pageWidth"> <div class="content pageWidth">
<!-- 主要导航区域 --> <!-- 主要导航区域 -->
<div class="bottom desktop"> <div class="bottom desktop">
<div class="nav-container"> <div class="nav-container">
@@ -13,17 +13,13 @@
<nav class="mainMenu"> <nav class="mainMenu">
<div class="nav-item" v-for="menu in menus" :key="menu.name"> <div class="nav-item" v-for="menu in menus" :key="menu.name">
<router-link :to="menu.url" class="nav-link"> <router-link :to="menu.url" class="nav-link">
{{menu.name}} {{ menu.name }}
<span v-if="menu.child.length>0" class="downCaret"></span> <span v-if="menu.child.length > 0" class="downCaret"></span>
</router-link> </router-link>
<div class="dropDown bottomShadowSegment" v-if="menu.child.length>0"> <div class="dropDown bottomShadowSegment" v-if="menu.child.length > 0">
<router-link <router-link :to="sonMenu.url" v-for="sonMenu in menu.child" :key="sonMenu.name"
:to="sonMenu.url" class="dropdown-item">
v-for="sonMenu in menu.child" {{ sonMenu.name }}
:key="sonMenu.name"
class="dropdown-item"
>
{{sonMenu.name}}
</router-link> </router-link>
</div> </div>
</div> </div>
@@ -44,18 +40,18 @@
</div> </div>
</div> </div>
</div> </div>
<!-- 移动端菜单 --> <!-- 移动端菜单 -->
<div id="mobileMenu" class="headerMobileMenu bread"> <div id="mobileMenu" class="headerMobileMenu bread">
<div class="menuDummy"></div> <div class="menuDummy"></div>
<div class="menuContent"> <div class="menuContent">
<ul> <ul>
<li v-for="menu in menus" :key="menu.name"> <li v-for="menu in menus" :key="menu.name">
<router-link :to="menu.url" v-if="menu.name=='首页'">{{menu.name}}</router-link> <router-link :to="menu.url" v-if="menu.child.length === 0">{{ menu.name }}</router-link>
<label v-else class="hasSubmenu" style="display:block;">{{menu.name}}</label> <label v-else class="hasSubmenu" style="display:block;">{{ menu.name }}</label>
<ul class="subMenu" v-if="menu.child.length>0"> <ul class="subMenu" v-if="menu.child.length > 0">
<li v-for="sonMenu in menu.child" :key="sonMenu.name"> <li v-for="sonMenu in menu.child" :key="sonMenu.name">
<router-link class="hasSubmenu" :to="sonMenu.url">{{sonMenu.name}}</router-link> <router-link class="hasSubmenu" :to="sonMenu.url">{{ sonMenu.name }}</router-link>
</li> </li>
</ul> </ul>
</li> </li>
@@ -88,18 +84,18 @@ export default {
}, },
{ {
name: '关于我们', name: '关于我们',
url: '/aboutUs/aboutUs', url: '/aboutUs',
child: [] child: []
}, },
{ {
name: '我们的方案', name: '我们的方案',
url: '/ourPlan/ourPlan', url: '/ourPlan',
child: [ child: [
{ name: 'AI集成', url: '/ourPlan/aiSolutions' },
{ name: '智能建筑', url: '/ourPlan/estateManagement' }, { name: '智能建筑', url: '/ourPlan/estateManagement' },
{ name: '物联网', url: '/ourPlan/iot' }, { name: '物联网', url: '/ourPlan/iot' },
{ name: '设施管理', url: '/ourPlan/facilityManagement' }, { name: '设施管理', url: '/ourPlan/facilityManagement' },
{ name: 'AI解决方案', url: '/ourPlan/aiSolutions' }, { name: '系统集成', url: '/ourPlan/technologyIntegration' }
{ name: '技术集成', url: '/ourPlan/technologyIntegration' }
] ]
}, },
@@ -175,18 +171,18 @@ export default {
this.toggle_class("mobileMenu", "active", true); this.toggle_class("mobileMenu", "active", true);
}, true); }, true);
// 返回按钮 // 返回按钮
this.add_event_listener(".linkGoBack", "click", () => { this.add_event_listener(".linkGoBack", "click", () => {
this.remove_class("mobileMenu", "active", true); this.remove_class("mobileMenu", "active", true);
// 关闭移动端菜单后滚动到顶部 // 关闭移动端菜单后滚动到顶部
window.scrollTo({ window.scrollTo({
top: 0, top: 0,
left: 0, left: 0,
behavior: 'smooth' behavior: 'smooth'
}); });
}); });
}, },
initScrollListener() { initScrollListener() {
window.addEventListener('scroll', () => { window.addEventListener('scroll', () => {
if (window.pageYOffset > 200) { if (window.pageYOffset > 200) {
@@ -230,7 +226,7 @@ export default {
z-index: 1000 !important; z-index: 1000 !important;
background: rgba(255, 255, 255, 0.95) !important; background: rgba(255, 255, 255, 0.95) !important;
backdrop-filter: blur(10px) !important; backdrop-filter: blur(10px) !important;
transition: all var(--transition-speed) ease !important; transition: all 0.3s ease !important;
border-bottom: 1px solid rgba(0, 0, 0, 0.1) !important; border-bottom: 1px solid rgba(0, 0, 0, 0.1) !important;
/* 覆盖旧表格布局 */ /* 覆盖旧表格布局 */
display: block !important; display: block !important;
@@ -239,68 +235,7 @@ export default {
.header.mini { .header.mini {
background: rgba(255, 255, 255, 0.98) !important; background: rgba(255, 255, 255, 0.98) !important;
box-shadow: var(--shadow-light) !important; box-shadow: 0 2px 20px rgba(0, 0, 0, 0.1) !important;
}
/* 顶部联系信息 - 覆盖旧样式 */
.top {
background: linear-gradient(135deg, #2c3e50 0%, #34495e 100%) !important;
padding: 8px 0 !important;
/* 覆盖旧表格布局 */
display: block !important;
height: auto !important;
text-align: left !important;
}
.contact-info {
display: flex;
justify-content: space-between;
align-items: center;
color: white;
}
.contact-item {
display: flex;
align-items: center;
gap: 8px;
transition: opacity 0.3s ease;
}
.contact-item:hover {
opacity: 0.8;
}
.contact-item a {
color: white;
text-decoration: none;
font-size: 14px;
}
.inlineTextIcon {
width: 16px;
height: 16px;
filter: brightness(0) invert(1);
}
/* 搜索框 */
.search {
background: rgba(255, 255, 255, 0.2);
border: 1px solid rgba(255, 255, 255, 0.3);
border-radius: 20px;
padding: 6px 15px;
color: white;
font-size: 14px;
transition: all 0.3s ease;
}
.search::placeholder {
color: rgba(255, 255, 255, 0.7);
}
.search:focus {
background: rgba(255, 255, 255, 0.3);
border-color: rgba(255, 255, 255, 0.5);
outline: none;
} }
/* 主要导航区域 - 覆盖旧样式 */ /* 主要导航区域 - 覆盖旧样式 */
@@ -313,8 +248,14 @@ export default {
.nav-container { .nav-container {
display: flex; display: flex;
justify-content: space-between; justify-content: flex-start;
align-items: center; align-items: center;
width: 100%;
}
.logoCell {
flex-shrink: 0;
margin-right: 40px;
} }
.logoCell .logo { .logoCell .logo {
@@ -326,10 +267,18 @@ export default {
transform: scale(1.05); transform: scale(1.05);
} }
.mainMenuCell {
flex: 1;
display: flex;
justify-content: flex-start;
}
/* 主导航菜单 */ /* 主导航菜单 */
.mainMenu { .mainMenu {
display: flex; display: flex;
gap: 0; gap: 0;
justify-content: flex-start;
align-items: center;
} }
.nav-item { .nav-item {
@@ -344,8 +293,9 @@ export default {
font-weight: 500; font-weight: 500;
font-size: 16px; font-size: 16px;
transition: all 0.3s ease; transition: all 0.3s ease;
border-radius: var(--border-radius); border-radius: 8px;
position: relative; position: relative;
white-space: nowrap;
} }
.nav-link:hover { .nav-link:hover {
@@ -373,15 +323,16 @@ export default {
.dropDown { .dropDown {
position: absolute; position: absolute;
top: 100%; top: 100%;
left: 0; left: 50%;
transform: translateX(-50%);
background: white; background: white;
border-radius: var(--border-radius); border-radius: 8px;
box-shadow: var(--shadow-medium); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
padding: 15px 0; padding: 15px 0;
min-width: 200px; min-width: 200px;
opacity: 0; opacity: 0;
visibility: hidden; visibility: hidden;
transform: translateY(-10px); transform: translateX(-50%) translateY(-10px);
transition: all 0.3s ease; transition: all 0.3s ease;
border: 1px solid rgba(0, 0, 0, 0.1); border: 1px solid rgba(0, 0, 0, 0.1);
} }
@@ -389,7 +340,7 @@ export default {
.nav-item:hover .dropDown { .nav-item:hover .dropDown {
opacity: 1; opacity: 1;
visibility: visible; visibility: visible;
transform: translateY(0); transform: translateX(-50%) translateY(0);
} }
.dropdown-item { .dropdown-item {
@@ -399,6 +350,7 @@ export default {
text-decoration: none; text-decoration: none;
transition: all 0.3s ease; transition: all 0.3s ease;
border-radius: 0; border-radius: 0;
text-align: center;
} }
.dropdown-item:hover { .dropdown-item:hover {
@@ -412,6 +364,7 @@ export default {
display: inline-block; display: inline-block;
margin-left: 5px; margin-left: 5px;
transition: transform 0.3s ease; transition: transform 0.3s ease;
font-size: 12px;
} }
.nav-item:hover .downCaret { .nav-item:hover .downCaret {
@@ -480,8 +433,8 @@ export default {
color: #2c3e50; color: #2c3e50;
text-decoration: none; text-decoration: none;
font-weight: 500; font-weight: 500;
border-radius: var(--border-radius); border-radius: 8px;
transition: all var(--transition-speed) ease; transition: all 0.3s ease;
} }
.menuContent a:hover, .menuContent a:hover,
@@ -515,267 +468,77 @@ export default {
color: #3498db; color: #3498db;
} }
/* 现代响应式设计 - 使用容器查询和逻辑属性 */ /* 响应式设计 */
/* 基础响应式容器 */ @media (max-width: 768px) {
.header {
container-type: inline-size;
container-name: header;
}
/* 使用容器查询替代媒体查询 */
@container header (max-width: 768px) {
.desktop { .desktop {
display: none !important; display: none !important;
} }
.mobile { .mobile {
display: block !important; display: block !important;
} }
.contact-info {
flex-direction: column !important;
gap: 10px !important;
align-items: flex-start !important;
}
.searchContainer {
width: 100% !important;
margin-top: 10px !important;
}
.search {
width: 100% !important;
margin-left: 0 !important;
}
/* 移动端头部高度调整 */
.header {
height: auto !important;
}
.header .content { .header .content {
padding: 0 1em !important; padding: 0 1em !important;
} }
body {
padding-top: 100px !important;
}
.nav-container {
gap: 1rem !important;
}
} }
@container header (min-width: 769px) { @media (min-width: 769px) {
.mobile { .mobile {
display: none !important; display: none !important;
} }
.desktop { .desktop {
display: block !important; display: block !important;
} }
}
/* 使用逻辑属性实现更好的国际化支持 */ .nav-container {
.header .content { gap: 2rem;
padding-inline: 3em;
padding-block: 0;
}
@media (max-width: 768px) {
.header .content {
padding-inline: 1em;
} }
} }
/* 使用 CSS Grid 实现更灵活的布局 */ @media (max-width: 1200px) {
.nav-container {
display: grid;
grid-template-columns: auto 1fr;
gap: 2rem;
align-items: center;
}
@container header (max-width: 768px) {
.nav-container { .nav-container {
grid-template-columns: 1fr auto;
gap: 1rem; gap: 1rem;
} }
}
/* 使用 CSS 自定义属性实现主题切换 */ .nav-link {
:root { padding: 12px 20px;
--header-bg: rgba(255, 255, 255, 0.95); font-size: 15px;
--header-border: rgba(0, 0, 0, 0.1);
--nav-hover-bg: rgba(52, 152, 219, 0.1);
--nav-hover-color: #3498db;
}
/* 深色主题支持 */
@media (prefers-color-scheme: dark) {
:root {
--header-bg: rgba(30, 30, 30, 0.95);
--header-border: rgba(255, 255, 255, 0.1);
--nav-hover-bg: rgba(52, 152, 219, 0.2);
} }
} }
/* 使用 CSS 自定义属性 */ @media (max-width: 1024px) {
.header { .nav-link {
background: var(--header-bg) !important; padding: 10px 15px;
border-bottom: 1px solid var(--header-border) !important; font-size: 14px;
}
.nav-link:hover {
background: var(--nav-hover-bg) !important;
color: var(--nav-hover-color) !important;
}
/* 现代动画效果 - 使用 CSS 自定义属性和性能优化 */
@keyframes slideDown {
from {
opacity: 0;
transform: translateY(-20px);
} }
to {
opacity: 1; .logoCell .logo {
transform: translateY(0); height: 45px;
} }
} }
/* 使用 will-change 优化动画性能 */ /* 确保内容不被遮挡 */
.nav-item {
will-change: transform, opacity;
}
/* 使用 CSS 自定义属性控制动画延迟 */
.nav-item {
animation: slideDown 0.5s ease forwards;
animation-delay: calc(var(--animation-index, 0) * 0.1s);
}
/* 使用 CSS 计数器自动生成动画延迟 */
.nav-item:nth-child(1) { --animation-index: 1; }
.nav-item:nth-child(2) { --animation-index: 2; }
.nav-item:nth-child(3) { --animation-index: 3; }
.nav-item:nth-child(4) { --animation-index: 4; }
/* 使用 CSS 逻辑属性实现更好的动画方向 */
@keyframes slideInFromStart {
from {
opacity: 0;
transform: translateX(-20px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
/* 支持 RTL 的动画 */
[dir="rtl"] .nav-item {
animation: slideInFromStart 0.5s ease forwards;
}
/* 使用现代 CSS 实现内容间距 */
/* 使用 CSS 自定义属性定义头部高度 */
:root {
--header-height: 120px;
--header-height-mobile: 100px;
/* 添加更多主题变量 */
--transition-speed: 0.3s;
--border-radius: 8px;
--shadow-light: 0 2px 20px rgba(0, 0, 0, 0.1);
--shadow-medium: 0 10px 30px rgba(0, 0, 0, 0.15);
}
/* 容器查询回退方案 - 为不支持容器查询的浏览器提供媒体查询 */
@supports not (container-type: inline-size) {
@media (max-width: 768px) {
.desktop {
display: none !important;
}
.mobile {
display: block !important;
}
.contact-info {
flex-direction: column !important;
gap: 10px !important;
align-items: flex-start !important;
}
.searchContainer {
width: 100% !important;
margin-top: 10px !important;
}
.search {
width: 100% !important;
margin-left: 0 !important;
}
.header {
height: auto !important;
}
.header .content {
padding: 0 1em !important;
}
body {
padding-top: 100px !important;
}
.nav-container {
grid-template-columns: 1fr auto !important;
gap: 1rem !important;
}
}
@media (min-width: 769px) {
.mobile {
display: none !important;
}
.desktop {
display: block !important;
}
}
}
/* 使用逻辑属性确保内容不被遮挡 */
body { body {
padding-block-start: var(--header-height) !important; padding-top: 120px !important;
}
/* 使用容器查询替代媒体查询 */
@container header (max-width: 768px) {
body {
padding-block-start: var(--header-height-mobile) !important;
}
}
/* 使用 CSS 逻辑属性实现更好的 RTL 支持 */
.header {
inset-block-start: 0;
inset-inline: 0;
}
/* 使用 CSS 逻辑属性实现更好的间距 */
.contact-info {
gap: 1rem;
} }
/* 使用逻辑属性实现更好的间距 */
.nav-container { .nav-container {
gap: 2rem; gap: 2rem;
} }
/* 使用 CSS 逻辑属性实现更好的边框 */ /* 使用逻辑属性实现更好的边框 */
.header { .header {
border-block-end: 1px solid var(--header-border) !important; border-bottom: 1px solid rgba(0, 0, 0, 0.1) !important;
} }
.nav-item {
animation: slideDown 0.5s ease forwards;
}
.nav-item:nth-child(1) { animation-delay: 0.1s; }
.nav-item:nth-child(2) { animation-delay: 0.2s; }
.nav-item:nth-child(3) { animation-delay: 0.3s; }
.nav-item:nth-child(4) { animation-delay: 0.4s; }
</style> </style>

View File

@@ -1,76 +0,0 @@
<template>
<div class="contentTableLeft" id="navSidebar" v-if="!isMobile">
<div id="navAccordion" class="accordion" style="opacity: 1;">
<div class="h1">
<font style="vertical-align: inherit;" v-if="curMenu">
<font style="vertical-align: inherit;"> {{curMenu.name}}</font>
</font>
</div>
<ul class="content" v-if="curMenu">
<li class="category" v-for=" sonmenu in curMenu.child" :key="sonmenu.name">
<router-link :to="sonmenu.url" :class="sonmenu.strong">
<div class="triangle"></div>
<font style="vertical-align: inherit;">
<font style="vertical-align: inherit;"> {{sonmenu.name}}</font>
</font>
</router-link>
<div class="mobileContent">
<h1> {{sonmenu.name}}</h1>
</div>
</li>
</ul>
</div>
</div>
</template>
<script>
import '../assets/css/content_pages.css';
import { common } from '../static/common';
export default {
data() {
return {
menus: window.config.menus,
isMobile: false,
curMenu: null,
curChildMenu: null,
strong: '',
};
},
created: function () {
this.Init();
},
methods: {
Init: function () {
this.isMobile = common.isMobile();
var path = this.$route.fullPath.split('/');
this.curMenu = this.menus.find((p) => {
return p.url.indexOf(path[1]) > 0;
});
this.curChildMenu = this.curMenu.child.find((p) => {
return p.url.indexOf(path[2]) > 0;
});
this.curMenu.child.map((p) => {
p.strong = 'categoryHead h2 linkProduct';
if (p.url.indexOf(path[2]) > 0) {
this.curChildMenu.strong =
'categoryHead h2 linkProduct strong';
}
});
},
},
};
</script>
<style scoped>
.contentTableLeft {
display: table;
float: left;
}
</style>

View File

@@ -1,9 +1,7 @@
import './assets/css/cookieconsent.min.css' import './assets/css/cookieconsent.min.css'
import './assets/css/common.css' import './assets/css/common.css'
import 'swiper/swiper.min.css' import 'swiper/swiper.min.css'
import './static/config.js'
import 'es6-promise/auto' import 'es6-promise/auto'
import Vue from 'vue' import Vue from 'vue'
import App from './App.vue' import App from './App.vue'
import Vuex from 'vuex' import Vuex from 'vuex'

View File

@@ -2,12 +2,7 @@ import Vue from 'vue'
import Router from "vue-router" import Router from "vue-router"
import index from './views/index' import index from './views/index'
import aboutUs from './views/aboutUs/aboutUs' import aboutUs from './views/aboutUs/aboutUs'
import ourPlan from './views/ourPlan/ourPlan' import ourPlan from './views/ourPlan/ourPlan'
import estateManagement from './views/ourPlan/estateManagement' import estateManagement from './views/ourPlan/estateManagement'
import facilityManagement from './views/ourPlan/facilityManagement' import facilityManagement from './views/ourPlan/facilityManagement'
@@ -15,9 +10,6 @@ import iot from './views/ourPlan/iot'
import aiSolutions from './views/ourPlan/aiSolutions' import aiSolutions from './views/ourPlan/aiSolutions'
import technologyIntegration from './views/ourPlan/technologyIntegration' import technologyIntegration from './views/ourPlan/technologyIntegration'
Vue.use(Router); Vue.use(Router);
const router = new Router({ const router = new Router({
@@ -36,19 +28,29 @@ const router = new Router({
path: '/aboutUs', path: '/aboutUs',
component: aboutUs component: aboutUs
}, },
{ {
path: '/ourPlan', path: '/ourPlan',
component: ourPlan, component: ourPlan
children: [ },
{ path: '', redirect: 'ourPlan' }, {
{ path: 'ourPlan', component: ourPlan }, path: '/ourPlan/estateManagement',
{ path: 'estateManagement', component: estateManagement }, component: estateManagement
{ path: 'facilityManagement', component: facilityManagement }, },
{ path: 'iot', component: iot }, {
{ path: 'aiSolutions', component: aiSolutions }, path: '/ourPlan/facilityManagement',
{ path: 'technologyIntegration', component: technologyIntegration } component: facilityManagement
] },
{
path: '/ourPlan/iot',
component: iot
},
{
path: '/ourPlan/aiSolutions',
component: aiSolutions
},
{
path: '/ourPlan/technologyIntegration',
component: technologyIntegration
}, },
{ {
path: '*', path: '*',

View File

@@ -1,57 +0,0 @@
window.config = {
menus: [{
name: "首页",
url: "/index",
child: []
},
{
name: "我们的方案",
url: "/ourPlan",
child: [{
name: "三维展示",
url: "/ourPlan/reaEstate",
},
{
name: "房地产和物业管理",
url: "/ourPlan/estateManagement",
},
{
name: "物联网iot",
url: "/ourPlan/iot",
},
{
name: "技术和集成",
url: "/ourPlan/technologyIntegration",
},
]
},
{
name: "前沿",
url: "/fulEdge",
child: [{
name: "移动解决方案",
url: "/fulEdge/mobileSolution",
},
{
name: "其他",
url: "/fulEdge/other",
}
]
},
{
name: "关于我们",
url: "/aboutUs",
child: [{
name: "与我们合作",
url: "/aboutUs/cooperateWithUs",
},
{
name: "丙维科技",
url: "/aboutUs/propystTechnology",
},
]
},
]
}

View File

@@ -351,7 +351,7 @@ export default {
transform: translateX(-50%); transform: translateX(-50%);
width: 80px; width: 80px;
height: 4px; height: 4px;
background: linear-gradient(90deg, #3498db, #9b59b6); background: linear-gradient(90deg, #3498db, #2980b9);
border-radius: 2px; border-radius: 2px;
} }

View File

@@ -91,16 +91,37 @@
</a> </a>
</div> </div>
<div id="pageBoxesContainer" class="page pageBoxes"> <!-- 产品展示区域 -->
<div class="box" v-for="product in productData" :key="product.name"> <div class="products-section">
<img width="100%" :src="product.img" /> <div class="container">
<div class="boxTableHeader"> <h2 class="section-title">核心解决方案</h2>
<div class="h2">{{product.name}}</div> <p class="section-subtitle">为不同行业提供专业的技术解决方案助力企业数字化转型</p>
</div>
<a v-if="product.isLink||product.url.indexOf('http')>-1" target="view_window" :href="product.url"></a> <div id="pageBoxesContainer" class="page pageBoxes">
<router-link v-else :to="product.url"> </router-link> <div class="box" v-for="product in productData" :key="product.name">
</div> <div class="product-image">
</div> <img width="100%" :src="product.img" />
<div class="product-overlay">
<div class="overlay-content">
<span class="view-more">了解更多</span>
</div>
</div>
</div>
<div class="boxTableHeader">
<div class="h2">{{product.name}}</div>
<div class="product-description">{{product.description}}</div>
<div class="product-tags">
<span v-for="tag in product.tags" :key="tag" class="tag">{{tag}}</span>
</div>
</div>
<a v-if="product.isLink||product.url.indexOf('http')>-1" target="view_window" :href="product.url"></a>
<router-link v-else :to="product.url"> </router-link>
</div>
</div>
</div>
</div>
<!-- 联系我们区域 --> <!-- 联系我们区域 -->
<div class="contact-section"> <div class="contact-section">
@@ -147,7 +168,6 @@ let boxbg_smartbuildings = require('../assets/img/boxbg_smartbuildings.png')
let boxbg_iot = require('../assets/img/boxbg_iot.png') let boxbg_iot = require('../assets/img/boxbg_iot.png')
let boxbg_facilitiesmanagement = require('../assets/img/boxbg_facilitiesmanagement.png') let boxbg_facilitiesmanagement = require('../assets/img/boxbg_facilitiesmanagement.png')
let boxbg_errands = require('../assets/img/boxbg_errands.png') let boxbg_errands = require('../assets/img/boxbg_errands.png')
let boxbg_propertyandrealestate = require('../assets/img/boxbg_propertyandrealestate.png')
export default { export default {
data() { data() {
@@ -230,39 +250,48 @@ export default {
features: ['系统集成服务', '定制化软件开发', '数字化转型', '技术架构设计'] features: ['系统集成服务', '定制化软件开发', '数字化转型', '技术架构设计']
} }
], ],
productData: [ productData: [
{ {
name: '智能终端', name: 'AI集成',
img: boxbg_cleaning, img: boxbg_cleaning,
url: '/超广角设备.pdf', url: '/ourPlan/aiSolutions',
isLink: true, isLink: false,
}, description: '基于人工智能技术,为企业提供智能化的业务解决方案',
{ tags: ['机器学习', '深度学习', '智能分析']
name: '智能建筑', },
img: boxbg_smartbuildings, {
url: '/IntelligentBuild', name: '智能建筑',
}, img: boxbg_smartbuildings,
{ url: '/ourPlan/estateManagement',
name: '物联网', isLink: false,
img: boxbg_iot, description: '通过先进技术打造智能化建筑环境,提升建筑管理效率',
url: '/ourPlan/iot', tags: ['BIM技术', '智能监控', '自动化管理']
}, },
{ {
name: '模型管理', name: '物联网',
img: boxbg_facilitiesmanagement, img: boxbg_iot,
url: 'http://mor.bimwe.com/', url: '/ourPlan/iot',
}, isLink: false,
{ description: '连接万物,智能互联,打造数字化未来',
name: '三维展示', tags: ['传感器网络', '数据采集', '智能分析']
img: boxbg_errands, },
url: '/ourPlan/reaEstate', {
}, name: '设施管理',
{ img: boxbg_facilitiesmanagement,
name: '智慧系统', url: '/ourPlan/facilityManagement',
img: boxbg_propertyandrealestate, isLink: false,
url: 'http://soda.bimwe.com/', description: '智能化设施管理,提升运营效率与用户体验',
}, tags: ['预防性维护', '智能调度', '成本优化']
], },
{
name: '系统集成',
img: boxbg_errands,
url: '/ourPlan/technologyIntegration',
isLink: false,
description: '专业系统整合,构建统一的企业级平台',
tags: ['API集成', '数据同步', '统一管理']
},
],
} }
}, },
@@ -350,7 +379,7 @@ export default {
transform: translateX(-50%); transform: translateX(-50%);
width: 80px; width: 80px;
height: 4px; height: 4px;
background: linear-gradient(90deg, #3498db, #9b59b6); background: linear-gradient(90deg, #3498db, #2980b9);
border-radius: 2px; border-radius: 2px;
} }
@@ -581,20 +610,155 @@ export default {
grid-template-columns: 1fr; grid-template-columns: 1fr;
} }
.company-intro, .company-intro,
.core-advantages, .core-advantages,
.business-areas, .business-areas,
.contact-section { .contact-section,
.products-section {
padding: 60px 0; padding: 60px 0;
} }
.pageBoxes {
grid-template-columns: 1fr;
gap: 20px;
}
.boxTableHeader {
padding: 20px;
}
.product-tags {
gap: 6px;
}
.tag {
font-size: 0.75rem;
padding: 3px 10px;
}
} }
/* 原有样式保持 */ /* 产品展示区域样式 */
.swiper-pagination { .products-section {
bottom: 10%; padding: 80px 0;
background: white;
} }
.pageBoxes { .pageBoxes {
margin-top: 60px; display: grid;
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
gap: 40px;
margin-top: 50px;
} }
.box {
background: white;
border-radius: 15px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
overflow: hidden;
transition: all 0.3s ease;
position: relative;
cursor: pointer;
}
.box:hover {
transform: translateY(-10px);
box-shadow: 0 20px 40px rgba(0,0,0,0.15);
}
.product-image {
position: relative;
overflow: hidden;
}
.product-image img {
transition: transform 0.3s ease;
}
.box:hover .product-image img {
transform: scale(1.05);
}
.product-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(52, 152, 219, 0.8);
display: flex;
align-items: center;
justify-content: center;
opacity: 0;
transition: opacity 0.3s ease;
}
.box:hover .product-overlay {
opacity: 1;
}
.overlay-content {
text-align: center;
color: white;
}
.view-more {
font-size: 1.2rem;
font-weight: 600;
padding: 12px 24px;
border: 2px solid white;
border-radius: 25px;
transition: all 0.3s ease;
}
.box:hover .view-more {
background: white;
color: #3498db;
}
.boxTableHeader {
padding: 25px;
text-align: center;
}
.boxTableHeader .h2 {
font-size: 1.5rem;
font-weight: 600;
color: #2c3e50;
margin-bottom: 15px;
}
.product-description {
color: #6c757d;
line-height: 1.6;
margin-bottom: 20px;
font-size: 0.95rem;
}
.product-tags {
display: flex;
flex-wrap: wrap;
gap: 8px;
justify-content: center;
}
.tag {
background: #e9ecef;
color: #495057;
padding: 4px 12px;
border-radius: 15px;
font-size: 0.8rem;
font-weight: 500;
transition: all 0.3s ease;
}
.tag:hover {
background: #3498db;
color: white;
transform: translateY(-2px);
}
/* 原有样式保持 */
.swiper-pagination {
bottom: 10%;
}
</style> </style>

View File

@@ -26,18 +26,22 @@
<h3 class="section-title">核心AI服务</h3> <h3 class="section-title">核心AI服务</h3>
<div class="ai-services"> <div class="ai-services">
<div class="service-item"> <div class="service-item">
<div class="service-icon">📊</div>
<h4>智能数据分析</h4> <h4>智能数据分析</h4>
<p>利用AI算法分析海量数据挖掘商业价值为决策提供数据支撑</p> <p>利用AI算法分析海量数据挖掘商业价值为决策提供数据支撑</p>
</div> </div>
<div class="service-item"> <div class="service-item">
<div class="service-icon">💬</div>
<h4>智能客服系统</h4> <h4>智能客服系统</h4>
<p>基于NLP技术的智能客服24/7全天候服务提升客户体验</p> <p>基于NLP技术的智能客服24/7全天候服务提升客户体验</p>
</div> </div>
<div class="service-item"> <div class="service-item">
<div class="service-icon">🔮</div>
<h4>预测性维护</h4> <h4>预测性维护</h4>
<p>通过AI预测设备故障实现预防性维护降低维护成本</p> <p>通过AI预测设备故障实现预防性维护降低维护成本</p>
</div> </div>
<div class="service-item"> <div class="service-item">
<div class="service-icon">👁</div>
<h4>智能图像识别</h4> <h4>智能图像识别</h4>
<p>计算机视觉技术实现自动化检测质量控制和安防监控</p> <p>计算机视觉技术实现自动化检测质量控制和安防监控</p>
</div> </div>
@@ -50,6 +54,28 @@
AI解决方案广泛应用于制造业金融医疗零售物流等多个行业帮助企业实现智能化升级提升核心竞争力 AI解决方案广泛应用于制造业金融医疗零售物流等多个行业帮助企业实现智能化升级提升核心竞争力
</p> </p>
</div> </div>
<div class="content-section">
<h3 class="section-title">技术架构</h3>
<div class="tech-architecture">
<div class="tech-layer">
<h4>应用层</h4>
<p>智能应用业务系统用户界面</p>
</div>
<div class="tech-layer">
<h4>算法层</h4>
<p>机器学习深度学习自然语言处理</p>
</div>
<div class="tech-layer">
<h4>数据层</h4>
<p>数据存储数据处理数据安全</p>
</div>
<div class="tech-layer">
<h4>基础设施层</h4>
<p>云计算GPU集群网络通信</p>
</div>
</div>
</div>
</div> </div>
</div> </div>
@@ -74,6 +100,8 @@ export default {
.ai-solutions-page { .ai-solutions-page {
min-height: 100vh; min-height: 100vh;
background: #f8f9fa; background: #f8f9fa;
display: flex;
flex-direction: column;
} }
.page-banner { .page-banner {
@@ -81,6 +109,7 @@ export default {
color: white; color: white;
padding: 80px 0; padding: 80px 0;
text-align: center; text-align: center;
flex-shrink: 0;
} }
.banner-title { .banner-title {
@@ -95,6 +124,7 @@ export default {
} }
.main-content { .main-content {
flex: 1;
padding: 60px 0; padding: 60px 0;
} }
@@ -126,7 +156,7 @@ export default {
.ai-services { .ai-services {
display: grid; display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 30px; gap: 30px;
margin-top: 40px; margin-top: 40px;
} }
@@ -134,20 +164,28 @@ export default {
.service-item { .service-item {
background: white; background: white;
padding: 30px; padding: 30px;
border-radius: 10px; border-radius: 15px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
text-align: center; text-align: center;
transition: transform 0.3s ease; transition: all 0.3s ease;
border: 1px solid rgba(0, 0, 0, 0.05);
} }
.service-item:hover { .service-item:hover {
transform: translateY(-5px); transform: translateY(-8px);
box-shadow: 0 15px 35px rgba(0, 0, 0, 0.15);
}
.service-icon {
font-size: 3rem;
margin-bottom: 1rem;
} }
.service-item h4 { .service-item h4 {
color: #3498db; color: #3498db;
font-size: 1.3rem; font-size: 1.3rem;
margin-bottom: 1rem; margin-bottom: 1rem;
font-weight: 600;
} }
.service-item p { .service-item p {
@@ -155,6 +193,40 @@ export default {
line-height: 1.6; line-height: 1.6;
} }
.tech-architecture {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 25px;
margin-top: 40px;
}
.tech-layer {
background: white;
padding: 25px;
border-radius: 12px;
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.08);
text-align: center;
border-left: 4px solid #3498db;
transition: transform 0.3s ease;
}
.tech-layer:hover {
transform: translateY(-5px);
}
.tech-layer h4 {
color: #2c3e50;
font-size: 1.2rem;
margin-bottom: 0.8rem;
font-weight: 600;
}
.tech-layer p {
color: #666;
line-height: 1.5;
font-size: 0.95rem;
}
@media (max-width: 768px) { @media (max-width: 768px) {
.banner-title { .banner-title {
font-size: 2rem; font-size: 2rem;
@@ -167,5 +239,17 @@ export default {
.ai-services { .ai-services {
grid-template-columns: 1fr; grid-template-columns: 1fr;
} }
.tech-architecture {
grid-template-columns: 1fr;
}
.main-content {
padding: 40px 0;
}
.content-section {
margin-bottom: 40px;
}
} }
</style> </style>

View File

@@ -1,24 +1,163 @@
<template> <template>
<div> <div class="estate-management-page">
<leftMenu> </leftMenu> <ihead></ihead>
<icontent>
<p> 房地产和物业是涵盖多个学科的专业旨在确保建筑环境的功能这是通过将人员地点流程和技术相互整合来实现的</p> <div class="page-content">
<div class="banner-section">
<p> 无论您是购买出售租赁还是翻新您的房产我们的解决方案都可以帮助您根据显示趋势和实时数据的当前图形关键指标做出明智的决策</p> <h1>智能建筑解决方案</h1>
<p>通过先进技术打造智能化建筑环境</p>
<p> 在我们的解决方案中所有功能都完全集成在一起但也可以单独使用</p> </div>
</icontent>
<div class="content-section">
<div class="intro-text">
<h2>智能建筑概述</h2>
<p>房地产和物业是涵盖多个学科的专业旨在确保建筑环境的功能这是通过将人员地点流程和技术相互整合来实现的</p>
<p>无论您是购买出售租赁还是翻新您的房产我们的解决方案都可以帮助您根据显示趋势和实时数据的当前图形关键指标做出明智的决策</p>
<p>在我们的解决方案中所有功能都完全集成在一起但也可以单独使用</p>
</div>
<div class="features-grid">
<div class="feature-card">
<h3>智能监控</h3>
<p>实时监控建筑状态包括能耗安全环境等关键指标</p>
</div>
<div class="feature-card">
<h3>自动化管理</h3>
<p>通过AI算法自动调节建筑系统提升运营效率</p>
</div>
<div class="feature-card">
<h3>数据分析</h3>
<p>深度分析建筑数据为决策提供科学依据</p>
</div>
</div>
</div>
</div>
<ifooter></ifooter>
</div> </div>
</template> </template>
<script> <script>
import ihead from '@/components/ihead.vue'
import ifooter from '@/components/ifooter.vue'
export default { export default {
data() { name: 'EstateManagement',
return {}; components: {
}, ihead,
ifooter
},
data() {
return {};
},
}; };
</script> </script>
<style scoped> <style scoped>
.estate-management-page {
min-height: 100vh;
display: flex;
flex-direction: column;
}
.page-content {
flex: 1;
padding-top: 120px;
}
.banner-section {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
text-align: center;
padding: 80px 20px;
}
.banner-section h1 {
font-size: 3rem;
margin-bottom: 20px;
font-weight: 300;
}
.banner-section p {
font-size: 1.2rem;
opacity: 0.9;
}
.content-section {
max-width: 1200px;
margin: 0 auto;
padding: 60px 20px;
}
.intro-text {
text-align: center;
margin-bottom: 60px;
}
.intro-text h2 {
font-size: 2.5rem;
color: #333;
margin-bottom: 30px;
}
.intro-text p {
font-size: 1.1rem;
line-height: 1.8;
color: #666;
margin-bottom: 20px;
max-width: 800px;
margin-left: auto;
margin-right: auto;
}
.features-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 30px;
margin-top: 60px;
}
.feature-card {
background: white;
padding: 40px 30px;
border-radius: 10px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
text-align: center;
transition: transform 0.3s ease;
}
.feature-card:hover {
transform: translateY(-5px);
}
.feature-card h3 {
font-size: 1.5rem;
color: #333;
margin-bottom: 20px;
}
.feature-card p {
color: #666;
line-height: 1.6;
}
@media (max-width: 768px) {
.banner-section h1 {
font-size: 2rem;
}
.banner-section p {
font-size: 1rem;
}
.content-section {
padding: 40px 20px;
}
.features-grid {
grid-template-columns: 1fr;
}
}
</style> </style>

View File

@@ -1,20 +1,274 @@
<template> <template>
<div> <div class="facility-management-page">
<leftMenu> </leftMenu> <ihead></ihead>
<icontent></icontent>
<div class="page-content">
<div class="banner-section">
<h1>设施管理解决方案</h1>
<p>智能化设施管理提升运营效率与用户体验</p>
</div>
<div class="content-section">
<div class="intro-text">
<h2>设施管理概述</h2>
<p>现代设施管理不仅仅是维护和运营更是通过技术手段实现智能化数据化的综合管理为企业创造更大的价值</p>
</div>
<div class="services-grid">
<div class="service-card">
<div class="service-icon">🏢</div>
<h3>建筑维护</h3>
<p>定期检查预防性维护应急响应确保建筑设施始终处于最佳状态</p>
</div>
<div class="service-card">
<div class="service-icon">🔧</div>
<h3>设备管理</h3>
<p>设备生命周期管理性能监控故障预警最大化设备使用效率</p>
</div>
<div class="service-card">
<div class="service-icon">📊</div>
<h3>数据分析</h3>
<p>运营数据收集性能分析优化建议数据驱动的决策支持</p>
</div>
<div class="service-card">
<div class="service-icon">👥</div>
<h3>人员管理</h3>
<p>工作流程优化任务分配绩效评估提升团队工作效率</p>
</div>
</div>
<div class="benefits-section">
<h2>我们的优势</h2>
<div class="benefits-list">
<div class="benefit-item">
<span class="benefit-number">01</span>
<div class="benefit-content">
<h4>智能化管理</h4>
<p>AI算法优化运营流程自动识别问题并提供解决方案</p>
</div>
</div>
<div class="benefit-item">
<span class="benefit-number">02</span>
<div class="benefit-content">
<h4>实时监控</h4>
<p>24/7实时监控系统状态及时发现并处理潜在问题</p>
</div>
</div>
<div class="benefit-item">
<span class="benefit-number">03</span>
<div class="benefit-content">
<h4>成本优化</h4>
<p>通过预防性维护和智能调度显著降低运营成本</p>
</div>
</div>
</div>
</div>
</div>
</div>
<ifooter></ifooter>
</div> </div>
</template> </template>
<script> <script>
import ihead from '@/components/ihead.vue'
import ifooter from '@/components/ifooter.vue'
export default { export default {
data() { name: 'FacilityManagement',
return { components: {
msg: 'Welcome to Your Vue.js App', ihead,
}; ifooter
}, },
data() {
return {
msg: 'Welcome to Your Vue.js App',
};
},
}; };
</script> </script>
<style scoped> <style scoped>
.facility-management-page {
min-height: 100vh;
display: flex;
flex-direction: column;
}
.page-content {
flex: 1;
padding-top: 120px;
}
.banner-section {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
text-align: center;
padding: 80px 20px;
}
.banner-section h1 {
font-size: 3rem;
margin-bottom: 20px;
font-weight: 300;
}
.banner-section p {
font-size: 1.2rem;
opacity: 0.9;
}
.content-section {
max-width: 1200px;
margin: 0 auto;
padding: 60px 20px;
}
.intro-text {
text-align: center;
margin-bottom: 60px;
}
.intro-text h2 {
font-size: 2.5rem;
color: #333;
margin-bottom: 30px;
}
.intro-text p {
font-size: 1.1rem;
line-height: 1.8;
color: #666;
max-width: 800px;
margin: 0 auto;
}
.services-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 30px;
margin: 60px 0;
}
.service-card {
background: white;
padding: 40px 30px;
border-radius: 15px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
text-align: center;
transition: all 0.3s ease;
border: 2px solid transparent;
}
.service-card:hover {
transform: translateY(-10px);
border-color: #667eea;
box-shadow: 0 20px 40px rgba(102, 126, 234, 0.2);
}
.service-icon {
font-size: 3rem;
margin-bottom: 20px;
}
.service-card h3 {
font-size: 1.5rem;
color: #333;
margin-bottom: 20px;
}
.service-card p {
color: #666;
line-height: 1.6;
}
.benefits-section {
margin-top: 80px;
}
.benefits-section h2 {
text-align: center;
font-size: 2.5rem;
color: #333;
margin-bottom: 50px;
}
.benefits-list {
display: flex;
flex-direction: column;
gap: 30px;
}
.benefit-item {
display: flex;
align-items: center;
gap: 30px;
padding: 30px;
background: #f8f9fa;
border-radius: 15px;
transition: transform 0.3s ease;
}
.benefit-item:hover {
transform: translateX(10px);
}
.benefit-number {
background: linear-gradient(135deg, #667eea, #764ba2);
color: white;
width: 60px;
height: 60px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
font-weight: bold;
flex-shrink: 0;
}
.benefit-content h4 {
font-size: 1.3rem;
color: #333;
margin-bottom: 10px;
}
.benefit-content p {
color: #666;
line-height: 1.6;
margin: 0;
}
@media (max-width: 768px) {
.banner-section h1 {
font-size: 2rem;
}
.banner-section p {
font-size: 1rem;
}
.content-section {
padding: 40px 20px;
}
.services-grid {
grid-template-columns: 1fr;
}
.benefit-item {
flex-direction: column;
text-align: center;
gap: 20px;
}
.benefit-item:hover {
transform: translateY(-5px);
}
}
</style> </style>

View File

@@ -1,28 +1,228 @@
<template> <template>
<div> <div class="iot-page">
<leftMenu> </leftMenu> <ihead></ihead>
<icontent>
<p> <div class="page-content">
<img src="../../assets/img/iot1.jpg" style="width:100%" /> <div class="banner-section">
</p> <h1>物联网解决方案</h1>
<p>连接万物智能互联打造数字化未来</p>
<p> </div>
<img src="../../assets/img/iot1.jpg" style="width:100%" />
</p> <div class="content-section">
</icontent> <div class="intro-text">
<h2>物联网技术概述</h2>
<p>物联网IoT技术通过传感器网络和数据分析实现设备间的智能互联和数据共享为企业提供实时监控和智能决策支持</p>
</div>
<div class="image-showcase">
<div class="image-item">
<img src="@/assets/img/iot1.jpg" alt="物联网应用场景1" />
<div class="image-overlay">
<h3>智能监控</h3>
<p>实时数据采集与分析</p>
</div>
</div>
<div class="image-item">
<img src="@/assets/img/iot2.jpg" alt="物联网应用场景2" />
<div class="image-overlay">
<h3>设备互联</h3>
<p>万物互联的智能网络</p>
</div>
</div>
</div>
<div class="features-grid">
<div class="feature-card">
<h3>传感器网络</h3>
<p>部署多种传感器实时监测环境参数和设备状态</p>
</div>
<div class="feature-card">
<h3>数据采集</h3>
<p>高效收集和处理海量物联网数据</p>
</div>
<div class="feature-card">
<h3>智能分析</h3>
<p>AI算法分析数据提供预测性维护建议</p>
</div>
</div>
</div>
</div>
<ifooter></ifooter>
</div> </div>
</template> </template>
<script> <script>
import ihead from '@/components/ihead.vue'
import ifooter from '@/components/ifooter.vue'
export default { export default {
data() { name: 'IoT',
return { components: {
msg: 'Welcome to Your Vue.js App', ihead,
}; ifooter
}, },
mounted() {}, data() {
return {
msg: 'Welcome to Your Vue.js App',
};
},
mounted() {},
}; };
</script> </script>
<style scoped> <style scoped>
.iot-page {
min-height: 100vh;
display: flex;
flex-direction: column;
}
.page-content {
flex: 1;
padding-top: 120px;
}
.banner-section {
background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
color: white;
text-align: center;
padding: 80px 20px;
}
.banner-section h1 {
font-size: 3rem;
margin-bottom: 20px;
font-weight: 300;
}
.banner-section p {
font-size: 1.2rem;
opacity: 0.9;
}
.content-section {
max-width: 1200px;
margin: 0 auto;
padding: 60px 20px;
}
.intro-text {
text-align: center;
margin-bottom: 60px;
}
.intro-text h2 {
font-size: 2.5rem;
color: #333;
margin-bottom: 30px;
}
.intro-text p {
font-size: 1.1rem;
line-height: 1.8;
color: #666;
max-width: 800px;
margin: 0 auto 20px;
}
.image-showcase {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
gap: 30px;
margin: 60px 0;
}
.image-item {
position: relative;
border-radius: 10px;
overflow: hidden;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
}
.image-item img {
width: 100%;
height: 300px;
object-fit: cover;
transition: transform 0.3s ease;
}
.image-item:hover img {
transform: scale(1.05);
}
.image-overlay {
position: absolute;
bottom: 0;
left: 0;
right: 0;
background: linear-gradient(transparent, rgba(0,0,0,0.8));
color: white;
padding: 30px 20px 20px;
text-align: center;
}
.image-overlay h3 {
font-size: 1.5rem;
margin-bottom: 10px;
}
.image-overlay p {
font-size: 1rem;
opacity: 0.9;
}
.features-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 30px;
margin-top: 60px;
}
.feature-card {
background: white;
padding: 40px 30px;
border-radius: 10px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
text-align: center;
transition: transform 0.3s ease;
}
.feature-card:hover {
transform: translateY(-5px);
}
.feature-card h3 {
font-size: 1.5rem;
color: #333;
margin-bottom: 20px;
}
.feature-card p {
color: #666;
line-height: 1.6;
}
@media (max-width: 768px) {
.banner-section h1 {
font-size: 2rem;
}
.banner-section p {
font-size: 1rem;
}
.content-section {
padding: 40px 20px;
}
.image-showcase {
grid-template-columns: 1fr;
}
.features-grid {
grid-template-columns: 1fr;
}
}
</style> </style>

View File

@@ -1,25 +1,236 @@
<template> <template>
<div> <div class="our-plan-page">
<ihead></ihead> <ihead></ihead>
<div class="contentPage">
<!-- 页面横幅 -->
<div class="contentTable"> <div class="page-banner">
<router-view></router-view> <div class="banner-content">
<div class="container">
<h1 class="banner-title">我们的方案</h1>
<p class="banner-subtitle">专业解决方案助力企业数字化转型</p>
</div>
</div> </div>
</div> </div>
<!-- 主要内容 -->
<div class="main-content">
<div class="container">
<div class="content-section">
<h3 class="section-title">核心服务</h3>
<div class="services-grid">
<div class="service-card">
<div class="service-icon">🏗</div>
<h4>智能建筑</h4>
<p>运用先进技术打造智能化建筑提升建筑管理效率和用户体验</p>
<router-link to="/ourPlan/estateManagement" class="service-link">了解更多</router-link>
</div>
<div class="service-card">
<div class="service-icon">🌐</div>
<h4>物联网</h4>
<p>构建完整的物联网生态系统实现设备互联互通和智能控制</p>
<router-link to="/ourPlan/iot" class="service-link">了解更多</router-link>
</div>
<div class="service-card">
<div class="service-icon"></div>
<h4>设施管理</h4>
<p>提供全面的设施管理解决方案确保设备高效运行</p>
<router-link to="/ourPlan/facilityManagement" class="service-link">了解更多</router-link>
</div>
<div class="service-card">
<div class="service-icon">🤖</div>
<h4>AI解决方案</h4>
<p>运用人工智能技术为企业提供智能化决策支持</p>
<router-link to="/ourPlan/aiSolutions" class="service-link">了解更多</router-link>
</div>
<div class="service-card">
<div class="service-icon">🔧</div>
<h4>技术集成</h4>
<p>整合多种技术平台构建统一的技术架构体系</p>
<router-link to="/ourPlan/technologyIntegration" class="service-link">了解更多</router-link>
</div>
</div>
</div>
<div class="content-section">
<h3 class="section-title">为什么选择我们</h3>
<div class="features">
<div class="feature-item">
<h4>专业团队</h4>
<p>拥有丰富的行业经验和专业技术能力</p>
</div>
<div class="feature-item">
<h4>创新技术</h4>
<p>持续关注前沿技术提供最新解决方案</p>
</div>
<div class="feature-item">
<h4>优质服务</h4>
<p>全程专业服务确保项目成功实施</p>
</div>
</div>
</div>
</div>
</div>
<ifooter></ifooter> <ifooter></ifooter>
</div> </div>
</template> </template>
<script> <script>
import ihead from '@/components/ihead.vue'
import ifooter from '@/components/ifooter.vue'
export default { export default {
data() { name: 'ourPlan',
return { components: {
msg: 'Welcome to Your Vue.js App', ihead,
}; ifooter
}, }
}; }
</script> </script>
<style scoped> <style scoped>
.our-plan-page {
min-height: 100vh;
background: #f8f9fa;
}
.page-banner {
background: linear-gradient(135deg, #2c3e50 0%, #3498db 100%);
color: white;
padding: 80px 0;
text-align: center;
}
.banner-title {
font-size: 3rem;
font-weight: bold;
margin-bottom: 1rem;
}
.banner-subtitle {
font-size: 1.2rem;
opacity: 0.9;
}
.main-content {
padding: 60px 0;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
.content-section {
margin-bottom: 60px;
}
.section-title {
font-size: 2rem;
color: #2c3e50;
margin-bottom: 2rem;
text-align: center;
}
.services-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 30px;
margin-top: 40px;
}
.service-card {
background: white;
padding: 30px;
border-radius: 15px;
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
text-align: center;
transition: all 0.3s ease;
border: 1px solid rgba(0, 0, 0, 0.05);
}
.service-card:hover {
transform: translateY(-10px);
box-shadow: 0 15px 35px rgba(0, 0, 0, 0.15);
}
.service-icon {
font-size: 3rem;
margin-bottom: 1rem;
}
.service-card h4 {
color: #2c3e50;
font-size: 1.4rem;
margin-bottom: 1rem;
font-weight: 600;
}
.service-card p {
color: #666;
line-height: 1.6;
margin-bottom: 1.5rem;
}
.service-link {
display: inline-block;
padding: 10px 20px;
background: #3498db;
color: white;
text-decoration: none;
border-radius: 25px;
transition: all 0.3s ease;
font-weight: 500;
}
.service-link:hover {
background: #2980b9;
transform: scale(1.05);
}
.features {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 30px;
margin-top: 40px;
}
.feature-item {
text-align: center;
padding: 30px;
}
.feature-item h4 {
color: #3498db;
font-size: 1.3rem;
margin-bottom: 1rem;
}
.feature-item p {
color: #666;
line-height: 1.6;
}
@media (max-width: 768px) {
.banner-title {
font-size: 2rem;
}
.banner-subtitle {
font-size: 1rem;
}
.services-grid {
grid-template-columns: 1fr;
}
.features {
grid-template-columns: 1fr;
}
}
</style> </style>

View File

@@ -1,22 +1,318 @@
<template> <template>
<div> <div class="technology-integration-page">
<leftMenu> </leftMenu> <ihead></ihead>
<icontent>
<p> 我们所有的解决方案都基于最新技术完全基于云的SaaS服务为了传递数据和图形可以对所有类型的系统进行基于Web服务的集成</p> <div class="page-content">
<p> 我们强大的移动应用程序使用我们的GeoModel来可视化图形有关我们的GeoModel的更多信息请参阅智能建筑和物联网这一点</p> <div class="banner-section">
</icontent> <h1>系统集成解决方案</h1>
<p>专业系统整合构建统一的企业级平台</p>
</div>
<div class="content-section">
<div class="intro-text">
<h2>系统集成概述</h2>
<p>我们提供专业的系统集成服务帮助企业将分散的业务系统数据源和应用程序进行统一整合基于云原生架构构建稳定可靠的企业级集成平台</p>
<p>通过标准化的集成接口和强大的数据同步能力实现业务流程的自动化和数据的实时共享提升企业运营效率</p>
</div>
<div class="integration-methods">
<h2>集成方案</h2>
<div class="methods-grid">
<div class="method-card">
<div class="method-icon">🔌</div>
<h3>API集成</h3>
<p>提供标准化的RESTful API接口支持多种数据格式实现系统间的无缝连接</p>
<ul>
<li>RESTful API</li>
<li>JSON/XML支持</li>
<li>OAuth2认证</li>
<li>实时数据同步</li>
</ul>
</div>
<div class="method-card">
<div class="method-icon">🌐</div>
<h3>中间件集成</h3>
<p>基于企业级中间件技术实现复杂业务系统的深度集成</p>
<ul>
<li>消息队列</li>
<li>ESB总线</li>
<li>工作流引擎</li>
<li>事务管理</li>
</ul>
</div>
<div class="method-card">
<div class="method-icon">📱</div>
<h3>数据集成</h3>
<p>实现多源数据的统一采集清洗和同步构建企业数据中台</p>
<ul>
<li>ETL工具</li>
<li>数据仓库</li>
<li>实时同步</li>
<li>数据治理</li>
</ul>
</div>
</div>
</div>
<div class="features-section">
<h2>服务优势</h2>
<div class="features-list">
<div class="feature-item">
<div class="feature-icon"></div>
<div class="feature-content">
<h4>云端部署</h4>
<p>基于云原生架构支持弹性扩展确保系统高可用性和稳定性</p>
</div>
</div>
<div class="feature-item">
<div class="feature-icon">🔒</div>
<div class="feature-content">
<h4>安全可靠</h4>
<p>多层次安全防护支持企业级权限管理确保数据安全和系统稳定</p>
</div>
</div>
<div class="feature-item">
<div class="feature-icon">📊</div>
<div class="feature-content">
<h4>统一管理</h4>
<p>提供统一的系统管理界面简化运维操作提升管理效率</p>
</div>
</div>
</div>
</div>
</div>
</div>
<ifooter></ifooter>
</div> </div>
</template> </template>
<script> <script>
import ihead from '@/components/ihead.vue'
import ifooter from '@/components/ifooter.vue'
export default { export default {
data() { name: 'TechnologyIntegration',
return { components: {
msg: 'Welcome to Your Vue.js App', ihead,
}; ifooter
}, },
data() {
return {
msg: 'Welcome to Your Vue.js App',
};
},
}; };
</script> </script>
<style scoped> <style scoped>
.technology-integration-page {
min-height: 100vh;
display: flex;
flex-direction: column;
}
.page-content {
flex: 1;
padding-top: 120px;
}
.banner-section {
background: linear-gradient(135deg, #3498db 0%, #2980b9 100%);
color: white;
text-align: center;
padding: 80px 20px;
}
.banner-section h1 {
font-size: 3rem;
margin-bottom: 20px;
font-weight: 300;
}
.banner-section p {
font-size: 1.2rem;
opacity: 0.9;
}
.content-section {
max-width: 1200px;
margin: 0 auto;
padding: 60px 20px;
}
.intro-text {
text-align: center;
margin-bottom: 60px;
}
.intro-text h2 {
font-size: 2.5rem;
color: #333;
margin-bottom: 30px;
}
.intro-text p {
font-size: 1.1rem;
line-height: 1.8;
color: #666;
max-width: 800px;
margin: 0 auto 20px;
}
.integration-methods {
margin: 80px 0;
}
.integration-methods h2 {
text-align: center;
font-size: 2.5rem;
color: #333;
margin-bottom: 50px;
}
.methods-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
gap: 30px;
}
.method-card {
background: white;
padding: 40px 30px;
border-radius: 15px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
text-align: center;
transition: transform 0.3s ease;
border: 2px solid transparent;
}
.method-card:hover {
transform: translateY(-10px);
border-color: #3498db;
box-shadow: 0 20px 40px rgba(52, 152, 219, 0.2);
}
.method-icon {
font-size: 3rem;
margin-bottom: 20px;
}
.method-card h3 {
font-size: 1.5rem;
color: #333;
margin-bottom: 20px;
}
.method-card p {
color: #666;
line-height: 1.6;
margin-bottom: 20px;
}
.method-card ul {
list-style: none;
padding: 0;
text-align: left;
}
.method-card li {
color: #555;
padding: 8px 0;
border-bottom: 1px solid #eee;
position: relative;
padding-left: 20px;
}
.method-card li:before {
content: "✓";
color: #3498db;
position: absolute;
left: 0;
font-weight: bold;
}
.method-card li:last-child {
border-bottom: none;
}
.features-section {
margin-top: 80px;
}
.features-section h2 {
text-align: center;
font-size: 2.5rem;
color: #333;
margin-bottom: 50px;
}
.features-list {
display: flex;
flex-direction: column;
gap: 30px;
}
.feature-item {
display: flex;
align-items: center;
gap: 30px;
padding: 30px;
background: #f8f9fa;
border-radius: 15px;
transition: transform 0.3s ease;
}
.feature-item:hover {
transform: translateX(10px);
}
.feature-icon {
font-size: 3rem;
flex-shrink: 0;
}
.feature-content h4 {
font-size: 1.3rem;
color: #333;
margin-bottom: 10px;
}
.feature-content p {
color: #666;
line-height: 1.6;
margin: 0;
}
@media (max-width: 768px) {
.banner-section h1 {
font-size: 2rem;
}
.banner-section p {
font-size: 1rem;
}
.content-section {
padding: 40px 20px;
}
.methods-grid {
grid-template-columns: 1fr;
}
.feature-item {
flex-direction: column;
text-align: center;
gap: 20px;
}
.feature-item:hover {
transform: translateY(-5px);
}
}
</style> </style>