1.26 个股详情业务结构,发展历程模块完善

This commit is contained in:
尚政杰
2026-01-26 17:53:08 +08:00
parent f296e005b3
commit 67a673cd4d
508 changed files with 44334 additions and 305 deletions

View File

@@ -136,38 +136,43 @@
</view>
</view>
<template v-if="selectCompanyFiles==0">
<gqjg-view :actualControlInfo="actualControlInfo" :shareholdersList="topShareholdersList" :circulatingShareholdersList="topCirculatingShareholdersList"></gqjg-view>
<gqjg-view :actualControlInfo="actualControlInfo" :concentrationList="concentrationList" :shareholdersList="topShareholdersList" :circulatingShareholdersList="topCirculatingShareholdersList"></gqjg-view>
</template>
<view v-if="selectCompanyFiles==1" class="managementTeamList">
<view class="positionNumC flex">
<view class="position">董事</view>
<view class="num director">15</view>
</view>
<view class="item flex">
<view class="avatarC flexCenter relative director">
<view class="sexC flexCenter absolute male">
<image class="icon" src="/pagesStock/static/icon/female.png" mode="widthFix">
</image>
</view>
</view>
<view class="flex1">
<view class="flex">
<view class="name">郭晓涛</view>
<view class="position">非执行董事</view>
<view class="date flex1">任职日期2024-10-08</view>
</view>
<view class="educationAgeC flex">
<view class="education label">博士研究生</view>
<view class="age label">59</view>
</view>
</view>
</view>
<view class="expandMoreC flexCenter">
<view>展开查看</view>
<image class="arrow" src="/pagesStock/static/icon/lookMoreArrow.png" mode="widthFix">
</image>
</view>
<view v-if="selectCompanyFiles==1" class="managementTeamList">
<block v-for="(item,index) in managementList" :key="index">
<view v-if="item.list.length>0" class="positionNumC flex">
<view class="position">{{item.key}}</view>
<view class="num director">{{item.list.length}}</view>
</view>
<view class="item flex" v-for="(pitem,pindex) in item.list" :key="index">
<view class="avatarC flexCenter relative director">
{{getLastNameStr(pitem.name)}}
<view :class="'sexC flexCenter absolute '+(pitem.gender=='女'?'female':'male')">
<image v-if="pitem.gender=='女'" class="icon" src="/pagesStock/static/icon/female.png" mode="widthFix">
</image>
<image v-else class="icon" src="/pagesStock/static/icon/male.png" mode="widthFix">
</image>
</view>
</view>
<view class="flex1">
<view class="flex">
<view class="name">{{pitem.name}}</view>
<view class="position">{{pitem.position_name}}</view>
<view class="date flex1">任职日期{{pitem.start_date}}</view>
</view>
<view class="educationAgeC flex">
<view class="education label">{{pitem.education}}</view>
<view class="age label">59</view>
</view>
</view>
</view>
<view v-if="item.list.length>4" class="expandMoreC flexCenter">
<view>展开查看</view>
<image class="arrow" src="/pagesStock/static/icon/lookMoreArrow.png" mode="widthFix">
</image>
</view>
</block>
</view>
<view v-if="selectCompanyFiles==2" class="branchList">
<view class="item" v-for="(item,index) in branchList" :key="index">
@@ -248,8 +253,9 @@
<view v-if="selectInDepthAnalysis==0" class="strategicAnalysisList">
<view class="section">核心定位</view>
<view v-if="qualitativeAnalysisInfo" class="corePositionC">{{qualitativeAnalysisInfo.core_positioning.one_line_intro}}</view>
<view class="section">投资亮点</view>
<view class="highlightsList">
<view class="section">投资亮点</view>
<view v-if="qualitativeAnalysisInfo" class="corePositionC">{{qualitativeAnalysisInfo.core_positioning.investment_highlights}}</view>
<!-- <view class="highlightsList">
<view class="item flex">
<image class="icon" src="" mode="widthFix"></image>
<view class="flex1">
@@ -257,9 +263,10 @@
<view class="content">背靠平安集团客户资源共享和交叉销售带来持续增长动力</view>
</view>
</view>
</view>
<view class="section">商业模式</view>
<view class="infoC">
</view> -->
<view class="section">商业模式</view>
<view v-if="qualitativeAnalysisInfo" class="corePositionC">{{qualitativeAnalysisInfo.core_positioning.business_model_desc}}</view>
<!-- <view class="infoC">
<view class="title">零售银行核心驱动</view>
<view class="content">以零售银行业务为核心驱动依托平安集团综合金融平台构建智能化移动化综合化三位一体发展模式</view>
</view>
@@ -286,7 +293,7 @@
<view v-if="qualitativeAnalysisInfo" class="infoC">
<view class="title">战略举措</view>
<view class="content">{{qualitativeAnalysisInfo.strategy.strategic_initiatives}}</view>
</view>
</view> -->
<view class="section flex">
<view>竞争地位分析</view>
@@ -327,13 +334,13 @@
</view>
</view>
<template v-if="selectInDepthAnalysis==1">
<ywjg-view></ywjg-view>
<ywjg-view :businessSegmentList="businessSegmentList"></ywjg-view>
</template>
<template v-if="selectInDepthAnalysis==2">
<cyl-view @detail="detailShow(0)"></cyl-view>
</template>
<template v-if="selectInDepthAnalysis==3">
<fzlc-view @detail="detailShow(1)"></fzlc-view>
<fzlc-view :keyFactorsInfo="keyFactorsInfo" :keyFactorsList="keyFactorsList" :timelineInfo="timelineInfo" :timelineList="timelineList" @detail="detailShow(1)"></fzlc-view>
</template>
</block>
<block v-if="selectTab==2">
@@ -379,7 +386,7 @@
<uni-popup ref="industryRankPop" type="bottom">
<view class="industryRankPop relative">
<view class="popTitle">行业排名</view>
<view class="closeC absolute">
<view class="closeC absolute" @click="clickCloseIndustryRankPop()">
<image class="icon" src="/static/icon/home/close.png" mode="widthFix"></image>
</view>
<view class="rankList">
@@ -548,8 +555,8 @@
<script>
import { inject } from 'vue'
import { actualControl, branchesList, companyAnnouncementsList, comprehensiveAnalysis, eventList, industryRankList, managementTeam, quoteDetailsInfo, stockBasicInfo, topCirculatingShareholdersList, topShareholdersList } from '@/request/api'
import { getLocalDate, getNumStr, getRateUpOrDown } from '@/utils/util'
import { actualControl, branchesList, companyAnnouncementsList, comprehensiveAnalysis, eventList, industryRankList, keyFactorsTimeline, managementTeam, ownershipConcentration, quoteDetailsInfo, stockBasicInfo, topCirculatingShareholdersList, topShareholdersList } from '@/request/api'
import { getLastNameStr, getLocalDate, getNumStr, getRateUpOrDown } from '@/utils/util'
const echarts = require('../../uni_modules/lime-echart/static/echarts.min.js');
export default {
@@ -596,6 +603,7 @@
}
], //公司档案分类
actualControlInfo:null, //实际控制信息
concentrationList:[], //股权集中度列表
topShareholdersList:[], //十大股东列表
topCirculatingShareholdersList:[], //十大流通股东列表
managementList:[], //管理团队列表
@@ -732,6 +740,11 @@
},
]
},
businessSegmentList:[], //业务板块详情
keyFactorsInfo:null, //关键因素统计信息
keyFactorsList:[], //关键因素
timelineInfo:null, //发展时间线统计信息
timelineList:[], //发展时间线
caiWuList: [{
title: '主营数据'
},
@@ -756,14 +769,16 @@
companyAnnouncementList:[], //公司公告数据
getLocalDate:getLocalDate,
getRateUpOrDown:getRateUpOrDown,
getNumStr:getNumStr
getNumStr:getNumStr,
getLastNameStr:getLastNameStr
}
},
onLoad() {
this.contentTop = this.navH + (20 + 70 + 30) / 750 * inject('windowWidth')
this.getStockBasicInfoData()
this.getQuoteDetailsData()
this.getActualControl()
this.getActualControlData()
this.getOwnershipConcentration()
this.getTopShareholdersData()
this.getTopCirculatingShareholdersData()
},
@@ -774,7 +789,6 @@
// chart.on('click',function (params) {
// console.log(params)
// })
console.log(chart)
chart.setOption(this.option2)
},
/**
@@ -831,6 +845,9 @@
clickInDepthAnalysisItem(index) {
if (this.selectInDepthAnalysis != index) {
this.selectInDepthAnalysis = index
if (index==3) {
this.getKeyFactorsTimelineData()
}
}
},
/**
@@ -910,7 +927,7 @@
/**
* 获取实际控制人数据
*/
getActualControl() {
getActualControlData() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
@@ -921,6 +938,20 @@
})
},
/**
* 获取股权集中度数据
*/
getOwnershipConcentration() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
}
ownershipConcentration(code).then(res=>{
this.actualControlInfo = res.data
}).catch(error=>{
})
},
/**
* 获取十大股东列表
*/
@@ -960,13 +991,38 @@
}
managementTeam(code,{active_only:true}).then(res=>{
let data = res.data
this.managementList = data.reduce((acc, item) => {
if (!acc[item.position_category_code]) {
acc[item.position_category_code] = [];
}
acc[item.position_category_code].push(item);
let arr = ['高管','董事','监事','其他']
let list = []
for (let item of arr) {
list.push({key:item,list:[]})
}
this.managementList = data.reduce((acc,item) => {
for (let item1 of acc) {
if(item.position_category.indexOf(item1.key)>-1)
{
let keyIndex = -1
for (let item2 of acc) {
if(item1.key==item2.key){
keyIndex = acc.indexOf(item2)
break
}
}
if(keyIndex>-1)
{
acc[keyIndex].list.push(item)
}else
{
acc.push({key:item1,list:[item]})
}
}
}
if(item.position_category.indexOf(arr[0])>-1&&item.position_category.indexOf(arr[1])>-1&&item.position_category.indexOf(arr[2])>-1)
{
// acc.key = '其他'
// acc.list = item
}
return acc;
}, {});
}, list);
}).catch(error=>{
})
@@ -997,6 +1053,7 @@
this.qualitativeAnalysisInfo = res.data.qualitative_analysis
this.competitivePositionInfo = res.data.competitive_position
this.mainCompetitorsList = this.competitivePositionInfo.analysis.main_competitors.split(',')
let marketPosition = this.competitivePositionInfo.scores.market_position
this.scoreList[0].score = marketPosition
let technology = this.competitivePositionInfo.scores.technology
@@ -1018,6 +1075,7 @@
setTimeout(function() {
that.init()
}, 1000);
this.businessSegmentList = res.data.business_segments;
}).catch(error=>{
})
@@ -1036,6 +1094,23 @@
})
},
/**
* 获取关键因素和发展时间线数据
*/
getKeyFactorsTimelineData() {
let code = this.stockCode
if (this.keywords) {
code = this.keywords
}
keyFactorsTimeline(code).then(res=>{
this.keyFactorsInfo = res.data.key_factors
this.keyFactorsList = res.data.key_factors.categories
this.timelineInfo = res.data.development_timeline.statistics
this.timelineList = res.data.development_timeline.events
}).catch(error=>{
})
},
/**
* 获取新闻动态数据
*/