This commit is contained in:
张成
2025-08-27 10:04:51 +08:00
parent 282cc322c5
commit cc41662a79
27 changed files with 682 additions and 867 deletions

View File

@@ -171,4 +171,6 @@ npm run build
--- ---
**丙维科技** - 技术驱动未来,服务创造价值 🚀 **丙维科技** - 技术驱动未来,服务创造价值 🚀
https://bimwe.oss-cn-shanghai.aliyuncs.com/web/foundry_1.gif

View File

@@ -28,7 +28,8 @@
"postcss-pxtorem": "^6.1.0", "postcss-pxtorem": "^6.1.0",
"responsive-loader": "^2.3.0", "responsive-loader": "^2.3.0",
"sharp": "^0.34.3", "sharp": "^0.34.3",
"vue-template-compiler": "^2.5.17" "vue-template-compiler": "^2.5.17",
"webpack": "4.46.0"
}, },
"postcss": { "postcss": {
"plugins": { "plugins": {

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 920 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 713 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@@ -44,8 +44,8 @@
<div class="company-intro"> <div class="company-intro">
<div class="container"> <div class="container">
<div class="intro-header"> <div class="intro-header">
<h2 class="section-title animate-on-scroll">技术驱动未来服务创造价值</h2> <h2 class="section-title">技术驱动未来服务创造价值</h2>
<p class="section-subtitle animate-on-scroll">上海丙维数字科技有限公司成立于2018年专注于AI交付内容为客户提供高质量的数字化解决方案</p> <p class="section-subtitle">上海丙维数字科技有限公司成立于2018年专注于AI交付内容为客户提供高质量的数字化解决方案</p>
</div> </div>
<div class="intro-content animate-stagger"> <div class="intro-content animate-stagger">
@@ -73,7 +73,7 @@
<!-- 核心优势展示 --> <!-- 核心优势展示 -->
<div class="core-advantages"> <div class="core-advantages">
<div class="container"> <div class="container">
<h2 class="section-title animate-on-scroll">核心优势</h2> <h2 class="section-title">核心优势</h2>
<div class="advantages-grid animate-stagger"> <div class="advantages-grid animate-stagger">
<div class="advantage-item hover-scale" v-for="advantage in advantages" :key="advantage.title"> <div class="advantage-item hover-scale" v-for="advantage in advantages" :key="advantage.title">
<div class="advantage-icon animate bounce delay-1s"> <div class="advantage-icon animate bounce delay-1s">
@@ -90,7 +90,7 @@
<!-- 业务领域展示 --> <!-- 业务领域展示 -->
<div class="business-areas"> <div class="business-areas">
<div class="container"> <div class="container">
<h2 class="section-title animate-on-scroll">业务领域</h2> <h2 class="section-title">业务领域</h2>
<div class="areas-grid animate-stagger"> <div class="areas-grid animate-stagger">
<div class="area-item hover-glow" v-for="area in businessAreas" :key="area.name"> <div class="area-item hover-glow" v-for="area in businessAreas" :key="area.name">
<div class="area-icon animate wobble delay-2s"> <div class="area-icon animate wobble delay-2s">
@@ -118,8 +118,8 @@
<!-- 产品展示区域 --> <!-- 产品展示区域 -->
<div class="products-section"> <div class="products-section">
<div class="container"> <div class="container">
<h2 class="section-title animate-on-scroll">核心解决方案</h2> <h2 class="section-title">核心解决方案</h2>
<p class="section-subtitle animate-on-scroll">为不同行业提供专业的技术解决方案助力企业数字化转型</p> <p class="section-subtitle">为不同行业提供专业的技术解决方案助力企业数字化转型</p>
<div id="pageBoxesContainer" class="page pageBoxes animate-stagger"> <div id="pageBoxesContainer" class="page pageBoxes animate-stagger">
<div class="box hover-lift" v-for="product in productData" :key="product.name"> <div class="box hover-lift" v-for="product in productData" :key="product.name">
@@ -147,10 +147,30 @@
</div> </div>
</div> </div>
<!-- 客户展示区域 -->
<div class="clients-section">
<div class="container">
<h2 class="section-title">合作伙伴</h2>
<p class="section-subtitle">我们与众多知名企业建立了长期稳定的合作关系</p>
<div class="clients-grid animate-stagger">
<div class="client-item hover-scale" v-for="client in clients" :key="client.name">
<div class="client-logo">
<img :src="client.logo" :alt="client.name" />
</div>
<div class="client-info">
<h4>{{client.name}}</h4>
<p>{{client.description}}</p>
</div>
</div>
</div>
</div>
</div>
<!-- 联系我们区域 --> <!-- 联系我们区域 -->
<div class="contact-section"> <div class="contact-section">
<div class="container"> <div class="container">
<h2 class="section-title animate-on-scroll">联系我们</h2> <h2 class="section-title">联系我们</h2>
<div class="contact-info animate-stagger"> <div class="contact-info animate-stagger">
<div class="contact-item hover-scale"> <div class="contact-item hover-scale">
<div class="contact-icon animate heartBeat infinite">📍</div> <div class="contact-icon animate heartBeat infinite">📍</div>
@@ -196,6 +216,21 @@ 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')
// 客户logo图片
let client_01 = require('../assets/img/hezuo/client_01.png')
let client_02 = require('../assets/img/hezuo/client_02.png')
let client_03 = require('../assets/img/hezuo/client_03.png')
let client_04 = require('../assets/img/hezuo/client_04.png')
let client_05 = require('../assets/img/hezuo/client_05.png')
let client_06 = require('../assets/img/hezuo/client_06.png')
let client_07 = require('../assets/img/hezuo/client_07.png')
let client_08 = require('../assets/img/hezuo/client_08.png')
let client_09 = require('../assets/img/hezuo/client_09.png')
let client_10 = require('../assets/img/hezuo/client_10.png')
let client_11 = require('../assets/img/hezuo/client_11.png')
let client_12 = require('../assets/img/hezuo/client_12.png')
export default { export default {
components: { components: {
VueAwesomeSwiper, VueAwesomeSwiper,
@@ -251,7 +286,7 @@ export default {
description: '由阿里、字节、腾讯等顶尖互联网公司资深开发人员组成,技术积累深厚,项目经验丰富' description: '由阿里、字节、腾讯等顶尖互联网公司资深开发人员组成,技术积累深厚,项目经验丰富'
}, },
{ {
icon: '🤖', icon: '🚀',
title: 'AI领域战略转型', title: 'AI领域战略转型',
description: '2022年成功转型将业务重心聚焦于AI交付领域围绕客户需求提供定制化智能应用解决方案' description: '2022年成功转型将业务重心聚焦于AI交付领域围绕客户需求提供定制化智能应用解决方案'
}, },
@@ -323,6 +358,69 @@ export default {
tags: ['API集成', '数据同步', '统一管理'] tags: ['API集成', '数据同步', '统一管理']
}, },
], ],
clients: [
{
name: '合作伙伴1',
logo: client_01,
description: '长期战略合作伙伴'
},
{
name: '合作伙伴2',
logo: client_02,
description: '技术合作企业'
},
{
name: '合作伙伴3',
logo: client_03,
description: '行业领先企业'
},
{
name: '合作伙伴4',
logo: client_04,
description: '创新科技公司'
},
{
name: '合作伙伴5',
logo: client_05,
description: '数字化转型伙伴'
},
{
name: '合作伙伴6',
logo: client_06,
description: 'AI技术合作方'
},
{
name: '合作伙伴7',
logo: client_07,
description: '智能制造企业'
},
{
name: '合作伙伴8',
logo: client_08,
description: '金融服务机构'
},
{
name: '合作伙伴9',
logo: client_09,
description: '零售行业客户'
},
{
name: '合作伙伴10',
logo: client_10,
description: '教育科技公司'
},
{
name: '合作伙伴11',
logo: client_11,
description: '医疗健康企业'
},
{
name: '合作伙伴12',
logo: client_12,
description: '物流运输公司'
}
],
} }
}, },
@@ -590,6 +688,128 @@ export default {
font-weight: bold; font-weight: bold;
} }
/* 客户展示区域 */
.clients-section {
padding: 80px 0;
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
}
.clients-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 30px;
margin-top: 50px;
}
.client-item {
background: white;
padding: 30px 20px;
border-radius: 15px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
text-align: center;
border: 1px solid #e9ecef;
}
.client-item:hover {
transform: translateY(-10px);
box-shadow: 0 20px 40px rgba(0,0,0,0.15);
}
.client-logo {
margin-bottom: 20px;
display: flex;
align-items: center;
justify-content: center;
height: 80px;
}
.client-logo img {
max-width: 100%;
max-height: 60px;
object-fit: contain;
filter: grayscale(100%);
transition: filter 0.3s ease;
}
.client-item:hover .client-logo img {
filter: grayscale(0%);
}
.client-info h4 {
font-size: 1.3rem;
font-weight: 600;
color: #2c3e50;
margin-bottom: 10px;
}
.client-info p {
color: #6c757d;
font-size: 0.9rem;
margin: 0;
}
/* 客户展示区域 */
.clients-section {
padding: 80px 0;
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
}
.clients-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 20px;
margin-top: 50px;
}
.client-item {
background: white;
padding: 20px 15px;
border-radius: 12px;
box-shadow: 0 8px 25px rgba(0,0,0,0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
text-align: center;
border: 1px solid #e9ecef;
}
.client-item:hover {
transform: translateY(-8px);
box-shadow: 0 15px 35px rgba(0,0,0,0.15);
}
.client-logo {
margin-bottom: 15px;
display: flex;
align-items: center;
justify-content: center;
height: 60px;
}
.client-logo img {
max-width: 100%;
max-height: 45px;
object-fit: contain;
filter: grayscale(100%);
transition: filter 0.3s ease;
}
.client-item:hover .client-logo img {
filter: grayscale(0%);
}
.client-info h4 {
font-size: 1.1rem;
font-weight: 600;
color: #2c3e50;
margin-bottom: 8px;
}
.client-info p {
color: #6c757d;
font-size: 0.8rem;
margin: 0;
}
/* 联系我们区域 */ /* 联系我们区域 */
.contact-section { .contact-section {
padding: 80px 0; padding: 80px 0;
@@ -663,6 +883,7 @@ export default {
.intro-content, .intro-content,
.advantages-grid, .advantages-grid,
.areas-grid, .areas-grid,
.clients-grid,
.contact-info { .contact-info {
grid-template-columns: 1fr; grid-template-columns: 1fr;
} }
@@ -670,43 +891,44 @@ export default {
.company-intro, .company-intro,
.core-advantages, .core-advantages,
.business-areas, .business-areas,
.clients-section,
.contact-section, .contact-section,
.products-section { .products-section {
padding: 60px 0; padding: 10px 0;
} }
.pageBoxes { .pageBoxes {
grid-template-columns: 1fr; grid-template-columns: 1fr;
gap: 30px; gap: 20px;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
} }
.boxTableHeader { .boxTableHeader {
padding: 25px; padding: 15px;
} }
.product-tags { .product-tags {
gap: 8px; gap: 6px;
} }
.tag { .tag {
font-size: 0.8rem; font-size: 0.75rem;
padding: 5px 12px; padding: 4px 10px;
} }
} }
/* 产品展示区域样式 */ /* 产品展示区域样式 */
.products-section { .products-section {
padding: 80px 0; padding: 10px 0;
background: white; background: white;
} }
.pageBoxes { .pageBoxes {
display: grid; display: grid;
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
gap: 40px; gap: 25px;
margin-top: 50px; margin-top: 40px;
} }
.box { .box {
@@ -778,37 +1000,37 @@ export default {
} }
.boxTableHeader { .boxTableHeader {
padding: 30px; padding: 20px;
text-align: center; text-align: center;
} }
.boxTableHeader .h2 { .boxTableHeader .h2 {
font-size: 1.6rem; font-size: 1.4rem;
font-weight: 600; font-weight: 600;
color: #2c3e50; color: #2c3e50;
margin-bottom: 20px; margin-bottom: 15px;
} }
.product-description { .product-description {
color: #6c757d; color: #6c757d;
line-height: 1.7; line-height: 1.6;
margin-bottom: 25px; margin-bottom: 20px;
font-size: 1rem; font-size: 0.95rem;
} }
.product-tags { .product-tags {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
gap: 10px; gap: 8px;
justify-content: center; justify-content: center;
} }
.tag { .tag {
background: #e9ecef; background: #e9ecef;
color: #495057; color: #495057;
padding: 6px 14px; padding: 5px 12px;
border-radius: 18px; border-radius: 15px;
font-size: 0.85rem; font-size: 0.8rem;
font-weight: 500; font-weight: 500;
transition: all 0.3s ease; transition: all 0.3s ease;
} }

View File

@@ -14,6 +14,9 @@ module.exports = {
lintOnSave: false, // 是否启用 eslint lintOnSave: false, // 是否启用 eslint
chainWebpack: (config) => { chainWebpack: (config) => {
// 禁用 CaseSensitivePathsPlugin
config.plugins.delete('case-sensitive-paths');
// 别名 // 别名
config.resolve.alias.set("@", resolve("src")); config.resolve.alias.set("@", resolve("src"));
config.resolve.alias.set("_c", resolve("src/components")); config.resolve.alias.set("_c", resolve("src/components"));
@@ -71,7 +74,7 @@ module.exports = {
configureWebpack: { configureWebpack: {
output: { output: {
filename: "js/[hash].js", filename: "js/[hash].js",
}, }
}, },
css: { css: {

1259
yarn.lock

File diff suppressed because it is too large Load Diff