Commit 6dedea1e authored by Administrator's avatar Administrator

Merge remote-tracking branch 'origin/dev20230707' into dev20230707

parents e0955191 3b48016a
......@@ -70,7 +70,7 @@ export const constantRoutes = [
path: 'index',
component: () => import('@/views/index'),
name: 'Index',
meta: { title: '首页', icon: 'index',noCache: true }
meta: { title: '首页', icon: 'index',noCache: false }
}
]
},
......
......@@ -51,6 +51,10 @@ export default {
type: String,
default: '请选择'
},
'moneyValue': {
type: String,
default: ''
},
'ref-str': {
type: String,
default: `timeselect${String(Math.random(0, 100)).slice(2)}`,
......@@ -92,6 +96,9 @@ export default {
if(this.moneyList&&this.moneyList.length>0){
this.options = this.moneyList
}
if(this.moneyValue){
this.value = this.moneyValue
}
},
destroyed() {
const app = document.getElementById('app')
......@@ -411,20 +418,20 @@ export default {
width: 186px;
color: #606266;
text-indent: 0;
padding: 16px;
padding: 14px;
padding-top: 0px;
border: 1px solid #e0e0e0;
.popper_wrap {
margin-top: 16px;
display: inline-block;
.popper_input {
width: 100px;
width: 90px;
display: inline-block;
margin: 0px 8px;
line-height: 34px;
}
.el-input__inner {
width: 100px;
width: 90px;
}
}
input::-webkit-outer-spin-button,
......
......@@ -46,6 +46,10 @@ export default {
type: String,
default: '请选择',
},
'timeValue': {
type: String,
default: '',
},
'ref-str': {
type: String,
default: `timeselect${String(Math.random(0, 100)).slice(2)}`,
......@@ -106,6 +110,9 @@ export default {
if(this.dateTo){
this.defaultValue = new Date(this.dateTo)
}
if(this.timeValue){
this.value = this.timeValue
}
this.handleAppClick()
if(this.timeList&&this.timeList.length>0){
this.options = this.timeList
......
......@@ -212,7 +212,7 @@
pageSize:10,
recordlist:[],
timeList:['今日','近三天','近七天','自定义'],
datatype:0,
datatype:'',
defaultValue:new Date(),
pickerValue: [],
params:{
......@@ -301,88 +301,120 @@
self.myChart1.resize()
}, 10)
},
initChart(data){
initChart(list){
let data=[]
if(list.length > 10){
for(var i=0;i<10;i++){
data.push(list[i])
}
}else {
data=list
}
//业主单位合作情况
this.option = {
legend: {
show: false,
x:'center',
y:'bottom',
padding:[10,0,10,0],
itemWidth: 24,
itemHeight: 10,
textStyle:{
borderRadius:30,
this.option ={
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross'
}
},
yAxis: {
xAxis: {
type: 'category',
inverse: true, // 反向坐标
data: data.map(item => item.companyName),
axisLine: {
show: false,
},
axisTick: {
show: false,
axisLabel: { //坐标轴刻度标签的相关设置
margin: 15, //刻度标签与轴线之间的距离
color:"#666666"
},
axisTick: false, //坐标轴刻度
axisPointer: {
label: {
show: true,
margin: 30
type: 'shadow'
},
data: data.map(item => item.companyName),
},
yAxis: [
{
type: 'value',
axisLabel: { //坐标轴刻度标签的相关设置
color:"#666666"
},
name: '单位:次',
nameLocation: 'end',
nameTextStyle: {
padding: [0, 10, 0, -60], // 四个数字分别为上右下左与原位置距离
color: '#666666',
}
},
axisLabel: {
margin: 200,
textStyle: {
align: 'left',
{
type: 'value',
axisLabel: { //坐标轴刻度标签的相关设置
color:"#666666"
},
formatter: function (value,index) {
if (value.length > 15) {
value=`${value.slice(0, 15)}...`
}
return value
name: '单位:万元',
nameLocation: 'end',
nameTextStyle: {
padding: [0, 0, 0, 100], // 四个数字分别为上右下左与原位置距离
color: '#666666',
},
},
},
xAxis: {
type: 'value',
axisLabel: { //坐标轴刻度标签的相关设置
// color:"#666666"
},
name: '单位/万元',
// nameLocation: 'start',
nameLocation: 'end',
nameTextStyle: {
padding: [0, 0, 0, 0], // 四个数字分别为上右下左与原位置距离
// color: '#666666',
},
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: ['#FFFFFF']
}
}
}
],
grid: {
left: '22%',
top: 60,
right: 80,
bottom: 60,
},
tooltip: {
show: true,
// backgroundColor: 'rgba(0,0,0,.7)',
borderWidth: 0,
// textStyle: {
// color: '#fff',
// },
top:30,
left:80,
right:90,
bottom:30,
},
series: {
name:'合同总额',
data: data.map(item => item.totalAmount),
barGap: 0,
type: 'bar',
itemStyle:{
color: '#92C9FF',
barBorderRadius:[0, 20, 20, 0]
series: [
{
name:'合作金额(万元)',
smooth: false, //平滑
type:"line",
symbolSize: 6,
yAxisIndex: 1,
tooltip: {
valueFormatter: function (value) {
return value + '万元'
}
},
itemStyle: {
normal:{
color: '#67B3FD',
lineStyle: {
width:3
},
}
},
data:data.map(item => item.totalAmount),
},
barWidth: 8,
},
{
name:'合作次数(次)',
type: 'bar',
barWidth: 20,
tooltip: {
valueFormatter: function (value) {
return value + '次';
}
},
itemStyle: {
normal:{
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#56A5FF'
}, {
offset: 1,
color: '#1B8EFF'
}]),
barBorderRadius:[20,20, 0, 0]
}
},
data:data.map(item => item.businessCount),
}
]
}
this.option && this.myChart.setOption(this.option)
},
......
......@@ -33,6 +33,9 @@
<template slot="stockPercent" slot-scope="scope">
<span>{{scope.row.stockPercent?parseFloat(Number(scope.row.stockPercent*100).toFixed(4))+'%':'--'}}</span>
</template>
<template slot="shouldCapiConv" slot-scope="scope">
<span>{{scope.row.shouldCapiConv === '0.00万元人民币'? '--':scope.row.shouldCapiConv}}</span>
</template>
</tables>
</div>
</template>
......@@ -56,7 +59,7 @@ export default {
forData: [
{label: '发起人/股东', prop: 'stockName', minWidth: '230', slot: true},
{label: '持股比例', prop: 'stockPercent', slot: true},
{label: '认缴出资', prop: 'shouldCapiConv'},
{label: '认缴出资', prop: 'shouldCapiConv', slot: true},
{label: '实缴出资额', prop: 'realCapi'},
{label: '认缴出资日期', prop: 'conDate'},
{label: '参股日期', prop: 'realCapiDate', width: '150'}
......
......@@ -56,13 +56,7 @@
<div class="flex-box query-params">
<span class="common-title">集团中标统计</span>
</div>
</div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<el-row v-if="!isSkeleton">
<el-col :span="14">
<div id="zbtj-echarts" style="height: 300px;"></div>
</el-col>
<el-col :span="10">
<div class="flex-box">
<div class="search">
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item prop="address">
......@@ -79,16 +73,25 @@
<custom-time-select
:timeList="timeList"
v-model="queryParams.time"
timeValue="近七天"
placeholder="中标日期"
@handle-search="changeSelect1"/>
</el-form-item>
</el-form>
</div>
</div>
</div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<el-row v-if="jtzbList.length > 0 &&!isSkeleton">
<el-col :span="14">
<div id="zbtj-echarts" style="height: 350px;"></div>
</el-col>
<el-col :span="10">
<div class="box-right">
<el-table
:data="jtzbList"
border
max-height="250"
max-height="320"
fit
ref="tableRef"
highlight-current-row
......@@ -104,18 +107,17 @@
</div>
</el-col>
</el-row>
<div class="empty" v-if="jtzbList.length === 0 && !isSkeleton">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div>
</div>
</div>
<div class="content content_wap2">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">大项目中标排行榜</span>
</div>
</div>
<el-row>
<el-col :span="14">
<div id="zbph-echarts" style="height: 500px;"></div>
</el-col>
<el-col :span="10">
<div class="flex-box">
<div class="search">
<el-form ref="queryForm" :model="queryParams1" :inline="true" size="small">
<el-form-item prop="money">
......@@ -139,16 +141,24 @@
<custom-time-select
:timeList="timeList"
v-model="queryParams1.time"
timeValue="近七天"
placeholder="中标日期"
@handle-search="changeSelect2"/>
</el-form-item>
</el-form>
</div>
</div>
</div>
<el-row v-if="dxmbList.length > 0 && !dxmzbState">
<el-col :span="14">
<div id="zbph-echarts" style="height: 350px;"></div>
</el-col>
<el-col :span="10">
<div class="box-right">
<el-table
:data="dxmbList"
border
max-height="400"
max-height="320"
ref="tableRef1"
fit
highlight-current-row
......@@ -165,6 +175,10 @@
</div>
</el-col>
</el-row>
<div class="empty" v-if="dxmbList.length === 0 && !dxmzbState">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div>
</div>
</div>
<div class="content_wap3" ref="returnTop">
<el-tabs v-model="activeName" @tab-click="handleClickTab">
......@@ -176,7 +190,7 @@
<div class="list-content">
<p class="list-content-text">
<span>中标企业:</span>
<span>{{item.ename || '--'}}</span>
<span><router-link :to="`/enterprise/${encodeStr(item.jskEid)}`" tag="a" class="a-link companyName" v-html="item.ename" ></router-link></span>
</p>
<p class="list-content-text">
<span>中标金额:</span>
......@@ -193,7 +207,7 @@
</div>
</div>
</div>
<div class="pagination-box" v-if="totalCount>queryParams2.pageSize && !zxzbIsSkeleton">
<div class="pagination-box" v-if="show_page && totalCount>queryParams2.pageSize && !zxzbIsSkeleton">
<el-pagination background :current-page="queryParams2.pageNum" :page-size="queryParams2.pageSize" :total="totalCount" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</el-tab-pane>
......@@ -201,7 +215,7 @@
<skeleton v-if="zhaobiaoIsSkeleton" style="padding: 16px"></skeleton>
<div v-if="!zhaobiaoIsSkeleton" class="list">
<div class="item" v-for="(item,index) in zbList" :key="index">
<p class="list-title"><router-link :to="`/biddetail/${item.id}`" tag="a" class="a-link" v-if="item.id" v-html="item.projectName"></router-link></p>
<p class="list-title"><router-link :to="`/radar/Notice/details/${item.id}`" tag="a" class="a-link" v-if="item.id" v-html="item.projectName"></router-link></p>
<div class="list-content">
<p class="list-content-text">
<span>总投资:</span>
......@@ -218,7 +232,7 @@
</div>
</div>
</div>
<div class="pagination-box" v-if="zbTableTotal>queryParams2.pageSize && !zhaobiaoIsSkeleton">
<div class="pagination-box" v-if="show_page && zbTableTotal>queryParams2.pageSize && !zhaobiaoIsSkeleton">
<el-pagination background :current-page="queryParams2.pageNum" :page-size="queryParams2.pageSize" :total="zbTableTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</el-tab-pane>
......@@ -229,6 +243,7 @@
<custom-money-select
:moneyList="moneyList"
v-model="amount"
moneyValue="2亿以上"
:placeholder="placeholder"
@handle-search="changeSelect3" />
</el-form-item>
......@@ -246,6 +261,7 @@
<custom-time-select
:timeList="timeList"
v-model="queryParams2.time"
timeValue="近七天"
placeholder="中标日期"
@handle-search="changeSelect3"/>
</el-form-item>
......@@ -667,8 +683,11 @@ export default {
zbTableTotal:0,
isSkeleton:true,
zxzbIsSkeleton:true,
dxmzbState:true,
zhaobiaoIsSkeleton:true,
placeholder:'中标金额'
placeholder:'中标金额',
show_page:true,
MaxPage:500,
};
},
created() {
......@@ -704,14 +723,15 @@ export default {
this.isSkeleton=false;
if(res.code == 200){
this.jtzbList=res.data;
// if()
this.initChart(this.jtzbList)
if(this.jtzbList.length > 0){
this.initChart(this.jtzbList)
// setTimeout(() => {
// this.$nextTick(() => {
// this.$refs.tableRef.bodyWrapper.scrollTop = 0
// });
// }, 500);
}
setTimeout(() => {
this.$nextTick(() => {
this.$refs.tableRef.bodyWrapper.scrollTop = 0
});
}, 500);
}
})
},
......@@ -737,15 +757,16 @@ export default {
}
bidRank(params).then(res=>{
if(res.code == 200){
this.dxmzbState=false;
this.dxmbList=res.data;
if(this.dxmbList.length > 0){
this.initChart1(this.dxmbList)
setTimeout(() => {
this.$nextTick(() => {
this.$refs.tableRef1.bodyWrapper.scrollTop = 0
});
}, 500);
}
setTimeout(() => {
this.$nextTick(() => {
this.$refs.tableRef1.bodyWrapper.scrollTop = 0
});
}, 500);
}
})
},
......@@ -781,6 +802,10 @@ export default {
this.projectList=res.data.list;
this.totalCount=res.data.total;
}
// window.scrollTo({
// top: 600,
// behavior: 'smooth' // 滚动行为:smooth平滑滚动,instant瞬间滚动,默认值auto,等同于instant
// })
})
},
getBigBidPage(){
......@@ -869,7 +894,7 @@ export default {
name: '单位:个',
nameLocation: 'end',
nameTextStyle: {
padding: [0, 20, 0, -60], // 四个数字分别为上右下左与原位置距离
padding: [0, 10, 0, -60], // 四个数字分别为上右下左与原位置距离
color: '#666666',
}
},
......@@ -894,7 +919,7 @@ export default {
}
],
grid: {
top:60,
top:30,
left:80,
right:90,
bottom:30,
......@@ -1161,7 +1186,7 @@ export default {
name: '单位:个',
nameLocation: 'end',
nameTextStyle: {
padding: [0, 20, 0, 0], // 四个数字分别为上右下左与原位置距离
padding: [0, 10, 0, 0], // 四个数字分别为上右下左与原位置距离
color: '#666666',
}
},
......@@ -1187,10 +1212,10 @@ export default {
}
],
grid: {
top:50,
top:30,
left:60,
right:90,
bottom:50,
bottom:30,
// containLabel: true
},
// dataZoom:[
......@@ -1310,17 +1335,24 @@ export default {
}
},
handleCurrentChange(val){
this.queryParams2.pageNum = val
if(this.activeName === 'first'){
this.getBigWinningBidsPage()
}
if(this.activeName === 'second'){
this.getBigBidPage()
if(this.MaxPage<val){
this.show_page = false
this.$nextTick(() => {
this.queryParams2.pageNum = 1
this.$message.warning(`对不起,最多只能访问${this.MaxPage}页`)
this.show_page = true
})
}else {
this.queryParams2.pageNum = val
if(this.activeName === 'first'){
this.getBigWinningBidsPage()
}
if(this.activeName === 'second'){
this.getBigBidPage()
}
// this.jump()
}
window.scrollTo({
top: 600,
behavior: 'smooth' // 滚动行为:smooth平滑滚动,instant瞬间滚动,默认值auto,等同于instant
})
},
handleSizeChange(val){
this.queryParams2.pageNum = 1
......@@ -1347,6 +1379,44 @@ export default {
});
},
jump() {
let total = 500
let distance = document.documentElement.scrollTop || document.body.scrollTop
// 平滑滚动,时长500ms,每10ms一跳,共50跳
let step = total / 50
if (total > distance) {
smoothDown()
} else {
let newTotal = distance - total
step = newTotal / 50
smoothUp()
}
function smoothDown() {
if (distance < total) {
distance += step
document.body.scrollTop = distance
document.documentElement.scrollTop = distance
setTimeout(smoothDown, 10)
} else {
document.body.scrollTop = total
document.documentElement.scrollTop = total
}
}
function smoothUp() {
if (distance > total) {
distance -= step
document.body.scrollTop = distance
document.documentElement.scrollTop = distance
setTimeout(smoothUp, 10)
} else {
document.body.scrollTop = total
document.documentElement.scrollTop = total
}
}
},
}
};
</script>
......@@ -1436,20 +1506,23 @@ export default {
}
.content{
background: #ffffff;
padding: 22px 16px;
padding: 16px;
.query-box{
margin-bottom: 16px;
}
}
.content_wap1{
height: 380px;
height: 430px;
margin-bottom: 12px;
}
.content_wap2{
height: 540px;
height: 430px;
}
.search{
float:right;
::v-deep .el-form{
.el-form-item--small.el-form-item{
margin-bottom: 16px;
margin-bottom: 0;
}
.el-form-item{
height: 32px;
......@@ -1616,12 +1689,12 @@ export default {
margin: 0 16px;
.item{
border-bottom: 1px solid #EFEFEF;
padding: 16px 0;
padding: 13px 0;
.list-title{
font-size: 16px;
font-weight: 700;
color: #3D3D3D;
line-height: 23px;
line-height: 20px;
cursor: pointer;
.list-titel-a{
text-decoration: none;
......@@ -1635,7 +1708,7 @@ export default {
}
}
.list-content {
margin-top: 16px;
margin-top: 12px;
display: flex;
justify-content: start;
align-items: center;
......@@ -1664,9 +1737,13 @@ export default {
}
}
}
}
}
.pagination-box{
padding: 16px;
}
::v-deep .selectTag{
.el-select__tags{
.el-tag{
......@@ -1677,7 +1754,21 @@ export default {
}
}
}
.empty{
margin: 0 auto;
height: 300px;
text-align: center;
.img{
width: 108px;
height: 108px;
margin-bottom: 24px;
margin-top: 70px;
}
.p1{
color: #333333;
font-size: 16px;
}
}
......
......@@ -391,14 +391,17 @@
<select id="selectAmountAnalyze" resultType="com.dsk.system.domain.business.vo.BusinessAnalyzeVo">
select
bi.amount_source,count(bi.id) businessCount, ROUND(sum(bi.investment_amount), 4) totalAmount
<include refid="businessSearchSql"/>
<include refid="businessSearchSql"/>
and bi.amount_source is not null
group by bi.amount_source
having businessCount > 0
</select>
<select id="selectTypeAnalyze" resultType="com.dsk.system.domain.business.vo.BusinessAnalyzeVo">
select
bi.project_type,count(bi.id) businessCount, ROUND(sum(bi.investment_amount), 4) totalAmount
<include refid="businessSearchSql"/>
and bi.project_type is not null
group by bi.project_type
<if test="status != null and status == 0 "> order by businessCount desc </if>
<if test="status != null and status == 2 "> order by totalAmount desc </if>
......@@ -408,6 +411,7 @@
select
bi.project_category,count(bi.id) businessCount, ROUND(sum(bi.investment_amount), 4) totalAmount
<include refid="businessSearchSql"/>
and bi.project_category is not null
group by bi.project_category
<if test="status != null and status == 0 "> order by businessCount desc </if>
<if test="status != null and status == 2 "> order by totalAmount desc </if>
......
......@@ -118,6 +118,7 @@
left join business_info bi on (bi.customer_id = ct.customer_id and bi.status = 2)
where ctu.status = 0 and ctu.user_id = #{userId}
group by ct.customer_id
having businessCount > 0
order by totalAmount desc
limit 10
</select>
......
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