Commit da99fc9d authored by yht15023815643's avatar yht15023815643

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

parents 599aed8a d1ed54ad
......@@ -26,6 +26,12 @@ public class EnterpriseBussinessClientProjectPageBody extends BasePage {
@NotNull(message = "企业id不能为空")
private Integer companyId;
/**
* 客户企业
*/
@NotNull(message = "企业不能为空")
private String companyName;
/**
* 查询关键字
*/
......@@ -33,7 +39,7 @@ public class EnterpriseBussinessClientProjectPageBody extends BasePage {
public boolean isVaildCid() {
return 0 == cid || 0 == companyId;
return 0 == cid;
}
/**
......
......@@ -26,6 +26,12 @@ public class EnterpriseBussinessSupplierProjectPageBody extends BasePage {
@NotNull(message = "企业id不能为空")
private Integer companyId;
/**
* 供应商企业
*/
@NotNull(message = "企业不能为空")
private Integer companyName;
/**
* 查询关键字
*/
......@@ -33,7 +39,7 @@ public class EnterpriseBussinessSupplierProjectPageBody extends BasePage {
public boolean isVaildCid() {
return 0 == cid || 0 == companyId;
return 0 == cid;
}
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -70,7 +70,7 @@ export const constantRoutes = [
path: 'index',
component: () => import('@/views/index'),
name: 'Index',
meta: { title: '首页', icon: 'index', }
meta: { title: '首页', icon: 'index',noCache: true }
}
]
},
......
......@@ -278,7 +278,7 @@ export default {
.options-block {
position: absolute;
margin-top: 12px;
margin-top: 3px;
min-width: 120px;
font-size: 14px;
color: #666666;
......
......@@ -43,17 +43,17 @@
<i slot="prefix" class="el-icon-search"></i>
<el-button slot="append" @click="handleSearch">搜索</el-button>
</el-input>
<div class="search_btn" @click="handleAdd"><i class="el-icon-plus"></i>新建项目</div>
<div class="search_btn" @click="handleAdd"><i class="el-icon-plus"></i>添加客户</div>
</div>
</el-col>
</el-row>
<div class="content content_wap1">
<div class="head_title">业主单位合作情况</div>
<el-row>
<el-col :span="14">
<el-col :span="14" v-if="hzqkTotal != 0">
<div id="hzqk-echarts" style="height: 300px;"></div>
</el-col>
<el-col :span="10">
<el-col :span="10" v-if="hzqkTotal != 0">
<div class="box-right">
<el-table
:data="hzqkList"
......@@ -73,6 +73,10 @@
</el-table>
</div>
</el-col>
<div class="empty" v-if="hzqkTotal === 0">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
</div>
</el-row>
</div>
<div class="content content_wap2">
......@@ -135,22 +139,22 @@
<p class="list-content-text">
<span>关联企业:</span>
<span>
<router-link :to="{path:`/enterprise/${encodeStr(item.companyId)}`,query:{customerId:item.customerId,path:'business'}}" tag="a">{{item.companyName || '--'}}</router-link>
<router-link :to="{path:`/enterprise/${encodeStr(item.companyId)}`,query:{customerId:item.customerId,path:'business'}}" tag="a" class="a-link">{{item.companyName || '--'}}</router-link>
</span>
</p>
<p class="list-content-text">
<p class="list-content-text" v-if="item.nickName">
<span>跟进人:</span>
<span>{{item.nickName || '--'}}</span>
</p>
<p class="list-content-text">
<p class="list-content-text" v-if="item.name">
<span>拜访对象:</span>
<span>{{item.name || '--'}}</span>
</p>
<p class="list-content-text">
<p class="list-content-text" v-if="item.visitTime">
<span>本次拜访时间:</span>
<span>{{item.visitTime || '--'}}</span>
</p>
<p class="list-content-text">
<p class="list-content-text" v-if="item.nextVisitTime">
<span>下次拜访时间:</span>
<span>{{item.nextVisitTime || '--'}}</span>
</p>
......@@ -208,16 +212,17 @@
pageSize:10,
recordlist:[],
timeList:['今日','近三天','近七天','自定义'],
datatype:'',
datatype:0,
defaultValue:new Date(),
pickerValue: [],
params:{
startTime:'',
endTime:''
startTime:this.formatDate(new Date()),
endTime:this.formatDate(new Date())
},
data:{
open:false
}
},
hzqkTotal:1
}
},
created() {
......@@ -245,7 +250,6 @@
this.statistics=res.data;
})
cooperationTop().then(res=>{
// console.log(res.data)
this.hzqkList=res.data;
let list=[];
for(let i=0; i<res.data.length; i++){
......@@ -255,6 +259,8 @@
}
if(list.length > 0){
this.initChart(list)
}else {
this.hzqkTotal=list.length
}
})
creditLevel().then(res=>{
......@@ -271,6 +277,7 @@
pageNum:this.pageNum,//页码
pageSize:this.pageSize,
}
console.log(this.params)
if(this.params.startTime){
param.startTime=this.params.startTime
}
......@@ -330,19 +337,25 @@
textStyle: {
align: 'left',
},
formatter: function (value,index) {
if (value.length > 15) {
value=`${value.slice(0, 15)}...`
}
return value
},
},
},
xAxis: {
type: 'value',
axisLabel: { //坐标轴刻度标签的相关设置
color:"#666666"
// color:"#666666"
},
name: '单位/万元',
// nameLocation: 'start',
nameLocation: 'end',
nameTextStyle: {
padding: [0, 0, 0, 0], // 四个数字分别为上右下左与原位置距离
color: '#666666',
// color: '#666666',
},
},
grid: {
......@@ -353,11 +366,11 @@
},
tooltip: {
show: true,
backgroundColor: 'rgba(0,0,0,.7)',
// backgroundColor: 'rgba(0,0,0,.7)',
borderWidth: 0,
textStyle: {
color: '#fff',
},
// textStyle: {
// color: '#fff',
// },
},
series: {
name:'合同总额',
......@@ -472,7 +485,7 @@
let endTime = new Date()
switch (value) {
case '今日':
startTime = new Date(endTime.getTime() - 3600 * 1000 * 24 * 3)
startTime = new Date()
timeStr = [this.formatDate(startTime), this.formatDate(endTime)]
break;
case '近三天':
......@@ -635,8 +648,27 @@
background: #F5F5F5;
color: #0081FF;
}
.el-input__inner:focus{
border-color: #3181fa;
}
.el-input__inner:focus ~.el-input-group__append{
border: 1px solid #0081FF;
color: #ffffff;
background: #0081FF;
/*.el-button{*/
/*border: 1px solid #0081FF;*/
/*span{*/
/*color: #ffffff;*/
/*background: #0081FF;*/
/*border: 1px solid #0081FF;*/
/*}*/
/*}*/
}
}
.search_btn{
width: 100%;
height: 36px;
......@@ -765,6 +797,28 @@
}
}
.content_wap1{
.empty{
margin: 0 auto;
height: 300px;
text-align: center;
.img{
width: 108px;
height: 108px;
margin-bottom: 24px;
margin-top: 50px;
}
.p1{
color: #333333;
font-size: 16px;
}
.p2{
color: #999999;
font-size: 14px;
margin-top: 8px;
}
}
}
.content_wap3{
background: #ffffff;
.query-box{
......@@ -889,7 +943,7 @@
margin: 0 auto;
height: 400px;
text-align: center;
border-top: 1px solid #EFEFEF;
/*border-top: 1px solid #EFEFEF;*/
padding-bottom: 50px;
.img{
width: 108px;
......
......@@ -22,6 +22,9 @@
<router-link :to="`/radar/Land/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName " v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div>
</template>
<template slot="transactionPrice" slot-scope="scope">
<div v-html="scope.row.transactionPrice =='0.00' ? '--' : scope.row.transactionPrice"></div>
</template>
</tables>
</div>
......@@ -55,7 +58,7 @@ export default {
{label: '行业分类', prop: 'industry', width: '120'},
{label: '供地方式', prop: 'supplyLandWay', width: '120'},
{label: '土地坐落', prop: 'landAddr', width: '150'},
{label: '成交金额(万元)', prop: 'transactionPrice', width: '130'},
{label: '成交金额(万元)', prop: 'transactionPrice', width: '130',slot: true},
{label: '总面积(㎡)', prop: 'acreage', width: '120'},
{label: '批准单位', prop: 'authority', width: '120'},
{label: '签订日期', prop: 'contractSignTime', width: '120'}
......
This diff is collapsed.
......@@ -333,9 +333,9 @@ export default {
getData(){
this.isSkeleton = true
let params={}
if(this.dataQuery.id){
params.id=this.dataQuery.id
}
// if(this.dataQuery.id){
// params.id=this.dataQuery.id
// }
if(this.provinceId.length >= 0){
params.provinceId=this.provinceId[0]
}
......
<template>
<div class="BIfx">
<el-tabs v-model="activeName">
<el-tab-pane label="宏观市场分析" name="first">
<img class="img" src="@/assets/images/BI/hgscfx.png"/>
</el-tab-pane>
<el-tab-pane label="立项设计" name="second">
<img class="img" src="@/assets/images/BI/lxsj.png"/>
</el-tab-pane>
<el-tab-pane label="专项债项目" name="third">
<img class="img" src="@/assets/images/BI/zxz.png"/>
</el-tab-pane>
<el-tab-pane label="中标公告" name="fourth">
<img class="img" src="@/assets/images/BI/zbgg.png"/>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
export default {
name: 'BI',
data() {
return {
activeName:'first'
}
}
}
</script>
<style lang="scss" scoped>
.BIfx{
background: #ffffff;
padding: 16px;
margin-top: 12px;
::v-deep .el-tabs{
.el-tabs__nav-wrap::after {
position: static !important;
}
.el-tabs__header{
margin: 0;
.el-tabs__item{
padding: 0 16px;
font-size: 16px;
}
.is-active{
font-weight: bold;
}
}
.el-tabs__content{
width: 100%;
}
}
.img{
width: 100%;
margin-top: 30px;
}
}
</style>
......@@ -46,7 +46,7 @@
</el-table-column>
<el-table-column label="地区" min-width="150" align="left" fixed>
<template slot-scope="scope">
<span @click="clickTo(scope.row)">{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}</span>
<span @click="clickTo(scope.row)" style="cursor: pointer;" class="a-link">{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}</span>
</template>
</el-table-column>
<el-table-column label="年度明细" prop="id" width="90" align="center" fixed>
......@@ -327,7 +327,7 @@
},
clickTo(item){
let params={
id:item.id,
// id:item.id,
province:item.area ? item.area : item.city ? item.city : item.province,
}
if(item.areaId){
......
......@@ -11,7 +11,7 @@
</el-select>
</div>
</div>
<div class="content_box">
<div class="content_box" v-if="xmtjList.length > 0 && !isSkeleton">
<div class="box-left">
<div id="echarts1" style="height: 280px"></div>
</div>
......@@ -38,10 +38,10 @@
</el-table>
</div>
</div>
<!--<div class="empty">-->
<!--<img class="img" src="@/assets/images/project/empty.png">-->
<!--<div class="p1">抱歉,暂无数据展示</div>-->
<!--</div>-->
<div class="empty" v-if="xmtjList.length === 0 && !isSkeleton">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div>
</div>
</div>
<div v-if="!zbtjState" class="td_content">
<div class="flex-box query-box">
......@@ -52,7 +52,7 @@
</el-select>
</div>
</div>
<div class="content_box">
<div class="content_box" v-if="topList.length > 0 && !zbtjState">
<div class="box-left">
<div id="echarts2" style="height: 280px"></div>
</div>
......@@ -79,10 +79,10 @@
</el-table>
</div>
</div>
<!--<div class="empty" v-if="!zbtjState">-->
<!--<img class="img" src="@/assets/images/project/empty.png">-->
<!--<div class="p1">抱歉,暂无数据展示</div>-->
<!--</div>-->
<div class="empty" v-if="topList.length === 0 && !zbtjState">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div>
</div>
</div>
<div v-if="!jefxState" class="td_content">
<div class="flex-box query-box">
......@@ -93,7 +93,7 @@
</el-select>
</div>
</div>
<div class="content_box">
<div class="content_box" v-if="zbjeList.length > 0 && !jefxState">
<div class="box-left">
<div id="echarts3" style="height: 280px"></div>
</div>
......@@ -118,10 +118,10 @@
</el-table>
</div>
</div>
<!--<div class="empty" v-if="!jefxState">-->
<!--<img class="img" src="@/assets/images/project/empty.png">-->
<!--<div class="p1">抱歉,暂无数据展示</div>-->
<!--</div>-->
<div class="empty" v-if="zbjeList.length === 0 && !jefxState">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div>
</div>
</div>
<div v-if="!qsfxState" class="td_content">
<div class="flex-box query-box">
......@@ -129,7 +129,7 @@
<span class="common-title">全国中标趋势分析</span>
</div>
</div>
<div class="content_box">
<div class="content_box" v-if="zbqsList.length > 0 && !qsfxState">
<div class="box-left">
<div id="echarts4" style="height: 300px"></div>
</div>
......@@ -154,6 +154,10 @@
</el-table>
</div>
</div>
<div class="empty" v-if="zbqsList.length === 0 && !qsfxState">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div>
</div>
</div>
<div v-if="!xflState" class="td_content">
<div class="flex-box query-box">
......@@ -164,7 +168,7 @@
</el-select>
</div>
</div>
<div class="content_box">
<div class="content_box" v-if="xflList.length > 0 && !xflState">
<div class="box-left">
<div id="echarts5" style="height: 280px"></div>
</div>
......@@ -189,17 +193,17 @@
</el-table>
</div>
</div>
<!--<div class="empty" v-if="!xflState">-->
<!--<img class="img" src="@/assets/images/project/empty.png">-->
<!--<div class="p1">抱歉,暂无数据展示</div>-->
<!--</div>-->
<div class="empty" v-if="xflList.length === 0 && !xflState">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div>
</div>
</div>
<div v-if="!xmlxState" class="td_content">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">全国中标业绩项目类型下浮率</span>
<el-select @change="handleYears(6)" style="margin-right: 8px" v-model="address" collapse-tags filterable class="form-content-width" placeholder="地区筛选" :popper-append-to-body='false' size="small">
<el-select @change="handleYears(6)" style="margin-right: 8px" v-model="address" clearable collapse-tags filterable class="form-content-width" placeholder="地区筛选" :popper-append-to-body='false' size="small">
<el-option v-for="(item, index) in addressList" :key="index" :label="item.label" :value="item.id" />
</el-select>
<el-select v-model="years4" @change="handleYears(6)" collapse-tags filterable class="form-content-width" placeholder="请选择" :popper-append-to-body='false' size="small">
......@@ -207,7 +211,7 @@
</el-select>
</div>
</div>
<div class="content_box">
<div class="content_box" v-if="xmxflList.length > 0 && !isSkeleton">
<div class="box-left">
<div id="echarts6" style="height: 300px"></div>
</div>
......@@ -233,10 +237,10 @@
</el-table>
</div>
</div>
<!--<div class="empty">-->
<!--<img class="img" src="@/assets/images/project/empty.png">-->
<!--<div class="p1">抱歉,暂无数据展示</div>-->
<!--</div>-->
<div class="empty" v-if="xmxflList.length === 0 && !xmlxState">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div>
</div>
</div>
</div>
......
......@@ -6,6 +6,7 @@
<el-tab-pane label="全国商机项目分析" name="second"></el-tab-pane>
<el-tab-pane label="全国中标市场分析" name="third"></el-tab-pane>
<el-tab-pane label="全国建筑企业分析" name="fourth"></el-tab-pane>
<el-tab-pane label="BI统计分析" name="five"></el-tab-pane>
</el-tabs>
</div>
......@@ -13,6 +14,7 @@
<Sjxmfx v-if="activeName === 'second'"></Sjxmfx>
<Zhongbiao v-if="activeName === 'third'"></Zhongbiao>
<Jzqyfx v-if="activeName === 'fourth'"></Jzqyfx>
<BI v-if="activeName === 'five'"></BI>
</div>
</template>
......@@ -21,10 +23,11 @@
import Sjxmfx from './component/sjxmfx'
import Jzqyfx from './component/jzqyfx'
import Zhongbiao from './component/zhongbiao'
import BI from './component/BI'
export default {
name: 'NationalEconomies',
components: {
Economic,Sjxmfx,Jzqyfx,Zhongbiao
Economic,Sjxmfx,Jzqyfx,Zhongbiao,BI
},
data() {
return {
......
......@@ -2,10 +2,12 @@ package com.dsk.system.dskService;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.DskOpenApiUtil;
import org.apache.commons.collections4.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -48,6 +50,11 @@ public class IndexService {
objectMap.put("recentlyBidQueryDto", recentlyBidQueryDtoList);
} else {
Map<String,Object> recentlyBidQueryMap = (Map<String,Object>)recentlyBidQueryDtoList.get(0);
String startMoney = MapUtils.getString(recentlyBidQueryMap, "startMoney", "");
String endMoney = MapUtils.getString(recentlyBidQueryMap, "endMoney", "");
if (ObjectUtil.isEmpty(startMoney) && ObjectUtil.isEmpty(endMoney)) {
recentlyBidQueryMap.put("startMoney", 20000);
}
recentlyBidQueryMap.put("tenderType","施工,工程总承包");
objectMap.put("recentlyBidQueryDto", recentlyBidQueryDtoList);
}
......@@ -71,7 +78,13 @@ public class IndexService {
jskBidQueryDtoMap.put("startBidMoney", 20000);
objectMap.put("jskBidQueryDto", jskBidQueryDtoMap);
} else {
objectMap.put("jskBidQueryDto", jskBidQueryDto);
Map<String,Object> map = JSONUtil.toBean(JSONUtil.toJsonStr(jskBidQueryDto), Map.class);
String startBidMoney = MapUtils.getString(map, "startBidMoney", "");
String endBidMoney = MapUtils.getString(map, "endBidMoney", "");
if (ObjectUtil.isEmpty(startBidMoney) && ObjectUtil.isEmpty(endBidMoney)) {
map.put("startBidMoney", 20000);
}
objectMap.put("jskBidQueryDto", map);
}
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/page", objectMap);
return BeanUtil.toBean(map, AjaxResult.class);
......
......@@ -123,13 +123,16 @@
</select>
<select id="selectCreditLevelGroup" resultType="java.util.Map">
select
ct.credit_level creditLevel, count(ct.credit_level) customerCount
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
where ctu.user_id = #{userId}
group by ct.credit_level
order by ct.credit_level desc
select ct.* from (
select
ct.credit_level creditLevel, count(ct.customer_id) customerCount
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
where ctu.user_id = #{userId} and ct.credit_level is not null
group by ct.credit_level
) ct
left join sys_dict_data sdd on (sdd.dict_label = ct.creditLevel and sdd.dict_type = 'credit_level_type')
order by sdd.dict_sort asc
</select>
</mapper>
......
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