Commit b381b73c authored by MyName's avatar MyName
parents 4b44aaa3 dfef0304
......@@ -83,7 +83,7 @@ public class CustomerController extends BaseController {
return AjaxResult.success(baseService.add(customer));
}
private void dealWithcustomerData(Customer customer){
private void dealWithcustomerData(Customer customer) {
if (ObjectUtils.isEmpty(customer.getCompanyName())) throw new BeanException("企业名称不能为空");
if (ObjectUtils.isEmpty(customer.getCompanyId())) {
try {
......@@ -131,6 +131,7 @@ public class CustomerController extends BaseController {
public AjaxResult importData(@RequestPart("file") MultipartFile file) throws Exception {
List<Customer> customerList = new ExcelUtil<>(Customer.class).importExcel(file.getInputStream(), 2);
List<String> resultList = new ArrayList<>();
int successCount = 0;
for (Customer customer : customerList) {
if (ObjectUtils.isEmpty(customer.getCompanyName())) {
continue;
......@@ -152,10 +153,13 @@ public class CustomerController extends BaseController {
customer.setCreditCode(MapUtil.getStr(obj, "creditCode"));
}
baseService.add(customer);
successCount++;
} catch (Exception e) {
resultList.add(customer.getCompanyName().concat(":").concat(e.getMessage()));
}
}
return AjaxResult.success(resultList);
AjaxResult success = AjaxResult.success(resultList);
success.put("successCount", successCount);
return success;
}
}
......@@ -95,7 +95,7 @@ public class EnterpriseController {
@ApiOperation(value = "工商股东信息(openApi)")
@PostMapping(value = "bestStockPage")
public TableDataInfo bestStockPage(@RequestBody @Valid EnterpriseKeymembersBody vo) throws Exception {
public TableDataInfo bestStockPage(@RequestBody @Valid EnterpriseBestStockPageBody vo) throws Exception {
return enterpriseService.bestStockPage(vo);
}
......
......@@ -73,19 +73,19 @@ public class EnterpriseProjectController {
@ApiOperation(value = "专项债项目列表")
@RequestMapping(value = "/specialDebtProjectPage", method = RequestMethod.POST)
public TableDataInfo specialDebtProjectPage(@RequestBody @Valid Object body) throws Exception {
public TableDataInfo specialDebtProjectPage(@RequestBody @Valid EnterpriseProjectSpecialDebtProjectPageBody body) throws Exception {
return enterpriseProjectService.specialDebtProjectPage(body);
}
@ApiOperation(value = "专项债项目详情")
@RequestMapping(value = "/specialDebtProjectDetail", method = RequestMethod.POST)
public R specialDebtProjectDetail(@RequestBody @Valid Object body) throws Exception {
public R specialDebtProjectDetail(@RequestBody @Valid EnterpriseProjectSpecialDebtProjectDetailBody body) throws Exception {
return enterpriseProjectService.specialDebtProjectDetail(body);
}
@ApiOperation(value = "专项债列表")
@RequestMapping(value = "/specialDebtPage", method = RequestMethod.POST)
public TableDataInfo specialDebtPage(@RequestBody @Valid Object body) throws Exception {
public TableDataInfo specialDebtPage(@RequestBody @Valid EnterpriseProjectSpecialDebtPageBody body) throws Exception {
return enterpriseProjectService.specialDebtPage(body);
}
......
......@@ -20,14 +20,14 @@
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/operate-sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
<maxHistory>10</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<level>DEBUG</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
......@@ -42,7 +42,7 @@
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/operate-sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
<maxHistory>10</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
......@@ -64,7 +64,7 @@
<!-- 按天回滚 daily -->
<fileNamePattern>${log.path}/operate-sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
<maxHistory>10</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
......
......@@ -17,6 +17,8 @@ public class EnterpriseAffiliatesBody extends BasePage {
//企业Id
@NotNull(message = "企业id不能为空")
private Integer cid;
private Integer hasBid;
}
......@@ -17,6 +17,9 @@ public class EnterpriseInvestmentBody extends BasePage {
//企业Id
@NotNull(message = "企业id不能为空")
private Integer cid;
private Integer hasBid;
private double stockPercentageMin;
private double stockPercentageMax;
}
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseProjectSpecialDebtPageBody extends BasePage {
/**
* id
*/
@NotNull(message = "id不能为空")
private String id;
}
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseProjectSpecialDebtProjectDetailBody {
/**
* id
*/
@NotNull(message = "id不能为空")
private String id;
}
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseProjectSpecialDebtProjectPageBody extends BasePage {
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer cid;
/**
* 查询关键字
*/
private String keys;
/*
* 排序字段:1总投资金额倒序,2总投资金额正序,17项目资本金倒序,18项目资本金正序,19专项债用作资本金倒序,20专项债用作资本金正序
*/
@NotNull(message = "排序条件不能为空")
private Integer sort;
}
......@@ -3,7 +3,16 @@ import request from "@/utils/request";
// 企业数据统计
export function statistic(data) {
return request({
url: '/enterprise/statistic',
url: '/enterprise/statistic(建设库)',
method: 'post',
data: data
})
}
// 企业主体信用评级
export function bondCreditRating(data) {
return request({
url: '/enterprise/bondCreditRating',
method: 'post',
data: data
})
......@@ -36,33 +45,6 @@ export function projectTenderDataGroup(data) {
})
}
// 关系企业-股东信息
export function yyy(data) {
return request({
url: 'xxx',
method: 'post',
data: data
})
}
// 关系企业-对外投资
export function testinvestment(data) {
return request({
url: '/enterprise/investment',
method: 'post',
data: data
})
}
// 关系企业-分支机构
export function testaffiliates(data) {
return request({
url: '/enterprise/affiliates',
method: 'post',
data: data
})
}
// 招标公告
export function bidNoticePage(data) {
return request({
......@@ -99,7 +81,7 @@ export function changeInfo(data) {
})
}
// 工商股东信息列表
// 关系企业-股东信息、工商股东信息列表
export function bestStockPage(data) {
return request({
url: '/enterprise/bestStockPage',
......@@ -108,7 +90,7 @@ export function bestStockPage(data) {
})
}
// 工商高管信息
// 关系企业-高管信息、工商高管信息
export function keymembers(data) {
return request({
url: '/enterprise/keymembers',
......@@ -117,7 +99,7 @@ export function keymembers(data) {
})
}
// 工商对外投资
// 关系企业-对外投资、工商对外投资
export function investment(data) {
return request({
url: '/enterprise/investment',
......
......@@ -42,6 +42,15 @@ let uipSerach= function uipSerach(param) {
data: param
})
}
// 认领用户
let claim= function claim(param) {
return request({
url: '/customer/claim',
method: 'post',
data: param
})
}
export default {aptitudeCode,personCert,searchDic,regionWebList,uipGroupData,uipSerach}
\ No newline at end of file
export default {aptitudeCode,personCert,searchDic,regionWebList,uipGroupData,uipSerach,claim}
\ No newline at end of file
......@@ -174,6 +174,31 @@ export function enterprise(param) {
})
}
//城投平台-企业查询选项
export function uipGroupData() {
return request({
url: '/enterprise/uipGroupData',
method: 'POST'
})
}
//城投平台-分页列表
export function urbanInvestmentPage(param) {
return request({
url: '/urbanInvestment/page',
method: 'POST',
data: param
})
}
//城投平台-城投平台统计
export function urbanInvestmentStatistics(param) {
return request({
url: '/urbanInvestment/statistics',
method: 'POST',
data: param
})
}
......
......@@ -3,12 +3,13 @@
<el-input
placeholder="搜索"
class="side-input"
v-model="searchText">
v-model="searchText"
@keyup.enter.native="handleSearch">
<i slot="prefix" class="el-input__icon el-icon-search" @click="handleSearch"></i>
</el-input>
<el-menu
ref="sideMenu"
:default-active="routeIndex"
:unique-opened="true"
class="detail-menu"
@open="handleOpen">
<template v-for="(item, index) in sideRoute">
......@@ -104,29 +105,16 @@ export default {
},
computed: {
sideHeight() {
let sideHeight = document.getElementById("detailPart")?document.getElementById("detailPart").offsetHeight:null
if(sideHeight<this.partBoxHeight) {
let sideHeight = document.getElementById("detailPart")?document.getElementById("detailPart").offsetHeight:null, bowerHeight = document.body.clientHeight-170 || null
if(this.partBoxHeight<bowerHeight) {
sideHeight = bowerHeight
}else{
sideHeight = this.partBoxHeight
}else {
sideHeight = null
}
return sideHeight
},
routeIndex(){
let idx = '0-0', sideArr = this.sideRoute
for(let i=0; i < sideArr.length; i++){
if(sideArr[i].pathName == this.pathName){
idx = i.toString()
break
}else if(sideArr[i].children){
for(let j=0; j< sideArr[i].children.length ; j++){
if(sideArr[i].children[j].pathName == this.pathName){
idx = i+'-'+j
break
}
}
}
}
let idx = this.getRouteIdx('', this.pathName) || '0-0'
return idx
}
},
......@@ -140,7 +128,30 @@ export default {
this.$emit("currentPath", item)
},
handleSearch(){
console.log('开始搜索了')
if(this.searchText){
let idx = this.getRouteIdx(this.searchText)
if(idx&&idx.includes('-')){
let openIdx = idx.slice(0, 1)
this.$refs.sideMenu.open(openIdx)
}
}
},
getRouteIdx(pathTitle, pathName){
let idx = '', sideArr = this.sideRoute
for(let i=0; i < sideArr.length; i++){
if(sideArr[i].title == pathTitle || sideArr[i].pathName == pathName){
idx = i.toString()
break
}else if(sideArr[i].children){
for(let j=0; j< sideArr[i].children.length ; j++){
if(sideArr[i].children[j].title == pathTitle || sideArr[i].children[j].pathName == pathName){
idx = i+'-'+j
break
}
}
}
}
return idx
},
isCustomerId(name){
if(this.customer.indexOf(name) != -1){
......
......@@ -10,7 +10,7 @@
content="历史招标总数">
<img src="@/assets/images/detail/overview/zbph_question.png" slot="reference">
</el-popover>
<span class="zbph-item-num">356</span></div>
<span class="zbph-item-num">{{dataAll.bidAmount || '--'}}</span></div>
<div>近一年招标总数
<el-popover
placement="top-start"
......@@ -18,7 +18,7 @@
content="近一年招标总数">
<img src="@/assets/images/detail/overview/zbph_question.png" slot="reference">
</el-popover>
<span class="zbph-item-num">356</span></div>
<span class="zbph-item-num">{{dataAll.lastYearCount || '--'}}</span></div>
<div>历史招标总额
<el-popover
placement="top-start"
......@@ -26,13 +26,13 @@
content="历史招标总额">
<img src="@/assets/images/detail/overview/zbph_question.png" slot="reference">
</el-popover>
<span class="zbph-item-num">356</span></div>
<span class="zbph-item-num">{{dataAll.bidAmount || '--'}}</span></div>
</div>
<div class="zbph-account">招标动态
<div class="labels">
<div :class="{'on':datatype==1}" @click="getDT(1)">周</div>
<div :class="{'on':datatype==3}" @click="getDT(3)">周</div>
<div :class="{'on':datatype==2}" @click="getDT(2)">月</div>
<div :class="{'on':datatype==3}" @click="getDT(3)">年</div>
<div :class="{'on':datatype==1}" @click="getDT(1)">年</div>
</div>
</div>
<div id="myEcharts" style="width: 100%;height:250px; margin: 0 auto;"></div>
......@@ -43,7 +43,6 @@
<el-table
:data="tableData"
style="width: 100%"
:default-sort = "{prop: 'date', order: 'descending'}"
>
<el-table-column
prop="ico"
......@@ -54,14 +53,14 @@
</template>
</el-table-column>
<el-table-column
prop="name"
prop="companyName"
label="公司名称">
<template slot-scope="scope">
<router-link to="" tag="a" class="a-link">{{ scope.row.name }}</router-link>
<router-link to="" tag="a" class="a-link">{{ scope.row.companyName }}</router-link>
</template>
</el-table-column>
<el-table-column
prop="number"
prop="count"
width="160"
label="合作次数">
</el-table-column>
......@@ -77,32 +76,47 @@
</template>
<script>
import {bidDataGroup, supplierPage} from '@/api/detail/party-a/overview'
import * as echarts from 'echarts'
export default {
name: 'Bidding',
props: ['companyId'],
data() {
return {
datatype:'1',//切换类型
datatype:'3',//切换类型
dataAll: {},
dtdata:[],//数据
dttime:[],//坐标
//表格数据
tableData:[
{name: '中国建筑第八工程局有限公司', companyId: '6034', number: '11%', amount: '2134', ico: require("@/assets/images/detail/overview/ywwl_top1.png")},
{name: '中建三局集团有限公司', companyId: '3068', number: '11%', amount: '2134', ico: require("@/assets/images/detail/overview/ywwl_top2.png")},
{name: '中国建筑一局(集团)有限公司', companyId: '428280', number: '11%', amount: '2134', ico: require("@/assets/images/detail/overview/ywwl_top3.png")},
{name: '上海宝冶集团有限公司', companyId: '7759', number: '11%', amount: '2134', ico: require("@/assets/images/detail/overview/ywwl_top4.png")},
{name: '中国五冶集团有限公司', companyId: '10951', number: '11%', amount: '2134', ico: require("@/assets/images/detail/overview/ywwl_top5.png")},
]
tableData:[]
}
},
created() {
this.handleBid()
this.handleSupplier()
},
mounted() {
this.$nextTick(()=>{
this.getDT(1)
this.getDT(3)
})
},
methods: {
async handleBid(){
let res = await bidDataGroup({cid: this.companyId, spanId: this.datatype})
if(res.code==200){
let {totalCount, lastYearCount, bidAmount} = res.data
this.dataAll = {totalCount, lastYearCount, bidAmount}
}
},
async handleSupplier() {
let res = await supplierPage({cid: this.companyId, sort: 1, pageNum: 1, pageSize: 5})
if(res.code==200){
this.tableData = res.rows
this.tableData.forEach((item, index) => {
item.ico = require(`@/assets/images/detail/overview/ywwl_top${index+1}.png`)
})
}
},
initDT(datas,labels){
let myChart = echarts.init(document.getElementById("myEcharts"))
let option = {
......@@ -174,7 +188,7 @@ export default {
let datas = []
let labels = []
switch (type) {
case 1:
case 3:
time = time.getDay()
// week.length = time
weekdata.length = time
......@@ -190,7 +204,7 @@ export default {
let days = new Date(time.getFullYear(),time.getMonth()+1,0).getDate()//获取到本月天数
time = time.getDate()
monthdata.length = time
for(var i=1;i<days;i++){
for(var i=1;i<=days;i++){
labels.push(i+'日')
if(i > time){
monthdata.push("")
......@@ -198,10 +212,10 @@ export default {
}
datas = monthdata
break;
case 3:
case 1:
time = time.getMonth()+1
yeardata.length = time
for(var i=1;i<12;i++){
for(var i=1;i<=12;i++){
labels.push(i+'月')
if(i>time){
yeardata.push('')
......
<template>
<div class="app-container clue-container">
<div class="common-title">商机线索</div>
<el-tabs v-model="activeName" @tab-click="handleClick" class="tabpane selfTab">
<el-tab-pane label="按金额" name="first"></el-tab-pane>
<el-tab-pane label="按项目" name="second"></el-tab-pane>
<el-tabs v-model="activeIndex" @tab-click="handleQuery" class="tabpane selfTab">
<el-tab-pane label="按金额" name="0"></el-tab-pane>
<el-tab-pane label="按项目" name="1"></el-tab-pane>
</el-tabs>
<div class="flex-box clue-box">
<div class="clue-echarts"><div id="echartsClue" style="width: 100%;height:300px; margin: 0 auto;"></div></div>
<div class="table-item">
<el-table
:data="activeName=='first'?viewData:projectData"
:data="viewData"
border
style="width: 100%"
:default-sort = "{prop: 'date', order: 'descending'}"
......@@ -20,107 +20,60 @@
<el-table-column
prop="value"
label="数量">
<template slot-scope="scope">
<div style="text-align: right">{{ scope.row.value }}</div>
</template>
</el-table-column>
<el-table-column
prop="percent"
label="占比">
<template slot-scope="scope">
<div style="text-align: right">{{ scope.row.percent }}</div>
</template>
</el-table-column>
</el-table>
</div>
</div>
<div class="flex-box clue-type">
<div class="flex-box clue-type-item" :class="typeName==index&&!item.disabled?'on':item.disabled?'disab':''" v-for="(item, index) in typeList" :key="index" @click="handleType(item, index)"><img :src="item.disabled?item.dis_ico:item.ico">{{item.name}}</div>
<div class="flex-box clue-type-item" :class="!item.count?'disab':''" v-for="(item, index) in typeList" :key="index" @click="handleType(item, index)"><img :src="!item.count?item.dis_ico:item.ico">{{item.name}}</div>
</div>
</div>
</template>
<script>
import {projectTenderDataGroup} from '@/api/detail/party-a/overview'
import * as echarts from 'echarts'
import {changePath} from "@/assets/js/common"
export default {
name: 'Busclue',
props: ['companyId', 'statistic'],
data() {
return {
viewData:[
{
name:'7亿~12亿',
value:'12',
percent: '12%'
},
{
name:'4亿~6亿',
value:'2',
percent: '12%'
},
{
name:'1亿~3亿',
value:'42',
percent: '12%'
},
{
name:'5000万~1亿',
value:'2',
percent: '12%'
},
{
name:'5000万以下',
value:'2',
percent: '12%'
},
],
projectData:[
{
name:'公路工程',
value:'22',
percent: '12%'
},
{
name:'房建工程',
value:'12',
percent: '12%'
},
{
name:'水利工程',
value:'32',
percent: '12%'
},
{
name:'铁路工程',
value:'16',
percent: '12%'
},
{
name:'市政工程',
value:'8',
percent: '12%'
},
],
activeName:'first',
typeName: 0,
viewData:[],
activeIndex:0,
typeList:[
{name: '土地交易', ico: require("@/assets/images/detail/overview/clue_ico1.png"), disabled: false, dis_ico: require("@/assets/images/detail/overview/clue_dis_ico1.png")},
{name: '拟建项目', ico: require("@/assets/images/detail/overview/clue_ico2.png"), disabled: false, dis_ico: require("@/assets/images/detail/overview/clue_dis_ico2.png")},
{name: '专项债项目', ico: require("@//assets/images/detail/overview/clue_ico3.png"), disabled: true, dis_ico: require("@/assets/images/detail/overview/clue_dis_ico3.png")},
{name: '招标计划', ico: require("@/assets/images/detail/overview/clue_ico4.png"), disabled: false, dis_ico: require("@/assets/images/detail/overview/clue_dis_ico4.png")},
{name: '招标公告', ico: require("@/assets/images/detail/overview/clue_ico5.png"), disabled: true, dis_ico: require("@/assets/images/detail/overview/clue_dis_ico5.png")},
{name: '标讯Pro', ico: require("@/assets/images/detail/overview/clue_ico6.png"), disabled: false, dis_ico: require("@/assets/images/detail/overview/clue_dis_ico6.png")},
{name: '行政许可', ico: require("@/assets/images/detail/overview/clue_ico7.png"), disabled: false, dis_ico: require("@/assets/images/detail/overview/clue_dis_ico7.png")},
{name: '土地交易', pathName: 'landtransaction', ico: require("@/assets/images/detail/overview/clue_ico1.png"), count: 0, category:'global', field:'landInfo', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico1.png")},
{name: '拟建项目', pathName: 'proposed', ico: require("@/assets/images/detail/overview/clue_ico2.png"), count: 0, category:'global', field:'proposedProject', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico2.png")},
{name: '专项债项目', pathName: 'bond', ico: require("@//assets/images/detail/overview/clue_ico3.png"), count: 0, category:'xxx', field:'yy', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico3.png")},
{name: '招标计划', pathName: 'biddingplan', ico: require("@/assets/images/detail/overview/clue_ico4.png"), count: 0, category:'xxx', field:'zz', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico4.png")},
{name: '招标公告', pathName: 'announcement', ico: require("@/assets/images/detail/overview/clue_ico5.png"), count: 0, category:'business', field:'biddingAnnouncement', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico5.png")},
{name: '标讯Pro', pathName: 'tencent', ico: require("@/assets/images/detail/overview/clue_ico6.png"), count: 0, category:'business', field:'proCount', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico6.png")},
{name: '行政许可', pathName: 'administrative', ico: require("@/assets/images/detail/overview/clue_ico7.png"), count: 0, category:'business', field:'adminLicensing', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico7.png")},
]
}
},
created() {
this.handleStatistic()
this.handleQuery()
},
mounted() {
this.$nextTick(()=>{
this.getDT()
})
},
methods: {
async handleQuery(){
let res = await projectTenderDataGroup({cid: this.companyId, type: this.activeIndex})
if(res.code==200){
let data = res.data, totalVal = data.map(item => item.value).reduce((prev, cur) => prev + cur)
this.viewData = data.map(item => {
let it = {name:item.name, value:item.value, percent:parseFloat(Number(Number(item.value)/Number(totalVal)*100).toFixed(2))+'%'}
return it
})
this.getDT()
}
},
getDT(val){
let myChart = echarts.init(document.getElementById("echartsClue")), data = val ? val : this.viewData
let option = {
......@@ -157,16 +110,14 @@ export default {
}
myChart.setOption(option)
},
handleClick(){
if(this.activeName=='first'){
this.getDT(this.viewData)
}else{
this.getDT(this.projectData)
}
handleStatistic() {
this.typeList.forEach((item, index) => {
item.count = this.statistic[item.category]?this.statistic[item.category][item.field]:0
})
},
handleType(it, idx){
if(!it.disabled){
this.typeName = idx
if(it.count){
changePath(this, it.pathName)
}
}
}
......@@ -217,10 +168,10 @@ export default {
.clue-type-item{
color: #232323;
cursor: pointer;
&.on{
&:hover{
color: #0081FF;
}
&.disable{
&.disab{
color: rgba(35,35,35,0.4);
}
img{
......
......@@ -125,13 +125,12 @@
</template>
<script>
import { statistic } from '@/api/detail/party-a/overview'
import { changePath } from '@/assets/js/common'
var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js')
import "@/assets/lib/swiper/swiper-bundle.css"
export default {
name: 'Infoheader',
props: ['companyId', 'companyInfo'],
props: ['companyId', 'companyInfo', 'statistic'],
data() {
return {
labelList: [], //企业标签
......@@ -139,7 +138,6 @@ export default {
ifClaim: false, //是否认领
showMore: false,
showState: false,
statistic: {},
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')},
......@@ -155,8 +153,8 @@ export default {
}
},
created() {
this.handleStatistic()
this.getCompanyInfo() //处理曾用名
this.handleStatistic() //企业背景是否收起
},
mounted() {
this.getClaimStatus() //获取企业认领状态
......@@ -192,23 +190,16 @@ export default {
this.companyInfo.historyNames = JSON.parse(this.companyInfo.historyNames)
}
},
async handleStatistic() {
let res = await statistic({companyId:this.companyId})
if(res.code==200){
this.statistic = res.data
this.graphList.forEach((item, index) => {
if(item.intro){
item.intro.forEach((it, idx) => {
if(it.category || it.field){
it.val = this.getStatistic(it.category, it.field)
}
})
}
})
}
},
getStatistic(category, field) {
return this.statistic[category][field] || 0
handleStatistic() {
this.graphList.forEach((item, index) => {
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
}
})
}
})
},
//获取认领状态
async getClaimStatus(){
......
......@@ -6,10 +6,10 @@
<ul class="swiper-wrapper">
<li class="swiper-slide" v-for="(item, index) in operList" :key="index">
<div class="swiper-div">
<div class="operations-title">{{item.range}}-<span>{{item.year}}</span></div>
<div class="operations-title">{{item.bratingSubjectLevel}}-<span>{{item.ratingDate}}</span></div>
<div class="flex-box text-cl1 operations-info">
{{item.name}}
<span><img src="@/assets/images/detail/overview/oper_source.png">{{item.name}}</span>
{{item.bondType}}
<span><img src="@/assets/images/detail/overview/oper_source.png">{{item.creditRatingAgency}}</span>
</div>
</div>
</li>
......@@ -21,35 +21,34 @@
<div class="flex-box operations-list">
<div class="list-item" v-for="(item, index) in gsjyList" :key="index">
<div class="flex-box list-item-all"><img :src="item.ico">{{item.name}}</div>
<div class="list-item-amount">{{item.amount}}</div>
<div class="list-item-amount">{{item.amount?item.amount+'亿元':'--'}}</div>
</div>
</div>
</div>
</template>
<script>
import {bondCreditRating} from '@/api/detail/party-a/overview'
var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js')
import "@/assets/lib/swiper/swiper-bundle.css"
export default {
name: 'Overview',
props: ['companyId', 'financial'],
data() {
return {
operList: [
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'},
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'},
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'},
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'}
],
operList: [],
gsjyList: [
{ name: '总资产', ico: require('@/assets/images/detail/overview/gsjy_ico1.png'), amount: '1699.7'},
{ name: '净资产', ico: require('@/assets/images/detail/overview/gsjy_ico2.png'), amount: '1699.7'},
{ name: '授信余额', ico: require('@/assets/images/detail/overview/gsjy_ico3.png'), amount: '1699.7'},
{ name: '营业收入', ico: require('@/assets/images/detail/overview/gsjy_ico4.png'), amount: '1699.7'},
{ name: '总负债', ico: require('@/assets/images/detail/overview/gsjy_ico5.png'), amount: '1699.7'}
{ name: '总资产', ico: require('@/assets/images/detail/overview/gsjy_ico1.png'), amount: ''},
{ name: '净资产', ico: require('@/assets/images/detail/overview/gsjy_ico2.png'), amount: ''},
{ name: '授信余额', ico: require('@/assets/images/detail/overview/gsjy_ico3.png'), amount: ''},
{ name: '营业收入', ico: require('@/assets/images/detail/overview/gsjy_ico4.png'), amount: ''},
{ name: '总负债', ico: require('@/assets/images/detail/overview/gsjy_ico5.png'), amount: ''}
],
}
},
created() {
this.handleQuery()
this.handleFinancial()
},
mounted() {
this.companySwiper()
......@@ -64,6 +63,21 @@ export default {
prevEl: '.swiper-oper-prev',
}
})
},
async handleQuery() {
let res = await bondCreditRating({cid: this.companyId})
if(res.code==200){
this.operList = res.data
}
},
handleFinancial(){
if(this.financial){
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]]
})
}
}
}
}
......
<template>
<div class="app-container rela-container">
<div class="common-title">关系企业</div>
<el-tabs v-model="activeName" @tab-click="handleClick" class="tabpane selfTab">
<el-tabs v-model="activeName" @tab-click="handleQuery" class="tabpane selfTab">
<el-tab-pane label="股东" name="first"></el-tab-pane>
<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">重庆市国有资产监督管理委员会</router-link></div>
<el-table :data="holderData" border style="width: 100%" :default-sort = "{prop: 'date', order: 'descending'}" v-if="activeName=='first'">
<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'">
<el-table-column label="序号" width="55" align="left" fixed>
<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>
<template slot-scope="scope">{{ holderParams.pageNum * holderParams.pageSize - holderParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column prop="name" min-width="140" label="股东名称"></el-table-column>
<el-table-column prop="cgsl" label="持股数量(亿)"></el-table-column>
<el-table-column prop="cgbl" label="持股比例"></el-table-column>
<el-table-column prop="fddbr" label="法定代表人"></el-table-column>
<el-table-column prop="clrq" label="成立日期"></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>
<el-table :data="shipData" border style="width: 100%" :default-sort = "{prop: 'date', order: 'descending'}" v-else>
<el-table :data="shipData" border style="width: 100%" v-else>
<el-table-column label="序号" width="55" align="left" fixed>
<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>
<template slot-scope="scope">{{ shipParams.pageNum * shipParams.pageSize - shipParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column prop="name" min-width="140" label="被投资企业名称">
<el-table-column prop="investName" min-width="140" label="被投资企业名称">
<template slot-scope="scope">
<router-link to="" tag="a" class="a-link">{{ scope.row.name }}</router-link>
<div class="tags" v-if="scope.row.nAjlx">
<span class="tag style1">{{scope.row.nAjlx}}</span>
<span class="tag style1">{{scope.row.nAjlx}}</span>
<router-link to="" 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>
<span class="tag style1" v-if="scope.row.biddingAnnouncement">招标数{{scope.row.biddingAnnouncement}}</span>
</div>
</template>
</el-table-column>
<el-table-column prop="fddbr" label="法定代表人"></el-table-column>
<el-table-column prop="zczb" label="注册资本(万元)">
<el-table-column prop="investOperName" label="法定代表人"></el-table-column>
<el-table-column prop="investRegistCapi" label="注册资本(万元)"></el-table-column>
<el-table-column prop="investStartDate" label="成立日期"></el-table-column>
<el-table-column prop="stockPercentage" label="股权占比">
<template slot-scope="scope">
<div style="text-align: right">{{ scope.row.zczb }}</div>
</template>
</el-table-column>
<el-table-column prop="clrq" label="成立日期"></el-table-column>
<el-table-column prop="gqzb" label="股权占比">
<template slot-scope="scope">
<div style="text-align: right">{{ scope.row.gqzb }}</div>
</template>
</el-table-column>
<el-table-column prop="rjcze" label="认缴出资额(万元)">
<template slot-scope="scope">
<div style="text-align: right">{{ scope.row.rjcze }}</div>
<span>{{scope.row.stockPercentage?parseFloat(Number(scope.row.stockPercentage*100).toFixed(4))+'%':'--'}}</span>
</template>
</el-table-column>
<el-table-column prop="shouldCapi" label="认缴出资额(万元)"></el-table-column>
</el-table>
<div class="rela-more" v-if="activeName=='second'"><router-link to="" tag="a" class="a-link">查看更多数据 ></router-link></div>
<div class="rela-more" v-if="activeName=='second'&& shipTotal>shipParams.pageSize"><router-link to="" tag="a" class="a-link">查看更多数据 ></router-link></div>
</div>
</div>
</template>
<script>
import {bestStockPage, investment} from '@/api/detail/party-a/overview'
export default {
name: 'Relationship',
props: ['companyId', 'financial'],
data() {
return {
activeName:'first',
//表格数据
holderData:[
{name: '重庆城市交通开发投资 (集团)有限公司', cgsl: '60.00', cgbl: '100%', fddbr: '李方宇', clrq: '1994-11-09'},
{name: '重庆城市交通开发投资 (集团)有限公司', cgsl: '60.00', cgbl: '100%', fddbr: '李方宇', clrq: '1994-11-09'}
],
shipData:[
{name: '深圳市地铁集团有限建设总部', nAjlx: '招标', fddbr: '雷江松', zczb: '15100', clrq: '1920-02-21', gqzb: '35%', rjcze: '2133'},
{name: '深圳市地铁集团有限建设总部', nAjlx: '招标', fddbr: '雷江松', zczb: '15100', clrq: '1920-02-21', gqzb: '35%', rjcze: '2133'},
{name: '深圳市地铁集团有限建设总部', nAjlx: '招标', fddbr: '雷江松', zczb: '15100', clrq: '1920-02-21', gqzb: '35%', rjcze: '2133'},
{name: '深圳市地铁集团有限建设总部', nAjlx: '招标', fddbr: '雷江松', zczb: '15100', clrq: '1920-02-21', gqzb: '35%', rjcze: '2133'},
{name: '深圳市地铁集团有限建设总部', nAjlx: '招标', fddbr: '雷江松', zczb: '15100', clrq: '1920-02-21', gqzb: '35%', rjcze: '2133'}
],
pageIndex: 1,
pageSize: 10
holderData:[],
holderParams: {
cid: this.companyId,
isHistory: 0,
pageNum: 1,
pageSize: 20
},
shipData:[],
shipParams: {
cid: this.companyId,
pageNum: 1,
pageSize: 10
},
shipTotal: 0
}
},
created() {
this.handleQuery()
},
mounted() {
},
methods: {
handleClick(){
async handleQuery(){
let res = this.activeName=='first'?await bestStockPage(this.holderParams):await investment(this.shipParams)
if(res.code==200){
this.activeName=='first'?this.holderData = res.rows:this.shipData = res.rows
}
this.activeName=='second'?this.shipTotal = res.total:''
}
}
}
......
......@@ -8,7 +8,6 @@
:data="viewData"
border
style="width: 100%"
:default-sort = "{prop: 'date', order: 'descending'}"
>
<el-table-column
prop="name"
......@@ -17,14 +16,14 @@
prop="value"
label="数量">
<template slot-scope="scope">
<div style="text-align: right">{{ scope.row.value }}</div>
<span>{{ scope.row.value }}</span>
</template>
</el-table-column>
<el-table-column
prop="bl"
label="占比">
<template slot-scope="scope">
<div style="text-align: right">{{ scope.row.bl }}</div>
<span>{{ scope.row.bl }}</span>
</template>
</el-table-column>
</el-table>
......@@ -37,61 +36,79 @@
import * as echarts from 'echarts'
export default {
name: 'Risk',
props: ['statistic'],
data() {
return {
viewData:[
{
name:'开庭公告',
value:'2',
tz:'50.01',
bl:'0.19%'
value:'',
category:'credit',
field:'openAnnouncement',
tz:'',
bl:''
},
{
name:'企业公告',
value:'2',
tz:'50.01',
bl:'0.19%'
value:'',
category:'xxx',
field:'yy',
tz:'',
bl:''
},
{
name:'送达公告',
value:'2',
tz:'50.01',
bl:'0.19%'
value:'',
category:'xxx',
field:'yy',
tz:'',
bl:''
},
{
name:'对外投资变更',
value:'7',
tz:'50.01',
bl:'0.19%'
value:'',
category:'basic',
field:'outboundInvestment',
tz:'',
bl:''
},
{
name:'法院公告',
value:'2',
tz:'50.01',
bl:'0.19%'
value:'',
category:'credit',
field:'courtAnnouncement',
tz:'',
bl:''
},
{
name:'立案信息',
value:'3',
tz:'50.01',
bl:'0.19%'
value:'',
category:'xxx',
field:'zz',
tz:'',
bl:''
},
{
name:'被执行人',
value:'5',
tz:'50.01',
bl:'0.19%'
value:'',
category:'credit',
field:'dishonestExecutee',
tz:'',
bl:''
},
{
name:'行政处罚',
value:'11',
tz:'50.01',
bl:'0.19%'
value:'',
category:'credit',
field:'adminSanction',
tz:'',
bl:''
},
]
}
},
created() {
this.handView()
},
mounted() {
this.$nextTick(()=>{
......@@ -99,6 +116,17 @@ export default {
})
},
methods: {
handView(){
let totalVal = this.viewData.map(item => {
let number = this.statistic[item.category]&&this.statistic[item.category][item.field]?this.statistic[item.category][item.field]:0
return number
}).reduce((prev, cur) => prev + cur)
this.viewData = this.viewData.map(item => {
let number = this.statistic[item.category]&&this.statistic[item.category][item.field]?this.statistic[item.category][item.field]:0
let it = {name:item.name, value:number, tz: '', bl:parseFloat(Number(Number(number)/Number(totalVal)*100).toFixed(2))+'%'}
return it
})
},
getDT(){
let myChart = echarts.init(document.getElementById("echartsRisk"))
let option = {
......@@ -110,7 +138,9 @@ export default {
var result = ''
result+='<h3 style="color: #232226;padding: 0 0 5px 0;margin: 0;">'+ params.data.name +'</h3>'
result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;">'+ params.data.value +'个</p>'
result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;">'+ params.data.tz +'亿元</p>'
if(params.data.tz){
result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;" >'+ params.data.tz +'亿元</p>'
}
result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;">'+ params.data.bl +'%</p>'
return result;
},
......
......@@ -9,13 +9,13 @@
:default-sort = "{prop: 'date', order: 'descending'}"
>
<el-table-column label="序号" width="55" align="left" fixed>
<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>
<template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column
prop="name"
label="姓名"></el-table-column>
<el-table-column
prop="zw"
prop="jobTitle"
label="职务"></el-table-column>
</el-table>
</div>
......@@ -23,23 +23,34 @@
</template>
<script>
import {keymembers} from "@/api/detail/party-a/overview"
export default {
name: 'Senior',
props: ['companyId'],
data() {
return {
queryParams: {
cid: this.companyId,
pageNum: 1,
pageSize: 20
},
//表格数据
tableData:[
{name: '重庆城市交通开发投资 (集团)有限公司', zw: '董事'}
],
pageIndex: 1,
pageSize: 10
tableData:[]
}
},
created() {
this.handleQuery()
},
mounted() {
},
methods: {
async handleQuery(){
let res = await keymembers(this.queryParams)
if(res.code==200){
this.tableData = res.rows
}
}
}
}
</script>
......
......@@ -3,33 +3,41 @@
<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.name}}<span :class="item.tag=='项目动态'?'style2':item.tag=='招投标'?'style4':'style1'">{{item.tag}}</span></div>
<span class="tender-time">{{item.tip}} {{item.time}}</span>
<div class="flex-box tender-title">{{item.projectName}}<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.name}}<span :class="item.tag=='新增分支机构'?'style2':item.tag=='新增施工工法'?'style3':'style1'">{{item.tag}}</span></div>
<span class="tender-time">{{item.time}}</span>
<div class="flex-box tender-title">{{item.xxx}}<span :class="item.tag=='新增分支机构'?'style2':item.tag=='新增施工工法'?'style3':'style1'">{{item.tag}}</span></div>
<span class="tender-time">{{item.createTime}}</span>
</div>
</div>
</div>
</template>
<script>
import {bidNoticePage, dynamicPage} from "@/api/detail/party-a/overview"
export default {
name: 'Tender',
props: ['companyId'],
data() {
return {
zbggParams: {
cid: this.companyId,
sort: 3,
pageNum: 1,
pageSize: 5
},
//招标公告数据
zbggList:[
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '公司经营', tip: '通信信息报', time: '03-21'},
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '项目动态', tip: '通信信息报', time: '03-21'},
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '公司经营', tip: '通信信息报', time: '03-21'},
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '招投标', tip: '通信信息报', time: '03-21'},
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '公司经营', tip: '通信信息报', time: '03-21'}
],
zbggList:[],
trendParams: {
companyId: this.companyId,
pageNum: 1,
pageSize: 5
},
//企业动态数据
trendList:[
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '对外投资变更', time: '03-21'},
......@@ -41,10 +49,23 @@ export default {
}
},
created() {
this.handleQuery()
},
mounted() {
},
methods: {
async handleQuery() {
let [notice, namic] = await Promise.all([
bidNoticePage(this.zbggParams),
dynamicPage(this.trendParams)
])
if(notice.code==200){
this.zbggList = notice.rows
}
if(namic.code==200){
this.trendList = namic.rows
}
}
}
}
</script>
......
<template>
<div class="app-container part-container">
<div class="view-content"><Infoheader :companyId="companyId" :companyInfo="companyInfo" /></div><!-- 企业信息 -->
<div class="view-content"><Operations /></div><!-- 公司经营 -->
<div class="view-content"><Bidding /></div><!--招标偏好、业务往来-->
<div class="view-content"><Busclue /></div><!--商机线索-->
<div class="view-content"><Relationship /></div><!--关系企业-->
<div class="view-content"><Senior /></div><!--高管-->
<div class="view-content"><Risk /></div><!--风险概览-->
<div class="view-content"><Tender /></div><!--招标公告、企业动态-->
<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"><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"><Senior :companyId="companyId" /></div><!--高管-->
<div class="view-content"><Risk :companyId="companyId" :statistic="statistic" v-if="isShow" /></div><!--风险概览-->
<div class="view-content"><Tender :companyId="companyId" /></div><!--招标公告、企业动态-->
</div>
</template>
<script>
import { statistic } from '@/api/detail/party-a/overview'
import { financial } from '@/api/detail/party-a/financial'
import Infoheader from "./component/infoheader"
import Operations from "./component/operations"
import Bidding from "./component/bidding"
......@@ -35,11 +37,28 @@ export default {
},
data() {
return {
isShow: false,
statistic: {},
financial: {}
}
},
created() {
this.handleQuery()
},
methods: {
async handleQuery() {
let [statis, financ] = await Promise.all([
statistic({companyId: this.companyId}),
financial({cid: this.companyId})
])
if(statis.code==200){
this.statistic = statis.data
}
if(financ.code==200){
this.financial = financ.data
}
this.isShow = true
}
}
}
</script>
......
......@@ -138,257 +138,296 @@
</div>
</div>
<div class=" table-item-jf">
<div class=" table-item-jf table-item-jf1"v-if="tableData.length==0">
<div class="item-jf-text">暂无数据!</div>
</div>
<div class=" table-item-jf" v-if="tableData.length>0">
<el-table :data="tableData" :header-cell-style="{ background:'#F0F3FA'}" element-loading-text="Loading" border highlight-current-row>
<el-table-column label="序号" width="60">
<template slot-scope="scope">
1
</template>
<el-table-column type="index" label="序号" width="60">
<template slot-scope="scope">
<span>{{(pageNum - 1) *10 + scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="公司名称" width="430" >
<template slot-scope="scope">
<router-link :to="'/radar/bxprozbgg/details/'+ 1" tag="a" class="list-titel-a" >绿色节能型压缩机基础件、汽车零配件新建项目 (芜湖旭日机械制造有限公司)</router-link>
</template>
<div class="renling">
<router-link :to="'/radar/bxprozbgg/details/'+ 1" tag="a" class="list-titel-a" >{{scope.row.companyName}}</router-link>
<div class="renling-btn">
<img src="@/assets/images/owner/renling1.png" alt="">
<span v-if="scope.row.claimStatus" class="renling-hui">
已认领
</span>
<span v-else class="renling-hei" @click="claimbtn(scope.row)" >
认领
</span>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="区域" width="60" >
<el-table-column label="区域" width="120">
<template slot-scope="scope">
<router-link :to="'/radar/bxprozbgg/details/'+ 1" tag="a" class="list-titel-a" >
{{scope.row.province}}
<template v-if="scope.row.city">
-
</template>
{{scope.row.city}}
<template v-if="scope.row.area">
-
</template>
{{scope.row.area}}
</router-link>
</template>
</el-table-column>
<el-table-column label="招标数量" width="72" >
<template slot-scope="scope">
--
{{scope.row.biddingCount||"--"}}
</template>
</el-table-column>
<el-table-column label="城投拿地" width="72" >
<template slot-scope="scope">
28
{{scope.row.landInfoCount||"--"}}
</template>
</el-table-column>
<el-table-column label="供应商" width="72" >
<template slot-scope="scope">
28
{{scope.row.supplierCount||"--"}}
</template>
</el-table-column>
<el-table-column label="主体评级" width="72" >
<template slot-scope="scope">
28
{{scope.row.bratingSubjectLevel||"--"}}
</template>
</el-table-column>
<el-table-column label="债券余额(亿元)" width="124" >
<template slot-scope="scope">
28
{{scope.row.bondBalance||"--"}}
</template>
</el-table-column>
<el-table-column label="行政级别" width="72" >
<template slot-scope="scope">
28
{{scope.row.uipExecutiveLevel||"--"}}
</template>
</el-table-column>
<el-table-column label="股东背景" width="84" >
<template slot-scope="scope">
28
{{scope.row.shareholderBg||"--"}}
</template>
</el-table-column>
<el-table-column label="股权关系" width="84" >
<template slot-scope="scope">
28
{{scope.row.equityRelationship||"--"}}
</template>
</el-table-column>
<el-table-column label="平台重要性" width="84" >
<template slot-scope="scope">
28
{{scope.row.platformImportance||"--"}}
</template>
</el-table-column>
<el-table-column label="城投业务类型" width="94" >
<template slot-scope="scope">
28
{{scope.row.uipBusinessType||"--"}}
</template>
</el-table-column>
<el-table-column label="实控人" width="290" >
<template slot-scope="scope">
28
<router-link v-if="scope.row.actualController" :to="'/radar/bxprozbgg/details/'+ 1" tag="a" class="list-titel-a" >
{{scope.row.actualController}}
</router-link>
<template v-else>
{{scope.row.actualController||"--"}}
</template>
</template>
</el-table-column>
<el-table-column label="最新报告期" width="92" >
<template slot-scope="scope">
2021-12-13
{{scope.row.latestReportPeriod||"--"}}
</template>
</el-table-column>
<el-table-column label="总资产(亿元)" width="112" >
<template slot-scope="scope">
2021-12-13
{{scope.row.totalAssets||"--"}}
</template>
</el-table-column>
<el-table-column label="归母净资产(亿元)" width="132" >
<template slot-scope="scope">
2021-12-13
</template>
<template slot-scope="scope">
{{scope.row.belongNetAssets||"--"}}
</template>
</el-table-column>
<el-table-column label="货币资金(亿元)" width="120" >
<template slot-scope="scope">
2021-12-13
{{scope.row.monetaryFunds||"--"}}
</template>
</el-table-column>
<el-table-column label="土地资产(亿元)" width="120" >
<template slot-scope="scope">
2021-12-13
{{scope.row.landAssets||"--"}}
</template>
</el-table-column>
<el-table-column label="受限资产(亿元)" width="120" >
<template slot-scope="scope">
2021-12-13
{{scope.row.restrictedAssets||"--"}}
</template>
</el-table-column>
<el-table-column label="应收账款(亿元)" width="120" >
<template slot-scope="scope">
2021-12-13
{{scope.row.accountsReceivable||"--"}}
</template>
</el-table-column>
<el-table-column label="公益性&准公益性主营占比" width="168" >
<template slot-scope="scope">
2021-12-13
{{scope.row.econData_001||"--"}}
</template>
</el-table-column>
<el-table-column label="政府补助(亿元)" width="120" >
<template slot-scope="scope">
2021-12-13
{{scope.row.govSubsidy||"--"}}
</template>
</el-table-column>
<el-table-column label="专项应付款(亿元)" width="132" >
<template slot-scope="scope">
2021-12-13
{{scope.row.specialPayable||"--"}}
</template>
</el-table-column>
<el-table-column label="营业收入(亿元)" width="120" >
<template slot-scope="scope">
2021-12-13
{{scope.row.operatingIncome||"--"}}
</template>
</el-table-column>
<el-table-column label="归母净利润(亿元)" width="132" >
<template slot-scope="scope">
2021-12-13
{{scope.row.belongNetProfit||"--"}}
</template>
</el-table-column>
<el-table-column label="净资产收益率" width="96" >
<template slot-scope="scope">
2021-12-13
{{scope.row.roe||"--"}}
</template>
</el-table-column>
<el-table-column label="经营现金流量净额(亿元)" width="168" >
<template slot-scope="scope">
2021-12-13
{{scope.row.netOperatingCashFlow||"--"}}
</template>
</el-table-column>
<el-table-column label="筹资现金流量净额(亿元)" width="168" >
<template slot-scope="scope">
2021-12-13
</template>
<template slot-scope="scope">
{{scope.row.netFinancingCashFlow||"--"}}
</template>
</el-table-column>
<el-table-column label="投资现金流量净额(亿元)" width="168" >
<template slot-scope="scope">
2021-12-13
{{scope.row.netInvestmentCashFlow||"--"}}
</template>
</el-table-column>
<el-table-column label="总负债 (亿元)" width="112" >
<template slot-scope="scope">
2021-12-13
{{scope.row.totalLiabilities||"--"}}
</template>
</el-table-column>
<el-table-column label="有息债务 (亿元)" width="124" >
<template slot-scope="scope">
2021-12-13
{{scope.row.uipInterestBearingDebt||"--"}}
</template>
</el-table-column>
<el-table-column label="有息债务/总负债" width="114" >
<template slot-scope="scope">
2021-12-13
{{scope.row.econData_002||"--"}}
</template>
</el-table-column>
<el-table-column label="综合融资成本" width="96" >
<template slot-scope="scope">
2021-12-13
{{scope.row.ofcb||"--"}}
</template>
</el-table-column>
<el-table-column label="现金比率" width="72" >
<template slot-scope="scope">
2021-12-13
{{scope.row.cashRatio||"--"}}
</template>
</el-table-column>
<el-table-column label="现金流量比率" width="96" >
<template slot-scope="scope">
2021-12-13
{{scope.row.cashFlowRatio||"--"}}
</template>
</el-table-column>
<el-table-column label="现金到期债务比" width="112" >
<template slot-scope="scope">
{{scope.row.cashDebtRatio||"--"}}
</template>
</el-table-column>
<el-table-column label="授信余额(亿元)" width="124" >
<template slot-scope="scope">
2021-12-13
{{scope.row.creditBalance||"--"}}
</template>
</el-table-column>
<el-table-column label="授信余额/全部债务" width="126" >
<template slot-scope="scope">
2021-12-13
{{scope.row.econData_003||"--"}}
</template>
</el-table-column>
<el-table-column label="EBITDA保障倍数" width="116" >
<template slot-scope="scope">
2021-12-13
{{scope.row.ebitdaIcr||"--"}}
</template>
</el-table-column>
<el-table-column label="私募债余额占比" width="108" >
<template slot-scope="scope">
2021-12-13
{{scope.row.ppnBalanceProp||"--"}}
</template>
</el-table-column>
<el-table-column label="一年内到期债权占比" width="132" >
<template slot-scope="scope">
2021-12-13
{{scope.row.econData_004||"--"}}
</template>
</el-table-column>
<el-table-column label="债券余额/有息债务" width="132" >
<template slot-scope="scope">
2021-12-13
{{scope.row.econData_005||"--"}}
</template>
</el-table-column>
<el-table-column label="借款余额(亿元)" width="124" >
<template slot-scope="scope">
2021-12-13
{{scope.row.loan||"--"}}
</template>
</el-table-column>
<el-table-column label="借款/有息债务" width="102" >
<template slot-scope="scope">
2021-12-13
{{scope.row.econData_006||"--"}}
</template>
</el-table-column>
<el-table-column label="非标余额(亿元)" width="124" >
<template slot-scope="scope">
2021-12-13
{{scope.row.nonStandardBalance||"--"}}
</template>
</el-table-column>
<el-table-column label="非标余额/有息债务" width="132" >
<template slot-scope="scope">
2021-12-13
{{scope.row.nonStandardRatio||"--"}}
</template>
</el-table-column>
<el-table-column label="对外担保金额(亿元)" width="144" >
<template slot-scope="scope">
2021-12-13
{{scope.row.guaranteeAmount||"--"}}
</template>
</el-table-column>
<el-table-column label="对外担保比例" width="96" >
<template slot-scope="scope">
2021-12-13
{{scope.row.guaranteeAmount||"--"}}
</template>
</el-table-column>
<el-table-column label="所属开发区" width="84" >
<template slot-scope="scope">
2021-12-13
{{scope.row.developmentZone||"--"}}
</template>
</el-table-column>
<el-table-column label="开发区类别" width="84" >
<template slot-scope="scope">
2021-12-13
{{scope.row.developmentZone||"--"}}
</template>
</el-table-column>
</el-table>
......@@ -405,6 +444,19 @@
</div>
</div>
<el-dialog
title=""
:visible.sync="dialogVisible"
:modal="false"
custom-class='dialog-renlin'
:show-close="false"
width="244px">
<span>认领成功,是否完善客户信息?</span>
<div slot="footer" class="dialog-footer">
<span class="dialog-footer-btn1" type="primary" @click="renlin()">立即完善</span>
<span class="dialog-footer-btn2" @click="search(pageNum, pageSize)">稍后</span>
</div>
</el-dialog>
</div>
</template>
......@@ -480,9 +532,10 @@ export default {
},
],
dialogVisible: false,
tableData:[],
total:6000,
total:0,
pageNum:1,
pageSize:20
};
......@@ -720,7 +773,33 @@ export default {
this.pageFlag = true;
});
},
claimbtn(item){
var params={
companyId:item.companyId,
uipId:item.uipId,
companyName:item.companyName,
// creditLevel:item.bratingSubjectLevel,
// legalPerson:item.legalPerson,
// registerCapital:item.registerCapital,
// provinceId:item.provinceId,
// cityId:item.cityId,
// districtId:item.districtId,
// registerAddress:item.registerAddress,
// creditCode:item.creditCode,
}
api.claim(params).then(res=>{
// console.log(res)
if (res.code==200) {
this.dialogVisible=true;
}
}).catch(error=>{
});
},
search(pageNum, pageSize,exportFlag) {
this.dialogVisible=false;
if (!pageNum) {
this.pageNum = 1;
}
......@@ -783,9 +862,10 @@ export default {
delete params.equityRelationship
}
api.uipSerach(params).then(res=>{
console.log(res)
// console.log(res)
if (res.code==200) {
// 行政等级
this.tableData=res.rows;
this.total=res.total;
}
}).catch(error=>{
......@@ -793,12 +873,59 @@ export default {
});
},
renlin(){
this.dialogVisible=false;
// 跳转地址
},
},
};
</script>
<style lang="scss" scoped>
::v-deep .dialog-renlin{
margin-top:40vh !important;
.el-dialog__body{
padding: 0;
text-align: center;
padding-bottom: 24px;
}
.el-dialog__footer{
padding: 0px;
padding-bottom: 24px;
.dialog-footer{
display: inline-flex;
align-items: center;
justify-content: center;
width: 100%;
.dialog-footer-btn1{
cursor: pointer;
width: 72px;
height: 28px;
background: #0081FF;
border-radius: 2px 2px 2px 2px;
font-size: 12px;
font-weight: 400;
color: #FFFFFF;
line-height: 28px;
text-align: center;
margin-right: 8px;
}
.dialog-footer-btn2{
cursor: pointer;
width: 72px;
height: 28px;
border-radius: 2px 2px 2px 2px;
border: 1px solid #CCCCCC;
line-height: 28px;
text-align: center;
font-size: 12px;
font-weight: 400;
color: rgba(35,35,35,0.8);
}
}
}
}
.content{
padding: 0px 16px;
border-radius: 4px 4px 4px 4px;
......@@ -1079,12 +1206,54 @@ export default {
::v-deep .el-table--border .el-table__cell{
border-right:1px solid #E6EAF1;
}
.item-jf-text{
width: 100%;
text-align: center;
padding: 56px 0px;
font-size: 18px;
font-weight: 400;
color: rgba(35,35,35,0.8);
}
.renling{
display: flex;
align-items: center;
.list-titel-a{
width: 264px;
margin-right: 12px;
}
.renling-btn{
display: flex;
align-items: center;
img{
width: 16px;
height: 16px;
margin-right: 8px;
}
.renling-hui{
font-size: 12px;
font-weight: 400;
color: rgba(35,35,35,0.4);
}
.renling-hei{
cursor: pointer;
font-size: 12px;
font-weight: 400;
color: #3D3D3D;
}
.renling-hei:hover{
color: #0081FF;
}
}
}
}
.table-item-jf1{
border-top:1px solid #EFEFEF;
}
.pagination{
padding: 14px ;
.el-pagination{
float: right;
float: right ;
}
}
}
......
......@@ -24,7 +24,11 @@
highlight-current-row
@sort-change="sortChange"
>
<el-table-column prop="province" label="下辖区" width="100" :formatter="formatStatus"/>
<el-table-column prop="province" label="下辖区" width="170" :formatter="formatStatus">
<template slot-scope="scope">
{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}
</template>
</el-table-column>
<el-table-column prop="gdp" label="GDP(亿元)" sortable width="120" :formatter="formatStatus"/>
<el-table-column prop="gdpGrowth" label="GDP增速" sortable width="100" :formatter="formatStatus"/>
<el-table-column prop="gdpPerCapita" label="人均GDP(元)" sortable width="130" :formatter="formatStatus"/>
......
......@@ -182,10 +182,11 @@ export default {
var year = date.getFullYear()
var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
// var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
// var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
// var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
// return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
return year + '-' + month + '-' + day
}
}
}
......
......@@ -139,6 +139,7 @@ export default {
let arr=this.tableData.sort((old,New)=>{
return New.value - old.value
})
console.log(arr)
let data=[]
for(let i=0; i<10; i++){
data.push(arr[i])
......@@ -215,13 +216,12 @@ export default {
for(var i=0;i<res.data.length;i++){
var obj={};
obj.name=res.data[i].projectType;
obj.value=res.data[i].count;
obj.totalInvestment=res.data[i].totalInvestment;
obj.value=res.data[i].totalInvestment;
obj.number=res.data[i].count;
obj.proportion=res.data[i].proportion;
list.push(obj)
}
this.tableData=list;
})
},
......
......@@ -41,9 +41,9 @@
<el-table-column label="序号" width="50" align="left" fixed>
<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="地区" min-width="70" align="left" fixed>
<el-table-column label="地区" min-width="150" align="left" fixed>
<template slot-scope="scope">
<router-link :to="{path:'/macro/economies',query:{id:scope.row.id,provinceId:scope.row.provinceId}}" tag="a" class="a-link">{{ scope.row.province}}</router-link>
<router-link :to="{path:'/macro/economies',query:{id:scope.row.id,provinceId:scope.row.provinceId}}" tag="a" class="a-link">{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}</router-link>
</template>
</el-table-column>
<el-table-column label="年度明细" prop="id" width="90" align="center" fixed>
......
......@@ -7,121 +7,123 @@
</div>
</div>
<div class="search">
<el-radio v-model="radio" label="1">含下属辖区</el-radio>
<el-radio v-model="radio" label="2">本级</el-radio>
<el-radio-group v-model="queryParams.radio" @change="querySubmit">
<el-radio label="1">含下属辖区</el-radio>
<el-radio label="2">本级</el-radio>
</el-radio-group>
<div class="search-box">
<span style="cursor: pointer;" @click="handleSearch">筛选<i class="el-icon-caret-bottom" style="color:rgba(35,35,35,0.4);margin-left: 5px"></i></span>
<div v-show="searchState" ref="showContent" class="search-main">
<div class="item">
<span class="wrap_label">行政等级</span>
<div class="item_ckquery">
<span :class="{color_text:xzdjCalss == ''}" @click="changeXZDJ('')">全部</span>
<template v-for="(item,index) in xzdj">
<span :class="{color_text:index+1 === xzdjCalss}" @click="changeXZDJ(index+1)">{{item.name}}</span>
<span :class="{color_text:xzdjCalss == ''}" @click="changeXZDJ('','')">全部</span>
<template v-for="(item,index) in typeList.uipExecutiveLevel">
<span :class="{color_text:index+1 === xzdjCalss}" @click="changeXZDJ(index+1,item)">{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">城投业务类型</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in typeList">
<span>{{item}}</span>
<span :class="{'color_text':queryParams.uipBusinessType.length === 0}" @click="changeType('',1)">全部</span>
<template v-for="(item,index) in typeList.uipBusinessType">
<span :class="{'color_text':queryParams.uipBusinessType.indexOf(item)!=-1}" @click="changeType(item,1)">{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">主体评级</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in ztpj">
<span>{{item}}</span>
<span :class="{'color_text':queryParams.bratingSubjectLevel.length === 0}" @click="changeType('',2)">全部</span>
<template v-for="(item,index) in typeList.bratingSubjectLevel">
<span :class="{'color_text':queryParams.bratingSubjectLevel.indexOf(item)!=-1}" @click="changeType(item,2)">{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">股东背景</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in gdbj">
<span>{{item}}</span>
<span :class="{'color_text':queryParams.shareholderBg.length === 0}" @click="changeType('',3)">全部</span>
<template v-for="(item,index) in typeList.shareholderBg">
<span :class="{'color_text':queryParams.shareholderBg.indexOf(item)!=-1}" @click="changeType(item,3)">{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">股权关系</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in gqgx">
<span>{{item}}</span>
<span :class="{'color_text':queryParams.equityRelationship.length === 0}" @click="changeType('',4)">全部</span>
<template v-for="(item,index) in typeList.equityRelationship">
<span :class="{'color_text':queryParams.equityRelationship.indexOf(item)!=-1}" @click="changeType(item,4)">{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">平台重要性</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in pt">
<span>{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label" style="width: 78px;">开发区类别</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in lfqType">
<span>{{item}}</span>
<span :class="{'color_text':queryParams.platformImportance.length === 0}" @click="changeType('',5)">全部</span>
<template v-for="(item,index) in typeList.platformImportance">
<span :class="{'color_text':queryParams.platformImportance.indexOf(item)!=-1}" @click="changeType(item,5)">{{item}}</span>
</template>
</div>
</div>
<!--<div class="item">-->
<!--<span class="wrap_label" style="width: 78px;">开发区类别</span>-->
<!--<div class="item_ckquery">-->
<!--<span>全部</span>-->
<!--<template v-for="(item,index) in lfqType">-->
<!--<span>{{item}}</span>-->
<!--</template>-->
<!--</div>-->
<!--</div>-->
<div class="item">
<span class="wrap_label">更多筛选</span>
<div class="item_ckquery">
<span :class="addresslength>0?'select-active':''">注册地区{{addresslength>0?(addresslength+'项'):''}}</span>
<el-cascader ref="address" class="cascader-region" popper-class='cascader-region-addd'
@input="addressListbtn" v-model="addressType" :options="addressList" :props="props" collapse-tags></el-cascader>
@input="addressListbtn" v-model="queryParams.address" :options="addressList" :props="props" collapse-tags></el-cascader>
</div>
</div>
</div>
</div>
<el-input class="search-input" placeholder="输入企业名称关键词" v-model="queryParams.key">
<el-input class="search-input" placeholder="输入企业名称关键词" v-model="queryParams.keyword">
<template slot="prepend"><i class="el-icon-search"></i></template>
<el-button slot="append">搜索</el-button>
<el-button slot="append" @click="querySubmit">搜索</el-button>
</el-input>
</div>
<div class="list-box">
<div class="item">
<div class="left">
<p>115<span></span></p>
<p>{{statistics.count}}<span></span></p>
<span>平台家数</span>
</div>
<img src="@/assets/images/urban/img1.png">
</div>
<div class="item">
<div class="left">
<p>18,737.90<span>亿元</span></p>
<p>{{statistics.creditBalance}}<span>亿元</span></p>
<span>授信余额</span>
</div>
<img src="@/assets/images/urban/img2.png">
</div>
<div class="item">
<div class="left">
<p>18,737.90<span>亿元</span></p>
<p>{{statistics.totalAssets}}<span>亿元</span></p>
<span>资产总额</span>
</div>
<img src="@/assets/images/urban/img3.png">
</div>
<div class="item">
<div class="left">
<p>18,737.90<span>亿元</span></p>
<p>{{statistics.accountsReceivable}}<span>亿元</span></p>
<span>营收账款</span>
</div>
<img src="@/assets/images/urban/img4.png">
</div>
<div class="item">
<div class="left">
<p>18,737.90<span>亿元</span></p>
<p>{{statistics.nonStandardBalance}}<span>亿元</span></p>
<span>非标余额</span>
</div>
<img src="@/assets/images/urban/img5.png">
......@@ -142,6 +144,7 @@
v-loading="tableLoading"
:data="tableData"
element-loading-text="Loading"
@sort-change="sortChange"
border
fit
highlight-current-row
......@@ -149,23 +152,28 @@
<el-table-column label="序号" width="50" align="left" fixed>
<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column prop="name" label="公司名称" width="250" fixed>
<template slot-scope="scope">{{ scope.row.name }}
<span class="table-span" style="color: #3D3D3D;" v-if="scope.row.state === 0"><img src="@/assets/images/urban/rl_icon1.png"/>认领</span>
<span class="table-span" style="color: rgba(35,35,35,0.4);" v-if="scope.row.state === 1"><img src="@/assets/images/urban/rl_icon2.png"/>已认领</span>
<el-table-column prop="companyName" label="公司名称" width="300" fixed>
<template slot-scope="scope">
<p class="companyName">{{ scope.row.companyName }}</p>
<span class="table-span" style="color: #3D3D3D;" v-if="scope.row.claimStatus === 0"><img src="@/assets/images/urban/rl_icon1.png"/>认领</span>
<span class="table-span" style="color: rgba(35,35,35,0.4);" v-if="scope.row.claimStatus === 1"><img src="@/assets/images/urban/rl_icon2.png"/>已认领</span>
</template>
</el-table-column>
<el-table-column prop="value" label="区域" width="100" />
<el-table-column prop="pm" label="招标数量" sortable width="120" />
<el-table-column prop="bl" label="城投拿地" sortable width="140" />
<el-table-column prop="bl" label="供应商" sortable width="170" />
<el-table-column prop="bl" label="主体评级" sortable width="140" />
<el-table-column prop="bl" label="债券余额(亿元)" sortable width="140" />
<el-table-column prop="bl" label="行政级别" width="140" />
<el-table-column prop="bl" label="股东背景" width="140" />
<el-table-column prop="bl" label="股权关系" width="140" />
<el-table-column prop="bl" label="平台重要性" width="140" />
<el-table-column prop="bl" label="城投业务类型" width="140" >
<el-table-column prop="city" label="区域" :formatter="formatStatus" width="100">
<!--<template slot-scope="scope">-->
<!--{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}-->
<!--</template>-->
</el-table-column>
<el-table-column prop="biddingCount" label="招标数量" :formatter="formatStatus" sortable="custom" width="120" />
<el-table-column prop="landInfoCount" label="城投拿地" :formatter="formatStatus" sortable="custom" width="140" />
<el-table-column prop="supplierCount" label="供应商" :formatter="formatStatus" sortable="custom" width="170" />
<el-table-column prop="bratingSubjectLevel" label="主体评级" :formatter="formatStatus" sortable="custom" width="140" />
<el-table-column prop="bondBalance" label="债券余额(亿元)" :formatter="formatStatus" sortable="custom" width="140" />
<el-table-column prop="uipExecutiveLevel" label="行政级别" :formatter="formatStatus" width="140" />
<el-table-column prop="shareholderBg" label="股东背景" :formatter="formatStatus" width="140" />
<el-table-column prop="equityRelationship" label="股权关系" :formatter="formatStatus" width="140" />
<el-table-column prop="platformImportance" label="平台重要性" :formatter="formatStatus" width="140" />
<el-table-column prop="uipBusinessType" label="城投业务类型" :formatter="formatStatus" width="140" >
<template slot="header" slot-scope="scope">
<span>城投业务类型
<el-tooltip popper-class="tips" effect="light" content=" 根据主营业务构成划分为土地开发整理、基础设施建设、交通建设运营、棚改保障房建设、公用事业等8大类型。" placement="top">
......@@ -174,46 +182,47 @@
</span>
</template>
</el-table-column>
<el-table-column prop="bl" label="实控人" width="200" />
<el-table-column prop="bl" label="最新报告期" width="120" />
<el-table-column prop="bl" label="总资产(亿元)" sortable width="120" />
<el-table-column prop="bl" label="归母净资产(亿元)" sortable width="160" />
<el-table-column prop="bl" label="货币资金(亿元)" sortable width="160" />
<el-table-column prop="bl" label="土地资产(亿元)" sortable width="160" />
<el-table-column prop="bl" label="受限资产(亿元)" sortable width="160" />
<el-table-column prop="bl" label="应收账款(亿元)" sortable width="160" />
<el-table-column prop="bl" label="其他应收款(亿元)" sortable width="160" />
<el-table-column prop="bl" label="公益性&准公益性主营占比(%)" width="160" />
<el-table-column prop="bl" label="应收类款项来自政府占比(%)" width="160" />
<el-table-column prop="bl" label="政府补助(亿元)" width="120" />
<el-table-column prop="bl" label="专项应付款(亿元)" width="140" />
<el-table-column prop="bl" label="营业收入(亿元)" width="140" />
<el-table-column prop="bl" label="归母净利润(亿元)" width="140" />
<el-table-column prop="bl" label="净资产收益率(%)" width="140" />
<el-table-column prop="bl" label="经营现金流量净额(亿元)" width="160" />
<el-table-column prop="bl" label="筹资现金流量净额(亿元)" width="160" />
<el-table-column prop="bl" label="投资现金流量净额(亿元)" width="160" />
<el-table-column prop="bl" label="总负债(亿元)" width="160" />
<el-table-column prop="bl" label="有息债务(亿元)" width="160" />
<el-table-column prop="bl" label="有息债务/总负债(%)" width="160" />
<el-table-column prop="bl" label="资产负债率(%)" width="160" />
<el-table-column prop="bl" label="综合融资成本(%)" width="160" />
<el-table-column prop="bl" label="现金比率" width="160" />
<el-table-column prop="bl" label="现金流量比率" width="160" />
<el-table-column prop="bl" label="现金到期债务比" width="160" />
<el-table-column prop="bl" label="授信余额/全部债务(%)" width="160" />
<el-table-column prop="bl" label="EBITDA保障倍数" width="160" />
<el-table-column prop="bl" label="私募债余额占比(%)" width="160" />
<el-table-column prop="bl" label="一年内到期债权占比(%)" width="160" />
<el-table-column prop="bl" label="债券余额/有息债务(%)" width="160" />
<el-table-column prop="bl" label="借款余额(亿元)" width="160" />
<el-table-column prop="bl" label="借款/有息债务(%)" width="160" />
<el-table-column prop="bl" label="非标余额(亿元)" width="160" />
<el-table-column prop="bl" label="非标余额/有息债务(%)" width="160" />
<el-table-column prop="bl" label="对外担保金额(亿元)" width="160" />
<el-table-column prop="bl" label="对外担保比例(%)" width="160" />
<el-table-column prop="bl" label="所属开发区" width="160" />
<el-table-column prop="bl" label="开发区类别" width="160" />
<el-table-column prop="actualController" label="实控人" :formatter="formatStatus" width="200" />
<el-table-column prop="latestReportPeriod" label="最新报告期" :formatter="formatStatus" width="120" />
<el-table-column prop="totalAssets" label="总资产(亿元)" :formatter="formatStatus" sortable="custom" width="120" />
<el-table-column prop="belongNetAssets" label="归母净资产(亿元)" :formatter="formatStatus" sortable="custom" width="160" />
<el-table-column prop="monetaryFunds" label="货币资金(亿元)" :formatter="formatStatus" sortable="custom" width="160" />
<el-table-column prop="landAssets" label="土地资产(亿元)" :formatter="formatStatus" sortable="custom" width="160" />
<el-table-column prop="restrictedAssets" label="受限资产(亿元)" :formatter="formatStatus" sortable="custom" width="160" />
<el-table-column prop="accountsReceivable" label="应收账款(亿元)" :formatter="formatStatus" sortable="custom" width="160" />
<el-table-column prop="otherReceivable" label="其他应收款(亿元)" :formatter="formatStatus" sortable="custom" width="160" />
<el-table-column prop="econData001" label="公益性&准公益性主营占比(%)" :formatter="formatStatus" width="160" />
<el-table-column prop="receivableFromGovRatio" label="应收类款项来自政府占比(%)" :formatter="formatStatus" width="160" />
<el-table-column prop="govSubsidy" label="政府补助(亿元)" :formatter="formatStatus" width="120" />
<el-table-column prop="specialPayable" label="专项应付款(亿元)" :formatter="formatStatus" width="140" />
<el-table-column prop="operatingIncome" label="营业收入(亿元)" :formatter="formatStatus" width="140" />
<el-table-column prop="belongNetProfit" label="归母净利润(亿元)" :formatter="formatStatus" width="140" />
<el-table-column prop="roe" label="净资产收益率(%)" :formatter="formatStatus" width="140" />
<el-table-column prop="netOperatingCashFlow" label="经营现金流量净额(亿元)" :formatter="formatStatus" width="160" />
<el-table-column prop="netFinancingCashFlow" label="筹资现金流量净额(亿元)" :formatter="formatStatus" width="160" />
<el-table-column prop="netInvestmentCashFlow" label="投资现金流量净额(亿元)" :formatter="formatStatus" width="160" />
<el-table-column prop="totalLiabilities" label="总负债(亿元)" :formatter="formatStatus" width="160" />
<el-table-column prop="uipInterestBearingDebt" label="有息债务(亿元)" :formatter="formatStatus" width="160" />
<el-table-column prop="econData002" label="有息债务/总负债(%)" :formatter="formatStatus" width="160" />
<el-table-column prop="tdr" label="资产负债率(%)" :formatter="formatStatus" width="160" />
<el-table-column prop="ofcb" label="综合融资成本(%)" :formatter="formatStatus" width="160" />
<el-table-column prop="cashRatio" label="现金比率" :formatter="formatStatus" width="160" />
<el-table-column prop="cashFlowRatio" label="现金流量比率" :formatter="formatStatus" width="160" />
<el-table-column prop="cashDebtRatio" label="现金到期债务比" :formatter="formatStatus" width="160" />
<el-table-column prop="creditBalance" label="授信余额(亿元)" :formatter="formatStatus" width="160" />
<el-table-column prop="econData003" label="授信余额/全部债务(%)" :formatter="formatStatus" width="160" />
<el-table-column prop="ebitdaIcr" label="EBITDA保障倍数" :formatter="formatStatus" width="160" />
<el-table-column prop="ppnBalanceProp" label="私募债余额占比(%)" :formatter="formatStatus" width="160" />
<el-table-column prop="econData004" label="一年内到期债权占比(%)" :formatter="formatStatus" width="160" />
<el-table-column prop="econData005" label="债券余额/有息债务(%)" :formatter="formatStatus" width="160" />
<el-table-column prop="loan" label="借款余额(亿元)" :formatter="formatStatus" width="160" />
<el-table-column prop="econData006" label="借款/有息债务(%)" :formatter="formatStatus" width="160" />
<el-table-column prop="nonStandardBalance" label="非标余额(亿元)" :formatter="formatStatus" width="160" />
<el-table-column prop="nonStandardRatio" label="非标余额/有息债务(%)" :formatter="formatStatus" width="160" />
<el-table-column prop="guaranteeAmount" label="对外担保金额(亿元)" :formatter="formatStatus" width="160" />
<el-table-column prop="guaranteeRatio" label="对外担保比例(%)" :formatter="formatStatus" width="160" />
<el-table-column prop="developmentZone" label="所属开发区" :formatter="formatStatus" width="160" />
<!--<el-table-column prop="bl" label="开发区类别" width="160" />-->
</el-table>
</div>
<div class="pagination-box">
......@@ -225,64 +234,38 @@
<script>
import dataRegion from '@/assets/json/dataRegion'
import { uipGroupData,urbanInvestmentPage,urbanInvestmentStatistics } from '@/api/macro/macro'
export default {
name: 'Urban',
data() {
return {
queryParams:{
key:''
keyword:'',
uipExecutiveLevel:'', //行政级别
uipBusinessType:[], //城投业务类型
bratingSubjectLevel:[], //主体评级
shareholderBg:[], //股东背景
equityRelationship:[], //股权关系
platformImportance:[], //平台重要性
address:[],
radio:'1',
},
tableData:[
{
name:'重庆市江北区国有资本投资运营管理集团有限公司',
pm:'1/306',
value:'江北区',
bl:'129.386',
state:1
},
{
name:'重庆市江北区国有资本投资运营管理集团有限公司',
pm:'1/306',
value:'江北区',
bl:'129.386',
state:0
},
],
tableData:[],
tableLoading: false,
pageIndex: 1,
pageSize: 10,
tableDataTotal: 120,
radio:'2',
xzdj:[
{
name:'省级',
key:1,
},
{
name:'地级市',
key:2,
},
{
name:'区县级',
key:3,
}
],
selected:[],
xzdjCalss:'',
typeList:['土地开发整理','基础设施建设','棚改保障房建设','公用事业','文化旅游','交通建设运营','产投平台'],
ztpj:['AAA','AA+','AA','A+','A','A-','BBB+','其他'],
gdbj:['政府','财政','国资委','其他'],
gqgx:['直接控股','间接控股'],
pt:['重要平台','主要平台','一般平台'],
lfqType:['国家级经开','国家级高新区','国家海关监管区域','国家级新区','国家边和区','其他国家级','省级新区','省级开发区'],
props: {
value: 'id',
multiple: true,
},
addressList: [],
addressType: [],
addresslength: 0,
searchState:false,
typeList:[],
statistics:{}
}
},
watch:{
......@@ -300,8 +283,89 @@ export default {
},
created() {
this.dataRegion()
this.getType()
this.querySubmit()
},
methods: {
getType(){
uipGroupData().then(res => {
console.log(res.data)
this.typeList=res.data;
})
},
// 查询提交
async querySubmit() {
this.tableLoading = true
const params = { pageNum: this.pageIndex, pageSize: this.pageSize,type:Number(this.queryParams.radio)}
const param={}
if(this.queryParams.address.length > 0){
let arr = this.$refs.address.getCheckedNodes();
let provinceCode = [],cityCode = [],countyCode = [];
for (var i in arr) {
if (arr[i].parent) {
if (!arr[i].parent.checked) {
arr[i].hasChildren && cityCode.push(arr[i].value);
!arr[i].hasChildren && countyCode.push(arr[i].value);
}
} else {
provinceCode.push(arr[i].value)
}
}
if(provinceCode.length > 0){
params.provinceIds=provinceCode
param.provinceIds=provinceCode
}
if(cityCode.length > 0){
params.cityIds=cityCode
param.cityIds=cityCode
}
if(countyCode.length > 0){
params.areaIds=countyCode
param.areaIds=countyCode
}
}
if(this.queryParams.uipExecutiveLevel){
params.uipExecutiveLevel=this.queryParams.uipExecutiveLevel;
param.uipExecutiveLevel=this.queryParams.uipExecutiveLevel;
}
if(this.queryParams.uipBusinessType.length > 0){
params.uipBusinessType=this.queryParams.uipBusinessType;
param.uipBusinessType=this.queryParams.uipBusinessType;
}
if(this.queryParams.bratingSubjectLevel.length > 0){
params.bratingSubjectLevel=this.queryParams.bratingSubjectLevel;
param.bratingSubjectLevel=this.queryParams.bratingSubjectLevel;
}
if(this.queryParams.shareholderBg.length > 0){
params.shareholderBg=this.queryParams.shareholderBg;
param.shareholderBg=this.queryParams.shareholderBg;
}
if(this.queryParams.equityRelationship.length > 0){
params.equityRelationship=this.queryParams.equityRelationship;
param.equityRelationship=this.queryParams.equityRelationship;
}
if(this.queryParams.platformImportance.length > 0){
params.platformImportance=this.queryParams.platformImportance;
param.platformImportance=this.queryParams.platformImportance;
}
if(this.queryParams.field){
params.field=this.queryParams.field
}
if(this.queryParams.order){
params.order=this.queryParams.order
}
urbanInvestmentPage(params).then(res => {
this.tableLoading = false
this.tableData = res.data.list;
this.tableDataTotal = res.data.totalCount
})
urbanInvestmentStatistics(param).then(res => {
this.statistics=res.data;
})
},
//地区
async dataRegion() {
// await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, {
......@@ -359,12 +423,12 @@ export default {
handleSizeChange(val) {
this.pageIndex = 1
this.pageSize = val
// this.querySubmit()
this.querySubmit()
},
// 跳转指定页数
handleCurrentChange(val) {
this.pageIndex = val
// this.querySubmit()
this.querySubmit()
},
handleSearch(event){
// this.searchState=!this.searchState;
......@@ -374,19 +438,10 @@ export default {
document.removeEventListener('click', this.handleSearch);
}
},
active(index, item) {
// this.selected.indexOf(item) 判断item下标是否为-1,
// 是-1则数组中匹配不到该数据,添加
// 不是-1则说明匹配到了,抹除
if (this.selected.indexOf(item) !== -1) {
this.selected.splice(this.selected.indexOf(item), 1); //取消
} else {
this.selected.push(item);//选中添加到数组里
}
console.log(JSON.parse(JSON.stringify(this.selected)));
},
changeXZDJ(index) {
changeXZDJ(index,name) {
this.xzdjCalss = index;
this.queryParams.uipExecutiveLevel=name;
this.querySubmit()
},
addressListbtn() {
let arr = this.$refs.address.getCheckedNodes();
......@@ -406,6 +461,63 @@ export default {
} else {
this.addresslength = 0;
}
this.querySubmit()
},
changeType(item,index){
switch (index) {
case 1:
if (this.queryParams.uipBusinessType.indexOf(item) !== -1) {
this.queryParams.uipBusinessType.splice(this.queryParams.uipBusinessType.indexOf(item), 1);
} else {
this.queryParams.uipBusinessType.push(item);
}
break;
case 2:
if (this.queryParams.bratingSubjectLevel.indexOf(item) !== -1) {
this.queryParams.bratingSubjectLevel.splice(this.queryParams.bratingSubjectLevel.indexOf(item), 1);
} else {
this.queryParams.bratingSubjectLevel.push(item);
}
break;
case 3:
if (this.queryParams.shareholderBg.indexOf(item) !== -1) {
this.queryParams.shareholderBg.splice(this.queryParams.shareholderBg.indexOf(item), 1);
} else {
this.queryParams.shareholderBg.push(item);
}
break;
case 4:
if (this.queryParams.equityRelationship.indexOf(item) !== -1) {
this.queryParams.equityRelationship.splice(this.queryParams.equityRelationship.indexOf(item), 1);
} else {
this.queryParams.equityRelationship.push(item);
}
break;
case 5:
if (this.queryParams.platformImportance.indexOf(item) !== -1) {
this.queryParams.platformImportance.splice(this.queryParams.platformImportance.indexOf(item), 1);
} else {
this.queryParams.platformImportance.push(item);
}
break;
}
this.querySubmit()
},
formatStatus: function(row, column, cellValue) {
return cellValue? cellValue : '-'
},
sortChange({ column, prop, order }){
this.queryParams.field = prop
if(column.order === "ascending"){
this.queryParams.order = 'asc'
}else if(column.order === "descending"){
this.queryParams.order = 'desc'
}else {
this.queryParams.order=''
this.queryParams.field=''
}
this.pageIndex = 1;
this.querySubmit()
},
},
}
......@@ -434,21 +546,22 @@ export default {
box-shadow: 0px 4px 10px 0px rgba(0,0,0,0.1);
border-radius: 4px;
width: 880px;
height: 337px;
/*height: 337px;*/
padding: 16px;
position: absolute;
top: 25px;
left: 0;
z-index: 99;
z-index: 9999;
.item{
margin-bottom: 5px;
display: flex;
/*display: flex;*/
/*align-items: center;*/
font-size: 14px;
.wrap_label{
color: rgba(35,35,35,0.8);
margin-right: 12px;
line-height: 30px;
float: left;
}
.item_ckquery{
position: relative;
......@@ -457,6 +570,7 @@ export default {
padding: 5px 12px;
display: inline-block;
cursor: pointer;
margin-right: 8px;
}
.color_text{
background: #F3F4F5;
......@@ -511,13 +625,19 @@ export default {
.table-item{
margin-top: 22px;
}
.companyName{
width: 200px;
display: inline-block;
margin: 0;
}
.table-span{
float: right;
img{
width: 16px;
height: 16px;
margin-bottom: -4px;
margin-right: 5px;
margin-left: 20px;
/*margin-left: 20px;*/
}
}
.list-box{
......
......@@ -61,6 +61,6 @@ public class BusinessAddDto {
private String customerId;
public Double getInvestmentAmount() {
return StringUtils.isEmpty(investmentAmount) ? 0 :Double.parseDouble(investmentAmount);
return StringUtils.isEmpty(investmentAmount) ? null :Double.parseDouble(investmentAmount);
}
}
......@@ -66,18 +66,18 @@ public class EnterpriseProjectService {
}
public TableDataInfo specialDebtProjectPage(Object body) throws Exception {
public TableDataInfo specialDebtProjectPage(EnterpriseProjectSpecialDebtProjectPageBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseProject/specialDebtProjectPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map);
}
public R specialDebtProjectDetail(Object body) throws Exception {
public R specialDebtProjectDetail(EnterpriseProjectSpecialDebtProjectDetailBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseProject/specialDebtProjectDetail", BeanUtil.beanToMap(body, false, false));
return BeanUtil.toBean(map, R.class);
}
public TableDataInfo specialDebtPage(Object body) throws Exception {
public TableDataInfo specialDebtPage(EnterpriseProjectSpecialDebtPageBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseProject/specialDebtPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map);
}
......
......@@ -132,7 +132,7 @@ public class EnterpriseService {
return dskOpenApiUtil.responsePage(map);
}
public TableDataInfo bestStockPage(EnterpriseKeymembersBody body) throws Exception {
public TableDataInfo bestStockPage(EnterpriseBestStockPageBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/bestStockPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map);
}
......
......@@ -126,7 +126,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
Integer errorCount = 0;//失败条数
List<String> result = new LinkedList();//导入结果汇总
List<BusinessExcelDto> businessInfoList = readBusinessInfoExcel.getExcelInfo(file);
if(CollectionUtil.isEmpty(businessInfoList))return AjaxResult.error("文档中无项目信息!");
if(CollectionUtil.isEmpty(businessInfoList))return AjaxResult.error("文档中无项目信息,请按照模板文档格式上传");
for (BusinessExcelDto businessInfo : businessInfoList) {
//查询已有的项目名称
Integer count = businessInfoMapper.isRepetitionProjectName(businessInfo.getProjectName(), userId.intValue());
......@@ -147,7 +147,9 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
}
result.add("导入项目成功条数" + rowSuccess);
result.add("导入项目失败条数" + errorCount);
return errorCount == businessInfoList.size() ? AjaxResult.error(String.join(",", result)) : AjaxResult.success(String.join(",", result));
AjaxResult success = AjaxResult.success(String.join(",", result));
success.put("successCount",rowSuccess);
return success;
}
/**
......
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