556 lines
16 KiB
Vue
556 lines
16 KiB
Vue
<template>
|
||
<j-modal
|
||
:title="title"
|
||
:width="width"
|
||
:visible="visible"
|
||
switchFullscreen
|
||
@cancel="handleCancel"
|
||
cancelText="关闭">
|
||
<!-- 基本信息begin-->
|
||
<section class="base-info">
|
||
<h3 class="title">基本信息</h3>
|
||
<a-row :gutter="24">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>项目负责人:</label>
|
||
<span><j-ellipsis :value="basicInfo.principalName" :length="20"></j-ellipsis></span>
|
||
</a-col>
|
||
<a-col :span="12" class="detail-item">
|
||
<label>应收金额:</label>
|
||
<span><j-ellipsis :value="`${basicInfo.receivableAmount ? basicInfo.receivableAmount : '0.00'}元`"
|
||
:length="20"></j-ellipsis></span>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row :gutter="24">
|
||
<a-col class="detail-item">
|
||
<label>备注:</label>
|
||
<span><j-ellipsis :value="basicInfo.remarks" :length="20"></j-ellipsis></span>
|
||
</a-col>
|
||
</a-row>
|
||
<!-- 来款方式为合同的显示-->
|
||
<a-row :gutter="24" v-if="basicInfo.chargeWay === 2">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>{{ createIncomeType(basicInfo.projectType) }}:</label>
|
||
<span>{{ basicInfo.chargeWay_dictText }}</span>
|
||
</a-col>
|
||
<a-col :span="12" class="detail-item">
|
||
<label>合同编号:</label>
|
||
<span class="contract-num" @click="toContractDetail">{{ basicInfo.contractNum }}</span>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row :gutter="24" v-if="basicInfo.chargeWay === 3">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>收费通知号:</label>
|
||
<span><j-ellipsis :value="basicInfo.chargeNoticeNo" :length="20"></j-ellipsis></span>
|
||
</a-col>
|
||
<a-col :span="12" class="detail-item">
|
||
<label>收费通知:</label>
|
||
<span><preview-file :file-id="basicInfo.chargeNoticeId"></preview-file></span>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row :gutter="24" v-if="basicInfo.files">
|
||
<a-col class="detail-item">
|
||
<label>资料:</label>
|
||
<span><preview-file :file-id="basicInfo.files"></preview-file></span>
|
||
</a-col>
|
||
</a-row>
|
||
</section>
|
||
<!-- 基本信息end-->
|
||
<!-- 企业信息begin-->
|
||
<section class="enterprise-info">
|
||
<h3 class="title">企业信息</h3>
|
||
<a-row :gutter="24">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>来款企业:</label>
|
||
<span><j-ellipsis :value="basicInfo.companyName" :length="20"></j-ellipsis></span>
|
||
</a-col>
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人:</label>
|
||
<span><j-ellipsis :value="basicInfo.name" :length="20"></j-ellipsis></span>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row :gutter="24">
|
||
<a-col :span="12">
|
||
<label>企业联系人性别:</label>
|
||
<span>{{ basicInfo.gender_dictText }}</span>
|
||
</a-col>
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人职务:</label>
|
||
<span><j-ellipsis :value="basicInfo.post" :length="17"></j-ellipsis></span>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row :gutter="24">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人电话:</label>
|
||
<span>{{ basicInfo.phone }}</span>
|
||
</a-col>
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人邮箱:</label>
|
||
<span>{{ basicInfo.email }}</span>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row :gutter="24">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人邮编:</label>
|
||
<span>{{ basicInfo.postalCodeContacts }}</span>
|
||
</a-col>
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人地址:</label>
|
||
<span><j-ellipsis :value="basicInfo.contactAddress" :length="17"></j-ellipsis></span>
|
||
</a-col>
|
||
</a-row>
|
||
<!-- 工作组项目有企业联系人2、3-->
|
||
<template v-if="basicInfo.projectType===2">
|
||
<!-- 企业联系人1的备注-->
|
||
<template>
|
||
<a-row :gutter="24">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人备注:</label>
|
||
<span><j-ellipsis :value="basicInfo.remarksOne" :length="16"></j-ellipsis></span>
|
||
</a-col>
|
||
</a-row>
|
||
</template>
|
||
<!-- 企业联系人2-->
|
||
<template v-if="basicInfo.nameTwo">
|
||
<a-row :gutter="24">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人2:</label>
|
||
<span><j-ellipsis :value="basicInfo.nameTwo" :length="16"></j-ellipsis></span>
|
||
</a-col>
|
||
<a-col :span="12">
|
||
<label>企业联系人2性别:</label>
|
||
<span>{{ basicInfo.genderTwo_dictText }}</span>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row :gutter="24">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人2职务:</label>
|
||
<span><j-ellipsis :value="basicInfo.postTwo" :length="16"></j-ellipsis></span>
|
||
</a-col>
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人2电话:</label>
|
||
<span>{{ basicInfo.phoneTwo }}</span>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row :gutter="24">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人2邮箱:</label>
|
||
<span>{{ basicInfo.emailTwo }}</span>
|
||
</a-col>
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人2邮编:</label>
|
||
<span>{{ basicInfo.postalCodeContactsTwo }}</span>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row :gutter="24">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人2地址:</label>
|
||
<span><j-ellipsis :value="basicInfo.contactAddressTwo" :length="16"></j-ellipsis></span>
|
||
</a-col>
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人2备注:</label>
|
||
<span><j-ellipsis :value="basicInfo.remarksTwo" :length="16"></j-ellipsis></span>
|
||
</a-col>
|
||
</a-row>
|
||
</template>
|
||
<!-- 企业联系人3-->
|
||
<template v-if="basicInfo.nameThree">
|
||
<a-row :gutter="24">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人3:</label>
|
||
<span><j-ellipsis :value="basicInfo.nameThree" :length="16"></j-ellipsis></span>
|
||
</a-col>
|
||
<a-col :span="12">
|
||
<label>企业联系人3性别:</label>
|
||
<span>{{ basicInfo.genderThree_dictText }}</span>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row :gutter="24">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人3职务:</label>
|
||
<span><j-ellipsis :value="basicInfo.postThree" :length="16"></j-ellipsis></span>
|
||
</a-col>
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人3电话:</label>
|
||
<span>{{ basicInfo.phoneThree }}</span>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row :gutter="24">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人3邮箱:</label>
|
||
<span>{{ basicInfo.emailThree }}</span>
|
||
</a-col>
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人3邮编:</label>
|
||
<span>{{ basicInfo.postalCodeContactsThree }}</span>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row :gutter="24">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人3地址:</label>
|
||
<span><j-ellipsis :value="basicInfo.contactAddressThree" :length="16"></j-ellipsis></span>
|
||
</a-col>
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业联系人3备注:</label>
|
||
<span><j-ellipsis :value="basicInfo.remarksThree" :length="16"></j-ellipsis></span>
|
||
</a-col>
|
||
</a-row>
|
||
</template>
|
||
</template>
|
||
<!-- 工作组项目有企业联系人2、3-->
|
||
<a-row :gutter="24">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>是否需要发票:</label>
|
||
<span>{{ basicInfo.needInvoice_dictText }}</span>
|
||
</a-col>
|
||
<a-col :span="12" class="detail-item">
|
||
<label>是否打包:</label>
|
||
<span>{{ basicInfo.pack_dictText }}</span>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row :gutter="24">
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业邮编:</label>
|
||
<span>{{ basicInfo.postalCodeCompany }}</span>
|
||
</a-col>
|
||
<a-col :span="12" class="detail-item">
|
||
<label>企业地址:</label>
|
||
<span><j-ellipsis :value="basicInfo.companyAddress" :length="20"></j-ellipsis></span>
|
||
</a-col>
|
||
</a-row>
|
||
</section>
|
||
<!--企业信息end-->
|
||
<!--到账信息begin-->
|
||
<section class="payment-info">
|
||
<h3 class="title">到账信息</h3>
|
||
<div class="payment-info-box">
|
||
<section class="payment-info-title">到账信息</section>
|
||
<template v-if="paymentInfoList && paymentInfoList.length > 0">
|
||
<div class="payment-info-content" v-for="item of paymentInfoList" :key="item.id">
|
||
{{ item.paymentDate }}到账{{ item.amountReceived }}元
|
||
</div>
|
||
</template>
|
||
<a-list v-else :data-source="[]"/>
|
||
</div>
|
||
</section>
|
||
<!--到账信息end-->
|
||
<!--开票邮寄信息begin-->
|
||
<section class="logistics-info">
|
||
<h3 class="title">开票邮寄信息</h3>
|
||
<div class="wrap-table">
|
||
<a-table
|
||
ref="table"
|
||
size="middle"
|
||
rowKey="id"
|
||
:pagination="false"
|
||
:columns="columns"
|
||
:dataSource="logisticsInfoList"
|
||
class="j-table-force-nowrap"
|
||
>
|
||
<span slot="action" class="action-span-cell" slot-scope="record">
|
||
<a @click="lookLogistics(record)" v-if="record.postStatus === 1">查看物流</a>
|
||
</span>
|
||
<!-- <p slot="expandedRowRender" slot-scope="record" style="margin: 0">-->
|
||
<!-- {{ record.sendDate }}-->
|
||
<!-- </p>-->
|
||
</a-table>
|
||
</div>
|
||
</section>
|
||
<!--开票邮寄信息end-->
|
||
<template slot="footer">
|
||
<a-button @click="handleCancel">关闭</a-button>
|
||
</template>
|
||
</j-modal>
|
||
</template>
|
||
|
||
<script>
|
||
import { queryCommonProjectById } from '@api/incomePaymentsApi'
|
||
import JEllipsis from '@comp/jero/JEllipsis'
|
||
import PreviewFile from './jero/PreviewFile'
|
||
// import {getAction} from "@api/manage";
|
||
const paymentInfoList = [
|
||
{
|
||
id: 1001,
|
||
year: '2021',
|
||
money: '200'
|
||
},
|
||
{
|
||
id: 1002,
|
||
year: '2021',
|
||
money: '200'
|
||
},
|
||
{
|
||
id: 1003,
|
||
year: '2021',
|
||
money: '200'
|
||
}
|
||
]
|
||
const logisticsInfoList = [
|
||
{
|
||
id: '01',
|
||
person: '张三',
|
||
time: '2021年10月21',
|
||
money: '200',
|
||
piaoNo: '123456',
|
||
projects: ['项目一', '项目二', '项目三'],
|
||
postPerson: '李四',
|
||
postTime: '2021年10月21',
|
||
emsOrSF: 'EMS',
|
||
postNo: '123456'
|
||
}
|
||
]
|
||
const columns = [
|
||
{
|
||
title: '开票人',
|
||
align: 'center',
|
||
dataIndex: 'realName'
|
||
},
|
||
{
|
||
title: '日期',
|
||
align: 'center',
|
||
dataIndex: 'billDate'
|
||
},
|
||
{
|
||
title: '金额(元)',
|
||
align: 'center',
|
||
dataIndex: 'invoiceAmount'
|
||
},
|
||
{
|
||
title: '票号',
|
||
align: 'center',
|
||
dataIndex: 'billNo'
|
||
},
|
||
{
|
||
title: '项目',
|
||
align: 'center',
|
||
dataIndex: 'projectName'
|
||
},
|
||
{
|
||
title: '邮寄人',
|
||
align: 'center',
|
||
dataIndex: 'mailName'
|
||
},
|
||
{
|
||
title: '快递',
|
||
align: 'center',
|
||
dataIndex: 'sendMethod_dictText'
|
||
},
|
||
{
|
||
title: '快递单号',
|
||
align: 'center',
|
||
dataIndex: 'postNo'
|
||
},
|
||
{
|
||
title: '操作',
|
||
align: 'center',
|
||
dataIndex: '',
|
||
scopedSlots: { customRender: 'action' }
|
||
}
|
||
]
|
||
export default {
|
||
name: 'ProjectDetailModal',
|
||
props: {
|
||
// 字段名称是否非id,适用于票据邮寄等页面id不是项目id的情况
|
||
notId: {
|
||
type: Boolean,
|
||
required: false,
|
||
default: false
|
||
}
|
||
},
|
||
data() {
|
||
return {
|
||
description: '项目详情模态框',
|
||
width: 800,
|
||
visible: false,
|
||
title: '项目信息',
|
||
// 当前项目id
|
||
currentProjectId: '',
|
||
// 基本信息
|
||
basicInfo: {},
|
||
// 企业信息
|
||
enterpriseInfo: {},
|
||
// 联系人信息
|
||
contactsInfo: {},
|
||
columns,
|
||
// 到账信息
|
||
paymentInfoList,
|
||
// 开票邮寄信息
|
||
logisticsInfoList
|
||
}
|
||
},
|
||
computed: {},
|
||
components: {
|
||
JEllipsis,
|
||
PreviewFile
|
||
},
|
||
methods: {
|
||
open(record) {
|
||
this.visible = true
|
||
// 记录当前项目id
|
||
if (this.notId) {
|
||
this.currentProjectId = record.projectId
|
||
} else {
|
||
this.currentProjectId = record.id
|
||
}
|
||
// 通过id查询项目详情
|
||
queryCommonProjectById({ id: this.currentProjectId }).then(res => {
|
||
if (res.success) {
|
||
console.log(res.result, 'res.result')
|
||
// 项目信息
|
||
this.basicInfo = res.result
|
||
// 到账信息
|
||
this.paymentInfoList = res.result.paymentRecord
|
||
// 开票邮寄信息
|
||
this.logisticsInfoList = res.result.mailBill
|
||
} else {
|
||
console.log('未查到相应的信息')
|
||
}
|
||
})
|
||
},
|
||
handleCancel() {
|
||
this.visible = false
|
||
},
|
||
/*
|
||
* 生成每一个开票信息
|
||
* */
|
||
createItemInfo(item) {
|
||
let porjectItem = ''
|
||
if (item.projects.length > 0) {
|
||
item.projects.forEach((val, index) => {
|
||
if (index === item.projects.length - 1) {
|
||
porjectItem += val
|
||
} else {
|
||
porjectItem += val + '、'
|
||
}
|
||
})
|
||
}
|
||
return `${ item.person }于${ item.time }开票,金额为:${ item.money }元,票号:${ item.piaoNo },项目:${ porjectItem }`
|
||
},
|
||
/*
|
||
* 查看物流
|
||
* */
|
||
lookLogistics(record) {
|
||
const com = Number(record.sendMethod) === 1 && 'ems' || 'shunfeng'
|
||
window.open(`https://www.kuaidi100.com/chaxun?com=${ com }&nu=${ record.postNo }`)
|
||
},
|
||
/*
|
||
* 去合同详情 传入合同id
|
||
* */
|
||
toContractDetail() {
|
||
if (this.basicInfo.contractId) {
|
||
this.$router.push({
|
||
path: '/contractManagement/RevenueContractDetail', query: {
|
||
revenueId: this.basicInfo.contractId
|
||
}
|
||
})
|
||
} else {
|
||
this.$message.warn('该项目未与合同关联')
|
||
}
|
||
},
|
||
/*
|
||
* 每一个项目的来款方式不同
|
||
* */
|
||
createIncomeType(val) {
|
||
if (val === 1 || val === 2 || val === 4) {
|
||
return '来款方式'
|
||
} else {
|
||
return '缴费方式'
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped lang="less">
|
||
.ant-row {
|
||
margin: 12px;
|
||
}
|
||
|
||
h3 {
|
||
position: relative;
|
||
}
|
||
|
||
label {
|
||
color: #666;
|
||
}
|
||
|
||
.detail-item {
|
||
display: flex;
|
||
|
||
label {
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
span {
|
||
word-break: break-all;
|
||
display: block;
|
||
}
|
||
}
|
||
|
||
.contract-num {
|
||
color: #42b983;
|
||
cursor: pointer;
|
||
}
|
||
|
||
h3.title::before {
|
||
position: absolute;
|
||
top: 4px;
|
||
left: -10px;
|
||
content: "";
|
||
height: 20px;
|
||
width: 2px;
|
||
background: #069f99;
|
||
}
|
||
|
||
/* 到账信息 */
|
||
.payment-info {
|
||
margin-bottom: 14px;
|
||
|
||
&-box {
|
||
border: 1px solid #ccc;
|
||
}
|
||
|
||
&-title {
|
||
text-align: center;
|
||
font-size: 14px;
|
||
height: 35px;
|
||
line-height: 35px;
|
||
letter-spacing: 1px;
|
||
color: #fff;
|
||
background: #a2e6e4;
|
||
}
|
||
|
||
&-content {
|
||
border: 1px solid #ccc;
|
||
color: #424242;
|
||
//background: #efefef;
|
||
padding: 5px;
|
||
padding-left: 10px;
|
||
//border: 1px solid #ccc;
|
||
border-top: none;
|
||
}
|
||
|
||
|
||
}
|
||
|
||
/* 开票邮寄信息 */
|
||
.wrap-table {
|
||
border: 1px solid #ccc;
|
||
border-bottom: none;
|
||
}
|
||
|
||
/deep/ .ant-table-thead {
|
||
tr > th {
|
||
color: #fff;
|
||
background: #a2e6e4;
|
||
border: none;
|
||
}
|
||
}
|
||
|
||
/deep/ .ant-table-tbody {
|
||
tr > td {
|
||
border: none;
|
||
border-bottom: 1px solid #ccc;
|
||
}
|
||
}
|
||
</style>
|