txw/txw-mhzc-web/src/pages/index/views/fwsc/index.vue

460 lines
11 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="fwsc-page portal-page-shell portal-landing-figma-page">
<div class="portal-figma-scale-viewport">
<div class="portal-figma-scale-stage" ref="figmaStage">
<div class="main-content">
<!-- 当前位置导航 -->
<!-- <div class="breadcrumb-box">
<span class="breadcrumb-text">当前位置</span>
<span class="breadcrumb-link" @click="goHome">首页</span>
<span class="breadcrumb-separator">/</span>
<span class="breadcrumb-current">服务中心</span>
</div> -->
<!-- Banner -->
<div class="banner-section">
<div class="banner-content">
<h1 class="banner-title">服务中心</h1>
<!-- <img src="@/pages/index/assets/home-top-title.png"> -->
<p class="banner-subtitle">链接全球碳资产赋能绿色价值链一站式解决碳服务撮合绿色交易与金融对接需求</p>
</div>
</div>
<!-- 四大服务入口卡片 -->
<div class="services-section page-content-wrap">
<!-- <div class="section-header">
<h2 class="section-title">服务中心</h2>
<span class="section-title-bar"></span>
<p class="section-desc">一站式解决碳服务撮合绿色交易与金融对接需求</p>
</div> -->
<div class="services-grid">
<!-- 碳服务市场 -->
<div class="service-card" @click="goToPage('/tfwsc')">
<div class="service-card-inner">
<div class="service-card-header blue-header">
<!-- <span class="service-card-num">01</span> -->
<h3 class="service-card-title">碳服务市场</h3>
</div>
<p class="service-card-desc">汇聚全国优质第三方服务机构提供从核算到认证的全链条专业服务</p>
<div class="service-card-buttons">
<t-button theme="primary" @click.stop="goToPage('/tfwsc')">浏览服务信息</t-button>
<!-- <t-button theme="primary" @click.stop="goToPage('/tfwsc?publish=1')">我要发布服务</t-button> -->
</div>
</div>
</div>
<!-- 碳需求市场 -->
<div class="service-card" @click="goToPage('/txqsc')">
<div class="service-card-inner">
<div class="service-card-header green-header">
<!-- <span class="service-card-num">02</span> -->
<h3 class="service-card-title">碳需求市场</h3>
</div>
<p class="service-card-desc">企业发布真实服务采购需求智能匹配靠谱服务商杜绝中间商差价</p>
<div class="service-card-buttons">
<t-button theme="primary" @click.stop="goToPage('/txqsc')">浏览求购信息</t-button>
<!-- <t-button theme="primary" @click.stop="goToPage('/txqsc?publish=1')">我要发布需求</t-button> -->
</div>
</div>
</div>
<!-- 碳数据市场 -->
<div class="service-card" @click="goToPage('/tsjsc')">
<div class="service-card-inner">
<div class="service-card-header purple-header">
<!-- <span class="service-card-num">04</span> -->
<h3 class="service-card-title">碳数据市场</h3>
</div>
<p class="service-card-desc">合规高效的碳数据流转平台包括公共数据社会性数据因子库等多类数据库</p>
<div class="service-card-buttons">
<t-button theme="primary" @click.stop="goToPage('/tsjsc')">进入交易大厅</t-button>
<!-- <t-button theme="primary" @click.stop="goToPage('/tsjsc')">我要出售</t-button> -->
</div>
</div>
</div>
<!-- 碳金融市场 -->
<div class="service-card" @click="goToPage()">
<div class="service-card-inner">
<div class="service-card-header cyan-header">
<!-- <span class="service-card-num">03</span> -->
<h3 class="service-card-title">碳金融市场</h3>
</div>
<p class="service-card-desc">打通"碳""金融"的通道提供碳质押碳回购绿色信贷及碳基金对接服务</p>
<div class="service-card-buttons">
<t-button theme="default" variant="base" @click.stop="goToPage()">查看金融产品</t-button>
<!-- <t-button theme="primary" @click.stop="goToPage('/tjrsc')">金融机构入驻</t-button> -->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import portalFigmaScaleMixin from '@/pages/index/utils/portal-figma-scale-mixin';
export default {
name: 'FwscIndex',
mixins: [portalFigmaScaleMixin],
methods: {
goHome() {
this.$router.push('/view/mhzc/home');
},
goToPage(path) {
if (path) {
this.$router.push(path);
} else {
this.$message.info('敬请期待');
}
}
}
};
</script>
<style lang="less" scoped>
@import '../../styles/home-figma-variables.less';
@import '../../styles/portal-landing-cards.less';
.fwsc-page {
background: #f6f7fa;
.portal-figma-scale-page();
}
// Banner 区 — 背景限定在 350px 标题区内
.banner-section {
position: relative;
z-index: 1;
display: flex;
height: @portal-landing-banner-height;
background: linear-gradient(135deg, #003B1A 0%, #009a29 40%, #00d87d 100%);
align-items: center;
justify-content: center;
overflow: hidden;
&::before {
content: '';
position: absolute;
inset: 0;
background: url('~@/pages/index/assets/home-top-bg1.jpg') center/cover no-repeat;
}
&::after {
content: '';
position: absolute;
right: 0;
bottom: 0;
left: 0;
height: @portal-landing-cards-overlap;
background: linear-gradient(180deg, transparent, rgba(245, 247, 250, 0.85));
}
}
.banner-content {
position: relative;
z-index: 1;
max-width: 900px;
padding: 0 40px;
text-align: center;
}
.banner-title {
margin-bottom: 20px;
font-size: 56px;
font-weight: 700;
line-height: 1.2;
letter-spacing: 2px;
// color: #fff;
text-shadow: 0 2px 20px rgba(0, 0, 0, 0.2);
color: #204a0b;
}
.banner-subtitle {
font-size: 20px;
font-weight: 400;
line-height: 1.8;
// color: rgba(255, 255, 255, 0.95);
color: #0A4A17;
text-shadow: 0 0 1px #ffffff, 0 0 3px #ffffff, 0 0 6px #ffffff, 0 0 10px #ffffff;
}
// 四大服务入口(负 margin 与 Banner 底部衔接,移动端在断点内减弱避免压住标题区)
.services-section {
position: relative;
z-index: 2;
.portal-landing-card-shell();
}
.section-header {
display: flex;
flex-direction: column;
align-items: center;
margin-bottom: 48px;
}
.section-title {
font-size: 32px;
font-weight: 700;
color: #222;
margin: 0;
line-height: 1.4;
}
.section-title-bar {
display: block;
width: 128px;
height: 8px;
background: rgba(0, 185, 107, 0.6);
border-radius: 4px;
margin-top: -10px;
}
.section-desc {
font-size: 18px;
font-weight: 500;
color: #666;
margin: 16px 0 0 0;
line-height: 1.6;
}
.services-grid {
display: grid;
width: 100%;
grid-template-columns: repeat(var(--portal-services-fwsc-cols, 4), minmax(0, 1fr));
gap: var(--portal-services-grid-gap, 24px);
max-width: var(--portal-services-grid-max, var(--page-content-max-width, 1200px));
margin: 0 auto;
box-sizing: border-box;
align-items: stretch;
}
.service-card {
cursor: pointer;
border-radius: 16px;
overflow: hidden;
background: #fff;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);
transition: all 0.3s ease;
box-sizing: border-box;
&:hover {
transform: translateY(-8px);
box-shadow: 0 12px 32px rgba(0, 154, 41, 0.15);
}
}
.service-card-header {
display: flex;
align-items: center;
gap: 16px;
}
.service-card-num {
font-size: 28px;
font-weight: 700;
opacity: 0.3;
}
.service-card-title {
font-size: 22px;
font-weight: 600;
line-height: 1.35;
color: #1a1a1a;
margin: 0;
}
.service-card-desc {
position: relative;
z-index: 1;
font-size: 14px;
font-weight: 400;
line-height: 1.8;
color: #666;
}
.service-card-buttons {
display: flex;
flex-direction: column;
gap: 10px;
.t-button {
width: 100%;
height: @hyzt-landing-card-btn-h;
}
}
// 头部颜色变体
.blue-header {
.service-card-num { color: #2196f3; }
border-bottom-color: rgba(33, 150, 243, 0.2);
}
.green-header {
.service-card-num { color: #00b42a; }
border-bottom-color: rgba(0, 180, 42, 0.2);
}
.cyan-header {
.service-card-num { color: #00b96b; }
border-bottom-color: rgba(0, 185, 107, 0.2);
}
.purple-header {
.service-card-num { color: #722ed1; }
border-bottom-color: rgba(114, 46, 209, 0.2);
}
@media (max-width: 900px) {
.services-section {
.portal-landing-card-shell-reset();
}
.breadcrumb-box {
padding: 0 var(--page-gutter-x);
}
.banner-section {
height: 280px;
}
.banner-title {
font-size: 36px;
}
.banner-subtitle {
font-size: 16px;
}
}
@media (max-width: 768px) {
.breadcrumb-box {
height: 40px;
padding: 0 16px;
}
.banner-section {
height: auto;
min-height: 200px;
padding: 32px 16px 56px;
box-sizing: border-box;
}
.banner-content {
max-width: 100%;
padding: 0;
}
.banner-title {
margin-bottom: 12px;
font-size: 28px;
letter-spacing: 1px;
}
.banner-subtitle {
font-size: 14px;
line-height: 1.6;
}
.services-section {
padding-left: var(--page-gutter-x, 16px);
padding-right: var(--page-gutter-x, 16px);
.portal-landing-card-shell-reset();
}
.section-header {
margin-bottom: 24px;
}
.section-title {
font-size: 24px;
}
.section-title-bar {
width: 80px;
height: 6px;
margin-top: -6px;
}
.section-desc {
font-size: 14px;
margin-top: 10px;
}
.services-grid {
gap: 16px;
}
.service-card-inner {
padding: 20px;
}
.service-card-header {
flex-direction: column;
align-items: flex-start;
padding-bottom: 12px;
margin-bottom: 12px;
gap: 8px;
}
.service-card-num {
font-size: 20px;
}
.service-card-title {
font-size: 18px;
}
.service-card-desc {
font-size: 13px;
margin: 0 0 16px;
line-height: 1.6;
}
.service-card-buttons {
gap: 8px;
}
}
@media (max-width: 480px) {
.banner-section {
min-height: 180px;
padding: 28px 12px 48px;
}
.banner-title {
font-size: 24px;
}
.banner-subtitle {
font-size: 12px;
}
.services-section {
padding: 0 12px 30px;
margin-top: -24px;
}
.service-card-inner {
padding: 16px;
}
.service-card-num {
font-size: 18px;
}
.service-card-title {
font-size: 16px;
}
.service-card-desc {
font-size: 12px;
margin-bottom: 12px;
}
}
</style>