|
@@ -6,16 +6,16 @@
|
|
|
<div class="info-row">
|
|
|
<div class="info-item">
|
|
|
<span class="text">覆盖</span>
|
|
|
- <span class="number">10+</span>
|
|
|
+ <span class="number" ref="number1">{{ animatedNumbers.number1 }}+</span>
|
|
|
<span class="text">垂直行业</span>
|
|
|
</div>
|
|
|
<div class="info-item">
|
|
|
- <span class="number">72</span>
|
|
|
+ <span class="number" ref="number2">{{ animatedNumbers.number2 }}</span>
|
|
|
<span class="text">小时原型交付</span>
|
|
|
</div>
|
|
|
<div class="info-item">
|
|
|
<span class="text">定制成本降低</span>
|
|
|
- <span class="number">30%</span>
|
|
|
+ <span class="number" ref="number3">{{ animatedNumbers.number3 }}%</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</section>
|
|
@@ -33,17 +33,18 @@
|
|
|
<div class="products-nav">
|
|
|
<div v-for="product in productList" :key="product.id" class="nav-item"
|
|
|
:class="{ active: activeProductId === product.id }" @click="setActiveProduct(product.id)">
|
|
|
- {{ product.title }}
|
|
|
+ {{ product.classifyName }}
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <div class="product-detail">
|
|
|
+ <div class="product-detail" v-if="activeProduct">
|
|
|
<div class="detail-content">
|
|
|
- <h3 class="product-title">{{ activeProduct.title }}</h3>
|
|
|
- <p class="product-description">{{ activeProduct.description }}</p>
|
|
|
+ <h3 class="product-title">{{ activeProduct.classifyName }}</h3>
|
|
|
+ <p class="product-description">{{ activeProduct.description || activeProduct.classifyDesc || '为您提供专业的解决方案'
|
|
|
+ }}</p>
|
|
|
</div>
|
|
|
<div class="detail-image">
|
|
|
- <img :src="activeProduct.image" :alt="activeProduct.title" />
|
|
|
+ <img :src="imgHost + activeProduct.projectImage" :alt="activeProduct.classifyName" />
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -68,13 +69,14 @@
|
|
|
<div class="cases-container">
|
|
|
<div class="cases-wrapper"
|
|
|
:style="{ transform: `translateX(-${currentCaseIndex * (100 / visibleCases)}%)` }">
|
|
|
- <div v-for="caseItem in casesList" :key="caseItem.id" class="case-item">
|
|
|
+ <div v-for="caseItem in casesList" :key="caseItem.id" @click="goToCaseDetail(caseItem.id)"
|
|
|
+ class="case-item">
|
|
|
<div class="case-image">
|
|
|
- <img :src="caseItem.image" :alt="caseItem.title" />
|
|
|
+ <img :src="imgHost + caseItem.projectImage" :alt="caseItem.title" />
|
|
|
</div>
|
|
|
<div class="case-content">
|
|
|
- <h3 class="case-title">{{ caseItem.title }}</h3>
|
|
|
- <p class="case-description">{{ caseItem.description }}</p>
|
|
|
+ <h3 class="case-title">{{ caseItem.projectName }}</h3>
|
|
|
+ <p class="case-description">{{ caseItem.projectProfile }}</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -115,7 +117,7 @@
|
|
|
<h3 class="content-title">{{ activeAboutContent.title }}</h3>
|
|
|
<div class="content-description" v-html="activeAboutContent.description"></div>
|
|
|
<div class="content-action">
|
|
|
- <button class="learn-more-btn">查看更多 →</button>
|
|
|
+ <button class="learn-more-btn" @click="router.push({ name: 'About' })">查看更多 →</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -144,9 +146,13 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { ref, computed, onMounted, onUnmounted } from 'vue'
|
|
|
+import { ref, computed, onMounted, onUnmounted, nextTick } from 'vue'
|
|
|
+import { useRouter } from 'vue-router'
|
|
|
import DefaultLayout from '@/layouts/DefaultLayout.vue'
|
|
|
-import { getHomeData } from '@/api/modules/home'
|
|
|
+import { getHomeData, getProjectClassifyList, getProjectList, getCompanyCertList } from '@/api/modules/home'
|
|
|
+import { animateNumber, createNumberAnimationObserver } from '@/utils/numberAnimation'
|
|
|
+// 导入图片资源
|
|
|
+import indexAboutBg from '@/assets/index-about-img.png'
|
|
|
|
|
|
export default {
|
|
|
name: 'HomePage',
|
|
@@ -154,59 +160,78 @@ export default {
|
|
|
DefaultLayout
|
|
|
},
|
|
|
setup() {
|
|
|
- const activeProductId = ref(1)
|
|
|
+ const router = useRouter()
|
|
|
+ const activeProductId = ref(null)
|
|
|
|
|
|
- const productList = ref([
|
|
|
- {
|
|
|
- id: 1,
|
|
|
- title: '低代码平台',
|
|
|
- description: '图形化界面和拖拽式组件,简化应用开发和部署,快速构建和迭代企业级应用。',
|
|
|
- image: 'src/assets/index-products-01.png'
|
|
|
- },
|
|
|
- {
|
|
|
- id: 2,
|
|
|
- title: '物联网平台',
|
|
|
- description: '连接和管理各种智能设备,实现设备数据采集、监控和远程控制。',
|
|
|
- image: 'https://via.placeholder.com/400x300/0066cc/ffffff?text=物联网平台'
|
|
|
- },
|
|
|
- {
|
|
|
- id: 3,
|
|
|
- title: '统一权限系统',
|
|
|
- description: '集中管理用户权限和访问控制,确保系统安全和数据保护。',
|
|
|
- image: 'https://via.placeholder.com/400x300/0066cc/ffffff?text=统一权限系统'
|
|
|
- },
|
|
|
- {
|
|
|
- id: 4,
|
|
|
- title: '地图适配应用',
|
|
|
- description: '提供地理信息服务和位置定位功能,支持多种地图数据源。',
|
|
|
- image: 'https://via.placeholder.com/400x300/0066cc/ffffff?text=地图适配应用'
|
|
|
- },
|
|
|
- {
|
|
|
- id: 5,
|
|
|
- title: '数字学生',
|
|
|
- description: '学生信息管理和学习行为分析,提供个性化教育服务。',
|
|
|
- image: 'https://via.placeholder.com/400x300/0066cc/ffffff?text=数字学生'
|
|
|
- },
|
|
|
- {
|
|
|
- id: 6,
|
|
|
- title: '数据中台',
|
|
|
- description: '统一数据管理和分析平台,提供数据治理和业务洞察。',
|
|
|
- image: 'https://via.placeholder.com/400x300/0066cc/ffffff?text=数据中台'
|
|
|
- },
|
|
|
- {
|
|
|
- id: 7,
|
|
|
- title: 'AI大模型',
|
|
|
- description: '集成人工智能技术,提供智能分析和决策支持服务。',
|
|
|
- image: 'https://via.placeholder.com/400x300/0066cc/ffffff?text=AI大模型'
|
|
|
- }
|
|
|
- ])
|
|
|
+ // 环境变量
|
|
|
+ const imgHost = import.meta.env.VITE_APP_IMG_HOST
|
|
|
+
|
|
|
+ // 数字滚动动画相关
|
|
|
+ const animatedNumbers = ref({
|
|
|
+ number1: 0,
|
|
|
+ number2: 0,
|
|
|
+ number3: 0
|
|
|
+ })
|
|
|
+
|
|
|
+ const targetNumbers = {
|
|
|
+ number1: 10,
|
|
|
+ number2: 72,
|
|
|
+ number3: 30
|
|
|
+ }
|
|
|
+
|
|
|
+ // 启动所有数字动画
|
|
|
+ const startNumberAnimations = () => {
|
|
|
+ // 延迟启动,让页面加载完成后再开始动画
|
|
|
+ setTimeout(() => {
|
|
|
+ animateNumber(
|
|
|
+ (value) => animatedNumbers.value.number1 = value,
|
|
|
+ targetNumbers.number1,
|
|
|
+ 2000
|
|
|
+ )
|
|
|
+ }, 200)
|
|
|
+
|
|
|
+ setTimeout(() => {
|
|
|
+ animateNumber(
|
|
|
+ (value) => animatedNumbers.value.number2 = value,
|
|
|
+ targetNumbers.number2,
|
|
|
+ 2500
|
|
|
+ )
|
|
|
+ }, 500)
|
|
|
+
|
|
|
+ setTimeout(() => {
|
|
|
+ animateNumber(
|
|
|
+ (value) => animatedNumbers.value.number3 = value,
|
|
|
+ targetNumbers.number3,
|
|
|
+ 2200
|
|
|
+ )
|
|
|
+ }, 800)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置数字动画观察器
|
|
|
+ const setupIntersectionObserver = () => {
|
|
|
+ createNumberAnimationObserver('.info-row', startNumberAnimations, {
|
|
|
+ threshold: 0.5,
|
|
|
+ rootMargin: '0px 0px -100px 0px'
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ // 产品分类列表
|
|
|
+ let productList = ref([])
|
|
|
+ // 当前选中分类的产品列表
|
|
|
+ let currentProductList = ref([])
|
|
|
|
|
|
const activeProduct = computed(() => {
|
|
|
+ if (productList.value.length === 0) return null
|
|
|
return productList.value.find(product => product.id === activeProductId.value) || productList.value[0]
|
|
|
})
|
|
|
|
|
|
- const setActiveProduct = (id) => {
|
|
|
+ const setActiveProduct = async (id) => {
|
|
|
activeProductId.value = id
|
|
|
+ // 获取选中分类的产品列表
|
|
|
+ const selectedCategory = productList.value.find(product => product.id === id)
|
|
|
+ if (selectedCategory && selectedCategory.id) {
|
|
|
+ await getProductsByClassify(selectedCategory.id)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 行业案例数据和逻辑
|
|
@@ -222,38 +247,21 @@ export default {
|
|
|
{ id: 'qualification', title: '荣誉资质' }
|
|
|
])
|
|
|
|
|
|
- const aboutContents = ref({
|
|
|
+ let aboutContents = ref({
|
|
|
about: {
|
|
|
title: '关于达泽',
|
|
|
- description: `
|
|
|
- <p>达泽科技是贵州省今日前沿信息技术有限责任公司旗下品牌,专业为软件开发及数字化商务的综合性企业。为政府、金融、保险、通讯、电力、教育、制造、零售、交通、教育、通信、水利、农业等领域的企业及机构提供了专业的信息化解决方案。</p>
|
|
|
- <p>公司一直致力为客户内部管理,为用户至上的服务理念,为客户提供,合作共赢,服务至上的服务理念,为社会创造更高的价值。</p>
|
|
|
- `,
|
|
|
- image: 'src/assets/index-about-bg.png'
|
|
|
+ description: '<p>加载中...</p>',
|
|
|
+ image: indexAboutBg
|
|
|
},
|
|
|
history: {
|
|
|
title: '发展历程',
|
|
|
- description: `
|
|
|
- <p><strong>2018年</strong> - 公司成立,专注于智慧校园解决方案</p>
|
|
|
- <p><strong>2019年</strong> - 推出低代码开发平台,服务客户超过50家</p>
|
|
|
- <p><strong>2020年</strong> - 获得高新技术企业认证,团队规模扩展至100人</p>
|
|
|
- <p><strong>2021年</strong> - 业务拓展至智慧农业、智慧停车等多个领域</p>
|
|
|
- <p><strong>2022年</strong> - 服务学校超过500所,用户突破100万</p>
|
|
|
- <p><strong>2023年</strong> - 推出AI大模型解决方案,引领行业创新</p>
|
|
|
- `,
|
|
|
- image: 'src/assets/index-about-bg.png'
|
|
|
+ description: '<p>加载中...</p>',
|
|
|
+ image: indexAboutBg
|
|
|
},
|
|
|
qualification: {
|
|
|
title: '荣誉资质',
|
|
|
- description: `
|
|
|
- <p><strong>国家高新技术企业</strong> - 2020年获得认证</p>
|
|
|
- <p><strong>软件企业认证</strong> - 贵州省软件行业协会会员单位</p>
|
|
|
- <p><strong>ISO9001质量管理体系认证</strong> - 2021年通过认证</p>
|
|
|
- <p><strong>信息安全等级保护三级</strong> - 系统安全等级认证</p>
|
|
|
- <p><strong>优秀合作伙伴奖</strong> - 多家知名企业颁发</p>
|
|
|
- <p><strong>创新技术奖</strong> - 贵州省科技厅颁发</p>
|
|
|
- `,
|
|
|
- image: 'src/assets/index-about-bg.png'
|
|
|
+ description: '<p>加载中...</p>',
|
|
|
+ image: indexAboutBg
|
|
|
}
|
|
|
})
|
|
|
|
|
@@ -329,42 +337,42 @@ export default {
|
|
|
}
|
|
|
])
|
|
|
|
|
|
- const casesList = ref([
|
|
|
+ let casesList = ref([
|
|
|
{
|
|
|
id: 1,
|
|
|
- title: '智慧农业(种植+养殖)',
|
|
|
- description: '通过物联网技术实现农业自动化管理,利用传感器监控土壤、水质等环境参数,提高农业生产效率。',
|
|
|
- image: 'https://unsplash.it/300/200'
|
|
|
+ projectName: '智慧农业(种植+养殖)',
|
|
|
+ projectProfile: '通过物联网技术实现农业自动化管理,利用传感器监控土壤、水质等环境参数,提高农业生产效率。',
|
|
|
+ projectImage: 'https://unsplash.it/300/200'
|
|
|
},
|
|
|
{
|
|
|
id: 2,
|
|
|
- title: '智慧停车',
|
|
|
- description: '通过车牌识别技术及物联网设备实现停车场智能化管理,实现无感支付和车位引导等功能。',
|
|
|
- image: 'https://unsplash.it/300/200'
|
|
|
+ projectName: '智慧停车',
|
|
|
+ projectProfile: '通过车牌识别技术及物联网设备实现停车场智能化管理,实现无感支付和车位引导等功能。',
|
|
|
+ projectImage: 'https://unsplash.it/300/200'
|
|
|
},
|
|
|
{
|
|
|
id: 3,
|
|
|
- title: '副控票务系统',
|
|
|
- description: '为景区提供智能化票务管理,智能闸机一体化管理系统,提升游客体验,优化景区运营。',
|
|
|
- image: 'https://unsplash.it/300/200'
|
|
|
+ projectName: '副控票务系统',
|
|
|
+ projectProfile: '为景区提供智能化票务管理,智能闸机一体化管理系统,提升游客体验,优化景区运营。',
|
|
|
+ projectImage: 'https://unsplash.it/300/200'
|
|
|
},
|
|
|
{
|
|
|
id: 4,
|
|
|
- title: '智慧校园',
|
|
|
- description: '集成学生管理、教学管理、安全监控等功能,为教育机构提供全方位数字化解决方案。',
|
|
|
- image: 'https://unsplash.it/300/200'
|
|
|
+ projectName: '智慧校园',
|
|
|
+ projectProfile: '集成学生管理、教学管理、安全监控等功能,为教育机构提供全方位数字化解决方案。',
|
|
|
+ projectImage: 'https://unsplash.it/300/200'
|
|
|
},
|
|
|
{
|
|
|
id: 5,
|
|
|
- title: '智慧医疗',
|
|
|
- description: '通过数字化技术提升医疗服务效率,实现患者信息管理、远程诊疗等智能化医疗服务。',
|
|
|
- image: 'https://unsplash.it/300/200'
|
|
|
+ projectName: '智慧医疗',
|
|
|
+ projectProfile: '通过数字化技术提升医疗服务效率,实现患者信息管理、远程诊疗等智能化医疗服务。',
|
|
|
+ projectImage: 'https://unsplash.it/300/200'
|
|
|
},
|
|
|
{
|
|
|
id: 6,
|
|
|
- title: '智慧物流',
|
|
|
- description: '利用物联网和大数据技术优化物流配送,实现货物追踪、路径优化等智能化物流管理。',
|
|
|
- image: 'https://unsplash.it/300/200'
|
|
|
+ projectName: '智慧物流',
|
|
|
+ projectProfile: '利用物联网和大数据技术优化物流配送,实现货物追踪、路径优化等智能化物流管理。',
|
|
|
+ projectImage: 'https://unsplash.it/300/200'
|
|
|
}
|
|
|
])
|
|
|
|
|
@@ -387,14 +395,88 @@ export default {
|
|
|
// API调用方法
|
|
|
const loadHomeData = async () => {
|
|
|
try {
|
|
|
- const data = await getHomeData()
|
|
|
- // 这里可以更新products和advantages数据
|
|
|
+ const result = await getHomeData()
|
|
|
+ const data = result.data
|
|
|
console.log('首页数据:', data)
|
|
|
+
|
|
|
+ if (data) {
|
|
|
+ // 更新关于达泽的描述
|
|
|
+ if (data.companyDescribe) {
|
|
|
+ aboutContents.value.about.description = data.companyDescribe
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新发展历程的描述
|
|
|
+ if (data.courseList && Array.isArray(data.courseList)) {
|
|
|
+ const historyHtml = data.courseList.map(item => {
|
|
|
+ const time = item.createTime ? new Date(item.createTime).getFullYear() : '未知时间'
|
|
|
+ const description = item.courseDescribe || '暂无描述'
|
|
|
+ return `<p><strong>${time}年</strong> - ${description}</p>`
|
|
|
+ }).join('')
|
|
|
+ aboutContents.value.history.description = historyHtml || '<p>暂无发展历程数据</p>'
|
|
|
+ }
|
|
|
+ }
|
|
|
} catch (error) {
|
|
|
console.error('加载首页数据失败:', error)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 获取产品分类列表
|
|
|
+ const handleGetProjectClassifyList1 = async () => {
|
|
|
+ try {
|
|
|
+ const data = await getProjectClassifyList({ classifyType: 1 })
|
|
|
+ console.log('产品中心分类列表:', data)
|
|
|
+
|
|
|
+ if (data && data.rows && data.rows.length > 0) {
|
|
|
+ productList.value = data.rows
|
|
|
+ // 默认选中第一个分类
|
|
|
+ activeProductId.value = data.rows[0].id
|
|
|
+ // 获取第一个分类的产品列表
|
|
|
+ await getProductsByClassify(data.rows[0].id)
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('加载产品中心分类列表失败:', error)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据分类ID获取产品列表
|
|
|
+ const getProductsByClassify = async (classifyId) => {
|
|
|
+ try {
|
|
|
+ const data = await getProjectList({
|
|
|
+ classifyId: classifyId,
|
|
|
+ projectType: 1 // 1:产品中心 2:行业案例
|
|
|
+ })
|
|
|
+ console.log('产品列表:', data)
|
|
|
+
|
|
|
+ if (data && data.rows) {
|
|
|
+ currentProductList.value = data.rows
|
|
|
+ // 更新当前选中分类的描述信息
|
|
|
+ const currentCategory = productList.value.find(item => item.id === activeProductId.value)
|
|
|
+ if (currentCategory && data.rows.length > 0) {
|
|
|
+ // 可以根据API返回的数据更新分类的描述信息
|
|
|
+ currentCategory.description = data.rows[0].projectProfile || currentCategory.classifyDesc || '为您提供专业的解决方案';
|
|
|
+ currentCategory.projectImage = data.rows[0].projectImage
|
|
|
+ console.log('currentCategory', currentCategory)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('加载产品列表失败:', error)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 产品/案例信息-案例信息
|
|
|
+ const handleGetProjectList = async () => {
|
|
|
+ try {
|
|
|
+ const data = await getProjectList({ projectType: 2 })
|
|
|
+ // 这里可以更新products和advantages数据
|
|
|
+ console.log('案例信息:', data)
|
|
|
+ casesList.value = data.rows;
|
|
|
+ console.log('案例信息列表:', casesList.value)
|
|
|
+ } catch (error) {
|
|
|
+ console.error('加载案例信息失败:', error)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 响应式处理
|
|
|
const updateVisibleCases = () => {
|
|
|
if (window.innerWidth <= 768) {
|
|
@@ -408,10 +490,44 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 跳转到案例详情页
|
|
|
+ const goToCaseDetail = (caseId) => {
|
|
|
+ router.push({
|
|
|
+ name: 'Casesdetails',
|
|
|
+ query: { id: caseId }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取企业资质证书
|
|
|
+ const loadCompanyCertList = async () => {
|
|
|
+ try {
|
|
|
+ const data = await getCompanyCertList()
|
|
|
+ console.log('企业资质数据:', data)
|
|
|
+
|
|
|
+ if (data && data.rows && Array.isArray(data.rows)) {
|
|
|
+ const certHtml = data.rows.map(item => {
|
|
|
+ const certName = item.certName || '未知证书'
|
|
|
+ return `<p><strong>${certName}</strong></p>`
|
|
|
+ }).join('')
|
|
|
+ aboutContents.value.qualification.description = certHtml || '<p>暂无资质证书数据</p>'
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('加载企业资质失败:', error)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
loadHomeData()
|
|
|
+ loadCompanyCertList() // 获取企业资质证书
|
|
|
+ handleGetProjectClassifyList1() // 获取产品分类列表
|
|
|
+ handleGetProjectList() // 获取案例列表
|
|
|
updateVisibleCases()
|
|
|
window.addEventListener('resize', updateVisibleCases)
|
|
|
+
|
|
|
+ // 设置数字滚动动画的观察器
|
|
|
+ nextTick(() => {
|
|
|
+ setupIntersectionObserver()
|
|
|
+ })
|
|
|
})
|
|
|
|
|
|
onUnmounted(() => {
|
|
@@ -419,7 +535,9 @@ export default {
|
|
|
})
|
|
|
|
|
|
return {
|
|
|
+ router,
|
|
|
productList,
|
|
|
+ currentProductList,
|
|
|
activeProductId,
|
|
|
activeProduct,
|
|
|
setActiveProduct,
|
|
@@ -433,7 +551,10 @@ export default {
|
|
|
activeAboutTab,
|
|
|
activeAboutContent,
|
|
|
setActiveAboutTab,
|
|
|
- partnersList
|
|
|
+ partnersList,
|
|
|
+ goToCaseDetail,
|
|
|
+ imgHost,
|
|
|
+ animatedNumbers
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -443,6 +564,7 @@ export default {
|
|
|
// banner区域
|
|
|
.banner-section {
|
|
|
position: relative;
|
|
|
+
|
|
|
img {
|
|
|
width: 100%;
|
|
|
}
|
|
@@ -484,6 +606,12 @@ export default {
|
|
|
font-size: 32px;
|
|
|
vertical-align: middle;
|
|
|
margin: 0 5px;
|
|
|
+ font-family: 'Arial', monospace;
|
|
|
+ letter-spacing: 1px;
|
|
|
+ transition: all 0.1s ease;
|
|
|
+ display: inline-block;
|
|
|
+ min-width: 1.2em;
|
|
|
+ text-align: center;
|
|
|
}
|
|
|
|
|
|
.text {
|
|
@@ -704,6 +832,7 @@ export default {
|
|
|
height: 200px;
|
|
|
border-radius: 12px 12px 0 0;
|
|
|
overflow: hidden;
|
|
|
+ background: #fff;
|
|
|
|
|
|
img {
|
|
|
width: 100%;
|
|
@@ -738,6 +867,12 @@ export default {
|
|
|
color: #666;
|
|
|
line-height: 1.6;
|
|
|
margin: 0;
|
|
|
+ min-height: 45px;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ display: -webkit-box;
|
|
|
+ -webkit-line-clamp:2;
|
|
|
+ -webkit-box-orient: vertical;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -914,14 +1049,16 @@ export default {
|
|
|
background-size: cover;
|
|
|
padding: 80px 0;
|
|
|
position: relative;
|
|
|
- &::before{
|
|
|
+
|
|
|
+ &::before {
|
|
|
position: absolute;
|
|
|
content: '';
|
|
|
width: 1346px;
|
|
|
height: 335px;
|
|
|
right: 150px;
|
|
|
top: 0;
|
|
|
- background: url('@assets/index-cooperation-bg.png') no-repeat center center;;
|
|
|
+ background: url('@assets/index-cooperation-bg.png') no-repeat center center;
|
|
|
+ ;
|
|
|
background-size: contain;
|
|
|
}
|
|
|
|
|
@@ -1011,27 +1148,32 @@ export default {
|
|
|
|
|
|
// 响应式设计
|
|
|
@media (max-width: 768px) {
|
|
|
- .cooperation-section{
|
|
|
- &::before{
|
|
|
+ .cooperation-section {
|
|
|
+ &::before {
|
|
|
width: 0;
|
|
|
}
|
|
|
- .section-header{
|
|
|
- .section-subtitle{
|
|
|
+
|
|
|
+ .section-header {
|
|
|
+ .section-subtitle {
|
|
|
margin-bottom: 10px;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- .info-row{
|
|
|
- .info-item{
|
|
|
+
|
|
|
+ .info-row {
|
|
|
+ .info-item {
|
|
|
padding: 0 10px;
|
|
|
}
|
|
|
- .text{
|
|
|
+
|
|
|
+ .text {
|
|
|
font-size: 14px;
|
|
|
}
|
|
|
- .number{
|
|
|
+
|
|
|
+ .number {
|
|
|
font-size: 14px;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
.products-section {
|
|
|
padding: 40px 0;
|
|
|
|