Commit dac8bcd8 authored by caixingbing's avatar caixingbing

*

parent 281f1983
......@@ -3,7 +3,7 @@ import request from "@/utils/request";
// 企业数据统计
export function statistic(data) {
return request({
url: '/enterprise/statistic(建设库)',
url: '/enterprise/statistic',
method: 'post',
data: data
})
......
......@@ -237,7 +237,7 @@ export const constantRoutes = [
redirect: 'noredirect',
children: [
{
path: '/radar/Bidding/details/:id(\\d+)',
path: '/radar/Bidding/details/:id',
component: () => import('@/views/radar/Bidding/details'),
name: 'BiddingDetails',
meta: { title: '招标计划详情', icon: 'radar' }
......
......@@ -7,26 +7,26 @@
<el-popover
placement="top-start"
trigger="hover"
content="历史招标总数">
content="统计企业历年来公开招标总数">
<img src="@/assets/images/detail/overview/zbph_question.png" slot="reference">
</el-popover>
<span class="zbph-item-num">{{dataAll.bidAmount || '--'}}</span></div>
<span class="zbph-item-num">{{dataAll.totalCount || '--'}}</span></div>
<div>近一年招标总数
<el-popover
placement="top-start"
trigger="hover"
content="近一年招标总数">
content="统计企业近一年公开招标总数">
<img src="@/assets/images/detail/overview/zbph_question.png" slot="reference">
</el-popover>
<span class="zbph-item-num">{{dataAll.lastYearCount || '--'}}</span></div>
<div>历史招标总额
<div>历史招标总额(万元)
<el-popover
placement="top-start"
trigger="hover"
content="历史招标总额">
content="统计企业历年来公开招标项目总金额">
<img src="@/assets/images/detail/overview/zbph_question.png" slot="reference">
</el-popover>
<span class="zbph-item-num">{{dataAll.bidAmount || '--'}}</span></div>
<span class="zbph-item-num">{{dataAll.bidAmount?parseFloat(dataAll.bidAmount.toFixed(6)):'--'}}</span></div>
</div>
<div class="zbph-account">招标动态
<div class="labels">
......@@ -56,7 +56,7 @@
prop="companyName"
label="公司名称">
<template slot-scope="scope">
<router-link to="" tag="a" class="a-link">{{ scope.row.companyName }}</router-link>
<router-link :to="`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link">{{ scope.row.companyName }}</router-link>
</template>
</el-table-column>
<el-table-column
......@@ -76,6 +76,7 @@
</template>
<script>
import {encodeStr} from "@/assets/js/common"
import {bidDataGroup, supplierPage} from '@/api/detail/party-a/overview'
import * as echarts from 'echarts'
export default {
......@@ -83,6 +84,7 @@ export default {
props: ['companyId'],
data() {
return {
encodeStr,
datatype:'3',//切换类型
dataAll: {},
dtdata:[],//数据
......@@ -96,9 +98,6 @@ export default {
this.handleSupplier()
},
mounted() {
this.$nextTick(()=>{
this.getDT(3)
})
},
methods: {
async handleBid(){
......@@ -106,6 +105,13 @@ export default {
if(res.code==200){
let {totalCount, lastYearCount, bidAmount} = res.data
this.dataAll = {totalCount, lastYearCount, bidAmount}
this.dtdata=res.data.groupCount.map(item=>{
return item.count
})
this.dttime=res.data.groupCount.map(item=>{
return item.span
})
this.initDT(this.dtdata,this.dttime)
}
},
async handleSupplier() {
......@@ -113,6 +119,7 @@ export default {
if(res.code==200){
this.tableData = res.rows
this.tableData.forEach((item, index) => {
item.amount = item.amount?parseFloat(item.amount.toFixed(6)):0
item.ico = require(`@/assets/images/detail/overview/ywwl_top${index+1}.png`)
})
}
......@@ -180,55 +187,7 @@ export default {
},
getDT(type){
this.datatype = type
let time = new Date()
let week = ['周一','周二','周三','周四','周五','周六','周日']
let weekdata = [200,150,300,240,400,380,460]
let monthdata = [400,200,350,170,190,280,260,308,406,387,458,695,125,360,512,546,298,365,458,536,345,200,150,300,240,400,380,460,472,365,547]
let yeardata = [1908,1500,2300,1456,2354,2564,1254,1236,4561,4521,1236,4561,3521]
let datas = []
let labels = []
switch (type) {
case 3:
time = time.getDay()
// week.length = time
weekdata.length = time
for(var i=0;i<7;i++){
if(i > time){
weekdata.push('')
}
}
labels = week
datas = weekdata
break;
case 2:
let days = new Date(time.getFullYear(),time.getMonth()+1,0).getDate()//获取到本月天数
time = time.getDate()
monthdata.length = time
for(var i=1;i<=days;i++){
labels.push(i+'日')
if(i > time){
monthdata.push("")
}
}
datas = monthdata
break;
case 1:
time = time.getMonth()+1
yeardata.length = time
for(var i=1;i<=12;i++){
labels.push(i+'月')
if(i>time){
yeardata.push('')
}
}
datas = yeardata
break;
default:
break;
}
this.dtdata = datas
this.dttime = labels
this.initDT(datas,labels)
this.handleBid()
}
}
}
......
......@@ -57,7 +57,6 @@ export default {
}
},
created() {
this.handleStatistic()
this.handleQuery()
},
mounted() {
......@@ -120,6 +119,11 @@ export default {
changePath(this, it.pathName)
}
}
},
watch: {
statistic(newVal, oldVal) {
this.handleStatistic()
}
}
}
</script>
......
......@@ -133,19 +133,20 @@ export default {
props: ['companyId', 'companyInfo', 'statistic'],
data() {
return {
newStatic: null,
labelList: [], //企业标签
claimLoading: false,
ifClaim: false, //是否认领
showMore: false,
showState: false,
graphList: [
{id: 1, name:'业务往来', intro:[{id: 101, name:'客户', val:0, category:'global', field:'customer'},{id: 102, name:'供应商', val:0, category:'global', field:'supplier'}], ico:require('@/assets/images/detail/overview/company_ywwl.png')},
{id: 2, name:'商机线索', intro:[{id: 201, name:'专项债项目', val:0, category:'xxx', field:'yy'},{id: 202, name:'招标计划', val:0, category:'xxx', field:'zz'}], ico:require('@/assets/images/detail/overview/company_sjxs.png')},
{id: 3, name:'城投拿地', intro:[{id: 301, name:'土地交易', val:0, category:'global', field:'landInfo'},{id: 302, name:'行政许可', val:0, category:'business', field:'adminLicensing'}], ico:require('@/assets/images/detail/overview/company_ctnd.png')},
{id: 4, name:'对外投资', intro:[{id: 401, name:'企业经营实力展现'}], ico:require('@/assets/images/detail/overview/company_dwtz.png')},
{id: 5, name:'股权穿透', intro:[{id: 501, name:'瞬息掌握企业关系'}], ico:require('@/assets/images/detail/overview/company_gqct.png')},
{id: 6, name:'企业架构', intro:[{id: 601, name:'企业架构关联图'}], ico:require('@/assets/images/detail/overview/company_qyjg.png')},
{id: 7, name:'工商信息', intro:[{id: 701, name:'企业基础工商登记信息'}], ico:require('@/assets/images/detail/overview/company_gsxx.png')}
{id: 1, name:'业务往来', isShow:true, intro:[{id: 101, name:'客户', val:0, category:'global', field:'customer'},{id: 102, name:'供应商', val:0, category:'global', field:'supplier'}], ico:require('@/assets/images/detail/overview/company_ywwl.png')},
{id: 2, name:'商机线索', isShow:true, intro:[{id: 201, name:'专项债项目', val:0, category:'xxx', field:'yy'},{id: 202, name:'招标计划', val:0, category:'xxx', field:'zz'}], ico:require('@/assets/images/detail/overview/company_sjxs.png')},
{id: 3, name:'城投拿地', isShow:true, intro:[{id: 301, name:'土地交易', val:0, category:'global', field:'landInfo'},{id: 302, name:'行政许可', val:0, category:'business', field:'adminLicensing'}], ico:require('@/assets/images/detail/overview/company_ctnd.png')},
{id: 4, name:'对外投资', isShow:true, intro:[{id: 401, name:'企业经营实力展现'}], ico:require('@/assets/images/detail/overview/company_dwtz.png')},
{id: 5, name:'股权穿透', isShow:true, intro:[{id: 501, name:'瞬息掌握企业关系'}], ico:require('@/assets/images/detail/overview/company_gqct.png')},
{id: 6, name:'企业架构', isShow:true, intro:[{id: 601, name:'企业架构关联图'}], ico:require('@/assets/images/detail/overview/company_qyjg.png')},
{id: 7, name:'工商信息', isShow:true, intro:[{id: 701, name:'企业基础工商登记信息'}], ico:require('@/assets/images/detail/overview/company_gsxx.png')}
], //企业链图
//风险扫描
labelArr:['失信联合惩戒企业','司法纠纷','注销'], //负向经营状态
......@@ -153,13 +154,11 @@ export default {
}
},
created() {
this.handleStatistic()
this.getCompanyInfo() //处理曾用名
},
mounted() {
this.getClaimStatus() //获取企业认领状态
this.companySwiper() //swiper滚动板块
this.handleWidth() //企业背景是否收起
this.companySwiper() //swiper滚动板块
},
methods: {
//认领
......@@ -186,20 +185,27 @@ export default {
})
},
getCompanyInfo(){
if(this.companyInfo.historyNames && typeof this.companyInfo.historyNames=='string'){ //曾用名
if(this.companyInfo.historyNames && typeof this.companyInfo.historyNames=='string'){ //曾用名)
this.companyInfo.historyNames = JSON.parse(this.companyInfo.historyNames)
}
},
handleStatistic() {
this.graphList.forEach((item, index) => {
let number = null
if(item.intro){
item.intro.forEach((it, idx) => {
if(it.category || it.field){
it.val = this.statistic[it.category]?this.statistic[it.category][it.field]:0
number +=it.val
}
})
}
if(number===0){
item.isShow = false
}
})
this.graphList = this.graphList.filter(item => item.isShow)
this.companySwiper() //swiper滚动板块
},
//获取认领状态
async getClaimStatus(){
......@@ -259,7 +265,11 @@ export default {
},
watch: {
companyInfo(newVal, oldVal) {
this.getCompanyInfo() //处理曾用名
this.handleWidth()
},
statistic(newVal, oldVal) {
this.handleStatistic()
}
}
}
......
......@@ -7,9 +7,9 @@
<li class="swiper-slide" v-for="(item, index) in operList" :key="index">
<div class="swiper-div">
<div class="operations-title">{{item.bratingSubjectLevel}}-<span>{{item.ratingDate}}</span></div>
<div class="flex-box text-cl1 operations-info">
{{item.bondType}}
<span><img src="@/assets/images/detail/overview/oper_source.png">{{item.creditRatingAgency}}</span>
<div class="flex-box operations-info">
<div>{{item.bondType || '--'}}</div>
<span class="text-cl1"><img src="@/assets/images/detail/overview/oper_source.png">{{item.creditRatingAgency || '--'}}</span>
</div>
</div>
</li>
......@@ -48,7 +48,6 @@ export default {
},
created() {
this.handleQuery()
this.handleFinancial()
},
mounted() {
this.companySwiper()
......@@ -68,6 +67,9 @@ export default {
let res = await bondCreditRating({cid: this.companyId})
if(res.code==200){
this.operList = res.data
this.$nextTick(() => {
this.companySwiper()
})
}
},
handleFinancial(){
......@@ -75,10 +77,15 @@ export default {
let { totalAssets, belongNetAssets, creditBalance, operatingIncome, totalLiabilities } = this.financial
let jyqkObj = { totalAssets, belongNetAssets, creditBalance, operatingIncome, totalLiabilities }
this.gsjyList.forEach((item, index) => {
item.amount = jyqkObj[Object.keys(jyqkObj)[index]]
item.amount = jyqkObj[Object.keys(jyqkObj)[index]]?parseFloat(jyqkObj[Object.keys(jyqkObj)[index]].toFixed(2)):0
})
}
}
},
watch: {
financial(newVal, oldVal) {
this.handleFinancial()
}
}
}
</script>
......@@ -119,8 +126,12 @@ export default {
justify-content: space-between;
font-size: 14px;
color: #416587;
div{
flex-shrink: 0;
}
span{
font-size: 12px;
margin-left: 6px;
img{
width: 10px;
height: 10px;
......
......@@ -6,24 +6,36 @@
<el-tab-pane label="对外投资" name="second"></el-tab-pane>
</el-tabs>
<div class="table-item">
<div class="rela-person" v-if="activeName=='first'">实际控制人:<router-link to="" tag="a" class="a-link">{{financial&&financial.actualController || '--'}}</router-link></div>
<el-table :data="holderData" border style="width: 100%" v-if="activeName=='first'">
<div class="rela-person" v-if="activeName=='first'">实际控制人:{{financial&&financial.actualController || '--'}}</div>
<el-table :data="holderData" border style="width: 100%" v-show="activeName=='first'">
<el-table-column label="序号" width="55" align="left" fixed>
<template slot-scope="scope">{{ holderParams.pageNum * holderParams.pageSize - holderParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column prop="stockName" min-width="140" label="股东名称"></el-table-column>
<el-table-column prop="xxx" label="持股数量(亿)"></el-table-column>
<el-table-column prop="xxx" label="持股比例"></el-table-column>
<el-table-column prop="xxx" label="法定代表人"></el-table-column>
<el-table-column prop="xxx" label="成立日期"></el-table-column>
<el-table-column prop="shouldCapiConv" label="持股数量(亿)"></el-table-column>
<el-table-column label="持股比例">
<template slot-scope="scope">
<span>{{scope.row.stockPercent?parseFloat(Number(scope.row.stockPercent*100).toFixed(4))+'%':'--'}}</span>
</template>
</el-table-column>
<el-table-column label="法定代表人">
<template slot-scope="scope">
<span>{{scope.row.corporatePerson || '--'}}</span>
</template>
</el-table-column>
<el-table-column label="成立日期">
<template slot-scope="scope">
<span>{{scope.row.registeredDate || '--'}}</span>
</template>
</el-table-column>
</el-table>
<el-table :data="shipData" border style="width: 100%" v-else>
<el-table :data="shipData" border style="width: 100%" v-show="activeName=='second'">
<el-table-column label="序号" width="55" align="left" fixed>
<template slot-scope="scope">{{ shipParams.pageNum * shipParams.pageSize - shipParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column prop="investName" min-width="140" label="被投资企业名称">
<el-table-column min-width="140" label="被投资企业名称">
<template slot-scope="scope">
<router-link to="" tag="a" class="a-link" v-if="scope.row.id&&scope.row.investName" v-html="scope.row.investName"></router-link>
<router-link :to="`/enterprise/${encodeStr(scope.row.id)}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.investName" v-html="scope.row.investName"></router-link>
<div v-else v-html="scope.row.investName || '--'"></div>
<div class="tags" v-if="scope.row.businessStatus || scope.row.biddingAnnouncement">
<span class="tag style1" v-if="scope.row.businessStatus">{{scope.row.businessStatus}}</span>
......@@ -41,18 +53,20 @@
</el-table-column>
<el-table-column prop="shouldCapi" label="认缴出资额(万元)"></el-table-column>
</el-table>
<div class="rela-more" v-if="activeName=='second'&& shipTotal>shipParams.pageSize"><router-link to="" tag="a" class="a-link">查看更多数据 ></router-link></div>
<div class="rela-more" v-if="activeName=='second'&& shipTotal>shipParams.pageSize"><span class="a-link" @click="handlePath">查看更多数据 ></span></div>
</div>
</div>
</template>
<script>
import {encodeStr, changePath} from "@/assets/js/common"
import {bestStockPage, investment} from '@/api/detail/party-a/overview'
export default {
name: 'Relationship',
props: ['companyId', 'financial'],
data() {
return {
encodeStr,
activeName:'first',
//表格数据
holderData:[],
......@@ -60,13 +74,13 @@ export default {
cid: this.companyId,
isHistory: 0,
pageNum: 1,
pageSize: 20
pageSize: 100
},
shipData:[],
shipParams: {
cid: this.companyId,
pageNum: 1,
pageSize: 10
pageSize: 5
},
shipTotal: 0
}
......@@ -83,6 +97,9 @@ export default {
this.activeName=='first'?this.holderData = res.rows:this.shipData = res.rows
}
this.activeName=='second'?this.shipTotal = res.total:''
},
handlePath(){
changePath(this, 'overseas')
}
}
}
......@@ -135,6 +152,9 @@ export default {
.rela-more{
padding-top: 16px;
text-align: center;
span{
cursor: pointer;
}
}
}
</style>
......@@ -48,7 +48,7 @@ export default {
tz:'',
bl:''
},
{
/*{
name:'企业公告',
value:'',
category:'xxx',
......@@ -67,11 +67,11 @@ export default {
{
name:'对外投资变更',
value:'',
category:'basic',
field:'outboundInvestment',
category:'xxx',
field:'yy',
tz:'',
bl:''
},
},*/
{
name:'法院公告',
value:'',
......@@ -80,14 +80,14 @@ export default {
tz:'',
bl:''
},
{
/*{
name:'立案信息',
value:'',
category:'xxx',
field:'zz',
tz:'',
bl:''
},
},*/
{
name:'被执行人',
value:'',
......@@ -108,12 +108,8 @@ export default {
}
},
created() {
this.handView()
},
mounted() {
this.$nextTick(()=>{
this.getDT()
})
},
methods: {
handView(){
......@@ -126,6 +122,10 @@ export default {
let it = {name:item.name, value:number, tz: '', bl:parseFloat(Number(Number(number)/Number(totalVal)*100).toFixed(2))+'%'}
return it
})
this.viewData.sort((a, b) => {
return a.value < b.value ? 1 : -1;
})
this.getDT()
},
getDT(){
let myChart = echarts.init(document.getElementById("echartsRisk"))
......@@ -172,6 +172,11 @@ export default {
}
myChart.setOption(option)
}
},
watch: {
statistic(newVal, oldVal) {
this.handView()
}
}
}
</script>
......@@ -185,7 +190,6 @@ export default {
.clue-box{
width: 100%;
justify-content: space-between;
align-items: normal;
margin-top: 20px;
.clue-echarts{
width: calc(50% - 8px);
......
......@@ -33,7 +33,7 @@ export default {
queryParams: {
cid: this.companyId,
pageNum: 1,
pageSize: 20
pageSize: 100
},
//表格数据
tableData:[]
......
......@@ -3,14 +3,14 @@
<div class="tender-list">
<div class="common-title">招标公告</div>
<div class="tender-item" v-for="(item, index) in zbggList" :key="index">
<div class="flex-box tender-title">{{item.projectName}}<span :class="item.tenderStage=='项目动态'?'style2':item.tag=='招投标'?'style4':'style1'">{{item.tenderStage}}</span></div>
<div class="flex-box tender-title"><div class="text-cl1" :title="item.projectName"><router-link :to="'/radar/Bidding/details/'+item.bid" tag="a" class="a-link">{{item.projectName}}</router-link></div><span :class="item.tenderStage=='项目动态'?'style2':item.tag=='招投标'?'style4':'style1'">{{item.tenderStage}}</span></div>
<span class="tender-time">{{item.contact}} {{item.issueTime}}</span>
</div>
</div>
<div class="tender-list">
<div class="common-title">企业动态</div>
<div class="tender-item" v-for="(item, index) in trendList" :key="index">
<div class="flex-box tender-title">{{item.xxx}}<span :class="item.tag=='新增分支机构'?'style2':item.tag=='新增施工工法'?'style3':'style1'">{{item.tag}}</span></div>
<div class="flex-box tender-title"><div class="text-cl1" :title="tendTitle(item.details)">{{tendTitle(item.details)}}</div><span :class="item.parentDimension=='新增分支机构'?'style2':item.parentDimension=='新增施工工法'?'style3':'style1'">{{item.parentDimension}}</span></div>
<span class="tender-time">{{item.createTime}}</span>
</div>
</div>
......@@ -34,18 +34,28 @@ export default {
//招标公告数据
zbggList:[],
trendParams: {
companyId: this.companyId,
companyId: '2453',
pageNum: 1,
pageSize: 5
},
//企业动态数据
trendList:[
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '对外投资变更', time: '03-21'},
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '新增分支机构', time: '03-21'},
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '新增分支机构', time: '03-21'},
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '新增施工工法', time: '03-21'},
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '新增施工工法', time: '03-21'}
]
trendList:[]
}
},
computed: {
tendTitle() {
return function(val) {
let str = ''
if(val){
for(let key in val){
str += key+':'+ val[key]+';'
}
str = str.substring(0, str.lastIndexOf(';'))
}else{
str = '--'
}
return str
}
}
},
created() {
......@@ -92,6 +102,9 @@ export default {
color: #232323;
justify-content: space-between;
align-items: normal;
div{
width: calc(100% - 120px);
}
span{
height: 22px;
line-height: 22px;
......@@ -123,6 +136,7 @@ export default {
}
}
.tender-time{
height: 28px;
display: block;
padding-top: 8px;
color: rgba(35,35,35,0.4);
......
<template>
<div class="app-container part-container">
<div class="view-content"><Infoheader :companyId="companyId" :companyInfo="companyInfo" :statistic="statistic" v-if="isShow" /></div><!-- 企业信息 -->
<div class="view-content"><Operations :companyId="companyId" :financial="financial" v-if="isShow" /></div><!-- 公司经营 -->
<div class="view-content"><Infoheader :companyId="companyId" :companyInfo="companyInfo" :statistic="statistic" /></div><!-- 企业信息 -->
<div class="view-content"><Operations :companyId="companyId" :financial="financial" /></div><!-- 公司经营 -->
<div class="view-content"><Bidding :companyId="companyId" /></div><!--招标偏好、业务往来-->
<div class="view-content"><Busclue :companyId="companyId" :statistic="statistic" v-if="statistic" /></div><!--商机线索-->
<div class="view-content"><Relationship :companyId="companyId" :financial="financial" v-if="isShow" /></div><!--关系企业-->
<div class="view-content"><Busclue :companyId="companyId" :statistic="statistic" /></div><!--商机线索-->
<div class="view-content"><Relationship :companyId="companyId" :financial="financial" /></div><!--关系企业-->
<div class="view-content"><Senior :companyId="companyId" /></div><!--高管-->
<div class="view-content"><Risk :companyId="companyId" :statistic="statistic" v-if="isShow" /></div><!--风险概览-->
<div class="view-content"><Risk :companyId="companyId" :statistic="statistic" /></div><!--风险概览-->
<div class="view-content"><Tender :companyId="companyId" /></div><!--招标公告、企业动态-->
</div>
</template>
......@@ -68,7 +68,7 @@ export default {
margin: 0;
padding: 0;
.view-content{
//margin-top: 12px;
margin-top: 12px;
}
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment