Commit b381b73c authored by MyName's avatar MyName
parents 4b44aaa3 dfef0304
...@@ -83,7 +83,7 @@ public class CustomerController extends BaseController { ...@@ -83,7 +83,7 @@ public class CustomerController extends BaseController {
return AjaxResult.success(baseService.add(customer)); 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.getCompanyName())) throw new BeanException("企业名称不能为空");
if (ObjectUtils.isEmpty(customer.getCompanyId())) { if (ObjectUtils.isEmpty(customer.getCompanyId())) {
try { try {
...@@ -131,6 +131,7 @@ public class CustomerController extends BaseController { ...@@ -131,6 +131,7 @@ public class CustomerController extends BaseController {
public AjaxResult importData(@RequestPart("file") MultipartFile file) throws Exception { public AjaxResult importData(@RequestPart("file") MultipartFile file) throws Exception {
List<Customer> customerList = new ExcelUtil<>(Customer.class).importExcel(file.getInputStream(), 2); List<Customer> customerList = new ExcelUtil<>(Customer.class).importExcel(file.getInputStream(), 2);
List<String> resultList = new ArrayList<>(); List<String> resultList = new ArrayList<>();
int successCount = 0;
for (Customer customer : customerList) { for (Customer customer : customerList) {
if (ObjectUtils.isEmpty(customer.getCompanyName())) { if (ObjectUtils.isEmpty(customer.getCompanyName())) {
continue; continue;
...@@ -152,10 +153,13 @@ public class CustomerController extends BaseController { ...@@ -152,10 +153,13 @@ public class CustomerController extends BaseController {
customer.setCreditCode(MapUtil.getStr(obj, "creditCode")); customer.setCreditCode(MapUtil.getStr(obj, "creditCode"));
} }
baseService.add(customer); baseService.add(customer);
successCount++;
} catch (Exception e) { } catch (Exception e) {
resultList.add(customer.getCompanyName().concat(":").concat(e.getMessage())); 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 { ...@@ -95,7 +95,7 @@ public class EnterpriseController {
@ApiOperation(value = "工商股东信息(openApi)") @ApiOperation(value = "工商股东信息(openApi)")
@PostMapping(value = "bestStockPage") @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); return enterpriseService.bestStockPage(vo);
} }
......
...@@ -73,19 +73,19 @@ public class EnterpriseProjectController { ...@@ -73,19 +73,19 @@ public class EnterpriseProjectController {
@ApiOperation(value = "专项债项目列表") @ApiOperation(value = "专项债项目列表")
@RequestMapping(value = "/specialDebtProjectPage", method = RequestMethod.POST) @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); return enterpriseProjectService.specialDebtProjectPage(body);
} }
@ApiOperation(value = "专项债项目详情") @ApiOperation(value = "专项债项目详情")
@RequestMapping(value = "/specialDebtProjectDetail", method = RequestMethod.POST) @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); return enterpriseProjectService.specialDebtProjectDetail(body);
} }
@ApiOperation(value = "专项债列表") @ApiOperation(value = "专项债列表")
@RequestMapping(value = "/specialDebtPage", method = RequestMethod.POST) @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); return enterpriseProjectService.specialDebtPage(body);
} }
......
...@@ -20,14 +20,14 @@ ...@@ -20,14 +20,14 @@
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/operate-sys-info.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/operate-sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 --> <!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory> <maxHistory>10</maxHistory>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>${log.pattern}</pattern> <pattern>${log.pattern}</pattern>
</encoder> </encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>INFO</level> <level>DEBUG</level>
<!-- 匹配时的操作:接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/operate-sys-error.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/operate-sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 --> <!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory> <maxHistory>10</maxHistory>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>${log.pattern}</pattern> <pattern>${log.pattern}</pattern>
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
<!-- 按天回滚 daily --> <!-- 按天回滚 daily -->
<fileNamePattern>${log.path}/operate-sys-user.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/operate-sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 --> <!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory> <maxHistory>10</maxHistory>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>${log.pattern}</pattern> <pattern>${log.pattern}</pattern>
......
...@@ -17,6 +17,8 @@ public class EnterpriseAffiliatesBody extends BasePage { ...@@ -17,6 +17,8 @@ public class EnterpriseAffiliatesBody extends BasePage {
//企业Id //企业Id
@NotNull(message = "企业id不能为空") @NotNull(message = "企业id不能为空")
private Integer cid; private Integer cid;
private Integer hasBid;
} }
...@@ -17,6 +17,9 @@ public class EnterpriseInvestmentBody extends BasePage { ...@@ -17,6 +17,9 @@ public class EnterpriseInvestmentBody extends BasePage {
//企业Id //企业Id
@NotNull(message = "企业id不能为空") @NotNull(message = "企业id不能为空")
private Integer cid; 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"; ...@@ -3,7 +3,16 @@ import request from "@/utils/request";
// 企业数据统计 // 企业数据统计
export function statistic(data) { export function statistic(data) {
return request({ return request({
url: '/enterprise/statistic', url: '/enterprise/statistic(建设库)',
method: 'post',
data: data
})
}
// 企业主体信用评级
export function bondCreditRating(data) {
return request({
url: '/enterprise/bondCreditRating',
method: 'post', method: 'post',
data: data data: data
}) })
...@@ -36,33 +45,6 @@ export function projectTenderDataGroup(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) { export function bidNoticePage(data) {
return request({ return request({
...@@ -99,7 +81,7 @@ export function changeInfo(data) { ...@@ -99,7 +81,7 @@ export function changeInfo(data) {
}) })
} }
// 工商股东信息列表 // 关系企业-股东信息、工商股东信息列表
export function bestStockPage(data) { export function bestStockPage(data) {
return request({ return request({
url: '/enterprise/bestStockPage', url: '/enterprise/bestStockPage',
...@@ -108,7 +90,7 @@ export function bestStockPage(data) { ...@@ -108,7 +90,7 @@ export function bestStockPage(data) {
}) })
} }
// 工商高管信息 // 关系企业-高管信息、工商高管信息
export function keymembers(data) { export function keymembers(data) {
return request({ return request({
url: '/enterprise/keymembers', url: '/enterprise/keymembers',
...@@ -117,7 +99,7 @@ export function keymembers(data) { ...@@ -117,7 +99,7 @@ export function keymembers(data) {
}) })
} }
// 工商对外投资 // 关系企业-对外投资、工商对外投资
export function investment(data) { export function investment(data) {
return request({ return request({
url: '/enterprise/investment', url: '/enterprise/investment',
......
...@@ -42,6 +42,15 @@ let uipSerach= function uipSerach(param) { ...@@ -42,6 +42,15 @@ let uipSerach= function uipSerach(param) {
data: 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} export default {aptitudeCode,personCert,searchDic,regionWebList,uipGroupData,uipSerach,claim}
\ No newline at end of file \ No newline at end of file
...@@ -174,6 +174,31 @@ export function enterprise(param) { ...@@ -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 @@ ...@@ -3,12 +3,13 @@
<el-input <el-input
placeholder="搜索" placeholder="搜索"
class="side-input" 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> <i slot="prefix" class="el-input__icon el-icon-search" @click="handleSearch"></i>
</el-input> </el-input>
<el-menu <el-menu
ref="sideMenu"
:default-active="routeIndex" :default-active="routeIndex"
:unique-opened="true"
class="detail-menu" class="detail-menu"
@open="handleOpen"> @open="handleOpen">
<template v-for="(item, index) in sideRoute"> <template v-for="(item, index) in sideRoute">
...@@ -104,29 +105,16 @@ export default { ...@@ -104,29 +105,16 @@ export default {
}, },
computed: { computed: {
sideHeight() { sideHeight() {
let sideHeight = document.getElementById("detailPart")?document.getElementById("detailPart").offsetHeight:null let sideHeight = document.getElementById("detailPart")?document.getElementById("detailPart").offsetHeight:null, bowerHeight = document.body.clientHeight-170 || null
if(sideHeight<this.partBoxHeight) { if(this.partBoxHeight<bowerHeight) {
sideHeight = bowerHeight
}else{
sideHeight = this.partBoxHeight sideHeight = this.partBoxHeight
}else {
sideHeight = null
} }
return sideHeight return sideHeight
}, },
routeIndex(){ routeIndex(){
let idx = '0-0', sideArr = this.sideRoute let idx = this.getRouteIdx('', this.pathName) || '0-0'
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
}
}
}
}
return idx return idx
} }
}, },
...@@ -140,7 +128,30 @@ export default { ...@@ -140,7 +128,30 @@ export default {
this.$emit("currentPath", item) this.$emit("currentPath", item)
}, },
handleSearch(){ 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){ isCustomerId(name){
if(this.customer.indexOf(name) != -1){ if(this.customer.indexOf(name) != -1){
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
content="历史招标总数"> content="历史招标总数">
<img src="@/assets/images/detail/overview/zbph_question.png" slot="reference"> <img src="@/assets/images/detail/overview/zbph_question.png" slot="reference">
</el-popover> </el-popover>
<span class="zbph-item-num">356</span></div> <span class="zbph-item-num">{{dataAll.bidAmount || '--'}}</span></div>
<div>近一年招标总数 <div>近一年招标总数
<el-popover <el-popover
placement="top-start" placement="top-start"
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
content="近一年招标总数"> content="近一年招标总数">
<img src="@/assets/images/detail/overview/zbph_question.png" slot="reference"> <img src="@/assets/images/detail/overview/zbph_question.png" slot="reference">
</el-popover> </el-popover>
<span class="zbph-item-num">356</span></div> <span class="zbph-item-num">{{dataAll.lastYearCount || '--'}}</span></div>
<div>历史招标总额 <div>历史招标总额
<el-popover <el-popover
placement="top-start" placement="top-start"
...@@ -26,13 +26,13 @@ ...@@ -26,13 +26,13 @@
content="历史招标总额"> content="历史招标总额">
<img src="@/assets/images/detail/overview/zbph_question.png" slot="reference"> <img src="@/assets/images/detail/overview/zbph_question.png" slot="reference">
</el-popover> </el-popover>
<span class="zbph-item-num">356</span></div> <span class="zbph-item-num">{{dataAll.bidAmount || '--'}}</span></div>
</div> </div>
<div class="zbph-account">招标动态 <div class="zbph-account">招标动态
<div class="labels"> <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==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> </div>
<div id="myEcharts" style="width: 100%;height:250px; margin: 0 auto;"></div> <div id="myEcharts" style="width: 100%;height:250px; margin: 0 auto;"></div>
...@@ -43,7 +43,6 @@ ...@@ -43,7 +43,6 @@
<el-table <el-table
:data="tableData" :data="tableData"
style="width: 100%" style="width: 100%"
:default-sort = "{prop: 'date', order: 'descending'}"
> >
<el-table-column <el-table-column
prop="ico" prop="ico"
...@@ -54,14 +53,14 @@ ...@@ -54,14 +53,14 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="name" prop="companyName"
label="公司名称"> label="公司名称">
<template slot-scope="scope"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="number" prop="count"
width="160" width="160"
label="合作次数"> label="合作次数">
</el-table-column> </el-table-column>
...@@ -77,32 +76,47 @@ ...@@ -77,32 +76,47 @@
</template> </template>
<script> <script>
import {bidDataGroup, supplierPage} from '@/api/detail/party-a/overview'
import * as echarts from 'echarts' import * as echarts from 'echarts'
export default { export default {
name: 'Bidding', name: 'Bidding',
props: ['companyId'],
data() { data() {
return { return {
datatype:'1',//切换类型 datatype:'3',//切换类型
dataAll: {},
dtdata:[],//数据 dtdata:[],//数据
dttime:[],//坐标 dttime:[],//坐标
//表格数据 //表格数据
tableData:[ 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")},
]
} }
}, },
created() { created() {
this.handleBid()
this.handleSupplier()
}, },
mounted() { mounted() {
this.$nextTick(()=>{ this.$nextTick(()=>{
this.getDT(1) this.getDT(3)
}) })
}, },
methods: { 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){ initDT(datas,labels){
let myChart = echarts.init(document.getElementById("myEcharts")) let myChart = echarts.init(document.getElementById("myEcharts"))
let option = { let option = {
...@@ -174,7 +188,7 @@ export default { ...@@ -174,7 +188,7 @@ export default {
let datas = [] let datas = []
let labels = [] let labels = []
switch (type) { switch (type) {
case 1: case 3:
time = time.getDay() time = time.getDay()
// week.length = time // week.length = time
weekdata.length = time weekdata.length = time
...@@ -190,7 +204,7 @@ export default { ...@@ -190,7 +204,7 @@ export default {
let days = new Date(time.getFullYear(),time.getMonth()+1,0).getDate()//获取到本月天数 let days = new Date(time.getFullYear(),time.getMonth()+1,0).getDate()//获取到本月天数
time = time.getDate() time = time.getDate()
monthdata.length = time monthdata.length = time
for(var i=1;i<days;i++){ for(var i=1;i<=days;i++){
labels.push(i+'日') labels.push(i+'日')
if(i > time){ if(i > time){
monthdata.push("") monthdata.push("")
...@@ -198,10 +212,10 @@ export default { ...@@ -198,10 +212,10 @@ export default {
} }
datas = monthdata datas = monthdata
break; break;
case 3: case 1:
time = time.getMonth()+1 time = time.getMonth()+1
yeardata.length = time yeardata.length = time
for(var i=1;i<12;i++){ for(var i=1;i<=12;i++){
labels.push(i+'月') labels.push(i+'月')
if(i>time){ if(i>time){
yeardata.push('') yeardata.push('')
......
<template> <template>
<div class="app-container clue-container"> <div class="app-container clue-container">
<div class="common-title">商机线索</div> <div class="common-title">商机线索</div>
<el-tabs v-model="activeName" @tab-click="handleClick" class="tabpane selfTab"> <el-tabs v-model="activeIndex" @tab-click="handleQuery" class="tabpane selfTab">
<el-tab-pane label="按金额" name="first"></el-tab-pane> <el-tab-pane label="按金额" name="0"></el-tab-pane>
<el-tab-pane label="按项目" name="second"></el-tab-pane> <el-tab-pane label="按项目" name="1"></el-tab-pane>
</el-tabs> </el-tabs>
<div class="flex-box clue-box"> <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="clue-echarts"><div id="echartsClue" style="width: 100%;height:300px; margin: 0 auto;"></div></div>
<div class="table-item"> <div class="table-item">
<el-table <el-table
:data="activeName=='first'?viewData:projectData" :data="viewData"
border border
style="width: 100%" style="width: 100%"
:default-sort = "{prop: 'date', order: 'descending'}" :default-sort = "{prop: 'date', order: 'descending'}"
...@@ -20,107 +20,60 @@ ...@@ -20,107 +20,60 @@
<el-table-column <el-table-column
prop="value" prop="value"
label="数量"> label="数量">
<template slot-scope="scope">
<div style="text-align: right">{{ scope.row.value }}</div>
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="percent" prop="percent"
label="占比"> label="占比">
<template slot-scope="scope">
<div style="text-align: right">{{ scope.row.percent }}</div>
</template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
<div class="flex-box clue-type"> <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>
</div> </div>
</template> </template>
<script> <script>
import {projectTenderDataGroup} from '@/api/detail/party-a/overview'
import * as echarts from 'echarts' import * as echarts from 'echarts'
import {changePath} from "@/assets/js/common"
export default { export default {
name: 'Busclue', name: 'Busclue',
props: ['companyId', 'statistic'],
data() { data() {
return { return {
viewData:[ viewData:[],
{ activeIndex:0,
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,
typeList:[ 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: '土地交易', 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: '拟建项目', ico: require("@/assets/images/detail/overview/clue_ico2.png"), disabled: false, dis_ico: require("@/assets/images/detail/overview/clue_dis_ico2.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: '专项债项目', ico: require("@//assets/images/detail/overview/clue_ico3.png"), disabled: true, dis_ico: require("@/assets/images/detail/overview/clue_dis_ico3.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: '招标计划', ico: require("@/assets/images/detail/overview/clue_ico4.png"), disabled: false, dis_ico: require("@/assets/images/detail/overview/clue_dis_ico4.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: '招标公告', ico: require("@/assets/images/detail/overview/clue_ico5.png"), disabled: true, dis_ico: require("@/assets/images/detail/overview/clue_dis_ico5.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', ico: require("@/assets/images/detail/overview/clue_ico6.png"), disabled: false, dis_ico: require("@/assets/images/detail/overview/clue_dis_ico6.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: '行政许可', ico: require("@/assets/images/detail/overview/clue_ico7.png"), disabled: false, dis_ico: require("@/assets/images/detail/overview/clue_dis_ico7.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() { created() {
this.handleStatistic()
this.handleQuery()
}, },
mounted() { mounted() {
this.$nextTick(()=>{
this.getDT()
})
}, },
methods: { 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){ getDT(val){
let myChart = echarts.init(document.getElementById("echartsClue")), data = val ? val : this.viewData let myChart = echarts.init(document.getElementById("echartsClue")), data = val ? val : this.viewData
let option = { let option = {
...@@ -157,16 +110,14 @@ export default { ...@@ -157,16 +110,14 @@ export default {
} }
myChart.setOption(option) myChart.setOption(option)
}, },
handleClick(){ handleStatistic() {
if(this.activeName=='first'){ this.typeList.forEach((item, index) => {
this.getDT(this.viewData) item.count = this.statistic[item.category]?this.statistic[item.category][item.field]:0
}else{ })
this.getDT(this.projectData)
}
}, },
handleType(it, idx){ handleType(it, idx){
if(!it.disabled){ if(it.count){
this.typeName = idx changePath(this, it.pathName)
} }
} }
} }
...@@ -217,10 +168,10 @@ export default { ...@@ -217,10 +168,10 @@ export default {
.clue-type-item{ .clue-type-item{
color: #232323; color: #232323;
cursor: pointer; cursor: pointer;
&.on{ &:hover{
color: #0081FF; color: #0081FF;
} }
&.disable{ &.disab{
color: rgba(35,35,35,0.4); color: rgba(35,35,35,0.4);
} }
img{ img{
......
...@@ -125,13 +125,12 @@ ...@@ -125,13 +125,12 @@
</template> </template>
<script> <script>
import { statistic } from '@/api/detail/party-a/overview'
import { changePath } from '@/assets/js/common' import { changePath } from '@/assets/js/common'
var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js') var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js')
import "@/assets/lib/swiper/swiper-bundle.css" import "@/assets/lib/swiper/swiper-bundle.css"
export default { export default {
name: 'Infoheader', name: 'Infoheader',
props: ['companyId', 'companyInfo'], props: ['companyId', 'companyInfo', 'statistic'],
data() { data() {
return { return {
labelList: [], //企业标签 labelList: [], //企业标签
...@@ -139,7 +138,6 @@ export default { ...@@ -139,7 +138,6 @@ export default {
ifClaim: false, //是否认领 ifClaim: false, //是否认领
showMore: false, showMore: false,
showState: false, showState: false,
statistic: {},
graphList: [ 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: 1, name:'业务往来', intro:[{id: 101, name:'客户', val:0, category:'global', field:'customer'},{id: 102, name:'供应商', val:0, category:'global', field:'supplier'}], ico:require('@/assets/images/detail/overview/company_ywwl.png')},
{id: 2, name:'商机线索', intro:[{id: 201, name:'专项债项目', val:0, category:'xxx', field:'yy'},{id: 202, name:'招标计划', val:0, category:'xxx', field:'zz'}], ico:require('@/assets/images/detail/overview/company_sjxs.png')}, {id: 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 { ...@@ -155,8 +153,8 @@ export default {
} }
}, },
created() { created() {
this.handleStatistic()
this.getCompanyInfo() //处理曾用名 this.getCompanyInfo() //处理曾用名
this.handleStatistic() //企业背景是否收起
}, },
mounted() { mounted() {
this.getClaimStatus() //获取企业认领状态 this.getClaimStatus() //获取企业认领状态
...@@ -192,23 +190,16 @@ export default { ...@@ -192,23 +190,16 @@ export default {
this.companyInfo.historyNames = JSON.parse(this.companyInfo.historyNames) this.companyInfo.historyNames = JSON.parse(this.companyInfo.historyNames)
} }
}, },
async handleStatistic() { handleStatistic() {
let res = await statistic({companyId:this.companyId}) this.graphList.forEach((item, index) => {
if(res.code==200){ if(item.intro){
this.statistic = res.data item.intro.forEach((it, idx) => {
this.graphList.forEach((item, index) => { if(it.category || it.field){
if(item.intro){ it.val = this.statistic[it.category]?this.statistic[it.category][it.field]:0
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
}, },
//获取认领状态 //获取认领状态
async getClaimStatus(){ async getClaimStatus(){
......
...@@ -6,10 +6,10 @@ ...@@ -6,10 +6,10 @@
<ul class="swiper-wrapper"> <ul class="swiper-wrapper">
<li class="swiper-slide" v-for="(item, index) in operList" :key="index"> <li class="swiper-slide" v-for="(item, index) in operList" :key="index">
<div class="swiper-div"> <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"> <div class="flex-box text-cl1 operations-info">
{{item.name}} {{item.bondType}}
<span><img src="@/assets/images/detail/overview/oper_source.png">{{item.name}}</span> <span><img src="@/assets/images/detail/overview/oper_source.png">{{item.creditRatingAgency}}</span>
</div> </div>
</div> </div>
</li> </li>
...@@ -21,35 +21,34 @@ ...@@ -21,35 +21,34 @@
<div class="flex-box operations-list"> <div class="flex-box operations-list">
<div class="list-item" v-for="(item, index) in gsjyList" :key="index"> <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="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> </div>
</div> </div>
</template> </template>
<script> <script>
import {bondCreditRating} from '@/api/detail/party-a/overview'
var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js') var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js')
import "@/assets/lib/swiper/swiper-bundle.css" import "@/assets/lib/swiper/swiper-bundle.css"
export default { export default {
name: 'Overview', name: 'Overview',
props: ['companyId', 'financial'],
data() { data() {
return { return {
operList: [ 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'}
],
gsjyList: [ gsjyList: [
{ name: '总资产', ico: require('@/assets/images/detail/overview/gsjy_ico1.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: '1699.7'}, { name: '净资产', ico: require('@/assets/images/detail/overview/gsjy_ico2.png'), amount: ''},
{ name: '授信余额', ico: require('@/assets/images/detail/overview/gsjy_ico3.png'), amount: '1699.7'}, { name: '授信余额', ico: require('@/assets/images/detail/overview/gsjy_ico3.png'), amount: ''},
{ name: '营业收入', ico: require('@/assets/images/detail/overview/gsjy_ico4.png'), amount: '1699.7'}, { name: '营业收入', ico: require('@/assets/images/detail/overview/gsjy_ico4.png'), amount: ''},
{ name: '总负债', ico: require('@/assets/images/detail/overview/gsjy_ico5.png'), amount: '1699.7'} { name: '总负债', ico: require('@/assets/images/detail/overview/gsjy_ico5.png'), amount: ''}
], ],
} }
}, },
created() { created() {
this.handleQuery()
this.handleFinancial()
}, },
mounted() { mounted() {
this.companySwiper() this.companySwiper()
...@@ -64,6 +63,21 @@ export default { ...@@ -64,6 +63,21 @@ export default {
prevEl: '.swiper-oper-prev', 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> <template>
<div class="app-container rela-container"> <div class="app-container rela-container">
<div class="common-title">关系企业</div> <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="first"></el-tab-pane>
<el-tab-pane label="对外投资" name="second"></el-tab-pane> <el-tab-pane label="对外投资" name="second"></el-tab-pane>
</el-tabs> </el-tabs>
<div class="table-item"> <div class="table-item">
<div class="rela-person" v-if="activeName=='first'">实际控制人:<router-link to="" tag="a" class="a-link">重庆市国有资产监督管理委员会</router-link></div> <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%" :default-sort = "{prop: 'date', order: 'descending'}" v-if="activeName=='first'"> <el-table :data="holderData" border style="width: 100%" v-if="activeName=='first'">
<el-table-column label="序号" width="55" align="left" fixed> <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>
<el-table-column prop="name" min-width="140" label="股东名称"></el-table-column> <el-table-column prop="stockName" min-width="140" label="股东名称"></el-table-column>
<el-table-column prop="cgsl" label="持股数量(亿)"></el-table-column> <el-table-column prop="xxx" label="持股数量(亿)"></el-table-column>
<el-table-column prop="cgbl" label="持股比例"></el-table-column> <el-table-column prop="xxx" label="持股比例"></el-table-column>
<el-table-column prop="fddbr" label="法定代表人"></el-table-column> <el-table-column prop="xxx" label="法定代表人"></el-table-column>
<el-table-column prop="clrq" label="成立日期"></el-table-column> <el-table-column prop="xxx" label="成立日期"></el-table-column>
</el-table> </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> <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>
<el-table-column prop="name" min-width="140" label="被投资企业名称"> <el-table-column prop="investName" min-width="140" label="被投资企业名称">
<template slot-scope="scope"> <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" v-if="scope.row.id&&scope.row.investName" v-html="scope.row.investName"></router-link>
<div class="tags" v-if="scope.row.nAjlx"> <div v-else v-html="scope.row.investName || '--'"></div>
<span class="tag style1">{{scope.row.nAjlx}}</span> <div class="tags" v-if="scope.row.businessStatus || scope.row.biddingAnnouncement">
<span class="tag style1">{{scope.row.nAjlx}}</span> <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> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="fddbr" label="法定代表人"></el-table-column> <el-table-column prop="investOperName" label="法定代表人"></el-table-column>
<el-table-column prop="zczb" label="注册资本(万元)"> <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"> <template slot-scope="scope">
<div style="text-align: right">{{ scope.row.zczb }}</div> <span>{{scope.row.stockPercentage?parseFloat(Number(scope.row.stockPercentage*100).toFixed(4))+'%':'--'}}</span>
</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>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="shouldCapi" label="认缴出资额(万元)"></el-table-column>
</el-table> </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>
</div> </div>
</template> </template>
<script> <script>
import {bestStockPage, investment} from '@/api/detail/party-a/overview'
export default { export default {
name: 'Relationship', name: 'Relationship',
props: ['companyId', 'financial'],
data() { data() {
return { return {
activeName:'first', activeName:'first',
//表格数据 //表格数据
holderData:[ holderData:[],
{name: '重庆城市交通开发投资 (集团)有限公司', cgsl: '60.00', cgbl: '100%', fddbr: '李方宇', clrq: '1994-11-09'}, holderParams: {
{name: '重庆城市交通开发投资 (集团)有限公司', cgsl: '60.00', cgbl: '100%', fddbr: '李方宇', clrq: '1994-11-09'} cid: this.companyId,
], isHistory: 0,
shipData:[ pageNum: 1,
{name: '深圳市地铁集团有限建设总部', nAjlx: '招标', fddbr: '雷江松', zczb: '15100', clrq: '1920-02-21', gqzb: '35%', rjcze: '2133'}, pageSize: 20
{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'}, shipData:[],
{name: '深圳市地铁集团有限建设总部', nAjlx: '招标', fddbr: '雷江松', zczb: '15100', clrq: '1920-02-21', gqzb: '35%', rjcze: '2133'}, shipParams: {
{name: '深圳市地铁集团有限建设总部', nAjlx: '招标', fddbr: '雷江松', zczb: '15100', clrq: '1920-02-21', gqzb: '35%', rjcze: '2133'} cid: this.companyId,
], pageNum: 1,
pageIndex: 1, pageSize: 10
pageSize: 10 },
shipTotal: 0
} }
}, },
created() { created() {
this.handleQuery()
}, },
mounted() { mounted() {
}, },
methods: { 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 @@ ...@@ -8,7 +8,6 @@
:data="viewData" :data="viewData"
border border
style="width: 100%" style="width: 100%"
:default-sort = "{prop: 'date', order: 'descending'}"
> >
<el-table-column <el-table-column
prop="name" prop="name"
...@@ -17,14 +16,14 @@ ...@@ -17,14 +16,14 @@
prop="value" prop="value"
label="数量"> label="数量">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="text-align: right">{{ scope.row.value }}</div> <span>{{ scope.row.value }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="bl" prop="bl"
label="占比"> label="占比">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="text-align: right">{{ scope.row.bl }}</div> <span>{{ scope.row.bl }}</span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -37,61 +36,79 @@ ...@@ -37,61 +36,79 @@
import * as echarts from 'echarts' import * as echarts from 'echarts'
export default { export default {
name: 'Risk', name: 'Risk',
props: ['statistic'],
data() { data() {
return { return {
viewData:[ viewData:[
{ {
name:'开庭公告', name:'开庭公告',
value:'2', value:'',
tz:'50.01', category:'credit',
bl:'0.19%' field:'openAnnouncement',
tz:'',
bl:''
}, },
{ {
name:'企业公告', name:'企业公告',
value:'2', value:'',
tz:'50.01', category:'xxx',
bl:'0.19%' field:'yy',
tz:'',
bl:''
}, },
{ {
name:'送达公告', name:'送达公告',
value:'2', value:'',
tz:'50.01', category:'xxx',
bl:'0.19%' field:'yy',
tz:'',
bl:''
}, },
{ {
name:'对外投资变更', name:'对外投资变更',
value:'7', value:'',
tz:'50.01', category:'basic',
bl:'0.19%' field:'outboundInvestment',
tz:'',
bl:''
}, },
{ {
name:'法院公告', name:'法院公告',
value:'2', value:'',
tz:'50.01', category:'credit',
bl:'0.19%' field:'courtAnnouncement',
tz:'',
bl:''
}, },
{ {
name:'立案信息', name:'立案信息',
value:'3', value:'',
tz:'50.01', category:'xxx',
bl:'0.19%' field:'zz',
tz:'',
bl:''
}, },
{ {
name:'被执行人', name:'被执行人',
value:'5', value:'',
tz:'50.01', category:'credit',
bl:'0.19%' field:'dishonestExecutee',
tz:'',
bl:''
}, },
{ {
name:'行政处罚', name:'行政处罚',
value:'11', value:'',
tz:'50.01', category:'credit',
bl:'0.19%' field:'adminSanction',
tz:'',
bl:''
}, },
] ]
} }
}, },
created() { created() {
this.handView()
}, },
mounted() { mounted() {
this.$nextTick(()=>{ this.$nextTick(()=>{
...@@ -99,6 +116,17 @@ export default { ...@@ -99,6 +116,17 @@ export default {
}) })
}, },
methods: { 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(){ getDT(){
let myChart = echarts.init(document.getElementById("echartsRisk")) let myChart = echarts.init(document.getElementById("echartsRisk"))
let option = { let option = {
...@@ -110,7 +138,9 @@ export default { ...@@ -110,7 +138,9 @@ export default {
var result = '' var result = ''
result+='<h3 style="color: #232226;padding: 0 0 5px 0;margin: 0;">'+ params.data.name +'</h3>' 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.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>' result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;">'+ params.data.bl +'%</p>'
return result; return result;
}, },
......
...@@ -9,13 +9,13 @@ ...@@ -9,13 +9,13 @@
:default-sort = "{prop: 'date', order: 'descending'}" :default-sort = "{prop: 'date', order: 'descending'}"
> >
<el-table-column label="序号" width="55" align="left" fixed> <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>
<el-table-column <el-table-column
prop="name" prop="name"
label="姓名"></el-table-column> label="姓名"></el-table-column>
<el-table-column <el-table-column
prop="zw" prop="jobTitle"
label="职务"></el-table-column> label="职务"></el-table-column>
</el-table> </el-table>
</div> </div>
...@@ -23,23 +23,34 @@ ...@@ -23,23 +23,34 @@
</template> </template>
<script> <script>
import {keymembers} from "@/api/detail/party-a/overview"
export default { export default {
name: 'Senior', name: 'Senior',
props: ['companyId'],
data() { data() {
return { return {
queryParams: {
cid: this.companyId,
pageNum: 1,
pageSize: 20
},
//表格数据 //表格数据
tableData:[ tableData:[]
{name: '重庆城市交通开发投资 (集团)有限公司', zw: '董事'}
],
pageIndex: 1,
pageSize: 10
} }
}, },
created() { created() {
this.handleQuery()
}, },
mounted() { mounted() {
}, },
methods: { methods: {
async handleQuery(){
let res = await keymembers(this.queryParams)
if(res.code==200){
this.tableData = res.rows
}
}
} }
} }
</script> </script>
......
...@@ -3,33 +3,41 @@ ...@@ -3,33 +3,41 @@
<div class="tender-list"> <div class="tender-list">
<div class="common-title">招标公告</div> <div class="common-title">招标公告</div>
<div class="tender-item" v-for="(item, index) in zbggList" :key="index"> <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> <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.tip}} {{item.time}}</span> <span class="tender-time">{{item.contact}} {{item.issueTime}}</span>
</div> </div>
</div> </div>
<div class="tender-list"> <div class="tender-list">
<div class="common-title">企业动态</div> <div class="common-title">企业动态</div>
<div class="tender-item" v-for="(item, index) in trendList" :key="index"> <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> <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.time}}</span> <span class="tender-time">{{item.createTime}}</span>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import {bidNoticePage, dynamicPage} from "@/api/detail/party-a/overview"
export default { export default {
name: 'Tender', name: 'Tender',
props: ['companyId'],
data() { data() {
return { return {
zbggParams: {
cid: this.companyId,
sort: 3,
pageNum: 1,
pageSize: 5
},
//招标公告数据 //招标公告数据
zbggList:[ zbggList:[],
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '公司经营', tip: '通信信息报', time: '03-21'}, trendParams: {
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '项目动态', tip: '通信信息报', time: '03-21'}, companyId: this.companyId,
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '公司经营', tip: '通信信息报', time: '03-21'}, pageNum: 1,
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '招投标', tip: '通信信息报', time: '03-21'}, pageSize: 5
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '公司经营', tip: '通信信息报', time: '03-21'} },
],
//企业动态数据 //企业动态数据
trendList:[ trendList:[
{name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '对外投资变更', time: '03-21'}, {name: '深圳北站片区正建超大型商场,预计2026年建成', tag: '对外投资变更', time: '03-21'},
...@@ -41,10 +49,23 @@ export default { ...@@ -41,10 +49,23 @@ export default {
} }
}, },
created() { created() {
this.handleQuery()
}, },
mounted() { mounted() {
}, },
methods: { 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> </script>
......
<template> <template>
<div class="app-container part-container"> <div class="app-container part-container">
<div class="view-content"><Infoheader :companyId="companyId" :companyInfo="companyInfo" /></div><!-- 企业信息 --> <div class="view-content"><Infoheader :companyId="companyId" :companyInfo="companyInfo" :statistic="statistic" v-if="isShow" /></div><!-- 企业信息 -->
<div class="view-content"><Operations /></div><!-- 公司经营 --> <div class="view-content"><Operations :companyId="companyId" :financial="financial" v-if="isShow" /></div><!-- 公司经营 -->
<div class="view-content"><Bidding /></div><!--招标偏好、业务往来--> <div class="view-content"><Bidding :companyId="companyId" /></div><!--招标偏好、业务往来-->
<div class="view-content"><Busclue /></div><!--商机线索--> <div class="view-content"><Busclue :companyId="companyId" :statistic="statistic" v-if="statistic" /></div><!--商机线索-->
<div class="view-content"><Relationship /></div><!--关系企业--> <div class="view-content"><Relationship :companyId="companyId" :financial="financial" v-if="isShow" /></div><!--关系企业-->
<div class="view-content"><Senior /></div><!--高管--> <div class="view-content"><Senior :companyId="companyId" /></div><!--高管-->
<div class="view-content"><Risk /></div><!--风险概览--> <div class="view-content"><Risk :companyId="companyId" :statistic="statistic" v-if="isShow" /></div><!--风险概览-->
<div class="view-content"><Tender /></div><!--招标公告、企业动态--> <div class="view-content"><Tender :companyId="companyId" /></div><!--招标公告、企业动态-->
</div> </div>
</template> </template>
<script> <script>
import { statistic } from '@/api/detail/party-a/overview'
import { financial } from '@/api/detail/party-a/financial'
import Infoheader from "./component/infoheader" import Infoheader from "./component/infoheader"
import Operations from "./component/operations" import Operations from "./component/operations"
import Bidding from "./component/bidding" import Bidding from "./component/bidding"
...@@ -35,11 +37,28 @@ export default { ...@@ -35,11 +37,28 @@ export default {
}, },
data() { data() {
return { return {
isShow: false,
statistic: {},
financial: {}
} }
}, },
created() { created() {
this.handleQuery()
}, },
methods: { 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> </script>
......
...@@ -24,7 +24,11 @@ ...@@ -24,7 +24,11 @@
highlight-current-row highlight-current-row
@sort-change="sortChange" @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="gdp" label="GDP(亿元)" sortable width="120" :formatter="formatStatus"/>
<el-table-column prop="gdpGrowth" label="GDP增速" sortable width="100" :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"/> <el-table-column prop="gdpPerCapita" label="人均GDP(元)" sortable width="130" :formatter="formatStatus"/>
......
...@@ -182,10 +182,11 @@ export default { ...@@ -182,10 +182,11 @@ export default {
var year = date.getFullYear() var year = date.getFullYear()
var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1 var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours() // var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() // var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds() // var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds // return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
return year + '-' + month + '-' + day
} }
} }
} }
......
...@@ -139,6 +139,7 @@ export default { ...@@ -139,6 +139,7 @@ export default {
let arr=this.tableData.sort((old,New)=>{ let arr=this.tableData.sort((old,New)=>{
return New.value - old.value return New.value - old.value
}) })
console.log(arr)
let data=[] let data=[]
for(let i=0; i<10; i++){ for(let i=0; i<10; i++){
data.push(arr[i]) data.push(arr[i])
...@@ -215,13 +216,12 @@ export default { ...@@ -215,13 +216,12 @@ export default {
for(var i=0;i<res.data.length;i++){ for(var i=0;i<res.data.length;i++){
var obj={}; var obj={};
obj.name=res.data[i].projectType; obj.name=res.data[i].projectType;
obj.value=res.data[i].count; obj.value=res.data[i].totalInvestment;
obj.totalInvestment=res.data[i].totalInvestment; obj.number=res.data[i].count;
obj.proportion=res.data[i].proportion; obj.proportion=res.data[i].proportion;
list.push(obj) list.push(obj)
} }
this.tableData=list; this.tableData=list;
}) })
}, },
......
...@@ -41,9 +41,9 @@ ...@@ -41,9 +41,9 @@
<el-table-column label="序号" width="50" align="left" fixed> <el-table-column label="序号" width="50" align="left" fixed>
<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template> <template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>
</el-table-column> </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"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="年度明细" prop="id" width="90" align="center" fixed> <el-table-column label="年度明细" prop="id" width="90" align="center" fixed>
......
...@@ -61,6 +61,6 @@ public class BusinessAddDto { ...@@ -61,6 +61,6 @@ public class BusinessAddDto {
private String customerId; private String customerId;
public Double getInvestmentAmount() { 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 { ...@@ -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)); Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseProject/specialDebtProjectPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map); 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)); Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseProject/specialDebtProjectDetail", BeanUtil.beanToMap(body, false, false));
return BeanUtil.toBean(map, R.class); 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)); Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseProject/specialDebtPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map); return dskOpenApiUtil.responsePage(map);
} }
......
...@@ -132,7 +132,7 @@ public class EnterpriseService { ...@@ -132,7 +132,7 @@ public class EnterpriseService {
return dskOpenApiUtil.responsePage(map); 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)); Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/bestStockPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map); return dskOpenApiUtil.responsePage(map);
} }
......
...@@ -126,7 +126,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService { ...@@ -126,7 +126,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
Integer errorCount = 0;//失败条数 Integer errorCount = 0;//失败条数
List<String> result = new LinkedList();//导入结果汇总 List<String> result = new LinkedList();//导入结果汇总
List<BusinessExcelDto> businessInfoList = readBusinessInfoExcel.getExcelInfo(file); List<BusinessExcelDto> businessInfoList = readBusinessInfoExcel.getExcelInfo(file);
if(CollectionUtil.isEmpty(businessInfoList))return AjaxResult.error("文档中无项目信息!"); if(CollectionUtil.isEmpty(businessInfoList))return AjaxResult.error("文档中无项目信息,请按照模板文档格式上传");
for (BusinessExcelDto businessInfo : businessInfoList) { for (BusinessExcelDto businessInfo : businessInfoList) {
//查询已有的项目名称 //查询已有的项目名称
Integer count = businessInfoMapper.isRepetitionProjectName(businessInfo.getProjectName(), userId.intValue()); Integer count = businessInfoMapper.isRepetitionProjectName(businessInfo.getProjectName(), userId.intValue());
...@@ -147,7 +147,9 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService { ...@@ -147,7 +147,9 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
} }
result.add("导入项目成功条数" + rowSuccess); result.add("导入项目成功条数" + rowSuccess);
result.add("导入项目失败条数" + errorCount); 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