Files
income_payments_client/src/components/ProjectDetailModal.vue
T

556 lines
16 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>
<!-- 工作组项目有企业联系人23-->
<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>
<!-- 工作组项目有企业联系人23-->
<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>