1.29 财务分析模块完善

This commit is contained in:
尚政杰
2026-01-29 15:48:33 +08:00
parent 4f211dcd5f
commit 38fc352096
19 changed files with 1154 additions and 301 deletions

View File

@@ -1,23 +1,21 @@
<template>
<view>
<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"
style="width: 40rpx; height: 40rpx;"></image>
<view class="flex1" style="margin: 0 10rpx; font-size: 28rpx;">盈利能力</view>
<image src="/static/icon/home/conceptCenter/next.png" mode="widthFix"
style="width: 13rpx; height: 22rpx;"></image>
</view>
<view style="display: grid; gap: 20rpx; grid-template-columns: repeat(4, 1fr); margin: 0 20rpx;">
<view
style="display: flex; align-items: center; justify-content: center; text-align: center; font-size: 20rpx; color: #999999; border: 1rpx solid #D2D2D2; padding: 3rpx 5rpx; 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 ['净资产收益率(ROE)%', '净资产收益率(扣非)%', '净资产收益率(加权)%', '总资产报酬率(ROA)%', '毛利率%', '净利率%', '营业利润率%', '成本费用利润率%']"
:key="index">
{{item}}
<view class="indicatorC" style="display: grid; gap: 20rpx; grid-template-columns: repeat(4, 1fr); margin: 0 20rpx;">
<view :class="'item flex '+(profitabilityIndicatorIndex==index?'select':'')"
style="justify-content: center; text-align: center;padding: 3rpx 5rpx;"
v-for="(item,index) in profitabilityIndicatorList" :key="index" @click="clickProfitabilityIndicatorItem(index)">
{{item.title}}
</view>
</view>
<view class="flex" style="padding: 20rpx; box-sizing: border-box;">
<view class="flex" style="padding: 20rpx;">
<view class="flex1" style="font-size: 28rpx;">查看详细数据</view>
<view
style="color: #F2C369; font-size: 22rpx; padding: 2rpx 10rpx; border-radius: 5rpx; border: 1rpx solid #F2C369; text-align: center; margin: 0 10rpx;">
@@ -35,9 +33,7 @@
<view style="height: 500rpx;">
<l-echart ref="chartRef1"></l-echart>
</view>
</view>
<view style="color: #2B2B2B; font-weight: 500; font-size: 24rpx;">
<view style="display: flex;align-items: center; padding: 20rpx; box-sizing: border-box;">
<image src="/pagesStock/static/icon/cwfx-2.png" mode="widthFix"
@@ -47,13 +43,10 @@
style="width: 13rpx; height: 22rpx;"></image>
</view>
<view style="display: grid; gap: 20rpx; grid-template-columns: repeat(4, 1fr); margin: 0 20rpx;">
<view
style="display: flex; align-items: center; justify-content: center; text-align: center; font-size: 20rpx; color: #999999; border: 1rpx solid #D2D2D2; padding: 3rpx 5rpx; 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 ['每股收益(EPS)', '基本每股收益', '稀释每股收益', '扣非每股收益', '每股净资产', '每股经营现金流', '每股资本公积', '每股未分配利润']"
:key="index">
{{item}}
<view class="indicatorC" style="display: grid; gap: 20rpx; grid-template-columns: repeat(4, 1fr); margin: 0 20rpx;">
<view :class="'item flexCenter '+(perShareIndicatorIndex==index?'select':'')"
v-for="(item,index) in perShareIndicatorList" :key="index" @click="clickPerShareIndicatorItem(index)">
{{item.title}}
</view>
</view>
@@ -80,10 +73,61 @@
</template>
<script>
const echarts = require('../../uni_modules/lime-echart/static/echarts.min.js');
export default {
name:"cwfx-view",
data() {
return {
profitabilityIndicatorList:[{
title:'净资产收益率(ROE)%',
},
{
title:'净资产收益率(扣非)%',
},
{
title:'净资产收益率(加权)%',
},
{
title:'总资产报酬率(ROA)%',
},
{
title:'毛利率%',
},
{
title:'净利率%',
},
{
title:'营业利润率%',
},
{
title:'成本费用利润率%'
}],
profitabilityIndicatorIndex:0,
perShareIndicatorList:[{
title:'每股收益(EPS)',
},
{
title:'基本每股收益',
},
{
title:'稀释每股收益',
},
{
title:'扣非每股收益',
},
{
title:'每股净资产',
},
{
title:'每股经营现金流',
},
{
title:'每股资本公积',
},
{
title:'每股未分配利润'
}],
perShareIndicatorIndex:0,
option1:{
legend:{
show:true,
@@ -99,41 +143,96 @@
type: 'category',
data: [],
axisLabel:{
// interval:0
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
}
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:'营业收入',
name:'ROE',
data: [],
yAxisIndex:0
},
{
type: 'line',
name:'净利润',
name:'同比',
data: [],
yAxisIndex:1
}
]
},
option2:{
legend:{
show:true,
data:['ROE','同比(右)']
},
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
}
@@ -142,20 +241,247 @@
};
},
props: {
barCategoryList1:Array,
barList1:Array,
lineList:Array, //折线图数据
barCategoryList1:Array,
barList1:Array,
dataList:Array,
},
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)
}
this.option1.xAxis.data = category
this.option1.series[0].data = data1
this.profitabilityInit()
this.option2.series[0].data = data2
this.perShareInit()
}
},
methods:{
clickProfitabilityIndicators(item) {
async profitabilityInit() {
// chart 图表实例不能存在data里
const chart = await this.$refs.chartRef1.init(echarts);
// chart.on('click',function (params) {
// console.log(params)
// })
chart.setOption(this.option1)
},
async perShareInit() {
// chart 图表实例不能存在data里
const chart = await this.$refs.chartRef2.init(echarts);
// chart.on('click',function (params) {
// console.log(params)
// })
chart.setOption(this.option2)
},
/**
* 切换盈利能力指标
* @param {Object} item
*/
clickProfitabilityIndicatorItem(index) {
if(this.profitabilityIndicatorIndex!=index) {
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)
}
}else if(index==1) {
//净资产收益率(扣非)
for (let item of this.dataList) {
if(item.profitability.roe_deducted)
{
data.push(item.profitability.roe_deducted.toFixed(2))
}else
data.push(0)
}
}else if(index==2) {
//净资产收益率(加权)
for (let item of this.dataList) {
if(item.profitability.roe_deducted)
{
data.push(item.profitability.roe_deducted.toFixed(2))
}else
data.push(0)
}
}else if(index==3) {
//总资产报酬率
for (let item of this.dataList) {
if(item.profitability.roa)
{
data.push(item.profitability.roa.toFixed(2))
}else
data.push(0)
}
}else if(index==4) {
//毛利率
for (let item of this.dataList) {
if(item.profitability.gross_margin)
{
data.push(item.profitability.gross_margin.toFixed(2))
}else
data.push(0)
}
}else if(index==5) {
//净利率
for (let item of this.dataList) {
if(item.profitability.net_profit_margin)
{
data.push(item.profitability.net_profit_margin.toFixed(2))
}else
data.push(0)
}
}else if(index==6) {
//营业利润率
for (let item of this.dataList) {
if(item.profitability.operating_profit_margin)
{
data.push(item.profitability.operating_profit_margin.toFixed(2))
}else
data.push(0)
}
}else if(index==7) {
//成本费用利润率
for (let item of this.dataList) {
if(item.profitability.cost_profit_ratio)
{
data.push(item.profitability.cost_profit_ratio.toFixed(2))
}else
data.push(0)
}
}
this.option1.series[0].data = data
this.profitabilityInit()
}
},
/**
* 切换每股指标
* @param {Object} item
*/
clickPerShareIndicatorItem(index) {
if(this.perShareIndicatorIndex!=index) {
this.perShareIndicatorIndex = index
let data = []
if(index==0) {
//每股收益(EPS)
for (let item of this.dataList) {
if(item.per_share_metrics.eps)
{
data.push(item.per_share_metrics.eps.toFixed(2))
}else
data.push(0)
}
}else if(index==1) {
//基本每股收益
for (let item of this.dataList) {
if(item.per_share_metrics.basic_eps)
{
data.push(item.per_share_metrics.basic_eps.toFixed(2))
}else
data.push(0)
}
}else if(index==2) {
//稀释每股收益
for (let item of this.dataList) {
if(item.per_share_metrics.diluted_eps)
{
data.push(item.per_share_metrics.diluted_eps.toFixed(2))
}else
data.push(0)
}
}else if(index==3) {
//扣非每股收益
for (let item of this.dataList) {
if(item.per_share_metrics.deducted_eps)
{
data.push(item.per_share_metrics.deducted_eps.toFixed(2))
}else
data.push(0)
}
}else if(index==4) {
//每股净资产
for (let item of this.dataList) {
if(item.per_share_metrics.bvps)
{
data.push(item.per_share_metrics.bvps.toFixed(2))
}else
data.push(0)
}
}else if(index==5) {
//每股经营现金流
for (let item of this.dataList) {
if(item.per_share_metrics.operating_cash_flow_ps)
{
data.push(item.per_share_metrics.operating_cash_flow_ps.toFixed(2))
}else
data.push(0)
}
}else if(index==6) {
//每股资本公积
for (let item of this.dataList) {
if(item.per_share_metrics.capital_reserve_ps)
{
data.push(item.per_share_metrics.capital_reserve_ps.toFixed(2))
}else
data.push(0)
}
}else if(index==7) {
//每股未分配利润
for (let item of this.dataList) {
if(item.per_share_metrics.undistributed_profit_ps)
{
data.push(item.per_share_metrics.undistributed_profit_ps.toFixed(2))
}else
data.push(0)
}
}
this.option2.series[0].data = data
this.perShareInit()
}
}
}
}
</script>
<style>
<style lang="less">
.indicatorC
{
.item
{
background-color: #FFFFFF;
padding: 3rpx 5rpx;
border: 1rpx solid #D2D2D2;
font-size: 20rpx;
color: #999;
text-align: center;
}
.item.select
{
background-color: #FFFAF1;
border: 1rpx solid #F2C369;
color: #BB8520;
}
}
</style>

View File

@@ -169,7 +169,6 @@
watch:{
data(newValue)
{
console.log(newValue)
this.option.series[0].data = newValue
this.init()
}

View File

@@ -96,7 +96,6 @@
<script>
import { getChgRateStr, getNumStr } from '@/utils/util.js';
const echarts = require('../../uni_modules/lime-echart/static/echarts.min.js');
export default {

View File

@@ -1,11 +1,18 @@
<template>
<view>
<navBar leftText="平安银行(000001)" :hideNavBg="true"></navBar>
<navBar :leftText="navTitle" :hideNavBg="true"></navBar>
<image class="topBg absolute" src="/static/image/index/conceptTopBg.png" mode="widthFix"></image>
<view class="searchC fixed flex" :style="'top:'+navH+'px;'">
<image class="icon" src="/static/icon/home/conceptCenter/search.png" mode="widthFix"></image>
<input class="flex1" type="text" v-model="keywords" placeholder="输入股票代码或名称"
placeholder-style="color:#eeeeee" confirm-type="search" @confirm="clickSearch()" />
placeholder-style="color:#eeeeee" @input="clickSearch()"/>
</view>
<view v-if="searchShow" class="searchResultList fixed" :style="'top:'+searchResultTop+'px;'" @click="clickSearchResultBg()">
<view class="list">
<view class="item" v-for="(item,index) in searchResultList" :key="index" @click.stop="clickSearchResultListItem(item)">
{{item.stock_code}} {{item.stock_name}}
</view>
</view>
</view>
<scroll-view scroll-y class="stockDetailsC fixed" :style="'top:'+contentTop+'px;'">
<view v-if="stockBasicInfo" class="basicInfoC">
@@ -182,7 +189,7 @@
<zysj-view :stockInfo="financialStockInfo" :barCategoryList="mainBussinessBarCategoryList" :barList="mainBussinessBarList" :lineList="mainBussinessLineList" :productClassificationList="productClassificationList" ></zysj-view>
</block>
<block v-if="selectCaiwu==1">
<cwfx-view></cwfx-view>
<cwfx-view :dataList="financialMetricsList"></cwfx-view>
</block>
<block v-if="selectCaiwu==2">
<cwsj-view></cwsj-view>
@@ -209,11 +216,11 @@
<image class="icon" src="/pagesStock/static/icon/contrast.png" mode="heightFix"></image>
<view>对比</view>
</view>
<view class="item" @click="clickComment()">
<view class="item" @click="clickOptional()">
<image class="icon" src="/pagesStock/static/icon/optional.png" mode="heightFix"></image>
<view>自选</view>
</view>
<view class="item" @click="clickFollow()">
<view class="item" @click="clickShare()">
<image class="icon" src="/pagesStock/static/icon/share.png" mode="heightFix"></image>
<view>分享</view>
</view>
@@ -367,9 +374,7 @@
</view>
</view>
</view>
<view style="margin: 30rpx 0; font-weight: bold; font-size: 28rpx;">相关公司</view>
<view v-for="(item,index) in relatedCompanyList" :key="index" style="margin: 20rpx 0; border: 1rpx solid #E7E7E7; border-radius: 10rpx; padding: 25rpx 20rpx;">
<view>
<text style="font-size: 28rpx; font-weight: bold;">{{item.stock_name}}</text>
@@ -391,7 +396,6 @@
</view>
</view>
</uni-popup>
<uni-popup ref="detailInfoPopup" type="bottom" :safeArea="false">
<view class="industryRankPop" style="padding-bottom: env(safe-area-inset-bottom);">
<view class="popTitle">详情</view>
@@ -426,16 +430,20 @@
<script>
import { inject } from 'vue'
import { actualControl, branchesList, companyAnnouncementsList, comprehensiveAnalysis, eventList, financialComparison, financialMainBusiness, financialStockInfo, industryRankList, keyFactorsTimeline, managementTeam, ownershipConcentration, quoteDetailsInfo, stockBasicInfo, topCirculatingShareholdersList, topShareholdersList, valueChainAnalysis, valueChainRelatedCompany } from '@/request/api'
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 { getLastNameStr, getLocalDate, getNumStr, getRateUpOrDown, getAgeByBirthYear } from '@/utils/util'
const echarts = require('../../uni_modules/lime-echart/static/echarts.min.js');
export default {
data() {
return {
navH: inject('navHeight'),
navTitle:'', //标题
searchResultTop:'', //搜索结果
contentTop: '',
keywords: '', //搜索关键字
searchShow:false, //是否展示搜索结果
searchResultList:[], //搜索结果
selectSearchStockInfo:null, //选中的搜索股票信息
stockCode:'300700', //股票代码 600759 000009 002004 300700
stockBasicInfo:null, //股票基本信息
quoteDetailsInfo:null, //股票事实市场价格信息
@@ -572,6 +580,7 @@
}
], //财务全景分类
selectCaiwu: 0,
financialMetricsList:[], //财务分析列表数据
financialStockInfo:null,
mainBussinessBarCategoryList:[], //主营业务柱状图,折线图分类
mainBussinessBarList:[], //主营业务柱状图数据
@@ -594,8 +603,13 @@
}
},
onLoad() {
this.contentTop = this.navH + (20 + 70 + 30) / 750 * inject('windowWidth')
onLoad(e) {
this.searchResultTop = this.navH + (20 + 70) / 750 * inject('windowWidth')
this.contentTop = this.searchResultTop + 30 / 750 * inject('windowWidth')
if(e.code)
{
this.stockCode = e.code
}
this.getStockBasicInfoData()
this.getQuoteDetailsData()
this.getActualControlData()
@@ -608,6 +622,24 @@
* 点击搜索
*/
clickSearch() {
if(this.keywords) {
this.getSearchStockInfoListData()
}else
this.selectSearchStockInfo = null
},
/**
* 点击搜索结果背景
*/
clickSearchResultBg()
{
this.searchShow = false
},
/**
* 点击搜索结果列表项
*/
clickSearchResultListItem(item) {
this.selectSearchStockInfo = item
this.searchShow = false
this.getStockBasicInfoData()
this.getQuoteDetailsData()
},
@@ -679,6 +711,9 @@
clickCaiWuItem(index) {
if (this.selectCaiwu != index) {
this.selectCaiwu = index
if(index==1) {
this.getFinancialMetricsData()
}
}
},
@@ -734,16 +769,43 @@
{
this.$refs["valueChainPopup"].close()
},
/**
* 点击自选
*/
clickOptional()
{
},
/**
* 点击分享
*/
clickShare()
{
},
/**
* 根据输入内容获取搜索列表项
*/
getSearchStockInfoListData() {
let param = {q:this.keywords,limit:10}
searchStockInfo(param).then(res=>{
this.searchResultList = res.data
this.searchShow = this.searchResultList.length>0
}).catch(error=>{
})
},
/**
* 获取股票基本信息
*/
getStockBasicInfoData() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
stockBasicInfo(code).then(res=>{
this.stockBasicInfo = res.data
this.navTitle = res.data.SECNAME+'('+res.data.SECCODE+')'
}).catch(error=>{
})
@@ -753,8 +815,8 @@
*/
getQuoteDetailsData() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
quoteDetailsInfo(code).then(res=>{
this.quoteDetailsInfo = res.data
@@ -767,8 +829,8 @@
*/
getActualControlData() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
actualControl(code).then(res=>{
this.actualControlInfo = res.data[0]
@@ -781,8 +843,8 @@
*/
getOwnershipConcentration() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
ownershipConcentration(code).then(res=>{
this.concentrationList = res.data.slice(0,8)
@@ -795,8 +857,8 @@
*/
getTopShareholdersData() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
topShareholdersList(code,{'limit':10}).then(res=>{
this.topShareholdersList = res.data
@@ -809,8 +871,8 @@
*/
getTopCirculatingShareholdersData() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
topCirculatingShareholdersList(code,{'limit':10}).then(res=>{
this.topCirculatingShareholdersList = res.data
@@ -823,8 +885,8 @@
*/
getManagementTeamData() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
managementTeam(code,{active_only:true}).then(res=>{
let data = res.data
@@ -869,8 +931,8 @@
*/
getBranchListData() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
branchesList(code).then(res=>{
this.branchList = res.data
@@ -883,8 +945,8 @@
*/
getComprehensiveAnalysisData() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
comprehensiveAnalysis(code).then(res=>{
this.qualitativeAnalysisInfo = res.data.qualitative_analysis
@@ -919,8 +981,8 @@
*/
getIndustryRankListData() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
industryRankList(code).then(res=>{
this.industryRankList = res.data
@@ -933,8 +995,8 @@
*/
getValueChainAnalysisData() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
valueChainAnalysis(code).then(res=>{
this.valueChainAnalysisInfo = res.data.analysis_summary
@@ -967,8 +1029,8 @@
*/
getKeyFactorsTimelineData() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
keyFactorsTimeline(code).then(res=>{
this.keyFactorsInfo = res.data.key_factors
@@ -985,18 +1047,40 @@
getFinancialStockInfoData()
{
let code = this.stockCode
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
financialStockInfo(code).then(res=>{
this.financialStockInfo = res.data
}).catch(error=>{
})
},
/**
* 获取财务指标数据
*/
getFinancialMetricsData()
{
let code = this.stockCode
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
let param = {limit:8}
financialMetrics(code,param).then(res=>{
this.financialMetricsList = res.data
}).catch(error=>{
})
},
/**
* 获取财务比较数据
*/
getFinancialComparisonData()
{
let code = this.stockCode
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
let param = {periods:8}
financialComparison(code,param).then(res=>{
let data = res.data
@@ -1004,7 +1088,11 @@
this.mainBussinessBarList = []
this.mainBussinessLineList = []
for (let item of data) {
this.mainBussinessBarCategoryList.unshift(item.report_type.replace('三季报','Q3'))
let type = item.report_type
type = type.replace('年三季报','Q3')
type = type.replace('年中报','中报')
type = type.replace('年年报','年报')
this.mainBussinessBarCategoryList.unshift(type)
this.mainBussinessBarList.unshift((parseFloat(item.performance.revenue)/100000000).toFixed(2))
this.mainBussinessLineList.unshift((parseFloat(item.performance.net_profit)/100000000).toFixed(2))
}
@@ -1018,6 +1106,9 @@
getFinancialMainBussinessData()
{
let code = this.stockCode
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
let param = {periods:4}
financialMainBusiness(code,param).then(res=>{
this.productClassificationList = res.data.product_classification
@@ -1047,8 +1138,8 @@
*/
getCompanyAnnouncementsData() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code
}
let param = {limit:20}
companyAnnouncementsList(code,param).then(res=>{
@@ -1095,6 +1186,27 @@
color: white;
}
}
.searchResultList {
background-color: #00000080;
left: 0;
right: 0;
bottom: 0;
padding: 0 25rpx;
.list
{
background-color: white;
border-radius: 10rpx;
.item
{
padding: 0 42rpx;
line-height: 60rpx;
font-size: 22rpx;
font-weight: 500;
color: #333;
}
}
z-index: 20;
}
.stockDetailsC {
left: 0;

View File

@@ -143,6 +143,10 @@ export const investEventDetails = (id,param) => get('/api/calendar/detail/'+id,p
*/
export const calendarEventCount = param => get('/api/calendar-event-counts',param)
/**
* 根据输入内容搜索个股
*/
export const searchStockInfo = param => get('/api/stocks/search',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

View File

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

View File

@@ -1,10 +1,65 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const common_assets = require("../../common/assets.js");
const echarts = require("../../uni_modules/lime-echart/static/echarts.min.js");
const _sfc_main = {
name: "cwfx-view",
data() {
return {
profitabilityIndicatorList: [
{
title: "净资产收益率(ROE)%"
},
{
title: "净资产收益率(扣非)%"
},
{
title: "净资产收益率(加权)%"
},
{
title: "总资产报酬率(ROA)%"
},
{
title: "毛利率%"
},
{
title: "净利率%"
},
{
title: "营业利润率%"
},
{
title: "成本费用利润率%"
}
],
profitabilityIndicatorIndex: 0,
perShareIndicatorList: [
{
title: "每股收益(EPS)"
},
{
title: "基本每股收益"
},
{
title: "稀释每股收益"
},
{
title: "扣非每股收益"
},
{
title: "每股净资产"
},
{
title: "每股经营现金流"
},
{
title: "每股资本公积"
},
{
title: "每股未分配利润"
}
],
perShareIndicatorIndex: 0,
option1: {
legend: {
show: true,
@@ -20,7 +75,8 @@ const _sfc_main = {
type: "category",
data: [],
axisLabel: {
// interval:0
fontSize: 10,
rotate: 45
}
},
yAxis: [
@@ -49,13 +105,70 @@ const _sfc_main = {
series: [
{
type: "bar",
name: "营业收入",
name: "ROE",
data: [],
yAxisIndex: 0
},
{
type: "line",
name: "净利润",
name: "同比",
data: [],
yAxisIndex: 1
}
]
},
option2: {
legend: {
show: true,
data: ["ROE", "同比(右)"]
},
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
}
@@ -64,15 +177,182 @@ const _sfc_main = {
};
},
props: {
barCategoryList1: Array,
barList1: Array,
lineList: Array,
//折线图数据
barCategoryList1: Array,
barList1: Array
dataList: Array
},
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);
}
this.option1.xAxis.data = category;
this.option1.series[0].data = data1;
this.profitabilityInit();
this.option2.series[0].data = data2;
this.perShareInit();
}
},
methods: {
clickProfitabilityIndicators(item) {
async profitabilityInit() {
const chart = await this.$refs.chartRef1.init(echarts);
chart.setOption(this.option1);
},
async perShareInit() {
const chart = await this.$refs.chartRef2.init(echarts);
chart.setOption(this.option2);
},
/**
* 切换盈利能力指标
* @param {Object} item
*/
clickProfitabilityIndicatorItem(index) {
if (this.profitabilityIndicatorIndex != index) {
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);
}
} else if (index == 1) {
for (let item of this.dataList) {
if (item.profitability.roe_deducted) {
data.push(item.profitability.roe_deducted.toFixed(2));
} else
data.push(0);
}
} else if (index == 2) {
for (let item of this.dataList) {
if (item.profitability.roe_deducted) {
data.push(item.profitability.roe_deducted.toFixed(2));
} else
data.push(0);
}
} else if (index == 3) {
for (let item of this.dataList) {
if (item.profitability.roa) {
data.push(item.profitability.roa.toFixed(2));
} else
data.push(0);
}
} else if (index == 4) {
for (let item of this.dataList) {
if (item.profitability.gross_margin) {
data.push(item.profitability.gross_margin.toFixed(2));
} else
data.push(0);
}
} else if (index == 5) {
for (let item of this.dataList) {
if (item.profitability.net_profit_margin) {
data.push(item.profitability.net_profit_margin.toFixed(2));
} else
data.push(0);
}
} else if (index == 6) {
for (let item of this.dataList) {
if (item.profitability.operating_profit_margin) {
data.push(item.profitability.operating_profit_margin.toFixed(2));
} else
data.push(0);
}
} else if (index == 7) {
for (let item of this.dataList) {
if (item.profitability.cost_profit_ratio) {
data.push(item.profitability.cost_profit_ratio.toFixed(2));
} else
data.push(0);
}
}
this.option1.series[0].data = data;
this.profitabilityInit();
}
},
/**
* 切换每股指标
* @param {Object} item
*/
clickPerShareIndicatorItem(index) {
if (this.perShareIndicatorIndex != index) {
this.perShareIndicatorIndex = index;
let data = [];
if (index == 0) {
for (let item of this.dataList) {
if (item.per_share_metrics.eps) {
data.push(item.per_share_metrics.eps.toFixed(2));
} else
data.push(0);
}
} else if (index == 1) {
for (let item of this.dataList) {
if (item.per_share_metrics.basic_eps) {
data.push(item.per_share_metrics.basic_eps.toFixed(2));
} else
data.push(0);
}
} else if (index == 2) {
for (let item of this.dataList) {
if (item.per_share_metrics.diluted_eps) {
data.push(item.per_share_metrics.diluted_eps.toFixed(2));
} else
data.push(0);
}
} else if (index == 3) {
for (let item of this.dataList) {
if (item.per_share_metrics.deducted_eps) {
data.push(item.per_share_metrics.deducted_eps.toFixed(2));
} else
data.push(0);
}
} else if (index == 4) {
for (let item of this.dataList) {
if (item.per_share_metrics.bvps) {
data.push(item.per_share_metrics.bvps.toFixed(2));
} else
data.push(0);
}
} else if (index == 5) {
for (let item of this.dataList) {
if (item.per_share_metrics.operating_cash_flow_ps) {
data.push(item.per_share_metrics.operating_cash_flow_ps.toFixed(2));
} else
data.push(0);
}
} else if (index == 6) {
for (let item of this.dataList) {
if (item.per_share_metrics.capital_reserve_ps) {
data.push(item.per_share_metrics.capital_reserve_ps.toFixed(2));
} else
data.push(0);
}
} else if (index == 7) {
for (let item of this.dataList) {
if (item.per_share_metrics.undistributed_profit_ps) {
data.push(item.per_share_metrics.undistributed_profit_ps.toFixed(2));
} else
data.push(0);
}
}
this.option2.series[0].data = data;
this.perShareInit();
}
}
}
};
@@ -88,13 +368,12 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_assets._imports_0$8,
b: common_assets._imports_1$2,
c: common_vendor.f(["净资产收益率(ROE)%", "净资产收益率(扣非)%", "净资产收益率(加权)%", "总资产报酬率(ROA)%", "毛利率%", "净利率%", "营业利润率%", "成本费用利润率%"], (item, index, i0) => {
c: common_vendor.f($data.profitabilityIndicatorList, (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
a: common_vendor.t(item.title),
b: common_vendor.n("item flex " + ($data.profitabilityIndicatorIndex == index ? "select" : "")),
c: index,
d: common_vendor.o(($event) => $options.clickProfitabilityIndicatorItem(index), index)
};
}),
d: common_assets._imports_2$14,
@@ -102,13 +381,12 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
f: common_vendor.sr("chartRef1", "3746da36-0"),
g: common_assets._imports_4$12,
h: common_assets._imports_1$2,
i: common_vendor.f(["每股收益(EPS)", "基本每股收益", "稀释每股收益", "扣非每股收益", "每股净资产", "每股经营现金流", "每股资本公积", "每股未分配利润"], (item, index, i0) => {
i: common_vendor.f($data.perShareIndicatorList, (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
a: common_vendor.t(item.title),
b: common_vendor.n("item flexCenter " + ($data.perShareIndicatorIndex == index ? "select" : "")),
c: index,
d: common_vendor.o(($event) => $options.clickPerShareIndicatorItem(index), index)
};
}),
j: common_assets._imports_2$14,

View File

@@ -1 +1 @@
<view><view style="color:#2B2B2B;font-weight:500;font-size:24rpx"><view style="display:flex;align-items:center;padding:20rpx;box-sizing:border-box"><image src="{{a}}" mode="widthFix" style="width:40rpx;height:40rpx"></image><view class="flex1" style="margin:0 10rpx;font-size:28rpx">盈利能力</view><image src="{{b}}" mode="widthFix" style="width:13rpx;height:22rpx"></image></view><view style="display:grid;gap:20rpx;grid-template-columns:repeat(4, 1fr);margin:0 20rpx"><view wx:for="{{c}}" wx:for-item="item" wx:key="e" style="{{'display:flex;align-items:center;justify-content:center;text-align:center;font-size:20rpx;color:#999999;border:1rpx solid #D2D2D2;padding:3rpx 5rpx;box-sizing:border-box' + ';' + ('color:' + item.b + ';' + ('border:' + item.c) + ';' + ('background-color:' + item.d))}}">{{item.a}}</view></view><view class="flex" style="padding:20rpx;box-sizing:border-box"><view class="flex1" style="font-size:28rpx">查看详细数据</view><view style="color:#F2C369;font-size:22rpx;padding:2rpx 10rpx;border-radius:5rpx;border:1rpx solid #F2C369;text-align:center;margin:0 10rpx"> 单季度</view><view class="flex" style="padding:3rpx 10rpx;border:1rpx solid #D2D2D2"><image style="width:23rpx;height:23rpx" src="{{d}}" mode="widthFix"></image><view style="margin:0 10rpx;color:#999999;font-size:22rpx">全部</view><image style="width:11rpx;height:6rpx" src="{{e}}" mode="widthFix"></image></view></view><view style="height:500rpx"><l-echart class="r" u-r="chartRef1" u-i="3746da36-0" bind:__l="__l"></l-echart></view></view><view style="color:#2B2B2B;font-weight:500;font-size:24rpx"><view style="display:flex;align-items:center;padding:20rpx;box-sizing:border-box"><image src="{{g}}" mode="widthFix" style="width:40rpx;height:40rpx"></image><view class="flex1" style="margin:0 10rpx;font-size:28rpx">每股指标</view><image src="{{h}}" mode="widthFix" style="width:13rpx;height:22rpx"></image></view><view style="display:grid;gap:20rpx;grid-template-columns:repeat(4, 1fr);margin:0 20rpx"><view wx:for="{{i}}" wx:for-item="item" wx:key="e" style="{{'display:flex;align-items:center;justify-content:center;text-align:center;font-size:20rpx;color:#999999;border:1rpx solid #D2D2D2;padding:3rpx 5rpx;box-sizing:border-box' + ';' + ('color:' + item.b + ';' + ('border:' + item.c) + ';' + ('background-color:' + item.d))}}">{{item.a}}</view></view><view style="display:flex;align-items:center;padding:20rpx;box-sizing:border-box"><view class="flex1" style="font-size:28rpx">查看详细数据</view><view style="color:#F2C369;font-size:22rpx;padding:2rpx 10rpx;border-radius:5rpx;border:1rpx solid #F2C369;text-align:center;margin:0 10rpx"> 单季度</view><view style="display:flex;align-items:center;padding:3rpx 10rpx;box-sizing:border-box;border:1rpx solid #D2D2D2"><image style="width:23rpx;height:23rpx" src="{{j}}" mode="widthFix"></image><view style="margin:0 10rpx;color:#999999;font-size:22rpx">全部</view><image style="width:11rpx;height:6rpx" src="{{k}}" mode="widthFix"></image></view></view><view style="height:500rpx"><l-echart class="r" u-r="chartRef2" u-i="3746da36-1" bind:__l="__l"></l-echart></view></view></view>
<view><view style="color:#2B2B2B;font-weight:500;font-size:24rpx"><view class="flex" style="padding:20rpx"><image src="{{a}}" mode="widthFix" style="width:40rpx;height:40rpx"></image><view class="flex1" style="margin:0 10rpx;font-size:28rpx">盈利能力</view><image src="{{b}}" mode="widthFix" style="width:13rpx;height:22rpx"></image></view><view class="indicatorC" style="display:grid;gap:20rpx;grid-template-columns:repeat(4, 1fr);margin:0 20rpx"><view wx:for="{{c}}" wx:for-item="item" wx:key="c" class="{{item.b}}" style="justify-content:center;text-align:center;padding:3rpx 5rpx" bindtap="{{item.d}}">{{item.a}}</view></view><view class="flex" style="padding:20rpx"><view class="flex1" style="font-size:28rpx">查看详细数据</view><view style="color:#F2C369;font-size:22rpx;padding:2rpx 10rpx;border-radius:5rpx;border:1rpx solid #F2C369;text-align:center;margin:0 10rpx"> 单季度</view><view class="flex" style="padding:3rpx 10rpx;border:1rpx solid #D2D2D2"><image style="width:23rpx;height:23rpx" src="{{d}}" mode="widthFix"></image><view style="margin:0 10rpx;color:#999999;font-size:22rpx">全部</view><image style="width:11rpx;height:6rpx" src="{{e}}" mode="widthFix"></image></view></view><view style="height:500rpx"><l-echart class="r" u-r="chartRef1" u-i="3746da36-0" bind:__l="__l"></l-echart></view></view><view style="color:#2B2B2B;font-weight:500;font-size:24rpx"><view style="display:flex;align-items:center;padding:20rpx;box-sizing:border-box"><image src="{{g}}" mode="widthFix" style="width:40rpx;height:40rpx"></image><view class="flex1" style="margin:0 10rpx;font-size:28rpx">每股指标</view><image src="{{h}}" mode="widthFix" style="width:13rpx;height:22rpx"></image></view><view class="indicatorC" style="display:grid;gap:20rpx;grid-template-columns:repeat(4, 1fr);margin:0 20rpx"><view wx:for="{{i}}" wx:for-item="item" wx:key="c" class="{{item.b}}" bindtap="{{item.d}}">{{item.a}}</view></view><view style="display:flex;align-items:center;padding:20rpx;box-sizing:border-box"><view class="flex1" style="font-size:28rpx">查看详细数据</view><view style="color:#F2C369;font-size:22rpx;padding:2rpx 10rpx;border-radius:5rpx;border:1rpx solid #F2C369;text-align:center;margin:0 10rpx"> 单季度</view><view style="display:flex;align-items:center;padding:3rpx 10rpx;box-sizing:border-box;border:1rpx solid #D2D2D2"><image style="width:23rpx;height:23rpx" src="{{j}}" mode="widthFix"></image><view style="margin:0 10rpx;color:#999999;font-size:22rpx">全部</view><image style="width:11rpx;height:6rpx" src="{{k}}" mode="widthFix"></image></view></view><view style="height:500rpx"><l-echart class="r" u-r="chartRef2" u-i="3746da36-1" bind:__l="__l"></l-echart></view></view></view>

View File

@@ -0,0 +1,13 @@
.indicatorC .item {
background-color: #FFFFFF;
padding: 3rpx 5rpx;
border: 1rpx solid #D2D2D2;
font-size: 20rpx;
color: #999;
text-align: center;
}
.indicatorC .item.select {
background-color: #FFFAF1;
border: 1rpx solid #F2C369;
color: #BB8520;
}

View File

@@ -88,7 +88,6 @@ const _sfc_main = {
},
watch: {
data(newValue) {
common_vendor.index.__f__("log", "at components/zlfx-view/zlfx-view.vue:172", newValue);
this.option.series[0].data = newValue;
this.init();
}
@@ -96,7 +95,7 @@ const _sfc_main = {
methods: {
async init() {
const chart = await this.$refs.chartRef.init(echarts);
common_vendor.index.__f__("log", "at components/zlfx-view/zlfx-view.vue:184", chart);
common_vendor.index.__f__("log", "at components/zlfx-view/zlfx-view.vue:183", chart);
chart.setOption(this.option);
},
clickIndustryRank() {

View File

@@ -3,14 +3,23 @@ const common_vendor = require("../../common/vendor.js");
const request_api = require("../../request/api.js");
const utils_util = require("../../utils/util.js");
const common_assets = require("../../common/assets.js");
require("../../uni_modules/lime-echart/static/echarts.min.js");
const _sfc_main = {
data() {
return {
navH: common_vendor.inject("navHeight"),
navTitle: "",
//标题
searchResultTop: "",
//搜索结果
contentTop: "",
keywords: "",
//搜索关键字
searchShow: false,
//是否展示搜索结果
searchResultList: [],
//搜索结果
selectSearchStockInfo: null,
//选中的搜索股票信息
stockCode: "300700",
//股票代码 600759 000009 002004 300700
stockBasicInfo: null,
@@ -184,6 +193,8 @@ const _sfc_main = {
],
//财务全景分类
selectCaiwu: 0,
financialMetricsList: [],
//财务分析列表数据
financialStockInfo: null,
mainBussinessBarCategoryList: [],
//主营业务柱状图,折线图分类
@@ -216,8 +227,12 @@ const _sfc_main = {
//获取数字展示万或亿
};
},
onLoad() {
this.contentTop = this.navH + (20 + 70 + 30) / 750 * common_vendor.inject("windowWidth");
onLoad(e) {
this.searchResultTop = this.navH + (20 + 70) / 750 * common_vendor.inject("windowWidth");
this.contentTop = this.searchResultTop + 30 / 750 * common_vendor.inject("windowWidth");
if (e.code) {
this.stockCode = e.code;
}
this.getStockBasicInfoData();
this.getQuoteDetailsData();
this.getActualControlData();
@@ -230,6 +245,23 @@ const _sfc_main = {
* 点击搜索
*/
clickSearch() {
if (this.keywords) {
this.getSearchStockInfoListData();
} else
this.selectSearchStockInfo = null;
},
/**
* 点击搜索结果背景
*/
clickSearchResultBg() {
this.searchShow = false;
},
/**
* 点击搜索结果列表项
*/
clickSearchResultListItem(item) {
this.selectSearchStockInfo = item;
this.searchShow = false;
this.getStockBasicInfoData();
this.getQuoteDetailsData();
},
@@ -294,6 +326,9 @@ const _sfc_main = {
clickCaiWuItem(index) {
if (this.selectCaiwu != index) {
this.selectCaiwu = index;
if (index == 1) {
this.getFinancialMetricsData();
}
}
},
/**
@@ -343,16 +378,38 @@ const _sfc_main = {
clickCloseValueChainPop() {
this.$refs["valueChainPopup"].close();
},
/**
* 点击自选
*/
clickOptional() {
},
/**
* 点击分享
*/
clickShare() {
},
/**
* 根据输入内容获取搜索列表项
*/
getSearchStockInfoListData() {
let param = { q: this.keywords, limit: 10 };
request_api.searchStockInfo(param).then((res) => {
this.searchResultList = res.data;
this.searchShow = this.searchResultList.length > 0;
}).catch((error) => {
});
},
/**
* 获取股票基本信息
*/
getStockBasicInfoData() {
let code = this.stockCode;
if (this.keywords) {
code = this.keywords;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
request_api.stockBasicInfo(code).then((res) => {
this.stockBasicInfo = res.data;
this.navTitle = res.data.SECNAME + "(" + res.data.SECCODE + ")";
}).catch((error) => {
});
},
@@ -361,8 +418,8 @@ const _sfc_main = {
*/
getQuoteDetailsData() {
let code = this.stockCode;
if (this.keywords) {
code = this.keywords;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
request_api.quoteDetailsInfo(code).then((res) => {
this.quoteDetailsInfo = res.data;
@@ -374,8 +431,8 @@ const _sfc_main = {
*/
getActualControlData() {
let code = this.stockCode;
if (this.keywords) {
code = this.keywords;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
request_api.actualControl(code).then((res) => {
this.actualControlInfo = res.data[0];
@@ -387,8 +444,8 @@ const _sfc_main = {
*/
getOwnershipConcentration() {
let code = this.stockCode;
if (this.keywords) {
code = this.keywords;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
request_api.ownershipConcentration(code).then((res) => {
this.concentrationList = res.data.slice(0, 8);
@@ -400,8 +457,8 @@ const _sfc_main = {
*/
getTopShareholdersData() {
let code = this.stockCode;
if (this.keywords) {
code = this.keywords;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
request_api.topShareholdersList(code, { "limit": 10 }).then((res) => {
this.topShareholdersList = res.data;
@@ -413,8 +470,8 @@ const _sfc_main = {
*/
getTopCirculatingShareholdersData() {
let code = this.stockCode;
if (this.keywords) {
code = this.keywords;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
request_api.topCirculatingShareholdersList(code, { "limit": 10 }).then((res) => {
this.topCirculatingShareholdersList = res.data;
@@ -426,8 +483,8 @@ const _sfc_main = {
*/
getManagementTeamData() {
let code = this.stockCode;
if (this.keywords) {
code = this.keywords;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
request_api.managementTeam(code, { active_only: true }).then((res) => {
let data = res.data;
@@ -465,8 +522,8 @@ const _sfc_main = {
*/
getBranchListData() {
let code = this.stockCode;
if (this.keywords) {
code = this.keywords;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
request_api.branchesList(code).then((res) => {
this.branchList = res.data;
@@ -478,8 +535,8 @@ const _sfc_main = {
*/
getComprehensiveAnalysisData() {
let code = this.stockCode;
if (this.keywords) {
code = this.keywords;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
request_api.comprehensiveAnalysis(code).then((res) => {
this.qualitativeAnalysisInfo = res.data.qualitative_analysis;
@@ -513,8 +570,8 @@ const _sfc_main = {
*/
getIndustryRankListData() {
let code = this.stockCode;
if (this.keywords) {
code = this.keywords;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
request_api.industryRankList(code).then((res) => {
this.industryRankList = res.data;
@@ -526,8 +583,8 @@ const _sfc_main = {
*/
getValueChainAnalysisData() {
let code = this.stockCode;
if (this.keywords) {
code = this.keywords;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
request_api.valueChainAnalysis(code).then((res) => {
this.valueChainAnalysisInfo = res.data.analysis_summary;
@@ -557,8 +614,8 @@ const _sfc_main = {
*/
getKeyFactorsTimelineData() {
let code = this.stockCode;
if (this.keywords) {
code = this.keywords;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
request_api.keyFactorsTimeline(code).then((res) => {
this.keyFactorsInfo = res.data.key_factors;
@@ -573,16 +630,36 @@ const _sfc_main = {
*/
getFinancialStockInfoData() {
let code = this.stockCode;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
request_api.financialStockInfo(code).then((res) => {
this.financialStockInfo = res.data;
}).catch((error) => {
});
},
/**
* 获取财务指标数据
*/
getFinancialMetricsData() {
let code = this.stockCode;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
let param = { limit: 8 };
request_api.financialMetrics(code, param).then((res) => {
this.financialMetricsList = res.data;
}).catch((error) => {
});
},
/**
* 获取财务比较数据
*/
getFinancialComparisonData() {
let code = this.stockCode;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
let param = { periods: 8 };
request_api.financialComparison(code, param).then((res) => {
let data = res.data;
@@ -590,7 +667,11 @@ const _sfc_main = {
this.mainBussinessBarList = [];
this.mainBussinessLineList = [];
for (let item of data) {
this.mainBussinessBarCategoryList.unshift(item.report_type.replace("三季报", "Q3"));
let type = item.report_type;
type = type.replace("年三季报", "Q3");
type = type.replace("年中报", "中报");
type = type.replace("年年报", "年报");
this.mainBussinessBarCategoryList.unshift(type);
this.mainBussinessBarList.unshift((parseFloat(item.performance.revenue) / 1e8).toFixed(2));
this.mainBussinessLineList.unshift((parseFloat(item.performance.net_profit) / 1e8).toFixed(2));
}
@@ -602,6 +683,9 @@ const _sfc_main = {
*/
getFinancialMainBussinessData() {
let code = this.stockCode;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
let param = { periods: 4 };
request_api.financialMainBusiness(code, param).then((res) => {
this.productClassificationList = res.data.product_classification;
@@ -627,8 +711,8 @@ const _sfc_main = {
*/
getCompanyAnnouncementsData() {
let code = this.stockCode;
if (this.keywords) {
code = this.keywords;
if (this.selectSearchStockInfo) {
code = this.selectSearchStockInfo.stock_code;
}
let param = { limit: 20 };
request_api.companyAnnouncementsList(code, param).then((res) => {
@@ -675,74 +759,86 @@ if (!Math) {
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: common_vendor.p({
leftText: "平安银行(000001)",
leftText: $data.navTitle,
hideNavBg: true
}),
b: common_assets._imports_0,
c: common_assets._imports_1,
d: common_vendor.o(($event) => $options.clickSearch()),
d: common_vendor.o([($event) => $data.keywords = $event.detail.value, ($event) => $options.clickSearch()]),
e: $data.keywords,
f: common_vendor.o(($event) => $data.keywords = $event.detail.value),
g: common_vendor.s("top:" + $data.navH + "px;"),
h: $data.stockBasicInfo
f: common_vendor.s("top:" + $data.navH + "px;"),
g: $data.searchShow
}, $data.searchShow ? {
h: common_vendor.f($data.searchResultList, (item, index, i0) => {
return {
a: common_vendor.t(item.stock_code),
b: common_vendor.t(item.stock_name),
c: index,
d: common_vendor.o(($event) => $options.clickSearchResultListItem(item), index)
};
}),
i: common_vendor.s("top:" + $data.searchResultTop + "px;"),
j: common_vendor.o(($event) => $options.clickSearchResultBg())
} : {}, {
k: $data.stockBasicInfo
}, $data.stockBasicInfo ? common_vendor.e({
i: common_vendor.t($data.stockBasicInfo.industry_l1),
j: common_vendor.t($data.stockBasicInfo.sw_industry_l2),
k: $data.quoteDetailsInfo
l: common_vendor.t($data.stockBasicInfo.industry_l1),
m: common_vendor.t($data.stockBasicInfo.sw_industry_l2),
n: $data.quoteDetailsInfo
}, $data.quoteDetailsInfo ? {
l: common_vendor.t($data.quoteDetailsInfo.current_price),
m: common_vendor.n("current " + ($data.getRateUpOrDown($data.quoteDetailsInfo.change_percent) ? "down" : "up")),
n: common_vendor.t($data.quoteDetailsInfo.change_percent),
o: common_vendor.n("chg " + ($data.getRateUpOrDown($data.quoteDetailsInfo.change_percent) ? "down" : "up")),
p: common_vendor.t($data.quoteDetailsInfo.today_open),
q: common_vendor.t($data.quoteDetailsInfo.yesterday_close),
r: common_vendor.t($data.quoteDetailsInfo.today_high),
s: common_vendor.t($data.quoteDetailsInfo.today_low)
o: common_vendor.t($data.quoteDetailsInfo.current_price),
p: common_vendor.n("current " + ($data.getRateUpOrDown($data.quoteDetailsInfo.change_percent) ? "down" : "up")),
q: common_vendor.t($data.quoteDetailsInfo.change_percent),
r: common_vendor.n("chg " + ($data.getRateUpOrDown($data.quoteDetailsInfo.change_percent) ? "down" : "up")),
s: common_vendor.t($data.quoteDetailsInfo.today_open),
t: common_vendor.t($data.quoteDetailsInfo.yesterday_close),
v: common_vendor.t($data.quoteDetailsInfo.today_high),
w: common_vendor.t($data.quoteDetailsInfo.today_low)
} : {}, {
t: $data.quoteDetailsInfo
x: $data.quoteDetailsInfo
}, $data.quoteDetailsInfo ? common_vendor.e({
v: common_vendor.t($data.quoteDetailsInfo.pe ? $data.quoteDetailsInfo.pe : "-"),
w: $data.quoteDetailsInfo.float_shares
y: common_vendor.t($data.quoteDetailsInfo.pe ? $data.quoteDetailsInfo.pe : "-"),
z: $data.quoteDetailsInfo.float_shares
}, $data.quoteDetailsInfo.float_shares ? {
x: common_vendor.t($data.quoteDetailsInfo.float_shares)
A: common_vendor.t($data.quoteDetailsInfo.float_shares)
} : {}) : {}, {
y: $data.quoteDetailsInfo
}, $data.quoteDetailsInfo ? {
z: common_vendor.t($data.quoteDetailsInfo.market_cap),
A: common_vendor.t($data.quoteDetailsInfo.turnover_rate)
} : {}, {
B: $data.quoteDetailsInfo
}, $data.quoteDetailsInfo ? common_vendor.e({
C: $data.quoteDetailsInfo.total_shares
}, $data.quoteDetailsInfo.total_shares ? {
D: common_vendor.t($data.quoteDetailsInfo.total_shares)
} : {}, {
E: common_vendor.t($data.quoteDetailsInfo.week52_low),
F: common_vendor.t($data.quoteDetailsInfo.week52_high)
}) : {}, {
G: $data.quoteDetailsInfo
}, $data.quoteDetailsInfo ? {
H: common_vendor.t($data.getRateUpOrDown($data.quoteDetailsInfo.net_inflow) ? "" : "+"),
I: common_vendor.t($data.getNumStr($data.quoteDetailsInfo.net_inflow)),
J: common_vendor.n("content flex1 marginR " + ($data.getRateUpOrDown($data.quoteDetailsInfo.net_inflow) ? "down" : "up"))
C: common_vendor.t($data.quoteDetailsInfo.market_cap),
D: common_vendor.t($data.quoteDetailsInfo.turnover_rate)
} : {}, {
K: common_assets._imports_2$11,
L: common_vendor.t($data.getLocalDate($data.stockBasicInfo.establish_date)),
M: common_assets._imports_3$11,
N: common_vendor.t($data.stockBasicInfo.reg_capital),
O: common_assets._imports_4$10,
P: common_vendor.t($data.stockBasicInfo.province),
Q: common_vendor.t($data.stockBasicInfo.city),
R: common_assets._imports_5$6,
S: common_vendor.t($data.stockBasicInfo.company_intro),
T: !$data.isExpandIntro
}, !$data.isExpandIntro ? {} : {}, {
U: common_vendor.t($data.isExpandIntro ? "收起" : "展开全文"),
V: common_vendor.n("expand " + ($data.isExpandIntro ? "" : "absolute")),
W: common_vendor.o(($event) => $options.clickExpandOrRetractCompanyIntro()),
X: common_vendor.n("info relative flex1 " + ($data.isExpandIntro ? "" : "retract"))
E: $data.quoteDetailsInfo
}, $data.quoteDetailsInfo ? common_vendor.e({
F: $data.quoteDetailsInfo.total_shares
}, $data.quoteDetailsInfo.total_shares ? {
G: common_vendor.t($data.quoteDetailsInfo.total_shares)
} : {}, {
H: common_vendor.t($data.quoteDetailsInfo.week52_low),
I: common_vendor.t($data.quoteDetailsInfo.week52_high)
}) : {}, {
Y: common_vendor.f($data.tabList, (item, index, i0) => {
J: $data.quoteDetailsInfo
}, $data.quoteDetailsInfo ? {
K: common_vendor.t($data.getRateUpOrDown($data.quoteDetailsInfo.net_inflow) ? "" : "+"),
L: common_vendor.t($data.getNumStr($data.quoteDetailsInfo.net_inflow)),
M: common_vendor.n("content flex1 marginR " + ($data.getRateUpOrDown($data.quoteDetailsInfo.net_inflow) ? "down" : "up"))
} : {}, {
N: common_assets._imports_2$11,
O: common_vendor.t($data.getLocalDate($data.stockBasicInfo.establish_date)),
P: common_assets._imports_3$11,
Q: common_vendor.t($data.stockBasicInfo.reg_capital),
R: common_assets._imports_4$10,
S: common_vendor.t($data.stockBasicInfo.province),
T: common_vendor.t($data.stockBasicInfo.city),
U: common_assets._imports_5$6,
V: common_vendor.t($data.stockBasicInfo.company_intro),
W: !$data.isExpandIntro
}, !$data.isExpandIntro ? {} : {}, {
X: common_vendor.t($data.isExpandIntro ? "收起" : "展开全文"),
Y: common_vendor.n("expand " + ($data.isExpandIntro ? "" : "absolute")),
Z: common_vendor.o(($event) => $options.clickExpandOrRetractCompanyIntro()),
aa: common_vendor.n("info relative flex1 " + ($data.isExpandIntro ? "" : "retract"))
}) : {}, {
ab: common_vendor.f($data.tabList, (item, index, i0) => {
return {
a: common_vendor.t(item.title),
b: common_vendor.n("item " + ($data.selectTab == index ? "select" : "")),
@@ -750,9 +846,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
d: common_vendor.o(($event) => $options.clickTabItem(index), index)
};
}),
Z: $data.selectTab == 0
ac: $data.selectTab == 0
}, $data.selectTab == 0 ? common_vendor.e({
aa: common_vendor.f($data.companyFilesList, (item, index, i0) => {
ad: common_vendor.f($data.companyFilesList, (item, index, i0) => {
return {
a: common_vendor.t(item.title),
b: common_vendor.n("item " + ($data.selectCompanyFiles == index ? "select" : "")),
@@ -760,36 +856,36 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
d: common_vendor.o(($event) => $options.clickCompanyFilesItem(index), index)
};
}),
ab: $data.selectCompanyFiles == 0
ae: $data.selectCompanyFiles == 0
}, $data.selectCompanyFiles == 0 ? {
ac: common_vendor.p({
af: common_vendor.p({
actualControlInfo: $data.actualControlInfo,
concentrationList: $data.concentrationList,
shareholdersList: $data.topShareholdersList,
circulatingShareholdersList: $data.topCirculatingShareholdersList
})
} : {}, {
ad: $data.selectCompanyFiles == 1
ag: $data.selectCompanyFiles == 1
}, $data.selectCompanyFiles == 1 ? {
ae: common_vendor.p({
ah: common_vendor.p({
managementList: $data.managementList
})
} : {}, {
af: $data.selectCompanyFiles == 2
ai: $data.selectCompanyFiles == 2
}, $data.selectCompanyFiles == 2 ? {
ag: common_vendor.p({
aj: common_vendor.p({
branchList: $data.branchList
})
} : {}, {
ah: $data.selectCompanyFiles == 3
ak: $data.selectCompanyFiles == 3
}, $data.selectCompanyFiles == 3 ? {
ai: common_vendor.p({
al: common_vendor.p({
stockBasicInfo: $data.stockBasicInfo
})
} : {}) : {}, {
aj: $data.selectTab == 1
am: $data.selectTab == 1
}, $data.selectTab == 1 ? common_vendor.e({
ak: common_vendor.f($data.inDepthAnalysisList, (item, index, i0) => {
an: common_vendor.f($data.inDepthAnalysisList, (item, index, i0) => {
return {
a: common_vendor.t(item.title),
b: common_vendor.n("item " + ($data.selectInDepthAnalysis == index ? "select" : "")),
@@ -797,10 +893,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
d: common_vendor.o(($event) => $options.clickInDepthAnalysisItem(index), index)
};
}),
al: $data.selectInDepthAnalysis == 0
ao: $data.selectInDepthAnalysis == 0
}, $data.selectInDepthAnalysis == 0 ? {
am: common_vendor.o(($event) => $options.clickIndustryRank()),
an: common_vendor.p({
ap: common_vendor.o(($event) => $options.clickIndustryRank()),
aq: common_vendor.p({
qualitativeAnalysisInfo: $data.qualitativeAnalysisInfo,
competitivePositionInfo: $data.competitivePositionInfo,
industryRankInfo: $data.industryRankInfo,
@@ -809,17 +905,17 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
data: $data.chartData2
})
} : {}, {
ao: $data.selectInDepthAnalysis == 1
ar: $data.selectInDepthAnalysis == 1
}, $data.selectInDepthAnalysis == 1 ? {
ap: common_vendor.p({
as: common_vendor.p({
businessStructureList: $data.businessStructureList,
businessSegmentList: $data.businessSegmentList
})
} : {}, {
aq: $data.selectInDepthAnalysis == 2
at: $data.selectInDepthAnalysis == 2
}, $data.selectInDepthAnalysis == 2 ? {
ar: common_vendor.o($options.clickValueChainDetail),
as: common_vendor.p({
av: common_vendor.o($options.clickValueChainDetail),
aw: common_vendor.p({
valueChainAnalysisInfo: $data.valueChainAnalysisInfo,
totalNodes: $data.totalNodes,
upstreamList: $data.upstreamList,
@@ -827,19 +923,19 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
downstreamList: $data.downstreamList
})
} : {}, {
at: $data.selectInDepthAnalysis == 3
ax: $data.selectInDepthAnalysis == 3
}, $data.selectInDepthAnalysis == 3 ? {
av: common_vendor.o(($event) => $options.detailShow(1)),
aw: common_vendor.p({
ay: common_vendor.o(($event) => $options.detailShow(1)),
az: common_vendor.p({
keyFactorsInfo: $data.keyFactorsInfo,
keyFactorsList: $data.keyFactorsList,
timelineInfo: $data.timelineInfo,
timelineList: $data.timelineList
})
} : {}) : {}, {
ax: $data.selectTab == 2
aA: $data.selectTab == 2
}, $data.selectTab == 2 ? common_vendor.e({
ay: common_vendor.f($data.caiWuList, (item, index, i0) => {
aB: common_vendor.f($data.caiWuList, (item, index, i0) => {
return {
a: common_vendor.t(item.title),
b: common_vendor.n("item " + ($data.selectCaiwu == index ? "select" : "")),
@@ -847,9 +943,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
d: common_vendor.o(($event) => $options.clickCaiWuItem(index), index)
};
}),
az: $data.selectCaiwu == 0
aC: $data.selectCaiwu == 0
}, $data.selectCaiwu == 0 ? {
aA: common_vendor.p({
aD: common_vendor.p({
stockInfo: $data.financialStockInfo,
barCategoryList: $data.mainBussinessBarCategoryList,
barList: $data.mainBussinessBarList,
@@ -857,13 +953,17 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
productClassificationList: $data.productClassificationList
})
} : {}, {
aB: $data.selectCaiwu == 1
}, $data.selectCaiwu == 1 ? {} : {}, {
aC: $data.selectCaiwu == 2
aE: $data.selectCaiwu == 1
}, $data.selectCaiwu == 1 ? {
aF: common_vendor.p({
dataList: $data.financialMetricsList
})
} : {}, {
aG: $data.selectCaiwu == 2
}, $data.selectCaiwu == 2 ? {} : {}) : {}, {
aD: $data.selectTab == 3
aH: $data.selectTab == 3
}, $data.selectTab == 3 ? {
aE: common_vendor.f($data.dongTaiList, (item, index, i0) => {
aI: common_vendor.f($data.dongTaiList, (item, index, i0) => {
return {
a: common_vendor.t(item.title),
b: common_vendor.n("item " + ($data.selectDongtai == index ? "select" : "")),
@@ -871,24 +971,24 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
d: common_vendor.o(($event) => $options.clickDongTaiItem(index), index)
};
}),
aF: common_vendor.p({
aJ: common_vendor.p({
type: $data.selectDongtai,
newsList: $data.newsList,
announcementList: $data.companyAnnouncementList
})
} : {}, {
aG: common_vendor.s("top:" + $data.contentTop + "px;"),
aH: common_vendor.o(($event) => _ctx.sendEventComment()),
aI: _ctx.eventComment,
aJ: common_vendor.o(($event) => _ctx.eventComment = $event.detail.value),
aK: common_assets._imports_2$10,
aL: common_assets._imports_3$10,
aM: common_vendor.o(($event) => _ctx.clickComment()),
aN: common_assets._imports_4$9,
aO: common_vendor.o(($event) => _ctx.clickFollow()),
aP: common_assets._imports_9$1,
aQ: common_vendor.o(($event) => $options.clickCloseIndustryRankPop()),
aR: common_vendor.f($data.industryRankList, (item, index, i0) => {
aK: common_vendor.s("top:" + $data.contentTop + "px;"),
aL: common_vendor.o(($event) => _ctx.sendEventComment()),
aM: _ctx.eventComment,
aN: common_vendor.o(($event) => _ctx.eventComment = $event.detail.value),
aO: common_assets._imports_2$10,
aP: common_assets._imports_3$10,
aQ: common_vendor.o(($event) => $options.clickOptional()),
aR: common_assets._imports_4$9,
aS: common_vendor.o(($event) => $options.clickShare()),
aT: common_assets._imports_9$1,
aU: common_vendor.o(($event) => $options.clickCloseIndustryRankPop()),
aV: common_vendor.f($data.industryRankList, (item, index, i0) => {
return {
a: common_vendor.f(item.rankings, (ritem, rindex, i1) => {
return common_vendor.e({
@@ -985,68 +1085,68 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
c: index
};
}),
aS: common_assets._imports_1$13,
aT: common_vendor.sr("industryRankPop", "817d6950-13"),
aU: common_vendor.p({
aW: common_assets._imports_1$13,
aX: common_vendor.sr("industryRankPop", "817d6950-13"),
aY: common_vendor.p({
type: "bottom"
}),
aV: common_assets._imports_9$1,
aW: common_vendor.o(($event) => $options.clickCloseValueChainPop()),
aX: $data.selectValueChainInfo
aZ: common_assets._imports_9$1,
ba: common_vendor.o(($event) => $options.clickCloseValueChainPop()),
bb: $data.selectValueChainInfo
}, $data.selectValueChainInfo ? common_vendor.e({
aY: common_vendor.t($data.selectValueChainInfo.node_name),
aZ: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
bc: common_vendor.t($data.selectValueChainInfo.node_name),
bd: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
}, $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1 ? {
ba: common_vendor.t($data.selectValueChainInfo.node_type)
} : {}, {
bb: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
}, $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1 ? {
bc: common_vendor.t($data.selectValueChainInfo.market_share)
} : {}, {
bd: $data.selectValueChainInfo.node_level == 0
}, $data.selectValueChainInfo.node_level == 0 ? {
be: common_vendor.t($data.selectValueChainInfo.node_type)
} : {}, {
bf: $data.selectValueChainInfo.node_level == 0
}, $data.selectValueChainInfo.node_level == 0 ? {
bf: $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: $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2
}, $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2 ? {
bh: $data.selectValueChainInfo.node_level == 0
}, $data.selectValueChainInfo.node_level == 0 ? {
bi: common_vendor.t($data.selectValueChainInfo.node_type)
} : {}, {
bj: $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2
}, $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2 ? {
bj: $data.selectValueChainInfo.node_level == 0
}, $data.selectValueChainInfo.node_level == 0 ? {
bk: common_vendor.t($data.selectValueChainInfo.market_share)
} : {}, {
bl: common_vendor.t($data.selectValueChainInfo.node_description),
bm: common_vendor.t($data.selectValueChainInfo.importance_score),
bn: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
}, $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1 ? {
bo: common_vendor.s("width:" + ($data.selectValueChainInfo.importance_score ? $data.selectValueChainInfo.importance_score : 0) + "%;")
} : {}, {
bp: $data.selectValueChainInfo.node_level == 0
}, $data.selectValueChainInfo.node_level == 0 ? {
bq: common_vendor.s("width:" + $data.selectValueChainInfo.importance_score + "%;")
} : {}, {
br: $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2
bl: $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2
}, $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2 ? {
bs: common_vendor.s("width:" + $data.selectValueChainInfo.importance_score + "%;")
bm: common_vendor.t($data.selectValueChainInfo.node_type)
} : {}, {
bt: common_vendor.t($data.selectValueChainInfo.dependency_degree),
bv: $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1
}, $data.selectValueChainInfo.node_level == -2 || $data.selectValueChainInfo.node_level == -1 ? {
bw: common_vendor.s("width:" + ($data.selectValueChainInfo.dependency_degree ? $data.selectValueChainInfo.dependency_degree : 0) + "%;")
} : {}, {
bx: $data.selectValueChainInfo.node_level == 0
}, $data.selectValueChainInfo.node_level == 0 ? {
by: common_vendor.s("width:" + ($data.selectValueChainInfo.dependency_degree ? $data.selectValueChainInfo.dependency_degree : 0) + "%;")
} : {}, {
bz: $data.selectValueChainInfo.node_level == 1 || $data.selectValueChainInfo.node_level == 2
bn: $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.node_description),
bq: common_vendor.t($data.selectValueChainInfo.importance_score),
br: $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: $data.selectValueChainInfo.node_level == 0
}, $data.selectValueChainInfo.node_level == 0 ? {
bv: common_vendor.s("width:" + $data.selectValueChainInfo.importance_score + "%;")
} : {}, {
bw: $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.t($data.selectValueChainInfo.dependency_degree),
bz: $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.f($data.relatedCompanyList, (item, index, i0) => {
bB: $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: $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.f($data.relatedCompanyList, (item, index, i0) => {
return common_vendor.e({
a: common_vendor.t(item.stock_name),
b: common_vendor.t(item.stock_code),
@@ -1061,14 +1161,14 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
});
})
}) : {}, {
bC: common_vendor.sr("valueChainPopup", "817d6950-14"),
bD: common_vendor.p({
bG: common_vendor.sr("valueChainPopup", "817d6950-14"),
bH: common_vendor.p({
type: "bottom",
safeArea: false
}),
bE: common_assets._imports_9$1,
bF: common_vendor.sr("detailInfoPopup", "817d6950-15"),
bG: common_vendor.p({
bI: common_assets._imports_9$1,
bJ: common_vendor.sr("detailInfoPopup", "817d6950-15"),
bK: common_vendor.p({
type: "bottom",
safeArea: false
})

File diff suppressed because one or more lines are too long

View File

@@ -27,6 +27,25 @@ page {
height: 100%;
color: white;
}
.searchResultList {
background-color: #00000080;
left: 0;
right: 0;
bottom: 0;
padding: 0 25rpx;
z-index: 20;
}
.searchResultList .list {
background-color: white;
border-radius: 10rpx;
}
.searchResultList .list .item {
padding: 0 42rpx;
line-height: 60rpx;
font-size: 22rpx;
font-weight: 500;
color: #333;
}
.stockDetailsC {
left: 0;
right: 0;

View File

@@ -30,6 +30,7 @@ const calendarEventList = (param) => request_http.get("/api/calendar/events", pa
const calendarDataList = (param) => request_http.get("/api/calendar/data", param);
const investEventDetails = (id, param) => request_http.get("/api/calendar/detail/" + id, param);
const calendarEventCount = (param) => request_http.get("/api/calendar-event-counts", param);
const searchStockInfo = (param) => request_http.get("/api/stocks/search", param, true);
const stockBasicInfo = (code) => request_http.get("/api/stock/" + code + "/basic-info", null, true);
const quoteDetailsInfo = (code) => request_http.get("/api/stock/" + code + "/quote-detail", null, true);
const actualControl = (code) => request_http.get("/api/stock/" + code + "/actual-control", null, true);
@@ -44,6 +45,7 @@ const valueChainAnalysis = (code) => request_http.get("/api/company/value-chain-
const valueChainRelatedCompany = (param) => request_http.get("/api/company/value-chain/related-companies", param, true);
const keyFactorsTimeline = (code) => request_http.get("/api/company/key-factors-timeline/" + code, null, true);
const financialStockInfo = (code) => request_http.get("/api/financial/stock-info/" + code, null, 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 financialMainBusiness = (code, param) => request_http.get("/api/financial/main-business/" + code, param, true);
const companyAnnouncementsList = (code, param) => request_http.get("/api/stock/" + code + "/announcements", param, true);
@@ -86,6 +88,7 @@ exports.feedback = feedback;
exports.filterOptions = filterOptions;
exports.financialComparison = financialComparison;
exports.financialMainBusiness = financialMainBusiness;
exports.financialMetrics = financialMetrics;
exports.financialStockInfo = financialStockInfo;
exports.followEvent = followEvent;
exports.homeData = homeData;
@@ -106,6 +109,7 @@ exports.ownershipConcentration = ownershipConcentration;
exports.priceTimeline = priceTimeline;
exports.quoteDetailsInfo = quoteDetailsInfo;
exports.replyComment = replyComment;
exports.searchStockInfo = searchStockInfo;
exports.sendSMS = sendSMS;
exports.stockBasicInfo = stockBasicInfo;
exports.stockCandlestickChartData = stockCandlestickChartData;