2.6 盈利能力模块表格完善
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../../common/vendor.js");
|
||||
const utils_util = require("../../../utils/util.js");
|
||||
const common_assets = require("../../../common/assets.js");
|
||||
const echarts = require("../../../uni_modules/lime-echart/static/echarts.min.js");
|
||||
const _sfc_main = {
|
||||
@@ -33,6 +34,7 @@ const _sfc_main = {
|
||||
}
|
||||
],
|
||||
profitabilityIndicatorIndex: 0,
|
||||
profitabilitySingleQuarterAllIndex: 0,
|
||||
perShareIndicatorList: [
|
||||
{
|
||||
title: "每股收益(EPS)"
|
||||
@@ -60,6 +62,7 @@ const _sfc_main = {
|
||||
}
|
||||
],
|
||||
perShareIndicatorIndex: 0,
|
||||
perShareSingleQuarterAllIndex: 0,
|
||||
option1: {
|
||||
legend: {
|
||||
show: true,
|
||||
@@ -71,14 +74,28 @@ const _sfc_main = {
|
||||
top: "5%",
|
||||
bottom: "30%"
|
||||
},
|
||||
xAxis: {
|
||||
type: "category",
|
||||
data: [],
|
||||
axisLabel: {
|
||||
fontSize: 10,
|
||||
rotate: 45
|
||||
xAxis: [
|
||||
{
|
||||
type: "category",
|
||||
data: [],
|
||||
axisLabel: {
|
||||
fontSize: 10
|
||||
}
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
data: [],
|
||||
axisLine: {
|
||||
show: false
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
axisLabel: {
|
||||
show: false
|
||||
}
|
||||
}
|
||||
},
|
||||
],
|
||||
yAxis: [
|
||||
{
|
||||
type: "value",
|
||||
@@ -99,9 +116,9 @@ const _sfc_main = {
|
||||
}
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: "slider"
|
||||
}],
|
||||
// dataZoom:[{
|
||||
// type:'slider'
|
||||
// }],
|
||||
series: [
|
||||
{
|
||||
type: "bar",
|
||||
@@ -156,9 +173,9 @@ const _sfc_main = {
|
||||
}
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: "slider"
|
||||
}],
|
||||
// dataZoom:[{
|
||||
// type:'slider'
|
||||
// }],
|
||||
series: [
|
||||
{
|
||||
type: "bar",
|
||||
@@ -173,7 +190,10 @@ const _sfc_main = {
|
||||
yAxisIndex: 1
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
accDiv: utils_util.accDiv,
|
||||
accSub: utils_util.accSub,
|
||||
accMul: utils_util.accMul
|
||||
};
|
||||
},
|
||||
props: {
|
||||
@@ -181,31 +201,12 @@ const _sfc_main = {
|
||||
},
|
||||
watch: {
|
||||
dataList(newValue) {
|
||||
let category = [];
|
||||
let data1 = [];
|
||||
let data2 = [];
|
||||
for (let item of newValue) {
|
||||
var type = item.report_type;
|
||||
type = type.replace("年三季报", "Q3");
|
||||
type = type.replace("年一季报", "Q1");
|
||||
type = type.replace("年中报", "中报");
|
||||
type = type.replace("年年报", "年报");
|
||||
category.push(type);
|
||||
if (item.profitability.roe) {
|
||||
data1.push(item.profitability.roe.toFixed(2));
|
||||
} else
|
||||
data1.push(0);
|
||||
if (item.per_share_metrics.eps) {
|
||||
data2.push(item.per_share_metrics.eps.toFixed(2));
|
||||
} else
|
||||
data2.push(0);
|
||||
if (this.profitabilitySingleQuarterAllIndex == 0) {
|
||||
this.getROESingleQuarterData();
|
||||
} else {
|
||||
this.getROEAllData();
|
||||
}
|
||||
this.option1.xAxis.data = category;
|
||||
this.option1.series[0].data = data1;
|
||||
this.profitabilityInit();
|
||||
this.option2.xAxis.data = category;
|
||||
this.option2.series[0].data = data2;
|
||||
this.perShareInit();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -226,11 +227,10 @@ const _sfc_main = {
|
||||
this.profitabilityIndicatorIndex = index;
|
||||
let data = [];
|
||||
if (index == 0) {
|
||||
for (let item of this.dataList) {
|
||||
if (item.profitability.roe) {
|
||||
data.push(item.profitability.roe.toFixed(2));
|
||||
} else
|
||||
data.push(0);
|
||||
if (this.profitabilitySingleQuarterAllIndex == 0) {
|
||||
this.getROESingleQuarterData();
|
||||
} else {
|
||||
this.getROEAllData();
|
||||
}
|
||||
} else if (index == 1) {
|
||||
for (let item of this.dataList) {
|
||||
@@ -241,8 +241,8 @@ const _sfc_main = {
|
||||
}
|
||||
} else if (index == 2) {
|
||||
for (let item of this.dataList) {
|
||||
if (item.profitability.roe_deducted) {
|
||||
data.push(item.profitability.roe_deducted.toFixed(2));
|
||||
if (item.profitability.roe_weighted) {
|
||||
data.push(item.profitability.roe_weighted.toFixed(2));
|
||||
} else
|
||||
data.push(0);
|
||||
}
|
||||
@@ -286,6 +286,303 @@ const _sfc_main = {
|
||||
this.profitabilityInit();
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 盈利能力切换单季度还是全部
|
||||
*/
|
||||
clickProfitabilitySingleQuarterOrAll(index) {
|
||||
if (this.profitabilitySingleQuarterAllIndex != index) {
|
||||
this.profitabilitySingleQuarterAllIndex = index;
|
||||
if (index == 0) {
|
||||
if (this.profitabilityIndicatorIndex == 0) {
|
||||
this.getROESingleQuarterData();
|
||||
} else if (this.profitabilityIndicatorIndex == 1) {
|
||||
this.getOwnerEquitySingleQuarterData();
|
||||
} else if (this.profitabilityIndicatorIndex == 2) {
|
||||
this.getOwnerEquitySingleQuarterData();
|
||||
}
|
||||
} else {
|
||||
if (this.profitabilityIndicatorIndex == 0) {
|
||||
this.getROEAllData();
|
||||
} else if (this.profitabilityIndicatorIndex == 1) {
|
||||
this.getOwnerEquityAllData();
|
||||
}
|
||||
}
|
||||
this.profitabilityInit();
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 获取净资产收益率单季度数据
|
||||
*/
|
||||
getROESingleQuarterData() {
|
||||
let category = [];
|
||||
let currentYear = this.dataList[0].period.split("-")[0];
|
||||
var currentYearCount = 0;
|
||||
for (let item of this.dataList) {
|
||||
let year = item.period.split("-")[0];
|
||||
if (year == currentYear) {
|
||||
currentYearCount++;
|
||||
}
|
||||
}
|
||||
let years = (16 - currentYearCount) / 4;
|
||||
let showDataCount = years * 4 + currentYearCount;
|
||||
let showDataList = this.dataList.slice(0, showDataCount);
|
||||
for (var i = 0; i <= years; i++) {
|
||||
category.unshift(currentYear - i);
|
||||
}
|
||||
let data1 = [];
|
||||
let data2 = [];
|
||||
let data3 = [];
|
||||
let data4 = [];
|
||||
for (let item of showDataList) {
|
||||
for (let item1 of category) {
|
||||
let index = showDataList.indexOf(item);
|
||||
let lastItem = showDataList[index + 1];
|
||||
if (item1 + "年一季报" == item.report_type) {
|
||||
if (item.profitability.roe) {
|
||||
data1.unshift(item.profitability.roe.toFixed(2));
|
||||
} else
|
||||
data1.unshift(0);
|
||||
}
|
||||
if (item1 + "年中报" == item.report_type) {
|
||||
if (item.profitability.roe) {
|
||||
data2.unshift(utils_util.accSub(item.profitability.roe, lastItem.profitability.roe));
|
||||
} else
|
||||
data2.unshift(0);
|
||||
}
|
||||
if (item1 + "年三季报" == item.report_type) {
|
||||
if (item.profitability.roe) {
|
||||
data3.unshift(utils_util.accSub(item.profitability.roe, lastItem.profitability.roe));
|
||||
} else
|
||||
data3.unshift(0);
|
||||
}
|
||||
if (item1 + "年年报" == item.report_type) {
|
||||
if (item.profitability.roe) {
|
||||
data4.unshift(utils_util.accSub(item.profitability.roe, lastItem.profitability.roe));
|
||||
} else
|
||||
data4.unshift(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
common_vendor.index.__f__("log", "at pagesStock/components/cwfx-view/cwfx-view.vue:476", data1, data2, data3, data4);
|
||||
let sumData = [];
|
||||
for (var i = 0; i < data1.length; i++) {
|
||||
let sum = data1[i];
|
||||
sum = utils_util.accAdd(sum, data2[i] ? data2[i] : 0);
|
||||
sum = utils_util.accAdd(sum, data3[i] ? data3[i] : 0);
|
||||
sum = utils_util.accAdd(sum, data4[i] ? data4[i] : 0).toFixed(2);
|
||||
if (sum > 1e4) {
|
||||
sumData.push((sum / 1e4).toFixed(2) + "万");
|
||||
} else
|
||||
sumData.push(sum);
|
||||
}
|
||||
this.option1.legend.data = ["第一季度", "第二季度", "第三季度", "第四季度"];
|
||||
this.option1.xAxis[0].data = category;
|
||||
this.option1.xAxis[1].data = category;
|
||||
this.option1.series = [
|
||||
{
|
||||
type: "bar",
|
||||
name: "第一季度",
|
||||
barWidth: "15%",
|
||||
data: data1,
|
||||
yAxisIndex: 0
|
||||
},
|
||||
{
|
||||
type: "bar",
|
||||
name: "第二季度",
|
||||
barWidth: "15%",
|
||||
data: data2,
|
||||
yAxisIndex: 0
|
||||
},
|
||||
{
|
||||
type: "bar",
|
||||
name: "第三季度",
|
||||
barWidth: "15%",
|
||||
data: data3,
|
||||
yAxisIndex: 0
|
||||
},
|
||||
{
|
||||
type: "bar",
|
||||
name: "第四季度",
|
||||
barWidth: "15%",
|
||||
data: data4,
|
||||
yAxisIndex: 0
|
||||
},
|
||||
{
|
||||
type: "bar",
|
||||
name: "总值",
|
||||
data: sumData,
|
||||
barWidth: "70%",
|
||||
xAxisIndex: 1,
|
||||
yAxisIndex: 0,
|
||||
itemStyle: {
|
||||
color: "rgba(0,0,0,0.2)"
|
||||
},
|
||||
label: {
|
||||
show: true,
|
||||
position: "top"
|
||||
}
|
||||
}
|
||||
];
|
||||
},
|
||||
/**
|
||||
* 获取净资产收益率全部数据
|
||||
*/
|
||||
getROEAllData() {
|
||||
let showDataList = this.dataList.slice(0, 8);
|
||||
let category = [];
|
||||
let data1 = [];
|
||||
let data2 = [];
|
||||
let data3 = [];
|
||||
let data4 = [];
|
||||
for (let item of showDataList) {
|
||||
let index = showDataList.indexOf(item);
|
||||
if (index < showDataList.length - 3) {
|
||||
let type = item.report_type;
|
||||
type = type.replaceAll("三季报", "\n三季报");
|
||||
type = type.replaceAll("年报", "\n年报");
|
||||
type = type.replaceAll("中报", "\n中报");
|
||||
type = type.replaceAll("一季报", "\n一季报");
|
||||
category.unshift(type);
|
||||
let lastItem1 = showDataList[index + 1];
|
||||
let lastItem2 = showDataList[index + 2];
|
||||
let lastItem3 = showDataList[index + 3];
|
||||
if (item.report_type.indexOf("三季报") > -1) {
|
||||
if (item.profitability.roe) {
|
||||
data4.unshift(0);
|
||||
data3.unshift(utils_util.accSub(item.profitability.roe, lastItem1.profitability.roe).toFixed(2));
|
||||
data2.unshift(utils_util.accDiv(utils_util.accSub(lastItem1.profitability.roe, lastItem2.profitability.roe), 1e8).toFixed(2));
|
||||
data1.unshift(utils_util.accDiv(lastItem2.profitability.roe, 1e8).toFixed(2));
|
||||
} else {
|
||||
data4.unshift(0);
|
||||
data3.unshift(0);
|
||||
data2.unshift(0);
|
||||
data1.unshift(0);
|
||||
}
|
||||
} else if (item.report_type.indexOf("中报") > -1) {
|
||||
if (item.profitability.roe) {
|
||||
data4.unshift(0);
|
||||
data3.unshift(0);
|
||||
data2.unshift(utils_util.accDiv(utils_util.accSub(item.profitability.roe, lastItem1.profitability.roe), 1e8).toFixed(2));
|
||||
data1.unshift(utils_util.accDiv(lastItem1.profitability.roe, 1e8).toFixed(2));
|
||||
} else {
|
||||
data4.unshift(0);
|
||||
data3.unshift(0);
|
||||
data2.unshift(0);
|
||||
data1.unshift(0);
|
||||
}
|
||||
} else if (item.report_type.indexOf("一季报") > -1) {
|
||||
if (item.profitability.roe) {
|
||||
data4.unshift(0);
|
||||
data3.unshift(0);
|
||||
data2.unshift(0);
|
||||
data1.unshift(utils_util.accDiv(item.profitability.roe, 1e8).toFixed(2));
|
||||
} else {
|
||||
data4.unshift(0);
|
||||
data3.unshift(0);
|
||||
data2.unshift(0);
|
||||
data1.unshift(0);
|
||||
}
|
||||
} else if (item.report_type.indexOf("年报") > -1) {
|
||||
if (item.profitability.roe) {
|
||||
data4.unshift(utils_util.accDiv(utils_util.accSub(item.profitability.roe, lastItem1.profitability.roe), 1e8).toFixed(2));
|
||||
data3.unshift(utils_util.accDiv(utils_util.accSub(lastItem1.profitability.roe, lastItem2.profitability.roe), 1e8).toFixed(2));
|
||||
data2.unshift(utils_util.accDiv(utils_util.accSub(lastItem2.profitability.roe, lastItem3.profitability.roe), 1e8).toFixed(2));
|
||||
data1.unshift(utils_util.accDiv(lastItem3.profitability.roe, 1e8).toFixed(2));
|
||||
} else {
|
||||
data4.unshift(0);
|
||||
data3.unshift(0);
|
||||
data2.unshift(0);
|
||||
data1.unshift(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
let sumData = [];
|
||||
for (var i = 0; i < data1.length; i++) {
|
||||
let sum = data1[i];
|
||||
sum = utils_util.accAdd(sum, data2[i]);
|
||||
sum = utils_util.accAdd(sum, data3[i]);
|
||||
sum = utils_util.accAdd(sum, data4[i]).toFixed(2);
|
||||
if (sum > 1e4) {
|
||||
sumData.push((sum / 1e4).toFixed(2) + "万");
|
||||
} else
|
||||
sumData.push(sum);
|
||||
}
|
||||
this.option1.xAxis[0].data = category;
|
||||
let ratioList = [];
|
||||
for (let item of showDataList) {
|
||||
let index = showDataList.indexOf(item);
|
||||
if (index < showDataList.length - 3) {
|
||||
let lastItem = this.dataList[index + 4];
|
||||
ratioList.unshift(utils_util.accMul(utils_util.accDiv(utils_util.accSub(item.profitability.roe, lastItem.profitability.roe), Math.abs(lastItem.profitability.roe)), 100).toFixed(2));
|
||||
}
|
||||
}
|
||||
this.option1.tooltip = {
|
||||
show: true,
|
||||
confine: true,
|
||||
formatter(params) {
|
||||
let index = params.dataIndex;
|
||||
let str = params.name + ":" + sumData[index];
|
||||
if (data1[index] != 0) {
|
||||
str += "\n第一季度:" + data1[index];
|
||||
}
|
||||
if (data2[index] != 0) {
|
||||
str += "\n第二季度:" + data2[index];
|
||||
}
|
||||
if (data3[index] != 0) {
|
||||
str += "\n第三季度:" + data3[index];
|
||||
}
|
||||
if (data4[index] != 0) {
|
||||
str += "\n第四季度:" + data4[index];
|
||||
}
|
||||
str += "\n同比(右)" + ratioList[index];
|
||||
return str;
|
||||
}
|
||||
};
|
||||
this.option1.series = [
|
||||
{
|
||||
type: "bar",
|
||||
name: "第一季度",
|
||||
data: data1,
|
||||
stack: "quarter",
|
||||
yAxisIndex: 0,
|
||||
label: {
|
||||
show: true,
|
||||
position: "top",
|
||||
formatter(params) {
|
||||
return sumData[params.dataIndex];
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
type: "bar",
|
||||
name: "第二季度",
|
||||
data: data2,
|
||||
stack: "quarter",
|
||||
yAxisIndex: 0
|
||||
},
|
||||
{
|
||||
type: "bar",
|
||||
name: "第三季度",
|
||||
data: data3,
|
||||
yAxisIndex: 0,
|
||||
stack: "quarter"
|
||||
},
|
||||
{
|
||||
type: "bar",
|
||||
name: "第四季度",
|
||||
data: data4,
|
||||
yAxisIndex: 0,
|
||||
stack: "quarter"
|
||||
},
|
||||
{
|
||||
type: "line",
|
||||
name: "同比(右)",
|
||||
data: ratioList,
|
||||
yAxisIndex: 1
|
||||
}
|
||||
];
|
||||
},
|
||||
/**
|
||||
* 切换每股指标
|
||||
* @param {Object} item
|
||||
@@ -354,6 +651,289 @@ const _sfc_main = {
|
||||
this.option2.series[0].data = data;
|
||||
this.perShareInit();
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 获取期间费用单季度数据
|
||||
*/
|
||||
getPeriodExpensesSingleQuarterData() {
|
||||
let category = [];
|
||||
let currentYear = this.incomeStatementList[0].period.split("-")[0];
|
||||
var currentYearCount = 0;
|
||||
for (let item of this.incomeStatementList) {
|
||||
let year = item.period.split("-")[0];
|
||||
if (year == currentYear) {
|
||||
currentYearCount++;
|
||||
}
|
||||
}
|
||||
let years = (16 - currentYearCount) / 4;
|
||||
let showDataCount = years * 4 + currentYearCount;
|
||||
let showDataList = this.incomeStatementList.slice(0, showDataCount);
|
||||
for (var i = 0; i <= years; i++) {
|
||||
category.unshift(currentYear - i);
|
||||
}
|
||||
let data1 = [];
|
||||
let data2 = [];
|
||||
let data3 = [];
|
||||
let data4 = [];
|
||||
for (let item of showDataList) {
|
||||
for (let item1 of category) {
|
||||
let index = showDataList.indexOf(item);
|
||||
let lastItem = showDataList[index + 1];
|
||||
let total1 = utils_util.accAdd(utils_util.accAdd(utils_util.accAdd(item.costs.selling_expenses, item.costs.admin_expenses), item.costs.rd_expenses), item.costs.financial_expenses);
|
||||
let total2 = 0;
|
||||
if (lastItem) {
|
||||
total2 = utils_util.accAdd(utils_util.accAdd(utils_util.accAdd(lastItem.costs.selling_expenses, lastItem.costs.admin_expenses), lastItem.costs.rd_expenses), lastItem.costs.financial_expenses);
|
||||
}
|
||||
if (item1 + "年一季报" == item.report_type) {
|
||||
if (total1) {
|
||||
data1.unshift(utils_util.accDiv(total1, 1e8).toFixed(2));
|
||||
} else
|
||||
data1.unshift(0);
|
||||
}
|
||||
if (item1 + "年中报" == item.report_type) {
|
||||
if (total1 && total2) {
|
||||
data2.unshift(utils_util.accDiv(utils_util.accSub(total1, total2), 1e8).toFixed(2));
|
||||
} else
|
||||
data2.unshift(0);
|
||||
}
|
||||
if (item1 + "年三季报" == item.report_type) {
|
||||
if (total1 && total2) {
|
||||
data3.unshift(utils_util.accDiv(utils_util.accSub(total1, total2), 1e8).toFixed(2));
|
||||
} else
|
||||
data3.unshift(0);
|
||||
}
|
||||
if (item1 + "年年报" == item.report_type) {
|
||||
if (total1 && total2) {
|
||||
data4.unshift(utils_util.accDiv(utils_util.accSub(total1, total2), 1e8).toFixed(2));
|
||||
} else
|
||||
data4.unshift(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
let sumData = [];
|
||||
for (var i = 0; i < data1.length; i++) {
|
||||
let sum = data1[i];
|
||||
sum = utils_util.accAdd(sum, data2[i] ? data2[i] : 0);
|
||||
sum = utils_util.accAdd(sum, data3[i] ? data3[i] : 0);
|
||||
sum = utils_util.accAdd(sum, data4[i] ? data4[i] : 0).toFixed(2);
|
||||
if (sum > 1e4) {
|
||||
sumData.push((sum / 1e4).toFixed(2) + "万");
|
||||
} else
|
||||
sumData.push(sum);
|
||||
}
|
||||
this.option2.legend.data = ["第一季度", "第二季度", "第三季度", "第四季度"];
|
||||
this.option3.xAxis[0].data = category;
|
||||
this.option3.xAxis[1].data = category;
|
||||
this.option3.series = [
|
||||
{
|
||||
type: "bar",
|
||||
name: "第一季度",
|
||||
barWidth: "15%",
|
||||
data: data1,
|
||||
yAxisIndex: 0
|
||||
},
|
||||
{
|
||||
type: "bar",
|
||||
name: "第二季度",
|
||||
barWidth: "15%",
|
||||
data: data2,
|
||||
yAxisIndex: 0
|
||||
},
|
||||
{
|
||||
type: "bar",
|
||||
name: "第三季度",
|
||||
barWidth: "15%",
|
||||
data: data3,
|
||||
yAxisIndex: 0
|
||||
},
|
||||
{
|
||||
type: "bar",
|
||||
name: "第四季度",
|
||||
barWidth: "15%",
|
||||
data: data4,
|
||||
yAxisIndex: 0
|
||||
},
|
||||
{
|
||||
type: "bar",
|
||||
name: "总值",
|
||||
data: sumData,
|
||||
barWidth: "70%",
|
||||
xAxisIndex: 1,
|
||||
yAxisIndex: 0,
|
||||
itemStyle: {
|
||||
color: "rgba(0,0,0,0.2)"
|
||||
},
|
||||
label: {
|
||||
show: true,
|
||||
position: "top"
|
||||
}
|
||||
}
|
||||
];
|
||||
},
|
||||
/**
|
||||
* 获取期间费用全部数据
|
||||
*/
|
||||
getPeriodExpensesAllData() {
|
||||
let showDataList = this.incomeStatementList.slice(0, 8);
|
||||
let category = [];
|
||||
let data1 = [];
|
||||
let data2 = [];
|
||||
let data3 = [];
|
||||
let data4 = [];
|
||||
for (let item of showDataList) {
|
||||
let index = showDataList.indexOf(item);
|
||||
if (index < showDataList.length - 3) {
|
||||
let type = item.report_type;
|
||||
type = type.replaceAll("三季报", "\n三季报");
|
||||
type = type.replaceAll("年报", "\n年报");
|
||||
type = type.replaceAll("中报", "\n中报");
|
||||
type = type.replaceAll("一季报", "\n一季报");
|
||||
category.unshift(type);
|
||||
let lastItem1 = showDataList[index + 1];
|
||||
let lastItem2 = showDataList[index + 2];
|
||||
let lastItem3 = showDataList[index + 3];
|
||||
let total1 = utils_util.accAdd(utils_util.accAdd(utils_util.accAdd(item.costs.selling_expenses, item.costs.admin_expenses), item.costs.rd_expenses), item.costs.financial_expenses);
|
||||
let total2 = utils_util.accAdd(utils_util.accAdd(utils_util.accAdd(lastItem1.costs.selling_expenses, lastItem1.costs.admin_expenses), lastItem1.costs.rd_expenses), lastItem1.costs.financial_expenses);
|
||||
let total3 = utils_util.accAdd(utils_util.accAdd(utils_util.accAdd(lastItem2.costs.selling_expenses, lastItem2.costs.admin_expenses), lastItem2.costs.rd_expenses), lastItem2.costs.financial_expenses);
|
||||
let total4 = utils_util.accAdd(utils_util.accAdd(utils_util.accAdd(lastItem3.costs.selling_expenses, lastItem3.costs.admin_expenses), lastItem3.costs.rd_expenses), lastItem3.costs.financial_expenses);
|
||||
if (item.report_type.indexOf("三季报") > -1) {
|
||||
if (total1 && total2 && total3) {
|
||||
data4.unshift(0);
|
||||
data3.unshift(utils_util.accDiv(utils_util.accSub(total1, total2), 1e8).toFixed(2));
|
||||
data2.unshift(utils_util.accDiv(utils_util.accSub(total2, total3), 1e8).toFixed(2));
|
||||
data1.unshift(utils_util.accDiv(total3, 1e8).toFixed(2));
|
||||
} else {
|
||||
data4.unshift(0);
|
||||
data3.unshift(0);
|
||||
data2.unshift(0);
|
||||
data1.unshift(0);
|
||||
}
|
||||
} else if (item.report_type.indexOf("中报") > -1) {
|
||||
if (total1 && total2) {
|
||||
data4.unshift(0);
|
||||
data3.unshift(0);
|
||||
data2.unshift(utils_util.accDiv(utils_util.accSub(total1, total2), 1e8).toFixed(2));
|
||||
data1.unshift(utils_util.accDiv(total2, 1e8).toFixed(2));
|
||||
} else {
|
||||
data4.unshift(0);
|
||||
data3.unshift(0);
|
||||
data2.unshift(0);
|
||||
data1.unshift(0);
|
||||
}
|
||||
} else if (item.report_type.indexOf("一季报") > -1) {
|
||||
if (total1) {
|
||||
data4.unshift(0);
|
||||
data3.unshift(0);
|
||||
data2.unshift(0);
|
||||
data1.unshift(utils_util.accDiv(total1, 1e8).toFixed(2));
|
||||
} else {
|
||||
data4.unshift(0);
|
||||
data3.unshift(0);
|
||||
data2.unshift(0);
|
||||
data1.unshift(0);
|
||||
}
|
||||
} else if (item.report_type.indexOf("年报") > -1) {
|
||||
if (total1 && total2 && total3 && total4) {
|
||||
data4.unshift(utils_util.accDiv(utils_util.accSub(total1, total2), 1e8).toFixed(2));
|
||||
data3.unshift(utils_util.accDiv(utils_util.accSub(total2, total3), 1e8).toFixed(2));
|
||||
data2.unshift(utils_util.accDiv(utils_util.accSub(total3, total4), 1e8).toFixed(2));
|
||||
data1.unshift(utils_util.accDiv(total4, 1e8).toFixed(2));
|
||||
} else {
|
||||
data4.unshift(0);
|
||||
data3.unshift(0);
|
||||
data2.unshift(0);
|
||||
data1.unshift(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
let sumData = [];
|
||||
for (var i = 0; i < data1.length; i++) {
|
||||
let sum = data1[i];
|
||||
sum = utils_util.accAdd(sum, data2[i]);
|
||||
sum = utils_util.accAdd(sum, data3[i]);
|
||||
sum = utils_util.accAdd(sum, data4[i]).toFixed(2);
|
||||
if (sum > 1e4) {
|
||||
sumData.push((sum / 1e4).toFixed(2) + "万");
|
||||
} else
|
||||
sumData.push(sum);
|
||||
}
|
||||
this.option3.xAxis[0].data = category;
|
||||
let ratioList = [];
|
||||
for (let item of showDataList) {
|
||||
let index = showDataList.indexOf(item);
|
||||
if (index < showDataList.length - 3) {
|
||||
let lastItem = this.incomeStatementList[index + 4];
|
||||
let total1 = utils_util.accAdd(utils_util.accAdd(utils_util.accAdd(item.costs.selling_expenses, item.costs.admin_expenses), item.costs.rd_expenses), item.costs.financial_expenses);
|
||||
let total2 = utils_util.accAdd(utils_util.accAdd(utils_util.accAdd(lastItem.costs.selling_expenses, lastItem.costs.admin_expenses), lastItem.costs.rd_expenses), lastItem.costs.financial_expenses);
|
||||
ratioList.unshift(utils_util.accMul(utils_util.accDiv(utils_util.accSub(total1, total2), Math.abs(total2)), 100).toFixed(2));
|
||||
}
|
||||
}
|
||||
this.option3.tooltip = {
|
||||
show: true,
|
||||
confine: true,
|
||||
formatter(params) {
|
||||
let index = params.dataIndex;
|
||||
let str = params.name + ":" + sumData[index];
|
||||
if (data1[index] != 0) {
|
||||
str += "\n第一季度:" + data1[index];
|
||||
}
|
||||
if (data2[index] != 0) {
|
||||
str += "\n第二季度:" + data2[index];
|
||||
}
|
||||
if (data3[index] != 0) {
|
||||
str += "\n第三季度:" + data3[index];
|
||||
}
|
||||
if (data4[index] != 0) {
|
||||
str += "\n第四季度:" + data4[index];
|
||||
}
|
||||
str += "\n同比(右)" + ratioList[index];
|
||||
return str;
|
||||
}
|
||||
};
|
||||
this.option3.series = [
|
||||
{
|
||||
type: "bar",
|
||||
name: "第一季度",
|
||||
data: data1,
|
||||
stack: "quarter",
|
||||
yAxisIndex: 0,
|
||||
label: {
|
||||
show: true,
|
||||
position: "top",
|
||||
formatter(params) {
|
||||
return sumData[params.dataIndex];
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
type: "bar",
|
||||
name: "第二季度",
|
||||
data: data2,
|
||||
stack: "quarter",
|
||||
yAxisIndex: 0
|
||||
},
|
||||
{
|
||||
type: "bar",
|
||||
name: "第三季度",
|
||||
data: data3,
|
||||
yAxisIndex: 0,
|
||||
stack: "quarter"
|
||||
},
|
||||
{
|
||||
type: "bar",
|
||||
name: "第四季度",
|
||||
data: data4,
|
||||
yAxisIndex: 0,
|
||||
stack: "quarter"
|
||||
},
|
||||
{
|
||||
type: "line",
|
||||
name: "同比(右)",
|
||||
data: ratioList,
|
||||
yAxisIndex: 1
|
||||
}
|
||||
];
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -366,7 +946,7 @@ if (!Math) {
|
||||
_easycom_l_echart();
|
||||
}
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return {
|
||||
return common_vendor.e({
|
||||
a: common_assets._imports_0$3,
|
||||
b: common_assets._imports_2$3,
|
||||
c: common_vendor.f($data.profitabilityIndicatorList, (item, index, i0) => {
|
||||
@@ -377,12 +957,26 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
d: common_vendor.o(($event) => $options.clickProfitabilityIndicatorItem(index), index)
|
||||
};
|
||||
}),
|
||||
d: common_assets._imports_3$12,
|
||||
e: common_assets._imports_5$7,
|
||||
f: common_vendor.sr("chartRef1", "351c0d57-0"),
|
||||
g: common_assets._imports_4$13,
|
||||
h: common_assets._imports_2$3,
|
||||
i: common_vendor.f($data.perShareIndicatorList, (item, index, i0) => {
|
||||
d: common_vendor.n("option " + ($data.profitabilitySingleQuarterAllIndex == 0 ? "select" : "")),
|
||||
e: common_vendor.o(($event) => $options.clickProfitabilitySingleQuarterOrAll(0)),
|
||||
f: $data.profitabilitySingleQuarterAllIndex == 1
|
||||
}, $data.profitabilitySingleQuarterAllIndex == 1 ? {
|
||||
g: common_assets._imports_2$12
|
||||
} : {
|
||||
h: common_assets._imports_3$11
|
||||
}, {
|
||||
i: $data.profitabilitySingleQuarterAllIndex == 1
|
||||
}, $data.profitabilitySingleQuarterAllIndex == 1 ? {
|
||||
j: common_assets._imports_4$10
|
||||
} : {
|
||||
k: common_assets._imports_5$7
|
||||
}, {
|
||||
l: common_vendor.n("flex option " + ($data.profitabilitySingleQuarterAllIndex == 1 ? "select" : "")),
|
||||
m: common_vendor.o(($event) => $options.clickProfitabilitySingleQuarterOrAll(1)),
|
||||
n: common_vendor.sr("chartRef1", "351c0d57-0"),
|
||||
o: common_assets._imports_6$3,
|
||||
p: common_assets._imports_2$3,
|
||||
q: common_vendor.f($data.perShareIndicatorList, (item, index, i0) => {
|
||||
return {
|
||||
a: common_vendor.t(item.title),
|
||||
b: common_vendor.n("item flexCenter " + ($data.perShareIndicatorIndex == index ? "select" : "")),
|
||||
@@ -390,10 +984,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
d: common_vendor.o(($event) => $options.clickPerShareIndicatorItem(index), index)
|
||||
};
|
||||
}),
|
||||
j: common_assets._imports_3$12,
|
||||
k: common_assets._imports_5$7,
|
||||
l: common_vendor.sr("chartRef2", "351c0d57-1")
|
||||
};
|
||||
r: common_assets._imports_3$11,
|
||||
s: common_assets._imports_5$7,
|
||||
t: common_vendor.sr("chartRef2", "351c0d57-1")
|
||||
});
|
||||
}
|
||||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
|
||||
wx.createPage(MiniProgramPage);
|
||||
|
||||
Reference in New Issue
Block a user