Commit d4a59a2d authored by yht15023815643's avatar yht15023815643

Merge branch 'dev20230707' of http://192.168.60.201/root/dsk-operate-sys into dev20230707

parents 122f246a 59ab562f
......@@ -78,7 +78,7 @@
</configuration>
</plugin>
</plugins>
<finalName>${project.artifactId}</finalName>
<finalName>dsk-operate-sys</finalName>
</build>
</project>
......@@ -136,4 +136,10 @@ public class EnterpriseController {
return enterpriseService.getUipIdByCid(vo);
}
@ApiOperation(value = "企业-财务数据")
@PostMapping(value = "financialData")
public R financialData(@RequestBody EnterpriseFinancialDataBody vo) throws Exception {
return enterpriseService.financialData(vo);
}
}
......@@ -134,7 +134,7 @@ spring:
# 端口,默认为6379
port: 6379
# 数据库索引
database: 6
database: 15
# 密码
password: zfTFIJjaN#6xB83r
# 连接超时时间
......
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 EnterpriseFinancialDataBody {
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer cid;
public boolean isValidateCid() {
return 0 == cid;
}
}
......@@ -26,17 +26,6 @@ public class SpecialPurposeBondsPageDto extends BasePage {
*/
private Integer areaId;
/**
* 市Id
*/
private Integer cityId;
/**
* 区Id
*/
private Integer areaId;
/**
* 排序字段 默认-投资金额
*/
......
......@@ -59,6 +59,22 @@ let cancelClaim= function cancelClaim(data) {
// data: data
})
}
// 历史认领用户
let historyClaim= function historyClaim(data) {
return request({
url: '/customer/historyClaim/'+data,
method: 'put',
// data: data
})
}
// 客户状态
let customerStatus= function customerStatus(data) {
return request({
url: '/customer/status/'+data,
method: 'get',
// data: data
})
}
// 查建筑企业
let enterprisePage= function enterprisePage(param) {
......@@ -80,4 +96,4 @@ let infoHeader= function infoHeader(param) {
export default {aptitudeCode,personCert,searchDic,regionWebList,uipGroupData,uipSerach,claim,cancelClaim,enterprisePage,infoHeader}
\ No newline at end of file
export default {aptitudeCode,personCert,searchDic,regionWebList,uipGroupData,uipSerach,claim,cancelClaim,enterprisePage,infoHeader,historyClaim,customerStatus}
......@@ -215,11 +215,18 @@ export function claim(param) {
data: param
})
}
//城投平台-取消认领
export function cancelClaim(name) {
//客户状态
export function customerStatus(name) {
return request({
url:`/customer/cancelClaim/`+name,
method: 'PUT',
url:`/customer/status/`+name,
method: 'get',
})
}
//历史客户认领
export function historyClaim(name) {
return request({
url:`/customer/historyClaim/`+name,
method: 'put',
})
}
//批量获取城投企业id
......
.el-card{
overflow: initial;
}
.app-container{
padding: 0;
}
......@@ -1202,3 +1204,23 @@
.el-select .el-input__inner{
padding-left: 16px;
}
.el-tooltip__popper.is-dark {
opacity: 0.5;
//background: rgba(0, 0, 0, 0.5);
//.el-tooltip__popper[x-placement^=top] .popper__arrow {
// border-top-color:rgba(0, 0, 0, 0.5);
//}
}
.fixed-table {
overflow: visible;
.el-table__header-wrapper {
position: sticky;
top: 56px;
z-index: 9;
}
.el-table__fixed-header-wrapper {
z-index: 9;
}
}
......@@ -26,8 +26,8 @@
</div>
</div>
<skeleton v-if="isSkeleton"></skeleton>
<el-table v-if="!isSkeleton&&tableData.total > 0"
:data="tableData.rows"
<el-table id="tables" v-if="!isSkeleton&&tableData.total > 0" class="fixed-table"
:data="tableData.rows"
stripe border
style="width: 100%">
<el-table-column
......@@ -43,13 +43,17 @@
prop="date"
label="企业名称"
fixed="left"
width="441">
width="316">
<template slot-scope="scope">
<div class="ps1">
<div class="wordprimary ps2" @click="toDetail(scope.row,'')">{{scope.row.companyName}}</div>
<div class="ps3">
<div @click="toDetail(scope.row,'gjjl')"><img class="i" src="@/assets/images/project/edit_1.png"><img class="o" src="@/assets/images/project/edit_11.png"></div>
<div @click="toDetail(scope.row,'business')"><img class="i" src="@/assets/images/project/edit_2.png"><img class="o" src="@/assets/images/project/edit_22.png"></div>
<el-tooltip class="item" effect="dark" content="写跟进" placement="top">
<div @click="toDetail(scope.row,'gjjl')"><img class="i" src="@/assets/images/project/edit_1.png"><img class="o" src="@/assets/images/project/edit_11.png"></div>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="编辑信息" placement="top">
<div @click="toDetail(scope.row,'business')"><img class="i" src="@/assets/images/project/edit_2.png"><img class="o" src="@/assets/images/project/edit_22.png"></div>
</el-tooltip>
</div>
</div>
</template>
......@@ -246,16 +250,16 @@
</template>
<script>
import { getToken } from "@/utils/auth";
import "@/assets/styles/project.scss"
import {getCustomerList,importData,addCustomer} from '@/api/custom/custom'
import {getEnterprise,getDictType,} from '@/api/main'
import { getToken } from '@/utils/auth'
import '@/assets/styles/project.scss'
import { addCustomer, getCustomerList, importData } from '@/api/custom/custom'
import { getDictType, getEnterprise } from '@/api/main'
import prvinceTree from '@/assets/json/provinceTree'
import batchimport from '../../project/projectList/component/batchImport'
import skeleton from '../../project/projectList/component/skeleton'
import axios from 'axios'
import {encodeStr} from "@/assets/js/common"
export default {
import { encodeStr } from '@/assets/js/common'
export default {
name: 'CustomList',
components:{batchimport,skeleton},
data() {
......@@ -313,7 +317,26 @@ export default {
this.getDictType()
this.prvinceTree()
},
mounted() {
window.addEventListener("scroll",this.scrolling)
},
beforeDestroy() {
window.removeEventListener("scroll", this.scrolling);
},
methods:{
scrolling() {
let e1 = document.getElementById("tables").offsetTop
let e2 = document.getElementsByClassName("navbar")[0].getBoundingClientRect().height
let mheight = e1+e2 +2
let el = document.getElementsByClassName("el-table__fixed-header-wrapper")[0]
let scrollTop = document.documentElement.scrollTop ||document.body.scrollTop;
if (scrollTop>mheight){
let top = scrollTop-mheight
el.style.top = top+'px'
}else{
el.style.top = 0
}
},
sq1(item,sq){
this.$nextTick(()=>{
item.sq1 = sq
......@@ -368,7 +391,7 @@ export default {
}else{
item.sq2 = false
}
console.log(item)
// console.log(item)
})
})
},
......@@ -596,8 +619,8 @@ export default {
}
.tables{
position: relative;
height: calc(100vh - 134px);
overflow: auto;
min-height: calc(100vh - 134px);
/*overflow: auto;*/
.empty{
position: absolute;
top: 50%;
......
......@@ -18,7 +18,7 @@
</div>
</div>
<skeleton v-if="isSkeleton"></skeleton>
<el-table v-if="!isSkeleton&&tableData.total > 0"
<el-table id="tables" v-if="!isSkeleton&&tableData.total > 0" class="fixed-table"
:data="tableData.rows"
stripe border
style="width: 100%">
......@@ -35,12 +35,14 @@
prop="date"
label="企业名称"
fixed="left"
width="441">
width="316">
<template slot-scope="scope">
<div class="ps1">
<div class="wordprimary ps2" @click="toDetail(scope.row,'')">{{scope.row.companyName}}</div>
<div class="ps3">
<div @click="toRL(scope.row)"><img class="i" src="@/assets/images/project/khrl1.png"><img class="o" src="@/assets/images/project/khrl2.png"></div>
<el-tooltip class="item" effect="dark" content="重新认领" placement="top">
<div @click="toRL(scope.row)"><img class="i" src="@/assets/images/project/khrl1.png"><img class="o" src="@/assets/images/project/khrl2.png"></div>
</el-tooltip>
</div>
</div>
</template>
......@@ -244,7 +246,26 @@ export default {
this.getCustomerList()
this.getDictType()
},
mounted() {
window.addEventListener("scroll",this.scrolling)
},
beforeDestroy() {
window.removeEventListener("scroll", this.scrolling);
},
methods:{
scrolling() {
let e1 = document.getElementById("tables").offsetTop
let e2 = document.getElementsByClassName("navbar")[0].getBoundingClientRect().height
let mheight = e1+e2 +2
let el = document.getElementsByClassName("el-table__fixed-header-wrapper")[0]
let scrollTop = document.documentElement.scrollTop ||document.body.scrollTop;
if (scrollTop>mheight){
let top = scrollTop-mheight
el.style.top = top+'px'
}else{
el.style.top = 0
}
},
sq1(item,sq){
this.$nextTick(()=>{
item.sq1 = sq
......
<template>
<div class="Tables">
<div class="table-item">
<el-table
<el-table v-if="tableDataTotal>0" class="fixed-table"
v-loading="tableLoading"
:data="tableData"
element-loading-text="Loading"
......@@ -61,11 +61,12 @@
</template>
<template slot="empty">
<div style="padding: 30px 0">
<no-data />
</div>
</template>
</el-table>
<div style="padding: 30px 0" v-else>
<no-data />
</div>
</div>
<div class="pagination-box" v-if="show_page && tableDataTotal>queryParams.pageSize">
<el-pagination background :current-page="current_page" :page-size="queryParams.pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
......
......@@ -134,6 +134,13 @@
<span class="dialog-footer-btn2" @click="renHide()">稍后</span>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogVisible2" custom-class='dialog-renlin' title="重新认领" width="260px" :show-close="false">
<div>再次认领将会恢复客户数据</div>
<div slot="footer" class="dialog-footer">
<span class="dialog-footer-btn1" type="primary" @click="handleHistoryClaim()">确认</span>
<span class="dialog-footer-btn2" @click="dialogVisible2 = false">关闭</span>
</div>
</el-dialog>
<el-dialog
title="取消认领"
:visible.sync="dialogVisible1"
......@@ -185,6 +192,7 @@ export default {
enterpriseLabel:[],//企业标签
dialogVisible: false,
dialogVisible1: false,
dialogVisible2: false,
}
},
created() {
......@@ -211,12 +219,18 @@ export default {
registerAddress:this.companyInfo.provinceName+(this.companyInfo.cityName?'-'+this.companyInfo.cityName:'')+(this.companyInfo.districtName?'-'+this.companyInfo.districtName:''),
creditCode:this.companyInfo.creditCode
}
let res = await claim(param)
this.claimLoading = false
if(res.code==200){
this.dialogVisible=true
this.companyInfo.claimStatus = 1
this.customerId = res.data.customerId
let res = await api.customerStatus(this.companyInfo.companyName)
if(res.data === 1){
this.claimLoading = false
this.dialogVisible2=true;
}else{
let res = await claim(param)
this.claimLoading = false
if(res.code==200){
this.dialogVisible=true
this.companyInfo.claimStatus = 1
this.customerId = res.data.customerId
}
}
}else{
this.$message.warning('对不起,当前不能认领')
......@@ -226,6 +240,16 @@ export default {
cancelClaimClick(){
this.dialogVisible1 = true;
},
async handleHistoryClaim(){
let res = await api.historyClaim(this.companyInfo.companyName)
if(res.code==200){
this.dialogVisible2 = false;
this.companyInfo.claimStatus = 1
}else{
this.$message.error(res.msg)
}
},
async confirm(){
let res = await api.cancelClaim(this.companyInfo.companyName)
if(res.code==200){
......@@ -235,7 +259,7 @@ export default {
this.$message.error(res.msg)
}
// api.cancelClaim(this.companyInfo.companyName).then(res=>{
// })
},
companySwiper(){
......@@ -329,9 +353,9 @@ export default {
renlin(){
this.dialogVisible=false;
// window.location.href = window.location.origin+window.location.pathname+'?customerId='+this.customerId+'&path=business'
this.$router.replace({
this.$router.replace({
path: '/enterprise/'+encodeStr(this.companyId),
query: {
query: {
'customerId': this.customerId,
'path':'business'
} ,
......@@ -711,6 +735,12 @@ export default {
text-align: center;
padding-bottom: 24px;
}
.el-dialog__header{
text-align: center;
.el-dialog__title{
font-size: 16px;
}
}
.el-dialog__footer{
padding: 0px;
padding-bottom: 24px;
......
......@@ -111,7 +111,7 @@
<el-progress class="progress2" :text-inside="true" :stroke-width="14" :percentage="70"></el-progress>
</div>
<div style="background: #ffffff;margin: 0 12px 12px 12px;">
<div id="pm-echarts" style="height: 288px;"></div>
<div id="pm-echarts" style="height: 400px;"></div>
</div>
</div>
</div>
......@@ -279,6 +279,20 @@
<span>中标单位:中铁十二局集团</span>
</p>
</div>
<div class="item">
<h3>太原市万柏林区2023年兴华街道老旧小区改造项目</h3>
<p>
<span>中标金额:4754.34</span>
<span>中标单位:中铁十二局集团</span>
</p>
</div>
<div class="item">
<h3>太原市万柏林区2023年兴华街道老旧小区改造项目</h3>
<p>
<span>中标金额:4754.34</span>
<span>中标单位:中铁十二局集团</span>
</p>
</div>
</div>
</div>
<div v-if="user === 2" class="zbhxr">
......@@ -314,6 +328,24 @@
<span>中标金额:4754.34</span>
</p>
</div>
<div class="item">
<h3>太原市万柏林区2023年兴华街道老旧小区改造项目</h3>
<p>
<span>中标金额:4754.34</span>
</p>
</div>
<div class="item">
<h3>太原市万柏林区2023年兴华街道老旧小区改造项目</h3>
<p>
<span>中标金额:4754.34</span>
</p>
</div>
<div class="item">
<h3>太原市万柏林区2023年兴华街道老旧小区改造项目</h3>
<p>
<span>中标金额:4754.34</span>
</p>
</div>
</div>
</div>
</div>
......@@ -429,6 +461,24 @@ export default {
name:'重庆机场集团',
time:'2023-04-12 14: 00'
},
{
title:'拜访了重庆交通局杨科长,洽谈比较愉快,预计下月有项目招标,希望能有机会合作。',
user:'李婷婷',
name:'重庆机场集团',
time:'2023-04-12 14: 00'
},
{
title:'拜访了重庆交通局杨科长,洽谈比较愉快,预计下月有项目招标,希望能有机会合作。',
user:'李婷婷',
name:'重庆机场集团',
time:'2023-04-12 14: 00'
},
{
title:'拜访了重庆交通局杨科长,洽谈比较愉快,预计下月有项目招标,希望能有机会合作。',
user:'李婷婷',
name:'重庆机场集团',
time:'2023-04-12 14: 00'
},
],
pmData:[
{
......@@ -974,6 +1024,7 @@ export default {
margin: 0;
}
.home {
padding-bottom:24px;
::v-deep .el-row{
.el-col:nth-child(1){
padding-left: 0 !important;
......@@ -1089,18 +1140,18 @@ export default {
}
.content-wrap{
margin-bottom: 12px;
height: 460px;
height: 587px;
.select-popper{
margin-right:0;
}
.record{
height: 460px;
height: 587px;
background: #FFFFFF;
border-radius: 4px;
padding: 16px;
position: relative;
.list{
height: 375px;
height: 510px;
overflow: hidden;
.item{
border-bottom: 1px solid #EEEEEE;
......@@ -1131,27 +1182,28 @@ export default {
text-align: center;
color: #0081FF;
font-size: 14px;
margin-top: 4px;
cursor: pointer;
position: absolute;
bottom:16px;
left: 50%;
margin-left: -48px;
width: 95%;
height: 60px;
line-height: 60px;
background: linear-gradient(360deg, #FFFFFF 0%, #FFFFFF 17%, rgba(255,255,255,0.6) 100%);
bottom: 0;
}
}
.ranking{
height: 460px;
height: 587px;
background: #FFFFFF;
border-radius: 4px;
padding: 16px;
.main{
background: url("../assets/images/index/yjpm_bg.png");
background-size: 100% 100%;
height: 399px;
height: 525px;
margin-top: 10px;
}
.amount{
padding: 16px 24px;
padding: 16px 12px;
p{
display: flex;
justify-content: space-between;
......@@ -1175,6 +1227,8 @@ export default {
}
.progress1{
height: 10px !important;
margin-bottom:6px;
margin-top:8px;
::v-deep .el-progress-bar__outer{
.el-progress-bar__inner{
background:#9AEAD3
......@@ -1303,6 +1357,7 @@ export default {
font-size: 14px;
span{
margin-right: 24px;
color:rgba(35, 35, 35, 0.8);
}
}
.btn{
......@@ -1380,7 +1435,7 @@ export default {
background: #FFFFFF;
border-radius: 4px;
padding: 16px;
height: 440px;
height: 617px;
overflow: hidden;
position: relative;
::v-deep .el-tabs__header{
......@@ -1388,7 +1443,7 @@ export default {
}
::v-deep .el-tabs__content{
overflow-y: auto;
height: 368px;
height: 567px;
}
::v-deep .el-timeline{
.el-timeline-item{
......@@ -1528,7 +1583,7 @@ export default {
}
}
.zbgg{
height: 470px;
height: 599px;
background: #FFFFFF;
border-radius: 4px;
padding: 16px;
......@@ -1570,7 +1625,7 @@ export default {
}
}
.zbhxr{
height: 382px;
height: 558px;
background: #FFFFFF;
border-radius: 4px;
padding: 16px;
......
......@@ -174,7 +174,7 @@ export default {
.left{
float: left;
width: 730px;
margin-right: 170px;
/*margin-right: 170px;*/
}
.logo{
width: 253px;
......
<template>
<div class="region">
<div class="region_left">
<span class="province">{{province}}</span>
<span class="icon">
<i class="el-icon-location"></i>
切换
<div>
<span class="province">{{province}}</span>
<span class="icon">
<i class="el-icon-location"></i>切换
<el-cascader ref="address" class="cascader-region" popper-class='cascader-region-addd'
@change="addressListbtn" v-model="address" :options="addressList" :props="props" collapse-tags></el-cascader>
</span>
<el-cascader ref="address" class="cascader-region" popper-class='cascader-region-addd'
@change="addressListbtn" v-model="address" :options="addressList" :props="props" collapse-tags></el-cascader>
</div>
</div>
</div>
</template>
......@@ -49,6 +50,7 @@
data.provinceId=this.provinceId
data.provinces=nodesObj.pathLabels
this.$parent.addressListbtn(data)
localStorage.setItem('location', true)
},
//地区
async dataRegion() {
......@@ -118,7 +120,6 @@
background-size: 100%;
width: 603px;
height: 48px;
position: relative;
padding-left: 16px;
.province{
font-size: 20px;
......@@ -136,6 +137,7 @@
font-size: 12px;
display: inline-block;
height: 48px;
position: relative;
i{
margin-left: 4px;
font-size: 16px;
......@@ -145,11 +147,11 @@
}
.cascader-region {
position: absolute;
left: 20px;
left: -50px;
top: 8px;
opacity: 0;
line-height: 22px;
width: 100px;
width: 80px;
}
}
}
......
......@@ -45,6 +45,12 @@
</el-table>
</div>
</div>
<!--<div class="content content-box" v-else>-->
<!--<div class="empty">-->
<!--<img class="img" src="@/assets/images/project/empty.png">-->
<!--<div class="p1">抱歉,暂无专项债项目数据</div>-->
<!--</div>-->
<!--</div>-->
</div>
</template>
......@@ -66,11 +72,13 @@ export default {
data:[],
oneYear:'',
twoYear:'',
state:false
}
},
watch: {
provinceId(newValue, oldValue){
this.getData()
this.getGroupCount()
}
},
created() {
......@@ -105,22 +113,24 @@ export default {
params.county=this.provinceId[2]
}
bidMoneyGroupByProjectType(params).then(res => {
let list=res.data[1].type
for (let i=0; i<res.data[0].type.length; i++){
for (let j=0; j<list.length; j++){
if(res.data[0].type[i].projectType === list[j].projectType){
list[j].lastMoney=res.data[0].type[i].money;
list[j].lastRate=res.data[0].type[i].rate;
if(res.data.length > 0){
let list=res.data[1].type
for (let i=0; i<res.data[0].type.length; i++){
for (let j=0; j<list.length; j++){
if(res.data[0].type[i].projectType === list[j].projectType){
list[j].lastMoney=res.data[0].type[i].money;
list[j].lastRate=res.data[0].type[i].rate;
}
}
}
for(let i=0; i<list.length; i++){
list[i].money=list[i].money ? Number(list[i].money).toFixed(2) : '-';
list[i].rate=list[i].rate ? Number(list[i].rate).toFixed(2) : '-';
list[i].lastMoney=list[i].lastMoney ? Number(list[i].lastMoney).toFixed(2) : '-';
list[i].lastRate=list[i].lastRate ? Number(list[i].lastRate).toFixed(2) : '-';
}
this.tableData=list.reverse()
}
for(let i=0; i<list.length; i++){
list[i].money=Number(list[i].money).toFixed(2)
list[i].rate=Number(list[i].rate).toFixed(2)
list[i].lastMoney=Number(list[i].lastMoney).toFixed(2)
list[i].lastRate=Number(list[i].lastRate).toFixed(2)
}
this.tableData=list.reverse()
})
},
getGroupCount(){
......@@ -134,7 +144,17 @@ export default {
startTime=this.queryParams.year+'-01-01';
endTime=this.queryParams.year+'-12-31';
}
bidGroupCountByProjectType({startDate:startTime,endDate:endTime}).then(res => {
let params={startDate:startTime,endDate:endTime}
if(this.provinceId.length >= 0){
params.province=this.provinceId[0]
}
if(this.provinceId.length >= 1){
params.city=this.provinceId[1]
}
if(this.provinceId.length >= 2){
params.county=this.provinceId[2]
}
bidGroupCountByProjectType(params).then(res => {
if(res.code === 200){
let list=[]
for(let i=0; i<res.data.length; i++){
......@@ -316,6 +336,26 @@ export default {
}
}
}
.empty{
margin: 0 auto;
height: 550px;
text-align: center;
.img{
width: 108px;
height: 108px;
margin-bottom: 24px;
margin-top: 150px;
}
.p1{
color: #333333;
font-size: 16px;
}
.p2{
color: #999999;
font-size: 14px;
margin-top: 8px;
}
}
}
}
</style>
......@@ -279,10 +279,10 @@ export default {
}
},
created() {
this.getData()
let mydate=new Date();
this.labelData=[mydate.getFullYear()-2,mydate.getFullYear()-1]
this.$nextTick(()=>{
this.getData()
// console.log(this.dataQuery)
})
},
......@@ -300,11 +300,6 @@ export default {
// }
},
watch: {
dataQuery: {
handler(newValue, oldValue) {
},
deep: true
},
provinceId(newValue, oldValue){
this.getData()
}
......
......@@ -63,7 +63,9 @@ export default {
}
},
created() {
this.dataQuery=this.$route.query;
//使用JSON方法深拷贝
let data = JSON.parse(JSON.stringify(this.$route.query))
this.dataQuery=data;
if(this.dataQuery.provinceId){
if(Array.isArray(this.dataQuery.province)){
this.province=this.dataQuery.province[0];
......@@ -71,41 +73,54 @@ export default {
this.province=this.dataQuery.province
this.dataQuery.province = [this.dataQuery.province];
}
this.provinceId.push(this.dataQuery.provinceId)
if(Array.isArray(this.dataQuery.provinceId)){
this.provinceId=this.dataQuery.provinceId
}else {
this.provinceId.push(this.dataQuery.provinceId)
}
}else {
location({}).then(res => {
if(res.data.area){
this.province=res.data.area
}else {
if(res.data.city){
this.province=res.data.city
if(localStorage.getItem('location')){
if(res.data.area){
this.province=res.data.area
}else {
this.province=res.data.province
if(res.data.city){
this.province=res.data.city
}else {
this.province=res.data.province
}
}
}
if(!this.dataQuery.provinceId){
if(res.data.areaId){
this.dataQuery.provinceId=[res.data.provinceId,res.data.cityId,res.data.areaId]
this.provinceId=[res.data.provinceId,res.data.cityId,res.data.areaId]
}else {
if(res.data.cityId){
this.provinceId=[res.data.provinceId,res.data.cityId]
if(!this.dataQuery.provinceId){
if(res.data.areaId){
this.dataQuery.provinceId=[res.data.provinceId,res.data.cityId,res.data.areaId]
this.provinceId=[res.data.provinceId,res.data.cityId,res.data.areaId]
}else {
this.provinceId=[res.data.provinceId]
if(res.data.cityId){
this.provinceId=[res.data.provinceId,res.data.cityId]
}else {
this.provinceId=[res.data.provinceId]
}
}
let arr=[res.data.province]
this.dataQuery.province=arr;
}else {
this.provinceId=this.dataQuery.provinceId
}
let arr=[res.data.province]
this.dataQuery.province=arr;
}else {
this.provinceId=this.dataQuery.provinceId
this.province=res.data.province
if(!this.dataQuery.provinceId){
this.provinceId=[res.data.provinceId]
let arr=[res.data.province]
this.dataQuery.province=arr;
}else {
this.provinceId=this.dataQuery.provinceId
}
}
})
}
if(this.dataQuery.activeName){
this.activeName=this.dataQuery.activeName;
}
// let name = sessionStorage.getItem('currentTab')
// if (name != "undefined" && name){
// this.activeName = name;
......
......@@ -130,9 +130,9 @@
{{formatDate(scope.row.tenderDate)}}
</template>
</el-table-column>
<el-table-column prop="actualBondIssueScale" label="专项债规模(亿)" width="260" />
<el-table-column prop="isUsedProjectScale" label="用于项目规模(亿)" width="260" />
<el-table-column prop="isUsedCapital" label="是否资本金" width="200" />
<el-table-column prop="actualBondIssueScale" label="专项债规模(亿)" width="260" :formatter="formatStatus"/>
<el-table-column prop="isUsedProjectScale" label="用于项目规模(亿)" width="260" :formatter="formatStatus"/>
<el-table-column prop="isUsedCapital" label="是否资本金" width="200" :formatter="formatStatus"/>
</el-table>
</div>
</div>
......@@ -185,7 +185,10 @@ export default {
// var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
// return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
return year + '-' + month + '-' + day
}
},
formatStatus: function(row, column, cellValue) {
return cellValue? cellValue : '-'
},
}
}
</script>
......
......@@ -110,30 +110,41 @@ export default {
},
created() {
location({}).then(res => {
if(res.data.area){
this.province=res.data.area
}else {
if(res.data.city){
this.province=res.data.city
if(localStorage.getItem('location')){
if(res.data.area){
this.province=res.data.area
}else {
this.province=res.data.province
if(res.data.city){
this.province=res.data.city
}else {
this.province=res.data.province
}
}
}
if(!this.dataQuery.provinceId){
if(res.data.areaId){
this.dataQuery.provinceId=[res.data.provinceId,res.data.cityId,res.data.areaId]
this.provinceId=[res.data.provinceId,res.data.cityId,res.data.areaId]
}else {
if(res.data.cityId){
this.provinceId=[res.data.provinceId,res.data.cityId]
if(!this.dataQuery.provinceId){
if(res.data.areaId){
this.dataQuery.provinceId=[res.data.provinceId,res.data.cityId,res.data.areaId]
this.provinceId=[res.data.provinceId,res.data.cityId,res.data.areaId]
}else {
this.provinceId=[res.data.provinceId]
if(res.data.cityId){
this.provinceId=[res.data.provinceId,res.data.cityId]
}else {
this.provinceId=[res.data.provinceId]
}
}
let arr=[res.data.province]
this.dataQuery.province=arr;
}else {
this.provinceId=this.dataQuery.provinceId
}
let arr=[res.data.province]
this.dataQuery.province=arr;
}else {
this.provinceId=this.dataQuery.provinceId
this.province=res.data.province;
if(!this.dataQuery.provinceId){
this.provinceId=[res.data.provinceId]
let arr=[res.data.province]
this.dataQuery.province=arr;
}else {
this.provinceId=this.dataQuery.provinceId
}
}
this.$nextTick(() => {
this.getData()
......
......@@ -121,7 +121,7 @@
<div class="item">
<div class="left">
<p>{{statistics.accountsReceivable}}<span>亿元</span></p>
<span>收账款</span>
<span>收账款</span>
</div>
<img src="@/assets/images/urban/img4.png">
</div>
......@@ -244,7 +244,7 @@
<el-pagination background :current-page="pageIndex" :page-size="pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</div>
<el-dialog :visible.sync="claimVisible" width="244" :show-close="false">
<el-dialog :visible.sync="claimVisible" width="244" custom-class='dialog-claim' :show-close="false">
<div>认领成功,是否完善客户信息?</div>
<div slot="footer" class="dialog-footer">
<el-button @click="innerVisible = true">
......@@ -255,6 +255,13 @@
<el-button @click="claimVisible = false">稍后</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="claimVisible1" custom-class='historyClaim' title="重新认领" width="260" :show-close="false">
<div>再次认领将会恢复客户数据</div>
<div slot="footer" class="dialog-footer">
<el-button @click="handleHistoryClaim">确认</el-button>
<el-button @click="claimVisible1 = false">取消</el-button>
</div>
</el-dialog>
<el-dialog
title="取消认领"
:visible.sync="dialogVisible1"
......@@ -278,7 +285,7 @@
import dataRegion from '@/assets/json/dataRegion'
import api from '@/api/enterpriseData/enterpriseData.js';
import elementResizeDetectorMaker from "element-resize-detector"
import { uipGroupData,urbanInvestmentPage,urbanInvestmentStatistics,claim,location } from '@/api/macro/macro'
import { uipGroupData,urbanInvestmentPage,urbanInvestmentStatistics,claim,location,customerStatus,historyClaim } from '@/api/macro/macro'
import { infoHeader } from '@/api/detail/party-a/index'
import Region from '../component/region'
export default {
......@@ -317,9 +324,11 @@ export default {
typeList:[],
statistics:{},
claimVisible:false,
claimVisible1:false,
dialogVisible1: false,
customerId:'',
companyId:'',
companyName:'',
show_page:true,
MaxPage:500,
// 表格高度
......@@ -346,7 +355,6 @@ export default {
},
mounted(){
window.addEventListener("scroll",this.scrolling)
window.addEventListener('scroll', this.handleScroll);
const _this = this, erd = elementResizeDetectorMaker(), partBox = document.getElementById("content")
erd.listenTo(partBox, element => {
_this.$nextTick(() => {
......@@ -354,9 +362,6 @@ export default {
})
})
},
destroyed () {
window.removeEventListener('scroll', this.handleScroll)
},
beforeDestroy() {
window.removeEventListener("scroll", this.scrolling);
},
......@@ -379,33 +384,45 @@ export default {
this.querySubmit()
}else {
location({}).then(res => {
if(res.data.area){
this.province=res.data.area
}else {
if(res.data.city){
this.province=res.data.city
if(localStorage.getItem('location')){
if(res.data.area){
this.province=res.data.area
}else {
this.province=res.data.province
}
}
if(!this.dataQuery.provinceId){
if(res.data.areaId){
this.dataQuery.provinceId=[res.data.provinceId,res.data.cityId,res.data.areaId]
this.provinceId=[res.data.provinceId,res.data.cityId,res.data.areaId]
}else {
if(res.data.cityId){
this.provinceId=[res.data.provinceId,res.data.cityId]
if(res.data.city){
this.province=res.data.city
}else {
this.provinceId=[res.data.provinceId]
this.province=res.data.province
}
}
if(!this.dataQuery.provinceId){
if(res.data.areaId){
this.dataQuery.provinceId=[res.data.provinceId,res.data.cityId,res.data.areaId]
this.provinceId=[res.data.provinceId,res.data.cityId,res.data.areaId]
}else {
if(res.data.cityId){
this.provinceId=[res.data.provinceId,res.data.cityId]
}else {
this.provinceId=[res.data.provinceId]
}
}
let arr=[res.data.province]
this.dataQuery.province=arr;
let arr=[res.data.province]
this.dataQuery.province=arr;
}else {
this.provinceId=this.dataQuery.provinceId
}
}else {
this.provinceId=this.dataQuery.provinceId
this.province=res.data.province
if(!this.dataQuery.provinceId){
this.provinceId=[res.data.provinceId]
let arr=[res.data.province]
this.dataQuery.province=arr;
}else {
this.provinceId=this.dataQuery.provinceId
}
}
this.querySubmit()
})
}
......@@ -416,21 +433,24 @@ export default {
methods: {
scrolling() {
let el = document.getElementsByClassName("el-table__fixed-header-wrapper")[0]
let scrollTop =window.pageYOffset ||document.documentElement.scrollTop ||document.body.scrollTop;
if (scrollTop>368){
let top = scrollTop-368
el.style.top = top+'px'
}else{
el.style.top = 0
}
},
handleScroll () {
let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
if (scrollTop > 300) {
this.fixed = true
} else {
this.fixed = false
}
// let scrollTop =window.pageYOffset ||document.documentElement.scrollTop ||document.body.scrollTop;
// if (scrollTop>368){
// let top = scrollTop-368
// el.style.top = top+'px'
// }else{
// el.style.top = 0
// }
let el1 = document.getElementsByClassName("el-table")[0].offsetTop
let el2 = document.getElementsByClassName("content")[1].offsetTop
let scrollTop = document.documentElement.scrollTop ||document.body.scrollTop;
this.$nextTick(() => {
if (scrollTop>(el1+el2)){
let top = scrollTop-(el1+el2)-13
el.style.top = top+'px'
}else{
el.style.top = 0
}
})
},
getType(){
uipGroupData({}).then(res => {
......@@ -736,8 +756,17 @@ export default {
}
})
},
handleHistoryClaim(){
historyClaim(this.companyName).then(res => {
if(res.code === 200){
this.claimVisible1=false;
this.querySubmit()
}
})
},
handleClick(item){
this.companyId=item.companyId;
this.companyName=item.companyName;
infoHeader({companyId:this.companyId}).then(res => {
if(res.code === 200){
let registerAddress=res.data.provinceName
......@@ -760,11 +789,18 @@ export default {
registerAddress:registerAddress,
creditCode:res.data.creditCode,
}
claim(params).then(res => {
if(res.code === 200){
this.claimVisible=true;
this.customerId=res.data.customerId;
this.querySubmit()
customerStatus(item.companyName).then(res => {
if(res.data === 1){
this.claimVisible1=true;
}else {
claim(params).then(res => {
if(res.code === 200){
this.claimVisible=true;
this.customerId=res.data.customerId;
this.querySubmit()
}
})
}
})
}
......@@ -1041,9 +1077,25 @@ export default {
}
}
}
::v-deep .historyClaim{
.el-dialog__header{
display: block;
padding: 12px;
text-align: center;
.el-dialog__title{
font-size: 16px;
}
}
.el-dialog__body{
padding: 0;
text-align: center;
padding-bottom: 24px;
}
}
::v-deep .dialog-renlin{
.el-dialog__header{
display: block;
text-align: center;
}
.el-dialog__body{
padding: 0;
......@@ -1086,10 +1138,5 @@ export default {
}
}
}
.fixed{
position: fixed;
z-index: 999;
top: 56px;
}
}
</style>
......@@ -5,20 +5,27 @@
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="tables" v-else>
<el-table
<div class="empty" v-if="total==0">
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div>
<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisableds == false">新增联系人</div>
</div>
<el-table class="fixed-table" v-else
:data="tableData"
stripe border
style="width: 100%"
:default-sort = "{prop: 'role', order: 'ascending'}"
>
<template slot="empty">
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div>
<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisableds == false">新增联系人</div>
</div>
</template>
<!--<template slot="empty">-->
<!--<div class="empty">-->
<!--<img src="@/assets/images/project/empty.png">-->
<!--<div class="p1">暂无数据展示</div>-->
<!--<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div>-->
<!--<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisableds == false">新增联系人</div>-->
<!--</div>-->
<!--</template>-->
<el-table-column
prop="name"
label="姓名"
......
......@@ -16,19 +16,17 @@
</div>
<div class="document tables">
<skeleton v-if="isSkeleton" style="padding-top: 16px"></skeleton>
<el-table v-else
<div class="empty" v-if="tableData.total == 0">
<img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或添加相关企业,重新搜索</div>
<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisableds==false">新增相关企业</div>
</div>
<el-table v-else-if="!isSkeleton" class="fixed-table"
:data="tableData.rows"
style="width: 100%"
:default-sort = "{prop: 'depth', order: 'descending'}"
>
<template slot="empty">
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或添加相关企业,重新搜索</div>
<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisableds==false">新增相关企业</div>
</div>
</template>
<el-table-column
prop="companyName"
label="企业名称"
......
......@@ -61,31 +61,31 @@
</div>
<div class="document tables">
<skeleton v-if="isSkeleton" style="padding-top: 16px"></skeleton>
<el-table v-else
<div class="empty" v-if="fileDatas.total==0">
<img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
<!--<div v-if="isDisableds==false" class="btn btn_primary h36 w102" @click="getUP">上传文档</div>-->
<div v-if="isDisableds==false" class="btn btn_primary h36 w102"> <el-upload
class="upload-demo"
:action="action"
:on-change="handleFileListChange"
:multiple="false"
ref="upload"
:file-list="fileList"
accept=".word,.pdf.excel,.xlsx,.doc,.docx"
:headers="headers"
:show-file-list="false"
:on-success="onSuccess">
上传文档
</el-upload></div>
</div>
<el-table v-else-if="!isSkeleton" class="fixed-table"
:data="fileDatas.rows"
style="width: 100%"
:default-sort = "{prop: 'creatTime', order: 'descending'}"
>
<template slot="empty">
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
<!--<div v-if="isDisableds==false" class="btn btn_primary h36 w102" @click="getUP">上传文档</div>-->
<div v-if="isDisableds==false" class="btn btn_primary h36 w102"> <el-upload
class="upload-demo"
:action="action"
:on-change="handleFileListChange"
:multiple="false"
ref="upload"
:file-list="fileList"
accept=".word,.pdf.excel,.xlsx,.doc,.docx"
:headers="headers"
:show-file-list="false"
:on-success="onSuccess">
上传文档
</el-upload></div>
</div>
</template>
<el-table-column
prop="name"
......
......@@ -34,8 +34,8 @@ module.exports = {
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
// target: `http://47.104.91.229:9099/prod-api`,
target: `http://122.9.160.122:9011`,
target: `http://47.104.91.229:9099/prod-api`,
// target: `http://122.9.160.122:9011`,
// target: `http://192.168.60.126:9011`,
// target: `http://192.168.60.27:8766`,
changeOrigin: true,
......
......@@ -315,4 +315,13 @@ public class EnterpriseService {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/getUipIdByCid", paramMap);
return BeanUtil.toBean(map, R.class);
}
public R financialData(EnterpriseFinancialDataBody body) throws Exception {
if (body.isValidateCid()) {
return R.ok();
}
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/financialData", BeanUtil.beanToMap(body, false, false));
return BeanUtil.toBean(map, R.class);
}
}
package com.dsk.system.service.impl;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import com.dsk.system.domain.BusinessExcelDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
......@@ -13,6 +8,11 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
/**
* @author lxl
* @Description:
......@@ -120,28 +120,32 @@ public class ReadBusinessInfoExcel {
for (int c = 0; c < this.totalCells; c++) {
Cell cell = row.getCell(c);
if (null != cell) {
//项目名称
if (c == 0) {
//如果是纯数字,比如你写的是25,cell.getNumericCellValue()获得是25.0,通过截取字符串去掉.0获得25
if (cell.getCellType() == CellType.NUMERIC) {
String name = String.valueOf(cell.getNumericCellValue());
businessExcelDto.setProjectName(name.substring(0, name.length() - 2 > 0 ? name.length() - 2 : 1));//项目名称
businessExcelDto.setProjectName(name.substring(0, name.length() - 2 > 0 ? name.length() - 2 : 1));
} else {
businessExcelDto.setProjectName(cell.getStringCellValue());//名称
businessExcelDto.setProjectName(cell.getStringCellValue());
}
//业主单位
} else if (c == 1) {
if (cell.getCellType() == CellType.NUMERIC) {
String company = String.valueOf(cell.getNumericCellValue());
businessExcelDto.setOwnerCompany(company.substring(0, company.length() - 2 > 0 ? company.length() - 2 : 1));//业主单位
businessExcelDto.setOwnerCompany(company.substring(0, company.length() - 2 > 0 ? company.length() - 2 : 1));
} else {
businessExcelDto.setOwnerCompany(cell.getStringCellValue());//性别
businessExcelDto.setOwnerCompany(cell.getStringCellValue());
}
//投资估算(万元)
} else if (c == 2) {
if (cell.getCellType() == CellType.NUMERIC) {
businessExcelDto.setInvestmentAmount(cell.getStringCellValue());
/* if (cell.getCellType() == CellType.NUMERIC) {
String amount = String.valueOf(cell.getNumericCellValue());
businessExcelDto.setInvestmentAmount(amount.substring(0, amount.length() - 2 > 0 ? amount.length() - 2 : 1));//投资估算(万元)
businessExcelDto.setInvestmentAmount(amount.substring(0, amount.length() - 2 > 0 ? amount.length() - 2 : 1));
} else {
businessExcelDto.setInvestmentAmount(cell.getStringCellValue());
}
}*/
}
}
}
......
......@@ -110,15 +110,15 @@
#{projectType}
</foreach>
</if>
<if test="minAmount != null and minAmount != '' and minAmount != 0 and maxAmount != minAmount">
<if test="minAmount != null and minAmount != '' and minAmount != '0' and maxAmount != minAmount">
and i.investment_amount &gt; #{minAmount}
</if>
<if test="minAmount == 0 and maxAmount != minAmount">
<if test="minAmount == '0' and maxAmount != minAmount">
and ((i.investment_amount &gt; #{minAmount}
and i.investment_amount &lt;= #{maxAmount})
or i.investment_amount is null)
</if>
<if test="maxAmount != null and maxAmount != '' and maxAmount != minAmount and minAmount != 0">
<if test="maxAmount != null and maxAmount != '' and maxAmount != minAmount and minAmount != '0'">
and i.investment_amount &lt;= #{maxAmount}
</if>
<if test="minAmount != null and minAmount != '' and maxAmount != null and maxAmount != '' and maxAmount == minAmount">
......
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