Commit 31d33996 authored by caixingbing's avatar caixingbing

*

parent ecf64357
......@@ -92,13 +92,14 @@ export const constantRoutes = [
path: '/party',
component: Layout,
hidden: true,
name: 'Party',
redirect: 'noredirect',
children: [
{
path: 'party-a',
component: () => import('@/views/detail/party-a/index'),
name: 'PartyA',
meta: { title: '甲方详情' }
meta: { title: '甲方详情' },
},
{
path: 'party-b',
......
<template>
<div class="app-container part-container">
商务信息
</div>
</template>
<script>
export default {
name: 'Business',
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.part-container{
padding: 0;
}
</style>
<template>
<div class="header-container">
<div class="bread-crumb">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/' }">企业数据</el-breadcrumb-item>
<el-breadcrumb-item><a href="/">查企业</a></el-breadcrumb-item>
<el-breadcrumb-item>中铁一建</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="flex-box part-header">
<img class="header-logo" src="@/assets/images/avatar.png">
中交第二航务工程局有限公司
</div>
</div>
</template>
<script>
export default {
name: 'Header',
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.bread-crumb{
.el-breadcrumb{
font-size: 12px;
::v-deep .el-breadcrumb__separator{
margin: 0 5px;
}
::v-deep .el-breadcrumb__inner.is-link, .el-breadcrumb__inner a{
color: rgba(35,35,35,0.4);
&:hover{
color: #1890ff;
}
}
::v-deep .el-breadcrumb__item{
&:last-child .el-breadcrumb__inner{
color: #232323;
}
&:nth-last-child(2){
.el-breadcrumb__separator{
color: #232323;
}
}
}
}
}
.part-header{
font-size: 16px;
font-weight: bold;
color: #232323;
background: #FFFFFF;
padding: 14px 16px;
margin-top: 12px;
.header-logo{
width: 28px;
height: 28px;
margin-right: 16px;
}
}
</style>
<template>
<div class="detail-container">
<el-input
placeholder="搜索"
class="side-input"
v-model="searchText">
<i slot="prefix" class="el-input__icon el-icon-search" @click="handleSearch"></i>
</el-input>
<el-menu
default-active="1"
class="detail-menu"
@open="handleOpen">
<template v-for="(item, index) in sideRoute">
<el-submenu :index="index.toString()" v-if="item.children">
<template slot="title">
<span>{{item.title}}</span>
</template>
<el-menu-item :index="index+'-'+idx" v-for="(it, idx) in item.children" :key="idx" @click="handleItem(it)">{{it.title}}</el-menu-item>
</el-submenu>
<el-menu-item :index="index.toString()" @click="handleItem(item)" v-else>{{item.title}}</el-menu-item>
</template>
</el-menu>
</div>
</template>
<script>
export default {
name: 'Sidebar',
data() {
return {
searchText: '',
sideRoute: [
{title: '企业概要', pathName: '', children: [
{title: '企业速览', pathName: ''},
{title: '工商信息', pathName: ''},
{title: '股东信息', pathName: ''},
{title: '高管信息', pathName: ''},
{title: '对外投资', pathName: ''},
{title: '分支机构', pathName: ''}
]},
{title: '财务简析', pathName: 'financial'},
{title: '项目商机', pathName: '', children: [
{title: '土地交易', pathName: ''},
{title: '拟建项目', pathName: ''},
{title: '专项债项目', pathName: ''},
{title: '招标计划', pathName: ''},
{title: '招标公告', pathName: ''},
{title: '标讯Pro', pathName: ''},
{title: '行政许可', pathName: ''}
]},
{title: '业务往来', pathName: '', children: [
{title: '客户', pathName: ''},
{title: '供应商', pathName: ''},
{title: '招标代理', pathName: ''},
{title: '历史发包', pathName: ''},
{title: '开标记录', pathName: ''}
]},
{title: '城投分析', pathName: '', children: [
{title: '区域经济', pathName: ''},
{title: '城投那地', pathName: ''},
{title: '同地区城投', pathName: ''}
]},
{title: '风险信息', pathName: '', children: [
{title: '行政处罚', pathName: ''},
{title: '经营异常', pathName: ''},
{title: '被执行人', pathName: ''},
{title: '失信被执行人', pathName: ''},
{title: '裁判文书', pathName: ''},
{title: '法院公告', pathName: ''},
{title: '开庭公告', pathName: ''},
{title: '信用中国', pathName: ''}
]},
{title: '商务信息', pathName: 'business'},
{title: '招标偏好', pathName: ''},
{title: '合作情况', pathName: ''},
{title: '决策链条', pathName: ''},
{title: '跟进记录', pathName: ''}
]
}
},
created() {
},
methods: {
handleOpen(key, keyPath) {
console.log(key, keyPath)
},
handleItem(item){
this.$emit("currentPath", item)
},
handleSearch(){
console.log('开始搜索了')
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
width: 144px;
min-height: calc(100vh - 170px);
background: #FFFFFF;
.side-input{
width: 128px;
margin-top: 16px;
margin-left: 8px;
border: 0;
::v-deep .el-input__inner{
height: 32px;
background: #F3F3F4;
border-radius: 20px;
border: 0;
&::placeholder {
color: #3D3D3D;
}
}
.el-icon-search{
color: #0081FF;
cursor: pointer;
}
}
.detail-menu{
margin-top: 20px;
border-right: 0;
::v-deep .el-menu-item, ::v-deep .el-submenu__title{
height: 30px;
line-height: 30px;
font-size: 14px;
color: #232323;
&:hover, &:focus{
background: linear-gradient(91deg, rgba(0,129,255,0.1) 0%, rgba(0,129,255,0) 100%);;
}
.el-submenu__icon-arrow{
color: #232323;
right: 48px;
margin-top: -5px;
}
}
::v-deep .el-submenu .el-menu-item{
font-size: 12px;
color: rgba(35,35,35,0.8);
padding: 0 0 0 27px !important;
min-width: 144px !important;
position: relative;
&:before {
content: "";
position: absolute;
top: 14px;
left: 21px;
width: 2px;
height: 2px;
background: rgba(35,35,35,0.8);
border-radius: 50%;
}
}
}
}
</style>
<template>
<div class="app-container">
财务简析
<div class="app-container part-container">
<div class="financial-header">
<div class="common-title">财务简析</div>
<div class="flex-box header-box">
<div class="header-item">总资产<div class="header-item-amount"><span>9332.6</span>亿元</div></div>
<div class="header-item">净资产<div class="header-item-amount"><span>459.4</span>亿元</div></div>
<div class="header-item">营业收入<div class="header-item-amount"><span>150.0</span>亿元</div></div>
<div class="header-item">授信余额<div class="header-item-amount"><span>192.11</span>亿元</div></div>
</div>
</div>
<div class="financial-zcqk">
<div class="common-title">资产情况</div>
<ul class="zcqk-list">
<li v-for="(item, index) in zcqkList" :key="index" :style="zcqkList.length==1?'border-right: 0;':''">
<div class="zcqk-list-box" :style="(parity(zcqkList) && index==zcqkList.length-2) || (index == zcqkList.length-1)?'border-bottom: 0':''">
<div class="flex-box zcqk-list-line"><span class="flex-box"><img :src="item.ico">{{item.name}}</span><span><i>{{item.amount}}</i>亿元</span></div>
<div class="zcqk-list-intro">{{item.intro}}</div>
</div>
</li>
</ul>
</div>
<div class="financial-zwqk">
<div class="common-title">负债情况及偿债能力</div>
<div class="flex-box zwqk-box">
<div class="zwqk-info">
<div class="zwqk-title">总负责</div>
<div class="zwqk-amount"><span>468.65</span>亿元</div>
<div class="zwqk-pro">资产负债率 50%</div>
</div>
<div id="myEcharts" style="width: 444px;height:250px; margin: 0 auto;"></div>
</div>
<div class="flex-box zwqk-list">
<div class="list-item" v-for="(item, index) in zwqkList" :key="index">
<div class="flex-box list-item-all">{{item.name}}<img :src="item.ico"></div>
<div class="list-item-amount"><span>{{item.amount}}</span>{{item.unit}}</div>
<div class="list-item-pro">{{item.intro}}<span>{{item.introPro}}</span></div>
</div>
</div>
</div>
<div class="financial-zcqk">
<div class="common-title">资金情况</div>
<ul class="zcqk-list">
<li v-for="(item, index) in zjqkList" :key="index" :style="zjqkList.length==1?'border-right: 0;':''">
<div class="zcqk-list-box" :style="(parity(zjqkList) && index==zjqkList.length-2) || (index == zjqkList.length-1)?'border-bottom: 0':''">
<div class="flex-box zcqk-list-line"><span class="flex-box"><img :src="item.ico">{{item.name}}</span><span><i>{{item.amount}}</i>{{item.unit}}</span></div>
<div class="zcqk-list-intro">{{item.intro}}</div>
</div>
</li>
</ul>
</div>
</div>
</template>
<script>
import * as echarts from 'echarts';
export default {
name: 'Financial',
data() {
return {
zcqkList: [
{ name: '总资产', ico: require('@/assets/images/detail/financial/zcqk_ico1.png'), intro: '总资产越大,表示企业规模越大', amount: '99213', unit: '亿元'},
{ name: '净资产', ico: require('@/assets/images/detail/financial/zcqk_ico2.png'), intro: '该指标越大说明企业实力越强', amount: '99213', unit: '亿元'},
{ name: '货币资金', ico: require('@/assets/images/detail/financial/zcqk_ico3.png'), intro: '该指标越大说明企业越有活力、越有保障', amount: '99213', unit: '亿元'},
{ name: '应收账款', ico: require('@/assets/images/detail/financial/zcqk_ico4.png'), intro: '该指标越大说明企业实力越强', amount: '99213', unit: '亿元'},
{ name: '土地资产', ico: require('@/assets/images/detail/financial/zcqk_ico5.png'), intro: '该指标越大说明企业越有实力,但需要关注抵押情况', amount: '99213', unit: '亿元'},
{ name: '其它应收款', ico: require('@/assets/images/detail/financial/zcqk_ico6.png'), intro: '该指标越大说明企业实力越强', amount: '99213', unit: '亿元'},
{ name: '受限资产', ico: require('@/assets/images/detail/financial/zcqk_ico7.png'), intro: '该指标越大,资产流动性越差', amount: '99213', unit: '亿元'},
{ name: '应收类款项来自政府占比', ico: require('@/assets/images/detail/financial/zcqk_ico8.png'), intro: '该指标越大,说明企业资质及信用越好', amount: '99213', unit: '亿元'},
{ name: '政府补助', ico: require('@/assets/images/detail/financial/zcqk_ico9.png'), intro: '该指标越大,说明企业越被政府看好与扶持', amount: '99213', unit: '亿元'}
],
zwqkList: [
{ name: '借款总额', ico: require('@/assets/images/detail/financial/zwqk_ico1.png'), intro: '借款/有息债务', introPro: '95.19%', amount: '1699.7', unit: '亿元'},
{ name: '债券余额', ico: require('@/assets/images/detail/financial/zwqk_ico2.png'), intro: '债券余额/有息债务', introPro: '95.19%', amount: '1699.7', unit: '亿元'},
{ name: '非标余额', ico: require('@/assets/images/detail/financial/zwqk_ico3.png'), intro: '非标余额/有息债务', introPro: '95.19%', amount: '1699.7', unit: '亿元'},
{ name: '对外担保金额', ico: require('@/assets/images/detail/financial/zwqk_ico4.png'), intro: '对外担保比例', introPro: '95.19%', amount: '1699.7', unit: '亿元'}
],
zjqkList: [
{ name: '经营现金流', ico: require('@/assets/images/detail/financial/zjqk_ico1.png'), intro: '该指标越高,说明经营活动的造血能力越强', amount: '99213', unit: '亿元'},
{ name: '现金比率', ico: require('@/assets/images/detail/financial/zjqk_ico2.png'), intro: '该指标越高,风险越低', amount: '0.8', unit: '%'},
{ name: '筹资现金流', ico: require('@/assets/images/detail/financial/zjqk_ico3.png'), intro: '该指标越高,说明负债越高', amount: '99213', unit: '亿元'},
{ name: '现金流量比率', ico: require('@/assets/images/detail/financial/zjqk_ico4.png'), intro: '该指标越高,风险越低', amount: '0.8', unit: '%'},
{ name: '投资现金流', ico: require('@/assets/images/detail/financial/zjqk_ico5.png'), intro: '该指标越高,说明投资带来的收益越高', amount: '99213', unit: '亿元'},
{ name: '现金到期债务比', ico: require('@/assets/images/detail/financial/zjqk_ico6.png'), intro: '该指标越高,风险越低', amount: '0.8', unit: '%'}
],
echartsData: [
{ value: 1048, name: '有息债务' },
{ value: 735, name: '有息债务/总债务' },
{ value: 580, name: '综合融资成本' },
{ value: 484, name: 'EBITDA保障倍数' }
]
}
},
computed: {
parity() {
return function(val) {
let flag = true
if(val.length % 2 == 0){
flag = true
}else{
flag = false
}
return flag
}
},
},
created() {
},
mounted() {
this.getEcharts()
},
methods: {
getEcharts(){
let myChart = echarts.init(document.getElementById("myEcharts"));
//配置图表
let option = {
tooltip: {
trigger: 'item'
},
grid: {
left:"0",
top:"0",
right:'0',
bottom:"0",
containLabel:true
},
color: ['#5B9CF7','#8DCF96','#FFDC6B','#FE9C77','#8A82F3'],
legend: {
x: 'center',
y: 'bottom',
itemHeight: 9,
textStyle: {
padding: [0, 0, -2, 0],
color: '#000000',
backgroundColor: "transparent",
fontSize: 11,
rich: {
a: {
},
},
}
},
series: [
{
name: '',
type: 'pie',
radius: ['50%', '70%'],
avoidLabelOverlap: false,
label: {
show: false,
formatter: '{title|{d}%}\n{b}',
rich: {
title: {
fontSize: 18,
align: 'center',
padding: [0, 0, 6, 0]
}
},
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: 11,
color: '#3D3D3D'
}
},
labelLine: {
show: false
},
data: this.echartsData
}
]
}
// 使用刚指定的配置项和数据显示图表。
myChart.clear() //清空
myChart.setOption(option)
}
}
}
</script>
<style lang="scss" scoped>
.part-container{
margin: 0;
padding: 0;
.financial-header{
background: #FFFFFF;
padding: 24px 16px;
.header-box {
justify-content: space-between;
flex-wrap: wrap;
margin: 0 -8px;
.header-item{
width: 252px;
height: 120px;
margin: 20px 8px 0;
padding: 24px 24px;
font-size: 18px;
&:nth-child(1){
color: #182980;
background: url("~@/assets/images/detail/financial/financial_header01.png") no-repeat;
background-size: cover;
}
&:nth-child(2){
color: #2B1880;
background: url("~@/assets/images/detail/financial/financial_header02.png") no-repeat;
background-size: cover;
}
&:nth-child(3){
color: #184280;
background: url("~@/assets/images/detail/financial/financial_header03.png") no-repeat;
background-size: cover;
}
&:nth-child(4){
color: #184A80;
background: url("~@/assets/images/detail/financial/financial_header04.png") no-repeat;
background-size: cover;
}
.header-item-amount{
font-size: 12px;
margin-top: 16px;
span{
font-size: 24px;
margin-right: 7px;
}
}
}
}
}
.financial-zcqk{
background: #FFFFFF;
padding: 24px 16px;
margin-top: 12px;
.zcqk-list{
margin-top: 4px;
overflow: hidden;
li{
width: 50%;
height: 80px;
padding-top: 20px;
float: left;
color: #232323;
&:nth-child(2n-1){
border-right: 1px solid #EEEEEE;
>div{
margin-right: 16px;
}
}
&:nth-child(2n){
>div{
margin-left: 16px;
}
}
.zcqk-list-box{
height: 100%;
border-bottom: 1px solid #EEEEEE;
.zcqk-list-line{
font-size: 14px;
justify-content: space-between;
img{
width: 20px;
height: 20px;
margin-right: 7px;
}
span{
display: block;
&:first-child{
font-size: 16px;
}
i{
font-style: normal;
font-size: 18px;
margin-right: 4px;
}
}
}
.zcqk-list-intro{
font-size: 12px;
position: relative;
padding: 6px 0 0 36px;
&:before {
content: "";
position: absolute;
width: 1px;
height: 1px;
top: 13px;
left: 28px;
border-radius: 50%;
border: 2px solid #4F4F4F;
}
}
}
}
}
}
.financial-zwqk{
background: #FFFFFF;
padding: 24px 16px;
margin-top: 12px;
.zwqk-box{
padding-top: 20px;
justify-content: normal;
.zwqk-info{
width: 520px;
height: 248px;
padding: 54px 24px 10px 24px;
margin-right: 48px;
color: #4D4C4B;
background: url("~@/assets/images/detail/financial/zwqk_bg.png") no-repeat;
background-size: cover;
.zwqk-title{
font-size: 22px;
font-weight: 400;
line-height: 0.9;
position: relative;
padding: 0 0 0 16px;
&:before{
position: absolute;
left: 0;
top: 0;
width: 3px;
height: 18px;
background: rgba(77,76,75,0.5);
content:"";
}
}
.zwqk-amount{
font-size: 16px;
margin-top: 32px;
span{
font-size: 40px;
font-weight: bold;
margin-right: 8px;
}
}
.zwqk-pro{
font-size: 16px;
margin-top: 33px;
}
}
}
.zwqk-list{
justify-content: space-between;
flex-wrap: wrap;
.list-item{
width: 252px;
height: 144px;
padding: 23px;
margin-top: 24px;
color: #3D3D3D;
border: 1px solid #E2E7EE;
.list-item-all{
align-items: normal;
justify-content: space-between;
}
.list-item-amount{
padding-top: 11px;
span{
font-size: 24px;
font-weight: bold;
margin-right: 4px;
}
}
.list-item-pro{
font-size: 12px;
padding-top: 11px;
span{
color: #FF3C3C;
margin-left: 2px;
}
}
}
}
}
}
</style>
<template>
<div class="app-container part-container">
<div class="bread-crumb">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/' }">企业数据</el-breadcrumb-item>
<el-breadcrumb-item><a href="/">查企业</a></el-breadcrumb-item>
<el-breadcrumb-item>中铁一建</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="flex-box part-header">
<img class="header-logo" src="@/assets/images/avatar.png">
中交第二航务工程局有限公司
<Header />
<div class="flex-box part-main">
<div class="part-left">
<side-bar @currentPath="showPartPage" />
</div>
<div class="part-right">
<!-- <Financial v-if="currentPath.pathName=='financial'" />-->
<!-- <Business v-if="currentPath.pathName=='business'" />-->
</div>
</div>
</div>
</template>
<script>
import Header from "./component/Header"
import SideBar from "./component/Sidebar"
import Financial from "./financial"
import Business from "./business"
export default {
name: 'PartyA',
components: {
Header,
SideBar,
Financial,
Business
},
data() {
return {
currentPath: {
pathName: 'financial' //默认展示页
}
}
},
created() {
},
methods: {
showPartPage(e){
this.currentPath = e
}
}
}
</script>
......@@ -32,41 +47,14 @@ export default {
.part-container{
padding: 0;
}
.bread-crumb{
.el-breadcrumb{
font-size: 12px;
::v-deep .el-breadcrumb__separator{
margin: 0 5px;
}
::v-deep .el-breadcrumb__inner.is-link, .el-breadcrumb__inner a{
color: rgba(35,35,35,0.4);
&:hover{
color: #1890ff;
}
}
::v-deep .el-breadcrumb__item{
&:last-child .el-breadcrumb__inner{
color: #232323;
}
&:nth-last-child(2){
.el-breadcrumb__separator{
color: #232323;
}
}
}
}
}
.part-header{
font-size: 16px;
font-weight: bold;
color: #232323;
background: #FFFFFF;
padding: 14px 16px;
.part-main{
margin-top: 12px;
.header-logo{
width: 28px;
height: 28px;
margin-right: 16px;
}
align-items: initial;
}
.part-left{
margin-right: 16px;
}
.part-right{
width: 100%;
}
</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