Commit b3864078 authored by lcl's avatar lcl

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

parents 6b464a19 cb9cd356
...@@ -92,3 +92,52 @@ export function exportBid(data) { ...@@ -92,3 +92,52 @@ export function exportBid(data) {
data: data data: data
}) })
} }
// 集团施工项目最新招标
export function recentlyBid(data) {
return request({
url: '/marketAnalysis/combine/recentlyBid',
method: 'post',
data: data
})
}
// 集团施工项目年度招标
export function bidByYear(data) {
return request({
url: '/marketAnalysis/combine/bidByYear',
method: 'post',
data: data
})
}
// 集团施工项目发包金额统计
export function groupByMoney(data) {
return request({
url: '/marketAnalysis/combine/groupByMoney',
method: 'post',
data: data
})
}
// 集团施工项目发包类型统计
export function groupByType(data) {
return request({
url: '/marketAnalysis/combine/groupByType',
method: 'post',
data: data
})
}
// 施工项目下浮率统计
export function groupByLowerRate(data) {
return request({
url: '/marketAnalysis/combine/groupByLowerRate',
method: 'post',
data: data
})
}
// 历史发包项目金额Top10
export function peojectTop(data) {
return request({
url: '/marketAnalysis/combine/peojectTop',
method: 'post',
data: data
})
}
...@@ -6,15 +6,23 @@ export function bidNoticePage(data) { ...@@ -6,15 +6,23 @@ export function bidNoticePage(data) {
url: '/enterpriseProject/bidNoticePage', url: '/enterpriseProject/bidNoticePage',
method: 'post', method: 'post',
data: data data: data
}) });
} }
// 招标公告招标类别 // 招标公告招标阶段
export function bidNoticeTenderStage(data) { export function bidNoticeTenderStage(data) {
return request({ return request({
url: '/enterpriseProject/bidNoticeTenderStage', url: '/enterpriseProject/bidNoticeTenderStage',
method: 'post', method: 'post',
data: data data: data
});
}
// 招标公告项目类别
export function bidNoticeProjectCategory(data) {
return request({
url: '/enterpriseProject/bidNoticeProjectCategory',
method: 'post',
data: data
}) })
} }
...@@ -24,7 +32,7 @@ export function bidNoticeArea(data) { ...@@ -24,7 +32,7 @@ export function bidNoticeArea(data) {
url: '/enterpriseProject/bidNoticeArea', url: '/enterpriseProject/bidNoticeArea',
method: 'post', method: 'post',
data: data data: data
}) });
} }
// 土地交易列表 // 土地交易列表
...@@ -33,7 +41,7 @@ export function landTransactionPage(data) { ...@@ -33,7 +41,7 @@ export function landTransactionPage(data) {
url: '/enterpriseProject/landTransactionPage', url: '/enterpriseProject/landTransactionPage',
method: 'post', method: 'post',
data: data data: data
}) });
} }
// 土地交易用途 // 土地交易用途
...@@ -42,7 +50,7 @@ export function landUse(data) { ...@@ -42,7 +50,7 @@ export function landUse(data) {
url: '/enterpriseProject/landUse', url: '/enterpriseProject/landUse',
method: 'post', method: 'post',
data: data data: data
}) });
} }
// 拟建项目列表 // 拟建项目列表
...@@ -51,7 +59,7 @@ export function approvalProjectPage(data) { ...@@ -51,7 +59,7 @@ export function approvalProjectPage(data) {
url: '/enterpriseProject/approvalProjectPage', url: '/enterpriseProject/approvalProjectPage',
method: 'post', method: 'post',
data: data data: data
}) });
} }
// 标讯PRO招标公告列表 // 标讯PRO招标公告列表
...@@ -60,7 +68,7 @@ export function bidNoticeProPage(data) { ...@@ -60,7 +68,7 @@ export function bidNoticeProPage(data) {
url: '/enterpriseProject/bidNoticeProPage', url: '/enterpriseProject/bidNoticeProPage',
method: 'post', method: 'post',
data: data data: data
}) });
} }
// 标讯PRO招标公告项目类别 // 标讯PRO招标公告项目类别
...@@ -69,7 +77,7 @@ export function bidNoticeProProjectType(data) { ...@@ -69,7 +77,7 @@ export function bidNoticeProProjectType(data) {
url: '/enterpriseProject/bidNoticeProProjectType', url: '/enterpriseProject/bidNoticeProProjectType',
method: 'post', method: 'post',
data: data data: data
}) });
} }
// 标讯PRO招标公告工程类别 // 标讯PRO招标公告工程类别
...@@ -78,7 +86,7 @@ export function bidNoticeProProjectPurposes(data) { ...@@ -78,7 +86,7 @@ export function bidNoticeProProjectPurposes(data) {
url: '/enterpriseProject/bidNoticeProProjectPurposes', url: '/enterpriseProject/bidNoticeProProjectPurposes',
method: 'post', method: 'post',
data: data data: data
}) });
} }
// 标讯PRO招标公告评标办法 // 标讯PRO招标公告评标办法
...@@ -87,7 +95,7 @@ export function bidNoticeProAssessmentWay(data) { ...@@ -87,7 +95,7 @@ export function bidNoticeProAssessmentWay(data) {
url: '/enterpriseProject/bidNoticeProAssessmentWay', url: '/enterpriseProject/bidNoticeProAssessmentWay',
method: 'post', method: 'post',
data: data data: data
}) });
} }
// 行政许可列表 // 行政许可列表
...@@ -96,7 +104,7 @@ export function creditXzxkPage(data) { ...@@ -96,7 +104,7 @@ export function creditXzxkPage(data) {
url: '/enterpriseProject/creditXzxkPage', url: '/enterpriseProject/creditXzxkPage',
method: 'post', method: 'post',
data: data data: data
}) });
} }
// 专项债项目列表 // 专项债项目列表
...@@ -105,7 +113,7 @@ export function specialDebtProjectPage(data) { ...@@ -105,7 +113,7 @@ export function specialDebtProjectPage(data) {
url: '/enterpriseProject/specialDebtProjectPage', url: '/enterpriseProject/specialDebtProjectPage',
method: 'post', method: 'post',
data: data data: data
}) });
} }
// 招标计划列表 // 招标计划列表
...@@ -114,7 +122,7 @@ export function bidPlanPage(data) { ...@@ -114,7 +122,7 @@ export function bidPlanPage(data) {
url: '/enterpriseProject/bidPlanPage', url: '/enterpriseProject/bidPlanPage',
method: 'post', method: 'post',
data: data data: data
}) });
} }
// 招标计划项目类型 // 招标计划项目类型
export function bidPlanProjectType(data) { export function bidPlanProjectType(data) {
...@@ -122,5 +130,12 @@ export function bidPlanProjectType(data) { ...@@ -122,5 +130,12 @@ export function bidPlanProjectType(data) {
url: '/enterpriseProject/bidPlanProjectType', url: '/enterpriseProject/bidPlanProjectType',
method: 'post', method: 'post',
data: data data: data
}) });
} }
// 企业重点项目列表
export const getMajorProjectListApi = (data) => request({
url: "/enterpriseProject/importantList",
method: "post",
data
});
\ No newline at end of file
...@@ -348,7 +348,7 @@ ul, li { ...@@ -348,7 +348,7 @@ ul, li {
//box-shadow:none; //box-shadow:none;
//-webkit-box-shadow: 2px 0px 1px -2px #C3CBD5; //-webkit-box-shadow: 2px 0px 1px -2px #C3CBD5;
box-shadow: 2px 0 8px -7px #202020; box-shadow: 2px 0 8px -7px #202020;
border-right: 1px solid #C3CBD5; //border-right: 1px solid #C3CBD5;
height: auto !important; height: auto !important;
bottom: 16px !important; bottom: 16px !important;
} }
......
...@@ -209,7 +209,7 @@ export const constantRoutes = [ ...@@ -209,7 +209,7 @@ export const constantRoutes = [
children: [ children: [
{ {
path: '/biddetail/:id(\\d+)', path: '/biddetail/:id(\\d+)',
component: () => import('@/views/detail//biddetail/index'), component: () => import('@/views/detail/biddetail/index'),
name: 'Biddetail', name: 'Biddetail',
meta: { title: '中标业绩详情',icon: 'enterprise'} meta: { title: '中标业绩详情',icon: 'enterprise'}
} }
......
...@@ -5,70 +5,288 @@ ...@@ -5,70 +5,288 @@
title="集团施工项目最新招标" title="集团施工项目最新招标"
:form-data="formData" :form-data="formData"
:query-params="queryParams" :query-params="queryParams"
@handle-search="handleSearch"
:slots="true" :slots="true"
:isExcel="false" :isExcel="false"
></head-form> ></head-form>
<span class="check">查看集团招标<i class="el-icon-arrow-right"></i></span>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="table-item" v-if="!isSkeleton">
<el-table class="fixed-table" :data="tableData" border max-height="235">
<el-table-column label="项目名称" prop="title" min-width="350">
<template slot-scope="scope">
<router-link :to="`/radar/Notice/details/${scope.row.bid}`" tag="a" class="a-link" v-if="scope.row.bid" v-html="scope.row.title"></router-link>
<div v-else v-html="scope.row.title || '--'"></div>
</template>
</el-table-column>
<el-table-column label="发布日期" prop="issueTime" width="100"></el-table-column>
<el-table-column label="招标成员" prop="tenderee" min-width="220">
<template slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.tendereeId)}`:`/company/${encodeStr(scope.row.tendereeId)}`" tag="a" class="a-link" v-if="scope.row.tendereeId&&scope.row.tenderee" v-html="scope.row.tenderee"></router-link>
<div v-else v-html="scope.row.tenderee || '--'"></div>
</template>
</el-table-column>
<el-table-column label="招标金额" prop="projectAmount" width="110">
<template slot-scope="scope">
{{scope.row.projectAmount ? scope.row.projectAmount : '0.00'}}{{scope.row.projectAmount ? '万元':''}}
</template>
</el-table-column>
<el-table-column label="项目类型" prop="projectCategory" width="110"></el-table-column>
<el-table-column label="代理单位" prop="agency" min-width="220">
<template slot-scope="scope">
<router-link :to="`/company/${encodeStr(scope.row.agencyId)}`" tag="a" class="a-link" v-if="scope.row.agencyId&&scope.row.agency" v-html="scope.row.agency"></router-link>
<div v-else v-html="scope.row.agency || '--'"></div>
</template>
</el-table-column>
</el-table>
</div>
<div class="empty" v-if="tableData.length === 0 && !isSkeleton">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div>
</div>
</div> </div>
<div class="content"> <div class="content">
<head-form <head-form
title="集团年度发包统计" title="集团施工项目年度招标"
:form-data="[]"
:query-params="{}"
:slots="true" :slots="true"
:isExcel="false" :isExcel="false"
></head-form> ></head-form>
<skeleton v-if="isSkeleton2" style="padding: 16px"></skeleton>
<el-row v-if="!isSkeleton2">
<el-col :span="12">
<div id="ndzb-echarts" style="height: 280px;"></div>
</el-col>
<el-col :span="12">
<div class="box-right">
<div class="table-item">
<el-table class="fixed-table" :data="ndzbList" border max-height="260">
<el-table-column label="年度" prop="type" min-width="70"></el-table-column>
<el-table-column label="历史发包数量" prop="count" width="120">
<template slot-scope="scope">
{{scope.row.count}}{{scope.row.count ? '个':''}}
</template>
</el-table-column>
<el-table-column label="历史发包总金额" prop="sum" width="140">
<template slot-scope="scope">
{{scope.row.sum ? scope.row.sum : '0.00'}}{{scope.row.sum ? '万元':''}}
</template>
</el-table-column>
<el-table-column label="发包金额最高成员" prop="companyName" min-width="200">
<template slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.companyId)}`:`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName" v-html="scope.row.companyName"></router-link>
<div v-else v-html="scope.row.companyName || '--'"></div>
</template>
</el-table-column>
</el-table>
</div>
</div>
</el-col>
</el-row>
</div> </div>
<div class="content"> <div class="content">
<head-form <head-form
title="集团施工项目发包金额区间" title="集团施工项目发包金额区间"
:form-data="[]"
:query-params="{}"
:slots="true" :slots="true"
:isExcel="false" :isExcel="false"
></head-form> ></head-form>
<div class="year">
<el-select
v-model="year1"
clearable
@change="changeSelect1"
class="form-content-width"
style="width: 80px">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value"/>
</el-select>
</div>
<skeleton v-if="isSkeleton3" style="padding: 16px"></skeleton>
<el-row v-if="!isSkeleton3">
<el-col :span="12">
<div id="fbje-echarts" style="height: 280px;"></div>
</el-col>
<el-col :span="12">
<div class="box-right">
<div class="table-item">
<el-table class="fixed-table" :data="jeqjList" border max-height="270">
<el-table-column label="历史发包金额" prop="rangeName" min-width="120"></el-table-column>
<el-table-column label="历史发包数量" prop="count">
<template slot-scope="scope">
{{scope.row.count}}{{scope.row.count ? '个':''}}
</template>
</el-table-column>
</el-table>
</div>
</div>
</el-col>
</el-row>
</div> </div>
<div class="content"> <div class="content">
<head-form <head-form
title="集团施工项目发包类型统计" title="集团施工项目发包类型统计"
:form-data="[]"
:query-params="{}"
:slots="true" :slots="true"
:isExcel="false" :isExcel="false"
></head-form> ></head-form>
<div class="year">
<el-select
v-model="year2"
clearable
@change="changeSelect2"
class="form-content-width"
style="width: 80px">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value"/>
</el-select>
</div>
<skeleton v-if="isSkeleton4" style="padding: 16px"></skeleton>
<el-row v-if="!isSkeleton4">
<el-col :span="12">
<div id="lxtj-echarts" style="height: 280px;"></div>
</el-col>
<el-col :span="12">
<div class="box-right">
<div class="table-item">
<el-table class="fixed-table" :data="lxtjList" border max-height="270">
<el-table-column label="项目类型" prop="type" min-width="70"></el-table-column>
<el-table-column label="发包数量" prop="count" width="120">
<template slot-scope="scope">
{{scope.row.count}}{{scope.row.count ? '个':''}}
</template>
</el-table-column>
<el-table-column label="发包总金额" prop="sum" width="140">
<template slot-scope="scope">
{{scope.row.sum ? scope.row.sum : '0.00'}}{{scope.row.sum ? '万元':''}}
</template>
</el-table-column>
<el-table-column label="发包金额最大成员" prop="companyName" min-width="200">
<template slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.companyId)}`:`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName" v-html="scope.row.companyName"></router-link>
<div v-else v-html="scope.row.companyName || '--'"></div>
</template>
</el-table-column>
</el-table>
</div>
</div>
</el-col>
</el-row>
</div> </div>
<div class="content"> <div class="content">
<head-form <head-form
title="施工项目下浮率统计" title="施工项目下浮率统计"
:form-data="[]"
:query-params="{}"
:slots="true" :slots="true"
:isExcel="false" :isExcel="false"
></head-form> ></head-form>
<div class="year">
<el-select
v-model="year3"
clearable
@change="changeSelect3"
class="form-content-width"
style="width: 80px">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value"/>
</el-select>
</div>
<skeleton v-if="isSkeleton5" style="padding: 16px"></skeleton>
<el-row v-if="!isSkeleton5">
<el-col :span="12">
<div id="xfl-echarts" style="height: 280px;"></div>
</el-col>
<el-col :span="12">
<div class="box-right">
<div class="table-item">
<el-table class="fixed-table" :data="xflList" border max-height="270">
<el-table-column label="项目类型" prop="type" min-width="120"></el-table-column>
<el-table-column label="下浮率区间" prop="lowerRate"></el-table-column>
</el-table>
</div>
</div>
</el-col>
</el-row>
</div> </div>
<div class="content"> <div class="content">
<head-form <head-form
title="历史发包项目金额TOP10" title="历史发包项目金额TOP10"
:form-data="formData" :form-data="formData"
:query-params="queryParams1" :query-params="queryParams1"
@handle-search="handleSearch1"
:slots="true" :slots="true"
:isExcel="false" :isExcel="false"
></head-form> ></head-form>
<skeleton v-if="isSkeleton6" style="padding: 16px"></skeleton>
<div class="table-item" v-if="!isSkeleton6">
<el-table class="fixed-table" :data="peojectTopData" border max-height="235">
<el-table-column label="项目名称" prop="projectName" min-width="350">
<template slot-scope="scope">
<router-link :to="`/biddetail/${item.id}`" tag="a" class="a-link" v-if="scope.row.bid" v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div>
</template>
</el-table-column>
<el-table-column label="中标日期" prop="winBidTime" width="100"></el-table-column>
<el-table-column label="中标金额" prop="winBidAmount" width="130">
<template slot-scope="scope">
{{scope.row.winBidAmount ? scope.row.winBidAmount : '0.00'}}{{scope.row.winBidAmount ? '万元':''}}
</template>
</el-table-column>
<el-table-column label="项目类型" prop="projectTypeNew" width="100"></el-table-column>
<el-table-column label="招标成员" prop="projectUnit" min-width="250">
<template slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.projectUnitId)}`:`/company/${encodeStr(scope.row.projectUnitId)}`" tag="a" class="a-link" v-if="scope.row.projectUnitId&&scope.row.projectUnit" v-html="scope.row.projectUnit"></router-link>
<div v-else v-html="scope.row.projectUnit || '--'"></div>
</template>
</el-table-column>
<el-table-column label="中标单位" prop="companyName" min-width="250">
<template slot-scope="scope">
<router-link :to="`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName" v-html="scope.row.companyName"></router-link>
<div v-else v-html="scope.row.companyName || '--'"></div>
</template>
</el-table-column>
<el-table-column label="代理单位" prop="agency" min-width="250">
<template slot-scope="scope">
<router-link :to="`/company/${encodeStr(scope.row.agencyId)}`" tag="a" class="a-link" v-if="scope.row.agencyId&&scope.row.agency" v-html="scope.row.agency"></router-link>
<div v-else v-html="scope.row.agency || '--'"></div>
</template>
</el-table-column>
</el-table>
</div>
<div class="empty" v-if="peojectTopData.length === 0 && !isSkeleton6">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div>
</div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import * as echarts from 'echarts';
import mixin from '../../party-a/mixins/mixin' import mixin from '../../party-a/mixins/mixin'
import {recentlyBid,bidByYear,groupByMoney,groupByType,groupByLowerRate,peojectTop} from '@/api/detail/groupAccount/groupAccount'
import { getDictType } from '@/api/main' import { getDictType } from '@/api/main'
export default { export default {
name: 'qualifications', name: 'qualifications',
props: ['customerId','combineName'], props: ['customerId'],
mixins: [mixin], mixins: [mixin],
components:{}, components:{},
data(){ data(){
return{ return{
queryParams: {}, queryParams: {
queryParams1: {}, combineId: this.customerId,
forData: [ year:'2023'
{label: '项目类型', prop: 'projectType',minWidth: '80',slot: true}, },
{label: '持股比例', prop: 'stockPercent',slot: true,minWidth: '80'}, queryParams1: {
], combineId: this.customerId,
year:'2023'
},
formData: [ formData: [
{ type: 4, fieldName: 'projectTypes', value: '', placeholder: '项目类型', options: [],width:150}, { type: 4, fieldName: 'type', value: '', placeholder: '项目类型', options: [],width:150},
{ type: 1, fieldName: 'cgbl', value: '', placeholder: '持股比例', options: [],width:110}, { type: 1, fieldName: 'cgbl', value: '', placeholder: '持股比例', options: [],width:110},
{ type: 1, fieldName: 'year', value: '2023', placeholder: '年份', options: [],width:80},
], ],
cgblList: [ cgblList: [
{name:'100%',value:'100%'}, {name:'100%',value:'100%'},
...@@ -77,10 +295,27 @@ ...@@ -77,10 +295,27 @@
{name:'5%以上',value:'5%以上'}, {name:'5%以上',value:'5%以上'},
{name:'1%-5%',value:'1%-5%'}, {name:'1%-5%',value:'1%-5%'},
], ],
tableData:[],
lxtjList:[],
jeqjList:[],
xflList:[],
peojectTopData:[],
ndzbList:[],
yearOptions:[],
year1:'2023',
year2:'2023',
year3:'2023',
isSkeleton:true,
isSkeleton2:true,
isSkeleton3:true,
isSkeleton4:true,
isSkeleton5:true,
isSkeleton6:true,
} }
}, },
created() { created() {
this.formData[1].options=this.cgblList; this.formData[1].options=this.cgblList;
this.yearsData()
//项目类型 //项目类型
getDictType('project_type_new').then(result=>{ getDictType('project_type_new').then(result=>{
let data = result.code == 200 ? result.data:[]; let data = result.code == 200 ? result.data:[];
...@@ -93,21 +328,632 @@ ...@@ -93,21 +328,632 @@
} }
} }
}) })
this.handleQuery()
this.getBidByYear()
this.getGroupByMoney()
this.getGroupByType()
this.getGroupByLowerRate()
this.getPeojectTop()
}, },
methods: { methods: {
yearsData(){
let mydate=new Date();
let Year = mydate.getFullYear();
let startyear=mydate.getFullYear()-4;
let Years=[];
for(var i=startyear;i<=Year;i++){
Years.push({
name: i,
value: i,
})
}
this.yearOptions=Years.reverse()
this.formData[2].options=Years
},
handleQuery(params){
// this.isSkeleton = true
let data = params || this.queryParams;
if(data.cgbl){
if(data.cgbl === '100%'){
data.minStockPercent=1
}
if(data.cgbl === '50%以上'){
data.minStockPercent=0.5
}
if(data.cgbl === '20%以上'){
data.minStockPercent=0.2
}
if(data.cgbl === '5%以上'){
data.minStockPercent=0.05
}
if(data.cgbl === '1%-5%'){
data.minStockPercent=0.01
data.maxStockPercent=0.05
}
delete data.cgbl
}
if(data.year){
data.year=[data.year.toString()]
}
delete data.pageNum
recentlyBid(data).then(res=>{
this.isSkeleton = false
if(res.code === 200){
this.tableData = res.data;
}else {
this.tableData = []
}
})
},
getBidByYear(){
bidByYear({combineId:this.customerId}).then(res=>{
this.isSkeleton2 = false
if(res.code === 200){
this.ndzbList=res.data;
if(res.data.length > 0){
this.initChart(res.data)
}
}
})
},
getGroupByMoney(){
let year=[this.year1.toString()]
groupByMoney({combineId:this.customerId,year:year}).then(res=>{
this.isSkeleton3 = false
if(res.code === 200){
this.jeqjList=res.data;
var list=[];
for(var i=0;i<res.data.length;i++){
var obj={};
obj.name=res.data[i].rangeName;
obj.value=res.data[i].count;
list.push(obj)
}
if(res.data.length > 0){
this.initChart2(list)
}
}
})
},
getGroupByType(){
let year=[this.year2.toString()]
groupByType({combineId:this.customerId,year:year}).then(res=>{
this.isSkeleton4 = false
if(res.code === 200){
this.lxtjList=res.data;
if(res.data.length > 0){
this.initChart3(res.data)
}
}
})
},
getGroupByLowerRate(){
let year=[this.year3.toString()]
groupByLowerRate({combineId:this.customerId,year:year}).then(res=>{
this.isSkeleton5 = false
if(res.code === 200){
this.xflList=res.data;
if(res.data.length > 0){
this.initChart4(res.data)
}
}
})
},
getPeojectTop(params){
let data = params || this.queryParams1;
if(data.cgbl){
if(data.cgbl === '100%'){
data.minStockPercent=1
}
if(data.cgbl === '50%以上'){
data.minStockPercent=0.5
}
if(data.cgbl === '20%以上'){
data.minStockPercent=0.2
}
if(data.cgbl === '5%以上'){
data.minStockPercent=0.05
}
if(data.cgbl === '1%-5%'){
data.minStockPercent=0.01
data.maxStockPercent=0.05
}
delete data.cgbl
}
if(data.year){
data.year=[data.year.toString()]
}
delete data.pageNum
peojectTop(data).then(res=>{
this.isSkeleton6 = false
if(res.code === 200){
this.peojectTopData = res.data;
}else {
this.peojectTopData = []
}
})
},
handleSearch1(){
let params = this.formParams()
this.getPeojectTop(params)
},
changeSelect1(){
this.getGroupByMoney()
},
changeSelect2(){
this.getGroupByType()
},
changeSelect3(){
this.getGroupByLowerRate()
},
initChart(data) {
this.$nextTick(()=>{
let myChart = echarts.init(document.getElementById("ndzb-echarts"))
let option ={
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross'
}
},
xAxis: {
type: 'category',
axisLabel: { //坐标轴刻度标签的相关设置
margin: 15, //刻度标签与轴线之间的距离
color:"#666666"
},
axisTick: false, //坐标轴刻度
axisPointer: {
type: 'shadow'
},
data: data.map(item => item.type),
},
yAxis: [
{
type: 'value',
axisLabel: { //坐标轴刻度标签的相关设置
color:"#666666"
},
nameLocation: 'end',
nameTextStyle: {
padding: [0, 10, 0, -60], // 四个数字分别为上右下左与原位置距离
color: '#666666',
}
},
{
type: 'value',
axisLabel: { //坐标轴刻度标签的相关设置
color:"#666666"
},
nameLocation: 'end',
nameTextStyle: {
padding: [0, 0, 0, 100], // 四个数字分别为上右下左与原位置距离
color: '#666666',
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: ['#FFFFFF']
}
}
}
],
grid: {
top:30,
left:80,
right:130,
bottom:30,
},
series: [
{
name:'招标金额(万元)',
smooth: false, //平滑
type:"line",
symbolSize: 6,
yAxisIndex: 1,
tooltip: {
valueFormatter: function (value) {
return value + '万元'
}
},
itemStyle: {
normal:{
color: '#14C9C9',
lineStyle: {
width:2
},
}
},
data:data.map(item => item.sum),
},
{
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.count),
}
]
}
myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();//图表跟随页面大小变化宽度
});
})
},
initChart2(data) {
this.$nextTick(() => {
let myChart = echarts.init(document.getElementById("fbje-echarts"))
let option ={
tooltip: {
trigger: 'item',
borderWidth:0,
backgroundColor:"rgba(255, 255, 255, 0.8)",
formatter: function (params) {
var result = ''
result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;">'+ params.data.name +'</p>'
result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;">'+ params.data.value +'个</p>'
return result;
},
extraCssText:'width:96px!important;',
},
legend: {
type: 'scroll',
orient: 'horizontal',
bottom: 0,
data: data,
itemHeight:8,
itemWidth:12,
pageButtonPosition: 'end',
},
color:['#6395F9', '#6ADCAE', '#6D7E9C','#F7C42D','#F78F2D'],
series: [
{
type: 'pie',
radius: '55%',
center: ['50%', '50%'],
data: data,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
}
myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();//图表跟随页面大小变化宽度
});
})
},
initChart3(data) {
this.$nextTick(()=>{
let myChart = echarts.init(document.getElementById("lxtj-echarts"))
let option ={
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross'
}
},
xAxis: {
type: 'category',
axisLabel: { //坐标轴刻度标签的相关设置
margin: 15, //刻度标签与轴线之间的距离
color:"#666666"
},
axisTick: false, //坐标轴刻度
axisPointer: {
type: 'shadow'
},
data: data.map(item => item.type),
},
yAxis: [
{
type: 'value',
axisLabel: { //坐标轴刻度标签的相关设置
color:"#666666"
},
nameLocation: 'end',
nameTextStyle: {
padding: [0, 10, 0, -60], // 四个数字分别为上右下左与原位置距离
color: '#666666',
}
},
{
type: 'value',
axisLabel: { //坐标轴刻度标签的相关设置
color:"#666666"
},
nameLocation: 'end',
nameTextStyle: {
padding: [0, 0, 0, 100], // 四个数字分别为上右下左与原位置距离
color: '#666666',
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: ['#FFFFFF']
}
}
}
],
grid: {
top:30,
left:80,
right:130,
bottom:30,
},
series: [
{
name:'招标金额(万元)',
smooth: false, //平滑
type:"line",
symbolSize: 6,
yAxisIndex: 1,
tooltip: {
valueFormatter: function (value) {
return value + '万元'
}
},
itemStyle: {
normal:{
color: '#14C9C9',
lineStyle: {
width:2
},
}
},
data:data.map(item => item.sum),
},
{
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.count),
}
]
}
myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();//图表跟随页面大小变化宽度
});
})
},
initChart4(data) {
this.$nextTick(()=>{
let myChart = echarts.init(document.getElementById("xfl-echarts"))
let option ={
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross'
}
},
xAxis: {
type: 'category',
axisLabel: { //坐标轴刻度标签的相关设置
margin: 15, //刻度标签与轴线之间的距离
color:"#666666"
},
axisTick: false, //坐标轴刻度
axisPointer: {
type: 'shadow'
},
data: data.map(item => item.type),
},
yAxis: [
{
type: 'value',
axisLabel: { //坐标轴刻度标签的相关设置
color:"#666666"
},
nameLocation: 'end',
nameTextStyle: {
padding: [0, 10, 0, -60], // 四个数字分别为上右下左与原位置距离
color: '#666666',
}
},
{
type: 'value',
axisLabel: { //坐标轴刻度标签的相关设置
color:"#666666"
},
nameLocation: 'end',
nameTextStyle: {
padding: [0, 0, 0, 100], // 四个数字分别为上右下左与原位置距离
color: '#666666',
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: ['#FFFFFF']
}
}
}
],
grid: {
top:30,
left:80,
right:130,
bottom:30,
},
series: [
{
name:'下浮率区间',
smooth: false, //平滑
type:"line",
symbolSize: 6,
yAxisIndex: 1,
// tooltip: {
// valueFormatter: function (value) {
// return value + '万元'
// }
// },
itemStyle: {
normal:{
color: '#14C9C9',
lineStyle: {
width:2
},
}
},
data:data.map(item => item.lowerRate),
},
{
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.count),
}
]
}
myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();//图表跟随页面大小变化宽度
});
})
},
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.performance{ .performance{
height: calc(100% - 64px); /*height: calc(100% - 64px);*/
.content{ .content{
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
margin-bottom: 16px; margin-bottom: 16px;
min-height: 360px;
position: relative;
.check{
position: absolute;
right: 16px;
top:53px;
color: #0081FF;
font-size: 12px;
cursor: pointer;
i{
margin-left: 4px;
}
}
.year{
position: absolute;
right: 16px;
top:8px;
::v-deep .form-content-width{
.el-input__inner{
border: 0;
height: 30px;
line-height: 30px;
padding:5px 28px 5px 8px;
}
.el-input__icon{
line-height: 30px;
}
}
}
.table-item{
::v-deep .el-table{
.has-gutter{
tr{
th:nth-last-child(2){
border-right:0;
}
td:nth-last-child(2){
border-right:0;
}
}
}
.el-table__cell.gutter{
background: #F0F3FA;
}
.el-table__row{
td:last-child{
.cell{
padding-right: 12px !important;
}
}
}
}
}
.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;
}
}
} }
} }
</style> </style>
...@@ -103,7 +103,7 @@ ...@@ -103,7 +103,7 @@
import { getDictType } from '@/api/main' import { getDictType } from '@/api/main'
export default { export default {
name: 'qualifications', name: 'qualifications',
props: ['customerId','combineName'], props: ['customerId'],
mixins: [mixin], mixins: [mixin],
components:{CustomTimeSelect,CustomMoneySelect}, components:{CustomTimeSelect,CustomMoneySelect},
data(){ data(){
......
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
</el-tabs> </el-tabs>
</div> </div>
</div> </div>
<Zbxmfx v-if="activeName === 'first'"></Zbxmfx> <Zbxmfx v-if="activeName === 'first'" :customer-id="id"></Zbxmfx>
<Zbxmmx v-if="activeName === 'second'"></Zbxmmx> <Zbxmmx v-if="activeName === 'second'" :customer-id="id"></Zbxmmx>
</div> </div>
</template> </template>
...@@ -18,10 +18,12 @@ ...@@ -18,10 +18,12 @@
import Zbxmmx from './zbxmmx' import Zbxmmx from './zbxmmx'
export default { export default {
name: 'qualifications', name: 'qualifications',
props: ['customerId'],
components:{Zbxmfx,Zbxmmx}, components:{Zbxmfx,Zbxmmx},
data(){ data(){
return{ return{
activeName: 'first' activeName: 'first',
id:this.customerId
} }
}, },
created() { created() {
...@@ -37,7 +39,7 @@ ...@@ -37,7 +39,7 @@
<style lang="scss" scoped> <style lang="scss" scoped>
.zhaobiao{ .zhaobiao{
height: 100%; /*height: 100%;*/
background: #F5F5F5; background: #F5F5F5;
.header{ .header{
justify-content: space-between; justify-content: space-between;
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<slot name="slot"></slot> <slot name="slot"></slot>
</template> </template>
<div v-else class="flex-box"> <div v-else class="flex-box">
<span class="flex-box ability-total" v-if="isTotal">共{{ total }}条</span> <span class="flex-box ability-total" v-if="isTotal">{{ total }}条</span>
<span class="flex-box ability-excel" v-hasPermi="['combine:info:export:win:bid']" v-if="isExcel && title ==='集团业绩'" @click="clickEXCEL"><img <span class="flex-box ability-excel" v-hasPermi="['combine:info:export:win:bid']" v-if="isExcel && title ==='集团业绩'" @click="clickEXCEL"><img
src="@/assets/images/ability_excel.png">导出EXCEL</span> src="@/assets/images/ability_excel.png">导出EXCEL</span>
<span class="flex-box ability-excel" v-else @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span> <span class="flex-box ability-excel" v-else @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
...@@ -157,7 +157,7 @@ ...@@ -157,7 +157,7 @@
<slot name="slot"></slot> <slot name="slot"></slot>
</template> </template>
<div v-else class="flex-box"> <div v-else class="flex-box">
<span class="flex-box ability-total" v-if="isTotal">共{{ total }}条</span> <span class="flex-box ability-total" v-if="isTotal">{{ total }}条</span>
<span class="flex-box ability-excel" v-hasPermi="['combine:info:export:win:bid']" v-if="isExcel && title ==='集团业绩'" @click="clickEXCEL"><img <span class="flex-box ability-excel" v-hasPermi="['combine:info:export:win:bid']" v-if="isExcel && title ==='集团业绩'" @click="clickEXCEL"><img
src="@/assets/images/ability_excel.png">导出EXCEL</span> src="@/assets/images/ability_excel.png">导出EXCEL</span>
<span class="flex-box ability-excel" v-else @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span> <span class="flex-box ability-excel" v-else @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
...@@ -450,7 +450,7 @@ export default { ...@@ -450,7 +450,7 @@ export default {
height: 32px; height: 32px;
position: absolute; position: absolute;
top: 0; top: 0;
padding-right: 22px; padding-right: 28px;
font-size: 12px; font-size: 12px;
padding-left: 8px; padding-left: 8px;
} }
......
<template> <template>
<div id="detailPart" class="sides-container" :style="sideHeight?'height:'+sideHeight+'px':''"> <div id="detailPart" class="sides-container" :style="sideHeight?'height:'+sideHeight+'px':''">
<el-input <el-input placeholder="搜索" class="side-input" v-model="searchText" clearable @input="handleSearch(true)" @keyup.enter.native="handleSearch()">
placeholder="搜索"
class="side-input"
v-model="searchText"
clearable
@input="handleSearch(true)"
@keyup.enter.native="handleSearch()">
<i slot="prefix" class="el-input__icon el-icon-search" @click="handleSearch()"></i> <i slot="prefix" class="el-input__icon el-icon-search" @click="handleSearch()"></i>
</el-input> </el-input>
<el-menu <el-menu ref="sideMenu" :unique-opened="true" :default-active="searchIndex?searchIndex:routeIndex" class="detail-menu" @open="handleOpen">
ref="sideMenu"
:unique-opened="true"
:default-active="searchIndex?searchIndex:routeIndex"
class="detail-menu"
@open="handleOpen">
<template v-for="(item, index) in sideRoute"> <template v-for="(item, index) in sideRoute">
<el-submenu :index="index.toString()" v-if="item.children" :disabled="!isCompanyId(item.title) || (item.title=='项目商机'&&statisticObj.business.landInfo<1&&statisticObj.business.busProposedProjectV1<1&&statisticObj.performance.specialDebt<1&&statisticObj.performance.bidPlan<1&&statisticObj.business.biddingAnnouncement<1&&statisticObj.business.proBiddingAnnouncement<1&&statisticObj.business.adminLicensing<1)"> <el-submenu :index="index.toString()" v-if="item.children"
:disabled="!isCompanyId(item.title) || (item.title=='项目商机'&&statisticObj.business.landInfo<1&&statisticObj.business.busProposedProjectV1<1&&statisticObj.performance.specialDebt<1&&statisticObj.performance.bidPlan<1&&statisticObj.business.biddingAnnouncement<1&&statisticObj.business.proBiddingAnnouncement<1&&statisticObj.business.adminLicensing<1)">
<template slot="title"> <template slot="title">
<span>{{item.title}}</span> <span>{{item.title}}</span>
</template> </template>
<el-menu-item :index="index+'-'+idx" v-for="(it, idx) in item.children" :key="idx" @click="handleItem(it)" :disabled="it.disabled">{{it.title}}</el-menu-item> <el-menu-item :index="index+'-'+idx" v-for="(it, idx) in item.children" :key="idx" @click="handleItem(it)"
:disabled="it.disabled">{{it.title}}</el-menu-item>
</el-submenu> </el-submenu>
<template v-else> <template v-else>
<el-menu-item :index="index.toString()" @click="handleItem(item)" :disabled="!isCompanyId(item.title) || item.disabled" v-if="isCustomerId(item.pathName)">{{item.title}}</el-menu-item> <el-menu-item :index="index.toString()" @click="handleItem(item)" :disabled="!isCompanyId(item.title) || item.disabled"
v-if="isCustomerId(item.pathName)">{{item.title}}</el-menu-item>
</template> </template>
</template> </template>
</el-menu> </el-menu>
...@@ -31,7 +23,7 @@ ...@@ -31,7 +23,7 @@
</template> </template>
<script> <script>
import { financial } from '@/api/detail/party-a/financial' import { financial } from '@/api/detail/party-a/financial';
export default { export default {
name: 'Sidebar', name: 'Sidebar',
props: { props: {
...@@ -51,8 +43,8 @@ export default { ...@@ -51,8 +43,8 @@ export default {
type: Boolean, type: Boolean,
default: true default: true
}, },
statisticObj:{ statisticObj: {
type:Object, type: Object,
default: {} default: {}
}, },
isCustomer: { isCustomer: {
...@@ -64,108 +56,130 @@ export default { ...@@ -64,108 +56,130 @@ export default {
return { return {
searchText: '', searchText: '',
sideRoute: [ sideRoute: [
{title: '企业概要', pathName: '', children: [ {
{title: '企业速览', pathName: 'overview'}, title: '企业概要', pathName: '', children: [
{title: '工商信息', pathName: 'businfo'}, { title: '企业速览', pathName: 'overview' },
{title: '股东信息', pathName: 'holderinfo'}, { title: '工商信息', pathName: 'businfo' },
{title: '高管信息', pathName: 'execuinfo'}, { title: '股东信息', pathName: 'holderinfo' },
{title: '对外投资', pathName: 'overseas'}, { title: '高管信息', pathName: 'execuinfo' },
{title: '分支机构', pathName: 'branch'} { title: '对外投资', pathName: 'overseas' },
]}, { title: '分支机构', pathName: 'branch' }
{title: '财务简析', pathName: 'financial'}, ]
{title: '项目商机', pathName: '', children: [ },
{title: '土地交易', pathName: 'landtransaction'}, { title: '财务简析', pathName: 'financial' },
{title: '拟建项目', pathName: 'proposed'}, {
{title: '专项债项目', pathName: 'bond'}, title: '项目商机', pathName: '', children: [
{title: '招标计划', pathName: 'biddingplan'}, { title: '重点项目', pathName: 'majorProject' },
{title: '招标公告', pathName: 'announcement'}, { title: '土地交易', pathName: 'landtransaction' },
{title: '标讯Pro', pathName: 'tencent'}, { title: '拟建项目', pathName: 'proposed' },
{title: '行政许可', pathName: 'administrative'} { title: '专项债项目', pathName: 'bond' },
]}, { title: '招标计划', pathName: 'biddingplan' },
{title: '业务往来', pathName: '', children: [ { title: '招标公告', pathName: 'announcement' },
{title: '客户', pathName: 'custom'}, { title: '标讯Pro', pathName: 'tencent' },
{title: '供应商', pathName: 'supplier'}, { title: '行政许可', pathName: 'administrative' }
{title: '招标代理', pathName: 'bidagency'}, ]
{title: '历史发包', pathName: 'hiscontract'}, },
{title: '开标记录', pathName: 'bidrecords'} {
]}, title: '业务往来', pathName: '', children: [
{title: '城投分析', pathName: '', children: [ { title: '客户', pathName: 'custom' },
{title: '区域经济', pathName: 'regionalEconomies'}, { title: '供应商', pathName: 'supplier' },
{title: '城投拿地', pathName: 'landAcquisition'}, { title: '招标代理', pathName: 'bidagency' },
{title: '同地区城投', pathName: 'sameRegion'} { title: '历史发包', pathName: 'hiscontract' },
]}, { title: '开标记录', pathName: 'bidrecords' }
{title: '风险信息', pathName: '', children: [ ]
{title: '行政处罚', pathName: 'punish'}, },
{title: '经营异常', pathName: 'businessAnomaly'}, {
{title: '被执行人', pathName: 'ifThePerson'}, title: '城投分析', pathName: '', children: [
{title: '失信被执行人', pathName: 'dishonesty'}, { title: '区域经济', pathName: 'regionalEconomies' },
{title: '裁判文书', pathName: 'judgment'}, { title: '城投拿地', pathName: 'landAcquisition' },
{title: '法院公告', pathName: 'courtNotice'}, { title: '同地区城投', pathName: 'sameRegion' }
{title: '开庭公告', pathName: 'openacourtsessionNotice'}, ]
// {title: '信用中国', pathName: ''} },
]}, {
{title: '商务信息', pathName: 'business'}, title: '风险信息', pathName: '', children: [
{title: '招标偏好', pathName: 'preference'}, { title: '行政处罚', pathName: 'punish' },
{title: '合作情况', pathName: 'cooperate'}, { title: '经营异常', pathName: 'businessAnomaly' },
{title: '联系人', pathName: 'decisionMaking'}, { title: '被执行人', pathName: 'ifThePerson' },
{title: '跟进记录', pathName: 'gjjl'} { title: '失信被执行人', pathName: 'dishonesty' },
{ title: '裁判文书', pathName: 'judgment' },
{ title: '法院公告', pathName: 'courtNotice' },
{ title: '开庭公告', pathName: 'openacourtsessionNotice' },
// {title: '信用中国', pathName: ''}
]
},
{ title: '商务信息', pathName: 'business' },
{ title: '招标偏好', pathName: 'preference' },
{ title: '合作情况', pathName: 'cooperate' },
{ title: '联系人', pathName: 'decisionMaking' },
{ title: '跟进记录', pathName: 'gjjl' }
], ],
sideRoute1: [ sideRoute1: [
{title: '企业概要', pathName: '', children: [ {
{title: '企业速览', pathName: 'overview'}, title: '企业概要', pathName: '', children: [
{title: '工商信息', pathName: 'businfo'}, { title: '企业速览', pathName: 'overview' },
{title: '股东信息', pathName: 'holderinfo'}, { title: '工商信息', pathName: 'businfo' },
{title: '高管信息', pathName: 'execuinfo'}, { title: '股东信息', pathName: 'holderinfo' },
{title: '对外投资', pathName: 'overseas'}, { title: '高管信息', pathName: 'execuinfo' },
{title: '分支机构', pathName: 'branch'} { title: '对外投资', pathName: 'overseas' },
]}, { title: '分支机构', pathName: 'branch' }
{title: '财务简析', pathName: 'financial'}, ]
{title: '项目商机', pathName: '', children: [ },
{title: '土地交易', pathName: 'landtransaction'}, { title: '财务简析', pathName: 'financial' },
{title: '拟建项目', pathName: 'proposed'}, {
{title: '专项债项目', pathName: 'bond'}, title: '项目商机', pathName: '', children: [
{title: '招标计划', pathName: 'biddingplan'}, { title: '重点项目', pathName: 'majorProject' },
{title: '招标公告', pathName: 'announcement'}, { title: '土地交易', pathName: 'landtransaction' },
{title: '标讯Pro', pathName: 'tencent'}, { title: '拟建项目', pathName: 'proposed' },
{title: '行政许可', pathName: 'administrative'} { title: '专项债项目', pathName: 'bond' },
]}, { title: '招标计划', pathName: 'biddingplan' },
{title: '业务往来', pathName: '', children: [ { title: '招标公告', pathName: 'announcement' },
{title: '客户', pathName: 'custom'}, { title: '标讯Pro', pathName: 'tencent' },
{title: '供应商', pathName: 'supplier'}, { title: '行政许可', pathName: 'administrative' }
{title: '招标代理', pathName: 'bidagency'}, ]
{title: '历史发包', pathName: 'hiscontract'}, },
{title: '开标记录', pathName: 'bidrecords'} {
]}, title: '业务往来', pathName: '', children: [
{title: '城投分析', pathName: '', children: [ { title: '客户', pathName: 'custom' },
{title: '区域经济', pathName: 'regionalEconomies'}, { title: '供应商', pathName: 'supplier' },
{title: '城投拿地', pathName: 'landAcquisition'}, { title: '招标代理', pathName: 'bidagency' },
{title: '同地区城投', pathName: 'sameRegion'} { title: '历史发包', pathName: 'hiscontract' },
]}, { title: '开标记录', pathName: 'bidrecords' }
{title: '风险信息', pathName: '', children: [ ]
{title: '行政处罚', pathName: 'punish'}, },
{title: '经营异常', pathName: 'businessAnomaly'}, {
{title: '被执行人', pathName: 'ifThePerson'}, title: '城投分析', pathName: '', children: [
{title: '失信被执行人', pathName: 'dishonesty'}, { title: '区域经济', pathName: 'regionalEconomies' },
{title: '裁判文书', pathName: 'judgment'}, { title: '城投拿地', pathName: 'landAcquisition' },
{title: '法院公告', pathName: 'courtNotice'}, { title: '同地区城投', pathName: 'sameRegion' }
{title: '开庭公告', pathName: 'openacourtsessionNotice'}, ]
// {title: '信用中国', pathName: ''} },
]}, {
{title: '商务信息', pathName: 'business'}, title: '风险信息', pathName: '', children: [
{title: '招标偏好', pathName: 'preference'}, { title: '行政处罚', pathName: 'punish' },
{title: '合作情况', pathName: 'cooperate'}, { title: '经营异常', pathName: 'businessAnomaly' },
{title: '联系人', pathName: 'decisionMaking'}, { title: '被执行人', pathName: 'ifThePerson' },
{title: '跟进记录', pathName: 'gjjl'} { title: '失信被执行人', pathName: 'dishonesty' },
{ title: '裁判文书', pathName: 'judgment' },
{ title: '法院公告', pathName: 'courtNotice' },
{ title: '开庭公告', pathName: 'openacourtsessionNotice' },
// {title: '信用中国', pathName: ''}
]
},
{ title: '商务信息', pathName: 'business' },
{ title: '招标偏好', pathName: 'preference' },
{ title: '合作情况', pathName: 'cooperate' },
{ title: '联系人', pathName: 'decisionMaking' },
{ title: '跟进记录', pathName: 'gjjl' }
], ],
defaultRoute: [], defaultRoute: [],
customer:[ customer: [
'business', 'business',
'preference', 'preference',
'cooperate', 'cooperate',
'decisionMaking', 'decisionMaking',
'gjjl' 'gjjl'
], ],
companys:[ companys: [
'企业概要', '企业概要',
'财务简析', '财务简析',
'项目商机', '项目商机',
...@@ -173,323 +187,330 @@ export default { ...@@ -173,323 +187,330 @@ export default {
'城投分析', '城投分析',
'风险信息', '风险信息',
], ],
uniqueOpened:false, uniqueOpened: false,
searchIndex: '' searchIndex: ''
} };
}, },
computed: { computed: {
sideHeight() { sideHeight() {
let sideHeight = document.getElementById("detailPart")?document.getElementById("detailPart").offsetHeight:null, bowerHeight = document.body.clientHeight-170 || null let sideHeight = document.getElementById("detailPart") ? document.getElementById("detailPart").offsetHeight : null, bowerHeight = document.body.clientHeight - 170 || null;
if(this.partBoxHeight<bowerHeight) { if (this.partBoxHeight < bowerHeight) {
sideHeight = bowerHeight sideHeight = bowerHeight;
}else{ } else {
sideHeight = '1222'/*this.partBoxHeight*/ sideHeight = '1222';/*this.partBoxHeight*/
} }
return sideHeight return sideHeight;
}, },
routeIndex(){ routeIndex() {
let idx = this.getRouteIdx('', this.pathName) || '0-0' let idx = this.getRouteIdx('', this.pathName) || '0-0';
return idx return idx;
} }
}, },
created() { created() {
this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute)) this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute));
}, },
watch:{ watch: {
statisticObj:{ statisticObj: {
handler(val) { handler(val) {
this.sideRoute = JSON.parse(JSON.stringify(this.defaultRoute)) this.sideRoute = JSON.parse(JSON.stringify(this.defaultRoute));
let arr = JSON.parse(JSON.stringify(val)) let arr = JSON.parse(JSON.stringify(val));
for(var i in arr){ for (var i in arr) {
for(var j in arr[i]){ for (var j in arr[i]) {
switch (j) { switch (j) {
case 'ownershipStructure': case 'ownershipStructure':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[0].children[2].disabled = true; this.sideRoute[0].children[2].disabled = true;
} }
break; break;
case 'leadingMember': case 'leadingMember':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[0].children[3].disabled = true; this.sideRoute[0].children[3].disabled = true;
} }
break; break;
case 'outboundInvestment': case 'outboundInvestment':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[0].children[4].disabled = true; this.sideRoute[0].children[4].disabled = true;
} }
break; break;
case 'branch': case 'branch':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[0].children[5].disabled = true; this.sideRoute[0].children[5].disabled = true;
} }
break; break;
case 'landInfo': case 'landInfo':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[2].children[0].disabled = true; this.sideRoute[2].children[0].disabled = true;
this.sideRoute[4].children[1].disabled = true; this.sideRoute[4].children[1].disabled = true;
} }
break; break;
case 'busProposedProjectV1': case 'busProposedProjectV1':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[2].children[1].disabled = true; this.sideRoute[2].children[1].disabled = true;
} }
break; break;
case 'specialDebt': case 'specialDebt':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[2].children[2].disabled = true; this.sideRoute[2].children[2].disabled = true;
} }
break; break;
case 'bidPlan': case 'bidPlan':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[2].children[3].disabled = true; this.sideRoute[2].children[3].disabled = true;
} }
break; break;
case 'biddingAnnouncement': case 'biddingAnnouncement':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[2].children[4].disabled = true; this.sideRoute[2].children[4].disabled = true;
} }
break; break;
case 'proBiddingAnnouncement': case 'proBiddingAnnouncement':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[2].children[5].disabled = true; this.sideRoute[2].children[5].disabled = true;
} }
break; break;
case 'adminLicensing': case 'adminLicensing':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[2].children[6].disabled = true; this.sideRoute[2].children[6].disabled = true;
} }
break; break;
case 'customer': case 'customer':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[3].children[0].disabled = true; this.sideRoute[3].children[0].disabled = true;
} }
break; break;
case 'supplier': case 'supplier':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[3].children[1].disabled = true; this.sideRoute[3].children[1].disabled = true;
} }
break; break;
case 'coopBiddingAgency': case 'coopBiddingAgency':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[3].children[2].disabled = true; this.sideRoute[3].children[2].disabled = true;
} }
break; break;
case 'historySend': case 'historySend':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[3].children[3].disabled = true; this.sideRoute[3].children[3].disabled = true;
} }
break; break;
case 'tenderRecordV1': case 'tenderRecordV1':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[3].children[4].disabled = true; this.sideRoute[3].children[4].disabled = true;
} }
break; break;
case 'adminSanction': case 'adminSanction':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[5].children[0].disabled = true; this.sideRoute[5].children[0].disabled = true;
} }
break; break;
case 'abnormalOperation': case 'abnormalOperation':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[5].children[1].disabled = true; this.sideRoute[5].children[1].disabled = true;
} }
break; break;
case 'dishonestExecutee': case 'dishonestExecutee':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[5].children[2].disabled = true; this.sideRoute[5].children[2].disabled = true;
} }
break; break;
case 'dishonestExecutor': case 'dishonestExecutor':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[5].children[3].disabled = true; this.sideRoute[5].children[3].disabled = true;
} }
break; break;
case 'adjudicativeDoc': case 'adjudicativeDoc':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[5].children[4].disabled = true; this.sideRoute[5].children[4].disabled = true;
} }
break; break;
case 'courtAnnouncement': case 'courtAnnouncement':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[5].children[5].disabled = true; this.sideRoute[5].children[5].disabled = true;
} }
break; break;
case 'openAnnouncement': case 'openAnnouncement':
if(arr[i][j]<1){ if (arr[i][j] < 1) {
this.sideRoute[5].children[6].disabled = true; this.sideRoute[5].children[6].disabled = true;
} }
break; break;
default: default:
break; break;
}
} }
} }
this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute))
} }
}, this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute));
}
}, },
methods: { },
financial(id){ methods: {
financial({cid:String(id)}).then(res=>{ financial(id) {
if(res.code==200&&!res.data){ financial({ cid: String(id) }).then(res => {
this.sideRoute[1].disabled = true if (res.code == 200 && !res.data) {
this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute)) this.sideRoute[1].disabled = true;
} this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute));
}) }
}, });
handleOpen(key, keyPath) { },
handleOpen(key, keyPath) {
}, },
handleItem(item){ handleItem(item) {
let obj = item let obj = item;
for(var i in this.sideRoute1){ for (var i in this.sideRoute1) {
if(this.sideRoute1[i].children){ if (this.sideRoute1[i].children) {
for(var j in this.sideRoute1[i].children){ for (var j in this.sideRoute1[i].children) {
if(item.title == this.sideRoute1[i].children[j].title){ if (item.title == this.sideRoute1[i].children[j].title) {
console.log(this.sideRoute1[i].children[j]) console.log(this.sideRoute1[i].children[j]);
obj.pathName = this.sideRoute1[i].children[j].pathName obj.pathName = this.sideRoute1[i].children[j].pathName;
}
}
}else{
if(item.title == this.sideRoute1[i].title){
obj.pathName = this.sideRoute1[i].pathName
} }
} }
} else {
if (item.title == this.sideRoute1[i].title) {
obj.pathName = this.sideRoute1[i].pathName;
}
} }
this.$emit("currentPath", obj) }
}, this.$emit("currentPath", obj);
handleSearch(flag){ },
if((this.searchText&&!flag) || (!this.searchText&&flag)){ handleSearch(flag) {
let idx = this.getRouteIdx(this.searchText) if ((this.searchText && !flag) || (!this.searchText && flag)) {
if(idx){ let idx = this.getRouteIdx(this.searchText);
if(idx.includes('-')){ if (idx) {
let openIdx = idx.slice(0, 1) if (idx.includes('-')) {
this.sideRoute = [this.defaultRoute[openIdx]] let openIdx = idx.slice(0, 1);
this.$refs.sideMenu.open(openIdx) this.sideRoute = [this.defaultRoute[openIdx]];
}else{ this.$refs.sideMenu.open(openIdx);
this.sideRoute = [this.defaultRoute[idx]] } else {
} this.sideRoute = [this.defaultRoute[idx]];
this.searchIndex = '-1'
}else{
this.sideRoute = this.defaultRoute
this.searchIndex = ''
} }
this.searchIndex = '-1';
} else {
this.sideRoute = this.defaultRoute;
this.searchIndex = '';
} }
}, }
getRouteIdx(pathTitle, pathName){ },
let idx = '', sideArr = this.sideRoute==this.defaultRoute?this.sideRoute:this.defaultRoute getRouteIdx(pathTitle, pathName) {
for(let i=0; i < sideArr.length; i++){ let idx = '', sideArr = this.sideRoute == this.defaultRoute ? this.sideRoute : this.defaultRoute;
if(sideArr[i].title == pathTitle || sideArr[i].pathName == pathName){ for (let i = 0; i < sideArr.length; i++) {
idx = i.toString() if (sideArr[i].title == pathTitle || sideArr[i].pathName == pathName) {
break idx = i.toString();
}else if(sideArr[i].children){ break;
for(let j=0; j< sideArr[i].children.length ; j++){ } else if (sideArr[i].children) {
if(sideArr[i].children[j].title == pathTitle || sideArr[i].children[j].pathName == pathName){ for (let j = 0; j < sideArr[i].children.length; j++) {
idx = i+'-'+j if (sideArr[i].children[j].title == pathTitle || sideArr[i].children[j].pathName == pathName) {
break idx = i + '-' + j;
} break;
} }
} }
} }
return idx }
}, return idx;
isCustomerId(name){ },
if(this.customer.indexOf(name) != -1){ isCustomerId(name) {
if(this.customerId && this.isCustomer){ if (this.customer.indexOf(name) != -1) {
return true if (this.customerId && this.isCustomer) {
} return true;
return false
} }
return true return false;
}, }
isCompanyId(name){ return true;
if(this.companys.indexOf(name) != -1){ },
if(this.isCompany){ isCompanyId(name) {
return true if (this.companys.indexOf(name) != -1) {
} if (this.isCompany) {
return false return true;
} }
return true return false;
} }
return true;
} }
} }
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
#app{ #app {
.sides-container{ .sides-container {
width: 144px; width: 144px;
min-height: calc(100vh - 170px); min-height: calc(100vh - 170px);
padding-bottom: 20px; padding-bottom: 20px;
background: #FFFFFF; background: #ffffff;
border-radius: 4px; border-radius: 4px;
.side-input{ .side-input {
width: 128px; width: 128px;
margin-top: 16px; margin-top: 16px;
margin-left: 8px; margin-left: 8px;
border: 0;
::v-deep .el-input__inner {
height: 32px;
background: #f3f3f4;
border-radius: 20px;
border: 0; border: 0;
::v-deep .el-input__inner{ &::placeholder {
height: 32px; color: #3d3d3d;
background: #F3F3F4;
border-radius: 20px;
border: 0;
&::placeholder {
color: #3D3D3D;
}
}
.el-icon-search{
line-height: 34px;
color: #0081FF;
cursor: pointer;
} }
} }
.detail-menu{ .el-icon-search {
margin-top: 20px; line-height: 34px;
border-right: 0; color: #0081ff;
::v-deep .el-menu-item, ::v-deep .el-submenu__title{ cursor: pointer;
height: 30px; }
line-height: 30px; }
font-size: 14px; .detail-menu {
margin-top: 20px;
border-right: 0;
::v-deep .el-menu-item,
::v-deep .el-submenu__title {
height: 30px;
line-height: 30px;
font-size: 14px;
color: #232323;
padding: 0 0 0 16px !important;
text-align: initial !important;
&:hover,
&:focus,
&.is-active {
color: #0081ff !important;
background: linear-gradient(
91deg,
rgba(0, 129, 255, 0.1) 0%,
rgba(0, 129, 255, 0) 100%
);
}
.el-submenu__icon-arrow {
color: #232323; color: #232323;
padding: 0 0 0 16px !important; right: 48px;
text-align: initial !important; margin-top: -5px;
&:hover, &:focus, &.is-active{
color: #0081FF !important;
background: linear-gradient(91deg, rgba(0,129,255,0.1) 0%, rgba(0,129,255,0) 100%);;
}
.el-submenu__icon-arrow{
color: #232323;
right: 48px;
margin-top: -5px;
}
} }
.is-disabled:hover{ }
color: rgba(35, 35, 35, 0.8)!important; .is-disabled:hover {
&:before { color: rgba(35, 35, 35, 0.8) !important;
color: rgba(35, 35, 35, 0.8)!important; &:before {
} color: rgba(35, 35, 35, 0.8) !important;
} }
::v-deep .el-submenu .el-menu-item{ }
font-size: 12px; ::v-deep .el-submenu .el-menu-item {
color: rgba(35,35,35,0.8); font-size: 12px;
padding: 0 0 0 27px !important; color: rgba(35, 35, 35, 0.8);
min-width: 144px !important; padding: 0 0 0 27px !important;
position: relative; min-width: 144px !important;
&:before { position: relative;
content: ""; &:before {
position: absolute; content: "";
top: 14px; position: absolute;
left: 21px; top: 14px;
width: 2px; left: 21px;
height: 2px; width: 2px;
background: #0081FF; height: 2px;
border-radius: 50%; background: #0081ff;
} border-radius: 50%;
} }
} }
} }
} }
}
</style> </style>
...@@ -160,7 +160,7 @@ export default { ...@@ -160,7 +160,7 @@ export default {
this.$emit('sort-change',e) this.$emit('sort-change',e)
}, },
flexWidth(tableData) { flexWidth(tableData) {
let currentMax = this.queryParams.pageNum*this.queryParams.pageSize - this.queryParams.pageSize + tableData.length, wdth = 55 let currentMax = this.queryParams.pageNum*this.queryParams.pageSize - this.queryParams.pageSize + tableData.length, wdth = 59
// return currentMax.toString().length*25 + 'px' // return currentMax.toString().length*25 + 'px'
if(currentMax.toString().length>3){ if(currentMax.toString().length>3){
wdth = wdth + (currentMax.toString().length-3)*10 wdth = wdth + (currentMax.toString().length-3)*10
......
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
<Header :company-id="companyId" :companyInfo="companyInfo" :cooDetail="cooDetail" v-if="companyId" @close-detail="closeDetail" /> <Header :company-id="companyId" :companyInfo="companyInfo" :cooDetail="cooDetail" v-if="companyId" @close-detail="closeDetail" />
<div class="flex-box part-main"> <div class="flex-box part-main">
<div class="part-left"> <div class="part-left">
<side-bar :statisticObj="statisticObj" ref="sidebar" @currentPath="showPartPage" :pathName="currentPath.pathName" :partBoxHeight="partBoxHeight" :customerId="customerId" :isCompany="isCompany" :isCustomer="isCustomer" /> <side-bar :statisticObj="statisticObj" ref="sidebar" @currentPath="showPartPage" :pathName="currentPath.pathName"
:partBoxHeight="partBoxHeight" :customerId="customerId" :isCompany="isCompany" :isCustomer="isCustomer" />
</div> </div>
<div class="part-right"> <div class="part-right">
<div id="partBox" v-if="companyId"> <div id="partBox" v-if="companyId">
...@@ -17,6 +18,7 @@ ...@@ -17,6 +18,7 @@
<Branch v-if="currentPath.pathName=='branch'" :company-id="companyId" /> <Branch v-if="currentPath.pathName=='branch'" :company-id="companyId" />
<Financial v-if="currentPath.pathName=='financial'" :company-id="companyId" /> <Financial v-if="currentPath.pathName=='financial'" :company-id="companyId" />
<!-- 项目商机 --> <!-- 项目商机 -->
<major-project v-if="currentPath.pathName=='majorProject'" :company-id="companyId"></major-project>
<Landtransaction v-if="currentPath.pathName=='landtransaction'" :company-id="companyId" /> <Landtransaction v-if="currentPath.pathName=='landtransaction'" :company-id="companyId" />
<Proposed v-if="currentPath.pathName=='proposed'" :company-id="companyId" /> <Proposed v-if="currentPath.pathName=='proposed'" :company-id="companyId" />
<Bond v-if="currentPath.pathName=='bond'" :company-id="companyId" /> <Bond v-if="currentPath.pathName=='bond'" :company-id="companyId" />
...@@ -49,9 +51,11 @@ ...@@ -49,9 +51,11 @@
<!-- 招标偏好 --> <!-- 招标偏好 -->
<Preference v-if="currentPath.pathName=='preference'" :customer-ids="customerId" :customerInfo="customerInfo" /> <Preference v-if="currentPath.pathName=='preference'" :customer-ids="customerId" :customerInfo="customerInfo" />
<!-- 合作情况 --> <!-- 合作情况 -->
<Cooperate v-if="currentPath.pathName=='cooperate'" :customer-ids="customerId" :companyInfo="companyInfo" :cooDetail="cooDetail" :customerInfo="customerInfo" @detail="cooperateDetail" /> <Cooperate v-if="currentPath.pathName=='cooperate'" :customer-ids="customerId" :companyInfo="companyInfo" :cooDetail="cooDetail"
:customerInfo="customerInfo" @detail="cooperateDetail" />
<!-- 决策链条 --> <!-- 决策链条 -->
<DecisionMaking v-if="currentPath.pathName=='decisionMaking'" :customer-ids="customerId" :companyInfo="companyInfo" :customerInfo="customerInfo" /> <DecisionMaking v-if="currentPath.pathName=='decisionMaking'" :customer-ids="customerId" :companyInfo="companyInfo"
:customerInfo="customerInfo" />
<!-- 跟进记录 --> <!-- 跟进记录 -->
<Gjjl v-if="currentPath.pathName=='gjjl'" :isDisabled='false' types="gjdt" :customer-ids="customerId" /> <Gjjl v-if="currentPath.pathName=='gjjl'" :isDisabled='false' types="gjdt" :customer-ids="customerId" />
</template> </template>
...@@ -63,50 +67,51 @@ ...@@ -63,50 +67,51 @@
</template> </template>
<script> <script>
import { idRemark } from '@/api/common' import { idRemark } from '@/api/common';
import { infoHeader,statistic } from '@/api/detail/party-a/index' import { infoHeader, statistic } from '@/api/detail/party-a/index';
import { customerInfo } from '@/api/detail/party-a/cooperate' import { customerInfo } from '@/api/detail/party-a/cooperate';
import elementResizeDetectorMaker from "element-resize-detector" import elementResizeDetectorMaker from "element-resize-detector";
import Header from "./component/Header" import Header from "./component/Header";
import SideBar from "./component/Sidebar" import SideBar from "./component/Sidebar";
import Overview from "./overview/overview" //企业概览-企业速览 import Overview from "./overview/overview"; //企业概览-企业速览
import Businfo from "./overview/businfo" //企业概览-工商信息 import Businfo from "./overview/businfo"; //企业概览-工商信息
import Holderinfo from "./overview/holderinfo" //企业概览-股东信息 import Holderinfo from "./overview/holderinfo"; //企业概览-股东信息
import Execuinfo from "./overview/execuinfo" //企业概览-高管信息 import Execuinfo from "./overview/execuinfo"; //企业概览-高管信息
import Overseas from "./overview/overseas" //企业概览-对外投资 import Overseas from "./overview/overseas"; //企业概览-对外投资
import Branch from "./overview/branch" //企业概览-分支机构 import Branch from "./overview/branch"; //企业概览-分支机构
import Financial from "./financial" //财务简析 import Financial from "./financial"; //财务简析
//import Business from "./business" //商务信息 //import Business from "./business" //商务信息
import Landtransaction from "./opport/landtransaction" //项目商机-土地交易 import MajorProject from "./opport/MajorProject.vue"; //项目商机-重点项目
import Proposed from "./opport/proposed" //项目商机-拟建项目 import Landtransaction from "./opport/landtransaction"; //项目商机-土地交易
import Bond from "./opport/bond" //项目商机-专项债项目 import Proposed from "./opport/proposed"; //项目商机-拟建项目
import Biddingplan from "./opport/biddingplan" //项目商机-招标计划 import Bond from "./opport/bond"; //项目商机-专项债项目
import Announcement from "./opport/announcement" //项目商机-招标公告 import Biddingplan from "./opport/biddingplan"; //项目商机-招标计划
import Tencent from "./opport/tencent" //项目商机-标讯Pro import Announcement from "./opport/announcement"; //项目商机-招标公告
import Administrative from "./opport/administrative" //项目商机-行政许可 import Tencent from "./opport/tencent"; //项目商机-标讯Pro
import Custom from "./dealings/custom" //业务往来-客户 import Administrative from "./opport/administrative"; //项目商机-行政许可
import Supplier from "./dealings/supplier" //业务往来-供应商 import Custom from "./dealings/custom"; //业务往来-客户
import Bidagency from "./dealings/bidagency" //业务往来-招标代理 import Supplier from "./dealings/supplier"; //业务往来-供应商
import Hiscontract from "./dealings/hiscontract" //业务往来-历史发包 import Bidagency from "./dealings/bidagency"; //业务往来-招标代理
import Bidrecords from "./dealings/bidrecords" //业务往来-开标记录 import Hiscontract from "./dealings/hiscontract"; //业务往来-历史发包
import LandAcquisition from "./urbanLnvestment/landAcquisition" //投诚分析-城投拿地 import Bidrecords from "./dealings/bidrecords"; //业务往来-开标记录
import RegionalEconomies from "./urbanLnvestment/regionalEconomies" //投诚分析-区域经济 import LandAcquisition from "./urbanLnvestment/landAcquisition"; //投诚分析-城投拿地
import SameRegion from "./urbanLnvestment/sameRegion" //投诚分析-同地区城投 import RegionalEconomies from "./urbanLnvestment/regionalEconomies"; //投诚分析-区域经济
import Punish from "./riskInformation/punish" //风险信息-行政处罚 import SameRegion from "./urbanLnvestment/sameRegion"; //投诚分析-同地区城投
import BusinessAnomaly from "./riskInformation/businessAnomaly" //风险信息-经营异常 import Punish from "./riskInformation/punish"; //风险信息-行政处罚
import IfThePerson from "./riskInformation/ifThePerson" //风险信息-被执行人 import BusinessAnomaly from "./riskInformation/businessAnomaly"; //风险信息-经营异常
import Dishonesty from "./riskInformation/dishonesty" //风险信息-失信被执行 import IfThePerson from "./riskInformation/ifThePerson"; //风险信息-被执行人
import Judgment from "./riskInformation/judgment" //风险信息-判决文书 import Dishonesty from "./riskInformation/dishonesty"; //风险信息-失信被执行
import CourtNotice from "./riskInformation/courtNotice" //风险信息-法院公告 import Judgment from "./riskInformation/judgment"; //风险信息-判决文书
import OpenacourtsessionNotice from "./riskInformation/openacourtsessionNotice" //风险信息-开庭公告 import CourtNotice from "./riskInformation/courtNotice"; //风险信息-法院公告
import Business from "./business" //商务信息 import OpenacourtsessionNotice from "./riskInformation/openacourtsessionNotice"; //风险信息-开庭公告
import Preference from "./preference" //招标偏好 import Business from "./business"; //商务信息
import Cooperate from "./cooperate" //合作情况 import Preference from "./preference"; //招标偏好
import DecisionMaking from "./decisionMaking" //决策链条 import Cooperate from "./cooperate"; //合作情况
import Gjjl from "../../project/projectList/component/gjjl" //跟进记录 import DecisionMaking from "./decisionMaking"; //决策链条
import Gjjl from "../../project/projectList/component/gjjl"; //跟进记录
import { import {
urbanInvestmentPage, urbanInvestmentPage,
} from '@/api/detail/party-a/urbanLnvestment' } from '@/api/detail/party-a/urbanLnvestment';
export default { export default {
name: 'PartyA', name: 'PartyA',
components: { components: {
...@@ -120,6 +125,7 @@ export default { ...@@ -120,6 +125,7 @@ export default {
Branch, Branch,
Financial, Financial,
// Business, // Business,
MajorProject,
Landtransaction, Landtransaction,
Proposed, Proposed,
Bond, Bond,
...@@ -150,7 +156,7 @@ export default { ...@@ -150,7 +156,7 @@ export default {
}, },
data() { data() {
return { return {
isSkeleton:true, isSkeleton: true,
companyInfo: {}, companyInfo: {},
customerInfo: {}, customerInfo: {},
companyId: '', //企业Id(测试默认3068) companyId: '', //企业Id(测试默认3068)
...@@ -160,57 +166,57 @@ export default { ...@@ -160,57 +166,57 @@ export default {
currentPath: { currentPath: {
pathName: 'overview' //默认展示页 pathName: 'overview' //默认展示页
}, },
statisticObj:{}, statisticObj: {},
partBoxHeight: null, partBoxHeight: null,
cooDetail: false cooDetail: false
} };
}, },
computed: { computed: {
routes() { routes() {
return this.$store.state.permission.routes return this.$store.state.permission.routes;
} }
}, },
watch: { watch: {
'$route'(to, from) { '$route'(to, from) {
if(to.name == 'PartyA' && to.query.customerId){ if (to.name == 'PartyA' && to.query.customerId) {
if (to.query.customerId && to.query.path == 'business' || to.query.path == 'gjjl') { if (to.query.customerId && to.query.path == 'business' || to.query.path == 'gjjl') {
if (this.companyId == 0) { if (this.companyId == 0) {
customerInfo(to.query.customerId).then(res => { customerInfo(to.query.customerId).then(res => {
if (res.code == 200) { if (res.code == 200) {
if (res.data.userId == this.$store.state.user.userId) { if (res.data.userId == this.$store.state.user.userId) {
this.$nextTick(() => { this.$nextTick(() => {
this.customerInfo = res.data this.customerInfo = res.data;
this.customerId = res.data.customerId this.customerId = res.data.customerId;
this.isCustomer = true this.isCustomer = true;
this.isCompany = false this.isCompany = false;
this.currentPath.pathName = this.$route.query.path || 'business' this.currentPath.pathName = this.$route.query.path || 'business';
this.companyInfo = { this.companyInfo = {
companyName: this.customerInfo.companyName companyName: this.customerInfo.companyName
} };
document.getElementById('tagTitle').innerText = this.customerInfo.companyName document.getElementById('tagTitle').innerText = this.customerInfo.companyName;
// let lists = this.$store.state.tagsView.visitedViews // let lists = this.$store.state.tagsView.visitedViews
// lists.forEach(item=>{ // lists.forEach(item=>{
// if(item.fullPath == this.$route.fullPath){ // if(item.fullPath == this.$route.fullPath){
let titlename = document.getElementById('tagTitles') let titlename = document.getElementById('tagTitles');
if(titlename){ if (titlename) {
titlename.innerText = this.customerInfo.companyName titlename.innerText = this.customerInfo.companyName;
} }
// } // }
// }) // })
}) });
} }
} }
}) });
} }
if (to.query.customerId == this.customerId && to.query.path) { if (to.query.customerId == this.customerId && to.query.path) {
this.currentPath.pathName = to.query.path this.currentPath.pathName = to.query.path;
} }
} }
}else{ } else {
if(from.name == 'PartyA' && !from.query.customerId){ if (from.name == 'PartyA' && !from.query.customerId) {
this.$nextTick(() => { this.$nextTick(() => {
this.isCompany = true this.isCompany = true;
}) });
} }
} }
} }
...@@ -218,149 +224,151 @@ export default { ...@@ -218,149 +224,151 @@ export default {
beforeRouteLeave(to, from, next) { beforeRouteLeave(to, from, next) {
next(vm => { next(vm => {
}) });
}, },
beforeRouteEnter(to, from, next){ beforeRouteEnter(to, from, next) {
next(vm => { next(vm => {
}) });
}, },
created() { created() {
if (this.$route.params.id) { // 获取companyId if (this.$route.params.id) { // 获取companyId
let companyId = this.$route.params.id let companyId = this.$route.params.id;
this.getCompanyId(companyId) this.getCompanyId(companyId);
} }
if (this.$route.query.path) { // 获取跳转对应板块 if (this.$route.query.path) { // 获取跳转对应板块
this.currentPath.pathName = this.$route.query.path this.currentPath.pathName = this.$route.query.path;
} }
}, },
mounted(){ mounted() {
}, },
methods: { methods: {
showPartPage(e){ showPartPage(e) {
this.currentPath = e this.currentPath = e;
}, },
// 解密 // 解密
async getCompanyId(companyId){ async getCompanyId(companyId) {
let { data } = await idRemark({mark:companyId}) let { data } = await idRemark({ mark: companyId });
if( data ){ if (data) {
this.companyId = data this.companyId = data;
this.$nextTick(() => { this.$nextTick(() => {
this.listenSider() this.listenSider();
}) });
this.getStatistic(); this.getStatistic();
this.handleQuery(); this.handleQuery();
this.association(this.$route.query.customerId) this.association(this.$route.query.customerId);
this.$refs.sidebar.financial(data); this.$refs.sidebar.financial(data);
} }
}, },
async getStatistic(){ async getStatistic() {
let res = await statistic({companyId:this.companyId}); let res = await statistic({ companyId: this.companyId });
if(res.code==200){ if (res.code == 200) {
this.statisticObj = res.data this.statisticObj = res.data;
} }
}, },
async handleQuery() { async handleQuery() {
this.isSkeleton = true; this.isSkeleton = true;
let res = await infoHeader({companyId:this.companyId}) let res = await infoHeader({ companyId: this.companyId });
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.companyInfo = res.data || {} this.companyInfo = res.data || {};
let data = { let data = {
pageNum: 1, pageNum: 1,
pageSize: 5, pageSize: 5,
provinceIds: [this.companyInfo.provinceId], provinceIds: [this.companyInfo.provinceId],
cityIds: [this.companyInfo.cityId], cityIds: [this.companyInfo.cityId],
} };
urbanInvestmentPage(data).then(res => { urbanInvestmentPage(data).then(res => {
if(res.data.totalCount<1){ if(res.code==200){
let arr = JSON.parse(JSON.stringify(this.$refs.sidebar.sideRoute)) if(res.data.totalCount<1){
arr[4].children[2].disabled = true; let arr = JSON.parse(JSON.stringify(this.$refs.sidebar.sideRoute))
this.$refs.sidebar.sideRoute = arr arr[4].children[2].disabled = true;
this.$refs.sidebar.sideRoute = arr
}
} }
}) });
if(this.companyInfo && this.companyInfo.companyName){ if (this.companyInfo && this.companyInfo.companyName) {
this.$nextTick(()=>{ this.$nextTick(() => {
document.getElementById('tagTitle').innerText = this.companyInfo.companyName document.getElementById('tagTitle').innerText = this.companyInfo.companyName;
// let lists = this.$store.state.tagsView.visitedViews // let lists = this.$store.state.tagsView.visitedViews
// lists.forEach(item=>{ // lists.forEach(item=>{
// if(item.fullPath == this.$route.fullPath){ // if(item.fullPath == this.$route.fullPath){
let titlename = document.getElementById('tagTitles') let titlename = document.getElementById('tagTitles');
if(titlename){ if (titlename) {
titlename.innerText = this.companyInfo.companyName titlename.innerText = this.companyInfo.companyName;
} }
// } // }
// }) // })
}) });
} }
} }
}, },
listenSider(){ listenSider() {
const _this = this, erd = elementResizeDetectorMaker(), partBox = document.getElementById("partBox") const _this = this, erd = elementResizeDetectorMaker(), partBox = document.getElementById("partBox");
erd.listenTo(partBox, element => { erd.listenTo(partBox, element => {
_this.partBoxHeight = partBox.offsetHeight _this.partBoxHeight = partBox.offsetHeight;
}) });
}, },
cooperateDetail(){ cooperateDetail() {
this.cooDetail = true this.cooDetail = true;
}, },
closeDetail(){ closeDetail() {
this.cooDetail = false this.cooDetail = false;
}, },
// 判断客户是否关联显示修改 // 判断客户是否关联显示修改
association(id){ association(id) {
if(id) { if (id) {
customerInfo(id).then(res => { customerInfo(id).then(res => {
if (res.code == 200) { if (res.code == 200) {
if (res.data.userId == this.$store.state.user.userId) { if (res.data.userId == this.$store.state.user.userId) {
this.$nextTick(() => { this.$nextTick(() => {
this.customerInfo = res.data this.customerInfo = res.data;
this.customerId = res.data.customerId this.customerId = res.data.customerId;
}) });
if(res.data.companyId == this.companyId){ if (res.data.companyId == this.companyId) {
this.$nextTick(() => { this.$nextTick(() => {
this.isCustomer = true this.isCustomer = true;
this.isCompany = true this.isCompany = true;
}) });
}else{ } else {
this.$nextTick(() => { this.$nextTick(() => {
this.isCustomer = true this.isCustomer = true;
this.isCompany = false this.isCompany = false;
this.currentPath.pathName = this.$route.query.path || 'business' this.currentPath.pathName = this.$route.query.path || 'business';
this.companyInfo = { this.companyInfo = {
companyName: this.customerInfo.companyName companyName: this.customerInfo.companyName
} };
document.getElementById('tagTitle').innerText = this.customerInfo.companyName document.getElementById('tagTitle').innerText = this.customerInfo.companyName;
// let lists = this.$store.state.tagsView.visitedViews // let lists = this.$store.state.tagsView.visitedViews
// lists.forEach(item=>{ // lists.forEach(item=>{
// if(item.fullPath == this.$route.fullPath){ // if(item.fullPath == this.$route.fullPath){
let titlename = document.getElementById('tagTitles') let titlename = document.getElementById('tagTitles');
if(titlename){ if (titlename) {
titlename.innerText = this.customerInfo.companyName titlename.innerText = this.customerInfo.companyName;
} }
// } // }
// }) // })
}) });
} }
} else { } else {
this.$nextTick(() => { this.$nextTick(() => {
this.isCustomer = true this.isCustomer = true;
this.isCompany = true this.isCompany = true;
this.currentPath.pathName = 'overview' this.currentPath.pathName = 'overview';
}) });
} }
} }
}).catch(err => { }).catch(err => {
this.$nextTick(() => { this.$nextTick(() => {
this.currentPath.pathName = 'overview' this.currentPath.pathName = 'overview';
this.isCompany = true this.isCompany = true;
}) });
}) });
}else{ } else {
this.$nextTick(() => { this.$nextTick(() => {
this.isCompany = true this.isCompany = true;
this.currentPath.pathName = 'overview' this.currentPath.pathName = 'overview';
}) });
} }
}, },
...@@ -369,20 +377,20 @@ export default { ...@@ -369,20 +377,20 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.part-container{ .part-container {
padding: 0; padding: 0;
} }
.part-main{ .part-main {
margin-top: 12px; margin-top: 12px;
align-items: initial; align-items: initial;
} }
.part-left{ .part-left {
margin-right: 16px; margin-right: 16px;
} }
.part-right{ .part-right {
min-width: 1088px; min-width: 1088px;
width: 100%; width: 100%;
background: #FFFFFF; background: #ffffff;
border-radius: 4px; border-radius: 4px;
} }
</style> </style>
<template>
<div class="detail-container major-project">
<head-form-new title="重点项目" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="false"
@handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables v-else :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal" :queryParams="queryParams"
@handle-current-change="handleCurrentChange" @sort-change="sortChange">
<template slot="projectName" slot-scope="scope">
<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="totalInvestment" slot-scope="scope">
<div style="text-align:right;">
{{scope.row.totalInvestment ? `${scope.row.totalInvestment}万元` : "--"}}
</div>
</template>
</tables>
</div>
</template>
<script>
import mixin from '../mixins/mixin';
import { getMajorProjectListApi } from '@/api/detail/party-a/opport';
import skeleton from '@/views/project/projectList/component/skeleton';
export default {
name: 'majorProject',
props: ['companyId'],
mixins: [mixin],
components: {
skeleton
},
data() {
return {
isSkeleton: true,
queryParams: {
cid: this.companyId,
pageNum: 1,
pageSize: 20
},
forData: [
{ label: '项目名称', prop: 'projectName', minWidth: '450', slot: true },
{ label: '项目地区', prop: 'projectAddress', width: '127' },
{ label: '项目等级', prop: 'projectLevel', width: '90' },
{ label: '项目投资金额', prop: 'totalInvestment', width: '120', slot: true },
{ label: '项目类型', prop: 'projectType', width: '120' },
{ label: '项目年度', prop: 'year', width: '90' },
],
formData: [
{ type: 1, fieldName: 'projectLevel', value: '', placeholder: '项目级别', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'projectType', value: '', placeholder: '项目类型', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220, uid: this.getUid() }
],
//列表
tableLoading: false,
tableData: [],
tableDataTotal: 0
};
},
computed: {
},
created() {
this.setProjectLevelOptions();
this.setProjectTypeOptions();
this.handleQuery();
},
methods: {
async setProjectLevelOptions() {
try {
const result = await this.getDicts("project_level");
if (result.code == 200) {
const levels = result.data.map(item => {
return {
name: item.dictLabel,
value: item.dictValue,
id: item.dictCode
};
});
this.setFormData("projectLevel", levels);
}
} catch (error) {
}
},
async setProjectTypeOptions() {
try {
const result = await this.getDicts("project_type_new");
if (result.code == 200) {
const types = result.data.map(item => {
return {
name: item.dictLabel,
value: item.dictValue,
id: item.dictCode
};
});
this.setFormData("projectType", types);
}
} catch (error) {
}
},
async handleQuery(params) {
this.tableLoading = true;
let param = params ? params : this.queryParams;
let res = await getMajorProjectListApi(param);
this.tableLoading = false;
if (res.code == 200) {
this.isSkeleton = false;
this.tableData = res.rows;
if (this.tableData.length > 0) {
this.tableData.map(item => {
item.transactionPrice == 0 && (item.transactionPrice = '--');
});
}
}
this.tableDataTotal = res.total;
}
}
}
</script>
<style lang="scss" scoped>
.detail-container {
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
.major-project {
@import "@/assets/styles/search-common.scss";
}
</style>
\ No newline at end of file
...@@ -19,9 +19,9 @@ ...@@ -19,9 +19,9 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin'; import mixin from '../mixins/mixin'
import skeleton from '@/views/project/projectList/component/skeleton'; import skeleton from '@/views/project/projectList/component/skeleton'
import { bidNoticeArea, bidNoticeTenderStage, bidNoticePage } from '@/api/detail/party-a/opport'; import {bidNoticeArea, bidNoticeTenderStage,bidNoticeProjectCategory, bidNoticePage} from '@/api/detail/party-a/opport'
export default { export default {
name: 'Announcement', name: 'Announcement',
props: ['companyId'], props: ['companyId'],
...@@ -43,6 +43,7 @@ export default { ...@@ -43,6 +43,7 @@ export default {
{label: '项目名称', prop: 'projectName', minWidth: '300', slot: true, fixed: true}, {label: '项目名称', prop: 'projectName', minWidth: '300', slot: true, fixed: true},
{label: '发布日期', prop: 'issueTime', sortable: 'custom', descending: '3', ascending: '4', width: '120'}, {label: '发布日期', prop: 'issueTime', sortable: 'custom', descending: '3', ascending: '4', width: '120'},
{label: '预算金额(万元)', prop: 'projectAmount', sortable: 'custom', descending: '1', ascending: '2', width: '140'}, {label: '预算金额(万元)', prop: 'projectAmount', sortable: 'custom', descending: '1', ascending: '2', width: '140'},
{label: '项目类型', prop: 'projectCategory', width: '110'},
{label: '项目地区', prop: 'province', width: '120', slot: true}, {label: '项目地区', prop: 'province', width: '120', slot: true},
{label: '招标阶段', prop: 'tenderStage', width: '90'}, {label: '招标阶段', prop: 'tenderStage', width: '90'},
{label: '招采单位联系人', prop: 'contact', width: '120'}, {label: '招采单位联系人', prop: 'contact', width: '120'},
...@@ -53,9 +54,10 @@ export default { ...@@ -53,9 +54,10 @@ export default {
{label: '报名截止日期', prop: 'overTime', width: '110'} {label: '报名截止日期', prop: 'overTime', width: '110'}
], ],
formData: [ formData: [
{ type: 7, fieldName: 'province', value: '', props: { multiple: true }, placeholder: '项目地区', options: [], uid: this.getUid() }, { type: 7, fieldName: 'province', value: '',props: {multiple: true}, placeholder: '项目地区', options: []},
{ type: 4, fieldName: 'tenderStage', value: '', placeholder: '项目类型', options: [], uid: this.getUid() }, { type: 4, fieldName: 'projectCategory', value: '', placeholder: '项目类型', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: [], uid: this.getUid() } { type: 4, fieldName: 'tenderStage', value: '', placeholder: '招标阶段', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: []}
], ],
//列表 //列表
tableLoading: false, tableLoading: false,
...@@ -70,82 +72,90 @@ export default { ...@@ -70,82 +72,90 @@ export default {
this.handleQuery(); this.handleQuery();
}, },
methods: { methods: {
async handleOption() { async handleOption(){
let [area, tender] = await Promise.all([ let [area, tender,project] = await Promise.all([
bidNoticeArea({ cid: this.companyId }), bidNoticeArea({cid: this.companyId}),
bidNoticeTenderStage({ cid: this.companyId }) bidNoticeTenderStage({cid: this.companyId}),
]); bidNoticeProjectCategory({cid: this.companyId}),
if (area.code == 200) { ])
if(area.code==200){
let region = area.data.map(item => { let region = area.data.map(item => {
let province = { label: item.province + '(' + item.count + ')', value: item.provinceId }; let province = {label:item.province+'('+item.count+')',value:item.provinceId}
if (item.citys && item.citys.length > 0) { if(item.citys&&item.citys.length>0){
let city = [], citem = {}; let city = [], citem = {}
for (let i = 0; i < item.citys.length; i++) { for(let i=0;i<item.citys.length;i++){
citem = { label: item.citys[i].city, value: item.citys[i].cityId }; citem = {label:item.citys[i].city, value:item.citys[i].cityId}
if (item.citys[i].areas && item.citys[i].areas.length > 0) { if(item.citys[i].areas&&item.citys[i].areas.length>0){
let area = [], aitem = {}; let area = [], aitem = {}
for (let j = 0; j < item.citys[i].areas.length; j++) { for(let j=0;j<item.citys[i].areas.length;j++){
aitem = { label: item.citys[i].areas[j].area, value: item.citys[i].areas[j].areaId }; aitem = {label:item.citys[i].areas[j].area, value:item.citys[i].areas[j].areaId}
area.push(aitem); area.push(aitem)
citem.children = area; citem.children = area
} }
} }
city.push(citem); city.push(citem)
} }
city.length > 0 ? province.children = city : ''; city.length>0 ? province.children = city : ''
} }
return province; return province
}); })
this.setFormData('province', region); this.setFormData('province', region)
} }
if (tender.code == 200) { if(tender.code==200){
let tenderStage = tender.data.map(item => { let tenderStage = tender.data.map(item => {
let it = { name: item.tenderStage + '(' + item.count + ')', value: item.tenderStage }; let it = {name:item.tenderStage+'('+item.count+')',value:item.tenderStage}
return it; return it
}); })
this.setFormData('tenderStage', tenderStage); this.setFormData('tenderStage', tenderStage)
}
if(project.code==200){
let projectCategory = project.data.map(item => {
let it = {name:item.projectCategory+'('+item.count+')',value:item.projectCategory}
return it
})
this.setFormData('projectCategory', projectCategory)
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true; this.tableLoading = true
let param = this.getAreaList(params || this.queryParams); let param = this.getAreaList(params || this.queryParams)
let res = await bidNoticePage(param); let res = await bidNoticePage(param)
this.tableLoading = false; this.tableLoading = false
if (res.code == 200) { if(res.code==200){
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows; this.tableData = res.rows
} }
this.tableDataTotal = res.total; this.tableDataTotal = res.total
}, },
getAreaList(params) { getAreaList(params){
if (params.province && params.province.length > 0) { if(params.province&&params.province.length>0){
let arr = this.$refs.headForm.$refs.cascader[0].getCheckedNodes(); let arr = this.$refs.headForm.$refs.cascader[0].getCheckedNodes()
let provinceIds = [], cityIds = [], areaIds = []; let provinceIds = [], cityIds = [], areaIds = []
for (var i in arr) { for (var i in arr) {
if (arr[i].parent) { if (arr[i].parent) {
if (!arr[i].parent.checked) { if (!arr[i].parent.checked) {
if (arr[i].hasChildren || arr[i].level == 2) { if(arr[i].hasChildren || arr[i].level==2){
cityIds.push(arr[i].value); cityIds.push(arr[i].value)
} else { }else{
areaIds.push(arr[i].value); areaIds.push(arr[i].value)
} }
} }
} else { } else {
provinceIds.push(arr[i].value); provinceIds.push(arr[i].value)
} }
} }
delete params.province; delete params.province
provinceIds.length > 0 ? params.provinceIds = provinceIds : ''; provinceIds.length>0?params.provinceIds = provinceIds:''
cityIds.length > 0 ? params.cityIds = cityIds : ''; cityIds.length>0?params.cityIds = cityIds:''
areaIds.length > 0 ? params.areaIds = areaIds : ''; areaIds.length>0?params.areaIds = areaIds:''
} }
return params; return params
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container { .detail-container{
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
......
...@@ -343,10 +343,11 @@ ...@@ -343,10 +343,11 @@
companyName:"", companyName:"",
// accendant:"", // accendant:"",
} }
console.log(this.$route.query.projectname)
if(this.thistype == 'project'){ if(this.thistype == 'project'){
this.queryParam.businessId = this.searchParam.businessId this.queryParam.businessId = this.searchParam.businessId
this.companyName = "" this.companyName = ""
this.queryParam.companyName=this.$route.query.projectname this.queryParam.companyName=''
} }
if(this.thistype == 'custom'){ if(this.thistype == 'custom'){
this.queryParam.customerId = this.searchParam.customerId this.queryParam.customerId = this.searchParam.customerId
......
...@@ -14,7 +14,8 @@ ...@@ -14,7 +14,8 @@
<div class="titles"> <div class="titles">
<img src="@/assets/images/project/headimg.png" class="headimg"> <img src="@/assets/images/project/headimg.png" class="headimg">
<strong class="text">{{ProjectData.projectName}}</strong> <strong class="text">{{ProjectData.projectName}}</strong>
<div class="protypes" :class="{'i1':ProjectData.status == 0,'i2':ProjectData.status == 1,'i3':ProjectData.status == 2}" v-if="isDisabled == false"> <div class="protypes" :class="{'i1':ProjectData.status == 0,'i2':ProjectData.status == 1,'i3':ProjectData.status == 2}"
v-if="isDisabled == false">
<span v-for="(item,index) in projectStatus"><i v-if="ProjectData.status == item.dictValue">{{item.dictLabel}}</i></span> <span v-for="(item,index) in projectStatus"><i v-if="ProjectData.status == item.dictValue">{{item.dictLabel}}</i></span>
<el-select class="sels" v-model="ProjectData.status" @change="editXMSL({status:ProjectData.status})"> <el-select class="sels" v-model="ProjectData.status" @change="editXMSL({status:ProjectData.status})">
<el-option v-for="(item,index) in projectStatus" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option> <el-option v-for="(item,index) in projectStatus" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
...@@ -22,9 +23,9 @@ ...@@ -22,9 +23,9 @@
</div> </div>
<div class="locks" v-if="ProjectData.isFounder == 1"> <div class="locks" v-if="ProjectData.isFounder == 1">
<div @click="islock=true"> <div @click="islock=true">
<img v-if="ProjectData.isPrivate == 0" src="@/assets/images/project/lock.png"> <img v-if="ProjectData.isPrivate == 0" src="@/assets/images/project/lock.png">
<img v-else src="@/assets/images/project/lockopen.png"> <img v-else src="@/assets/images/project/lockopen.png">
{{ProjectData.isPrivate == 0?"仅自己可见":"他人可见"}} {{ProjectData.isPrivate == 0?"仅自己可见":"他人可见"}}
</div> </div>
<div class="delform" v-if="islock"> <div class="delform" v-if="islock">
<div class="words">{{ProjectData.isPrivate == 0?"是否将项目权限修改为他人可见?":"是否将项目权限修改为仅自己可见?"}}</div> <div class="words">{{ProjectData.isPrivate == 0?"是否将项目权限修改为他人可见?":"是否将项目权限修改为仅自己可见?"}}</div>
...@@ -37,38 +38,41 @@ ...@@ -37,38 +38,41 @@
</div> </div>
<div class="contets row" readonly> <div class="contets row" readonly>
<div class="det-con"> <div class="det-con">
<span>项目类型</span> <span>项目阶段</span>
<div class="select-popper" > <div class="select-popper">
<span :class="{'txt':xmlx == '请选择'}"> <span :class="{'txt':xmjd == '请选择'}">
{{xmlx}} {{xmjd}}
<i class="el-icon-caret-bottom"></i> <i class="el-icon-caret-bottom"></i>
</span> </span>
<el-select v-if="isDisabled == false" v-model="xmlx" class="select-multiple" placeholder="请选择" @change="editXMSL({projectType:xmlx})"> <el-select v-if="isDisabled == false" v-model="xmjd" class="select-multiple" placeholder="请选择"
<el-option v-for="(item,index) in projectType" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option> @change="editXMSL({projectStage:xmjd})">
<el-option v-for="(item,index) in projectStage" :key="item.dictCode" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select> </el-select>
</div> </div>
</div> </div>
<div class="det-con"> <div class="det-con">
<span>项目类别:</span> <span>项目类别:</span>
<span> <span>
<div class="select-popper" > <div class="select-popper">
<span :class="{'txt':xmlb == '请选择'}"> <span :class="{'txt':xmlb == '请选择'}">
{{xmlb}} {{xmlb}}
<i class="el-icon-caret-bottom"></i> <i class="el-icon-caret-bottom"></i>
</span> </span>
<el-select v-if="isDisabled==false" v-model="xmlb" class="select-multiple" placeholder="请选择" @change="editXMSL({projectCategory:xmlb})"> <el-select v-if="isDisabled==false" v-model="xmlb" class="select-multiple" placeholder="请选择"
<el-option v-for="(item,index) in projectCategory" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option> @change="editXMSL({projectCategory:xmlb})">
</el-select> <el-option v-for="(item,index) in projectCategory" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</div> </el-select>
</span> </div>
</span>
</div> </div>
<div class="det-con con" > <div class="det-con con">
<span>投资估算(万元):</span> <span>投资估算(万元):</span>
<div class="inputxt i" :class="{'nomar':nowedit != 3}" :key="keys2" id="inputxt"> <div class="inputxt i" :class="{'nomar':nowedit != 3}" :key="keys2" id="inputxt">
<div class="flex" v-if="nowedit == 3 && isDisabled == false"> <div class="flex" v-if="nowedit == 3 && isDisabled == false">
<el-input v-model="ProjectData.investmentAmount" placeholder="待添加" @input="number"></el-input> <el-input v-model="ProjectData.investmentAmount" placeholder="待添加" @input="number"></el-input>
<div class="flex"> <div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({investmentAmount:ProjectData.investmentAmount})">确定</div> <div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({investmentAmount:ProjectData.investmentAmount})">确定
</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div> <div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div> </div>
</div> </div>
...@@ -79,14 +83,12 @@ ...@@ -79,14 +83,12 @@
<span>建设地点:</span> <span>建设地点:</span>
<div class="select-popper"> <div class="select-popper">
<span > <span>
{{addresstxt}} {{addresstxt}}
<i class="el-icon-caret-bottom"></i> <i class="el-icon-caret-bottom"></i>
</span> </span>
<el-cascader separator="-" :disabled="isDisabled" class="cascader-region select-location" v-model="ProjectData.address" <el-cascader separator="-" :disabled="isDisabled" class="cascader-region select-location" v-model="ProjectData.address"
ref="myCascader" :props="props" ref="myCascader" :props="props" :options="addressList" @change="handleChange"></el-cascader>
:options="addressList"
@change="handleChange"></el-cascader>
</div> </div>
</div> </div>
<div class="det-con"> <div class="det-con">
...@@ -94,14 +96,14 @@ ...@@ -94,14 +96,14 @@
<span>{{ProjectData.team}}</span> <span>{{ProjectData.team}}</span>
</div> </div>
</div> </div>
<div class="schedule"> <!-- <div class="schedule">
<div class="child" v-for="(item,index) in projectStage" @click="choose(item.dictValue)" :class="{'on':item.dictValue == thisindex}"> <div class="child" v-for="(item,index) in projectStage" @click="choose(item.dictValue)" :class="{'on':item.dictValue == thisindex}">
<div class="left"></div> <div class="left"></div>
<span>{{item.dictLabel}}</span> <span>{{item.dictLabel}}</span>
<div class="right"></div> <div class="right"></div>
</div> </div>
</div> </div> -->
</div> </div>
</el-card> </el-card>
...@@ -115,7 +117,7 @@ ...@@ -115,7 +117,7 @@
<!--项目速览--> <!--项目速览-->
<xmsl v-if="thistag == 'xmsl'" :key="keys" @Refreshs="getsl" :detailId="detailId"></xmsl> <xmsl v-if="thistag == 'xmsl'" :key="keys" @Refreshs="getsl" :detailId="detailId"></xmsl>
<!--建设内容--> <!--建设内容-->
<jsnr v-if="thistag == 'jsnr'" :key="keys1" :isDisabled='isDisabled' @Refrehmoney="getXMSL" :detailId="detailId"></jsnr> <jsnr v-if="thistag == 'jsnr'" :key="keys1" :isDisabled='isDisabled' @Refrehmoney="getXMSL" :detailId="detailId"></jsnr>
<!--联系人--> <!--联系人-->
<lxr v-if="thistag == 'lxr'" :isDisabled='isDisabled' :detailId="detailId" listtype="project"></lxr> <lxr v-if="thistag == 'lxr'" :isDisabled='isDisabled' :detailId="detailId" listtype="project"></lxr>
<!--跟进记录--> <!--跟进记录-->
...@@ -131,479 +133,488 @@ ...@@ -131,479 +133,488 @@
</template> </template>
<script> <script>
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss";
import "@/assets/styles/public.scss" import "@/assets/styles/public.scss";
import {getDictType,} from '@/api/main' import { getDictType, } from '@/api/main';
import xmsl from './component/xmsl.vue' import xmsl from './component/xmsl.vue';
import jsnr from './component/jsnr.vue' import jsnr from './component/jsnr.vue';
import lxr from './component/lxr.vue' import lxr from './component/lxr.vue';
import gjjl from './component/gjjl.vue' import gjjl from './component/gjjl.vue';
import gzdb from './component/gzdb.vue' import gzdb from './component/gzdb.vue';
import zlwd from './component/zlwd.vue' import zlwd from './component/zlwd.vue';
import xgqy from './component/xgqy.vue' import xgqy from './component/xgqy.vue';
import prvinceTree from '@/assets/json/provinceTree' import prvinceTree from '@/assets/json/provinceTree';
import {getXMSL,editXMNR} from '@/api/project/project' import { getXMSL, editXMNR } from '@/api/project/project';
export default { export default {
name: 'detail', name: 'detail',
components: {xmsl,jsnr,lxr,gjjl,gzdb,zlwd,xgqy}, components: { xmsl, jsnr, lxr, gjjl, gzdb, zlwd, xgqy },
props: { props: {
detailId: { //从企业详情跳转过来ID detailId: { //从企业详情跳转过来ID
type: Number, type: Number,
default: 0 default: 0
}
},
data() {
return {
lastindex: 0,//上一个点击步骤
thisindex: 1,//当前点击步骤
tabslist: [//项目信息展示板块
{ tag: 'xmsl', name: '项目速览' },
{ tag: 'jsnr', name: '建设内容' },
{ tag: 'lxr', name: '联系人' },
{ tag: 'gjjl', name: '跟进记录' },
{ tag: 'gzdb', name: '工作待办' },
{ tag: 'zlwd', name: '资料文档' },
{ tag: 'xgqy', name: '相关企业' },
],
thistag: 'xmsl',
xmlx: '请选择',//项目类型
xmlb: '请选择',//项目类别
xmjd: "请选择",//项目阶段
islock: false,
projectStage: [],//项目阶段
projectType: [],//项目类型
projectCategory: [],//项目类别
projectStatus: [],//项目状态
nowedit: -1,
address: [],
addresstxt: '待添加',
//项目地区
addressList: [],
domicile: [],
props: { checkStrictly: true, expandTrigger: 'hover' },
id: '',
ProjectData: {},
isDisabled: false,
keys: 1,
keys1: 2,
keys2: 20,
};
},
created() {
this.thistag = this.$route.query.tag ? this.$route.query.tag : this.thistag;
this.prvinceTree();
this.id = this.detailId ? this.detailId : this.$route.query.id;
//项目阶段
getDictType('project_stage_type').then(result => {
this.projectStage = result.code == 200 ? result.data : [];
});
//项目类型
getDictType('project_type').then(result => {
this.projectType = result.code == 200 ? result.data : [];
});
//项目类别
getDictType('project_category').then(result => {
this.projectCategory = result.code == 200 ? result.data : [];
});
//项目状态
getDictType('project_status_type').then(result => {
this.projectStatus = result.code == 200 ? result.data : [];
});
//获取基本信息
this.getXMSL();
},
mounted() {
document.getElementById('jsnr').addEventListener('mouseup', (e) => {
if (this.isDisabled == true)
return false;
var one = document.getElementById("inputxt");
if (one) {
if (!one.contains(event.target)) {
if (this.nowedit != -1) {
this.editXMSL({ investmentAmount: this.ProjectData.investmentAmount });
}
this.nowedit = -1;
} else {
this.nowedit = 3;
}
} }
});
},
methods: {
getsl(data) {
this.choose(data.projectStage);
}, },
data(){ handleALL(event) {
return { if (this.isDisabled == true)
lastindex: 0,//上一个点击步骤 return false;
thisindex: 1,//当前点击步骤
tabslist:[//项目信息展示板块
{tag:'xmsl',name:'项目速览'},
{tag:'jsnr',name:'建设内容'},
{tag:'lxr',name:'联系人'},
{tag:'gjjl',name:'跟进记录'},
{tag:'gzdb',name:'工作待办'},
{tag:'zlwd',name:'资料文档'},
{tag:'xgqy',name:'相关企业'},
],
thistag:'xmsl',
xmlx:'请选择',//项目类型
xmlb:'请选择',//项目类别
islock:false,
projectStage:[],//项目阶段
projectType:[],//项目类型
projectCategory:[],//项目类别
projectStatus:[],//项目状态
nowedit:-1,
address:[],
addresstxt:'待添加',
//项目地区
addressList:[],
domicile:[],
props:{ checkStrictly: true, expandTrigger: 'hover' },
id:'',
ProjectData:{},
isDisabled:false,
keys:1,
keys1:2,
keys2:20,
}
}, },
created(){ getXMSL() {
this.thistag = this.$route.query.tag ? this.$route.query.tag : this.thistag getXMSL(this.id).then(result => {
this.prvinceTree() this.ProjectData = result.code == 200 ? result.data : {};
this.id = this.detailId ? this.detailId : this.$route.query.id this.$route.query.projectname = result.data.projectName;
//项目阶段 this.isDisabled = result.data.isFounder == 1 ? false : true;
getDictType('project_stage_type').then(result=>{ this.xmlx = result.data.projectType == "" || result.data.projectType == null ? "请选择" : result.data.projectType;
this.projectStage = result.code == 200 ? result.data:[] this.xmlb = result.data.projectCategory == "" || result.data.projectCategory == null ? "请选择" : result.data.projectCategory;
}) this.xmjd = result.data.projectStage == "" || result.data.projectStage == null ? "请选择" : result.data.projectStage;
//项目类型 this.thisindex = result.data.projectStage;
getDictType('project_type').then(result=>{ this.ProjectData.status = result.data.status.toString();
this.projectType = result.code == 200 ? result.data:[] let list = [];
}) let txt = '';
//项目类别 if (result.data.provinceId != "") {
getDictType('project_category').then(result=>{ list.push(result.data.provinceId);
this.projectCategory = result.code == 200 ? result.data:[] }
}) if (result.data.cityId) {
//项目状态 list.push(result.data.cityId);
getDictType('project_status_type').then(result=>{ }
this.projectStatus = result.code == 200 ? result.data:[] if (result.data.districtId) {
}) list.push(result.data.districtId);
//获取基本信息 }
this.getXMSL() if (result.data.provinceName) {
txt += result.data.provinceName;
}
if (result.data.cityName) {
txt += '-' + result.data.cityName;
}
if (result.data.districtName) {
txt += '-' + result.data.districtName;
}
this.address = list.length > 0 ? list : "待添加";
this.addresstxt = txt == "" ? "待添加" : txt;
this.keys2++;
});
},
locks(isPrivate) {
isPrivate = isPrivate == 0 ? 1 : 0;
this.editXMSL({ isPrivate: isPrivate });
this.islock = false;
this.ProjectData.isPrivate = isPrivate;
}, },
mounted(){ editXMSL(param) {
document.getElementById('jsnr').addEventListener('mouseup',(e) => { if (this.isDisabled == true)
if (this.isDisabled == true) return false;
return false let params = param;
var one = document.getElementById("inputxt"); params.id = this.id;
if (one) { if (param.status) {
if (!one.contains(event.target)) { param.status = parseInt(param.status);
if (this.nowedit != -1) { }
this.editXMSL({ investmentAmount: this.ProjectData.investmentAmount }) editXMNR(JSON.stringify(params)).then(res => {
} if (res.code == 200) {
this.nowedit = -1 // this.$message.success('修改成功!')
} else { if (this.nowedit == 1) {
this.nowedit = 3 let _this = this;
setTimeout(function () {
_this.keys1++;
}, 1000);
} }
} else {
this.$message.error(res.msg);
this.getXMSL();
} }
}) });
this.nowedit = -1;
},
//地区
async prvinceTree() {
// await axios.post("https://files.jiansheku.com/file/json/common/provinceTree.json", {}, {
// headers: {
// 'Content-Type': 'application/json'
// }
// }).then(res => {
// if (res.data.code == 200) {
// console.log(res.data.data)
// }
// })
// console.log(prvinceTree)
this.addressList = prvinceTree;
this.getadd(this.addressList);
},
//处理项目地区
getadd(row) {
this.addrcallback(row, this.getadd);
},
addrcallback(row, callback) {
if (row) {
row.forEach(item => {
item.value = item.id;
callback && callback(item.children);
});
}
}, },
methods: {
getsl(data){
this.choose(data.projectStage)
},
handleALL(event){
if(this.isDisabled == true)
return false
}, //进度条悬浮、点击事件
getXMSL(){ hover(value) {
getXMSL(this.id).then(result=>{ this.lastindex = value;
this.ProjectData = result.code==200?result.data:{} },
this.$route.query.projectname = result.data.projectName choose(value) {
this.isDisabled = result.data.isFounder == 1 ? false:true if (this.isDisabled == true)
this.xmlx = result.data.projectType==""||result.data.projectType==null?"请选择":result.data.projectType return false;
this.xmlb = result.data.projectCategory==""||result.data.projectCategory==null?"请选择":result.data.projectCategory this.thisindex = value;
this.thisindex = result.data.projectStage this.editXMSL({ projectStage: value });
this.ProjectData.status = result.data.status.toString() let _this = this;
let list = [] setTimeout(function () {
let txt = '' _this.keys++;
if(result.data.provinceId != ""){ }, 1000);
list.push(result.data.provinceId) },
} //内容组件切换
if(result.data.cityId){ getCom(tag) {
list.push(result.data.cityId) this.thistag = tag;
} },
if(result.data.districtId){ //输入数字
list.push(result.data.districtId) number(value) {
} this.ProjectData.investmentAmount = value == "" ? "" : value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1');//输入6位小数
if(result.data.provinceName){ },
txt += result.data.provinceName
} handleChange(value) {
if(result.data.cityName){ var labelString = this.$refs.myCascader.getCheckedNodes()[0].pathLabels;
txt += '-'+result.data.cityName let param = {
} provinceId: null,
if(result.data.districtName){ provinceName: null,
txt += '-'+result.data.districtName cityId: null,
} cityName: null,
this.address = list.length>0?list:"待添加" districtId: null,
this.addresstxt = txt == "" ? "待添加":txt districtName: null,
this.keys2 ++; };
}) let txt = '';
}, labelString.forEach((item, index) => {
locks(isPrivate){ let str = '';
isPrivate = isPrivate==0?1:0 if (index > 0) {
this.editXMSL({isPrivate:isPrivate}) str = '-';
this.islock = false
this.ProjectData.isPrivate = isPrivate
},
editXMSL(param){
if(this.isDisabled == true)
return false
let params = param
params.id = this.id
if(param.status){
param.status = parseInt(param.status)
} }
editXMNR(JSON.stringify(params)).then(res=>{ txt += str + item;
if (res.code == 200){ if (index == 0) {
// this.$message.success('修改成功!') param.provinceName = item;
if(this.nowedit == 1){
let _this = this
setTimeout(function() {
_this.keys1++;
},1000)
}
}else{
this.$message.error(res.msg)
this.getXMSL()
}
})
this.nowedit = -1
},
//地区
async prvinceTree() {
// await axios.post("https://files.jiansheku.com/file/json/common/provinceTree.json", {}, {
// headers: {
// 'Content-Type': 'application/json'
// }
// }).then(res => {
// if (res.data.code == 200) {
// console.log(res.data.data)
// }
// })
// console.log(prvinceTree)
this.addressList = prvinceTree;
this.getadd(this.addressList)
},
//处理项目地区
getadd(row) {
this.addrcallback(row,this.getadd)
},
addrcallback(row,callback){
if(row){
row.forEach(item => {
item.value = item.id
callback && callback(item.children)
})
} }
}, if (index == 1) {
param.cityName = item;
//进度条悬浮、点击事件
hover(value){
this.lastindex = value
},
choose(value){
if(this.isDisabled == true)
return false
this.thisindex = value
this.editXMSL({projectStage:value})
let _this = this
setTimeout(function() {
_this.keys++;
},1000)
},
//内容组件切换
getCom(tag){
this.thistag = tag
},
//输入数字
number(value){
this.ProjectData.investmentAmount = value == ""?"": value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')//输入6位小数
},
handleChange(value) {
var labelString = this.$refs.myCascader.getCheckedNodes()[0].pathLabels;
let param = {
provinceId:null,
provinceName:null,
cityId:null,
cityName:null,
districtId:null,
districtName:null,
} }
let txt = '' if (index == 2) {
labelString.forEach((item,index)=>{ param.districtName = item;
let str = '' }
if(index >0){ });
str = '-' this.addresstxt = txt;
} value.forEach((item, index) => {
txt += str + item if (index == 0) {
if(index == 0){ param.provinceId = parseInt(item);
param.provinceName = item }
} if (index == 1) {
if(index == 1){ param.cityId = parseInt(item);
param.cityName = item }
} if (index == 2) {
if(index == 2){ param.districtId = parseInt(item);
param.districtName = item }
} });
}) this.editXMSL(param);
this.addresstxt = txt },
value.forEach((item,index)=>{
if(index == 0){
param.provinceId = parseInt(item)
}
if(index == 1){
param.cityId = parseInt(item)
}
if(index == 2){
param.districtId = parseInt(item)
}
})
this.editXMSL(param)
},
// 跳转到企业详情合作情况 // 跳转到企业详情合作情况
cooperateList(){ cooperateList() {
this.$emit('close-detail') this.$emit('close-detail');
}, },
tolist(){ tolist() {
this.$router.push({path:'/project/projectList'}) this.$router.push({ path: '/project/projectList' });
}, },
}
} }
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.select-popper{ .select-popper {
top: 0; top: 0;
} }
.head{ .head {
.titles{ .titles {
line-height: 31px; line-height: 31px;
.protypes{ .protypes {
min-width: 96px; min-width: 96px;
padding: 0 18px; padding: 0 18px;
height: 24px; height: 24px;
border-radius: 20px; border-radius: 20px;
margin-left: 16px; margin-left: 16px;
display: inline-block; display: inline-block;
cursor: pointer; cursor: pointer;
font-size: 12px; font-size: 12px;
line-height: 24px; line-height: 24px;
text-align: center; text-align: center;
position: relative; position: relative;
&.i1{ &.i1 {
background: #FCF3DF; background: #fcf3df;
color: #B5760B; color: #b5760b;
&:hover{ &:hover {
background: #F3E2BB; background: #f3e2bb;
}
}
&.i2{
background: #E5F6E4;
color: #09A442;
&:hover{
background: #B8EBB7;
}
} }
&.i3{ }
background: #E5F2FF; &.i2 {
color: #0081FF; background: #e5f6e4;
&:hover{ color: #09a442;
background: #CBE5FF; &:hover {
} background: #b8ebb7;
}
>span{
width: 100%;
}
.sels{
opacity: 0;
} }
.el-select{ }
position: absolute; &.i3 {
top: 0; background: #e5f2ff;
width: 100%; color: #0081ff;
left: 0; &:hover {
height: 24px; background: #cbe5ff;
::v-deep.el-input,::v-deep.el-input__inner{
height: 24px;
}
} }
} }
.headimg{ > span {
float: left; width: 100%;
margin-right: 16px;
} }
.text{ .sels {
font-size: 16px; opacity: 0;
line-height: 31px;
font-family: Microsoft YaHei-Bold, Microsoft YaHei;
} }
.locks{ .el-select {
display: inline-block; position: absolute;
margin-left: 16px; top: 0;
width: 100%;
left: 0;
height: 24px; height: 24px;
background: #F3F4F5; ::v-deep.el-input,
border-radius: 12px; ::v-deep.el-input__inner {
padding: 0 8px; height: 24px;
font-size: 12px;
color: #4f4f4f;
line-height: 24px;
cursor: pointer;
font-weight: 400;
position: relative;
&:hover{
background-color: #DFE0E2;
}
img{
float: left;
width: 16px;
margin-top: 3px;
margin-right: 2px;
} }
} }
} }
.contets{ .headimg {
padding: 15px 0 20px; float: left;
.det-con{ margin-right: 16px;
font-size: 14px; }
display: inline-block; .text {
padding-right: 43px; font-size: 16px;
&:last-child{ line-height: 31px;
padding-right: 0;
} font-family: Microsoft YaHei-Bold, Microsoft YaHei;
>span:nth-child(2n-1){ }
color: #a7a7a7; .locks {
} display: inline-block;
margin-left: 16px;
height: 24px;
background: #f3f4f5;
border-radius: 12px;
padding: 0 8px;
font-size: 12px;
color: #4f4f4f;
line-height: 24px;
cursor: pointer;
font-weight: 400;
position: relative;
&:hover {
background-color: #dfe0e2;
}
img {
float: left;
width: 16px;
margin-top: 3px;
margin-right: 2px;
} }
} }
.schedule{ }
width: 100%; .contets {
.child{ padding: 15px 0 20px;
cursor: pointer; .det-con {
margin-right: 4px; font-size: 14px;
color: rgba(35, 35, 35, 0.80); display: inline-block;
position: relative; padding-right: 43px;
min-width: 137px; &:last-child {
padding: 0 20px; padding-right: 0;
}
> span:nth-child(2n-1) {
color: #a7a7a7;
}
}
}
.schedule {
width: 100%;
.child {
cursor: pointer;
margin-right: 4px;
color: rgba(35, 35, 35, 0.8);
position: relative;
min-width: 137px;
padding: 0 20px;
height: 32px;
line-height: 32px;
text-align: center;
background: #f3f4f5;
margin-bottom: 8px;
display: inline-block;
.left {
width: 10px;
height: 32px; height: 32px;
line-height: 32px; background: url("../../../assets/images/project/icol1.png") no-repeat
text-align: center; top center #fff;
background: #F3F4F5; background-size: 100%;
margin-bottom: 8px; position: absolute;
display: inline-block; left: 0;
.left{ top: 0;
width: 10px; }
height: 32px; .right {
background: url("../../../assets/images/project/icol1.png") no-repeat top center #fff; position: absolute;
top: 0;
right: 0;
width: 10px;
height: 32px;
background: url("../../../assets/images/project/icor1.png") no-repeat
top center #fff;
background-size: 100%;
}
&:hover {
background: #e3e6ea;
.left {
background: url("../../../assets/images/project/icol2.png") no-repeat
top center #fff;
background-size: 100%; background-size: 100%;
position: absolute;
left: 0;
top: 0;
} }
.right{ .right {
position: absolute; background: url("../../../assets/images/project/icor2.png") no-repeat
top: 0; top center #fff;
right: 0;
width: 10px;
height: 32px;
background: url("../../../assets/images/project/icor1.png") no-repeat top center #fff;
background-size: 100%; background-size: 100%;
} }
&:hover{ }
background: #E3E6EA;
.left{
background: url("../../../assets/images/project/icol2.png") no-repeat top center #fff;
background-size: 100%;
}
.right{
background: url("../../../assets/images/project/icor2.png") no-repeat top center #fff;
background-size: 100%;
}
}
&.on{ &.on {
background: #0081FF; background: #0081ff;
color: #fff; color: #fff;
.left{ .left {
background: url("../../../assets/images/project/icol3.png") no-repeat top center #fff; background: url("../../../assets/images/project/icol3.png") no-repeat
background-size: 100%; top center #fff;
} background-size: 100%;
.right{ }
background: url("../../../assets/images/project/icor3.png") no-repeat top center #fff; .right {
background-size: 100%; background: url("../../../assets/images/project/icor3.png") no-repeat
} top center #fff;
background-size: 100%;
} }
} }
} }
.delform{
right: -79px;
top: 33px;
width: 252px;
}
} }
.tabslist{ .delform {
padding: 0 24px; right: -79px;
display: flex; top: 33px;
height: 48px; width: 252px;
.tab{ }
font-size: 16px; }
line-height: 46px; .tabslist {
margin-right: 32px; padding: 0 24px;
cursor: pointer; display: flex;
&:hover{ height: 48px;
color: #0081FF; .tab {
} font-size: 16px;
&.on{ line-height: 46px;
color: #0081FF; margin-right: 32px;
font-weight: 700; cursor: pointer;
border-bottom: 2px solid #0081FF; &:hover {
} color: #0081ff;
}
&.on {
color: #0081ff;
font-weight: 700;
border-bottom: 2px solid #0081ff;
} }
} }
.det-con.con{ }
width: auto; .det-con.con {
margin-top: -4px; width: auto;
.inputxt{ margin-top: -4px;
width: 100px; .inputxt {
margin-right: 70px; width: 100px;
&.nomar{ margin-right: 70px;
margin: 0; &.nomar {
} margin: 0;
} }
} }
}
</style> </style>
<template> <template>
<div> <div>
<div class="content"> <div class="content">
<div class="content_item content_item_padding0"> <div class="content_item content_item_padding0">
<div class="label">关键字</div> <div class="label">关键字</div>
<div class="content_right"> <div class="content_right">
<el-input class="ename_input" placeholder="请输入关键字查询" v-model="importantProjectDto.keyword" ></el-input> <el-input class="ename_input" placeholder="请输入关键字查询" v-model="importantProjectDto.keyword"></el-input>
<el-checkbox-group v-model="importantProjectDto.keywordStr" class="keyword_checkbox" > <el-checkbox-group v-model="importantProjectDto.keywordStr" class="keyword_checkbox">
<el-checkbox v-for="item in keywordTypeList" :label="item.value" :key="item.label">{{item.label}}</el-checkbox> <el-checkbox v-for="item in keywordTypeList" :label="item.value" :key="item.label">{{item.label}}</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</div> </div>
</div> </div>
<div class="content_item"> <div class="content_item">
<div class="label">基本信息</div> <div class="label">基本信息</div>
<div class="content_right"> <div class="content_right">
<div class="select-popper" > <div class="select-popper">
<span :class="{color_text:importantProjectDto.province.length ||importantProjectDto.city.length ||importantProjectDto.area.length,}"> <span :class="{color_text:importantProjectDto.province.length ||importantProjectDto.city.length ||importantProjectDto.area.length,}">
行政区划{{importantProjectDto.province.length ||importantProjectDto.city.length ||importantProjectDto.area.length? importantProjectDto.province.length + importantProjectDto.city.length +importantProjectDto.area.length +"项": ""}} 行政区划{{importantProjectDto.province.length ||importantProjectDto.city.length ||importantProjectDto.area.length? importantProjectDto.province.length + importantProjectDto.city.length +importantProjectDto.area.length +"项": ""}}
<i class="el-icon-caret-bottom"></i> <i class="el-icon-caret-bottom"></i>
</span> </span>
<el-cascader <el-cascader ref="address" class="cascader-region" v-model="addressType" :options="addressList" :props="props" @change="domicileChange"
ref="address" collapse-tags clearable></el-cascader>
class="cascader-region" </div>
v-model="addressType" <div class="select-popper">
:options="addressList" <span :class="{ color_text: importantProjectDto.year.length }">
:props="props" 项目年度{{importantProjectDto.year.length? importantProjectDto.year.length + "项": ""}}
@change="domicileChange" <i class="el-icon-caret-bottom"></i>
collapse-tags </span>
clearable <el-select @change="changeYear" v-model="importantProjectDto.year" class="select-multiple" multiple placeholder="请选择">
></el-cascader> <el-option v-for="(item, i) in years" :key="i" :label="item+'年'" :value="item">
</div> </el-option>
<div class="select-popper"> </el-select>
<span :class="{ color_text: importantProjectDto.year.length }"> </div>
项目年度{{importantProjectDto.year.length? importantProjectDto.year.length + "项": ""}} <div class="select-popper">
<i class="el-icon-caret-bottom"></i> <span :class="{ color_text: importantProjectDto.fileTitle.length }">
</span> 重点项目清单{{importantProjectDto.fileTitle.length? importantProjectDto.fileTitle.length + "项": ""}}
<el-select @change="changeYear" v-model="importantProjectDto.year" class="select-multiple" multiple placeholder="请选择"> <i class="el-icon-caret-bottom"></i>
<el-option v-for="(item, i) in years" :key="i" :label="item+'年'" :value="item"> </span>
</el-option> <el-select v-model="importantProjectDto.fileTitle" class="select-multiple" multiple placeholder="请选择">
</el-select> <el-option v-for="(item, i) in fileTitleOptions" :key="i" :label="item" :value="item">
</div> </el-option>
<div class="select-popper"> </el-select>
<span :class="{ color_text: importantProjectDto.fileTitle.length }"> </div>
重点项目清单{{importantProjectDto.fileTitle.length? importantProjectDto.fileTitle.length + "项": ""}} <el-dropdown @command="transactionPricehandleCommand" class="el-dropdown-land" placement="bottom-start" trigger="click"
<i class="el-icon-caret-bottom"></i> ref="transactionPriceShowPopper" :hide-on-click="false">
</span> <span class="el-dropdown-link" :class="importantProjectDto.startMoney ||importantProjectDto.endMoney ? 'color_text': ''">
<el-select v-model="importantProjectDto.fileTitle" class="select-multiple" multiple placeholder="请选择"> 项目投资额{{importantProjectDto.startMoney ||importantProjectDto.endMoney? " 1项": ""}}<i class="el-icon-caret-bottom"></i>
<el-option v-for="(item, i) in fileTitleOptions" :key="i" :label="item" :value="item"> </span>
</el-option> <el-dropdown-menu slot="dropdown">
</el-select> <el-dropdown-item v-for="(item, i) in transactionPriceOptions" :class="importantProjectDto.startMoney == item.value[0] &&importantProjectDto.endMoney == item.value[1] &&
</div>
<el-dropdown @command="transactionPricehandleCommand" class="el-dropdown-land" placement="bottom-start" trigger="click" ref="transactionPriceShowPopper" :hide-on-click="false">
<span class="el-dropdown-link" :class="importantProjectDto.startMoney ||importantProjectDto.endMoney ? 'color_text': ''">
项目投资额{{importantProjectDto.startMoney ||importantProjectDto.endMoney? " 1项": ""}}<i class="el-icon-caret-bottom"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(item, i) in transactionPriceOptions" :class="importantProjectDto.startMoney == item.value[0] &&importantProjectDto.endMoney == item.value[1] &&
!startMoney &&!endMoney? 'color_text': '' " :key="i" :command="item.value">{{ item.label }}</el-dropdown-item> !startMoney &&!endMoney? 'color_text': '' " :key="i" :command="item.value">{{ item.label }}</el-dropdown-item>
<el-dropdown-item command="" style="padding: 0; text-indent: 20px"> <el-dropdown-item command="" style="padding: 0; text-indent: 20px">
<div @mouseenter="transactionPriceShowPopper = true" @mouseleave="transactionPriceShowPopper = false"> <div @mouseenter="transactionPriceShowPopper = true" @mouseleave="transactionPriceShowPopper = false">
<span :class="(startMoney || endMoney) &&importantProjectDto.startMoney ==startMoney && <span :class="(startMoney || endMoney) &&importantProjectDto.startMoney ==startMoney &&
importantProjectDto.endMoney == endMoney? 'color_text': '' "> importantProjectDto.endMoney == endMoney? 'color_text': '' ">
自定义<i class="el-icon-arrow-right"></i> 自定义<i class="el-icon-arrow-right"></i>
</span> </span>
<div class="jabph_popper_box" style="position: absolute" v-if="transactionPriceShowPopper"> <div class="jabph_popper_box" style="position: absolute" v-if="transactionPriceShowPopper">
<div class="jabph_popper_wrap"> <div class="jabph_popper_wrap">
<el-input class="jabph_popper_input" v-limit-num clearable v-model="startMoney"></el-input> <el-input class="jabph_popper_input" v-limit-num clearable v-model="startMoney"></el-input>
</div> </div>
<div class="jabph_popper_wrap"> <div class="jabph_popper_wrap">
<el-input class="jabph_popper_input" v-limit-num clearable v-model="endMoney"></el-input> <el-input class="jabph_popper_input" v-limit-num clearable v-model="endMoney"></el-input>
</div> </div>
<div style=""> <div style="">
<el-button size="mini" @click="transactionPriceCancel">取消</el-button> <el-button size="mini" @click="transactionPriceCancel">取消</el-button>
<el-button type="primary" size="mini" @click="transactionPricePopperConfirm">确定</el-button> <el-button type="primary" size="mini" @click="transactionPricePopperConfirm">确定</el-button>
</div> </div>
</div> </div>
</div> </div>
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</div> </div>
</div> </div>
<div class="content_item"> <div class="content_item">
<div class="label">项目级别</div> <div class="label">项目级别</div>
<div class="content_right"> <div class="content_right">
<el-checkbox-group v-model="importantProjectDto.projectLevel" class="keyword_checkbox" > <el-checkbox-group v-model="importantProjectDto.projectLevel" class="keyword_checkbox">
<el-checkbox v-for="item in projectLevelOption" :label="item.value" :key="item.label">{{item.label}}</el-checkbox> <el-checkbox v-for="item in projectLevelOption" :label="item.value" :key="item.label">{{item.label}}</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</div> </div>
</div> </div>
<div class="content_item content_item1"> <div class="content_item content_item1">
<div class="label" style="float:left;">项目类型</div> <div class="label" style="float:left;">项目类型</div>
<div class="content_right"> <div class="content_right">
<el-checkbox-group v-model="importantProjectDto.buildingProjectType" class="checkbox_1122"> <el-checkbox-group v-model="importantProjectDto.buildingProjectType" class="checkbox_1122">
<template v-for="(item,index) in projectTypeList"> <template v-for="(item,index) in projectTypeList">
<el-checkbox v-if="index<showNum" :label="item" :key="index">{{item}}</el-checkbox> <el-checkbox v-if="index<showNum" :label="item" :key="index">{{item}}</el-checkbox>
</template> </template>
</el-checkbox-group> </el-checkbox-group>
<span class="more" v-if="showNum==10" @click="showNum=99">更多<img src="@/assets/images/more.png" alt=""></span> <span class="more" v-if="showNum==10" @click="showNum=99">更多<img src="@/assets/images/more.png" alt=""></span>
<span class="more more1" v-if="showNum==99" @click="showNum=10">收起<img src="@/assets/images/more.png" alt=""></span> <span class="more more1" v-if="showNum==99" @click="showNum=10">收起<img src="@/assets/images/more.png" alt=""></span>
</div> </div>
</div> </div>
<div class="content_item content_item_padding0"> <div class="content_item content_item_padding0">
<div class="geduan"> <div class="geduan">
</div> </div>
</div> </div>
<div class="content_item content_item_padding0"> <div class="content_item content_item_padding0">
<div class="search-new"> <div class="search-new">
<span @click="search()">查询</span> <span @click="search()">查询</span>
<span @click="reset">重置</span> <span @click="reset">重置</span>
</div> </div>
</div> </div>
</div>
</div> <div class="bottomlist">
<div class="bottomlist"> <div class="bottomlist-title">
<div class="bottomlist-title"> <div class="bottomlist-title-left">
<div class="bottomlist-title-left" > <p class="title-left">
<p class="title-left"> <span style="margin-right:4;color:rgba(35, 35, 35, 0.40);font-size: 18px;position: relative;top:2px;">·</span>共有{{total}}条
<span style="margin-right:4;color:rgba(35, 35, 35, 0.40);font-size: 18px;position: relative;top:2px;">·</span>共有{{total}}条 </p>
</p> <el-popover v-model="fieldshow" placement="bottom-start" trigger="click" popper-class="viewlist-el-popover">
<el-popover v-model="fieldshow" placement="bottom-start" trigger="click" popper-class="viewlist-el-popover"> <ul class="pup_list pup_zhclist">
<ul class="pup_list pup_zhclist"> <li v-for="(itme,i) in fieldOptions" :class="itme.status?'active':''" @click="handsequencingList(i)" :key="i">
<li v-for="(itme,i) in fieldOptions" :class="itme.status?'active':''" {{itme.value}}
@click="handsequencingList(i)" :key="i"> </li>
{{itme.value}} </ul>
</li> <span slot="reference" class="toolbar-right-download">{{fieldText}}<i class="el-icon-arrow-down"
</ul> :style="{transform:fieldshow?'rotate(180deg)':''}"></i>
<span slot="reference" class="toolbar-right-download" >{{fieldText}}<i class="el-icon-arrow-down" :style="{transform:fieldshow?'rotate(180deg)':''}"></i> </span>
</span> </el-popover>
</el-popover> </div>
</div> <div class="title-right">
<div class="title-right"> <p v-hasPermi="['radar:export:important']">
<p v-hasPermi="['radar:export:important']" > <img src="@/assets/images/EXCEL.png" alt="">
<img src="@/assets/images/EXCEL.png" alt=""> <span class="excel" @click="clickDialog">导出EXCEL</span>
<span class="excel" @click="clickDialog">导出EXCEL</span> </p>
</p> </div>
</div>
</div>
</div> <div class="table-item-jf1" v-if="tableData.length==0&& !isSkeleton">
<div class="table-item-jf1" v-if="tableData.length==0&& !isSkeleton"> <img class="item-jf-img" src="@/assets/images/kong.png" alt="">
<img class="item-jf-img" src="@/assets/images/kong.png" alt=""> <div class="item-jf-titel">抱歉,没找到相关数据!</div>
<div class="item-jf-titel">抱歉,没找到相关数据</div> <div class="item-jf-text">建议调整关键词或筛选条件,重新搜索</div>
<div class="item-jf-text">建议调整关键词或筛选条件,重新搜索!</div> </div>
</div> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <ul class="bottomlist-content" v-if="tableData.length>0&& !isSkeleton">
<ul class="bottomlist-content" v-if="tableData.length>0&& !isSkeleton"> <li class="bottomlist-list" v-for="item in tableData">
<li class="bottomlist-list" v-for="item in tableData"> <p class="list-titel">
<p class="list-titel"> <router-link :to="'/radar/MajorProject/details/'+ item.md5" tag="a" class="list-titel-a">
<router-link :to="'/radar/MajorProject/details/'+ item.md5" tag="a" class="list-titel-a" v-html="item.projectName"></router-link> <div class="project-name-of-level">
</p> <span v-if="item.projectLevel" class="project-of-level" :class="[getBackGround(item.projectLevel)]">{{item.projectLevel}}</span>
<div class="content-label" v-if="item.province||item.city||item.area||item.projectLevel"> <span class="project-of-name">{{item.projectName}}</span>
<span class="list-label list-label-zb" v-if="item.province||item.city||item.area"> </div>
{{item.province}}<template v-if="item.city">-{{item.city}}</template><template v-if="item.area">-{{item.area}}</template> </router-link>
</span> </p>
<span class="list-label list-label-zb" v-if="item.projectLevel"> <div class="content-label" v-if="item.province||item.city||item.area">
{{item.projectLevel}} <span class="list-label list-label-zb" v-if="item.province||item.city||item.area">
</span> {{item.province}}<template v-if="item.city">-{{item.city}}</template><template v-if="item.area">-{{item.area}}</template>
</div> </span>
<!-- <span class="list-label list-label-zb" v-if="item.projectLevel">
<div class="list-content list-content1" v-if="item.year||item.planStartDate||item.planCompletionDate"> {{item.projectLevel}}
<p class="list-content-text" v-if="item.year"> </span> -->
<span>项目年度:</span> </div>
<span>{{item.year}}年</span>
</p> <div class="list-content list-content1" v-if="item.year||item.planStartDate||item.planCompletionDate">
<p class="list-content-text" v-if="item.planStartDate"> <p class="list-content-text" v-if="item.year">
<span>拟开工时间</span> <span>项目年度</span>
<span>{{item.planStartDate}}年</span> <span>{{item.year}}年</span>
</p> </p>
<p class="list-content-text" v-if="item.planCompletionDate"> <p class="list-content-text" v-if="item.planStartDate">
<span>拟建成时间:</span> <span>拟开工时间:</span>
<span>{{item.planCompletionDate}}年</span> <span>{{item.planStartDate}}年</span>
</p> </p>
</div> <p class="list-content-text" v-if="item.planCompletionDate">
<div class="list-content list-content1" v-if="item.buildingProjectType||item.completedInvestment||item.completedPlanInvestment||item.projectTotalInvestment"> <span>拟建成时间:</span>
<p class="list-content-text" v-if="item.buildingProjectType"> <span>{{item.planCompletionDate}}年</span>
<span>归属产业:</span> </p>
<span>{{item.buildingProjectType}}</span> </div>
</p> <div class="list-content list-content1"
<p class="list-content-text" v-if="item.projectTotalInvestment>0"> v-if="item.buildingProjectType||item.completedInvestment||item.completedPlanInvestment||item.projectTotalInvestment">
<span>项目投资金额:</span> <p class="list-content-text" v-if="item.buildingProjectType">
<span>{{item.projectTotalInvestment}}万元</span> <span>项目类型:</span>
</p> <span>{{item.buildingProjectType}}</span>
<p class="list-content-text" v-if="item.completedInvestment>0"> </p>
<span>已完成投资额:</span> <p class="list-content-text" v-if="item.projectTotalInvestment>0">
<span>{{item.completedInvestment}}万元</span> <span>项目投资金额:</span>
</p> <span>{{item.projectTotalInvestment}}万元</span>
<p class="list-content-text" v-if="item.completedPlanInvestment>0"> </p>
<span>年度投资金额:</span> <p class="list-content-text" v-if="item.completedInvestment>0">
<span>{{item.completedPlanInvestment}}万元</span> <span>已完成投资额:</span>
</p> <span>{{item.completedInvestment}}万元</span>
</div> </p>
<div class="list-content list-content1" v-if="item.chargeDepartment||item.contactPersonAndTel||item.constructUnit"> <p class="list-content-text" v-if="item.completedPlanInvestment>0">
<p class="list-content-text" v-if="item.chargeDepartment"> <span>年度投资金额:</span>
<span>主管部门:</span> <span>{{item.completedPlanInvestment}}万元</span>
<span v-html="item.chargeDepartment"></span> </p>
</p> </div>
<p class="list-content-text" v-if="item.constructUnit"> <div class="list-content list-content1" v-if="item.chargeDepartment||item.contactPersonAndTel||item.constructUnit">
<span>项目法人:</span> <p class="list-content-text" v-if="item.chargeDepartment">
<span v-if="item.constructUnitId"> <span>主管部门:</span>
<span class="blue" @click="getUipIdByCid(item.constructUnitId)" v-html="item.constructUnit"></span> <span v-html="item.chargeDepartment"></span>
</span> </p>
<span v-else v-html="item.constructUnit"></span> <p class="list-content-text" v-if="item.constructUnit">
</p> <span>项目法人:</span>
<p class="list-content-text" v-if="item.contactPersonAndTel"> <span v-if="item.constructUnitId">
<span>联系人及联系方式:</span> <span class="blue" @click="getUipIdByCid(item.constructUnitId)" v-html="item.constructUnit"></span>
<span>{{item.contactPersonAndTel}}</span> </span>
</p> <span v-else v-html="item.constructUnit"></span>
</div> </p>
<div class="list-content list-content1" v-if="item.projectScale"> <p class="list-content-text" v-if="item.contactPersonAndTel">
<p class="list-content-text" v-if="item.projectScale"> <span>联系人及联系方式:</span>
<span>建设规模:</span> <span>{{item.contactPersonAndTel}}</span>
<span style="flex:1;" v-html="item.projectScale"></span> </p>
</p> </div>
</div> <div class="list-content list-content1" v-if="item.projectScale">
</li> <p class="list-content-text" v-if="item.projectScale">
</ul> <span>建设规模:</span>
<div class="pagination clearfix" v-if="total>0&&pageFlag"> <span style="flex:1;" v-html="item.projectScale"></span>
<el-pagination </p>
background </div>
:page-size="limit" </li>
:current-page="page" </ul>
@current-change="handleCurrentChange" <div class="pagination clearfix" v-if="total>0&&pageFlag">
layout="prev, pager, next" <el-pagination background :page-size="limit" :current-page="page" @current-change="handleCurrentChange" layout="prev, pager, next"
:total="total>limit*500?501*limit:total"> :total="total>limit*500?501*limit:total">
</el-pagination> </el-pagination>
</div> </div>
</div> </div>
<el-dialog :visible.sync="dialogExportVisible" width="640px" append-to-body class="dialogExport"> <el-dialog :visible.sync="dialogExportVisible" width="640px" append-to-body class="dialogExport">
<template slot="title"> <template slot="title">
<img class="tip-img" src="@/assets/images/icon.png" />数据导出 <img class="tip-img" src="@/assets/images/icon.png" />数据导出
</template> </template>
...@@ -284,208 +277,220 @@ ...@@ -284,208 +277,220 @@
<script> <script>
import jsk_data from '../../../../../public/jsk.json'; import jsk_data from '../../../../../public/jsk.json';
import {encodeStr} from "@/assets/js/common.js" import { encodeStr } from "@/assets/js/common.js";
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton';
import api from '@/api/radar/radar.js'; import api from '@/api/radar/radar.js';
export default { export default {
name: 'MajorProject', name: 'MajorProject',
components:{skeleton}, components: { skeleton },
data() { data() {
return { return {
encodeStr, encodeStr,
dialogExportVisible1:false, dialogExportVisible1: false,
exportTableData:[ exportTableData: [
{ {
"domicile":"江津区", "domicile": "江津区",
"chargeDepartment":"兴庆区商合局", "chargeDepartment": "兴庆区商合局",
"constructUnit":'鞍钢股份有限公司', "constructUnit": '鞍钢股份有限公司',
"projectScale":"项目建设规划总面积约3000亩,其中商住用地面积2000亩,文化旅游综合用地约1000亩,打造集“市井民俗文化体验、休闲度假、亲子研学等”为一体的复合型文化旅游目的地,企业已完成项目规划方案。", "projectScale": "项目建设规划总面积约3000亩,其中商住用地面积2000亩,文化旅游综合用地约1000亩,打造集“市井民俗文化体验、休闲度假、亲子研学等”为一体的复合型文化旅游目的地,企业已完成项目规划方案。",
"fileTitle":"宁夏回族自治区银川市2023年度重点项目清单.pdf", "fileTitle": "宁夏回族自治区银川市2023年度重点项目清单.pdf",
"fileUrl":"http://file.jiansheku.com/key_project/b9e22fbf2e409642aa97f8238e934272.pdf", "fileUrl": "http://file.jiansheku.com/key_project/b9e22fbf2e409642aa97f8238e934272.pdf",
"buildingProjectType":"房建工程", "buildingProjectType": "房建工程",
"projectTotalInvestment":"70000万元", "projectTotalInvestment": "70000万元",
"projectName":"'上河堡'文旅综合体项目", "projectName": "'上河堡'文旅综合体项目",
}, },
{ {
"domicile":"江津区", "domicile": "江津区",
"chargeDepartment":"国网重庆江津区供电公司", "chargeDepartment": "国网重庆江津区供电公司",
"constructUnit":'国网重庆江津区供电公司', "constructUnit": '国网重庆江津区供电公司',
"projectScale":"新建110kV变电站1座,主变容量2*50MVA,新建110kV线路20km", "projectScale": "新建110kV变电站1座,主变容量2*50MVA,新建110kV线路20km",
"fileTitle":"重庆市江津区2023年度重点项目清单.xlsx", "fileTitle": "重庆市江津区2023年度重点项目清单.xlsx",
"fileUrl":"http://file.jiansheku.com/key_project/4080bef69da03056d1db953698f4d807.xlsx", "fileUrl": "http://file.jiansheku.com/key_project/4080bef69da03056d1db953698f4d807.xlsx",
"buildingProjectType":"电力工程", "buildingProjectType": "电力工程",
"projectTotalInvestment":"5500万元", "projectTotalInvestment": "5500万元",
"projectName":"重庆江津李市110kV输变电工程", "projectName": "重庆江津李市110kV输变电工程",
}], }],
exportData:{}, exportData: {},
fieldshow: false, fieldshow: false,
fieldText: '默认排序', fieldText: '默认排序',
field: 'year', //查询结果排序方式 field: 'year', //查询结果排序方式
fieldOptions: [{ fieldOptions: [{
key: "year", key: "year",
value: "默认排序", value: "默认排序",
status: true, status: true,
}, },
{ {
key: "planStartDate", key: "planStartDate",
value: "按拟开工时间倒序", value: "按拟开工时间倒序",
status: false, status: false,
}, },
{ {
key: "planCompletionDate", key: "planCompletionDate",
value: "按拟建成时间倒序", value: "按拟建成时间倒序",
status: false, status: false,
}, },
{ {
key: "projectTotalInvestment", key: "projectTotalInvestment",
value: "按项目总投资金额倒序", value: "按项目总投资金额倒序",
status: false, status: false,
}, },
], ],
isSkeleton:true, isSkeleton: true,
addressList: [], addressList: [],
addressType: [], addressType: [],
props: { props: {
multiple: true, multiple: true,
expandTrigger: "hover", expandTrigger: "hover",
value: "id", value: "id",
}, },
keywordTypeList:[ keywordTypeList: [
{ {
value:'projectName', value: 'projectName',
label:'项目名称' label: '项目名称'
}, },
{ {
value:'constructUnit', value: 'constructUnit',
label:'项目法人' label: '项目法人'
}, },
{ {
value:'chargeDepartment', value: 'chargeDepartment',
label:'主管单位' label: '主管单位'
}, },
{ {
value:'projectScale', value: 'projectScale',
label:'建设规模' label: '建设规模'
} }
], ],
projectLevelOption:[ projectLevelOption: [
{ {
label:"省级", label: "省级",
value:"省级", value: "省级",
}, },
{ {
label:"市级", label: "市级",
value:"市级", value: "市级",
}, },
{ {
label:"区/县级", label: "区/县级",
value:"区县级", value: "区县级",
} }
], ],
years:[], years: [],
fileTitleOptions:[], fileTitleOptions: [],
importantProjectDto: { importantProjectDto: {
province: [], province: [],
city: [], city: [],
area: [], area: [],
year:[], year: [],
fileTitle:[], fileTitle: [],
buildingProjectType:[], buildingProjectType: [],
keywordStr:['projectName'], keywordStr: ['projectName'],
keyword:'', keyword: '',
projectLevel:[], projectLevel: [],
}, },
startMoney: "", startMoney: "",
endMoney: "", endMoney: "",
transactionPriceShowPopper: false, transactionPriceShowPopper: false,
projectTypeList:[], projectTypeList: [],
transactionPriceOptions: [ transactionPriceOptions: [
{ {
value: [0, 20000], value: [0, 20000],
label: "2亿以下", label: "2亿以下",
}, },
{ {
value: [20000, ""], value: [20000, ""],
label: "2亿以上", label: "2亿以上",
}, },
{ {
value: [50000, ""], value: [50000, ""],
label: "5亿以上", label: "5亿以上",
}, },
{ {
value: [80000, ""], value: [80000, ""],
label: "8亿以上", label: "8亿以上",
}, },
{ {
value: [100000, ""], value: [100000, ""],
label: "10亿以上", label: "10亿以上",
}, },
], ],
showNum:10, showNum: 10,
importantProjectDto: { importantProjectDto: {
province: [], province: [],
city: [], city: [],
area: [], area: [],
year:[], year: [],
fileTitle:[], fileTitle: [],
buildingProjectType:[], buildingProjectType: [],
keywordStr:['projectName'], keywordStr: ['projectName'],
keyword:'', keyword: '',
projectLevel:[], projectLevel: [],
}, },
provinceText:[], provinceText: [],
pageFlag: true, pageFlag: true,
conditionsArr: [], conditionsArr: [],
tableData:[], tableData: [],
domicile:[], domicile: [],
total:0, total: 0,
page: 1, page: 1,
limit: 20, limit: 20,
dataEXCEL:{}, dataEXCEL: {},
dialogExportVisible:false, dialogExportVisible: false,
value:'' value: ''
}; };
}, },
mounted() { mounted() {
this.addressListfn(); this.addressListfn();
this.search(); this.search();
this.getComdtion(); this.getComdtion();
this.getImportantSelect(); this.getImportantSelect();
}, },
methods: { methods: {
getComdtion(){ getBackGround(key) {
api.getImportantCondition().then(res=>{ switch (key) {
if(res.code==200){ case "市级":
this.years = res.data.year; return "the-city";
this.projectTypeList = res.data.type; case "省级":
} return "the-province";
}) case "区县级":
}, return "the-area";
changeYear(){ default:
this.fileTitleOptions = []; break;
if(this.importantProjectDto.year.length){ }
this.getImportantSelect() },
} getComdtion() {
}, api.getImportantCondition().then(res => {
getImportantSelect(){ if (res.code == 200) {
let data = { this.years = res.data.year;
year:this.importantProjectDto.year.join(','), this.projectTypeList = res.data.type;
province:this.importantProjectDto.province.join(','), }
city:this.importantProjectDto.city.join(','), });
area:this.importantProjectDto.area.join(','), },
} changeYear() {
api.getImportantSelect(data).then(res=>{ this.fileTitleOptions = [];
if(res.code==200){ if (this.importantProjectDto.year.length) {
this.fileTitleOptions = res.data this.getImportantSelect();
} }
}) },
}, getImportantSelect() {
let data = {
year: this.importantProjectDto.year.join(','),
province: this.importantProjectDto.province.join(','),
city: this.importantProjectDto.city.join(','),
area: this.importantProjectDto.area.join(','),
};
api.getImportantSelect(data).then(res => {
if (res.code == 200) {
this.fileTitleOptions = res.data;
}
});
},
refresh(value) { refresh(value) {
if(value) { if (value) {
this.$router.go(0) this.$router.go(0);
} }
}, },
search(page, limit,exportFlag) { search(page, limit, exportFlag) {
if (!page) { if (!page) {
this.page = 1; this.page = 1;
} }
...@@ -504,69 +509,69 @@ export default { ...@@ -504,69 +509,69 @@ export default {
data.year = data.year.join(","); data.year = data.year.join(",");
data.fileTitle = data.fileTitle.join(","); data.fileTitle = data.fileTitle.join(",");
data.buildingProjectType = data.buildingProjectType.join(","); data.buildingProjectType = data.buildingProjectType.join(",");
for(var i in data){ for (var i in data) {
if(!data[i]){ if (!data[i]) {
delete data[i] delete data[i];
} }
} }
let params = { let params = {
page: { page: {
page: this.page, page: this.page,
limit: this.limit, limit: this.limit,
field: this.field, field: this.field,
"order": "desc" "order": "desc"
}, },
importantProjectDto: data, importantProjectDto: data,
}; };
this.dataEXCEL = params this.dataEXCEL = params;
api.getImportantPage(params).then(res=>{ api.getImportantPage(params).then(res => {
this.isSkeleton = false; this.isSkeleton = false;
if (res.code==200) { if (res.code == 200) {
this.tableData=res.data.list; this.tableData = res.data.list;
this.total=res.data.total; this.total = res.data.total;
}else{ } else {
this.$message.error(res.msg) this.$message.error(res.msg);
} }
}).catch(error=>{ }).catch(error => {
}); });
},
getUipIdByCid(companyId) {
var params = [companyId];
api.getUipIdByCid(params).then(res => {
if (res.code == 200) {
if (res.data && res.data.length > 0 && res.data[0].uipId) {
this.$router.push({ path: '/enterprise/' + this.encodeStr(companyId) });
} else {
this.$router.push({ path: '/company/' + this.encodeStr(companyId) });
}
}
}).catch(error => {
});
}, },
getUipIdByCid(companyId){
var params=[companyId]
api.getUipIdByCid(params).then(res=>{
if (res.code==200) {
if(res.data&&res.data.length>0&&res.data[0].uipId){
this.$router.push({path: '/enterprise/'+this.encodeStr(companyId)})
}else{
this.$router.push({path: '/company/'+this.encodeStr(companyId)})
}
}
}).catch(error=>{
});
},
//关闭支付弹窗 //关闭支付弹窗
resolve(value) { resolve(value) {
if (value) { if (value) {
this.$router.go(0) this.$router.go(0);
} }
}, },
changeMoney(text) { changeMoney(text) {
if ( if (
this.importantProjectDto.startMoney && this.importantProjectDto.startMoney &&
this.importantProjectDto.endMoney && this.importantProjectDto.endMoney &&
Number(this.importantProjectDto.startMoney) > Number(this.importantProjectDto.startMoney) >
Number(this.importantProjectDto.endMoney) Number(this.importantProjectDto.endMoney)
) { ) {
this.$message.warning("最低金额不能大于最高金额!"); this.$message.warning("最低金额不能大于最高金额!");
text == "start" ? text == "start" ?
(this.importantProjectDto.startMoney = "") : (this.importantProjectDto.startMoney = "") :
(this.importantProjectDto.endMoney = ""); (this.importantProjectDto.endMoney = "");
} }
}, },
reloadPage() { reloadPage() {
this.pageFlag = false; this.pageFlag = false;
this.$nextTick(() => { this.$nextTick(() => {
...@@ -574,13 +579,13 @@ export default { ...@@ -574,13 +579,13 @@ export default {
}); });
}, },
handleCurrentChange(page) { handleCurrentChange(page) {
if(page>500){ if (page > 500) {
this.$message.warning(`对不起,最多只能访问500页`); this.$message.warning(`对不起,最多只能访问500页`);
this.reloadPage() this.reloadPage();
}else{ } else {
this.page = page; this.page = page;
this.search(page, this.limit); this.search(page, this.limit);
} }
}, },
handleSizeChange(limit) { handleSizeChange(limit) {
this.limit = limit; this.limit = limit;
...@@ -613,63 +618,63 @@ export default { ...@@ -613,63 +618,63 @@ export default {
obj.city = city; obj.city = city;
obj.area = area; obj.area = area;
this.importantProjectDto = obj; this.importantProjectDto = obj;
this.fileTitleOptions = []; this.fileTitleOptions = [];
if(this.domicile.length){ if (this.domicile.length) {
this.getImportantSelect() this.getImportantSelect();
} }
},
transactionPricehandleCommand(command) {
if (command) {
this.$refs.transactionPriceShowPopper.hide();
var obj = JSON.parse(JSON.stringify(this.importantProjectDto));
this.startMoney = "";
this.endMoney = "";
if (command == "不限") {
obj.startMoney = "";
obj.endMoney = "";
} else {
obj.startMoney = command[0];
obj.endMoney = command[1];
}
this.importantProjectDto = obj;
}
},
transactionPriceCancel() {
this.transactionPriceShowPopper = false;
this.$refs.transactionPriceShowPopper.hide();
},
transactionPricePopperConfirm() {
if (
this.startMoney &&
this.endMoney &&
!(Number(this.endMoney) > Number(this.startMoney))
) {
return this.$message.warning("最小值必须小于最大值,请重新输入!");
}
this.transactionPriceShowPopper = false;
var obj = JSON.parse(JSON.stringify(this.importantProjectDto));
obj.startMoney = this.startMoney;
obj.endMoney = this.endMoney;
this.importantProjectDto = obj;
this.$refs.transactionPriceShowPopper.hide();
}, },
transactionPricehandleCommand(command) { transactionPricehandleCommand(command) {
if (command) { if (command) {
this.$refs.transactionPriceShowPopper.hide(); this.$refs.transactionPriceShowPopper.hide();
var obj = JSON.parse(JSON.stringify(this.importantProjectDto)); var obj = JSON.parse(JSON.stringify(this.importantProjectDto));
this.startMoney = ""; this.startMoney = "";
this.endMoney = ""; this.endMoney = "";
if (command == "不限") { if (command == "不限") {
obj.startMoney = ""; obj.startMoney = "";
obj.endMoney = ""; obj.endMoney = "";
} else { } else {
obj.startMoney = command[0]; obj.startMoney = command[0];
obj.endMoney = command[1]; obj.endMoney = command[1];
} }
this.importantProjectDto = obj; this.importantProjectDto = obj;
} }
}, },
transactionPriceCancel() {
this.transactionPriceShowPopper = false;
this.$refs.transactionPriceShowPopper.hide();
},
transactionPricePopperConfirm() {
if (
this.startMoney &&
this.endMoney &&
!(Number(this.endMoney) > Number(this.startMoney))
) {
return this.$message.warning("最小值必须小于最大值,请重新输入!");
}
this.transactionPriceShowPopper = false;
var obj = JSON.parse(JSON.stringify(this.importantProjectDto));
obj.startMoney = this.startMoney;
obj.endMoney = this.endMoney;
this.importantProjectDto = obj;
this.$refs.transactionPriceShowPopper.hide();
},
transactionPricehandleCommand(command) {
if (command) {
this.$refs.transactionPriceShowPopper.hide();
var obj = JSON.parse(JSON.stringify(this.importantProjectDto));
this.startMoney = "";
this.endMoney = "";
if (command == "不限") {
obj.startMoney = "";
obj.endMoney = "";
} else {
obj.startMoney = command[0];
obj.endMoney = command[1];
}
this.importantProjectDto = obj;
}
},
addressListfn() { addressListfn() {
var str = []; var str = [];
for (let x = 0; x < 3; x++) { for (let x = 0; x < 3; x++) {
...@@ -680,9 +685,9 @@ export default { ...@@ -680,9 +685,9 @@ export default {
label: jsk_data[i].regionName, label: jsk_data[i].regionName,
short: jsk_data[i].short, short: jsk_data[i].short,
value: jsk_data[i].parentId, value: jsk_data[i].parentId,
children:jsk_data[i].id==900000?undefined:[], children: jsk_data[i].id == 900000 ? undefined : [],
}); });
} else if (jsk_data[i].regionLevel == x + 1 && x + 1 == 2&&str) { } else if (jsk_data[i].regionLevel == x + 1 && x + 1 == 2 && str) {
for (let j = 0; j < str.length; j++) { for (let j = 0; j < str.length; j++) {
if (str[j].id == jsk_data[i].parentId) { if (str[j].id == jsk_data[i].parentId) {
str[j].children.push({ str[j].children.push({
...@@ -696,7 +701,7 @@ export default { ...@@ -696,7 +701,7 @@ export default {
} }
} else if (jsk_data[i].regionLevel == x + 1 && x + 1 == 3) { } else if (jsk_data[i].regionLevel == x + 1 && x + 1 == 3) {
for (let j = 0; j < str.length; j++) { for (let j = 0; j < str.length; j++) {
if(str[j].children){ if (str[j].children) {
for (let k = 0; k < str[j].children.length; k++) { for (let k = 0; k < str[j].children.length; k++) {
if (str[j].children[k].id == jsk_data[i].parentId) { if (str[j].children[k].id == jsk_data[i].parentId) {
str[j].children[k].children.push({ str[j].children[k].children.push({
...@@ -714,428 +719,444 @@ export default { ...@@ -714,428 +719,444 @@ export default {
} }
this.addressList = str; this.addressList = str;
}, },
reset() { reset() {
Object.assign(this.$data, this.$options.data.call(this)); //重置data Object.assign(this.$data, this.$options.data.call(this)); //重置data
this.init(); this.init();
this.$emit("reset"); this.$emit("reset");
}, },
init(){ init() {
this.search(); this.search();
this.addressListfn(); this.addressListfn();
this.getComdtion(); this.getComdtion();
}, },
handsequencingList(index) { handsequencingList(index) {
this.fieldshow = false; this.fieldshow = false;
this.field = this.fieldOptions[index].key; this.field = this.fieldOptions[index].key;
for (let i = 0; i < this.fieldOptions.length; i++) { for (let i = 0; i < this.fieldOptions.length; i++) {
this.fieldOptions[i].status = false; this.fieldOptions[i].status = false;
} }
this.fieldText = this.fieldOptions[index].value; this.fieldText = this.fieldOptions[index].value;
this.fieldOptions[index].status = true; this.fieldOptions[index].status = true;
this.search(); this.search();
}, },
clickDialog(){ clickDialog() {
this.dialogExportVisible=true; this.dialogExportVisible = true;
}, },
clickEXCEL() { clickEXCEL() {
if(this.value > 2000){ if (this.value > 2000) {
return return;
} }
this.dialogExportVisible=false; this.dialogExportVisible = false;
if(this.value){ if (this.value) {
this.dataEXCEL.page.limit=this.value this.dataEXCEL.page.limit = this.value;
}else { } else {
this.dataEXCEL.page.limit=this.total > 2000 ? 2000 : this.total; this.dataEXCEL.page.limit = this.total > 2000 ? 2000 : this.total;
} }
delete this.dataEXCEL.page.page delete this.dataEXCEL.page.page;
api.radarExport(this.dataEXCEL).then(res=>{ api.radarExport(this.dataEXCEL).then(res => {
if(res.code === 200){ if (res.code === 200) {
this.dialogExportVisible1=true; this.dialogExportVisible1 = true;
this.value='' this.value = '';
this.exportData=res.data; this.exportData = res.data;
}
})
},
cancel(){
this.dialogExportVisible=false
this.value=''
},
downloadFile(url, fileName) {
const x = new XMLHttpRequest()
x.open("GET", url, true)
x.responseType = 'blob'
x.onload=function(e) {
const url = window.URL.createObjectURL(x.response)
const a = document.createElement('a')
a.href = url
a.download = fileName
a.click()
a.remove()
} }
x.send() });
}, },
toUrl(){ cancel() {
this.dialogExportVisible1=false; this.dialogExportVisible = false;
this.$router.push({ this.value = '';
path: '/user/profile', },
}) downloadFile(url, fileName) {
}, const x = new XMLHttpRequest();
x.open("GET", url, true);
x.responseType = 'blob';
x.onload = function (e) {
const url = window.URL.createObjectURL(x.response);
const a = document.createElement('a');
a.href = url;
a.download = fileName;
a.click();
a.remove();
};
x.send();
},
toUrl() {
this.dialogExportVisible1 = false;
this.$router.push({
path: '/user/profile',
});
},
}, },
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.content {
.content{ padding: 0px 16px;
padding: 0px 16px; padding-top: 16px;
padding-top: 16px; border-radius: 4px 4px 4px 4px;
border-radius: 4px 4px 4px 4px; background: #ffffff;
background: #FFFFFF; .content_item {
.content_item{ padding-top: 20px;
padding-top: 20px; display: flex;
display: flex; align-items: baseline;
align-items: baseline; .label {
.label{ width: 84px;
width: 84px; font-size: 14px;
font-size: 14px; font-weight: 400;
font-weight: 400; color: rgba(35, 35, 35, 0.8);
color: rgba(35,35,35,0.8); }
} .content_right {
.content_right{ .ename_input {
.ename_input{ width: 240px;
width: 240px; margin-right: 20px;
margin-right: 20px; }
} .keyword_checkbox {
.keyword_checkbox{ margin-top: 6px;
margin-top: 6px; }
} .el-checkbox-group {
.el-checkbox-group{ display: inline-block;
display: inline-block; }
} .checkbox_1122 {
.checkbox_1122{ width: 1122px;
width: 1122px; margin-right: 6px;
margin-right: 6px; }
} .el-checkbox {
.el-checkbox{ margin-right: 24px;
margin-right: 24px; margin-bottom: 16px;
margin-bottom: 16px; ::v-deep .el-checkbox__label {
::v-deep .el-checkbox__label{ padding-left: 8px;
padding-left: 8px; }
} }
} .more {
.more{ font-size: 12px;
font-size: 12px; cursor: pointer;
cursor: pointer; color: #0081ff;
color: #0081FF; img {
img{ width: 6px;
width: 6px; margin-bottom: 2px;
margin-bottom: 2px; height: 4px;
height: 4px; margin-left: 4px;
margin-left: 4px; }
} }
} .more1 {
.more1{ img {
img{ transform: rotate(180deg);
transform: rotate(180deg); }
} }
} }
}
.item_ckquery_list {
.item_ckquery_list { display: flex;
display: flex; }
}
.item_ckquery_list .el-input__icon {
.item_ckquery_list .el-input__icon { position: relative;
position: relative; top: 1px;
top: 1px; }
} .ckquery_list_right {
.ckquery_list_right { width: 640px;
width: 640px; }
} .register_count_ipt {
.register_count_ipt{ margin-left: 0px;
margin-left: 0px; }
.register_count_ipt .el-input__inner {
} width: 174px;
.register_count_ipt .el-input__inner{ }
width: 174px; ::v-deep .el-input-group__prepend {
} padding: 0 8px;
::v-deep .el-input-group__prepend{ }
padding: 0 8px; .content-projecttype {
} display: flex;
.content-projecttype{ align-items: center;
display: flex; justify-content: center;
align-items: center; .projecttype {
justify-content: center; font-weight: 400;
.projecttype{ color: #232323;
padding: 1px 5px;
margin-right: 4px;
cursor: pointer;
border-radius: 3px 3px 3px 3px;
font-size: 14px;
}
.projecttype:first-child {
padding-left: 0px;
}
.projecttype:hover {
background: #f3f4f5;
padding: 1px 5px;
}
.activetype {
background: #f3f4f5;
padding: 1px 5px !important;
}
}
}
.content_item1 {
display: block;
}
.content_item_padding0 {
padding: 0;
}
}
.bottomlist {
width: 100%;
background-color: #ffffff;
border-radius: 4px 4px 4px 4px;
.bottomlist-title {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 12px;
padding: 16px;
border-bottom: 1px solid #efefef;
.title-right {
display: flex;
align-items: center;
p:last-child {
display: flex;
align-items: center;
font-size: 14px;
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
}
img {
width: 18px;
height: 18px;
}
.excel {
cursor: pointer;
}
}
.bottomlist-title-left {
display: inline-flex;
align-items: center;
.title-left {
height: 16px;
line-height: 16px;
font-size: 12px;
font-weight: 400;
color: #3d3d3d;
}
}
}
.bottomlist-content {
padding-bottom: 0px;
}
.bottomlist-list {
padding: 16px;
font-size: 14px;
border-bottom: 1px solid #efefef;
padding-bottom: 14px;
.list-titel {
font-size: 16px;
font-weight: 700;
color: #3d3d3d;
line-height: 19px;
.list-titel-a {
text-decoration: none;
color: #3d3d3d;
}
a:hover,
a:visited,
a:link,
a:active {
color: #3d3d3d;
}
}
.content-label {
margin-top: 8px;
.list-label {
background: #f3f3ff;
color: #8491e8;
border-radius: 1px 1px 1px 1px;
padding: 3px 7px;
font-size: 12px;
margin-right: 8px;
}
}
.list-content {
margin-top: 8px;
display: flex;
justify-content: start;
align-items: center;
.list-content-text {
display: flex;
justify-content: start;
align-items: baseline;
margin-right: 32px;
font-size: 14px;
span:first-child {
font-weight: 400;
color: rgba(35, 35, 35, 0.4);
line-height: 20px;
}
span:last-child {
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
line-height: 20px;
}
.blue {
color: #0081ff !important;
cursor: pointer;
}
}
}
.list-addree {
width: auto;
background: #f3f4f5;
display: inline-flex;
margin-top: 7px;
.list-content-text {
margin-top: 0px;
span {
line-height: 30px !important;
}
}
img {
width: 14px;
margin: 0 8px;
}
}
.list-content1 {
margin-top: 12px;
}
.project-name-of-level {
display: flex;
align-items: center;
.project-of-level {
height: 22px;
line-height: 22px;
text-align: center;
padding: 0px 4px;
font-size: 12px;
font-weight: 400; font-weight: 400;
color: #232323; color: #fff;
padding: 1px 5px; border-radius: 2px;
margin-right: 4px; box-sizing: border-box;
cursor: pointer; margin-right: 8px;
border-radius: 3px 3px 3px 3px;
font-size: 14px; &.the-city {
} background: #ff8c00;
.projecttype:first-child{
padding-left: 0px;
}
.projecttype:hover{
background: #F3F4F5;
padding: 1px 5px;
}
.activetype{
background: #F3F4F5;
padding: 1px 5px !important;
}
}
}
.content_item1{
display: block;
}
.content_item_padding0{
padding: 0;
}
}
.bottomlist{
width: 100%;
background-color: #FFFFFF;
border-radius: 4px 4px 4px 4px;
.bottomlist-title{
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 12px;
padding: 16px ;
border-bottom: 1px solid #EFEFEF;
.title-right{
display: flex;
align-items: center;
p:last-child{
display: flex;
align-items: center;
font-size: 14px;
font-weight: 400;
color: rgba(35,35,35,0.8);
}
img{
width: 18px;
height: 18px;
}
.excel{
cursor: pointer;
}
}
.bottomlist-title-left{
display: inline-flex;;
align-items: center;
.title-left{
height:16px;
line-height: 16px;
font-size: 12px;
font-weight: 400;
color: #3D3D3D;
}
}
}
.bottomlist-content{
padding-bottom: 0px;
}
.bottomlist-list{
padding: 16px;
font-size: 14px;
border-bottom: 1px solid #EFEFEF;
padding-bottom: 14px;
.list-titel{
font-size: 16px;
font-weight: 700;
color: #3D3D3D;
line-height: 19px;
.list-titel-a{
text-decoration: none;
color:#3D3D3D;
}
a:hover, a:visited, a:link, a:active{
color:#3D3D3D;
}
}
.content-label{
margin-top: 8px;
.list-label{
background: #F3F3FF;
color: #8491E8;
border-radius: 1px 1px 1px 1px;
padding: 3px 7px;
font-size: 12px;
margin-right: 8px;
}
}
.list-content{
margin-top: 8px;
display: flex;
justify-content: start;
align-items: center;
.list-content-text{
display: flex;
justify-content: start;
align-items: baseline;
margin-right: 32px;
font-size: 14px;
span:first-child{
font-weight: 400;
color: rgba(35,35,35,0.4);
line-height: 20px
}
span:last-child{
font-weight: 400;
color: rgba(35,35,35,0.8);
line-height: 20px
}
.blue{
color: #0081FF !important;
cursor: pointer;
}
}
}
.list-addree{
width: auto;
background: #F3F4F5;
display: inline-flex;
margin-top: 7px;
.list-content-text{
margin-top: 0px;
span{
line-height: 30px!important;
}
}
img{
width: 14px;
margin: 0 8px;
}
}
.list-content1{
margin-top: 12px;
}
}
.bottomlist-list:hover{
background: #F6F9FC;
cursor: pointer;
}
.pagination{
padding: 14px ;
.el-pagination{
float: right;
}
}
}
.jabph_popper_box{
left: 101px;
}
.dialogExport{
::v-deep .el-dialog{
.el-dialog__header{
height: 48px;
line-height: 48px;
padding: 0 16px;
border-bottom: 1px solid #E1E1E1;
font-weight: bold;
color: #1D2129;
font-size: 16px;
.tip-img{
width: 18px;
height: 18px;
margin-right: 7px;
margin-bottom: -3px;
} }
.el-dialog__headerbtn{
font-size: 20px; &.the-province {
font-weight: bold; background: #0081ff;
top: 15px; }
.el-dialog__close{
color:#999999; &.the-area {
} background: #0cbc6d;
}
}
}
}
.bottomlist-list:hover {
background: #f6f9fc;
cursor: pointer;
}
.pagination {
padding: 14px;
.el-pagination {
float: right;
}
}
}
.jabph_popper_box {
left: 101px;
}
.dialogExport {
::v-deep .el-dialog {
.el-dialog__header {
height: 48px;
line-height: 48px;
padding: 0 16px;
border-bottom: 1px solid #e1e1e1;
font-weight: bold;
color: #1d2129;
font-size: 16px;
.tip-img {
width: 18px;
height: 18px;
margin-right: 7px;
margin-bottom: -3px;
}
.el-dialog__headerbtn {
font-size: 20px;
font-weight: bold;
top: 15px;
.el-dialog__close {
color: #999999;
} }
} }
.el-dialog__body{ }
padding: 16px; .el-dialog__body {
.input{ padding: 16px;
margin-top: 16px; .input {
.el-input{ margin-top: 16px;
width: 160px; .el-input {
border-radius: 2px; width: 160px;
border-radius: 2px;
height: 32px;
.el-input__inner {
height: 32px; height: 32px;
.el-input__inner{ line-height: 32px;
height: 32px;
line-height: 32px;
}
}
.el-input-group__append{
padding: 0 14px;
}
p{
color: #FF3C3C;
font-size: 12px;
margin-left: 12px;
display: inline-block;
i{
font-size: 14px;
margin-right: 4px;
}
} }
} }
.content{ .el-input-group__append {
text-align: center; padding: 0 14px;
margin-top: 36px; }
.success{ p {
width: 64px; color: #ff3c3c;
height: 64px; font-size: 12px;
margin-bottom: 16px; margin-left: 12px;
} display: inline-block;
p{ i {
padding: 0;
margin: 0;
}
.p1{
color: #232323;
font-size: 16px;
margin-bottom: 8px;
}
.p2{
color: rgba(35,35,35,0.4);
font-size: 14px; font-size: 14px;
span{ margin-right: 4px;
color:#0081FF;
cursor: pointer;
}
} }
} }
} }
.el-dialog__footer{ .content {
text-align: center; text-align: center;
padding-bottom: 24px; margin-top: 36px;
.success {
width: 64px;
height: 64px;
margin-bottom: 16px;
}
p {
padding: 0;
margin: 0;
}
.p1 {
color: #232323;
font-size: 16px;
margin-bottom: 8px;
}
.p2 {
color: rgba(35, 35, 35, 0.4);
font-size: 14px;
span {
color: #0081ff;
cursor: pointer;
}
}
} }
} }
.el-dialog__footer {
text-align: center;
padding-bottom: 24px;
}
} }
}
</style> </style>
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