Commit dfef0304 authored by danfuman's avatar danfuman
parents 4f813a6d 32d10a4c
......@@ -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
......@@ -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){
......
......@@ -31,9 +31,9 @@
<Hiscontract v-if="currentPath.pathName=='hiscontract'" :company-id="companyId" />
<Bidrecords v-if="currentPath.pathName=='bidrecords'" :company-id="companyId" />
<!-- 投诚分析 -->
<RegionalEconomies v-if="currentPath.pathName=='regionalEconomies'" :company-id="companyId" :companyInfo="companyInfo" />
<LandAcquisition v-if="currentPath.pathName=='landAcquisition'" :company-id="companyId" />
<RegionalEconomies v-if="currentPath.pathName=='regionalEconomies'" :company-id="companyId" />
<SameRegion v-if="currentPath.pathName=='sameRegion'" :company-id="companyId" />
<SameRegion v-if="currentPath.pathName=='sameRegion'" :company-id="companyId" :companyInfo="companyInfo" />
<!-- 风险信息 -->
<Punish v-if="currentPath.pathName=='punish'" :company-id="companyId" />
<BusinessAnomaly v-if="currentPath.pathName=='businessAnomaly'" :company-id="companyId" />
......
......@@ -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>
......
......@@ -18,7 +18,7 @@
@handle-current-change="handleCurrentChange"
>
<template slot="projectName" slot-scope="data">
<router-link :to="''+ data.row.id" style="color: #0081FF">{{ data.row.projectName }}</router-link>
<router-link to="" tag="a" class="a-link">{{ data.row.projectName }}</router-link>
</template>
</tables>
......
......@@ -30,9 +30,6 @@ import dataRegion from '@/assets/json/dataRegion'
import {
regionalEconomy
} from '@/api/detail/party-a/urbanLnvestment'
import {
infoHeader
} from '@/api/detail/party-a/index'
export default {
name: 'regionalEconomies',
components: {
......@@ -42,14 +39,18 @@ export default {
companyId: {
type: Number,
default: 0
},
companyInfo: {
type: Object,
default: {}
}
},
data() {
return {
addressList:'',
params: {
provinceId: 500000,
cityId: 500100
provinceId: this.companyInfo.provinceId,
cityId: this.companyInfo.cityId
},
labels: [
'指标',
......@@ -231,16 +232,13 @@ export default {
//地区
regionalEconomys() {
this.tableLoading = true
infoHeader({companyId: this.companyId}).then(res => {
regionalEconomy({
provinceId: res.data.provinceId,
cityId: res.data.cityId
}).then(res => {
if(this.companyInfo){
regionalEconomy(this.params).then(res => {
this.tableData = res.data
this.tableLoading = false
})
this.dataRegion(res.data.provinceId, res.data.cityId)
})
this.dataRegion(this.companyInfo.provinceId, this.companyInfo.cityId)
}
},
dataRegion(p,c) {
var str = [];
......
......@@ -98,7 +98,7 @@
@sort-change="sortChange"
>
<template slot="companyName" slot-scope="data">
<router-link :to="''+ data.row.companyId" style="color: #0081FF">{{ data.row.companyName }}</router-link>
<router-link to="" tag="a" class="a-link">{{ data.row.companyName }}</router-link>
</template>
</tables>
......@@ -112,9 +112,6 @@ import {
urbanInvestmentPage,
uipGroupData
} from '@/api/detail/party-a/urbanLnvestment'
import {
infoHeader
} from '@/api/detail/party-a/index'
export default {
name: 'SameRegion',
mixins: [mixin],
......@@ -125,6 +122,10 @@ export default {
companyId: {
type: Number,
default: 0
},
companyInfo: {
type: Object,
default: {}
}
},
data() {
......@@ -200,12 +201,12 @@ export default {
}
},
created() {
infoHeader({companyId: this.companyId}).then(res => {
this.queryParams.provinceId = res.data.provinceId
this.queryParams.cityId = res.data.cityId
if(this.companyInfo){
this.queryParams.provinceId = this.companyInfo.provinceId
this.queryParams.cityId = this.companyInfo.cityId
this.handleQuery()
this.getScreen()
})
}
},
computed: {
......
......@@ -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);
}
......
package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.dsk.common.config.RuoYiConfig;
import com.dsk.common.constant.HttpStatus;
import com.dsk.common.core.domain.AjaxResult;
......@@ -125,6 +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("文档中无项目信息,请按照模板文档格式上传");
for (BusinessExcelDto businessInfo : businessInfoList) {
//查询已有的项目名称
Integer count = businessInfoMapper.isRepetitionProjectName(businessInfo.getProjectName(), userId.intValue());
......@@ -145,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