Commit bb6eab16 authored by Administrator's avatar Administrator

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

parents dfbc9892 ae974026
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
"clipboard": "2.0.8", "clipboard": "2.0.8",
"core-js": "3.25.3", "core-js": "3.25.3",
"echarts": "^5.0.0", "echarts": "^5.0.0",
"el-table-horizontal-scroll": "^1.2.5",
"element-resize-detector": "^1.2.4", "element-resize-detector": "^1.2.4",
"element-ui": "2.15.12", "element-ui": "2.15.12",
"file-saver": "2.0.5", "file-saver": "2.0.5",
......
...@@ -88,7 +88,7 @@ export function getSelect(data) { ...@@ -88,7 +88,7 @@ export function getSelect(data) {
data: data data: data
}) })
} }
// 数据来源链接 // 中标公示来源链接
export function bidWinMergeDetail(data) { export function bidWinMergeDetail(data) {
return request({ return request({
url: '/enterpriseBussiness/bidWinMergeDetail', url: '/enterpriseBussiness/bidWinMergeDetail',
...@@ -96,3 +96,19 @@ export function bidWinMergeDetail(data) { ...@@ -96,3 +96,19 @@ export function bidWinMergeDetail(data) {
data: data data: data
}) })
} }
// 四库业绩来源链接
export function skyProjectDetail(data) {
return request({
url: '/enterpriseBussiness/skyProjectDetail',
method: 'post',
data: data
})
}
// 荣誉奖项来源链接
export function awardDetail(data) {
return request({
url: '/enterpriseBussiness/awardDetail',
method: 'post',
data: data
})
}
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -407,6 +407,18 @@ ul, li { ...@@ -407,6 +407,18 @@ ul, li {
background: #566380; background: #566380;
} }
} }
.el-scrollbar{
height: 16px;
.el-scrollbar__bar.is-horizontal{
height: 8px;
}
.el-scrollbar__thumb{
background: rgba(98,110,126,0.4);
&:hover{
background: #566380;
}
}
}
} }
} }
......
...@@ -13,7 +13,7 @@ import router from './router' ...@@ -13,7 +13,7 @@ import router from './router'
import directive from './directive' // directive import directive from './directive' // directive
import plugins from './plugins' // plugins import plugins from './plugins' // plugins
import { download } from '@/utils/request' import { download } from '@/utils/request'
import horizontalScroll from 'el-table-horizontal-scroll'
import './assets/icons' // icon import './assets/icons' // icon
import './permission' // permission control import './permission' // permission control
...@@ -59,6 +59,7 @@ Vue.component('FileUpload', FileUpload) ...@@ -59,6 +59,7 @@ Vue.component('FileUpload', FileUpload)
Vue.component('ImageUpload', ImageUpload) Vue.component('ImageUpload', ImageUpload)
Vue.component('ImagePreview', ImagePreview) Vue.component('ImagePreview', ImagePreview)
Vue.use(horizontalScroll)
Vue.use(directive) Vue.use(directive)
Vue.use(plugins) Vue.use(plugins)
Vue.use(VueMeta) Vue.use(VueMeta)
......
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
</div> </div>
<div class="content content_wap2"> <div class="content content_wap2">
<div class="head_title">客户资信评级</div> <div class="head_title">客户资信评级</div>
<el-row> <el-row v-if="creditLevel.length > 0">
<el-col :span="14"> <el-col :span="14">
<div id="zxpj-echarts" style="height: 250px;"></div> <div id="zxpj-echarts" style="height: 250px;"></div>
</el-col> </el-col>
...@@ -100,6 +100,10 @@ ...@@ -100,6 +100,10 @@
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<div class="empty" v-if="creditLevel.length === 0">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
</div>
</div> </div>
<div class="content_wap3"> <div class="content_wap3">
<div class="flex-box query-box"> <div class="flex-box query-box">
...@@ -216,8 +220,8 @@ ...@@ -216,8 +220,8 @@
defaultValue:new Date(), defaultValue:new Date(),
pickerValue: [], pickerValue: [],
params:{ params:{
startTime:this.formatDate(new Date()), startTime:'',
endTime:this.formatDate(new Date()) endTime:'',
}, },
data:{ data:{
open:false open:false
...@@ -264,12 +268,16 @@ ...@@ -264,12 +268,16 @@
} }
}) })
creditLevel().then(res=>{ creditLevel().then(res=>{
let data=[]
for(let i=0; i<res.data.length; i++){ for(let i=0; i<res.data.length; i++){
if(res.data[i].creditLevel){ if(res.data[i].creditLevel){
this.creditLevel.push(res.data[i]) data.push(res.data[i])
} }
} }
this.initChart1(this.creditLevel) this.creditLevel=data;
if(this.creditLevel.length > 0){
this.initChart1(this.creditLevel)
}
}) })
}, },
getFollowList(){ getFollowList(){
...@@ -829,26 +837,24 @@ ...@@ -829,26 +837,24 @@
} }
} }
.content_wap1{ .empty{
.empty{ margin: 0 auto;
margin: 0 auto; height: 300px;
height: 300px; text-align: center;
text-align: center; .img{
.img{ width: 108px;
width: 108px; height: 108px;
height: 108px; margin-bottom: 24px;
margin-bottom: 24px; margin-top: 50px;
margin-top: 50px; }
} .p1{
.p1{ color: #333333;
color: #333333; font-size: 16px;
font-size: 16px; }
} .p2{
.p2{ color: #999999;
color: #999999; font-size: 14px;
font-size: 14px; margin-top: 8px;
margin-top: 8px;
}
} }
} }
.content_wap3{ .content_wap3{
......
<template> <template>
<div class="headForm"> <div class="headForm">
<div class="flex-box query-box"> <div class="flex-box query-box">
<div class="flex-box query-params"> <div class="flex-box query-params" :class="flag?'box1':''">
<div class="flex-box headForm-text"> <div class="flex-box headForm-text">
<!-- <img v-if="title" src="@/assets/images/detail/ico_title.png" /> --> <template v-if="flag">
<!-- <span class="drawer-title" v-if="title">{{ title }}</span> --> <img v-if="title" src="@/assets/images/detail/ico_title.png" />
<span class="drawer-title" v-if="title">{{ title }}</span>
</template>
<template v-if="slots"> <template v-if="slots">
<slot name="slot"></slot> <slot name="slot"></slot>
</template> </template>
<!-- <div v-else> <div v-if="flag">
<span class="ability-total" v-if="isTotal">{{ total }}条数据</span> <span class="ability-total" v-if="isTotal">{{ total }}条数据</span>
<span class="ability-total" v-if="amountTotal">,共计合作总金额:<i>{{ amountTotal }}</i>万元</span> <span class="ability-total" v-if="amountTotal">,共计合作总金额:<i>{{ amountTotal }}</i>万元</span>
</div> --> </div>
</div> </div>
<div class="headForm-from"> <div class="headForm-from">
<div class="from-item" :key="i" v-for="(form, i) in formData"> <div class="from-item" :key="i" v-for="(form, i) in formData">
...@@ -96,6 +98,10 @@ export default { ...@@ -96,6 +98,10 @@ export default {
type: String, type: String,
default: '' default: ''
}, },
flag: {
type: Boolean,
default: false
},
queryParams: { queryParams: {
type: Object, type: Object,
default: {} default: {}
...@@ -143,6 +149,11 @@ export default { ...@@ -143,6 +149,11 @@ export default {
width: 100%; width: 100%;
padding: 8px 17px 8px 0; padding: 8px 17px 8px 0;
} }
.box1{
padding: 8px 17px 8px 13px;
justify-content: space-between;
border-bottom: 1px solid #E1E1E1;
}
::v-deep .el-input__inner{ ::v-deep .el-input__inner{
border: 0; border: 0;
height: 32px; height: 32px;
...@@ -171,6 +182,12 @@ export default { ...@@ -171,6 +182,12 @@ export default {
line-height: 32px; line-height: 32px;
} }
.headForm-text{ .headForm-text{
.drawer-title{
font-size: 16px;
color: #232323;
font-weight: bold;
margin-right: 4px;
}
img{ img{
width: 17px; width: 17px;
height: 17px; height: 17px;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
> >
<template slot="slot"> <template slot="slot">
<div class="flex-box query-add"> <div class="flex-box query-add">
<el-button type="primary" icon="el-icon-plus" @click="drawer = true">添加商务信息</el-button> <el-button type="primary" icon="el-icon-plus" @click="drawer = true">添加合作情况</el-button>
</div> </div>
</template> </template>
</head-form> </head-form>
......
...@@ -82,7 +82,6 @@ export default { ...@@ -82,7 +82,6 @@ export default {
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await oftenAgencyPage(param) let res = await oftenAgencyPage(param)
......
...@@ -71,7 +71,6 @@ export default { ...@@ -71,7 +71,6 @@ export default {
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await tenderPage(param) let res = await tenderPage(param)
......
...@@ -8,13 +8,16 @@ ...@@ -8,13 +8,16 @@
@closed="cancel"> @closed="cancel">
<head-detail-form <head-detail-form
:title="title" :title="title"
:flag="true"
:form-data="formData" :form-data="formData"
:query-params="queryParams" :query-params="queryParams"
:total="tableDataTotal" :total="tableDataTotal"
:amountTotal="amountTotal" :amountTotal="amountTotal"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables
v-else
:indexFixed="true" :indexFixed="true"
:tableLoading="tableLoading" :tableLoading="tableLoading"
:tableData="tableData" :tableData="tableData"
...@@ -27,7 +30,7 @@ ...@@ -27,7 +30,7 @@
<template slot="dealTitle" slot-scope="scope"> <template slot="dealTitle" slot-scope="scope">
<div class="flex-box"> <div class="flex-box">
<img class="tip-img" src="@/assets/images/detail/ico_pdf.png" v-if="scope.row.fileUrlL" @click="handlePic(scope.row.fileUrlL)"/> <img class="tip-img" src="@/assets/images/detail/ico_pdf.png" v-if="scope.row.fileUrlL" @click="handlePic(scope.row.fileUrlL)"/>
<router-link :to="`/radar/Notice/details/${scope.row.bid}`" tag="a" class="a-link" v-if="scope.row.bid&&scope.row.dealTitle" v-html="scope.row.dealTitle"></router-link> <div class="a-link" @click="linkTo(scope.row.bid)" v-if="scope.row.bid&&scope.row.dealTitle" v-html="scope.row.dealTitle" style="cursor: pointer"></div>
<span v-else v-html="scope.row.dealTitle || '--'"></span> <span v-else v-html="scope.row.dealTitle || '--'"></span>
</div> </div>
</template> </template>
...@@ -43,18 +46,19 @@ ...@@ -43,18 +46,19 @@
import mixin from '../../mixins/mixin' import mixin from '../../mixins/mixin'
import {bidCooperatePage} from '@/api/detail/party-a/dealings' import {bidCooperatePage} from '@/api/detail/party-a/dealings'
import HeadDetailForm from "../../component/HeadDetailForm" import HeadDetailForm from "../../component/HeadDetailForm"
import skeleton from '@/views/project/projectList/component/skeleton'
export default { export default {
props: [ props: [
'data', 'data',
'title' 'title'
], ],
components: { components: {
HeadDetailForm HeadDetailForm,skeleton
}, },
mixins: [mixin], mixins: [mixin],
data() { data() {
return { return {
isSkeleton:true,
drawer: false, drawer: false,
queryParams: { queryParams: {
tendereeId: this.data.tendereeId, tendereeId: this.data.tendereeId,
...@@ -84,6 +88,10 @@ export default { ...@@ -84,6 +88,10 @@ export default {
this.handleQuery() this.handleQuery()
}, },
methods: { methods: {
linkTo(id){
this.drawer = false
this.$router.push(`/radar/Notice/details/${id}`)
},
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
...@@ -92,6 +100,7 @@ export default { ...@@ -92,6 +100,7 @@ export default {
if(res.code==200){ if(res.code==200){
this.tableData = res.rows this.tableData = res.rows
} }
this.isSkeleton = false;
this.tableDataTotal = res.total this.tableDataTotal = res.total
this.amountTotal = res.totalAmount this.amountTotal = res.totalAmount
}, },
......
...@@ -22,13 +22,17 @@ ...@@ -22,13 +22,17 @@
:tableData="tableData" :tableData="tableData"
:forData="forData" :forData="forData"
:tableDataTotal="tableDataTotal" :tableDataTotal="tableDataTotal"
@sort-change="sortChange"
:queryParams="queryParams" :queryParams="queryParams"
@handle-current-change="handleCurrentChange" @handle-current-change="handleCurrentChange"
> >
<template slot="projectName" slot-scope="scope">
<span v-html="scope.row.projectName"></span>
</template>
<template slot="sourceType" slot-scope="scope"> <template slot="sourceType" slot-scope="scope">
<div class="flex-box"> <div class="flex-box">
<div class="a-link" @click="linkTo(scope)" v-if="scope.row.sourceId&&scope.row.sourceType=='中标业绩'" v-html="scope.row.sourceType" style="cursor: pointer"></div> <div class="a-link" @click="linkTo(scope)" v-if="scope.row.sourceId&&scope.row.sourceType=='中标业绩'" v-html="scope.row.sourceType" style="cursor: pointer"></div>
<span v-else-if="scope.row.sourceId" @click="linkTo1(scope)" class="a-link" style="cursor: pointer" v-html="scope.row.sourceType"></span> <span v-else-if="scope.row.sourceId&&(scope.row.sourceType=='中标公示'||scope.row.sourceType=='四库业绩'||scope.row.sourceType=='荣誉奖项')" @click="linkTo1(scope)" class="a-link" style="cursor: pointer" v-html="scope.row.sourceType"></span>
<span v-else v-html="scope.row.sourceType || '--'"></span> <span v-else v-html="scope.row.sourceType || '--'"></span>
</div> </div>
</template> </template>
...@@ -39,7 +43,7 @@ ...@@ -39,7 +43,7 @@
<script> <script>
import mixin from '../../mixins/mixin' import mixin from '../../mixins/mixin'
import {clientProjectPage,getSelect,bidWinMergeDetail} from '@/api/detail/party-a/dealings' import {clientProjectPage,getSelect,bidWinMergeDetail,skyProjectDetail,awardDetail} from '@/api/detail/party-a/dealings'
import HeadDetailForm from "../../component/HeadDetailForm" import HeadDetailForm from "../../component/HeadDetailForm"
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton'
...@@ -60,7 +64,7 @@ export default { ...@@ -60,7 +64,7 @@ export default {
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
companyId: this.data.companyId, companyId: this.data.companyId,
companyName: this.data.companyName, companyName: this.data.companyName.replace(/<font color='red'>/g,'').replace(/<\/font>/g,''),
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
...@@ -71,9 +75,9 @@ export default { ...@@ -71,9 +75,9 @@ export default {
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目/工程名称查询', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '输入项目/工程名称查询', options: []},
], ],
forData: [ forData: [
{label: '项目名称', prop: 'projectName', fixed: true}, {label: '项目名称', prop: 'projectName', fixed: true,slot: true},
{label: '公布时间', prop: 'time', width: '120',sortable:true}, {label: '公布时间', prop: 'time', width: '120',sortable:'custom',descending: '3', ascending: '4'},
{label: '本次合同金额(万元)', prop: 'amount', width: '180',sortable:true}, {label: '本次合同金额(万元)', prop: 'amount', width: '180',sortable:'custom',descending: '1', ascending: '2'},
{label: '项目类型', prop: 'projectTtype', width: '130'}, {label: '项目类型', prop: 'projectTtype', width: '130'},
{label: '数据来源', prop: 'sourceType', width: '90', slot: true} {label: '数据来源', prop: 'sourceType', width: '90', slot: true}
], ],
...@@ -132,11 +136,35 @@ export default { ...@@ -132,11 +136,35 @@ export default {
this.$router.push(`/biddetail/${scope.row.sourceId}`) this.$router.push(`/biddetail/${scope.row.sourceId}`)
}, },
linkTo1(scope){ linkTo1(scope){
bidWinMergeDetail({sourceId:scope.row.sourceId}).then(res=>{ let url = ""
if(res.data&&res.data.sourceUrl){ switch (scope.row.sourceType) {
window.open(res.data.sourceUrl, "_blank") case '中标公示':
} bidWinMergeDetail({sourceId:scope.row.sourceId}).then(res=>{
}) if(res.data&&res.data.sourceUrl){
url = res.data.sourceUrl
window.open(url, "_blank")
}
})
break;
case '荣誉奖项':
awardDetail({sourceId:scope.row.sourceId}).then(res=>{
if(res.data&&res.data.sourceUrl){
url = res.data.sourceUrl
window.open(url, "_blank")
}
})
break;
case '四库业绩':
skyProjectDetail({sourceId:scope.row.sourceId}).then(res=>{
if(res.data&&res.data.sourceUrl){
url = res.data.sourceUrl
window.open(url, "_blank")
}
})
break;
default:
break;
}
}, },
cancel() { cancel() {
this.$emit('cancel') this.$emit('cancel')
......
...@@ -23,12 +23,16 @@ ...@@ -23,12 +23,16 @@
:forData="forData" :forData="forData"
:tableDataTotal="tableDataTotal" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" :queryParams="queryParams"
@sort-change="sortChange"
@handle-current-change="handleCurrentChange" @handle-current-change="handleCurrentChange"
> >
<template slot="projectName" slot-scope="scope">
<span v-html="scope.row.projectName"></span>
</template>
<template slot="sourceType" slot-scope="scope"> <template slot="sourceType" slot-scope="scope">
<div class="flex-box"> <div class="flex-box">
<div class="a-link" @click="linkTo(scope)" v-if="scope.row.sourceId&&scope.row.sourceType=='中标业绩'" v-html="scope.row.sourceType" style="cursor: pointer"></div> <div class="a-link" @click="linkTo(scope)" v-if="scope.row.sourceId&&scope.row.sourceType=='中标业绩'" v-html="scope.row.sourceType" style="cursor: pointer"></div>
<span v-else-if="scope.row.sourceId" @click="linkTo1(scope)" class="a-link" style="cursor: pointer" v-html="scope.row.sourceType"></span> <span v-else-if="scope.row.sourceId&&(scope.row.sourceType=='中标公示'||scope.row.sourceType=='四库业绩'||scope.row.sourceType=='荣誉奖项')" @click="linkTo1(scope)" class="a-link" style="cursor: pointer" v-html="scope.row.sourceType"></span>
<span v-else v-html="scope.row.sourceType || '--'"></span> <span v-else v-html="scope.row.sourceType || '--'"></span>
</div> </div>
</template> </template>
...@@ -39,7 +43,7 @@ ...@@ -39,7 +43,7 @@
<script> <script>
import mixin from '../../mixins/mixin' import mixin from '../../mixins/mixin'
import { supplierProjectPage,getSelect,bidWinMergeDetail } from '@/api/detail/party-a/dealings' import { supplierProjectPage,getSelect,bidWinMergeDetail,skyProjectDetail,awardDetail } from '@/api/detail/party-a/dealings'
import HeadDetailForm from "../../component/HeadDetailForm" import HeadDetailForm from "../../component/HeadDetailForm"
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton'
...@@ -59,7 +63,7 @@ export default { ...@@ -59,7 +63,7 @@ export default {
drawer: false, drawer: false,
queryParams: { queryParams: {
companyId: this.data.companyId, companyId: this.data.companyId,
companyName: this.data.companyName, companyName: this.data.companyName.replace(/<font color='red'>/g,'').replace(/<\/font>/g,''),
cid: this.companyId, cid: this.companyId,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
...@@ -71,9 +75,9 @@ export default { ...@@ -71,9 +75,9 @@ export default {
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入合作项目/工程名称查询', options: [], width: 260}, { type: 3, fieldName: 'keys', value: '', placeholder: '输入合作项目/工程名称查询', options: [], width: 260},
], ],
forData: [ forData: [
{label: '项目名称', prop: 'projectName', fixed: true}, {label: '项目名称', prop: 'projectName', fixed: true,slot: true},
{label: '公布时间', prop: 'time', width: '120',sortable:true}, {label: '公布时间', prop: 'time', width: '120',sortable:'custom',descending: '3', ascending: '4'},
{label: '本次合同金额(万元)', prop: 'amount', width: '180',sortable:true}, {label: '本次合同金额(万元)', prop: 'amount', width: '180',sortable:'custom',descending: '1', ascending: '2'},
{label: '项目类型', prop: 'projectType', width: '130'}, {label: '项目类型', prop: 'projectType', width: '130'},
{label: '数据来源', prop: 'sourceType', width: '90', slot: true} {label: '数据来源', prop: 'sourceType', width: '90', slot: true}
], ],
...@@ -132,11 +136,35 @@ export default { ...@@ -132,11 +136,35 @@ export default {
this.$router.push(`/biddetail/${scope.row.sourceId}`) this.$router.push(`/biddetail/${scope.row.sourceId}`)
}, },
linkTo1(scope){ linkTo1(scope){
bidWinMergeDetail({sourceId:scope.row.sourceId}).then(res=>{ let url = ""
if(res.data&&res.data.sourceUrl){ switch (scope.row.sourceType) {
window.open(res.data.sourceUrl, "_blank") case '中标公示':
} bidWinMergeDetail({sourceId:scope.row.sourceId}).then(res=>{
}) if(res.data&&res.data.sourceUrl){
url = res.data.sourceUrl
window.open(url, "_blank")
}
})
break;
case '荣誉奖项':
awardDetail({sourceId:scope.row.sourceId}).then(res=>{
if(res.data&&res.data.sourceUrl){
url = res.data.sourceUrl
window.open(url, "_blank")
}
})
break;
case '四库业绩':
skyProjectDetail({sourceId:scope.row.sourceId}).then(res=>{
if(res.data&&res.data.sourceUrl){
url = res.data.sourceUrl
window.open(url, "_blank")
}
})
break;
default:
break;
}
}, },
cancel() { cancel() {
this.$emit('cancel') this.$emit('cancel')
......
...@@ -59,11 +59,11 @@ export default { ...@@ -59,11 +59,11 @@ export default {
title:'', title:'',
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 3, sort: 5,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {}, defaultSort: {prop: 'count', order: 'descending'},
forData: [ forData: [
{label: '客户名称', prop: 'companyName', minWidth: '350', slot: true}, {label: '客户名称', prop: 'companyName', minWidth: '350', slot: true},
// {label: '合作项目/工程名称', prop: 'projectAllName', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6'}, // {label: '合作项目/工程名称', prop: 'projectAllName', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6'},
......
...@@ -94,7 +94,6 @@ export default { ...@@ -94,7 +94,6 @@ export default {
}, },
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await historySendPage(param) let res = await historySendPage(param)
this.tableLoading = false this.tableLoading = false
......
...@@ -50,11 +50,11 @@ ...@@ -50,11 +50,11 @@
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<div class="tips">注:数据来源大司空建筑大数据平台,统计范围为全国公开的施工内土地交易项目,未公开的不含在内</div>
<div class="content content_wap1"> <div class="content content_wap1">
<div class="flex-box query-box"> <div class="flex-box query-box">
<div class="flex-box query-params"> <div class="flex-box query-params">
<span class="common-title">集团中标统计</span> <span class="common-title">集团中标统计</span>
<div class="tips">注:数据来源大司空建筑大数据平台,统计范围为全国公开的施工内土地交易项目,未公开的不含在内</div>
</div> </div>
<div class="flex-box"> <div class="flex-box">
<div class="search"> <div class="search">
...@@ -116,6 +116,7 @@ ...@@ -116,6 +116,7 @@
<div class="flex-box query-box"> <div class="flex-box query-box">
<div class="flex-box query-params"> <div class="flex-box query-params">
<span class="common-title">大项目中标排行榜</span> <span class="common-title">大项目中标排行榜</span>
<div class="tips">注:数据来源大司空建筑大数据平台,统计范围为全国公开的施工内土地交易项目,未公开的不含在内</div>
</div> </div>
<div class="flex-box"> <div class="flex-box">
<div class="search"> <div class="search">
...@@ -190,7 +191,7 @@ ...@@ -190,7 +191,7 @@
<div class="list-content"> <div class="list-content">
<p class="list-content-text"> <p class="list-content-text">
<span>中标企业:</span> <span>中标企业:</span>
<span><router-link :to="`/enterprise/${encodeStr(item.jskEid)}`" tag="a" class="a-link companyName" v-html="item.ename" ></router-link></span> <span @click="getUipIdByCid(item.jskEid)" class="a-link">{{item.ename}}</span>
</p> </p>
<p class="list-content-text"> <p class="list-content-text">
<span>中标金额:</span> <span>中标金额:</span>
...@@ -262,7 +263,7 @@ ...@@ -262,7 +263,7 @@
:timeList="timeList" :timeList="timeList"
v-model="queryParams2.time" v-model="queryParams2.time"
timeValue="近七天" timeValue="近七天"
placeholder="中标日期" :placeholder="timePlaceholder"
@handle-search="changeSelect3"/> @handle-search="changeSelect3"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -670,7 +671,7 @@ export default { ...@@ -670,7 +671,7 @@ export default {
provinceId:'', provinceId:'',
projects:[], projects:[],
amount:'', amount:'',
time:'', time:[this.formatDate(new Date(new Date().getTime() - 3600 * 1000 * 24 * 7)),this.formatDate(new Date())],
pageNum:1, pageNum:1,
pageSize:10 pageSize:10
}, },
...@@ -686,6 +687,7 @@ export default { ...@@ -686,6 +687,7 @@ export default {
dxmzbState:true, dxmzbState:true,
zhaobiaoIsSkeleton:true, zhaobiaoIsSkeleton:true,
placeholder:'中标金额', placeholder:'中标金额',
timePlaceholder:'中标日期',
show_page:true, show_page:true,
MaxPage:500, MaxPage:500,
}; };
...@@ -922,7 +924,7 @@ export default { ...@@ -922,7 +924,7 @@ export default {
top:30, top:30,
left:80, left:80,
right:90, right:90,
bottom:30, bottom:50,
}, },
series: [ series: [
{ {
...@@ -1215,7 +1217,7 @@ export default { ...@@ -1215,7 +1217,7 @@ export default {
top:30, top:30,
left:60, left:60,
right:90, right:90,
bottom:30, bottom:50,
// containLabel: true // containLabel: true
}, },
// dataZoom:[ // dataZoom:[
...@@ -1303,10 +1305,12 @@ export default { ...@@ -1303,10 +1305,12 @@ export default {
if(this.activeName === 'first'){ if(this.activeName === 'first'){
this.getBigWinningBidsPage() this.getBigWinningBidsPage()
this.placeholder='中标金额' this.placeholder='中标金额'
this.timePlaceholder='中标日期'
} }
if(this.activeName === 'second'){ if(this.activeName === 'second'){
this.getBigBidPage() this.getBigBidPage()
this.placeholder='总投资' this.placeholder='总投资'
this.timePlaceholder='发布日期'
} }
}, },
handleClickTab1(){}, handleClickTab1(){},
...@@ -1417,6 +1421,14 @@ export default { ...@@ -1417,6 +1421,14 @@ export default {
} }
} }
}, },
// 时间格式化
formatDate(timeStr) {
let date = new Date(Number(timeStr))
let year = date.getFullYear()
let month = String(date.getMonth() + 1).padStart(2, 0)
let day = String(date.getDate()).padStart(2, 0)
return `${year}-${month}-${day}`
},
} }
}; };
</script> </script>
...@@ -1503,17 +1515,19 @@ export default { ...@@ -1503,17 +1515,19 @@ export default {
color: #999999; color: #999999;
font-size: 12px; font-size: 12px;
margin: 12px 0; margin: 12px 0;
padding-left: 16px;
} }
.content{ .content{
background: #ffffff; background: #ffffff;
padding: 16px; padding: 16px;
margin-top: 12px;
.query-box{ .query-box{
margin-bottom: 16px; margin-bottom: 16px;
} }
} }
.content_wap1{ .content_wap1{
height: 430px; height: 430px;
margin-bottom: 12px;
} }
.content_wap2{ .content_wap2{
height: 430px; height: 430px;
...@@ -1718,23 +1732,6 @@ export default { ...@@ -1718,23 +1732,6 @@ export default {
align-items: center; align-items: center;
margin-right: 32px; margin-right: 32px;
font-size: 14px; font-size: 14px;
span:first-child {
font-weight: 400;
color: rgba(35, 35, 35, 0.4);
line-height: 15px
}
span:last-child {
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
line-height: 15px
}
.blue {
color: #0081FF !important;
cursor: pointer;
}
} }
} }
......
...@@ -111,10 +111,10 @@ export default { ...@@ -111,10 +111,10 @@ export default {
params.provinceIds=[this.provinceId[0]] params.provinceIds=[this.provinceId[0]]
} }
if(this.provinceId.length > 1){ if(this.provinceId.length > 1){
params.cityId=[this.provinceId[1]] params.cityIds=[this.provinceId[1]]
} }
if(this.provinceId.length > 2){ if(this.provinceId.length > 2){
params.areaId=[this.provinceId[2]] params.areaIds=[this.provinceId[2]]
} }
// params.provinceIds=[this.dataQuery.provinceId] // params.provinceIds=[this.dataQuery.provinceId]
// this.isSkeleton = true // this.isSkeleton = true
......
...@@ -29,14 +29,15 @@ ...@@ -29,14 +29,15 @@
</div> </div>
</div> </div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<!--v-horizontal-scroll="'always'"-->
<div class="table-item"> <div class="table-item">
<el-table <el-table
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
max-height="640" max-height="640"
border
highlight-current-row highlight-current-row
v-if="tableDataTotal > 0 && !isSkeleton" v-if="tableDataTotal > 0 && !isSkeleton"
:default-sort = "{prop: 'gdp', order: 'descending'}" :default-sort = "{prop: 'gdp', order: 'descending'}"
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
</el-select> </el-select>
</div> </div>
</div> </div>
<div class="content_box" v-if="gyflState"> <div class="content_box" v-if="gyfsList.length > 0 && !isSkeleton">
<div class="box-left"> <div class="box-left">
<div id="echarts1" style="height: 280px"></div> <div id="echarts1" style="height: 280px"></div>
</div> </div>
...@@ -36,12 +36,12 @@ ...@@ -36,12 +36,12 @@
</el-table> </el-table>
</div> </div>
</div> </div>
<div class="empty" v-if="!gyflState"> <div class="empty" v-if="gyfsList.length === 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> </div>
</div> </div>
<div v-if="!isSkeleton" class="td_content"> <div v-if="!tdytState" class="td_content">
<div class="flex-box query-box"> <div class="flex-box query-box">
<div class="flex-box query-params"> <div class="flex-box query-params">
<span class="common-title">全国土地交易项目土地用途</span> <span class="common-title">全国土地交易项目土地用途</span>
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
</el-select> </el-select>
</div> </div>
</div> </div>
<div class="content_box" v-if="tdytState"> <div class="content_box" v-if="tdytList.length > 0 && !tdytState">
<div class="box-left"> <div class="box-left">
<div id="echarts2" style="height: 280px"></div> <div id="echarts2" style="height: 280px"></div>
</div> </div>
...@@ -75,12 +75,12 @@ ...@@ -75,12 +75,12 @@
</el-table> </el-table>
</div> </div>
</div> </div>
<div class="empty" v-if="!tdytState"> <div class="empty" v-if="tdytList.length === 0 && !tdytState">
<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> </div>
</div> </div>
<div v-if="!isSkeleton" class="td_content"> <div v-if="!topState" class="td_content">
<div class="flex-box query-box"> <div class="flex-box query-box">
<div class="flex-box query-params"> <div class="flex-box query-params">
<span class="common-title">全国土地交易项目地区Top10</span> <span class="common-title">全国土地交易项目地区Top10</span>
...@@ -92,7 +92,7 @@ ...@@ -92,7 +92,7 @@
</el-select> </el-select>
</div> </div>
</div> </div>
<div class="content_box" v-if="topList.length > 0 && !isSkeleton"> <div class="content_box" v-if="topList.length > 0 && !topState">
<div class="box-left" style="width: 60%;"> <div class="box-left" style="width: 60%;">
<div id="echarts3" style="height: 300px"></div> <div id="echarts3" style="height: 300px"></div>
</div> </div>
...@@ -117,18 +117,18 @@ ...@@ -117,18 +117,18 @@
</el-table> </el-table>
</div> </div>
</div> </div>
<div class="empty" v-if="topList.length === 0 && !isSkeleton"> <div class="empty" v-if="topList.length === 0 && !topState">
<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> </div>
</div> </div>
<div v-if="!isSkeleton" class="td_content"> <div v-if="!nftjState" class="td_content">
<div class="flex-box query-box"> <div class="flex-box query-box">
<div class="flex-box query-params"> <div class="flex-box query-params">
<span class="common-title">全国土地交易项目年份统计</span> <span class="common-title">全国土地交易项目年份统计</span>
</div> </div>
</div> </div>
<div class="content_box"> <div class="content_box" v-if="nftjList.length > 0 && !nftjState">
<div class="box-left" style="width: 60%;"> <div class="box-left" style="width: 60%;">
<div id="echarts4" style="height: 300px"></div> <div id="echarts4" style="height: 300px"></div>
</div> </div>
...@@ -187,6 +187,7 @@ export default { ...@@ -187,6 +187,7 @@ export default {
gyflState:true, gyflState:true,
tdytState:true, tdytState:true,
topState:true, topState:true,
nftjState:true,
// typeName:['住宅用地','工业用地','城镇住宅用地','其他商服用地','公共设施用地','公路用地','城镇村道路用地','公园与绿地', // typeName:['住宅用地','工业用地','城镇住宅用地','其他商服用地','公共设施用地','公路用地','城镇村道路用地','公园与绿地',
// '工矿仓储用地','零售商业用地','科研用地','街巷用地','机关团体用地','商服用地','商务金融用地'] // '工矿仓储用地','零售商业用地','科研用地','街巷用地','机关团体用地','商服用地','商务金融用地']
} }
...@@ -194,15 +195,16 @@ export default { ...@@ -194,15 +195,16 @@ export default {
created() { created() {
this.dataRegion() this.dataRegion()
this.yearsData() this.yearsData()
setTimeout(() => {
},
mounted() {
this.$nextTick(()=>{
this.getCountLandMarketByType() this.getCountLandMarketByType()
this.getCountLandMarketByTypeTd() this.getCountLandMarketByTypeTd()
this.getCountLandMarketByProvince() this.getCountLandMarketByProvince()
this.getCountLandMarketByYear() this.getCountLandMarketByYear()
this.isSkeleton=false; })
}, 1500);
},
mounted() {
}, },
beforeDestroy(){ beforeDestroy(){
...@@ -211,7 +213,8 @@ export default { ...@@ -211,7 +213,8 @@ export default {
getCountLandMarketByType(){ getCountLandMarketByType(){
// this.isSkeleton = true // this.isSkeleton = true
countLandMarketByType({type:'供应方式',yearStr:this.years.join(",")}).then(res => { countLandMarketByType({type:'供应方式',yearStr:this.years.join(",")}).then(res => {
// this.isSkeleton = false this.isSkeleton = false
this.gyflState = false
this.gyfsList=res.data.provinceDate; this.gyfsList=res.data.provinceDate;
var list=[]; var list=[];
for(var i=0;i<res.data.provinceDate.length;i++){ for(var i=0;i<res.data.provinceDate.length;i++){
...@@ -222,12 +225,9 @@ export default { ...@@ -222,12 +225,9 @@ export default {
list.push(obj) list.push(obj)
} }
if(list.length > 0){ if(list.length > 0){
this.gyflState=true
this.$nextTick(() => { this.$nextTick(() => {
this.initChart1(list) this.initChart1(list)
}) })
}else {
this.gyflState=false;
} }
}) })
}, },
...@@ -235,9 +235,9 @@ export default { ...@@ -235,9 +235,9 @@ export default {
// this.isSkeleton = true // this.isSkeleton = true
countLandMarketByType({type:'土地用途',yearStr:this.years1.join(",")}).then(res => { countLandMarketByType({type:'土地用途',yearStr:this.years1.join(",")}).then(res => {
// this.isSkeleton = false // this.isSkeleton = false
this.tdytState=false;
this.tdytList=res.data.provinceDate; this.tdytList=res.data.provinceDate;
if(res.data.provinceDate.length > 0){ if(res.data.provinceDate.length > 0){
this.tdytState=true
var list=[]; var list=[];
for(var i=0;i<10;i++){ for(var i=0;i<10;i++){
var obj={}; var obj={};
...@@ -251,10 +251,7 @@ export default { ...@@ -251,10 +251,7 @@ export default {
this.initChart2(list) this.initChart2(list)
}) })
} }
}else {
this.tdytState=false;
} }
}) })
}, },
getCountLandMarketByProvince(){ getCountLandMarketByProvince(){
...@@ -264,9 +261,8 @@ export default { ...@@ -264,9 +261,8 @@ export default {
if(this.address.length > 0){ if(this.address.length > 0){
params.provinceId=this.address.join(",") params.provinceId=this.address.join(",")
} }
// this.isSkeleton = true
countLandMarketByProvince(params).then(res => { countLandMarketByProvince(params).then(res => {
// this.isSkeleton = false this.topState = false
this.topList=res.data.provinceDate; this.topList=res.data.provinceDate;
var list=[]; var list=[];
if(res.data.provinceDate){ if(res.data.provinceDate){
...@@ -288,10 +284,10 @@ export default { ...@@ -288,10 +284,10 @@ export default {
}, },
getCountLandMarketByYear(){ getCountLandMarketByYear(){
countLandMarketByYear().then(res => { countLandMarketByYear().then(res => {
this.nftjState=false;
this.nftjList=res.data.yearDate; this.nftjList=res.data.yearDate;
var list=[]; var list=[];
if(res.data.yearDate){ if(res.data.yearDate){
this.topState=true
for(var i=0;i<res.data.yearDate.length;i++){ for(var i=0;i<res.data.yearDate.length;i++){
var obj={}; var obj={};
obj.type=res.data.yearDate[i].type; obj.type=res.data.yearDate[i].type;
...@@ -300,11 +296,11 @@ export default { ...@@ -300,11 +296,11 @@ export default {
obj.typeList=res.data.yearDate[i].typeList obj.typeList=res.data.yearDate[i].typeList
list.push(obj) list.push(obj)
} }
this.$nextTick(() => { if(list.length > 0){
this.initChart4(list) this.$nextTick(() => {
}) this.initChart4(list)
}else { })
this.topState=false; }
} }
}) })
}, },
......
...@@ -20,13 +20,16 @@ ...@@ -20,13 +20,16 @@
</div> </div>
<div class="con i"> <div class="con i">
<span>资金来源 :</span> <span>资金来源 :</span>
<div class="inputxt" id="inputxt2"> <div class="inputxt22" id="inputxt2">
<div class="flex" v-if="nowedit == 2 && isDisableds == false"> <div class="flex" v-if="nowedit == 2 && isDisableds == false">
<el-input placeholder="待添加" v-model="amountSource"></el-input> <!-- <el-input placeholder="待添加" v-model="amountSource"></el-input> -->
<div class="flex"> <el-select placeholder="请选择" v-model="amountSource" @change="changes({'amountSource':amountSource})">
<el-option v-for="(item,index) in amountSourceList" :key="index" :label="item" :value="item"></el-option>
</el-select>
<!-- <div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'amountSource':amountSource})" style="width: 56px">确定</div> <div class="btnsmall btn_primary h28" @click="changes({'amountSource':amountSource})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div> <div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div> </div> -->
</div> </div>
<span :class="{'txt':!amountSource}" v-else @click="nowedit = 2">{{amountSource||'待添加'}}</span> <span :class="{'txt':!amountSource}" v-else @click="nowedit = 2">{{amountSource||'待添加'}}</span>
</div> </div>
...@@ -214,6 +217,7 @@ ...@@ -214,6 +217,7 @@
}, },
data(){ data(){
return{ return{
amountSourceList:['财政资金','自筹资金','债券资金','投资资金','贷款资金','其他'],
nowedit:-1,//当前正在编辑的文本 nowedit:-1,//当前正在编辑的文本
id:this.detailId ? this.detailId : parseInt(this.$route.query.id), id:this.detailId ? this.detailId : parseInt(this.$route.query.id),
investmentAmount: '',//总投资额 investmentAmount: '',//总投资额
...@@ -336,6 +340,14 @@ ...@@ -336,6 +340,14 @@
} }
</script> </script>
<style scoped> <style scoped>
.baseinfo .row .con .inputxt22{
line-height: 36px;
margin-top: -5px;
display: inline-block;
width: 184px;
height: 28px;
border-radius: 2px;
cursor: pointer;
}
</style> </style>
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
</p> </p>
<p class="list-content-text"> <p class="list-content-text">
<span>成交金额:</span> <span>成交金额:</span>
<span v-if="textList.transactionPrice">{{textList.transactionPrice}}万元</span> <span v-if="textList.transactionPrice">{{textList.transactionPrice>0?textList.transactionPrice+'万元':'--'}}</span>
<span v-else>--</span> <span v-else>--</span>
</p> </p>
<p class="list-content-text"> <p class="list-content-text">
...@@ -169,9 +169,9 @@ ...@@ -169,9 +169,9 @@
</p> </p>
<p> <p>
<label class="label">起始价(万元)</label> <label class="label">起始价(万元)</label>
<span>{{textList.moneyBegin||"--"}}</span> <span>{{textList.moneyBegin>0?textList.moneyBegin:'--'}}</span>
<label class="label">竞买保证金(万元)</label> <label class="label">竞买保证金(万元)</label>
<span>{{textList.bondmoney||"--"}}</span> <span>{{textList.bondmoney>0?textList.bondmoney:'--'}}</span>
</p> </p>
<p> <p>
<label class="label">加价幅度</label> <label class="label">加价幅度</label>
...@@ -181,7 +181,7 @@ ...@@ -181,7 +181,7 @@
</p> </p>
<p> <p>
<label class="label">成交价(万元)</label> <label class="label">成交价(万元)</label>
<span>{{textList.transactionPrice||"--"}}</span> <span>{{textList.transactionPrice>0?textList.transactionPrice:'--'}}</span>
<label class="label">受让人</label> <label class="label">受让人</label>
<span>{{textList.company||"--"}}</span> <span>{{textList.company||"--"}}</span>
</p> </p>
......
...@@ -129,7 +129,7 @@ ...@@ -129,7 +129,7 @@
ct.credit_level creditLevel, count(ct.customer_id) customerCount ct.credit_level creditLevel, count(ct.customer_id) customerCount
from customer ct from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id join customer_user ctu on ct.customer_id = ctu.customer_id
where ctu.user_id = #{userId} and ct.credit_level is not null where ctu.status = 0 and ctu.user_id = #{userId} and ct.credit_level is not null
group by ct.credit_level group by ct.credit_level
) ct ) ct
left join sys_dict_data sdd on (sdd.dict_label = ct.creditLevel and sdd.dict_type = 'credit_level_type') left join sys_dict_data sdd on (sdd.dict_label = ct.creditLevel and sdd.dict_type = 'credit_level_type')
......
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