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

@@ -67,7 +67,6 @@
<view style="height: 500rpx;">
<l-echart ref="chartRef2"></l-echart>
</view>
</view>
</view>
</template>

View File

@@ -10,16 +10,14 @@
style="width: 13rpx; height: 22rpx;"></image>
</view>
<view style="display: grid; gap: 20rpx; grid-template-columns: repeat(3, 1fr); margin: 0 20rpx;">
<view
style="display: flex; align-items: center; justify-content: center; text-align: center; font-size: 20rpx; color: #999999; border: 1rpx solid #D2D2D2; padding: 10rpx 10rpx; box-sizing: border-box;"
:style="{color: index == 0 ? '#BB8520' : '#999999', border: `1rpx solid ${index == 0 ? '#F2C369' : '#D2D2D2'}`, 'background-color': (index == 0 ? '#FFFAF1' : '#FFFFFF')}"
<view class="indicatorC" style="display: grid; gap: 20rpx; grid-template-columns: repeat(3, 1fr); margin: 0 20rpx;">
<view :class="'item flexCenter '+(cashFlowIndicatorIndex==index?'select':'')"
v-for="(item,index) in ['货币资金', '所有者权益', '关键指标']" :key="index">
{{item}}
</view>
</view>
<view style="display: flex;align-items: center; padding: 20rpx; box-sizing: border-box;">
<view class="flex" style="padding: 20rpx;">
<view class="flex1" style="font-size: 28rpx;">查看详细数据</view>
<view
style="color: #F2C369; font-size: 22rpx; padding: 2rpx 10rpx; border-radius: 5rpx; border: 1rpx solid #F2C369; text-align: center; margin: 0 10rpx;">
@@ -33,49 +31,44 @@
mode="widthFix"></image>
</view>
</view>
<view
style="height: 400rpx; display: flex; align-items: center; justify-content: center; background-color: red;">
折线图占位
<view style="height: 400rpx;">
<l-echart ref="chartRef1"></l-echart>
</view>
<view style="background-color: #FAFAFC; border-radius: 10rpx; margin: 0 20rpx; padding: 20rpx 0;">
<view v-if="financialBalanceList.length>0" style="background-color: #FAFAFC; border-radius: 10rpx; margin: 0 20rpx; padding: 20rpx 0;">
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">资产总计</view>
<view style="text-align: right; color: #2A2A2A;">29.21亿</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(financialBalanceList[0].assets.total)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">负债合计</view>
<view style="text-align: right; color: #2A2A2A;">17.94亿</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(financialBalanceList[0].liabilities.total)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">所有者权益</view>
<view style="text-align: right; color: #2A2A2A;">11.27亿</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(financialBalanceList[0].equity.total)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">货币资金</view>
<view style="text-align: right; color: #2A2A2A;">5.45亿</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(financialBalanceList[0].assets.current_assets.cash)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">资本公积金</view>
<view style="text-align: right; color: #2A2A2A;">4.61亿</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(financialBalanceList[0].equity.capital_reserve)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex between" style=" font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">盈余公积金</view>
<view style="text-align: right; color: #2A2A2A;">1.02亿</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(financialBalanceList[0].equity.surplus_reserve)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex between" style="font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">未分配利润</view>
<view style="text-align: right; color: #2A2A2A;">1.61亿</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(financialBalanceList[0].equity.undistributed_profit)}}</view>
</view>
</view>
</view>
<!-- 现金流量表 -->
<view @click="itemClick(1)" style="color: #2B2B2B; font-weight: 500; font-size: 24rpx;">
<view style="display: flex;align-items: center; padding: 20rpx; box-sizing: border-box;">
<view style="color: #2B2B2B; font-weight: 500; font-size: 24rpx;">
<view class="flex" style="padding: 20rpx;">
<image src="/pagesStock/static/icon/cwfx-1.png" mode="widthFix"
style="width: 40rpx; height: 40rpx;"></image>
<view class="flex1" style="margin: 0 10rpx; font-size: 28rpx;">现金流量表</view>
@@ -83,16 +76,13 @@
style="width: 13rpx; height: 22rpx;"></image>
</view>
<view style="display: grid; gap: 20rpx; grid-template-columns: repeat(3, 1fr); margin: 0 20rpx;">
<view
style="display: flex; align-items: center; justify-content: center; text-align: center; font-size: 20rpx; color: #999999; border: 1rpx solid #D2D2D2; padding: 10rpx 10rpx; box-sizing: border-box;"
:style="{color: index == 0 ? '#BB8520' : '#999999', border: `1rpx solid ${index == 0 ? '#F2C369' : '#D2D2D2'}`, 'background-color': (index == 0 ? '#FFFAF1' : '#FFFFFF')}"
v-for="(item,index) in ['经营现金流', '筹资现金流', '投资现金流']" :key="index">
<view class="indicatorC" style="display: grid; gap: 20rpx; grid-template-columns: repeat(3, 1fr); margin: 0 20rpx;">
<view :class="'item flexCenter '+(cashFlowIndicatorIndex==index?'select':'')" v-for="(item,index) in ['经营现金流', '筹资现金流', '投资现金流']" :key="index" @click="clickCashFlowIndicatorItem(index)">
{{item}}
</view>
</view>
<view style="display: flex;align-items: center; padding: 20rpx; box-sizing: border-box;">
<view class="flex" style="padding: 20rpx;">
<view class="flex1" style="font-size: 28rpx;">查看详细数据</view>
<view
style="color: #F2C369; font-size: 22rpx; padding: 2rpx 10rpx; border-radius: 5rpx; border: 1rpx solid #F2C369; text-align: center; margin: 0 10rpx;">
@@ -106,12 +96,9 @@
mode="widthFix"></image>
</view>
</view>
<view
style="height: 400rpx; display: flex; align-items: center; justify-content: center; background-color: red;">
柱状折线图占位
<view style="height: 400rpx;">
<l-echart ref="chartRef2"></l-echart>
</view>
<view style="background-color: #FAFAFC; border-radius: 10rpx; margin: 0 20rpx; padding: 20rpx 0;">
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">经营性现金流</view>
@@ -140,7 +127,7 @@
</view>
</view>
<!-- 利润表 -->
<view @click="itemClick(2)" style="color: #2B2B2B; font-weight: 500; font-size: 24rpx;">
<view style="color: #2B2B2B; font-weight: 500; font-size: 24rpx;">
<view style="display: flex;align-items: center; padding: 20rpx; box-sizing: border-box;">
<image src="/pagesStock/static/icon/cwfx-1.png" mode="widthFix"
style="width: 40rpx; height: 40rpx;"></image>
@@ -149,22 +136,20 @@
style="width: 13rpx; height: 22rpx;"></image>
</view>
<view style="display: grid; gap: 20rpx; grid-template-columns: repeat(3, 1fr); margin: 0 20rpx;">
<view
style="display: flex; align-items: center; justify-content: center; text-align: center; font-size: 20rpx; color: #999999; border: 1rpx solid #D2D2D2; padding: 10rpx 10rpx; box-sizing: border-box;"
:style="{color: index == 0 ? '#BB8520' : '#999999', border: `1rpx solid ${index == 0 ? '#F2C369' : '#D2D2D2'}`, 'background-color': (index == 0 ? '#FFFAF1' : '#FFFFFF')}"
v-for="(item,index) in ['净利润', '营业收入', '期间费用']" :key="index">
<view class="indicatorC" style="display: grid; gap: 20rpx; grid-template-columns: repeat(3, 1fr); margin: 0 20rpx;">
<view :class="'item flexCenter '+(profitIndicatorIndex==index?'select':'')"
v-for="(item,index) in ['净利润', '营业收入', '期间费用']" :key="index" @click="clickProfitIndicatorItem(index)">
{{item}}
</view>
</view>
<view style="display: flex;align-items: center; padding: 20rpx; box-sizing: border-box;">
<view style="display: flex;align-items: center; padding: 20rpx;">
<view class="flex1" style="font-size: 28rpx;">查看详细数据</view>
<view
style="color: #F2C369; font-size: 22rpx; padding: 2rpx 10rpx; border-radius: 5rpx; border: 1rpx solid #F2C369; text-align: center; margin: 0 10rpx;">
单季度</view>
<view
style="display: flex; align-items: center; padding: 3rpx 10rpx; box-sizing: border-box; border: 1rpx solid #D2D2D2; margin-right: 10rpx;">
style="display: flex; align-items: center; padding: 3rpx 10rpx; border: 1rpx solid #D2D2D2; margin-right: 10rpx;">
<image style="width: 23rpx; height: 23rpx;" src="/pagesStock/static/icon/all-icon.png"
mode="widthFix"></image>
<view style="margin: 0 10rpx; color: #999999; font-size: 22rpx;">全部</view>
@@ -172,7 +157,7 @@
mode="widthFix"></image>
</view>
<view
style="display: flex; align-items: center; padding: 3rpx 10rpx; box-sizing: border-box; border: 1rpx solid #D2D2D2;">
style="display: flex; align-items: center; padding: 3rpx 10rpx;border: 1rpx solid #D2D2D2;">
<image style="width: 23rpx; height: 23rpx;" src="/pagesStock/static/icon/all-icon.png"
mode="widthFix"></image>
<view style="margin: 0 10rpx; color: #999999; font-size: 22rpx;">汇总</view>
@@ -182,9 +167,8 @@
</view>
<view style="height: 400rpx;">
<l-echart ref="chartRef1"></l-echart>
<l-echart ref="chartRef3"></l-echart>
</view>
<view style="background-color: #FAFAFC; border-radius: 10rpx; margin: 0 20rpx; padding: 20rpx 0;">
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">净利润</view>
@@ -216,16 +200,230 @@
</template>
<script>
import { getNumStr } from '../../utils/util';
export default {
name:"cwsj-view",
data() {
return {
profitabilityIndicatorIndex:0,
profitIndicatorIndex:0,
cashFlowIndicatorIndex:0,
option1:{
legend:{
show:true,
data:['期间费用','同比(右)']
},
grid:{
left:'2%',
right:'2%',
top:'5%',
bottom:'30%'
},
xAxis: {
type: 'category',
data: [],
axisLabel:{
rotate:45,
fontSize:10
}
},
yAxis: [{
type: 'value',
name:'(%)',
position:'left',
alignTicks:true,
axisLine:{
onZero:false
}
},
{
type: 'value',
name:'(%)',
position:'right',
alignTicks:true,
axisLine:{
onZero:false
}
}],
dataZoom:[{
type:'slider'
}],
series: [
{
type: 'bar',
name:'ROE',
data: [],
yAxisIndex:0
},
{
type: 'line',
name:'同比',
data: [],
yAxisIndex:1
}
]
},
option2:{
legend:{
show:true,
data:['经营现金流','同比(右)']
},
grid:{
left:'2%',
right:'2%',
top:'5%',
bottom:'30%'
},
xAxis: {
type: 'category',
data: [],
axisLabel:{
fontSize:10,
rotate:45
}
},
yAxis: [{
type: 'value',
name:'(%)',
position:'left',
alignTicks:true,
axisLine:{
onZero:false
}
},
{
type: 'value',
name:'(%)',
position:'right',
alignTicks:true,
axisLine:{
onZero:false
}
}],
dataZoom:[{
type:'slider'
}],
series: [
{
type: 'bar',
name:'ROE',
data: [],
yAxisIndex:0
},
{
type: 'line',
name:'同比',
data: [],
yAxisIndex:1
}
]
},
option3:{
legend:{
show:true,
data:['期间费用','同比(右)']
},
grid:{
left:'2%',
right:'2%',
top:'5%',
bottom:'30%'
},
xAxis: {
type: 'category',
data: [],
axisLabel:{
rotate:45,
fontSize:10
}
},
yAxis: [{
type: 'value',
name:'(%)',
position:'left',
alignTicks:true,
axisLine:{
onZero:false
}
},
{
type: 'value',
name:'(%)',
position:'right',
alignTicks:true,
axisLine:{
onZero:false
}
}],
dataZoom:[{
type:'slider'
}],
series: [
{
type: 'bar',
name:'ROE',
data: [],
yAxisIndex:0
},
{
type: 'line',
name:'同比',
data: [],
yAxisIndex:1
}
]
},
getNumStr:getNumStr
};
},
props:{
financialBalanceList:Array, //资产负债表
cashFlowList:Array, //现金流量表
incomeStatementList:Array, //利润表
},
watch:{
},
methods:{
/**
* 点击切换现金流量表指标
* @param {Object} index
*/
clickCashFlowIndicatorItem(index) {
if(this.cashFlowIndicatorIndex!=index) {
this.cashFlowIndicatorIndex = index
}
},
/**
* 点击切换利润表指标
* @param {Object} index
*/
clickProfitIndicatorItem(index) {
if(this.profitIndicatorIndex!=index) {
this.profitIndicatorIndex = index
}
}
}
}
</script>
<style>
<style lang="less">
.indicatorC
{
.item
{
padding: 10rpx;
border: 1rpx solid #D2D2D2;
font-size: 20rpx;
color: #999999;
text-align: center;
}
.item.select
{
background-color: #FFFAF1;
color: #BB8520;
border: 1rpx solid #F2C369;
}
}
</style>

View File

@@ -51,7 +51,7 @@
{{timelineInfo.negative_events}}</text>
</view>
<view class="timelineList">
<view class="item" v-for="(item,index) in timelineList" :key="index" @click="clickAction">
<view class="item" v-for="(item,index) in timelineList" :key="index" @click="clickAction(item)">
<view class="impactC flexColumnCenter">
<image v-if="item.impact_metrics.is_positive==1" class="icon" style="margin-top: 20rpx;"
src="/pagesStock/static/icon/yuan_shang.png" mode="widthFix"></image>
@@ -97,8 +97,8 @@
timelineList:Array, //发展时间线数组
},
methods: {
clickAction() {
this.$emit('detail')
clickAction(item) {
this.$emit('detail',item)
}
}
}

View File

@@ -37,10 +37,10 @@
</view>
</view>
</view>
<view class="flex"
<view v-if="financialMetricsInfo" class="flex"
style="font-size: 22rpx; color: #999999; font-weight: 500; margin: 20rpx; padding: 20rpx;border: 1rpx solid #F5F5F5; border-radius: 10rpx;">
<view style="width: 195rpx;">
<view style="font-weight: bold; color: #EC3440; font-size: 30rpx;">93.52%</view>
<view style="font-weight: bold; color: #EC3440; font-size: 30rpx;">{{financialMetricsInfo.solvency.asset_liability_ratio}}%</view>
<view style="margin-top: 10rpx;">资产负债率</view>
</view>
<view>
@@ -49,8 +49,8 @@
<text style="color: #A97F53; font-size: 20rpx; padding: 2rpx 5rpx; background-color: #F8F4ED; border: 1rpx solid #F1E7D8; border-radius: 3rpx;">安全边际</text>
</view>
<view style="margin-top: 10rpx;">
<text style="color: #EC3440;">风险</text>
<text style="margin-left: 10rpx;">流动比率 0.73|研发费用率 5.48%</text>
<text :style="'color: '+(getDebtStatusText(financialMetricsInfo.solvency.asset_liability_ratio).color)">{{getDebtStatusText(financialMetricsInfo.solvency.asset_liability_ratio).text}}</text>
<text style="margin-left: 10rpx;">流动比率 {{financialMetricsInfo.solvency.current_ratio}}|研发费用率 {{financialMetricsInfo.expense_ratios.rd_expense_ratio}}%</text>
</view>
</view>
</view>
@@ -190,6 +190,7 @@
},
props: {
stockInfo:Object,
financialMetricsInfo:Object,
barCategoryList:Array,
barList:Array,
lineList:Array, //折线图数据
@@ -252,6 +253,16 @@
chart.setOption(that.option2)
}, 2000);
},
/**
* 获取资产负债状态
*/
getDebtStatusText(value) {
if (value < 40)
return { text: '安全', color: 'green' };
if (value < 60) return { text: '适中', color: 'gold' };
if (value < 70) return { text: '偏高', color: 'orange' };
return { text: '风险', color: 'red' };
},
itemClick(index) {
uni.navigateTo({
url: `/pagesStock/stockCenterDetails/cwDetails?index=${index}`

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: '新闻动态'
},
@@ -600,7 +609,6 @@
getLocalDate:getLocalDate,
getRateUpOrDown:getRateUpOrDown, //判断涨跌
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
@@ -746,12 +765,18 @@
{
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=>{
})
},
/**
* 获取新闻动态数据
*/
@@ -1735,4 +1811,78 @@
}
}
}
.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>

View File

@@ -215,6 +215,18 @@ export const financialComparison = (code,param) => get('/api/financial/compariso
* 主营业务
*/
export const financialMainBusiness = (code,param) => get('/api/financial/main-business/'+code,param,true)
/**
* 资产负债表
*/
export const financialBalanceSheet = (code,param) => get('/api/financial/balance-sheet/'+code,param,true)
/**
* 现金流量表
*/
export const cashflowSheet = (code,param) => get('/api/financial/cashflow/'+code,param,true)
/**
* 利润表
*/
export const incomeStatementSheet = (code,param) => get('/api/financial/income-statement/'+code,param,true)
/**
* 公司公告
*/

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -7051,9 +7051,9 @@ function isConsoleWritable() {
return isWritable;
}
function initRuntimeSocketService() {
const hosts = "127.0.0.1,192.168.2.28";
const hosts = "127.0.0.1,192.168.2.91";
const port = "8090";
const id = "mp-weixin_6VDL_I";
const id = "mp-weixin_D36YnR";
const lazy = typeof swan !== "undefined";
let restoreError = lazy ? () => {
} : initOnError();

View File

@@ -1,10 +1,216 @@
"use strict";
const utils_util = require("../../utils/util.js");
const common_vendor = require("../../common/vendor.js");
const common_assets = require("../../common/assets.js");
const _sfc_main = {
name: "cwsj-view",
data() {
return {};
return {
profitabilityIndicatorIndex: 0,
profitIndicatorIndex: 0,
cashFlowIndicatorIndex: 0,
option1: {
legend: {
show: true,
data: ["期间费用", "同比(右)"]
},
grid: {
left: "2%",
right: "2%",
top: "5%",
bottom: "30%"
},
xAxis: {
type: "category",
data: [],
axisLabel: {
rotate: 45,
fontSize: 10
}
},
yAxis: [
{
type: "value",
name: "(%)",
position: "left",
alignTicks: true,
axisLine: {
onZero: false
}
},
{
type: "value",
name: "(%)",
position: "right",
alignTicks: true,
axisLine: {
onZero: false
}
}
],
dataZoom: [{
type: "slider"
}],
series: [
{
type: "bar",
name: "ROE",
data: [],
yAxisIndex: 0
},
{
type: "line",
name: "同比",
data: [],
yAxisIndex: 1
}
]
},
option2: {
legend: {
show: true,
data: ["经营现金流", "同比(右)"]
},
grid: {
left: "2%",
right: "2%",
top: "5%",
bottom: "30%"
},
xAxis: {
type: "category",
data: [],
axisLabel: {
fontSize: 10,
rotate: 45
}
},
yAxis: [
{
type: "value",
name: "(%)",
position: "left",
alignTicks: true,
axisLine: {
onZero: false
}
},
{
type: "value",
name: "(%)",
position: "right",
alignTicks: true,
axisLine: {
onZero: false
}
}
],
dataZoom: [{
type: "slider"
}],
series: [
{
type: "bar",
name: "ROE",
data: [],
yAxisIndex: 0
},
{
type: "line",
name: "同比",
data: [],
yAxisIndex: 1
}
]
},
option3: {
legend: {
show: true,
data: ["期间费用", "同比(右)"]
},
grid: {
left: "2%",
right: "2%",
top: "5%",
bottom: "30%"
},
xAxis: {
type: "category",
data: [],
axisLabel: {
rotate: 45,
fontSize: 10
}
},
yAxis: [
{
type: "value",
name: "(%)",
position: "left",
alignTicks: true,
axisLine: {
onZero: false
}
},
{
type: "value",
name: "(%)",
position: "right",
alignTicks: true,
axisLine: {
onZero: false
}
}
],
dataZoom: [{
type: "slider"
}],
series: [
{
type: "bar",
name: "ROE",
data: [],
yAxisIndex: 0
},
{
type: "line",
name: "同比",
data: [],
yAxisIndex: 1
}
]
},
getNumStr: utils_util.getNumStr
};
},
props: {
financialBalanceList: Array,
//资产负债表
cashFlowList: Array,
//现金流量表
incomeStatementList: Array
//利润表
},
watch: {},
methods: {
/**
* 点击切换现金流量表指标
* @param {Object} index
*/
clickCashFlowIndicatorItem(index) {
if (this.cashFlowIndicatorIndex != index) {
this.cashFlowIndicatorIndex = index;
}
},
/**
* 点击切换利润表指标
* @param {Object} index
*/
clickProfitIndicatorItem(index) {
if (this.profitIndicatorIndex != index) {
this.profitIndicatorIndex = index;
}
}
}
};
if (!Array) {
@@ -16,53 +222,59 @@ if (!Math) {
_easycom_l_echart();
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
return common_vendor.e({
a: common_assets._imports_0$8,
b: common_assets._imports_1$2,
c: common_vendor.f(["货币资金", "所有者权益", "关键指标"], (item, index, i0) => {
return {
a: common_vendor.t(item),
b: index == 0 ? "#BB8520" : "#999999",
c: `1rpx solid ${index == 0 ? "#F2C369" : "#D2D2D2"}`,
d: index == 0 ? "#FFFAF1" : "#FFFFFF",
e: index
b: common_vendor.n("item flexCenter " + ($data.cashFlowIndicatorIndex == index ? "select" : "")),
c: index
};
}),
d: common_assets._imports_2$14,
e: common_assets._imports_3$13,
f: common_vendor.o(($event) => _ctx.itemClick(0)),
g: common_assets._imports_0$8,
h: common_assets._imports_1$2,
i: common_vendor.f(["经营现金流", "筹资现金流", "投资现金流"], (item, index, i0) => {
f: common_vendor.sr("chartRef1", "63ca7cac-0"),
g: $props.financialBalanceList.length > 0
}, $props.financialBalanceList.length > 0 ? {
h: common_vendor.t($data.getNumStr($props.financialBalanceList[0].assets.total)),
i: common_vendor.t($data.getNumStr($props.financialBalanceList[0].liabilities.total)),
j: common_vendor.t($data.getNumStr($props.financialBalanceList[0].equity.total)),
k: common_vendor.t($data.getNumStr($props.financialBalanceList[0].assets.current_assets.cash)),
l: common_vendor.t($data.getNumStr($props.financialBalanceList[0].equity.capital_reserve)),
m: common_vendor.t($data.getNumStr($props.financialBalanceList[0].equity.surplus_reserve)),
n: common_vendor.t($data.getNumStr($props.financialBalanceList[0].equity.undistributed_profit))
} : {}, {
o: common_vendor.o(($event) => _ctx.itemClick(0)),
p: common_assets._imports_0$8,
q: common_assets._imports_1$2,
r: common_vendor.f(["经营现金流", "筹资现金流", "投资现金流"], (item, index, i0) => {
return {
a: common_vendor.t(item),
b: index == 0 ? "#BB8520" : "#999999",
c: `1rpx solid ${index == 0 ? "#F2C369" : "#D2D2D2"}`,
d: index == 0 ? "#FFFAF1" : "#FFFFFF",
e: index
b: common_vendor.n("item flexCenter " + ($data.cashFlowIndicatorIndex == index ? "select" : "")),
c: index,
d: common_vendor.o(($event) => $options.clickCashFlowIndicatorItem(index), index)
};
}),
j: common_assets._imports_2$14,
k: common_assets._imports_3$13,
l: common_vendor.o(($event) => _ctx.itemClick(1)),
m: common_assets._imports_0$8,
n: common_assets._imports_1$2,
o: common_vendor.f(["净利润", "营业收入", "期间费用"], (item, index, i0) => {
s: common_assets._imports_2$14,
t: common_assets._imports_3$13,
v: common_vendor.sr("chartRef2", "63ca7cac-1"),
w: common_assets._imports_0$8,
x: common_assets._imports_1$2,
y: common_vendor.f(["净利润", "营业收入", "期间费用"], (item, index, i0) => {
return {
a: common_vendor.t(item),
b: index == 0 ? "#BB8520" : "#999999",
c: `1rpx solid ${index == 0 ? "#F2C369" : "#D2D2D2"}`,
d: index == 0 ? "#FFFAF1" : "#FFFFFF",
e: index
b: common_vendor.n("item flexCenter " + ($data.profitIndicatorIndex == index ? "select" : "")),
c: index,
d: common_vendor.o(($event) => $options.clickProfitIndicatorItem(index), index)
};
}),
p: common_assets._imports_2$14,
q: common_assets._imports_3$13,
r: common_assets._imports_2$14,
s: common_assets._imports_3$13,
t: common_vendor.sr("chartRef1", "63ca7cac-0"),
v: common_vendor.o(($event) => _ctx.itemClick(2))
};
z: common_assets._imports_2$14,
A: common_assets._imports_3$13,
B: common_assets._imports_2$14,
C: common_assets._imports_3$13,
D: common_vendor.sr("chartRef3", "63ca7cac-2")
});
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
wx.createComponent(Component);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,12 @@
.indicatorC .item {
padding: 10rpx;
border: 1rpx solid #D2D2D2;
font-size: 20rpx;
color: #999999;
text-align: center;
}
.indicatorC .item.select {
background-color: #FFFAF1;
color: #BB8520;
border: 1rpx solid #F2C369;
}

View File

@@ -18,8 +18,8 @@ const _sfc_main = {
//发展时间线数组
},
methods: {
clickAction() {
this.$emit("detail");
clickAction(item) {
this.$emit("detail", item);
}
}
};
@@ -94,7 +94,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
k: `${item.impact_metrics.impact_score}%`,
l: common_vendor.t(item.impact_metrics.impact_score),
m: index,
n: common_vendor.o((...args) => $options.clickAction && $options.clickAction(...args), index)
n: common_vendor.o(($event) => $options.clickAction(item), index)
});
})
});

View File

@@ -95,6 +95,7 @@ const _sfc_main = {
},
props: {
stockInfo: Object,
financialMetricsInfo: Object,
barCategoryList: Array,
barList: Array,
lineList: Array,
@@ -148,6 +149,18 @@ const _sfc_main = {
chart.setOption(that.option2);
}, 2e3);
},
/**
* 获取资产负债状态
*/
getDebtStatusText(value) {
if (value < 40)
return { text: "安全", color: "green" };
if (value < 60)
return { text: "适中", color: "gold" };
if (value < 70)
return { text: "偏高", color: "orange" };
return { text: "风险", color: "red" };
},
itemClick(index) {
common_vendor.index.navigateTo({
url: `/pagesStock/stockCenterDetails/cwDetails?index=${index}`
@@ -166,16 +179,23 @@ if (!Math) {
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: $props.stockInfo
}, $props.stockInfo ? {
}, $props.stockInfo ? common_vendor.e({
b: common_vendor.t($data.getChgRateStr($props.stockInfo.growth_rates.profit_growth)),
c: common_vendor.t($data.getChgRateStr($props.stockInfo.growth_rates.revenue_growth)),
d: common_vendor.t($data.getChgRateStr($props.stockInfo.key_metrics.roe)),
e: common_vendor.t($data.getChgRateStr($props.stockInfo.key_metrics.net_margin)),
f: common_vendor.t($data.getChgRateStr($props.stockInfo.key_metrics.gross_margin))
} : {}, {
g: common_vendor.sr("chartRef1", "cf18d1d4-0"),
h: common_vendor.sr("chartRef2", "cf18d1d4-1"),
i: common_vendor.f(["业务", "毛利率", "利润", "营收", "营收"], (item, index, i0) => {
f: common_vendor.t($data.getChgRateStr($props.stockInfo.key_metrics.gross_margin)),
g: $props.financialMetricsInfo
}, $props.financialMetricsInfo ? {
h: common_vendor.t($props.financialMetricsInfo.solvency.asset_liability_ratio),
i: common_vendor.t($options.getDebtStatusText($props.financialMetricsInfo.solvency.asset_liability_ratio).text),
j: common_vendor.s("color: " + $options.getDebtStatusText($props.financialMetricsInfo.solvency.asset_liability_ratio).color),
k: common_vendor.t($props.financialMetricsInfo.solvency.current_ratio),
l: common_vendor.t($props.financialMetricsInfo.expense_ratios.rd_expense_ratio)
} : {}) : {}, {
m: common_vendor.sr("chartRef1", "cf18d1d4-0"),
n: common_vendor.sr("chartRef2", "cf18d1d4-1"),
o: common_vendor.f(["业务", "毛利率", "利润", "营收", "营收"], (item, index, i0) => {
return common_vendor.e({
a: common_vendor.t(item),
b: ["", "(2025年中报)", "(2025年中报)", "(2025年中报)", "(2024年年报)"][index].length > 0
@@ -187,9 +207,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
f: index == 0 ? "flex-start" : "center"
});
}),
j: $props.productClassificationList.length > 0
p: $props.productClassificationList.length > 0
}, $props.productClassificationList.length > 0 ? {
k: common_vendor.f($props.productClassificationList[0].products, (item, index, i0) => {
q: common_vendor.f($props.productClassificationList[0].products, (item, index, i0) => {
return {
a: common_vendor.t(item.content),
b: common_vendor.t(item.profit_margin.toFixed(2)),

View File

@@ -1 +1 @@
<view><block wx:if="{{a}}"><view class="flex" style="font-size:22rpx;color:#999999;font-weight:500;margin:20rpx;padding:20rpx;box-sizing:border-box;border:1rpx solid #F5F5F5;border-radius:10rpx"><view style="width:195rpx"><view style="font-weight:bold;color:#1DB26F;font-size:30rpx">{{b}}%</view><view style="margin-top:10rpx">利润增长</view></view><view><view class="flex"><text style="font-weight:bold;color:#070707;font-size:26rpx;margin-right:10rpx">成长能力</text><text style="color:#A97F53;font-size:20rpx;padding:2rpx 5rpx;background-color:#F8F4ED;border:1rpx solid #F1E7D8;border-radius:3rpx">增长动力</text></view><view style="margin-top:10rpx"><text>营收增长</text><text style="color:#1DB26F;margin:0 10rpx">{{c}}%</text><text style="color:#F59B38">(稳健增长)</text></view></view></view><view class="flex" style="font-size:22rpx;color:#999999;font-weight:500;margin:20rpx;padding:20rpx;box-sizing:border-box;border:1rpx solid #F5F5F5;border-radius:10rpx"><view style="width:195rpx"><view style="font-weight:bold;color:#F59B38;font-size:30rpx">{{d}}%</view><view style="margin-top:10rpx">ROE</view></view><view><view class="flex"><text style="font-weight:bold;color:#070707;font-size:26rpx;margin-right:10rpx">盈利与回报</text><text style="color:#A97F53;font-size:20rpx;padding:2rpx 5rpx;background-color:#F8F4ED;border:1rpx solid #F1E7D8;border-radius:3rpx">赚钱能力</text></view><view style="margin-top:10rpx"><text style="color:#F59B38">良好</text><text style="margin-left:10rpx">净利率 {{e}}%|毛利率 {{f}}%</text></view></view></view><view class="flex" style="font-size:22rpx;color:#999999;font-weight:500;margin:20rpx;padding:20rpx;border:1rpx solid #F5F5F5;border-radius:10rpx"><view style="width:195rpx"><view style="font-weight:bold;color:#EC3440;font-size:30rpx">93.52%</view><view style="margin-top:10rpx">资产负债率</view></view><view><view class="flex"><text style="font-weight:bold;color:#070707;font-size:26rpx;margin-right:10rpx">风险与运营</text><text style="color:#A97F53;font-size:20rpx;padding:2rpx 5rpx;background-color:#F8F4ED;border:1rpx solid #F1E7D8;border-radius:3rpx">安全边际</text></view><view style="margin-top:10rpx"><text style="color:#EC3440">风险</text><text style="margin-left:10rpx">流动比率 0.73|研发费用率 5.48%</text></view></view></view></block><view style="text-align:center;font-size:26rpx;color:#2B2B2B;font-weight:bold;margin:20rpx"> 营收与利润趋势</view><view style="height:400rpx"><l-echart class="r" u-r="chartRef1" u-i="cf18d1d4-0" bind:__l="__l"></l-echart></view><view style="text-align:left;font-size:26rpx;color:#2B2B2B;font-weight:bold;margin:20rpx">主营业务 </view><view style="height:400rpx"><l-echart class="r" u-r="chartRef2" u-i="cf18d1d4-1" bind:__l="__l"></l-echart></view><view style="text-align:left;font-size:26rpx;color:#2B2B2B;font-weight:bold;margin:20rpx"> 主营业务明细与历史对比</view><view style="display:grid;grid-template-columns:130rpx repeat(4, 1fr);color:#666666;font-size:20rpx;font-weight:500;background-color:#FAFAFC;margin:20rpx;margin-bottom:0;padding:10rpx;box-sizing:border-box"><view wx:for="{{i}}" wx:for-item="item" style="{{'display:flex;align-items:center;justify-content:center;flex-direction:column' + ';' + ('text-align:' + item.e + ';' + ('align-items:' + item.f))}}"><view>{{item.a}}</view><view wx:if="{{item.b}}" style="{{'font-size:18rpx' + ';' + ('text-align:' + item.d)}}">{{item.c}}</view></view></view><block wx:if="{{j}}"><view wx:for="{{k}}" wx:for-item="item" wx:key="f" class="table" style="{{'display:grid;grid-template-columns:130rpx repeat(4, 1fr);margin:0 20rpx;padding:10rpx' + ';' + ('background-color:' + item.g)}}"><view class="item">{{item.a}}</view><view class="item flexCenter">{{item.b}}%</view><view class="item flexCenter">{{item.c}}</view><view class="item flexCenter">{{item.d}}</view><view class="item flexCenter">{{item.e}}</view></view></block><view style="height:80rpx"></view></view>
<view><block wx:if="{{a}}"><view class="flex" style="font-size:22rpx;color:#999999;font-weight:500;margin:20rpx;padding:20rpx;box-sizing:border-box;border:1rpx solid #F5F5F5;border-radius:10rpx"><view style="width:195rpx"><view style="font-weight:bold;color:#1DB26F;font-size:30rpx">{{b}}%</view><view style="margin-top:10rpx">利润增长</view></view><view><view class="flex"><text style="font-weight:bold;color:#070707;font-size:26rpx;margin-right:10rpx">成长能力</text><text style="color:#A97F53;font-size:20rpx;padding:2rpx 5rpx;background-color:#F8F4ED;border:1rpx solid #F1E7D8;border-radius:3rpx">增长动力</text></view><view style="margin-top:10rpx"><text>营收增长</text><text style="color:#1DB26F;margin:0 10rpx">{{c}}%</text><text style="color:#F59B38">(稳健增长)</text></view></view></view><view class="flex" style="font-size:22rpx;color:#999999;font-weight:500;margin:20rpx;padding:20rpx;box-sizing:border-box;border:1rpx solid #F5F5F5;border-radius:10rpx"><view style="width:195rpx"><view style="font-weight:bold;color:#F59B38;font-size:30rpx">{{d}}%</view><view style="margin-top:10rpx">ROE</view></view><view><view class="flex"><text style="font-weight:bold;color:#070707;font-size:26rpx;margin-right:10rpx">盈利与回报</text><text style="color:#A97F53;font-size:20rpx;padding:2rpx 5rpx;background-color:#F8F4ED;border:1rpx solid #F1E7D8;border-radius:3rpx">赚钱能力</text></view><view style="margin-top:10rpx"><text style="color:#F59B38">良好</text><text style="margin-left:10rpx">净利率 {{e}}%|毛利率 {{f}}%</text></view></view></view><view wx:if="{{g}}" class="flex" style="font-size:22rpx;color:#999999;font-weight:500;margin:20rpx;padding:20rpx;border:1rpx solid #F5F5F5;border-radius:10rpx"><view style="width:195rpx"><view style="font-weight:bold;color:#EC3440;font-size:30rpx">{{h}}%</view><view style="margin-top:10rpx">资产负债率</view></view><view><view class="flex"><text style="font-weight:bold;color:#070707;font-size:26rpx;margin-right:10rpx">风险与运营</text><text style="color:#A97F53;font-size:20rpx;padding:2rpx 5rpx;background-color:#F8F4ED;border:1rpx solid #F1E7D8;border-radius:3rpx">安全边际</text></view><view style="margin-top:10rpx"><text style="{{j}}">{{i}}</text><text style="margin-left:10rpx">流动比率 {{k}}|研发费用率 {{l}}%</text></view></view></view></block><view style="text-align:center;font-size:26rpx;color:#2B2B2B;font-weight:bold;margin:20rpx"> 营收与利润趋势</view><view style="height:400rpx"><l-echart class="r" u-r="chartRef1" u-i="cf18d1d4-0" bind:__l="__l"></l-echart></view><view style="text-align:left;font-size:26rpx;color:#2B2B2B;font-weight:bold;margin:20rpx">主营业务 </view><view style="height:400rpx"><l-echart class="r" u-r="chartRef2" u-i="cf18d1d4-1" bind:__l="__l"></l-echart></view><view style="text-align:left;font-size:26rpx;color:#2B2B2B;font-weight:bold;margin:20rpx"> 主营业务明细与历史对比</view><view style="display:grid;grid-template-columns:130rpx repeat(4, 1fr);color:#666666;font-size:20rpx;font-weight:500;background-color:#FAFAFC;margin:20rpx;margin-bottom:0;padding:10rpx;box-sizing:border-box"><view wx:for="{{o}}" wx:for-item="item" style="{{'display:flex;align-items:center;justify-content:center;flex-direction:column' + ';' + ('text-align:' + item.e + ';' + ('align-items:' + item.f))}}"><view>{{item.a}}</view><view wx:if="{{item.b}}" style="{{'font-size:18rpx' + ';' + ('text-align:' + item.d)}}">{{item.c}}</view></view></view><block wx:if="{{p}}"><view wx:for="{{q}}" wx:for-item="item" wx:key="f" class="table" style="{{'display:grid;grid-template-columns:130rpx repeat(4, 1fr);margin:0 20rpx;padding:10rpx' + ';' + ('background-color:' + item.g)}}"><view class="item">{{item.a}}</view><view class="item flexCenter">{{item.b}}%</view><view class="item flexCenter">{{item.c}}</view><view class="item flexCenter">{{item.d}}</view><view class="item flexCenter">{{item.e}}</view></view></block><view style="height:80rpx"></view></view>

View File

@@ -180,6 +180,7 @@ const _sfc_main = {
//发展时间线统计信息
timelineList: [],
//发展时间线
selectDevelopmentTimelineInfo: null,
caiWuList: [
{
title: "主营数据"
@@ -204,6 +205,12 @@ const _sfc_main = {
//主营业务折线图数据
productClassificationList: [],
//主营业务产业分类数据
financialBalanceList: [],
//资产负债表
cashFlowList: [],
//现金流量表
incomeStatementList: [],
//利润表
dongTaiList: [
{
title: "新闻动态"
@@ -285,6 +292,7 @@ const _sfc_main = {
} else if (index == 2) {
this.getFinancialStockInfoData();
this.getFinancialComparisonData();
this.getFinancialMetricsData();
this.getFinancialMainBussinessData();
} else if (index == 3) {
this.getNewsListData();
@@ -326,8 +334,14 @@ const _sfc_main = {
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();
}
}
},
@@ -357,12 +371,15 @@ const _sfc_main = {
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.$refs["developmentTimelinePopup"].open();
},
clickCloseDevelopmentTimelinePopup() {
this.$refs["developmentTimelinePopup"].close();
},
/**
* 查看产业链详情
@@ -375,7 +392,7 @@ const _sfc_main = {
/**
* 关闭产业链弹窗
*/
clickCloseValueChainPop() {
clickCloseValueChainPopup() {
this.$refs["valueChainPopup"].close();
},
/**
@@ -692,6 +709,48 @@ const _sfc_main = {
}).catch((error) => {
});
},
/**
* 获取资产负债表数据
*/
getFinancialBalanceSheetData() {
let code = this.stockCode;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
let param = { limit: 8 };
request_api.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 };
request_api.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 };
request_api.incomeStatementSheet(code, param).then((res) => {
this.incomeStatementList = res.data;
}).catch((error) => {
});
},
/**
* 获取新闻动态数据
*/
@@ -925,7 +984,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
} : {}, {
ax: $data.selectInDepthAnalysis == 3
}, $data.selectInDepthAnalysis == 3 ? {
ay: common_vendor.o(($event) => $options.detailShow(1)),
ay: common_vendor.o($options.clickDevelopmentTimelineDetail),
az: common_vendor.p({
keyFactorsInfo: $data.keyFactorsInfo,
keyFactorsList: $data.keyFactorsList,
@@ -950,7 +1009,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
barCategoryList: $data.mainBussinessBarCategoryList,
barList: $data.mainBussinessBarList,
lineList: $data.mainBussinessLineList,
productClassificationList: $data.productClassificationList
productClassificationList: $data.productClassificationList,
financialMetricsInfo: $data.financialMetricsList[0]
})
} : {}, {
aE: $data.selectCaiwu == 1
@@ -960,10 +1020,16 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
})
} : {}, {
aG: $data.selectCaiwu == 2
}, $data.selectCaiwu == 2 ? {} : {}) : {}, {
aH: $data.selectTab == 3
}, $data.selectCaiwu == 2 ? {
aH: common_vendor.p({
financialBalanceList: $data.financialBalanceList,
cashFlowList: $data.cashFlowList,
incomeStatementList: $data.incomeStatementList
})
} : {}) : {}, {
aI: $data.selectTab == 3
}, $data.selectTab == 3 ? {
aI: common_vendor.f($data.dongTaiList, (item, index, i0) => {
aJ: common_vendor.f($data.dongTaiList, (item, index, i0) => {
return {
a: common_vendor.t(item.title),
b: common_vendor.n("item " + ($data.selectDongtai == index ? "select" : "")),
@@ -971,24 +1037,24 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
d: common_vendor.o(($event) => $options.clickDongTaiItem(index), index)
};
}),
aJ: common_vendor.p({
aK: common_vendor.p({
type: $data.selectDongtai,
newsList: $data.newsList,
announcementList: $data.companyAnnouncementList
})
} : {}, {
aK: common_vendor.s("top:" + $data.contentTop + "px;"),
aL: common_vendor.o(($event) => _ctx.sendEventComment()),
aM: _ctx.eventComment,
aN: common_vendor.o(($event) => _ctx.eventComment = $event.detail.value),
aO: common_assets._imports_2$10,
aP: common_assets._imports_3$10,
aQ: common_vendor.o(($event) => $options.clickOptional()),
aR: common_assets._imports_4$9,
aS: common_vendor.o(($event) => $options.clickShare()),
aT: common_assets._imports_9$1,
aU: common_vendor.o(($event) => $options.clickCloseIndustryRankPop()),
aV: common_vendor.f($data.industryRankList, (item, index, i0) => {
aL: common_vendor.s("top:" + $data.contentTop + "px;"),
aM: common_vendor.o(($event) => _ctx.sendEventComment()),
aN: _ctx.eventComment,
aO: common_vendor.o(($event) => _ctx.eventComment = $event.detail.value),
aP: common_assets._imports_2$10,
aQ: common_assets._imports_3$10,
aR: common_vendor.o(($event) => $options.clickOptional()),
aS: common_assets._imports_4$9,
aT: common_vendor.o(($event) => $options.clickShare()),
aU: common_assets._imports_9$1,
aV: common_vendor.o(($event) => $options.clickCloseIndustryRankPop()),
aW: common_vendor.f($data.industryRankList, (item, index, i0) => {
return {
a: common_vendor.f(item.rankings, (ritem, rindex, i1) => {
return common_vendor.e({
@@ -1085,68 +1151,68 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
c: index
};
}),
aW: common_assets._imports_1$13,
aX: common_vendor.sr("industryRankPop", "817d6950-13"),
aY: common_vendor.p({
aX: common_assets._imports_1$13,
aY: common_vendor.sr("industryRankPop", "817d6950-13"),
aZ: common_vendor.p({
type: "bottom"
}),
aZ: common_assets._imports_9$1,
ba: common_vendor.o(($event) => $options.clickCloseValueChainPop()),
bb: $data.selectValueChainInfo
ba: common_assets._imports_9$1,
bb: common_vendor.o(($event) => $options.clickCloseValueChainPopup()),
bc: $data.selectValueChainInfo
}, $data.selectValueChainInfo ? common_vendor.e({
bc: common_vendor.t($data.selectValueChainInfo.node_name),
bd: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
bd: common_vendor.t($data.selectValueChainInfo.node_name),
be: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
}, $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1 ? {
be: common_vendor.t($data.selectValueChainInfo.node_type)
bf: common_vendor.t($data.selectValueChainInfo.node_type)
} : {}, {
bf: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
bg: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
}, $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1 ? {
bg: common_vendor.t($data.selectValueChainInfo.market_share)
bh: common_vendor.t($data.selectValueChainInfo.market_share)
} : {}, {
bh: $data.selectValueChainInfo.node_level == 0
bi: $data.selectValueChainInfo.node_level == 0
}, $data.selectValueChainInfo.node_level == 0 ? {
bi: common_vendor.t($data.selectValueChainInfo.node_type)
bj: common_vendor.t($data.selectValueChainInfo.node_type)
} : {}, {
bj: $data.selectValueChainInfo.node_level == 0
bk: $data.selectValueChainInfo.node_level == 0
}, $data.selectValueChainInfo.node_level == 0 ? {
bk: common_vendor.t($data.selectValueChainInfo.market_share)
bl: common_vendor.t($data.selectValueChainInfo.market_share)
} : {}, {
bl: $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2
bm: $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2
}, $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2 ? {
bm: common_vendor.t($data.selectValueChainInfo.node_type)
bn: common_vendor.t($data.selectValueChainInfo.node_type)
} : {}, {
bn: $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2
bo: $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2
}, $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2 ? {
bo: common_vendor.t($data.selectValueChainInfo.market_share)
bp: common_vendor.t($data.selectValueChainInfo.market_share)
} : {}, {
bp: common_vendor.t($data.selectValueChainInfo.node_description),
bq: common_vendor.t($data.selectValueChainInfo.importance_score),
br: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
bq: common_vendor.t($data.selectValueChainInfo.node_description),
br: common_vendor.t($data.selectValueChainInfo.importance_score),
bs: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
}, $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1 ? {
bs: common_vendor.s("width:" + ($data.selectValueChainInfo.importance_score ? $data.selectValueChainInfo.importance_score : 0) + "%;")
bt: common_vendor.s("width:" + ($data.selectValueChainInfo.importance_score ? $data.selectValueChainInfo.importance_score : 0) + "%;")
} : {}, {
bt: $data.selectValueChainInfo.node_level == 0
bv: $data.selectValueChainInfo.node_level == 0
}, $data.selectValueChainInfo.node_level == 0 ? {
bv: common_vendor.s("width:" + $data.selectValueChainInfo.importance_score + "%;")
bw: common_vendor.s("width:" + $data.selectValueChainInfo.importance_score + "%;")
} : {}, {
bw: $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2
bx: $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2
}, $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2 ? {
bx: common_vendor.s("width:" + $data.selectValueChainInfo.importance_score + "%;")
by: common_vendor.s("width:" + $data.selectValueChainInfo.importance_score + "%;")
} : {}, {
by: common_vendor.t($data.selectValueChainInfo.dependency_degree),
bz: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
bz: common_vendor.t($data.selectValueChainInfo.dependency_degree),
bA: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
}, $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1 ? {
bA: common_vendor.s("width:" + ($data.selectValueChainInfo.dependency_degree ? $data.selectValueChainInfo.dependency_degree : 0) + "%;")
bB: common_vendor.s("width:" + ($data.selectValueChainInfo.dependency_degree ? $data.selectValueChainInfo.dependency_degree : 0) + "%;")
} : {}, {
bB: $data.selectValueChainInfo.node_level == 0
bC: $data.selectValueChainInfo.node_level == 0
}, $data.selectValueChainInfo.node_level == 0 ? {
bC: common_vendor.s("width:" + ($data.selectValueChainInfo.dependency_degree ? $data.selectValueChainInfo.dependency_degree : 0) + "%;")
bD: common_vendor.s("width:" + ($data.selectValueChainInfo.dependency_degree ? $data.selectValueChainInfo.dependency_degree : 0) + "%;")
} : {}, {
bD: $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2
bE: $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2
}, $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2 ? {
bE: common_vendor.s("width:" + ($data.selectValueChainInfo.dependency_degree ? $data.selectValueChainInfo.dependency_degree : 0) + "%;")
bF: common_vendor.s("width:" + ($data.selectValueChainInfo.dependency_degree ? $data.selectValueChainInfo.dependency_degree : 0) + "%;")
} : {}, {
bF: common_vendor.f($data.relatedCompanyList, (item, index, i0) => {
bG: common_vendor.f($data.relatedCompanyList, (item, index, i0) => {
return common_vendor.e({
a: common_vendor.t(item.stock_name),
b: common_vendor.t(item.stock_code),
@@ -1161,14 +1227,27 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
});
})
}) : {}, {
bG: common_vendor.sr("valueChainPopup", "817d6950-14"),
bH: common_vendor.p({
bH: common_vendor.sr("valueChainPopup", "817d6950-14"),
bI: common_vendor.p({
type: "bottom",
safeArea: false
}),
bI: common_assets._imports_9$1,
bJ: common_vendor.sr("detailInfoPopup", "817d6950-15"),
bK: common_vendor.p({
bJ: common_assets._imports_9$1,
bK: common_vendor.o(($event) => $options.clickCloseDevelopmentTimelinePopup()),
bL: $data.selectDevelopmentTimelineInfo
}, $data.selectDevelopmentTimelineInfo ? {
bM: common_vendor.t($data.selectDevelopmentTimelineInfo.event_title),
bN: common_vendor.t($data.selectDevelopmentTimelineInfo.event_type),
bO: common_vendor.n("eventType " + ($data.selectDevelopmentTimelineInfo.impact_metrics.is_positive == 1 ? "positive" : "negative")),
bP: common_vendor.t($data.selectDevelopmentTimelineInfo.event_date),
bQ: common_vendor.t($data.selectDevelopmentTimelineInfo.event_desc),
bR: common_vendor.t($data.selectDevelopmentTimelineInfo.related_info.financial_impact),
bS: common_vendor.n("progress " + ($data.selectDevelopmentTimelineInfo.impact_metrics.is_positive == 1 ? "positive" : "negative")),
bT: common_vendor.s("width: " + $data.selectDevelopmentTimelineInfo.impact_metrics.impact_score + "%;"),
bU: common_vendor.t($data.selectDevelopmentTimelineInfo.impact_metrics.impact_score)
} : {}, {
bV: common_vendor.sr("developmentTimelinePopup", "817d6950-15"),
bW: common_vendor.p({
type: "bottom",
safeArea: false
})

File diff suppressed because one or more lines are too long

View File

@@ -473,3 +473,62 @@ page {
.valueChainPopup .valueChainInfoC .progressBgC .progress.downstream {
background: linear-gradient(90deg, #48D394 0%, #1DB26F 100%);
}
.developmentTimelinePopup {
background-color: white;
border-radius: 20rpx 20rpx 0 0;
}
.developmentTimelinePopup .popTitle {
margin: 0 20rpx;
line-height: 100rpx;
border-bottom: solid 1rpx #E7E7E7;
font-size: 35rpx;
font-weight: bold;
color: #333;
text-align: center;
}
.developmentTimelinePopup .closeC {
top: 0;
right: 0;
padding: 40rpx 26rpx;
}
.developmentTimelinePopup .closeC .icon {
display: block;
width: 20rpx;
height: auto;
}
.developmentTimelinePopup .eventTypeDateC .eventType {
margin-right: 17rpx;
font-size: 20;
border-radius: 5rpx;
line-height: 40rpx;
padding: 0 10rpx;
}
.developmentTimelinePopup .eventTypeDateC .eventType.positive {
background-color: #FFE7E9;
color: #EC3440;
}
.developmentTimelinePopup .eventTypeDateC .eventType.negative {
background-color: #DEEED6;
color: #345423;
}
.developmentTimelinePopup .eventTypeDateC .date {
font-size: 22rpx;
color: #999;
}
.developmentTimelinePopup .progressBgC {
background-color: #EFEFEF;
margin-left: 13rpx;
width: 200rpx;
height: 10rpx;
border-radius: 5rpx;
}
.developmentTimelinePopup .progressBgC .progress {
height: 100%;
border-radius: 5rpx;
}
.developmentTimelinePopup .progressBgC .progress.positive {
background: linear-gradient(90deg, #FF525D 0%, #EC3440 100%);
}
.developmentTimelinePopup .progressBgC .progress.negative {
background: linear-gradient(90deg, #537D3D 0%, #345423 100%);
}

View File

@@ -48,6 +48,9 @@ const financialStockInfo = (code) => request_http.get("/api/financial/stock-info
const financialMetrics = (code, param) => request_http.get("/api/financial/financial-metrics/" + code, param, true);
const financialComparison = (code, param) => request_http.get("/api/financial/comparison/" + code, param, true);
const financialMainBusiness = (code, param) => request_http.get("/api/financial/main-business/" + code, param, true);
const financialBalanceSheet = (code, param) => request_http.get("/api/financial/balance-sheet/" + code, param, true);
const cashflowSheet = (code, param) => request_http.get("/api/financial/cashflow/" + code, param, true);
const incomeStatementSheet = (code, param) => request_http.get("/api/financial/income-statement/" + code, param, true);
const companyAnnouncementsList = (code, param) => request_http.get("/api/stock/" + code + "/announcements", param, true);
const userInfo = (param) => request_http.get("/api/user/profile", param);
const membershipStatus = (param) => request_http.get("/api/membership/status", param);
@@ -70,6 +73,7 @@ exports.calendarCombinedData = calendarCombinedData;
exports.calendarDataList = calendarDataList;
exports.calendarEventCount = calendarEventCount;
exports.calendarEventList = calendarEventList;
exports.cashflowSheet = cashflowSheet;
exports.commentEvent = commentEvent;
exports.companyAnnouncementsList = companyAnnouncementsList;
exports.comprehensiveAnalysis = comprehensiveAnalysis;
@@ -86,12 +90,14 @@ exports.eventRelatedConcept = eventRelatedConcept;
exports.eventRelatedStock = eventRelatedStock;
exports.feedback = feedback;
exports.filterOptions = filterOptions;
exports.financialBalanceSheet = financialBalanceSheet;
exports.financialComparison = financialComparison;
exports.financialMainBusiness = financialMainBusiness;
exports.financialMetrics = financialMetrics;
exports.financialStockInfo = financialStockInfo;
exports.followEvent = followEvent;
exports.homeData = homeData;
exports.incomeStatementSheet = incomeStatementSheet;
exports.industryCategoryList = industryCategoryList;
exports.industryRankList = industryRankList;
exports.investEventDetails = investEventDetails;