Commit 38db4af6 authored by yht15023815643's avatar yht15023815643

业务往来

parent 9703e530
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
"axios": "0.24.0", "axios": "0.24.0",
"clipboard": "2.0.8", "clipboard": "2.0.8",
"core-js": "3.25.3", "core-js": "3.25.3",
"echarts": "^5.4.0", "echarts": "^5.0.0",
"element-resize-detector": "^1.2.4", "element-resize-detector": "^1.2.4",
"element-ui": "2.15.12", "element-ui": "2.15.12",
"file-saver": "2.0.5", "file-saver": "2.0.5",
......
...@@ -80,3 +80,11 @@ export function tenderPage(data) { ...@@ -80,3 +80,11 @@ export function tenderPage(data) {
data: data data: data
}) })
} }
// 客户-供应商下拉框
export function getSelect(data) {
return request({
url: '/enterpriseBussiness/select',
method: 'post',
data: data
})
}
...@@ -147,7 +147,7 @@ let centralEnterprselocalPage= function centralEnterprselocalPage(param) { ...@@ -147,7 +147,7 @@ let centralEnterprselocalPage= function centralEnterprselocalPage(param) {
data: param data: param
}) })
} }
// 民营集团 // 其他集团
let centralEnterprsesocial= function centralEnterprsesocial(param) { let centralEnterprsesocial= function centralEnterprsesocial(param) {
return request({ return request({
url: '/combine/info/centralEnterprse/social', url: '/combine/info/centralEnterprse/social',
...@@ -155,7 +155,7 @@ let centralEnterprsesocial= function centralEnterprsesocial(param) { ...@@ -155,7 +155,7 @@ let centralEnterprsesocial= function centralEnterprsesocial(param) {
data: param data: param
}) })
} }
// 民营集团更多 // 其他集团更多
let centralEnterprsesocialPage= function centralEnterprsesocialPage(param) { let centralEnterprsesocialPage= function centralEnterprsesocialPage(param) {
return request({ return request({
url: '/combine/info/centralEnterprse/social/page', url: '/combine/info/centralEnterprse/social/page',
......
...@@ -219,3 +219,52 @@ export function allRecord(param) { ...@@ -219,3 +219,52 @@ export function allRecord(param) {
params:param, params:param,
}) })
} }
//项目状态统计
export function getStatistics(param) {
return request({
url: '/business/overview/status/statistics',
method: 'get',
params:param,
})
}
//储备项目统计
export function getCount(param) {
return request({
url: '/business/overview/type/analyze/'+param,
method: 'get',
params:param,
})
}
//储备项目资金
export function getAmount(param) {
return request({
url: '/business/overview/amount/analyze',
method: 'get',
params:param,
})
}
//跟进动态
export function getAllRecord(param) {
return request({
url: '/business/record/all/list',
method: 'get',
params:param,
})
}
//公招项目地区统计
export function countGroupByProvince(param) {
return request({
url: '/business/overview/countGroupByProvince',
method: 'post',
data:param
})
}
//公招项目投资金额统计
export function rangByMoney(param) {
return request({
url: '/business/overview/rangByMoney',
method: 'post',
data:param
})
}
<template>
<div class="no-data">
<div class="no-data-box">
<img :src="noData" alt="抱歉,没找到相关数据" />
<div>抱歉,没找到相关数据</div>
<span v-if="condition">建议调整关键词或筛选条件,重新搜索</span>
</div>
</div>
</template>
<script>
export default {
name: "NoData",
props: {
condition: {
type: Boolean,
default: false
}
},
data() {
return {
noData: require("@/assets/images/detail/noData.png")
}
},
methods:{
}
}
</script>
<style lang="scss" scoped>
.no-data {
font-size: 14px;
color: #999999;
width: 100%;
height: 100%;
min-height: 120px;
display: flex;
justify-content: center;
align-items: center;
background: #ffffff;
//border: 1px solid #eeeeee;
.no-data-box {
display: flex;
flex-direction: column;
align-items: center;
img {
width: 108px;
height: 109px;
margin-bottom: 22px;
}
div{
font-size: 16px;
line-height: 1;
color: #333333;
}
span{
margin-top: 4px;
}
}
}
</style>
...@@ -148,6 +148,16 @@ export default { ...@@ -148,6 +148,16 @@ export default {
height: 32px; height: 32px;
line-height: 32px; line-height: 32px;
} }
::v-deep .el-select .el-input__inner{
border: 1px solid #D9D9D9;
height: 34px;
line-height: 34px;
padding-right: 27px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
border-radius: 4px;
}
::v-deep .custom-money-select{ ::v-deep .custom-money-select{
.el-input__inner{ .el-input__inner{
border: 1px solid #D9D9D9; border: 1px solid #D9D9D9;
......
...@@ -216,5 +216,4 @@ export default { ...@@ -216,5 +216,4 @@ export default {
::v-deep .el-table--enable-row-hover .el-table__body tr:hover > td { ::v-deep .el-table--enable-row-hover .el-table__body tr:hover > td {
background-color: #DCEBFF; background-color: #DCEBFF;
} }
</style> </style>
<template> <template>
<div class="client-details"> <div class="client-details">
<el-drawer <el-dialog
:visible.sync="drawer" :visible.sync="drawer"
size="60%" size="80%"
custom-class="client-drawer" :title="title"
custom-class="client-dialog"
:with-header="false" :with-header="false"
@closed="cancel"> @closed="cancel">
<head-detail-form <head-detail-form
:title="title"
:form-data="formData" :form-data="formData"
:query-params="queryParams" :query-params="queryParams"
:total="tableDataTotal" :total="tableDataTotal"
...@@ -22,29 +22,21 @@ ...@@ -22,29 +22,21 @@
:tableDataTotal="tableDataTotal" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" :queryParams="queryParams"
@handle-current-change="handleCurrentChange" @handle-current-change="handleCurrentChange"
style="margin: 12px;"
> >
<template slot="projectAllName" slot-scope="scope"> <template slot="sourceType" slot-scope="scope">
<div class="flex-box"> <div class="flex-box">
<img class="tip-img" src="@/assets/images/detail/ico_pdf.png" v-if="scope.row.snapshootPic" @click="handlePic(scope.row.snapshootPic, true)"/> <div class="a-link" @click="linkTo(scope)" v-if="scope.row.sourceId&&scope.row.sourceType=='中标业绩'" v-html="scope.row.sourceType" style="cursor: pointer"></div>
<div class="a-link" @click="linkTo(scope)" v-if="scope.row.id&&scope.row.projectAllName" v-html="scope.row.projectAllName" style="cursor: pointer"></div> <span v-else v-html="scope.row.sourceType || '--'"></span>
<span v-else v-html="scope.row.projectAllName || '--'"></span>
</div> </div>
</template> </template>
<template slot="province" slot-scope="scope">
{{scope.row.province}}{{`${scope.row.city?'-'+scope.row.city:''}`}}
</template>
<template slot="lowerRate" slot-scope="scope">
<span>{{scope.row.lowerRate ? scope.row.lowerRate+'%' : '--'}}</span>
</template>
</tables> </tables>
</el-drawer> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import mixin from '../../mixins/mixin' import mixin from '../../mixins/mixin'
import {clientProjectPage} from '@/api/detail/party-a/dealings' import {clientProjectPage,getSelect} from '@/api/detail/party-a/dealings'
import HeadDetailForm from "../../component/HeadDetailForm" import HeadDetailForm from "../../component/HeadDetailForm"
export default { export default {
...@@ -62,21 +54,22 @@ export default { ...@@ -62,21 +54,22 @@ export default {
drawer: false, drawer: false,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
unitId: this.data.projectUnitId, companyId: this.data.companyId,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
formData: [ formData: [
{ type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: []},
{ type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: []},
{ type: 6, fieldName: 'money', value: '', placeholder: '合同金额', startMoney: 'amountMin', endMoney: 'amountMax' },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目/工程名称查询', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '输入项目/工程名称查询', options: []},
], ],
forData: [ forData: [
{label: '合作项目/工程名称', prop: 'projectAllName', width: '720', fixed: true, slot: true}, {label: '项目名称', prop: 'projectName', fixed: true},
{label: '项目/工程金额(万元)', prop: 'winBidAmount', width: '160'}, {label: '公布时间', prop: 'time', width: '100'},
{label: '合作时间', prop: 'winBidTime', width: '100'}, {label: '本次合同金额(万元)', prop: 'amount', width: '160'},
{label: '项目地区', prop: 'province', width: '160', slot: true}, {label: '项目类型', prop: 'projectTtype', width: '130'},
{label: '项目类型', prop: 'boundType', width: '130'}, {label: '数据来源', prop: 'sourceType', width: '90', slot: true}
{label: '工期(天)', prop: 'period', width: '90'},
{label: '下浮率', prop: 'lowerRate', width: '90', slot: true}
], ],
//列表 //列表
tableLoading:false, tableLoading:false,
...@@ -88,8 +81,28 @@ export default { ...@@ -88,8 +81,28 @@ export default {
created() { created() {
this.drawer = true this.drawer = true
this.handleQuery() this.handleQuery()
this.handleOption()
}, },
methods: { methods: {
async handleOption(){
let res = await getSelect({})
if(res.code==200){
let data = res.data.projects
for (var i=0;i<data.length;i++){
this.formData[0].options.push({
name: data[i],
value: data[i],
})
}
let data1 = res.data.sources
for (var i=0;i<data1.length;i++){
this.formData[1].options.push({
name: data1[i],
value: data1[i],
})
}
}
},
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
...@@ -109,7 +122,7 @@ export default { ...@@ -109,7 +122,7 @@ export default {
}, },
linkTo(scope){ linkTo(scope){
this.drawer = false this.drawer = false
this.$router.push(`/biddetail/${scope.row.id}`) this.$router.push(`/biddetail/${scope.row.sourceId}`)
}, },
cancel() { cancel() {
this.$emit('cancel') this.$emit('cancel')
...@@ -120,8 +133,27 @@ export default { ...@@ -120,8 +133,27 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.client-details { .client-details {
::v-deep .client-drawer{ ::v-deep .client-dialog{
width: 80%;
min-width: 900px;
background: #FFFFFF; background: #FFFFFF;
.el-dialog__body{
padding-top: 0;
}
.fixed-table{
.el-table__header-wrapper,.el-table__fixed-header-wrapper{
top: 0;
}
}
.el-dialog__header{
border-bottom: 1px solid #E1E1E1;
}
.el-dialog__title{
font-size: 16px;
color: #232323;
font-weight: bold;
margin-right: 4px;
}
} }
.tip-img{ .tip-img{
width: 14px; width: 14px;
......
<template> <template>
<div class="client-details"> <div class="client-details">
<el-drawer <el-dialog
:visible.sync="drawer" :visible.sync="drawer"
size="60%" size="80%"
custom-class="client-drawer" :title="title"
custom-class="client-dialog"
:with-header="false" :with-header="false"
@closed="cancel"> @closed="cancel">
<head-detail-form <head-detail-form
:title="title"
:form-data="formData" :form-data="formData"
:query-params="queryParams" :query-params="queryParams"
:total="tableDataTotal" :total="tableDataTotal"
...@@ -22,28 +22,21 @@ ...@@ -22,28 +22,21 @@
:tableDataTotal="tableDataTotal" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" :queryParams="queryParams"
@handle-current-change="handleCurrentChange" @handle-current-change="handleCurrentChange"
style="margin: 12px;"
> >
<template slot="projectAllName" slot-scope="scope"> <template slot="sourceType" slot-scope="scope">
<div class="flex-box"> <div class="flex-box">
<img class="tip-img" src="@/assets/images/detail/ico_pdf.png" v-if="scope.row.snapshootPic" @click="handlePic(scope.row.snapshootPic, true)"/> <div class="a-link" @click="linkTo(scope)" v-if="scope.row.sourceId&&scope.row.sourceType=='中标业绩'" v-html="scope.row.sourceType" style="cursor: pointer"></div>
<div class="a-link" @click="linkTo(scope)" v-if="scope.row.id&&scope.row.projectAllName" v-html="scope.row.projectAllName" style="cursor: pointer"></div> <span v-else v-html="scope.row.projectAllName || '--'"></span> <span v-else v-html="scope.row.sourceType || '--'"></span>
</div> </div>
</template> </template>
<template slot="province" slot-scope="scope">
{{scope.row.province}}{{`${scope.row.city?'-'+scope.row.city:''}`}}
</template>
<template slot="lowerRate" slot-scope="scope">
<span>{{scope.row.lowerRate ? scope.row.lowerRate+'%' : '--'}}</span>
</template>
</tables> </tables>
</el-drawer> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import mixin from '../../mixins/mixin' import mixin from '../../mixins/mixin'
import { supplierProjectPage } from '@/api/detail/party-a/dealings' import { supplierProjectPage,getSelect } from '@/api/detail/party-a/dealings'
import HeadDetailForm from "../../component/HeadDetailForm" import HeadDetailForm from "../../component/HeadDetailForm"
export default { export default {
...@@ -60,22 +53,23 @@ export default { ...@@ -60,22 +53,23 @@ export default {
return { return {
drawer: false, drawer: false,
queryParams: { queryParams: {
cid: this.data.companyId, companyId: this.data.companyId,
unitId: this.companyId, cid: this.companyId,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
formData: [ formData: [
{ type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: []},
{ type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: []},
{ type: 6, fieldName: 'money', value: '', placeholder: '合同金额', startMoney: 'amountMin', endMoney: 'amountMax' },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入合作项目/工程名称查询', options: [], width: 260}, { type: 3, fieldName: 'keys', value: '', placeholder: '输入合作项目/工程名称查询', options: [], width: 260},
], ],
forData: [ forData: [
{label: '合作项目/工程名称', prop: 'projectAllName', width: '720', fixed: true, slot: true}, {label: '项目名称', prop: 'projectName', fixed: true},
{label: '项目/工程金额(万元)', prop: 'winBidAmount', width: '160'}, {label: '公布时间', prop: 'time', width: '100'},
{label: '合作时间', prop: 'winBidTime', width: '100'}, {label: '本次合同金额(万元)', prop: 'amount', width: '160'},
{label: '项目地区', prop: 'province', width: '160', slot: true}, {label: '项目类型', prop: 'projectType', width: '130'},
{label: '项目类型', prop: 'boundType', width: '130'}, {label: '数据来源', prop: 'sourceType', width: '90', slot: true}
{label: '工期(天)', prop: 'period', width: '90'},
{label: '下浮率', prop: 'lowerRate', width: '90', slot: true}
], ],
//列表 //列表
tableLoading:false, tableLoading:false,
...@@ -87,8 +81,28 @@ export default { ...@@ -87,8 +81,28 @@ export default {
created() { created() {
this.drawer = true this.drawer = true
this.handleQuery() this.handleQuery()
this.handleOption()
}, },
methods: { methods: {
async handleOption(){
let res = await getSelect({})
if(res.code==200){
let data = res.data.projects
for (var i=0;i<data.length;i++){
this.formData[0].options.push({
name: data[i],
value: data[i],
})
}
let data1 = res.data.sources
for (var i=0;i<data1.length;i++){
this.formData[1].options.push({
name: data1[i],
value: data1[i],
})
}
}
},
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
...@@ -108,7 +122,7 @@ export default { ...@@ -108,7 +122,7 @@ export default {
}, },
linkTo(scope){ linkTo(scope){
this.drawer = false this.drawer = false
this.$router.push(`/biddetail/${scope.row.id}`) this.$router.push(`/biddetail/${scope.row.sourceId}`)
}, },
cancel() { cancel() {
this.$emit('cancel') this.$emit('cancel')
...@@ -119,8 +133,27 @@ export default { ...@@ -119,8 +133,27 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.client-details { .client-details {
::v-deep .client-drawer{ ::v-deep .client-dialog{
width: 80%;
min-width: 900px;
background: #FFFFFF; background: #FFFFFF;
.el-dialog__body{
padding-top: 0;
}
.fixed-table{
.el-table__header-wrapper,.el-table__fixed-header-wrapper{
top: 0;
}
}
.el-dialog__header{
border-bottom: 1px solid #E1E1E1;
}
.el-dialog__title{
font-size: 16px;
color: #232323;
font-weight: bold;
margin-right: 4px;
}
} }
.tip-img{ .tip-img{
width: 14px; width: 14px;
......
...@@ -25,16 +25,19 @@ ...@@ -25,16 +25,19 @@
<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.companyName" v-html="scope.row.companyName"></router-link> <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.companyName" v-html="scope.row.companyName"></router-link>
<div v-else v-html="scope.row.companyName || '--'"></div> <div v-else v-html="scope.row.companyName || '--'"></div>
</template> </template>
<template slot="projectAllName" slot-scope="scope"> <!-- <template slot="projectAllName" slot-scope="scope">
<router-link :to="`/biddetail/${scope.row.projectInfo.projectId}`" tag="a" class="a-link" v-if="scope.row.projectInfo.projectId&&scope.row.projectInfo.projectAllName" >{{ scope.row.projectInfo.projectAllName }}</router-link> <router-link :to="`/biddetail/${scope.row.projectInfo.projectId}`" tag="a" class="a-link" v-if="scope.row.projectInfo.projectId&&scope.row.projectInfo.projectAllName" >{{ scope.row.projectInfo.projectAllName }}</router-link>
<div v-else v-html="scope.row.projectInfo&&scope.row.projectInfo.projectAllName || '--'"></div> <div v-else v-html="scope.row.projectInfo&&scope.row.projectInfo.projectAllName || '--'"></div>
<div v-if="scope.row.count>1" @click="handleClick($event, scope.row)" style="color: #FF7E38;cursor: pointer;">有{{scope.row.count}}个合作项目/工程 ></div> <div v-if="scope.row.count>1" @click="handleClick($event, scope.row)" style="color: #FF7E38;cursor: pointer;">有{{scope.row.count}}个合作项目/工程 ></div>
</template> -->
<template slot="count" slot-scope="scope">
<div v-if="scope.row.count>0" class="a-link" style="cursor: pointer;" @click="handleClick($event, scope.row)" >{{scope.row.count}}</div>
</template> </template>
</tables> </tables>
<client-detail <client-detail
v-if="isDetails" v-if="isDetails"
:data="rowData" :data="rowData"
:title="'合作项目/工程明细'" :title="title"
:company-id="companyId" :company-id="companyId"
@cancel="isDetails=false" /> @cancel="isDetails=false" />
</div> </div>
...@@ -42,7 +45,7 @@ ...@@ -42,7 +45,7 @@
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import { clientPage } from '@/api/detail/party-a/dealings' import { clientPage,getSelect } from '@/api/detail/party-a/dealings'
import ClientDetail from './component/customDetail' import ClientDetail from './component/customDetail'
export default { export default {
name: 'Custom', name: 'Custom',
...@@ -53,21 +56,25 @@ export default { ...@@ -53,21 +56,25 @@ export default {
}, },
data() { data() {
return { return {
title:'',
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 3, sort: 3,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'time', order: 'descending'}, defaultSort: {},
forData: [ forData: [
{label: '客户名称', prop: 'companyName', minWidth: '350', slot: true}, {label: '客户名称', prop: 'companyName', minWidth: '350', slot: true},
{label: '合作项目/工程名称', prop: 'projectAllName', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6'}, // {label: '合作项目/工程名称', prop: 'projectAllName', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6'},
{label: '最近合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4'},
{label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2'}, {label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2'},
{label: '最近一次合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4'} {label: '合作次数', prop: 'count', minWidth: '150', sortable: 'custom',slot: true, descending: '5', ascending: '6'},
], ],
formData: [ formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询', options: []}, { type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: []},
{ type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '搜索客户名称', options: []},
], ],
//列表 //列表
tableLoading:false, tableLoading:false,
...@@ -81,8 +88,28 @@ export default { ...@@ -81,8 +88,28 @@ export default {
}, },
created() { created() {
this.handleQuery() this.handleQuery()
this.handleOption()
}, },
methods: { methods: {
async handleOption(){
let res = await getSelect({})
if(res.code==200){
let data = res.data.projects
for (var i=0;i<data.length;i++){
this.formData[0].options.push({
name: data[i],
value: data[i],
})
}
let data1 = res.data.sources
for (var i=0;i<data1.length;i++){
this.formData[1].options.push({
name: data1[i],
value: data1[i],
})
}
}
},
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
...@@ -102,7 +129,8 @@ export default { ...@@ -102,7 +129,8 @@ export default {
}, },
handleClick(e, data) { handleClick(e, data) {
this.rowData = data this.rowData = data
this.isDetails = true this.isDetails = true;
this.title = '与客户'+data.companyName+'合作记录'
}, },
handleDetail(row){ handleDetail(row){
if(row.sourceUrl){ if(row.sourceUrl){
......
...@@ -25,16 +25,14 @@ ...@@ -25,16 +25,14 @@
<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> <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> <div v-else v-html="scope.row.companyName || '--'"></div>
</template> </template>
<template slot="projectAllName" slot-scope="scope"> <template slot="count" slot-scope="scope">
<router-link :to="`/biddetail/${scope.row.projectInfo.projectId}`" tag="a" class="a-link" v-if="scope.row.projectInfo.projectId&&scope.row.projectInfo.projectAllName" >{{ scope.row.projectInfo.projectAllName }}</router-link> <div v-if="scope.row.count>0" class="a-link" style="cursor: pointer;" @click="handleClick($event, scope.row)" >{{scope.row.count}}</div>
<div v-else v-html="scope.row.projectInfo&&scope.row.projectInfo.projectAllName || '--'"></div>
<div v-if="scope.row.count>1" @click="handleClick($event, scope.row)" style="color: #FF7E38;cursor: pointer;">{{scope.row.count}}个合作项目/工程 ></div>
</template> </template>
</tables> </tables>
<client-detail <client-detail
v-if="isDetails" v-if="isDetails"
:data="rowData" :data="rowData"
:title="'合作项目/工程明细'" :title="title"
:company-id="companyId" :company-id="companyId"
@cancel="isDetails=false" /> @cancel="isDetails=false" />
</div> </div>
...@@ -42,7 +40,7 @@ ...@@ -42,7 +40,7 @@
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import { supplierPage } from '@/api/detail/party-a/dealings' import { supplierPage,getSelect } from '@/api/detail/party-a/dealings'
import ClientDetail from './component/supplierDetail' import ClientDetail from './component/supplierDetail'
export default { export default {
name: 'Supplier', name: 'Supplier',
...@@ -53,21 +51,24 @@ export default { ...@@ -53,21 +51,24 @@ export default {
}, },
data() { data() {
return { return {
title:'',
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 3, sort: 5,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'time', order: 'descending'}, defaultSort: {},
forData: [ forData: [
{label: '供应商', prop: 'companyName', minWidth: '350', slot: true}, {label: '供应商', prop: 'companyName', minWidth: '350', slot: true},
{label: '合作项目/工程名称', prop: 'projectAllName', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6'}, {label: '最近合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4'},
{label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2'}, {label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2'},
{label: '最近一次合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4'} {label: '合作次数', prop: 'count', minWidth: '150', sortable: 'custom',slot: true, descending: '5', ascending: '6'},
], ],
formData: [ formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询', options: []}, { type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: []},
{ type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '搜索供应商名称', options: []},
], ],
//列表 //列表
tableLoading:false, tableLoading:false,
...@@ -81,8 +82,28 @@ export default { ...@@ -81,8 +82,28 @@ export default {
}, },
created() { created() {
this.handleQuery() this.handleQuery()
this.handleOption()
}, },
methods: { methods: {
async handleOption(){
let res = await getSelect({})
if(res.code==200){
let data = res.data.projects
for (var i=0;i<data.length;i++){
this.formData[0].options.push({
name: data[i],
value: data[i],
})
}
let data1 = res.data.sources
for (var i=0;i<data1.length;i++){
this.formData[1].options.push({
name: data1[i],
value: data1[i],
})
}
}
},
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
...@@ -103,6 +124,7 @@ export default { ...@@ -103,6 +124,7 @@ export default {
handleClick(e, data) { handleClick(e, data) {
this.rowData = data this.rowData = data
this.isDetails = true this.isDetails = true
this.title = '与供应商'+data.companyName+'合作记录'
}, },
handleDetail(row){ handleDetail(row){
if(row.sourceUrl){ if(row.sourceUrl){
......
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
</div> </div>
</template> </template>
<!-- 民营集团 --> <!-- 其他集团 -->
<template v-if="activeIndex==3"> <template v-if="activeIndex==3">
<div class="count">{{ childListTotal }}</div> <div class="count">{{ childListTotal }}</div>
<div class="child-wrap" :id="'anchor-'+index" v-for="(item,index) in childList" :key="index"> <div class="child-wrap" :id="'anchor-'+index" v-for="(item,index) in childList" :key="index">
...@@ -168,7 +168,7 @@ export default { ...@@ -168,7 +168,7 @@ export default {
provinces:[], provinces:[],
total:0, total:0,
isscroll:false, isscroll:false,
groups:['央企','央企子集团','地方国企','民营集团'], groups:['央企','央企子集团','地方国企','其他集团'],
companData:[], companData:[],
searchList:[], searchList:[],
page:1, page:1,
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
<Owner v-if="personnelHerf=='Owner'" /> <Owner v-if="personnelHerf=='Owner'" />
<!-- 查企业 --> <!-- 查企业 -->
<SearchEnterprise v-if="personnelHerf=='SearchEnterprise'" /> <SearchEnterprise v-if="personnelHerf=='SearchEnterprise'" />
<!-- 查企业 --> <!-- 查集团户 -->
<Group v-if="personnelHerf=='Group'" /> <Group v-if="personnelHerf=='Group'" />
...@@ -77,9 +77,14 @@ ...@@ -77,9 +77,14 @@
personnelHerf:'Owner' personnelHerf:'Owner'
} }
}, },
created() {}, created() {
if(this.$route.query.type==2){
this.personnelHerf='Group';
this.personnelList[0].status = false;
this.personnelList[2].status = true;
}
},
methods: { methods: {
handleClick(){},
personnelListbtn(index) { personnelListbtn(index) {
for (var i = 0; i < this.personnelList.length; i++) { for (var i = 0; i < this.personnelList.length; i++) {
this.personnelList[i].status = false; this.personnelList[i].status = false;
......
...@@ -86,6 +86,21 @@ ...@@ -86,6 +86,21 @@
<el-option v-for="(item,index) in projectStage" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option> <el-option v-for="(item,index) in projectStage" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select> </el-select>
</div> </div>
<div class="select-popper">
<el-dropdown trigger="click" placement='bottom-start'>
<div class="el-dropdown-link " :class="searchParam.status!=null?'select-active':''">
项目状态{{searchParam.status!=null?' 1项':''}}
<i class="el-icon-caret-bottom"></i>
</div>
<el-dropdown-menu slot="dropdown" class="select-list select-radio">
<el-dropdown-item v-for="(itme,i) in statusList" :key="i">
<el-radio :label="itme.value" v-model="searchParam.status" @input="statusBtn()">
{{itme.label}}
</el-radio>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div> </div>
</div> </div>
<div class="scbtns"> <div class="scbtns">
...@@ -219,10 +234,25 @@ export default { ...@@ -219,10 +234,25 @@ export default {
districtId: [], districtId: [],
pageNum:1, pageNum:1,
pageSize:20, pageSize:20,
status:null,
}, },
domicile:[], domicile:[],
projectType:[],//项目类型 projectType:[],//项目类型
projectCategory:[],//项目类别 projectCategory:[],//项目类别
statusList:[
{
value:'0',
label:'储备中'
},
{
value:'1',
label:'跟进中'
},
{
value:'2',
label:'已合作'
},
],
amountOptions:[ amountOptions:[
{ {
label: "5000万以下", label: "5000万以下",
...@@ -253,7 +283,6 @@ export default { ...@@ -253,7 +283,6 @@ export default {
}, },
mounted(){ mounted(){
this.prvinceTree() this.prvinceTree()
this.getList(1)
//项目阶段 //项目阶段
getDictType('project_stage_type').then(result=>{ getDictType('project_stage_type').then(result=>{
this.projectStage = result.code == 200 ? result.data:[] this.projectStage = result.code == 200 ? result.data:[]
...@@ -266,8 +295,21 @@ export default { ...@@ -266,8 +295,21 @@ export default {
getDictType('project_category').then(result=>{ getDictType('project_category').then(result=>{
this.projectCategory = result.code == 200 ? result.data:[] this.projectCategory = result.code == 200 ? result.data:[]
}) })
if(this.$route.query.type==1){
this.activeName = 'second';
}
if(this.$route.query.status){
this.searchParam.status = this.$route.query.status;
}
if(this.$route.query.projectName){
this.searchParam.projectName = this.$route.query.projectName;
}
this.getList(1)
}, },
methods: { methods: {
statusBtn(){
},
dc(){ dc(){
this.$message.warning('功能正在开发中') this.$message.warning('功能正在开发中')
}, },
...@@ -345,6 +387,7 @@ export default { ...@@ -345,6 +387,7 @@ export default {
districtId: [], districtId: [],
pageNum:1, pageNum:1,
pageSize:20, pageSize:20,
status:null
} }
this.getList(1) this.getList(1)
}, },
......
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