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

@@ -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>