1.30 财务分析部分模块完善,发展历程弹窗完善

This commit is contained in:
尚政杰
2026-01-30 17:53:45 +08:00
parent 5ffaac8fb2
commit 22286f26d9
23 changed files with 967 additions and 209 deletions

View File

@@ -175,7 +175,7 @@
<cyl-view :valueChainAnalysisInfo="valueChainAnalysisInfo" :totalNodes="totalNodes" :upstreamList="upstreamList" :coreEnterpriseList="coreEnterpriseList" :downstreamList="downstreamList" @detail="clickValueChainDetail"></cyl-view>
</template>
<template v-if="selectInDepthAnalysis==3">
<fzlc-view :keyFactorsInfo="keyFactorsInfo" :keyFactorsList="keyFactorsList" :timelineInfo="timelineInfo" :timelineList="timelineList" @detail="detailShow(1)"></fzlc-view>
<fzlc-view :keyFactorsInfo="keyFactorsInfo" :keyFactorsList="keyFactorsList" :timelineInfo="timelineInfo" :timelineList="timelineList" @detail="clickDevelopmentTimelineDetail"></fzlc-view>
</template>
</block>
<block v-if="selectTab==2">
@@ -186,13 +186,14 @@
</view>
</view>
<block v-if="selectCaiwu==0">
<zysj-view :stockInfo="financialStockInfo" :barCategoryList="mainBussinessBarCategoryList" :barList="mainBussinessBarList" :lineList="mainBussinessLineList" :productClassificationList="productClassificationList" ></zysj-view>
<zysj-view :stockInfo="financialStockInfo" :barCategoryList="mainBussinessBarCategoryList" :barList="mainBussinessBarList" :lineList="mainBussinessLineList"
:productClassificationList="productClassificationList" :financialMetricsInfo="financialMetricsList[0]"></zysj-view>
</block>
<block v-if="selectCaiwu==1">
<cwfx-view :dataList="financialMetricsList"></cwfx-view>
</block>
<block v-if="selectCaiwu==2">
<cwsj-view></cwsj-view>
<cwsj-view :financialBalanceList="financialBalanceList" :cashFlowList="cashFlowList" :incomeStatementList="incomeStatementList"></cwsj-view>
</block>
</block>
<block v-if="selectTab==3">
@@ -334,7 +335,7 @@
<uni-popup ref="valueChainPopup" type="bottom" :safeArea="false">
<view class="valueChainPopup" style="padding-bottom: env(safe-area-inset-bottom);">
<view class="popTitle">详情</view>
<view class="closeC absolute" @click="clickCloseValueChainPop()">
<view class="closeC absolute" @click="clickCloseValueChainPopup()">
<image class="icon" src="/static/icon/home/close.png" mode="widthFix"></image>
</view>
<view v-if="selectValueChainInfo" class="valueChainInfoC" style="height: 60vh;">
@@ -396,30 +397,34 @@
</view>
</view>
</uni-popup>
<uni-popup ref="detailInfoPopup" type="bottom" :safeArea="false">
<view class="industryRankPop" style="padding-bottom: env(safe-area-inset-bottom);">
<uni-popup ref="developmentTimelinePopup" type="bottom" :safeArea="false">
<view class="developmentTimelinePopup" style="padding-bottom: env(safe-area-inset-bottom);">
<view class="popTitle">详情</view>
<view class="closeC absolute">
<view class="closeC absolute" @click="clickCloseDevelopmentTimelinePopup()">
<image class="icon" src="/static/icon/home/close.png" mode="widthFix"></image>
</view>
<view style="max-height: 60vh; padding: 0 20rpx; box-sizing: border-box;">
<scroll-view :scroll-y="true" style="width: 100%; height: 100%; padding: 40rpx 20rpx; box-sizing: border-box; font-weight: 500; color: #2A2A2A; font-size: 24rpx;">
<view style="font-size: 28rpx; font-weight: bold;">不良贷款率连续四年低于1.1%</view>
<view style="display: flex; align-items: center; margin: 20rpx 0;">
<view style="color: #EC3440; font-size: 20; text-align: center; background-color: #FFE7E9; border-radius: 5rpx; padding: 2rpx 10rpx; margin-right: 10rpx;">Achievement</view>
<view style="margin-left: 10rpx;">2025-06-30</view>
<view v-if="selectDevelopmentTimelineInfo" style="max-height: 60vh; padding: 0 20rpx;">
<scroll-view class="list" scroll-y style="width: 100%; height: 100%; padding: 40rpx 20rpx;font-weight: 500; color: #2A2A2A; font-size: 24rpx;">
<view style="font-size: 28rpx; font-weight: bold;">{{selectDevelopmentTimelineInfo.event_title}}</view>
<view class="eventTypeDateC flex" style="margin: 20rpx 0;">
<view :class="'eventType '+(selectDevelopmentTimelineInfo.impact_metrics.is_positive==1?'positive':'negative')">{{selectDevelopmentTimelineInfo.event_type}}</view>
<view class="date">{{selectDevelopmentTimelineInfo.event_date}}</view>
</view>
<view style="color: #BB8520; margin-top: 30rpx;">事件详情</view>
<view style="color: #71675D; font-size: 22rpx; margin-top: 13rpx;">2025年中报不良率1.06%拨备覆盖率290%资产质量保持股份行领先</view>
<view style="color: #71675D; font-size: 22rpx; margin-top: 13rpx;">{{selectDevelopmentTimelineInfo.event_desc}}</view>
<view style="color: #BB8520; margin-top: 30rpx;">财务影响</view>
<view style="color: #71675D; font-size: 22rpx; margin-top: 13rpx;">信用成本同比下降12bps释放利润约50亿元</view>
<view style="color: #71675D; font-size: 22rpx; margin-top: 13rpx;">{{selectDevelopmentTimelineInfo.related_info.financial_impact}}</view>
<view style="color: #BB8520; margin-top: 30rpx;">影响评估</view>
<view style="display: flex; align-items: center; margin-top: 13rpx;">
<view><text style="color: #71675D;">影响度</text></view>
<view style="width: 200rpx; margin: 0 10rpx; background-color: #EFEFEF; border-radius: 5rpx;"><view style="width: 86%; background: linear-gradient(to right, #FF525D, #EC3440); border-radius: 5rpx; height: 10rpx;"></view></view>
<text style="color: #71675D; margin-left: 10rpx;">86 / 100</text>
<view class="flex" style="margin-top: 13rpx;">
<view>
<text style="color: #71675D;">影响度</text>
</view>
<view class="progressBgC">
<view :class="'progress '+(selectDevelopmentTimelineInfo.impact_metrics.is_positive==1?'positive':'negative')" :style="'width: '+selectDevelopmentTimelineInfo.impact_metrics.impact_score+'%;'"></view>
</view>
<text style="color: #71675D; margin-left: 10rpx;">{{selectDevelopmentTimelineInfo.impact_metrics.impact_score}} / 100</text>
</view>
</scroll-view>
</view>
@@ -430,7 +435,7 @@
<script>
import { inject } from 'vue'
import { actualControl, branchesList, companyAnnouncementsList, comprehensiveAnalysis, eventList, financialComparison, financialMainBusiness, financialMetrics, financialStockInfo, industryRankList, keyFactorsTimeline, managementTeam, ownershipConcentration, quoteDetailsInfo, searchStockInfo, stockBasicInfo, topCirculatingShareholdersList, topShareholdersList, valueChainAnalysis, valueChainRelatedCompany } from '@/request/api'
import { actualControl, branchesList, cashflowSheet, companyAnnouncementsList, comprehensiveAnalysis, eventList, financialBalanceSheet, financialComparison, financialMainBusiness, financialMetrics, financialStockInfo, incomeStatementSheet, industryRankList, keyFactorsTimeline, managementTeam, ownershipConcentration, quoteDetailsInfo, searchStockInfo, stockBasicInfo, topCirculatingShareholdersList, topShareholdersList, valueChainAnalysis, valueChainRelatedCompany } from '@/request/api'
import { getLastNameStr, getLocalDate, getNumStr, getRateUpOrDown, getAgeByBirthYear } from '@/utils/util'
export default {
@@ -569,6 +574,7 @@
keyFactorsList:[], //关键因素
timelineInfo:null, //发展时间线统计信息
timelineList:[], //发展时间线
selectDevelopmentTimelineInfo:null,
caiWuList: [{
title: '主营数据'
},
@@ -586,6 +592,9 @@
mainBussinessBarList:[], //主营业务柱状图数据
mainBussinessLineList:[], //主营业务折线图数据
productClassificationList:[], //主营业务产业分类数据
financialBalanceList:[], //资产负债表
cashFlowList:[], //现金流量表
incomeStatementList:[], //利润表
dongTaiList: [{
title: '新闻动态'
},
@@ -599,8 +608,7 @@
companyAnnouncementList:[], //公司公告数据
getLocalDate:getLocalDate,
getRateUpOrDown:getRateUpOrDown, //判断涨跌
getNumStr:getNumStr, //获取数字展示万或亿
getNumStr:getNumStr, //获取数字展示万或亿
}
},
onLoad(e) {
@@ -665,6 +673,7 @@
//获取股票信息数据
this.getFinancialStockInfoData()
this.getFinancialComparisonData()
this.getFinancialMetricsData()
this.getFinancialMainBussinessData()
}else if(index==3) {
//获取新闻动态数据
@@ -711,12 +720,22 @@
clickCaiWuItem(index) {
if (this.selectCaiwu != index) {
this.selectCaiwu = index
if(index==1) {
if(index==0) {
//主营数据
this.getFinancialMetricsData()
}else if(index==1) {
//财务分析
this.getFinancialMetricsData()
}else if(index==2) {
//资产负债表
this.getFinancialBalanceSheetData()
//现金流量表
this.getCashFlowSheetData()
//利润表
this.getIncomeStatementSheetData()
}
}
},
/**
* 点击选择动态分类
* @param {Object} index
@@ -745,13 +764,19 @@
clickCloseIndustryRankPop()
{
this.$refs["industryRankPop"].close()
},
detailShow(type) {
if (type == 0) {
this.$refs["detailPopup"].open()
}else {
this.$refs["detailInfoPopup"].open()
}
},
/**
* 查看发展时间线详情
*/
clickDevelopmentTimelineDetail(item)
{
this.selectDevelopmentTimelineInfo = item;
// this.getValueChainRelatedCompanyData()
this.$refs["developmentTimelinePopup"].open()
},
clickCloseDevelopmentTimelinePopup()
{
this.$refs["developmentTimelinePopup"].close()
},
/**
* 查看产业链详情
@@ -765,7 +790,7 @@
/**
* 关闭产业链弹窗
*/
clickCloseValueChainPop()
clickCloseValueChainPopup()
{
this.$refs["valueChainPopup"].close()
},
@@ -1117,6 +1142,57 @@
})
},
/**
* 获取资产负债表数据
*/
getFinancialBalanceSheetData()
{
let code = this.stockCode
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
let param = {limit:8}
financialBalanceSheet(code,param).then(res=>{
this.financialBalanceList = res.data
}).catch(error=>{
})
},
/**
* 获取现金流量表数据
*/
getCashFlowSheetData()
{
let code = this.stockCode
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
let param = {limit:8}
cashflowSheet(code,param).then(res=>{
this.cashFlowList = res.data
}).catch(error=>{
})
},
/**
* 获取利润表数据
*/
getIncomeStatementSheetData()
{
let code = this.stockCode
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
let param = {limit:8}
incomeStatementSheet(code,param).then(res=>{
this.incomeStatementList = res.data
}).catch(error=>{
})
},
/**
* 获取新闻动态数据
*/
@@ -1734,5 +1810,79 @@
}
}
}
}
.developmentTimelinePopup {
background-color: white;
border-radius: 20rpx 20rpx 0 0;
.popTitle {
margin: 0 20rpx;
line-height: 100rpx;
border-bottom: solid 1rpx #E7E7E7;
font-size: 35rpx;
font-weight: bold;
color: #333;
text-align: center;
}
.closeC {
top: 0;
right: 0;
padding: 40rpx 26rpx;
.icon {
display: block;
width: 20rpx;
height: auto;
}
}
.eventTypeDateC
{
.eventType
{
margin-right: 17rpx;
font-size: 20;
border-radius: 5rpx;
line-height: 40rpx;
padding: 0 10rpx;
}
.eventType.positive
{
background-color: #FFE7E9;
color: #EC3440;
}
.eventType.negative
{
background-color: #DEEED6;
color: #345423;
}
.date
{
font-size: 22rpx;
color: #999;
}
}
.progressBgC
{
background-color: #EFEFEF;
margin-left: 13rpx;
width: 200rpx;
height: 10rpx;
border-radius: 5rpx;
.progress
{
height: 100%;
border-radius: 5rpx;
}
.progress.positive
{
background: linear-gradient(90deg, #FF525D 0%, #EC3440 100%);
}
.progress.negative
{
background: linear-gradient(90deg, #537D3D 0%, #345423 100%);
}
}
}
</style>