This commit is contained in:
renzhijun
2026-01-31 09:45:00 +08:00
23 changed files with 967 additions and 209 deletions

View File

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

View File

@@ -10,16 +10,14 @@
style="width: 13rpx; height: 22rpx;"></image> style="width: 13rpx; height: 22rpx;"></image>
</view> </view>
<view style="display: grid; gap: 20rpx; grid-template-columns: repeat(3, 1fr); margin: 0 20rpx;"> <view class="indicatorC" style="display: grid; gap: 20rpx; grid-template-columns: repeat(3, 1fr); margin: 0 20rpx;">
<view <view :class="'item flexCenter '+(cashFlowIndicatorIndex==index?'select':'')"
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"> v-for="(item,index) in ['货币资金', '所有者权益', '关键指标']" :key="index">
{{item}} {{item}}
</view> </view>
</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 class="flex1" style="font-size: 28rpx;">查看详细数据</view>
<view <view
style="color: #F2C369; font-size: 22rpx; padding: 2rpx 10rpx; border-radius: 5rpx; border: 1rpx solid #F2C369; text-align: center; margin: 0 10rpx;"> 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> mode="widthFix"></image>
</view> </view>
</view> </view>
<view style="height: 400rpx;">
<view <l-echart ref="chartRef1"></l-echart>
style="height: 400rpx; display: flex; align-items: center; justify-content: center; background-color: red;">
折线图占位
</view> </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="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="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>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;"> <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="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>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;"> <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="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>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;"> <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="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>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;"> <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="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>
<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="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>
<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="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>
</view> </view>
<!-- 现金流量表 --> <!-- 现金流量表 -->
<view @click="itemClick(1)" 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;"> <view class="flex" style="padding: 20rpx;">
<image src="/pagesStock/static/icon/cwfx-1.png" mode="widthFix" <image src="/pagesStock/static/icon/cwfx-1.png" mode="widthFix"
style="width: 40rpx; height: 40rpx;"></image> style="width: 40rpx; height: 40rpx;"></image>
<view class="flex1" style="margin: 0 10rpx; font-size: 28rpx;">现金流量表</view> <view class="flex1" style="margin: 0 10rpx; font-size: 28rpx;">现金流量表</view>
@@ -83,16 +76,13 @@
style="width: 13rpx; height: 22rpx;"></image> style="width: 13rpx; height: 22rpx;"></image>
</view> </view>
<view style="display: grid; gap: 20rpx; grid-template-columns: repeat(3, 1fr); margin: 0 20rpx;"> <view class="indicatorC" style="display: grid; gap: 20rpx; grid-template-columns: repeat(3, 1fr); margin: 0 20rpx;">
<view <view :class="'item flexCenter '+(cashFlowIndicatorIndex==index?'select':'')" v-for="(item,index) in ['经营现金流', '筹资现金流', '投资现金流']" :key="index" @click="clickCashFlowIndicatorItem(index)">
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">
{{item}} {{item}}
</view> </view>
</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 class="flex1" style="font-size: 28rpx;">查看详细数据</view>
<view <view
style="color: #F2C369; font-size: 22rpx; padding: 2rpx 10rpx; border-radius: 5rpx; border: 1rpx solid #F2C369; text-align: center; margin: 0 10rpx;"> 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> mode="widthFix"></image>
</view> </view>
</view> </view>
<view style="height: 400rpx;">
<view <l-echart ref="chartRef2"></l-echart>
style="height: 400rpx; display: flex; align-items: center; justify-content: center; background-color: red;">
柱状折线图占位
</view> </view>
<view style="background-color: #FAFAFC; border-radius: 10rpx; margin: 0 20rpx; padding: 20rpx 0;"> <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="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="flex: 1; color: #999999; margin-right: 20rpx;">经营性现金流</view>
@@ -140,7 +127,7 @@
</view> </view>
</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;"> <view style="display: flex;align-items: center; padding: 20rpx; box-sizing: border-box;">
<image src="/pagesStock/static/icon/cwfx-1.png" mode="widthFix" <image src="/pagesStock/static/icon/cwfx-1.png" mode="widthFix"
style="width: 40rpx; height: 40rpx;"></image> style="width: 40rpx; height: 40rpx;"></image>
@@ -149,22 +136,20 @@
style="width: 13rpx; height: 22rpx;"></image> style="width: 13rpx; height: 22rpx;"></image>
</view> </view>
<view style="display: grid; gap: 20rpx; grid-template-columns: repeat(3, 1fr); margin: 0 20rpx;"> <view class="indicatorC" style="display: grid; gap: 20rpx; grid-template-columns: repeat(3, 1fr); margin: 0 20rpx;">
<view <view :class="'item flexCenter '+(profitIndicatorIndex==index?'select':'')"
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;" v-for="(item,index) in ['净利润', '营业收入', '期间费用']" :key="index" @click="clickProfitIndicatorItem(index)">
: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">
{{item}} {{item}}
</view> </view>
</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 class="flex1" style="font-size: 28rpx;">查看详细数据</view>
<view <view
style="color: #F2C369; font-size: 22rpx; padding: 2rpx 10rpx; border-radius: 5rpx; border: 1rpx solid #F2C369; text-align: center; margin: 0 10rpx;"> style="color: #F2C369; font-size: 22rpx; padding: 2rpx 10rpx; border-radius: 5rpx; border: 1rpx solid #F2C369; text-align: center; margin: 0 10rpx;">
单季度</view> 单季度</view>
<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" <image style="width: 23rpx; height: 23rpx;" src="/pagesStock/static/icon/all-icon.png"
mode="widthFix"></image> mode="widthFix"></image>
<view style="margin: 0 10rpx; color: #999999; font-size: 22rpx;">全部</view> <view style="margin: 0 10rpx; color: #999999; font-size: 22rpx;">全部</view>
@@ -172,7 +157,7 @@
mode="widthFix"></image> mode="widthFix"></image>
</view> </view>
<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" <image style="width: 23rpx; height: 23rpx;" src="/pagesStock/static/icon/all-icon.png"
mode="widthFix"></image> mode="widthFix"></image>
<view style="margin: 0 10rpx; color: #999999; font-size: 22rpx;">汇总</view> <view style="margin: 0 10rpx; color: #999999; font-size: 22rpx;">汇总</view>
@@ -182,9 +167,8 @@
</view> </view>
<view style="height: 400rpx;"> <view style="height: 400rpx;">
<l-echart ref="chartRef1"></l-echart> <l-echart ref="chartRef3"></l-echart>
</view> </view>
<view style="background-color: #FAFAFC; border-radius: 10rpx; margin: 0 20rpx; padding: 20rpx 0;"> <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="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="flex: 1; color: #999999; margin-right: 20rpx;">净利润</view>
@@ -216,16 +200,230 @@
</template> </template>
<script> <script>
import { getNumStr } from '../../utils/util';
export default { export default {
name:"cwsj-view", name:"cwsj-view",
data() { 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: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> </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> </style>

View File

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

View File

@@ -37,10 +37,10 @@
</view> </view>
</view> </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;"> 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="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 style="margin-top: 10rpx;">资产负债率</view>
</view> </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> <text style="color: #A97F53; font-size: 20rpx; padding: 2rpx 5rpx; background-color: #F8F4ED; border: 1rpx solid #F1E7D8; border-radius: 3rpx;">安全边际</text>
</view> </view>
<view style="margin-top: 10rpx;"> <view style="margin-top: 10rpx;">
<text style="color: #EC3440;">风险</text> <text :style="'color: '+(getDebtStatusText(financialMetricsInfo.solvency.asset_liability_ratio).color)">{{getDebtStatusText(financialMetricsInfo.solvency.asset_liability_ratio).text}}</text>
<text style="margin-left: 10rpx;">流动比率 0.73|研发费用率 5.48%</text> <text style="margin-left: 10rpx;">流动比率 {{financialMetricsInfo.solvency.current_ratio}}|研发费用率 {{financialMetricsInfo.expense_ratios.rd_expense_ratio}}%</text>
</view> </view>
</view> </view>
</view> </view>
@@ -190,6 +190,7 @@
}, },
props: { props: {
stockInfo:Object, stockInfo:Object,
financialMetricsInfo:Object,
barCategoryList:Array, barCategoryList:Array,
barList:Array, barList:Array,
lineList:Array, //折线图数据 lineList:Array, //折线图数据
@@ -252,6 +253,16 @@
chart.setOption(that.option2) chart.setOption(that.option2)
}, 2000); }, 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) { itemClick(index) {
uni.navigateTo({ uni.navigateTo({
url: `/pagesStock/stockCenterDetails/cwDetails?index=${index}` 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> <cyl-view :valueChainAnalysisInfo="valueChainAnalysisInfo" :totalNodes="totalNodes" :upstreamList="upstreamList" :coreEnterpriseList="coreEnterpriseList" :downstreamList="downstreamList" @detail="clickValueChainDetail"></cyl-view>
</template> </template>
<template v-if="selectInDepthAnalysis==3"> <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> </template>
</block> </block>
<block v-if="selectTab==2"> <block v-if="selectTab==2">
@@ -186,13 +186,14 @@
</view> </view>
</view> </view>
<block v-if="selectCaiwu==0"> <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>
<block v-if="selectCaiwu==1"> <block v-if="selectCaiwu==1">
<cwfx-view :dataList="financialMetricsList"></cwfx-view> <cwfx-view :dataList="financialMetricsList"></cwfx-view>
</block> </block>
<block v-if="selectCaiwu==2"> <block v-if="selectCaiwu==2">
<cwsj-view></cwsj-view> <cwsj-view :financialBalanceList="financialBalanceList" :cashFlowList="cashFlowList" :incomeStatementList="incomeStatementList"></cwsj-view>
</block> </block>
</block> </block>
<block v-if="selectTab==3"> <block v-if="selectTab==3">
@@ -334,7 +335,7 @@
<uni-popup ref="valueChainPopup" type="bottom" :safeArea="false"> <uni-popup ref="valueChainPopup" type="bottom" :safeArea="false">
<view class="valueChainPopup" style="padding-bottom: env(safe-area-inset-bottom);"> <view class="valueChainPopup" style="padding-bottom: env(safe-area-inset-bottom);">
<view class="popTitle">详情</view> <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> <image class="icon" src="/static/icon/home/close.png" mode="widthFix"></image>
</view> </view>
<view v-if="selectValueChainInfo" class="valueChainInfoC" style="height: 60vh;"> <view v-if="selectValueChainInfo" class="valueChainInfoC" style="height: 60vh;">
@@ -396,30 +397,34 @@
</view> </view>
</view> </view>
</uni-popup> </uni-popup>
<uni-popup ref="detailInfoPopup" type="bottom" :safeArea="false"> <uni-popup ref="developmentTimelinePopup" type="bottom" :safeArea="false">
<view class="industryRankPop" style="padding-bottom: env(safe-area-inset-bottom);"> <view class="developmentTimelinePopup" style="padding-bottom: env(safe-area-inset-bottom);">
<view class="popTitle">详情</view> <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> <image class="icon" src="/static/icon/home/close.png" mode="widthFix"></image>
</view> </view>
<view style="max-height: 60vh; padding: 0 20rpx; box-sizing: border-box;"> <view v-if="selectDevelopmentTimelineInfo" style="max-height: 60vh; padding: 0 20rpx;">
<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;"> <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;">不良贷款率连续四年低于1.1%</view> <view style="font-size: 28rpx; font-weight: bold;">{{selectDevelopmentTimelineInfo.event_title}}</view>
<view style="display: flex; align-items: center; margin: 20rpx 0;"> <view class="eventTypeDateC flex" style="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 :class="'eventType '+(selectDevelopmentTimelineInfo.impact_metrics.is_positive==1?'positive':'negative')">{{selectDevelopmentTimelineInfo.event_type}}</view>
<view style="margin-left: 10rpx;">2025-06-30</view> <view class="date">{{selectDevelopmentTimelineInfo.event_date}}</view>
</view> </view>
<view style="color: #BB8520; margin-top: 30rpx;">事件详情</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: #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="color: #BB8520; margin-top: 30rpx;">影响评估</view>
<view style="display: flex; align-items: center; margin-top: 13rpx;"> <view class="flex" style="margin-top: 13rpx;">
<view><text style="color: #71675D;">影响度</text></view> <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;">影响度</text>
<text style="color: #71675D; margin-left: 10rpx;">86 / 100</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> </view>
</scroll-view> </scroll-view>
</view> </view>
@@ -430,7 +435,7 @@
<script> <script>
import { inject } from 'vue' 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' import { getLastNameStr, getLocalDate, getNumStr, getRateUpOrDown, getAgeByBirthYear } from '@/utils/util'
export default { export default {
@@ -569,6 +574,7 @@
keyFactorsList:[], //关键因素 keyFactorsList:[], //关键因素
timelineInfo:null, //发展时间线统计信息 timelineInfo:null, //发展时间线统计信息
timelineList:[], //发展时间线 timelineList:[], //发展时间线
selectDevelopmentTimelineInfo:null,
caiWuList: [{ caiWuList: [{
title: '主营数据' title: '主营数据'
}, },
@@ -586,6 +592,9 @@
mainBussinessBarList:[], //主营业务柱状图数据 mainBussinessBarList:[], //主营业务柱状图数据
mainBussinessLineList:[], //主营业务折线图数据 mainBussinessLineList:[], //主营业务折线图数据
productClassificationList:[], //主营业务产业分类数据 productClassificationList:[], //主营业务产业分类数据
financialBalanceList:[], //资产负债表
cashFlowList:[], //现金流量表
incomeStatementList:[], //利润表
dongTaiList: [{ dongTaiList: [{
title: '新闻动态' title: '新闻动态'
}, },
@@ -600,7 +609,6 @@
getLocalDate:getLocalDate, getLocalDate:getLocalDate,
getRateUpOrDown:getRateUpOrDown, //判断涨跌 getRateUpOrDown:getRateUpOrDown, //判断涨跌
getNumStr:getNumStr, //获取数字展示万或亿 getNumStr:getNumStr, //获取数字展示万或亿
} }
}, },
onLoad(e) { onLoad(e) {
@@ -665,6 +673,7 @@
//获取股票信息数据 //获取股票信息数据
this.getFinancialStockInfoData() this.getFinancialStockInfoData()
this.getFinancialComparisonData() this.getFinancialComparisonData()
this.getFinancialMetricsData()
this.getFinancialMainBussinessData() this.getFinancialMainBussinessData()
}else if(index==3) { }else if(index==3) {
//获取新闻动态数据 //获取新闻动态数据
@@ -711,12 +720,22 @@
clickCaiWuItem(index) { clickCaiWuItem(index) {
if (this.selectCaiwu != index) { if (this.selectCaiwu != index) {
this.selectCaiwu = index this.selectCaiwu = index
if(index==1) { if(index==0) {
//主营数据
this.getFinancialMetricsData() this.getFinancialMetricsData()
}else if(index==1) {
//财务分析
this.getFinancialMetricsData()
}else if(index==2) {
//资产负债表
this.getFinancialBalanceSheetData()
//现金流量表
this.getCashFlowSheetData()
//利润表
this.getIncomeStatementSheetData()
} }
} }
}, },
/** /**
* 点击选择动态分类 * 点击选择动态分类
* @param {Object} index * @param {Object} index
@@ -746,12 +765,18 @@
{ {
this.$refs["industryRankPop"].close() this.$refs["industryRankPop"].close()
}, },
detailShow(type) { /**
if (type == 0) { * 查看发展时间线详情
this.$refs["detailPopup"].open() */
}else { clickDevelopmentTimelineDetail(item)
this.$refs["detailInfoPopup"].open() {
} this.selectDevelopmentTimelineInfo = item;
// this.getValueChainRelatedCompanyData()
this.$refs["developmentTimelinePopup"].open()
},
clickCloseDevelopmentTimelinePopup()
{
this.$refs["developmentTimelinePopup"].close()
}, },
/** /**
* 查看产业链详情 * 查看产业链详情
@@ -765,7 +790,7 @@
/** /**
* 关闭产业链弹窗 * 关闭产业链弹窗
*/ */
clickCloseValueChainPop() clickCloseValueChainPopup()
{ {
this.$refs["valueChainPopup"].close() 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> </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 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; return isWritable;
} }
function initRuntimeSocketService() { 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 port = "8090";
const id = "mp-weixin_6VDL_I"; const id = "mp-weixin_D36YnR";
const lazy = typeof swan !== "undefined"; const lazy = typeof swan !== "undefined";
let restoreError = lazy ? () => { let restoreError = lazy ? () => {
} : initOnError(); } : initOnError();

View File

@@ -1,10 +1,216 @@
"use strict"; "use strict";
const utils_util = require("../../utils/util.js");
const common_vendor = require("../../common/vendor.js"); const common_vendor = require("../../common/vendor.js");
const common_assets = require("../../common/assets.js"); const common_assets = require("../../common/assets.js");
const _sfc_main = { const _sfc_main = {
name: "cwsj-view", name: "cwsj-view",
data() { 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) { if (!Array) {
@@ -16,53 +222,59 @@ if (!Math) {
_easycom_l_echart(); _easycom_l_echart();
} }
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return { return common_vendor.e({
a: common_assets._imports_0$8, a: common_assets._imports_0$8,
b: common_assets._imports_1$2, b: common_assets._imports_1$2,
c: common_vendor.f(["货币资金", "所有者权益", "关键指标"], (item, index, i0) => { c: common_vendor.f(["货币资金", "所有者权益", "关键指标"], (item, index, i0) => {
return { return {
a: common_vendor.t(item), a: common_vendor.t(item),
b: index == 0 ? "#BB8520" : "#999999", b: common_vendor.n("item flexCenter " + ($data.cashFlowIndicatorIndex == index ? "select" : "")),
c: `1rpx solid ${index == 0 ? "#F2C369" : "#D2D2D2"}`, c: index
d: index == 0 ? "#FFFAF1" : "#FFFFFF",
e: index
}; };
}), }),
d: common_assets._imports_2$14, d: common_assets._imports_2$14,
e: common_assets._imports_3$13, e: common_assets._imports_3$13,
f: common_vendor.o(($event) => _ctx.itemClick(0)), f: common_vendor.sr("chartRef1", "63ca7cac-0"),
g: common_assets._imports_0$8, g: $props.financialBalanceList.length > 0
h: common_assets._imports_1$2, }, $props.financialBalanceList.length > 0 ? {
i: common_vendor.f(["经营现金流", "筹资现金流", "投资现金流"], (item, index, i0) => { 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 { return {
a: common_vendor.t(item), a: common_vendor.t(item),
b: index == 0 ? "#BB8520" : "#999999", b: common_vendor.n("item flexCenter " + ($data.cashFlowIndicatorIndex == index ? "select" : "")),
c: `1rpx solid ${index == 0 ? "#F2C369" : "#D2D2D2"}`, c: index,
d: index == 0 ? "#FFFAF1" : "#FFFFFF", d: common_vendor.o(($event) => $options.clickCashFlowIndicatorItem(index), index)
e: index
}; };
}), }),
j: common_assets._imports_2$14, s: common_assets._imports_2$14,
k: common_assets._imports_3$13, t: common_assets._imports_3$13,
l: common_vendor.o(($event) => _ctx.itemClick(1)), v: common_vendor.sr("chartRef2", "63ca7cac-1"),
m: common_assets._imports_0$8, w: common_assets._imports_0$8,
n: common_assets._imports_1$2, x: common_assets._imports_1$2,
o: common_vendor.f(["净利润", "营业收入", "期间费用"], (item, index, i0) => { y: common_vendor.f(["净利润", "营业收入", "期间费用"], (item, index, i0) => {
return { return {
a: common_vendor.t(item), a: common_vendor.t(item),
b: index == 0 ? "#BB8520" : "#999999", b: common_vendor.n("item flexCenter " + ($data.profitIndicatorIndex == index ? "select" : "")),
c: `1rpx solid ${index == 0 ? "#F2C369" : "#D2D2D2"}`, c: index,
d: index == 0 ? "#FFFAF1" : "#FFFFFF", d: common_vendor.o(($event) => $options.clickProfitIndicatorItem(index), index)
e: index
}; };
}), }),
p: common_assets._imports_2$14, z: common_assets._imports_2$14,
q: common_assets._imports_3$13, A: common_assets._imports_3$13,
r: common_assets._imports_2$14, B: common_assets._imports_2$14,
s: common_assets._imports_3$13, C: common_assets._imports_3$13,
t: common_vendor.sr("chartRef1", "63ca7cac-0"), D: common_vendor.sr("chartRef3", "63ca7cac-2")
v: common_vendor.o(($event) => _ctx.itemClick(2)) });
};
} }
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]); const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
wx.createComponent(Component); 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: { methods: {
clickAction() { clickAction(item) {
this.$emit("detail"); this.$emit("detail", item);
} }
} }
}; };
@@ -94,7 +94,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
k: `${item.impact_metrics.impact_score}%`, k: `${item.impact_metrics.impact_score}%`,
l: common_vendor.t(item.impact_metrics.impact_score), l: common_vendor.t(item.impact_metrics.impact_score),
m: index, 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: { props: {
stockInfo: Object, stockInfo: Object,
financialMetricsInfo: Object,
barCategoryList: Array, barCategoryList: Array,
barList: Array, barList: Array,
lineList: Array, lineList: Array,
@@ -148,6 +149,18 @@ const _sfc_main = {
chart.setOption(that.option2); chart.setOption(that.option2);
}, 2e3); }, 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) { itemClick(index) {
common_vendor.index.navigateTo({ common_vendor.index.navigateTo({
url: `/pagesStock/stockCenterDetails/cwDetails?index=${index}` url: `/pagesStock/stockCenterDetails/cwDetails?index=${index}`
@@ -166,16 +179,23 @@ if (!Math) {
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({ return common_vendor.e({
a: $props.stockInfo a: $props.stockInfo
}, $props.stockInfo ? { }, $props.stockInfo ? common_vendor.e({
b: common_vendor.t($data.getChgRateStr($props.stockInfo.growth_rates.profit_growth)), b: common_vendor.t($data.getChgRateStr($props.stockInfo.growth_rates.profit_growth)),
c: common_vendor.t($data.getChgRateStr($props.stockInfo.growth_rates.revenue_growth)), c: common_vendor.t($data.getChgRateStr($props.stockInfo.growth_rates.revenue_growth)),
d: common_vendor.t($data.getChgRateStr($props.stockInfo.key_metrics.roe)), d: common_vendor.t($data.getChgRateStr($props.stockInfo.key_metrics.roe)),
e: common_vendor.t($data.getChgRateStr($props.stockInfo.key_metrics.net_margin)), e: common_vendor.t($data.getChgRateStr($props.stockInfo.key_metrics.net_margin)),
f: common_vendor.t($data.getChgRateStr($props.stockInfo.key_metrics.gross_margin)) f: common_vendor.t($data.getChgRateStr($props.stockInfo.key_metrics.gross_margin)),
} : {}, { g: $props.financialMetricsInfo
g: common_vendor.sr("chartRef1", "cf18d1d4-0"), }, $props.financialMetricsInfo ? {
h: common_vendor.sr("chartRef2", "cf18d1d4-1"), h: common_vendor.t($props.financialMetricsInfo.solvency.asset_liability_ratio),
i: common_vendor.f(["业务", "毛利率", "利润", "营收", "营收"], (item, index, i0) => { 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({ return common_vendor.e({
a: common_vendor.t(item), a: common_vendor.t(item),
b: ["", "(2025年中报)", "(2025年中报)", "(2025年中报)", "(2024年年报)"][index].length > 0 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" f: index == 0 ? "flex-start" : "center"
}); });
}), }),
j: $props.productClassificationList.length > 0 p: $props.productClassificationList.length > 0
}, $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 { return {
a: common_vendor.t(item.content), a: common_vendor.t(item.content),
b: common_vendor.t(item.profit_margin.toFixed(2)), 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: [], timelineList: [],
//发展时间线 //发展时间线
selectDevelopmentTimelineInfo: null,
caiWuList: [ caiWuList: [
{ {
title: "主营数据" title: "主营数据"
@@ -204,6 +205,12 @@ const _sfc_main = {
//主营业务折线图数据 //主营业务折线图数据
productClassificationList: [], productClassificationList: [],
//主营业务产业分类数据 //主营业务产业分类数据
financialBalanceList: [],
//资产负债表
cashFlowList: [],
//现金流量表
incomeStatementList: [],
//利润表
dongTaiList: [ dongTaiList: [
{ {
title: "新闻动态" title: "新闻动态"
@@ -285,6 +292,7 @@ const _sfc_main = {
} else if (index == 2) { } else if (index == 2) {
this.getFinancialStockInfoData(); this.getFinancialStockInfoData();
this.getFinancialComparisonData(); this.getFinancialComparisonData();
this.getFinancialMetricsData();
this.getFinancialMainBussinessData(); this.getFinancialMainBussinessData();
} else if (index == 3) { } else if (index == 3) {
this.getNewsListData(); this.getNewsListData();
@@ -326,8 +334,14 @@ const _sfc_main = {
clickCaiWuItem(index) { clickCaiWuItem(index) {
if (this.selectCaiwu != index) { if (this.selectCaiwu != index) {
this.selectCaiwu = index; this.selectCaiwu = index;
if (index == 1) { if (index == 0) {
this.getFinancialMetricsData(); 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() { clickCloseIndustryRankPop() {
this.$refs["industryRankPop"].close(); this.$refs["industryRankPop"].close();
}, },
detailShow(type) { /**
if (type == 0) { * 查看发展时间线详情
this.$refs["detailPopup"].open(); */
} else { clickDevelopmentTimelineDetail(item) {
this.$refs["detailInfoPopup"].open(); 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(); this.$refs["valueChainPopup"].close();
}, },
/** /**
@@ -692,6 +709,48 @@ const _sfc_main = {
}).catch((error) => { }).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 ax: $data.selectInDepthAnalysis == 3
}, $data.selectInDepthAnalysis == 3 ? { }, $data.selectInDepthAnalysis == 3 ? {
ay: common_vendor.o(($event) => $options.detailShow(1)), ay: common_vendor.o($options.clickDevelopmentTimelineDetail),
az: common_vendor.p({ az: common_vendor.p({
keyFactorsInfo: $data.keyFactorsInfo, keyFactorsInfo: $data.keyFactorsInfo,
keyFactorsList: $data.keyFactorsList, keyFactorsList: $data.keyFactorsList,
@@ -950,7 +1009,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
barCategoryList: $data.mainBussinessBarCategoryList, barCategoryList: $data.mainBussinessBarCategoryList,
barList: $data.mainBussinessBarList, barList: $data.mainBussinessBarList,
lineList: $data.mainBussinessLineList, lineList: $data.mainBussinessLineList,
productClassificationList: $data.productClassificationList productClassificationList: $data.productClassificationList,
financialMetricsInfo: $data.financialMetricsList[0]
}) })
} : {}, { } : {}, {
aE: $data.selectCaiwu == 1 aE: $data.selectCaiwu == 1
@@ -960,10 +1020,16 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
}) })
} : {}, { } : {}, {
aG: $data.selectCaiwu == 2 aG: $data.selectCaiwu == 2
}, $data.selectCaiwu == 2 ? {} : {}) : {}, { }, $data.selectCaiwu == 2 ? {
aH: $data.selectTab == 3 aH: common_vendor.p({
financialBalanceList: $data.financialBalanceList,
cashFlowList: $data.cashFlowList,
incomeStatementList: $data.incomeStatementList
})
} : {}) : {}, {
aI: $data.selectTab == 3
}, $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 { return {
a: common_vendor.t(item.title), a: common_vendor.t(item.title),
b: common_vendor.n("item " + ($data.selectDongtai == index ? "select" : "")), 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) d: common_vendor.o(($event) => $options.clickDongTaiItem(index), index)
}; };
}), }),
aJ: common_vendor.p({ aK: common_vendor.p({
type: $data.selectDongtai, type: $data.selectDongtai,
newsList: $data.newsList, newsList: $data.newsList,
announcementList: $data.companyAnnouncementList announcementList: $data.companyAnnouncementList
}) })
} : {}, { } : {}, {
aK: common_vendor.s("top:" + $data.contentTop + "px;"), aL: common_vendor.s("top:" + $data.contentTop + "px;"),
aL: common_vendor.o(($event) => _ctx.sendEventComment()), aM: common_vendor.o(($event) => _ctx.sendEventComment()),
aM: _ctx.eventComment, aN: _ctx.eventComment,
aN: common_vendor.o(($event) => _ctx.eventComment = $event.detail.value), aO: common_vendor.o(($event) => _ctx.eventComment = $event.detail.value),
aO: common_assets._imports_2$10, aP: common_assets._imports_2$10,
aP: common_assets._imports_3$10, aQ: common_assets._imports_3$10,
aQ: common_vendor.o(($event) => $options.clickOptional()), aR: common_vendor.o(($event) => $options.clickOptional()),
aR: common_assets._imports_4$9, aS: common_assets._imports_4$9,
aS: common_vendor.o(($event) => $options.clickShare()), aT: common_vendor.o(($event) => $options.clickShare()),
aT: common_assets._imports_9$1, aU: common_assets._imports_9$1,
aU: common_vendor.o(($event) => $options.clickCloseIndustryRankPop()), aV: common_vendor.o(($event) => $options.clickCloseIndustryRankPop()),
aV: common_vendor.f($data.industryRankList, (item, index, i0) => { aW: common_vendor.f($data.industryRankList, (item, index, i0) => {
return { return {
a: common_vendor.f(item.rankings, (ritem, rindex, i1) => { a: common_vendor.f(item.rankings, (ritem, rindex, i1) => {
return common_vendor.e({ return common_vendor.e({
@@ -1085,68 +1151,68 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
c: index c: index
}; };
}), }),
aW: common_assets._imports_1$13, aX: common_assets._imports_1$13,
aX: common_vendor.sr("industryRankPop", "817d6950-13"), aY: common_vendor.sr("industryRankPop", "817d6950-13"),
aY: common_vendor.p({ aZ: common_vendor.p({
type: "bottom" type: "bottom"
}), }),
aZ: common_assets._imports_9$1, ba: common_assets._imports_9$1,
ba: common_vendor.o(($event) => $options.clickCloseValueChainPop()), bb: common_vendor.o(($event) => $options.clickCloseValueChainPopup()),
bb: $data.selectValueChainInfo bc: $data.selectValueChainInfo
}, $data.selectValueChainInfo ? common_vendor.e({ }, $data.selectValueChainInfo ? common_vendor.e({
bc: common_vendor.t($data.selectValueChainInfo.node_name), bd: common_vendor.t($data.selectValueChainInfo.node_name),
bd: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1 be: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
}, $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 ? { }, $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 ? { }, $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 ? { }, $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 ? { }, $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 ? { }, $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.node_description),
bq: common_vendor.t($data.selectValueChainInfo.importance_score), br: common_vendor.t($data.selectValueChainInfo.importance_score),
br: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1 bs: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
}, $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 ? { }, $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 ? { }, $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: common_vendor.t($data.selectValueChainInfo.dependency_degree),
bz: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1 bA: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
}, $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 ? { }, $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 ? { }, $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({ return common_vendor.e({
a: common_vendor.t(item.stock_name), a: common_vendor.t(item.stock_name),
b: common_vendor.t(item.stock_code), 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.sr("valueChainPopup", "817d6950-14"),
bH: common_vendor.p({ bI: common_vendor.p({
type: "bottom", type: "bottom",
safeArea: false safeArea: false
}), }),
bI: common_assets._imports_9$1, bJ: common_assets._imports_9$1,
bJ: common_vendor.sr("detailInfoPopup", "817d6950-15"), bK: common_vendor.o(($event) => $options.clickCloseDevelopmentTimelinePopup()),
bK: common_vendor.p({ 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", type: "bottom",
safeArea: false 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 { .valueChainPopup .valueChainInfoC .progressBgC .progress.downstream {
background: linear-gradient(90deg, #48D394 0%, #1DB26F 100%); 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 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 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 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 companyAnnouncementsList = (code, param) => request_http.get("/api/stock/" + code + "/announcements", param, true);
const userInfo = (param) => request_http.get("/api/user/profile", param); const userInfo = (param) => request_http.get("/api/user/profile", param);
const membershipStatus = (param) => request_http.get("/api/membership/status", param); const membershipStatus = (param) => request_http.get("/api/membership/status", param);
@@ -70,6 +73,7 @@ exports.calendarCombinedData = calendarCombinedData;
exports.calendarDataList = calendarDataList; exports.calendarDataList = calendarDataList;
exports.calendarEventCount = calendarEventCount; exports.calendarEventCount = calendarEventCount;
exports.calendarEventList = calendarEventList; exports.calendarEventList = calendarEventList;
exports.cashflowSheet = cashflowSheet;
exports.commentEvent = commentEvent; exports.commentEvent = commentEvent;
exports.companyAnnouncementsList = companyAnnouncementsList; exports.companyAnnouncementsList = companyAnnouncementsList;
exports.comprehensiveAnalysis = comprehensiveAnalysis; exports.comprehensiveAnalysis = comprehensiveAnalysis;
@@ -86,12 +90,14 @@ exports.eventRelatedConcept = eventRelatedConcept;
exports.eventRelatedStock = eventRelatedStock; exports.eventRelatedStock = eventRelatedStock;
exports.feedback = feedback; exports.feedback = feedback;
exports.filterOptions = filterOptions; exports.filterOptions = filterOptions;
exports.financialBalanceSheet = financialBalanceSheet;
exports.financialComparison = financialComparison; exports.financialComparison = financialComparison;
exports.financialMainBusiness = financialMainBusiness; exports.financialMainBusiness = financialMainBusiness;
exports.financialMetrics = financialMetrics; exports.financialMetrics = financialMetrics;
exports.financialStockInfo = financialStockInfo; exports.financialStockInfo = financialStockInfo;
exports.followEvent = followEvent; exports.followEvent = followEvent;
exports.homeData = homeData; exports.homeData = homeData;
exports.incomeStatementSheet = incomeStatementSheet;
exports.industryCategoryList = industryCategoryList; exports.industryCategoryList = industryCategoryList;
exports.industryRankList = industryRankList; exports.industryRankList = industryRankList;
exports.investEventDetails = investEventDetails; exports.investEventDetails = investEventDetails;