Commit 8c88cdcc authored by danfuman's avatar danfuman

Merge branch 'dev20230707'

# Conflicts:
#	dsk-operate-ui/src/views/macro/enterprises/index.vue
#	dsk-operate-ui/src/views/macro/nationalEconomies/component/qgjjdq.vue
#	dsk-operate-ui/src/views/macro/urban/index.vue
#	dsk-system/src/main/java/com/dsk/system/service/impl/ReadBusinessInfoExcel.java
#	dsk-system/src/main/resources/mapper/business/BusinessInfoMapper.xml
parents 5db93781 7901ff1b
......@@ -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);
}
}
......@@ -51,4 +51,12 @@ public class CacheConstants
* 查甲方 菜单选线
*/
public static final String PERSONAL_LOCATION = "personal:location";
/**
* 查甲方 财务数据
*/
public static final String DATA_FINANCIAL = "data:financial";
}
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;
/**
* 排序字段 默认-投资金额
*/
......
......@@ -44,6 +44,14 @@ export function projectTenderDataGroup(data) {
data: data
})
}
// 财务数据
export function financialData(data) {
return request({
url: '/enterprise/financialData',
method: 'post',
data: data
})
}
// 招标公告
export function bidNoticePage(data) {
......
......@@ -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
......
......@@ -7,11 +7,10 @@ const steerScroll = function(iframeId, navigation, state, parentId) { // state:
let dom = window
if (parentId) { // 默认页面可以滚动
dom = document.getElementById(parentId)
if(!dom){
if (!dom) {
return
}
dom.style.overflow = 'auto'
navigation.totalHeight = 0
} else {
document.body.style.overflow = 'visible'
}
......@@ -22,12 +21,12 @@ const steerScroll = function(iframeId, navigation, state, parentId) { // state:
if (data && typeof data === 'object') {
// 动态设置iFrame高度
if (data.height) {
document.getElementById(iframeId).style.height = data.height+'px'
document.getElementById(iframeId).style.height = data.height + 'px'
scrolling(iframeId, navigation, parentId) // 初始加载获取滚动条距离顶部高度
}
// 点击企业详情页 栏目名动态设置滚动高度
if (data.scrollHeight) {
let navHeight = navigation.isFixed ? navigation.totalHeight - navigation.fixedHeight : navigation.totalHeight
const navHeight = navigation.isFixed && !parentId ? navigation.totalHeight - navigation.fixedHeight : !parentId ? navigation.totalHeight : 0
dom.scrollTo(sct, parseInt(data.scrollHeight) + navHeight)
}
// 点击企业详情页 栏目下拉子标签动态设置滚动高度
......@@ -63,11 +62,9 @@ const scrolling = function(iframeId, navigation, parentId) {
let scrollTop = parentId ? document.getElementById(parentId).scrollTop : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
// 将滚动距离传入子组件
const ifa = document.getElementById(iframeId)
if ((scrollTop < navigation.totalHeight && !navigation.isFixed) || navigation.isFixed) {
scrollTop = scrollTop + navigation.totalHeight
}
scrollTop = scrollTop + navigation.totalHeight
const bodyHeight = document.body.clientHeight - navigation.totalHeight
ifa.contentWindow.postMessage({ 'scrollTop': scrollTop, 'bodyHeight': bodyHeight }, '*')
ifa.contentWindow.postMessage({ 'scrollTop': scrollTop, 'navHeight': navigation.totalHeight, 'bodyHeight': bodyHeight }, '*')
}
export {
......
......@@ -524,6 +524,10 @@ ul, li {
line-height: 50px;
height: 50px;
}
.el-tabs__item.is-disabled {
color: #C0C4CC;
cursor: not-allowed;
}
.is-active{
color: #0081FF;
font-weight: bold;
......@@ -652,6 +656,9 @@ ul, li {
height: 32px;
border: 0;
}
.el-input__suffix{
margin-top: -1px;
}
}
.btn{
background: #F5F5F5;
......
.el-card{
overflow: initial;
}
.app-container{
padding: 0;
}
......@@ -827,10 +829,22 @@
right: 16px;
top: 17px;
.searchInput{
width: 178px;
border: 1px solid #D9D9D9;
.el-input--medium .el-input__inner{
font-size: 12px;
&.small{
border: 1px solid #d9d9d9;
width: 240px;
.el-input{
width: 180px;
}
.el-input__inner{
padding-right: 32px;
}
.el-input__prefix{
left: 8px;
top: -3px;
img{
width: 16px;
}
}
}
}
.b2{
......@@ -1187,3 +1201,32 @@
//box-shadow: 4px 0 9px -5px rgba(0, 0, 0, 0.12);
//-webkit-box-shadow: 4px 0 9px -5px rgba(0, 0, 0, 0.12);
}
.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{
position: sticky;
z-index: 9;
top: 56px;
}
.el-table__fixed{
overflow-x: clip;
overflow-y: clip;
}
}
......@@ -5,6 +5,7 @@
transition: margin-left .28s;
margin-left: $base-sidebar-width;
position: relative;
background: #F5F5F5;
}
.sidebarHide {
......@@ -37,12 +38,12 @@
animation-fill-mode: forwards;
z-index: 1002;
}
@keyframes left-right{
0%{right: 0;}
100%{right: -21px;}
}
// reset element-ui css
.horizontal-collapse-transition {
transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
......@@ -58,10 +59,10 @@
.el-scrollbar {
height: 100%;
}
&.has-logo {
.el-scrollbar {
......@@ -138,8 +139,8 @@
background: #fff!important;
}
}
// menu hover
.submenu-title-noDropdown, .el-submenu__title {
color: #fff!important;
......@@ -150,9 +151,9 @@
border: 1px solid #2b3f69;
}
}
}
.sidebar-container .el-submenu .el-menu-item:hover,.sidebar-container .nest-menu .el-submenu>.el-submenu__title:hover {
background-color: #1e2c4c!important;
......@@ -160,7 +161,7 @@
border-radius: 10px;
border: 1px solid #2b3f69;
}
.sidebar-container .el-submenu .el-menu-item:before, .sidebar-container .nest-menu .el-submenu>.el-submenu__title:before {
position: absolute;
width: 2px;
......@@ -210,7 +211,7 @@
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
}
}
......@@ -405,4 +406,4 @@
padding-top: 6px;
padding-bottom: 10px;
}
}
\ No newline at end of file
}
......@@ -46,9 +46,9 @@ export default {
<style scoped>
.svg-icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
width: 1.29em;
height: 1.29em;
/*vertical-align: -0.22em;*/
fill: currentColor;
overflow: hidden;
}
......
......@@ -45,6 +45,7 @@ export default {
min-height: calc(100vh - 56px);
min-width:1440px;
background: #F5F5F5;
overflow: initial;
}
.fixed-header + .app-main {
......
......@@ -147,9 +147,9 @@ export default {
.user-avatar {
display: inline-block;
cursor: pointer;
width: 20px;
height: 20px;
line-height: 20px;
width: 24px;
height: 24px;
line-height: 24px;
text-align: center;
background: #E3EEF9;
color: #0081FF;
......
......@@ -90,7 +90,7 @@ export default {
height: 100%;
padding-top: 24px;
margin-bottom: 0 !important;
overflow: auto;
overflow: hidden;
}
.is-horizontal{
width: 0;
......
......@@ -28,6 +28,34 @@
<li v-if="!isLastView()" @click="closeRightTags"><i class="el-icon-right"></i> 关闭右侧</li>
<li @click="closeAllTags(selectedTag)"><i class="el-icon-circle-close"></i> 全部关闭</li>
</ul>
<div class="alltags" v-if="visitedViews.length > 0">
<div class="" @click="closeall"><i class="el-icon-arrow-down" v-if="!showall"></i> <i class="el-icon-arrow-up" v-if="showall"></i></div>
<div class="tagslist" v-if="showall">
<!--<div v-for="(tag, index) in visitedViews"-->
<!--:key="tag.path"-->
<!--:class="isActive(tag)?'active':''"-->
<!--&gt;-->
<!--<i class="el-icon-check"></i>-->
<!--</div>-->
<router-link
v-for="(tag, index) in visitedViews"
ref="tag"
:key="tag.path"
:class="isActive(tag)?'active':''"
:to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }"
tag="span"
class="tags-view-item"
@contextmenu.prevent.native="openMenu(tag,$event)"
>
<div @click="changetags">
<i class="el-icon-check"></i>
<span :id="isActive(tag)?'tagTitle':''">{{ tag.title }}</span>
</div>
</router-link>
<div class="clasall" @click="closeAllTag(selectedTag)">关闭全部标签</div>
</div>
</div>
</div>
</template>
......@@ -43,7 +71,8 @@ export default {
top: 0,
left: 0,
selectedTag: {},
affixTags: []
affixTags: [],
showall:false,
}
},
computed: {
......@@ -83,13 +112,24 @@ export default {
} else {
document.body.removeEventListener('click', this.closeMenu)
}
}
},
},
mounted() {
this.initTags()
this.addTags()
},
methods: {
changetags(){
console.log(88)
this.showall = false
},
closeall(){
if(this.showall == true){
this.showall = false
}else{
this.showall = true
}
},
isActive(route) {
return route.path === this.$route.path
},
......@@ -202,6 +242,12 @@ export default {
this.moveToCurrentTag()
})
},
closeAllTag(view){
this.$nextTick(()=>{
this.showall = false
this.closeAllTags(view)
})
},
closeAllTags(view) {
this.$tab.closeAllPage().then(({ visitedViews }) => {
if (this.affixTags.some(tag => tag.path === this.$route.path)) {
......@@ -257,6 +303,7 @@ export default {
height: 56px;
width: 100%;
background: #fff;
position: relative;
.tags-view-wrapper {
.tags-view-item {
display: inline-block;
......@@ -336,6 +383,68 @@ export default {
}
}
}
.alltags{
position: absolute;
align-items: center;
border-radius: 9px;
height: 17px;
justify-content: center;
width: 36px;
right: -46px;
bottom: 10px;
cursor: pointer;
text-align: center;
&:hover{
background: #EFEFEF;
}
.tagslist{
position: absolute;
right: 0;
top: 20px;
background-color: #fcfcfc;
color: #141414;
font-size: 13px;
line-height: 1em;
margin-bottom: 0;
max-height: 450px;
overflow-y: auto;
overflow-y: overlay;
padding: 20px 0 10px;
width: 325px;
text-align: left;
box-shadow: 0 2px 9px 2px rgba(0,0,0,.09), 0 1px 2px -2px rgba(0,0,0,.16);
.tags-view-item{
display: block;
position: relative;
>div{
padding: 8px 24px;
}
&:hover{
color: #0081FF;
}
.el-icon-check{
display: none;
position: absolute;
left: 5px;
width: 13px;
}
&.active{
color: #0081FF;
.el-icon-check{
display: block;
}
}
}
.clasall{
border-top: 1px solid #EFEFEF;
padding: 10px 24px 0;
margin-top: 10px;
&:hover{
color: #0081FF;
}
}
}
}
}
</style>
......
......@@ -7,7 +7,7 @@
<div class="app-container">
<el-card class="box-card noborder">
<div class="tables">
<div class="empty" v-if="tableData.total==0">
<div class="empty" v-if="tableData.total==0 && !isSkeleton">
<img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
......@@ -25,8 +25,9 @@
<div class="btn btn_primary h32 p10" @click="opennew"><div class="img img1"></div>添加客户</div>
</div>
</div>
<el-table v-if="tableData.total > 0"
:data="tableData.rows"
<skeleton v-if="isSkeleton"></skeleton>
<el-table v-if="!isSkeleton&&tableData.total > 0" class="fixed-table"
:data="tableData.rows"
stripe border
style="width: 100%">
<el-table-column
......@@ -42,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>
......@@ -159,8 +164,11 @@
label="主营业务" width="400">
<template slot-scope="scope">
<div v-if="scope.row.mainBusiness == null || scope.row.mainBusiness == ''">--</div>
<div class="box" v-else-if="scope.row.sq1==true">{{scope.row.mainBusiness1}}...<span @click="sq1(scope.row,false)">更多</span></div>
<div class="box" v-else>{{scope.row.mainBusiness}}<span @click="sq1(scope.row,true)">收起</span></div>
<div v-if="scope.row.mainBusiness1">
<div class="box" v-if="scope.row.sq1==true">{{scope.row.mainBusiness1}}...<span @click="sq1(scope.row,false)">更多</span></div>
<div class="box" v-else>{{scope.row.mainBusiness}}<span @click="sq1(scope.row,true)">收起</span></div>
</div>
<div v-else>{{scope.row.mainBusiness}}</div>
</template>
</el-table-column>
<el-table-column
......@@ -168,8 +176,11 @@
label="发包属性" width="400">
<template slot-scope="scope">
<div v-if="scope.row.companyAttribute == null || scope.row.companyAttribute == ''">--</div>
<div class="box" v-else-if="scope.row.sq2==true">{{scope.row.companyAttribute1}}...<span @click="sq2(scope.row,false)">更多</span></div>
<div class="box" v-else>{{scope.row.companyAttribute}}<span @click="sq2(scope.row,true)">收起</span></div>
<div v-if="scope.row.companyAttribute1">
<div class="box" v-if="scope.row.sq2==true">{{scope.row.companyAttribute1}}...<span @click="sq2(scope.row,false)">更多</span></div>
<div class="box" v-else>{{scope.row.companyAttribute}}<span @click="sq2(scope.row,true)">收起</span></div>
</div>
<div v-else>{{scope.row.companyAttribute}}</div>
</template>
</el-table-column>
<el-table-column
......@@ -239,17 +250,18 @@
</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 axios from 'axios'
import {encodeStr} from "@/assets/js/common"
export default {
import skeleton from '../../project/projectList/component/skeleton'
import { encodeStr } from '@/assets/js/common'
export default {
name: 'CustomList',
components:{batchimport},
components:{batchimport,skeleton},
data() {
return{
encodeStr,
......@@ -297,6 +309,7 @@ export default {
// isNew:true,
showlist:false,
keys:1,
isSkeleton:true,
}
},
created() {
......@@ -343,6 +356,7 @@ export default {
//获取客户列表
getCustomerList(){
getCustomerList(this.searchParam).then(result=>{
this.isSkeleton = false
this.tableData = result
this.tableData.rows.forEach(item=>{
item.registerCapital = item.registerCapital == null?null: item.registerCapital.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')
......@@ -358,6 +372,7 @@ export default {
}else{
item.sq2 = false
}
// console.log(item)
})
})
},
......@@ -378,6 +393,7 @@ export default {
},
//翻页
handleCurrentChange(val) {
this.isSkeleton = true
this.pldr=false
// this.isNew = false
this.searchParam.pageNum=val
......@@ -584,8 +600,8 @@ export default {
}
.tables{
position: relative;
height: calc(100vh - 134px);
overflow: auto;
min-height: calc(100vh - 134px);
/*overflow: auto;*/
.empty{
position: absolute;
top: 50%;
......
......@@ -3,7 +3,7 @@
<div class="app-container">
<el-card class="box-card noborder">
<div class="tables">
<div class="empty" v-if="tableData.total==0">
<div class="empty" v-if="tableData.total==0&& !isSkeleton">
<img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
......@@ -17,7 +17,8 @@
<div class="total">{{tableData.total}}</div>
</div>
</div>
<el-table v-if="tableData.total > 0"
<skeleton v-if="isSkeleton"></skeleton>
<el-table v-if="!isSkeleton&&tableData.total > 0" class="fixed-table"
:data="tableData.rows"
stripe border
style="width: 100%">
......@@ -34,19 +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>
</div>
</div>
<div class="delform" v-if="scope.row.companyName == '重庆市永川区惠通建设发展有限公司'">
<div class="words">再次认领将会恢复默认客户数据</div>
<div>
<div class="btnsmall btn_primary h28" >确定</div>
<div class="btnsmall btn_cancel h28" >取消</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>
......@@ -157,8 +153,11 @@
label="主营业务" width="400">
<template slot-scope="scope">
<div v-if="scope.row.mainBusiness == null || scope.row.mainBusiness == ''">--</div>
<div class="box" v-else-if="scope.row.sq1==true">{{scope.row.mainBusiness1}}...<span @click="sq1(scope.row,false)">更多</span></div>
<div class="box" v-else>{{scope.row.mainBusiness}}<span @click="sq1(scope.row,true)">收起</span></div>
<div v-if="scope.row.mainBusiness1">
<div class="box" v-if="scope.row.sq1==true">{{scope.row.mainBusiness1}}...<span @click="sq1(scope.row,false)">更多</span></div>
<div class="box" v-else>{{scope.row.mainBusiness}}<span @click="sq1(scope.row,true)">收起</span></div>
</div>
<div v-else>{{scope.row.mainBusiness}}</div>
</template>
</el-table-column>
<el-table-column
......@@ -166,8 +165,11 @@
label="发包属性" width="400">
<template slot-scope="scope">
<div v-if="scope.row.companyAttribute == null || scope.row.companyAttribute == ''">--</div>
<div class="box" v-else-if="scope.row.sq2==true">{{scope.row.companyAttribute1}}...<span @click="sq2(scope.row,false)">更多</span></div>
<div class="box" v-else>{{scope.row.companyAttribute}}<span @click="sq2(scope.row,true)">收起</span></div>
<div v-if="scope.row.companyAttribute1">
<div class="box" v-if="scope.row.sq2==true">{{scope.row.companyAttribute1}}...<span @click="sq2(scope.row,false)">更多</span></div>
<div class="box" v-else>{{scope.row.companyAttribute}}<span @click="sq2(scope.row,true)">收起</span></div>
</div>
<div v-else>{{scope.row.companyAttribute}}</div>
</template>
</el-table-column>
<el-table-column
......@@ -188,6 +190,13 @@
:total="tableData.total">
</el-pagination>
</div>
<div class="delform" v-if="RLcompanyName">
<div class="words">再次认领将会恢复默认客户数据</div>
<div>
<div class="btnsmall btn_primary h28" @click="RL">确定</div>
<div class="btnsmall btn_cancel h28" @click="RLcompanyName = ''">取消</div>
</div>
</div>
</div>
</el-card>
</div>
......@@ -201,15 +210,18 @@
import {getEnterprise,getDictType,} from '@/api/main'
import {encodeStr} from "@/assets/js/common"
import { historyClaim } from "@/api/common" //认领
import skeleton from '../../project/projectList/component/skeleton'
export default {
name: 'CustomList',
components:{skeleton},
data() {
return{
encodeStr,
searchParam:{
companyName:'',
pageNum:1,
pageSize:20
pageSize:20,
status:1,
},
tableData: [],//列表
......@@ -226,12 +238,13 @@ export default {
// isNew:true,
showlist:false,
keys:1,
RLcompanyName:'',//重新认领企业名称
isSkeleton:true,
}
},
created() {
this.getCustomerList()
this.getDictType()
this.prvinceTree()
},
methods:{
sq1(item,sq){
......@@ -266,6 +279,7 @@ export default {
//获取客户列表
getCustomerList(){
getCustomerList(this.searchParam).then(result=>{
this.isSkeleton = false
this.tableData = result
this.tableData.rows.forEach(item=>{
item.registerCapital = item.registerCapital == null?null: item.registerCapital.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')
......@@ -296,13 +310,15 @@ export default {
},
//认领客户
async toRL(row){
let param = row.companyName
let res = await historyClaim(param)
this.RLcompanyName = row.companyName
},
async RL(){
let res = await historyClaim(this.RLcompanyName)
if(res.code==200){
this.$message.success('认领成功!')
this.handleCurrentChange(1)
this.RLcompanyName=''
}
},
clearname(value){
if(value == ""){
......@@ -311,6 +327,7 @@ export default {
},
//翻页
handleCurrentChange(val) {
this.isSkeleton = true
this.searchParam.pageNum=val
this.getCustomerList()
},
......@@ -320,9 +337,14 @@ export default {
<style lang="scss" scoped>
.delform{
right: 5px;
top: 40px;
width: 228px;
left: 50%;
top: 50%;
margin-left: -114px;
margin-top: -57px;
.words{
font-size: 14px;
}
}
.app-container{
height: calc(100vh - 134px)
......
......@@ -118,9 +118,10 @@
</template>
<script>
import "@/assets/styles/project.scss"
import * as echarts from 'echarts'
export default {
import '@/assets/styles/project.scss'
import * as echarts from 'echarts'
export default {
name: 'Overview',
data() {
return {
......@@ -192,9 +193,9 @@ export default {
initChart(){
//客户级别
this.option = {
tooltip: {
trigger: 'item'
trigger: 'item',
extraCssText: 'border:0',
},
color:['#8A82F3','#5B9CF7','#8DCF96','#FFDC6B','#FE9C77'],//修改配色
series: [
......@@ -203,17 +204,17 @@ export default {
type: 'pie',
radius: ['50%','70%'],
data: [
{ value: 23, name: '集团总部:11%' },
{ value: 61, name: '一级单位:29%' },
{ value: 60, name: '二级单位:29%' },
{ value: 21, name: '三级单位:10%' },
{ value: 44, name: '其他单位: 21%' }
{ value: 23, name: '集团总部:11%',borderWidth:0 },
{ value: 61, name: '一级单位:29%',borderWidth:0 },
{ value: 60, name: '二级单位:29%',borderWidth:0 },
{ value: 21, name: '三级单位:10%',borderWidth:0 },
{ value: 44, name: '其他单位: 21%',borderWidth:0 }
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
shadowColor: 'rgba(0, 0, 0, 0)'
}
}
}
......@@ -267,7 +268,14 @@ export default {
}
}
}
]
],
emphasis: {
itemStyle: {
// 高亮时点的颜色。
color: 'rgb(90,146,247)'
},
}
}
this.option2 && this.myChart2.setOption(this.option2)
//客户资质分析
......@@ -317,7 +325,14 @@ export default {
},
}
}
]
],
emphasis: {
itemStyle: {
// 高亮时点的颜色。
color: 'rgb(134,231,231)'
},
}
}
this.option3 && this.myChart3.setOption(this.option3)
......@@ -358,6 +373,7 @@ export default {
axisPointer:{ //悬浮于圆点展示标签
type:'axis'
},
extraCssText: 'border:0',
// trigger: 'axis'
},
series: [
......
......@@ -169,7 +169,7 @@ export default {
.headForm{
margin-bottom: 14px;
.common-title{
margin-right: 19px;
margin-right: 24px;
}
::v-deep .el-input__inner{
border: 1px solid #D9D9D9;
......@@ -210,10 +210,12 @@ export default {
display: flex;
border-radius: 2px 0px 0px 2px;
border: 1px solid #D9D9D9;
line-height: 32px;
height: 32px;
span {
width: 60px;
height: 32px;
line-height: 32px;
height: 30px;
line-height: 28px;
font-size: 14px;
background: #F5F5F5;
text-align: center;
......@@ -234,9 +236,12 @@ export default {
flex: 1;
}
::v-deep .el-input__inner {
border-radius: 2px 0 2px 0;
border: 0;
border-right: 0;
line-height: 30px;
height: 30px;
position: absolute;
top: 0;
padding-right: 32px;
}
}
.fromTime{
......@@ -251,6 +256,11 @@ export default {
.fromTime-icon {
display: none;
}
.el-select{
.el-input__suffix{
right: 10px;
}
}
}
::v-deep .form-content-width{
width: 170px;
......
<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" />
......
......@@ -199,9 +199,12 @@ export default {
},
color: ['#5B9CF7','#8DCF96','#FFDC6B','#FE9C77','#8A82F3'],
legend: {
selectedMode: false,
x: 'center',
y: 'bottom',
itemHeight: 9,
itemWidth:12,
itemHeight:8,
textStyle: {
padding: [0, 0, -2, 0],
color: '#000000',
......@@ -248,6 +251,30 @@ export default {
// 使用刚指定的配置项和数据显示图表。
myChart.clear() //清空
myChart.setOption(option)
// 默认高亮
let index = 0; // 高亮索引
myChart.dispatchAction({
type: "highlight",
seriesIndex: index,
dataIndex: index
});
myChart.on("mouseover", function(e) {
if (e.dataIndex != index) {
myChart.dispatchAction({
type: "downplay",
seriesIndex: 0,
dataIndex: index
});
}
});
myChart.on("mouseout", function(e) {
index = e.dataIndex;
myChart.dispatchAction({
type: "highlight",
seriesIndex: 0,
dataIndex: e.dataIndex
});
});
}
}
}
......
......@@ -102,5 +102,9 @@ export default {
}
}
}
::v-deep .el-input__inner{
padding-left: 10px;
padding-right: 22px;
}
}
</style>
......@@ -30,22 +30,24 @@
<span class="zbph-item-num">{{dataAll.bidAmount?parseFloat(dataAll.bidAmount.toFixed(6)):'--'}}</span></div>
</div>
<div class="zbph-account">招标动态
<div class="labels">
<div class="labels" v-if="dataAll.totalCount">
<div :class="{'on':datatype==3}" @click="getDT(3)">近7天</div>
<div :class="{'on':datatype==2}" @click="getDT(2)">近30天</div>
<div :class="{'on':datatype==1}" @click="getDT(1)">近5年</div>
</div>
</div>
<div id="myEcharts" style="width: 100%;height:250px; margin: 0 auto;"></div>
<div v-if="dataAll.totalCount" id="myEcharts" style="height:250px; margin: 0 auto;"></div>
<div class="bid-no-data" v-else>
<no-data />
</div>
</template>
<div class="bid-no-data" v-else>
<no-data />
</div>
</div>
<div class="bid-ywwl">
<div class="common-title">业务往来供应商TOP5</div>
<div class="table-item">
<el-table
v-if="tableData.length>0"
:data="tableData"
style="width: 100%"
>
......@@ -80,12 +82,10 @@
<span style="padding-right: 28px;">{{ scope.row.amount }}</span>
</template>
</el-table-column>
<template slot="empty">
<div style="padding: 30px 0">
<no-data />
</div>
</template>
</el-table>
<div class="bid-no-data" style="margin-top: 100px;" v-else>
<no-data />
</div>
</div>
</div>
</div>
......@@ -105,7 +105,7 @@ export default {
data() {
return {
encodeStr,
datatype:'3',//切换类型
datatype:'1',//切换类型
dataAll: {},
dtdata:[],//数据
dttime:[],//坐标
......@@ -166,7 +166,7 @@ export default {
}
},
grid:{
left:'1',
left:'1%',
top:'8%',
right:'5%',
bottom:'8%',
......
......@@ -7,13 +7,13 @@
</el-tabs>
<div class="flex-box clue-box">
<div class="clue-echarts" v-if="viewData.length>0"><div id="echartsClue" style="width: 100%;height:300px; margin: 0 auto;"></div></div>
<div class="busc-no-data" v-else>
<no-data />
</div>
<div class="table-item">
<div class="table-item" v-if="viewData.length>0">
<el-table
v-if="viewData.length>0"
:data="viewData"
border
max-height="231"
style="width: 100%"
:default-sort = "{prop: 'date', order: 'descending'}"
>
......@@ -30,13 +30,11 @@
align="right"
label="占比(%)">
</el-table-column>
<template slot="empty">
<div style="padding: 30px 0">
<no-data />
</div>
</template>
</el-table>
</div>
<div class="busc-no-data" v-else>
<no-data />
</div>
</div>
<div class="flex-box clue-type">
<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>
......@@ -197,7 +195,7 @@ export default {
width: calc(50% - 8px);
}
.busc-no-data{
width: calc(50% - 8px);
width: 100%;
}
.table-item{
width: calc(50% - 8px);
......
<template>
<div class="app-container finance-container">
<div class="common-title">财务数据
<el-tooltip placement="top">
<div slot="content">营业收入数据优先取“营业总收入”<br/>营业总收入未披露时取“营业收入”</div>
<img style="width: 18px; height: 18px;margin-left:9px;" src="@/assets/images/detail/overview/zbph_question.png" >
</el-tooltip>
</div>
<el-tabs v-model="activeIndex" @tab-click="handleQuery(vals[activeIndex])" class="tabpane selfTab">
<el-tab-pane label="营业收入" name="0"></el-tab-pane>
<el-tab-pane label="净利润" name="1"></el-tab-pane>
<el-tab-pane label="总资产" name="2"></el-tab-pane>
<el-tab-pane label="净资产" name="3"></el-tab-pane>
</el-tabs>
<div class="flex-box finance-box">
<div class="finance-echarts" v-if="viewData.length>0"><div id="echartsFinance" style="width: 100%;height:300px; margin: 0 auto;"></div></div>
<div class="finance-no-data" v-else>
<no-data />
</div>
<div class="table-item" v-if="viewData.length>0">
<el-table
:data="viewData"
border
style="width: 100%"
:default-sort = "{prop: 'date', order: 'descending'}"
>
<el-table-column label="币种:人民币">
<el-table-column
prop="year"
align="left"
label="报告期(年度)"></el-table-column>
<el-table-column
prop="operatingIncome"
align="right"
label="营业收入(亿)">
</el-table-column>
<el-table-column
prop="netProfit"
align="right"
label="净利润(亿)">
</el-table-column>
<el-table-column
prop="totalAssets"
align="right"
label="总资产(亿)">
</el-table-column>
<el-table-column
prop="netAssets"
align="right"
label="净资产(亿)">
</el-table-column>
</el-table-column>
</el-table>
</div>
</div>
</div>
</template>
<script>
import {financialData} from '@/api/detail/party-a/overview'
import * as echarts from 'echarts'
import NoData from '../../component/noData'
export default {
name: 'Finance',
props: ['companyId'],
components: {
NoData
},
data() {
return {
viewData:[],
activeIndex:0,
vals:['operatingIncome','netProfit','totalAssets','netAssets'],
names:['营业收入(亿)','净利润(亿)','总资产(亿)','净资产(亿)'],
}
},
created() {
this.handleQuery()
},
mounted() {
},
methods: {
async handleQuery(val){
let res = await financialData({cid: this.companyId})
if(res.code==200 && res.data){
this.viewData = res.data
if(this.viewData.length>0){
this.$nextTick(() => {
this.getDT(val)
})
}
}
},
getDT(val="operatingIncome"){
let myChart = echarts.init(document.getElementById("echartsFinance"))
let barData = [],years = [],compareData = [];
this.viewData.map(item=>{
barData.push(item[val+'Size'].toFixed(2));
compareData.push(item[val+'Compare']||'');
years.push(item.year)
})
// let compareDataMax = Math.max(...compareData)
// let compareDataMin = Math.min(...compareData)
let option = {
legend: {
show:true,
width: "100%",
left: 'center',
bottom:0,
textStyle: {
width: 120,
padding: [0, 26, 0, 0],
backgroundColor: "transparent",
},
itemWidth: 18,
itemHeight: 8,
data: [this.names[this.activeIndex], '同比(%)']
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '3%',
right: '4%',
bottom: '32',
containLabel: true
},
xAxis: [
{
type: 'category',
data: years,
axisTick: {
alignWithLabel: true,
show: false
}
}
],
yAxis: [
{
type: 'value',
// min:0,
splitLine : { //网格线
lineStyle: {
type: 'dashed' //设置网格线类型 dotted:虚线 solid:实线
},
}
},
{
type: 'value',
// min:'dataMin',
// max:'dataMax',
// interval:((compareDataMax-compareDataMin)/5).toFixed(2),
splitLine : { //网格线
show:false
},
axisLabel: {
formatter: '{value}%'
}
}
],
series: [
{
name: this.names[this.activeIndex],
type: 'bar',
barWidth: '20px',
data: barData,
itemStyle:{
normal:{
barBorderRadius:[4,4,0,0],
color:'#14C9C9'
},
}
},
{
name: '同比(%)',
symbolSize: 12, //标记的大小(折线图圆点大小)
label: {
color: "#666666",
},
lineStyle: {
color: "#0081FF",
width: 1
},
itemStyle: {
color: "#0081FF"
},
type: 'line',
yAxisIndex: 1,
data: compareData
},
],
emphasis: {
itemStyle: {
// 高亮时点的颜色。
color: 'rgb(134,231,231)'
},
}
}
myChart.setOption(option)
},
},
}
</script>
<style lang="scss" scoped>
.finance-container{
margin: 0;
padding: 24px 16px;
background: #FFFFFF;
border-radius: 4px;
.selfTab{
margin: 24px 0 0 -12px;
::v-deep .el-tabs__nav-wrap::after{
display: none;
}
::v-deep .el-tabs__item{
height: 30px;
line-height: 30px;
padding: 0 12px;
}
}
.finance-box{
width: 100%;
justify-content: space-between;
margin: 8px 0 24px 0;
.finance-echarts{
width: calc(50% - 8px);
}
.finance-no-data{
width: 100%;
}
.table-item{
width: calc(50% - 8px);
}
}
}
</style>
......@@ -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;
......
......@@ -4,7 +4,7 @@
<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-tab-pane label="分支机构" name="third"></el-tab-pane>
<el-tab-pane label="分支机构" :disabled="affiliatesTotal<1" name="third"></el-tab-pane>
</el-tabs>
<div class="table-item">
<div class="rela-person" v-show="activeName=='first'">实际控制人:{{financial&&financial.actualController || '--'}}</div>
......@@ -35,13 +35,8 @@
<span>{{scope.row.businessStatus || '--'}}</span>
</template>
</el-table-column>
<template slot="empty">
<div style="padding: 30px 0">
<no-data />
</div>
</template>
</el-table>
<el-table :data="shipData" border style="width: 100%" v-show="activeName=='second'">
<el-table v-if="shipData.length>0" :data="shipData" border style="width: 100%" v-show="activeName=='second'">
<el-table-column label="序号" width="55" align="left" fixed>
<template slot-scope="scope">{{ shipParams.pageNum * shipParams.pageSize - shipParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
......@@ -64,12 +59,8 @@
<el-table-column prop="investStartDate" label="成立日期"></el-table-column>
<el-table-column prop="stockPercentage" label="股权占比"></el-table-column>
<el-table-column prop="shouldCapi" label="认缴出资额(万元)"></el-table-column>
<template slot="empty">
<div style="padding: 30px 0">
<no-data />
</div>
</template>
</el-table>
<no-data v-if="activeName=='second'&&shipData.length<1"/>
<el-table :data="affiliatesData" border style="width: 100%" v-show="activeName=='third'">
<el-table-column label="序号" width="55" align="left" >
<template slot-scope="scope">{{ affiliatesParams.pageNum * affiliatesParams.pageSize - affiliatesParams.pageSize + scope.$index + 1 }}</template>
......
<template>
<div class="app-container clue-container">
<div class="common-title">风险概览</div>
<div class="flex-box clue-box">
<div class="flex-box clue-box" v-if="count>0">
<div class="clue-echarts"><div id="echartsRisk" style="width: 100%;height:300px; margin: 0 auto;"></div></div>
<div class="table-item">
<el-table
......@@ -28,14 +28,10 @@
<span>{{ scope.row.bl }}</span>
</template>
</el-table-column>
<template slot="empty">
<div style="padding: 30px 0">
<no-data />
</div>
</template>
</el-table>
</div>
</div>
<no-data v-else/>
</div>
</template>
......@@ -123,7 +119,8 @@ export default {
tz:'',
bl:''
},
]
],
count:0,
}
},
created() {
......@@ -145,6 +142,11 @@ export default {
this.viewData.sort((a, b) => {
return a.value < b.value ? 1 : -1;
})
for(var i in this.viewData){
if(this.viewData[i].value>0){
this.count = this.viewData[i].value
}
}
this.getDT()
},
getDT(){
......@@ -172,6 +174,8 @@ export default {
bottom: 20,
data: this.viewData,
pageButtonPosition: 'end',
itemWidth:12,
itemHeight:8,
},
color: ['#8A82F3','#5B9CF7','#43BBE0','#8ECF95','#FFDC6B', '#FE9C77', '#E8649B', '#8A82F3'],
series: [
......
......@@ -3,6 +3,7 @@
<div class="common-title">高管</div>
<div class="table-item">
<el-table
v-if="tableData.length>0"
:data="tableData"
border
style="width: 100%"
......@@ -26,12 +27,8 @@
<el-table-column
prop="userJobs"
label="职务"></el-table-column>
<template slot="empty">
<div style="padding: 30px 0">
<no-data />
</div>
</template>
</el-table>
<no-data v-else/>
</div>
</div>
</template>
......
......@@ -10,6 +10,7 @@
<tables
:tableLoading="tableLoading"
:tableData="tableData"
:tableDataTotal="tableDataTotal"
:forData="forData"
:isIndex="false"
:queryParams="queryParams"
......
......@@ -4,6 +4,7 @@
<div class="view-content"><Operations :companyId="companyId" :financial="financial" /></div><!-- 公司经营 -->
<div class="view-content"><Bidding :companyId="companyId" /></div><!--招标偏好、业务往来-->
<div class="view-content"><Busclue :companyId="companyId" :statistic="statistic" /></div><!--商机线索-->
<div class="view-content"><Finance :companyId="companyId" /></div><!--财务数据-->
<div class="view-content"><Relationship :companyId="companyId" :financial="financial" /></div><!--关系企业-->
<div class="view-content"><Senior :companyId="companyId" /></div><!--高管-->
<div class="view-content"><Risk :companyId="companyId" :statistic="statistic" /></div><!--风险概览-->
......@@ -18,6 +19,7 @@ import Infoheader from "./component/infoheader"
import Operations from "./component/operations"
import Bidding from "./component/bidding"
import Busclue from './component/busclue'
import Finance from './component/finance'
import Relationship from './component/relationship'
import Senior from './component/senior'
import Risk from './component/risk'
......@@ -33,6 +35,7 @@ export default {
Relationship,
Senior,
Risk,
Finance,
Tender
},
data() {
......
......@@ -27,7 +27,15 @@ export default {
if (this.$route.params.id) { // 获取companyId
this.loading = true
if(this.$route.name=='Company'){ //企业详情
this.src = `${this.domain}/enterprise/${this.$route.params.id}?ak=${this.ak}`
if(this.$route.query.html){
if(this.$route.query.type){
this.src = `${this.domain}/enterprise/${this.$route.params.id}/${this.$route.query.html}?flag=true&type=${this.$route.query.type}&ak=${this.ak}`
}else{
this.src = `${this.domain}/enterprise/${this.$route.params.id}/${this.$route.query.html}?ak=${this.ak}`
}
}else{
this.src = `${this.domain}/enterprise/${this.$route.params.id}?ak=${this.ak}`
}
}
if(this.$route.name=='Personnel'){ //人员详情
this.src = `${this.domain}/personnel/${this.$route.params.id}.html?ak=${this.ak}`
......
......@@ -614,25 +614,9 @@ export default {
});
},
mounted() {
window.addEventListener("scroll",this.scrolling)
this.init();
},
beforeDestroy() {
window.removeEventListener("scroll", this.scrolling);
},
methods: {
scrolling() {
let el = document.getElementsByClassName("el-table__fixed-header-wrapper")[0]
let el1 = document.getElementsByClassName("el-table")[0]
let scrollTop = document.documentElement.scrollTop ||document.body.scrollTop;
if (scrollTop>el1.offsetTop){
let top = scrollTop-el1.offsetTop-13
el.style.top = top+'px'
}else{
el.style.top = 0
}
},
domicileChange() {
let arr = this.$refs.address.getCheckedNodes();
let provinceIds = [],
......@@ -1271,9 +1255,14 @@ export default {
z-index: 9;
}
::v-deep .el-table__fixed-header-wrapper{
position: sticky;
z-index: 9;
top: 56px;
}
::v-deep .el-table__fixed{
overflow-x: clip;
overflow-y: clip;
}
}
.table-item-jf1{
......
......@@ -512,43 +512,43 @@
</template>
<template v-if="item.recentlyCount!=null">
<span class="right-title-grey">中标业绩:</span>
<router-link :to="toEnterprise(item.jskEid,'/performance')" target="_blank" >
<router-link :to="toEnterprise(item.jskEid,'performance')" target="_blank" >
<span class="right-title-blue" v-html="item.recentlyCount"> </span>
</router-link>
</template>
<template v-if="item.skyCount!=null">
<span class="right-title-grey">四库业绩:</span>
<router-link :to="toEnterprise(item.jskEid,'/performance',1)" target="_blank" >
<router-link :to="toEnterprise(item.jskEid,'performance',2)" target="_blank" >
<span class="right-title-blue" v-html="item.skyCount"> </span>
</router-link>
</template>
<template v-if="item.registeredPersonnelCount!=null">
<span class="right-title-grey">注册人员:</span>
<router-link :to="toEnterprise(item.jskEid,'/personnel',1)" target="_blank" >
<router-link :to="toEnterprise(item.jskEid,'personnel',2)" target="_blank" >
<span class="right-title-blue" v-html="item.registeredPersonnelCount"> </span>
</router-link>
</template>
<template v-if="item.threePersonnelCount!=null">
<span class="right-title-grey">三类人员:</span>
<router-link :to="toEnterprise(item.jskEid,'/personnel',4)" target="_blank" >
<router-link :to="toEnterprise(item.jskEid,'personnel',5)" target="_blank" >
<span class="right-title-blue" v-html="item.threePersonnelCount"> </span>
</router-link>
</template>
<template v-if="item.jskBidCount>0">
<span class="right-title-grey">招标公告:</span>
<router-link :to="toEnterprise(item.jskEid,'/business',6)" target="_blank" >
<router-link :to="toEnterprise(item.jskEid,'business',5)" target="_blank" >
<span class="right-title-blue" v-html="item.jskBidCount"> </span>
</router-link>
</template>
<template v-if="item.customerCount>0">
<span class="right-title-grey">客户:</span>
<router-link :to="toEnterprise(item.jskEid,'/business',1)" target="_blank" >
<router-link :to="toEnterprise(item.jskEid,'business',1)" target="_blank" >
<span class="right-title-blue" v-html="item.customerCount"> </span>
</router-link>
</template>
<template v-if="item.supplierCount>0">
<span class="right-title-grey">供应商:</span>
<router-link :to="toEnterprise(item.jskEid,'/business',2)" target="_blank" >
<router-link :to="toEnterprise(item.jskEid,'business',2)" target="_blank" >
<span class="right-title-blue" v-html="item.supplierCount"> </span>
</router-link>
</template>
......@@ -2626,6 +2626,7 @@
this.fieldOptions[i].status = false;
}
this.fieldText = this.fieldOptions[index].value;
this.orderText = this.fieldOptions[index].order;
this.fieldOptions[index].status = true;
this.search();
},
......@@ -2763,7 +2764,7 @@
},
toEnterprise(id, html,type) {
return '/company/' + encodeStr(id) + html + '/'+(type?'?flag=true&type='+type:'');
return '/company/' + encodeStr(id) + '/'+(html?'?html='+html:'')+(type?'&flag=true&type='+type:'');
},
toEnterpriseDetail(id) {
......
......@@ -7,7 +7,7 @@
<div style="position:relative" v-for="(itme,i) in personnelList"
:class="itme.status==true?'active':'' " :key='i' @click="personnelListbtn(i)">
<p>{{itme.value}}</p>
<img v-if="i==1" style="position: absolute;top:-10px;" src="@/assets/images/owner/tip.png" alt="">
<img v-if="i==1" style="position: absolute;top:-10px;width:80px;height:16px;" src="@/assets/images/owner/tip.png" alt="">
</div>
</div>
......
......@@ -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;
}
}
}
......
<template>
<el-skeleton animated>
<template slot="template">
<el-skeleton-item variant="text" style="width: 60%;"/>
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 60%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
</template>
</el-skeleton>
</template>
<script>
export default {
name: 'skeleton'
}
</script>
<style lang="scss" scoped>
.el-skeleton__item{
height: 20px;
border-radius: 0;
margin: 9px 0;
background: #f0f0f0;
}
</style>
......@@ -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++){
......@@ -144,9 +164,9 @@ export default {
list.push(item);
}
this.data=list;
if(list.length > 0){
// if(list.length > 0){
this.initChart()
}
// }
}
})
},
......@@ -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>
......@@ -203,6 +203,21 @@ export default {
.table-item{
margin-top: 22px;
::v-deep .el-table{
overflow:visible;
.el-table__header-wrapper{
position: sticky;
top:56px;
z-index: 9;
}
.el-table__fixed-header-wrapper{
position: sticky;
z-index: 9;
top: 56px;
}
.el-table__fixed{
overflow-x: clip;
overflow-y: clip;
}
th{
font-size: 12px !important;
font-weight: 400 !important;
......
......@@ -7,57 +7,57 @@
<div class="item-title"><i style="background: #4E8EFF;"></i>{{recentlyYear.year}}年GDP</div>
<div class="item-count">
<span>{{recentlyYear.gdp}}</span>亿
<img v-if="recentlyYear.gdpGrowth > 0" src="@/assets/images/economies/icon_up.png">
<img v-if="Number(recentlyYear.gdpCompare) > 0" src="@/assets/images/economies/icon_up.png">
<img v-else src="@/assets/images/economies/icon_down.png">
</div>
<div id="echartsGDP" style="height: 75px;"></div>
<div class="item-text up" v-if="Number(recentlyYear.gdpGrowth) > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.gdpGrowth}}%</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.gdpGrowth).toFixed(2).toString().substring(1)}}%</span></div>
<div class="item-text up" v-if="Number(recentlyYear.gdpCompare) > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.gdpCompare}}亿</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.gdpCompare).toString().substring(1)}}亿</span></div>
</div>
<div class="item">
<div class="item-title"><i style="background: #718AFF;"></i>{{recentlyYear.year}}年GDP增速</div>
<div class="item-count">
<span>{{recentlyYear.gdpGrowth}}</span>%
<img v-if="(recentlyYear.gdpGrowth-nextYearMap.gdpGrowth) > 0" src="@/assets/images/economies/icon_up.png">
<img v-if="Number(recentlyYear.gdpGrowthCompare) > 0" src="@/assets/images/economies/icon_up.png">
<img v-else src="@/assets/images/economies/icon_down.png">
</div>
<div id="echartsZS" style="height: 75px;"></div>
<div class="item-text up" v-if="(Number(getMoneyNum(recentlyYear.gdpGrowth))-Number(getMoneyNum(nextYearMap.gdpGrowth))) > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.gdpGrowthCompare}}%</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.gdpGrowthCompare).toFixed(2).toString().substring(1)}}%</span></div>
<div class="item-text up" v-if="Number(recentlyYear.gdpGrowthCompare) > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.gdpGrowthCompare}}%</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.gdpGrowthCompare).toString().substring(1)}}%</span></div>
</div>
<div class="item">
<div class="item-title"><i style="background: #3AD0D1;"></i>{{recentlyYear.year}}年人口</div>
<div class="item-count">
<span>{{recentlyYear.population}}</span>
<img v-if="recentlyYear.populationGrowthRate > 0" src="@/assets/images/economies/icon_up.png">
<img v-if="Number(recentlyYear.populationCompare) > 0" src="@/assets/images/economies/icon_up.png">
<img v-else src="@/assets/images/economies/icon_down.png">
</div>
<div id="echartsRK" style="height: 75px;"></div>
<div class="item-text up" v-if="Number(recentlyYear.populationGrowthRate) > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.populationGrowthRate}}%</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.populationGrowthRate).toFixed(2).toString().substring(1)}}%</span></div>
<div class="item-text up" v-if="Number(recentlyYear.populationCompare) > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.populationCompare}}</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.populationCompare).toString().substring(1)}}</span></div>
</div>
<div class="item">
<div class="item-title"><i style="background: #FFBE5D;"></i>{{recentlyYear.year}}年一般公共预算收入</div>
<div class="item-count">
<span>{{recentlyYear.gbr}}</span>亿
<img v-if="recentlyYear.gbrGrowth > 0" src="@/assets/images/economies/icon_up.png">
<img v-if="Number(recentlyYear.gbrCompare) > 0" src="@/assets/images/economies/icon_up.png">
<img v-else src="@/assets/images/economies/icon_down.png">
</div>
<div id="echartsSR" style="height: 75px;"></div>
<div class="item-text up" v-if="Number(recentlyYear.gbrGrowth) > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.gbrGrowth}}%</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.gbrGrowth).toFixed(2).toString().substring(1)}}%</span></div>
<div class="item-text up" v-if="Number(recentlyYear.gbrCompare) > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.gbrCompare}}亿</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.gbrCompare).toString().substring(1)}}亿</span></div>
</div>
<div class="item">
<div class="item-title"><i style="background: #FF8935;"></i>{{recentlyYear.year}}年地方政府债务余额</div>
<div class="item-count">
<span>{{recentlyYear.govDebtBalance}}</span>亿
<img v-if="recentlyYear.govDebtBalance > nextYearMap.govDebtBalance" src="@/assets/images/economies/icon_up.png">
<img v-if="Number(recentlyYear.govDebtBalanceCompare) > 0" src="@/assets/images/economies/icon_up.png">
<img v-else src="@/assets/images/economies/icon_down.png">
</div>
<div id="echartsYE" style="height: 75px;"></div>
<div class="item-text up" v-if="Number(getMoneyNum(recentlyYear.govDebtBalance)) > Number(getMoneyNum(nextYearMap.govDebtBalance))">
{{nextYearMap.year}}年上升<span>{{recentlyYear.govDebtBalanceCompare}}%</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{recentlyYear.govDebtBalanceCompare}}%</span></div>
<div class="item-text up" v-if="Number(recentlyYear.govDebtBalanceCompare) > 0">
{{nextYearMap.year}}年上升<span>{{recentlyYear.govDebtBalanceCompare}}亿</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.govDebtBalanceCompare).toString().substring(1)}}亿</span></div>
</div>
</div>
</div>
......@@ -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()
}
......@@ -823,6 +818,7 @@ export default {
.table-item{
margin-top: 22px;
::v-deep .el-table{
overflow:visible;
th{
font-size: 12px !important;
font-weight: 400 !important;
......@@ -836,6 +832,16 @@ export default {
.caret-wrapper{
width: 10px;
}
.el-table__body-wrapper{
overflow:visible;
}
.el-table__body{
tr:first-child{
position: sticky;
top:56px;
z-index: 9;
}
}
}
}
}
......
......@@ -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;
......
......@@ -24,16 +24,16 @@
</el-input>
<span class="total">{{tableDataTotal}}</span>
</div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="table-item">
<el-table
v-loading="tableLoading"
:data="tableData"
element-loading-text="Loading"
border
fit
@sort-change="sortChange"
highlight-current-row
v-if="tableDataTotal > 0"
v-if="tableDataTotal > 0 && !isSkeleton"
:default-sort = "{prop: 'skyCount', order: 'descending'}"
>
<el-table-column label="序号" width="60" align="left" fixed>
......@@ -69,7 +69,7 @@
</template>
</el-table-column>
</el-table>
<div class="empty" v-if="tableDataTotal === 0">
<div class="empty" v-if="tableDataTotal === 0 && !isSkeleton">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
......@@ -92,10 +92,10 @@
import aptitudeCode from '@/assets/json/aptitudeCode'
import { enterprise,location,getUipIdByCid } from '@/api/macro/macro'
import Region from '../component/region'
import skeleton from '../component/skeleton'
export default {
name: 'Enterprises',
components: {Region},
components: {Region,skeleton},
data() {
return {
encodeStr,
......@@ -124,6 +124,7 @@ export default {
provinceId:'',
show_page:true,
MaxPage:500,
isSkeleton:true
}
},
created() {
......@@ -145,8 +146,8 @@ export default {
scrolling() {
let el = document.getElementsByClassName("el-table__fixed-header-wrapper")[0]
let scrollTop =window.pageYOffset ||document.documentElement.scrollTop ||document.body.scrollTop;
if (scrollTop>135){
let top = scrollTop-138
if (scrollTop>197){
let top = scrollTop-197
el.style.top = top+'px'
}else{
el.style.top = 0
......@@ -166,6 +167,7 @@ export default {
this.aptitudeCodeList=aptitudeCode
},
async querySubmit(){
this.isSkeleton = true;
const params = { pageNum: this.pageIndex, pageSize: this.pageSize}
if(this.queryParams.field){
params.field=this.queryParams.field
......@@ -192,6 +194,7 @@ export default {
params.aptitudeQueryDto.aptitudeDtoList=aptitudeType
}
enterprise(params).then(res => {
this.isSkeleton = false
if(res.code === 200){
this.tableData=res.data.list;
this.tableDataTotal=res.data.total;
......@@ -421,15 +424,21 @@ export default {
}
}
::v-deep .el-table{
/*overflow:visible;*/
/*.el-table__header-wrapper{*/
/*position: sticky;*/
/*top:56px;*/
/*z-index: 9;*/
/*}*/
/*.el-table__fixed-header-wrapper{*/
/*z-index: 9;*/
/*}*/
overflow:visible;
.el-table__header-wrapper{
position: sticky;
top:56px;
z-index: 9;
}
.el-table__fixed-header-wrapper{
position: sticky;
z-index: 9;
top: 56px;
}
.el-table__fixed{
overflow-x: clip;
overflow-y: clip;
}
th{
font-size: 12px !important;
font-weight: 400 !important;
......
......@@ -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()
......
......@@ -295,5 +295,17 @@ export default {
}
.table-item{
padding: 16px 10px 16px 16px;
::v-deep .el-table{
/*.el-table__body-wrapper{*/
/*overflow:visible;*/
/*}*/
/*.el-table__body{*/
/*tr:first-child{*/
/*position: fixed;*/
/*top: 49px;*/
/*z-index: 9;*/
/*}*/
/*}*/
}
}
</style>
......@@ -28,16 +28,16 @@
<span class="flex-box" @click="handleMessage"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
</div>
</div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="table-item">
<el-table
v-loading="tableLoading"
class="fixed-table"
:data="tableData"
element-loading-text="Loading"
@sort-change="sortChange"
border
highlight-current-row
v-if="tableDataTotal > 0"
v-if="tableDataTotal > 0 && !isSkeleton"
:default-sort = "{prop: 'gdp', order: 'descending'}"
>
<el-table-column label="序号" width="60" align="left" fixed>
......@@ -96,7 +96,7 @@
<el-table-column label="社会消费品零售总额(亿元)" prop="trscg" :formatter="formatStatus" width="160" align="right"></el-table-column>
<el-table-column label="城镇居民人均可支配收入(元)" prop="urbanPcdi" :formatter="formatStatus" width="160" align="right"></el-table-column>
</el-table>
<div class="empty" v-if="tableDataTotal === 0">
<div class="empty" v-if="tableDataTotal === 0 && !isSkeleton">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
......@@ -117,11 +117,12 @@
import { nationalPage,getYears } from '@/api/macro/macro'
import dataRegion from '@/assets/json/dataRegion'
import economiesDetail from './economies-detail'
import skeleton from '../../component/skeleton'
import axios from 'axios'
export default {
name: 'NationalEconomies',
components: {
economiesDetail
economiesDetail,skeleton
},
data() {
return {
......@@ -142,7 +143,8 @@
pageSize: 20,
tableDataTotal: null,
show_page:true,
MaxPage:500
MaxPage:500,
isSkeleton:true
}
},
created() {
......@@ -151,17 +153,17 @@
this.getYears()
},
mounted() {
window.addEventListener("scroll",this.scrolling)
// window.addEventListener("scroll",this.scrolling)
},
beforeDestroy() {
window.removeEventListener("scroll", this.scrolling);
// window.removeEventListener("scroll", this.scrolling);
},
methods: {
scrolling() {
// let el = document.getElementsByClassName("el-table__fixed-header-wrapper")[0]
// let scrollTop =window.pageYOffset ||document.documentElement.scrollTop ||document.body.scrollTop;
// if (scrollTop>135){
// let top = scrollTop-136
// if (scrollTop>138){
// let top = scrollTop-138
// el.style.top = top+'px'
// }else{
// el.style.top = 0
......@@ -227,7 +229,7 @@
},
// 查询提交
async querySubmit() {
this.tableLoading = true
this.isSkeleton = true
const params = { pageNum: this.pageIndex, pageSize: this.pageSize, year: this.queryParams.year,type:1 }
if(this.queryParams.address){
let arr = this.$refs.address.getCheckedNodes();
......@@ -272,7 +274,7 @@
}
nationalPage(params).then(res => {
this.tableLoading = false
this.isSkeleton = false
this.tableData = res.data.list;
this.tableDataTotal = res.data.totalCount
})
......@@ -401,15 +403,21 @@
}
}
::v-deep .el-table{
/*overflow:visible;*/
/*.el-table__header-wrapper{*/
/*position: sticky;*/
/*top:56px;*/
/*z-index: 9;*/
/*}*/
/*.el-table__fixed-header-wrapper{*/
/*z-index: 9;*/
/*}*/
overflow:visible;
.el-table__header-wrapper{
position: sticky;
top:56px;
z-index: 9;
}
.el-table__fixed-header-wrapper{
position: sticky;
z-index: 9;
top: 56px;
}
.el-table__fixed{
overflow-x: clip;
overflow-y: clip;
}
th{
font-size: 12px !important;
font-weight: 400 !important;
......
......@@ -346,6 +346,7 @@ export default {
axisPointer:{ //悬浮于圆点展示标签
type:'axis'
},
extraCssText: 'border:0',
// trigger: 'axis'
},
legend: {
......
......@@ -75,10 +75,10 @@
projectName:'',// 项目名称
companyId:'',//企业id
ownerCompany:'',//业主单位
projectStage:'',//项目阶段
projectType:'',//项目类型
projectCategory:'',//项目类别
investmentAmount:'',//投资估算
projectStage:null,//项目阶段
projectType:null,//项目类型
projectCategory:null,//项目类别
investmentAmount:null,//投资估算
isPrivate:0,//可见范围(0 仅自己可见,1 他人可见)
},
rules:{
......@@ -169,10 +169,10 @@
projectName:'',// 项目名称
companyId:'',//企业id
ownerCompany:'',//业主单位
projectStage:'',//项目阶段
projectType:'',//项目类型
projectCategory:'',//项目类别
investmentAmount:'',//投资估算
projectStage:null,//项目阶段
projectType:null,//项目类型
projectCategory:null,//项目类别
investmentAmount:null,//投资估算
isPrivate:0,//可见范围(0 仅自己可见,1 他人可见)
},
this.showlist = false
......
......@@ -61,69 +61,71 @@
</div>
</div>
</div>
<div class="recordlist" v-if="showtype=='gjdt'">
<div class="rec_detail" v-for="(item,index) in recordlist.rows">
<div class="delform" v-if="isdel && delID == item.id">
<div class="words">是否删除该条记录</div>
<div>
<div class="btnsmall btn_primary h28" @click="delele">确定</div>
<div class="btnsmall btn_cancel h28" @click="isdel=false">取消</div>
<skeleton v-if="isSkeleton" style="padding-top: 16px"></skeleton>
<div v-else>
<div class="recordlist" v-if="showtype=='gjdt'">
<div class="rec_detail" v-for="(item,index) in recordlist.rows">
<div class="delform" v-if="isdel && delID == item.id">
<div class="words">是否删除该条记录</div>
<div>
<div class="btnsmall btn_primary h28" @click="delele">确定</div>
<div class="btnsmall btn_cancel h28" @click="isdel=false">取消</div>
</div>
</div>
</div>
<div class="rec_time">
<i class="el-icon-time"></i>
<div>{{item.createTime && item.createTime.slice(0, 16)}}</div>
<div class="operate">
<!--<img src="@/assets/images/edit.png">第一期不做编辑-->
<img @click="delRecord(item.id)" src="@/assets/images/delete.png">
<div class="rec_time">
<i class="el-icon-time"></i>
<div>{{item.createTime && item.createTime.slice(0, 16)}}</div>
<div class="operate">
<!--<img src="@/assets/images/edit.png">第一期不做编辑-->
<img @click="delRecord(item.id)" src="@/assets/images/delete.png">
</div>
</div>
</div>
<div class="rec_con">
<div><strong>{{item.nickName}}</strong> <span v-if="item.visitMode">({{item.visitMode}})</span></div>
<div><span>{{item.content}}</span></div>
<div class="rec_text">
<span v-if="item.name">拜访对象:{{item.name||'--'}}</span>
<span v-if="showtype == 'gjdt' && item.companyName != ''">关联企业:{{item.companyName}}</span>
<span v-if="item.position">职位:{{item.position}}</span>
<span v-if="item.visitTime">拜访时间:{{item.visitTime.slice(0, 10)}}</span>
<span v-if="item.nextVisitTime">下次拜访时间:{{item.nextVisitTime.slice(0, 10)}}</span>
<div class="rec_con">
<div><strong>{{item.nickName}}</strong> <span v-if="item.visitMode">({{item.visitMode}})</span></div>
<div><span>{{item.content}}</span></div>
<div class="rec_text">
<span v-if="item.name">拜访对象:{{item.name||'--'}}</span>
<span v-if="showtype == 'gjdt' && item.companyName != ''">关联企业:{{item.companyName}}</span>
<span v-if="item.position">职位:{{item.position}}</span>
<span v-if="item.visitTime">拜访时间:{{item.visitTime.slice(0, 10)}}</span>
<span v-if="item.nextVisitTime">下次拜访时间:{{item.nextVisitTime.slice(0, 10)}}</span>
</div>
</div>
</div>
</div>
</div>
<div class="recordlist" v-if="showtype=='gjjl' || showtype == 'projectgjdt' && recordlist.total>0">
<div class="rec_detail" v-for="(item,index) in recordlist.rows">
<div class="delform" v-if="isdel && delID == item.id">
<div class="words">是否删除该条记录</div>
<div>
<div class="btnsmall btn_primary h28" @click="delele">确定</div>
<div class="btnsmall btn_cancel h28" @click="isdel=false">取消</div>
<div class="recordlist" v-if="showtype=='gjjl' || showtype == 'projectgjdt' && recordlist.total>0">
<div class="rec_detail" v-for="(item,index) in recordlist.rows">
<div class="delform" v-if="isdel && delID == item.id">
<div class="words">是否删除该条记录</div>
<div>
<div class="btnsmall btn_primary h28" @click="delele">确定</div>
<div class="btnsmall btn_cancel h28" @click="isdel=false">取消</div>
</div>
</div>
</div>
<div class="rec_time">
<i class="el-icon-time"></i>
<div>{{item.creatTime}}</div>
<div class="operate" v-if="isDisableds == false">
<!--<img src="@/assets/images/edit.png">第一期不做编辑-->
<img @click="delRecord(item.id)" src="@/assets/images/delete.png">
<div class="rec_time">
<i class="el-icon-time"></i>
<div>{{item.creatTime}}</div>
<div class="operate" v-if="isDisableds == false">
<!--<img src="@/assets/images/edit.png">第一期不做编辑-->
<img @click="delRecord(item.id)" src="@/assets/images/delete.png">
</div>
</div>
</div>
<div class="rec_con">
<div><strong>{{item.nickName}}</strong> <span v-if="item.visitWay">({{item.visitWay}})</span></div>
<div><span>{{item.recordInfo}}</span></div>
<div class="rec_text">
<span v-if="item.projectName && showtype == 'projectgjdt'">关联项目:{{item.projectName||'--'}}</span>
<span v-if="item.visitPerson">拜访对象:{{item.visitPerson||'--'}}</span>
<span v-if="item.position">职位:{{item.position||'--'}}</span>
<span v-if="item.visitTime">拜访时间:{{item.visitTime}}</span>
<span v-if="item.nextVisitTime">下次拜访时间:{{item.nextVisitTime || '--'}}</span>
<div class="rec_con">
<div><strong>{{item.nickName}}</strong> <span v-if="item.visitWay">({{item.visitWay}})</span></div>
<div><span>{{item.recordInfo}}</span></div>
<div class="rec_text">
<span v-if="item.projectName && showtype == 'projectgjdt'">关联项目:{{item.projectName||'--'}}</span>
<span v-if="item.visitPerson">拜访对象:{{item.visitPerson||'--'}}</span>
<span v-if="item.position">职位:{{item.position||'--'}}</span>
<span v-if="item.visitTime">拜访时间:{{item.visitTime}}</span>
<span v-if="item.nextVisitTime">下次拜访时间:{{item.nextVisitTime || '--'}}</span>
</div>
</div>
</div>
</div>
</div>
<div class="tables" v-if="recordlist.total>pageSize">
<div class="tables" v-if="recordlist.total>pageSize">
<div class="bottems">
<el-pagination
background
......@@ -135,6 +137,7 @@
</el-pagination>
</div>
</div>
</div>
</div>
</el-card>
</div>
......@@ -145,7 +148,9 @@
import {getFollowList,addFollowRecord,getUserList,delFollowRecord} from '@/api/custom/custom'
import {getGJJL,addGJJL,delGJJL,relateProject,allRecord} from '@/api/project/project'
import {getEnterprise,getDictType,} from '@/api/main'
import skeleton from './skeleton'
export default {
components:{skeleton},
props:{
types: { //当前组件展示类型
type: String,
......@@ -191,6 +196,7 @@
projectList:[],//关联项目
isDisableds:this.isDisabled,
keys:1,
isSkeleton:true,
}
},
computed: {
......@@ -220,6 +226,7 @@
this.isDisableds = false
this.projectId = null//项目id暂时清空,必须手选id
relateProject(this.userId).then(res=>{
this.isSkeleton = false
this.projectList = res.data
})
this.getGJDT()
......@@ -323,6 +330,7 @@
param.customerId = this.customerIds
}
getFollowList(param).then(result=>{
this.isSkeleton = false
this.recordlist = result.code == 200?result:[]
this.recordlist.rows.forEach(item=>{
item.createTime = this.gettime(item.createTime)
......@@ -339,6 +347,7 @@
userId: this.userId
}
allRecord(param).then(result=>{
this.isSkeleton = false
this.recordlist = result.code == 200?result:[]
// this.recordlist.rows.forEach(item=>{
// item.createTime = this.gettime(item.createTime)
......@@ -354,10 +363,12 @@
businessId:this.projectId
}
getGJJL(param).then(result=>{
this.isSkeleton = false
this.recordlist = result.code == 200?result:[]
})
},
handleCurrentChange(val){
this.isSkeleton = true
this.pageNum = val
if(this.showtype == 'gjdt'){
this.getGJDTlist()
......
......@@ -3,51 +3,53 @@
<el-card class="box-card noborder">
<div class="cardtitles">工作待办</div>
<div class="records">
<div class="writeIn" v-if="isDisableds == false">
<div class="default" v-if="isEdit == false" @click="getEdit">
<img src="@/assets/images/project/add_3.png">
<div>新建一条工作代办,如:周五上午预约客户上门拜访</div>
</div>
<div class="writting" v-if="isEdit == true">
<div class="wri_top">
<div class="writeIn" v-if="isDisableds == false">
<div class="default" v-if="isEdit == false" @click="getEdit">
<img src="@/assets/images/project/add_3.png">
<el-input v-model="queryParam.task" placeholder="新建一条跟进记录,如:周五上午预约客户上门拜访"></el-input>
<div>新建一条工作代办,如:周五上午预约客户上门拜访</div>
</div>
<div class="wr_bot">
<div class="times"><img src="@/assets/images/project/ico_4.png">
<el-date-picker value-format="yyyy-MM-dd"
v-model="queryParam.finishTime"
type="date"
placeholder="完成时间">
</el-date-picker>
<div class="writting" v-if="isEdit == true">
<div class="wri_top">
<img src="@/assets/images/project/add_3.png">
<el-input v-model="queryParam.task" placeholder="新建一条跟进记录,如:周五上午预约客户上门拜访"></el-input>
</div>
<div class="sels">
<img src="@/assets/images/project/ico_2.png">
<el-input v-model="queryParam.target" placeholder="拜访对象" style="width: 100px;">
</el-input>
<div class="wr_bot">
<div class="times"><img src="@/assets/images/project/ico_4.png">
<el-date-picker value-format="yyyy-MM-dd"
v-model="queryParam.finishTime"
type="date"
placeholder="完成时间">
</el-date-picker>
</div>
<div class="sels">
<img src="@/assets/images/project/ico_2.png">
<el-input v-model="queryParam.target" placeholder="拜访对象" style="width: 100px;">
</el-input>
</div>
<div class="btn btn_primary h32 wc" @click="add" :class="{'btn_disabled':queryParam.task == ''}">完成</div>
</div>
<div class="btn btn_primary h32 wc" @click="add" :class="{'btn_disabled':queryParam.task == ''}">完成</div>
</div>
</div>
</div>
<div class="tasktitle"><strong>我的任务</strong><span @click="getYQ">{{yqnum}}条已逾期</span><!--<span class="on">4条已逾期</span>--></div>
<div class="tasklist" v-for="(item,index) in datalist.rows">
<div class="task_name">{{item.task}}</div>
<div class="task_con"><span>发起时间:{{item.createTime}}</span><span v-if="item.target">关联客户:<font class="wordprimary">{{item.target}}</font></span><span v-if="item.finishTime">完成时间:{{item.finishTime}}</span></div>
<div class="select" :class="{'on':item.state == 2}">
<div class="select-popper">
<span>
{{item.state == 2?"已完成":"未完成"}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-if="isDisableds == false" placeholder="请选择" v-model="item.state" class="select-multiple" @change="changes(item.id,$event)">
<el-option label="未完成" value="1"></el-option>
<el-option label="已完成" value="2"></el-option>
</el-select>
</div></div>
</div>
<skeleton v-if="isSkeleton" style="padding-top: 16px"></skeleton>
<div v-else>
<div class="tasktitle"><strong>我的任务</strong><span @click="getYQ">{{yqnum}}条已逾期</span><!--<span class="on">4条已逾期</span>--></div>
<div class="tasklist" v-for="(item,index) in datalist.rows">
<div class="task_name">{{item.task}}</div>
<div class="task_con"><span>发起时间:{{item.createTime}}</span><span v-if="item.target">关联客户:<font class="wordprimary">{{item.target}}</font></span><span v-if="item.finishTime">完成时间:{{item.finishTime}}</span></div>
<div class="select" :class="{'on':item.state == 2}">
<div class="select-popper">
<span>
{{item.state == 2?"已完成":"未完成"}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-if="isDisableds == false" placeholder="请选择" v-model="item.state" class="select-multiple" @change="changes(item.id,$event)">
<el-option label="未完成" value="1"></el-option>
<el-option label="已完成" value="2"></el-option>
</el-select>
</div></div>
</div>
<div class="tables" v-if="datalist.total>searchPram.pageSize">
<div class="tables" v-if="datalist.total>searchPram.pageSize">
<div class="bottems">
<el-pagination
background
......@@ -59,6 +61,7 @@
</el-pagination>
</div>
</div>
</div>
</div>
</el-card>
</div>
......@@ -68,8 +71,10 @@
import "@/assets/styles/project.scss"
import "@/assets/styles/public.css"
import {addGZDB,getGZDB,editGZDB} from '@/api/project/project'
import skeleton from './skeleton'
export default {
components:{skeleton},
name: 'gjjl',
props: {
detailId: { //从企业详情跳转过来ID
......@@ -98,6 +103,7 @@
datalist:[],
yqnum:0,//已逾期数量
isDisableds:this.isDisabled,
isSkeleton:true,
}
},
created(){
......@@ -124,7 +130,9 @@
})
},
getList(){
this.isSkeleton = true
getGZDB(this.searchPram).then(result=>{
this.isSkeleton = false
this.datalist = result.code == 200?result:[]
let num = 0
this.datalist.rows.forEach(item=>{
......
<template>
<div>
<el-card class="box-card noborder">
<div class="cardtitles">基本信息</div>
<div class="tables">
<el-table
<div class="cardtitles">联系人</div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="tables" v-else>
<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="姓名"
......@@ -135,7 +144,9 @@
<script>
import "@/assets/styles/project.scss"
import {getLXR,editLXR,addLXR} from '@/api/project/project'
import skeleton from './skeleton'
export default {
components:{skeleton},
name: 'lxr',
props: {
detailId: { //从企业详情跳转过来ID
......@@ -163,6 +174,7 @@
projectname:this.$route.query.projectname,
queryParam:[],
isDisableds:this.isDisabled,
isSkeleton:true,
}
},
created(){
......@@ -180,7 +192,9 @@
this.isnew = false
},
getList(){
this.isSkeleton = true
getLXR(this.searchParam).then(result=>{
this.isSkeleton = false
this.tableData = result.code == 200?result.rows:[]
this.total = result.code == 200?result.total:0
})
......
<template>
<el-skeleton animated>
<template slot="template">
<el-skeleton-item variant="text" style="width: 60%;"/>
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 60%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
</template>
</el-skeleton>
</template>
<script>
export default {
name: 'skeleton'
}
</script>
<style lang="scss" scoped>
.el-skeleton__item{
height: 20px;
border-radius: 0;
margin: 9px 0;
background: #f0f0f0;
}
</style>
......@@ -7,26 +7,26 @@
<el-select class="select" placeholder="企业类型" clearable v-model="searchParam.companyType" @change="handleCurrentChange(1)">
<el-option v-for="(item,index) in companytype" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
<div class="searchInput">
<el-input type="text" placeholder="输入关键词查询" clearable v-model="searchParam.companyName"></el-input>
<div class="searchInput small">
<el-input type="text" placeholder="输入关键词查询" clearable v-model="searchParam.companyName">
<i slot="prefix" class="el-input__icon"><img src="@/assets/images/project/sousuo.png"></i></el-input>
<div class="btn" @click="handleCurrentChange(1)">搜索</div>
</div>
<div class="btn btn_primary h32 b3" @click="opennew" v-if="isDisableds == false"><div class="img img1"></div>添加相关企业</div>
</div>
<div class="document tables">
<el-table
<skeleton v-if="isSkeleton" style="padding-top: 16px"></skeleton>
<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="企业名称"
......@@ -143,7 +143,9 @@
import "@/assets/styles/project.scss"
import {getXGQY,addXGQY,delXGQY} from '@/api/project/project'
import {getDictType,getEnterprise} from '@/api/main'
import skeleton from './skeleton'
export default {
components:{skeleton},
name: 'xgqy',
props: {
detailId: { //从企业详情跳转过来ID
......@@ -189,6 +191,7 @@
isDisableds:this.isDisabled,
showlist:false,
companData:[],
isSkeleton:true,
}
},
created(){
......@@ -261,8 +264,9 @@
})
},
getlist(){
this.isSkeleton = true
getXGQY(this.searchParam).then(result=>{
console.log(result)
this.isSkeleton = false
this.tableData = result
})
},
......
......@@ -340,7 +340,7 @@
getXMSL(){
getXMSL(this.id).then(result=> {
this.xmjd = result.data.projectStage
this.xmjd = !result.data.projectStage?'待添加':result.data.projectStage
if(result.data.labelList == null || result.data.labelList == "" || result.data.labelList == undefined){
this.tipslit = []
}else {
......
......@@ -5,8 +5,10 @@
<div class="cardtitles">资料文档</div>
<div class="searchbtns">
<!--<div class="searchbtns" v-if="fileDatas.rows != null && fileDatas.rows.length>0">-->
<div class="searchInput">
<el-input type="text" v-model="param.keyword" clearable placeholder="输入关键词查询"></el-input>
<div class="searchInput small">
<el-input type="text" v-model="param.keyword" clearable placeholder="输入关键词查询">
<i slot="prefix" class="el-input__icon"><img src="@/assets/images/project/sousuo.png"></i>
</el-input>
<div class="btn" @click="handleCurrentChange(1)">搜索</div>
</div>
<!--<div class="btn btn_primary h32 b2" @click="getUP" v-if="fileDatas.total>0"><div class="img img2"></div>上传</div>-->
......@@ -58,31 +60,32 @@
</div>
</div>
<div class="document tables">
<el-table
<skeleton v-if="isSkeleton" style="padding-top: 16px"></skeleton>
<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"
......@@ -147,10 +150,13 @@
</template>
<script>
import "@/assets/styles/project.scss"
import { getToken } from "@/utils/auth";
import { getZLWD ,delZLWD} from "@/api/project/project";
import '@/assets/styles/project.scss'
import { getToken } from '@/utils/auth'
import { delZLWD, getZLWD } from '@/api/project/project'
import skeleton from './skeleton'
export default {
components:{skeleton},
name: 'zlwd',
props: {
detailId: { //从企业详情跳转过来ID
......@@ -181,6 +187,7 @@
ondel:"",
isDisableds:this.isDisabled,
keys:1,
isSkeleton:true,
}
},
created(){
......@@ -195,8 +202,10 @@
this.handleCurrentChange(1)
},
getList(){
this.isSkeleton = true
getZLWD(this.param).then(res=>{
this.fileDatas = res
this.isSkeleton = false
if(this.fileDatas.rows!=null && this.fileDatas.rows.length>0){
this.fileDatas.rows.forEach(item=>{
let names = item.filePath.split('/')
......@@ -300,6 +309,7 @@
</script>
<style lang="scss" scoped>
v-deep.el-upload:focus{
color: #FFFFFF !important;
}
......@@ -382,7 +392,4 @@
}
}
}
.searchInput .el-input{
width: 68%;
}
</style>
......@@ -10,7 +10,7 @@
<el-tab-pane label="公司全部项目" name="second"></el-tab-pane>
<div class="searchInput">
<el-input type="text" v-model="searchParam.projectName" placeholder="请输入项目或业主单位名称关键词进行搜索"></el-input>
<el-input type="text" style="width: 530px;" v-model="searchParam.projectName" placeholder="请输入项目或业主单位名称关键词进行搜索"></el-input>
<div class="btn" @click="getList(1)">搜索</div>
</div>
<div class="sellist">
......@@ -97,14 +97,16 @@
<el-card class="box-card noborder overflows">
<div class="titles">项目明细
<div class="dc">
<div class="total">{{total}}</div>
<!--<el-tooltip class="item" effect="dark" content="功能正在开发中" placement="top">-->
<div class="btn-export" @click="dc"><img src="@/assets/images/EXCEL.png">导出EXCEL</div>
<!--</el-tooltip>-->
</div>
<div class="dc">
<div class="total">{{total}}</div>
<!--<el-tooltip class="item" effect="dark" content="功能正在开发中" placement="top">-->
<div class="btn-export" @click="dc"><img src="@/assets/images/EXCEL.png">导出EXCEL</div>
<!--</el-tooltip>-->
</div>
</div>
<div class="tables" v-if="total == 0">
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="tables" v-if="total == 0 && !isSkeleton">
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
......@@ -113,7 +115,7 @@
<div class="btn btn_primary btn_shallow h36 w88" @click="pldrs">批量导入</div>
</div>
</div>
<div class="datalist">
<div class="datalist" v-if="!isSkeleton">
<div class="datali" v-for="(item,index) in datalist">
<div class="det-title" @click="toDetail(item.id,'xmsl')">
{{item.projectName}}<span v-if="activeName!='first' && item.followTime" class="people"><i>{{item.nickName1}}</i>
......@@ -182,9 +184,10 @@
import {getDictType,} from '@/api/main'
import addproject from './component/addProject'
import batchimport from './component/batchImport'
import skeleton from './component/skeleton'
export default {
name: 'ProjectList',
components:{addproject,batchimport},
components:{addproject,batchimport,skeleton},
data() {
return {
types:'project',
......@@ -240,6 +243,7 @@ export default {
datalist:[],//列表数据
ondel:-1,
total:0,
isSkeleton:true
}
},
created() {
......@@ -289,6 +293,7 @@ export default {
},
//获取商机列表
getList(pageNum){
this.isSkeleton = true
this.searchParam.pageNum = pageNum
if(this.activeName == 'first'){
this.searchParam.userId = this.$store.state.user.userId
......@@ -297,6 +302,7 @@ export default {
}
this.searchParam.ownerCompany = this.searchParam.projectName
getProjectlist(this.searchParam).then(result=>{
this.isSkeleton = false
if(result.code == 200){
this.datalist = result.rows
this.total = result.total
......@@ -382,7 +388,7 @@ export default {
this.$router.push({ path: '/project/projectList/detail', query: {id:id,tag:tag} });
},
handleClick(){
this.getList(1)
this.reset()
},
handleChange(value) {
// console.log(value);
......@@ -594,6 +600,7 @@ export default {
font-size: 16px;
font-weight: 700;
line-height: 23px;
padding-right: 190px;
.people{
padding-left: 10px;
color: #4f4f4f;
......
......@@ -359,28 +359,20 @@ export default {
value: "今天",
},
{
label: "近3日",
value: "近3日",
},
{
label: "近7日",
value: "近7日",
},
{
label: "近1个月",
value: "近1个月",
label: "未来3天",
value: "未来3天",
},
{
label: "近3个月",
value: "近3个月",
label: "未来7天",
value: "未来7天",
},
{
label: "近半年",
value: "近半年",
label: "未来1个月",
value: "未来1个月",
},
{
label: "近1年",
value: "近1年",
label: "未来3个月",
value: "未来3个月",
},
],
PlanTenderDateValue: "",
......@@ -746,58 +738,30 @@ export default {
startTime = Year + "-" + Month +"-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "近3日":
endTime = Year + "-" + Month + "-" + Day;
if (Day > 3) {
startTime = Year + "-" + Month + "-" +(Day-3);
} else {
let newTime = datetime.getTime()-3*24*60*60*1000
Year = new Date(newTime).getFullYear();
Month = new Date(newTime).getMonth() + 1;
Day = new Date(newTime).getDate();
startTime = Year + "-" + Month +"-" + Day;
}
case "未来3天":
startTime = Year + "-" + Month + "-" + Day;
endTime = this.getDate(3)
break;
case "近7日":
endTime = Year + "-" + Month + "-" + Day;
if (Day > 7) {
startTime = Year + "-" + Month + "-" +(Day-7);
} else {
let newTime = datetime.getTime()-7*24*60*60*1000
Year = new Date(newTime).getFullYear();
Month = new Date(newTime).getMonth() + 1;
Day = new Date(newTime).getDate();
startTime = Year + "-" + Month +"-" + Day;
}
break;
case "近1个月":
endTime = Year + "-" + Month + "-" + Day;
if (Month > 1) {
startTime = Year + "-" + (Month - 1) + "-1";
} else {
startTime = Year - 1 + "-" + (12 + Month - 1) + "-1";
}
case "未来7天":
startTime = Year + "-" + Month + "-" + Day;
endTime = this.getDate(7)
break;
case "近3个月":
endTime = Year + "-" + Month + "-" + Day;
if (Month > 3) {
startTime = Year + "-" + (Month - 3) + "-1";
case "未来1个月":
startTime = Year + "-" + Month + "-" + Day;
if (Month == 12) {
endTime = Year+1 + "-01-" + + Day;
} else {
startTime = Year - 1 + "-" + (12 + Month - 3) + "-1";
endTime = Year + "-" + (Month + 1) + "-" + Day;
}
break;
case "近半年":
endTime = Year + "-" + Month + "-" + Day;
if (Month > 6) {
startTime = Year + "-" + (Month - 6) + "-1";
case "未来3个月":
startTime = Year + "-" + Month + "-" + Day;
if (Month >9) {
endTime = Year+1 + "-" + Month-9 + "-" + + Day;
} else {
startTime = Year - 1 + "-" + (12 + Month - 6) + "-1";
endTime = Year + "-" + (Month + 3) + "-" + Day;
}
break;
case "近1年":
startTime = Year - 1 + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "自定义":
if (!this.PlanTenderDate) {
this.PlanTenderDateValue = "";
......@@ -839,6 +803,13 @@ export default {
}
this.jskBidPlanDto = obj;
},
getDate(n){
let date1 = new Date();
let date2 = new Date(date1);
date2.setDate(date1.getDate() + n);
let time2 = date2.getFullYear() + "-" + ("0" + (date2.getMonth() + 1)).slice(-2) + "-" + ("0" + date2.getDate()).slice(-2);
return time2
},
changeIssueTime(type) {
if(type=='bid'&&this.tenderDate){
this.tenderDateValue = "自定义";
......
......@@ -202,7 +202,7 @@
<span class="list-label list-label-zb" v-if="item.domicile">
{{item.domicile}}
</span>
<span class="list-label list-label-zb" v-if="item.tenderingManner&&item.tenderingManner!='其他'&&item.tenderingManner!='空白'">
<span class="list-label list-label-zb" v-if="item.tenderingManner&&item.tenderingManner!='其他'&&item.tenderingManner!='空白'&&item.tenderingManner!='未知'">
{{ item.tenderingManner}}
</span>
<span class="list-label list-label-lx" v-if="item.projectType&&item.projectType!='其他'&&item.projectType!='空白'">
......
......@@ -13,7 +13,7 @@
<div class="list">
<div class="item color1">
<div class="item-left">
<h4 v-if="textList.projectTotalInvestment">{{textList.projectTotalInvestment}}<span></span></h4>
<h4 v-if="textList.projectTotalInvestment">{{textList.projectTotalInvestment}}<span>亿</span></h4>
<h4 v-else>
--
</h4>
......@@ -23,7 +23,7 @@
</div>
<div class="item color2">
<div class="item-left">
<h4 v-if="textList.projectCapital">{{textList.projectCapital}}<span></span></h4>
<h4 v-if="textList.projectCapital">{{textList.projectCapital}}<span>亿</span></h4>
<h4 v-else>
--
</h4>
......@@ -33,7 +33,7 @@
</div>
<div class="item color3">
<div class="item-left">
<h4 v-if="textList.econData_013">{{textList.econData_013}}<span></span></h4>
<h4 v-if="textList.econData_013">{{textList.econData_013}}<span>亿</span></h4>
<h4 v-else>
--
</h4>
......@@ -43,7 +43,7 @@
</div>
<div class="item color4">
<div class="item-left">
<h4 v-if="textList.specialBondCapital">{{textList.specialBondCapital}}<span></span></h4>
<h4 v-if="textList.specialBondCapital">{{textList.specialBondCapital}}<span>亿</span></h4>
<h4 v-else>
--
</h4>
......@@ -55,7 +55,7 @@
<div class="list">
<div class="item color4">
<div class="item-left">
<h4 v-if="textList.otherFunds">{{textList.otherFunds}}<span></span></h4>
<h4 v-if="textList.otherFunds">{{textList.otherFunds}}<span>亿</span></h4>
<h4 v-else>
--
</h4>
......@@ -65,7 +65,7 @@
</div>
<div class="item color3">
<div class="item-left">
<h4 v-if="textList.specialBondIssue_number">{{textList.specialBondIssue_number}}<span>元/ 10只</span></h4>
<h4 v-if="textList.specialBondIssue_number">{{textList.specialBondIssue_number}}<span>亿元/ 10只</span></h4>
<h4 v-else>
--
</h4>
......@@ -75,7 +75,7 @@
</div>
<div class="item color4">
<div class="item-left">
<h4 v-if="textList.otherFinancing">{{textList.otherFinancing}}<span></span></h4>
<h4 v-if="textList.otherFinancing">{{textList.otherFinancing}}<span>亿</span></h4>
<h4 v-else>
--
</h4>
......@@ -85,7 +85,7 @@
</div>
<div class="item color2">
<div class="item-left">
<h4 v-if="textList.govSupportFunds">{{textList.govSupportFunds}}<span></span></h4>
<h4 v-if="textList.govSupportFunds">{{textList.govSupportFunds}}<span>亿</span></h4>
<h4 v-else>
--
</h4>
......@@ -126,7 +126,7 @@
</p>
<p>
<label class="label">项目预测总收益</label>
<span v-if="textList.projectForecastTotalRevenue">{{textList.projectForecastTotalRevenue}}</span>
<span v-if="textList.projectForecastTotalRevenue">{{textList.projectForecastTotalRevenue}}亿</span>
<span v-else>--</span>
</p>
</div>
......@@ -159,7 +159,7 @@
</el-table-column>
<el-table-column prop="tenderDate" label="招标日期" width="220" />
<el-table-column prop="actualBondIssueScale" label="专项债规模(亿)" width="260" />
<el-table-column prop="isUsedProjectScale" label="用于项目规模(万元)" width="260" />
<el-table-column prop="isUsedProjectScale" label="用于项目规模(亿)" width="260" />
<el-table-column label="是否资本金" width="200">
<template slot-scope="scope">
......
......@@ -20,5 +20,9 @@ public class CustomerStatusListVo implements Serializable {
* 城投id
*/
private String uipId;
/**
* 企业名称
*/
private String companyName;
}
......@@ -12,7 +12,6 @@ import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.core.redis.RedisCache;
import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.common.utils.EncodeIdUtil;
import com.dsk.common.utils.StringUtils;
import com.dsk.system.domain.customer.vo.CustomerStatusListVo;
import com.dsk.system.service.ICustomerService;
import org.apache.commons.collections4.CollectionUtils;
......@@ -20,6 +19,7 @@ import org.apache.commons.collections4.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
......@@ -59,6 +59,7 @@ public class EnterpriseService {
companyData.put("uipId", null);
companyData.put("claimStatus", 0);
companyData.put("bratingSubjectLevel", null);
String companyName = MapUtils.getString(companyData, "companyName", "");
Map<String, Object> map = BeanUtil.beanToMap(body, false, false);
map.put("cid", body.getCompanyId());
......@@ -74,6 +75,11 @@ public class EnterpriseService {
ArrayList<String> uipIds = new ArrayList<>();
uipIds.add(uipId);
companyData.put("claimStatus", CollectionUtils.isEmpty(iCustomerService.selectStatusList(uipIds)) ? 0 : 1);
} else {
Integer status = iCustomerService.status(companyName);
if (ObjectUtil.isNotEmpty(status)) {
companyData.put("claimStatus", status.equals(0) ? 1 : 0);
}
}
Map<String, Object> bondCreditRatingMap = dskOpenApiUtil.requestBody("/operate/enterprise/bondCreditRating", map);
......@@ -315,4 +321,27 @@ 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();
}
String redisKey = CacheConstants.DATA_FINANCIAL + body.getCid();
List cacheMap = redisCache.getCacheList(redisKey);
if (ObjectUtil.isNotEmpty(cacheMap)) {
return R.ok(cacheMap);
}
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/financialData", BeanUtil.beanToMap(body, false, false));
Integer code = MapUtils.getInteger(map, "code", 300);
if (!code.equals(HttpStatus.OK.value())) {
throw new RuntimeException();
}
Object data = map.get("data");
if (ObjectUtil.isNotEmpty(data)) {
redisCache.setCacheList(redisKey, (List)data);
redisCache.expire(redisKey, 24, TimeUnit.HOURS);
}
return BeanUtil.toBean(map, R.class);
}
}
......@@ -76,8 +76,8 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo>
public int deleteBusinessInfoById(Long id);
/**
* 批量删除项目详情
*
* 批量删除项目
* 项目关联的其他所有表数据一并删除
* @param ids 需要删除的数据主键集合
* @return 结果
*/
......
......@@ -28,6 +28,8 @@ public interface CustomerMapper extends BaseMapper<Customer> {
List<CustomerStatusListVo> selectStatusList(@Param("uipIds") List<String> uipIds, @Param("userId") Long userId);
List<CustomerStatusListVo> selectStatusListByCompanyName(@Param("companyNames") List<String> companyNames, @Param("userId") Long userId);
// List<String> selectUipIdList(@Param("uipIds") List<String> uipIds, @Param("userId") Long userId);
}
......
......@@ -29,6 +29,8 @@ public interface ICustomerService {
List<CustomerStatusListVo> selectStatusList(List<String> uipIds);
List<CustomerStatusListVo> selectStatusListByCompanyName(List<String> companyNames);
// List<String> selectUipIdList(List<String> uipIds);
Integer status(String companyName);
......
......@@ -228,15 +228,17 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
}
/**
* 批量删除项目详情
*
* 批量删除项目
* 项目关联的其他所有表数据一并删除
* @param ids 需要删除的项目详情主键
* @return 结果
*/
@Override
@Transactional
public int deleteBusinessInfoByIds(Long[] ids) {
//删除项目详情,用户关联项目,项目工作代办,项目联系人,项目跟进记录,项目标签,项目相关企业
return businessInfoMapper.deleteBusinessInfoByIds(ids);
//TODO 删除项目上传的文件
}
/**
......
......@@ -119,6 +119,11 @@ public class CustomerServiceImpl implements ICustomerService {
return baseMapper.selectStatusList(uipIds, SecurityUtils.getUserId());
}
@Override
public List<CustomerStatusListVo> selectStatusListByCompanyName(List<String> companyNames) {
return baseMapper.selectStatusListByCompanyName(companyNames, SecurityUtils.getUserId());
}
// @Override
// public List<String> selectUipIdList(List<String> uipIds) {
......
......@@ -15,6 +15,8 @@ import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
......
......@@ -139,13 +139,13 @@ public class ReadBusinessInfoExcel {
}
//投资估算(万元)
} else if (c == 2) {
businessExcelDto.setInvestmentAmount(cell.getStringCellValue());
/* if (cell.getCellType() == CellType.NUMERIC) {
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));
businessExcelDto.setInvestmentAmount(amount);
} else {
businessExcelDto.setInvestmentAmount(cell.getStringCellValue());
}*/
}
}
}
}
......
......@@ -102,7 +102,7 @@
LEFT JOIN sys_user u on u.user_id = f.user_id
<where>
<if test="userId != null">
bu.user_id = #{userId}
and bu.user_id = #{userId}
</if>
<if test="projectType != null and projectType != ''">
and i.project_type in
......@@ -113,7 +113,7 @@
<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)
......@@ -373,7 +373,15 @@
</delete>
<delete id="deleteBusinessInfoByIds" parameterType="Long">
delete from business_info where id in
delete i,b,co,f,l,r,u
from business_info i
left join business_backlog b on b.business_id = i.id
left join business_contacts co on co.business_id = i.id
left join business_follow_record f on f.business_id = i.id
left join business_label l on l.business_id = i.id
left join business_relate_company r on r.business_id = i.id
left join business_user u on u.business_id = i.id
where i.id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
......
......@@ -58,6 +58,17 @@
</foreach>
</select>
<select id="selectStatusListByCompanyName" resultType="com.dsk.system.domain.customer.vo.CustomerStatusListVo">
select
ct.customer_id, ct.company_name
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
where ctu.user_id = #{userId} and ctu.status = 0 and ct.company_name in
<foreach collection="companyNames" item="companyName" open="(" separator="," close=")">
#{companyName}
</foreach>
</select>
<!-- <select id="selectUipIdList" resultType="java.lang.String">-->
<!-- select-->
<!-- ct.uip_id-->
......
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