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 @@ ...@@ -78,7 +78,7 @@
</configuration> </configuration>
</plugin> </plugin>
</plugins> </plugins>
<finalName>${project.artifactId}</finalName> <finalName>dsk-operate-sys</finalName>
</build> </build>
</project> </project>
...@@ -136,4 +136,10 @@ public class EnterpriseController { ...@@ -136,4 +136,10 @@ public class EnterpriseController {
return enterpriseService.getUipIdByCid(vo); 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 ...@@ -51,4 +51,12 @@ public class CacheConstants
* 查甲方 菜单选线 * 查甲方 菜单选线
*/ */
public static final String PERSONAL_LOCATION = "personal:location"; 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 { ...@@ -26,17 +26,6 @@ public class SpecialPurposeBondsPageDto extends BasePage {
*/ */
private Integer areaId; private Integer areaId;
/**
* 市Id
*/
private Integer cityId;
/**
* 区Id
*/
private Integer areaId;
/** /**
* 排序字段 默认-投资金额 * 排序字段 默认-投资金额
*/ */
......
...@@ -44,6 +44,14 @@ export function projectTenderDataGroup(data) { ...@@ -44,6 +44,14 @@ export function projectTenderDataGroup(data) {
data: data data: data
}) })
} }
// 财务数据
export function financialData(data) {
return request({
url: '/enterprise/financialData',
method: 'post',
data: data
})
}
// 招标公告 // 招标公告
export function bidNoticePage(data) { export function bidNoticePage(data) {
......
...@@ -59,6 +59,22 @@ let cancelClaim= function cancelClaim(data) { ...@@ -59,6 +59,22 @@ let cancelClaim= function cancelClaim(data) {
// data: 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) { let enterprisePage= function enterprisePage(param) {
...@@ -80,4 +96,4 @@ let infoHeader= function infoHeader(param) { ...@@ -80,4 +96,4 @@ let infoHeader= function infoHeader(param) {
export default {aptitudeCode,personCert,searchDic,regionWebList,uipGroupData,uipSerach,claim,cancelClaim,enterprisePage,infoHeader} export default {aptitudeCode,personCert,searchDic,regionWebList,uipGroupData,uipSerach,claim,cancelClaim,enterprisePage,infoHeader,historyClaim,customerStatus}
\ No newline at end of file
...@@ -215,11 +215,18 @@ export function claim(param) { ...@@ -215,11 +215,18 @@ export function claim(param) {
data: param data: param
}) })
} }
//城投平台-取消认领 //客户状态
export function cancelClaim(name) { export function customerStatus(name) {
return request({ return request({
url:`/customer/cancelClaim/`+name, url:`/customer/status/`+name,
method: 'PUT', method: 'get',
})
}
//历史客户认领
export function historyClaim(name) {
return request({
url:`/customer/historyClaim/`+name,
method: 'put',
}) })
} }
//批量获取城投企业id //批量获取城投企业id
......
...@@ -7,11 +7,10 @@ const steerScroll = function(iframeId, navigation, state, parentId) { // state: ...@@ -7,11 +7,10 @@ const steerScroll = function(iframeId, navigation, state, parentId) { // state:
let dom = window let dom = window
if (parentId) { // 默认页面可以滚动 if (parentId) { // 默认页面可以滚动
dom = document.getElementById(parentId) dom = document.getElementById(parentId)
if(!dom){ if (!dom) {
return return
} }
dom.style.overflow = 'auto' dom.style.overflow = 'auto'
navigation.totalHeight = 0
} else { } else {
document.body.style.overflow = 'visible' document.body.style.overflow = 'visible'
} }
...@@ -22,12 +21,12 @@ const steerScroll = function(iframeId, navigation, state, parentId) { // state: ...@@ -22,12 +21,12 @@ const steerScroll = function(iframeId, navigation, state, parentId) { // state:
if (data && typeof data === 'object') { if (data && typeof data === 'object') {
// 动态设置iFrame高度 // 动态设置iFrame高度
if (data.height) { if (data.height) {
document.getElementById(iframeId).style.height = data.height+'px' document.getElementById(iframeId).style.height = data.height + 'px'
scrolling(iframeId, navigation, parentId) // 初始加载获取滚动条距离顶部高度 scrolling(iframeId, navigation, parentId) // 初始加载获取滚动条距离顶部高度
} }
// 点击企业详情页 栏目名动态设置滚动高度 // 点击企业详情页 栏目名动态设置滚动高度
if (data.scrollHeight) { 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) dom.scrollTo(sct, parseInt(data.scrollHeight) + navHeight)
} }
// 点击企业详情页 栏目下拉子标签动态设置滚动高度 // 点击企业详情页 栏目下拉子标签动态设置滚动高度
...@@ -63,11 +62,9 @@ const scrolling = function(iframeId, navigation, parentId) { ...@@ -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 let scrollTop = parentId ? document.getElementById(parentId).scrollTop : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
// 将滚动距离传入子组件 // 将滚动距离传入子组件
const ifa = document.getElementById(iframeId) 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 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 { export {
......
...@@ -524,6 +524,10 @@ ul, li { ...@@ -524,6 +524,10 @@ ul, li {
line-height: 50px; line-height: 50px;
height: 50px; height: 50px;
} }
.el-tabs__item.is-disabled {
color: #C0C4CC;
cursor: not-allowed;
}
.is-active{ .is-active{
color: #0081FF; color: #0081FF;
font-weight: bold; font-weight: bold;
...@@ -652,6 +656,9 @@ ul, li { ...@@ -652,6 +656,9 @@ ul, li {
height: 32px; height: 32px;
border: 0; border: 0;
} }
.el-input__suffix{
margin-top: -1px;
}
} }
.btn{ .btn{
background: #F5F5F5; background: #F5F5F5;
......
.el-card{
overflow: initial;
}
.app-container{ .app-container{
padding: 0; padding: 0;
} }
...@@ -827,10 +829,22 @@ ...@@ -827,10 +829,22 @@
right: 16px; right: 16px;
top: 17px; top: 17px;
.searchInput{ .searchInput{
width: 178px; &.small{
border: 1px solid #D9D9D9; border: 1px solid #d9d9d9;
.el-input--medium .el-input__inner{ width: 240px;
font-size: 12px; .el-input{
width: 180px;
}
.el-input__inner{
padding-right: 32px;
}
.el-input__prefix{
left: 8px;
top: -3px;
img{
width: 16px;
}
}
} }
} }
.b2{ .b2{
...@@ -1187,3 +1201,32 @@ ...@@ -1187,3 +1201,32 @@
//box-shadow: 4px 0 9px -5px rgba(0, 0, 0, 0.12); //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); //-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 @@ ...@@ -5,6 +5,7 @@
transition: margin-left .28s; transition: margin-left .28s;
margin-left: $base-sidebar-width; margin-left: $base-sidebar-width;
position: relative; position: relative;
background: #F5F5F5;
} }
.sidebarHide { .sidebarHide {
...@@ -37,12 +38,12 @@ ...@@ -37,12 +38,12 @@
animation-fill-mode: forwards; animation-fill-mode: forwards;
z-index: 1002; z-index: 1002;
} }
@keyframes left-right{ @keyframes left-right{
0%{right: 0;} 0%{right: 0;}
100%{right: -21px;} 100%{right: -21px;}
} }
// reset element-ui css // reset element-ui css
.horizontal-collapse-transition { .horizontal-collapse-transition {
transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
...@@ -58,10 +59,10 @@ ...@@ -58,10 +59,10 @@
.el-scrollbar { .el-scrollbar {
height: 100%; height: 100%;
} }
&.has-logo { &.has-logo {
.el-scrollbar { .el-scrollbar {
...@@ -138,8 +139,8 @@ ...@@ -138,8 +139,8 @@
background: #fff!important; background: #fff!important;
} }
} }
// menu hover // menu hover
.submenu-title-noDropdown, .el-submenu__title { .submenu-title-noDropdown, .el-submenu__title {
color: #fff!important; color: #fff!important;
...@@ -150,9 +151,9 @@ ...@@ -150,9 +151,9 @@
border: 1px solid #2b3f69; border: 1px solid #2b3f69;
} }
} }
} }
.sidebar-container .el-submenu .el-menu-item:hover,.sidebar-container .nest-menu .el-submenu>.el-submenu__title:hover { .sidebar-container .el-submenu .el-menu-item:hover,.sidebar-container .nest-menu .el-submenu>.el-submenu__title:hover {
background-color: #1e2c4c!important; background-color: #1e2c4c!important;
...@@ -160,7 +161,7 @@ ...@@ -160,7 +161,7 @@
border-radius: 10px; border-radius: 10px;
border: 1px solid #2b3f69; border: 1px solid #2b3f69;
} }
.sidebar-container .el-submenu .el-menu-item:before, .sidebar-container .nest-menu .el-submenu>.el-submenu__title:before { .sidebar-container .el-submenu .el-menu-item:before, .sidebar-container .nest-menu .el-submenu>.el-submenu__title:before {
position: absolute; position: absolute;
width: 2px; width: 2px;
...@@ -210,7 +211,7 @@ ...@@ -210,7 +211,7 @@
vertical-align: -0.15em; vertical-align: -0.15em;
fill: currentColor; fill: currentColor;
overflow: hidden; overflow: hidden;
} }
} }
} }
...@@ -405,4 +406,4 @@ ...@@ -405,4 +406,4 @@
padding-top: 6px; padding-top: 6px;
padding-bottom: 10px; padding-bottom: 10px;
} }
} }
\ No newline at end of file
...@@ -46,9 +46,9 @@ export default { ...@@ -46,9 +46,9 @@ export default {
<style scoped> <style scoped>
.svg-icon { .svg-icon {
width: 1em; width: 1.29em;
height: 1em; height: 1.29em;
vertical-align: -0.15em; /*vertical-align: -0.22em;*/
fill: currentColor; fill: currentColor;
overflow: hidden; overflow: hidden;
} }
......
...@@ -45,6 +45,7 @@ export default { ...@@ -45,6 +45,7 @@ export default {
min-height: calc(100vh - 56px); min-height: calc(100vh - 56px);
min-width:1440px; min-width:1440px;
background: #F5F5F5; background: #F5F5F5;
overflow: initial;
} }
.fixed-header + .app-main { .fixed-header + .app-main {
......
...@@ -147,9 +147,9 @@ export default { ...@@ -147,9 +147,9 @@ export default {
.user-avatar { .user-avatar {
display: inline-block; display: inline-block;
cursor: pointer; cursor: pointer;
width: 20px; width: 24px;
height: 20px; height: 24px;
line-height: 20px; line-height: 24px;
text-align: center; text-align: center;
background: #E3EEF9; background: #E3EEF9;
color: #0081FF; color: #0081FF;
......
...@@ -90,7 +90,7 @@ export default { ...@@ -90,7 +90,7 @@ export default {
height: 100%; height: 100%;
padding-top: 24px; padding-top: 24px;
margin-bottom: 0 !important; margin-bottom: 0 !important;
overflow: auto; overflow: hidden;
} }
.is-horizontal{ .is-horizontal{
width: 0; width: 0;
......
...@@ -28,6 +28,34 @@ ...@@ -28,6 +28,34 @@
<li v-if="!isLastView()" @click="closeRightTags"><i class="el-icon-right"></i> 关闭右侧</li> <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> <li @click="closeAllTags(selectedTag)"><i class="el-icon-circle-close"></i> 全部关闭</li>
</ul> </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> </div>
</template> </template>
...@@ -43,7 +71,8 @@ export default { ...@@ -43,7 +71,8 @@ export default {
top: 0, top: 0,
left: 0, left: 0,
selectedTag: {}, selectedTag: {},
affixTags: [] affixTags: [],
showall:false,
} }
}, },
computed: { computed: {
...@@ -83,13 +112,24 @@ export default { ...@@ -83,13 +112,24 @@ export default {
} else { } else {
document.body.removeEventListener('click', this.closeMenu) document.body.removeEventListener('click', this.closeMenu)
} }
} },
}, },
mounted() { mounted() {
this.initTags() this.initTags()
this.addTags() this.addTags()
}, },
methods: { methods: {
changetags(){
console.log(88)
this.showall = false
},
closeall(){
if(this.showall == true){
this.showall = false
}else{
this.showall = true
}
},
isActive(route) { isActive(route) {
return route.path === this.$route.path return route.path === this.$route.path
}, },
...@@ -202,6 +242,12 @@ export default { ...@@ -202,6 +242,12 @@ export default {
this.moveToCurrentTag() this.moveToCurrentTag()
}) })
}, },
closeAllTag(view){
this.$nextTick(()=>{
this.showall = false
this.closeAllTags(view)
})
},
closeAllTags(view) { closeAllTags(view) {
this.$tab.closeAllPage().then(({ visitedViews }) => { this.$tab.closeAllPage().then(({ visitedViews }) => {
if (this.affixTags.some(tag => tag.path === this.$route.path)) { if (this.affixTags.some(tag => tag.path === this.$route.path)) {
...@@ -257,6 +303,7 @@ export default { ...@@ -257,6 +303,7 @@ export default {
height: 56px; height: 56px;
width: 100%; width: 100%;
background: #fff; background: #fff;
position: relative;
.tags-view-wrapper { .tags-view-wrapper {
.tags-view-item { .tags-view-item {
display: inline-block; display: inline-block;
...@@ -336,6 +383,68 @@ export default { ...@@ -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> </style>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<div class="app-container"> <div class="app-container">
<el-card class="box-card noborder"> <el-card class="box-card noborder">
<div class="tables"> <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"> <img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div> <div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div> <div class="p2">建议调整关键词或筛选条件,重新搜索</div>
...@@ -25,8 +25,9 @@ ...@@ -25,8 +25,9 @@
<div class="btn btn_primary h32 p10" @click="opennew"><div class="img img1"></div>添加客户</div> <div class="btn btn_primary h32 p10" @click="opennew"><div class="img img1"></div>添加客户</div>
</div> </div>
</div> </div>
<el-table v-if="tableData.total > 0" <skeleton v-if="isSkeleton"></skeleton>
:data="tableData.rows" <el-table v-if="!isSkeleton&&tableData.total > 0" class="fixed-table"
:data="tableData.rows"
stripe border stripe border
style="width: 100%"> style="width: 100%">
<el-table-column <el-table-column
...@@ -42,13 +43,17 @@ ...@@ -42,13 +43,17 @@
prop="date" prop="date"
label="企业名称" label="企业名称"
fixed="left" fixed="left"
width="441"> width="316">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="ps1"> <div class="ps1">
<div class="wordprimary ps2" @click="toDetail(scope.row,'')">{{scope.row.companyName}}</div> <div class="wordprimary ps2" @click="toDetail(scope.row,'')">{{scope.row.companyName}}</div>
<div class="ps3"> <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> <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> <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>
</div> </div>
</template> </template>
...@@ -159,8 +164,11 @@ ...@@ -159,8 +164,11 @@
label="主营业务" width="400"> label="主营业务" width="400">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.mainBusiness == null || scope.row.mainBusiness == ''">--</div> <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 v-if="scope.row.mainBusiness1">
<div class="box" v-else>{{scope.row.mainBusiness}}<span @click="sq1(scope.row,true)">收起</span></div> <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> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
...@@ -168,8 +176,11 @@ ...@@ -168,8 +176,11 @@
label="发包属性" width="400"> label="发包属性" width="400">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.companyAttribute == null || scope.row.companyAttribute == ''">--</div> <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 v-if="scope.row.companyAttribute1">
<div class="box" v-else>{{scope.row.companyAttribute}}<span @click="sq2(scope.row,true)">收起</span></div> <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> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
...@@ -239,17 +250,18 @@ ...@@ -239,17 +250,18 @@
</template> </template>
<script> <script>
import { getToken } from "@/utils/auth"; import { getToken } from '@/utils/auth'
import "@/assets/styles/project.scss" import '@/assets/styles/project.scss'
import {getCustomerList,importData,addCustomer} from '@/api/custom/custom' import { addCustomer, getCustomerList, importData } from '@/api/custom/custom'
import {getEnterprise,getDictType,} from '@/api/main' import { getDictType, getEnterprise } from '@/api/main'
import prvinceTree from '@/assets/json/provinceTree' import prvinceTree from '@/assets/json/provinceTree'
import batchimport from '../../project/projectList/component/batchImport' import batchimport from '../../project/projectList/component/batchImport'
import axios from 'axios' import skeleton from '../../project/projectList/component/skeleton'
import {encodeStr} from "@/assets/js/common" import { encodeStr } from '@/assets/js/common'
export default {
export default {
name: 'CustomList', name: 'CustomList',
components:{batchimport}, components:{batchimport,skeleton},
data() { data() {
return{ return{
encodeStr, encodeStr,
...@@ -297,6 +309,7 @@ export default { ...@@ -297,6 +309,7 @@ export default {
// isNew:true, // isNew:true,
showlist:false, showlist:false,
keys:1, keys:1,
isSkeleton:true,
} }
}, },
created() { created() {
...@@ -343,6 +356,7 @@ export default { ...@@ -343,6 +356,7 @@ export default {
//获取客户列表 //获取客户列表
getCustomerList(){ getCustomerList(){
getCustomerList(this.searchParam).then(result=>{ getCustomerList(this.searchParam).then(result=>{
this.isSkeleton = false
this.tableData = result this.tableData = result
this.tableData.rows.forEach(item=>{ this.tableData.rows.forEach(item=>{
item.registerCapital = item.registerCapital == null?null: item.registerCapital.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1') item.registerCapital = item.registerCapital == null?null: item.registerCapital.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')
...@@ -358,6 +372,7 @@ export default { ...@@ -358,6 +372,7 @@ export default {
}else{ }else{
item.sq2 = false item.sq2 = false
} }
// console.log(item)
}) })
}) })
}, },
...@@ -378,6 +393,7 @@ export default { ...@@ -378,6 +393,7 @@ export default {
}, },
//翻页 //翻页
handleCurrentChange(val) { handleCurrentChange(val) {
this.isSkeleton = true
this.pldr=false this.pldr=false
// this.isNew = false // this.isNew = false
this.searchParam.pageNum=val this.searchParam.pageNum=val
...@@ -584,8 +600,8 @@ export default { ...@@ -584,8 +600,8 @@ export default {
} }
.tables{ .tables{
position: relative; position: relative;
height: calc(100vh - 134px); min-height: calc(100vh - 134px);
overflow: auto; /*overflow: auto;*/
.empty{ .empty{
position: absolute; position: absolute;
top: 50%; top: 50%;
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="app-container"> <div class="app-container">
<el-card class="box-card noborder"> <el-card class="box-card noborder">
<div class="tables"> <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"> <img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div> <div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div> <div class="p2">建议调整关键词或筛选条件,重新搜索</div>
...@@ -17,7 +17,8 @@ ...@@ -17,7 +17,8 @@
<div class="total">{{tableData.total}}</div> <div class="total">{{tableData.total}}</div>
</div> </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" :data="tableData.rows"
stripe border stripe border
style="width: 100%"> style="width: 100%">
...@@ -34,19 +35,14 @@ ...@@ -34,19 +35,14 @@
prop="date" prop="date"
label="企业名称" label="企业名称"
fixed="left" fixed="left"
width="441"> width="316">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="ps1"> <div class="ps1">
<div class="wordprimary ps2" @click="toDetail(scope.row,'')">{{scope.row.companyName}}</div> <div class="wordprimary ps2" @click="toDetail(scope.row,'')">{{scope.row.companyName}}</div>
<div class="ps3"> <div class="ps3">
<div @click="toRL(scope.row)"><img class="i" src="@/assets/images/project/khrl1.png"><img class="o" src="@/assets/images/project/khrl2.png"></div> <el-tooltip class="item" effect="dark" content="重新认领" placement="top">
</div> <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> </el-tooltip>
<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>
</div> </div>
</div> </div>
</template> </template>
...@@ -157,8 +153,11 @@ ...@@ -157,8 +153,11 @@
label="主营业务" width="400"> label="主营业务" width="400">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.mainBusiness == null || scope.row.mainBusiness == ''">--</div> <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 v-if="scope.row.mainBusiness1">
<div class="box" v-else>{{scope.row.mainBusiness}}<span @click="sq1(scope.row,true)">收起</span></div> <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> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
...@@ -166,8 +165,11 @@ ...@@ -166,8 +165,11 @@
label="发包属性" width="400"> label="发包属性" width="400">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.companyAttribute == null || scope.row.companyAttribute == ''">--</div> <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 v-if="scope.row.companyAttribute1">
<div class="box" v-else>{{scope.row.companyAttribute}}<span @click="sq2(scope.row,true)">收起</span></div> <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> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
...@@ -188,6 +190,13 @@ ...@@ -188,6 +190,13 @@
:total="tableData.total"> :total="tableData.total">
</el-pagination> </el-pagination>
</div> </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> </div>
</el-card> </el-card>
</div> </div>
...@@ -201,15 +210,18 @@ ...@@ -201,15 +210,18 @@
import {getEnterprise,getDictType,} from '@/api/main' import {getEnterprise,getDictType,} from '@/api/main'
import {encodeStr} from "@/assets/js/common" import {encodeStr} from "@/assets/js/common"
import { historyClaim } from "@/api/common" //认领 import { historyClaim } from "@/api/common" //认领
import skeleton from '../../project/projectList/component/skeleton'
export default { export default {
name: 'CustomList', name: 'CustomList',
components:{skeleton},
data() { data() {
return{ return{
encodeStr, encodeStr,
searchParam:{ searchParam:{
companyName:'', companyName:'',
pageNum:1, pageNum:1,
pageSize:20 pageSize:20,
status:1,
}, },
tableData: [],//列表 tableData: [],//列表
...@@ -226,12 +238,13 @@ export default { ...@@ -226,12 +238,13 @@ export default {
// isNew:true, // isNew:true,
showlist:false, showlist:false,
keys:1, keys:1,
RLcompanyName:'',//重新认领企业名称
isSkeleton:true,
} }
}, },
created() { created() {
this.getCustomerList() this.getCustomerList()
this.getDictType() this.getDictType()
this.prvinceTree()
}, },
methods:{ methods:{
sq1(item,sq){ sq1(item,sq){
...@@ -266,6 +279,7 @@ export default { ...@@ -266,6 +279,7 @@ export default {
//获取客户列表 //获取客户列表
getCustomerList(){ getCustomerList(){
getCustomerList(this.searchParam).then(result=>{ getCustomerList(this.searchParam).then(result=>{
this.isSkeleton = false
this.tableData = result this.tableData = result
this.tableData.rows.forEach(item=>{ this.tableData.rows.forEach(item=>{
item.registerCapital = item.registerCapital == null?null: item.registerCapital.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1') item.registerCapital = item.registerCapital == null?null: item.registerCapital.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')
...@@ -296,13 +310,15 @@ export default { ...@@ -296,13 +310,15 @@ export default {
}, },
//认领客户 //认领客户
async toRL(row){ async toRL(row){
let param = row.companyName this.RLcompanyName = row.companyName
let res = await historyClaim(param) },
async RL(){
let res = await historyClaim(this.RLcompanyName)
if(res.code==200){ if(res.code==200){
this.$message.success('认领成功!') this.$message.success('认领成功!')
this.handleCurrentChange(1) this.handleCurrentChange(1)
this.RLcompanyName=''
} }
}, },
clearname(value){ clearname(value){
if(value == ""){ if(value == ""){
...@@ -311,6 +327,7 @@ export default { ...@@ -311,6 +327,7 @@ export default {
}, },
//翻页 //翻页
handleCurrentChange(val) { handleCurrentChange(val) {
this.isSkeleton = true
this.searchParam.pageNum=val this.searchParam.pageNum=val
this.getCustomerList() this.getCustomerList()
}, },
...@@ -320,9 +337,14 @@ export default { ...@@ -320,9 +337,14 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.delform{ .delform{
right: 5px;
top: 40px;
width: 228px; width: 228px;
left: 50%;
top: 50%;
margin-left: -114px;
margin-top: -57px;
.words{
font-size: 14px;
}
} }
.app-container{ .app-container{
height: calc(100vh - 134px) height: calc(100vh - 134px)
......
...@@ -118,9 +118,10 @@ ...@@ -118,9 +118,10 @@
</template> </template>
<script> <script>
import "@/assets/styles/project.scss" import '@/assets/styles/project.scss'
import * as echarts from 'echarts' import * as echarts from 'echarts'
export default {
export default {
name: 'Overview', name: 'Overview',
data() { data() {
return { return {
...@@ -192,9 +193,9 @@ export default { ...@@ -192,9 +193,9 @@ export default {
initChart(){ initChart(){
//客户级别 //客户级别
this.option = { this.option = {
tooltip: { tooltip: {
trigger: 'item' trigger: 'item',
extraCssText: 'border:0',
}, },
color:['#8A82F3','#5B9CF7','#8DCF96','#FFDC6B','#FE9C77'],//修改配色 color:['#8A82F3','#5B9CF7','#8DCF96','#FFDC6B','#FE9C77'],//修改配色
series: [ series: [
...@@ -203,17 +204,17 @@ export default { ...@@ -203,17 +204,17 @@ export default {
type: 'pie', type: 'pie',
radius: ['50%','70%'], radius: ['50%','70%'],
data: [ data: [
{ value: 23, name: '集团总部:11%' }, { value: 23, name: '集团总部:11%',borderWidth:0 },
{ value: 61, name: '一级单位:29%' }, { value: 61, name: '一级单位:29%',borderWidth:0 },
{ value: 60, name: '二级单位:29%' }, { value: 60, name: '二级单位:29%',borderWidth:0 },
{ value: 21, name: '三级单位:10%' }, { value: 21, name: '三级单位:10%',borderWidth:0 },
{ value: 44, name: '其他单位: 21%' } { value: 44, name: '其他单位: 21%',borderWidth:0 }
], ],
emphasis: { emphasis: {
itemStyle: { itemStyle: {
shadowBlur: 10, shadowBlur: 10,
shadowOffsetX: 0, shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)' shadowColor: 'rgba(0, 0, 0, 0)'
} }
} }
} }
...@@ -267,7 +268,14 @@ export default { ...@@ -267,7 +268,14 @@ export default {
} }
} }
} }
] ],
emphasis: {
itemStyle: {
// 高亮时点的颜色。
color: 'rgb(90,146,247)'
},
}
} }
this.option2 && this.myChart2.setOption(this.option2) this.option2 && this.myChart2.setOption(this.option2)
//客户资质分析 //客户资质分析
...@@ -317,7 +325,14 @@ export default { ...@@ -317,7 +325,14 @@ export default {
}, },
} }
} }
] ],
emphasis: {
itemStyle: {
// 高亮时点的颜色。
color: 'rgb(134,231,231)'
},
}
} }
this.option3 && this.myChart3.setOption(this.option3) this.option3 && this.myChart3.setOption(this.option3)
...@@ -358,6 +373,7 @@ export default { ...@@ -358,6 +373,7 @@ export default {
axisPointer:{ //悬浮于圆点展示标签 axisPointer:{ //悬浮于圆点展示标签
type:'axis' type:'axis'
}, },
extraCssText: 'border:0',
// trigger: 'axis' // trigger: 'axis'
}, },
series: [ series: [
......
...@@ -169,7 +169,7 @@ export default { ...@@ -169,7 +169,7 @@ export default {
.headForm{ .headForm{
margin-bottom: 14px; margin-bottom: 14px;
.common-title{ .common-title{
margin-right: 19px; margin-right: 24px;
} }
::v-deep .el-input__inner{ ::v-deep .el-input__inner{
border: 1px solid #D9D9D9; border: 1px solid #D9D9D9;
...@@ -210,10 +210,12 @@ export default { ...@@ -210,10 +210,12 @@ export default {
display: flex; display: flex;
border-radius: 2px 0px 0px 2px; border-radius: 2px 0px 0px 2px;
border: 1px solid #D9D9D9; border: 1px solid #D9D9D9;
line-height: 32px;
height: 32px;
span { span {
width: 60px; width: 60px;
height: 32px; height: 30px;
line-height: 32px; line-height: 28px;
font-size: 14px; font-size: 14px;
background: #F5F5F5; background: #F5F5F5;
text-align: center; text-align: center;
...@@ -234,9 +236,12 @@ export default { ...@@ -234,9 +236,12 @@ export default {
flex: 1; flex: 1;
} }
::v-deep .el-input__inner { ::v-deep .el-input__inner {
border-radius: 2px 0 2px 0;
border: 0; border: 0;
border-right: 0; line-height: 30px;
height: 30px;
position: absolute;
top: 0;
padding-right: 32px;
} }
} }
.fromTime{ .fromTime{
...@@ -251,6 +256,11 @@ export default { ...@@ -251,6 +256,11 @@ export default {
.fromTime-icon { .fromTime-icon {
display: none; display: none;
} }
.el-select{
.el-input__suffix{
right: 10px;
}
}
} }
::v-deep .form-content-width{ ::v-deep .form-content-width{
width: 170px; width: 170px;
......
<template> <template>
<div class="Tables"> <div class="Tables">
<div class="table-item"> <div class="table-item">
<el-table <el-table v-if="tableDataTotal>0" class="fixed-table"
v-loading="tableLoading" v-loading="tableLoading"
:data="tableData" :data="tableData"
element-loading-text="Loading" element-loading-text="Loading"
...@@ -61,11 +61,12 @@ ...@@ -61,11 +61,12 @@
</template> </template>
<template slot="empty"> <template slot="empty">
<div style="padding: 30px 0">
<no-data />
</div>
</template> </template>
</el-table> </el-table>
<div style="padding: 30px 0" v-else>
<no-data />
</div>
</div> </div>
<div class="pagination-box" v-if="show_page && tableDataTotal>queryParams.pageSize"> <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" /> <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 { ...@@ -199,9 +199,12 @@ export default {
}, },
color: ['#5B9CF7','#8DCF96','#FFDC6B','#FE9C77','#8A82F3'], color: ['#5B9CF7','#8DCF96','#FFDC6B','#FE9C77','#8A82F3'],
legend: { legend: {
selectedMode: false,
x: 'center', x: 'center',
y: 'bottom', y: 'bottom',
itemHeight: 9, itemHeight: 9,
itemWidth:12,
itemHeight:8,
textStyle: { textStyle: {
padding: [0, 0, -2, 0], padding: [0, 0, -2, 0],
color: '#000000', color: '#000000',
...@@ -248,6 +251,30 @@ export default { ...@@ -248,6 +251,30 @@ export default {
// 使用刚指定的配置项和数据显示图表。 // 使用刚指定的配置项和数据显示图表。
myChart.clear() //清空 myChart.clear() //清空
myChart.setOption(option) 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 { ...@@ -102,5 +102,9 @@ export default {
} }
} }
} }
::v-deep .el-input__inner{
padding-left: 10px;
padding-right: 22px;
}
} }
</style> </style>
...@@ -30,22 +30,24 @@ ...@@ -30,22 +30,24 @@
<span class="zbph-item-num">{{dataAll.bidAmount?parseFloat(dataAll.bidAmount.toFixed(6)):'--'}}</span></div> <span class="zbph-item-num">{{dataAll.bidAmount?parseFloat(dataAll.bidAmount.toFixed(6)):'--'}}</span></div>
</div> </div>
<div class="zbph-account">招标动态 <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==3}" @click="getDT(3)">近7天</div>
<div :class="{'on':datatype==2}" @click="getDT(2)">近30天</div> <div :class="{'on':datatype==2}" @click="getDT(2)">近30天</div>
<div :class="{'on':datatype==1}" @click="getDT(1)">近5年</div> <div :class="{'on':datatype==1}" @click="getDT(1)">近5年</div>
</div> </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> </template>
<div class="bid-no-data" v-else>
<no-data />
</div>
</div> </div>
<div class="bid-ywwl"> <div class="bid-ywwl">
<div class="common-title">业务往来供应商TOP5</div> <div class="common-title">业务往来供应商TOP5</div>
<div class="table-item"> <div class="table-item">
<el-table <el-table
v-if="tableData.length>0"
:data="tableData" :data="tableData"
style="width: 100%" style="width: 100%"
> >
...@@ -80,12 +82,10 @@ ...@@ -80,12 +82,10 @@
<span style="padding-right: 28px;">{{ scope.row.amount }}</span> <span style="padding-right: 28px;">{{ scope.row.amount }}</span>
</template> </template>
</el-table-column> </el-table-column>
<template slot="empty">
<div style="padding: 30px 0">
<no-data />
</div>
</template>
</el-table> </el-table>
<div class="bid-no-data" style="margin-top: 100px;" v-else>
<no-data />
</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -105,7 +105,7 @@ export default { ...@@ -105,7 +105,7 @@ export default {
data() { data() {
return { return {
encodeStr, encodeStr,
datatype:'3',//切换类型 datatype:'1',//切换类型
dataAll: {}, dataAll: {},
dtdata:[],//数据 dtdata:[],//数据
dttime:[],//坐标 dttime:[],//坐标
...@@ -166,7 +166,7 @@ export default { ...@@ -166,7 +166,7 @@ export default {
} }
}, },
grid:{ grid:{
left:'1', left:'1%',
top:'8%', top:'8%',
right:'5%', right:'5%',
bottom:'8%', bottom:'8%',
......
...@@ -7,13 +7,13 @@ ...@@ -7,13 +7,13 @@
</el-tabs> </el-tabs>
<div class="flex-box clue-box"> <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="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 class="table-item" v-if="viewData.length>0">
</div>
<div class="table-item">
<el-table <el-table
v-if="viewData.length>0"
:data="viewData" :data="viewData"
border border
max-height="231"
style="width: 100%" style="width: 100%"
:default-sort = "{prop: 'date', order: 'descending'}" :default-sort = "{prop: 'date', order: 'descending'}"
> >
...@@ -30,13 +30,11 @@ ...@@ -30,13 +30,11 @@
align="right" align="right"
label="占比(%)"> label="占比(%)">
</el-table-column> </el-table-column>
<template slot="empty">
<div style="padding: 30px 0">
<no-data />
</div>
</template>
</el-table> </el-table>
</div> </div>
<div class="busc-no-data" v-else>
<no-data />
</div>
</div> </div>
<div class="flex-box clue-type"> <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> <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 { ...@@ -197,7 +195,7 @@ export default {
width: calc(50% - 8px); width: calc(50% - 8px);
} }
.busc-no-data{ .busc-no-data{
width: calc(50% - 8px); width: 100%;
} }
.table-item{ .table-item{
width: calc(50% - 8px); 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 @@ ...@@ -134,6 +134,13 @@
<span class="dialog-footer-btn2" @click="renHide()">稍后</span> <span class="dialog-footer-btn2" @click="renHide()">稍后</span>
</div> </div>
</el-dialog> </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 <el-dialog
title="取消认领" title="取消认领"
:visible.sync="dialogVisible1" :visible.sync="dialogVisible1"
...@@ -185,6 +192,7 @@ export default { ...@@ -185,6 +192,7 @@ export default {
enterpriseLabel:[],//企业标签 enterpriseLabel:[],//企业标签
dialogVisible: false, dialogVisible: false,
dialogVisible1: false, dialogVisible1: false,
dialogVisible2: false,
} }
}, },
created() { created() {
...@@ -211,12 +219,18 @@ export default { ...@@ -211,12 +219,18 @@ export default {
registerAddress:this.companyInfo.provinceName+(this.companyInfo.cityName?'-'+this.companyInfo.cityName:'')+(this.companyInfo.districtName?'-'+this.companyInfo.districtName:''), registerAddress:this.companyInfo.provinceName+(this.companyInfo.cityName?'-'+this.companyInfo.cityName:'')+(this.companyInfo.districtName?'-'+this.companyInfo.districtName:''),
creditCode:this.companyInfo.creditCode creditCode:this.companyInfo.creditCode
} }
let res = await claim(param) let res = await api.customerStatus(this.companyInfo.companyName)
this.claimLoading = false if(res.data === 1){
if(res.code==200){ this.claimLoading = false
this.dialogVisible=true this.dialogVisible2=true;
this.companyInfo.claimStatus = 1 }else{
this.customerId = res.data.customerId 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{ }else{
this.$message.warning('对不起,当前不能认领') this.$message.warning('对不起,当前不能认领')
...@@ -226,6 +240,16 @@ export default { ...@@ -226,6 +240,16 @@ export default {
cancelClaimClick(){ cancelClaimClick(){
this.dialogVisible1 = true; 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(){ async confirm(){
let res = await api.cancelClaim(this.companyInfo.companyName) let res = await api.cancelClaim(this.companyInfo.companyName)
if(res.code==200){ if(res.code==200){
...@@ -235,7 +259,7 @@ export default { ...@@ -235,7 +259,7 @@ export default {
this.$message.error(res.msg) this.$message.error(res.msg)
} }
// api.cancelClaim(this.companyInfo.companyName).then(res=>{ // api.cancelClaim(this.companyInfo.companyName).then(res=>{
// }) // })
}, },
companySwiper(){ companySwiper(){
...@@ -329,9 +353,9 @@ export default { ...@@ -329,9 +353,9 @@ export default {
renlin(){ renlin(){
this.dialogVisible=false; this.dialogVisible=false;
// window.location.href = window.location.origin+window.location.pathname+'?customerId='+this.customerId+'&path=business' // 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), path: '/enterprise/'+encodeStr(this.companyId),
query: { query: {
'customerId': this.customerId, 'customerId': this.customerId,
'path':'business' 'path':'business'
} , } ,
...@@ -711,6 +735,12 @@ export default { ...@@ -711,6 +735,12 @@ export default {
text-align: center; text-align: center;
padding-bottom: 24px; padding-bottom: 24px;
} }
.el-dialog__header{
text-align: center;
.el-dialog__title{
font-size: 16px;
}
}
.el-dialog__footer{ .el-dialog__footer{
padding: 0px; padding: 0px;
padding-bottom: 24px; padding-bottom: 24px;
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<el-tabs v-model="activeName" @tab-click="handleClick" class="tabpane selfTab"> <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="first"></el-tab-pane>
<el-tab-pane label="对外投资" name="second"></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> </el-tabs>
<div class="table-item"> <div class="table-item">
<div class="rela-person" v-show="activeName=='first'">实际控制人:{{financial&&financial.actualController || '--'}}</div> <div class="rela-person" v-show="activeName=='first'">实际控制人:{{financial&&financial.actualController || '--'}}</div>
...@@ -35,13 +35,8 @@ ...@@ -35,13 +35,8 @@
<span>{{scope.row.businessStatus || '--'}}</span> <span>{{scope.row.businessStatus || '--'}}</span>
</template> </template>
</el-table-column> </el-table-column>
<template slot="empty">
<div style="padding: 30px 0">
<no-data />
</div>
</template>
</el-table> </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> <el-table-column label="序号" width="55" align="left" fixed>
<template slot-scope="scope">{{ shipParams.pageNum * shipParams.pageSize - shipParams.pageSize + scope.$index + 1 }}</template> <template slot-scope="scope">{{ shipParams.pageNum * shipParams.pageSize - shipParams.pageSize + scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
...@@ -64,12 +59,8 @@ ...@@ -64,12 +59,8 @@
<el-table-column prop="investStartDate" label="成立日期"></el-table-column> <el-table-column prop="investStartDate" label="成立日期"></el-table-column>
<el-table-column prop="stockPercentage" label="股权占比"></el-table-column> <el-table-column prop="stockPercentage" label="股权占比"></el-table-column>
<el-table-column prop="shouldCapi" 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> </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 :data="affiliatesData" border style="width: 100%" v-show="activeName=='third'">
<el-table-column label="序号" width="55" align="left" > <el-table-column label="序号" width="55" align="left" >
<template slot-scope="scope">{{ affiliatesParams.pageNum * affiliatesParams.pageSize - affiliatesParams.pageSize + scope.$index + 1 }}</template> <template slot-scope="scope">{{ affiliatesParams.pageNum * affiliatesParams.pageSize - affiliatesParams.pageSize + scope.$index + 1 }}</template>
......
<template> <template>
<div class="app-container clue-container"> <div class="app-container clue-container">
<div class="common-title">风险概览</div> <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="clue-echarts"><div id="echartsRisk" style="width: 100%;height:300px; margin: 0 auto;"></div></div>
<div class="table-item"> <div class="table-item">
<el-table <el-table
...@@ -28,14 +28,10 @@ ...@@ -28,14 +28,10 @@
<span>{{ scope.row.bl }}</span> <span>{{ scope.row.bl }}</span>
</template> </template>
</el-table-column> </el-table-column>
<template slot="empty">
<div style="padding: 30px 0">
<no-data />
</div>
</template>
</el-table> </el-table>
</div> </div>
</div> </div>
<no-data v-else/>
</div> </div>
</template> </template>
...@@ -123,7 +119,8 @@ export default { ...@@ -123,7 +119,8 @@ export default {
tz:'', tz:'',
bl:'' bl:''
}, },
] ],
count:0,
} }
}, },
created() { created() {
...@@ -145,6 +142,11 @@ export default { ...@@ -145,6 +142,11 @@ export default {
this.viewData.sort((a, b) => { this.viewData.sort((a, b) => {
return a.value < b.value ? 1 : -1; 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() this.getDT()
}, },
getDT(){ getDT(){
...@@ -172,6 +174,8 @@ export default { ...@@ -172,6 +174,8 @@ export default {
bottom: 20, bottom: 20,
data: this.viewData, data: this.viewData,
pageButtonPosition: 'end', pageButtonPosition: 'end',
itemWidth:12,
itemHeight:8,
}, },
color: ['#8A82F3','#5B9CF7','#43BBE0','#8ECF95','#FFDC6B', '#FE9C77', '#E8649B', '#8A82F3'], color: ['#8A82F3','#5B9CF7','#43BBE0','#8ECF95','#FFDC6B', '#FE9C77', '#E8649B', '#8A82F3'],
series: [ series: [
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
<div class="common-title">高管</div> <div class="common-title">高管</div>
<div class="table-item"> <div class="table-item">
<el-table <el-table
v-if="tableData.length>0"
:data="tableData" :data="tableData"
border border
style="width: 100%" style="width: 100%"
...@@ -26,12 +27,8 @@ ...@@ -26,12 +27,8 @@
<el-table-column <el-table-column
prop="userJobs" prop="userJobs"
label="职务"></el-table-column> label="职务"></el-table-column>
<template slot="empty">
<div style="padding: 30px 0">
<no-data />
</div>
</template>
</el-table> </el-table>
<no-data v-else/>
</div> </div>
</div> </div>
</template> </template>
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
<tables <tables
:tableLoading="tableLoading" :tableLoading="tableLoading"
:tableData="tableData" :tableData="tableData"
:tableDataTotal="tableDataTotal"
:forData="forData" :forData="forData"
:isIndex="false" :isIndex="false"
:queryParams="queryParams" :queryParams="queryParams"
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
<div class="view-content"><Operations :companyId="companyId" :financial="financial" /></div><!-- 公司经营 --> <div class="view-content"><Operations :companyId="companyId" :financial="financial" /></div><!-- 公司经营 -->
<div class="view-content"><Bidding :companyId="companyId" /></div><!--招标偏好、业务往来--> <div class="view-content"><Bidding :companyId="companyId" /></div><!--招标偏好、业务往来-->
<div class="view-content"><Busclue :companyId="companyId" :statistic="statistic" /></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"><Relationship :companyId="companyId" :financial="financial" /></div><!--关系企业-->
<div class="view-content"><Senior :companyId="companyId" /></div><!--高管--> <div class="view-content"><Senior :companyId="companyId" /></div><!--高管-->
<div class="view-content"><Risk :companyId="companyId" :statistic="statistic" /></div><!--风险概览--> <div class="view-content"><Risk :companyId="companyId" :statistic="statistic" /></div><!--风险概览-->
...@@ -18,6 +19,7 @@ import Infoheader from "./component/infoheader" ...@@ -18,6 +19,7 @@ import Infoheader from "./component/infoheader"
import Operations from "./component/operations" import Operations from "./component/operations"
import Bidding from "./component/bidding" import Bidding from "./component/bidding"
import Busclue from './component/busclue' import Busclue from './component/busclue'
import Finance from './component/finance'
import Relationship from './component/relationship' import Relationship from './component/relationship'
import Senior from './component/senior' import Senior from './component/senior'
import Risk from './component/risk' import Risk from './component/risk'
...@@ -33,6 +35,7 @@ export default { ...@@ -33,6 +35,7 @@ export default {
Relationship, Relationship,
Senior, Senior,
Risk, Risk,
Finance,
Tender Tender
}, },
data() { data() {
......
...@@ -27,7 +27,15 @@ export default { ...@@ -27,7 +27,15 @@ export default {
if (this.$route.params.id) { // 获取companyId if (this.$route.params.id) { // 获取companyId
this.loading = true this.loading = true
if(this.$route.name=='Company'){ //企业详情 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'){ //人员详情 if(this.$route.name=='Personnel'){ //人员详情
this.src = `${this.domain}/personnel/${this.$route.params.id}.html?ak=${this.ak}` this.src = `${this.domain}/personnel/${this.$route.params.id}.html?ak=${this.ak}`
......
...@@ -614,25 +614,9 @@ export default { ...@@ -614,25 +614,9 @@ export default {
}); });
}, },
mounted() { mounted() {
window.addEventListener("scroll",this.scrolling)
this.init(); this.init();
}, },
beforeDestroy() {
window.removeEventListener("scroll", this.scrolling);
},
methods: { 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() { domicileChange() {
let arr = this.$refs.address.getCheckedNodes(); let arr = this.$refs.address.getCheckedNodes();
let provinceIds = [], let provinceIds = [],
...@@ -1271,9 +1255,14 @@ export default { ...@@ -1271,9 +1255,14 @@ export default {
z-index: 9; z-index: 9;
} }
::v-deep .el-table__fixed-header-wrapper{ ::v-deep .el-table__fixed-header-wrapper{
position: sticky;
z-index: 9; z-index: 9;
top: 56px;
}
::v-deep .el-table__fixed{
overflow-x: clip;
overflow-y: clip;
} }
} }
.table-item-jf1{ .table-item-jf1{
......
...@@ -512,43 +512,43 @@ ...@@ -512,43 +512,43 @@
</template> </template>
<template v-if="item.recentlyCount!=null"> <template v-if="item.recentlyCount!=null">
<span class="right-title-grey">中标业绩:</span> <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> <span class="right-title-blue" v-html="item.recentlyCount"> </span>
</router-link> </router-link>
</template> </template>
<template v-if="item.skyCount!=null"> <template v-if="item.skyCount!=null">
<span class="right-title-grey">四库业绩:</span> <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> <span class="right-title-blue" v-html="item.skyCount"> </span>
</router-link> </router-link>
</template> </template>
<template v-if="item.registeredPersonnelCount!=null"> <template v-if="item.registeredPersonnelCount!=null">
<span class="right-title-grey">注册人员:</span> <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> <span class="right-title-blue" v-html="item.registeredPersonnelCount"> </span>
</router-link> </router-link>
</template> </template>
<template v-if="item.threePersonnelCount!=null"> <template v-if="item.threePersonnelCount!=null">
<span class="right-title-grey">三类人员:</span> <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> <span class="right-title-blue" v-html="item.threePersonnelCount"> </span>
</router-link> </router-link>
</template> </template>
<template v-if="item.jskBidCount>0"> <template v-if="item.jskBidCount>0">
<span class="right-title-grey">招标公告:</span> <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> <span class="right-title-blue" v-html="item.jskBidCount"> </span>
</router-link> </router-link>
</template> </template>
<template v-if="item.customerCount>0"> <template v-if="item.customerCount>0">
<span class="right-title-grey">客户:</span> <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> <span class="right-title-blue" v-html="item.customerCount"> </span>
</router-link> </router-link>
</template> </template>
<template v-if="item.supplierCount>0"> <template v-if="item.supplierCount>0">
<span class="right-title-grey">供应商:</span> <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> <span class="right-title-blue" v-html="item.supplierCount"> </span>
</router-link> </router-link>
</template> </template>
...@@ -2626,6 +2626,7 @@ ...@@ -2626,6 +2626,7 @@
this.fieldOptions[i].status = false; this.fieldOptions[i].status = false;
} }
this.fieldText = this.fieldOptions[index].value; this.fieldText = this.fieldOptions[index].value;
this.orderText = this.fieldOptions[index].order;
this.fieldOptions[index].status = true; this.fieldOptions[index].status = true;
this.search(); this.search();
}, },
...@@ -2763,7 +2764,7 @@ ...@@ -2763,7 +2764,7 @@
}, },
toEnterprise(id, html,type) { 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) { toEnterpriseDetail(id) {
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<div style="position:relative" v-for="(itme,i) in personnelList" <div style="position:relative" v-for="(itme,i) in personnelList"
:class="itme.status==true?'active':'' " :key='i' @click="personnelListbtn(i)"> :class="itme.status==true?'active':'' " :key='i' @click="personnelListbtn(i)">
<p>{{itme.value}}</p> <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>
</div> </div>
......
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
<el-progress class="progress2" :text-inside="true" :stroke-width="14" :percentage="70"></el-progress> <el-progress class="progress2" :text-inside="true" :stroke-width="14" :percentage="70"></el-progress>
</div> </div>
<div style="background: #ffffff;margin: 0 12px 12px 12px;"> <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> </div>
</div> </div>
...@@ -279,6 +279,20 @@ ...@@ -279,6 +279,20 @@
<span>中标单位:中铁十二局集团</span> <span>中标单位:中铁十二局集团</span>
</p> </p>
</div> </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> </div>
<div v-if="user === 2" class="zbhxr"> <div v-if="user === 2" class="zbhxr">
...@@ -314,6 +328,24 @@ ...@@ -314,6 +328,24 @@
<span>中标金额:4754.34</span> <span>中标金额:4754.34</span>
</p> </p>
</div> </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> </div>
</div> </div>
...@@ -429,6 +461,24 @@ export default { ...@@ -429,6 +461,24 @@ export default {
name:'重庆机场集团', name:'重庆机场集团',
time:'2023-04-12 14: 00' 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:[ pmData:[
{ {
...@@ -974,6 +1024,7 @@ export default { ...@@ -974,6 +1024,7 @@ export default {
margin: 0; margin: 0;
} }
.home { .home {
padding-bottom:24px;
::v-deep .el-row{ ::v-deep .el-row{
.el-col:nth-child(1){ .el-col:nth-child(1){
padding-left: 0 !important; padding-left: 0 !important;
...@@ -1089,18 +1140,18 @@ export default { ...@@ -1089,18 +1140,18 @@ export default {
} }
.content-wrap{ .content-wrap{
margin-bottom: 12px; margin-bottom: 12px;
height: 460px; height: 587px;
.select-popper{ .select-popper{
margin-right:0; margin-right:0;
} }
.record{ .record{
height: 460px; height: 587px;
background: #FFFFFF; background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
position: relative; position: relative;
.list{ .list{
height: 375px; height: 510px;
overflow: hidden; overflow: hidden;
.item{ .item{
border-bottom: 1px solid #EEEEEE; border-bottom: 1px solid #EEEEEE;
...@@ -1131,27 +1182,28 @@ export default { ...@@ -1131,27 +1182,28 @@ export default {
text-align: center; text-align: center;
color: #0081FF; color: #0081FF;
font-size: 14px; font-size: 14px;
margin-top: 4px;
cursor: pointer; cursor: pointer;
position: absolute; position: absolute;
bottom:16px; width: 95%;
left: 50%; height: 60px;
margin-left: -48px; line-height: 60px;
background: linear-gradient(360deg, #FFFFFF 0%, #FFFFFF 17%, rgba(255,255,255,0.6) 100%);
bottom: 0;
} }
} }
.ranking{ .ranking{
height: 460px; height: 587px;
background: #FFFFFF; background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.main{ .main{
background: url("../assets/images/index/yjpm_bg.png"); background: url("../assets/images/index/yjpm_bg.png");
background-size: 100% 100%; background-size: 100% 100%;
height: 399px; height: 525px;
margin-top: 10px; margin-top: 10px;
} }
.amount{ .amount{
padding: 16px 24px; padding: 16px 12px;
p{ p{
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
...@@ -1175,6 +1227,8 @@ export default { ...@@ -1175,6 +1227,8 @@ export default {
} }
.progress1{ .progress1{
height: 10px !important; height: 10px !important;
margin-bottom:6px;
margin-top:8px;
::v-deep .el-progress-bar__outer{ ::v-deep .el-progress-bar__outer{
.el-progress-bar__inner{ .el-progress-bar__inner{
background:#9AEAD3 background:#9AEAD3
...@@ -1303,6 +1357,7 @@ export default { ...@@ -1303,6 +1357,7 @@ export default {
font-size: 14px; font-size: 14px;
span{ span{
margin-right: 24px; margin-right: 24px;
color:rgba(35, 35, 35, 0.8);
} }
} }
.btn{ .btn{
...@@ -1380,7 +1435,7 @@ export default { ...@@ -1380,7 +1435,7 @@ export default {
background: #FFFFFF; background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
height: 440px; height: 617px;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
::v-deep .el-tabs__header{ ::v-deep .el-tabs__header{
...@@ -1388,7 +1443,7 @@ export default { ...@@ -1388,7 +1443,7 @@ export default {
} }
::v-deep .el-tabs__content{ ::v-deep .el-tabs__content{
overflow-y: auto; overflow-y: auto;
height: 368px; height: 567px;
} }
::v-deep .el-timeline{ ::v-deep .el-timeline{
.el-timeline-item{ .el-timeline-item{
...@@ -1528,7 +1583,7 @@ export default { ...@@ -1528,7 +1583,7 @@ export default {
} }
} }
.zbgg{ .zbgg{
height: 470px; height: 599px;
background: #FFFFFF; background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
...@@ -1570,7 +1625,7 @@ export default { ...@@ -1570,7 +1625,7 @@ export default {
} }
} }
.zbhxr{ .zbhxr{
height: 382px; height: 558px;
background: #FFFFFF; background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
......
...@@ -174,7 +174,7 @@ export default { ...@@ -174,7 +174,7 @@ export default {
.left{ .left{
float: left; float: left;
width: 730px; width: 730px;
margin-right: 170px; /*margin-right: 170px;*/
} }
.logo{ .logo{
width: 253px; width: 253px;
......
<template> <template>
<div class="region"> <div class="region">
<div class="region_left"> <div class="region_left">
<span class="province">{{province}}</span> <div>
<span class="icon"> <span class="province">{{province}}</span>
<i class="el-icon-location"></i> <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> </span>
<el-cascader ref="address" class="cascader-region" popper-class='cascader-region-addd' </div>
@change="addressListbtn" v-model="address" :options="addressList" :props="props" collapse-tags></el-cascader>
</div> </div>
</div> </div>
</template> </template>
...@@ -49,6 +50,7 @@ ...@@ -49,6 +50,7 @@
data.provinceId=this.provinceId data.provinceId=this.provinceId
data.provinces=nodesObj.pathLabels data.provinces=nodesObj.pathLabels
this.$parent.addressListbtn(data) this.$parent.addressListbtn(data)
localStorage.setItem('location', true)
}, },
//地区 //地区
async dataRegion() { async dataRegion() {
...@@ -118,7 +120,6 @@ ...@@ -118,7 +120,6 @@
background-size: 100%; background-size: 100%;
width: 603px; width: 603px;
height: 48px; height: 48px;
position: relative;
padding-left: 16px; padding-left: 16px;
.province{ .province{
font-size: 20px; font-size: 20px;
...@@ -136,6 +137,7 @@ ...@@ -136,6 +137,7 @@
font-size: 12px; font-size: 12px;
display: inline-block; display: inline-block;
height: 48px; height: 48px;
position: relative;
i{ i{
margin-left: 4px; margin-left: 4px;
font-size: 16px; font-size: 16px;
...@@ -145,11 +147,11 @@ ...@@ -145,11 +147,11 @@
} }
.cascader-region { .cascader-region {
position: absolute; position: absolute;
left: 20px; left: -50px;
top: 8px; top: 8px;
opacity: 0; opacity: 0;
line-height: 22px; 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 @@ ...@@ -45,6 +45,12 @@
</el-table> </el-table>
</div> </div>
</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> </div>
</template> </template>
...@@ -66,11 +72,13 @@ export default { ...@@ -66,11 +72,13 @@ export default {
data:[], data:[],
oneYear:'', oneYear:'',
twoYear:'', twoYear:'',
state:false
} }
}, },
watch: { watch: {
provinceId(newValue, oldValue){ provinceId(newValue, oldValue){
this.getData() this.getData()
this.getGroupCount()
} }
}, },
created() { created() {
...@@ -105,22 +113,24 @@ export default { ...@@ -105,22 +113,24 @@ export default {
params.county=this.provinceId[2] params.county=this.provinceId[2]
} }
bidMoneyGroupByProjectType(params).then(res => { bidMoneyGroupByProjectType(params).then(res => {
let list=res.data[1].type if(res.data.length > 0){
for (let i=0; i<res.data[0].type.length; i++){ let list=res.data[1].type
for (let j=0; j<list.length; j++){ for (let i=0; i<res.data[0].type.length; i++){
if(res.data[0].type[i].projectType === list[j].projectType){ for (let j=0; j<list.length; j++){
list[j].lastMoney=res.data[0].type[i].money; if(res.data[0].type[i].projectType === list[j].projectType){
list[j].lastRate=res.data[0].type[i].rate; 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(){ getGroupCount(){
...@@ -134,7 +144,17 @@ export default { ...@@ -134,7 +144,17 @@ export default {
startTime=this.queryParams.year+'-01-01'; startTime=this.queryParams.year+'-01-01';
endTime=this.queryParams.year+'-12-31'; 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){ if(res.code === 200){
let list=[] let list=[]
for(let i=0; i<res.data.length; i++){ for(let i=0; i<res.data.length; i++){
...@@ -144,9 +164,9 @@ export default { ...@@ -144,9 +164,9 @@ export default {
list.push(item); list.push(item);
} }
this.data=list; this.data=list;
if(list.length > 0){ // if(list.length > 0){
this.initChart() this.initChart()
} // }
} }
}) })
}, },
...@@ -316,6 +336,26 @@ export default { ...@@ -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> </style>
...@@ -203,6 +203,21 @@ export default { ...@@ -203,6 +203,21 @@ export default {
.table-item{ .table-item{
margin-top: 22px; margin-top: 22px;
::v-deep .el-table{ ::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{ th{
font-size: 12px !important; font-size: 12px !important;
font-weight: 400 !important; font-weight: 400 !important;
......
...@@ -7,57 +7,57 @@ ...@@ -7,57 +7,57 @@
<div class="item-title"><i style="background: #4E8EFF;"></i>{{recentlyYear.year}}年GDP</div> <div class="item-title"><i style="background: #4E8EFF;"></i>{{recentlyYear.year}}年GDP</div>
<div class="item-count"> <div class="item-count">
<span>{{recentlyYear.gdp}}</span>亿 <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"> <img v-else src="@/assets/images/economies/icon_down.png">
</div> </div>
<div id="echartsGDP" style="height: 75px;"></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 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.gdpGrowth).toFixed(2).toString().substring(1)}}%</span></div> <div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.gdpCompare).toString().substring(1)}}亿</span></div>
</div> </div>
<div class="item"> <div class="item">
<div class="item-title"><i style="background: #718AFF;"></i>{{recentlyYear.year}}年GDP增速</div> <div class="item-title"><i style="background: #718AFF;"></i>{{recentlyYear.year}}年GDP增速</div>
<div class="item-count"> <div class="item-count">
<span>{{recentlyYear.gdpGrowth}}</span>% <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"> <img v-else src="@/assets/images/economies/icon_down.png">
</div> </div>
<div id="echartsZS" style="height: 75px;"></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 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).toFixed(2).toString().substring(1)}}%</span></div> <div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.gdpGrowthCompare).toString().substring(1)}}%</span></div>
</div> </div>
<div class="item"> <div class="item">
<div class="item-title"><i style="background: #3AD0D1;"></i>{{recentlyYear.year}}年人口</div> <div class="item-title"><i style="background: #3AD0D1;"></i>{{recentlyYear.year}}年人口</div>
<div class="item-count"> <div class="item-count">
<span>{{recentlyYear.population}}</span> <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"> <img v-else src="@/assets/images/economies/icon_down.png">
</div> </div>
<div id="echartsRK" style="height: 75px;"></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 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.populationGrowthRate).toFixed(2).toString().substring(1)}}%</span></div> <div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.populationCompare).toString().substring(1)}}</span></div>
</div> </div>
<div class="item"> <div class="item">
<div class="item-title"><i style="background: #FFBE5D;"></i>{{recentlyYear.year}}年一般公共预算收入</div> <div class="item-title"><i style="background: #FFBE5D;"></i>{{recentlyYear.year}}年一般公共预算收入</div>
<div class="item-count"> <div class="item-count">
<span>{{recentlyYear.gbr}}</span>亿 <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"> <img v-else src="@/assets/images/economies/icon_down.png">
</div> </div>
<div id="echartsSR" style="height: 75px;"></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 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.gbrGrowth).toFixed(2).toString().substring(1)}}%</span></div> <div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.gbrCompare).toString().substring(1)}}亿</span></div>
</div> </div>
<div class="item"> <div class="item">
<div class="item-title"><i style="background: #FF8935;"></i>{{recentlyYear.year}}年地方政府债务余额</div> <div class="item-title"><i style="background: #FF8935;"></i>{{recentlyYear.year}}年地方政府债务余额</div>
<div class="item-count"> <div class="item-count">
<span>{{recentlyYear.govDebtBalance}}</span>亿 <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"> <img v-else src="@/assets/images/economies/icon_down.png">
</div> </div>
<div id="echartsYE" style="height: 75px;"></div> <div id="echartsYE" style="height: 75px;"></div>
<div class="item-text up" v-if="Number(getMoneyNum(recentlyYear.govDebtBalance)) > Number(getMoneyNum(nextYearMap.govDebtBalance))"> <div class="item-text up" v-if="Number(recentlyYear.govDebtBalanceCompare) > 0">
{{nextYearMap.year}}年上升<span>{{recentlyYear.govDebtBalanceCompare}}%</span></div> {{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 down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.govDebtBalanceCompare).toString().substring(1)}}亿</span></div>
</div> </div>
</div> </div>
</div> </div>
...@@ -279,10 +279,10 @@ export default { ...@@ -279,10 +279,10 @@ export default {
} }
}, },
created() { created() {
this.getData()
let mydate=new Date(); let mydate=new Date();
this.labelData=[mydate.getFullYear()-2,mydate.getFullYear()-1] this.labelData=[mydate.getFullYear()-2,mydate.getFullYear()-1]
this.$nextTick(()=>{ this.$nextTick(()=>{
this.getData()
// console.log(this.dataQuery) // console.log(this.dataQuery)
}) })
}, },
...@@ -300,11 +300,6 @@ export default { ...@@ -300,11 +300,6 @@ export default {
// } // }
}, },
watch: { watch: {
dataQuery: {
handler(newValue, oldValue) {
},
deep: true
},
provinceId(newValue, oldValue){ provinceId(newValue, oldValue){
this.getData() this.getData()
} }
...@@ -823,6 +818,7 @@ export default { ...@@ -823,6 +818,7 @@ export default {
.table-item{ .table-item{
margin-top: 22px; margin-top: 22px;
::v-deep .el-table{ ::v-deep .el-table{
overflow:visible;
th{ th{
font-size: 12px !important; font-size: 12px !important;
font-weight: 400 !important; font-weight: 400 !important;
...@@ -836,6 +832,16 @@ export default { ...@@ -836,6 +832,16 @@ export default {
.caret-wrapper{ .caret-wrapper{
width: 10px; 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 { ...@@ -63,7 +63,9 @@ export default {
} }
}, },
created() { created() {
this.dataQuery=this.$route.query; //使用JSON方法深拷贝
let data = JSON.parse(JSON.stringify(this.$route.query))
this.dataQuery=data;
if(this.dataQuery.provinceId){ if(this.dataQuery.provinceId){
if(Array.isArray(this.dataQuery.province)){ if(Array.isArray(this.dataQuery.province)){
this.province=this.dataQuery.province[0]; this.province=this.dataQuery.province[0];
...@@ -71,41 +73,54 @@ export default { ...@@ -71,41 +73,54 @@ export default {
this.province=this.dataQuery.province this.province=this.dataQuery.province
this.dataQuery.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 { }else {
location({}).then(res => { location({}).then(res => {
if(res.data.area){ if(localStorage.getItem('location')){
this.province=res.data.area if(res.data.area){
}else { this.province=res.data.area
if(res.data.city){
this.province=res.data.city
}else { }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(!this.dataQuery.provinceId){ if(res.data.areaId){
if(res.data.areaId){ this.dataQuery.provinceId=[res.data.provinceId,res.data.cityId,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]
this.provinceId=[res.data.provinceId,res.data.cityId,res.data.areaId]
}else {
if(res.data.cityId){
this.provinceId=[res.data.provinceId,res.data.cityId]
}else { }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 { }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){ if(this.dataQuery.activeName){
this.activeName=this.dataQuery.activeName; this.activeName=this.dataQuery.activeName;
} }
// let name = sessionStorage.getItem('currentTab') // let name = sessionStorage.getItem('currentTab')
// if (name != "undefined" && name){ // if (name != "undefined" && name){
// this.activeName = name; // this.activeName = name;
......
...@@ -24,16 +24,16 @@ ...@@ -24,16 +24,16 @@
</el-input> </el-input>
<span class="total">{{tableDataTotal}}</span> <span class="total">{{tableDataTotal}}</span>
</div> </div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="table-item"> <div class="table-item">
<el-table <el-table
v-loading="tableLoading"
:data="tableData" :data="tableData"
element-loading-text="Loading" element-loading-text="Loading"
border border
fit fit
@sort-change="sortChange" @sort-change="sortChange"
highlight-current-row highlight-current-row
v-if="tableDataTotal > 0" v-if="tableDataTotal > 0 && !isSkeleton"
:default-sort = "{prop: 'skyCount', order: 'descending'}" :default-sort = "{prop: 'skyCount', order: 'descending'}"
> >
<el-table-column label="序号" width="60" align="left" fixed> <el-table-column label="序号" width="60" align="left" fixed>
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </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"> <img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div> <div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div> <div class="p2">建议调整关键词或筛选条件,重新搜索</div>
...@@ -92,10 +92,10 @@ ...@@ -92,10 +92,10 @@
import aptitudeCode from '@/assets/json/aptitudeCode' import aptitudeCode from '@/assets/json/aptitudeCode'
import { enterprise,location,getUipIdByCid } from '@/api/macro/macro' import { enterprise,location,getUipIdByCid } from '@/api/macro/macro'
import Region from '../component/region' import Region from '../component/region'
import skeleton from '../component/skeleton'
export default { export default {
name: 'Enterprises', name: 'Enterprises',
components: {Region}, components: {Region,skeleton},
data() { data() {
return { return {
encodeStr, encodeStr,
...@@ -124,6 +124,7 @@ export default { ...@@ -124,6 +124,7 @@ export default {
provinceId:'', provinceId:'',
show_page:true, show_page:true,
MaxPage:500, MaxPage:500,
isSkeleton:true
} }
}, },
created() { created() {
...@@ -145,8 +146,8 @@ export default { ...@@ -145,8 +146,8 @@ export default {
scrolling() { scrolling() {
let el = document.getElementsByClassName("el-table__fixed-header-wrapper")[0] let el = document.getElementsByClassName("el-table__fixed-header-wrapper")[0]
let scrollTop =window.pageYOffset ||document.documentElement.scrollTop ||document.body.scrollTop; let scrollTop =window.pageYOffset ||document.documentElement.scrollTop ||document.body.scrollTop;
if (scrollTop>135){ if (scrollTop>197){
let top = scrollTop-138 let top = scrollTop-197
el.style.top = top+'px' el.style.top = top+'px'
}else{ }else{
el.style.top = 0 el.style.top = 0
...@@ -166,6 +167,7 @@ export default { ...@@ -166,6 +167,7 @@ export default {
this.aptitudeCodeList=aptitudeCode this.aptitudeCodeList=aptitudeCode
}, },
async querySubmit(){ async querySubmit(){
this.isSkeleton = true;
const params = { pageNum: this.pageIndex, pageSize: this.pageSize} const params = { pageNum: this.pageIndex, pageSize: this.pageSize}
if(this.queryParams.field){ if(this.queryParams.field){
params.field=this.queryParams.field params.field=this.queryParams.field
...@@ -192,6 +194,7 @@ export default { ...@@ -192,6 +194,7 @@ export default {
params.aptitudeQueryDto.aptitudeDtoList=aptitudeType params.aptitudeQueryDto.aptitudeDtoList=aptitudeType
} }
enterprise(params).then(res => { enterprise(params).then(res => {
this.isSkeleton = false
if(res.code === 200){ if(res.code === 200){
this.tableData=res.data.list; this.tableData=res.data.list;
this.tableDataTotal=res.data.total; this.tableDataTotal=res.data.total;
...@@ -421,15 +424,21 @@ export default { ...@@ -421,15 +424,21 @@ export default {
} }
} }
::v-deep .el-table{ ::v-deep .el-table{
/*overflow:visible;*/ overflow:visible;
/*.el-table__header-wrapper{*/ .el-table__header-wrapper{
/*position: sticky;*/ position: sticky;
/*top:56px;*/ top:56px;
/*z-index: 9;*/ z-index: 9;
/*}*/ }
/*.el-table__fixed-header-wrapper{*/ .el-table__fixed-header-wrapper{
/*z-index: 9;*/ position: sticky;
/*}*/ z-index: 9;
top: 56px;
}
.el-table__fixed{
overflow-x: clip;
overflow-y: clip;
}
th{ th{
font-size: 12px !important; font-size: 12px !important;
font-weight: 400 !important; font-weight: 400 !important;
......
...@@ -130,9 +130,9 @@ ...@@ -130,9 +130,9 @@
{{formatDate(scope.row.tenderDate)}} {{formatDate(scope.row.tenderDate)}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="actualBondIssueScale" label="专项债规模(亿)" width="260" /> <el-table-column prop="actualBondIssueScale" label="专项债规模(亿)" width="260" :formatter="formatStatus"/>
<el-table-column prop="isUsedProjectScale" label="用于项目规模(亿)" width="260" /> <el-table-column prop="isUsedProjectScale" label="用于项目规模(亿)" width="260" :formatter="formatStatus"/>
<el-table-column prop="isUsedCapital" label="是否资本金" width="200" /> <el-table-column prop="isUsedCapital" label="是否资本金" width="200" :formatter="formatStatus"/>
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -185,7 +185,10 @@ export default { ...@@ -185,7 +185,10 @@ export default {
// var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds() // var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
// return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds // return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
return year + '-' + month + '-' + day return year + '-' + month + '-' + day
} },
formatStatus: function(row, column, cellValue) {
return cellValue? cellValue : '-'
},
} }
} }
</script> </script>
......
...@@ -110,30 +110,41 @@ export default { ...@@ -110,30 +110,41 @@ export default {
}, },
created() { created() {
location({}).then(res => { location({}).then(res => {
if(res.data.area){ if(localStorage.getItem('location')){
this.province=res.data.area if(res.data.area){
}else { this.province=res.data.area
if(res.data.city){
this.province=res.data.city
}else { }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(!this.dataQuery.provinceId){ if(res.data.areaId){
if(res.data.areaId){ this.dataQuery.provinceId=[res.data.provinceId,res.data.cityId,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]
this.provinceId=[res.data.provinceId,res.data.cityId,res.data.areaId]
}else {
if(res.data.cityId){
this.provinceId=[res.data.provinceId,res.data.cityId]
}else { }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 { }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.$nextTick(() => {
this.getData() this.getData()
......
...@@ -295,5 +295,17 @@ export default { ...@@ -295,5 +295,17 @@ export default {
} }
.table-item{ .table-item{
padding: 16px 10px 16px 16px; 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> </style>
...@@ -28,16 +28,16 @@ ...@@ -28,16 +28,16 @@
<span class="flex-box" @click="handleMessage"><img src="@/assets/images/ability_excel.png">导出EXCEL</span> <span class="flex-box" @click="handleMessage"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
</div> </div>
</div> </div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="table-item"> <div class="table-item">
<el-table <el-table
v-loading="tableLoading"
class="fixed-table" class="fixed-table"
:data="tableData" :data="tableData"
element-loading-text="Loading" element-loading-text="Loading"
@sort-change="sortChange" @sort-change="sortChange"
border border
highlight-current-row highlight-current-row
v-if="tableDataTotal > 0" v-if="tableDataTotal > 0 && !isSkeleton"
:default-sort = "{prop: 'gdp', order: 'descending'}" :default-sort = "{prop: 'gdp', order: 'descending'}"
> >
<el-table-column label="序号" width="60" align="left" fixed> <el-table-column label="序号" width="60" align="left" fixed>
...@@ -96,7 +96,7 @@ ...@@ -96,7 +96,7 @@
<el-table-column label="社会消费品零售总额(亿元)" prop="trscg" :formatter="formatStatus" width="160" align="right"></el-table-column> <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-column label="城镇居民人均可支配收入(元)" prop="urbanPcdi" :formatter="formatStatus" width="160" align="right"></el-table-column>
</el-table> </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"> <img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div> <div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div> <div class="p2">建议调整关键词或筛选条件,重新搜索</div>
...@@ -117,11 +117,12 @@ ...@@ -117,11 +117,12 @@
import { nationalPage,getYears } from '@/api/macro/macro' import { nationalPage,getYears } from '@/api/macro/macro'
import dataRegion from '@/assets/json/dataRegion' import dataRegion from '@/assets/json/dataRegion'
import economiesDetail from './economies-detail' import economiesDetail from './economies-detail'
import skeleton from '../../component/skeleton'
import axios from 'axios' import axios from 'axios'
export default { export default {
name: 'NationalEconomies', name: 'NationalEconomies',
components: { components: {
economiesDetail economiesDetail,skeleton
}, },
data() { data() {
return { return {
...@@ -142,7 +143,8 @@ ...@@ -142,7 +143,8 @@
pageSize: 20, pageSize: 20,
tableDataTotal: null, tableDataTotal: null,
show_page:true, show_page:true,
MaxPage:500 MaxPage:500,
isSkeleton:true
} }
}, },
created() { created() {
...@@ -151,17 +153,17 @@ ...@@ -151,17 +153,17 @@
this.getYears() this.getYears()
}, },
mounted() { mounted() {
window.addEventListener("scroll",this.scrolling) // window.addEventListener("scroll",this.scrolling)
}, },
beforeDestroy() { beforeDestroy() {
window.removeEventListener("scroll", this.scrolling); // window.removeEventListener("scroll", this.scrolling);
}, },
methods: { methods: {
scrolling() { scrolling() {
// let el = document.getElementsByClassName("el-table__fixed-header-wrapper")[0] // let el = document.getElementsByClassName("el-table__fixed-header-wrapper")[0]
// let scrollTop =window.pageYOffset ||document.documentElement.scrollTop ||document.body.scrollTop; // let scrollTop =window.pageYOffset ||document.documentElement.scrollTop ||document.body.scrollTop;
// if (scrollTop>135){ // if (scrollTop>138){
// let top = scrollTop-136 // let top = scrollTop-138
// el.style.top = top+'px' // el.style.top = top+'px'
// }else{ // }else{
// el.style.top = 0 // el.style.top = 0
...@@ -227,7 +229,7 @@ ...@@ -227,7 +229,7 @@
}, },
// 查询提交 // 查询提交
async querySubmit() { async querySubmit() {
this.tableLoading = true this.isSkeleton = true
const params = { pageNum: this.pageIndex, pageSize: this.pageSize, year: this.queryParams.year,type:1 } const params = { pageNum: this.pageIndex, pageSize: this.pageSize, year: this.queryParams.year,type:1 }
if(this.queryParams.address){ if(this.queryParams.address){
let arr = this.$refs.address.getCheckedNodes(); let arr = this.$refs.address.getCheckedNodes();
...@@ -272,7 +274,7 @@ ...@@ -272,7 +274,7 @@
} }
nationalPage(params).then(res => { nationalPage(params).then(res => {
this.tableLoading = false this.isSkeleton = false
this.tableData = res.data.list; this.tableData = res.data.list;
this.tableDataTotal = res.data.totalCount this.tableDataTotal = res.data.totalCount
}) })
...@@ -401,15 +403,21 @@ ...@@ -401,15 +403,21 @@
} }
} }
::v-deep .el-table{ ::v-deep .el-table{
/*overflow:visible;*/ overflow:visible;
/*.el-table__header-wrapper{*/ .el-table__header-wrapper{
/*position: sticky;*/ position: sticky;
/*top:56px;*/ top:56px;
/*z-index: 9;*/ z-index: 9;
/*}*/ }
/*.el-table__fixed-header-wrapper{*/ .el-table__fixed-header-wrapper{
/*z-index: 9;*/ position: sticky;
/*}*/ z-index: 9;
top: 56px;
}
.el-table__fixed{
overflow-x: clip;
overflow-y: clip;
}
th{ th{
font-size: 12px !important; font-size: 12px !important;
font-weight: 400 !important; font-weight: 400 !important;
......
...@@ -346,6 +346,7 @@ export default { ...@@ -346,6 +346,7 @@ export default {
axisPointer:{ //悬浮于圆点展示标签 axisPointer:{ //悬浮于圆点展示标签
type:'axis' type:'axis'
}, },
extraCssText: 'border:0',
// trigger: 'axis' // trigger: 'axis'
}, },
legend: { legend: {
......
...@@ -75,10 +75,10 @@ ...@@ -75,10 +75,10 @@
projectName:'',// 项目名称 projectName:'',// 项目名称
companyId:'',//企业id companyId:'',//企业id
ownerCompany:'',//业主单位 ownerCompany:'',//业主单位
projectStage:'',//项目阶段 projectStage:null,//项目阶段
projectType:'',//项目类型 projectType:null,//项目类型
projectCategory:'',//项目类别 projectCategory:null,//项目类别
investmentAmount:'',//投资估算 investmentAmount:null,//投资估算
isPrivate:0,//可见范围(0 仅自己可见,1 他人可见) isPrivate:0,//可见范围(0 仅自己可见,1 他人可见)
}, },
rules:{ rules:{
...@@ -169,10 +169,10 @@ ...@@ -169,10 +169,10 @@
projectName:'',// 项目名称 projectName:'',// 项目名称
companyId:'',//企业id companyId:'',//企业id
ownerCompany:'',//业主单位 ownerCompany:'',//业主单位
projectStage:'',//项目阶段 projectStage:null,//项目阶段
projectType:'',//项目类型 projectType:null,//项目类型
projectCategory:'',//项目类别 projectCategory:null,//项目类别
investmentAmount:'',//投资估算 investmentAmount:null,//投资估算
isPrivate:0,//可见范围(0 仅自己可见,1 他人可见) isPrivate:0,//可见范围(0 仅自己可见,1 他人可见)
}, },
this.showlist = false this.showlist = false
......
...@@ -61,69 +61,71 @@ ...@@ -61,69 +61,71 @@
</div> </div>
</div> </div>
</div> </div>
<div class="recordlist" v-if="showtype=='gjdt'"> <skeleton v-if="isSkeleton" style="padding-top: 16px"></skeleton>
<div class="rec_detail" v-for="(item,index) in recordlist.rows"> <div v-else>
<div class="delform" v-if="isdel && delID == item.id"> <div class="recordlist" v-if="showtype=='gjdt'">
<div class="words">是否删除该条记录</div> <div class="rec_detail" v-for="(item,index) in recordlist.rows">
<div> <div class="delform" v-if="isdel && delID == item.id">
<div class="btnsmall btn_primary h28" @click="delele">确定</div> <div class="words">是否删除该条记录</div>
<div class="btnsmall btn_cancel h28" @click="isdel=false">取消</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>
<div class="rec_time"> <div class="rec_time">
<i class="el-icon-time"></i> <i class="el-icon-time"></i>
<div>{{item.createTime && item.createTime.slice(0, 16)}}</div> <div>{{item.createTime && item.createTime.slice(0, 16)}}</div>
<div class="operate"> <div class="operate">
<!--<img src="@/assets/images/edit.png">第一期不做编辑--> <!--<img src="@/assets/images/edit.png">第一期不做编辑-->
<img @click="delRecord(item.id)" src="@/assets/images/delete.png"> <img @click="delRecord(item.id)" src="@/assets/images/delete.png">
</div>
</div> </div>
</div> <div class="rec_con">
<div class="rec_con"> <div><strong>{{item.nickName}}</strong> <span v-if="item.visitMode">({{item.visitMode}})</span></div>
<div><strong>{{item.nickName}}</strong> <span v-if="item.visitMode">({{item.visitMode}})</span></div> <div><span>{{item.content}}</span></div>
<div><span>{{item.content}}</span></div> <div class="rec_text">
<div class="rec_text"> <span v-if="item.name">拜访对象:{{item.name||'--'}}</span>
<span v-if="item.name">拜访对象:{{item.name||'--'}}</span> <span v-if="showtype == 'gjdt' && item.companyName != ''">关联企业:{{item.companyName}}</span>
<span v-if="showtype == 'gjdt' && item.companyName != ''">关联企业:{{item.companyName}}</span> <span v-if="item.position">职位:{{item.position}}</span>
<span v-if="item.position">职位:{{item.position}}</span> <span v-if="item.visitTime">拜访时间:{{item.visitTime.slice(0, 10)}}</span>
<span v-if="item.visitTime">拜访时间:{{item.visitTime.slice(0, 10)}}</span> <span v-if="item.nextVisitTime">下次拜访时间:{{item.nextVisitTime.slice(0, 10)}}</span>
<span v-if="item.nextVisitTime">下次拜访时间:{{item.nextVisitTime.slice(0, 10)}}</span> </div>
</div> </div>
</div> </div>
</div> </div>
</div> <div class="recordlist" v-if="showtype=='gjjl' || showtype == 'projectgjdt' && recordlist.total>0">
<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="rec_detail" v-for="(item,index) in recordlist.rows"> <div class="delform" v-if="isdel && delID == item.id">
<div class="delform" v-if="isdel && delID == item.id"> <div class="words">是否删除该条记录</div>
<div class="words">是否删除该条记录</div> <div>
<div> <div class="btnsmall btn_primary h28" @click="delele">确定</div>
<div class="btnsmall btn_primary h28" @click="delele">确定</div> <div class="btnsmall btn_cancel h28" @click="isdel=false">取消</div>
<div class="btnsmall btn_cancel h28" @click="isdel=false">取消</div> </div>
</div> </div>
</div>
<div class="rec_time"> <div class="rec_time">
<i class="el-icon-time"></i> <i class="el-icon-time"></i>
<div>{{item.creatTime}}</div> <div>{{item.creatTime}}</div>
<div class="operate" v-if="isDisableds == false"> <div class="operate" v-if="isDisableds == false">
<!--<img src="@/assets/images/edit.png">第一期不做编辑--> <!--<img src="@/assets/images/edit.png">第一期不做编辑-->
<img @click="delRecord(item.id)" src="@/assets/images/delete.png"> <img @click="delRecord(item.id)" src="@/assets/images/delete.png">
</div>
</div> </div>
</div> <div class="rec_con">
<div class="rec_con"> <div><strong>{{item.nickName}}</strong> <span v-if="item.visitWay">({{item.visitWay}})</span></div>
<div><strong>{{item.nickName}}</strong> <span v-if="item.visitWay">({{item.visitWay}})</span></div> <div><span>{{item.recordInfo}}</span></div>
<div><span>{{item.recordInfo}}</span></div> <div class="rec_text">
<div class="rec_text"> <span v-if="item.projectName && showtype == 'projectgjdt'">关联项目:{{item.projectName||'--'}}</span>
<span v-if="item.projectName && showtype == 'projectgjdt'">关联项目:{{item.projectName||'--'}}</span> <span v-if="item.visitPerson">拜访对象:{{item.visitPerson||'--'}}</span>
<span v-if="item.visitPerson">拜访对象:{{item.visitPerson||'--'}}</span> <span v-if="item.position">职位:{{item.position||'--'}}</span>
<span v-if="item.position">职位:{{item.position||'--'}}</span> <span v-if="item.visitTime">拜访时间:{{item.visitTime}}</span>
<span v-if="item.visitTime">拜访时间:{{item.visitTime}}</span> <span v-if="item.nextVisitTime">下次拜访时间:{{item.nextVisitTime || '--'}}</span>
<span v-if="item.nextVisitTime">下次拜访时间:{{item.nextVisitTime || '--'}}</span> </div>
</div> </div>
</div> </div>
</div> </div>
</div> <div class="tables" v-if="recordlist.total>pageSize">
<div class="tables" v-if="recordlist.total>pageSize">
<div class="bottems"> <div class="bottems">
<el-pagination <el-pagination
background background
...@@ -135,6 +137,7 @@ ...@@ -135,6 +137,7 @@
</el-pagination> </el-pagination>
</div> </div>
</div> </div>
</div>
</div> </div>
</el-card> </el-card>
</div> </div>
...@@ -145,7 +148,9 @@ ...@@ -145,7 +148,9 @@
import {getFollowList,addFollowRecord,getUserList,delFollowRecord} from '@/api/custom/custom' import {getFollowList,addFollowRecord,getUserList,delFollowRecord} from '@/api/custom/custom'
import {getGJJL,addGJJL,delGJJL,relateProject,allRecord} from '@/api/project/project' import {getGJJL,addGJJL,delGJJL,relateProject,allRecord} from '@/api/project/project'
import {getEnterprise,getDictType,} from '@/api/main' import {getEnterprise,getDictType,} from '@/api/main'
import skeleton from './skeleton'
export default { export default {
components:{skeleton},
props:{ props:{
types: { //当前组件展示类型 types: { //当前组件展示类型
type: String, type: String,
...@@ -191,6 +196,7 @@ ...@@ -191,6 +196,7 @@
projectList:[],//关联项目 projectList:[],//关联项目
isDisableds:this.isDisabled, isDisableds:this.isDisabled,
keys:1, keys:1,
isSkeleton:true,
} }
}, },
computed: { computed: {
...@@ -220,6 +226,7 @@ ...@@ -220,6 +226,7 @@
this.isDisableds = false this.isDisableds = false
this.projectId = null//项目id暂时清空,必须手选id this.projectId = null//项目id暂时清空,必须手选id
relateProject(this.userId).then(res=>{ relateProject(this.userId).then(res=>{
this.isSkeleton = false
this.projectList = res.data this.projectList = res.data
}) })
this.getGJDT() this.getGJDT()
...@@ -323,6 +330,7 @@ ...@@ -323,6 +330,7 @@
param.customerId = this.customerIds param.customerId = this.customerIds
} }
getFollowList(param).then(result=>{ getFollowList(param).then(result=>{
this.isSkeleton = false
this.recordlist = result.code == 200?result:[] this.recordlist = result.code == 200?result:[]
this.recordlist.rows.forEach(item=>{ this.recordlist.rows.forEach(item=>{
item.createTime = this.gettime(item.createTime) item.createTime = this.gettime(item.createTime)
...@@ -339,6 +347,7 @@ ...@@ -339,6 +347,7 @@
userId: this.userId userId: this.userId
} }
allRecord(param).then(result=>{ allRecord(param).then(result=>{
this.isSkeleton = false
this.recordlist = result.code == 200?result:[] this.recordlist = result.code == 200?result:[]
// this.recordlist.rows.forEach(item=>{ // this.recordlist.rows.forEach(item=>{
// item.createTime = this.gettime(item.createTime) // item.createTime = this.gettime(item.createTime)
...@@ -354,10 +363,12 @@ ...@@ -354,10 +363,12 @@
businessId:this.projectId businessId:this.projectId
} }
getGJJL(param).then(result=>{ getGJJL(param).then(result=>{
this.isSkeleton = false
this.recordlist = result.code == 200?result:[] this.recordlist = result.code == 200?result:[]
}) })
}, },
handleCurrentChange(val){ handleCurrentChange(val){
this.isSkeleton = true
this.pageNum = val this.pageNum = val
if(this.showtype == 'gjdt'){ if(this.showtype == 'gjdt'){
this.getGJDTlist() this.getGJDTlist()
......
...@@ -3,51 +3,53 @@ ...@@ -3,51 +3,53 @@
<el-card class="box-card noborder"> <el-card class="box-card noborder">
<div class="cardtitles">工作待办</div> <div class="cardtitles">工作待办</div>
<div class="records"> <div class="records">
<div class="writeIn" v-if="isDisableds == false"> <div class="writeIn" v-if="isDisableds == false">
<div class="default" v-if="isEdit == false" @click="getEdit"> <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">
<img src="@/assets/images/project/add_3.png"> <img src="@/assets/images/project/add_3.png">
<el-input v-model="queryParam.task" placeholder="新建一条跟进记录,如:周五上午预约客户上门拜访"></el-input> <div>新建一条工作代办,如:周五上午预约客户上门拜访</div>
</div> </div>
<div class="wr_bot"> <div class="writting" v-if="isEdit == true">
<div class="times"><img src="@/assets/images/project/ico_4.png"> <div class="wri_top">
<el-date-picker value-format="yyyy-MM-dd" <img src="@/assets/images/project/add_3.png">
v-model="queryParam.finishTime" <el-input v-model="queryParam.task" placeholder="新建一条跟进记录,如:周五上午预约客户上门拜访"></el-input>
type="date"
placeholder="完成时间">
</el-date-picker>
</div> </div>
<div class="sels"> <div class="wr_bot">
<img src="@/assets/images/project/ico_2.png"> <div class="times"><img src="@/assets/images/project/ico_4.png">
<el-input v-model="queryParam.target" placeholder="拜访对象" style="width: 100px;"> <el-date-picker value-format="yyyy-MM-dd"
</el-input> 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>
<div class="btn btn_primary h32 wc" @click="add" :class="{'btn_disabled':queryParam.task == ''}">完成</div>
</div> </div>
</div> </div>
</div> <skeleton v-if="isSkeleton" style="padding-top: 16px"></skeleton>
<div class="tasktitle"><strong>我的任务</strong><span @click="getYQ">{{yqnum}}条已逾期</span><!--<span class="on">4条已逾期</span>--></div> <div v-else>
<div class="tasklist" v-for="(item,index) in datalist.rows"> <div class="tasktitle"><strong>我的任务</strong><span @click="getYQ">{{yqnum}}条已逾期</span><!--<span class="on">4条已逾期</span>--></div>
<div class="task_name">{{item.task}}</div> <div class="tasklist" v-for="(item,index) in datalist.rows">
<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="task_name">{{item.task}}</div>
<div class="select" :class="{'on':item.state == 2}"> <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-popper"> <div class="select" :class="{'on':item.state == 2}">
<span> <div class="select-popper">
{{item.state == 2?"已完成":"未完成"}} <span>
<i class="el-icon-caret-bottom"></i> {{item.state == 2?"已完成":"未完成"}}
</span> <i class="el-icon-caret-bottom"></i>
<el-select v-if="isDisableds == false" placeholder="请选择" v-model="item.state" class="select-multiple" @change="changes(item.id,$event)"> </span>
<el-option label="未完成" value="1"></el-option> <el-select v-if="isDisableds == false" placeholder="请选择" v-model="item.state" class="select-multiple" @change="changes(item.id,$event)">
<el-option label="已完成" value="2"></el-option> <el-option label="未完成" value="1"></el-option>
</el-select> <el-option label="已完成" value="2"></el-option>
</div></div> </el-select>
</div> </div></div>
</div>
<div class="tables" v-if="datalist.total>searchPram.pageSize"> <div class="tables" v-if="datalist.total>searchPram.pageSize">
<div class="bottems"> <div class="bottems">
<el-pagination <el-pagination
background background
...@@ -59,6 +61,7 @@ ...@@ -59,6 +61,7 @@
</el-pagination> </el-pagination>
</div> </div>
</div> </div>
</div>
</div> </div>
</el-card> </el-card>
</div> </div>
...@@ -68,8 +71,10 @@ ...@@ -68,8 +71,10 @@
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import "@/assets/styles/public.css" import "@/assets/styles/public.css"
import {addGZDB,getGZDB,editGZDB} from '@/api/project/project' import {addGZDB,getGZDB,editGZDB} from '@/api/project/project'
import skeleton from './skeleton'
export default { export default {
components:{skeleton},
name: 'gjjl', name: 'gjjl',
props: { props: {
detailId: { //从企业详情跳转过来ID detailId: { //从企业详情跳转过来ID
...@@ -98,6 +103,7 @@ ...@@ -98,6 +103,7 @@
datalist:[], datalist:[],
yqnum:0,//已逾期数量 yqnum:0,//已逾期数量
isDisableds:this.isDisabled, isDisableds:this.isDisabled,
isSkeleton:true,
} }
}, },
created(){ created(){
...@@ -124,7 +130,9 @@ ...@@ -124,7 +130,9 @@
}) })
}, },
getList(){ getList(){
this.isSkeleton = true
getGZDB(this.searchPram).then(result=>{ getGZDB(this.searchPram).then(result=>{
this.isSkeleton = false
this.datalist = result.code == 200?result:[] this.datalist = result.code == 200?result:[]
let num = 0 let num = 0
this.datalist.rows.forEach(item=>{ this.datalist.rows.forEach(item=>{
......
<template> <template>
<div> <div>
<el-card class="box-card noborder"> <el-card class="box-card noborder">
<div class="cardtitles">基本信息</div> <div class="cardtitles">联系人</div>
<div class="tables">
<el-table <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" :data="tableData"
stripe border stripe border
style="width: 100%" style="width: 100%"
:default-sort = "{prop: 'role', order: 'ascending'}" :default-sort = "{prop: 'role', order: 'ascending'}"
> >
<template slot="empty"> <!--<template slot="empty">-->
<div class="empty"> <!--<div class="empty">-->
<img src="@/assets/images/project/empty.png"> <!--<img src="@/assets/images/project/empty.png">-->
<div class="p1">暂无数据展示</div> <!--<div class="p1">暂无数据展示</div>-->
<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div> <!--<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div>-->
<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisableds == false">新增联系人</div> <!--<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisableds == false">新增联系人</div>-->
</div> <!--</div>-->
</template> <!--</template>-->
<el-table-column <el-table-column
prop="name" prop="name"
label="姓名" label="姓名"
...@@ -135,7 +144,9 @@ ...@@ -135,7 +144,9 @@
<script> <script>
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import {getLXR,editLXR,addLXR} from '@/api/project/project' import {getLXR,editLXR,addLXR} from '@/api/project/project'
import skeleton from './skeleton'
export default { export default {
components:{skeleton},
name: 'lxr', name: 'lxr',
props: { props: {
detailId: { //从企业详情跳转过来ID detailId: { //从企业详情跳转过来ID
...@@ -163,6 +174,7 @@ ...@@ -163,6 +174,7 @@
projectname:this.$route.query.projectname, projectname:this.$route.query.projectname,
queryParam:[], queryParam:[],
isDisableds:this.isDisabled, isDisableds:this.isDisabled,
isSkeleton:true,
} }
}, },
created(){ created(){
...@@ -180,7 +192,9 @@ ...@@ -180,7 +192,9 @@
this.isnew = false this.isnew = false
}, },
getList(){ getList(){
this.isSkeleton = true
getLXR(this.searchParam).then(result=>{ getLXR(this.searchParam).then(result=>{
this.isSkeleton = false
this.tableData = result.code == 200?result.rows:[] this.tableData = result.code == 200?result.rows:[]
this.total = result.code == 200?result.total:0 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 @@ ...@@ -7,26 +7,26 @@
<el-select class="select" placeholder="企业类型" clearable v-model="searchParam.companyType" @change="handleCurrentChange(1)"> <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-option v-for="(item,index) in companytype" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select> </el-select>
<div class="searchInput"> <div class="searchInput small">
<el-input type="text" placeholder="输入关键词查询" clearable v-model="searchParam.companyName"></el-input> <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 class="btn" @click="handleCurrentChange(1)">搜索</div>
</div> </div>
<div class="btn btn_primary h32 b3" @click="opennew" v-if="isDisableds == false"><div class="img img1"></div>添加相关企业</div> <div class="btn btn_primary h32 b3" @click="opennew" v-if="isDisableds == false"><div class="img img1"></div>添加相关企业</div>
</div> </div>
<div class="document tables"> <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" :data="tableData.rows"
style="width: 100%" style="width: 100%"
:default-sort = "{prop: 'depth', order: 'descending'}" :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 <el-table-column
prop="companyName" prop="companyName"
label="企业名称" label="企业名称"
...@@ -143,7 +143,9 @@ ...@@ -143,7 +143,9 @@
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import {getXGQY,addXGQY,delXGQY} from '@/api/project/project' import {getXGQY,addXGQY,delXGQY} from '@/api/project/project'
import {getDictType,getEnterprise} from '@/api/main' import {getDictType,getEnterprise} from '@/api/main'
import skeleton from './skeleton'
export default { export default {
components:{skeleton},
name: 'xgqy', name: 'xgqy',
props: { props: {
detailId: { //从企业详情跳转过来ID detailId: { //从企业详情跳转过来ID
...@@ -189,6 +191,7 @@ ...@@ -189,6 +191,7 @@
isDisableds:this.isDisabled, isDisableds:this.isDisabled,
showlist:false, showlist:false,
companData:[], companData:[],
isSkeleton:true,
} }
}, },
created(){ created(){
...@@ -261,8 +264,9 @@ ...@@ -261,8 +264,9 @@
}) })
}, },
getlist(){ getlist(){
this.isSkeleton = true
getXGQY(this.searchParam).then(result=>{ getXGQY(this.searchParam).then(result=>{
console.log(result) this.isSkeleton = false
this.tableData = result this.tableData = result
}) })
}, },
......
...@@ -340,7 +340,7 @@ ...@@ -340,7 +340,7 @@
getXMSL(){ getXMSL(){
getXMSL(this.id).then(result=> { 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){ if(result.data.labelList == null || result.data.labelList == "" || result.data.labelList == undefined){
this.tipslit = [] this.tipslit = []
}else { }else {
......
...@@ -5,8 +5,10 @@ ...@@ -5,8 +5,10 @@
<div class="cardtitles">资料文档</div> <div class="cardtitles">资料文档</div>
<div class="searchbtns"> <div class="searchbtns">
<!--<div class="searchbtns" v-if="fileDatas.rows != null && fileDatas.rows.length>0">--> <!--<div class="searchbtns" v-if="fileDatas.rows != null && fileDatas.rows.length>0">-->
<div class="searchInput"> <div class="searchInput small">
<el-input type="text" v-model="param.keyword" clearable placeholder="输入关键词查询"></el-input> <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 class="btn" @click="handleCurrentChange(1)">搜索</div>
</div> </div>
<!--<div class="btn btn_primary h32 b2" @click="getUP" v-if="fileDatas.total>0"><div class="img img2"></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 @@ ...@@ -58,31 +60,32 @@
</div> </div>
</div> </div>
<div class="document tables"> <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" :data="fileDatas.rows"
style="width: 100%" style="width: 100%"
:default-sort = "{prop: 'creatTime', order: 'descending'}" :default-sort = "{prop: 'creatTime', order: 'descending'}"
> >
<template slot="empty"> <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> </template>
<el-table-column <el-table-column
prop="name" prop="name"
...@@ -147,10 +150,13 @@ ...@@ -147,10 +150,13 @@
</template> </template>
<script> <script>
import "@/assets/styles/project.scss" import '@/assets/styles/project.scss'
import { getToken } from "@/utils/auth"; import { getToken } from '@/utils/auth'
import { getZLWD ,delZLWD} from "@/api/project/project"; import { delZLWD, getZLWD } from '@/api/project/project'
import skeleton from './skeleton'
export default { export default {
components:{skeleton},
name: 'zlwd', name: 'zlwd',
props: { props: {
detailId: { //从企业详情跳转过来ID detailId: { //从企业详情跳转过来ID
...@@ -181,6 +187,7 @@ ...@@ -181,6 +187,7 @@
ondel:"", ondel:"",
isDisableds:this.isDisabled, isDisableds:this.isDisabled,
keys:1, keys:1,
isSkeleton:true,
} }
}, },
created(){ created(){
...@@ -195,8 +202,10 @@ ...@@ -195,8 +202,10 @@
this.handleCurrentChange(1) this.handleCurrentChange(1)
}, },
getList(){ getList(){
this.isSkeleton = true
getZLWD(this.param).then(res=>{ getZLWD(this.param).then(res=>{
this.fileDatas = res this.fileDatas = res
this.isSkeleton = false
if(this.fileDatas.rows!=null && this.fileDatas.rows.length>0){ if(this.fileDatas.rows!=null && this.fileDatas.rows.length>0){
this.fileDatas.rows.forEach(item=>{ this.fileDatas.rows.forEach(item=>{
let names = item.filePath.split('/') let names = item.filePath.split('/')
...@@ -300,6 +309,7 @@ ...@@ -300,6 +309,7 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
v-deep.el-upload:focus{ v-deep.el-upload:focus{
color: #FFFFFF !important; color: #FFFFFF !important;
} }
...@@ -382,7 +392,4 @@ ...@@ -382,7 +392,4 @@
} }
} }
} }
.searchInput .el-input{
width: 68%;
}
</style> </style>
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<el-tab-pane label="公司全部项目" name="second"></el-tab-pane> <el-tab-pane label="公司全部项目" name="second"></el-tab-pane>
<div class="searchInput"> <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 class="btn" @click="getList(1)">搜索</div>
</div> </div>
<div class="sellist"> <div class="sellist">
...@@ -97,14 +97,16 @@ ...@@ -97,14 +97,16 @@
<el-card class="box-card noborder overflows"> <el-card class="box-card noborder overflows">
<div class="titles">项目明细 <div class="titles">项目明细
<div class="dc"> <div class="dc">
<div class="total">{{total}}</div> <div class="total">{{total}}</div>
<!--<el-tooltip class="item" effect="dark" content="功能正在开发中" placement="top">--> <!--<el-tooltip class="item" effect="dark" content="功能正在开发中" placement="top">-->
<div class="btn-export" @click="dc"><img src="@/assets/images/EXCEL.png">导出EXCEL</div> <div class="btn-export" @click="dc"><img src="@/assets/images/EXCEL.png">导出EXCEL</div>
<!--</el-tooltip>--> <!--</el-tooltip>-->
</div> </div>
</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"> <div class="empty">
<img src="@/assets/images/project/empty.png"> <img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div> <div class="p1">抱歉,没找到相关数据</div>
...@@ -113,7 +115,7 @@ ...@@ -113,7 +115,7 @@
<div class="btn btn_primary btn_shallow h36 w88" @click="pldrs">批量导入</div> <div class="btn btn_primary btn_shallow h36 w88" @click="pldrs">批量导入</div>
</div> </div>
</div> </div>
<div class="datalist"> <div class="datalist" v-if="!isSkeleton">
<div class="datali" v-for="(item,index) in datalist"> <div class="datali" v-for="(item,index) in datalist">
<div class="det-title" @click="toDetail(item.id,'xmsl')"> <div class="det-title" @click="toDetail(item.id,'xmsl')">
{{item.projectName}}<span v-if="activeName!='first' && item.followTime" class="people"><i>{{item.nickName1}}</i> {{item.projectName}}<span v-if="activeName!='first' && item.followTime" class="people"><i>{{item.nickName1}}</i>
...@@ -182,9 +184,10 @@ ...@@ -182,9 +184,10 @@
import {getDictType,} from '@/api/main' import {getDictType,} from '@/api/main'
import addproject from './component/addProject' import addproject from './component/addProject'
import batchimport from './component/batchImport' import batchimport from './component/batchImport'
import skeleton from './component/skeleton'
export default { export default {
name: 'ProjectList', name: 'ProjectList',
components:{addproject,batchimport}, components:{addproject,batchimport,skeleton},
data() { data() {
return { return {
types:'project', types:'project',
...@@ -240,6 +243,7 @@ export default { ...@@ -240,6 +243,7 @@ export default {
datalist:[],//列表数据 datalist:[],//列表数据
ondel:-1, ondel:-1,
total:0, total:0,
isSkeleton:true
} }
}, },
created() { created() {
...@@ -289,6 +293,7 @@ export default { ...@@ -289,6 +293,7 @@ export default {
}, },
//获取商机列表 //获取商机列表
getList(pageNum){ getList(pageNum){
this.isSkeleton = true
this.searchParam.pageNum = pageNum this.searchParam.pageNum = pageNum
if(this.activeName == 'first'){ if(this.activeName == 'first'){
this.searchParam.userId = this.$store.state.user.userId this.searchParam.userId = this.$store.state.user.userId
...@@ -297,6 +302,7 @@ export default { ...@@ -297,6 +302,7 @@ export default {
} }
this.searchParam.ownerCompany = this.searchParam.projectName this.searchParam.ownerCompany = this.searchParam.projectName
getProjectlist(this.searchParam).then(result=>{ getProjectlist(this.searchParam).then(result=>{
this.isSkeleton = false
if(result.code == 200){ if(result.code == 200){
this.datalist = result.rows this.datalist = result.rows
this.total = result.total this.total = result.total
...@@ -382,7 +388,7 @@ export default { ...@@ -382,7 +388,7 @@ export default {
this.$router.push({ path: '/project/projectList/detail', query: {id:id,tag:tag} }); this.$router.push({ path: '/project/projectList/detail', query: {id:id,tag:tag} });
}, },
handleClick(){ handleClick(){
this.getList(1) this.reset()
}, },
handleChange(value) { handleChange(value) {
// console.log(value); // console.log(value);
...@@ -594,6 +600,7 @@ export default { ...@@ -594,6 +600,7 @@ export default {
font-size: 16px; font-size: 16px;
font-weight: 700; font-weight: 700;
line-height: 23px; line-height: 23px;
padding-right: 190px;
.people{ .people{
padding-left: 10px; padding-left: 10px;
color: #4f4f4f; color: #4f4f4f;
......
...@@ -359,28 +359,20 @@ export default { ...@@ -359,28 +359,20 @@ export default {
value: "今天", value: "今天",
}, },
{ {
label: "近3日", label: "未来3天",
value: "近3日", value: "未来3天",
},
{
label: "近7日",
value: "近7日",
},
{
label: "近1个月",
value: "近1个月",
}, },
{ {
label: "近3个月", label: "未来7天",
value: "近3个月", value: "未来7天",
}, },
{ {
label: "近半年", label: "未来1个月",
value: "近半年", value: "未来1个月",
}, },
{ {
label: "近1年", label: "未来3个月",
value: "近1年", value: "未来3个月",
}, },
], ],
PlanTenderDateValue: "", PlanTenderDateValue: "",
...@@ -746,58 +738,30 @@ export default { ...@@ -746,58 +738,30 @@ export default {
startTime = Year + "-" + Month +"-" + Day; startTime = Year + "-" + Month +"-" + Day;
endTime = Year + "-" + Month + "-" + Day; endTime = Year + "-" + Month + "-" + Day;
break; break;
case "近3日": case "未来3天":
endTime = Year + "-" + Month + "-" + Day; startTime = Year + "-" + Month + "-" + Day;
if (Day > 3) { endTime = this.getDate(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;
}
break; break;
case "近7日": case "未来7天":
endTime = Year + "-" + Month + "-" + Day; startTime = Year + "-" + Month + "-" + Day;
if (Day > 7) { endTime = this.getDate(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";
}
break; break;
case "近3个月": case "未来1个月":
endTime = Year + "-" + Month + "-" + Day; startTime = Year + "-" + Month + "-" + Day;
if (Month > 3) { if (Month == 12) {
startTime = Year + "-" + (Month - 3) + "-1"; endTime = Year+1 + "-01-" + + Day;
} else { } else {
startTime = Year - 1 + "-" + (12 + Month - 3) + "-1"; endTime = Year + "-" + (Month + 1) + "-" + Day;
} }
break; break;
case "近半年": case "未来3个月":
endTime = Year + "-" + Month + "-" + Day; startTime = Year + "-" + Month + "-" + Day;
if (Month > 6) { if (Month >9) {
startTime = Year + "-" + (Month - 6) + "-1"; endTime = Year+1 + "-" + Month-9 + "-" + + Day;
} else { } else {
startTime = Year - 1 + "-" + (12 + Month - 6) + "-1"; endTime = Year + "-" + (Month + 3) + "-" + Day;
} }
break; break;
case "近1年":
startTime = Year - 1 + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "自定义": case "自定义":
if (!this.PlanTenderDate) { if (!this.PlanTenderDate) {
this.PlanTenderDateValue = ""; this.PlanTenderDateValue = "";
...@@ -839,6 +803,13 @@ export default { ...@@ -839,6 +803,13 @@ export default {
} }
this.jskBidPlanDto = obj; 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) { changeIssueTime(type) {
if(type=='bid'&&this.tenderDate){ if(type=='bid'&&this.tenderDate){
this.tenderDateValue = "自定义"; this.tenderDateValue = "自定义";
......
...@@ -202,7 +202,7 @@ ...@@ -202,7 +202,7 @@
<span class="list-label list-label-zb" v-if="item.domicile"> <span class="list-label list-label-zb" v-if="item.domicile">
{{item.domicile}} {{item.domicile}}
</span> </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}} {{ item.tenderingManner}}
</span> </span>
<span class="list-label list-label-lx" v-if="item.projectType&&item.projectType!='其他'&&item.projectType!='空白'"> <span class="list-label list-label-lx" v-if="item.projectType&&item.projectType!='其他'&&item.projectType!='空白'">
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<div class="list"> <div class="list">
<div class="item color1"> <div class="item color1">
<div class="item-left"> <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 v-else>
-- --
</h4> </h4>
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
</div> </div>
<div class="item color2"> <div class="item color2">
<div class="item-left"> <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 v-else>
-- --
</h4> </h4>
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
</div> </div>
<div class="item color3"> <div class="item color3">
<div class="item-left"> <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 v-else>
-- --
</h4> </h4>
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
</div> </div>
<div class="item color4"> <div class="item color4">
<div class="item-left"> <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 v-else>
-- --
</h4> </h4>
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
<div class="list"> <div class="list">
<div class="item color4"> <div class="item color4">
<div class="item-left"> <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 v-else>
-- --
</h4> </h4>
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
</div> </div>
<div class="item color3"> <div class="item color3">
<div class="item-left"> <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 v-else>
-- --
</h4> </h4>
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
</div> </div>
<div class="item color4"> <div class="item color4">
<div class="item-left"> <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 v-else>
-- --
</h4> </h4>
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
</div> </div>
<div class="item color2"> <div class="item color2">
<div class="item-left"> <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 v-else>
-- --
</h4> </h4>
...@@ -126,7 +126,7 @@ ...@@ -126,7 +126,7 @@
</p> </p>
<p> <p>
<label class="label">项目预测总收益</label> <label class="label">项目预测总收益</label>
<span v-if="textList.projectForecastTotalRevenue">{{textList.projectForecastTotalRevenue}}</span> <span v-if="textList.projectForecastTotalRevenue">{{textList.projectForecastTotalRevenue}}亿</span>
<span v-else>--</span> <span v-else>--</span>
</p> </p>
</div> </div>
...@@ -159,7 +159,7 @@ ...@@ -159,7 +159,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="tenderDate" label="招标日期" width="220" /> <el-table-column prop="tenderDate" label="招标日期" width="220" />
<el-table-column prop="actualBondIssueScale" label="专项债规模(亿)" width="260" /> <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"> <el-table-column label="是否资本金" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
......
...@@ -20,5 +20,9 @@ public class CustomerStatusListVo implements Serializable { ...@@ -20,5 +20,9 @@ public class CustomerStatusListVo implements Serializable {
* 城投id * 城投id
*/ */
private String uipId; private String uipId;
/**
* 企业名称
*/
private String companyName;
} }
...@@ -12,7 +12,6 @@ import com.dsk.common.core.page.TableDataInfo; ...@@ -12,7 +12,6 @@ import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.core.redis.RedisCache; import com.dsk.common.core.redis.RedisCache;
import com.dsk.common.utils.DskOpenApiUtil; import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.common.utils.EncodeIdUtil; import com.dsk.common.utils.EncodeIdUtil;
import com.dsk.common.utils.StringUtils;
import com.dsk.system.domain.customer.vo.CustomerStatusListVo; import com.dsk.system.domain.customer.vo.CustomerStatusListVo;
import com.dsk.system.service.ICustomerService; import com.dsk.system.service.ICustomerService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -20,6 +19,7 @@ import org.apache.commons.collections4.MapUtils; ...@@ -20,6 +19,7 @@ import org.apache.commons.collections4.MapUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -59,6 +59,7 @@ public class EnterpriseService { ...@@ -59,6 +59,7 @@ public class EnterpriseService {
companyData.put("uipId", null); companyData.put("uipId", null);
companyData.put("claimStatus", 0); companyData.put("claimStatus", 0);
companyData.put("bratingSubjectLevel", null); companyData.put("bratingSubjectLevel", null);
String companyName = MapUtils.getString(companyData, "companyName", "");
Map<String, Object> map = BeanUtil.beanToMap(body, false, false); Map<String, Object> map = BeanUtil.beanToMap(body, false, false);
map.put("cid", body.getCompanyId()); map.put("cid", body.getCompanyId());
...@@ -74,6 +75,11 @@ public class EnterpriseService { ...@@ -74,6 +75,11 @@ public class EnterpriseService {
ArrayList<String> uipIds = new ArrayList<>(); ArrayList<String> uipIds = new ArrayList<>();
uipIds.add(uipId); uipIds.add(uipId);
companyData.put("claimStatus", CollectionUtils.isEmpty(iCustomerService.selectStatusList(uipIds)) ? 0 : 1); 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); Map<String, Object> bondCreditRatingMap = dskOpenApiUtil.requestBody("/operate/enterprise/bondCreditRating", map);
...@@ -315,4 +321,27 @@ public class EnterpriseService { ...@@ -315,4 +321,27 @@ public class EnterpriseService {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/getUipIdByCid", paramMap); Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/getUipIdByCid", paramMap);
return BeanUtil.toBean(map, R.class); 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> ...@@ -76,8 +76,8 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo>
public int deleteBusinessInfoById(Long id); public int deleteBusinessInfoById(Long id);
/** /**
* 批量删除项目详情 * 批量删除项目
* * 项目关联的其他所有表数据一并删除
* @param ids 需要删除的数据主键集合 * @param ids 需要删除的数据主键集合
* @return 结果 * @return 结果
*/ */
......
...@@ -28,6 +28,8 @@ public interface CustomerMapper extends BaseMapper<Customer> { ...@@ -28,6 +28,8 @@ public interface CustomerMapper extends BaseMapper<Customer> {
List<CustomerStatusListVo> selectStatusList(@Param("uipIds") List<String> uipIds, @Param("userId") Long userId); 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); // List<String> selectUipIdList(@Param("uipIds") List<String> uipIds, @Param("userId") Long userId);
} }
......
...@@ -29,6 +29,8 @@ public interface ICustomerService { ...@@ -29,6 +29,8 @@ public interface ICustomerService {
List<CustomerStatusListVo> selectStatusList(List<String> uipIds); List<CustomerStatusListVo> selectStatusList(List<String> uipIds);
List<CustomerStatusListVo> selectStatusListByCompanyName(List<String> companyNames);
// List<String> selectUipIdList(List<String> uipIds); // List<String> selectUipIdList(List<String> uipIds);
Integer status(String companyName); Integer status(String companyName);
......
...@@ -228,15 +228,17 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService { ...@@ -228,15 +228,17 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
} }
/** /**
* 批量删除项目详情 * 批量删除项目
* * 项目关联的其他所有表数据一并删除
* @param ids 需要删除的项目详情主键 * @param ids 需要删除的项目详情主键
* @return 结果 * @return 结果
*/ */
@Override @Override
@Transactional @Transactional
public int deleteBusinessInfoByIds(Long[] ids) { public int deleteBusinessInfoByIds(Long[] ids) {
//删除项目详情,用户关联项目,项目工作代办,项目联系人,项目跟进记录,项目标签,项目相关企业
return businessInfoMapper.deleteBusinessInfoByIds(ids); return businessInfoMapper.deleteBusinessInfoByIds(ids);
//TODO 删除项目上传的文件
} }
/** /**
......
...@@ -119,6 +119,11 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -119,6 +119,11 @@ public class CustomerServiceImpl implements ICustomerService {
return baseMapper.selectStatusList(uipIds, SecurityUtils.getUserId()); return baseMapper.selectStatusList(uipIds, SecurityUtils.getUserId());
} }
@Override
public List<CustomerStatusListVo> selectStatusListByCompanyName(List<String> companyNames) {
return baseMapper.selectStatusListByCompanyName(companyNames, SecurityUtils.getUserId());
}
// @Override // @Override
// public List<String> selectUipIdList(List<String> uipIds) { // public List<String> selectUipIdList(List<String> uipIds) {
......
...@@ -15,6 +15,8 @@ import org.springframework.http.HttpStatus; ...@@ -15,6 +15,8 @@ import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
......
...@@ -139,13 +139,13 @@ public class ReadBusinessInfoExcel { ...@@ -139,13 +139,13 @@ public class ReadBusinessInfoExcel {
} }
//投资估算(万元) //投资估算(万元)
} else if (c == 2) { } else if (c == 2) {
businessExcelDto.setInvestmentAmount(cell.getStringCellValue()); if (cell.getCellType() == CellType.NUMERIC) {
/* if (cell.getCellType() == CellType.NUMERIC) {
String amount = String.valueOf(cell.getNumericCellValue()); 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 { } else {
businessExcelDto.setInvestmentAmount(cell.getStringCellValue()); businessExcelDto.setInvestmentAmount(cell.getStringCellValue());
}*/ }
} }
} }
} }
......
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
LEFT JOIN sys_user u on u.user_id = f.user_id LEFT JOIN sys_user u on u.user_id = f.user_id
<where> <where>
<if test="userId != null"> <if test="userId != null">
bu.user_id = #{userId} and bu.user_id = #{userId}
</if> </if>
<if test="projectType != null and projectType != ''"> <if test="projectType != null and projectType != ''">
and i.project_type in and i.project_type in
...@@ -113,7 +113,7 @@ ...@@ -113,7 +113,7 @@
<if test="minAmount != null and minAmount != '' and minAmount != '0' and maxAmount != minAmount"> <if test="minAmount != null and minAmount != '' and minAmount != '0' and maxAmount != minAmount">
and i.investment_amount &gt; #{minAmount} and i.investment_amount &gt; #{minAmount}
</if> </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 &gt; #{minAmount}
and i.investment_amount &lt;= #{maxAmount}) and i.investment_amount &lt;= #{maxAmount})
or i.investment_amount is null) or i.investment_amount is null)
...@@ -373,7 +373,15 @@ ...@@ -373,7 +373,15 @@
</delete> </delete>
<delete id="deleteBusinessInfoByIds" parameterType="Long"> <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=")"> <foreach item="id" collection="array" open="(" separator="," close=")">
#{id} #{id}
</foreach> </foreach>
......
...@@ -58,6 +58,17 @@ ...@@ -58,6 +58,17 @@
</foreach> </foreach>
</select> </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 id="selectUipIdList" resultType="java.lang.String">-->
<!-- select--> <!-- select-->
<!-- ct.uip_id--> <!-- 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