feat: 金融市场接口调整、导航调整、footer调整

This commit is contained in:
liulujian 2026-04-05 13:55:40 +08:00
parent 53517b4594
commit 25ee16640e
4 changed files with 1380 additions and 448 deletions

View File

@ -80,4 +80,33 @@ export default {
data: JSON.stringify(params), data: JSON.stringify(params),
}); });
}, },
// 获取银行-保险机构列表type: 'xd'=信贷, 'bx'=保险)
queryJgList(type) {
return fetchSso({
url: `${basurl}/gxzx/lsjr/queryJgList`,
method: 'post',
loading: true,
data: JSON.stringify({ type }),
});
},
// 获取信贷、保险产品列表
queryXdbxcpList(params = {}) {
return fetchSso({
url: `${basurl}/gxzx/lsjr/queryXdbxcpList`,
method: 'post',
loading: true,
data: JSON.stringify({ type: 'xd', cpmc: '', pageNum: 1, pageSize: 9, ...params }),
});
},
// 获取信贷、保险产品详情
queryXdbxcpxq(cpid) {
return fetchSso({
url: `${basurl}/gxzx/lsjr/queryXdbxcpxq?cpid=${cpid}`,
method: 'get',
loading: true,
});
},
}; };

View File

@ -1,68 +1,65 @@
<template> <template>
<footer class="bg-dark text-white" style="padding-top: 34px"> <footer class="bg-dark text-white">
<div class="container mx-auto px-4"> <div class="footer-container">
<div class="footer-box"> <!-- 上部信息区 -->
<div class="footer-box-1"> <div class="footer-top">
<div class="font-semibold flex items-center btjs-title btjs-title-18"> <!-- 指导单位 -->
<logo :size="30" />平台介绍 <div class="footer-column">
</div> <div class="footer-title">指导单位</div>
<p class="btjs-text text-gray-400"> <div class="footer-links">
{{ APP_INTRODUCTION1 }} <div class="footer-link-item">上海市数据局</div>
</p> <div class="footer-link-item">宝山区政府</div>
</div>
<div>
<div class="btjs-title font-semibold">联系方式</div>
<div class="text-gray-400 btjs-text space-y-2">
<div class="flex items-center mb-8px">
<!-- <i class="fa fa-phone mr-2 text-secondary"></i> -->
{{ contact.mobile }}
</div>
<div class="flex items-center mb-8px">
<!-- <i class="fa fa-envelope mr-2 text-secondary"></i> -->
{{ contact.email }}
</div>
<div class="flex items-center mb-8px">
<!-- <i class="fa fa-map-marker mr-2 text-secondary"></i> -->
{{ contact.address }}
</div> </div>
</div> </div>
</div>
<div> <!-- 主办单位 -->
<div class="btjs-title font-semibold">备案信息</div> <div class="footer-column">
<div class="text-gray-400"> <div class="footer-title">主办单位</div>
<div class="mb-8px" v-for="(item, index) in icpList" :key="index"> <div class="footer-links">
<a v-if="item.herf" :href="item.herf" class="btjs-text" target="_blank"> <div class="footer-link-item">宝山区数据局</div>
{{ item.title }} <div class="footer-link-item">宝山区发改委</div>
</a>
<span class="btjs-text" v-else>{{ item.title }}</span>
</div> </div>
</div> </div>
</div>
<div> <!-- 运营单位 -->
<div class="btjs-title font-semibold">业务支持</div> <div class="footer-column">
<div class="text-gray-400"> <div class="footer-title">运营单位</div>
<div class="mb-8px" v-for="(item, index) in zddwList" :key="index"> <div class="footer-links">
<a v-if="item.herf" :href="item.herf" class="btjs-text" target="_blank"> <div class="footer-link-item">上海浦江数链数字科技有限公司</div>
{{ item.title }}
</a>
<span class="btjs-text" v-else>{{ item.title }}</span>
</div> </div>
</div> </div>
<!-- 业务支持 -->
<div class="footer-column">
<div class="footer-title">业务支持</div>
<div class="footer-links">
<div class="footer-link-item">上海数字基础设施协会可信碳专委会</div>
</div> </div>
<div> </div>
<div class="btjs-title font-semibold">帮助中心</div>
<div class="text-gray-400"> <!-- 联系方式 -->
<div class="mb-8px" v-for="(item, index) in helpCenterLinks" :key="index"> <div class="footer-column contact-column">
<a v-if="item.herf" :href="item.herf" class="btjs-text" target="_blank"> <div class="footer-title">联系我们</div>
{{ item.title }} <div class="footer-links contact-info">
</a> <div class="contact-item">
<span class="btjs-text" v-else>{{ item.title }}</span> <span class="contact-icon">📧</span>
<span>{{ contact.email }}</span>
</div>
<div class="contact-item">
<span class="contact-icon">📍</span>
<span>{{ contact.address }}</span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="text-gray-400 footer-bottom">
<p>{{ copyright }}</p> <!-- 分隔线 -->
<div class="footer-divider"></div>
<!-- 下部版权信息 -->
<div class="footer-bottom">
<p class="copyright">{{ copyright }}</p>
<p class="infrastructure">基础设施国家区块链网络基础底座上海枢纽</p>
</div> </div>
</div> </div>
</footer> </footer>
@ -70,58 +67,180 @@
<script> <script>
import { mapState } from 'vuex'; import { mapState } from 'vuex';
import Logo from '@/pages/index/components/logo/index.vue';
export default { export default {
name: 'footer', name: 'Footer',
components: {Logo},
data() { data() {
return {}; return {};
}, },
computed: { computed: {
...mapState('settings', ['APP_NAME', 'APP_INTRODUCTION1', 'contact', 'icpList', 'helpCenterLinks', 'copyright','zddwList']), ...mapState('settings', ['APP_NAME', 'contact', 'copyright']),
}, },
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.footer-box { .footer-container {
max-width: 1400px;
padding: 40px 20px 20px;
margin: 0 auto;
}
.footer-top {
display: flex; display: flex;
flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
padding-bottom: 10px; gap: 30px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
.footer-box-1 {
width: 250px;
} }
.footer-column {
max-width: 280px;
min-width: 150px;
flex: 1;
} }
.btjs-text {
font-size: 14px; .footer-title {
font-weight: 400; position: relative;
line-height: 24px; padding-left: 12px;
letter-spacing: 0; margin-bottom: 16px;
// color: #fff; font-size: 16px;
text-align: justify;
}
.btjs-title {
margin-bottom: 12px;
font-size: 14px;
font-weight: 600; font-weight: 600;
line-height: 24px; color: #fff;
letter-spacing: 0;
&::before {
position: absolute;
top: 50%;
left: 0;
width: 4px;
height: 16px;
background: linear-gradient(180deg, #4caf50, #2e7d32);
border-radius: 2px;
content: '';
transform: translateY(-50%);
} }
.btjs-title-18 {
font-size: 18px;
} }
.mb-8px {
margin-top: 0; .footer-links {
margin-bottom: 8px; display: flex;
flex-direction: column;
gap: 10px;
} }
.footer-link-item {
font-size: 14px;
color: rgba(255, 255, 255, 0.7);
transition: color 0.3s;
&:hover {
color: #4caf50;
}
}
.contact-column {
flex: 1.2;
}
.contact-info {
gap: 12px;
}
.contact-item {
display: flex;
align-items: flex-start;
gap: 8px;
font-size: 14px;
color: rgba(255, 255, 255, 0.7);
}
.contact-icon {
flex-shrink: 0;
font-size: 14px;
}
.footer-divider {
height: 1px;
margin: 30px 0 20px;
background: rgba(255, 255, 255, 0.15);
}
.footer-bottom { .footer-bottom {
padding: 20px 0;
font-size: 12px;
font-weight: 400;
line-height: 18px;
// color: #FFFFFF;
letter-spacing: 0;
text-align: center; text-align: center;
} }
.copyright {
margin: 0 0 8px;
font-size: 13px;
color: rgba(255, 255, 255, 0.6);
}
.infrastructure {
margin: 0;
font-size: 12px;
color: rgba(255, 255, 255, 0.4);
}
//
@media (max-width: 1024px) {
.footer-top {
gap: 24px;
}
.footer-column {
min-width: calc(50% - 12px);
}
.contact-column {
flex: 1 1 100%;
max-width: none;
}
}
@media (max-width: 768px) {
.footer-container {
padding: 30px 16px 16px;
}
.footer-top {
flex-direction: column;
gap: 20px;
}
.footer-column {
width: 100%;
max-width: none;
}
.footer-title {
margin-bottom: 12px;
}
.footer-links {
gap: 8px;
}
.footer-link-item {
font-size: 13px;
}
.contact-info {
flex-direction: column;
gap: 8px;
}
.contact-item {
font-size: 13px;
}
.footer-divider {
margin: 24px 0 16px;
}
.copyright {
font-size: 12px;
}
.infrastructure {
font-size: 11px;
}
}
</style> </style>

View File

@ -44,7 +44,7 @@
</template> </template>
<script> <script>
import { logout, authorize, init } from '@/pages/index/api/login'; import { logout, authorize } from '@/pages/index/api/login';
import api from '@/pages/index/api/gxzx/index.js'; import api from '@/pages/index/api/gxzx/index.js';
export default { export default {
@ -56,6 +56,17 @@ export default {
return { return {
curPage: "home", curPage: "home",
loginFlag: false, // loginFlag: false, //
//
routeToMenuMap: {
'/home': 'home',
'/fwsc': 'fwsc',
'/tfwsc': 'fwsc',
'/txqsc': 'fwsc',
'/tjrsc': 'fwsc',
'/tsjsc': 'fwsc',
'/yhzx': 'yhzx',
'/login': 'login',
},
menuOptions: [ menuOptions: [
{ {
@ -133,6 +144,7 @@ export default {
value: 'tfwsc', value: 'tfwsc',
content: '碳服务市场', content: '碳服务市场',
divider: true, divider: true,
parentName: 'fwsc',
}, },
{ {
name: 'tjrsc', name: 'tjrsc',
@ -140,12 +152,14 @@ export default {
value: 'tjrsc', value: 'tjrsc',
content: '碳金融市场', content: '碳金融市场',
divider: true, divider: true,
parentName: 'fwsc',
}, { }, {
name: 'txqsc', name: 'txqsc',
title: '碳需求市场', title: '碳需求市场',
value: 'txqsc', value: 'txqsc',
content: '碳需求市场', content: '碳需求市场',
divider: true, divider: true,
parentName: 'fwsc',
}, },
{ {
name: 'tsjsc', name: 'tsjsc',
@ -153,6 +167,7 @@ export default {
value: 'tsjsc', value: 'tsjsc',
content: '碳数据市场', content: '碳数据市场',
divider: true, divider: true,
parentName: 'fwsc',
} }
] ]
}, },
@ -197,11 +212,49 @@ export default {
} else { } else {
this.loginFlag = false; this.loginFlag = false;
} }
//
this.updateCurPageByRoute();
},
watch: {
//
$route: {
handler(newRoute) {
this.updateCurPageByRoute();
},
immediate: true,
},
}, },
beforeUnmount() { }, beforeUnmount() { },
methods: { methods: {
//
updateCurPageByRoute() {
const path = this.$route.path;
const routeName = this.$route.name;
//
if (this.routeToMenuMap[path]) {
this.curPage = this.routeToMenuMap[path];
return;
}
//
if (path.includes('tfwsc') || path.includes('txqsc') || path.includes('tjrsc') || path.includes('tsjsc')) {
this.curPage = 'fwsc';
return;
}
//
this.curPage = 'home';
},
// //
handleDropdownClick(menu) { handleDropdownClick(menu) {
// parentName使curPage
if (menu.parentName) {
this.curPage = menu.parentName;
} else {
this.curPage = menu.name;
}
this.gotoIfreamPage(menu); // this.gotoIfreamPage(menu); //
}, },
@ -231,7 +284,8 @@ export default {
this.curPage = menu.name; this.curPage = menu.name;
let iframeUrl = menu.iframeUrl; let iframeUrl = menu.iframeUrl;
if (iframeUrl) { if (iframeUrl) {
//login.jsauthorize //login.jsauthorize
//使iframeUrlSSO Cookie
this.$emit('gotoIfreamPage', iframeUrl); this.$emit('gotoIfreamPage', iframeUrl);
} else { } else {
this.$emit('gotoPage', this.curPage); this.$emit('gotoPage', this.curPage);

File diff suppressed because it is too large Load Diff